From 500e303cb544ed93d84153f01219d77eeee44929 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 30 Jan 2020 15:55:40 +0100 Subject: [PATCH 001/407] first commit --- cmd/ocis-accounts/main.go | 13 + go.mod | 15 + go.sum | 970 ++++++++++++++++++++++++++++++ pkg/command/root.go | 41 ++ pkg/command/server.go | 37 ++ pkg/micro/grpc/grpc.go | 27 + pkg/proto/v0/accounts.pb.go | 212 +++++++ pkg/proto/v0/accounts.pb.micro.go | 109 ++++ pkg/proto/v0/accounts.proto | 25 + pkg/service/v0/service.go | 31 + 10 files changed, 1480 insertions(+) create mode 100644 cmd/ocis-accounts/main.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 pkg/command/root.go create mode 100644 pkg/command/server.go create mode 100644 pkg/micro/grpc/grpc.go create mode 100644 pkg/proto/v0/accounts.pb.go create mode 100644 pkg/proto/v0/accounts.pb.micro.go create mode 100644 pkg/proto/v0/accounts.proto create mode 100644 pkg/service/v0/service.go diff --git a/cmd/ocis-accounts/main.go b/cmd/ocis-accounts/main.go new file mode 100644 index 0000000000..2e6f5b663a --- /dev/null +++ b/cmd/ocis-accounts/main.go @@ -0,0 +1,13 @@ +package main + +import ( + "os" + + "github.com/owncloud/ocis-accounts/pkg/command" +) + +func main() { + if err := command.Execute(); err != nil { + os.Exit(1) + } +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000000..d56311bc42 --- /dev/null +++ b/go.mod @@ -0,0 +1,15 @@ +module github.com/owncloud/ocis-accounts + +go 1.13 + +require ( + github.com/golang/protobuf v1.3.2 + github.com/micro/cli v0.2.0 + github.com/micro/go-micro v1.18.0 + github.com/oklog/run v1.1.0 + github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec + github.com/owncloud/ocis-ocs v0.0.0-20191224113758-20455a2e9013 + github.com/owncloud/ocis-pkg v1.3.0 + github.com/spf13/viper v1.6.1 + honnef.co/go/tools v0.0.1-2019.2.3 +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000000..ed739bd4cb --- /dev/null +++ b/go.sum @@ -0,0 +1,970 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= +contrib.go.opencensus.io/exporter/jaeger v0.2.0 h1:nhTv/Ry3lGmqbJ/JGvCjWxBl5ozRfqo86Ngz59UAlfk= +contrib.go.opencensus.io/exporter/jaeger v0.2.0/go.mod h1:ukdzwIYYHgZ7QYtwVFQUjiT28BJHiMhTERo32s6qVgM= +contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= +contrib.go.opencensus.io/exporter/ocagent v0.5.0 h1:TKXjQSRS0/cCDrP7KvkgU6SmILtF/yV2TOs/02K/WZQ= +contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= +contrib.go.opencensus.io/exporter/ocagent v0.6.0 h1:Z1n6UAyr0QwM284yUuh5Zd8JlvxUGAhFZcgMJkMPrGM= +contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= +contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= +contrib.go.opencensus.io/exporter/zipkin v0.1.1 h1:PR+1zWqY8ceXs1qDQQIlgXe+sdiwCf0n32bH4+Epk8g= +contrib.go.opencensus.io/exporter/zipkin v0.1.1/go.mod h1:GMvdSl3eJ2gapOaLKzTKE3qDgUkJ86k9k3yY2eqwkzc= +contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= +contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= +github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= +github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= +github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= +github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= +github.com/Azure/azure-storage-blob-go v0.6.0/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.1.0/go.mod h1:AKyIcETwSUFxIcs/Wnq/C+kwCtlEYGUVd7FPNb2slmg= +github.com/Azure/go-autorest/autorest v0.5.0/go.mod h1:9HLKlQjVBH6U3oDfsXOeVc56THsLPw1L03yban4xThw= +github.com/Azure/go-autorest/autorest/adal v0.1.0/go.mod h1:MeS4XhScH55IST095THyTxElntu7WqB7pNbZo8Q5G3E= +github.com/Azure/go-autorest/autorest/adal v0.2.0/go.mod h1:MeS4XhScH55IST095THyTxElntu7WqB7pNbZo8Q5G3E= +github.com/Azure/go-autorest/autorest/azure/auth v0.1.0/go.mod h1:Gf7/i2FUpyb/sGBLIFxTBzrNzBo7aPXXE3ZVeDRwdpM= +github.com/Azure/go-autorest/autorest/azure/cli v0.1.0/go.mod h1:Dk8CUAt/b/PzkfeRsWzVG9Yj3ps8mS8ECztu43rdU8U= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= +github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvdeRAgDr0izn4z5Ij88= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20191101173118-65519b62243c/go.mod h1:7xhjOwRV2+0HXGmM0jxaEu+ZiXJFoVZOTfL/dmqbrD8= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ9cgOiZs= +github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= +github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190808125512-07798873deee/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= +github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/anacrolix/envpprof v0.0.0-20180404065416-323002cec2fa/go.mod h1:KgHhUaQMc8cC0+cEflSgCFNFbKwi5h54gqtVn8yhP7c= +github.com/anacrolix/envpprof v1.0.0/go.mod h1:KgHhUaQMc8cC0+cEflSgCFNFbKwi5h54gqtVn8yhP7c= +github.com/anacrolix/missinggo v1.1.2-0.20190815015349-b888af804467/go.mod h1:MBJu3Sk/k3ZfGYcS7z18gwfu72Ey/xopPFJJbTi5yIo= +github.com/anacrolix/missinggo v1.2.1/go.mod h1:J5cMhif8jPmFoC3+Uvob3OXXNIhOUikzMt+uUjeM21Y= +github.com/anacrolix/missinggo/perf v1.0.0/go.mod h1:ljAFWkBuzkO12MQclXzZrosP5urunoLS0Cbvb4V0uMQ= +github.com/anacrolix/sync v0.2.0/go.mod h1:BbecHL6jDSExojhNtgTFSBcdGerzNc64tz3DCOj/I0g= +github.com/anacrolix/tagflag v0.0.0-20180109131632-2146c8d41bf0/go.mod h1:1m2U/K6ZT+JZG0+bdMK6qauP49QT4wE5pmhJXOKKCHw= +github.com/anacrolix/utp v0.0.0-20180219060659-9e0e1d1d0572/go.mod h1:MDwc+vsGEq7RMw6lr2GKOEqjWny5hO5OZXRVNaBJ2Dk= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee h1:3T/l+vMotQ7cDSLWNAn2Vg1SAQ3mdyLgBWWBitSS3uU= +github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee/go.mod h1:u7Wtt4WATGGgae9mURNGQQqxAudPKrxfsbSDSGOso+g= +github.com/asim/go-awsxray v0.0.0-20161209120537-0d8a60b6e205/go.mod h1:frVmN4PtXUuL1EbZn0uL4PHSTKNKFnbMpBIhngqMuNQ= +github.com/asim/go-bson v0.0.0-20160318195205-84522947cabd/go.mod h1:L59ZX7HuzTbNzFBt8g3SJkRraj+GBOgvLAfJYJUcQ5w= +github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.31/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= +github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= +github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= +github.com/bradfitz/iter v0.0.0-20190303215204-33e6a9893b0c/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= +github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= +github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= +github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA= +github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= +github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= +github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= +github.com/cloudflare/cloudflare-go v0.10.6/go.mod h1:dcRl7AXBH5Bf7QFTBVc3TRzwvotSeO4AlnMhuxORAX8= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/continuity v0.0.0-20181203112020-004b46473808/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.17+incompatible h1:f/Z3EoDSx1yjaIjLQGo1diYUlQYSBrrAQ5vP8NjwXwo= +github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMElOWxok= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= +github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/dnaeon/go-vcr v0.0.0-20180814043457-aafff18a5cc2/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/dnsimple/dnsimple-go v0.30.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.4.2-0.20190710153559-aa8249ae1b8b/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20191101170500-ac7306503d23/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= +github.com/eknkc/basex v1.0.0/go.mod h1:k/F/exNEHFdbs3ZHuasoP2E7zeWwZblG84Y7Z59vQRo= +github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/forestgiant/sliceutil v0.0.0-20160425183142-94783f95db6c/go.mod h1:pFdJbAhRf7rh6YYMUdIQGyzne6zYL1tCUW8QV2B3UfY= +github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsouza/go-dockerclient v1.4.4/go.mod h1:PrwszSL5fbmsESocROrOGq/NULMXRw+bajY0ltzD6MA= +github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+4np9qfPbb+znGc= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= +github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= +github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= +github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= +github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +github.com/go-log/log v0.1.0 h1:wudGTNsiGzrD5ZjgIkVZ517ugi2XRe9Q/xRCzwEO4/U= +github.com/go-log/log v0.1.0/go.mod h1:4mBwpdRMFLiuXZDCwU2lKQFsoSCo72j3HqBK9d81N2M= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= +github.com/go-redsync/redsync v1.3.1/go.mod h1:qxZwM5JOimfq8y98Wk2+c8dKtxJgG5/yIl2ODz2E5Dk= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-stomp/stomp v2.0.3+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= +github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= +github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc h1:55rEp52jU6bkyslZ1+C/7NGfpQsEc6pxGLAGDOctqbw= +github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= +github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= +github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= +github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= +github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.2 h1:S+ef0492XaIknb8LMjcwgW2i3cNTzDYMmDrOThOJNWc= +github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.4 h1:5xLhQjsk4zqPf9EHCrja2qFZMx+yBqkO3XgJ14bNnU0= +github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= +github.com/hako/branca v0.0.0-20180808000428-10b799466ada/go.mod h1:tOPn4gvKEUWqIJNE+zpTeTALaRAXnrRqqSnPlO3VpEo= +github.com/hashicorp/consul/api v1.2.0/go.mod h1:1SIkFYi2ZTXUE5Kgt179+4hH33djo11+0Eo2XgTAtkw= +github.com/hashicorp/consul/sdk v0.2.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.1.5/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= +github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= +github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= +github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= +github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/joncalhoun/qson v0.0.0-20170526102502-8a9cab3a62b1/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= +github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= +github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= +github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= +github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= +github.com/labstack/echo v3.2.1+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= +github.com/labstack/gommon v0.2.7/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4= +github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA= +github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= +github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gNfqwTxjbE7s3Vb8s= +github.com/lucas-clemente/quic-go v0.13.1 h1:CxtJTXQIh2aboCPk0M6vf530XOov6DZjVBiSE3nSj8s= +github.com/lucas-clemente/quic-go v0.13.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/marten-seemann/chacha20 v0.2.0 h1:f40vqzzx+3GdOmzQoItkLX5WLvHgPgyYqFFIO5Gh4hQ= +github.com/marten-seemann/chacha20 v0.2.0/go.mod h1:HSdjFau7GzYRj+ahFNwsO3ouVJr1HFkWoEwNDb4TMtE= +github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGDAUWqna+CNTrI= +github.com/marten-seemann/qtls v0.3.2/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= +github.com/marten-seemann/qtls v0.4.1 h1:YlT8QP3WCCvvok7MGEZkMldXbyqgr8oFg5/n8Gtbkks= +github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= +github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= +github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= +github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= +github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6s+iDsrM= +github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= +github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= +github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= +github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= +github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= +github.com/micro/mdns v0.3.0 h1:bYycYe+98AXR3s8Nq5qvt6C573uFTDPIYzJemWON0QE= +github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= +github.com/micro/micro v1.16.0/go.mod h1:TO5Ng0KidbfRYIxVM4Q3deZ0A+qwRyP9WeXp+k2fWNA= +github.com/micro/protoc-gen-micro v1.0.0/go.mod h1:C8ij4DJhapBmypcT00AXdb0cZ675/3PqUO02buWWqbE= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.22 h1:Jm64b3bO9kP43ddLjL2EY3Io6bmy1qGb9Xxz6TqS6rc= +github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= +github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= +github.com/nats-io/jwt v0.3.0 h1:xdnzwFETV++jNc4W1mw//qFyJGb2ABOombmZJQS4+Qo= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/nats-server/v2 v2.1.0/go.mod h1:r5y0WgCag0dTj/qiHkHrXAcKQ/f5GMOZaEGdoxxnJ4I= +github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= +github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= +github.com/nats-io/nkeys v0.1.0 h1:qMd4+pRHgdr1nAClu+2h/2a5F2TmKcCzjCDazVgRoX4= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= +github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= +github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= +github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= +github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= +github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= +github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= +github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= +github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= +github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin/zipkin-go v0.1.6 h1:yXiysv1CSK7Q5yjGy1710zZGnsbMUIjluWBxtLXHPBo= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= +github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec h1:gpILNWve7F8MIo/GBOM6bdszzZFfJEgcXPQBjDOMLAc= +github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= +github.com/owncloud/ocis-ocs v0.0.0-20191224113758-20455a2e9013 h1:NZnmuAzcXmOM7AXgFVjdWFBQHzM1LpjXxaZOTriTe6U= +github.com/owncloud/ocis-ocs v0.0.0-20191224113758-20455a2e9013/go.mod h1:uxMnXanRGabyExSbqGTkMTWVriv3HrdSivUfh2lxozE= +github.com/owncloud/ocis-pkg v1.1.0/go.mod h1:EfbeXoe60Me2lB/AWjYl8UFNv4isqCPP6lokd5R7nyM= +github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= +github.com/owncloud/ocis-pkg v1.3.0 h1:2fkgvfd/spTjschuulYMHRuzxkCGGXae9ocebVYkm74= +github.com/owncloud/ocis-pkg v1.3.0/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= +github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= +github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= +github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.2.1 h1:JnMpQc6ppsNgw9QPAGF6Dod479itz7lvlsMzzNayLOI= +github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0 h1:L+1lyG48J1zAQXA3RBX/nG/B3gjlHq0zTt2tlbJLyCY= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5 h1:3+auTFlqw+ZaQYJARz6ArODtkaIwtvBTx3N2NehQlL8= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= +github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8= +github.com/sacloud/libsacloud v1.26.1/go.mod h1:79ZwATmHLIFZIMd7sxA3LwzVy/B77uj3LDoToVTxDoQ= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.5.0/go.mod h1:AkYRkVJF8TkSG/xet6PzXX+l39KhhXa2pdqVSxnTcn4= +github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= +github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog= +github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY= +github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= +github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= +github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= +github.com/uber/jaeger-client-go v2.15.0+incompatible h1:NP3qsSqNxh8VYr956ur1N/1C1PjvOJnJykCzcD5QHbk= +github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw= +github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= +github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= +go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.12.0 h1:dySoUQPFBGj6xwjmBzageVL8jGi8uxc6bEmJQjA06bw= +go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +gocloud.dev v0.17.0/go.mod h1:tIHTRdR1V5dlD8sTkzYdTGizBJ314BDykJ8KmadEXwo= +gocloud.dev/pubsub/rabbitpubsub v0.17.0/go.mod h1:7o1XYDiIC+b0mmcwJuofsDg08t0DtU2ubfn7C/Uz7Y0= +golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190130090550-b01c7a725664/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a h1:R/qVym5WAxsZWQqZCwDY/8sdVKV1m1WgU4/S5IRQAzc= +golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190228165749-92fc7df08ae7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= +golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663 h1:Dd5RoEW+yQi+9DMybroBctIdyiwuNT7sJFMC27/6KxI= +golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190710143415-6ec70d6a5542/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4 h1:Hynbrlo6LbYI3H1IqXpkVDOcX/3HiPdhVEuyj5a59RM= +golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a h1:Ob5/580gVHBJZgXnff1cZDbG+xLtMVE5mDRTe+nIsX4= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1 h1:wdKvqQk7IttEw92GoRyKG2IDrUIpgpj6H6m81yfeMW0= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= +gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= +gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= +gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= +gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= +gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= +gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= +gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= +gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= +gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= +gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ= +gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= +gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= +gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= +gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= +gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= +gopkg.in/telegram-bot-api.v4 v4.6.4/go.mod h1:5DpGO5dbumb40px+dXcwCpcjmeHNYLpk0bp3XRNvWDM= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +k8s.io/api v0.0.0-20191109101513-0171b7c15da1/go.mod h1:VJq7+38rpM4TSUbRiZX4P5UVAKK2UQpNQLZClkFQkpE= +k8s.io/apimachinery v0.0.0-20191109100837-dffb012825f2/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= +k8s.io/apimachinery v0.0.0-20191111054156-6eb29fdf75dc/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= +k8s.io/client-go v11.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/command/root.go b/pkg/command/root.go new file mode 100644 index 0000000000..aa04c62d94 --- /dev/null +++ b/pkg/command/root.go @@ -0,0 +1,41 @@ +package command + +import ( + "os" + + "github.com/micro/cli" + "github.com/owncloud/ocis-hello/pkg/version" +) + +// Execute is the entry point for the ocis-accounts command. +func Execute() error { + + app := &cli.App{ + Name: "ocis-accounts", + Version: version.String, + Usage: "Example service for Reva/oCIS", + + Authors: []cli.Author{ + { + Name: "ownCloud GmbH", + Email: "support@owncloud.com", + }, + }, + + Commands: []cli.Command{ + Server(), + }, + } + + cli.HelpFlag = &cli.BoolFlag{ + Name: "help,h", + Usage: "Show the help", + } + + cli.VersionFlag = &cli.BoolFlag{ + Name: "version,v", + Usage: "Print the version", + } + + return app.Run(os.Args) +} diff --git a/pkg/command/server.go b/pkg/command/server.go new file mode 100644 index 0000000000..9ed90f3986 --- /dev/null +++ b/pkg/command/server.go @@ -0,0 +1,37 @@ +package command + +import ( + "context" + "fmt" + "syscall" + + "github.com/micro/cli" + "github.com/oklog/run" + "github.com/owncloud/ocis-accounts/pkg/micro/grpc" +) + +// Server is the entry point for the server command. +func Server() cli.Command { + return cli.Command{ + Name: "server", + Usage: "Start accounts service", + Action: func(c *cli.Context) error { + gr := run.Group{} + ctx, cancel := context.WithCancel(context.Background()) + + defer cancel() + service := grpc.NewService(ctx) + + gr.Add(func() error { + return service.Run() + }, func(_ error) { + + fmt.Println("shutting down grpc server") + cancel() + }) + + run.SignalHandler(ctx, syscall.SIGKILL) + return gr.Run() + }, + } +} diff --git a/pkg/micro/grpc/grpc.go b/pkg/micro/grpc/grpc.go new file mode 100644 index 0000000000..20e9b41a25 --- /dev/null +++ b/pkg/micro/grpc/grpc.go @@ -0,0 +1,27 @@ +package grpc + +// package grpc uses `ocis-pkg` to start a go-micro service +import ( + "context" + + "github.com/owncloud/ocis-accounts/pkg/proto/v0" + svc "github.com/owncloud/ocis-accounts/pkg/service/v0" + "github.com/owncloud/ocis-pkg/service/grpc" +) + +// NewService initializes a new go-micro service ready to run +func NewService(c context.Context) grpc.Service { + service := grpc.NewService( + grpc.Name("accounts"), + grpc.Namespace("com.owncloud"), + grpc.Address("localhost:9999"), + grpc.Context(c), + ) + + // add a handler to the service + hdlr := svc.New() + proto.RegisterSettingsServiceHandler(service.Server(), hdlr) + + service.Init() + return service +} diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go new file mode 100644 index 0000000000..136e1e6ca6 --- /dev/null +++ b/pkg/proto/v0/accounts.pb.go @@ -0,0 +1,212 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: pkg/proto/v0/accounts.proto + +package proto + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +type SettingsRequest struct { + Request *AccountSettings `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SettingsRequest) Reset() { *m = SettingsRequest{} } +func (m *SettingsRequest) String() string { return proto.CompactTextString(m) } +func (*SettingsRequest) ProtoMessage() {} +func (*SettingsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{0} +} + +func (m *SettingsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SettingsRequest.Unmarshal(m, b) +} +func (m *SettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SettingsRequest.Marshal(b, m, deterministic) +} +func (m *SettingsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SettingsRequest.Merge(m, src) +} +func (m *SettingsRequest) XXX_Size() int { + return xxx_messageInfo_SettingsRequest.Size(m) +} +func (m *SettingsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SettingsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SettingsRequest proto.InternalMessageInfo + +func (m *SettingsRequest) GetRequest() *AccountSettings { + if m != nil { + return m.Request + } + return nil +} + +type SettingsResponse struct { + Response *AccountSettings `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SettingsResponse) Reset() { *m = SettingsResponse{} } +func (m *SettingsResponse) String() string { return proto.CompactTextString(m) } +func (*SettingsResponse) ProtoMessage() {} +func (*SettingsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{1} +} + +func (m *SettingsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SettingsResponse.Unmarshal(m, b) +} +func (m *SettingsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SettingsResponse.Marshal(b, m, deterministic) +} +func (m *SettingsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SettingsResponse.Merge(m, src) +} +func (m *SettingsResponse) XXX_Size() int { + return xxx_messageInfo_SettingsResponse.Size(m) +} +func (m *SettingsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SettingsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SettingsResponse proto.InternalMessageInfo + +func (m *SettingsResponse) GetResponse() *AccountSettings { + if m != nil { + return m.Response + } + return nil +} + +type AccountSettings struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AccountSettings) Reset() { *m = AccountSettings{} } +func (m *AccountSettings) String() string { return proto.CompactTextString(m) } +func (*AccountSettings) ProtoMessage() {} +func (*AccountSettings) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{2} +} + +func (m *AccountSettings) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AccountSettings.Unmarshal(m, b) +} +func (m *AccountSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AccountSettings.Marshal(b, m, deterministic) +} +func (m *AccountSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccountSettings.Merge(m, src) +} +func (m *AccountSettings) XXX_Size() int { + return xxx_messageInfo_AccountSettings.Size(m) +} +func (m *AccountSettings) XXX_DiscardUnknown() { + xxx_messageInfo_AccountSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_AccountSettings proto.InternalMessageInfo + +func (m *AccountSettings) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +type AccountQueryRequest struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Uid int32 `protobuf:"varint,2,opt,name=uid,proto3" json:"uid,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AccountQueryRequest) Reset() { *m = AccountQueryRequest{} } +func (m *AccountQueryRequest) String() string { return proto.CompactTextString(m) } +func (*AccountQueryRequest) ProtoMessage() {} +func (*AccountQueryRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{3} +} + +func (m *AccountQueryRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AccountQueryRequest.Unmarshal(m, b) +} +func (m *AccountQueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AccountQueryRequest.Marshal(b, m, deterministic) +} +func (m *AccountQueryRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccountQueryRequest.Merge(m, src) +} +func (m *AccountQueryRequest) XXX_Size() int { + return xxx_messageInfo_AccountQueryRequest.Size(m) +} +func (m *AccountQueryRequest) XXX_DiscardUnknown() { + xxx_messageInfo_AccountQueryRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_AccountQueryRequest proto.InternalMessageInfo + +func (m *AccountQueryRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *AccountQueryRequest) GetUid() int32 { + if m != nil { + return m.Uid + } + return 0 +} + +func init() { + proto.RegisterType((*SettingsRequest)(nil), "SettingsRequest") + proto.RegisterType((*SettingsResponse)(nil), "SettingsResponse") + proto.RegisterType((*AccountSettings)(nil), "AccountSettings") + proto.RegisterType((*AccountQueryRequest)(nil), "AccountQueryRequest") +} + +func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } + +var fileDescriptor_e3c84319968a576b = []byte{ + // 219 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2e, 0xc8, 0x4e, 0xd7, + 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0xd7, 0x2f, 0x33, 0xd0, 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, + 0x29, 0xd6, 0x03, 0x8b, 0x28, 0xd9, 0x72, 0xf1, 0x07, 0xa7, 0x96, 0x94, 0x64, 0xe6, 0xa5, 0x17, + 0x07, 0xa5, 0x16, 0x96, 0xa6, 0x16, 0x97, 0x08, 0x69, 0x71, 0xb1, 0x17, 0x41, 0x98, 0x12, 0x8c, + 0x0a, 0x8c, 0x1a, 0xdc, 0x46, 0x02, 0x7a, 0x8e, 0x10, 0x4d, 0x70, 0x95, 0x30, 0x05, 0x4a, 0x0e, + 0x5c, 0x02, 0x08, 0xed, 0xc5, 0x05, 0xf9, 0x79, 0xc5, 0xa9, 0x42, 0x3a, 0x5c, 0x1c, 0x45, 0x50, + 0x36, 0x4e, 0x03, 0xe0, 0x2a, 0x94, 0x54, 0xb9, 0xf8, 0xd1, 0x24, 0x85, 0x84, 0xb8, 0x58, 0xf2, + 0x12, 0x73, 0x21, 0x9a, 0x39, 0x83, 0xc0, 0x6c, 0x25, 0x6b, 0x2e, 0x61, 0xa8, 0xb2, 0xc0, 0xd2, + 0xd4, 0xa2, 0x4a, 0x98, 0x5b, 0xb1, 0x28, 0x15, 0x12, 0xe0, 0x62, 0x2e, 0xcd, 0x4c, 0x91, 0x60, + 0x52, 0x60, 0xd4, 0x60, 0x0d, 0x02, 0x31, 0x8d, 0x72, 0x11, 0x9e, 0x0c, 0x4e, 0x2d, 0x2a, 0xcb, + 0x4c, 0x4e, 0x15, 0xd2, 0xe2, 0x62, 0x0e, 0x4e, 0x2d, 0x11, 0x12, 0xd0, 0x43, 0xf3, 0xbd, 0x94, + 0xa0, 0x1e, 0x86, 0x87, 0xf4, 0xb8, 0x98, 0xdd, 0x53, 0x4b, 0x84, 0x44, 0xf4, 0xb0, 0xb8, 0x00, + 0x8b, 0x7a, 0x27, 0xf6, 0x28, 0x56, 0x70, 0xe0, 0x26, 0xb1, 0x81, 0x29, 0x63, 0x40, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xc9, 0x14, 0x7d, 0xf0, 0x82, 0x01, 0x00, 0x00, +} diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go new file mode 100644 index 0000000000..f3c3d164d7 --- /dev/null +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -0,0 +1,109 @@ +// Code generated by protoc-gen-micro. DO NOT EDIT. +// source: pkg/proto/v0/accounts.proto + +package proto + +import ( + fmt "fmt" + math "math" + + proto "github.com/golang/protobuf/proto" + + context "context" + + client "github.com/micro/go-micro/client" + + server "github.com/micro/go-micro/server" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ client.Option +var _ server.Option + +// Client API for SettingsService service + +type SettingsService interface { + Set(ctx context.Context, in *SettingsRequest, opts ...client.CallOption) (*SettingsResponse, error) + Get(ctx context.Context, in *AccountQueryRequest, opts ...client.CallOption) (*SettingsResponse, error) +} + +type settingsService struct { + c client.Client + name string +} + +func NewSettingsService(name string, c client.Client) SettingsService { + if c == nil { + c = client.NewClient() + } + if len(name) == 0 { + name = "settingsservice" + } + return &settingsService{ + c: c, + name: name, + } +} + +func (c *settingsService) Set(ctx context.Context, in *SettingsRequest, opts ...client.CallOption) (*SettingsResponse, error) { + req := c.c.NewRequest(c.name, "SettingsService.Set", in) + out := new(SettingsResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *settingsService) Get(ctx context.Context, in *AccountQueryRequest, opts ...client.CallOption) (*SettingsResponse, error) { + req := c.c.NewRequest(c.name, "SettingsService.Get", in) + out := new(SettingsResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for SettingsService service + +type SettingsServiceHandler interface { + Set(context.Context, *SettingsRequest, *SettingsResponse) error + Get(context.Context, *AccountQueryRequest, *SettingsResponse) error +} + +func RegisterSettingsServiceHandler(s server.Server, hdlr SettingsServiceHandler, opts ...server.HandlerOption) error { + type settingsService interface { + Set(ctx context.Context, in *SettingsRequest, out *SettingsResponse) error + Get(ctx context.Context, in *AccountQueryRequest, out *SettingsResponse) error + } + type SettingsService struct { + settingsService + } + h := &settingsServiceHandler{hdlr} + return s.Handle(s.NewHandler(&SettingsService{h}, opts...)) +} + +type settingsServiceHandler struct { + SettingsServiceHandler +} + +func (h *settingsServiceHandler) Set(ctx context.Context, in *SettingsRequest, out *SettingsResponse) error { + return h.SettingsServiceHandler.Set(ctx, in, out) +} + +func (h *settingsServiceHandler) Get(ctx context.Context, in *AccountQueryRequest, out *SettingsResponse) error { + return h.SettingsServiceHandler.Get(ctx, in, out) +} diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto new file mode 100644 index 0000000000..44ff4d906e --- /dev/null +++ b/pkg/proto/v0/accounts.proto @@ -0,0 +1,25 @@ +syntax = "proto3"; + +option go_package = "proto"; + +service SettingsService { + rpc Set(SettingsRequest) returns (SettingsResponse); + rpc Get(AccountQueryRequest) returns (SettingsResponse); +} + +message SettingsRequest { + AccountSettings request = 1; +} + +message SettingsResponse { + AccountSettings response = 1; +} + +message AccountSettings { + string name = 1; +} + +message AccountQueryRequest { + string name = 1; + int32 uid = 2; +} \ No newline at end of file diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go new file mode 100644 index 0000000000..9eb9fbe75a --- /dev/null +++ b/pkg/service/v0/service.go @@ -0,0 +1,31 @@ +package service + +import ( + "context" + + "github.com/owncloud/ocis-accounts/pkg/proto/v0" +) + +// New returns a new instance of Service +func New() Service { + return Service{} +} + +// Service implements the SettingsServiceHandler interface generated on accounts.pb.micro.go +type Service struct{} + +// Set implements the SettingsServiceHandler interface generated on accounts.pb.micro.go +func (s Service) Set(c context.Context, req *proto.SettingsRequest, res *proto.SettingsResponse) error { + res.Response = &proto.AccountSettings{ + Name: req.Request.Name, + } + return nil +} + +// Get implements the SettingsServiceHandler interface generated on accounts.pb.micro.go +func (s Service) Get(c context.Context, req *proto.AccountQueryRequest, res *proto.SettingsResponse) error { + res.Response = &proto.AccountSettings{ + Name: "hej", + } + return nil +} From 34191e887c0c46667c32b70f4f1ea5fbc196cd17 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 30 Jan 2020 16:08:04 +0100 Subject: [PATCH 002/407] redesign api --- pkg/proto/v0/accounts.pb.go | 212 +++++++++--------------------- pkg/proto/v0/accounts.pb.micro.go | 31 +++-- pkg/proto/v0/accounts.proto | 22 +--- 3 files changed, 86 insertions(+), 179 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 136e1e6ca6..a31a0e539c 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -20,193 +20,109 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package -type SettingsRequest struct { - Request *AccountSettings `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type Record struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Theme string `protobuf:"bytes,2,opt,name=theme,proto3" json:"theme,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *SettingsRequest) Reset() { *m = SettingsRequest{} } -func (m *SettingsRequest) String() string { return proto.CompactTextString(m) } -func (*SettingsRequest) ProtoMessage() {} -func (*SettingsRequest) Descriptor() ([]byte, []int) { +func (m *Record) Reset() { *m = Record{} } +func (m *Record) String() string { return proto.CompactTextString(m) } +func (*Record) ProtoMessage() {} +func (*Record) Descriptor() ([]byte, []int) { return fileDescriptor_e3c84319968a576b, []int{0} } -func (m *SettingsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SettingsRequest.Unmarshal(m, b) +func (m *Record) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Record.Unmarshal(m, b) } -func (m *SettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SettingsRequest.Marshal(b, m, deterministic) +func (m *Record) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Record.Marshal(b, m, deterministic) } -func (m *SettingsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SettingsRequest.Merge(m, src) +func (m *Record) XXX_Merge(src proto.Message) { + xxx_messageInfo_Record.Merge(m, src) } -func (m *SettingsRequest) XXX_Size() int { - return xxx_messageInfo_SettingsRequest.Size(m) +func (m *Record) XXX_Size() int { + return xxx_messageInfo_Record.Size(m) } -func (m *SettingsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SettingsRequest.DiscardUnknown(m) +func (m *Record) XXX_DiscardUnknown() { + xxx_messageInfo_Record.DiscardUnknown(m) } -var xxx_messageInfo_SettingsRequest proto.InternalMessageInfo +var xxx_messageInfo_Record proto.InternalMessageInfo -func (m *SettingsRequest) GetRequest() *AccountSettings { +func (m *Record) GetId() string { if m != nil { - return m.Request + return m.Id } - return nil + return "" } -type SettingsResponse struct { - Response *AccountSettings `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (m *Record) GetTheme() string { + if m != nil { + return m.Theme + } + return "" } -func (m *SettingsResponse) Reset() { *m = SettingsResponse{} } -func (m *SettingsResponse) String() string { return proto.CompactTextString(m) } -func (*SettingsResponse) ProtoMessage() {} -func (*SettingsResponse) Descriptor() ([]byte, []int) { +type Query struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Query) Reset() { *m = Query{} } +func (m *Query) String() string { return proto.CompactTextString(m) } +func (*Query) ProtoMessage() {} +func (*Query) Descriptor() ([]byte, []int) { return fileDescriptor_e3c84319968a576b, []int{1} } -func (m *SettingsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SettingsResponse.Unmarshal(m, b) +func (m *Query) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Query.Unmarshal(m, b) } -func (m *SettingsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SettingsResponse.Marshal(b, m, deterministic) +func (m *Query) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Query.Marshal(b, m, deterministic) } -func (m *SettingsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SettingsResponse.Merge(m, src) +func (m *Query) XXX_Merge(src proto.Message) { + xxx_messageInfo_Query.Merge(m, src) } -func (m *SettingsResponse) XXX_Size() int { - return xxx_messageInfo_SettingsResponse.Size(m) +func (m *Query) XXX_Size() int { + return xxx_messageInfo_Query.Size(m) } -func (m *SettingsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SettingsResponse.DiscardUnknown(m) +func (m *Query) XXX_DiscardUnknown() { + xxx_messageInfo_Query.DiscardUnknown(m) } -var xxx_messageInfo_SettingsResponse proto.InternalMessageInfo +var xxx_messageInfo_Query proto.InternalMessageInfo -func (m *SettingsResponse) GetResponse() *AccountSettings { +func (m *Query) GetId() string { if m != nil { - return m.Response - } - return nil -} - -type AccountSettings struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AccountSettings) Reset() { *m = AccountSettings{} } -func (m *AccountSettings) String() string { return proto.CompactTextString(m) } -func (*AccountSettings) ProtoMessage() {} -func (*AccountSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{2} -} - -func (m *AccountSettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AccountSettings.Unmarshal(m, b) -} -func (m *AccountSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AccountSettings.Marshal(b, m, deterministic) -} -func (m *AccountSettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_AccountSettings.Merge(m, src) -} -func (m *AccountSettings) XXX_Size() int { - return xxx_messageInfo_AccountSettings.Size(m) -} -func (m *AccountSettings) XXX_DiscardUnknown() { - xxx_messageInfo_AccountSettings.DiscardUnknown(m) -} - -var xxx_messageInfo_AccountSettings proto.InternalMessageInfo - -func (m *AccountSettings) GetName() string { - if m != nil { - return m.Name + return m.Id } return "" } -type AccountQueryRequest struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Uid int32 `protobuf:"varint,2,opt,name=uid,proto3" json:"uid,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AccountQueryRequest) Reset() { *m = AccountQueryRequest{} } -func (m *AccountQueryRequest) String() string { return proto.CompactTextString(m) } -func (*AccountQueryRequest) ProtoMessage() {} -func (*AccountQueryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{3} -} - -func (m *AccountQueryRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AccountQueryRequest.Unmarshal(m, b) -} -func (m *AccountQueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AccountQueryRequest.Marshal(b, m, deterministic) -} -func (m *AccountQueryRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AccountQueryRequest.Merge(m, src) -} -func (m *AccountQueryRequest) XXX_Size() int { - return xxx_messageInfo_AccountQueryRequest.Size(m) -} -func (m *AccountQueryRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AccountQueryRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_AccountQueryRequest proto.InternalMessageInfo - -func (m *AccountQueryRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *AccountQueryRequest) GetUid() int32 { - if m != nil { - return m.Uid - } - return 0 -} - func init() { - proto.RegisterType((*SettingsRequest)(nil), "SettingsRequest") - proto.RegisterType((*SettingsResponse)(nil), "SettingsResponse") - proto.RegisterType((*AccountSettings)(nil), "AccountSettings") - proto.RegisterType((*AccountQueryRequest)(nil), "AccountQueryRequest") + proto.RegisterType((*Record)(nil), "Record") + proto.RegisterType((*Query)(nil), "Query") } func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } var fileDescriptor_e3c84319968a576b = []byte{ - // 219 bytes of a gzipped FileDescriptorProto + // 160 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2e, 0xc8, 0x4e, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0xd7, 0x2f, 0x33, 0xd0, 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, - 0x29, 0xd6, 0x03, 0x8b, 0x28, 0xd9, 0x72, 0xf1, 0x07, 0xa7, 0x96, 0x94, 0x64, 0xe6, 0xa5, 0x17, - 0x07, 0xa5, 0x16, 0x96, 0xa6, 0x16, 0x97, 0x08, 0x69, 0x71, 0xb1, 0x17, 0x41, 0x98, 0x12, 0x8c, - 0x0a, 0x8c, 0x1a, 0xdc, 0x46, 0x02, 0x7a, 0x8e, 0x10, 0x4d, 0x70, 0x95, 0x30, 0x05, 0x4a, 0x0e, - 0x5c, 0x02, 0x08, 0xed, 0xc5, 0x05, 0xf9, 0x79, 0xc5, 0xa9, 0x42, 0x3a, 0x5c, 0x1c, 0x45, 0x50, - 0x36, 0x4e, 0x03, 0xe0, 0x2a, 0x94, 0x54, 0xb9, 0xf8, 0xd1, 0x24, 0x85, 0x84, 0xb8, 0x58, 0xf2, - 0x12, 0x73, 0x21, 0x9a, 0x39, 0x83, 0xc0, 0x6c, 0x25, 0x6b, 0x2e, 0x61, 0xa8, 0xb2, 0xc0, 0xd2, - 0xd4, 0xa2, 0x4a, 0x98, 0x5b, 0xb1, 0x28, 0x15, 0x12, 0xe0, 0x62, 0x2e, 0xcd, 0x4c, 0x91, 0x60, - 0x52, 0x60, 0xd4, 0x60, 0x0d, 0x02, 0x31, 0x8d, 0x72, 0x11, 0x9e, 0x0c, 0x4e, 0x2d, 0x2a, 0xcb, - 0x4c, 0x4e, 0x15, 0xd2, 0xe2, 0x62, 0x0e, 0x4e, 0x2d, 0x11, 0x12, 0xd0, 0x43, 0xf3, 0xbd, 0x94, - 0xa0, 0x1e, 0x86, 0x87, 0xf4, 0xb8, 0x98, 0xdd, 0x53, 0x4b, 0x84, 0x44, 0xf4, 0xb0, 0xb8, 0x00, - 0x8b, 0x7a, 0x27, 0xf6, 0x28, 0x56, 0x70, 0xe0, 0x26, 0xb1, 0x81, 0x29, 0x63, 0x40, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xc9, 0x14, 0x7d, 0xf0, 0x82, 0x01, 0x00, 0x00, + 0x29, 0xd6, 0x03, 0x8b, 0x28, 0xe9, 0x71, 0xb1, 0x05, 0xa5, 0x26, 0xe7, 0x17, 0xa5, 0x08, 0xf1, + 0x71, 0x31, 0x65, 0xa6, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0x31, 0x65, 0xa6, 0x08, 0x89, + 0x70, 0xb1, 0x96, 0x64, 0xa4, 0xe6, 0xa6, 0x4a, 0x30, 0x81, 0x85, 0x20, 0x1c, 0x25, 0x71, 0x2e, + 0xd6, 0xc0, 0xd2, 0xd4, 0xa2, 0x4a, 0x74, 0xe5, 0x46, 0x4e, 0x5c, 0xfc, 0xc1, 0xa9, 0x25, 0x25, + 0x99, 0x79, 0xe9, 0xc5, 0xc1, 0xa9, 0x45, 0x65, 0x99, 0xc9, 0xa9, 0x42, 0xe2, 0x5c, 0xcc, 0xc1, + 0xa9, 0x25, 0x42, 0xec, 0x7a, 0x10, 0x1b, 0xa4, 0x60, 0x0c, 0x21, 0x31, 0x2e, 0x66, 0xf7, 0xd4, + 0x12, 0x21, 0x36, 0x3d, 0xb0, 0x51, 0x70, 0x71, 0x27, 0xf6, 0x28, 0x56, 0xb0, 0xab, 0x92, 0xd8, + 0xc0, 0x94, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x77, 0x5d, 0x07, 0xb2, 0xbb, 0x00, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index f3c3d164d7..15473f36d1 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -5,14 +5,13 @@ package proto import ( fmt "fmt" - math "math" - proto "github.com/golang/protobuf/proto" + math "math" +) +import ( context "context" - client "github.com/micro/go-micro/client" - server "github.com/micro/go-micro/server" ) @@ -35,8 +34,8 @@ var _ server.Option // Client API for SettingsService service type SettingsService interface { - Set(ctx context.Context, in *SettingsRequest, opts ...client.CallOption) (*SettingsResponse, error) - Get(ctx context.Context, in *AccountQueryRequest, opts ...client.CallOption) (*SettingsResponse, error) + Set(ctx context.Context, in *Record, opts ...client.CallOption) (*Record, error) + Get(ctx context.Context, in *Query, opts ...client.CallOption) (*Record, error) } type settingsService struct { @@ -57,9 +56,9 @@ func NewSettingsService(name string, c client.Client) SettingsService { } } -func (c *settingsService) Set(ctx context.Context, in *SettingsRequest, opts ...client.CallOption) (*SettingsResponse, error) { +func (c *settingsService) Set(ctx context.Context, in *Record, opts ...client.CallOption) (*Record, error) { req := c.c.NewRequest(c.name, "SettingsService.Set", in) - out := new(SettingsResponse) + out := new(Record) err := c.c.Call(ctx, req, out, opts...) if err != nil { return nil, err @@ -67,9 +66,9 @@ func (c *settingsService) Set(ctx context.Context, in *SettingsRequest, opts ... return out, nil } -func (c *settingsService) Get(ctx context.Context, in *AccountQueryRequest, opts ...client.CallOption) (*SettingsResponse, error) { +func (c *settingsService) Get(ctx context.Context, in *Query, opts ...client.CallOption) (*Record, error) { req := c.c.NewRequest(c.name, "SettingsService.Get", in) - out := new(SettingsResponse) + out := new(Record) err := c.c.Call(ctx, req, out, opts...) if err != nil { return nil, err @@ -80,14 +79,14 @@ func (c *settingsService) Get(ctx context.Context, in *AccountQueryRequest, opts // Server API for SettingsService service type SettingsServiceHandler interface { - Set(context.Context, *SettingsRequest, *SettingsResponse) error - Get(context.Context, *AccountQueryRequest, *SettingsResponse) error + Set(context.Context, *Record, *Record) error + Get(context.Context, *Query, *Record) error } func RegisterSettingsServiceHandler(s server.Server, hdlr SettingsServiceHandler, opts ...server.HandlerOption) error { type settingsService interface { - Set(ctx context.Context, in *SettingsRequest, out *SettingsResponse) error - Get(ctx context.Context, in *AccountQueryRequest, out *SettingsResponse) error + Set(ctx context.Context, in *Record, out *Record) error + Get(ctx context.Context, in *Query, out *Record) error } type SettingsService struct { settingsService @@ -100,10 +99,10 @@ type settingsServiceHandler struct { SettingsServiceHandler } -func (h *settingsServiceHandler) Set(ctx context.Context, in *SettingsRequest, out *SettingsResponse) error { +func (h *settingsServiceHandler) Set(ctx context.Context, in *Record, out *Record) error { return h.SettingsServiceHandler.Set(ctx, in, out) } -func (h *settingsServiceHandler) Get(ctx context.Context, in *AccountQueryRequest, out *SettingsResponse) error { +func (h *settingsServiceHandler) Get(ctx context.Context, in *Query, out *Record) error { return h.SettingsServiceHandler.Get(ctx, in, out) } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 44ff4d906e..14f4fda453 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -3,23 +3,15 @@ syntax = "proto3"; option go_package = "proto"; service SettingsService { - rpc Set(SettingsRequest) returns (SettingsResponse); - rpc Get(AccountQueryRequest) returns (SettingsResponse); + rpc Set(Record) returns (Record); + rpc Get(Query) returns (Record); } -message SettingsRequest { - AccountSettings request = 1; +message Record { + string id = 1; + string theme = 2; } -message SettingsResponse { - AccountSettings response = 1; -} - -message AccountSettings { - string name = 1; -} - -message AccountQueryRequest { - string name = 1; - int32 uid = 2; +message Query { + string id = 1; } \ No newline at end of file From 92a2c65bba2b2d35a74b0049fb4056bdfb76b3f4 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 30 Jan 2020 16:11:34 +0100 Subject: [PATCH 003/407] working mvp + manager --- go.mod | 1 + pkg/manager/manager.go | 2 ++ pkg/service/v0/service.go | 13 +++++-------- 3 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 pkg/manager/manager.go diff --git a/go.mod b/go.mod index d56311bc42..30f1ca17dd 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.13 require ( github.com/golang/protobuf v1.3.2 + github.com/google/uuid v1.1.1 github.com/micro/cli v0.2.0 github.com/micro/go-micro v1.18.0 github.com/oklog/run v1.1.0 diff --git a/pkg/manager/manager.go b/pkg/manager/manager.go new file mode 100644 index 0000000000..40c242cad4 --- /dev/null +++ b/pkg/manager/manager.go @@ -0,0 +1,2 @@ +// package manager implements the go-micro store interface +package manager diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 9eb9fbe75a..9241167b03 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -3,6 +3,7 @@ package service import ( "context" + "github.com/google/uuid" "github.com/owncloud/ocis-accounts/pkg/proto/v0" ) @@ -15,17 +16,13 @@ func New() Service { type Service struct{} // Set implements the SettingsServiceHandler interface generated on accounts.pb.micro.go -func (s Service) Set(c context.Context, req *proto.SettingsRequest, res *proto.SettingsResponse) error { - res.Response = &proto.AccountSettings{ - Name: req.Request.Name, - } +func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { + res.Id = uuid.New().String() + res.Theme = "dark" return nil } // Get implements the SettingsServiceHandler interface generated on accounts.pb.micro.go -func (s Service) Get(c context.Context, req *proto.AccountQueryRequest, res *proto.SettingsResponse) error { - res.Response = &proto.AccountSettings{ - Name: "hej", - } +func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { return nil } From c096d888ef5f9860b03ba8d94c86aec1d5167602 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 30 Jan 2020 16:11:59 +0100 Subject: [PATCH 004/407] fix linter --- pkg/manager/manager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/manager/manager.go b/pkg/manager/manager.go index 40c242cad4..30975aa3f0 100644 --- a/pkg/manager/manager.go +++ b/pkg/manager/manager.go @@ -1,2 +1,2 @@ -// package manager implements the go-micro store interface +// Package manager implements the go-micro store interface package manager From d6323ea880c24184adf7382217e9f803fca892c6 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 30 Jan 2020 16:13:25 +0100 Subject: [PATCH 005/407] rename manager -> store --- pkg/manager/manager.go | 2 -- pkg/store/store.go | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 pkg/manager/manager.go create mode 100644 pkg/store/store.go diff --git a/pkg/manager/manager.go b/pkg/manager/manager.go deleted file mode 100644 index 30975aa3f0..0000000000 --- a/pkg/manager/manager.go +++ /dev/null @@ -1,2 +0,0 @@ -// Package manager implements the go-micro store interface -package manager diff --git a/pkg/store/store.go b/pkg/store/store.go new file mode 100644 index 0000000000..091cfe1c44 --- /dev/null +++ b/pkg/store/store.go @@ -0,0 +1,2 @@ +// Package store implements the go-micro store interface +package store From 755d3e554d8c26159580d7a0fb2f2f4f6647d5de Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 30 Jan 2020 16:16:11 +0100 Subject: [PATCH 006/407] yet again restructure the whole damn thing --- pkg/store/filesystem/store.go | 5 +++++ pkg/store/store.go | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 pkg/store/filesystem/store.go delete mode 100644 pkg/store/store.go diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go new file mode 100644 index 0000000000..00ccce1f6d --- /dev/null +++ b/pkg/store/filesystem/store.go @@ -0,0 +1,5 @@ +// Package store implements the go-micro store interface +package store + +// Store interacts with the filesystem to manage account information +type Store struct{} diff --git a/pkg/store/store.go b/pkg/store/store.go deleted file mode 100644 index 091cfe1c44..0000000000 --- a/pkg/store/store.go +++ /dev/null @@ -1,2 +0,0 @@ -// Package store implements the go-micro store interface -package store From 31023b25b8cbb58a545c298d75ab4d2a4af83a67 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 30 Jan 2020 16:28:29 +0100 Subject: [PATCH 007/407] use go-micro/v2, render file system store manager --- go.mod | 1 + go.sum | 73 +++++++++++++++++++++++++++++++++++ pkg/store/filesystem/store.go | 37 ++++++++++++++++++ 3 files changed, 111 insertions(+) diff --git a/go.mod b/go.mod index 30f1ca17dd..617335c05b 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/google/uuid v1.1.1 github.com/micro/cli v0.2.0 github.com/micro/go-micro v1.18.0 + github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec github.com/owncloud/ocis-ocs v0.0.0-20191224113758-20455a2e9013 diff --git a/go.sum b/go.sum index ed739bd4cb..33cf295ca7 100644 --- a/go.sum +++ b/go.sum @@ -5,9 +5,12 @@ cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISt cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= contrib.go.opencensus.io/exporter/jaeger v0.2.0 h1:nhTv/Ry3lGmqbJ/JGvCjWxBl5ozRfqo86Ngz59UAlfk= contrib.go.opencensus.io/exporter/jaeger v0.2.0/go.mod h1:ukdzwIYYHgZ7QYtwVFQUjiT28BJHiMhTERo32s6qVgM= @@ -21,6 +24,7 @@ contrib.go.opencensus.io/exporter/zipkin v0.1.1 h1:PR+1zWqY8ceXs1qDQQIlgXe+sdiwC contrib.go.opencensus.io/exporter/zipkin v0.1.1/go.mod h1:GMvdSl3eJ2gapOaLKzTKE3qDgUkJ86k9k3yY2eqwkzc= contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= @@ -115,6 +119,7 @@ github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2w github.com/bradfitz/iter v0.0.0-20190303215204-33e6a9893b0c/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= +github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -147,6 +152,8 @@ github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkE github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.17+incompatible h1:f/Z3EoDSx1yjaIjLQGo1diYUlQYSBrrAQ5vP8NjwXwo= github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.18+incompatible h1:Zz1aXgDrFFi1nadh58tA9ktt06cmPTwNNP3dXwIq1lE= +github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -157,6 +164,7 @@ github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMElOWxok= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -188,6 +196,7 @@ github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= @@ -210,12 +219,14 @@ github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aev github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= +github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -233,6 +244,7 @@ github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dp github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-redsync/redsync v1.3.1/go.mod h1:qxZwM5JOimfq8y98Wk2+c8dKtxJgG5/yIl2ODz2E5Dk= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -255,6 +267,8 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc h1:55rEp52jU6bkyslZ1+C/7NGfpQsEc6pxGLAGDOctqbw= github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -374,6 +388,8 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -405,11 +421,14 @@ github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdA github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA= github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gNfqwTxjbE7s3Vb8s= github.com/lucas-clemente/quic-go v0.13.1 h1:CxtJTXQIh2aboCPk0M6vf530XOov6DZjVBiSE3nSj8s= github.com/lucas-clemente/quic-go v0.13.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= +github.com/lucas-clemente/quic-go v0.14.1 h1:c1aKoBZKOPA+49q96B1wGkibyPP0AxYh45WuAoq+87E= +github.com/lucas-clemente/quic-go v0.14.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -434,12 +453,17 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0j github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= +github.com/mholt/certmagic v0.9.1/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= +github.com/micro/cli/v2 v2.1.1 h1:uFw0SMIKmGuyHIm8lXns/NOn7V62bM5y7DnlxUM+BEQ= +github.com/micro/cli/v2 v2.1.1/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6s+iDsrM= github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= +github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXpRw= +github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= github.com/micro/mdns v0.3.0 h1:bYycYe+98AXR3s8Nq5qvt6C573uFTDPIYzJemWON0QE= @@ -451,6 +475,8 @@ github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nr github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.22 h1:Jm64b3bO9kP43ddLjL2EY3Io6bmy1qGb9Xxz6TqS6rc= github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= +github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -484,19 +510,27 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+ github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= github.com/nats-io/jwt v0.3.0 h1:xdnzwFETV++jNc4W1mw//qFyJGb2ABOombmZJQS4+Qo= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.0/go.mod h1:r5y0WgCag0dTj/qiHkHrXAcKQ/f5GMOZaEGdoxxnJ4I= +github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= github.com/nats-io/nkeys v0.1.0 h1:qMd4+pRHgdr1nAClu+2h/2a5F2TmKcCzjCDazVgRoX4= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= +github.com/nlopes/slack v0.6.1-0.20191106133607-d06c2a2b3249/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= +github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= @@ -554,6 +588,8 @@ github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -598,6 +634,7 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -609,6 +646,7 @@ github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdh github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= @@ -657,6 +695,7 @@ github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLp github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= @@ -700,10 +739,13 @@ go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.12.0 h1:dySoUQPFBGj6xwjmBzageVL8jGi8uxc6bEmJQjA06bw= go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= gocloud.dev v0.17.0/go.mod h1:tIHTRdR1V5dlD8sTkzYdTGizBJ314BDykJ8KmadEXwo= gocloud.dev/pubsub/rabbitpubsub v0.17.0/go.mod h1:7o1XYDiIC+b0mmcwJuofsDg08t0DtU2ubfn7C/Uz7Y0= golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -729,17 +771,29 @@ golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a h1:R/qVym5WAxsZWQqZCwDY/8sdVKV1m1WgU4/S5IRQAzc= golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200117160349-530e935923ad h1:Jh8cai0fqIK+f6nG0UgPW5wFk8wmiMhM3AyciDBdtQg= +golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -770,11 +824,14 @@ golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663 h1:Dd5RoEW+yQi+9DMybroBctIdyiwuNT7sJFMC27/6KxI= golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -786,6 +843,7 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -854,12 +912,20 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -869,6 +935,7 @@ google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEn google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -886,8 +953,11 @@ google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dT google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a h1:Ob5/580gVHBJZgXnff1cZDbG+xLtMVE5mDRTe+nIsX4= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 h1:aQktFqmDE2yjveXJlVIfslDFmFnUXSqG0i6KRcJAeMc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -901,6 +971,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= google.golang.org/grpc v1.25.1 h1:wdKvqQk7IttEw92GoRyKG2IDrUIpgpj6H6m81yfeMW0= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= @@ -914,6 +986,7 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= +gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 00ccce1f6d..65db70f20a 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -1,5 +1,42 @@ // Package store implements the go-micro store interface package store +import ( + mstore "github.com/micro/go-micro/v2/store" +) + // Store interacts with the filesystem to manage account information type Store struct{} + +// New returns a new file system store manager +func New() Store { + return Store{} +} + +// Init implements the store interface +func (s *Store) Init(...mstore.Options) {} + +// List implements the store interface +func (s *Store) List() ([]*mstore.Record, error) { + return nil, nil +} + +// Read implements the store interface +func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, error) { + return nil, nil +} + +// Write implements the store interface +func (s *Store) Write(*mstore.Record) error { + return nil +} + +// Delete implements the store interface +func (s *Store) Delete(key string) error { + return nil +} + +// String implements the store interface, and the stringer interface +func (s *Store) String() string { + return "store" +} From d02be70d5269b9d01f737c53052a87a84954dc3f Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 09:36:17 +0100 Subject: [PATCH 008/407] write op working, sort of. encodes b64 --- pkg/service/v0/service.go | 22 ++++++++++++++++++---- pkg/store/filesystem/store.go | 22 +++++++++++++++++++--- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 9241167b03..bde7b72c98 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -2,9 +2,12 @@ package service import ( "context" + "encoding/json" + "log" - "github.com/google/uuid" + mstore "github.com/micro/go-micro/v2/store" "github.com/owncloud/ocis-accounts/pkg/proto/v0" + store "github.com/owncloud/ocis-accounts/pkg/store/filesystem" ) // New returns a new instance of Service @@ -17,9 +20,20 @@ type Service struct{} // Set implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { - res.Id = uuid.New().String() - res.Theme = "dark" - return nil + // uses a store manager to persist account information + st := store.New() + + data, err := json.Marshal([]byte(`{"theme": "dark"}`)) + if err != nil { + // deal with this accordingly and not panicking + log.Panic(err) + } + record := mstore.Record{ + Key: req.Id, + Value: data, + } + + return st.Write(&record) } // Get implements the SettingsServiceHandler interface generated on accounts.pb.micro.go diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 65db70f20a..98a04d88cd 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -2,15 +2,24 @@ package store import ( + "fmt" + "io/ioutil" + "log" + mstore "github.com/micro/go-micro/v2/store" ) // Store interacts with the filesystem to manage account information -type Store struct{} +type Store struct { + mountPath string +} // New returns a new file system store manager +// TODO add mountPath as an option argument func New() Store { - return Store{} + return Store{ + mountPath: "/var/tmp/ocis-store", + } } // Init implements the store interface @@ -27,7 +36,14 @@ func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, e } // Write implements the store interface -func (s *Store) Write(*mstore.Record) error { +func (s *Store) Write(rec *mstore.Record) error { + if rec.Key == "" { + return fmt.Errorf("%v", "key is empty") + } + + if err := ioutil.WriteFile(s.mountPath+"/"+rec.Key, rec.Value, 0644); err != nil { + log.Panic(err) + } return nil } From b99eff460f96bfb2b1273cbaee070b8e7d8bd1cc Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 10:34:01 +0100 Subject: [PATCH 009/407] store json on mountPath --- pkg/proto/v0/accounts.pb.go | 86 +++++++++++++++++++++++-------- pkg/proto/v0/accounts.pb.micro.go | 2 +- pkg/proto/v0/accounts.proto | 9 +++- pkg/service/v0/service.go | 12 ++--- pkg/store/filesystem/store.go | 2 +- 5 files changed, 79 insertions(+), 32 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index a31a0e539c..6e4503750a 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -21,11 +21,11 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type Record struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Theme string `protobuf:"bytes,2,opt,name=theme,proto3" json:"theme,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Payload *Settings `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Record) Reset() { *m = Record{} } @@ -53,18 +53,18 @@ func (m *Record) XXX_DiscardUnknown() { var xxx_messageInfo_Record proto.InternalMessageInfo -func (m *Record) GetId() string { +func (m *Record) GetKey() string { if m != nil { - return m.Id + return m.Key } return "" } -func (m *Record) GetTheme() string { +func (m *Record) GetPayload() *Settings { if m != nil { - return m.Theme + return m.Payload } - return "" + return nil } type Query struct { @@ -106,23 +106,67 @@ func (m *Query) GetId() string { return "" } +type Settings struct { + Theme string `protobuf:"bytes,2,opt,name=theme,proto3" json:"theme,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Settings) Reset() { *m = Settings{} } +func (m *Settings) String() string { return proto.CompactTextString(m) } +func (*Settings) ProtoMessage() {} +func (*Settings) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{2} +} + +func (m *Settings) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Settings.Unmarshal(m, b) +} +func (m *Settings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Settings.Marshal(b, m, deterministic) +} +func (m *Settings) XXX_Merge(src proto.Message) { + xxx_messageInfo_Settings.Merge(m, src) +} +func (m *Settings) XXX_Size() int { + return xxx_messageInfo_Settings.Size(m) +} +func (m *Settings) XXX_DiscardUnknown() { + xxx_messageInfo_Settings.DiscardUnknown(m) +} + +var xxx_messageInfo_Settings proto.InternalMessageInfo + +func (m *Settings) GetTheme() string { + if m != nil { + return m.Theme + } + return "" +} + func init() { - proto.RegisterType((*Record)(nil), "Record") - proto.RegisterType((*Query)(nil), "Query") + proto.RegisterType((*Record)(nil), "settings.Record") + proto.RegisterType((*Query)(nil), "settings.Query") + proto.RegisterType((*Settings)(nil), "settings.Settings") } func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } var fileDescriptor_e3c84319968a576b = []byte{ - // 160 bytes of a gzipped FileDescriptorProto + // 211 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2e, 0xc8, 0x4e, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0xd7, 0x2f, 0x33, 0xd0, 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, - 0x29, 0xd6, 0x03, 0x8b, 0x28, 0xe9, 0x71, 0xb1, 0x05, 0xa5, 0x26, 0xe7, 0x17, 0xa5, 0x08, 0xf1, - 0x71, 0x31, 0x65, 0xa6, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0x31, 0x65, 0xa6, 0x08, 0x89, - 0x70, 0xb1, 0x96, 0x64, 0xa4, 0xe6, 0xa6, 0x4a, 0x30, 0x81, 0x85, 0x20, 0x1c, 0x25, 0x71, 0x2e, - 0xd6, 0xc0, 0xd2, 0xd4, 0xa2, 0x4a, 0x74, 0xe5, 0x46, 0x4e, 0x5c, 0xfc, 0xc1, 0xa9, 0x25, 0x25, - 0x99, 0x79, 0xe9, 0xc5, 0xc1, 0xa9, 0x45, 0x65, 0x99, 0xc9, 0xa9, 0x42, 0xe2, 0x5c, 0xcc, 0xc1, - 0xa9, 0x25, 0x42, 0xec, 0x7a, 0x10, 0x1b, 0xa4, 0x60, 0x0c, 0x21, 0x31, 0x2e, 0x66, 0xf7, 0xd4, - 0x12, 0x21, 0x36, 0x3d, 0xb0, 0x51, 0x70, 0x71, 0x27, 0xf6, 0x28, 0x56, 0xb0, 0xab, 0x92, 0xd8, - 0xc0, 0x94, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x77, 0x5d, 0x07, 0xb2, 0xbb, 0x00, 0x00, 0x00, + 0x29, 0xd6, 0x03, 0x8b, 0x08, 0x71, 0x14, 0xa7, 0x96, 0x94, 0x64, 0xe6, 0xa5, 0x17, 0x2b, 0x79, + 0x70, 0xb1, 0x05, 0xa5, 0x26, 0xe7, 0x17, 0xa5, 0x08, 0x09, 0x70, 0x31, 0x67, 0xa7, 0x56, 0x4a, + 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0x81, 0x98, 0x42, 0x3a, 0x5c, 0xec, 0x05, 0x89, 0x95, 0x39, + 0xf9, 0x89, 0x29, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0xdc, 0x46, 0x42, 0x7a, 0x30, 0x7d, 0x7a, 0xc1, + 0x50, 0x46, 0x10, 0x4c, 0x89, 0x92, 0x38, 0x17, 0x6b, 0x60, 0x69, 0x6a, 0x51, 0xa5, 0x10, 0x1f, + 0x17, 0x53, 0x66, 0x0a, 0xd4, 0x1c, 0xa6, 0xcc, 0x14, 0x25, 0x05, 0x2e, 0x0e, 0x98, 0x6a, 0x21, + 0x11, 0x2e, 0xd6, 0x92, 0x8c, 0xd4, 0xdc, 0x54, 0xb0, 0x81, 0x9c, 0x41, 0x10, 0x8e, 0x51, 0x1a, + 0x17, 0x3f, 0x4c, 0x45, 0x70, 0x6a, 0x51, 0x59, 0x66, 0x72, 0xaa, 0x90, 0x26, 0x17, 0x73, 0x70, + 0x6a, 0x89, 0x90, 0x00, 0xc2, 0x46, 0x88, 0x33, 0xa5, 0x30, 0x44, 0x84, 0x34, 0xb8, 0x98, 0xdd, + 0x53, 0x4b, 0x84, 0xf8, 0x11, 0x12, 0x60, 0x77, 0x60, 0xaa, 0x74, 0x62, 0x8f, 0x62, 0x05, 0xfb, + 0x3f, 0x89, 0x0d, 0x4c, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x28, 0x61, 0x84, 0x13, 0x25, + 0x01, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index 15473f36d1..56a3c88a4f 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -48,7 +48,7 @@ func NewSettingsService(name string, c client.Client) SettingsService { c = client.NewClient() } if len(name) == 0 { - name = "settingsservice" + name = "settings" } return &settingsService{ c: c, diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 14f4fda453..68c93a5f74 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -1,5 +1,6 @@ syntax = "proto3"; +package settings; option go_package = "proto"; service SettingsService { @@ -8,10 +9,14 @@ service SettingsService { } message Record { - string id = 1; - string theme = 2; + string key = 1; + Settings payload = 2; } message Query { string id = 1; +} + +message Settings { + string theme = 2; } \ No newline at end of file diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index bde7b72c98..b0c51b188f 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -3,7 +3,6 @@ package service import ( "context" "encoding/json" - "log" mstore "github.com/micro/go-micro/v2/store" "github.com/owncloud/ocis-accounts/pkg/proto/v0" @@ -20,17 +19,16 @@ type Service struct{} // Set implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { - // uses a store manager to persist account information st := store.New() - data, err := json.Marshal([]byte(`{"theme": "dark"}`)) + settingsJSON, err := json.Marshal(req.Payload) if err != nil { - // deal with this accordingly and not panicking - log.Panic(err) + // TODO deal with this } + record := mstore.Record{ - Key: req.Id, - Value: data, + Key: req.Key, + Value: settingsJSON, } return st.Write(&record) diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 98a04d88cd..ace07ec622 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -37,7 +37,7 @@ func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, e // Write implements the store interface func (s *Store) Write(rec *mstore.Record) error { - if rec.Key == "" { + if len(rec.Key) < 1 { return fmt.Errorf("%v", "key is empty") } From 16401c1ffb58ad5aee4e7b37b356114001e607cd Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 10:36:58 +0100 Subject: [PATCH 010/407] splish-splash --- pkg/proto/v0/accounts.pb.go | 3 ++- pkg/store/filesystem/store.go | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 6e4503750a..89560b4e65 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -5,8 +5,9 @@ package proto import ( fmt "fmt" - proto "github.com/golang/protobuf/proto" math "math" + + proto "github.com/golang/protobuf/proto" ) // Reference imports to suppress errors if they are not otherwise used. diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index ace07ec622..be2396be28 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -4,7 +4,6 @@ package store import ( "fmt" "io/ioutil" - "log" mstore "github.com/micro/go-micro/v2/store" ) @@ -42,7 +41,7 @@ func (s *Store) Write(rec *mstore.Record) error { } if err := ioutil.WriteFile(s.mountPath+"/"+rec.Key, rec.Value, 0644); err != nil { - log.Panic(err) + // TODO handle error } return nil } From 01be15e8fc16ffe25b025e9cefc9b591e66a3195 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 10:37:23 +0100 Subject: [PATCH 011/407] move code around --- pkg/proto/v0/accounts.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 68c93a5f74..19acc124d0 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -13,10 +13,10 @@ message Record { Settings payload = 2; } +message Settings { + string theme = 2; +} + message Query { string id = 1; } - -message Settings { - string theme = 2; -} \ No newline at end of file From 673c2c0ebd1105f192797117e9e386fd53f66b10 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 11:05:47 +0100 Subject: [PATCH 012/407] path management and protobuf redesign --- pkg/proto/v0/accounts.pb.go | 226 ++++++++++++++++++++++++---------- pkg/proto/v0/accounts.proto | 16 ++- pkg/service/v0/service.go | 3 +- pkg/store/filesystem/store.go | 20 ++- 4 files changed, 191 insertions(+), 74 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 89560b4e65..9467b336f5 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -5,9 +5,8 @@ package proto import ( fmt "fmt" - math "math" - proto "github.com/golang/protobuf/proto" + math "math" ) // Reference imports to suppress errors if they are not otherwise used. @@ -22,11 +21,11 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type Record struct { - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Payload *Settings `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Payload *Payload `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Record) Reset() { *m = Record{} } @@ -61,13 +60,146 @@ func (m *Record) GetKey() string { return "" } -func (m *Record) GetPayload() *Settings { +func (m *Record) GetPayload() *Payload { if m != nil { return m.Payload } return nil } +type Payload struct { + Phoenix *Phoenix `protobuf:"bytes,1,opt,name=phoenix,proto3" json:"phoenix,omitempty"` + Account *Account `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Payload) Reset() { *m = Payload{} } +func (m *Payload) String() string { return proto.CompactTextString(m) } +func (*Payload) ProtoMessage() {} +func (*Payload) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{1} +} + +func (m *Payload) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Payload.Unmarshal(m, b) +} +func (m *Payload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Payload.Marshal(b, m, deterministic) +} +func (m *Payload) XXX_Merge(src proto.Message) { + xxx_messageInfo_Payload.Merge(m, src) +} +func (m *Payload) XXX_Size() int { + return xxx_messageInfo_Payload.Size(m) +} +func (m *Payload) XXX_DiscardUnknown() { + xxx_messageInfo_Payload.DiscardUnknown(m) +} + +var xxx_messageInfo_Payload proto.InternalMessageInfo + +func (m *Payload) GetPhoenix() *Phoenix { + if m != nil { + return m.Phoenix + } + return nil +} + +func (m *Payload) GetAccount() *Account { + if m != nil { + return m.Account + } + return nil +} + +type Account struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DateOfBirth string `protobuf:"bytes,2,opt,name=dateOfBirth,proto3" json:"dateOfBirth,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Account) Reset() { *m = Account{} } +func (m *Account) String() string { return proto.CompactTextString(m) } +func (*Account) ProtoMessage() {} +func (*Account) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{2} +} + +func (m *Account) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Account.Unmarshal(m, b) +} +func (m *Account) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Account.Marshal(b, m, deterministic) +} +func (m *Account) XXX_Merge(src proto.Message) { + xxx_messageInfo_Account.Merge(m, src) +} +func (m *Account) XXX_Size() int { + return xxx_messageInfo_Account.Size(m) +} +func (m *Account) XXX_DiscardUnknown() { + xxx_messageInfo_Account.DiscardUnknown(m) +} + +var xxx_messageInfo_Account proto.InternalMessageInfo + +func (m *Account) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Account) GetDateOfBirth() string { + if m != nil { + return m.DateOfBirth + } + return "" +} + +type Phoenix struct { + Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Phoenix) Reset() { *m = Phoenix{} } +func (m *Phoenix) String() string { return proto.CompactTextString(m) } +func (*Phoenix) ProtoMessage() {} +func (*Phoenix) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{3} +} + +func (m *Phoenix) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Phoenix.Unmarshal(m, b) +} +func (m *Phoenix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Phoenix.Marshal(b, m, deterministic) +} +func (m *Phoenix) XXX_Merge(src proto.Message) { + xxx_messageInfo_Phoenix.Merge(m, src) +} +func (m *Phoenix) XXX_Size() int { + return xxx_messageInfo_Phoenix.Size(m) +} +func (m *Phoenix) XXX_DiscardUnknown() { + xxx_messageInfo_Phoenix.DiscardUnknown(m) +} + +var xxx_messageInfo_Phoenix proto.InternalMessageInfo + +func (m *Phoenix) GetTheme() string { + if m != nil { + return m.Theme + } + return "" +} + type Query struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -79,7 +211,7 @@ func (m *Query) Reset() { *m = Query{} } func (m *Query) String() string { return proto.CompactTextString(m) } func (*Query) ProtoMessage() {} func (*Query) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{1} + return fileDescriptor_e3c84319968a576b, []int{4} } func (m *Query) XXX_Unmarshal(b []byte) error { @@ -107,67 +239,33 @@ func (m *Query) GetId() string { return "" } -type Settings struct { - Theme string `protobuf:"bytes,2,opt,name=theme,proto3" json:"theme,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Settings) Reset() { *m = Settings{} } -func (m *Settings) String() string { return proto.CompactTextString(m) } -func (*Settings) ProtoMessage() {} -func (*Settings) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{2} -} - -func (m *Settings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Settings.Unmarshal(m, b) -} -func (m *Settings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Settings.Marshal(b, m, deterministic) -} -func (m *Settings) XXX_Merge(src proto.Message) { - xxx_messageInfo_Settings.Merge(m, src) -} -func (m *Settings) XXX_Size() int { - return xxx_messageInfo_Settings.Size(m) -} -func (m *Settings) XXX_DiscardUnknown() { - xxx_messageInfo_Settings.DiscardUnknown(m) -} - -var xxx_messageInfo_Settings proto.InternalMessageInfo - -func (m *Settings) GetTheme() string { - if m != nil { - return m.Theme - } - return "" -} - func init() { proto.RegisterType((*Record)(nil), "settings.Record") + proto.RegisterType((*Payload)(nil), "settings.Payload") + proto.RegisterType((*Account)(nil), "settings.Account") + proto.RegisterType((*Phoenix)(nil), "settings.Phoenix") proto.RegisterType((*Query)(nil), "settings.Query") - proto.RegisterType((*Settings)(nil), "settings.Settings") } func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } var fileDescriptor_e3c84319968a576b = []byte{ - // 211 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2e, 0xc8, 0x4e, 0xd7, - 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0xd7, 0x2f, 0x33, 0xd0, 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, - 0x29, 0xd6, 0x03, 0x8b, 0x08, 0x71, 0x14, 0xa7, 0x96, 0x94, 0x64, 0xe6, 0xa5, 0x17, 0x2b, 0x79, - 0x70, 0xb1, 0x05, 0xa5, 0x26, 0xe7, 0x17, 0xa5, 0x08, 0x09, 0x70, 0x31, 0x67, 0xa7, 0x56, 0x4a, - 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0x81, 0x98, 0x42, 0x3a, 0x5c, 0xec, 0x05, 0x89, 0x95, 0x39, - 0xf9, 0x89, 0x29, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0xdc, 0x46, 0x42, 0x7a, 0x30, 0x7d, 0x7a, 0xc1, - 0x50, 0x46, 0x10, 0x4c, 0x89, 0x92, 0x38, 0x17, 0x6b, 0x60, 0x69, 0x6a, 0x51, 0xa5, 0x10, 0x1f, - 0x17, 0x53, 0x66, 0x0a, 0xd4, 0x1c, 0xa6, 0xcc, 0x14, 0x25, 0x05, 0x2e, 0x0e, 0x98, 0x6a, 0x21, - 0x11, 0x2e, 0xd6, 0x92, 0x8c, 0xd4, 0xdc, 0x54, 0xb0, 0x81, 0x9c, 0x41, 0x10, 0x8e, 0x51, 0x1a, - 0x17, 0x3f, 0x4c, 0x45, 0x70, 0x6a, 0x51, 0x59, 0x66, 0x72, 0xaa, 0x90, 0x26, 0x17, 0x73, 0x70, - 0x6a, 0x89, 0x90, 0x00, 0xc2, 0x46, 0x88, 0x33, 0xa5, 0x30, 0x44, 0x84, 0x34, 0xb8, 0x98, 0xdd, - 0x53, 0x4b, 0x84, 0xf8, 0x11, 0x12, 0x60, 0x77, 0x60, 0xaa, 0x74, 0x62, 0x8f, 0x62, 0x05, 0xfb, - 0x3f, 0x89, 0x0d, 0x4c, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x28, 0x61, 0x84, 0x13, 0x25, - 0x01, 0x00, 0x00, + // 271 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x51, 0x4f, 0x4f, 0x83, 0x30, + 0x14, 0x0f, 0x20, 0xc3, 0xbd, 0x25, 0x6e, 0xbe, 0x98, 0xb8, 0xe8, 0x41, 0xc2, 0x09, 0x63, 0x02, + 0x66, 0x7e, 0x00, 0xe3, 0x2e, 0x3b, 0xaa, 0xe5, 0xe6, 0x0d, 0xe1, 0x6d, 0x34, 0x53, 0x4a, 0x4a, + 0xb7, 0xc8, 0xb7, 0x37, 0x6b, 0x8b, 0x73, 0xe1, 0xd4, 0xd7, 0xdf, 0xbf, 0xf7, 0x4b, 0x0b, 0xb7, + 0xcd, 0x76, 0x93, 0x36, 0x52, 0x28, 0x91, 0xee, 0x1f, 0xd3, 0xbc, 0x28, 0xc4, 0xae, 0x56, 0x6d, + 0xa2, 0x11, 0x3c, 0x6f, 0x49, 0x29, 0x5e, 0x6f, 0xda, 0x68, 0x05, 0x23, 0x46, 0x85, 0x90, 0x25, + 0xce, 0xc0, 0xdb, 0x52, 0x37, 0x77, 0x42, 0x27, 0x1e, 0xb3, 0xc3, 0x88, 0x0f, 0x10, 0x34, 0x79, + 0xf7, 0x25, 0xf2, 0x72, 0xee, 0x86, 0x4e, 0x3c, 0x59, 0x5c, 0x26, 0xbd, 0x2f, 0x79, 0x33, 0x04, + 0xeb, 0x15, 0x51, 0x01, 0x81, 0xc5, 0xb4, 0xaf, 0x12, 0x54, 0xf3, 0x1f, 0x9d, 0x76, 0xea, 0x33, + 0x04, 0xeb, 0x15, 0x07, 0xb1, 0x2d, 0x37, 0x5c, 0xf2, 0x62, 0x08, 0xd6, 0x2b, 0xa2, 0x67, 0x08, + 0x2c, 0x86, 0x08, 0x67, 0x75, 0xfe, 0x4d, 0xb6, 0xaf, 0x9e, 0x31, 0x84, 0x49, 0x99, 0x2b, 0x7a, + 0x5d, 0x2f, 0xb9, 0x54, 0x95, 0xce, 0x1b, 0xb3, 0xff, 0x50, 0x74, 0x07, 0x81, 0x6d, 0x80, 0x57, + 0xe0, 0xab, 0x8a, 0xfe, 0x12, 0xcc, 0x25, 0xba, 0x06, 0xff, 0x7d, 0x47, 0xb2, 0xc3, 0x0b, 0x70, + 0x79, 0x69, 0x39, 0x97, 0x97, 0x8b, 0x35, 0x4c, 0x33, 0xdb, 0x2b, 0x23, 0xb9, 0xe7, 0x05, 0xe1, + 0x3d, 0x78, 0x19, 0x29, 0x9c, 0x1d, 0x0b, 0x9b, 0xa7, 0xbc, 0x19, 0x20, 0x18, 0x83, 0xb7, 0x22, + 0x85, 0xd3, 0x23, 0xa1, 0xb7, 0x0c, 0x95, 0xcb, 0xe0, 0xc3, 0xd7, 0x7f, 0xf4, 0x39, 0xd2, 0xc7, + 0xd3, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x66, 0x19, 0xd7, 0xce, 0xc9, 0x01, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 19acc124d0..e329059f2a 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -10,11 +10,21 @@ service SettingsService { message Record { string key = 1; - Settings payload = 2; + Payload payload = 2; } -message Settings { - string theme = 2; +message Payload { + Phoenix phoenix = 1; + Account account = 2; +} + +message Account { + string name = 1; + string dateOfBirth = 2; +} + +message Phoenix { + string theme = 1; } message Query { diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index b0c51b188f..a1eeb586e4 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -23,7 +23,8 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er settingsJSON, err := json.Marshal(req.Payload) if err != nil { - // TODO deal with this + // TODO log the error + return err } record := mstore.Record{ diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index be2396be28..c850206351 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -4,20 +4,24 @@ package store import ( "fmt" "io/ioutil" + "path/filepath" mstore "github.com/micro/go-micro/v2/store" ) +// DefaultPath assumes UNIX +var DefaultPath string = "/var/tmp/ocis-store" + // Store interacts with the filesystem to manage account information type Store struct { mountPath string } // New returns a new file system store manager -// TODO add mountPath as an option argument +// TODO add mountPath as a flag func New() Store { return Store{ - mountPath: "/var/tmp/ocis-store", + mountPath: DefaultPath, } } @@ -36,14 +40,18 @@ func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, e // Write implements the store interface func (s *Store) Write(rec *mstore.Record) error { + path := filepath.Join(s.mountPath, rec.Key) + + if filepath.IsAbs(path) { + // TODO WARN, storage is relative to the service directory + } + if len(rec.Key) < 1 { + // TODO log error: empty key return fmt.Errorf("%v", "key is empty") } - if err := ioutil.WriteFile(s.mountPath+"/"+rec.Key, rec.Value, 0644); err != nil { - // TODO handle error - } - return nil + return ioutil.WriteFile(path, rec.Value, 0644) } // Delete implements the store interface From 29f4ba30cbbcb4be97040adf2e875c92fd981367 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 11:36:22 +0100 Subject: [PATCH 013/407] Get placeholder --- pkg/service/v0/service.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index a1eeb586e4..7f8bdd4b87 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -19,6 +19,7 @@ type Service struct{} // Set implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { + // TODO this should be a globally initialized struct st := store.New() settingsJSON, err := json.Marshal(req.Payload) @@ -37,5 +38,10 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er // Get implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { + res.Payload = &proto.Payload{ + Phoenix: &proto.Phoenix{ + Theme: "light", + }, + } return nil } From 351694d22d6a75816128cdb034f268c30ebc69fd Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 13:09:07 +0100 Subject: [PATCH 014/407] tooling --- .gitignore | 4 + Makefile | 139 ++++++++++++++++++++++++++++++++++ cmd/ocis-accounts/ffs | 1 + pkg/service/v0/service.go | 1 - pkg/store/filesystem/store.go | 29 ++++--- pkg/version/version.go | 19 +++++ 6 files changed, 183 insertions(+), 10 deletions(-) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 cmd/ocis-accounts/ffs create mode 100644 pkg/version/version.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..8eaa5285f7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +coverage.out + +/bin +/dist \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..2c01995bba --- /dev/null +++ b/Makefile @@ -0,0 +1,139 @@ +SHELL := bash +NAME := ocis-accounts +IMPORT := github.com/owncloud/$(NAME) +BIN := bin +DIST := dist + +ifeq ($(OS), Windows_NT) + EXECUTABLE := $(NAME).exe + UNAME := Windows +else + EXECUTABLE := $(NAME) + UNAME := $(shell uname -s) +endif + +ifeq ($(UNAME), Darwin) + GOBUILD ?= go build -i +else + GOBUILD ?= go build +endif + +PACKAGES ?= $(shell go list ./...) +SOURCES ?= $(shell find . -name "*.go" -type f -not -path "./node_modules/*") +GENERATE ?= $(PACKAGES) + +TAGS ?= + +ifndef OUTPUT + ifneq ($(DRONE_TAG),) + OUTPUT ?= $(subst v,,$(DRONE_TAG)) + else + OUTPUT ?= testing + endif +endif + +ifndef VERSION + ifneq ($(DRONE_TAG),) + VERSION ?= $(subst v,,$(DRONE_TAG)) + else + VERSION ?= $(shell git rev-parse --short HEAD) + endif +endif + +ifndef DATE + DATE := $(shell date -u '+%Y%m%d') +endif + +LDFLAGS += -s -w -X "$(IMPORT)/pkg/version.String=$(VERSION)" -X "$(IMPORT)/pkg/version.Date=$(DATE)" +GCFLAGS += all=-N -l + +.PHONY: all +all: build + +.PHONY: sync +sync: + go mod download + +.PHONY: clean +clean: + go clean -i ./... + rm -rf $(BIN) $(DIST) + +.PHONY: fmt +fmt: + gofmt -s -w $(SOURCES) + +.PHONY: vet +vet: + go vet $(PACKAGES) + +.PHONY: staticcheck +staticcheck: + go run honnef.co/go/tools/cmd/staticcheck -tags '$(TAGS)' $(PACKAGES) + +.PHONY: lint +lint: + for PKG in $(PACKAGES); do go run golang.org/x/lint/golint -set_exit_status $$PKG || exit 1; done; + +.PHONY: generate +generate: + go generate $(GENERATE) + +.PHONY: changelog +changelog: + go run github.com/restic/calens >| CHANGELOG.md + +.PHONY: test +test: + go run github.com/haya14busa/goverage -v -coverprofile coverage.out $(PACKAGES) + +.PHONY: install +install: $(SOURCES) + go install -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' ./cmd/$(NAME) + +.PHONY: build +build: $(BIN)/$(EXECUTABLE) $(BIN)/$(EXECUTABLE)-debug + +$(BIN)/$(EXECUTABLE): $(SOURCES) + $(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $@ ./cmd/$(NAME) + +$(BIN)/$(EXECUTABLE)-debug: $(SOURCES) + $(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -gcflags '$(GCFLAGS)' -o $@ ./cmd/$(NAME) + +.PHONY: release +release: release-dirs release-linux release-windows release-darwin release-copy release-check + +.PHONY: release-dirs +release-dirs: + mkdir -p $(DIST)/binaries $(DIST)/release + +.PHONY: release-linux +release-linux: release-dirs + go run github.com/mitchellh/gox -tags 'netgo $(TAGS)' -ldflags '-extldflags "-static" $(LDFLAGS)' -os 'linux' -arch 'amd64 386 arm64 arm' -output '$(DIST)/binaries/$(EXECUTABLE)-$(OUTPUT)-{{.OS}}-{{.Arch}}' ./cmd/$(NAME) + +.PHONY: release-windows +release-windows: release-dirs + go run github.com/mitchellh/gox -tags 'netgo $(TAGS)' -ldflags '-extldflags "-static" $(LDFLAGS)' -os 'windows' -arch 'amd64' -output '$(DIST)/binaries/$(EXECUTABLE)-$(OUTPUT)-{{.OS}}-{{.Arch}}' ./cmd/$(NAME) + +.PHONY: release-darwin +release-darwin: release-dirs + go run github.com/mitchellh/gox -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -os 'darwin' -arch 'amd64' -output '$(DIST)/binaries/$(EXECUTABLE)-$(OUTPUT)-{{.OS}}-{{.Arch}}' ./cmd/$(NAME) + +.PHONY: release-copy +release-copy: + $(foreach file,$(wildcard $(DIST)/binaries/$(EXECUTABLE)-*),cp $(file) $(DIST)/release/$(notdir $(file));) + +.PHONY: release-check +release-check: + cd $(DIST)/release; $(foreach file,$(wildcard $(DIST)/release/$(EXECUTABLE)-*),sha256sum $(notdir $(file)) > $(notdir $(file)).sha256;) + +.PHONY: release-finish +release-finish: release-copy release-check + +.PHONY: docs +docs: + cd docs; hugo + +.PHONY: watch +watch: + go run github.com/cespare/reflex -c reflex.conf diff --git a/cmd/ocis-accounts/ffs b/cmd/ocis-accounts/ffs new file mode 100644 index 0000000000..b7a8342a13 --- /dev/null +++ b/cmd/ocis-accounts/ffs @@ -0,0 +1 @@ +{"phoenix":{"theme":"lights"}} \ No newline at end of file diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 7f8bdd4b87..eeea75628d 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -24,7 +24,6 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er settingsJSON, err := json.Marshal(req.Payload) if err != nil { - // TODO log the error return err } diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index c850206351..f2c81c23d9 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -4,24 +4,34 @@ package store import ( "fmt" "io/ioutil" + "os" "path/filepath" mstore "github.com/micro/go-micro/v2/store" + olog "github.com/owncloud/ocis-pkg/log" ) -// DefaultPath assumes UNIX -var DefaultPath string = "/var/tmp/ocis-store" +// Logger is a global logger +var Logger olog.Logger // Store interacts with the filesystem to manage account information type Store struct { + logger olog.Logger mountPath string } // New returns a new file system store manager -// TODO add mountPath as a flag +// TODO add mountPath as a flag. Accept a *config argument func New() Store { + // default to the current working directory if not configured + dir, err := filepath.Abs(filepath.Dir(os.Args[0])) + if err != nil { + // TODO log error + // TODO deal with this + } return Store{ - mountPath: DefaultPath, + mountPath: dir, + logger: olog.NewLogger(), } } @@ -42,16 +52,17 @@ func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, e func (s *Store) Write(rec *mstore.Record) error { path := filepath.Join(s.mountPath, rec.Key) - if filepath.IsAbs(path) { - // TODO WARN, storage is relative to the service directory - } - if len(rec.Key) < 1 { // TODO log error: empty key return fmt.Errorf("%v", "key is empty") } - return ioutil.WriteFile(path, rec.Value, 0644) + if err := ioutil.WriteFile(path, rec.Value, 0644); err != nil { + return err + } + + s.logger.Info().Msgf("%v bytes written to %v", len(rec.Value), path) + return nil } // Delete implements the store interface diff --git a/pkg/version/version.go b/pkg/version/version.go new file mode 100644 index 0000000000..81e81815f4 --- /dev/null +++ b/pkg/version/version.go @@ -0,0 +1,19 @@ +package version + +import ( + "time" +) + +var ( + // String gets defined by the build system. + String = "0.0.0" + + // Date indicates the build date. + Date = "00000000" +) + +// Compiled returns the compile time of this service. +func Compiled() time.Time { + t, _ := time.Parse("20060102", Date) + return t +} From 587a6a1a02ea1a9dadd39139fac668cec71c9381 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 13:25:51 +0100 Subject: [PATCH 015/407] minor refactor --- pkg/service/v0/service.go | 1 - pkg/store/filesystem/store.go | 14 ++++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index eeea75628d..a0b2703b67 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -19,7 +19,6 @@ type Service struct{} // Set implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { - // TODO this should be a globally initialized struct st := store.New() settingsJSON, err := json.Marshal(req.Payload) diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index f2c81c23d9..317e3b75d7 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -23,16 +23,18 @@ type Store struct { // New returns a new file system store manager // TODO add mountPath as a flag. Accept a *config argument func New() Store { + store := Store{ + logger: olog.NewLogger(), + } + // default to the current working directory if not configured dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { - // TODO log error - // TODO deal with this - } - return Store{ - mountPath: dir, - logger: olog.NewLogger(), + store.logger.Err(err).Msg("initializing the accounts store") } + store.mountPath = dir + + return store } // Init implements the store interface From 6b4c3f2098d72e9a997a43a9a7218e2dfd49919a Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 14:35:50 +0100 Subject: [PATCH 016/407] working prototype --- pkg/proto/v0/accounts.pb.go | 42 +++++++++++++++++------------------ pkg/proto/v0/accounts.proto | 2 +- pkg/service/v0/service.go | 13 +++++++---- pkg/store/filesystem/store.go | 41 +++++++++++++++++++++++++++------- 4 files changed, 64 insertions(+), 34 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 9467b336f5..f30dd62521 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -201,7 +201,7 @@ func (m *Phoenix) GetTheme() string { } type Query struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -232,9 +232,9 @@ func (m *Query) XXX_DiscardUnknown() { var xxx_messageInfo_Query proto.InternalMessageInfo -func (m *Query) GetId() string { +func (m *Query) GetKey() string { if m != nil { - return m.Id + return m.Key } return "" } @@ -250,22 +250,22 @@ func init() { func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } var fileDescriptor_e3c84319968a576b = []byte{ - // 271 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x51, 0x4f, 0x4f, 0x83, 0x30, - 0x14, 0x0f, 0x20, 0xc3, 0xbd, 0x25, 0x6e, 0xbe, 0x98, 0xb8, 0xe8, 0x41, 0xc2, 0x09, 0x63, 0x02, - 0x66, 0x7e, 0x00, 0xe3, 0x2e, 0x3b, 0xaa, 0xe5, 0xe6, 0x0d, 0xe1, 0x6d, 0x34, 0x53, 0x4a, 0x4a, - 0xb7, 0xc8, 0xb7, 0x37, 0x6b, 0x8b, 0x73, 0xe1, 0xd4, 0xd7, 0xdf, 0xbf, 0xf7, 0x4b, 0x0b, 0xb7, - 0xcd, 0x76, 0x93, 0x36, 0x52, 0x28, 0x91, 0xee, 0x1f, 0xd3, 0xbc, 0x28, 0xc4, 0xae, 0x56, 0x6d, - 0xa2, 0x11, 0x3c, 0x6f, 0x49, 0x29, 0x5e, 0x6f, 0xda, 0x68, 0x05, 0x23, 0x46, 0x85, 0x90, 0x25, - 0xce, 0xc0, 0xdb, 0x52, 0x37, 0x77, 0x42, 0x27, 0x1e, 0xb3, 0xc3, 0x88, 0x0f, 0x10, 0x34, 0x79, - 0xf7, 0x25, 0xf2, 0x72, 0xee, 0x86, 0x4e, 0x3c, 0x59, 0x5c, 0x26, 0xbd, 0x2f, 0x79, 0x33, 0x04, - 0xeb, 0x15, 0x51, 0x01, 0x81, 0xc5, 0xb4, 0xaf, 0x12, 0x54, 0xf3, 0x1f, 0x9d, 0x76, 0xea, 0x33, - 0x04, 0xeb, 0x15, 0x07, 0xb1, 0x2d, 0x37, 0x5c, 0xf2, 0x62, 0x08, 0xd6, 0x2b, 0xa2, 0x67, 0x08, - 0x2c, 0x86, 0x08, 0x67, 0x75, 0xfe, 0x4d, 0xb6, 0xaf, 0x9e, 0x31, 0x84, 0x49, 0x99, 0x2b, 0x7a, - 0x5d, 0x2f, 0xb9, 0x54, 0x95, 0xce, 0x1b, 0xb3, 0xff, 0x50, 0x74, 0x07, 0x81, 0x6d, 0x80, 0x57, - 0xe0, 0xab, 0x8a, 0xfe, 0x12, 0xcc, 0x25, 0xba, 0x06, 0xff, 0x7d, 0x47, 0xb2, 0xc3, 0x0b, 0x70, - 0x79, 0x69, 0x39, 0x97, 0x97, 0x8b, 0x35, 0x4c, 0x33, 0xdb, 0x2b, 0x23, 0xb9, 0xe7, 0x05, 0xe1, - 0x3d, 0x78, 0x19, 0x29, 0x9c, 0x1d, 0x0b, 0x9b, 0xa7, 0xbc, 0x19, 0x20, 0x18, 0x83, 0xb7, 0x22, - 0x85, 0xd3, 0x23, 0xa1, 0xb7, 0x0c, 0x95, 0xcb, 0xe0, 0xc3, 0xd7, 0x7f, 0xf4, 0x39, 0xd2, 0xc7, - 0xd3, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x66, 0x19, 0xd7, 0xce, 0xc9, 0x01, 0x00, 0x00, + // 264 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x51, 0xcd, 0x4e, 0x83, 0x40, + 0x10, 0x0e, 0x22, 0xc5, 0x4e, 0x0f, 0xad, 0x13, 0x0f, 0x55, 0x0f, 0x12, 0x4e, 0x18, 0x13, 0x30, + 0xf5, 0x01, 0x8c, 0xbd, 0xf4, 0xa8, 0x2e, 0x37, 0x6f, 0xeb, 0x32, 0x2d, 0xa4, 0xca, 0x92, 0x65, + 0xdb, 0xc8, 0xdb, 0x9b, 0xee, 0x2e, 0xd6, 0x86, 0x13, 0xc3, 0xf7, 0x37, 0x5f, 0x66, 0xe1, 0xb6, + 0xd9, 0x6e, 0xb2, 0x46, 0x49, 0x2d, 0xb3, 0xfd, 0x63, 0xc6, 0x85, 0x90, 0xbb, 0x5a, 0xb7, 0xa9, + 0x41, 0xf0, 0xa2, 0x25, 0xad, 0xab, 0x7a, 0xd3, 0xc6, 0x2b, 0x18, 0x31, 0x12, 0x52, 0x15, 0x38, + 0x03, 0x7f, 0x4b, 0xdd, 0xdc, 0x8b, 0xbc, 0x64, 0xcc, 0x0e, 0x23, 0x3e, 0x40, 0xd8, 0xf0, 0xee, + 0x4b, 0xf2, 0x62, 0x7e, 0x16, 0x79, 0xc9, 0x64, 0x71, 0x99, 0xf6, 0xbe, 0xf4, 0xcd, 0x12, 0xac, + 0x57, 0xc4, 0x02, 0x42, 0x87, 0x19, 0x5f, 0x29, 0xa9, 0xae, 0x7e, 0x4c, 0xda, 0xa9, 0xcf, 0x12, + 0xac, 0x57, 0x1c, 0xc4, 0xae, 0xdc, 0x70, 0xc9, 0x8b, 0x25, 0x58, 0xaf, 0x88, 0x9f, 0x21, 0x74, + 0x18, 0x22, 0x9c, 0xd7, 0xfc, 0x9b, 0x5c, 0x5f, 0x33, 0x63, 0x04, 0x93, 0x82, 0x6b, 0x7a, 0x5d, + 0x2f, 0x2b, 0xa5, 0x4b, 0x93, 0x37, 0x66, 0xff, 0xa1, 0xf8, 0x0e, 0x42, 0xd7, 0x00, 0xaf, 0x20, + 0xd0, 0x25, 0xfd, 0x25, 0xd8, 0x9f, 0xf8, 0x1a, 0x82, 0xf7, 0x1d, 0xa9, 0x6e, 0x78, 0x8e, 0xc5, + 0x1a, 0xa6, 0xb9, 0x6b, 0x96, 0x93, 0xda, 0x57, 0x82, 0xf0, 0x1e, 0xfc, 0x9c, 0x34, 0xce, 0x8e, + 0x95, 0xed, 0x31, 0x6f, 0x06, 0x08, 0x26, 0xe0, 0xaf, 0x48, 0xe3, 0xf4, 0x48, 0x98, 0x3d, 0x43, + 0xe5, 0x32, 0xfc, 0x08, 0xcc, 0x2b, 0x7d, 0x8e, 0xcc, 0xe7, 0xe9, 0x37, 0x00, 0x00, 0xff, 0xff, + 0x82, 0xf2, 0xd3, 0x55, 0xcb, 0x01, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index e329059f2a..65960d4d35 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -28,5 +28,5 @@ message Phoenix { } message Query { - string id = 1; + string key = 1; } diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index a0b2703b67..11b5403e8a 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -36,10 +36,15 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er // Get implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { - res.Payload = &proto.Payload{ - Phoenix: &proto.Phoenix{ - Theme: "light", - }, + st := store.New() + contents, err := st.Read(req.Key) + if err != nil { + // TODO deal with this } + + r := &proto.Payload{} + json.Unmarshal(contents[0].Value, r) + + res.Payload = r return nil } diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 317e3b75d7..096d2e7310 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -5,39 +5,47 @@ import ( "fmt" "io/ioutil" "os" + "path" "path/filepath" mstore "github.com/micro/go-micro/v2/store" olog "github.com/owncloud/ocis-pkg/log" ) -// Logger is a global logger -var Logger olog.Logger +// StoreName is the default name for the store container +var StoreName string = "ocis-store" // Store interacts with the filesystem to manage account information type Store struct { - logger olog.Logger mountPath string + logger olog.Logger } // New returns a new file system store manager // TODO add mountPath as a flag. Accept a *config argument func New() Store { - store := Store{ + s := Store{ logger: olog.NewLogger(), } // default to the current working directory if not configured dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { - store.logger.Err(err).Msg("initializing the accounts store") + s.logger.Err(err).Msg("initializing accounts store") } - store.mountPath = dir - return store + dest := filepath.Join(dir, StoreName) + if _, err := os.Stat(dest); err != nil { + s.logger.Info().Msgf("creating container on %v", dest) + os.Mkdir(dest, 0700) + } + + s.mountPath = dest + return s } // Init implements the store interface +// TODO it could prepare the destination path, for instance func (s *Store) Init(...mstore.Options) {} // List implements the store interface @@ -46,8 +54,20 @@ func (s *Store) List() ([]*mstore.Record, error) { } // Read implements the store interface +// this implementation only reads by id. func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, error) { - return nil, nil + contents, err := ioutil.ReadFile(path.Join(s.mountPath, key)) + if err != nil { + s.logger.Err(err).Msgf("error reading contents of key %v: file not found", key) + return []*mstore.Record{}, err + } + + return []*mstore.Record{ + &mstore.Record{ + Key: key, + Value: contents, + }, + }, nil } // Write implements the store interface @@ -76,3 +96,8 @@ func (s *Store) Delete(key string) error { func (s *Store) String() string { return "store" } + +// creates the default container for the ocis-store if it doesn't exist +func init() { + +} From 949b67bec60e750ad1d6f5c36bd1268a85ea8811 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 14:41:29 +0100 Subject: [PATCH 017/407] defensive coce --- pkg/service/v0/service.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 11b5403e8a..e15c5e11af 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -42,9 +42,11 @@ func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) err // TODO deal with this } - r := &proto.Payload{} - json.Unmarshal(contents[0].Value, r) + if len(contents) > 0 { + r := &proto.Payload{} + json.Unmarshal(contents[0].Value, r) + res.Payload = r + } - res.Payload = r return nil } From 85c21a053f3494e5dd3864831ee9e6c9896b8bf5 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 15:10:34 +0100 Subject: [PATCH 018/407] bits and bobs --- pkg/registry/registry.go | 10 ++++++++++ pkg/service/v0/service.go | 5 +---- pkg/store/filesystem/store.go | 12 ++++++------ 3 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 pkg/registry/registry.go diff --git a/pkg/registry/registry.go b/pkg/registry/registry.go new file mode 100644 index 0000000000..47b7010341 --- /dev/null +++ b/pkg/registry/registry.go @@ -0,0 +1,10 @@ +// Package registry provides accessors to runtime services +package registry + +import ( + "github.com/micro/go-micro/v2/store" +) + +type Registry { + Store store.Store +} \ No newline at end of file diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index e15c5e11af..8de33434ed 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -37,10 +37,7 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er // Get implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { st := store.New() - contents, err := st.Read(req.Key) - if err != nil { - // TODO deal with this - } + contents, _ := st.Read(req.Key) if len(contents) > 0 { r := &proto.Payload{} diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 096d2e7310..992357ff0c 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -18,25 +18,25 @@ var StoreName string = "ocis-store" // Store interacts with the filesystem to manage account information type Store struct { mountPath string - logger olog.Logger + Logger olog.Logger } // New returns a new file system store manager // TODO add mountPath as a flag. Accept a *config argument func New() Store { s := Store{ - logger: olog.NewLogger(), + Logger: olog.NewLogger(), } // default to the current working directory if not configured dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { - s.logger.Err(err).Msg("initializing accounts store") + s.Logger.Err(err).Msg("initializing accounts store") } dest := filepath.Join(dir, StoreName) if _, err := os.Stat(dest); err != nil { - s.logger.Info().Msgf("creating container on %v", dest) + s.Logger.Info().Msgf("creating container on %v", dest) os.Mkdir(dest, 0700) } @@ -58,7 +58,7 @@ func (s *Store) List() ([]*mstore.Record, error) { func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, error) { contents, err := ioutil.ReadFile(path.Join(s.mountPath, key)) if err != nil { - s.logger.Err(err).Msgf("error reading contents of key %v: file not found", key) + s.Logger.Err(err).Msgf("error reading contents of key %v: file not found", key) return []*mstore.Record{}, err } @@ -83,7 +83,7 @@ func (s *Store) Write(rec *mstore.Record) error { return err } - s.logger.Info().Msgf("%v bytes written to %v", len(rec.Value), path) + s.Logger.Info().Msgf("%v bytes written to %v", len(rec.Value), path) return nil } From 11029b5e17151cdc0c5746f4c7a34c9b4570b004 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 15:20:07 +0100 Subject: [PATCH 019/407] remove trash file --- cmd/ocis-accounts/ffs | 1 - 1 file changed, 1 deletion(-) delete mode 100644 cmd/ocis-accounts/ffs diff --git a/cmd/ocis-accounts/ffs b/cmd/ocis-accounts/ffs deleted file mode 100644 index b7a8342a13..0000000000 --- a/cmd/ocis-accounts/ffs +++ /dev/null @@ -1 +0,0 @@ -{"phoenix":{"theme":"lights"}} \ No newline at end of file From b574230285bcfb5fc322d8e846d223faf8921312 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 31 Jan 2020 16:27:13 +0100 Subject: [PATCH 020/407] move store initialization to root and run only once --- pkg/command/root.go | 2 +- pkg/registry/registry.go | 19 +++++++++++++++---- pkg/service/v0/service.go | 10 ++++------ pkg/store/filesystem/store.go | 24 ++++++++++-------------- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index aa04c62d94..972cdd2cb2 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -4,12 +4,12 @@ import ( "os" "github.com/micro/cli" + _ "github.com/owncloud/ocis-accounts/pkg/registry" "github.com/owncloud/ocis-hello/pkg/version" ) // Execute is the entry point for the ocis-accounts command. func Execute() error { - app := &cli.App{ Name: "ocis-accounts", Version: version.String, diff --git a/pkg/registry/registry.go b/pkg/registry/registry.go index 47b7010341..1dae9ba8f1 100644 --- a/pkg/registry/registry.go +++ b/pkg/registry/registry.go @@ -2,9 +2,20 @@ package registry import ( - "github.com/micro/go-micro/v2/store" + "sync" + + mstore "github.com/micro/go-micro/v2/store" + store "github.com/owncloud/ocis-accounts/pkg/store/filesystem" ) -type Registry { - Store store.Store -} \ No newline at end of file +var ( + once *sync.Once = &sync.Once{} + // Store is a micro store implementation + Store mstore.Store +) + +func init() { + once.Do(func() { + Store = store.New() + }) +} diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 8de33434ed..469778e4df 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -6,7 +6,8 @@ import ( mstore "github.com/micro/go-micro/v2/store" "github.com/owncloud/ocis-accounts/pkg/proto/v0" - store "github.com/owncloud/ocis-accounts/pkg/store/filesystem" + + "github.com/owncloud/ocis-accounts/pkg/registry" ) // New returns a new instance of Service @@ -19,8 +20,6 @@ type Service struct{} // Set implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { - st := store.New() - settingsJSON, err := json.Marshal(req.Payload) if err != nil { return err @@ -31,13 +30,12 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er Value: settingsJSON, } - return st.Write(&record) + return registry.Store.Write(&record) } // Get implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { - st := store.New() - contents, _ := st.Read(req.Key) + contents, _ := registry.Store.Read(req.Key) if len(contents) > 0 { r := &proto.Payload{} diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 992357ff0c..ffd14920a8 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -21,9 +21,8 @@ type Store struct { Logger olog.Logger } -// New returns a new file system store manager // TODO add mountPath as a flag. Accept a *config argument -func New() Store { +func New() *Store { s := Store{ Logger: olog.NewLogger(), } @@ -41,21 +40,23 @@ func New() Store { } s.mountPath = dest - return s + return &s } // Init implements the store interface // TODO it could prepare the destination path, for instance -func (s *Store) Init(...mstore.Options) {} +func (s Store) Init(...mstore.Option) error { + return nil +} // List implements the store interface -func (s *Store) List() ([]*mstore.Record, error) { +func (s Store) List() ([]*mstore.Record, error) { return nil, nil } // Read implements the store interface // this implementation only reads by id. -func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, error) { +func (s Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, error) { contents, err := ioutil.ReadFile(path.Join(s.mountPath, key)) if err != nil { s.Logger.Err(err).Msgf("error reading contents of key %v: file not found", key) @@ -71,7 +72,7 @@ func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, e } // Write implements the store interface -func (s *Store) Write(rec *mstore.Record) error { +func (s Store) Write(rec *mstore.Record) error { path := filepath.Join(s.mountPath, rec.Key) if len(rec.Key) < 1 { @@ -88,16 +89,11 @@ func (s *Store) Write(rec *mstore.Record) error { } // Delete implements the store interface -func (s *Store) Delete(key string) error { +func (s Store) Delete(key string) error { return nil } // String implements the store interface, and the stringer interface -func (s *Store) String() string { +func (s Store) String() string { return "store" } - -// creates the default container for the ocis-store if it doesn't exist -func init() { - -} From f5ae339125c46b629aba76a12b558e164da812d9 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 12:56:17 +0100 Subject: [PATCH 021/407] log on missing key --- pkg/store/filesystem/store.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index ffd14920a8..4b14c259b3 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -76,7 +76,7 @@ func (s Store) Write(rec *mstore.Record) error { path := filepath.Join(s.mountPath, rec.Key) if len(rec.Key) < 1 { - // TODO log error: empty key + s.Logger.Error().Msg("key cannot be empty") return fmt.Errorf("%v", "key is empty") } From be26b67a0cf77a39662363d29eaebe1d9f6d7719 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 14:16:30 +0100 Subject: [PATCH 022/407] list keys working as expected, datastructure not pretty --- go.sum | 1 + pkg/proto/v0/accounts.pb.go | 81 ++++++++++++++++++++++++------- pkg/proto/v0/accounts.pb.micro.go | 25 ++++++++-- pkg/proto/v0/accounts.proto | 6 +++ pkg/service/v0/service.go | 26 +++++++++- pkg/store/filesystem/store.go | 18 +++++-- 6 files changed, 132 insertions(+), 25 deletions(-) diff --git a/go.sum b/go.sum index 33cf295ca7..f8748c4b58 100644 --- a/go.sum +++ b/go.sum @@ -278,6 +278,7 @@ github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index f30dd62521..36ddc5efe3 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -6,6 +6,7 @@ package proto import ( fmt "fmt" proto "github.com/golang/protobuf/proto" + _ "github.com/golang/protobuf/ptypes/empty" math "math" ) @@ -239,33 +240,77 @@ func (m *Query) GetKey() string { return "" } +type Records struct { + Records []*Record `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Records) Reset() { *m = Records{} } +func (m *Records) String() string { return proto.CompactTextString(m) } +func (*Records) ProtoMessage() {} +func (*Records) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{5} +} + +func (m *Records) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Records.Unmarshal(m, b) +} +func (m *Records) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Records.Marshal(b, m, deterministic) +} +func (m *Records) XXX_Merge(src proto.Message) { + xxx_messageInfo_Records.Merge(m, src) +} +func (m *Records) XXX_Size() int { + return xxx_messageInfo_Records.Size(m) +} +func (m *Records) XXX_DiscardUnknown() { + xxx_messageInfo_Records.DiscardUnknown(m) +} + +var xxx_messageInfo_Records proto.InternalMessageInfo + +func (m *Records) GetRecords() []*Record { + if m != nil { + return m.Records + } + return nil +} + func init() { proto.RegisterType((*Record)(nil), "settings.Record") proto.RegisterType((*Payload)(nil), "settings.Payload") proto.RegisterType((*Account)(nil), "settings.Account") proto.RegisterType((*Phoenix)(nil), "settings.Phoenix") proto.RegisterType((*Query)(nil), "settings.Query") + proto.RegisterType((*Records)(nil), "settings.Records") } func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } var fileDescriptor_e3c84319968a576b = []byte{ - // 264 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x51, 0xcd, 0x4e, 0x83, 0x40, - 0x10, 0x0e, 0x22, 0xc5, 0x4e, 0x0f, 0xad, 0x13, 0x0f, 0x55, 0x0f, 0x12, 0x4e, 0x18, 0x13, 0x30, - 0xf5, 0x01, 0x8c, 0xbd, 0xf4, 0xa8, 0x2e, 0x37, 0x6f, 0xeb, 0x32, 0x2d, 0xa4, 0xca, 0x92, 0x65, - 0xdb, 0xc8, 0xdb, 0x9b, 0xee, 0x2e, 0xd6, 0x86, 0x13, 0xc3, 0xf7, 0x37, 0x5f, 0x66, 0xe1, 0xb6, - 0xd9, 0x6e, 0xb2, 0x46, 0x49, 0x2d, 0xb3, 0xfd, 0x63, 0xc6, 0x85, 0x90, 0xbb, 0x5a, 0xb7, 0xa9, - 0x41, 0xf0, 0xa2, 0x25, 0xad, 0xab, 0x7a, 0xd3, 0xc6, 0x2b, 0x18, 0x31, 0x12, 0x52, 0x15, 0x38, - 0x03, 0x7f, 0x4b, 0xdd, 0xdc, 0x8b, 0xbc, 0x64, 0xcc, 0x0e, 0x23, 0x3e, 0x40, 0xd8, 0xf0, 0xee, - 0x4b, 0xf2, 0x62, 0x7e, 0x16, 0x79, 0xc9, 0x64, 0x71, 0x99, 0xf6, 0xbe, 0xf4, 0xcd, 0x12, 0xac, - 0x57, 0xc4, 0x02, 0x42, 0x87, 0x19, 0x5f, 0x29, 0xa9, 0xae, 0x7e, 0x4c, 0xda, 0xa9, 0xcf, 0x12, - 0xac, 0x57, 0x1c, 0xc4, 0xae, 0xdc, 0x70, 0xc9, 0x8b, 0x25, 0x58, 0xaf, 0x88, 0x9f, 0x21, 0x74, - 0x18, 0x22, 0x9c, 0xd7, 0xfc, 0x9b, 0x5c, 0x5f, 0x33, 0x63, 0x04, 0x93, 0x82, 0x6b, 0x7a, 0x5d, - 0x2f, 0x2b, 0xa5, 0x4b, 0x93, 0x37, 0x66, 0xff, 0xa1, 0xf8, 0x0e, 0x42, 0xd7, 0x00, 0xaf, 0x20, - 0xd0, 0x25, 0xfd, 0x25, 0xd8, 0x9f, 0xf8, 0x1a, 0x82, 0xf7, 0x1d, 0xa9, 0x6e, 0x78, 0x8e, 0xc5, - 0x1a, 0xa6, 0xb9, 0x6b, 0x96, 0x93, 0xda, 0x57, 0x82, 0xf0, 0x1e, 0xfc, 0x9c, 0x34, 0xce, 0x8e, - 0x95, 0xed, 0x31, 0x6f, 0x06, 0x08, 0x26, 0xe0, 0xaf, 0x48, 0xe3, 0xf4, 0x48, 0x98, 0x3d, 0x43, - 0xe5, 0x32, 0xfc, 0x08, 0xcc, 0x2b, 0x7d, 0x8e, 0xcc, 0xe7, 0xe9, 0x37, 0x00, 0x00, 0xff, 0xff, - 0x82, 0xf2, 0xd3, 0x55, 0xcb, 0x01, 0x00, 0x00, + // 327 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0x41, 0x4f, 0xc2, 0x40, + 0x10, 0x85, 0x53, 0x0b, 0xac, 0x0c, 0x07, 0x60, 0x62, 0x0c, 0xc2, 0xc1, 0xa6, 0xa7, 0xaa, 0x49, + 0xab, 0x18, 0xcf, 0x46, 0x12, 0xc3, 0xc5, 0x44, 0x5d, 0x6e, 0xde, 0x6a, 0x19, 0x4a, 0x03, 0x74, + 0x9b, 0x76, 0x21, 0xf6, 0xa7, 0xf8, 0x6f, 0x0d, 0xbb, 0x5d, 0x51, 0xeb, 0xa9, 0xd3, 0xf7, 0xbe, + 0x99, 0x7d, 0x99, 0x81, 0x51, 0xb6, 0x8a, 0x83, 0x2c, 0x17, 0x52, 0x04, 0xbb, 0xeb, 0x20, 0x8c, + 0x22, 0xb1, 0x4d, 0x65, 0xe1, 0x2b, 0x05, 0x8f, 0x0b, 0x92, 0x32, 0x49, 0xe3, 0x62, 0x38, 0x8a, + 0x85, 0x88, 0xd7, 0xa4, 0xc9, 0xf7, 0xed, 0x22, 0xa0, 0x4d, 0x26, 0x4b, 0x8d, 0xb9, 0x53, 0x68, + 0x71, 0x8a, 0x44, 0x3e, 0xc7, 0x1e, 0xd8, 0x2b, 0x2a, 0x07, 0x96, 0x63, 0x79, 0x6d, 0xbe, 0x2f, + 0xf1, 0x0a, 0x58, 0x16, 0x96, 0x6b, 0x11, 0xce, 0x07, 0x47, 0x8e, 0xe5, 0x75, 0xc6, 0x7d, 0xdf, + 0x0c, 0xf5, 0x5f, 0xb4, 0xc1, 0x0d, 0xe1, 0x46, 0xc0, 0x2a, 0x4d, 0xf5, 0x2d, 0x05, 0xa5, 0xc9, + 0x87, 0x9a, 0xf6, 0xbb, 0x4f, 0x1b, 0xdc, 0x10, 0x7b, 0xb8, 0x4a, 0x5e, 0x7f, 0xe4, 0x41, 0x1b, + 0xdc, 0x10, 0xee, 0x3d, 0xb0, 0x4a, 0x43, 0x84, 0x46, 0x1a, 0x6e, 0xa8, 0xca, 0xab, 0x6a, 0x74, + 0xa0, 0x33, 0x0f, 0x25, 0x3d, 0x2f, 0x26, 0x49, 0x2e, 0x97, 0x6a, 0x5e, 0x9b, 0xff, 0x94, 0xdc, + 0x73, 0x60, 0x55, 0x02, 0x3c, 0x81, 0xa6, 0x5c, 0xd2, 0xf7, 0x04, 0xfd, 0xe3, 0x9e, 0x41, 0xf3, + 0x75, 0x4b, 0x79, 0x59, 0x5f, 0x87, 0x7b, 0x07, 0x4c, 0xaf, 0xaa, 0xc0, 0x4b, 0x60, 0xb9, 0x2e, + 0x07, 0x96, 0x63, 0x7b, 0x9d, 0x71, 0xef, 0x10, 0x5a, 0x33, 0xdc, 0x00, 0xe3, 0x4f, 0x0b, 0xba, + 0xb3, 0xca, 0x9c, 0x51, 0xbe, 0x4b, 0x22, 0xc2, 0x0b, 0xb0, 0x67, 0x24, 0xb1, 0xd6, 0x35, 0xac, + 0x29, 0xe8, 0x81, 0x3d, 0x25, 0x89, 0xdd, 0x83, 0xa1, 0xf2, 0xfd, 0x43, 0xde, 0x40, 0xe3, 0x29, + 0x29, 0x24, 0x9e, 0xfa, 0xfa, 0xe0, 0xbe, 0x39, 0xb8, 0xff, 0xb8, 0x3f, 0xf8, 0xb0, 0xff, 0xb7, + 0xa3, 0x98, 0xb0, 0xb7, 0xa6, 0x86, 0x5a, 0xea, 0x73, 0xfb, 0x15, 0x00, 0x00, 0xff, 0xff, 0x06, + 0x2e, 0xab, 0xa7, 0x53, 0x02, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index 56a3c88a4f..56c4b739c9 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -5,13 +5,15 @@ package proto import ( fmt "fmt" - proto "github.com/golang/protobuf/proto" math "math" -) -import ( + proto "github.com/golang/protobuf/proto" + empty "github.com/golang/protobuf/ptypes/empty" + context "context" + client "github.com/micro/go-micro/client" + server "github.com/micro/go-micro/server" ) @@ -36,6 +38,7 @@ var _ server.Option type SettingsService interface { Set(ctx context.Context, in *Record, opts ...client.CallOption) (*Record, error) Get(ctx context.Context, in *Query, opts ...client.CallOption) (*Record, error) + List(ctx context.Context, in *empty.Empty, opts ...client.CallOption) (*Records, error) } type settingsService struct { @@ -76,17 +79,29 @@ func (c *settingsService) Get(ctx context.Context, in *Query, opts ...client.Cal return out, nil } +func (c *settingsService) List(ctx context.Context, in *empty.Empty, opts ...client.CallOption) (*Records, error) { + req := c.c.NewRequest(c.name, "SettingsService.List", in) + out := new(Records) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for SettingsService service type SettingsServiceHandler interface { Set(context.Context, *Record, *Record) error Get(context.Context, *Query, *Record) error + List(context.Context, *empty.Empty, *Records) error } func RegisterSettingsServiceHandler(s server.Server, hdlr SettingsServiceHandler, opts ...server.HandlerOption) error { type settingsService interface { Set(ctx context.Context, in *Record, out *Record) error Get(ctx context.Context, in *Query, out *Record) error + List(ctx context.Context, in *empty.Empty, out *Records) error } type SettingsService struct { settingsService @@ -106,3 +121,7 @@ func (h *settingsServiceHandler) Set(ctx context.Context, in *Record, out *Recor func (h *settingsServiceHandler) Get(ctx context.Context, in *Query, out *Record) error { return h.SettingsServiceHandler.Get(ctx, in, out) } + +func (h *settingsServiceHandler) List(ctx context.Context, in *empty.Empty, out *Records) error { + return h.SettingsServiceHandler.List(ctx, in, out) +} diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 65960d4d35..b4185cef57 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -2,10 +2,12 @@ syntax = "proto3"; package settings; option go_package = "proto"; +import "google/protobuf/empty.proto"; service SettingsService { rpc Set(Record) returns (Record); rpc Get(Query) returns (Record); + rpc List(google.protobuf.Empty) returns(Records); } message Record { @@ -30,3 +32,7 @@ message Phoenix { message Query { string key = 1; } + +message Records { + repeated Record records = 1; +} \ No newline at end of file diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 469778e4df..dcae8ed590 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" + "github.com/golang/protobuf/ptypes/empty" mstore "github.com/micro/go-micro/v2/store" "github.com/owncloud/ocis-accounts/pkg/proto/v0" @@ -35,7 +36,10 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er // Get implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { - contents, _ := registry.Store.Read(req.Key) + contents, err := registry.Store.Read(req.Key) + if err != nil { + return err + } if len(contents) > 0 { r := &proto.Payload{} @@ -45,3 +49,23 @@ func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) err return nil } + +// List implements the SettingsServiceHandler interface generated on accounts.pb.micro.go +func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) error { + contents, err := registry.Store.List() + if err != nil { + return err + } + + records := &proto.Records{} + + for _, v := range contents { + records.Records = append(records.Records, &proto.Record{ + Key: v.Key, + }) + } + + res.Records = records.Records + + return nil +} diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 4b14c259b3..06367c673d 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -44,14 +44,26 @@ func New() *Store { } // Init implements the store interface -// TODO it could prepare the destination path, for instance func (s Store) Init(...mstore.Option) error { return nil } -// List implements the store interface +// List returns all the identities in the mountPath folder func (s Store) List() ([]*mstore.Record, error) { - return nil, nil + records := []*mstore.Record{} + identities, err := ioutil.ReadDir(s.mountPath) + if err != nil { + s.Logger.Err(err).Msgf("error reading %v", s.mountPath) + } + + s.Logger.Info().Msg("listing identities") + for _, v := range identities { + records = append(records, &mstore.Record{ + Key: v.Name(), + }) + } + + return records, nil } // Read implements the store interface From c34eb4ca9500c63f97523886d8eefb0066a2a0c3 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 14:18:33 +0100 Subject: [PATCH 023/407] format comment --- pkg/store/filesystem/store.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 06367c673d..ac7c1aed78 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -66,8 +66,7 @@ func (s Store) List() ([]*mstore.Record, error) { return records, nil } -// Read implements the store interface -// this implementation only reads by id. +// Read implements the store interface. This implementation only reads by id. func (s Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, error) { contents, err := ioutil.ReadFile(path.Join(s.mountPath, key)) if err != nil { From 161fc4c029bd0145480dfe0a7a5b2e6573668a16 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 14:19:01 +0100 Subject: [PATCH 024/407] make linter happy --- pkg/store/filesystem/store.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index ac7c1aed78..2b2691494f 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -21,7 +21,7 @@ type Store struct { Logger olog.Logger } -// TODO add mountPath as a flag. Accept a *config argument +// New returns a new stor. TODO add mountPath as a flag. Accept a *config argument func New() *Store { s := Store{ Logger: olog.NewLogger(), From 7232651112c60e8c72b3ad7cbe6abb93cfe22c27 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 14:29:00 +0100 Subject: [PATCH 025/407] small cleanup --- pkg/service/v0/service.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index dcae8ed590..166c4811c3 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -20,6 +20,7 @@ func New() Service { type Service struct{} // Set implements the SettingsServiceHandler interface generated on accounts.pb.micro.go +// This implementation replaces the existent data with the requested. It does not calculate diff func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { settingsJSON, err := json.Marshal(req.Payload) if err != nil { @@ -52,13 +53,12 @@ func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) err // List implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) error { + records := &proto.Records{} contents, err := registry.Store.List() if err != nil { return err } - records := &proto.Records{} - for _, v := range contents { records.Records = append(records.Records, &proto.Record{ Key: v.Key, From c2cd4e55577637e088303f1ba2bae3346a772607 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 16:18:57 +0100 Subject: [PATCH 026/407] less confusing naming --- pkg/service/v0/service.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 166c4811c3..79b4bb4487 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -53,19 +53,19 @@ func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) err // List implements the SettingsServiceHandler interface generated on accounts.pb.micro.go func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) error { - records := &proto.Records{} + r := &proto.Records{} contents, err := registry.Store.List() if err != nil { return err } for _, v := range contents { - records.Records = append(records.Records, &proto.Record{ + r.Records = append(r.Records, &proto.Record{ Key: v.Key, }) } - res.Records = records.Records + res.Records = r.Records return nil } From 4b595b4b071ce28e240a425d046fd587b53e6cb7 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 19:10:17 +0100 Subject: [PATCH 027/407] config barebones --- pkg/config/config.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 pkg/config/config.go diff --git a/pkg/config/config.go b/pkg/config/config.go new file mode 100644 index 0000000000..bf72297202 --- /dev/null +++ b/pkg/config/config.go @@ -0,0 +1,12 @@ +// Package config should be moved to internal +package config + +// Config captures ocis-accounts configuration parameters +type Config struct { + MountPath string +} + +// New returns a new config +func New() *Config { + return &Config{} +} From eef2de244fb7a5e95543a821a0e88fa37c9e4934 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 19:47:05 +0100 Subject: [PATCH 028/407] first draft of an accounts interface --- pkg/accounts/accounts.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 pkg/accounts/accounts.go diff --git a/pkg/accounts/accounts.go b/pkg/accounts/accounts.go new file mode 100644 index 0000000000..f49b787fac --- /dev/null +++ b/pkg/accounts/accounts.go @@ -0,0 +1,17 @@ +package accounts + +// Account is an accounts service interface +type Account interface { + // Read a record + Read(key string) (*Record, error) + // Write a record + Write(Record) Record + // List all records + List() []*Record +} + +// Record is an entry in the account storage +type Record struct { + Key string + Value []byte +} From bdc66633ddfa76a77fbee6b689deacde9e3c9e80 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 20:05:22 +0100 Subject: [PATCH 029/407] rename -> account --- pkg/{accounts => account}/accounts.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename pkg/{accounts => account}/accounts.go (94%) diff --git a/pkg/accounts/accounts.go b/pkg/account/accounts.go similarity index 94% rename from pkg/accounts/accounts.go rename to pkg/account/accounts.go index f49b787fac..2760e145a6 100644 --- a/pkg/accounts/accounts.go +++ b/pkg/account/accounts.go @@ -1,4 +1,4 @@ -package accounts +package account // Account is an accounts service interface type Account interface { From 35d9deb38a4bca9cc75ed0c42c9ee70b1465b44c Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 3 Feb 2020 22:54:33 +0100 Subject: [PATCH 030/407] custom interface; strategy pattern; service configuration; refactor --- go.mod | 1 + go.sum | 1 + pkg/account/accounts.go | 21 +++++++++-- pkg/command/root.go | 3 +- pkg/command/server.go | 1 - pkg/micro/grpc/grpc.go | 7 ++-- pkg/registry/registry.go | 21 ----------- pkg/service/v0/service.go | 69 ++++++++++++++++++----------------- pkg/store/filesystem/store.go | 64 +++++++++++++++----------------- pkg/store/registry.go | 5 +++ 10 files changed, 94 insertions(+), 99 deletions(-) delete mode 100644 pkg/registry/registry.go create mode 100644 pkg/store/registry.go diff --git a/go.mod b/go.mod index 617335c05b..5f96a22f18 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/owncloud/ocis-accounts go 1.13 require ( + github.com/coreos/etcd v3.3.18+incompatible github.com/golang/protobuf v1.3.2 github.com/google/uuid v1.1.1 github.com/micro/cli v0.2.0 diff --git a/go.sum b/go.sum index f8748c4b58..0d49beb037 100644 --- a/go.sum +++ b/go.sum @@ -381,6 +381,7 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joncalhoun/qson v0.0.0-20170526102502-8a9cab3a62b1/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= diff --git a/pkg/account/accounts.go b/pkg/account/accounts.go index 2760e145a6..4fa0fb09b7 100644 --- a/pkg/account/accounts.go +++ b/pkg/account/accounts.go @@ -1,11 +1,24 @@ package account -// Account is an accounts service interface -type Account interface { +import "github.com/owncloud/ocis-accounts/pkg/config" + +var ( + // Registry uses the strategy pattern as a registry + Registry = map[string]RegisterFunc{} + + // DefaultManager defines the default accounts manager + DefaultManager = "filesystem" +) + +// RegisterFunc stores store constructors +type RegisterFunc func(*config.Config) Manager + +// Manager is an accounts service interface +type Manager interface { // Read a record - Read(key string) (*Record, error) + Read(key string) *Record // Write a record - Write(Record) Record + Write(*Record) *Record // List all records List() []*Record } diff --git a/pkg/command/root.go b/pkg/command/root.go index 972cdd2cb2..1dc3777ab2 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -4,7 +4,8 @@ import ( "os" "github.com/micro/cli" - _ "github.com/owncloud/ocis-accounts/pkg/registry" + // init store manager + _ "github.com/owncloud/ocis-accounts/pkg/store" "github.com/owncloud/ocis-hello/pkg/version" ) diff --git a/pkg/command/server.go b/pkg/command/server.go index 9ed90f3986..6bec060c4a 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -25,7 +25,6 @@ func Server() cli.Command { gr.Add(func() error { return service.Run() }, func(_ error) { - fmt.Println("shutting down grpc server") cancel() }) diff --git a/pkg/micro/grpc/grpc.go b/pkg/micro/grpc/grpc.go index 20e9b41a25..874b69e2d5 100644 --- a/pkg/micro/grpc/grpc.go +++ b/pkg/micro/grpc/grpc.go @@ -1,15 +1,15 @@ package grpc -// package grpc uses `ocis-pkg` to start a go-micro service import ( "context" + "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" svc "github.com/owncloud/ocis-accounts/pkg/service/v0" "github.com/owncloud/ocis-pkg/service/grpc" ) -// NewService initializes a new go-micro service ready to run +// NewService creates a grpc service func NewService(c context.Context) grpc.Service { service := grpc.NewService( grpc.Name("accounts"), @@ -18,8 +18,7 @@ func NewService(c context.Context) grpc.Service { grpc.Context(c), ) - // add a handler to the service - hdlr := svc.New() + hdlr := svc.New(config.New()) proto.RegisterSettingsServiceHandler(service.Server(), hdlr) service.Init() diff --git a/pkg/registry/registry.go b/pkg/registry/registry.go deleted file mode 100644 index 1dae9ba8f1..0000000000 --- a/pkg/registry/registry.go +++ /dev/null @@ -1,21 +0,0 @@ -// Package registry provides accessors to runtime services -package registry - -import ( - "sync" - - mstore "github.com/micro/go-micro/v2/store" - store "github.com/owncloud/ocis-accounts/pkg/store/filesystem" -) - -var ( - once *sync.Once = &sync.Once{} - // Store is a micro store implementation - Store mstore.Store -) - -func init() { - once.Do(func() { - Store = store.New() - }) -} diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 79b4bb4487..c0a7a0eddb 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -3,23 +3,30 @@ package service import ( "context" "encoding/json" + "fmt" "github.com/golang/protobuf/ptypes/empty" - mstore "github.com/micro/go-micro/v2/store" + "github.com/owncloud/ocis-accounts/pkg/account" + "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" - - "github.com/owncloud/ocis-accounts/pkg/registry" ) // New returns a new instance of Service -func New() Service { - return Service{} +func New(cfg *config.Config) Service { + fmt.Printf("config type: %T", account.Registry["filesystem"]) + return Service{ + Config: cfg, + Manager: account.Registry["filesystem"](cfg), // TODO read this from config + } } -// Service implements the SettingsServiceHandler interface generated on accounts.pb.micro.go -type Service struct{} +// Service implements the SettingsServiceHandler interface +type Service struct { + Config *config.Config + Manager account.Manager +} -// Set implements the SettingsServiceHandler interface generated on accounts.pb.micro.go +// Set implements the SettingsServiceHandler interface // This implementation replaces the existent data with the requested. It does not calculate diff func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { settingsJSON, err := json.Marshal(req.Payload) @@ -27,45 +34,41 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er return err } - record := mstore.Record{ + s.Manager.Write(&account.Record{ Key: req.Key, Value: settingsJSON, - } + }) - return registry.Store.Write(&record) + return nil } -// Get implements the SettingsServiceHandler interface generated on accounts.pb.micro.go +// Get implements the SettingsServiceHandler interface func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { - contents, err := registry.Store.Read(req.Key) - if err != nil { - return err - } + // contents, err := registry.Store.Read(req.Key) + contents := s.Manager.Read(req.Key) - if len(contents) > 0 { - r := &proto.Payload{} - json.Unmarshal(contents[0].Value, r) - res.Payload = r - } + r := &proto.Payload{} + json.Unmarshal(contents.Value, r) + res.Payload = r return nil } -// List implements the SettingsServiceHandler interface generated on accounts.pb.micro.go +// List implements the SettingsServiceHandler interface func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) error { - r := &proto.Records{} - contents, err := registry.Store.List() - if err != nil { - return err - } + // r := &proto.Records{} + // contents, err := registry.Store.List() + // if err != nil { + // return err + // } - for _, v := range contents { - r.Records = append(r.Records, &proto.Record{ - Key: v.Key, - }) - } + // for _, v := range contents { + // r.Records = append(r.Records, &proto.Record{ + // Key: v.Key, + // }) + // } - res.Records = r.Records + // res.Records = r.Records return nil } diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 2b2691494f..d27d4d2ef9 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -2,18 +2,25 @@ package store import ( - "fmt" "io/ioutil" "os" "path" "path/filepath" - mstore "github.com/micro/go-micro/v2/store" + "github.com/owncloud/ocis-accounts/pkg/account" + "github.com/owncloud/ocis-accounts/pkg/config" olog "github.com/owncloud/ocis-pkg/log" ) +var ( + // StoreName is the default name for the accounts store + StoreName string = "ocis-store" + + // managerName + managerName = "filesystem" +) + // StoreName is the default name for the store container -var StoreName string = "ocis-store" // Store interacts with the filesystem to manage account information type Store struct { @@ -21,8 +28,8 @@ type Store struct { Logger olog.Logger } -// New returns a new stor. TODO add mountPath as a flag. Accept a *config argument -func New() *Store { +// New creates a new store +func New(cfg *config.Config) account.Manager { s := Store{ Logger: olog.NewLogger(), } @@ -43,68 +50,55 @@ func New() *Store { return &s } -// Init implements the store interface -func (s Store) Init(...mstore.Option) error { - return nil -} - // List returns all the identities in the mountPath folder -func (s Store) List() ([]*mstore.Record, error) { - records := []*mstore.Record{} +func (s Store) List() []*account.Record { + records := []*account.Record{} identities, err := ioutil.ReadDir(s.mountPath) if err != nil { s.Logger.Err(err).Msgf("error reading %v", s.mountPath) + return records } s.Logger.Info().Msg("listing identities") for _, v := range identities { - records = append(records, &mstore.Record{ + records = append(records, &account.Record{ Key: v.Name(), }) } - return records, nil + return records } // Read implements the store interface. This implementation only reads by id. -func (s Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, error) { +func (s Store) Read(key string) *account.Record { contents, err := ioutil.ReadFile(path.Join(s.mountPath, key)) if err != nil { s.Logger.Err(err).Msgf("error reading contents of key %v: file not found", key) - return []*mstore.Record{}, err + return &account.Record{} } - return []*mstore.Record{ - &mstore.Record{ - Key: key, - Value: contents, - }, - }, nil + return &account.Record{ + Key: key, + Value: contents, + } } // Write implements the store interface -func (s Store) Write(rec *mstore.Record) error { +func (s Store) Write(rec *account.Record) *account.Record { path := filepath.Join(s.mountPath, rec.Key) if len(rec.Key) < 1 { s.Logger.Error().Msg("key cannot be empty") - return fmt.Errorf("%v", "key is empty") + return &account.Record{} } if err := ioutil.WriteFile(path, rec.Value, 0644); err != nil { - return err + return &account.Record{} } s.Logger.Info().Msgf("%v bytes written to %v", len(rec.Value), path) - return nil + return rec } - -// Delete implements the store interface -func (s Store) Delete(key string) error { - return nil -} - -// String implements the store interface, and the stringer interface -func (s Store) String() string { - return "store" +func init() { + account.Registry[managerName] = New } diff --git a/pkg/store/registry.go b/pkg/store/registry.go new file mode 100644 index 0000000000..e4a32c66d1 --- /dev/null +++ b/pkg/store/registry.go @@ -0,0 +1,5 @@ +package store + +import ( + _ "github.com/owncloud/ocis-accounts/pkg/store/filesystem" +) From 7431297a1c9ebc511b788c25997672d5c271362a Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 10:09:38 +0100 Subject: [PATCH 031/407] use micro cli v2 --- go.mod | 1 + pkg/command/root.go | 6 +++--- pkg/command/server.go | 6 +++--- pkg/service/v0/service.go | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 5f96a22f18..8a2c149c20 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/golang/protobuf v1.3.2 github.com/google/uuid v1.1.1 github.com/micro/cli v0.2.0 + github.com/micro/cli/v2 v2.1.1 github.com/micro/go-micro v1.18.0 github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 diff --git a/pkg/command/root.go b/pkg/command/root.go index 1dc3777ab2..01f8846605 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -3,7 +3,7 @@ package command import ( "os" - "github.com/micro/cli" + "github.com/micro/cli/v2" // init store manager _ "github.com/owncloud/ocis-accounts/pkg/store" "github.com/owncloud/ocis-hello/pkg/version" @@ -16,14 +16,14 @@ func Execute() error { Version: version.String, Usage: "Example service for Reva/oCIS", - Authors: []cli.Author{ + Authors: []*cli.Author{ { Name: "ownCloud GmbH", Email: "support@owncloud.com", }, }, - Commands: []cli.Command{ + Commands: []*cli.Command{ Server(), }, } diff --git a/pkg/command/server.go b/pkg/command/server.go index 6bec060c4a..a0a867f7f9 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -5,14 +5,14 @@ import ( "fmt" "syscall" - "github.com/micro/cli" + "github.com/micro/cli/v2" "github.com/oklog/run" "github.com/owncloud/ocis-accounts/pkg/micro/grpc" ) // Server is the entry point for the server command. -func Server() cli.Command { - return cli.Command{ +func Server() *cli.Command { + return &cli.Command{ Name: "server", Usage: "Start accounts service", Action: func(c *cli.Context) error { diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index c0a7a0eddb..4a7c8fc2c5 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -16,7 +16,7 @@ func New(cfg *config.Config) Service { fmt.Printf("config type: %T", account.Registry["filesystem"]) return Service{ Config: cfg, - Manager: account.Registry["filesystem"](cfg), // TODO read this from config + Manager: account.Registry["filesystem"](cfg), // TODO read manager from config } } From 2ff87de71f9c3eac75a9f627af4058eac8655e79 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 10:16:12 +0100 Subject: [PATCH 032/407] toss config struct around --- pkg/command/root.go | 6 ++++-- pkg/command/server.go | 3 ++- pkg/micro/grpc/grpc.go | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 01f8846605..66369097c8 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -4,9 +4,11 @@ import ( "os" "github.com/micro/cli/v2" + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-hello/pkg/version" + // init store manager _ "github.com/owncloud/ocis-accounts/pkg/store" - "github.com/owncloud/ocis-hello/pkg/version" ) // Execute is the entry point for the ocis-accounts command. @@ -24,7 +26,7 @@ func Execute() error { }, Commands: []*cli.Command{ - Server(), + Server(config.New()), }, } diff --git a/pkg/command/server.go b/pkg/command/server.go index a0a867f7f9..b997157eba 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -7,11 +7,12 @@ import ( "github.com/micro/cli/v2" "github.com/oklog/run" + "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/micro/grpc" ) // Server is the entry point for the server command. -func Server() *cli.Command { +func Server(cfg *config.Config) *cli.Command { return &cli.Command{ Name: "server", Usage: "Start accounts service", diff --git a/pkg/micro/grpc/grpc.go b/pkg/micro/grpc/grpc.go index 874b69e2d5..5676a56a90 100644 --- a/pkg/micro/grpc/grpc.go +++ b/pkg/micro/grpc/grpc.go @@ -12,6 +12,7 @@ import ( // NewService creates a grpc service func NewService(c context.Context) grpc.Service { service := grpc.NewService( + // TODO options come from configuration grpc.Name("accounts"), grpc.Namespace("com.owncloud"), grpc.Address("localhost:9999"), From 79aaba63fcc1d725294f8b7df2022d19f57247ee Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 11:54:45 +0100 Subject: [PATCH 033/407] added flags to server command --- pkg/command/server.go | 24 +++++++++++++++++++++++- pkg/service/v0/service.go | 1 - 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index b997157eba..d27b9d01df 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -3,6 +3,8 @@ package command import ( "context" "fmt" + "os" + "path/filepath" "syscall" "github.com/micro/cli/v2" @@ -13,15 +15,35 @@ import ( // Server is the entry point for the server command. func Server(cfg *config.Config) *cli.Command { + baseDir, _ := filepath.Abs(filepath.Dir(os.Args[0])) + return &cli.Command{ Name: "server", Usage: "Start accounts service", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "manager", + DefaultText: "filesystem", + Usage: "store controller driver. eg: filesystem", + Value: "filesystem", + EnvVars: []string{"OCIS_ACCOUNTS_MANAGER"}, + Destination: &cfg.Manager, + }, + &cli.StringFlag{ + Name: "mount-path", + DefaultText: "binary default running location", + Usage: "where to mount the ocis accounts store", + Value: baseDir, + EnvVars: []string{"OCIS_ACCOUNTS_MOUNT_PATH"}, + Destination: &cfg.MountPath, + }, + }, Action: func(c *cli.Context) error { gr := run.Group{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() - service := grpc.NewService(ctx) + service := grpc.NewService(ctx, cfg) gr.Add(func() error { return service.Run() diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 4a7c8fc2c5..f6789bce19 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -44,7 +44,6 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er // Get implements the SettingsServiceHandler interface func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { - // contents, err := registry.Store.Read(req.Key) contents := s.Manager.Read(req.Key) r := &proto.Payload{} From a43512834ec0726f68ffc7f799ec21f2c54555ab Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 11:55:04 +0100 Subject: [PATCH 034/407] manager configurable --- pkg/config/config.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/config/config.go b/pkg/config/config.go index bf72297202..68577874dd 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -4,6 +4,7 @@ package config // Config captures ocis-accounts configuration parameters type Config struct { MountPath string + Manager string } // New returns a new config From cb3516a706344d7e9bb5fe016fb6715d5e14f3cc Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 11:55:25 +0100 Subject: [PATCH 035/407] injected config down the tree --- pkg/micro/grpc/grpc.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/micro/grpc/grpc.go b/pkg/micro/grpc/grpc.go index 5676a56a90..be538834cb 100644 --- a/pkg/micro/grpc/grpc.go +++ b/pkg/micro/grpc/grpc.go @@ -10,7 +10,7 @@ import ( ) // NewService creates a grpc service -func NewService(c context.Context) grpc.Service { +func NewService(c context.Context, cfg *config.Config) grpc.Service { service := grpc.NewService( // TODO options come from configuration grpc.Name("accounts"), @@ -19,7 +19,7 @@ func NewService(c context.Context) grpc.Service { grpc.Context(c), ) - hdlr := svc.New(config.New()) + hdlr := svc.New(cfg) proto.RegisterSettingsServiceHandler(service.Server(), hdlr) service.Init() From 32c5bb871c916b2fca978fd5abe69e6ecfd1dad9 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 11:55:48 +0100 Subject: [PATCH 036/407] read manager from the config definition --- pkg/service/v0/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index f6789bce19..f71fc68499 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -16,7 +16,7 @@ func New(cfg *config.Config) Service { fmt.Printf("config type: %T", account.Registry["filesystem"]) return Service{ Config: cfg, - Manager: account.Registry["filesystem"](cfg), // TODO read manager from config + Manager: account.Registry[cfg.Manager](cfg), } } From dbd98ac203d32ceffca4d8334e4e5a97f8d75fb2 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 11:55:57 +0100 Subject: [PATCH 037/407] refactor the store --- pkg/store/filesystem/store.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index d27d4d2ef9..9c98d9c8bc 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -34,16 +34,13 @@ func New(cfg *config.Config) account.Manager { Logger: olog.NewLogger(), } - // default to the current working directory if not configured - dir, err := filepath.Abs(filepath.Dir(os.Args[0])) - if err != nil { - s.Logger.Err(err).Msg("initializing accounts store") - } - - dest := filepath.Join(dir, StoreName) + dest := filepath.Join(cfg.MountPath, StoreName) if _, err := os.Stat(dest); err != nil { s.Logger.Info().Msgf("creating container on %v", dest) - os.Mkdir(dest, 0700) + err := os.MkdirAll(dest, 0700) + if err != nil { + s.Logger.Err(err).Msgf("providing container on %v", dest) + } } s.mountPath = dest From ac20460e7c5c2479d9304834113f474f943a6af7 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 11:56:42 +0100 Subject: [PATCH 038/407] leftover print --- pkg/service/v0/service.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index f71fc68499..2b1fd61905 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -3,7 +3,6 @@ package service import ( "context" "encoding/json" - "fmt" "github.com/golang/protobuf/ptypes/empty" "github.com/owncloud/ocis-accounts/pkg/account" @@ -13,7 +12,6 @@ import ( // New returns a new instance of Service func New(cfg *config.Config) Service { - fmt.Printf("config type: %T", account.Registry["filesystem"]) return Service{ Config: cfg, Manager: account.Registry[cfg.Manager](cfg), From dade720bf599651444250a2807a8ba153b28910e Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 12:17:41 +0100 Subject: [PATCH 039/407] fatal on unknown driver; named logger --- pkg/service/v0/service.go | 15 ++++++++++++--- pkg/store/filesystem/store.go | 9 ++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 2b1fd61905..682e51dbcf 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -8,14 +8,23 @@ import ( "github.com/owncloud/ocis-accounts/pkg/account" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" + olog "github.com/owncloud/ocis-pkg/log" ) // New returns a new instance of Service func New(cfg *config.Config) Service { - return Service{ - Config: cfg, - Manager: account.Registry[cfg.Manager](cfg), + s := Service{ + Config: cfg, } + + if newReg, ok := account.Registry[cfg.Manager]; ok { + s.Manager = newReg(cfg) + } else { + l := olog.NewLogger(olog.Name("ocis-accounts")) + l.Fatal().Msgf("driver does not exist: %v", cfg.Manager) + } + + return s } // Service implements the SettingsServiceHandler interface diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 9c98d9c8bc..a4a5a09d41 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -14,10 +14,8 @@ import ( var ( // StoreName is the default name for the accounts store - StoreName string = "ocis-store" - - // managerName - managerName = "filesystem" + StoreName string = "ocis-store" + managerName = "filesystem" ) // StoreName is the default name for the store container @@ -31,7 +29,7 @@ type Store struct { // New creates a new store func New(cfg *config.Config) account.Manager { s := Store{ - Logger: olog.NewLogger(), + Logger: olog.NewLogger(olog.Name("ocis-accounts")), } dest := filepath.Join(cfg.MountPath, StoreName) @@ -96,6 +94,7 @@ func (s Store) Write(rec *account.Record) *account.Record { s.Logger.Info().Msgf("%v bytes written to %v", len(rec.Value), path) return rec } + func init() { account.Registry[managerName] = New } From 517ff78d7ff2277ab2c63f580fd391ddb3fb4409 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 12:18:18 +0100 Subject: [PATCH 040/407] less confusing error message --- pkg/service/v0/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 682e51dbcf..0a432c1e2b 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -21,7 +21,7 @@ func New(cfg *config.Config) Service { s.Manager = newReg(cfg) } else { l := olog.NewLogger(olog.Name("ocis-accounts")) - l.Fatal().Msgf("driver does not exist: %v", cfg.Manager) + l.Fatal().Msgf("unknown manager: %v", cfg.Manager) } return s From 582170605fcb8efdff7ae0c80c9f37a3287b44b3 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 12:37:23 +0100 Subject: [PATCH 041/407] added options to grpc init --- pkg/command/server.go | 9 ++++- pkg/micro/grpc/grpc.go | 20 +++++------ pkg/micro/grpc/options.go | 74 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 12 deletions(-) create mode 100644 pkg/micro/grpc/options.go diff --git a/pkg/command/server.go b/pkg/command/server.go index d27b9d01df..2644b1bc09 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -43,7 +43,14 @@ func Server(cfg *config.Config) *cli.Command { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - service := grpc.NewService(ctx, cfg) + service := grpc.NewService( + // TODO read all this from cfg + grpc.Context(ctx), + grpc.Config(cfg), + grpc.Name("accounts"), + grpc.Namespace("com.owncloud"), + grpc.Address("localhost:9999"), + ) gr.Add(func() error { return service.Run() diff --git a/pkg/micro/grpc/grpc.go b/pkg/micro/grpc/grpc.go index be538834cb..547789d475 100644 --- a/pkg/micro/grpc/grpc.go +++ b/pkg/micro/grpc/grpc.go @@ -1,25 +1,23 @@ package grpc import ( - "context" - - "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" svc "github.com/owncloud/ocis-accounts/pkg/service/v0" "github.com/owncloud/ocis-pkg/service/grpc" ) -// NewService creates a grpc service -func NewService(c context.Context, cfg *config.Config) grpc.Service { +// NewService initializes a new go-micro service ready to run +func NewService(opts ...Option) grpc.Service { + options := newOptions(opts...) + service := grpc.NewService( - // TODO options come from configuration - grpc.Name("accounts"), - grpc.Namespace("com.owncloud"), - grpc.Address("localhost:9999"), - grpc.Context(c), + grpc.Name(options.Name), + grpc.Context(options.Context), + grpc.Address(options.Address), + grpc.Namespace(options.Namespace), ) - hdlr := svc.New(cfg) + hdlr := svc.New(options.Config) proto.RegisterSettingsServiceHandler(service.Server(), hdlr) service.Init() diff --git a/pkg/micro/grpc/options.go b/pkg/micro/grpc/options.go new file mode 100644 index 0000000000..1e92d61ba6 --- /dev/null +++ b/pkg/micro/grpc/options.go @@ -0,0 +1,74 @@ +package grpc + +import ( + "context" + + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-pkg/log" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Name string + Address string + Logger log.Logger + Context context.Context + Config *config.Config + Namespace string +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Name provides a name for the service. +func Name(val string) Option { + return func(o *Options) { + o.Name = val + } +} + +// Address provides an address for the service. +func Address(val string) Option { + return func(o *Options) { + o.Address = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} + +// Namespace provides a function to set the namespace option. +func Namespace(val string) Option { + return func(o *Options) { + o.Namespace = val + } +} From 9dda684cf282d595c20195cb642e297921b34b02 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 12:39:29 +0100 Subject: [PATCH 042/407] update config --- pkg/config/config.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/config/config.go b/pkg/config/config.go index 68577874dd..66dadf2ad6 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -1,13 +1,21 @@ // Package config should be moved to internal package config -// Config captures ocis-accounts configuration parameters +// Server configures a server. +type Server struct { + Name string + Namespace string + Address string +} + +// Config merges all Account config parameters. type Config struct { MountPath string Manager string + Server Server } -// New returns a new config +// New returns a new config. func New() *Config { return &Config{} } From 50336301c47ab28756ee975861bba18075deec5b Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 12:42:16 +0100 Subject: [PATCH 043/407] use flags to configure the server --- pkg/command/server.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index 2644b1bc09..7807bd8628 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -37,6 +37,21 @@ func Server(cfg *config.Config) *cli.Command { EnvVars: []string{"OCIS_ACCOUNTS_MOUNT_PATH"}, Destination: &cfg.MountPath, }, + &cli.StringFlag{ + Name: "name", + Value: "accounts", + Destination: &cfg.Server.Name, + }, + &cli.StringFlag{ + Name: "namespace", + Value: "com.owncloud", + Destination: &cfg.Server.Namespace, + }, + &cli.StringFlag{ + Name: "address", + Value: "localhost:9999", + Destination: &cfg.Server.Address, + }, }, Action: func(c *cli.Context) error { gr := run.Group{} @@ -44,12 +59,11 @@ func Server(cfg *config.Config) *cli.Command { defer cancel() service := grpc.NewService( - // TODO read all this from cfg grpc.Context(ctx), grpc.Config(cfg), - grpc.Name("accounts"), - grpc.Namespace("com.owncloud"), - grpc.Address("localhost:9999"), + grpc.Name(cfg.Server.Name), + grpc.Namespace(cfg.Server.Namespace), + grpc.Address(cfg.Server.Address), ) gr.Add(func() error { From af4148923e46b1a552115af3191b8036edeb8d2b Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 12:42:20 +0100 Subject: [PATCH 044/407] use flags to configure the server --- pkg/command/server.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/command/server.go b/pkg/command/server.go index 7807bd8628..57724a8fee 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -41,16 +41,19 @@ func Server(cfg *config.Config) *cli.Command { Name: "name", Value: "accounts", Destination: &cfg.Server.Name, + EnvVars: []string{"OCIS_ACCOUNTS_NAME"}, }, &cli.StringFlag{ Name: "namespace", Value: "com.owncloud", Destination: &cfg.Server.Namespace, + EnvVars: []string{"OCIS_ACCOUNTS_NAMESPACE"}, }, &cli.StringFlag{ Name: "address", Value: "localhost:9999", Destination: &cfg.Server.Address, + EnvVars: []string{"OCIS_ACCOUNTS_ADDRESS"}, }, }, Action: func(c *cli.Context) error { From a1de935942da059ef273ee1a45ac1ee23ee731aa Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 15:08:59 +0100 Subject: [PATCH 045/407] use proto record types on interface --- pkg/account/accounts.go | 11 ++++++---- pkg/service/v0/service.go | 34 +++---------------------------- pkg/store/filesystem/store.go | 38 +++++++++++++++++++++++------------ 3 files changed, 35 insertions(+), 48 deletions(-) diff --git a/pkg/account/accounts.go b/pkg/account/accounts.go index 4fa0fb09b7..df74897a00 100644 --- a/pkg/account/accounts.go +++ b/pkg/account/accounts.go @@ -1,6 +1,9 @@ package account -import "github.com/owncloud/ocis-accounts/pkg/config" +import ( + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/proto/v0" +) var ( // Registry uses the strategy pattern as a registry @@ -16,11 +19,11 @@ type RegisterFunc func(*config.Config) Manager // Manager is an accounts service interface type Manager interface { // Read a record - Read(key string) *Record + Read(key string) *proto.Record // Write a record - Write(*Record) *Record + Write(*proto.Record) *proto.Record // List all records - List() []*Record + List() []*proto.Record } // Record is an entry in the account storage diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 0a432c1e2b..2ae0f8a0de 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -2,7 +2,6 @@ package service import ( "context" - "encoding/json" "github.com/golang/protobuf/ptypes/empty" "github.com/owncloud/ocis-accounts/pkg/account" @@ -36,45 +35,18 @@ type Service struct { // Set implements the SettingsServiceHandler interface // This implementation replaces the existent data with the requested. It does not calculate diff func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { - settingsJSON, err := json.Marshal(req.Payload) - if err != nil { - return err - } - - s.Manager.Write(&account.Record{ - Key: req.Key, - Value: settingsJSON, - }) - + s.Manager.Write(req) return nil } // Get implements the SettingsServiceHandler interface func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { - contents := s.Manager.Read(req.Key) - - r := &proto.Payload{} - json.Unmarshal(contents.Value, r) - res.Payload = r - + res.Payload = s.Manager.Read(req.Key).Payload return nil } // List implements the SettingsServiceHandler interface func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) error { - // r := &proto.Records{} - // contents, err := registry.Store.List() - // if err != nil { - // return err - // } - - // for _, v := range contents { - // r.Records = append(r.Records, &proto.Record{ - // Key: v.Key, - // }) - // } - - // res.Records = r.Records - + // res = s.Manager.List() return nil } diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index a4a5a09d41..7da8846ad2 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -2,13 +2,16 @@ package store import ( + "encoding/json" "io/ioutil" "os" "path" "path/filepath" + // gproto "github.com/golang/protobuf/proto" "github.com/owncloud/ocis-accounts/pkg/account" "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/proto/v0" olog "github.com/owncloud/ocis-pkg/log" ) @@ -46,8 +49,8 @@ func New(cfg *config.Config) account.Manager { } // List returns all the identities in the mountPath folder -func (s Store) List() []*account.Record { - records := []*account.Record{} +func (s Store) List() []*proto.Record { + records := []*proto.Record{} identities, err := ioutil.ReadDir(s.mountPath) if err != nil { s.Logger.Err(err).Msgf("error reading %v", s.mountPath) @@ -56,7 +59,7 @@ func (s Store) List() []*account.Record { s.Logger.Info().Msg("listing identities") for _, v := range identities { - records = append(records, &account.Record{ + records = append(records, &proto.Record{ Key: v.Name(), }) } @@ -65,33 +68,42 @@ func (s Store) List() []*account.Record { } // Read implements the store interface. This implementation only reads by id. -func (s Store) Read(key string) *account.Record { +func (s Store) Read(key string) *proto.Record { contents, err := ioutil.ReadFile(path.Join(s.mountPath, key)) if err != nil { s.Logger.Err(err).Msgf("error reading contents of key %v: file not found", key) - return &account.Record{} + return &proto.Record{} } - return &account.Record{ - Key: key, - Value: contents, + record := proto.Record{} + if err = json.Unmarshal(contents, &record); err != nil { + s.Logger.Err(err).Msg("error unmarshaling record") + return &proto.Record{} } + + return &record } // Write implements the store interface -func (s Store) Write(rec *account.Record) *account.Record { +func (s Store) Write(rec *proto.Record) *proto.Record { path := filepath.Join(s.mountPath, rec.Key) if len(rec.Key) < 1 { s.Logger.Error().Msg("key cannot be empty") - return &account.Record{} + return &proto.Record{} } - if err := ioutil.WriteFile(path, rec.Value, 0644); err != nil { - return &account.Record{} + contents, err := json.Marshal(rec) + if err != nil { + s.Logger.Err(err).Msg("record could not be marshaled") + return &proto.Record{} } - s.Logger.Info().Msgf("%v bytes written to %v", len(rec.Value), path) + if err := ioutil.WriteFile(path, contents, 0644); err != nil { + return &proto.Record{} + } + + s.Logger.Info().Msgf("%v bytes written to %v", len(contents), path) return rec } From 0d8d26b4255b125f02b8f40a7e18416271dd7298 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 15:19:01 +0100 Subject: [PATCH 046/407] wire list identities --- pkg/service/v0/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 2ae0f8a0de..ee067f891d 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -47,6 +47,6 @@ func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) err // List implements the SettingsServiceHandler interface func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) error { - // res = s.Manager.List() + res.Records = s.Manager.List() return nil } From b2054248d0c9d1788c78b918a97ad4b3c98ac4b7 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 15:30:41 +0100 Subject: [PATCH 047/407] updated the account interface to return errors --- pkg/account/accounts.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/account/accounts.go b/pkg/account/accounts.go index df74897a00..a9c997a9cc 100644 --- a/pkg/account/accounts.go +++ b/pkg/account/accounts.go @@ -19,11 +19,11 @@ type RegisterFunc func(*config.Config) Manager // Manager is an accounts service interface type Manager interface { // Read a record - Read(key string) *proto.Record + Read(key string) (*proto.Record, error) // Write a record - Write(*proto.Record) *proto.Record + Write(*proto.Record) (*proto.Record, error) // List all records - List() []*proto.Record + List() ([]*proto.Record, error) } // Record is an entry in the account storage From 8ade12d471d812933fb7587f189c4c2c0e5ebdc1 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 15:31:46 +0100 Subject: [PATCH 048/407] update store filesystem implementation --- pkg/store/filesystem/store.go | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 7da8846ad2..40428e1705 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -3,6 +3,7 @@ package store import ( "encoding/json" + "fmt" "io/ioutil" "os" "path" @@ -17,8 +18,9 @@ import ( var ( // StoreName is the default name for the accounts store - StoreName string = "ocis-store" - managerName = "filesystem" + StoreName string = "ocis-store" + managerName = "filesystem" + emptyKeyError = "key cannot be empty" ) // StoreName is the default name for the store container @@ -49,12 +51,12 @@ func New(cfg *config.Config) account.Manager { } // List returns all the identities in the mountPath folder -func (s Store) List() []*proto.Record { +func (s Store) List() ([]*proto.Record, error) { records := []*proto.Record{} identities, err := ioutil.ReadDir(s.mountPath) if err != nil { s.Logger.Err(err).Msgf("error reading %v", s.mountPath) - return records + return nil, err } s.Logger.Info().Msg("listing identities") @@ -64,47 +66,47 @@ func (s Store) List() []*proto.Record { }) } - return records + return records, nil } // Read implements the store interface. This implementation only reads by id. -func (s Store) Read(key string) *proto.Record { +func (s Store) Read(key string) (*proto.Record, error) { contents, err := ioutil.ReadFile(path.Join(s.mountPath, key)) if err != nil { s.Logger.Err(err).Msgf("error reading contents of key %v: file not found", key) - return &proto.Record{} + return nil, err } record := proto.Record{} if err = json.Unmarshal(contents, &record); err != nil { s.Logger.Err(err).Msg("error unmarshaling record") - return &proto.Record{} + return nil, err } - return &record + return &record, nil } // Write implements the store interface -func (s Store) Write(rec *proto.Record) *proto.Record { +func (s Store) Write(rec *proto.Record) (*proto.Record, error) { path := filepath.Join(s.mountPath, rec.Key) if len(rec.Key) < 1 { s.Logger.Error().Msg("key cannot be empty") - return &proto.Record{} + return nil, fmt.Errorf(emptyKeyError) } contents, err := json.Marshal(rec) if err != nil { s.Logger.Err(err).Msg("record could not be marshaled") - return &proto.Record{} + return nil, err } if err := ioutil.WriteFile(path, contents, 0644); err != nil { - return &proto.Record{} + return nil, err } s.Logger.Info().Msgf("%v bytes written to %v", len(contents), path) - return rec + return rec, nil } func init() { From a97bfbc9e48d7e68650a5bdfc7da661288db9d27 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 4 Feb 2020 15:31:57 +0100 Subject: [PATCH 049/407] update service --- pkg/service/v0/service.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index ee067f891d..e4db11353a 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -35,18 +35,33 @@ type Service struct { // Set implements the SettingsServiceHandler interface // This implementation replaces the existent data with the requested. It does not calculate diff func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { - s.Manager.Write(req) + r, err := s.Manager.Write(req) + if err != nil { + return err + } + + res.Payload = r.GetPayload() return nil } // Get implements the SettingsServiceHandler interface func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { - res.Payload = s.Manager.Read(req.Key).Payload + r, err := s.Manager.Read(req.GetKey()) + if err != nil { + return err + } + + res.Payload = r.GetPayload() return nil } // List implements the SettingsServiceHandler interface func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) error { - res.Records = s.Manager.List() + r, err := s.Manager.List() + if err != nil { + return err + } + + res.Records = r return nil } From 7d9773c075a42a4742b6d5204d5c7be77f451758 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 6 Feb 2020 15:39:24 +0100 Subject: [PATCH 050/407] added editorconfig --- .editorconfig | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..7b368379e8 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,35 @@ +# http://editorconfig.org + +root = true + +[*] +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +[Makefile] +indent_style = tab +indent_size = 4 + +[*.go] +indent_style = tab +indent_size = 4 + +[*.starlark] +indent_style = space +indent_size = 2 + +[*.{yml,json}] +indent_style = space +indent_size = 2 + +[*.{js,vue}] +indent_style = space +indent_size = 2 + +[*.{css,less}] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = true \ No newline at end of file From 1716beaa6250e422f1329ae501cf2364411301a2 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 09:54:43 +0100 Subject: [PATCH 051/407] server command verbose --- pkg/command/server.go | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index 57724a8fee..600d90702a 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -3,8 +3,6 @@ package command import ( "context" "fmt" - "os" - "path/filepath" "syscall" "github.com/micro/cli/v2" @@ -15,45 +13,50 @@ import ( // Server is the entry point for the server command. func Server(cfg *config.Config) *cli.Command { - baseDir, _ := filepath.Abs(filepath.Dir(os.Args[0])) - return &cli.Command{ - Name: "server", - Usage: "Start accounts service", + Name: "server", + Usage: "Start ocis accounts service", + Description: "an accounts backend manager (driver) needs to be specified. By default the service uses the filesystem as storage", Flags: []cli.Flag{ &cli.StringFlag{ Name: "manager", DefaultText: "filesystem", - Usage: "store controller driver. eg: filesystem", + Usage: "accounts backend manager", Value: "filesystem", EnvVars: []string{"OCIS_ACCOUNTS_MANAGER"}, Destination: &cfg.Manager, }, &cli.StringFlag{ Name: "mount-path", - DefaultText: "binary default running location", - Usage: "where to mount the ocis accounts store", - Value: baseDir, + Usage: "mounting point (necessary when manager=filesystem)", EnvVars: []string{"OCIS_ACCOUNTS_MOUNT_PATH"}, Destination: &cfg.MountPath, }, &cli.StringFlag{ Name: "name", Value: "accounts", - Destination: &cfg.Server.Name, + DefaultText: "accounts", + Usage: "service name", EnvVars: []string{"OCIS_ACCOUNTS_NAME"}, + Destination: &cfg.Server.Name, }, &cli.StringFlag{ Name: "namespace", + Aliases: []string{"ns"}, Value: "com.owncloud", - Destination: &cfg.Server.Namespace, + DefaultText: "com.owncloud", + Usage: "namespace", EnvVars: []string{"OCIS_ACCOUNTS_NAMESPACE"}, + Destination: &cfg.Server.Namespace, }, &cli.StringFlag{ Name: "address", + Aliases: []string{"addr"}, Value: "localhost:9999", - Destination: &cfg.Server.Address, + DefaultText: "localhost:9999", + Usage: "service endpoint", EnvVars: []string{"OCIS_ACCOUNTS_ADDRESS"}, + Destination: &cfg.Server.Address, }, }, Action: func(c *cli.Context) error { From 29677fcf33ae156e5c558224eea145be7d0f26e3 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:03:06 +0100 Subject: [PATCH 052/407] added codacy ignores --- .codacy.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .codacy.yml diff --git a/.codacy.yml b/.codacy.yml new file mode 100644 index 0000000000..855b4f298b --- /dev/null +++ b/.codacy.yml @@ -0,0 +1,8 @@ +--- +exclude_paths: + - CHANGELOG.md + - changelog/** + - docs/** + - pkg/proto/** + +... From a6835cd9045ace6ece84c4675f09547d1331af05 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:20:46 +0100 Subject: [PATCH 053/407] added license --- license.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 license.md diff --git a/license.md b/license.md new file mode 100644 index 0000000000..268e597fd1 --- /dev/null +++ b/license.md @@ -0,0 +1,8 @@ +--- +title: "License" +date: 2018-05-02T00:00:00+00:00 +anchor: "license" +weight: 40 +--- + +This project is licensed under the [Apache 2.0](https://github.com/owncloud/ocis-accounts/blob/master/LICENSE) license. For the license of the used libraries you have to check the respective sources. From f6780074d5af2f57e5eb5ab2cc4d8e40a265dbe8 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:21:00 +0100 Subject: [PATCH 054/407] added docs --- docs/.gitignore | 1 + docs/archetypes/default.md | 6 + docs/config.toml | 18 ++ docs/content/about.md | 8 + docs/content/building.md | 24 +++ docs/content/getting-started.md | 63 ++++++ docs/layouts/_default/list.html | 0 docs/layouts/_default/single.html | 0 docs/layouts/index.html | 57 +++++ docs/layouts/partials/style.html | 2 + docs/static/styles.css | 338 ++++++++++++++++++++++++++++++ docs/static/syntax.css | 59 ++++++ 12 files changed, 576 insertions(+) create mode 100644 docs/.gitignore create mode 100644 docs/archetypes/default.md create mode 100644 docs/config.toml create mode 100644 docs/content/about.md create mode 100644 docs/content/building.md create mode 100644 docs/content/getting-started.md create mode 100644 docs/layouts/_default/list.html create mode 100644 docs/layouts/_default/single.html create mode 100644 docs/layouts/index.html create mode 100644 docs/layouts/partials/style.html create mode 100644 docs/static/styles.css create mode 100644 docs/static/syntax.css diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000000..364fdec1aa --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +public/ diff --git a/docs/archetypes/default.md b/docs/archetypes/default.md new file mode 100644 index 0000000000..4e777bee13 --- /dev/null +++ b/docs/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .TranslationBaseName "-" " " | title }}" +date: {{ .Date }} +anchor: "{{ replace .TranslationBaseName "-" " " | title | urlize }}" +weight: +--- diff --git a/docs/config.toml b/docs/config.toml new file mode 100644 index 0000000000..82d4905f15 --- /dev/null +++ b/docs/config.toml @@ -0,0 +1,18 @@ +baseURL = "https://owncloud.github.io/ocis-accounts/" +languageCode = "en-us" +title = "ownCloud Infinite Scale: Accounts" +pygmentsUseClasses = true + +disableKinds = ["taxonomy", "taxonomyTerm", "RSS", "sitemap"] + +[blackfriday] + angledQuotes = true + fractions = false + plainIDAnchors = true + smartlists = true + extensions = ["hardLineBreak"] + +[params] + author = "ownCloud GmbH" + description = "Serve Accounbts API for oCIS" + keywords = "reva, ocis, accounts" diff --git a/docs/content/about.md b/docs/content/about.md new file mode 100644 index 0000000000..2f6241567b --- /dev/null +++ b/docs/content/about.md @@ -0,0 +1,8 @@ +--- +title: "About" +date: 2020-02-07T00:00:00+00:00 +anchor: "about" +weight: 10 +--- + +This service provides an inter-operable accounts service that operates on the filesystem by default. diff --git a/docs/content/building.md b/docs/content/building.md new file mode 100644 index 0000000000..0cf2186527 --- /dev/null +++ b/docs/content/building.md @@ -0,0 +1,24 @@ +--- +title: "Building" +date: 2018-05-02T00:00:00+00:00 +anchor: "building" +weight: 30 +--- + +As this project is built with Go, so you need to install that first. The installation of Go is out of the scope of this document, please follow the official documentation for [Go](https://golang.org/doc/install), to build this project you have to install Go >= v1.13. After the installation of the required tools you need to get the sources: + +{{< highlight txt >}} +git clone https://github.com/owncloud/ocis-accounts.git +cd ocis-accounts +{{< / highlight >}} + +All required tool besides Go itself and make are bundled or getting automatically installed within the `GOPATH`. All commands to build this project are part of our `Makefile`. + +### Backend + +{{< highlight txt >}} +make generate +make build +{{< / highlight >}} + +Finally you should have the binary within the `bin/` folder now, give it a try with `./bin/ocis-accounts -h` to see all available options and subcommands. diff --git a/docs/content/getting-started.md b/docs/content/getting-started.md new file mode 100644 index 0000000000..795519fe32 --- /dev/null +++ b/docs/content/getting-started.md @@ -0,0 +1,63 @@ +--- +title: "Getting Started" +date: 2018-05-02T00:00:00+00:00 +anchor: "getting-started" +weight: 20 +--- + +### Installation + +So far we are offering two different variants for the installation. You can choose between [Docker](https://www.docker.com/) or pre-built binaries which are stored on our download mirrors and GitHub releases. Maybe we will also provide system packages for the major distributions later if we see the need for it. + +#### Docker + +TBD + +#### Binaries + +TBD + +### Configuration + +We provide overall three different variants of configuration. The variant based on environment variables and commandline flags are split up into global values and command-specific values. + +#### Envrionment variables + +If you prefer to configure the service with environment variables you can see the available variables below. + +##### Server + +OCIS_ACCOUNTS_MANAGER +: Enable sending traces, defaults to `filesystem` + +OCIS_ACCOUNTS_MOUNT_PATH +: Mounting point for the accounts service when running on the filesystem as manager. + +OCIS_ACCOUNTS_NAME +: Name of the accounts service. It will be part of the namespace. + +OCIS_ACCOUNTS_NAMESPACE +: Namespace of the accounts service. + +OCIS_ACCOUNTS_ADDRESS +: Endpoint for the grpc service endpoint. + +#### Commandline flags + +If you prefer to configure the service with commandline flags you can see the available variables below. + +#### Configuration file + +So far we support the file formats `JSON` and `YAML`, if you want to get a full example configuration just take a look at [our repository](https://github.com/owncloud/ocis-accounts/tree/master/pkg/config), there you can always see the latest configuration format. These example configurations include all available options and the default values. The configuration file will be automatically loaded if it's placed at `/etc/ocis/accounts.yml`, `${HOME}/.ocis/accounts.yml` or `$(pwd)/config/accounts.yml`. + +### Usage + +The program provides a few sub-commands on execution. The available configuration methods have already been mentioned above. Generally you can always see a formated help output if you execute the binary via `ocis-accounts --help`. + +#### Server + +The server command is used to start the grpc server. For further help please execute: + +{{< highlight txt >}} +ocis-accounts server --help +{{< / highlight >}} diff --git a/docs/layouts/_default/list.html b/docs/layouts/_default/list.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/layouts/_default/single.html b/docs/layouts/_default/single.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/layouts/index.html b/docs/layouts/index.html new file mode 100644 index 0000000000..27db113acd --- /dev/null +++ b/docs/layouts/index.html @@ -0,0 +1,57 @@ + + + + + + + + + {{ .Site.Title }} + + + + + + {{ partial "style.html" . }} + + + + + + {{ range .Data.Pages.ByWeight }} +
+

+ + {{ .Title }} + + + + + Back to Top + + +

+ + {{ .Content | markdownify }} +
+ {{ end }} + + diff --git a/docs/layouts/partials/style.html b/docs/layouts/partials/style.html new file mode 100644 index 0000000000..1386c59b0d --- /dev/null +++ b/docs/layouts/partials/style.html @@ -0,0 +1,2 @@ + + diff --git a/docs/static/styles.css b/docs/static/styles.css new file mode 100644 index 0000000000..61acc8ddb5 --- /dev/null +++ b/docs/static/styles.css @@ -0,0 +1,338 @@ +body, +html { + cursor: default; +} + +body, +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +fieldset, +input, +textarea, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; +} + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +:before, +:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +img, +object, +embed { + max-width: 100%; + height: auto; +} + +object, +embed { + height: 100%; +} + +img { + margin: 1.25% 0; + -ms-interpolation-mode: bicubic; +} + +html { + background-color: #F0F1F3; + padding: 2%; +} + +body { + font-size: 16px; + line-height: 1.6; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + color: #242424; + max-width: 800px; + margin: 5% auto; +} + +body::after { + clear: both; + content: ""; + display: table; +} + +header { + margin-bottom: 8%; +} + +footer { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h2 a { + color: #263A48; + font-weight: 500; + text-decoration: none; +} + +h1, +h2 { + font-size: 36px; + padding-bottom: 0.3em; + margin-bottom: 0.4em; + border-bottom: 1px solid #eee +} + +h2 { + font-size: 22px; + padding-bottom: 0.6em; + margin-bottom: 0.6em; + margin-top: 2.5em; +} + +h3 { + font-size: 18px; + margin-bottom: 0.3em; +} + +h2 small a { + color: #98999C; + font-size: 15px; + font-weight: normal; + float: right; + position: absolute; + top: 15px; + right: 20px; +} + +section { + background: #fff; + margin-bottom: 1%; + position: relative; + padding: 6% 8%; +} + +blockquote { + border-left: 3px solid #d54e21; + font-size: 16px; + padding: 0 0 0 20px; + color: #d54e21; +} + +blockquote a { + color: #d54e21; + font-weight: 500; +} + +blockquote code { + color: #d54e21; +} + +.highlight pre { + padding: 10px; +} + +.highlight { + margin-bottom: 4%; +} + +a { + color: #1e8cbe; + text-decoration: underline; +} + +a:hover { + color: #d54e21; +} + +ul { + list-style: none; +} + +ol { + list-style: number; +} + +ol li { + color: #98999C; + margin-bottom: 5px; +} + +ol li:last-child { + margin-bottom: 0; +} + +p, +ul, +ol, +blockquote { + margin-bottom: 4%; +} + +ul ul { + padding-top: 0; + margin-bottom: 0; + margin-left: 4%; +} + +ul ul li:before { + content: '-'; + display: inline-block; + padding-right: 2%; +} + +ul.col-2 { + color: #98999C; + -webkit-column-count: 2; + -moz-column-count: 2; + column-count: 2; + -webkit-column-gap: 20px; + -moz-column-gap: 20px; + column-gap: 20px; +} + +dl dt { + font-weight: bold; +} + +dl dd { + padding-left: 10px; +} + +@media screen and (min-width: 500px) { + ul.col-2 { + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + -webkit-column-gap: 20px; + -moz-column-gap: 20px; + column-gap: 20px; + } +} + +nav { + background: #F0F1F3; + min-width: 215px; + margin-bottom: 5px; + margin-top: 15px; +} + +nav:first-of-type a { + color: #d54e21; + border-radius: 0; +} + +nav:first-of-type a:hover { + color: #d54e21; +} + +nav:first-of-type a:before { + background-color: #d54e21; +} + +nav.affix { + position: fixed; + top: 20px; +} + +nav.affix-bottom { + position: absolute; +} + +nav a { + border-radius: 3px; + font-size: 15px; + display: block; + cursor: pointer; + font-weight: 500; + position: relative; + text-decoration: none; + padding: 10px 12px; + width: 100%; + padding-right: 3px; + border-bottom: 2px solid #fff; +} + +nav a:before { + content: ''; + width: 4px; + display: block; + left: 0; + position: absolute; + height: 100%; + display: none; + background: #1e8cbe; + top: 0; +} + +nav a:hover { + background-color: #E6E8EA; + color: #1e8cbe; + text-decoration: underline; +} + +nav a:hover:before { + display: block; +} + +nav a:last-of-type { + border-bottom: none; +} + +.gist { + margin-top: 5.1%; + margin-bottom: 5%; +} + +@media screen and (max-width: 1050px) { + body { + margin: 0 auto; + } +} + +@media screen and (max-width: 767px) { + header span { + display: none; + } + + h1 { + font-size: 26px; + } + + h2 { + font-size: 20px; + } +} + +@media screen and (max-width: 514px) { + p, + ul, + ol, + blockquote { + margin-bottom: 8%; + } +} diff --git a/docs/static/syntax.css b/docs/static/syntax.css new file mode 100644 index 0000000000..681758d068 --- /dev/null +++ b/docs/static/syntax.css @@ -0,0 +1,59 @@ +/* Background */ .chroma { color: #f8f8f2; background-color: #272822 } +/* Error */ .chroma .err { color: #960050; background-color: #1e0010 } +/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } +/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } +/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc } +/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } +/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } +/* Keyword */ .chroma .k { color: #66d9ef } +/* KeywordConstant */ .chroma .kc { color: #66d9ef } +/* KeywordDeclaration */ .chroma .kd { color: #66d9ef } +/* KeywordNamespace */ .chroma .kn { color: #f92672 } +/* KeywordPseudo */ .chroma .kp { color: #66d9ef } +/* KeywordReserved */ .chroma .kr { color: #66d9ef } +/* KeywordType */ .chroma .kt { color: #66d9ef } +/* NameAttribute */ .chroma .na { color: #a6e22e } +/* NameClass */ .chroma .nc { color: #a6e22e } +/* NameConstant */ .chroma .no { color: #66d9ef } +/* NameDecorator */ .chroma .nd { color: #a6e22e } +/* NameException */ .chroma .ne { color: #a6e22e } +/* NameFunction */ .chroma .nf { color: #a6e22e } +/* NameOther */ .chroma .nx { color: #a6e22e } +/* NameTag */ .chroma .nt { color: #f92672 } +/* Literal */ .chroma .l { color: #ae81ff } +/* LiteralDate */ .chroma .ld { color: #e6db74 } +/* LiteralString */ .chroma .s { color: #e6db74 } +/* LiteralStringAffix */ .chroma .sa { color: #e6db74 } +/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 } +/* LiteralStringChar */ .chroma .sc { color: #e6db74 } +/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 } +/* LiteralStringDoc */ .chroma .sd { color: #e6db74 } +/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 } +/* LiteralStringEscape */ .chroma .se { color: #ae81ff } +/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 } +/* LiteralStringInterpol */ .chroma .si { color: #e6db74 } +/* LiteralStringOther */ .chroma .sx { color: #e6db74 } +/* LiteralStringRegex */ .chroma .sr { color: #e6db74 } +/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 } +/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 } +/* LiteralNumber */ .chroma .m { color: #ae81ff } +/* LiteralNumberBin */ .chroma .mb { color: #ae81ff } +/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff } +/* LiteralNumberHex */ .chroma .mh { color: #ae81ff } +/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff } +/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff } +/* LiteralNumberOct */ .chroma .mo { color: #ae81ff } +/* Operator */ .chroma .o { color: #f92672 } +/* OperatorWord */ .chroma .ow { color: #f92672 } +/* Comment */ .chroma .c { color: #75715e } +/* CommentHashbang */ .chroma .ch { color: #75715e } +/* CommentMultiline */ .chroma .cm { color: #75715e } +/* CommentSingle */ .chroma .c1 { color: #75715e } +/* CommentSpecial */ .chroma .cs { color: #75715e } +/* CommentPreproc */ .chroma .cp { color: #75715e } +/* CommentPreprocFile */ .chroma .cpf { color: #75715e } +/* GenericDeleted */ .chroma .gd { color: #f92672 } +/* GenericEmph */ .chroma .ge { font-style: italic } +/* GenericInserted */ .chroma .gi { color: #a6e22e } +/* GenericStrong */ .chroma .gs { font-weight: bold } +/* GenericSubheading */ .chroma .gu { color: #75715e } From 0916653fc488fc8fd64ee185564b16be1aca7076 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:32:21 +0100 Subject: [PATCH 055/407] added drone.star --- .drone.star | 654 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 654 insertions(+) create mode 100644 .drone.star diff --git a/.drone.star b/.drone.star new file mode 100644 index 0000000000..c1bba64194 --- /dev/null +++ b/.drone.star @@ -0,0 +1,654 @@ +def main(ctx): + before = [ + testing(ctx), + ] + + stages = [ + docker(ctx, 'amd64'), + docker(ctx, 'arm64'), + docker(ctx, 'arm'), + binary(ctx, 'linux'), + binary(ctx, 'darwin'), + binary(ctx, 'windows'), + ] + + after = [ + manifest(ctx), + changelog(ctx), + readme(ctx), + badges(ctx), + website(ctx), + ] + + return before + stages + after + +def testing(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'testing', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'generate', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make generate', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'vet', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make vet', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'staticcheck', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make staticcheck', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'lint', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make lint', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'build', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make build', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'test', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make test', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'codacy', + 'image': 'plugins/codacy:1', + 'pull': 'always', + 'settings': { + 'token': { + 'from_secret': 'codacy_token', + }, + }, + }, + ], + 'volumes': [ + { + 'name': 'gopath', + 'temp': {}, + }, + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + 'refs/pull/**', + ], + }, + } + +def docker(ctx, arch): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': arch, + 'platform': { + 'os': 'linux', + 'arch': arch, + }, + 'steps': [ + { + 'name': 'generate', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make generate', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'build', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make build', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'dryrun', + 'image': 'plugins/docker:18.09', + 'pull': 'always', + 'settings': { + 'dry_run': True, + 'tags': 'linux-%s' % (arch), + 'dockerfile': 'docker/Dockerfile.linux.%s' % (arch), + 'repo': ctx.repo.slug, + }, + 'when': { + 'ref': { + 'include': [ + 'refs/pull/**', + ], + }, + }, + }, + { + 'name': 'docker', + 'image': 'plugins/docker:18.09', + 'pull': 'always', + 'settings': { + 'username': { + 'from_secret': 'docker_username', + }, + 'password': { + 'from_secret': 'docker_password', + }, + 'auto_tag': True, + 'auto_tag_suffix': 'linux-%s' % (arch), + 'dockerfile': 'docker/Dockerfile.linux.%s' % (arch), + 'repo': ctx.repo.slug, + }, + 'when': { + 'ref': { + 'exclude': [ + 'refs/pull/**', + ], + }, + }, + }, + ], + 'volumes': [ + { + 'name': 'gopath', + 'temp': {}, + }, + ], + 'depends_on': [ + 'testing', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + 'refs/pull/**', + ], + }, + } + +def binary(ctx, name): + if ctx.build.event == "tag": + settings = { + 'endpoint': { + 'from_secret': 's3_endpoint', + }, + 'access_key': { + 'from_secret': 'aws_access_key_id', + }, + 'secret_key': { + 'from_secret': 'aws_secret_access_key', + }, + 'bucket': { + 'from_secret': 's3_bucket', + }, + 'path_style': True, + 'strip_prefix': 'dist/release/', + 'source': 'dist/release/*', + 'target': '/ocis/%s/%s' % (ctx.repo.name.replace("ocis-", ""), ctx.build.ref.replace("refs/tags/v", "")), + } + else: + settings = { + 'endpoint': { + 'from_secret': 's3_endpoint', + }, + 'access_key': { + 'from_secret': 'aws_access_key_id', + }, + 'secret_key': { + 'from_secret': 'aws_secret_access_key', + }, + 'bucket': { + 'from_secret': 's3_bucket', + }, + 'path_style': True, + 'strip_prefix': 'dist/release/', + 'source': 'dist/release/*', + 'target': '/ocis/%s/testing' % (ctx.repo.name.replace("ocis-", "")), + } + + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': name, + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'generate', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make generate', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'build', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make release-%s' % (name), + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'finish', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make release-finish', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'upload', + 'image': 'plugins/s3:1', + 'pull': 'always', + 'settings': settings, + 'when': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + }, + { + 'name': 'changelog', + 'image': 'toolhippie/calens:latest', + 'pull': 'always', + 'commands': [ + 'calens --version %s -o dist/CHANGELOG.md' % ctx.build.ref.replace("refs/tags/v", "").split("-")[0], + ], + 'when': { + 'ref': [ + 'refs/tags/**', + ], + }, + }, + { + 'name': 'release', + 'image': 'plugins/github-release:1', + 'pull': 'always', + 'settings': { + 'api_key': { + 'from_secret': 'github_token', + }, + 'files': [ + 'dist/release/*', + ], + 'title': ctx.build.ref.replace("refs/tags/", ""), + 'note': 'dist/CHANGELOG.md', + 'overwrite': True, + }, + 'when': { + 'ref': [ + 'refs/tags/**', + ], + }, + }, + ], + 'volumes': [ + { + 'name': 'gopath', + 'temp': {}, + }, + ], + 'depends_on': [ + 'testing', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + 'refs/pull/**', + ], + }, + } + +def manifest(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'manifest', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'execute', + 'image': 'plugins/manifest:1', + 'pull': 'always', + 'settings': { + 'username': { + 'from_secret': 'docker_username', + }, + 'password': { + 'from_secret': 'docker_password', + }, + 'spec': 'docker/manifest.tmpl', + 'auto_tag': True, + 'ignore_missing': True, + }, + }, + ], + 'depends_on': [ + 'amd64', + 'arm64', + 'arm', + 'linux', + 'darwin', + 'windows', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + } + +def changelog(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'changelog', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'clone': { + 'disable': True, + }, + 'steps': [ + { + 'name': 'clone', + 'image': 'plugins/git-action:1', + 'pull': 'always', + 'settings': { + 'actions': [ + 'clone', + ], + 'remote': 'https://github.com/%s' % (ctx.repo.slug), + 'branch': ctx.build.branch if ctx.build.event == 'pull_request' else 'master', + 'path': '/drone/src', + 'netrc_machine': 'github.com', + 'netrc_username': { + 'from_secret': 'github_username', + }, + 'netrc_password': { + 'from_secret': 'github_token', + }, + }, + }, + { + 'name': 'generate', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make changelog', + ], + }, + { + 'name': 'output', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'cat CHANGELOG.md', + ], + }, + { + 'name': 'publish', + 'image': 'plugins/git-action:1', + 'pull': 'always', + 'settings': { + 'actions': [ + 'commit', + 'push', + ], + 'message': 'Automated changelog update [skip ci]', + 'branch': 'master', + 'author_email': 'devops@owncloud.com', + 'author_name': 'ownClouders', + 'netrc_machine': 'github.com', + 'netrc_username': { + 'from_secret': 'github_username', + }, + 'netrc_password': { + 'from_secret': 'github_token', + }, + }, + 'when': { + 'ref': { + 'exclude': [ + 'refs/pull/**', + ], + }, + }, + }, + ], + 'depends_on': [ + 'manifest', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + } + +def readme(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'readme', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'execute', + 'image': 'sheogorath/readme-to-dockerhub:latest', + 'pull': 'always', + 'environment': { + 'DOCKERHUB_USERNAME': { + 'from_secret': 'docker_username', + }, + 'DOCKERHUB_PASSWORD': { + 'from_secret': 'docker_password', + }, + 'DOCKERHUB_REPO_PREFIX': ctx.repo.namespace, + 'DOCKERHUB_REPO_NAME': ctx.repo.name, + 'SHORT_DESCRIPTION': 'Docker images for %s' % (ctx.repo.name), + 'README_PATH': 'README.md', + }, + }, + ], + 'depends_on': [ + 'changelog', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + } + +def badges(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'badges', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'execute', + 'image': 'plugins/webhook:1', + 'pull': 'always', + 'settings': { + 'urls': { + 'from_secret': 'microbadger_url', + }, + }, + }, + ], + 'depends_on': [ + 'readme', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + } + +def website(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'website', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'generate', + 'image': 'webhippie/hugo:latest', + 'pull': 'always', + 'commands': [ + 'make docs', + ], + }, + { + 'name': 'publish', + 'image': 'plugins/gh-pages:1', + 'pull': 'always', + 'settings': { + 'username': { + 'from_secret': 'github_username', + }, + 'password': { + 'from_secret': 'github_token', + }, + 'pages_directory': 'docs/public/', + 'temporary_base': 'tmp/', + }, + 'when': { + 'ref': { + 'exclude': [ + 'refs/pull/**', + ], + }, + }, + }, + ], + 'depends_on': [ + 'badges', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/pull/**', + ], + }, + } From a8cfd5cff4c9d4ad8134b08fe92c8dbaeb4ccdb3 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:33:40 +0100 Subject: [PATCH 056/407] added readme --- Readme.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Readme.md diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000000..74759169f6 --- /dev/null +++ b/Readme.md @@ -0,0 +1,45 @@ +# ownCloud Infinite Scale: Accounts + +[![Build Status](https://cloud.drone.io/api/badges/owncloud/ocis-accounts/status.svg)](https://cloud.drone.io/owncloud/ocis-accounts) +[![Gitter chat](https://badges.gitter.im/cs3org/reva.svg)](https://gitter.im/cs3org/reva) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d005a4722c1b463b9b95060479018e99)](https://www.codacy.com/gh/owncloud/ocis-accounts?utm_source=github.com&utm_medium=referral&utm_content=owncloud/ocis-accounts&utm_campaign=Badge_Grade) +[![Go Doc](https://godoc.org/github.com/owncloud/ocis-accounts?status.svg)](http://godoc.org/github.com/owncloud/ocis-accounts) +[![Go Report](http://goreportcard.com/badge/github.com/owncloud/ocis-accounts)](http://goreportcard.com/report/github.com/owncloud/ocis-accounts) +[![](https://images.microbadger.com/badges/image/owncloud/ocis-accounts.svg)](http://microbadger.com/images/owncloud/ocis-accounts "Get your own image badge on microbadger.com") + +**This project is under heavy development, it's not in a working state yet!** + +## Install + +You can download prebuilt binaries from the GitHub releases or from our [download mirrors](http://download.owncloud.com/ocis/accounts/). For instructions how to install this on your platform you should take a look at our [documentation](https://owncloud.github.io/ocis-accounts/) +**** +## Development + +Make sure you have a working Go environment, for further reference or a guide take a look at the [install instructions](http://golang.org/doc/install.html). This project requires Go >= v1.13. + +```console +git clone https://github.com/owncloud/ocis-accounts.git +cd ocis-accounts + +make generate build + +./bin/ocis-accounts -h +``` + +## Security + +If you find a security issue please contact security@owncloud.com first. + +## Contributing + +Fork -> Patch -> Push -> Pull Request + +## License + +Apache-2.0 + +## Copyright + +```console +Copyright (c) 2019 ownCloud GmbH +``` From e29ee67c4348972a5e2a1c4cd2e41c6fb0fd06f1 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:34:13 +0100 Subject: [PATCH 057/407] added dockerignore --- .dockerignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..4ec85b5e4f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +* +!bin/ From bc29887f565671276cc053b60bf82c98715eb215 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:35:22 +0100 Subject: [PATCH 058/407] added changelog folder --- changelog/CHANGELOG.tmpl | 28 ++++++++++++++++++++++++++++ changelog/README.md | 6 ++++++ changelog/TEMPLATE | 11 +++++++++++ changelog/unreleased/.keep | 0 4 files changed, 45 insertions(+) create mode 100644 changelog/CHANGELOG.tmpl create mode 100644 changelog/README.md create mode 100644 changelog/TEMPLATE create mode 100644 changelog/unreleased/.keep diff --git a/changelog/CHANGELOG.tmpl b/changelog/CHANGELOG.tmpl new file mode 100644 index 0000000000..3fee894812 --- /dev/null +++ b/changelog/CHANGELOG.tmpl @@ -0,0 +1,28 @@ +{{- range $changes := . }}{{ with $changes -}} +# Changelog for {{ .Version }} + +The following sections list the changes for {{ .Version }}. + +## Summary +{{ range $entry := .Entries }}{{ with $entry }} + * {{ .TypeShort }} #{{ .PrimaryID }}: {{ .Title }} +{{- end }}{{ end }} + +## Details +{{ range $entry := .Entries }}{{ with $entry }} + * {{ .Type }} #{{ .PrimaryID }}: {{ .Title }} +{{ range $par := .Paragraphs }} + {{ wrap $par 80 3 }} +{{ end -}} +{{ range $url := .IssueURLs }} + {{ $url -}} +{{ end -}} +{{ range $url := .PRURLs }} + {{ $url -}} +{{ end -}} +{{ range $url := .OtherURLs }} + {{ $url -}} +{{ end }} +{{ end }}{{ end }} + +{{ end }}{{ end -}} diff --git a/changelog/README.md b/changelog/README.md new file mode 100644 index 0000000000..0ae5d5b3e2 --- /dev/null +++ b/changelog/README.md @@ -0,0 +1,6 @@ +# Changelog + +We are using [calens](https://github.com/restic/calens) to properly generate a +changelog before we are tagging a new release. To get an idea how this could +look like would be the +best reference. diff --git a/changelog/TEMPLATE b/changelog/TEMPLATE new file mode 100644 index 0000000000..a284668662 --- /dev/null +++ b/changelog/TEMPLATE @@ -0,0 +1,11 @@ +Bugfix: Fix behavior for foobar (in present tense) + +We've fixed the behavior for foobar, a long-standing annoyance for users. The +text should be wrapped at 80 characters length. + +The text in the paragraphs is written in past tense. The last section is a list +of issue URLs, PR URLs and other URLs. The first issue ID (or the first PR ID, +in case there aren't any issue links) is used as the primary ID. + +https://github.com/owncloud/ocis-graph/issues/1234 +https://github.com/owncloud/ocis-graph/pull/55555 diff --git a/changelog/unreleased/.keep b/changelog/unreleased/.keep new file mode 100644 index 0000000000..e69de29bb2 From bf28935fb9eb61e03aa80fa8405422a51610114d Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:36:21 +0100 Subject: [PATCH 059/407] added license --- LICENSE | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++ license.md | 8 --- 2 files changed, 202 insertions(+), 8 deletions(-) create mode 100644 LICENSE delete mode 100644 license.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/license.md b/license.md deleted file mode 100644 index 268e597fd1..0000000000 --- a/license.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "License" -date: 2018-05-02T00:00:00+00:00 -anchor: "license" -weight: 40 ---- - -This project is licensed under the [Apache 2.0](https://github.com/owncloud/ocis-accounts/blob/master/LICENSE) license. For the license of the used libraries you have to check the respective sources. From 3b877f2ff544e0e0dbcb5a4c4b1704d903848f7b Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:41:45 +0100 Subject: [PATCH 060/407] added github folder --- .github/config.yml | 12 ++++ .github/issue_template.md | 0 .github/pull_request_template.md | 0 .github/settings.yml | 98 ++++++++++++++++++++++++++++++++ 4 files changed, 110 insertions(+) create mode 100644 .github/config.yml create mode 100644 .github/issue_template.md create mode 100644 .github/pull_request_template.md create mode 100644 .github/settings.yml diff --git a/.github/config.yml b/.github/config.yml new file mode 100644 index 0000000000..4bd8b5f18a --- /dev/null +++ b/.github/config.yml @@ -0,0 +1,12 @@ +# Configuration for update-docs - https://github.com/behaviorbot/update-docs + +# Comment to be posted to on PRs that don't update documentation +updateDocsComment: > + Thanks for opening this pull request! The maintainers of this repository would appreciate it if you would create a [changelog](https://github.com/owncloud/ocis-accounts/blob/master/changelog/README.md) item based on your changes. +updateDocsWhiteList: + - Tests-only + - tests-only + - Tests-Only + +updateDocsTargetFiles: + - changelog/unreleased/ diff --git a/.github/issue_template.md b/.github/issue_template.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/settings.yml b/.github/settings.yml new file mode 100644 index 0000000000..bd4fae6175 --- /dev/null +++ b/.github/settings.yml @@ -0,0 +1,98 @@ +--- +repository: + name: ocis-accounts + description: ':atom_symbol: :busts_in_silhouette: Serve Accounts for oCIS' + homepage: https://owncloud.github.io/ocis-graph/ + topics: reva, ocis + + private: false + has_issues: true + has_projects: false + has_wiki: false + has_downloads: false + + default_branch: master + + allow_squash_merge: true + allow_merge_commit: true + allow_rebase_merge: true + +labels: + - name: bug + color: d73a4a + description: Something isn't working + - name: documentation + color: 0075ca + description: Improvements or additions to documentation + - name: duplicate + color: cfd3d7 + description: This issue or pull request already exists + - name: enhancement + color: a2eeef + description: New feature or request + - name: good first issue + color: 7057ff + description: Good for newcomers + - name: help wanted + color: 008672 + description: Extra attention is needed + - name: invalid + color: e4e669 + description: This doesn't seem right + - name: question + color: d876e3 + description: Further information is requested + - name: wontfix + color: ffffff + description: This will not be worked on + - name: effort/trivial + color: c2e0c6 + description: Required effort to finish task + - name: effort/0.25d + color: c2e0c6 + description: Required effort to finish task + - name: effort/0.5d + color: c2e0c6 + description: Required effort to finish task + - name: effort/1d + color: c2e0c6 + description: Required effort to finish task + - name: effort/2d + color: c2e0c6 + description: Required effort to finish task + - name: effort/4d + color: c2e0c6 + description: Required effort to finish task + - name: effort/5d + color: c2e0c6 + description: Required effort to finish task + - name: effort/10d + color: c2e0c6 + description: Required effort to finish task + +teams: + - name: ci + permission: admin + - name: employees + permission: push + +branches: + - name: master + protection: + required_pull_request_reviews: + required_approving_review_count: 1 + dismiss_stale_reviews: false + require_code_owner_reviews: false + dismissal_restrictions: {} + required_status_checks: + strict: true + contexts: + - continuous-integration/drone/pr + enforce_admins: false + restrictions: + users: [] + teams: + - ci + - employees + +... From bdc473e27a9b5e9d6de695496c37c1badebfcd23 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:45:42 +0100 Subject: [PATCH 061/407] make linter happy --- pkg/store/registry.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/store/registry.go b/pkg/store/registry.go index e4a32c66d1..c85ddcedde 100644 --- a/pkg/store/registry.go +++ b/pkg/store/registry.go @@ -1,5 +1,6 @@ package store import ( + // init filesystem store _ "github.com/owncloud/ocis-accounts/pkg/store/filesystem" ) From a3b7d2a97a850c0261b8aac182006db42b675022 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:51:39 +0100 Subject: [PATCH 062/407] added docker folder --- docker/Dockerfile.linux.amd64 | 19 +++++++++++++++++++ docker/Dockerfile.linux.arm | 19 +++++++++++++++++++ docker/Dockerfile.linux.arm64 | 19 +++++++++++++++++++ docker/manifest.tmpl | 22 ++++++++++++++++++++++ go.sum | 1 + 5 files changed, 80 insertions(+) create mode 100644 docker/Dockerfile.linux.amd64 create mode 100644 docker/Dockerfile.linux.arm create mode 100644 docker/Dockerfile.linux.arm64 create mode 100644 docker/manifest.tmpl diff --git a/docker/Dockerfile.linux.amd64 b/docker/Dockerfile.linux.amd64 new file mode 100644 index 0000000000..e08533a00e --- /dev/null +++ b/docker/Dockerfile.linux.amd64 @@ -0,0 +1,19 @@ +FROM amd64/alpine:edge + +RUN apk update && \ + apk upgrade && \ + apk add ca-certificates mailcap && \ + rm -rf /var/cache/apk/* && \ + echo 'hosts: files dns' >| /etc/nsswitch.conf + +LABEL maintainer="ownCloud GmbH " \ + org.label-schema.name="oCIS Accounts" \ + org.label-schema.vendor="ownCloud GmbH" \ + org.label-schema.schema-version="1.0" + +EXPOSE 9120 9124 + +ENTRYPOINT ["/usr/bin/ocis-accounts"] +CMD ["server"] + +COPY bin/ocis-accounts /usr/bin/ocis-accounts diff --git a/docker/Dockerfile.linux.arm b/docker/Dockerfile.linux.arm new file mode 100644 index 0000000000..b1931d04d4 --- /dev/null +++ b/docker/Dockerfile.linux.arm @@ -0,0 +1,19 @@ +FROM arm32v6/alpine:edge + +RUN apk update && \ + apk upgrade && \ + apk add ca-certificates mailcap && \ + rm -rf /var/cache/apk/* && \ + echo 'hosts: files dns' >| /etc/nsswitch.conf + +LABEL maintainer="ownCloud GmbH " \ + org.label-schema.name="oCIS Accounts" \ + org.label-schema.vendor="ownCloud GmbH" \ + org.label-schema.schema-version="1.0" + +EXPOSE 9120 9124 + +ENTRYPOINT ["/usr/bin/ocis-accounts"] +CMD ["server"] + +COPY bin/ocis-accounts /usr/bin/ocis-accounts diff --git a/docker/Dockerfile.linux.arm64 b/docker/Dockerfile.linux.arm64 new file mode 100644 index 0000000000..acd048457b --- /dev/null +++ b/docker/Dockerfile.linux.arm64 @@ -0,0 +1,19 @@ +FROM arm64v8/alpine:edge + +RUN apk update && \ + apk upgrade && \ + apk add ca-certificates mailcap && \ + rm -rf /var/cache/apk/* && \ + echo 'hosts: files dns' >| /etc/nsswitch.conf + +LABEL maintainer="ownCloud GmbH " \ + org.label-schema.name="oCIS Accounts" \ + org.label-schema.vendor="ownCloud GmbH" \ + org.label-schema.schema-version="1.0" + +EXPOSE 9120 9124 + +ENTRYPOINT ["/usr/bin/ocis-accounts"] +CMD ["server"] + +COPY bin/ocis-accounts /usr/bin/ocis-accounts diff --git a/docker/manifest.tmpl b/docker/manifest.tmpl new file mode 100644 index 0000000000..c879450c5a --- /dev/null +++ b/docker/manifest.tmpl @@ -0,0 +1,22 @@ +image: owncloud/ocis-accounts:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} +{{#if build.tags}} +tags: +{{#each build.tags}} + - {{this}} +{{/each}} +{{/if}} +manifests: + - image: owncloud/ocis-accounts:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 + platform: + architecture: amd64 + os: linux + - image: owncloud/ocis-accounts:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 + platform: + architecture: arm64 + variant: v8 + os: linux + - image: owncloud/ocis-accounts:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm + platform: + architecture: arm + variant: v6 + os: linux diff --git a/go.sum b/go.sum index 0d49beb037..01097280a9 100644 --- a/go.sum +++ b/go.sum @@ -367,6 +367,7 @@ github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoI github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= From ce0ca295cd0723c0341676ea865a0bc81b8b4c06 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 10:57:04 +0100 Subject: [PATCH 063/407] reword --- .github/settings.yml | 2 +- changelog/TEMPLATE | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/settings.yml b/.github/settings.yml index bd4fae6175..f9cb68b232 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -2,7 +2,7 @@ repository: name: ocis-accounts description: ':atom_symbol: :busts_in_silhouette: Serve Accounts for oCIS' - homepage: https://owncloud.github.io/ocis-graph/ + homepage: https://owncloud.github.io/ocis-accounts/ topics: reva, ocis private: false diff --git a/changelog/TEMPLATE b/changelog/TEMPLATE index a284668662..61f6c06dd0 100644 --- a/changelog/TEMPLATE +++ b/changelog/TEMPLATE @@ -7,5 +7,5 @@ The text in the paragraphs is written in past tense. The last section is a list of issue URLs, PR URLs and other URLs. The first issue ID (or the first PR ID, in case there aren't any issue links) is used as the primary ID. -https://github.com/owncloud/ocis-graph/issues/1234 -https://github.com/owncloud/ocis-graph/pull/55555 +https://github.com/owncloud/ocis-accounts/issues/1234 +https://github.com/owncloud/ocis-accounts/pull/55555 From 2dfdab8a91f753c6ad9d324b8d90a0b9c2a09004 Mon Sep 17 00:00:00 2001 From: Alex Unger Date: Fri, 7 Feb 2020 10:04:35 +0000 Subject: [PATCH 064/407] Automated changelog update [skip ci] --- CHANGELOG.md | 0 go.sum | 1 + 2 files changed, 1 insertion(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/go.sum b/go.sum index 01097280a9..9a8ba6c507 100644 --- a/go.sum +++ b/go.sum @@ -630,6 +630,7 @@ github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/restic/calens v0.1.0 h1:RHGokdZ72dICyIz1EjEsfZwUhvNZz/zy2SawxJktdWA= github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= From b43cc2d53dff5b3d2dec7ee326673e5d25f2a51b Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Fri, 7 Feb 2020 11:24:49 +0100 Subject: [PATCH 065/407] Update the Changelog and Release process for aligment --- .drone.star | 16 ++++++++++++--- changelog/CHANGELOG.tmpl | 30 +++++++++++++++++++++++++---- changelog/unreleased/inital-release | 5 +++++ go.mod | 1 + go.sum | 14 +++++++++++++- 5 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 changelog/unreleased/inital-release diff --git a/.drone.star b/.drone.star index c1bba64194..b90ce6c596 100644 --- a/.drone.star +++ b/.drone.star @@ -368,9 +368,10 @@ def binary(ctx, name): 'files': [ 'dist/release/*', ], - 'title': ctx.build.ref.replace("refs/tags/", ""), + 'title': ctx.build.ref.replace("refs/tags/v", ""), 'note': 'dist/CHANGELOG.md', 'overwrite': True, + 'prerelease': len(ctx.build.ref.split("-")) > 1, }, 'when': { 'ref': [ @@ -441,6 +442,7 @@ def manifest(ctx): } def changelog(ctx): + repo_slug = ctx.build.source_repo if ctx.build.source_repo else ctx.repo.slug return { 'kind': 'pipeline', 'type': 'docker', @@ -461,7 +463,7 @@ def changelog(ctx): 'actions': [ 'clone', ], - 'remote': 'https://github.com/%s' % (ctx.repo.slug), + 'remote': 'https://github.com/%s' % (repo_slug), 'branch': ctx.build.branch if ctx.build.event == 'pull_request' else 'master', 'path': '/drone/src', 'netrc_machine': 'github.com', @@ -481,6 +483,14 @@ def changelog(ctx): 'make changelog', ], }, + { + 'name': 'diff', + 'image': 'owncloud/alpine:latest', + 'pull': 'always', + 'commands': [ + 'git diff', + ], + }, { 'name': 'output', 'image': 'webhippie/golang:1.13', @@ -525,7 +535,7 @@ def changelog(ctx): 'trigger': { 'ref': [ 'refs/heads/master', - 'refs/tags/**', + 'refs/pull/**', ], }, } diff --git a/changelog/CHANGELOG.tmpl b/changelog/CHANGELOG.tmpl index 3fee894812..ae0ba55efc 100644 --- a/changelog/CHANGELOG.tmpl +++ b/changelog/CHANGELOG.tmpl @@ -1,8 +1,30 @@ -{{- range $changes := . }}{{ with $changes -}} -# Changelog for {{ .Version }} +{{ $allVersions := . }} +{{- range $index, $changes := . }}{{ with $changes -}} +# Changelog for [{{ .Version }}] ({{ .Date }}) The following sections list the changes for {{ .Version }}. +{{ if gt (len $allVersions) 1 -}} +{{/* creating version compare links */ -}} +{{ $next := add1 $index -}} +{{ if ne (len $allVersions) $next -}} +{{ $previousVersion := (index $allVersions $next).Version -}} +{{ if eq .Version "unreleased" -}} +[{{ .Version }}]: https://github.com/owncloud/ocis-accounts/compare/v{{ $previousVersion }}...master + +{{ else -}} +[{{ .Version }}]: https://github.com/owncloud/ocis-accounts/compare/v{{ $previousVersion }}...v{{ .Version }} + +{{ end -}} +{{ end -}} + +{{- /* last version managed by calens, end of the loop */ -}} +{{ if eq .Version "0.1.0" -}} +[{{ .Version }}]: https://github.com/owncloud/ocis-accounts/compare/500e303cb544ed93d84153f01219d77eeee44929...v{{ .Version }} + +{{ end -}} +{{- end -}} + ## Summary {{ range $entry := .Entries }}{{ with $entry }} * {{ .TypeShort }} #{{ .PrimaryID }}: {{ .Title }} @@ -12,7 +34,7 @@ The following sections list the changes for {{ .Version }}. {{ range $entry := .Entries }}{{ with $entry }} * {{ .Type }} #{{ .PrimaryID }}: {{ .Title }} {{ range $par := .Paragraphs }} - {{ wrap $par 80 3 }} + {{ wrapIndent $par 80 3 }} {{ end -}} {{ range $url := .IssueURLs }} {{ $url -}} @@ -23,6 +45,6 @@ The following sections list the changes for {{ .Version }}. {{ range $url := .OtherURLs }} {{ $url -}} {{ end }} -{{ end }}{{ end }} {{ end }}{{ end -}} +{{ end }}{{ end -}} diff --git a/changelog/unreleased/inital-release b/changelog/unreleased/inital-release new file mode 100644 index 0000000000..6515244f28 --- /dev/null +++ b/changelog/unreleased/inital-release @@ -0,0 +1,5 @@ +Change: Initial release of basic version + +Just prepared an initial basic version. + +https://github.com/owncloud/ocis-accounts/issues/1 \ No newline at end of file diff --git a/go.mod b/go.mod index 8a2c149c20..97f7fe06ba 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec github.com/owncloud/ocis-ocs v0.0.0-20191224113758-20455a2e9013 github.com/owncloud/ocis-pkg v1.3.0 + github.com/restic/calens v0.2.0 // indirect github.com/spf13/viper v1.6.1 honnef.co/go/tools v0.0.1-2019.2.3 ) diff --git a/go.sum b/go.sum index 9a8ba6c507..7c04174fc3 100644 --- a/go.sum +++ b/go.sum @@ -52,6 +52,12 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= +github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= +github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= +github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig/v3 v3.0.1 h1:RuaOafp+8qOLUPX1lInLfUrLc1MEVbnz7a40RLoixKY= +github.com/Masterminds/sprig/v3 v3.0.1/go.mod h1:Cp7HwZjmqKrC+Y7XqSJOU2yRvAJRGLiohfgz5ZJj8+4= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= @@ -371,10 +377,13 @@ github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2Qp github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= +github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= +github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= @@ -482,6 +491,7 @@ github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -497,6 +507,7 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= @@ -630,8 +641,9 @@ github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/restic/calens v0.1.0 h1:RHGokdZ72dICyIz1EjEsfZwUhvNZz/zy2SawxJktdWA= github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= +github.com/restic/calens v0.2.0 h1:LVNAtmFc+Pb4ODX66qdX1T3Di1P0OTLyUsVyvM/xD7E= +github.com/restic/calens v0.2.0/go.mod h1:UXwyAKS4wsgUZGEc7NrzzygJbLsQZIo3wl+62Q1wvmU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= From b17b659c80c1fa1ea9e1cf99360b43d8db73a3e6 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 14:08:11 +0100 Subject: [PATCH 066/407] reserve port range --- docker/Dockerfile.linux.amd64 | 2 +- docker/Dockerfile.linux.arm | 2 +- docker/Dockerfile.linux.arm64 | 2 +- pkg/command/server.go | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docker/Dockerfile.linux.amd64 b/docker/Dockerfile.linux.amd64 index e08533a00e..b183affe93 100644 --- a/docker/Dockerfile.linux.amd64 +++ b/docker/Dockerfile.linux.amd64 @@ -11,7 +11,7 @@ LABEL maintainer="ownCloud GmbH " \ org.label-schema.vendor="ownCloud GmbH" \ org.label-schema.schema-version="1.0" -EXPOSE 9120 9124 +EXPOSE 9180 ENTRYPOINT ["/usr/bin/ocis-accounts"] CMD ["server"] diff --git a/docker/Dockerfile.linux.arm b/docker/Dockerfile.linux.arm index b1931d04d4..3235da1d63 100644 --- a/docker/Dockerfile.linux.arm +++ b/docker/Dockerfile.linux.arm @@ -11,7 +11,7 @@ LABEL maintainer="ownCloud GmbH " \ org.label-schema.vendor="ownCloud GmbH" \ org.label-schema.schema-version="1.0" -EXPOSE 9120 9124 +EXPOSE 9180 ENTRYPOINT ["/usr/bin/ocis-accounts"] CMD ["server"] diff --git a/docker/Dockerfile.linux.arm64 b/docker/Dockerfile.linux.arm64 index acd048457b..fb24cd5bee 100644 --- a/docker/Dockerfile.linux.arm64 +++ b/docker/Dockerfile.linux.arm64 @@ -11,7 +11,7 @@ LABEL maintainer="ownCloud GmbH " \ org.label-schema.vendor="ownCloud GmbH" \ org.label-schema.schema-version="1.0" -EXPOSE 9120 9124 +EXPOSE 9180 ENTRYPOINT ["/usr/bin/ocis-accounts"] CMD ["server"] diff --git a/pkg/command/server.go b/pkg/command/server.go index 600d90702a..a3d09e71dd 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -52,8 +52,8 @@ func Server(cfg *config.Config) *cli.Command { &cli.StringFlag{ Name: "address", Aliases: []string{"addr"}, - Value: "localhost:9999", - DefaultText: "localhost:9999", + Value: "localhost:9180", + DefaultText: "localhost:9180", Usage: "service endpoint", EnvVars: []string{"OCIS_ACCOUNTS_ADDRESS"}, Destination: &cfg.Server.Address, From 8281e2747b788c51e28852717834ee262d70362a Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 14:14:26 +0100 Subject: [PATCH 067/407] stick to a single emoji --- .github/settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/settings.yml b/.github/settings.yml index f9cb68b232..f2ef2487f0 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -1,7 +1,7 @@ --- repository: name: ocis-accounts - description: ':atom_symbol: :busts_in_silhouette: Serve Accounts for oCIS' + description: ':busts_in_silhouette: Serve Accounts for oCIS' homepage: https://owncloud.github.io/ocis-accounts/ topics: reva, ocis From bd69d2a165e350044581ae0f1ca46c83051e4666 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Fri, 7 Feb 2020 15:02:46 +0100 Subject: [PATCH 068/407] Update packages --- go.mod | 24 +++++++++++++------ go.sum | 76 ++++++++++++++++++++++------------------------------------ 2 files changed, 46 insertions(+), 54 deletions(-) diff --git a/go.mod b/go.mod index 97f7fe06ba..4221ea6890 100644 --- a/go.mod +++ b/go.mod @@ -3,18 +3,28 @@ module github.com/owncloud/ocis-accounts go 1.13 require ( - github.com/coreos/etcd v3.3.18+incompatible + github.com/coreos/etcd v3.3.18+incompatible // indirect + github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect github.com/golang/protobuf v1.3.2 - github.com/google/uuid v1.1.1 - github.com/micro/cli v0.2.0 + github.com/grpc-ecosystem/grpc-gateway v1.9.4 // indirect + github.com/json-iterator/go v1.1.9 // indirect + github.com/lucas-clemente/quic-go v0.14.1 // indirect github.com/micro/cli/v2 v2.1.1 github.com/micro/go-micro v1.18.0 - github.com/micro/go-micro/v2 v2.0.0 + github.com/miekg/dns v1.1.27 // indirect + github.com/nats-io/nats-server/v2 v2.1.2 // indirect github.com/oklog/run v1.1.0 github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec - github.com/owncloud/ocis-ocs v0.0.0-20191224113758-20455a2e9013 github.com/owncloud/ocis-pkg v1.3.0 + github.com/pkg/errors v0.9.1 // indirect github.com/restic/calens v0.2.0 // indirect - github.com/spf13/viper v1.6.1 - honnef.co/go/tools v0.0.1-2019.2.3 + github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc // indirect + go.uber.org/zap v1.13.0 // indirect + golang.org/x/crypto v0.0.0-20200117160349-530e935923ad // indirect + golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f // indirect + golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa // indirect + golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect + golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 // indirect + google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 // indirect + google.golang.org/grpc v1.26.0 // indirect ) diff --git a/go.sum b/go.sum index 7c04174fc3..9ea4eb2374 100644 --- a/go.sum +++ b/go.sum @@ -5,26 +5,20 @@ cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISt cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= contrib.go.opencensus.io/exporter/jaeger v0.2.0 h1:nhTv/Ry3lGmqbJ/JGvCjWxBl5ozRfqo86Ngz59UAlfk= contrib.go.opencensus.io/exporter/jaeger v0.2.0/go.mod h1:ukdzwIYYHgZ7QYtwVFQUjiT28BJHiMhTERo32s6qVgM= contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= contrib.go.opencensus.io/exporter/ocagent v0.5.0 h1:TKXjQSRS0/cCDrP7KvkgU6SmILtF/yV2TOs/02K/WZQ= contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= -contrib.go.opencensus.io/exporter/ocagent v0.6.0 h1:Z1n6UAyr0QwM284yUuh5Zd8JlvxUGAhFZcgMJkMPrGM= -contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= contrib.go.opencensus.io/exporter/zipkin v0.1.1 h1:PR+1zWqY8ceXs1qDQQIlgXe+sdiwCf0n32bH4+Epk8g= contrib.go.opencensus.io/exporter/zipkin v0.1.1/go.mod h1:GMvdSl3eJ2gapOaLKzTKE3qDgUkJ86k9k3yY2eqwkzc= contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= @@ -75,6 +69,7 @@ github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= +github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75 h1:3ILjVyslFbc4jl1w5TWuvvslFD/nDfR2H8tVaMVLrEY= github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -125,7 +120,6 @@ github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2w github.com/bradfitz/iter v0.0.0-20190303215204-33e6a9893b0c/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= -github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -154,6 +148,7 @@ github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.17+incompatible h1:f/Z3EoDSx1yjaIjLQGo1diYUlQYSBrrAQ5vP8NjwXwo= @@ -163,6 +158,7 @@ github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= @@ -179,6 +175,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= @@ -200,7 +197,6 @@ github.com/eknkc/basex v1.0.0/go.mod h1:k/F/exNEHFdbs3ZHuasoP2E7zeWwZblG84Y7Z59v github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -225,14 +221,12 @@ github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aev github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= -github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -250,7 +244,6 @@ github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dp github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-redsync/redsync v1.3.1/go.mod h1:qxZwM5JOimfq8y98Wk2+c8dKtxJgG5/yIl2ODz2E5Dk= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -260,13 +253,13 @@ github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3a github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -277,6 +270,7 @@ github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18h github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -284,15 +278,16 @@ github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -324,9 +319,12 @@ github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -375,6 +373,7 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= @@ -419,11 +418,14 @@ github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= @@ -433,7 +435,6 @@ github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdA github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA= github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gNfqwTxjbE7s3Vb8s= @@ -441,7 +442,6 @@ github.com/lucas-clemente/quic-go v0.13.1 h1:CxtJTXQIh2aboCPk0M6vf530XOov6DZjVBi github.com/lucas-clemente/quic-go v0.13.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= github.com/lucas-clemente/quic-go v0.14.1 h1:c1aKoBZKOPA+49q96B1wGkibyPP0AxYh45WuAoq+87E= github.com/lucas-clemente/quic-go v0.14.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -465,7 +465,6 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0j github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= -github.com/mholt/certmagic v0.9.1/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= github.com/micro/cli/v2 v2.1.1 h1:uFw0SMIKmGuyHIm8lXns/NOn7V62bM5y7DnlxUM+BEQ= @@ -474,8 +473,6 @@ github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6 github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= -github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXpRw= -github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= github.com/micro/mdns v0.3.0 h1:bYycYe+98AXR3s8Nq5qvt6C573uFTDPIYzJemWON0QE= @@ -542,9 +539,7 @@ github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OS github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= -github.com/nlopes/slack v0.6.1-0.20191106133607-d06c2a2b3249/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= -github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= @@ -559,9 +554,11 @@ github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXW github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -574,15 +571,10 @@ github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mo github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/openzipkin/zipkin-go v0.1.6 h1:yXiysv1CSK7Q5yjGy1710zZGnsbMUIjluWBxtLXHPBo= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec h1:gpILNWve7F8MIo/GBOM6bdszzZFfJEgcXPQBjDOMLAc= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= -github.com/owncloud/ocis-ocs v0.0.0-20191224113758-20455a2e9013 h1:NZnmuAzcXmOM7AXgFVjdWFBQHzM1LpjXxaZOTriTe6U= -github.com/owncloud/ocis-ocs v0.0.0-20191224113758-20455a2e9013/go.mod h1:uxMnXanRGabyExSbqGTkMTWVriv3HrdSivUfh2lxozE= -github.com/owncloud/ocis-pkg v1.1.0/go.mod h1:EfbeXoe60Me2lB/AWjYl8UFNv4isqCPP6lokd5R7nyM= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg v1.3.0 h1:2fkgvfd/spTjschuulYMHRuzxkCGGXae9ocebVYkm74= github.com/owncloud/ocis-pkg v1.3.0/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= @@ -596,7 +588,6 @@ github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtb github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -604,7 +595,6 @@ github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -641,6 +631,7 @@ github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/restic/calens v0.1.0 h1:RHGokdZ72dICyIz1EjEsfZwUhvNZz/zy2SawxJktdWA= github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= github.com/restic/calens v0.2.0 h1:LVNAtmFc+Pb4ODX66qdX1T3Di1P0OTLyUsVyvM/xD7E= github.com/restic/calens v0.2.0/go.mod h1:UXwyAKS4wsgUZGEc7NrzzygJbLsQZIo3wl+62Q1wvmU= @@ -666,6 +657,7 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5I github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -673,6 +665,7 @@ github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -687,11 +680,9 @@ github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzu github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.5.0/go.mod h1:AkYRkVJF8TkSG/xet6PzXX+l39KhhXa2pdqVSxnTcn4= github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -711,6 +702,7 @@ github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLp github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc h1:yUaosFVTJwnltaHbSNC3i82I92quFs+OFPRl8kNMVwo= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= @@ -732,11 +724,13 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -790,25 +784,18 @@ golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200117160349-530e935923ad h1:Jh8cai0fqIK+f6nG0UgPW5wFk8wmiMhM3AyciDBdtQg= golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -833,14 +820,12 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -859,6 +844,7 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -889,7 +875,6 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190710143415-6ec70d6a5542/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -908,6 +893,7 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0 h1:xQwXv67TxFo9nC1GJFyab5eq/5B590r6RlnL/G8Sz7w= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -928,11 +914,8 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -951,7 +934,6 @@ google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEn google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -966,10 +948,8 @@ google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a h1:Ob5/580gVHBJZgXnff1cZDbG+xLtMVE5mDRTe+nIsX4= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 h1:aQktFqmDE2yjveXJlVIfslDFmFnUXSqG0i6KRcJAeMc= @@ -978,7 +958,6 @@ google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmE google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -996,13 +975,14 @@ gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUy gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= -gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= @@ -1027,6 +1007,7 @@ gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzE gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= gopkg.in/telegram-bot-api.v4 v4.6.4/go.mod h1:5DpGO5dbumb40px+dXcwCpcjmeHNYLpk0bp3XRNvWDM= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= @@ -1056,4 +1037,5 @@ k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= From 5e2351b08cf48cea1194751135435e6ae5d9fa58 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Feb 2020 15:25:10 +0100 Subject: [PATCH 069/407] lock tools --- tools.go | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 tools.go diff --git a/tools.go b/tools.go new file mode 100644 index 0000000000..f1911ffdcb --- /dev/null +++ b/tools.go @@ -0,0 +1,7 @@ +// +build tools + +package main + +import ( + _ "github.com/restic/calens" +) From 69d898dea49ad048dd7f4f024f42cbbb7db03a1e Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Fri, 7 Feb 2020 15:42:54 +0100 Subject: [PATCH 070/407] Checkout the source branch in changelog pipeline --- .drone.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.star b/.drone.star index b90ce6c596..4239633b57 100644 --- a/.drone.star +++ b/.drone.star @@ -464,7 +464,7 @@ def changelog(ctx): 'clone', ], 'remote': 'https://github.com/%s' % (repo_slug), - 'branch': ctx.build.branch if ctx.build.event == 'pull_request' else 'master', + 'branch': ctx.build.source if ctx.build.event == 'pull_request' else 'master', 'path': '/drone/src', 'netrc_machine': 'github.com', 'netrc_username': { From 0408745ca3109a184cce84ae8d6c58b5d5ce31bf Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Fri, 7 Feb 2020 15:34:45 +0000 Subject: [PATCH 071/407] Automated changelog update [skip ci] --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e69de29bb2..8c859f1594 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -0,0 +1,16 @@ +# Changelog for [unreleased] (UNRELEASED) + +The following sections list the changes for unreleased. + +## Summary + + * Chg #1: Initial release of basic version + +## Details + + * Change #1: Initial release of basic version + + Just prepared an initial basic version. + + https://github.com/owncloud/ocis-accounts/issues/1 + From 5c99f9a47c81a0fd365f12b2bfeb149f1369ede6 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Sat, 8 Feb 2020 22:02:49 +0100 Subject: [PATCH 072/407] updape changelog template, new docs structure --- .drone.star | 92 +++++-- changelog/CHANGELOG.tmpl | 4 +- docs/{content => }/about.md | 0 docs/archetypes/default.md | 6 - docs/{content => }/building.md | 0 docs/config.toml | 18 -- docs/{content => }/getting-started.md | 0 docs/layouts/_default/list.html | 0 docs/layouts/_default/single.html | 0 docs/layouts/index.html | 57 ----- docs/layouts/partials/style.html | 2 - docs/static/styles.css | 338 -------------------------- docs/static/syntax.css | 59 ----- 13 files changed, 74 insertions(+), 502 deletions(-) rename docs/{content => }/about.md (100%) delete mode 100644 docs/archetypes/default.md rename docs/{content => }/building.md (100%) delete mode 100644 docs/config.toml rename docs/{content => }/getting-started.md (100%) delete mode 100644 docs/layouts/_default/list.html delete mode 100644 docs/layouts/_default/single.html delete mode 100644 docs/layouts/index.html delete mode 100644 docs/layouts/partials/style.html delete mode 100644 docs/static/styles.css delete mode 100644 docs/static/syntax.css diff --git a/.drone.star b/.drone.star index 4239633b57..a56c99e3cc 100644 --- a/.drone.star +++ b/.drone.star @@ -484,13 +484,13 @@ def changelog(ctx): ], }, { - 'name': 'diff', - 'image': 'owncloud/alpine:latest', - 'pull': 'always', - 'commands': [ - 'git diff', - ], - }, + 'name': 'diff', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'git diff', + ], + }, { 'name': 'output', 'image': 'webhippie/golang:1.13', @@ -622,26 +622,78 @@ def website(ctx): }, 'steps': [ { - 'name': 'generate', - 'image': 'webhippie/hugo:latest', + 'name': 'clone-downstream', + 'image': 'plugins/git-action:1', + 'pull': 'always', + 'settings': { + 'actions': [ + 'clone', + ], + 'remote': 'https://github.com/owncloud/owncloud.github.io', + 'branch': 'source', + 'path': '/drone/src/downstream/', + 'netrc_machine': 'github.com', + 'netrc_username': { + 'from_secret': 'github_username', + }, + 'netrc_password': { + 'from_secret': 'github_token', + }, + }, + 'when': { + 'ref': { + 'exclude': [ + 'refs/heads/master', + ], + }, + }, + }, + { + 'name': 'copy-current-docs', + 'image': 'webhippie/golang:1.13', 'pull': 'always', 'commands': [ - 'make docs', + 'cd downstream', + 'mkdir -p content/extensions/ocis-accounts', + 'rsync -aX ../docs/* content/extensions/ocis-accounts', ], }, { - 'name': 'publish', - 'image': 'plugins/gh-pages:1', - 'pull': 'always', + 'name': 'assets', + 'image': 'byrnedo/alpine-curl', + 'commands': [ + 'cd downstream', + 'mkdir -p themes/hugo-geekdoc/', + 'curl -L https://github.com/xoxys/hugo-geekdoc/releases/download/v0.1.7/hugo-geekdoc.tar.gz | tar -xz -C themes/hugo-geekdoc/ --strip-components=1' + ], + }, + { + 'name': 'build-docs', + 'image': 'klakegg/hugo:0.59.1-ext-alpine', + 'commands': [ + 'cd downstream', + 'hugo-official', + ], + }, + { + 'name': 'list-docs', + 'image': 'iankoulski/tree', + 'commands': [ + 'cd downstream', + 'tree public', + ], + }, + { + 'name': 'downstream', + 'image': 'plugins/downstream', 'settings': { - 'username': { - 'from_secret': 'github_username', + 'server': 'https://cloud.drone.io/', + 'token': { + 'from_secret': 'drone_token', }, - 'password': { - 'from_secret': 'github_token', - }, - 'pages_directory': 'docs/public/', - 'temporary_base': 'tmp/', + 'repositories': [ + 'owncloud/owncloud.github.io@source', + ], }, 'when': { 'ref': { diff --git a/changelog/CHANGELOG.tmpl b/changelog/CHANGELOG.tmpl index ae0ba55efc..e37d97181b 100644 --- a/changelog/CHANGELOG.tmpl +++ b/changelog/CHANGELOG.tmpl @@ -27,12 +27,12 @@ The following sections list the changes for {{ .Version }}. ## Summary {{ range $entry := .Entries }}{{ with $entry }} - * {{ .TypeShort }} #{{ .PrimaryID }}: {{ .Title }} +* {{ .Type }} - {{ .Title }}: [#{{ .PrimaryID }}]({{ .PrimaryURL }}) {{- end }}{{ end }} ## Details {{ range $entry := .Entries }}{{ with $entry }} - * {{ .Type }} #{{ .PrimaryID }}: {{ .Title }} +* {{ .Type }} - {{ .Title }}: [#{{ .PrimaryID }}]({{ .PrimaryURL }}) {{ range $par := .Paragraphs }} {{ wrapIndent $par 80 3 }} {{ end -}} diff --git a/docs/content/about.md b/docs/about.md similarity index 100% rename from docs/content/about.md rename to docs/about.md diff --git a/docs/archetypes/default.md b/docs/archetypes/default.md deleted file mode 100644 index 4e777bee13..0000000000 --- a/docs/archetypes/default.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "{{ replace .TranslationBaseName "-" " " | title }}" -date: {{ .Date }} -anchor: "{{ replace .TranslationBaseName "-" " " | title | urlize }}" -weight: ---- diff --git a/docs/content/building.md b/docs/building.md similarity index 100% rename from docs/content/building.md rename to docs/building.md diff --git a/docs/config.toml b/docs/config.toml deleted file mode 100644 index 82d4905f15..0000000000 --- a/docs/config.toml +++ /dev/null @@ -1,18 +0,0 @@ -baseURL = "https://owncloud.github.io/ocis-accounts/" -languageCode = "en-us" -title = "ownCloud Infinite Scale: Accounts" -pygmentsUseClasses = true - -disableKinds = ["taxonomy", "taxonomyTerm", "RSS", "sitemap"] - -[blackfriday] - angledQuotes = true - fractions = false - plainIDAnchors = true - smartlists = true - extensions = ["hardLineBreak"] - -[params] - author = "ownCloud GmbH" - description = "Serve Accounbts API for oCIS" - keywords = "reva, ocis, accounts" diff --git a/docs/content/getting-started.md b/docs/getting-started.md similarity index 100% rename from docs/content/getting-started.md rename to docs/getting-started.md diff --git a/docs/layouts/_default/list.html b/docs/layouts/_default/list.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/layouts/_default/single.html b/docs/layouts/_default/single.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/layouts/index.html b/docs/layouts/index.html deleted file mode 100644 index 27db113acd..0000000000 --- a/docs/layouts/index.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - {{ .Site.Title }} - - - - - - {{ partial "style.html" . }} - - - - - - {{ range .Data.Pages.ByWeight }} -
-

- - {{ .Title }} - - - - - Back to Top - - -

- - {{ .Content | markdownify }} -
- {{ end }} - - diff --git a/docs/layouts/partials/style.html b/docs/layouts/partials/style.html deleted file mode 100644 index 1386c59b0d..0000000000 --- a/docs/layouts/partials/style.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/docs/static/styles.css b/docs/static/styles.css deleted file mode 100644 index 61acc8ddb5..0000000000 --- a/docs/static/styles.css +++ /dev/null @@ -1,338 +0,0 @@ -body, -html { - cursor: default; -} - -body, -div, -dl, -dt, -dd, -ul, -ol, -li, -h1, -h2, -h3, -h4, -h5, -h6, -pre, -form, -fieldset, -input, -textarea, -p, -blockquote, -th, -td { - margin: 0; - padding: 0; -} - -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -:before, -:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -img, -object, -embed { - max-width: 100%; - height: auto; -} - -object, -embed { - height: 100%; -} - -img { - margin: 1.25% 0; - -ms-interpolation-mode: bicubic; -} - -html { - background-color: #F0F1F3; - padding: 2%; -} - -body { - font-size: 16px; - line-height: 1.6; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - color: #242424; - max-width: 800px; - margin: 5% auto; -} - -body::after { - clear: both; - content: ""; - display: table; -} - -header { - margin-bottom: 8%; -} - -footer { - text-align: center; -} - -h1, -h2, -h3, -h4, -h5, -h2 a { - color: #263A48; - font-weight: 500; - text-decoration: none; -} - -h1, -h2 { - font-size: 36px; - padding-bottom: 0.3em; - margin-bottom: 0.4em; - border-bottom: 1px solid #eee -} - -h2 { - font-size: 22px; - padding-bottom: 0.6em; - margin-bottom: 0.6em; - margin-top: 2.5em; -} - -h3 { - font-size: 18px; - margin-bottom: 0.3em; -} - -h2 small a { - color: #98999C; - font-size: 15px; - font-weight: normal; - float: right; - position: absolute; - top: 15px; - right: 20px; -} - -section { - background: #fff; - margin-bottom: 1%; - position: relative; - padding: 6% 8%; -} - -blockquote { - border-left: 3px solid #d54e21; - font-size: 16px; - padding: 0 0 0 20px; - color: #d54e21; -} - -blockquote a { - color: #d54e21; - font-weight: 500; -} - -blockquote code { - color: #d54e21; -} - -.highlight pre { - padding: 10px; -} - -.highlight { - margin-bottom: 4%; -} - -a { - color: #1e8cbe; - text-decoration: underline; -} - -a:hover { - color: #d54e21; -} - -ul { - list-style: none; -} - -ol { - list-style: number; -} - -ol li { - color: #98999C; - margin-bottom: 5px; -} - -ol li:last-child { - margin-bottom: 0; -} - -p, -ul, -ol, -blockquote { - margin-bottom: 4%; -} - -ul ul { - padding-top: 0; - margin-bottom: 0; - margin-left: 4%; -} - -ul ul li:before { - content: '-'; - display: inline-block; - padding-right: 2%; -} - -ul.col-2 { - color: #98999C; - -webkit-column-count: 2; - -moz-column-count: 2; - column-count: 2; - -webkit-column-gap: 20px; - -moz-column-gap: 20px; - column-gap: 20px; -} - -dl dt { - font-weight: bold; -} - -dl dd { - padding-left: 10px; -} - -@media screen and (min-width: 500px) { - ul.col-2 { - -webkit-column-count: 3; - -moz-column-count: 3; - column-count: 3; - -webkit-column-gap: 20px; - -moz-column-gap: 20px; - column-gap: 20px; - } -} - -nav { - background: #F0F1F3; - min-width: 215px; - margin-bottom: 5px; - margin-top: 15px; -} - -nav:first-of-type a { - color: #d54e21; - border-radius: 0; -} - -nav:first-of-type a:hover { - color: #d54e21; -} - -nav:first-of-type a:before { - background-color: #d54e21; -} - -nav.affix { - position: fixed; - top: 20px; -} - -nav.affix-bottom { - position: absolute; -} - -nav a { - border-radius: 3px; - font-size: 15px; - display: block; - cursor: pointer; - font-weight: 500; - position: relative; - text-decoration: none; - padding: 10px 12px; - width: 100%; - padding-right: 3px; - border-bottom: 2px solid #fff; -} - -nav a:before { - content: ''; - width: 4px; - display: block; - left: 0; - position: absolute; - height: 100%; - display: none; - background: #1e8cbe; - top: 0; -} - -nav a:hover { - background-color: #E6E8EA; - color: #1e8cbe; - text-decoration: underline; -} - -nav a:hover:before { - display: block; -} - -nav a:last-of-type { - border-bottom: none; -} - -.gist { - margin-top: 5.1%; - margin-bottom: 5%; -} - -@media screen and (max-width: 1050px) { - body { - margin: 0 auto; - } -} - -@media screen and (max-width: 767px) { - header span { - display: none; - } - - h1 { - font-size: 26px; - } - - h2 { - font-size: 20px; - } -} - -@media screen and (max-width: 514px) { - p, - ul, - ol, - blockquote { - margin-bottom: 8%; - } -} diff --git a/docs/static/syntax.css b/docs/static/syntax.css deleted file mode 100644 index 681758d068..0000000000 --- a/docs/static/syntax.css +++ /dev/null @@ -1,59 +0,0 @@ -/* Background */ .chroma { color: #f8f8f2; background-color: #272822 } -/* Error */ .chroma .err { color: #960050; background-color: #1e0010 } -/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } -/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } -/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc } -/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } -/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } -/* Keyword */ .chroma .k { color: #66d9ef } -/* KeywordConstant */ .chroma .kc { color: #66d9ef } -/* KeywordDeclaration */ .chroma .kd { color: #66d9ef } -/* KeywordNamespace */ .chroma .kn { color: #f92672 } -/* KeywordPseudo */ .chroma .kp { color: #66d9ef } -/* KeywordReserved */ .chroma .kr { color: #66d9ef } -/* KeywordType */ .chroma .kt { color: #66d9ef } -/* NameAttribute */ .chroma .na { color: #a6e22e } -/* NameClass */ .chroma .nc { color: #a6e22e } -/* NameConstant */ .chroma .no { color: #66d9ef } -/* NameDecorator */ .chroma .nd { color: #a6e22e } -/* NameException */ .chroma .ne { color: #a6e22e } -/* NameFunction */ .chroma .nf { color: #a6e22e } -/* NameOther */ .chroma .nx { color: #a6e22e } -/* NameTag */ .chroma .nt { color: #f92672 } -/* Literal */ .chroma .l { color: #ae81ff } -/* LiteralDate */ .chroma .ld { color: #e6db74 } -/* LiteralString */ .chroma .s { color: #e6db74 } -/* LiteralStringAffix */ .chroma .sa { color: #e6db74 } -/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 } -/* LiteralStringChar */ .chroma .sc { color: #e6db74 } -/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 } -/* LiteralStringDoc */ .chroma .sd { color: #e6db74 } -/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 } -/* LiteralStringEscape */ .chroma .se { color: #ae81ff } -/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 } -/* LiteralStringInterpol */ .chroma .si { color: #e6db74 } -/* LiteralStringOther */ .chroma .sx { color: #e6db74 } -/* LiteralStringRegex */ .chroma .sr { color: #e6db74 } -/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 } -/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 } -/* LiteralNumber */ .chroma .m { color: #ae81ff } -/* LiteralNumberBin */ .chroma .mb { color: #ae81ff } -/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff } -/* LiteralNumberHex */ .chroma .mh { color: #ae81ff } -/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff } -/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff } -/* LiteralNumberOct */ .chroma .mo { color: #ae81ff } -/* Operator */ .chroma .o { color: #f92672 } -/* OperatorWord */ .chroma .ow { color: #f92672 } -/* Comment */ .chroma .c { color: #75715e } -/* CommentHashbang */ .chroma .ch { color: #75715e } -/* CommentMultiline */ .chroma .cm { color: #75715e } -/* CommentSingle */ .chroma .c1 { color: #75715e } -/* CommentSpecial */ .chroma .cs { color: #75715e } -/* CommentPreproc */ .chroma .cp { color: #75715e } -/* CommentPreprocFile */ .chroma .cpf { color: #75715e } -/* GenericDeleted */ .chroma .gd { color: #f92672 } -/* GenericEmph */ .chroma .ge { font-style: italic } -/* GenericInserted */ .chroma .gi { color: #a6e22e } -/* GenericStrong */ .chroma .gs { font-weight: bold } -/* GenericSubheading */ .chroma .gu { color: #75715e } From 274dfae24b7df57cd78291c090963d6a7e09b57e Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Tue, 11 Feb 2020 15:26:29 +0100 Subject: [PATCH 073/407] use makefile to testbuild docs --- .drone.star | 55 ++++++++--------------------------------------------- .gitignore | 3 ++- Makefile | 21 +++++++++++++++++--- 3 files changed, 28 insertions(+), 51 deletions(-) diff --git a/.drone.star b/.drone.star index a56c99e3cc..5412246748 100644 --- a/.drone.star +++ b/.drone.star @@ -622,65 +622,26 @@ def website(ctx): }, 'steps': [ { - 'name': 'clone-downstream', - 'image': 'plugins/git-action:1', - 'pull': 'always', - 'settings': { - 'actions': [ - 'clone', - ], - 'remote': 'https://github.com/owncloud/owncloud.github.io', - 'branch': 'source', - 'path': '/drone/src/downstream/', - 'netrc_machine': 'github.com', - 'netrc_username': { - 'from_secret': 'github_username', - }, - 'netrc_password': { - 'from_secret': 'github_token', - }, - }, - 'when': { - 'ref': { - 'exclude': [ - 'refs/heads/master', - ], - }, - }, - }, - { - 'name': 'copy-current-docs', - 'image': 'webhippie/golang:1.13', - 'pull': 'always', + 'name': 'prepare', + 'image': 'alpine', 'commands': [ - 'cd downstream', - 'mkdir -p content/extensions/ocis-accounts', - 'rsync -aX ../docs/* content/extensions/ocis-accounts', + 'apk add make', + 'make docs-copy' ], }, { - 'name': 'assets', - 'image': 'byrnedo/alpine-curl', - 'commands': [ - 'cd downstream', - 'mkdir -p themes/hugo-geekdoc/', - 'curl -L https://github.com/xoxys/hugo-geekdoc/releases/download/v0.1.7/hugo-geekdoc.tar.gz | tar -xz -C themes/hugo-geekdoc/ --strip-components=1' - ], - }, - { - 'name': 'build-docs', + 'name': 'test', 'image': 'klakegg/hugo:0.59.1-ext-alpine', 'commands': [ - 'cd downstream', + 'cd hugo', 'hugo-official', ], }, { - 'name': 'list-docs', + 'name': 'list', 'image': 'iankoulski/tree', 'commands': [ - 'cd downstream', - 'tree public', + 'tree hugo/public', ], }, { diff --git a/.gitignore b/.gitignore index 8eaa5285f7..299a09c29e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ coverage.out /bin -/dist \ No newline at end of file +/dist +/hugo diff --git a/Makefile b/Makefile index 2c01995bba..0dc6edfd12 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ NAME := ocis-accounts IMPORT := github.com/owncloud/$(NAME) BIN := bin DIST := dist +HUGO := hugo ifeq ($(OS), Windows_NT) EXECUTABLE := $(NAME).exe @@ -57,7 +58,7 @@ sync: .PHONY: clean clean: go clean -i ./... - rm -rf $(BIN) $(DIST) + rm -rf $(BIN) $(DIST) $(HUGO) .PHONY: fmt fmt: @@ -130,9 +131,23 @@ release-check: .PHONY: release-finish release-finish: release-copy release-check +.PHONY: docs-copy +docs-copy: + mkdir -p $(HUGO); \ + cd $(HUGO); \ + git init; \ + git remote rm origin; \ + git remote add origin https://github.com/owncloud/owncloud.github.io; \ + git fetch; \ + git checkout origin/source -f; \ + rsync -aX ../docs/* content/extensions/ocis-accounts + +.PHONY: docs-build +docs-build: + cd $(HUGO); hugo + .PHONY: docs -docs: - cd docs; hugo +docs: docs-copy docs-build .PHONY: watch watch: From 27803c1484ae680e50c4e4b40f4b3fe9a400992b Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Tue, 11 Feb 2020 15:37:37 +0100 Subject: [PATCH 074/407] switch alpine base image --- .drone.star | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.star b/.drone.star index 5412246748..3c34651618 100644 --- a/.drone.star +++ b/.drone.star @@ -623,9 +623,9 @@ def website(ctx): 'steps': [ { 'name': 'prepare', - 'image': 'alpine', + 'image': 'webhippie/alpine', 'commands': [ - 'apk add make', + 'apk add make git', 'make docs-copy' ], }, From 9c19a19e7af2f1878c23d4669e936c5139a32b33 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Tue, 11 Feb 2020 15:50:05 +0100 Subject: [PATCH 075/407] switch to owncloud alpine image --- .drone.star | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.star b/.drone.star index 3c34651618..586772722b 100644 --- a/.drone.star +++ b/.drone.star @@ -623,9 +623,9 @@ def website(ctx): 'steps': [ { 'name': 'prepare', - 'image': 'webhippie/alpine', + 'image': 'owncloud/alpine:latest', 'commands': [ - 'apk add make git', + 'apk add make', 'make docs-copy' ], }, From c2f63ddea70da5b87c905d8e00f7dd5fc781e667 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Tue, 11 Feb 2020 16:32:37 +0100 Subject: [PATCH 076/407] change used docker images --- .drone.star | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.drone.star b/.drone.star index 586772722b..f5efa10ef2 100644 --- a/.drone.star +++ b/.drone.star @@ -623,7 +623,7 @@ def website(ctx): 'steps': [ { 'name': 'prepare', - 'image': 'owncloud/alpine:latest', + 'image': 'owncloudci/alpine:latest', 'commands': [ 'apk add make', 'make docs-copy' @@ -631,15 +631,15 @@ def website(ctx): }, { 'name': 'test', - 'image': 'klakegg/hugo:0.59.1-ext-alpine', + 'image': 'webhippie/hugo:latest', 'commands': [ 'cd hugo', - 'hugo-official', + 'hugo', ], }, { 'name': 'list', - 'image': 'iankoulski/tree', + 'image': 'owncloudci/alpine:latest', 'commands': [ 'tree hugo/public', ], From 1fa69f34699a10c5e4cfb3253dd11e44f8f9cad4 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Tue, 11 Feb 2020 23:33:45 +0100 Subject: [PATCH 077/407] Code improvements --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0dc6edfd12..b3b444cd05 100644 --- a/Makefile +++ b/Makefile @@ -140,7 +140,7 @@ docs-copy: git remote add origin https://github.com/owncloud/owncloud.github.io; \ git fetch; \ git checkout origin/source -f; \ - rsync -aX ../docs/* content/extensions/ocis-accounts + rsync -aX ../docs/ content/extensions/ocis-accounts .PHONY: docs-build docs-build: From ec43fd0536a5f06c85cbd39a06bfc9fbb185562e Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Wed, 12 Feb 2020 09:44:35 +0100 Subject: [PATCH 078/407] remove package install command --- .drone.star | 1 - 1 file changed, 1 deletion(-) diff --git a/.drone.star b/.drone.star index f5efa10ef2..deb7ba112f 100644 --- a/.drone.star +++ b/.drone.star @@ -625,7 +625,6 @@ def website(ctx): 'name': 'prepare', 'image': 'owncloudci/alpine:latest', 'commands': [ - 'apk add make', 'make docs-copy' ], }, From 1c2c1616b76511d18aad5b0983f0fb7cc7ff39a4 Mon Sep 17 00:00:00 2001 From: Alex Unger Date: Wed, 12 Feb 2020 09:20:32 +0000 Subject: [PATCH 079/407] Automated changelog update [skip ci] --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c859f1594..2355d0262e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,11 +4,11 @@ The following sections list the changes for unreleased. ## Summary - * Chg #1: Initial release of basic version +* Change - Initial release of basic version: [#1](https://github.com/owncloud/ocis-accounts/issues/1) ## Details - * Change #1: Initial release of basic version +* Change - Initial release of basic version: [#1](https://github.com/owncloud/ocis-accounts/issues/1) Just prepared an initial basic version. From ee15a5a047ca9ace12a816e67134e6b79f5cd9f9 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 10:39:10 +0100 Subject: [PATCH 080/407] added standard claims to proto --- pkg/proto/v0/accounts.proto | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index b4185cef57..ee310f5dbb 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -21,8 +21,31 @@ message Payload { } message Account { - string name = 1; - string dateOfBirth = 2; + StandardClaims standard_claims = 1; +} + +// OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims +message StandardClaims { + string sub = 1; + string name = 2; + string given_name = 3; + string family_name = 4; + string middle_name = 5; + string nickname = 6; + string preferred_username = 7; + string profile = 8; + string picture = 9; + string website = 10; + string email = 11; + boolean email_verified = 12; + string gender = 13; + string birthdate = 14; + string zoneinfo = 15; + string locale = 16; + string phone_number = 17; + boolean phone_number_verified = 18; + int32 updated_at = 19; + // JSON: address -> Message Address {} } message Phoenix { @@ -35,4 +58,4 @@ message Query { message Records { repeated Record records = 1; -} \ No newline at end of file +} From 0817cd92e4f8796701c2bfd8de3482a75e171533 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 10:40:34 +0100 Subject: [PATCH 081/407] wrong bool field --- pkg/proto/v0/accounts.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index ee310f5dbb..bc2dc1e0f8 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -37,13 +37,13 @@ message StandardClaims { string picture = 9; string website = 10; string email = 11; - boolean email_verified = 12; + bool email_verified = 12; string gender = 13; string birthdate = 14; string zoneinfo = 15; string locale = 16; string phone_number = 17; - boolean phone_number_verified = 18; + bool phone_number_verified = 18; int32 updated_at = 19; // JSON: address -> Message Address {} } From 6d534a8f2af4c5d109f42b042b15e4e136a4b242 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 10:41:32 +0100 Subject: [PATCH 082/407] check protoc compilation --- pkg/proto/v0/accounts.pb.go | 261 ++++++++++++++++++++++++++---- pkg/proto/v0/accounts.pb.micro.go | 7 +- 2 files changed, 231 insertions(+), 37 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 36ddc5efe3..35f7b88c13 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -116,11 +116,10 @@ func (m *Payload) GetAccount() *Account { } type Account struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - DateOfBirth string `protobuf:"bytes,2,opt,name=dateOfBirth,proto3" json:"dateOfBirth,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + StandardClaims *StandardClaims `protobuf:"bytes,1,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Account) Reset() { *m = Account{} } @@ -148,20 +147,197 @@ func (m *Account) XXX_DiscardUnknown() { var xxx_messageInfo_Account proto.InternalMessageInfo -func (m *Account) GetName() string { +func (m *Account) GetStandardClaims() *StandardClaims { + if m != nil { + return m.StandardClaims + } + return nil +} + +// OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims +type StandardClaims struct { + Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + GivenName string `protobuf:"bytes,3,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` + FamilyName string `protobuf:"bytes,4,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"` + MiddleName string `protobuf:"bytes,5,opt,name=middle_name,json=middleName,proto3" json:"middle_name,omitempty"` + Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` + PreferredUsername string `protobuf:"bytes,7,opt,name=preferred_username,json=preferredUsername,proto3" json:"preferred_username,omitempty"` + Profile string `protobuf:"bytes,8,opt,name=profile,proto3" json:"profile,omitempty"` + Picture string `protobuf:"bytes,9,opt,name=picture,proto3" json:"picture,omitempty"` + Website string `protobuf:"bytes,10,opt,name=website,proto3" json:"website,omitempty"` + Email string `protobuf:"bytes,11,opt,name=email,proto3" json:"email,omitempty"` + EmailVerified bool `protobuf:"varint,12,opt,name=email_verified,json=emailVerified,proto3" json:"email_verified,omitempty"` + Gender string `protobuf:"bytes,13,opt,name=gender,proto3" json:"gender,omitempty"` + Birthdate string `protobuf:"bytes,14,opt,name=birthdate,proto3" json:"birthdate,omitempty"` + Zoneinfo string `protobuf:"bytes,15,opt,name=zoneinfo,proto3" json:"zoneinfo,omitempty"` + Locale string `protobuf:"bytes,16,opt,name=locale,proto3" json:"locale,omitempty"` + PhoneNumber string `protobuf:"bytes,17,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` + PhoneNumberVerified bool `protobuf:"varint,18,opt,name=phone_number_verified,json=phoneNumberVerified,proto3" json:"phone_number_verified,omitempty"` + UpdatedAt int32 `protobuf:"varint,19,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *StandardClaims) Reset() { *m = StandardClaims{} } +func (m *StandardClaims) String() string { return proto.CompactTextString(m) } +func (*StandardClaims) ProtoMessage() {} +func (*StandardClaims) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{3} +} + +func (m *StandardClaims) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StandardClaims.Unmarshal(m, b) +} +func (m *StandardClaims) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StandardClaims.Marshal(b, m, deterministic) +} +func (m *StandardClaims) XXX_Merge(src proto.Message) { + xxx_messageInfo_StandardClaims.Merge(m, src) +} +func (m *StandardClaims) XXX_Size() int { + return xxx_messageInfo_StandardClaims.Size(m) +} +func (m *StandardClaims) XXX_DiscardUnknown() { + xxx_messageInfo_StandardClaims.DiscardUnknown(m) +} + +var xxx_messageInfo_StandardClaims proto.InternalMessageInfo + +func (m *StandardClaims) GetSub() string { + if m != nil { + return m.Sub + } + return "" +} + +func (m *StandardClaims) GetName() string { if m != nil { return m.Name } return "" } -func (m *Account) GetDateOfBirth() string { +func (m *StandardClaims) GetGivenName() string { if m != nil { - return m.DateOfBirth + return m.GivenName } return "" } +func (m *StandardClaims) GetFamilyName() string { + if m != nil { + return m.FamilyName + } + return "" +} + +func (m *StandardClaims) GetMiddleName() string { + if m != nil { + return m.MiddleName + } + return "" +} + +func (m *StandardClaims) GetNickname() string { + if m != nil { + return m.Nickname + } + return "" +} + +func (m *StandardClaims) GetPreferredUsername() string { + if m != nil { + return m.PreferredUsername + } + return "" +} + +func (m *StandardClaims) GetProfile() string { + if m != nil { + return m.Profile + } + return "" +} + +func (m *StandardClaims) GetPicture() string { + if m != nil { + return m.Picture + } + return "" +} + +func (m *StandardClaims) GetWebsite() string { + if m != nil { + return m.Website + } + return "" +} + +func (m *StandardClaims) GetEmail() string { + if m != nil { + return m.Email + } + return "" +} + +func (m *StandardClaims) GetEmailVerified() bool { + if m != nil { + return m.EmailVerified + } + return false +} + +func (m *StandardClaims) GetGender() string { + if m != nil { + return m.Gender + } + return "" +} + +func (m *StandardClaims) GetBirthdate() string { + if m != nil { + return m.Birthdate + } + return "" +} + +func (m *StandardClaims) GetZoneinfo() string { + if m != nil { + return m.Zoneinfo + } + return "" +} + +func (m *StandardClaims) GetLocale() string { + if m != nil { + return m.Locale + } + return "" +} + +func (m *StandardClaims) GetPhoneNumber() string { + if m != nil { + return m.PhoneNumber + } + return "" +} + +func (m *StandardClaims) GetPhoneNumberVerified() bool { + if m != nil { + return m.PhoneNumberVerified + } + return false +} + +func (m *StandardClaims) GetUpdatedAt() int32 { + if m != nil { + return m.UpdatedAt + } + return 0 +} + type Phoenix struct { Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -173,7 +349,7 @@ func (m *Phoenix) Reset() { *m = Phoenix{} } func (m *Phoenix) String() string { return proto.CompactTextString(m) } func (*Phoenix) ProtoMessage() {} func (*Phoenix) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{3} + return fileDescriptor_e3c84319968a576b, []int{4} } func (m *Phoenix) XXX_Unmarshal(b []byte) error { @@ -212,7 +388,7 @@ func (m *Query) Reset() { *m = Query{} } func (m *Query) String() string { return proto.CompactTextString(m) } func (*Query) ProtoMessage() {} func (*Query) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{4} + return fileDescriptor_e3c84319968a576b, []int{5} } func (m *Query) XXX_Unmarshal(b []byte) error { @@ -251,7 +427,7 @@ func (m *Records) Reset() { *m = Records{} } func (m *Records) String() string { return proto.CompactTextString(m) } func (*Records) ProtoMessage() {} func (*Records) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{5} + return fileDescriptor_e3c84319968a576b, []int{6} } func (m *Records) XXX_Unmarshal(b []byte) error { @@ -283,6 +459,7 @@ func init() { proto.RegisterType((*Record)(nil), "settings.Record") proto.RegisterType((*Payload)(nil), "settings.Payload") proto.RegisterType((*Account)(nil), "settings.Account") + proto.RegisterType((*StandardClaims)(nil), "settings.StandardClaims") proto.RegisterType((*Phoenix)(nil), "settings.Phoenix") proto.RegisterType((*Query)(nil), "settings.Query") proto.RegisterType((*Records)(nil), "settings.Records") @@ -291,26 +468,44 @@ func init() { func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } var fileDescriptor_e3c84319968a576b = []byte{ - // 327 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0x41, 0x4f, 0xc2, 0x40, - 0x10, 0x85, 0x53, 0x0b, 0xac, 0x0c, 0x07, 0x60, 0x62, 0x0c, 0xc2, 0xc1, 0xa6, 0xa7, 0xaa, 0x49, - 0xab, 0x18, 0xcf, 0x46, 0x12, 0xc3, 0xc5, 0x44, 0x5d, 0x6e, 0xde, 0x6a, 0x19, 0x4a, 0x03, 0x74, - 0x9b, 0x76, 0x21, 0xf6, 0xa7, 0xf8, 0x6f, 0x0d, 0xbb, 0x5d, 0x51, 0xeb, 0xa9, 0xd3, 0xf7, 0xbe, - 0x99, 0x7d, 0x99, 0x81, 0x51, 0xb6, 0x8a, 0x83, 0x2c, 0x17, 0x52, 0x04, 0xbb, 0xeb, 0x20, 0x8c, - 0x22, 0xb1, 0x4d, 0x65, 0xe1, 0x2b, 0x05, 0x8f, 0x0b, 0x92, 0x32, 0x49, 0xe3, 0x62, 0x38, 0x8a, - 0x85, 0x88, 0xd7, 0xa4, 0xc9, 0xf7, 0xed, 0x22, 0xa0, 0x4d, 0x26, 0x4b, 0x8d, 0xb9, 0x53, 0x68, - 0x71, 0x8a, 0x44, 0x3e, 0xc7, 0x1e, 0xd8, 0x2b, 0x2a, 0x07, 0x96, 0x63, 0x79, 0x6d, 0xbe, 0x2f, - 0xf1, 0x0a, 0x58, 0x16, 0x96, 0x6b, 0x11, 0xce, 0x07, 0x47, 0x8e, 0xe5, 0x75, 0xc6, 0x7d, 0xdf, - 0x0c, 0xf5, 0x5f, 0xb4, 0xc1, 0x0d, 0xe1, 0x46, 0xc0, 0x2a, 0x4d, 0xf5, 0x2d, 0x05, 0xa5, 0xc9, - 0x87, 0x9a, 0xf6, 0xbb, 0x4f, 0x1b, 0xdc, 0x10, 0x7b, 0xb8, 0x4a, 0x5e, 0x7f, 0xe4, 0x41, 0x1b, - 0xdc, 0x10, 0xee, 0x3d, 0xb0, 0x4a, 0x43, 0x84, 0x46, 0x1a, 0x6e, 0xa8, 0xca, 0xab, 0x6a, 0x74, - 0xa0, 0x33, 0x0f, 0x25, 0x3d, 0x2f, 0x26, 0x49, 0x2e, 0x97, 0x6a, 0x5e, 0x9b, 0xff, 0x94, 0xdc, - 0x73, 0x60, 0x55, 0x02, 0x3c, 0x81, 0xa6, 0x5c, 0xd2, 0xf7, 0x04, 0xfd, 0xe3, 0x9e, 0x41, 0xf3, - 0x75, 0x4b, 0x79, 0x59, 0x5f, 0x87, 0x7b, 0x07, 0x4c, 0xaf, 0xaa, 0xc0, 0x4b, 0x60, 0xb9, 0x2e, - 0x07, 0x96, 0x63, 0x7b, 0x9d, 0x71, 0xef, 0x10, 0x5a, 0x33, 0xdc, 0x00, 0xe3, 0x4f, 0x0b, 0xba, - 0xb3, 0xca, 0x9c, 0x51, 0xbe, 0x4b, 0x22, 0xc2, 0x0b, 0xb0, 0x67, 0x24, 0xb1, 0xd6, 0x35, 0xac, - 0x29, 0xe8, 0x81, 0x3d, 0x25, 0x89, 0xdd, 0x83, 0xa1, 0xf2, 0xfd, 0x43, 0xde, 0x40, 0xe3, 0x29, - 0x29, 0x24, 0x9e, 0xfa, 0xfa, 0xe0, 0xbe, 0x39, 0xb8, 0xff, 0xb8, 0x3f, 0xf8, 0xb0, 0xff, 0xb7, - 0xa3, 0x98, 0xb0, 0xb7, 0xa6, 0x86, 0x5a, 0xea, 0x73, 0xfb, 0x15, 0x00, 0x00, 0xff, 0xff, 0x06, - 0x2e, 0xab, 0xa7, 0x53, 0x02, 0x00, 0x00, + // 611 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x94, 0xed, 0x6e, 0x12, 0x4f, + 0x14, 0xc6, 0xb3, 0x7f, 0x5e, 0x16, 0x0e, 0x2d, 0x94, 0xe9, 0xdf, 0x66, 0xa4, 0x36, 0xc5, 0x4d, + 0x4c, 0x50, 0x23, 0x28, 0xc6, 0x0b, 0xa8, 0xc6, 0xf4, 0x4b, 0xd3, 0xe8, 0x12, 0xfd, 0xe0, 0x17, + 0xb2, 0xec, 0x1e, 0x60, 0xd2, 0x7d, 0xcb, 0xcc, 0x2c, 0x8a, 0x77, 0xe2, 0x45, 0x79, 0x4f, 0x66, + 0xcf, 0xcc, 0x42, 0x2b, 0x7e, 0x62, 0x9e, 0xe7, 0xf9, 0x9d, 0xd9, 0xc3, 0xc9, 0xcc, 0xc0, 0x79, + 0x7e, 0xb7, 0x9a, 0xe4, 0x32, 0xd3, 0xd9, 0x64, 0xf3, 0x7a, 0x12, 0x84, 0x61, 0x56, 0xa4, 0x5a, + 0x8d, 0xc9, 0x61, 0x2d, 0x85, 0x5a, 0x8b, 0x74, 0xa5, 0x06, 0xe7, 0xab, 0x2c, 0x5b, 0xc5, 0x68, + 0xc8, 0x45, 0xb1, 0x9c, 0x60, 0x92, 0xeb, 0xad, 0xc1, 0xbc, 0x6b, 0x68, 0xfa, 0x18, 0x66, 0x32, + 0x62, 0x27, 0x50, 0xbb, 0xc3, 0x2d, 0x77, 0x86, 0xce, 0xa8, 0xed, 0x97, 0x4b, 0xf6, 0x12, 0xdc, + 0x3c, 0xd8, 0xc6, 0x59, 0x10, 0xf1, 0xff, 0x86, 0xce, 0xa8, 0x33, 0xed, 0x8f, 0xab, 0x4d, 0xc7, + 0x9f, 0x4c, 0xe0, 0x57, 0x84, 0x17, 0x82, 0x6b, 0x3d, 0xaa, 0x5b, 0x67, 0x98, 0x8a, 0x1f, 0xb4, + 0xdb, 0xc3, 0x3a, 0x13, 0xf8, 0x15, 0x51, 0xc2, 0xb6, 0xf3, 0xc3, 0x8f, 0x5c, 0x99, 0xc0, 0xaf, + 0x08, 0xef, 0x06, 0x5c, 0xeb, 0xb1, 0x2b, 0xe8, 0x29, 0x1d, 0xa4, 0x51, 0x20, 0xa3, 0x79, 0x18, + 0x07, 0x22, 0x51, 0xf6, 0x63, 0x7c, 0x5f, 0x3f, 0xb3, 0xc0, 0x07, 0xca, 0xfd, 0xae, 0x7a, 0xa0, + 0xbd, 0xdf, 0x75, 0xe8, 0x3e, 0x44, 0xca, 0x21, 0xa8, 0x62, 0x51, 0x0d, 0x41, 0x15, 0x0b, 0xc6, + 0xa0, 0x9e, 0x06, 0x09, 0x52, 0x73, 0x6d, 0x9f, 0xd6, 0xec, 0x02, 0x60, 0x25, 0x36, 0x98, 0xce, + 0x29, 0xa9, 0x51, 0xd2, 0x26, 0xe7, 0xb6, 0x8c, 0x2f, 0xa1, 0xb3, 0x0c, 0x12, 0x11, 0x6f, 0x4d, + 0x5e, 0xa7, 0x1c, 0x8c, 0x55, 0x01, 0x89, 0x88, 0xa2, 0x18, 0x0d, 0xd0, 0x30, 0x80, 0xb1, 0x08, + 0x18, 0x40, 0x2b, 0x15, 0xe1, 0x1d, 0xa5, 0x4d, 0x4a, 0x77, 0x9a, 0xbd, 0x02, 0x96, 0x4b, 0x5c, + 0xa2, 0x94, 0x18, 0xcd, 0x0b, 0x85, 0x92, 0x28, 0x97, 0xa8, 0xfe, 0x2e, 0xf9, 0x62, 0x03, 0xc6, + 0xc1, 0xcd, 0x65, 0xb6, 0x14, 0x31, 0xf2, 0x16, 0x31, 0x95, 0xa4, 0x44, 0x84, 0xba, 0x90, 0xc8, + 0xdb, 0x36, 0x31, 0xb2, 0x4c, 0xbe, 0xe3, 0x42, 0x09, 0x8d, 0x1c, 0x4c, 0x62, 0x25, 0xfb, 0x1f, + 0x1a, 0x98, 0x04, 0x22, 0xe6, 0x1d, 0xf2, 0x8d, 0x60, 0xcf, 0xa0, 0x4b, 0x8b, 0xf9, 0x06, 0xa5, + 0x58, 0x0a, 0x8c, 0xf8, 0xd1, 0xd0, 0x19, 0xb5, 0xfc, 0x63, 0x72, 0xbf, 0x5a, 0x93, 0x9d, 0x41, + 0x73, 0x85, 0x69, 0x84, 0x92, 0x1f, 0x53, 0xb5, 0x55, 0xec, 0x09, 0xb4, 0x17, 0x42, 0xea, 0x75, + 0x14, 0x68, 0xe4, 0x5d, 0x33, 0xcd, 0x9d, 0x51, 0xce, 0xe2, 0x67, 0x96, 0xa2, 0x48, 0x97, 0x19, + 0xef, 0x99, 0x59, 0x54, 0xba, 0xdc, 0x31, 0xce, 0xc2, 0x20, 0x46, 0x7e, 0x62, 0x76, 0x34, 0x8a, + 0x3d, 0x85, 0xa3, 0x7c, 0x9d, 0xa5, 0x38, 0x4f, 0x8b, 0x64, 0x81, 0x92, 0xf7, 0x29, 0xed, 0x90, + 0x77, 0x4b, 0x16, 0x9b, 0xc2, 0xa3, 0xfb, 0xc8, 0xbe, 0x75, 0x46, 0xad, 0x9f, 0xde, 0x63, 0x77, + 0x7f, 0xe0, 0x02, 0xa0, 0xc8, 0xcb, 0xa6, 0xa2, 0x79, 0xa0, 0xf9, 0xe9, 0xd0, 0x19, 0x35, 0xfc, + 0xb6, 0x75, 0xae, 0xb4, 0x77, 0x09, 0xae, 0x3d, 0xde, 0xe5, 0x9c, 0xf4, 0x1a, 0x13, 0xb4, 0x27, + 0xc9, 0x08, 0xef, 0x31, 0x34, 0x3e, 0x17, 0x28, 0xb7, 0x87, 0x77, 0xcd, 0x7b, 0x07, 0xae, 0xb9, + 0x87, 0x8a, 0xbd, 0x00, 0x57, 0x9a, 0x25, 0x77, 0x86, 0xb5, 0x51, 0x67, 0x7a, 0xb2, 0x3f, 0xd1, + 0x86, 0xf1, 0x2b, 0x60, 0xfa, 0xcb, 0x81, 0xde, 0xcc, 0x86, 0x33, 0x94, 0x1b, 0x11, 0x22, 0x7b, + 0x0e, 0xb5, 0x19, 0x6a, 0x76, 0x50, 0x35, 0x38, 0x70, 0xd8, 0x08, 0x6a, 0xd7, 0xa8, 0x59, 0x6f, + 0x1f, 0x50, 0x7f, 0xff, 0x20, 0xdf, 0x40, 0xfd, 0x46, 0x28, 0xcd, 0xce, 0xc6, 0xe6, 0x35, 0x19, + 0x57, 0xaf, 0xc9, 0xf8, 0x63, 0xf9, 0x9a, 0x0c, 0xfa, 0x7f, 0x57, 0xa8, 0xf7, 0xee, 0xb7, 0x86, + 0x81, 0x9a, 0xf4, 0xf3, 0xf6, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x77, 0xd8, 0xdb, 0xb0, + 0x04, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index 56c4b739c9..a44286b0a1 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -5,15 +5,14 @@ package proto import ( fmt "fmt" - math "math" - proto "github.com/golang/protobuf/proto" empty "github.com/golang/protobuf/ptypes/empty" + math "math" +) +import ( context "context" - client "github.com/micro/go-micro/client" - server "github.com/micro/go-micro/server" ) From 632dbe4158f0658464ef84112ebe21d00b0e0b22 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 12:09:30 +0100 Subject: [PATCH 083/407] added address claims --- pkg/proto/v0/accounts.proto | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index bc2dc1e0f8..390c8d0c58 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -45,7 +45,16 @@ message StandardClaims { string phone_number = 17; bool phone_number_verified = 18; int32 updated_at = 19; - // JSON: address -> Message Address {} + Address address = 20; +} + +message Address { + string formatted = 1; + string street_address = 2; + string locality = 3; + string region = 4; + string postal_code = 5; + string country = 6; } message Phoenix { From b2b2dc5c0f35bacc325590b10ffe4cd942302b5e Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 12:09:37 +0100 Subject: [PATCH 084/407] run protoc on address --- pkg/proto/v0/accounts.pb.go | 179 +++++++++++++++++++++++++++--------- 1 file changed, 136 insertions(+), 43 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 35f7b88c13..43cd346817 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -175,6 +175,7 @@ type StandardClaims struct { PhoneNumber string `protobuf:"bytes,17,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` PhoneNumberVerified bool `protobuf:"varint,18,opt,name=phone_number_verified,json=phoneNumberVerified,proto3" json:"phone_number_verified,omitempty"` UpdatedAt int32 `protobuf:"varint,19,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Address *Address `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -338,6 +339,92 @@ func (m *StandardClaims) GetUpdatedAt() int32 { return 0 } +func (m *StandardClaims) GetAddress() *Address { + if m != nil { + return m.Address + } + return nil +} + +type Address struct { + Formatted string `protobuf:"bytes,1,opt,name=formatted,proto3" json:"formatted,omitempty"` + StreetAddress string `protobuf:"bytes,2,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` + Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + PostalCode string `protobuf:"bytes,5,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` + Country string `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Address) Reset() { *m = Address{} } +func (m *Address) String() string { return proto.CompactTextString(m) } +func (*Address) ProtoMessage() {} +func (*Address) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{4} +} + +func (m *Address) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Address.Unmarshal(m, b) +} +func (m *Address) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Address.Marshal(b, m, deterministic) +} +func (m *Address) XXX_Merge(src proto.Message) { + xxx_messageInfo_Address.Merge(m, src) +} +func (m *Address) XXX_Size() int { + return xxx_messageInfo_Address.Size(m) +} +func (m *Address) XXX_DiscardUnknown() { + xxx_messageInfo_Address.DiscardUnknown(m) +} + +var xxx_messageInfo_Address proto.InternalMessageInfo + +func (m *Address) GetFormatted() string { + if m != nil { + return m.Formatted + } + return "" +} + +func (m *Address) GetStreetAddress() string { + if m != nil { + return m.StreetAddress + } + return "" +} + +func (m *Address) GetLocality() string { + if m != nil { + return m.Locality + } + return "" +} + +func (m *Address) GetRegion() string { + if m != nil { + return m.Region + } + return "" +} + +func (m *Address) GetPostalCode() string { + if m != nil { + return m.PostalCode + } + return "" +} + +func (m *Address) GetCountry() string { + if m != nil { + return m.Country + } + return "" +} + type Phoenix struct { Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -349,7 +436,7 @@ func (m *Phoenix) Reset() { *m = Phoenix{} } func (m *Phoenix) String() string { return proto.CompactTextString(m) } func (*Phoenix) ProtoMessage() {} func (*Phoenix) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{4} + return fileDescriptor_e3c84319968a576b, []int{5} } func (m *Phoenix) XXX_Unmarshal(b []byte) error { @@ -388,7 +475,7 @@ func (m *Query) Reset() { *m = Query{} } func (m *Query) String() string { return proto.CompactTextString(m) } func (*Query) ProtoMessage() {} func (*Query) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{5} + return fileDescriptor_e3c84319968a576b, []int{6} } func (m *Query) XXX_Unmarshal(b []byte) error { @@ -427,7 +514,7 @@ func (m *Records) Reset() { *m = Records{} } func (m *Records) String() string { return proto.CompactTextString(m) } func (*Records) ProtoMessage() {} func (*Records) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{6} + return fileDescriptor_e3c84319968a576b, []int{7} } func (m *Records) XXX_Unmarshal(b []byte) error { @@ -460,6 +547,7 @@ func init() { proto.RegisterType((*Payload)(nil), "settings.Payload") proto.RegisterType((*Account)(nil), "settings.Account") proto.RegisterType((*StandardClaims)(nil), "settings.StandardClaims") + proto.RegisterType((*Address)(nil), "settings.Address") proto.RegisterType((*Phoenix)(nil), "settings.Phoenix") proto.RegisterType((*Query)(nil), "settings.Query") proto.RegisterType((*Records)(nil), "settings.Records") @@ -468,44 +556,49 @@ func init() { func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } var fileDescriptor_e3c84319968a576b = []byte{ - // 611 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x94, 0xed, 0x6e, 0x12, 0x4f, - 0x14, 0xc6, 0xb3, 0x7f, 0x5e, 0x16, 0x0e, 0x2d, 0x94, 0xe9, 0xdf, 0x66, 0xa4, 0x36, 0xc5, 0x4d, - 0x4c, 0x50, 0x23, 0x28, 0xc6, 0x0b, 0xa8, 0xc6, 0xf4, 0x4b, 0xd3, 0xe8, 0x12, 0xfd, 0xe0, 0x17, - 0xb2, 0xec, 0x1e, 0x60, 0xd2, 0x7d, 0xcb, 0xcc, 0x2c, 0x8a, 0x77, 0xe2, 0x45, 0x79, 0x4f, 0x66, - 0xcf, 0xcc, 0x42, 0x2b, 0x7e, 0x62, 0x9e, 0xe7, 0xf9, 0x9d, 0xd9, 0xc3, 0xc9, 0xcc, 0xc0, 0x79, - 0x7e, 0xb7, 0x9a, 0xe4, 0x32, 0xd3, 0xd9, 0x64, 0xf3, 0x7a, 0x12, 0x84, 0x61, 0x56, 0xa4, 0x5a, - 0x8d, 0xc9, 0x61, 0x2d, 0x85, 0x5a, 0x8b, 0x74, 0xa5, 0x06, 0xe7, 0xab, 0x2c, 0x5b, 0xc5, 0x68, - 0xc8, 0x45, 0xb1, 0x9c, 0x60, 0x92, 0xeb, 0xad, 0xc1, 0xbc, 0x6b, 0x68, 0xfa, 0x18, 0x66, 0x32, - 0x62, 0x27, 0x50, 0xbb, 0xc3, 0x2d, 0x77, 0x86, 0xce, 0xa8, 0xed, 0x97, 0x4b, 0xf6, 0x12, 0xdc, - 0x3c, 0xd8, 0xc6, 0x59, 0x10, 0xf1, 0xff, 0x86, 0xce, 0xa8, 0x33, 0xed, 0x8f, 0xab, 0x4d, 0xc7, - 0x9f, 0x4c, 0xe0, 0x57, 0x84, 0x17, 0x82, 0x6b, 0x3d, 0xaa, 0x5b, 0x67, 0x98, 0x8a, 0x1f, 0xb4, - 0xdb, 0xc3, 0x3a, 0x13, 0xf8, 0x15, 0x51, 0xc2, 0xb6, 0xf3, 0xc3, 0x8f, 0x5c, 0x99, 0xc0, 0xaf, - 0x08, 0xef, 0x06, 0x5c, 0xeb, 0xb1, 0x2b, 0xe8, 0x29, 0x1d, 0xa4, 0x51, 0x20, 0xa3, 0x79, 0x18, - 0x07, 0x22, 0x51, 0xf6, 0x63, 0x7c, 0x5f, 0x3f, 0xb3, 0xc0, 0x07, 0xca, 0xfd, 0xae, 0x7a, 0xa0, - 0xbd, 0xdf, 0x75, 0xe8, 0x3e, 0x44, 0xca, 0x21, 0xa8, 0x62, 0x51, 0x0d, 0x41, 0x15, 0x0b, 0xc6, - 0xa0, 0x9e, 0x06, 0x09, 0x52, 0x73, 0x6d, 0x9f, 0xd6, 0xec, 0x02, 0x60, 0x25, 0x36, 0x98, 0xce, - 0x29, 0xa9, 0x51, 0xd2, 0x26, 0xe7, 0xb6, 0x8c, 0x2f, 0xa1, 0xb3, 0x0c, 0x12, 0x11, 0x6f, 0x4d, - 0x5e, 0xa7, 0x1c, 0x8c, 0x55, 0x01, 0x89, 0x88, 0xa2, 0x18, 0x0d, 0xd0, 0x30, 0x80, 0xb1, 0x08, - 0x18, 0x40, 0x2b, 0x15, 0xe1, 0x1d, 0xa5, 0x4d, 0x4a, 0x77, 0x9a, 0xbd, 0x02, 0x96, 0x4b, 0x5c, - 0xa2, 0x94, 0x18, 0xcd, 0x0b, 0x85, 0x92, 0x28, 0x97, 0xa8, 0xfe, 0x2e, 0xf9, 0x62, 0x03, 0xc6, - 0xc1, 0xcd, 0x65, 0xb6, 0x14, 0x31, 0xf2, 0x16, 0x31, 0x95, 0xa4, 0x44, 0x84, 0xba, 0x90, 0xc8, - 0xdb, 0x36, 0x31, 0xb2, 0x4c, 0xbe, 0xe3, 0x42, 0x09, 0x8d, 0x1c, 0x4c, 0x62, 0x25, 0xfb, 0x1f, - 0x1a, 0x98, 0x04, 0x22, 0xe6, 0x1d, 0xf2, 0x8d, 0x60, 0xcf, 0xa0, 0x4b, 0x8b, 0xf9, 0x06, 0xa5, - 0x58, 0x0a, 0x8c, 0xf8, 0xd1, 0xd0, 0x19, 0xb5, 0xfc, 0x63, 0x72, 0xbf, 0x5a, 0x93, 0x9d, 0x41, - 0x73, 0x85, 0x69, 0x84, 0x92, 0x1f, 0x53, 0xb5, 0x55, 0xec, 0x09, 0xb4, 0x17, 0x42, 0xea, 0x75, - 0x14, 0x68, 0xe4, 0x5d, 0x33, 0xcd, 0x9d, 0x51, 0xce, 0xe2, 0x67, 0x96, 0xa2, 0x48, 0x97, 0x19, - 0xef, 0x99, 0x59, 0x54, 0xba, 0xdc, 0x31, 0xce, 0xc2, 0x20, 0x46, 0x7e, 0x62, 0x76, 0x34, 0x8a, - 0x3d, 0x85, 0xa3, 0x7c, 0x9d, 0xa5, 0x38, 0x4f, 0x8b, 0x64, 0x81, 0x92, 0xf7, 0x29, 0xed, 0x90, - 0x77, 0x4b, 0x16, 0x9b, 0xc2, 0xa3, 0xfb, 0xc8, 0xbe, 0x75, 0x46, 0xad, 0x9f, 0xde, 0x63, 0x77, - 0x7f, 0xe0, 0x02, 0xa0, 0xc8, 0xcb, 0xa6, 0xa2, 0x79, 0xa0, 0xf9, 0xe9, 0xd0, 0x19, 0x35, 0xfc, - 0xb6, 0x75, 0xae, 0xb4, 0x77, 0x09, 0xae, 0x3d, 0xde, 0xe5, 0x9c, 0xf4, 0x1a, 0x13, 0xb4, 0x27, - 0xc9, 0x08, 0xef, 0x31, 0x34, 0x3e, 0x17, 0x28, 0xb7, 0x87, 0x77, 0xcd, 0x7b, 0x07, 0xae, 0xb9, - 0x87, 0x8a, 0xbd, 0x00, 0x57, 0x9a, 0x25, 0x77, 0x86, 0xb5, 0x51, 0x67, 0x7a, 0xb2, 0x3f, 0xd1, - 0x86, 0xf1, 0x2b, 0x60, 0xfa, 0xcb, 0x81, 0xde, 0xcc, 0x86, 0x33, 0x94, 0x1b, 0x11, 0x22, 0x7b, - 0x0e, 0xb5, 0x19, 0x6a, 0x76, 0x50, 0x35, 0x38, 0x70, 0xd8, 0x08, 0x6a, 0xd7, 0xa8, 0x59, 0x6f, - 0x1f, 0x50, 0x7f, 0xff, 0x20, 0xdf, 0x40, 0xfd, 0x46, 0x28, 0xcd, 0xce, 0xc6, 0xe6, 0x35, 0x19, - 0x57, 0xaf, 0xc9, 0xf8, 0x63, 0xf9, 0x9a, 0x0c, 0xfa, 0x7f, 0x57, 0xa8, 0xf7, 0xee, 0xb7, 0x86, - 0x81, 0x9a, 0xf4, 0xf3, 0xf6, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x77, 0xd8, 0xdb, 0xb0, - 0x04, 0x00, 0x00, + // 704 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x54, 0xdd, 0x6e, 0xdb, 0x36, + 0x14, 0x86, 0xe6, 0x1f, 0xd9, 0xc7, 0x89, 0x1d, 0x33, 0x59, 0xc0, 0x39, 0x0b, 0xe2, 0x09, 0x18, + 0xe0, 0x6d, 0x98, 0xbd, 0x79, 0xd8, 0x03, 0x64, 0xc1, 0x90, 0x9b, 0x20, 0x68, 0x65, 0xb4, 0x17, + 0xbd, 0x11, 0x64, 0xf1, 0xd8, 0x26, 0x22, 0x89, 0x02, 0x49, 0xb9, 0x75, 0xdf, 0xa4, 0x0f, 0xd3, + 0x17, 0xeb, 0x55, 0x21, 0x92, 0xb2, 0x93, 0xba, 0x57, 0xe2, 0xf7, 0x73, 0x8e, 0x8e, 0x0e, 0x3e, + 0x11, 0xae, 0x8a, 0xa7, 0xf5, 0xac, 0x90, 0x42, 0x8b, 0xd9, 0xf6, 0xaf, 0x59, 0x9c, 0x24, 0xa2, + 0xcc, 0xb5, 0x9a, 0x1a, 0x86, 0x74, 0x14, 0x6a, 0xcd, 0xf3, 0xb5, 0x1a, 0x5d, 0xad, 0x85, 0x58, + 0xa7, 0x68, 0x9d, 0xcb, 0x72, 0x35, 0xc3, 0xac, 0xd0, 0x3b, 0x6b, 0x0b, 0xee, 0xa1, 0x1d, 0x62, + 0x22, 0x24, 0x23, 0x67, 0xd0, 0x78, 0xc2, 0x1d, 0xf5, 0xc6, 0xde, 0xa4, 0x1b, 0x56, 0x47, 0xf2, + 0x07, 0xf8, 0x45, 0xbc, 0x4b, 0x45, 0xcc, 0xe8, 0x0f, 0x63, 0x6f, 0xd2, 0x9b, 0x0f, 0xa7, 0x75, + 0xd3, 0xe9, 0x2b, 0x2b, 0x84, 0xb5, 0x23, 0x48, 0xc0, 0x77, 0x9c, 0xa9, 0xdb, 0x08, 0xcc, 0xf9, + 0x07, 0xd3, 0xed, 0x65, 0x9d, 0x15, 0xc2, 0xda, 0x51, 0x99, 0xdd, 0xe4, 0xc7, 0x2f, 0xb9, 0xb5, + 0x42, 0x58, 0x3b, 0x82, 0x07, 0xf0, 0x1d, 0x47, 0x6e, 0x61, 0xa0, 0x74, 0x9c, 0xb3, 0x58, 0xb2, + 0x28, 0x49, 0x63, 0x9e, 0x29, 0xf7, 0x32, 0x7a, 0xa8, 0x5f, 0x38, 0xc3, 0x9d, 0xd1, 0xc3, 0xbe, + 0x7a, 0x81, 0x83, 0x2f, 0x4d, 0xe8, 0xbf, 0xb4, 0x54, 0x4b, 0x50, 0xe5, 0xb2, 0x5e, 0x82, 0x2a, + 0x97, 0x84, 0x40, 0x33, 0x8f, 0x33, 0x34, 0xc3, 0x75, 0x43, 0x73, 0x26, 0xd7, 0x00, 0x6b, 0xbe, + 0xc5, 0x3c, 0x32, 0x4a, 0xc3, 0x28, 0x5d, 0xc3, 0x3c, 0x56, 0xf2, 0x0d, 0xf4, 0x56, 0x71, 0xc6, + 0xd3, 0x9d, 0xd5, 0x9b, 0x46, 0x07, 0x4b, 0xd5, 0x86, 0x8c, 0x33, 0x96, 0xa2, 0x35, 0xb4, 0xac, + 0xc1, 0x52, 0xc6, 0x30, 0x82, 0x4e, 0xce, 0x93, 0x27, 0xa3, 0xb6, 0x8d, 0xba, 0xc7, 0xe4, 0x4f, + 0x20, 0x85, 0xc4, 0x15, 0x4a, 0x89, 0x2c, 0x2a, 0x15, 0x4a, 0xe3, 0xf2, 0x8d, 0x6b, 0xb8, 0x57, + 0xde, 0x38, 0x81, 0x50, 0xf0, 0x0b, 0x29, 0x56, 0x3c, 0x45, 0xda, 0x31, 0x9e, 0x1a, 0x1a, 0x85, + 0x27, 0xba, 0x94, 0x48, 0xbb, 0x4e, 0xb1, 0xb0, 0x52, 0xde, 0xe3, 0x52, 0x71, 0x8d, 0x14, 0xac, + 0xe2, 0x20, 0xb9, 0x80, 0x16, 0x66, 0x31, 0x4f, 0x69, 0xcf, 0xf0, 0x16, 0x90, 0x5f, 0xa1, 0x6f, + 0x0e, 0xd1, 0x16, 0x25, 0x5f, 0x71, 0x64, 0xf4, 0x64, 0xec, 0x4d, 0x3a, 0xe1, 0xa9, 0x61, 0xdf, + 0x3a, 0x92, 0x5c, 0x42, 0x7b, 0x8d, 0x39, 0x43, 0x49, 0x4f, 0x4d, 0xb5, 0x43, 0xe4, 0x67, 0xe8, + 0x2e, 0xb9, 0xd4, 0x1b, 0x16, 0x6b, 0xa4, 0x7d, 0xbb, 0xcd, 0x3d, 0x51, 0xed, 0xe2, 0xa3, 0xc8, + 0x91, 0xe7, 0x2b, 0x41, 0x07, 0x76, 0x17, 0x35, 0xae, 0x3a, 0xa6, 0x22, 0x89, 0x53, 0xa4, 0x67, + 0xb6, 0xa3, 0x45, 0xe4, 0x17, 0x38, 0x29, 0x36, 0x22, 0xc7, 0x28, 0x2f, 0xb3, 0x25, 0x4a, 0x3a, + 0x34, 0x6a, 0xcf, 0x70, 0x8f, 0x86, 0x22, 0x73, 0xf8, 0xf1, 0xb9, 0xe5, 0x30, 0x3a, 0x31, 0xa3, + 0x9f, 0x3f, 0xf3, 0xee, 0x3f, 0xe0, 0x1a, 0xa0, 0x2c, 0xaa, 0xa1, 0x58, 0x14, 0x6b, 0x7a, 0x3e, + 0xf6, 0x26, 0xad, 0xb0, 0xeb, 0x98, 0x5b, 0x6d, 0xa2, 0xcc, 0x98, 0x44, 0xa5, 0xe8, 0xc5, 0x51, + 0x94, 0xad, 0x10, 0xd6, 0x8e, 0xe0, 0xb3, 0x07, 0xbe, 0x23, 0xab, 0x05, 0xac, 0x84, 0xcc, 0x62, + 0xad, 0x91, 0xb9, 0xec, 0x1d, 0x88, 0x6a, 0xbb, 0x4a, 0x4b, 0x44, 0x1d, 0xd5, 0xdd, 0x6d, 0x16, + 0x4f, 0x2d, 0x5b, 0x37, 0x19, 0x41, 0xc7, 0x7c, 0x3d, 0xd7, 0x3b, 0x17, 0xc9, 0x3d, 0xae, 0xf6, + 0x24, 0x71, 0xcd, 0x45, 0xee, 0xc2, 0xe8, 0x50, 0x15, 0xc4, 0x42, 0x28, 0x1d, 0xa7, 0x51, 0x22, + 0xd8, 0x3e, 0x88, 0x96, 0xba, 0x13, 0xcc, 0x24, 0xc1, 0xfc, 0x6e, 0x72, 0xe7, 0x72, 0x58, 0xc3, + 0xe0, 0x06, 0x7c, 0xf7, 0x2f, 0x57, 0xa1, 0xd0, 0x1b, 0xcc, 0xd0, 0x8d, 0x6e, 0x41, 0xf0, 0x13, + 0xb4, 0x5e, 0x97, 0x28, 0x77, 0xc7, 0x17, 0x4b, 0xf0, 0x2f, 0xf8, 0xf6, 0xd2, 0x51, 0xe4, 0x77, + 0xf0, 0xa5, 0x3d, 0x52, 0x6f, 0xdc, 0x98, 0xf4, 0xe6, 0x67, 0x87, 0x9d, 0x59, 0x4f, 0x58, 0x1b, + 0xe6, 0x9f, 0x3c, 0x18, 0x2c, 0x9c, 0xb8, 0x40, 0xb9, 0xe5, 0x09, 0x92, 0xdf, 0xa0, 0xb1, 0x40, + 0x4d, 0x8e, 0xaa, 0x46, 0x47, 0x0c, 0x99, 0x40, 0xe3, 0x1e, 0x35, 0x19, 0x1c, 0x04, 0x33, 0xdf, + 0x77, 0x9c, 0x7f, 0x43, 0xf3, 0x81, 0x2b, 0x4d, 0x2e, 0xa7, 0xf6, 0xea, 0x9c, 0xd6, 0x57, 0xe7, + 0xf4, 0xff, 0xea, 0xea, 0x1c, 0x0d, 0xbf, 0xad, 0x50, 0xff, 0xf9, 0xef, 0x5a, 0xd6, 0xd4, 0x36, + 0x8f, 0x7f, 0xbe, 0x06, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x1c, 0x02, 0x9f, 0x9d, 0x05, 0x00, 0x00, } From 94f19c3a7c34bc04be4ce2f125a61ff25ae1f033 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Wed, 12 Feb 2020 12:55:47 +0100 Subject: [PATCH 085/407] fix docs formatting and push to docs branch --- .drone.star | 22 ++++++++++++++++++++++ Makefile | 2 +- docs/{about.md => _index.md} | 5 +---- docs/building.md | 5 ++--- docs/getting-started.md | 25 +++++++++++++------------ 5 files changed, 39 insertions(+), 20 deletions(-) rename docs/{about.md => _index.md} (59%) diff --git a/.drone.star b/.drone.star index deb7ba112f..30a7cd204e 100644 --- a/.drone.star +++ b/.drone.star @@ -643,6 +643,28 @@ def website(ctx): 'tree hugo/public', ], }, + { + 'name': 'publish', + 'image': 'plugins/gh-pages:1', + 'pull': 'always', + 'settings': { + 'username': { + 'from_secret': 'github_username', + }, + 'password': { + 'from_secret': 'github_token', + }, + 'pages_directory': 'docs/', + 'target_branch': 'docs', + }, + 'when': { + 'ref': { + 'exclude': [ + 'refs/pull/**', + ], + }, + }, + }, { 'name': 'downstream', 'image': 'plugins/downstream', diff --git a/Makefile b/Makefile index b3b444cd05..dfdd590b68 100644 --- a/Makefile +++ b/Makefile @@ -140,7 +140,7 @@ docs-copy: git remote add origin https://github.com/owncloud/owncloud.github.io; \ git fetch; \ git checkout origin/source -f; \ - rsync -aX ../docs/ content/extensions/ocis-accounts + rsync --delete -aX ../docs/ content/extensions/ocis-accounts .PHONY: docs-build docs-build: diff --git a/docs/about.md b/docs/_index.md similarity index 59% rename from docs/about.md rename to docs/_index.md index 2f6241567b..da3aa5fe49 100644 --- a/docs/about.md +++ b/docs/_index.md @@ -1,8 +1,5 @@ --- -title: "About" -date: 2020-02-07T00:00:00+00:00 -anchor: "about" -weight: 10 +title: ocis-accounts --- This service provides an inter-operable accounts service that operates on the filesystem by default. diff --git a/docs/building.md b/docs/building.md index 0cf2186527..bbce525a1c 100644 --- a/docs/building.md +++ b/docs/building.md @@ -1,8 +1,7 @@ --- title: "Building" date: 2018-05-02T00:00:00+00:00 -anchor: "building" -weight: 30 +weight: 20 --- As this project is built with Go, so you need to install that first. The installation of Go is out of the scope of this document, please follow the official documentation for [Go](https://golang.org/doc/install), to build this project you have to install Go >= v1.13. After the installation of the required tools you need to get the sources: @@ -14,7 +13,7 @@ cd ocis-accounts All required tool besides Go itself and make are bundled or getting automatically installed within the `GOPATH`. All commands to build this project are part of our `Makefile`. -### Backend +## Backend {{< highlight txt >}} make generate diff --git a/docs/getting-started.md b/docs/getting-started.md index 795519fe32..466842639b 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,31 +1,32 @@ --- title: "Getting Started" date: 2018-05-02T00:00:00+00:00 -anchor: "getting-started" -weight: 20 +weight: 10 --- -### Installation +{{< toc >}} + +## Installation So far we are offering two different variants for the installation. You can choose between [Docker](https://www.docker.com/) or pre-built binaries which are stored on our download mirrors and GitHub releases. Maybe we will also provide system packages for the major distributions later if we see the need for it. -#### Docker +### Docker TBD -#### Binaries +### Binaries TBD -### Configuration +## Configuration We provide overall three different variants of configuration. The variant based on environment variables and commandline flags are split up into global values and command-specific values. -#### Envrionment variables +### Envrionment variables If you prefer to configure the service with environment variables you can see the available variables below. -##### Server +#### Server OCIS_ACCOUNTS_MANAGER : Enable sending traces, defaults to `filesystem` @@ -42,19 +43,19 @@ OCIS_ACCOUNTS_NAMESPACE OCIS_ACCOUNTS_ADDRESS : Endpoint for the grpc service endpoint. -#### Commandline flags +### Commandline flags If you prefer to configure the service with commandline flags you can see the available variables below. -#### Configuration file +### Configuration file So far we support the file formats `JSON` and `YAML`, if you want to get a full example configuration just take a look at [our repository](https://github.com/owncloud/ocis-accounts/tree/master/pkg/config), there you can always see the latest configuration format. These example configurations include all available options and the default values. The configuration file will be automatically loaded if it's placed at `/etc/ocis/accounts.yml`, `${HOME}/.ocis/accounts.yml` or `$(pwd)/config/accounts.yml`. -### Usage +## Usage The program provides a few sub-commands on execution. The available configuration methods have already been mentioned above. Generally you can always see a formated help output if you execute the binary via `ocis-accounts --help`. -#### Server +### Server The server command is used to start the grpc server. For further help please execute: From 8f43899476a58094ad7a605968ee01e114c62106 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 13:16:31 +0100 Subject: [PATCH 086/407] upgrade go_micro protoc plugin to v2; as well as ocis-pkg/v2 --- go.mod | 21 +++--------------- go.sum | 36 +++++++++++++++++++++++++++++++ pkg/micro/grpc/grpc.go | 2 +- pkg/proto/v0/accounts.pb.micro.go | 10 ++------- 4 files changed, 42 insertions(+), 27 deletions(-) diff --git a/go.mod b/go.mod index 4221ea6890..4ef53951ad 100644 --- a/go.mod +++ b/go.mod @@ -3,28 +3,13 @@ module github.com/owncloud/ocis-accounts go 1.13 require ( - github.com/coreos/etcd v3.3.18+incompatible // indirect - github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect github.com/golang/protobuf v1.3.2 github.com/grpc-ecosystem/grpc-gateway v1.9.4 // indirect - github.com/json-iterator/go v1.1.9 // indirect - github.com/lucas-clemente/quic-go v0.14.1 // indirect github.com/micro/cli/v2 v2.1.1 - github.com/micro/go-micro v1.18.0 - github.com/miekg/dns v1.1.27 // indirect - github.com/nats-io/nats-server/v2 v2.1.2 // indirect + github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec github.com/owncloud/ocis-pkg v1.3.0 - github.com/pkg/errors v0.9.1 // indirect - github.com/restic/calens v0.2.0 // indirect - github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc // indirect - go.uber.org/zap v1.13.0 // indirect - golang.org/x/crypto v0.0.0-20200117160349-530e935923ad // indirect - golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f // indirect - golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa // indirect - golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect - golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 // indirect - google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 // indirect - google.golang.org/grpc v1.26.0 // indirect + github.com/owncloud/ocis-pkg/v2 v2.0.1 + github.com/restic/calens v0.2.0 ) diff --git a/go.sum b/go.sum index 9ea4eb2374..34e92d1595 100644 --- a/go.sum +++ b/go.sum @@ -5,9 +5,12 @@ cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISt cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= contrib.go.opencensus.io/exporter/jaeger v0.2.0 h1:nhTv/Ry3lGmqbJ/JGvCjWxBl5ozRfqo86Ngz59UAlfk= contrib.go.opencensus.io/exporter/jaeger v0.2.0/go.mod h1:ukdzwIYYHgZ7QYtwVFQUjiT28BJHiMhTERo32s6qVgM= @@ -19,6 +22,7 @@ contrib.go.opencensus.io/exporter/zipkin v0.1.1 h1:PR+1zWqY8ceXs1qDQQIlgXe+sdiwC contrib.go.opencensus.io/exporter/zipkin v0.1.1/go.mod h1:GMvdSl3eJ2gapOaLKzTKE3qDgUkJ86k9k3yY2eqwkzc= contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= @@ -120,6 +124,7 @@ github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2w github.com/bradfitz/iter v0.0.0-20190303215204-33e6a9893b0c/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= +github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -221,12 +226,14 @@ github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aev github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= +github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -244,12 +251,14 @@ github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dp github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-redsync/redsync v1.3.1/go.mod h1:qxZwM5JOimfq8y98Wk2+c8dKtxJgG5/yIl2ODz2E5Dk= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stomp/stomp v2.0.3+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31 h1:28FVBuwkwowZMjbA7M0wXsI6t3PYulRTMio3SO+eKCM= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -435,6 +444,7 @@ github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdA github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA= github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gNfqwTxjbE7s3Vb8s= @@ -465,6 +475,7 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0j github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= +github.com/mholt/certmagic v0.9.1/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= github.com/micro/cli/v2 v2.1.1 h1:uFw0SMIKmGuyHIm8lXns/NOn7V62bM5y7DnlxUM+BEQ= @@ -473,11 +484,16 @@ github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6 github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= +github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXpRw= +github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= +github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1 h1:7IkXfl94MdLZQwk0lNmu9Cg5WP42Zak9EtQMeN4SvVs= +github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1/go.mod h1:QrkcwcDtIs2hIJpIEhozekyf6Rfz5C36kFI8+zzCpX0= github.com/micro/mdns v0.3.0 h1:bYycYe+98AXR3s8Nq5qvt6C573uFTDPIYzJemWON0QE= github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= github.com/micro/micro v1.16.0/go.mod h1:TO5Ng0KidbfRYIxVM4Q3deZ0A+qwRyP9WeXp+k2fWNA= +github.com/micro/protoc-gen-micro v1.0.0 h1:qKh5S3I1RfenhIs5mqDFJLwRlRDlgin7XWiUKZbpwLM= github.com/micro/protoc-gen-micro v1.0.0/go.mod h1:C8ij4DJhapBmypcT00AXdb0cZ675/3PqUO02buWWqbE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -539,7 +555,9 @@ github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OS github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= +github.com/nlopes/slack v0.6.1-0.20191106133607-d06c2a2b3249/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= +github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= @@ -578,6 +596,8 @@ github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXq github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg v1.3.0 h1:2fkgvfd/spTjschuulYMHRuzxkCGGXae9ocebVYkm74= github.com/owncloud/ocis-pkg v1.3.0/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= +github.com/owncloud/ocis-pkg/v2 v2.0.1 h1:3ISEtfjAz4pDFczTggIJwKuft3bVsAp1C7dFY9BBPEs= +github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -784,18 +804,25 @@ golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200117160349-530e935923ad h1:Jh8cai0fqIK+f6nG0UgPW5wFk8wmiMhM3AyciDBdtQg= golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -826,6 +853,7 @@ golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -914,8 +942,11 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -934,6 +965,7 @@ google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEn google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -950,10 +982,13 @@ google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dT google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a h1:Ob5/580gVHBJZgXnff1cZDbG+xLtMVE5mDRTe+nIsX4= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 h1:aQktFqmDE2yjveXJlVIfslDFmFnUXSqG0i6KRcJAeMc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba h1:pRj9OXZbwNtbtZtOB4dLwfK4u+EVRMvP+e9zKkg2grM= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -983,6 +1018,7 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= +gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= diff --git a/pkg/micro/grpc/grpc.go b/pkg/micro/grpc/grpc.go index 547789d475..f4be23ed4f 100644 --- a/pkg/micro/grpc/grpc.go +++ b/pkg/micro/grpc/grpc.go @@ -3,7 +3,7 @@ package grpc import ( "github.com/owncloud/ocis-accounts/pkg/proto/v0" svc "github.com/owncloud/ocis-accounts/pkg/service/v0" - "github.com/owncloud/ocis-pkg/service/grpc" + "github.com/owncloud/ocis-pkg/v2/service/grpc" ) // NewService initializes a new go-micro service ready to run diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index a44286b0a1..6cb22dd5bb 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -12,8 +12,8 @@ import ( import ( context "context" - client "github.com/micro/go-micro/client" - server "github.com/micro/go-micro/server" + client "github.com/micro/go-micro/v2/client" + server "github.com/micro/go-micro/v2/server" ) // Reference imports to suppress errors if they are not otherwise used. @@ -46,12 +46,6 @@ type settingsService struct { } func NewSettingsService(name string, c client.Client) SettingsService { - if c == nil { - c = client.NewClient() - } - if len(name) == 0 { - name = "settings" - } return &settingsService{ c: c, name: name, From ba8e60a7142d605812560127273b184401d96f7e Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 13:28:41 +0100 Subject: [PATCH 087/407] propper logging --- pkg/command/server.go | 5 +++++ pkg/micro/grpc/grpc.go | 1 + pkg/micro/grpc/options.go | 2 +- pkg/service/v0/service.go | 2 +- pkg/store/filesystem/store.go | 2 +- 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index a3d09e71dd..8edf122a24 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -9,6 +9,7 @@ import ( "github.com/oklog/run" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/micro/grpc" + olog "github.com/owncloud/ocis-pkg/v2/log" ) // Server is the entry point for the server command. @@ -62,9 +63,13 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { gr := run.Group{} ctx, cancel := context.WithCancel(context.Background()) + l := olog.NewLogger( + olog.Name(cfg.Server.Name), + ) defer cancel() service := grpc.NewService( + grpc.Logger(l), grpc.Context(ctx), grpc.Config(cfg), grpc.Name(cfg.Server.Name), diff --git a/pkg/micro/grpc/grpc.go b/pkg/micro/grpc/grpc.go index f4be23ed4f..9bff7f94bd 100644 --- a/pkg/micro/grpc/grpc.go +++ b/pkg/micro/grpc/grpc.go @@ -15,6 +15,7 @@ func NewService(opts ...Option) grpc.Service { grpc.Context(options.Context), grpc.Address(options.Address), grpc.Namespace(options.Namespace), + grpc.Logger(options.Logger), ) hdlr := svc.New(options.Config) diff --git a/pkg/micro/grpc/options.go b/pkg/micro/grpc/options.go index 1e92d61ba6..132cf498cf 100644 --- a/pkg/micro/grpc/options.go +++ b/pkg/micro/grpc/options.go @@ -4,7 +4,7 @@ import ( "context" "github.com/owncloud/ocis-accounts/pkg/config" - "github.com/owncloud/ocis-pkg/log" + "github.com/owncloud/ocis-pkg/v2/log" ) // Option defines a single option function. diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index e4db11353a..b927de58e6 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -7,7 +7,7 @@ import ( "github.com/owncloud/ocis-accounts/pkg/account" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" - olog "github.com/owncloud/ocis-pkg/log" + olog "github.com/owncloud/ocis-pkg/v2/log" ) // New returns a new instance of Service diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 40428e1705..21bddd3505 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -13,7 +13,7 @@ import ( "github.com/owncloud/ocis-accounts/pkg/account" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" - olog "github.com/owncloud/ocis-pkg/log" + olog "github.com/owncloud/ocis-pkg/v2/log" ) var ( From 42a5ba79b446b9f107c49a1c66a93121d47a3e63 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Wed, 12 Feb 2020 13:46:04 +0100 Subject: [PATCH 088/407] ensure hugo content path exists --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index dfdd590b68..cc7e7709db 100644 --- a/Makefile +++ b/Makefile @@ -134,13 +134,14 @@ release-finish: release-copy release-check .PHONY: docs-copy docs-copy: mkdir -p $(HUGO); \ + mkdir -p $(HUGO)/content/extensions; \ cd $(HUGO); \ git init; \ git remote rm origin; \ git remote add origin https://github.com/owncloud/owncloud.github.io; \ git fetch; \ git checkout origin/source -f; \ - rsync --delete -aX ../docs/ content/extensions/ocis-accounts + rsync --delete -aX ../docs/ content/extensions/$(NAME) .PHONY: docs-build docs-build: From d858fb3c77eb68fc1c739d2c8c6c6bf55a57608e Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 14:11:25 +0100 Subject: [PATCH 089/407] better better logging --- pkg/command/server.go | 15 ++++++++++----- pkg/store/filesystem/store.go | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index 8edf122a24..9c1ea3ee42 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -9,7 +9,11 @@ import ( "github.com/oklog/run" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/micro/grpc" - olog "github.com/owncloud/ocis-pkg/v2/log" + oclog "github.com/owncloud/ocis-pkg/v2/log" +) + +var ( + logger oclog.Logger ) // Server is the entry point for the server command. @@ -60,16 +64,17 @@ func Server(cfg *config.Config) *cli.Command { Destination: &cfg.Server.Address, }, }, + Before: func(c *cli.Context) error { + logger = oclog.NewLogger(oclog.Name(cfg.Server.Name)) + return nil + }, Action: func(c *cli.Context) error { gr := run.Group{} ctx, cancel := context.WithCancel(context.Background()) - l := olog.NewLogger( - olog.Name(cfg.Server.Name), - ) defer cancel() service := grpc.NewService( - grpc.Logger(l), + grpc.Logger(logger), grpc.Context(ctx), grpc.Config(cfg), grpc.Name(cfg.Server.Name), diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 21bddd3505..14e6a2dfb8 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -34,7 +34,7 @@ type Store struct { // New creates a new store func New(cfg *config.Config) account.Manager { s := Store{ - Logger: olog.NewLogger(olog.Name("ocis-accounts")), + Logger: olog.NewLogger(olog.Name(cfg.Server.Name)), } dest := filepath.Join(cfg.MountPath, StoreName) From ec16d2bc23524b1fe3f051741f7bbe6eaa0f2961 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 14:29:00 +0100 Subject: [PATCH 090/407] add proto step to makefile --- Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile b/Makefile index cc7e7709db..891ce8d5ba 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,9 @@ IMPORT := github.com/owncloud/$(NAME) BIN := bin DIST := dist HUGO := hugo +PROTO_VERSION := v0 +PROTO_OUT := pkg/proto/$(PROTO_VERSION) +PROTOCFLAGS := --go_out=. --micro_out=. ifeq ($(OS), Windows_NT) EXECUTABLE := $(NAME).exe @@ -153,3 +156,7 @@ docs: docs-copy docs-build .PHONY: watch watch: go run github.com/cespare/reflex -c reflex.conf + +.PHONY: pb +pb: + protoc $(PROTOCFLAGS) pkg/proto/$(PROTO_VERSION)/*.proto From bdfe2ae01a631ed2c586e2d08fabc299c35b94b7 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 12 Feb 2020 14:30:41 +0100 Subject: [PATCH 091/407] cleanup, remove unused var --- Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 891ce8d5ba..c724253e94 100644 --- a/Makefile +++ b/Makefile @@ -5,8 +5,7 @@ BIN := bin DIST := dist HUGO := hugo PROTO_VERSION := v0 -PROTO_OUT := pkg/proto/$(PROTO_VERSION) -PROTOCFLAGS := --go_out=. --micro_out=. +PROTO_SRC := pkg/proto/$(PROTO_VERSION)/*.proto ifeq ($(OS), Windows_NT) EXECUTABLE := $(NAME).exe @@ -159,4 +158,4 @@ watch: .PHONY: pb pb: - protoc $(PROTOCFLAGS) pkg/proto/$(PROTO_VERSION)/*.proto + protoc --go_out=. --micro_out=. $(PROTO_SRC) From ed8a8af28b420a681aacc46e9ea86cb79b9fbe25 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 13 Feb 2020 15:09:49 +0100 Subject: [PATCH 092/407] added identities history field --- pkg/proto/v0/accounts.pb.go | 158 +++++++++++++++++++++++++----------- pkg/proto/v0/accounts.proto | 6 ++ 2 files changed, 115 insertions(+), 49 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 43cd346817..287bea7013 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -5,9 +5,10 @@ package proto import ( fmt "fmt" + math "math" + proto "github.com/golang/protobuf/proto" _ "github.com/golang/protobuf/ptypes/empty" - math "math" ) // Reference imports to suppress errors if they are not otherwise used. @@ -117,6 +118,7 @@ func (m *Payload) GetAccount() *Account { type Account struct { StandardClaims *StandardClaims `protobuf:"bytes,1,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` + Identities []*IdHistory `protobuf:"bytes,2,rep,name=identities,proto3" json:"identities,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -154,6 +156,13 @@ func (m *Account) GetStandardClaims() *StandardClaims { return nil } +func (m *Account) GetIdentities() []*IdHistory { + if m != nil { + return m.Identities + } + return nil +} + // OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims type StandardClaims struct { Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` @@ -425,6 +434,53 @@ func (m *Address) GetCountry() string { return "" } +type IdHistory struct { + Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` + Iss string `protobuf:"bytes,2,opt,name=iss,proto3" json:"iss,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *IdHistory) Reset() { *m = IdHistory{} } +func (m *IdHistory) String() string { return proto.CompactTextString(m) } +func (*IdHistory) ProtoMessage() {} +func (*IdHistory) Descriptor() ([]byte, []int) { + return fileDescriptor_e3c84319968a576b, []int{5} +} + +func (m *IdHistory) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_IdHistory.Unmarshal(m, b) +} +func (m *IdHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_IdHistory.Marshal(b, m, deterministic) +} +func (m *IdHistory) XXX_Merge(src proto.Message) { + xxx_messageInfo_IdHistory.Merge(m, src) +} +func (m *IdHistory) XXX_Size() int { + return xxx_messageInfo_IdHistory.Size(m) +} +func (m *IdHistory) XXX_DiscardUnknown() { + xxx_messageInfo_IdHistory.DiscardUnknown(m) +} + +var xxx_messageInfo_IdHistory proto.InternalMessageInfo + +func (m *IdHistory) GetSub() string { + if m != nil { + return m.Sub + } + return "" +} + +func (m *IdHistory) GetIss() string { + if m != nil { + return m.Iss + } + return "" +} + type Phoenix struct { Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -436,7 +492,7 @@ func (m *Phoenix) Reset() { *m = Phoenix{} } func (m *Phoenix) String() string { return proto.CompactTextString(m) } func (*Phoenix) ProtoMessage() {} func (*Phoenix) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{5} + return fileDescriptor_e3c84319968a576b, []int{6} } func (m *Phoenix) XXX_Unmarshal(b []byte) error { @@ -475,7 +531,7 @@ func (m *Query) Reset() { *m = Query{} } func (m *Query) String() string { return proto.CompactTextString(m) } func (*Query) ProtoMessage() {} func (*Query) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{6} + return fileDescriptor_e3c84319968a576b, []int{7} } func (m *Query) XXX_Unmarshal(b []byte) error { @@ -514,7 +570,7 @@ func (m *Records) Reset() { *m = Records{} } func (m *Records) String() string { return proto.CompactTextString(m) } func (*Records) ProtoMessage() {} func (*Records) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{7} + return fileDescriptor_e3c84319968a576b, []int{8} } func (m *Records) XXX_Unmarshal(b []byte) error { @@ -548,6 +604,7 @@ func init() { proto.RegisterType((*Account)(nil), "settings.Account") proto.RegisterType((*StandardClaims)(nil), "settings.StandardClaims") proto.RegisterType((*Address)(nil), "settings.Address") + proto.RegisterType((*IdHistory)(nil), "settings.IdHistory") proto.RegisterType((*Phoenix)(nil), "settings.Phoenix") proto.RegisterType((*Query)(nil), "settings.Query") proto.RegisterType((*Records)(nil), "settings.Records") @@ -556,49 +613,52 @@ func init() { func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } var fileDescriptor_e3c84319968a576b = []byte{ - // 704 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x54, 0xdd, 0x6e, 0xdb, 0x36, - 0x14, 0x86, 0xe6, 0x1f, 0xd9, 0xc7, 0x89, 0x1d, 0x33, 0x59, 0xc0, 0x39, 0x0b, 0xe2, 0x09, 0x18, - 0xe0, 0x6d, 0x98, 0xbd, 0x79, 0xd8, 0x03, 0x64, 0xc1, 0x90, 0x9b, 0x20, 0x68, 0x65, 0xb4, 0x17, - 0xbd, 0x11, 0x64, 0xf1, 0xd8, 0x26, 0x22, 0x89, 0x02, 0x49, 0xb9, 0x75, 0xdf, 0xa4, 0x0f, 0xd3, - 0x17, 0xeb, 0x55, 0x21, 0x92, 0xb2, 0x93, 0xba, 0x57, 0xe2, 0xf7, 0x73, 0x8e, 0x8e, 0x0e, 0x3e, - 0x11, 0xae, 0x8a, 0xa7, 0xf5, 0xac, 0x90, 0x42, 0x8b, 0xd9, 0xf6, 0xaf, 0x59, 0x9c, 0x24, 0xa2, - 0xcc, 0xb5, 0x9a, 0x1a, 0x86, 0x74, 0x14, 0x6a, 0xcd, 0xf3, 0xb5, 0x1a, 0x5d, 0xad, 0x85, 0x58, - 0xa7, 0x68, 0x9d, 0xcb, 0x72, 0x35, 0xc3, 0xac, 0xd0, 0x3b, 0x6b, 0x0b, 0xee, 0xa1, 0x1d, 0x62, - 0x22, 0x24, 0x23, 0x67, 0xd0, 0x78, 0xc2, 0x1d, 0xf5, 0xc6, 0xde, 0xa4, 0x1b, 0x56, 0x47, 0xf2, - 0x07, 0xf8, 0x45, 0xbc, 0x4b, 0x45, 0xcc, 0xe8, 0x0f, 0x63, 0x6f, 0xd2, 0x9b, 0x0f, 0xa7, 0x75, - 0xd3, 0xe9, 0x2b, 0x2b, 0x84, 0xb5, 0x23, 0x48, 0xc0, 0x77, 0x9c, 0xa9, 0xdb, 0x08, 0xcc, 0xf9, - 0x07, 0xd3, 0xed, 0x65, 0x9d, 0x15, 0xc2, 0xda, 0x51, 0x99, 0xdd, 0xe4, 0xc7, 0x2f, 0xb9, 0xb5, - 0x42, 0x58, 0x3b, 0x82, 0x07, 0xf0, 0x1d, 0x47, 0x6e, 0x61, 0xa0, 0x74, 0x9c, 0xb3, 0x58, 0xb2, - 0x28, 0x49, 0x63, 0x9e, 0x29, 0xf7, 0x32, 0x7a, 0xa8, 0x5f, 0x38, 0xc3, 0x9d, 0xd1, 0xc3, 0xbe, - 0x7a, 0x81, 0x83, 0x2f, 0x4d, 0xe8, 0xbf, 0xb4, 0x54, 0x4b, 0x50, 0xe5, 0xb2, 0x5e, 0x82, 0x2a, - 0x97, 0x84, 0x40, 0x33, 0x8f, 0x33, 0x34, 0xc3, 0x75, 0x43, 0x73, 0x26, 0xd7, 0x00, 0x6b, 0xbe, - 0xc5, 0x3c, 0x32, 0x4a, 0xc3, 0x28, 0x5d, 0xc3, 0x3c, 0x56, 0xf2, 0x0d, 0xf4, 0x56, 0x71, 0xc6, - 0xd3, 0x9d, 0xd5, 0x9b, 0x46, 0x07, 0x4b, 0xd5, 0x86, 0x8c, 0x33, 0x96, 0xa2, 0x35, 0xb4, 0xac, - 0xc1, 0x52, 0xc6, 0x30, 0x82, 0x4e, 0xce, 0x93, 0x27, 0xa3, 0xb6, 0x8d, 0xba, 0xc7, 0xe4, 0x4f, - 0x20, 0x85, 0xc4, 0x15, 0x4a, 0x89, 0x2c, 0x2a, 0x15, 0x4a, 0xe3, 0xf2, 0x8d, 0x6b, 0xb8, 0x57, - 0xde, 0x38, 0x81, 0x50, 0xf0, 0x0b, 0x29, 0x56, 0x3c, 0x45, 0xda, 0x31, 0x9e, 0x1a, 0x1a, 0x85, - 0x27, 0xba, 0x94, 0x48, 0xbb, 0x4e, 0xb1, 0xb0, 0x52, 0xde, 0xe3, 0x52, 0x71, 0x8d, 0x14, 0xac, - 0xe2, 0x20, 0xb9, 0x80, 0x16, 0x66, 0x31, 0x4f, 0x69, 0xcf, 0xf0, 0x16, 0x90, 0x5f, 0xa1, 0x6f, - 0x0e, 0xd1, 0x16, 0x25, 0x5f, 0x71, 0x64, 0xf4, 0x64, 0xec, 0x4d, 0x3a, 0xe1, 0xa9, 0x61, 0xdf, - 0x3a, 0x92, 0x5c, 0x42, 0x7b, 0x8d, 0x39, 0x43, 0x49, 0x4f, 0x4d, 0xb5, 0x43, 0xe4, 0x67, 0xe8, - 0x2e, 0xb9, 0xd4, 0x1b, 0x16, 0x6b, 0xa4, 0x7d, 0xbb, 0xcd, 0x3d, 0x51, 0xed, 0xe2, 0xa3, 0xc8, - 0x91, 0xe7, 0x2b, 0x41, 0x07, 0x76, 0x17, 0x35, 0xae, 0x3a, 0xa6, 0x22, 0x89, 0x53, 0xa4, 0x67, - 0xb6, 0xa3, 0x45, 0xe4, 0x17, 0x38, 0x29, 0x36, 0x22, 0xc7, 0x28, 0x2f, 0xb3, 0x25, 0x4a, 0x3a, - 0x34, 0x6a, 0xcf, 0x70, 0x8f, 0x86, 0x22, 0x73, 0xf8, 0xf1, 0xb9, 0xe5, 0x30, 0x3a, 0x31, 0xa3, - 0x9f, 0x3f, 0xf3, 0xee, 0x3f, 0xe0, 0x1a, 0xa0, 0x2c, 0xaa, 0xa1, 0x58, 0x14, 0x6b, 0x7a, 0x3e, - 0xf6, 0x26, 0xad, 0xb0, 0xeb, 0x98, 0x5b, 0x6d, 0xa2, 0xcc, 0x98, 0x44, 0xa5, 0xe8, 0xc5, 0x51, - 0x94, 0xad, 0x10, 0xd6, 0x8e, 0xe0, 0xb3, 0x07, 0xbe, 0x23, 0xab, 0x05, 0xac, 0x84, 0xcc, 0x62, - 0xad, 0x91, 0xb9, 0xec, 0x1d, 0x88, 0x6a, 0xbb, 0x4a, 0x4b, 0x44, 0x1d, 0xd5, 0xdd, 0x6d, 0x16, - 0x4f, 0x2d, 0x5b, 0x37, 0x19, 0x41, 0xc7, 0x7c, 0x3d, 0xd7, 0x3b, 0x17, 0xc9, 0x3d, 0xae, 0xf6, - 0x24, 0x71, 0xcd, 0x45, 0xee, 0xc2, 0xe8, 0x50, 0x15, 0xc4, 0x42, 0x28, 0x1d, 0xa7, 0x51, 0x22, - 0xd8, 0x3e, 0x88, 0x96, 0xba, 0x13, 0xcc, 0x24, 0xc1, 0xfc, 0x6e, 0x72, 0xe7, 0x72, 0x58, 0xc3, - 0xe0, 0x06, 0x7c, 0xf7, 0x2f, 0x57, 0xa1, 0xd0, 0x1b, 0xcc, 0xd0, 0x8d, 0x6e, 0x41, 0xf0, 0x13, - 0xb4, 0x5e, 0x97, 0x28, 0x77, 0xc7, 0x17, 0x4b, 0xf0, 0x2f, 0xf8, 0xf6, 0xd2, 0x51, 0xe4, 0x77, - 0xf0, 0xa5, 0x3d, 0x52, 0x6f, 0xdc, 0x98, 0xf4, 0xe6, 0x67, 0x87, 0x9d, 0x59, 0x4f, 0x58, 0x1b, - 0xe6, 0x9f, 0x3c, 0x18, 0x2c, 0x9c, 0xb8, 0x40, 0xb9, 0xe5, 0x09, 0x92, 0xdf, 0xa0, 0xb1, 0x40, - 0x4d, 0x8e, 0xaa, 0x46, 0x47, 0x0c, 0x99, 0x40, 0xe3, 0x1e, 0x35, 0x19, 0x1c, 0x04, 0x33, 0xdf, - 0x77, 0x9c, 0x7f, 0x43, 0xf3, 0x81, 0x2b, 0x4d, 0x2e, 0xa7, 0xf6, 0xea, 0x9c, 0xd6, 0x57, 0xe7, - 0xf4, 0xff, 0xea, 0xea, 0x1c, 0x0d, 0xbf, 0xad, 0x50, 0xff, 0xf9, 0xef, 0x5a, 0xd6, 0xd4, 0x36, - 0x8f, 0x7f, 0xbe, 0x06, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x1c, 0x02, 0x9f, 0x9d, 0x05, 0x00, 0x00, + // 748 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x54, 0x5f, 0x8f, 0xdb, 0x44, + 0x10, 0x97, 0x9b, 0xcb, 0x39, 0x99, 0xf4, 0xfe, 0xed, 0x95, 0x6a, 0x49, 0xa9, 0x1a, 0x2c, 0x21, + 0x05, 0x10, 0x09, 0x5c, 0xc5, 0x07, 0x38, 0x2a, 0x54, 0x90, 0x50, 0x05, 0x3e, 0xc1, 0x03, 0x2f, + 0x96, 0xe3, 0x9d, 0xe4, 0x56, 0x67, 0x7b, 0xad, 0xdd, 0x75, 0x20, 0xbc, 0xf1, 0x31, 0xf8, 0x30, + 0x7c, 0x31, 0x9e, 0xd0, 0xce, 0xae, 0x9d, 0x4b, 0xd3, 0xa7, 0xec, 0xef, 0xcf, 0x4c, 0xc6, 0xa3, + 0x99, 0x81, 0x17, 0xcd, 0xc3, 0x66, 0xd9, 0x68, 0x65, 0xd5, 0x72, 0xfb, 0xf5, 0x32, 0x2f, 0x0a, + 0xd5, 0xd6, 0xd6, 0x2c, 0x88, 0x61, 0x23, 0x83, 0xd6, 0xca, 0x7a, 0x63, 0xa6, 0x2f, 0x36, 0x4a, + 0x6d, 0x4a, 0xf4, 0xce, 0x55, 0xbb, 0x5e, 0x62, 0xd5, 0xd8, 0x9d, 0xb7, 0x25, 0x6f, 0xe1, 0x34, + 0xc5, 0x42, 0x69, 0xc1, 0x2e, 0x61, 0xf0, 0x80, 0x3b, 0x1e, 0xcd, 0xa2, 0xf9, 0x38, 0x75, 0x4f, + 0xf6, 0x25, 0xc4, 0x4d, 0xbe, 0x2b, 0x55, 0x2e, 0xf8, 0x93, 0x59, 0x34, 0x9f, 0xdc, 0x5c, 0x2d, + 0xba, 0xa4, 0x8b, 0x9f, 0xbd, 0x90, 0x76, 0x8e, 0xa4, 0x80, 0x38, 0x70, 0x14, 0x77, 0xaf, 0xb0, + 0x96, 0x7f, 0x52, 0xb6, 0xc3, 0x38, 0x2f, 0xa4, 0x9d, 0xc3, 0x99, 0x43, 0xe5, 0xc7, 0x7f, 0x72, + 0xeb, 0x85, 0xb4, 0x73, 0x24, 0x7f, 0x47, 0x10, 0x07, 0x92, 0xdd, 0xc2, 0x85, 0xb1, 0x79, 0x2d, + 0x72, 0x2d, 0xb2, 0xa2, 0xcc, 0x65, 0x65, 0xc2, 0xbf, 0xf1, 0x7d, 0x82, 0xbb, 0x60, 0x78, 0x43, + 0x7a, 0x7a, 0x6e, 0x0e, 0x30, 0x7b, 0x0d, 0x20, 0x05, 0xd6, 0x56, 0x5a, 0x89, 0x86, 0x3f, 0x99, + 0x0d, 0xe6, 0x93, 0x9b, 0xeb, 0x7d, 0xf4, 0x8f, 0xe2, 0x07, 0x69, 0xac, 0xd2, 0xbb, 0xf4, 0x91, + 0x2d, 0xf9, 0xef, 0x04, 0xce, 0x0f, 0xf3, 0xba, 0xd6, 0x99, 0x76, 0xd5, 0xb5, 0xce, 0xb4, 0x2b, + 0xc6, 0xe0, 0xa4, 0xce, 0x2b, 0xa4, 0x4f, 0x1a, 0xa7, 0xf4, 0x66, 0x2f, 0x01, 0x36, 0x72, 0x8b, + 0x75, 0x46, 0xca, 0x80, 0x94, 0x31, 0x31, 0xef, 0x9c, 0xfc, 0x0a, 0x26, 0xeb, 0xbc, 0x92, 0xe5, + 0xce, 0xeb, 0x27, 0xa4, 0x83, 0xa7, 0x3a, 0x43, 0x25, 0x85, 0x28, 0xd1, 0x1b, 0x86, 0xde, 0xe0, + 0x29, 0x32, 0x4c, 0x61, 0x54, 0xcb, 0xe2, 0x81, 0xd4, 0x53, 0x52, 0x7b, 0xcc, 0xbe, 0x02, 0xd6, + 0x68, 0x5c, 0xa3, 0xd6, 0x28, 0xb2, 0xd6, 0xa0, 0x26, 0x57, 0x4c, 0xae, 0xab, 0x5e, 0xf9, 0x35, + 0x08, 0x8c, 0x43, 0xdc, 0x68, 0xb5, 0x96, 0x25, 0xf2, 0x11, 0x79, 0x3a, 0x48, 0x8a, 0x2c, 0x6c, + 0xab, 0x91, 0x8f, 0x83, 0xe2, 0xa1, 0x53, 0xfe, 0xc0, 0x95, 0x91, 0x16, 0x39, 0x78, 0x25, 0x40, + 0xf6, 0x0c, 0x86, 0x58, 0xe5, 0xb2, 0xe4, 0x13, 0xe2, 0x3d, 0x60, 0x9f, 0xc1, 0x39, 0x3d, 0xb2, + 0x2d, 0x6a, 0xb9, 0x96, 0x28, 0xf8, 0xd3, 0x59, 0x34, 0x1f, 0xa5, 0x67, 0xc4, 0xfe, 0x16, 0x48, + 0xf6, 0x1c, 0x4e, 0x37, 0x58, 0x0b, 0xd4, 0xfc, 0x8c, 0xa2, 0x03, 0x62, 0x9f, 0xc0, 0x78, 0x25, + 0xb5, 0xbd, 0x17, 0xb9, 0x45, 0x7e, 0xee, 0xbb, 0xd9, 0x13, 0xae, 0x17, 0x7f, 0xa9, 0x1a, 0x65, + 0xbd, 0x56, 0xfc, 0xc2, 0xf7, 0xa2, 0xc3, 0x2e, 0x63, 0xa9, 0x8a, 0xbc, 0x44, 0x7e, 0xe9, 0x33, + 0x7a, 0xc4, 0x3e, 0x85, 0xa7, 0xcd, 0xbd, 0xaa, 0x31, 0xab, 0xdb, 0x6a, 0x85, 0x9a, 0x5f, 0x91, + 0x3a, 0x21, 0xee, 0x1d, 0x51, 0xec, 0x06, 0x3e, 0x7a, 0x6c, 0xd9, 0x97, 0xce, 0xa8, 0xf4, 0xeb, + 0x47, 0xde, 0xfe, 0x03, 0x5e, 0x02, 0xb4, 0x8d, 0x2b, 0x4a, 0x64, 0xb9, 0xe5, 0xd7, 0xb3, 0x68, + 0x3e, 0x4c, 0xc7, 0x81, 0xb9, 0xb5, 0xb4, 0x00, 0x42, 0x68, 0x34, 0x86, 0x3f, 0x3b, 0x5a, 0x00, + 0x2f, 0xa4, 0x9d, 0x23, 0xf9, 0xd7, 0x2d, 0x80, 0x7f, 0xbb, 0x06, 0xac, 0x95, 0xae, 0x72, 0x6b, + 0x51, 0x84, 0xd9, 0xdb, 0x13, 0xae, 0xbb, 0xc6, 0x6a, 0x44, 0x9b, 0x75, 0xd9, 0xfd, 0x2c, 0x9e, + 0x79, 0xb6, 0x4b, 0x32, 0x85, 0x11, 0x7d, 0xbd, 0xb4, 0xbb, 0x30, 0x92, 0x3d, 0x76, 0x7d, 0xd2, + 0xb8, 0x91, 0xaa, 0x0e, 0xc3, 0x18, 0x90, 0x1b, 0xc4, 0x46, 0x19, 0x9b, 0x97, 0x59, 0xa1, 0x44, + 0x3f, 0x88, 0x9e, 0x7a, 0xa3, 0x04, 0x4d, 0x02, 0xed, 0xa8, 0xde, 0x85, 0x39, 0xec, 0x60, 0xb2, + 0x84, 0x71, 0xbf, 0x55, 0x1f, 0x58, 0x9b, 0x4b, 0x18, 0xc8, 0xbe, 0x52, 0xf7, 0x4c, 0x5e, 0x41, + 0x1c, 0x4e, 0x86, 0x9b, 0x22, 0x7b, 0x8f, 0x15, 0x86, 0x00, 0x0f, 0x92, 0x8f, 0x61, 0xf8, 0x4b, + 0x8b, 0x3e, 0xdb, 0xe1, 0xfd, 0x4a, 0xbe, 0x85, 0xd8, 0xdf, 0x36, 0xc3, 0xbe, 0x80, 0x58, 0xfb, + 0x27, 0x8f, 0x68, 0xcd, 0x2f, 0xf7, 0x4d, 0xf6, 0x9e, 0xb4, 0x33, 0xdc, 0xfc, 0x13, 0xc1, 0xc5, + 0x5d, 0x10, 0xef, 0x50, 0x6f, 0x65, 0x81, 0xec, 0x73, 0x18, 0xdc, 0xa1, 0x65, 0x47, 0x51, 0xd3, + 0x23, 0x86, 0xcd, 0x61, 0xf0, 0x16, 0x2d, 0xbb, 0xd8, 0x0b, 0x54, 0xdf, 0x07, 0x9c, 0xdf, 0xc0, + 0xc9, 0x4f, 0xd2, 0x58, 0xf6, 0x7c, 0xe1, 0x2f, 0xf4, 0xa2, 0xbb, 0xd0, 0x8b, 0xef, 0xdd, 0x85, + 0x9e, 0x5e, 0xbd, 0x1f, 0x61, 0xbe, 0x8b, 0x7f, 0x1f, 0x7a, 0xd3, 0x29, 0xfd, 0xbc, 0xfe, 0x3f, + 0x00, 0x00, 0xff, 0xff, 0x89, 0x43, 0x0c, 0x13, 0x04, 0x06, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 390c8d0c58..d48059bcca 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -22,6 +22,7 @@ message Payload { message Account { StandardClaims standard_claims = 1; + repeated IdHistory identities = 2; // keep track of every identity of a given user } // OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims @@ -57,6 +58,11 @@ message Address { string country = 6; } +message IdHistory { + string sub = 1; + string iss = 2; +} + message Phoenix { string theme = 1; } From d6e70ea44168c6bfbe6a0ade2e43d61f84cfd36c Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Sun, 23 Feb 2020 18:14:41 +0100 Subject: [PATCH 093/407] Change docs title --- docs/_index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/_index.md b/docs/_index.md index da3aa5fe49..94e2457dbb 100644 --- a/docs/_index.md +++ b/docs/_index.md @@ -1,5 +1,6 @@ --- -title: ocis-accounts +title: Accounts +anchor: ocis-accounts --- This service provides an inter-operable accounts service that operates on the filesystem by default. From 515ad1cfe0ae9928857b2d581b42e1606b41f63b Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Mon, 2 Mar 2020 21:36:28 +0100 Subject: [PATCH 094/407] Add edit docs link --- .drone.star | 4 ++-- changelog/CHANGELOG.tmpl | 9 ++++++--- docs/.gitignore | 1 - docs/_index.md | 6 +++++- docs/building.md | 7 ++++++- docs/getting-started.md | 5 ++++- 6 files changed, 23 insertions(+), 9 deletions(-) delete mode 100644 docs/.gitignore diff --git a/.drone.star b/.drone.star index 30a7cd204e..a204a15edb 100644 --- a/.drone.star +++ b/.drone.star @@ -485,7 +485,7 @@ def changelog(ctx): }, { 'name': 'diff', - 'image': 'webhippie/golang:1.13', + 'image': 'owncloud/alpine:latest', 'pull': 'always', 'commands': [ 'git diff', @@ -493,7 +493,7 @@ def changelog(ctx): }, { 'name': 'output', - 'image': 'webhippie/golang:1.13', + 'image': 'owncloud/alpine:latest', 'pull': 'always', 'commands': [ 'cat CHANGELOG.md', diff --git a/changelog/CHANGELOG.tmpl b/changelog/CHANGELOG.tmpl index e37d97181b..e6cb0e44c8 100644 --- a/changelog/CHANGELOG.tmpl +++ b/changelog/CHANGELOG.tmpl @@ -1,10 +1,10 @@ {{ $allVersions := . }} {{- range $index, $changes := . }}{{ with $changes -}} +{{ if gt (len $allVersions) 1 -}} # Changelog for [{{ .Version }}] ({{ .Date }}) -The following sections list the changes for {{ .Version }}. +The following sections list the changes in ocis-accounts {{ .Version }}. -{{ if gt (len $allVersions) 1 -}} {{/* creating version compare links */ -}} {{ $next := add1 $index -}} {{ if ne (len $allVersions) $next -}} @@ -23,7 +23,10 @@ The following sections list the changes for {{ .Version }}. [{{ .Version }}]: https://github.com/owncloud/ocis-accounts/compare/500e303cb544ed93d84153f01219d77eeee44929...v{{ .Version }} {{ end -}} -{{- end -}} +{{ else -}} +# Changes in {{ .Version }} + +{{ end -}} ## Summary {{ range $entry := .Entries }}{{ with $entry }} diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index 364fdec1aa..0000000000 --- a/docs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -public/ diff --git a/docs/_index.md b/docs/_index.md index 94e2457dbb..c075dd2d92 100644 --- a/docs/_index.md +++ b/docs/_index.md @@ -1,6 +1,10 @@ --- title: Accounts -anchor: ocis-accounts +date: 2018-05-02T00:00:00+00:00 +weight: 10 +geekdocRepo: https://github.com/owncloud/ocis-accounts +geekdocEditPath: edit/master/docs +geekdocFilePath: _index.md --- This service provides an inter-operable accounts service that operates on the filesystem by default. diff --git a/docs/building.md b/docs/building.md index bbce525a1c..2d96c7ceb3 100644 --- a/docs/building.md +++ b/docs/building.md @@ -1,9 +1,14 @@ --- title: "Building" date: 2018-05-02T00:00:00+00:00 -weight: 20 +weight: 30 +geekdocRepo: https://github.com/owncloud/ocis-accounts +geekdocEditPath: edit/master/docs +geekdocFilePath: building.md --- +{{< toc >}} + As this project is built with Go, so you need to install that first. The installation of Go is out of the scope of this document, please follow the official documentation for [Go](https://golang.org/doc/install), to build this project you have to install Go >= v1.13. After the installation of the required tools you need to get the sources: {{< highlight txt >}} diff --git a/docs/getting-started.md b/docs/getting-started.md index 466842639b..5ca2d957df 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,7 +1,10 @@ --- title: "Getting Started" date: 2018-05-02T00:00:00+00:00 -weight: 10 +weight: 20 +geekdocRepo: https://github.com/owncloud/ocis-accounts +geekdocEditPath: edit/master/docs +geekdocFilePath: getting-started.md --- {{< toc >}} From 18d59e4f02542f863316ad60a44c0b2e973bbb02 Mon Sep 17 00:00:00 2001 From: Alex Unger Date: Tue, 3 Mar 2020 08:42:04 +0000 Subject: [PATCH 095/407] Automated changelog update [skip ci] --- CHANGELOG.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2355d0262e..134782cc9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,4 @@ -# Changelog for [unreleased] (UNRELEASED) - -The following sections list the changes for unreleased. +# Changes in unreleased ## Summary From 1c32865f64465d79bab732aff089f4f27424dda0 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Mon, 9 Mar 2020 11:17:57 +0100 Subject: [PATCH 096/407] Improve formatting --- .github/settings.yml | 2 +- Makefile | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/settings.yml b/.github/settings.yml index f2ef2487f0..0668e8885b 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -2,7 +2,7 @@ repository: name: ocis-accounts description: ':busts_in_silhouette: Serve Accounts for oCIS' - homepage: https://owncloud.github.io/ocis-accounts/ + homepage: https://owncloud.github.io/extensions/ocis_accounts/ topics: reva, ocis private: false diff --git a/Makefile b/Makefile index c724253e94..4ecb44fc9e 100644 --- a/Makefile +++ b/Makefile @@ -137,13 +137,13 @@ release-finish: release-copy release-check docs-copy: mkdir -p $(HUGO); \ mkdir -p $(HUGO)/content/extensions; \ - cd $(HUGO); \ - git init; \ - git remote rm origin; \ - git remote add origin https://github.com/owncloud/owncloud.github.io; \ - git fetch; \ - git checkout origin/source -f; \ - rsync --delete -aX ../docs/ content/extensions/$(NAME) + cd $(HUGO); \ + git init; \ + git remote rm origin; \ + git remote add origin https://github.com/owncloud/owncloud.github.io; \ + git fetch; \ + git checkout origin/source -f; \ + rsync --delete -ax ../docs/ content/extensions/$(NAME) .PHONY: docs-build docs-build: From c9171beb0aac0cb9b4d4b226e5a565f97a0a30b6 Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Thu, 12 Mar 2020 01:27:53 +0100 Subject: [PATCH 097/407] Fix unhandled error --- pkg/micro/grpc/grpc.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/micro/grpc/grpc.go b/pkg/micro/grpc/grpc.go index 9bff7f94bd..9b01aaf017 100644 --- a/pkg/micro/grpc/grpc.go +++ b/pkg/micro/grpc/grpc.go @@ -19,7 +19,9 @@ func NewService(opts ...Option) grpc.Service { ) hdlr := svc.New(options.Config) - proto.RegisterSettingsServiceHandler(service.Server(), hdlr) + if err := proto.RegisterSettingsServiceHandler(service.Server(), hdlr); err != nil { + options.Logger.Fatal().Err(err).Msg("could not register service handler") + } service.Init() return service From 9ac6a9bf54c9ee4677fec8fd66539096635078de Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Thu, 12 Mar 2020 01:34:01 +0100 Subject: [PATCH 098/407] Remove unneeded type specification --- pkg/store/filesystem/store.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 14e6a2dfb8..5b21972f39 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -18,9 +18,9 @@ import ( var ( // StoreName is the default name for the accounts store - StoreName string = "ocis-store" - managerName = "filesystem" - emptyKeyError = "key cannot be empty" + StoreName = "ocis-store" + managerName = "filesystem" + emptyKeyError = "key cannot be empty" ) // StoreName is the default name for the store container From 037b12022a0ca6e5bebec1d0c596b98691182f67 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:10:46 +0100 Subject: [PATCH 099/407] update dependencies --- go.mod | 1 + go.sum | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/go.mod b/go.mod index 4ef53951ad..b9e613211e 100644 --- a/go.mod +++ b/go.mod @@ -12,4 +12,5 @@ require ( github.com/owncloud/ocis-pkg v1.3.0 github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/restic/calens v0.2.0 + github.com/spf13/viper v1.6.1 ) diff --git a/go.sum b/go.sum index 34e92d1595..7da42e51c3 100644 --- a/go.sum +++ b/go.sum @@ -321,6 +321,7 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -412,6 +413,7 @@ github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGn github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -680,10 +682,12 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= From df05ea082aab0dd91515ee876358d327cd38a965 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:11:04 +0100 Subject: [PATCH 100/407] move viper config parsing to its scope --- pkg/command/root.go | 57 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/pkg/command/root.go b/pkg/command/root.go index 66369097c8..2f01eb2887 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -2,10 +2,13 @@ package command import ( "os" + "strings" "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-hello/pkg/version" + "github.com/owncloud/ocis-pkg/log" + "github.com/spf13/viper" // init store manager _ "github.com/owncloud/ocis-accounts/pkg/store" @@ -42,3 +45,57 @@ func Execute() error { return app.Run(os.Args) } + +// NewLogger initializes a service-specific logger instance. +func NewLogger(cfg *config.Config) log.Logger { + return log.NewLogger( + log.Name("phoenix"), + log.Level("info"), + log.Pretty(true), + log.Color(true), + ) +} + +// ParseConfig loads proxy configuration from Viper known paths. +func ParseConfig(c *cli.Context, cfg *config.Config) error { + // ParseConfig loads proxy configuration from Viper known paths. + logger := NewLogger(cfg) + + viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) + viper.SetEnvPrefix("OCIS_ACCOUNTS") + viper.AutomaticEnv() + + if c.IsSet("config-file") { + viper.SetConfigFile(c.String("config-file")) + } else { + viper.SetConfigName("accounts") + + viper.AddConfigPath("/etc/ocis") + viper.AddConfigPath("$HOME/.ocis") + viper.AddConfigPath("./config") + } + + if err := viper.ReadInConfig(); err != nil { + switch err.(type) { + case viper.ConfigFileNotFoundError: + logger.Info(). + Msg("Continue without config") + case viper.UnsupportedConfigError: + logger.Fatal(). + Err(err). + Msg("Unsupported config type") + default: + logger.Fatal(). + Err(err). + Msg("Failed to read config") + } + } + + if err := viper.Unmarshal(&cfg); err != nil { + logger.Fatal(). + Err(err). + Msg("Failed to parse config") + } + + return nil +} From ef2e3dc962a62e2a4a9013da0b5e3a80b11eeb31 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:11:17 +0100 Subject: [PATCH 101/407] parse configuration on before hook on server command --- pkg/command/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index 9c1ea3ee42..fa81f5668b 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -66,7 +66,7 @@ func Server(cfg *config.Config) *cli.Command { }, Before: func(c *cli.Context) error { logger = oclog.NewLogger(oclog.Name(cfg.Server.Name)) - return nil + return ParseConfig(c, cfg) }, Action: func(c *cli.Context) error { gr := run.Group{} From 85a29dc45606d3dfd2d2de83cb0ae2cb3e81fdf8 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:15:19 +0100 Subject: [PATCH 102/407] changelog --- changelog/unreleased/self-config.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/unreleased/self-config.md diff --git a/changelog/unreleased/self-config.md b/changelog/unreleased/self-config.md new file mode 100644 index 0000000000..f6afe0dc5d --- /dev/null +++ b/changelog/unreleased/self-config.md @@ -0,0 +1,5 @@ +Enhancement: Configuration + +Extensions should be responsible of configuring themselves. We use Viper for config loading from default paths. Environment variables **WILL** take precedence over config files. + +https://github.com/owncloud/ocis-phoenix/pull/57 From 9b18154e710b6c1a7389f5c006f407e62fdf3ffb Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:16:27 +0100 Subject: [PATCH 103/407] fix PR link --- changelog/unreleased/self-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/unreleased/self-config.md b/changelog/unreleased/self-config.md index f6afe0dc5d..f3b7ccdc9f 100644 --- a/changelog/unreleased/self-config.md +++ b/changelog/unreleased/self-config.md @@ -2,4 +2,4 @@ Enhancement: Configuration Extensions should be responsible of configuring themselves. We use Viper for config loading from default paths. Environment variables **WILL** take precedence over config files. -https://github.com/owncloud/ocis-phoenix/pull/57 +https://github.com/owncloud/ocis-accounts/pull/15 From d5fb7dd1eab5d392813c6aa19be82c54209ccdbf Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:57:30 +0100 Subject: [PATCH 104/407] use ocis-pkg/v2 --- pkg/command/root.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 2f01eb2887..470914673f 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -7,7 +7,7 @@ import ( "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-hello/pkg/version" - "github.com/owncloud/ocis-pkg/log" + "github.com/owncloud/ocis-pkg/v2/log" "github.com/spf13/viper" // init store manager From 5a36879b5b4187c3292e90b77ba46f9aaee9084b Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 13:58:24 +0100 Subject: [PATCH 105/407] tidy deps: remove ocis-pkg@v1 --- go.mod | 1 - go.sum | 2 -- 2 files changed, 3 deletions(-) diff --git a/go.mod b/go.mod index b9e613211e..3a0c7df3f1 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,6 @@ require ( github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec - github.com/owncloud/ocis-pkg v1.3.0 github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/restic/calens v0.2.0 github.com/spf13/viper v1.6.1 diff --git a/go.sum b/go.sum index 7da42e51c3..7d1b8ada06 100644 --- a/go.sum +++ b/go.sum @@ -596,8 +596,6 @@ github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec h1:gpILNWve7F8MIo/GBOM6bdszzZFfJEgcXPQBjDOMLAc= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= -github.com/owncloud/ocis-pkg v1.3.0 h1:2fkgvfd/spTjschuulYMHRuzxkCGGXae9ocebVYkm74= -github.com/owncloud/ocis-pkg v1.3.0/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1 h1:3ISEtfjAz4pDFczTggIJwKuft3bVsAp1C7dFY9BBPEs= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= From d5b2dfc3ac92e3b0331ccd12744816c6e6151658 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:15:11 +0100 Subject: [PATCH 106/407] leftover phoenix --- go.sum | 1 + pkg/command/root.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/go.sum b/go.sum index 7d1b8ada06..2d018cf6be 100644 --- a/go.sum +++ b/go.sum @@ -595,6 +595,7 @@ github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukw github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec h1:gpILNWve7F8MIo/GBOM6bdszzZFfJEgcXPQBjDOMLAc= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= +github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1 h1:3ISEtfjAz4pDFczTggIJwKuft3bVsAp1C7dFY9BBPEs= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= diff --git a/pkg/command/root.go b/pkg/command/root.go index 470914673f..b4de996fb9 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -49,7 +49,7 @@ func Execute() error { // NewLogger initializes a service-specific logger instance. func NewLogger(cfg *config.Config) log.Logger { return log.NewLogger( - log.Name("phoenix"), + log.Name("accounts"), log.Level("info"), log.Pretty(true), log.Color(true), From 5c91e7de68175a7eb7adc9718f09fc971835d5f1 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:17:58 +0100 Subject: [PATCH 107/407] use ACCOUNTS as prefix instead of OCIS_ACCOUNTS --- pkg/command/root.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index b4de996fb9..217cb67a4e 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -62,7 +62,7 @@ func ParseConfig(c *cli.Context, cfg *config.Config) error { logger := NewLogger(cfg) viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) - viper.SetEnvPrefix("OCIS_ACCOUNTS") + viper.SetEnvPrefix("ACCOUNTS") viper.AutomaticEnv() if c.IsSet("config-file") { From 274fa6693a22c9ed4d3216fe37db3066cfb70e14 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:22:15 +0100 Subject: [PATCH 108/407] update env variables to match those of Viper --- pkg/command/server.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index fa81f5668b..0ce9fa874a 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -28,13 +28,13 @@ func Server(cfg *config.Config) *cli.Command { DefaultText: "filesystem", Usage: "accounts backend manager", Value: "filesystem", - EnvVars: []string{"OCIS_ACCOUNTS_MANAGER"}, + EnvVars: []string{"ACCOUNTS_MANAGER"}, Destination: &cfg.Manager, }, &cli.StringFlag{ Name: "mount-path", Usage: "mounting point (necessary when manager=filesystem)", - EnvVars: []string{"OCIS_ACCOUNTS_MOUNT_PATH"}, + EnvVars: []string{"ACCOUNTS_MOUNT_PATH"}, Destination: &cfg.MountPath, }, &cli.StringFlag{ @@ -42,7 +42,7 @@ func Server(cfg *config.Config) *cli.Command { Value: "accounts", DefaultText: "accounts", Usage: "service name", - EnvVars: []string{"OCIS_ACCOUNTS_NAME"}, + EnvVars: []string{"ACCOUNTS_NAME"}, Destination: &cfg.Server.Name, }, &cli.StringFlag{ @@ -51,7 +51,7 @@ func Server(cfg *config.Config) *cli.Command { Value: "com.owncloud", DefaultText: "com.owncloud", Usage: "namespace", - EnvVars: []string{"OCIS_ACCOUNTS_NAMESPACE"}, + EnvVars: []string{"ACCOUNTS_NAMESPACE"}, Destination: &cfg.Server.Namespace, }, &cli.StringFlag{ @@ -60,7 +60,7 @@ func Server(cfg *config.Config) *cli.Command { Value: "localhost:9180", DefaultText: "localhost:9180", Usage: "service endpoint", - EnvVars: []string{"OCIS_ACCOUNTS_ADDRESS"}, + EnvVars: []string{"ACCOUNTS_ADDRESS"}, Destination: &cfg.Server.Address, }, }, From 58ed4a881ab064cc6818dbee3010b13ed0d15d06 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 18 Mar 2020 14:29:47 +0100 Subject: [PATCH 109/407] fix references --- pkg/command/root.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 217cb67a4e..50ffd009c8 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -56,7 +56,7 @@ func NewLogger(cfg *config.Config) log.Logger { ) } -// ParseConfig loads proxy configuration from Viper known paths. +// ParseConfig loads accounts configuration from Viper known paths. func ParseConfig(c *cli.Context, cfg *config.Config) error { // ParseConfig loads proxy configuration from Viper known paths. logger := NewLogger(cfg) From d524de08bf800e394a73ab94c54d6292d23771b2 Mon Sep 17 00:00:00 2001 From: Alex Unger Date: Wed, 18 Mar 2020 13:40:19 +0000 Subject: [PATCH 110/407] Automated changelog update [skip ci] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 134782cc9f..d9a92db932 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Summary * Change - Initial release of basic version: [#1](https://github.com/owncloud/ocis-accounts/issues/1) +* Enhancement - Configuration: [#15](https://github.com/owncloud/ocis-accounts/pull/15) ## Details @@ -12,3 +13,11 @@ https://github.com/owncloud/ocis-accounts/issues/1 + +* Enhancement - Configuration: [#15](https://github.com/owncloud/ocis-accounts/pull/15) + + Extensions should be responsible of configuring themselves. We use Viper for config loading + from default paths. Environment variables **WILL** take precedence over config files. + + https://github.com/owncloud/ocis-accounts/pull/15 + From 0f7bdcc96fd1df6265fd2502f912619864826446 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Wed, 18 Mar 2020 19:28:32 +0100 Subject: [PATCH 111/407] Release 0.1.0 --- changelog/{unreleased => 0.1.0_2020-03-18}/inital-release | 0 changelog/{unreleased => 0.1.0_2020-03-18}/self-config.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename changelog/{unreleased => 0.1.0_2020-03-18}/inital-release (100%) rename changelog/{unreleased => 0.1.0_2020-03-18}/self-config.md (100%) diff --git a/changelog/unreleased/inital-release b/changelog/0.1.0_2020-03-18/inital-release similarity index 100% rename from changelog/unreleased/inital-release rename to changelog/0.1.0_2020-03-18/inital-release diff --git a/changelog/unreleased/self-config.md b/changelog/0.1.0_2020-03-18/self-config.md similarity index 100% rename from changelog/unreleased/self-config.md rename to changelog/0.1.0_2020-03-18/self-config.md From 77b99c1afbd591f72b00caeff820e8f5059812e8 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Wed, 18 Mar 2020 19:41:09 +0000 Subject: [PATCH 112/407] Automated changelog update [skip ci] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9a92db932..6cf2749f84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Changes in unreleased +# Changes in 0.1.0 ## Summary From 89587b336db3dfd73bb116e96d02b233a9ac109f Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Sat, 28 Mar 2020 15:29:40 +0100 Subject: [PATCH 113/407] Fix link to docs --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index 74759169f6..e8c889b384 100644 --- a/Readme.md +++ b/Readme.md @@ -11,7 +11,7 @@ ## Install -You can download prebuilt binaries from the GitHub releases or from our [download mirrors](http://download.owncloud.com/ocis/accounts/). For instructions how to install this on your platform you should take a look at our [documentation](https://owncloud.github.io/ocis-accounts/) +You can download prebuilt binaries from the GitHub releases or from our [download mirrors](http://download.owncloud.com/ocis/accounts/). For instructions how to install this on your platform you should take a look at our [documentation](https://owncloud.github.io/extensions/ocis_accounts/) **** ## Development From f44b9fa39179736d587e51b1351d1918b71d2ad8 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Thu, 9 Apr 2020 06:48:59 +0200 Subject: [PATCH 114/407] Fix version import --- pkg/command/root.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 50ffd009c8..0cedb10cdb 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -6,7 +6,7 @@ import ( "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" - "github.com/owncloud/ocis-hello/pkg/version" + "github.com/owncloud/ocis-accounts/pkg/version" "github.com/owncloud/ocis-pkg/v2/log" "github.com/spf13/viper" From af5d0d3bab4be00255d78af652a3ae1e9156fdef Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 14 Apr 2020 19:32:54 +0200 Subject: [PATCH 115/407] rename micro/ -> server/ --- pkg/{micro => server}/grpc/grpc.go | 0 pkg/{micro => server}/grpc/options.go | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename pkg/{micro => server}/grpc/grpc.go (100%) rename pkg/{micro => server}/grpc/options.go (100%) diff --git a/pkg/micro/grpc/grpc.go b/pkg/server/grpc/grpc.go similarity index 100% rename from pkg/micro/grpc/grpc.go rename to pkg/server/grpc/grpc.go diff --git a/pkg/micro/grpc/options.go b/pkg/server/grpc/options.go similarity index 100% rename from pkg/micro/grpc/options.go rename to pkg/server/grpc/options.go From 48c2b7eed5f2017ff2ed08850bc99a33ed88cffa Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 14 Apr 2020 19:35:27 +0200 Subject: [PATCH 116/407] remove unused struct --- pkg/account/accounts.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pkg/account/accounts.go b/pkg/account/accounts.go index a9c997a9cc..19df2cf85c 100644 --- a/pkg/account/accounts.go +++ b/pkg/account/accounts.go @@ -25,9 +25,3 @@ type Manager interface { // List all records List() ([]*proto.Record, error) } - -// Record is an entry in the account storage -type Record struct { - Key string - Value []byte -} From a957a50e6863a2b503b94e15afa0c7be462b9c76 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 14 Apr 2020 19:37:57 +0200 Subject: [PATCH 117/407] update import path --- pkg/command/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index 0ce9fa874a..b96f9a3959 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -8,7 +8,7 @@ import ( "github.com/micro/cli/v2" "github.com/oklog/run" "github.com/owncloud/ocis-accounts/pkg/config" - "github.com/owncloud/ocis-accounts/pkg/micro/grpc" + "github.com/owncloud/ocis-accounts/pkg/server/grpc" oclog "github.com/owncloud/ocis-pkg/v2/log" ) From 23ce3445c08c8f704d0656958230e5cec509893a Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 15 Apr 2020 11:34:24 +0200 Subject: [PATCH 118/407] load env variables from .env file on root Before hook --- pkg/command/root.go | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 0cedb10cdb..bc0062a4f5 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -2,8 +2,11 @@ package command import ( "os" + "os/user" + "path" "strings" + "github.com/joho/godotenv" "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/version" @@ -14,6 +17,11 @@ import ( _ "github.com/owncloud/ocis-accounts/pkg/store" ) +var ( + defaultConfigPaths = []string{"/etc/ocis", "$HOME/.ocis", "./config"} + defaultFilename = "accounts" +) + // Execute is the entry point for the ocis-accounts command. func Execute() error { app := &cli.App{ @@ -21,6 +29,26 @@ func Execute() error { Version: version.String, Usage: "Example service for Reva/oCIS", + Before: func(c *cli.Context) error { + log := NewLogger(config.New()) + for _, v := range defaultConfigPaths { + // location is the user's home + if v[0] == '$' || v[0] == '~' { + usr, _ := user.Current() + err := godotenv.Load(path.Join(usr.HomeDir, ".ocis", defaultFilename+".env")) + if err != nil { + log.Debug().Msgf("ignoring missing env file on dir: %v", v) + } + } else { + err := godotenv.Load(path.Join(v, defaultFilename+".env")) + if err != nil { + log.Debug().Msgf("ignoring missing env file on dir: %v", v) + } + } + } + return nil + }, + Authors: []*cli.Author{ { Name: "ownCloud GmbH", @@ -58,7 +86,6 @@ func NewLogger(cfg *config.Config) log.Logger { // ParseConfig loads accounts configuration from Viper known paths. func ParseConfig(c *cli.Context, cfg *config.Config) error { - // ParseConfig loads proxy configuration from Viper known paths. logger := NewLogger(cfg) viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) @@ -68,11 +95,11 @@ func ParseConfig(c *cli.Context, cfg *config.Config) error { if c.IsSet("config-file") { viper.SetConfigFile(c.String("config-file")) } else { - viper.SetConfigName("accounts") + viper.SetConfigName(defaultFilename) - viper.AddConfigPath("/etc/ocis") - viper.AddConfigPath("$HOME/.ocis") - viper.AddConfigPath("./config") + for _, v := range defaultConfigPaths { + viper.AddConfigPath(v) + } } if err := viper.ReadInConfig(); err != nil { From acc52996097eb02eacb5a76475b937e763ab2273 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 15 Apr 2020 11:34:34 +0200 Subject: [PATCH 119/407] update modules --- go.mod | 6 +- go.sum | 297 +-------------------------------------------------------- 2 files changed, 6 insertions(+), 297 deletions(-) diff --git a/go.mod b/go.mod index 3a0c7df3f1..a6310738a5 100644 --- a/go.mod +++ b/go.mod @@ -3,13 +3,17 @@ module github.com/owncloud/ocis-accounts go 1.13 require ( + github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31 // indirect + github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d // indirect github.com/golang/protobuf v1.3.2 + github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect github.com/grpc-ecosystem/grpc-gateway v1.9.4 // indirect + github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.1 github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 - github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/restic/calens v0.2.0 + github.com/spf13/afero v1.2.2 // indirect github.com/spf13/viper v1.6.1 ) diff --git a/go.sum b/go.sum index 2d018cf6be..ea0250e399 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= @@ -11,28 +10,10 @@ cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbf cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= -contrib.go.opencensus.io/exporter/jaeger v0.2.0 h1:nhTv/Ry3lGmqbJ/JGvCjWxBl5ozRfqo86Ngz59UAlfk= -contrib.go.opencensus.io/exporter/jaeger v0.2.0/go.mod h1:ukdzwIYYHgZ7QYtwVFQUjiT28BJHiMhTERo32s6qVgM= contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= -contrib.go.opencensus.io/exporter/ocagent v0.5.0 h1:TKXjQSRS0/cCDrP7KvkgU6SmILtF/yV2TOs/02K/WZQ= -contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= -contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= -contrib.go.opencensus.io/exporter/zipkin v0.1.1 h1:PR+1zWqY8ceXs1qDQQIlgXe+sdiwCf0n32bH4+Epk8g= -contrib.go.opencensus.io/exporter/zipkin v0.1.1/go.mod h1:GMvdSl3eJ2gapOaLKzTKE3qDgUkJ86k9k3yY2eqwkzc= -contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= -contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= -github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= -github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= -github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= -github.com/Azure/azure-storage-blob-go v0.6.0/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.1.0/go.mod h1:AKyIcETwSUFxIcs/Wnq/C+kwCtlEYGUVd7FPNb2slmg= github.com/Azure/go-autorest/autorest v0.5.0/go.mod h1:9HLKlQjVBH6U3oDfsXOeVc56THsLPw1L03yban4xThw= github.com/Azure/go-autorest/autorest/adal v0.1.0/go.mod h1:MeS4XhScH55IST095THyTxElntu7WqB7pNbZo8Q5G3E= @@ -48,8 +29,6 @@ github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvd github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= @@ -60,18 +39,10 @@ github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jB github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7-0.20191101173118-65519b62243c/go.mod h1:7xhjOwRV2+0HXGmM0jxaEu+ZiXJFoVZOTfL/dmqbrD8= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ9cgOiZs= -github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75 h1:3ILjVyslFbc4jl1w5TWuvvslFD/nDfR2H8tVaMVLrEY= github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE= @@ -82,66 +53,37 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190808125512-07798873deee/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= -github.com/anacrolix/envpprof v0.0.0-20180404065416-323002cec2fa/go.mod h1:KgHhUaQMc8cC0+cEflSgCFNFbKwi5h54gqtVn8yhP7c= -github.com/anacrolix/envpprof v1.0.0/go.mod h1:KgHhUaQMc8cC0+cEflSgCFNFbKwi5h54gqtVn8yhP7c= -github.com/anacrolix/missinggo v1.1.2-0.20190815015349-b888af804467/go.mod h1:MBJu3Sk/k3ZfGYcS7z18gwfu72Ey/xopPFJJbTi5yIo= -github.com/anacrolix/missinggo v1.2.1/go.mod h1:J5cMhif8jPmFoC3+Uvob3OXXNIhOUikzMt+uUjeM21Y= -github.com/anacrolix/missinggo/perf v1.0.0/go.mod h1:ljAFWkBuzkO12MQclXzZrosP5urunoLS0Cbvb4V0uMQ= -github.com/anacrolix/sync v0.2.0/go.mod h1:BbecHL6jDSExojhNtgTFSBcdGerzNc64tz3DCOj/I0g= -github.com/anacrolix/tagflag v0.0.0-20180109131632-2146c8d41bf0/go.mod h1:1m2U/K6ZT+JZG0+bdMK6qauP49QT4wE5pmhJXOKKCHw= -github.com/anacrolix/utp v0.0.0-20180219060659-9e0e1d1d0572/go.mod h1:MDwc+vsGEq7RMw6lr2GKOEqjWny5hO5OZXRVNaBJ2Dk= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee h1:3T/l+vMotQ7cDSLWNAn2Vg1SAQ3mdyLgBWWBitSS3uU= github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee/go.mod h1:u7Wtt4WATGGgae9mURNGQQqxAudPKrxfsbSDSGOso+g= -github.com/asim/go-awsxray v0.0.0-20161209120537-0d8a60b6e205/go.mod h1:frVmN4PtXUuL1EbZn0uL4PHSTKNKFnbMpBIhngqMuNQ= -github.com/asim/go-bson v0.0.0-20160318195205-84522947cabd/go.mod h1:L59ZX7HuzTbNzFBt8g3SJkRraj+GBOgvLAfJYJUcQ5w= -github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.25.31/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= -github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= -github.com/bradfitz/iter v0.0.0-20190303215204-33e6a9893b0c/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= -github.com/cloudflare/cloudflare-go v0.10.6/go.mod h1:dcRl7AXBH5Bf7QFTBVc3TRzwvotSeO4AlnMhuxORAX8= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -174,12 +116,10 @@ github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMEl github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= -github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -191,71 +131,42 @@ github.com/docker/docker v1.4.2-0.20190710153559-aa8249ae1b8b/go.mod h1:eEKB0N0r github.com/docker/docker v1.4.2-0.20191101170500-ac7306503d23/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= -github.com/eknkc/basex v1.0.0/go.mod h1:k/F/exNEHFdbs3ZHuasoP2E7zeWwZblG84Y7Z59vQRo= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/forestgiant/sliceutil v0.0.0-20160425183142-94783f95db6c/go.mod h1:pFdJbAhRf7rh6YYMUdIQGyzne6zYL1tCUW8QV2B3UfY= -github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsouza/go-dockerclient v1.4.4/go.mod h1:PrwszSL5fbmsESocROrOGq/NULMXRw+bajY0ltzD6MA= github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+4np9qfPbb+znGc= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= -github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= github.com/go-log/log v0.1.0 h1:wudGTNsiGzrD5ZjgIkVZ517ugi2XRe9Q/xRCzwEO4/U= github.com/go-log/log v0.1.0/go.mod h1:4mBwpdRMFLiuXZDCwU2lKQFsoSCo72j3HqBK9d81N2M= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-redsync/redsync v1.3.1/go.mod h1:qxZwM5JOimfq8y98Wk2+c8dKtxJgG5/yIl2ODz2E5Dk= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stomp/stomp v2.0.3+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31 h1:28FVBuwkwowZMjbA7M0wXsI6t3PYulRTMio3SO+eKCM= @@ -270,7 +181,6 @@ github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5 github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc h1:55rEp52jU6bkyslZ1+C/7NGfpQsEc6pxGLAGDOctqbw= @@ -281,16 +191,12 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -298,27 +204,16 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= -github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= -github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= @@ -338,72 +233,35 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.2 h1:S+ef0492XaIknb8LMjcwgW2i3cNTzDYMmDrOThOJNWc= -github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.4 h1:5xLhQjsk4zqPf9EHCrja2qFZMx+yBqkO3XgJ14bNnU0= github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= -github.com/hako/branca v0.0.0-20180808000428-10b799466ada/go.mod h1:tOPn4gvKEUWqIJNE+zpTeTALaRAXnrRqqSnPlO3VpEo= -github.com/hashicorp/consul/api v1.2.0/go.mod h1:1SIkFYi2ZTXUE5Kgt179+4hH33djo11+0Eo2XgTAtkw= -github.com/hashicorp/consul/sdk v0.2.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= -github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.1.5/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= -github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joncalhoun/qson v0.0.0-20170526102502-8a9cab3a62b1/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -412,20 +270,15 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= -github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -440,11 +293,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= -github.com/labstack/echo v3.2.1+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= -github.com/labstack/gommon v0.2.7/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA= @@ -456,21 +306,14 @@ github.com/lucas-clemente/quic-go v0.14.1 h1:c1aKoBZKOPA+49q96B1wGkibyPP0AxYh45W github.com/lucas-clemente/quic-go v0.14.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/marten-seemann/chacha20 v0.2.0 h1:f40vqzzx+3GdOmzQoItkLX5WLvHgPgyYqFFIO5Gh4hQ= github.com/marten-seemann/chacha20 v0.2.0/go.mod h1:HSdjFau7GzYRj+ahFNwsO3ouVJr1HFkWoEwNDb4TMtE= github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGDAUWqna+CNTrI= github.com/marten-seemann/qtls v0.3.2/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= github.com/marten-seemann/qtls v0.4.1 h1:YlT8QP3WCCvvok7MGEZkMldXbyqgr8oFg5/n8Gtbkks= github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= @@ -483,43 +326,28 @@ github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNn github.com/micro/cli/v2 v2.1.1 h1:uFw0SMIKmGuyHIm8lXns/NOn7V62bM5y7DnlxUM+BEQ= github.com/micro/cli/v2 v2.1.1/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6s+iDsrM= -github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXpRw= github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= -github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= -github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1 h1:7IkXfl94MdLZQwk0lNmu9Cg5WP42Zak9EtQMeN4SvVs= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1/go.mod h1:QrkcwcDtIs2hIJpIEhozekyf6Rfz5C36kFI8+zzCpX0= github.com/micro/mdns v0.3.0 h1:bYycYe+98AXR3s8Nq5qvt6C573uFTDPIYzJemWON0QE= github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= -github.com/micro/micro v1.16.0/go.mod h1:TO5Ng0KidbfRYIxVM4Q3deZ0A+qwRyP9WeXp+k2fWNA= github.com/micro/protoc-gen-micro v1.0.0 h1:qKh5S3I1RfenhIs5mqDFJLwRlRDlgin7XWiUKZbpwLM= github.com/micro/protoc-gen-micro v1.0.0/go.mod h1:C8ij4DJhapBmypcT00AXdb0cZ675/3PqUO02buWWqbE= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.22 h1:Jm64b3bO9kP43ddLjL2EY3Io6bmy1qGb9Xxz6TqS6rc= github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= -github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= @@ -527,15 +355,11 @@ github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= github.com/nats-io/jwt v0.3.0 h1:xdnzwFETV++jNc4W1mw//qFyJGb2ABOombmZJQS4+Qo= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= @@ -554,7 +378,6 @@ github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nlopes/slack v0.6.1-0.20191106133607-d06c2a2b3249/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= @@ -562,25 +385,13 @@ github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/Hzq github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= -github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= -github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= -github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= -github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= @@ -593,36 +404,23 @@ github.com/openzipkin/zipkin-go v0.1.6 h1:yXiysv1CSK7Q5yjGy1710zZGnsbMUIjluWBxtL github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= -github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec h1:gpILNWve7F8MIo/GBOM6bdszzZFfJEgcXPQBjDOMLAc= -github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= -github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= -github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1 h1:3ISEtfjAz4pDFczTggIJwKuft3bVsAp1C7dFY9BBPEs= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= @@ -658,21 +456,13 @@ github.com/restic/calens v0.2.0 h1:LVNAtmFc+Pb4ODX66qdX1T3Di1P0OTLyUsVyvM/xD7E= github.com/restic/calens v0.2.0/go.mod h1:UXwyAKS4wsgUZGEc7NrzzygJbLsQZIo3wl+62Q1wvmU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= -github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8= github.com/sacloud/libsacloud v1.26.1/go.mod h1:79ZwATmHLIFZIMd7sxA3LwzVy/B77uj3LDoToVTxDoQ= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -683,14 +473,11 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= -github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= @@ -699,31 +486,24 @@ github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog= github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY= -github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc h1:yUaosFVTJwnltaHbSNC3i82I92quFs+OFPRl8kNMVwo= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -731,31 +511,22 @@ github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= -github.com/uber/jaeger-client-go v2.15.0+incompatible h1:NP3qsSqNxh8VYr956ur1N/1C1PjvOJnJykCzcD5QHbk= -github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= -github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= -github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= -github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -771,7 +542,6 @@ go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= -go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= @@ -779,12 +549,8 @@ go.uber.org/zap v1.12.0 h1:dySoUQPFBGj6xwjmBzageVL8jGi8uxc6bEmJQjA06bw= go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -gocloud.dev v0.17.0/go.mod h1:tIHTRdR1V5dlD8sTkzYdTGizBJ314BDykJ8KmadEXwo= -gocloud.dev/pubsub/rabbitpubsub v0.17.0/go.mod h1:7o1XYDiIC+b0mmcwJuofsDg08t0DtU2ubfn7C/Uz7Y0= golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190130090550-b01c7a725664/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -792,7 +558,6 @@ golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -827,15 +592,11 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -848,25 +609,18 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663 h1:Dd5RoEW+yQi+9DMybroBctIdyiwuNT7sJFMC27/6KxI= -golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -877,23 +631,17 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEha golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -903,12 +651,10 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190710143415-6ec70d6a5542/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -916,10 +662,8 @@ golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4 h1:Hynbrlo6LbYI3H1IqXpkVDOcX/3HiPdhVEuyj5a59RM= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -929,7 +673,6 @@ golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -937,7 +680,6 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -961,13 +703,9 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -976,13 +714,9 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -992,7 +726,6 @@ google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 h1:aQktFqmDE2yjveX google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba h1:pRj9OXZbwNtbtZtOB4dLwfK4u+EVRMvP+e9zKkg2grM= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1006,38 +739,22 @@ google.golang.org/grpc v1.25.1 h1:wdKvqQk7IttEw92GoRyKG2IDrUIpgpj6H6m81yfeMW0= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= -gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= -gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= -gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= -gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= -gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= -gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= -gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= -gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= -gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= -gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= @@ -1062,19 +779,7 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -k8s.io/api v0.0.0-20191109101513-0171b7c15da1/go.mod h1:VJq7+38rpM4TSUbRiZX4P5UVAKK2UQpNQLZClkFQkpE= -k8s.io/apimachinery v0.0.0-20191109100837-dffb012825f2/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= -k8s.io/apimachinery v0.0.0-20191111054156-6eb29fdf75dc/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= -k8s.io/client-go v11.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= From 4205b9ff1b6a6317eecbbaf6f68b4cffcd0264dc Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 16 Apr 2020 09:23:57 +0200 Subject: [PATCH 120/407] rename grpc.go -> server.go --- pkg/server/grpc/{grpc.go => server.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pkg/server/grpc/{grpc.go => server.go} (100%) diff --git a/pkg/server/grpc/grpc.go b/pkg/server/grpc/server.go similarity index 100% rename from pkg/server/grpc/grpc.go rename to pkg/server/grpc/server.go From 13cac8ae87eb74ada1fa7c1524ea994e63435064 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 16 Apr 2020 09:24:17 +0200 Subject: [PATCH 121/407] rename options.go -> option.go --- pkg/server/grpc/{options.go => option.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pkg/server/grpc/{options.go => option.go} (100%) diff --git a/pkg/server/grpc/options.go b/pkg/server/grpc/option.go similarity index 100% rename from pkg/server/grpc/options.go rename to pkg/server/grpc/option.go From 86c52618ea7dc4422c01f064af0b5aa2ea309a24 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 17 Apr 2020 13:42:13 +0200 Subject: [PATCH 122/407] POC: extensions promoting their own setting bundles onto the settings service --- go.mod | 9 ++- go.sum | 115 ++++++-------------------------------- pkg/command/server.go | 10 +++- pkg/service/v0/service.go | 80 ++++++++++++++++++++++++++ 4 files changed, 113 insertions(+), 101 deletions(-) diff --git a/go.mod b/go.mod index 3a0c7df3f1..4447469d6f 100644 --- a/go.mod +++ b/go.mod @@ -3,13 +3,16 @@ module github.com/owncloud/ocis-accounts go 1.13 require ( - github.com/golang/protobuf v1.3.2 - github.com/grpc-ecosystem/grpc-gateway v1.9.4 // indirect - github.com/micro/cli/v2 v2.1.1 + github.com/golang/protobuf v1.3.5 + github.com/joho/godotenv v1.3.0 + github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec github.com/owncloud/ocis-pkg/v2 v2.0.1 + github.com/owncloud/ocis-settings v0.0.0-20200407203258-bd5da39fe8c0 github.com/restic/calens v0.2.0 github.com/spf13/viper v1.6.1 ) + +replace github.com/owncloud/ocis-settings => ../ocis-settings diff --git a/go.sum b/go.sum index 2d018cf6be..921c4df17e 100644 --- a/go.sum +++ b/go.sum @@ -12,13 +12,11 @@ cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7 cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= -contrib.go.opencensus.io/exporter/jaeger v0.2.0 h1:nhTv/Ry3lGmqbJ/JGvCjWxBl5ozRfqo86Ngz59UAlfk= contrib.go.opencensus.io/exporter/jaeger v0.2.0/go.mod h1:ukdzwIYYHgZ7QYtwVFQUjiT28BJHiMhTERo32s6qVgM= contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= -contrib.go.opencensus.io/exporter/ocagent v0.5.0 h1:TKXjQSRS0/cCDrP7KvkgU6SmILtF/yV2TOs/02K/WZQ= contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= +contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= -contrib.go.opencensus.io/exporter/zipkin v0.1.1 h1:PR+1zWqY8ceXs1qDQQIlgXe+sdiwCf0n32bH4+Epk8g= contrib.go.opencensus.io/exporter/zipkin v0.1.1/go.mod h1:GMvdSl3eJ2gapOaLKzTKE3qDgUkJ86k9k3yY2eqwkzc= contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= @@ -45,16 +43,12 @@ github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocm github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvdeRAgDr0izn4z5Ij88= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= -github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/sprig/v3 v3.0.1 h1:RuaOafp+8qOLUPX1lInLfUrLc1MEVbnz7a40RLoixKY= github.com/Masterminds/sprig/v3 v3.0.1/go.mod h1:Cp7HwZjmqKrC+Y7XqSJOU2yRvAJRGLiohfgz5ZJj8+4= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -73,7 +67,6 @@ github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= -github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75 h1:3ILjVyslFbc4jl1w5TWuvvslFD/nDfR2H8tVaMVLrEY= github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -97,7 +90,6 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee h1:3T/l+vMotQ7cDSLWNAn2Vg1SAQ3mdyLgBWWBitSS3uU= github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee/go.mod h1:u7Wtt4WATGGgae9mURNGQQqxAudPKrxfsbSDSGOso+g= github.com/asim/go-awsxray v0.0.0-20161209120537-0d8a60b6e205/go.mod h1:frVmN4PtXUuL1EbZn0uL4PHSTKNKFnbMpBIhngqMuNQ= github.com/asim/go-bson v0.0.0-20160318195205-84522947cabd/go.mod h1:L59ZX7HuzTbNzFBt8g3SJkRraj+GBOgvLAfJYJUcQ5w= @@ -128,14 +120,12 @@ github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVO github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= -github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= @@ -153,17 +143,13 @@ github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.17+incompatible h1:f/Z3EoDSx1yjaIjLQGo1diYUlQYSBrrAQ5vP8NjwXwo= github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.18+incompatible h1:Zz1aXgDrFFi1nadh58tA9ktt06cmPTwNNP3dXwIq1lE= github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= @@ -176,11 +162,9 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= @@ -202,6 +186,7 @@ github.com/eknkc/basex v1.0.0/go.mod h1:k/F/exNEHFdbs3ZHuasoP2E7zeWwZblG84Y7Z59v github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -227,9 +212,8 @@ github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= -github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= +github.com/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -239,7 +223,6 @@ github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3I github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= -github.com/go-log/log v0.1.0 h1:wudGTNsiGzrD5ZjgIkVZ517ugi2XRe9Q/xRCzwEO4/U= github.com/go-log/log v0.1.0/go.mod h1:4mBwpdRMFLiuXZDCwU2lKQFsoSCo72j3HqBK9d81N2M= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= @@ -258,45 +241,41 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/go-stomp/stomp v2.0.3+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31 h1:28FVBuwkwowZMjbA7M0wXsI6t3PYulRTMio3SO+eKCM= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc h1:55rEp52jU6bkyslZ1+C/7NGfpQsEc6pxGLAGDOctqbw= github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -321,7 +300,6 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -329,18 +307,13 @@ github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.2 h1:S+ef0492XaIknb8LMjcwgW2i3cNTzDYMmDrOThOJNWc= github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.4 h1:5xLhQjsk4zqPf9EHCrja2qFZMx+yBqkO3XgJ14bNnU0= github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hako/branca v0.0.0-20180808000428-10b799466ada/go.mod h1:tOPn4gvKEUWqIJNE+zpTeTALaRAXnrRqqSnPlO3VpEo= @@ -381,18 +354,14 @@ github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoI github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= -github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= @@ -400,24 +369,20 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joncalhoun/qson v0.0.0-20170526102502-8a9cab3a62b1/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= @@ -429,14 +394,11 @@ github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= @@ -450,19 +412,16 @@ github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA= github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gNfqwTxjbE7s3Vb8s= -github.com/lucas-clemente/quic-go v0.13.1 h1:CxtJTXQIh2aboCPk0M6vf530XOov6DZjVBiSE3nSj8s= github.com/lucas-clemente/quic-go v0.13.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= -github.com/lucas-clemente/quic-go v0.14.1 h1:c1aKoBZKOPA+49q96B1wGkibyPP0AxYh45WuAoq+87E= github.com/lucas-clemente/quic-go v0.14.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/marten-seemann/chacha20 v0.2.0 h1:f40vqzzx+3GdOmzQoItkLX5WLvHgPgyYqFFIO5Gh4hQ= github.com/marten-seemann/chacha20 v0.2.0/go.mod h1:HSdjFau7GzYRj+ahFNwsO3ouVJr1HFkWoEwNDb4TMtE= github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGDAUWqna+CNTrI= github.com/marten-seemann/qtls v0.3.2/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= -github.com/marten-seemann/qtls v0.4.1 h1:YlT8QP3WCCvvok7MGEZkMldXbyqgr8oFg5/n8Gtbkks= github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -480,8 +439,9 @@ github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaR github.com/mholt/certmagic v0.9.1/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= -github.com/micro/cli/v2 v2.1.1 h1:uFw0SMIKmGuyHIm8lXns/NOn7V62bM5y7DnlxUM+BEQ= github.com/micro/cli/v2 v2.1.1/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= +github.com/micro/cli/v2 v2.1.2 h1:43J1lChg/rZCC1rvdqZNFSQDrGT7qfMrtp6/ztpIkEM= +github.com/micro/cli/v2 v2.1.2/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6s+iDsrM= github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= @@ -495,18 +455,15 @@ github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1/go.mod h1:QrkcwcD github.com/micro/mdns v0.3.0 h1:bYycYe+98AXR3s8Nq5qvt6C573uFTDPIYzJemWON0QE= github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= github.com/micro/micro v1.16.0/go.mod h1:TO5Ng0KidbfRYIxVM4Q3deZ0A+qwRyP9WeXp+k2fWNA= -github.com/micro/protoc-gen-micro v1.0.0 h1:qKh5S3I1RfenhIs5mqDFJLwRlRDlgin7XWiUKZbpwLM= github.com/micro/protoc-gen-micro v1.0.0/go.mod h1:C8ij4DJhapBmypcT00AXdb0cZ675/3PqUO02buWWqbE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.22 h1:Jm64b3bO9kP43ddLjL2EY3Io6bmy1qGb9Xxz6TqS6rc= github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -522,7 +479,6 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= @@ -537,7 +493,6 @@ github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= -github.com/nats-io/jwt v0.3.0 h1:xdnzwFETV++jNc4W1mw//qFyJGb2ABOombmZJQS4+Qo= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= @@ -548,7 +503,6 @@ github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= -github.com/nats-io/nkeys v0.1.0 h1:qMd4+pRHgdr1nAClu+2h/2a5F2TmKcCzjCDazVgRoX4= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= @@ -565,7 +519,6 @@ github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4r github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= -github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= @@ -574,11 +527,9 @@ github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXW github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -589,11 +540,10 @@ github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59P github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin/zipkin-go v0.1.6 h1:yXiysv1CSK7Q5yjGy1710zZGnsbMUIjluWBxtLXHPBo= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= -github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec h1:gpILNWve7F8MIo/GBOM6bdszzZFfJEgcXPQBjDOMLAc= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= @@ -609,18 +559,17 @@ github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtb github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -652,9 +601,7 @@ github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/restic/calens v0.1.0 h1:RHGokdZ72dICyIz1EjEsfZwUhvNZz/zy2SawxJktdWA= github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= -github.com/restic/calens v0.2.0 h1:LVNAtmFc+Pb4ODX66qdX1T3Di1P0OTLyUsVyvM/xD7E= github.com/restic/calens v0.2.0/go.mod h1:UXwyAKS4wsgUZGEc7NrzzygJbLsQZIo3wl+62Q1wvmU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -678,17 +625,13 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5I github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -703,9 +646,11 @@ github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzu github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.5.0/go.mod h1:AkYRkVJF8TkSG/xet6PzXX+l39KhhXa2pdqVSxnTcn4= github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -714,7 +659,6 @@ github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRci github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= @@ -725,13 +669,10 @@ github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLp github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc h1:yUaosFVTJwnltaHbSNC3i82I92quFs+OFPRl8kNMVwo= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= -github.com/uber/jaeger-client-go v2.15.0+incompatible h1:NP3qsSqNxh8VYr956ur1N/1C1PjvOJnJykCzcD5QHbk= github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -747,13 +688,11 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -772,10 +711,8 @@ go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.12.0 h1:dySoUQPFBGj6xwjmBzageVL8jGi8uxc6bEmJQjA06bw= go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= @@ -802,7 +739,6 @@ golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a h1:R/qVym5WAxsZWQqZCwDY/8sdVKV1m1WgU4/S5IRQAzc= golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200117160349-530e935923ad h1:Jh8cai0fqIK+f6nG0UgPW5wFk8wmiMhM3AyciDBdtQg= golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -820,7 +756,6 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -850,6 +785,7 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -858,24 +794,19 @@ golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663 h1:Dd5RoEW+yQi+9DMybroBctIdyiwuNT7sJFMC27/6KxI= golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -906,6 +837,7 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190710143415-6ec70d6a5542/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -924,7 +856,6 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0 h1:xQwXv67TxFo9nC1GJFyab5eq/5B590r6RlnL/G8Sz7w= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -951,11 +882,9 @@ golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -966,7 +895,6 @@ google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1 google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -983,12 +911,11 @@ google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a h1:Ob5/580gVHBJZgXnff1cZDbG+xLtMVE5mDRTe+nIsX4= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 h1:aQktFqmDE2yjveXJlVIfslDFmFnUXSqG0i6KRcJAeMc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba h1:pRj9OXZbwNtbtZtOB4dLwfK4u+EVRMvP+e9zKkg2grM= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= @@ -996,13 +923,13 @@ google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmE google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= -google.golang.org/grpc v1.25.1 h1:wdKvqQk7IttEw92GoRyKG2IDrUIpgpj6H6m81yfeMW0= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1013,10 +940,8 @@ gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUy gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= @@ -1040,13 +965,11 @@ gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0F gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= gopkg.in/telegram-bot-api.v4 v4.6.4/go.mod h1:5DpGO5dbumb40px+dXcwCpcjmeHNYLpk0bp3XRNvWDM= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= @@ -1060,7 +983,6 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= k8s.io/api v0.0.0-20191109101513-0171b7c15da1/go.mod h1:VJq7+38rpM4TSUbRiZX4P5UVAKK2UQpNQLZClkFQkpE= k8s.io/apimachinery v0.0.0-20191109100837-dffb012825f2/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= @@ -1076,5 +998,4 @@ k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/command/server.go b/pkg/command/server.go index b96f9a3959..b0c5e10f55 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -9,6 +9,7 @@ import ( "github.com/oklog/run" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/server/grpc" + svc "github.com/owncloud/ocis-accounts/pkg/service/v0" oclog "github.com/owncloud/ocis-pkg/v2/log" ) @@ -65,7 +66,12 @@ func Server(cfg *config.Config) *cli.Command { }, }, Before: func(c *cli.Context) error { - logger = oclog.NewLogger(oclog.Name(cfg.Server.Name)) + logger = oclog.NewLogger( + oclog.Name(cfg.Server.Name), + oclog.Level("info"), + oclog.Color(true), + oclog.Pretty(true), + ) return ParseConfig(c, cfg) }, Action: func(c *cli.Context) error { @@ -83,6 +89,8 @@ func Server(cfg *config.Config) *cli.Command { ) gr.Add(func() error { + logger.Info().Str("service", service.Name()).Msg("Reporting settings bundle to account service") + go svc.ReportSettingsBundle(&logger) return service.Run() }, func(_ error) { fmt.Println("shutting down grpc server") diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index b927de58e6..2f6788efe4 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -4,10 +4,12 @@ import ( "context" "github.com/golang/protobuf/ptypes/empty" + "github.com/micro/go-micro/v2" "github.com/owncloud/ocis-accounts/pkg/account" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" olog "github.com/owncloud/ocis-pkg/v2/log" + settings "github.com/owncloud/ocis-settings/pkg/proto/v0" ) // New returns a new instance of Service @@ -65,3 +67,81 @@ func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) res.Records = r return nil } + +// ReportSettingsBundle writes the settings bundle for the extension on the ocis-settings service. +// TODO implement retry logic. +// TODO ensure the settings service is available. +func ReportSettingsBundle(l *olog.Logger) { + // TODO wrap this in an infinite for loop with a BREAK label to GOTO once the request succeed. + svc := micro.NewService() + svc.Init() + service := settings.NewBundleService("com.owncloud.ocis-settings", svc.Client()) // TODO fetch service name instead of hardcoding it. + + // TODO avoid hardcoding these values, perhaps load them from a file and using jsonpb's type Marshal. + createBundleRequest := settings.CreateSettingsBundleRequest{ + SettingsBundle: &settings.SettingsBundle{ + Extension: "ocis-accounts", + Key: "profile", + DisplayName: "Profile", + Settings: []*settings.Setting{ + &settings.Setting{ + Key: "timezone", + DisplayName: "Timezone", + Description: "User timezone", + Value: &settings.Setting_SingleChoiceValue{ + SingleChoiceValue: &settings.SingleChoiceListSetting{ + Options: []*settings.ListOption{ + &settings.ListOption{ + Selected: true, + Option: &settings.ListOption_StringValue{ + StringValue: "Europe/Berlin", + }, + }, + &settings.ListOption{ + Selected: false, + Option: &settings.ListOption_StringValue{ + StringValue: "Asia/Kathmandu", + }, + }, + }, + }, + }, + }, + &settings.Setting{ + Key: "language", + DisplayName: "Language", + Description: "User language", + Value: &settings.Setting_SingleChoiceValue{ + SingleChoiceValue: &settings.SingleChoiceListSetting{ + Options: []*settings.ListOption{ + &settings.ListOption{ + Selected: true, + Option: &settings.ListOption_StringValue{ + StringValue: "de_DE", + }, + }, + &settings.ListOption{ + Selected: false, + Option: &settings.ListOption_StringValue{ + StringValue: "en_EN", + }, + }, + }, + }, + }, + }, + }, + }, + } + + res, err := service.CreateSettingsBundle(context.Background(), &createBundleRequest) + if err != nil { + l.Err(err). + Msg("Error reporting settings bundle") + } else { + l.Info(). + Str("bundle key", res.GetSettingsBundle().GetKey()). + Msg("Succesfully reported settings bundle") + } + +} From 3100ed1a29a1251efa9e6d8a7e591d1532ed98ef Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 21 Apr 2020 12:01:51 +0200 Subject: [PATCH 123/407] Add option display names --- .gitignore | 4 ++++ pkg/service/v0/service.go | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 299a09c29e..9b9ecfed13 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ coverage.out +.idea /bin /dist /hugo + +/node_modules +/assets diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 2f6788efe4..705711a69a 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -75,7 +75,7 @@ func ReportSettingsBundle(l *olog.Logger) { // TODO wrap this in an infinite for loop with a BREAK label to GOTO once the request succeed. svc := micro.NewService() svc.Init() - service := settings.NewBundleService("com.owncloud.ocis-settings", svc.Client()) // TODO fetch service name instead of hardcoding it. + service := settings.NewBundleService("com.owncloud.web.ocis-settings", svc.Client()) // TODO fetch service name instead of hardcoding it. // TODO avoid hardcoding these values, perhaps load them from a file and using jsonpb's type Marshal. createBundleRequest := settings.CreateSettingsBundleRequest{ @@ -92,16 +92,16 @@ func ReportSettingsBundle(l *olog.Logger) { SingleChoiceValue: &settings.SingleChoiceListSetting{ Options: []*settings.ListOption{ &settings.ListOption{ - Selected: true, Option: &settings.ListOption_StringValue{ StringValue: "Europe/Berlin", }, + DisplayValue: "Europe/Berlin", }, &settings.ListOption{ - Selected: false, Option: &settings.ListOption_StringValue{ StringValue: "Asia/Kathmandu", }, + DisplayValue: "Asia/Kathmandu", }, }, }, @@ -115,16 +115,16 @@ func ReportSettingsBundle(l *olog.Logger) { SingleChoiceValue: &settings.SingleChoiceListSetting{ Options: []*settings.ListOption{ &settings.ListOption{ - Selected: true, Option: &settings.ListOption_StringValue{ StringValue: "de_DE", }, + DisplayValue: "Deutsch", }, &settings.ListOption{ - Selected: false, Option: &settings.ListOption_StringValue{ StringValue: "en_EN", }, + DisplayValue: "English", }, }, }, From 2471de39f39f7b01861c24ced557c2c23755ab77 Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Wed, 22 Apr 2020 15:48:09 +0200 Subject: [PATCH 124/407] Extract server flags to flagset pkg --- pkg/command/server.go | 44 ++----------------------------------- pkg/flagset/flagset.go | 50 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 42 deletions(-) create mode 100644 pkg/flagset/flagset.go diff --git a/pkg/command/server.go b/pkg/command/server.go index b96f9a3959..67471b248a 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -3,6 +3,7 @@ package command import ( "context" "fmt" + "github.com/owncloud/ocis-accounts/pkg/flagset" "syscall" "github.com/micro/cli/v2" @@ -22,48 +23,7 @@ func Server(cfg *config.Config) *cli.Command { Name: "server", Usage: "Start ocis accounts service", Description: "an accounts backend manager (driver) needs to be specified. By default the service uses the filesystem as storage", - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "manager", - DefaultText: "filesystem", - Usage: "accounts backend manager", - Value: "filesystem", - EnvVars: []string{"ACCOUNTS_MANAGER"}, - Destination: &cfg.Manager, - }, - &cli.StringFlag{ - Name: "mount-path", - Usage: "mounting point (necessary when manager=filesystem)", - EnvVars: []string{"ACCOUNTS_MOUNT_PATH"}, - Destination: &cfg.MountPath, - }, - &cli.StringFlag{ - Name: "name", - Value: "accounts", - DefaultText: "accounts", - Usage: "service name", - EnvVars: []string{"ACCOUNTS_NAME"}, - Destination: &cfg.Server.Name, - }, - &cli.StringFlag{ - Name: "namespace", - Aliases: []string{"ns"}, - Value: "com.owncloud", - DefaultText: "com.owncloud", - Usage: "namespace", - EnvVars: []string{"ACCOUNTS_NAMESPACE"}, - Destination: &cfg.Server.Namespace, - }, - &cli.StringFlag{ - Name: "address", - Aliases: []string{"addr"}, - Value: "localhost:9180", - DefaultText: "localhost:9180", - Usage: "service endpoint", - EnvVars: []string{"ACCOUNTS_ADDRESS"}, - Destination: &cfg.Server.Address, - }, - }, + Flags: flagset.ServerWithConfig(cfg), Before: func(c *cli.Context) error { logger = oclog.NewLogger(oclog.Name(cfg.Server.Name)) return ParseConfig(c, cfg) diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go new file mode 100644 index 0000000000..bbf5012e41 --- /dev/null +++ b/pkg/flagset/flagset.go @@ -0,0 +1,50 @@ +package flagset + +import "github.com/micro/cli/v2" +import "github.com/owncloud/ocis-accounts/pkg/config" + +// ServerWithConfig applies cfg to the root flagset +func ServerWithConfig(cfg *config.Config) []cli.Flag { + return []cli.Flag{ + &cli.StringFlag{ + Name: "manager", + DefaultText: "filesystem", + Usage: "accounts backend manager", + Value: "filesystem", + EnvVars: []string{"ACCOUNTS_MANAGER"}, + Destination: &cfg.Manager, + }, + &cli.StringFlag{ + Name: "mount-path", + Usage: "mounting point (necessary when manager=filesystem)", + EnvVars: []string{"ACCOUNTS_MOUNT_PATH"}, + Destination: &cfg.MountPath, + }, + &cli.StringFlag{ + Name: "name", + Value: "accounts", + DefaultText: "accounts", + Usage: "service name", + EnvVars: []string{"ACCOUNTS_NAME"}, + Destination: &cfg.Server.Name, + }, + &cli.StringFlag{ + Name: "namespace", + Aliases: []string{"ns"}, + Value: "com.owncloud", + DefaultText: "com.owncloud", + Usage: "namespace", + EnvVars: []string{"ACCOUNTS_NAMESPACE"}, + Destination: &cfg.Server.Namespace, + }, + &cli.StringFlag{ + Name: "address", + Aliases: []string{"addr"}, + Value: "localhost:9180", + DefaultText: "localhost:9180", + Usage: "service endpoint", + EnvVars: []string{"ACCOUNTS_ADDRESS"}, + Destination: &cfg.Server.Address, + }, + } +} From 8ce94c2f4adbd6ee1605cfea86f4f110a7f4a7d5 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 22 Apr 2020 15:51:24 +0200 Subject: [PATCH 125/407] Use changed grpc service address --- go.mod | 6 ++++-- go.sum | 29 +++++++++++++++++++++++++++++ pkg/command/server.go | 2 +- pkg/service/v0/service.go | 26 ++++++++++++-------------- 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 4447469d6f..ea7145fbda 100644 --- a/go.mod +++ b/go.mod @@ -3,16 +3,18 @@ module github.com/owncloud/ocis-accounts go 1.13 require ( - github.com/golang/protobuf v1.3.5 + github.com/golang/protobuf v1.4.0 github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 - github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec + github.com/owncloud/ocis-hello v0.1.0-alpha1 github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/owncloud/ocis-settings v0.0.0-20200407203258-bd5da39fe8c0 github.com/restic/calens v0.2.0 github.com/spf13/viper v1.6.1 ) +replace google.golang.org/grpc => google.golang.org/grpc v1.26.0 + replace github.com/owncloud/ocis-settings => ../ocis-settings diff --git a/go.sum b/go.sum index 921c4df17e..cf34386c67 100644 --- a/go.sum +++ b/go.sum @@ -84,6 +84,7 @@ github.com/anacrolix/sync v0.2.0/go.mod h1:BbecHL6jDSExojhNtgTFSBcdGerzNc64tz3DC github.com/anacrolix/tagflag v0.0.0-20180109131632-2146c8d41bf0/go.mod h1:1m2U/K6ZT+JZG0+bdMK6qauP49QT4wE5pmhJXOKKCHw= github.com/anacrolix/utp v0.0.0-20180219060659-9e0e1d1d0572/go.mod h1:MDwc+vsGEq7RMw6lr2GKOEqjWny5hO5OZXRVNaBJ2Dk= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= @@ -213,7 +214,9 @@ github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1T github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/chi v4.1.0+incompatible h1:ETj3cggsVIY2Xao5ExCu6YhEh5MD6JTfcBzS37R260w= github.com/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -266,8 +269,15 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0 h1:oOuy+ugB+P/kBdUnG5QaMXSIyJ1q38wWSojYCb3z5VQ= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= @@ -277,6 +287,7 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= @@ -315,6 +326,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.14.4 h1:IOPK2xMPP3aV6/NPt4jt//ELFo3Vv8sDVD8j3+tleDU= +github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hako/branca v0.0.0-20180808000428-10b799466ada/go.mod h1:tOPn4gvKEUWqIJNE+zpTeTALaRAXnrRqqSnPlO3VpEo= github.com/hashicorp/consul/api v1.2.0/go.mod h1:1SIkFYi2ZTXUE5Kgt179+4hH33djo11+0Eo2XgTAtkw= @@ -545,6 +558,7 @@ github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnh github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= +github.com/owncloud/ocis-hello v0.1.0-alpha1/go.mod h1:tU2bOB7DjuXZ+ju+5A+7pUHmTfPIYUk3tMflqHTBTpE= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1 h1:3ISEtfjAz4pDFczTggIJwKuft3bVsAp1C7dFY9BBPEs= @@ -604,6 +618,7 @@ github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqn github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= github.com/restic/calens v0.2.0/go.mod h1:UXwyAKS4wsgUZGEc7NrzzygJbLsQZIo3wl+62Q1wvmU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= @@ -789,6 +804,7 @@ golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -888,6 +904,7 @@ golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -915,10 +932,13 @@ google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba h1:pRj9OXZbwNtbtZtOB4dLwfK4u+EVRMvP+e9zKkg2grM= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb h1:nAFaltAMbNVA0rixtwvdnqgSVLX3HFUUvMkEklmzbYM= +google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -933,6 +953,14 @@ google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRn google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0 h1:qdOKuR/EIArgaWNjetjgTzgVTAZ+S/WXVrq9HW9zimw= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= @@ -975,6 +1003,7 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= diff --git a/pkg/command/server.go b/pkg/command/server.go index b0c5e10f55..7522b2b4f8 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -90,7 +90,7 @@ func Server(cfg *config.Config) *cli.Command { gr.Add(func() error { logger.Info().Str("service", service.Name()).Msg("Reporting settings bundle to account service") - go svc.ReportSettingsBundle(&logger) + go svc.RegisterSettingsBundles(&logger) return service.Run() }, func(_ error) { fmt.Println("shutting down grpc server") diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 705711a69a..1b57668a22 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -68,14 +68,12 @@ func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) return nil } -// ReportSettingsBundle writes the settings bundle for the extension on the ocis-settings service. -// TODO implement retry logic. -// TODO ensure the settings service is available. -func ReportSettingsBundle(l *olog.Logger) { - // TODO wrap this in an infinite for loop with a BREAK label to GOTO once the request succeed. +// RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. +func RegisterSettingsBundles(l *olog.Logger) { + // TODO it's ok if this fails. But show a warning that the settings service is not reachable. Make sure that init doesn't die if the settings service is not reachable. svc := micro.NewService() svc.Init() - service := settings.NewBundleService("com.owncloud.web.ocis-settings", svc.Client()) // TODO fetch service name instead of hardcoding it. + service := settings.NewBundleService("com.owncloud.api.settings", svc.Client()) // TODO fetch service name instead of hardcoding it. // TODO avoid hardcoding these values, perhaps load them from a file and using jsonpb's type Marshal. createBundleRequest := settings.CreateSettingsBundleRequest{ @@ -84,20 +82,20 @@ func ReportSettingsBundle(l *olog.Logger) { Key: "profile", DisplayName: "Profile", Settings: []*settings.Setting{ - &settings.Setting{ + { Key: "timezone", DisplayName: "Timezone", Description: "User timezone", Value: &settings.Setting_SingleChoiceValue{ SingleChoiceValue: &settings.SingleChoiceListSetting{ Options: []*settings.ListOption{ - &settings.ListOption{ + { Option: &settings.ListOption_StringValue{ StringValue: "Europe/Berlin", }, DisplayValue: "Europe/Berlin", }, - &settings.ListOption{ + { Option: &settings.ListOption_StringValue{ StringValue: "Asia/Kathmandu", }, @@ -107,20 +105,20 @@ func ReportSettingsBundle(l *olog.Logger) { }, }, }, - &settings.Setting{ + { Key: "language", DisplayName: "Language", Description: "User language", Value: &settings.Setting_SingleChoiceValue{ SingleChoiceValue: &settings.SingleChoiceListSetting{ Options: []*settings.ListOption{ - &settings.ListOption{ + { Option: &settings.ListOption_StringValue{ StringValue: "de_DE", }, DisplayValue: "Deutsch", }, - &settings.ListOption{ + { Option: &settings.ListOption_StringValue{ StringValue: "en_EN", }, @@ -137,11 +135,11 @@ func ReportSettingsBundle(l *olog.Logger) { res, err := service.CreateSettingsBundle(context.Background(), &createBundleRequest) if err != nil { l.Err(err). - Msg("Error reporting settings bundle") + Msg("Error registering settings bundle") } else { l.Info(). Str("bundle key", res.GetSettingsBundle().GetKey()). - Msg("Succesfully reported settings bundle") + Msg("Successfully registered settings bundle") } } From 0dd2ceef7898c0bc5e7f01147db82d68a72bdcd8 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Wed, 22 Apr 2020 19:26:40 +0200 Subject: [PATCH 126/407] add uuid (key) as part of the accounts payload --- go.mod | 2 - go.sum | 49 ++++++++-- pkg/proto/v0/accounts.pb.go | 159 ++++++++++++--------------------- pkg/proto/v0/accounts.proto | 12 +-- pkg/store/filesystem/option.go | 27 ++++++ pkg/store/filesystem/store.go | 22 ++++- 6 files changed, 153 insertions(+), 118 deletions(-) create mode 100644 pkg/store/filesystem/option.go diff --git a/go.mod b/go.mod index ea7145fbda..f5e910db42 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,9 @@ go 1.13 require ( github.com/golang/protobuf v1.4.0 - github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 - github.com/owncloud/ocis-hello v0.1.0-alpha1 github.com/owncloud/ocis-pkg/v2 v2.0.1 github.com/owncloud/ocis-settings v0.0.0-20200407203258-bd5da39fe8c0 github.com/restic/calens v0.2.0 diff --git a/go.sum b/go.sum index cf34386c67..6cb936ad82 100644 --- a/go.sum +++ b/go.sum @@ -43,12 +43,16 @@ github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocm github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvdeRAgDr0izn4z5Ij88= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= +github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig/v3 v3.0.1 h1:RuaOafp+8qOLUPX1lInLfUrLc1MEVbnz7a40RLoixKY= github.com/Masterminds/sprig/v3 v3.0.1/go.mod h1:Cp7HwZjmqKrC+Y7XqSJOU2yRvAJRGLiohfgz5ZJj8+4= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -144,6 +148,7 @@ github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -151,6 +156,7 @@ github.com/coreos/etcd v3.3.18+incompatible h1:Zz1aXgDrFFi1nadh58tA9ktt06cmPTwNN github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= @@ -163,9 +169,11 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= @@ -244,6 +252,7 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/go-stomp/stomp v2.0.3+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31 h1:28FVBuwkwowZMjbA7M0wXsI6t3PYulRTMio3SO+eKCM= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -254,6 +263,7 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -270,8 +280,6 @@ github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -283,10 +291,12 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -311,6 +321,7 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -318,9 +329,12 @@ github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -370,11 +384,13 @@ github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKe github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= +github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= @@ -382,6 +398,7 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joncalhoun/qson v0.0.0-20170526102502-8a9cab3a62b1/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -393,6 +410,7 @@ github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGn github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -407,11 +425,14 @@ github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= @@ -477,6 +498,7 @@ github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -492,6 +514,7 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= @@ -557,7 +580,6 @@ github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJ github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= -github.com/owncloud/ocis-hello v0.0.0-20200114105804-61741477dcec/go.mod h1:hrXqmloO2NHbdkDTPSNneobwzQgki8CUuQD8fqjkPv8= github.com/owncloud/ocis-hello v0.1.0-alpha1/go.mod h1:tU2bOB7DjuXZ+ju+5A+7pUHmTfPIYUk3tMflqHTBTpE= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= @@ -582,6 +604,7 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= @@ -616,6 +639,7 @@ github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40T github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= +github.com/restic/calens v0.2.0 h1:LVNAtmFc+Pb4ODX66qdX1T3Di1P0OTLyUsVyvM/xD7E= github.com/restic/calens v0.2.0/go.mod h1:UXwyAKS4wsgUZGEc7NrzzygJbLsQZIo3wl+62Q1wvmU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= @@ -640,13 +664,17 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5I github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -661,7 +689,6 @@ github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzu github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.5.0/go.mod h1:AkYRkVJF8TkSG/xet6PzXX+l39KhhXa2pdqVSxnTcn4= github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= @@ -674,6 +701,7 @@ github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRci github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= @@ -684,6 +712,7 @@ github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLp github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc h1:yUaosFVTJwnltaHbSNC3i82I92quFs+OFPRl8kNMVwo= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= @@ -703,11 +732,13 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -726,6 +757,7 @@ go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= @@ -771,6 +803,7 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -823,6 +856,7 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -872,6 +906,7 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0 h1:xQwXv67TxFo9nC1GJFyab5eq/5B590r6RlnL/G8Sz7w= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -901,9 +936,11 @@ golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -935,7 +972,6 @@ google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBr google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba h1:pRj9OXZbwNtbtZtOB4dLwfK4u+EVRMvP+e9zKkg2grM= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb h1:nAFaltAMbNVA0rixtwvdnqgSVLX3HFUUvMkEklmzbYM= google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -968,6 +1004,7 @@ gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUy gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= @@ -1012,6 +1049,7 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= k8s.io/api v0.0.0-20191109101513-0171b7c15da1/go.mod h1:VJq7+38rpM4TSUbRiZX4P5UVAKK2UQpNQLZClkFQkpE= k8s.io/apimachinery v0.0.0-20191109100837-dffb012825f2/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= @@ -1027,4 +1065,5 @@ k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 287bea7013..83483159a1 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -70,8 +70,7 @@ func (m *Record) GetPayload() *Payload { } type Payload struct { - Phoenix *Phoenix `protobuf:"bytes,1,opt,name=phoenix,proto3" json:"phoenix,omitempty"` - Account *Account `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` + Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -102,13 +101,6 @@ func (m *Payload) XXX_DiscardUnknown() { var xxx_messageInfo_Payload proto.InternalMessageInfo -func (m *Payload) GetPhoenix() *Phoenix { - if m != nil { - return m.Phoenix - } - return nil -} - func (m *Payload) GetAccount() *Account { if m != nil { return m.Account @@ -117,8 +109,9 @@ func (m *Payload) GetAccount() *Account { } type Account struct { - StandardClaims *StandardClaims `protobuf:"bytes,1,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` - Identities []*IdHistory `protobuf:"bytes,2,rep,name=identities,proto3" json:"identities,omitempty"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + StandardClaims *StandardClaims `protobuf:"bytes,2,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` + Identities []*IdHistory `protobuf:"bytes,3,rep,name=identities,proto3" json:"identities,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -149,6 +142,13 @@ func (m *Account) XXX_DiscardUnknown() { var xxx_messageInfo_Account proto.InternalMessageInfo +func (m *Account) GetUuid() string { + if m != nil { + return m.Uuid + } + return "" +} + func (m *Account) GetStandardClaims() *StandardClaims { if m != nil { return m.StandardClaims @@ -481,45 +481,6 @@ func (m *IdHistory) GetIss() string { return "" } -type Phoenix struct { - Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Phoenix) Reset() { *m = Phoenix{} } -func (m *Phoenix) String() string { return proto.CompactTextString(m) } -func (*Phoenix) ProtoMessage() {} -func (*Phoenix) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{6} -} - -func (m *Phoenix) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Phoenix.Unmarshal(m, b) -} -func (m *Phoenix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Phoenix.Marshal(b, m, deterministic) -} -func (m *Phoenix) XXX_Merge(src proto.Message) { - xxx_messageInfo_Phoenix.Merge(m, src) -} -func (m *Phoenix) XXX_Size() int { - return xxx_messageInfo_Phoenix.Size(m) -} -func (m *Phoenix) XXX_DiscardUnknown() { - xxx_messageInfo_Phoenix.DiscardUnknown(m) -} - -var xxx_messageInfo_Phoenix proto.InternalMessageInfo - -func (m *Phoenix) GetTheme() string { - if m != nil { - return m.Theme - } - return "" -} - type Query struct { Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -531,7 +492,7 @@ func (m *Query) Reset() { *m = Query{} } func (m *Query) String() string { return proto.CompactTextString(m) } func (*Query) ProtoMessage() {} func (*Query) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{7} + return fileDescriptor_e3c84319968a576b, []int{6} } func (m *Query) XXX_Unmarshal(b []byte) error { @@ -570,7 +531,7 @@ func (m *Records) Reset() { *m = Records{} } func (m *Records) String() string { return proto.CompactTextString(m) } func (*Records) ProtoMessage() {} func (*Records) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{8} + return fileDescriptor_e3c84319968a576b, []int{7} } func (m *Records) XXX_Unmarshal(b []byte) error { @@ -605,7 +566,6 @@ func init() { proto.RegisterType((*StandardClaims)(nil), "settings.StandardClaims") proto.RegisterType((*Address)(nil), "settings.Address") proto.RegisterType((*IdHistory)(nil), "settings.IdHistory") - proto.RegisterType((*Phoenix)(nil), "settings.Phoenix") proto.RegisterType((*Query)(nil), "settings.Query") proto.RegisterType((*Records)(nil), "settings.Records") } @@ -613,52 +573,51 @@ func init() { func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } var fileDescriptor_e3c84319968a576b = []byte{ - // 748 bytes of a gzipped FileDescriptorProto + // 728 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x54, 0x5f, 0x8f, 0xdb, 0x44, - 0x10, 0x97, 0x9b, 0xcb, 0x39, 0x99, 0xf4, 0xfe, 0xed, 0x95, 0x6a, 0x49, 0xa9, 0x1a, 0x2c, 0x21, - 0x05, 0x10, 0x09, 0x5c, 0xc5, 0x07, 0x38, 0x2a, 0x54, 0x90, 0x50, 0x05, 0x3e, 0xc1, 0x03, 0x2f, - 0x96, 0xe3, 0x9d, 0xe4, 0x56, 0x67, 0x7b, 0xad, 0xdd, 0x75, 0x20, 0xbc, 0xf1, 0x31, 0xf8, 0x30, - 0x7c, 0x31, 0x9e, 0xd0, 0xce, 0xae, 0x9d, 0x4b, 0xd3, 0xa7, 0xec, 0xef, 0xcf, 0x4c, 0xc6, 0xa3, - 0x99, 0x81, 0x17, 0xcd, 0xc3, 0x66, 0xd9, 0x68, 0x65, 0xd5, 0x72, 0xfb, 0xf5, 0x32, 0x2f, 0x0a, - 0xd5, 0xd6, 0xd6, 0x2c, 0x88, 0x61, 0x23, 0x83, 0xd6, 0xca, 0x7a, 0x63, 0xa6, 0x2f, 0x36, 0x4a, - 0x6d, 0x4a, 0xf4, 0xce, 0x55, 0xbb, 0x5e, 0x62, 0xd5, 0xd8, 0x9d, 0xb7, 0x25, 0x6f, 0xe1, 0x34, - 0xc5, 0x42, 0x69, 0xc1, 0x2e, 0x61, 0xf0, 0x80, 0x3b, 0x1e, 0xcd, 0xa2, 0xf9, 0x38, 0x75, 0x4f, - 0xf6, 0x25, 0xc4, 0x4d, 0xbe, 0x2b, 0x55, 0x2e, 0xf8, 0x93, 0x59, 0x34, 0x9f, 0xdc, 0x5c, 0x2d, - 0xba, 0xa4, 0x8b, 0x9f, 0xbd, 0x90, 0x76, 0x8e, 0xa4, 0x80, 0x38, 0x70, 0x14, 0x77, 0xaf, 0xb0, - 0x96, 0x7f, 0x52, 0xb6, 0xc3, 0x38, 0x2f, 0xa4, 0x9d, 0xc3, 0x99, 0x43, 0xe5, 0xc7, 0x7f, 0x72, - 0xeb, 0x85, 0xb4, 0x73, 0x24, 0x7f, 0x47, 0x10, 0x07, 0x92, 0xdd, 0xc2, 0x85, 0xb1, 0x79, 0x2d, - 0x72, 0x2d, 0xb2, 0xa2, 0xcc, 0x65, 0x65, 0xc2, 0xbf, 0xf1, 0x7d, 0x82, 0xbb, 0x60, 0x78, 0x43, - 0x7a, 0x7a, 0x6e, 0x0e, 0x30, 0x7b, 0x0d, 0x20, 0x05, 0xd6, 0x56, 0x5a, 0x89, 0x86, 0x3f, 0x99, - 0x0d, 0xe6, 0x93, 0x9b, 0xeb, 0x7d, 0xf4, 0x8f, 0xe2, 0x07, 0x69, 0xac, 0xd2, 0xbb, 0xf4, 0x91, - 0x2d, 0xf9, 0xef, 0x04, 0xce, 0x0f, 0xf3, 0xba, 0xd6, 0x99, 0x76, 0xd5, 0xb5, 0xce, 0xb4, 0x2b, - 0xc6, 0xe0, 0xa4, 0xce, 0x2b, 0xa4, 0x4f, 0x1a, 0xa7, 0xf4, 0x66, 0x2f, 0x01, 0x36, 0x72, 0x8b, - 0x75, 0x46, 0xca, 0x80, 0x94, 0x31, 0x31, 0xef, 0x9c, 0xfc, 0x0a, 0x26, 0xeb, 0xbc, 0x92, 0xe5, - 0xce, 0xeb, 0x27, 0xa4, 0x83, 0xa7, 0x3a, 0x43, 0x25, 0x85, 0x28, 0xd1, 0x1b, 0x86, 0xde, 0xe0, - 0x29, 0x32, 0x4c, 0x61, 0x54, 0xcb, 0xe2, 0x81, 0xd4, 0x53, 0x52, 0x7b, 0xcc, 0xbe, 0x02, 0xd6, - 0x68, 0x5c, 0xa3, 0xd6, 0x28, 0xb2, 0xd6, 0xa0, 0x26, 0x57, 0x4c, 0xae, 0xab, 0x5e, 0xf9, 0x35, - 0x08, 0x8c, 0x43, 0xdc, 0x68, 0xb5, 0x96, 0x25, 0xf2, 0x11, 0x79, 0x3a, 0x48, 0x8a, 0x2c, 0x6c, - 0xab, 0x91, 0x8f, 0x83, 0xe2, 0xa1, 0x53, 0xfe, 0xc0, 0x95, 0x91, 0x16, 0x39, 0x78, 0x25, 0x40, - 0xf6, 0x0c, 0x86, 0x58, 0xe5, 0xb2, 0xe4, 0x13, 0xe2, 0x3d, 0x60, 0x9f, 0xc1, 0x39, 0x3d, 0xb2, - 0x2d, 0x6a, 0xb9, 0x96, 0x28, 0xf8, 0xd3, 0x59, 0x34, 0x1f, 0xa5, 0x67, 0xc4, 0xfe, 0x16, 0x48, - 0xf6, 0x1c, 0x4e, 0x37, 0x58, 0x0b, 0xd4, 0xfc, 0x8c, 0xa2, 0x03, 0x62, 0x9f, 0xc0, 0x78, 0x25, - 0xb5, 0xbd, 0x17, 0xb9, 0x45, 0x7e, 0xee, 0xbb, 0xd9, 0x13, 0xae, 0x17, 0x7f, 0xa9, 0x1a, 0x65, - 0xbd, 0x56, 0xfc, 0xc2, 0xf7, 0xa2, 0xc3, 0x2e, 0x63, 0xa9, 0x8a, 0xbc, 0x44, 0x7e, 0xe9, 0x33, - 0x7a, 0xc4, 0x3e, 0x85, 0xa7, 0xcd, 0xbd, 0xaa, 0x31, 0xab, 0xdb, 0x6a, 0x85, 0x9a, 0x5f, 0x91, - 0x3a, 0x21, 0xee, 0x1d, 0x51, 0xec, 0x06, 0x3e, 0x7a, 0x6c, 0xd9, 0x97, 0xce, 0xa8, 0xf4, 0xeb, - 0x47, 0xde, 0xfe, 0x03, 0x5e, 0x02, 0xb4, 0x8d, 0x2b, 0x4a, 0x64, 0xb9, 0xe5, 0xd7, 0xb3, 0x68, - 0x3e, 0x4c, 0xc7, 0x81, 0xb9, 0xb5, 0xb4, 0x00, 0x42, 0x68, 0x34, 0x86, 0x3f, 0x3b, 0x5a, 0x00, - 0x2f, 0xa4, 0x9d, 0x23, 0xf9, 0xd7, 0x2d, 0x80, 0x7f, 0xbb, 0x06, 0xac, 0x95, 0xae, 0x72, 0x6b, - 0x51, 0x84, 0xd9, 0xdb, 0x13, 0xae, 0xbb, 0xc6, 0x6a, 0x44, 0x9b, 0x75, 0xd9, 0xfd, 0x2c, 0x9e, - 0x79, 0xb6, 0x4b, 0x32, 0x85, 0x11, 0x7d, 0xbd, 0xb4, 0xbb, 0x30, 0x92, 0x3d, 0x76, 0x7d, 0xd2, - 0xb8, 0x91, 0xaa, 0x0e, 0xc3, 0x18, 0x90, 0x1b, 0xc4, 0x46, 0x19, 0x9b, 0x97, 0x59, 0xa1, 0x44, - 0x3f, 0x88, 0x9e, 0x7a, 0xa3, 0x04, 0x4d, 0x02, 0xed, 0xa8, 0xde, 0x85, 0x39, 0xec, 0x60, 0xb2, - 0x84, 0x71, 0xbf, 0x55, 0x1f, 0x58, 0x9b, 0x4b, 0x18, 0xc8, 0xbe, 0x52, 0xf7, 0x4c, 0x5e, 0x41, - 0x1c, 0x4e, 0x86, 0x9b, 0x22, 0x7b, 0x8f, 0x15, 0x86, 0x00, 0x0f, 0x92, 0x8f, 0x61, 0xf8, 0x4b, - 0x8b, 0x3e, 0xdb, 0xe1, 0xfd, 0x4a, 0xbe, 0x85, 0xd8, 0xdf, 0x36, 0xc3, 0xbe, 0x80, 0x58, 0xfb, - 0x27, 0x8f, 0x68, 0xcd, 0x2f, 0xf7, 0x4d, 0xf6, 0x9e, 0xb4, 0x33, 0xdc, 0xfc, 0x13, 0xc1, 0xc5, - 0x5d, 0x10, 0xef, 0x50, 0x6f, 0x65, 0x81, 0xec, 0x73, 0x18, 0xdc, 0xa1, 0x65, 0x47, 0x51, 0xd3, - 0x23, 0x86, 0xcd, 0x61, 0xf0, 0x16, 0x2d, 0xbb, 0xd8, 0x0b, 0x54, 0xdf, 0x07, 0x9c, 0xdf, 0xc0, - 0xc9, 0x4f, 0xd2, 0x58, 0xf6, 0x7c, 0xe1, 0x2f, 0xf4, 0xa2, 0xbb, 0xd0, 0x8b, 0xef, 0xdd, 0x85, - 0x9e, 0x5e, 0xbd, 0x1f, 0x61, 0xbe, 0x8b, 0x7f, 0x1f, 0x7a, 0xd3, 0x29, 0xfd, 0xbc, 0xfe, 0x3f, - 0x00, 0x00, 0xff, 0xff, 0x89, 0x43, 0x0c, 0x13, 0x04, 0x06, 0x00, 0x00, + 0x10, 0x97, 0xc9, 0xe5, 0x9c, 0x4c, 0x7a, 0xff, 0xf6, 0x4a, 0xb5, 0xa4, 0x54, 0x04, 0x4b, 0x48, + 0x01, 0x44, 0x02, 0xa9, 0xe0, 0xfd, 0xa8, 0x50, 0x41, 0x42, 0x15, 0x38, 0x82, 0x07, 0x5e, 0x2c, + 0xc7, 0x3b, 0x49, 0x57, 0x67, 0x7b, 0xad, 0xdd, 0x75, 0x50, 0xf8, 0x1e, 0x3c, 0xf0, 0x61, 0xf8, + 0x62, 0x3c, 0xa1, 0x9d, 0x5d, 0x3b, 0x97, 0x5e, 0x9f, 0x3c, 0xbf, 0x3f, 0x33, 0x1a, 0x8f, 0x66, + 0x16, 0x9e, 0x37, 0xf7, 0xbb, 0x65, 0xa3, 0x95, 0x55, 0xcb, 0xfd, 0xd7, 0xcb, 0xbc, 0x28, 0x54, + 0x5b, 0x5b, 0xb3, 0x20, 0x86, 0x8d, 0x0c, 0x5a, 0x2b, 0xeb, 0x9d, 0x99, 0x3e, 0xdf, 0x29, 0xb5, + 0x2b, 0xd1, 0x3b, 0x37, 0xed, 0x76, 0x89, 0x55, 0x63, 0x0f, 0xde, 0x96, 0xbc, 0x86, 0xf3, 0x14, + 0x0b, 0xa5, 0x05, 0xbb, 0x86, 0xc1, 0x3d, 0x1e, 0x78, 0x34, 0x8b, 0xe6, 0xe3, 0xd4, 0x85, 0xec, + 0x4b, 0x88, 0x9b, 0xfc, 0x50, 0xaa, 0x5c, 0xf0, 0x0f, 0x66, 0xd1, 0x7c, 0xb2, 0xba, 0x59, 0x74, + 0x45, 0x17, 0xbf, 0x78, 0x21, 0xed, 0x1c, 0xc9, 0x77, 0x10, 0x07, 0xce, 0xe5, 0x85, 0x66, 0xa8, + 0xda, 0x49, 0xde, 0x9d, 0x17, 0xd2, 0xce, 0x91, 0xfc, 0x1d, 0x41, 0x1c, 0x48, 0xc6, 0xe0, 0xac, + 0x6d, 0xa5, 0x08, 0x3d, 0x50, 0xcc, 0xee, 0xe0, 0xca, 0xd8, 0xbc, 0x16, 0xb9, 0x16, 0x59, 0x51, + 0xe6, 0xb2, 0x32, 0xa1, 0x19, 0x7e, 0x2c, 0xba, 0x0e, 0x86, 0x57, 0xa4, 0xa7, 0x97, 0xe6, 0x04, + 0xb3, 0x97, 0x00, 0x52, 0x60, 0x6d, 0xa5, 0x95, 0x68, 0xf8, 0x60, 0x36, 0x98, 0x4f, 0x56, 0xb7, + 0xc7, 0xec, 0x9f, 0xc4, 0x8f, 0xd2, 0x58, 0xa5, 0x0f, 0xe9, 0x03, 0x5b, 0xf2, 0xdf, 0x19, 0x5c, + 0x9e, 0xd6, 0x75, 0x13, 0x32, 0xed, 0xa6, 0x9b, 0x90, 0x69, 0x37, 0xae, 0xe1, 0x3a, 0xaf, 0x90, + 0x3a, 0x1a, 0xa7, 0x14, 0xb3, 0x17, 0x00, 0x3b, 0xb9, 0xc7, 0x3a, 0x23, 0x65, 0x40, 0xca, 0x98, + 0x98, 0x37, 0x4e, 0xfe, 0x04, 0x26, 0xdb, 0xbc, 0x92, 0xe5, 0xc1, 0xeb, 0x67, 0xa4, 0x83, 0xa7, + 0x3a, 0x43, 0x25, 0x85, 0x28, 0xd1, 0x1b, 0x86, 0xde, 0xe0, 0x29, 0x32, 0x4c, 0x61, 0x54, 0xcb, + 0xe2, 0x9e, 0xd4, 0x73, 0x52, 0x7b, 0xcc, 0xbe, 0x02, 0xd6, 0x68, 0xdc, 0xa2, 0xd6, 0x28, 0xb2, + 0xd6, 0xa0, 0x26, 0x57, 0x4c, 0xae, 0x9b, 0x5e, 0xf9, 0x2d, 0x08, 0x8c, 0x43, 0xdc, 0x68, 0xb5, + 0x95, 0x25, 0xf2, 0x11, 0x79, 0x3a, 0x48, 0x8a, 0x2c, 0x6c, 0xab, 0x91, 0x8f, 0x83, 0xe2, 0xa1, + 0x53, 0xfe, 0xc4, 0x8d, 0x91, 0x16, 0x39, 0x78, 0x25, 0x40, 0xf6, 0x14, 0x86, 0x58, 0xe5, 0xb2, + 0xe4, 0x13, 0xe2, 0x3d, 0x60, 0x9f, 0xc1, 0x25, 0x05, 0xd9, 0x1e, 0xb5, 0xdc, 0x4a, 0x14, 0xfc, + 0xc9, 0x2c, 0x9a, 0x8f, 0xd2, 0x0b, 0x62, 0x7f, 0x0f, 0x24, 0x7b, 0x06, 0xe7, 0x3b, 0xac, 0x05, + 0x6a, 0x7e, 0x41, 0xd9, 0x01, 0xb1, 0x8f, 0x61, 0xbc, 0x91, 0xda, 0xbe, 0x15, 0xb9, 0x45, 0x7e, + 0xe9, 0xa7, 0xd9, 0x13, 0x6e, 0x16, 0x7f, 0xa9, 0x1a, 0x65, 0xbd, 0x55, 0xfc, 0xca, 0xcf, 0xa2, + 0xc3, 0xae, 0x62, 0xa9, 0x8a, 0xbc, 0x44, 0x7e, 0xed, 0x2b, 0x7a, 0xc4, 0x3e, 0x85, 0x27, 0xcd, + 0x5b, 0x55, 0x63, 0x56, 0xb7, 0xd5, 0x06, 0x35, 0xbf, 0x21, 0x75, 0x42, 0xdc, 0x1b, 0xa2, 0xd8, + 0x0a, 0x3e, 0x7c, 0x68, 0x39, 0xb6, 0xce, 0xa8, 0xf5, 0xdb, 0x07, 0xde, 0xfe, 0x07, 0x5e, 0x00, + 0xb4, 0x8d, 0x6b, 0x4a, 0x64, 0xb9, 0xe5, 0xb7, 0xb3, 0x68, 0x3e, 0x4c, 0xc7, 0x81, 0xb9, 0xb3, + 0x74, 0x14, 0x42, 0x68, 0x34, 0x86, 0x3f, 0x7d, 0x74, 0x14, 0x5e, 0x48, 0x3b, 0x47, 0xf2, 0xaf, + 0x3b, 0x0a, 0x1f, 0xbb, 0x01, 0x6c, 0x95, 0xae, 0x72, 0x6b, 0xb1, 0xbb, 0x8c, 0x23, 0xe1, 0xa6, + 0x6b, 0xac, 0x46, 0xb4, 0x59, 0x57, 0xdd, 0xef, 0xe2, 0x85, 0x67, 0xbb, 0x22, 0x53, 0x18, 0xd1, + 0xdf, 0x4b, 0x7b, 0x08, 0x2b, 0xd9, 0x63, 0x37, 0x27, 0x8d, 0x3b, 0xa9, 0xea, 0xb0, 0x8c, 0x01, + 0xb9, 0x45, 0x6c, 0x94, 0xb1, 0x79, 0x99, 0x15, 0x4a, 0xf4, 0x8b, 0xe8, 0xa9, 0x57, 0x4a, 0xd0, + 0x26, 0xd0, 0xdd, 0xea, 0x43, 0xd8, 0xc3, 0x0e, 0x26, 0x4b, 0x18, 0xf7, 0x57, 0xf5, 0x9e, 0xb3, + 0xb9, 0x86, 0x81, 0xec, 0x3b, 0x75, 0x61, 0xf2, 0x11, 0x0c, 0x7f, 0x6d, 0xd1, 0x9b, 0x4f, 0x5f, + 0xa1, 0xe4, 0x5b, 0x88, 0xfd, 0x0b, 0x65, 0xd8, 0x17, 0x10, 0x6b, 0x1f, 0xf2, 0x88, 0xae, 0xf8, + 0xfa, 0x38, 0x43, 0xef, 0x49, 0x3b, 0xc3, 0xea, 0x9f, 0x08, 0xae, 0xd6, 0x41, 0x5c, 0xa3, 0xde, + 0xcb, 0x02, 0xd9, 0xe7, 0x30, 0x58, 0xa3, 0x65, 0x8f, 0xb2, 0xa6, 0x8f, 0x18, 0x36, 0x87, 0xc1, + 0x6b, 0xb4, 0xec, 0xea, 0x28, 0x50, 0x7f, 0xef, 0x71, 0x7e, 0x03, 0x67, 0x3f, 0x4b, 0x63, 0xd9, + 0xb3, 0x85, 0x7f, 0x67, 0x17, 0xdd, 0x3b, 0xbb, 0xf8, 0xc1, 0xbd, 0xb3, 0xd3, 0x9b, 0x77, 0x33, + 0xcc, 0xf7, 0xf1, 0x1f, 0x43, 0x6f, 0x3a, 0xa7, 0xcf, 0xcb, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, + 0xde, 0xd4, 0xaa, 0xfd, 0xca, 0x05, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index d48059bcca..ba583cf591 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -16,13 +16,13 @@ message Record { } message Payload { - Phoenix phoenix = 1; - Account account = 2; + Account account = 1; } message Account { - StandardClaims standard_claims = 1; - repeated IdHistory identities = 2; // keep track of every identity of a given user + string uuid = 1; + StandardClaims standard_claims = 2; + repeated IdHistory identities = 3; // keep track of every identity of a given user } // OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims @@ -63,10 +63,6 @@ message IdHistory { string iss = 2; } -message Phoenix { - string theme = 1; -} - message Query { string key = 1; } diff --git a/pkg/store/filesystem/option.go b/pkg/store/filesystem/option.go new file mode 100644 index 0000000000..63ffb325af --- /dev/null +++ b/pkg/store/filesystem/option.go @@ -0,0 +1,27 @@ +package store + +// Options are the available configurable options on initialization. +type Options struct { + UUID string +} + +// Option captures configuration behavior. +type Option func(*Options) + +// NewOptions build a new Options struct. +func NewOptions(o ...Option) *Options { + opts := &Options{} + + for _, f := range o { + f(opts) + } + + return opts +} + +// WithUUID sets UUID option. +func WithUUID(uuid string) Option { + return func(o *Options) { + o.UUID = uuid + } +} diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index 5b21972f39..e7d8adbaa6 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -69,6 +69,19 @@ func (s Store) List() ([]*proto.Record, error) { return records, nil } +// NewRecord initializes a new record with the given options +func NewRecord(options ...Option) *proto.Record { + opts := NewOptions(options...) + + return &proto.Record{ + Payload: &proto.Payload{ + Account: &proto.Account{ + Uuid: opts.UUID, + }, + }, + } +} + // Read implements the store interface. This implementation only reads by id. func (s Store) Read(key string) (*proto.Record, error) { contents, err := ioutil.ReadFile(path.Join(s.mountPath, key)) @@ -77,13 +90,16 @@ func (s Store) Read(key string) (*proto.Record, error) { return nil, err } - record := proto.Record{} - if err = json.Unmarshal(contents, &record); err != nil { + rec := NewRecord( + WithUUID(key), + ) + + if err = json.Unmarshal(contents, rec); err != nil { s.Logger.Err(err).Msg("error unmarshaling record") return nil, err } - return &record, nil + return rec, nil } // Write implements the store interface From 3a9673021f499f0b96aea2cf6f6575d9cb831e1a Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Thu, 23 Apr 2020 15:24:39 +0200 Subject: [PATCH 127/407] Add another settings bundle and more dummy settings --- pkg/service/v0/service.go | 97 ++++++++++++++++++++++++++++++++++----- 1 file changed, 85 insertions(+), 12 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 1b57668a22..670302257b 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -76,12 +76,64 @@ func RegisterSettingsBundles(l *olog.Logger) { service := settings.NewBundleService("com.owncloud.api.settings", svc.Client()) // TODO fetch service name instead of hardcoding it. // TODO avoid hardcoding these values, perhaps load them from a file and using jsonpb's type Marshal. - createBundleRequest := settings.CreateSettingsBundleRequest{ + requests := []settings.CreateSettingsBundleRequest{ + generateSettingsBundleProfileRequest(), + generateSettingsBundleNotificationsRequest(), + } + + for _, request := range requests { + res, err := service.CreateSettingsBundle(context.Background(), &request) + if err != nil { + l.Err(err). + Msg("Error registering settings bundle") + } else { + l.Info(). + Str("bundle key", res.GetSettingsBundle().GetKey()). + Msg("Successfully registered settings bundle") + } + } +} + +func generateSettingsBundleProfileRequest() settings.CreateSettingsBundleRequest { + return settings.CreateSettingsBundleRequest{ SettingsBundle: &settings.SettingsBundle{ Extension: "ocis-accounts", Key: "profile", DisplayName: "Profile", Settings: []*settings.Setting{ + { + Key: "firstname", + DisplayName: "Firstname", + Description: "Input for firstname", + Value: &settings.Setting_StringValue{ + StringValue: &settings.StringSetting{ + Placeholder: "Set firstname", + }, + }, + }, + { + Key: "lastname", + DisplayName: "Lastname", + Description: "Input for lastname", + Value: &settings.Setting_StringValue{ + StringValue: &settings.StringSetting{ + Placeholder: "Set lastname", + }, + }, + }, + { + Key: "age", + DisplayName: "Age", + Description: "Input for age", + Value: &settings.Setting_IntValue{ + IntValue: &settings.IntSetting{ + Placeholder: "Set age", + Min: 16, + Max: 200, + Step: 2, + }, + }, + }, { Key: "timezone", DisplayName: "Timezone", @@ -131,15 +183,36 @@ func RegisterSettingsBundles(l *olog.Logger) { }, }, } - - res, err := service.CreateSettingsBundle(context.Background(), &createBundleRequest) - if err != nil { - l.Err(err). - Msg("Error registering settings bundle") - } else { - l.Info(). - Str("bundle key", res.GetSettingsBundle().GetKey()). - Msg("Successfully registered settings bundle") - } - +} + +func generateSettingsBundleNotificationsRequest() settings.CreateSettingsBundleRequest { + return settings.CreateSettingsBundleRequest{ + SettingsBundle: &settings.SettingsBundle{ + Extension: "ocis-accounts", + Key: "notifications", + DisplayName: "Notifications", + Settings: []*settings.Setting{ + { + Key: "email", + DisplayName: "Email", + Value: &settings.Setting_BoolValue{ + BoolValue: &settings.BoolSetting{ + Default: false, + Label: "Send via email", + }, + }, + }, + { + Key: "stream", + DisplayName: "Stream", + Value: &settings.Setting_BoolValue{ + BoolValue: &settings.BoolSetting{ + Default: true, + Label: "Show in stream", + }, + }, + }, + }, + }, + } } From d586fa93df9d83b96d72166cff70086b2c18ac68 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 28 Apr 2020 11:21:37 +0200 Subject: [PATCH 128/407] Add a dummy multi choice element --- pkg/service/v0/service.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 670302257b..7f74a67e72 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -212,6 +212,29 @@ func generateSettingsBundleNotificationsRequest() settings.CreateSettingsBundleR }, }, }, + { + Key: "transport", + DisplayName: "Transport", + Value: &settings.Setting_MultiChoiceValue{ + MultiChoiceValue: &settings.MultiChoiceListSetting{ + Options: []*settings.ListOption{ + { + Option: &settings.ListOption_StringValue{ + StringValue: "email", + }, + DisplayValue: "Send via email", + }, + { + Option: &settings.ListOption_StringValue{ + StringValue: "stream", + }, + DisplayValue: "Show in stream", + Default: true, + }, + }, + }, + }, + }, }, }, } From 548d0a691a24f82109fdbe02b61c630cdac71218 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 29 Apr 2020 09:53:43 +0200 Subject: [PATCH 129/407] Align with proto in settings service --- pkg/service/v0/service.go | 44 +++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 7f74a67e72..3ece9622db 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -76,33 +76,35 @@ func RegisterSettingsBundles(l *olog.Logger) { service := settings.NewBundleService("com.owncloud.api.settings", svc.Client()) // TODO fetch service name instead of hardcoding it. // TODO avoid hardcoding these values, perhaps load them from a file and using jsonpb's type Marshal. - requests := []settings.CreateSettingsBundleRequest{ + requests := []settings.SaveSettingsBundleRequest{ generateSettingsBundleProfileRequest(), generateSettingsBundleNotificationsRequest(), } for _, request := range requests { - res, err := service.CreateSettingsBundle(context.Background(), &request) + res, err := service.SaveSettingsBundle(context.Background(), &request) if err != nil { l.Err(err). Msg("Error registering settings bundle") } else { l.Info(). - Str("bundle key", res.GetSettingsBundle().GetKey()). + Str("bundle key", res.SettingsBundle.Identifier.BundleKey). Msg("Successfully registered settings bundle") } } } -func generateSettingsBundleProfileRequest() settings.CreateSettingsBundleRequest { - return settings.CreateSettingsBundleRequest{ +func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { + return settings.SaveSettingsBundleRequest{ SettingsBundle: &settings.SettingsBundle{ - Extension: "ocis-accounts", - Key: "profile", + Identifier: &settings.Identifier{ + Extension: "ocis-accounts", + BundleKey: "profile", + }, DisplayName: "Profile", Settings: []*settings.Setting{ { - Key: "firstname", + SettingKey: "firstname", DisplayName: "Firstname", Description: "Input for firstname", Value: &settings.Setting_StringValue{ @@ -112,7 +114,7 @@ func generateSettingsBundleProfileRequest() settings.CreateSettingsBundleRequest }, }, { - Key: "lastname", + SettingKey: "lastname", DisplayName: "Lastname", Description: "Input for lastname", Value: &settings.Setting_StringValue{ @@ -122,7 +124,7 @@ func generateSettingsBundleProfileRequest() settings.CreateSettingsBundleRequest }, }, { - Key: "age", + SettingKey: "age", DisplayName: "Age", Description: "Input for age", Value: &settings.Setting_IntValue{ @@ -135,7 +137,7 @@ func generateSettingsBundleProfileRequest() settings.CreateSettingsBundleRequest }, }, { - Key: "timezone", + SettingKey: "timezone", DisplayName: "Timezone", Description: "User timezone", Value: &settings.Setting_SingleChoiceValue{ @@ -158,7 +160,7 @@ func generateSettingsBundleProfileRequest() settings.CreateSettingsBundleRequest }, }, { - Key: "language", + SettingKey: "language", DisplayName: "Language", Description: "User language", Value: &settings.Setting_SingleChoiceValue{ @@ -185,15 +187,17 @@ func generateSettingsBundleProfileRequest() settings.CreateSettingsBundleRequest } } -func generateSettingsBundleNotificationsRequest() settings.CreateSettingsBundleRequest { - return settings.CreateSettingsBundleRequest{ +func generateSettingsBundleNotificationsRequest() settings.SaveSettingsBundleRequest { + return settings.SaveSettingsBundleRequest{ SettingsBundle: &settings.SettingsBundle{ - Extension: "ocis-accounts", - Key: "notifications", + Identifier: &settings.Identifier{ + Extension: "ocis-accounts", + BundleKey: "notifications", + }, DisplayName: "Notifications", Settings: []*settings.Setting{ { - Key: "email", + SettingKey: "email", DisplayName: "Email", Value: &settings.Setting_BoolValue{ BoolValue: &settings.BoolSetting{ @@ -203,7 +207,7 @@ func generateSettingsBundleNotificationsRequest() settings.CreateSettingsBundleR }, }, { - Key: "stream", + SettingKey: "stream", DisplayName: "Stream", Value: &settings.Setting_BoolValue{ BoolValue: &settings.BoolSetting{ @@ -213,7 +217,7 @@ func generateSettingsBundleNotificationsRequest() settings.CreateSettingsBundleR }, }, { - Key: "transport", + SettingKey: "transport", DisplayName: "Transport", Value: &settings.Setting_MultiChoiceValue{ MultiChoiceValue: &settings.MultiChoiceListSetting{ @@ -229,7 +233,7 @@ func generateSettingsBundleNotificationsRequest() settings.CreateSettingsBundleR StringValue: "stream", }, DisplayValue: "Show in stream", - Default: true, + Default: true, }, }, }, From b7fb179decca93af25605d4e11f1a95b61e52188 Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Wed, 29 Apr 2020 13:55:13 +0200 Subject: [PATCH 130/407] Make logging configurable --- changelog/unreleased/configurable-log.md | 5 +++++ pkg/command/root.go | 18 +++++++++------- pkg/config/config.go | 8 +++++++ pkg/flagset/flagset.go | 27 ++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 changelog/unreleased/configurable-log.md diff --git a/changelog/unreleased/configurable-log.md b/changelog/unreleased/configurable-log.md new file mode 100644 index 0000000000..41a4d5e466 --- /dev/null +++ b/changelog/unreleased/configurable-log.md @@ -0,0 +1,5 @@ +Enhancement: Logging is configurable + +ACCOUNTS_LOG_* env-vars or cli-flags can be used for logging configuration. See --help for more details. + +https://github.com/owncloud/ocis-accounts/pull/24 diff --git a/pkg/command/root.go b/pkg/command/root.go index bc0062a4f5..85308f7bdb 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -1,6 +1,7 @@ package command import ( + "github.com/owncloud/ocis-accounts/pkg/flagset" "os" "os/user" "path" @@ -24,25 +25,26 @@ var ( // Execute is the entry point for the ocis-accounts command. func Execute() error { + rootCfg := config.New() app := &cli.App{ Name: "ocis-accounts", Version: version.String, Usage: "Example service for Reva/oCIS", - + Flags: flagset.RootWithConfig(rootCfg), Before: func(c *cli.Context) error { - log := NewLogger(config.New()) + logger := NewLogger(config.New()) for _, v := range defaultConfigPaths { // location is the user's home if v[0] == '$' || v[0] == '~' { usr, _ := user.Current() err := godotenv.Load(path.Join(usr.HomeDir, ".ocis", defaultFilename+".env")) if err != nil { - log.Debug().Msgf("ignoring missing env file on dir: %v", v) + logger.Debug().Msgf("ignoring missing env file on dir: %v", v) } } else { err := godotenv.Load(path.Join(v, defaultFilename+".env")) if err != nil { - log.Debug().Msgf("ignoring missing env file on dir: %v", v) + logger.Debug().Msgf("ignoring missing env file on dir: %v", v) } } } @@ -57,7 +59,7 @@ func Execute() error { }, Commands: []*cli.Command{ - Server(config.New()), + Server(rootCfg), }, } @@ -78,9 +80,9 @@ func Execute() error { func NewLogger(cfg *config.Config) log.Logger { return log.NewLogger( log.Name("accounts"), - log.Level("info"), - log.Pretty(true), - log.Color(true), + log.Level(cfg.Log.Level), + log.Pretty(cfg.Log.Pretty), + log.Color(cfg.Log.Color), ) } diff --git a/pkg/config/config.go b/pkg/config/config.go index 66dadf2ad6..6c419c987d 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -8,11 +8,19 @@ type Server struct { Address string } +// Log defines the available logging configuration. +type Log struct { + Level string + Pretty bool + Color bool +} + // Config merges all Account config parameters. type Config struct { MountPath string Manager string Server Server + Log Log } // New returns a new config. diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index bbf5012e41..16dbe5d7d1 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -3,6 +3,33 @@ package flagset import "github.com/micro/cli/v2" import "github.com/owncloud/ocis-accounts/pkg/config" +// RootWithConfig applies cfg to the root flagset +func RootWithConfig(cfg *config.Config) []cli.Flag { + return []cli.Flag{ + &cli.StringFlag{ + Name: "log-level", + Value: "info", + Usage: "Set logging level", + EnvVars: []string{"ACCOUNTS_LOG_LEVEL"}, + Destination: &cfg.Log.Level, + }, + &cli.BoolFlag{ + Value: true, + Name: "log-pretty", + Usage: "Enable pretty logging", + EnvVars: []string{"ACCOUNTS_LOG_PRETTY"}, + Destination: &cfg.Log.Pretty, + }, + &cli.BoolFlag{ + Value: true, + Name: "log-color", + Usage: "Enable colored logging", + EnvVars: []string{"ACCOUNTS_LOG_COLOR"}, + Destination: &cfg.Log.Color, + }, + } +} + // ServerWithConfig applies cfg to the root flagset func ServerWithConfig(cfg *config.Config) []cli.Flag { return []cli.Flag{ From 17eaaa52886d950ea1f0841029f985179571f598 Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Wed, 29 Apr 2020 12:21:21 +0000 Subject: [PATCH 131/407] Automated changelog update [skip ci] --- CHANGELOG.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cf2749f84..b6ceba077b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,27 @@ -# Changes in 0.1.0 +# Changelog for [unreleased] (UNRELEASED) + +The following sections list the changes in ocis-accounts unreleased. + +[unreleased]: https://github.com/owncloud/ocis-accounts/compare/v0.1.0...master + +## Summary + +* Enhancement - Logging is configurable: [#24](https://github.com/owncloud/ocis-accounts/pull/24) + +## Details + +* Enhancement - Logging is configurable: [#24](https://github.com/owncloud/ocis-accounts/pull/24) + + ACCOUNTS_LOG_* env-vars or cli-flags can be used for logging configuration. See --help for + more details. + + https://github.com/owncloud/ocis-accounts/pull/24 + +# Changelog for [0.1.0] (2020-03-18) + +The following sections list the changes in ocis-accounts 0.1.0. + +[0.1.0]: https://github.com/owncloud/ocis-accounts/compare/500e303cb544ed93d84153f01219d77eeee44929...v0.1.0 ## Summary From 430f7a9f86ade1fb6331cdbc82712331f3f65367 Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Wed, 29 Apr 2020 18:05:43 +0200 Subject: [PATCH 132/407] Prepare release 0.1.1 --- changelog/{unreleased => 0.1.1_2020-04-29}/configurable-log.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changelog/{unreleased => 0.1.1_2020-04-29}/configurable-log.md (100%) diff --git a/changelog/unreleased/configurable-log.md b/changelog/0.1.1_2020-04-29/configurable-log.md similarity index 100% rename from changelog/unreleased/configurable-log.md rename to changelog/0.1.1_2020-04-29/configurable-log.md From 34c252647382af89ccb5f1fc4a464c642a8c42f1 Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Wed, 29 Apr 2020 20:13:39 +0000 Subject: [PATCH 133/407] Automated changelog update [skip ci] --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6ceba077b..1f2be334d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ -# Changelog for [unreleased] (UNRELEASED) +# Changelog for [0.1.1] (2020-04-29) -The following sections list the changes in ocis-accounts unreleased. +The following sections list the changes in ocis-accounts 0.1.1. -[unreleased]: https://github.com/owncloud/ocis-accounts/compare/v0.1.0...master +[0.1.1]: https://github.com/owncloud/ocis-accounts/compare/v0.1.0...v0.1.1 ## Summary From 3b6951cc803ec26c771829bd33be16e01a32b735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 30 Apr 2020 15:32:25 +0200 Subject: [PATCH 134/407] add query properties, add pb deps, fix pb target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- Makefile | 4 +- go.mod | 22 +- go.sum | 76 +- pkg/proto/v0/accounts.pb.go | 1342 ++++++++++++------ pkg/proto/v0/accounts.pb.micro.go | 80 +- pkg/proto/v0/accounts.proto | 66 +- pkg/server/grpc/server.go | 2 +- pkg/service/v0/service.go | 19 +- third_party/google/api/field_behavior.proto | 79 ++ third_party/google/protobuf/descriptor.proto | 909 ++++++++++++ 10 files changed, 2078 insertions(+), 521 deletions(-) create mode 100644 third_party/google/api/field_behavior.proto create mode 100644 third_party/google/protobuf/descriptor.proto diff --git a/Makefile b/Makefile index 4ecb44fc9e..e3e0b96008 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ BIN := bin DIST := dist HUGO := hugo PROTO_VERSION := v0 -PROTO_SRC := pkg/proto/$(PROTO_VERSION)/*.proto +PROTO_SRC := pkg/proto/$(PROTO_VERSION) ifeq ($(OS), Windows_NT) EXECUTABLE := $(NAME).exe @@ -158,4 +158,4 @@ watch: .PHONY: pb pb: - protoc --go_out=. --micro_out=. $(PROTO_SRC) + protoc -I=$(PROTO_SRC) -I=third_party --go_out=. --micro_out=. $(PROTO_SRC)/*.proto diff --git a/go.mod b/go.mod index a6310738a5..96351e8ea9 100644 --- a/go.mod +++ b/go.mod @@ -3,17 +3,23 @@ module github.com/owncloud/ocis-accounts go 1.13 require ( - github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31 // indirect - github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d // indirect - github.com/golang/protobuf v1.3.2 - github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect - github.com/grpc-ecosystem/grpc-gateway v1.9.4 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect + github.com/go-test/deep v1.0.6 // indirect + github.com/gogo/protobuf v1.3.1 // indirect + github.com/golang/protobuf v1.4.1 + github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.14.4 // indirect github.com/joho/godotenv v1.3.0 - github.com/micro/cli/v2 v2.1.1 + github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.0.0 github.com/oklog/run v1.1.0 - github.com/owncloud/ocis-pkg/v2 v2.0.1 + github.com/owncloud/ocis-pkg/v2 v2.2.1 github.com/restic/calens v0.2.0 github.com/spf13/afero v1.2.2 // indirect - github.com/spf13/viper v1.6.1 + github.com/spf13/viper v1.6.3 + google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84 + google.golang.org/protobuf v1.22.0 + honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab // indirect ) + +replace google.golang.org/grpc => google.golang.org/grpc v1.26.0 \ No newline at end of file diff --git a/go.sum b/go.sum index ea0250e399..1a21493aef 100644 --- a/go.sum +++ b/go.sum @@ -54,6 +54,7 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190808125512-07798873deee/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= @@ -97,7 +98,7 @@ github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kw github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.17+incompatible h1:f/Z3EoDSx1yjaIjLQGo1diYUlQYSBrrAQ5vP8NjwXwo= github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.18+incompatible h1:Zz1aXgDrFFi1nadh58tA9ktt06cmPTwNNP3dXwIq1lE= @@ -115,6 +116,8 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMElOWxok= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -169,15 +172,14 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31 h1:28FVBuwkwowZMjbA7M0wXsI6t3PYulRTMio3SO+eKCM= -github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.6 h1:UHSEyLZUwX9Qoi99vVwvewiMC8mM2bf7XEM2nqvzEn8= +github.com/go-test/deep v1.0.6/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -196,6 +198,16 @@ github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0 h1:aRz0NBceriICVtjhCgKkDvl+RudKu1CT6h0ZvUTrNfE= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0 h1:oOuy+ugB+P/kBdUnG5QaMXSIyJ1q38wWSojYCb3z5VQ= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= @@ -204,6 +216,8 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -216,8 +230,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= -github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= +github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= @@ -233,8 +247,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.4 h1:5xLhQjsk4zqPf9EHCrja2qFZMx+yBqkO3XgJ14bNnU0= -github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.14.4 h1:IOPK2xMPP3aV6/NPt4jt//ELFo3Vv8sDVD8j3+tleDU= +github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= @@ -243,8 +257,6 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= -github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= @@ -278,6 +290,7 @@ github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNE github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= @@ -325,6 +338,8 @@ github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= github.com/micro/cli/v2 v2.1.1 h1:uFw0SMIKmGuyHIm8lXns/NOn7V62bM5y7DnlxUM+BEQ= github.com/micro/cli/v2 v2.1.1/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= +github.com/micro/cli/v2 v2.1.2 h1:43J1lChg/rZCC1rvdqZNFSQDrGT7qfMrtp6/ztpIkEM= +github.com/micro/cli/v2 v2.1.2/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6s+iDsrM= github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= @@ -404,8 +419,8 @@ github.com/openzipkin/zipkin-go v0.1.6 h1:yXiysv1CSK7Q5yjGy1710zZGnsbMUIjluWBxtL github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= -github.com/owncloud/ocis-pkg/v2 v2.0.1 h1:3ISEtfjAz4pDFczTggIJwKuft3bVsAp1C7dFY9BBPEs= -github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= +github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV03z6zI= +github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= @@ -450,11 +465,10 @@ github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/restic/calens v0.1.0 h1:RHGokdZ72dICyIz1EjEsfZwUhvNZz/zy2SawxJktdWA= -github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= github.com/restic/calens v0.2.0 h1:LVNAtmFc+Pb4ODX66qdX1T3Di1P0OTLyUsVyvM/xD7E= github.com/restic/calens v0.2.0/go.mod h1:UXwyAKS4wsgUZGEc7NrzzygJbLsQZIo3wl+62Q1wvmU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= @@ -489,8 +503,8 @@ github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb6 github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= -github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs= +github.com/spf13/viper v1.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -511,7 +525,6 @@ github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= @@ -523,6 +536,7 @@ github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4m github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= @@ -592,6 +606,8 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -613,12 +629,15 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -695,12 +714,17 @@ golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200427214658-4697a2867c88 h1:Nj7oNnL9tSACMt2JvszZN6P4IXiy1t6E/YRMr7YtaSw= +golang.org/x/tools v0.0.0-20200427214658-4697a2867c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -720,12 +744,15 @@ google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a h1:Ob5/580gVHBJZgXnff1cZDbG+xLtMVE5mDRTe+nIsX4= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 h1:aQktFqmDE2yjveXJlVIfslDFmFnUXSqG0i6KRcJAeMc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba h1:pRj9OXZbwNtbtZtOB4dLwfK4u+EVRMvP+e9zKkg2grM= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84 h1:pSLkPbrjnPyLDYUO2VM9mDLqo2V6CFBY84lFSZAfoi4= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -739,6 +766,16 @@ google.golang.org/grpc v1.25.1 h1:wdKvqQk7IttEw92GoRyKG2IDrUIpgpj6H6m81yfeMW0= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0 h1:qdOKuR/EIArgaWNjetjgTzgVTAZ+S/WXVrq9HW9zimw= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0 h1:cJv5/xdbk1NnMPR1VP9+HU6gupuG9MLBoH1r6RHZ2MY= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= @@ -769,6 +806,7 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= @@ -779,6 +817,8 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab h1:33/51YKJC1SC6WAomp3Feij834LXL1uK1Jmt45mkghE= +honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab/go.mod h1:NELv708mC2Q9lQf29l+sO/v7NIOAQzEXu7jcugNzwvM= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 287bea7013..524adf5b2f 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -1,664 +1,1124 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// source: pkg/proto/v0/accounts.proto +// versions: +// protoc-gen-go v1.21.0-devel +// protoc v3.11.4 +// source: accounts.proto package proto import ( - fmt "fmt" - math "math" - proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/empty" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 type Record struct { - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Payload *Payload `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Payload *Payload `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` } -func (m *Record) Reset() { *m = Record{} } -func (m *Record) String() string { return proto.CompactTextString(m) } -func (*Record) ProtoMessage() {} +func (x *Record) Reset() { + *x = Record{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Record) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Record) ProtoMessage() {} + +func (x *Record) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Record.ProtoReflect.Descriptor instead. func (*Record) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{0} + return file_accounts_proto_rawDescGZIP(), []int{0} } -func (m *Record) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Record.Unmarshal(m, b) -} -func (m *Record) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Record.Marshal(b, m, deterministic) -} -func (m *Record) XXX_Merge(src proto.Message) { - xxx_messageInfo_Record.Merge(m, src) -} -func (m *Record) XXX_Size() int { - return xxx_messageInfo_Record.Size(m) -} -func (m *Record) XXX_DiscardUnknown() { - xxx_messageInfo_Record.DiscardUnknown(m) -} - -var xxx_messageInfo_Record proto.InternalMessageInfo - -func (m *Record) GetKey() string { - if m != nil { - return m.Key +func (x *Record) GetKey() string { + if x != nil { + return x.Key } return "" } -func (m *Record) GetPayload() *Payload { - if m != nil { - return m.Payload +func (x *Record) GetPayload() *Payload { + if x != nil { + return x.Payload } return nil } type Payload struct { - Phoenix *Phoenix `protobuf:"bytes,1,opt,name=phoenix,proto3" json:"phoenix,omitempty"` - Account *Account `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Phoenix *Phoenix `protobuf:"bytes,1,opt,name=phoenix,proto3" json:"phoenix,omitempty"` + Account *Account `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` } -func (m *Payload) Reset() { *m = Payload{} } -func (m *Payload) String() string { return proto.CompactTextString(m) } -func (*Payload) ProtoMessage() {} +func (x *Payload) Reset() { + *x = Payload{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Payload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Payload) ProtoMessage() {} + +func (x *Payload) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Payload.ProtoReflect.Descriptor instead. func (*Payload) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{1} + return file_accounts_proto_rawDescGZIP(), []int{1} } -func (m *Payload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Payload.Unmarshal(m, b) -} -func (m *Payload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Payload.Marshal(b, m, deterministic) -} -func (m *Payload) XXX_Merge(src proto.Message) { - xxx_messageInfo_Payload.Merge(m, src) -} -func (m *Payload) XXX_Size() int { - return xxx_messageInfo_Payload.Size(m) -} -func (m *Payload) XXX_DiscardUnknown() { - xxx_messageInfo_Payload.DiscardUnknown(m) -} - -var xxx_messageInfo_Payload proto.InternalMessageInfo - -func (m *Payload) GetPhoenix() *Phoenix { - if m != nil { - return m.Phoenix +func (x *Payload) GetPhoenix() *Phoenix { + if x != nil { + return x.Phoenix } return nil } -func (m *Payload) GetAccount() *Account { - if m != nil { - return m.Account +func (x *Payload) GetAccount() *Account { + if x != nil { + return x.Account } return nil } type Account struct { - StandardClaims *StandardClaims `protobuf:"bytes,1,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` - Identities []*IdHistory `protobuf:"bytes,2,rep,name=identities,proto3" json:"identities,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StandardClaims *StandardClaims `protobuf:"bytes,1,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` + Identities []*IdHistory `protobuf:"bytes,2,rep,name=identities,proto3" json:"identities,omitempty"` // keep track of every identity of a given user } -func (m *Account) Reset() { *m = Account{} } -func (m *Account) String() string { return proto.CompactTextString(m) } -func (*Account) ProtoMessage() {} +func (x *Account) Reset() { + *x = Account{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Account) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Account) ProtoMessage() {} + +func (x *Account) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Account.ProtoReflect.Descriptor instead. func (*Account) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{2} + return file_accounts_proto_rawDescGZIP(), []int{2} } -func (m *Account) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Account.Unmarshal(m, b) -} -func (m *Account) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Account.Marshal(b, m, deterministic) -} -func (m *Account) XXX_Merge(src proto.Message) { - xxx_messageInfo_Account.Merge(m, src) -} -func (m *Account) XXX_Size() int { - return xxx_messageInfo_Account.Size(m) -} -func (m *Account) XXX_DiscardUnknown() { - xxx_messageInfo_Account.DiscardUnknown(m) -} - -var xxx_messageInfo_Account proto.InternalMessageInfo - -func (m *Account) GetStandardClaims() *StandardClaims { - if m != nil { - return m.StandardClaims +func (x *Account) GetStandardClaims() *StandardClaims { + if x != nil { + return x.StandardClaims } return nil } -func (m *Account) GetIdentities() []*IdHistory { - if m != nil { - return m.Identities +func (x *Account) GetIdentities() []*IdHistory { + if x != nil { + return x.Identities } return nil } // OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims type StandardClaims struct { - Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - GivenName string `protobuf:"bytes,3,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` - FamilyName string `protobuf:"bytes,4,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"` - MiddleName string `protobuf:"bytes,5,opt,name=middle_name,json=middleName,proto3" json:"middle_name,omitempty"` - Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` - PreferredUsername string `protobuf:"bytes,7,opt,name=preferred_username,json=preferredUsername,proto3" json:"preferred_username,omitempty"` - Profile string `protobuf:"bytes,8,opt,name=profile,proto3" json:"profile,omitempty"` - Picture string `protobuf:"bytes,9,opt,name=picture,proto3" json:"picture,omitempty"` - Website string `protobuf:"bytes,10,opt,name=website,proto3" json:"website,omitempty"` - Email string `protobuf:"bytes,11,opt,name=email,proto3" json:"email,omitempty"` - EmailVerified bool `protobuf:"varint,12,opt,name=email_verified,json=emailVerified,proto3" json:"email_verified,omitempty"` - Gender string `protobuf:"bytes,13,opt,name=gender,proto3" json:"gender,omitempty"` - Birthdate string `protobuf:"bytes,14,opt,name=birthdate,proto3" json:"birthdate,omitempty"` - Zoneinfo string `protobuf:"bytes,15,opt,name=zoneinfo,proto3" json:"zoneinfo,omitempty"` - Locale string `protobuf:"bytes,16,opt,name=locale,proto3" json:"locale,omitempty"` - PhoneNumber string `protobuf:"bytes,17,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` - PhoneNumberVerified bool `protobuf:"varint,18,opt,name=phone_number_verified,json=phoneNumberVerified,proto3" json:"phone_number_verified,omitempty"` - UpdatedAt int32 `protobuf:"varint,19,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Address *Address `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + GivenName string `protobuf:"bytes,3,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` + FamilyName string `protobuf:"bytes,4,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"` + MiddleName string `protobuf:"bytes,5,opt,name=middle_name,json=middleName,proto3" json:"middle_name,omitempty"` + Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` + PreferredUsername string `protobuf:"bytes,7,opt,name=preferred_username,json=preferredUsername,proto3" json:"preferred_username,omitempty"` + Profile string `protobuf:"bytes,8,opt,name=profile,proto3" json:"profile,omitempty"` + Picture string `protobuf:"bytes,9,opt,name=picture,proto3" json:"picture,omitempty"` + Website string `protobuf:"bytes,10,opt,name=website,proto3" json:"website,omitempty"` + Email string `protobuf:"bytes,11,opt,name=email,proto3" json:"email,omitempty"` + EmailVerified bool `protobuf:"varint,12,opt,name=email_verified,json=emailVerified,proto3" json:"email_verified,omitempty"` + Gender string `protobuf:"bytes,13,opt,name=gender,proto3" json:"gender,omitempty"` + Birthdate string `protobuf:"bytes,14,opt,name=birthdate,proto3" json:"birthdate,omitempty"` + Zoneinfo string `protobuf:"bytes,15,opt,name=zoneinfo,proto3" json:"zoneinfo,omitempty"` + Locale string `protobuf:"bytes,16,opt,name=locale,proto3" json:"locale,omitempty"` + PhoneNumber string `protobuf:"bytes,17,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` + PhoneNumberVerified bool `protobuf:"varint,18,opt,name=phone_number_verified,json=phoneNumberVerified,proto3" json:"phone_number_verified,omitempty"` + UpdatedAt int32 `protobuf:"varint,19,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Address *Address `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty"` } -func (m *StandardClaims) Reset() { *m = StandardClaims{} } -func (m *StandardClaims) String() string { return proto.CompactTextString(m) } -func (*StandardClaims) ProtoMessage() {} +func (x *StandardClaims) Reset() { + *x = StandardClaims{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StandardClaims) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StandardClaims) ProtoMessage() {} + +func (x *StandardClaims) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StandardClaims.ProtoReflect.Descriptor instead. func (*StandardClaims) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{3} + return file_accounts_proto_rawDescGZIP(), []int{3} } -func (m *StandardClaims) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StandardClaims.Unmarshal(m, b) -} -func (m *StandardClaims) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StandardClaims.Marshal(b, m, deterministic) -} -func (m *StandardClaims) XXX_Merge(src proto.Message) { - xxx_messageInfo_StandardClaims.Merge(m, src) -} -func (m *StandardClaims) XXX_Size() int { - return xxx_messageInfo_StandardClaims.Size(m) -} -func (m *StandardClaims) XXX_DiscardUnknown() { - xxx_messageInfo_StandardClaims.DiscardUnknown(m) -} - -var xxx_messageInfo_StandardClaims proto.InternalMessageInfo - -func (m *StandardClaims) GetSub() string { - if m != nil { - return m.Sub +func (x *StandardClaims) GetSub() string { + if x != nil { + return x.Sub } return "" } -func (m *StandardClaims) GetName() string { - if m != nil { - return m.Name +func (x *StandardClaims) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *StandardClaims) GetGivenName() string { - if m != nil { - return m.GivenName +func (x *StandardClaims) GetGivenName() string { + if x != nil { + return x.GivenName } return "" } -func (m *StandardClaims) GetFamilyName() string { - if m != nil { - return m.FamilyName +func (x *StandardClaims) GetFamilyName() string { + if x != nil { + return x.FamilyName } return "" } -func (m *StandardClaims) GetMiddleName() string { - if m != nil { - return m.MiddleName +func (x *StandardClaims) GetMiddleName() string { + if x != nil { + return x.MiddleName } return "" } -func (m *StandardClaims) GetNickname() string { - if m != nil { - return m.Nickname +func (x *StandardClaims) GetNickname() string { + if x != nil { + return x.Nickname } return "" } -func (m *StandardClaims) GetPreferredUsername() string { - if m != nil { - return m.PreferredUsername +func (x *StandardClaims) GetPreferredUsername() string { + if x != nil { + return x.PreferredUsername } return "" } -func (m *StandardClaims) GetProfile() string { - if m != nil { - return m.Profile +func (x *StandardClaims) GetProfile() string { + if x != nil { + return x.Profile } return "" } -func (m *StandardClaims) GetPicture() string { - if m != nil { - return m.Picture +func (x *StandardClaims) GetPicture() string { + if x != nil { + return x.Picture } return "" } -func (m *StandardClaims) GetWebsite() string { - if m != nil { - return m.Website +func (x *StandardClaims) GetWebsite() string { + if x != nil { + return x.Website } return "" } -func (m *StandardClaims) GetEmail() string { - if m != nil { - return m.Email +func (x *StandardClaims) GetEmail() string { + if x != nil { + return x.Email } return "" } -func (m *StandardClaims) GetEmailVerified() bool { - if m != nil { - return m.EmailVerified +func (x *StandardClaims) GetEmailVerified() bool { + if x != nil { + return x.EmailVerified } return false } -func (m *StandardClaims) GetGender() string { - if m != nil { - return m.Gender +func (x *StandardClaims) GetGender() string { + if x != nil { + return x.Gender } return "" } -func (m *StandardClaims) GetBirthdate() string { - if m != nil { - return m.Birthdate +func (x *StandardClaims) GetBirthdate() string { + if x != nil { + return x.Birthdate } return "" } -func (m *StandardClaims) GetZoneinfo() string { - if m != nil { - return m.Zoneinfo +func (x *StandardClaims) GetZoneinfo() string { + if x != nil { + return x.Zoneinfo } return "" } -func (m *StandardClaims) GetLocale() string { - if m != nil { - return m.Locale +func (x *StandardClaims) GetLocale() string { + if x != nil { + return x.Locale } return "" } -func (m *StandardClaims) GetPhoneNumber() string { - if m != nil { - return m.PhoneNumber +func (x *StandardClaims) GetPhoneNumber() string { + if x != nil { + return x.PhoneNumber } return "" } -func (m *StandardClaims) GetPhoneNumberVerified() bool { - if m != nil { - return m.PhoneNumberVerified +func (x *StandardClaims) GetPhoneNumberVerified() bool { + if x != nil { + return x.PhoneNumberVerified } return false } -func (m *StandardClaims) GetUpdatedAt() int32 { - if m != nil { - return m.UpdatedAt +func (x *StandardClaims) GetUpdatedAt() int32 { + if x != nil { + return x.UpdatedAt } return 0 } -func (m *StandardClaims) GetAddress() *Address { - if m != nil { - return m.Address +func (x *StandardClaims) GetAddress() *Address { + if x != nil { + return x.Address } return nil } type Address struct { - Formatted string `protobuf:"bytes,1,opt,name=formatted,proto3" json:"formatted,omitempty"` - StreetAddress string `protobuf:"bytes,2,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` - Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` - Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` - PostalCode string `protobuf:"bytes,5,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` - Country string `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Formatted string `protobuf:"bytes,1,opt,name=formatted,proto3" json:"formatted,omitempty"` + StreetAddress string `protobuf:"bytes,2,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` + Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + PostalCode string `protobuf:"bytes,5,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` + Country string `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"` } -func (m *Address) Reset() { *m = Address{} } -func (m *Address) String() string { return proto.CompactTextString(m) } -func (*Address) ProtoMessage() {} +func (x *Address) Reset() { + *x = Address{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Address) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Address) ProtoMessage() {} + +func (x *Address) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Address.ProtoReflect.Descriptor instead. func (*Address) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{4} + return file_accounts_proto_rawDescGZIP(), []int{4} } -func (m *Address) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Address.Unmarshal(m, b) -} -func (m *Address) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Address.Marshal(b, m, deterministic) -} -func (m *Address) XXX_Merge(src proto.Message) { - xxx_messageInfo_Address.Merge(m, src) -} -func (m *Address) XXX_Size() int { - return xxx_messageInfo_Address.Size(m) -} -func (m *Address) XXX_DiscardUnknown() { - xxx_messageInfo_Address.DiscardUnknown(m) -} - -var xxx_messageInfo_Address proto.InternalMessageInfo - -func (m *Address) GetFormatted() string { - if m != nil { - return m.Formatted +func (x *Address) GetFormatted() string { + if x != nil { + return x.Formatted } return "" } -func (m *Address) GetStreetAddress() string { - if m != nil { - return m.StreetAddress +func (x *Address) GetStreetAddress() string { + if x != nil { + return x.StreetAddress } return "" } -func (m *Address) GetLocality() string { - if m != nil { - return m.Locality +func (x *Address) GetLocality() string { + if x != nil { + return x.Locality } return "" } -func (m *Address) GetRegion() string { - if m != nil { - return m.Region +func (x *Address) GetRegion() string { + if x != nil { + return x.Region } return "" } -func (m *Address) GetPostalCode() string { - if m != nil { - return m.PostalCode +func (x *Address) GetPostalCode() string { + if x != nil { + return x.PostalCode } return "" } -func (m *Address) GetCountry() string { - if m != nil { - return m.Country +func (x *Address) GetCountry() string { + if x != nil { + return x.Country } return "" } type IdHistory struct { - Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` - Iss string `protobuf:"bytes,2,opt,name=iss,proto3" json:"iss,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` + Iss string `protobuf:"bytes,2,opt,name=iss,proto3" json:"iss,omitempty"` } -func (m *IdHistory) Reset() { *m = IdHistory{} } -func (m *IdHistory) String() string { return proto.CompactTextString(m) } -func (*IdHistory) ProtoMessage() {} +func (x *IdHistory) Reset() { + *x = IdHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IdHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IdHistory) ProtoMessage() {} + +func (x *IdHistory) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IdHistory.ProtoReflect.Descriptor instead. func (*IdHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{5} + return file_accounts_proto_rawDescGZIP(), []int{5} } -func (m *IdHistory) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IdHistory.Unmarshal(m, b) -} -func (m *IdHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IdHistory.Marshal(b, m, deterministic) -} -func (m *IdHistory) XXX_Merge(src proto.Message) { - xxx_messageInfo_IdHistory.Merge(m, src) -} -func (m *IdHistory) XXX_Size() int { - return xxx_messageInfo_IdHistory.Size(m) -} -func (m *IdHistory) XXX_DiscardUnknown() { - xxx_messageInfo_IdHistory.DiscardUnknown(m) -} - -var xxx_messageInfo_IdHistory proto.InternalMessageInfo - -func (m *IdHistory) GetSub() string { - if m != nil { - return m.Sub +func (x *IdHistory) GetSub() string { + if x != nil { + return x.Sub } return "" } -func (m *IdHistory) GetIss() string { - if m != nil { - return m.Iss +func (x *IdHistory) GetIss() string { + if x != nil { + return x.Iss } return "" } type Phoenix struct { - Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` } -func (m *Phoenix) Reset() { *m = Phoenix{} } -func (m *Phoenix) String() string { return proto.CompactTextString(m) } -func (*Phoenix) ProtoMessage() {} +func (x *Phoenix) Reset() { + *x = Phoenix{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Phoenix) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Phoenix) ProtoMessage() {} + +func (x *Phoenix) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Phoenix.ProtoReflect.Descriptor instead. func (*Phoenix) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{6} + return file_accounts_proto_rawDescGZIP(), []int{6} } -func (m *Phoenix) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Phoenix.Unmarshal(m, b) -} -func (m *Phoenix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Phoenix.Marshal(b, m, deterministic) -} -func (m *Phoenix) XXX_Merge(src proto.Message) { - xxx_messageInfo_Phoenix.Merge(m, src) -} -func (m *Phoenix) XXX_Size() int { - return xxx_messageInfo_Phoenix.Size(m) -} -func (m *Phoenix) XXX_DiscardUnknown() { - xxx_messageInfo_Phoenix.DiscardUnknown(m) +func (x *Phoenix) GetTheme() string { + if x != nil { + return x.Theme + } + return "" } -var xxx_messageInfo_Phoenix proto.InternalMessageInfo +// Used to fetch exactly one user. The conditions are optional. If set, all have to be true. +type GetRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Phoenix) GetTheme() string { - if m != nil { - return m.Theme + // Used to look up user by the oidc sub and iss + Identity *IdHistory `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` + // Used to look up the user by our internal uuid + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` + // Used to authenticate users using basic auth + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` + // Used as a fallback mechanism in case sub or iss changed for an existing user + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` +} + +func (x *GetRequest) Reset() { + *x = GetRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRequest) ProtoMessage() {} + +func (x *GetRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRequest.ProtoReflect.Descriptor instead. +func (*GetRequest) Descriptor() ([]byte, []int) { + return file_accounts_proto_rawDescGZIP(), []int{7} +} + +func (x *GetRequest) GetIdentity() *IdHistory { + if x != nil { + return x.Identity + } + return nil +} + +func (x *GetRequest) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *GetRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *GetRequest) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *GetRequest) GetEmail() string { + if x != nil { + return x.Email } return "" } type Query struct { - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The maximum number of accounts to return in the response. + PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A pagination token returned from a previous call to `Get` + // that indicates from where search should continue. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Search criteria used to select the Accounts to return. + // If no search criteria is specified then all accounts will be + // returned. + // + // Query expressions can be used to restrict results based upon the standard claims, + // iss, and uuid where the operators `=`, `NOT`, `AND` and `OR` + // can be used along with the suffix wildcard symbol `*`. + // + // The *_name claims in a query expression should use escaped quotes + // for values that include whitespace to prevent unexpected behavior. + // + // Some example queries are: + // + // * Query `name=Th*` returns accounts whose name claim + // starts with "Th". + // * Query `email=foo@example.com` returns accounts with + // `email` set to `foo@example.com`. + // * Query `address/country=de` returns accounts that have + // an address in Germany + // * Query `name=\\"Test String\\"` returns accounts with + // display names that include both "Test" and "String". + Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` } -func (m *Query) Reset() { *m = Query{} } -func (m *Query) String() string { return proto.CompactTextString(m) } -func (*Query) ProtoMessage() {} +func (x *Query) Reset() { + *x = Query{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Query) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Query) ProtoMessage() {} + +func (x *Query) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Query.ProtoReflect.Descriptor instead. func (*Query) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{7} + return file_accounts_proto_rawDescGZIP(), []int{8} } -func (m *Query) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Query.Unmarshal(m, b) -} -func (m *Query) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Query.Marshal(b, m, deterministic) -} -func (m *Query) XXX_Merge(src proto.Message) { - xxx_messageInfo_Query.Merge(m, src) -} -func (m *Query) XXX_Size() int { - return xxx_messageInfo_Query.Size(m) -} -func (m *Query) XXX_DiscardUnknown() { - xxx_messageInfo_Query.DiscardUnknown(m) +func (x *Query) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 } -var xxx_messageInfo_Query proto.InternalMessageInfo +func (x *Query) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} -func (m *Query) GetKey() string { - if m != nil { - return m.Key +func (x *Query) GetQuery() string { + if x != nil { + return x.Query } return "" } type Records struct { - Records []*Record `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A possibly paginated accounts search result for + // the specified query. + Records []*Record `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` + // A pagination token returned from a previous call to `Search` + // that indicates from where searching should continue. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (m *Records) Reset() { *m = Records{} } -func (m *Records) String() string { return proto.CompactTextString(m) } -func (*Records) ProtoMessage() {} +func (x *Records) Reset() { + *x = Records{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Records) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Records) ProtoMessage() {} + +func (x *Records) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Records.ProtoReflect.Descriptor instead. func (*Records) Descriptor() ([]byte, []int) { - return fileDescriptor_e3c84319968a576b, []int{8} + return file_accounts_proto_rawDescGZIP(), []int{9} } -func (m *Records) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Records.Unmarshal(m, b) -} -func (m *Records) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Records.Marshal(b, m, deterministic) -} -func (m *Records) XXX_Merge(src proto.Message) { - xxx_messageInfo_Records.Merge(m, src) -} -func (m *Records) XXX_Size() int { - return xxx_messageInfo_Records.Size(m) -} -func (m *Records) XXX_DiscardUnknown() { - xxx_messageInfo_Records.DiscardUnknown(m) -} - -var xxx_messageInfo_Records proto.InternalMessageInfo - -func (m *Records) GetRecords() []*Record { - if m != nil { - return m.Records +func (x *Records) GetRecords() []*Record { + if x != nil { + return x.Records } return nil } -func init() { - proto.RegisterType((*Record)(nil), "settings.Record") - proto.RegisterType((*Payload)(nil), "settings.Payload") - proto.RegisterType((*Account)(nil), "settings.Account") - proto.RegisterType((*StandardClaims)(nil), "settings.StandardClaims") - proto.RegisterType((*Address)(nil), "settings.Address") - proto.RegisterType((*IdHistory)(nil), "settings.IdHistory") - proto.RegisterType((*Phoenix)(nil), "settings.Phoenix") - proto.RegisterType((*Query)(nil), "settings.Query") - proto.RegisterType((*Records)(nil), "settings.Records") +func (x *Records) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" } -func init() { proto.RegisterFile("pkg/proto/v0/accounts.proto", fileDescriptor_e3c84319968a576b) } +var File_accounts_proto protoreflect.FileDescriptor -var fileDescriptor_e3c84319968a576b = []byte{ - // 748 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x54, 0x5f, 0x8f, 0xdb, 0x44, - 0x10, 0x97, 0x9b, 0xcb, 0x39, 0x99, 0xf4, 0xfe, 0xed, 0x95, 0x6a, 0x49, 0xa9, 0x1a, 0x2c, 0x21, - 0x05, 0x10, 0x09, 0x5c, 0xc5, 0x07, 0x38, 0x2a, 0x54, 0x90, 0x50, 0x05, 0x3e, 0xc1, 0x03, 0x2f, - 0x96, 0xe3, 0x9d, 0xe4, 0x56, 0x67, 0x7b, 0xad, 0xdd, 0x75, 0x20, 0xbc, 0xf1, 0x31, 0xf8, 0x30, - 0x7c, 0x31, 0x9e, 0xd0, 0xce, 0xae, 0x9d, 0x4b, 0xd3, 0xa7, 0xec, 0xef, 0xcf, 0x4c, 0xc6, 0xa3, - 0x99, 0x81, 0x17, 0xcd, 0xc3, 0x66, 0xd9, 0x68, 0x65, 0xd5, 0x72, 0xfb, 0xf5, 0x32, 0x2f, 0x0a, - 0xd5, 0xd6, 0xd6, 0x2c, 0x88, 0x61, 0x23, 0x83, 0xd6, 0xca, 0x7a, 0x63, 0xa6, 0x2f, 0x36, 0x4a, - 0x6d, 0x4a, 0xf4, 0xce, 0x55, 0xbb, 0x5e, 0x62, 0xd5, 0xd8, 0x9d, 0xb7, 0x25, 0x6f, 0xe1, 0x34, - 0xc5, 0x42, 0x69, 0xc1, 0x2e, 0x61, 0xf0, 0x80, 0x3b, 0x1e, 0xcd, 0xa2, 0xf9, 0x38, 0x75, 0x4f, - 0xf6, 0x25, 0xc4, 0x4d, 0xbe, 0x2b, 0x55, 0x2e, 0xf8, 0x93, 0x59, 0x34, 0x9f, 0xdc, 0x5c, 0x2d, - 0xba, 0xa4, 0x8b, 0x9f, 0xbd, 0x90, 0x76, 0x8e, 0xa4, 0x80, 0x38, 0x70, 0x14, 0x77, 0xaf, 0xb0, - 0x96, 0x7f, 0x52, 0xb6, 0xc3, 0x38, 0x2f, 0xa4, 0x9d, 0xc3, 0x99, 0x43, 0xe5, 0xc7, 0x7f, 0x72, - 0xeb, 0x85, 0xb4, 0x73, 0x24, 0x7f, 0x47, 0x10, 0x07, 0x92, 0xdd, 0xc2, 0x85, 0xb1, 0x79, 0x2d, - 0x72, 0x2d, 0xb2, 0xa2, 0xcc, 0x65, 0x65, 0xc2, 0xbf, 0xf1, 0x7d, 0x82, 0xbb, 0x60, 0x78, 0x43, - 0x7a, 0x7a, 0x6e, 0x0e, 0x30, 0x7b, 0x0d, 0x20, 0x05, 0xd6, 0x56, 0x5a, 0x89, 0x86, 0x3f, 0x99, - 0x0d, 0xe6, 0x93, 0x9b, 0xeb, 0x7d, 0xf4, 0x8f, 0xe2, 0x07, 0x69, 0xac, 0xd2, 0xbb, 0xf4, 0x91, - 0x2d, 0xf9, 0xef, 0x04, 0xce, 0x0f, 0xf3, 0xba, 0xd6, 0x99, 0x76, 0xd5, 0xb5, 0xce, 0xb4, 0x2b, - 0xc6, 0xe0, 0xa4, 0xce, 0x2b, 0xa4, 0x4f, 0x1a, 0xa7, 0xf4, 0x66, 0x2f, 0x01, 0x36, 0x72, 0x8b, - 0x75, 0x46, 0xca, 0x80, 0x94, 0x31, 0x31, 0xef, 0x9c, 0xfc, 0x0a, 0x26, 0xeb, 0xbc, 0x92, 0xe5, - 0xce, 0xeb, 0x27, 0xa4, 0x83, 0xa7, 0x3a, 0x43, 0x25, 0x85, 0x28, 0xd1, 0x1b, 0x86, 0xde, 0xe0, - 0x29, 0x32, 0x4c, 0x61, 0x54, 0xcb, 0xe2, 0x81, 0xd4, 0x53, 0x52, 0x7b, 0xcc, 0xbe, 0x02, 0xd6, - 0x68, 0x5c, 0xa3, 0xd6, 0x28, 0xb2, 0xd6, 0xa0, 0x26, 0x57, 0x4c, 0xae, 0xab, 0x5e, 0xf9, 0x35, - 0x08, 0x8c, 0x43, 0xdc, 0x68, 0xb5, 0x96, 0x25, 0xf2, 0x11, 0x79, 0x3a, 0x48, 0x8a, 0x2c, 0x6c, - 0xab, 0x91, 0x8f, 0x83, 0xe2, 0xa1, 0x53, 0xfe, 0xc0, 0x95, 0x91, 0x16, 0x39, 0x78, 0x25, 0x40, - 0xf6, 0x0c, 0x86, 0x58, 0xe5, 0xb2, 0xe4, 0x13, 0xe2, 0x3d, 0x60, 0x9f, 0xc1, 0x39, 0x3d, 0xb2, - 0x2d, 0x6a, 0xb9, 0x96, 0x28, 0xf8, 0xd3, 0x59, 0x34, 0x1f, 0xa5, 0x67, 0xc4, 0xfe, 0x16, 0x48, - 0xf6, 0x1c, 0x4e, 0x37, 0x58, 0x0b, 0xd4, 0xfc, 0x8c, 0xa2, 0x03, 0x62, 0x9f, 0xc0, 0x78, 0x25, - 0xb5, 0xbd, 0x17, 0xb9, 0x45, 0x7e, 0xee, 0xbb, 0xd9, 0x13, 0xae, 0x17, 0x7f, 0xa9, 0x1a, 0x65, - 0xbd, 0x56, 0xfc, 0xc2, 0xf7, 0xa2, 0xc3, 0x2e, 0x63, 0xa9, 0x8a, 0xbc, 0x44, 0x7e, 0xe9, 0x33, - 0x7a, 0xc4, 0x3e, 0x85, 0xa7, 0xcd, 0xbd, 0xaa, 0x31, 0xab, 0xdb, 0x6a, 0x85, 0x9a, 0x5f, 0x91, - 0x3a, 0x21, 0xee, 0x1d, 0x51, 0xec, 0x06, 0x3e, 0x7a, 0x6c, 0xd9, 0x97, 0xce, 0xa8, 0xf4, 0xeb, - 0x47, 0xde, 0xfe, 0x03, 0x5e, 0x02, 0xb4, 0x8d, 0x2b, 0x4a, 0x64, 0xb9, 0xe5, 0xd7, 0xb3, 0x68, - 0x3e, 0x4c, 0xc7, 0x81, 0xb9, 0xb5, 0xb4, 0x00, 0x42, 0x68, 0x34, 0x86, 0x3f, 0x3b, 0x5a, 0x00, - 0x2f, 0xa4, 0x9d, 0x23, 0xf9, 0xd7, 0x2d, 0x80, 0x7f, 0xbb, 0x06, 0xac, 0x95, 0xae, 0x72, 0x6b, - 0x51, 0x84, 0xd9, 0xdb, 0x13, 0xae, 0xbb, 0xc6, 0x6a, 0x44, 0x9b, 0x75, 0xd9, 0xfd, 0x2c, 0x9e, - 0x79, 0xb6, 0x4b, 0x32, 0x85, 0x11, 0x7d, 0xbd, 0xb4, 0xbb, 0x30, 0x92, 0x3d, 0x76, 0x7d, 0xd2, - 0xb8, 0x91, 0xaa, 0x0e, 0xc3, 0x18, 0x90, 0x1b, 0xc4, 0x46, 0x19, 0x9b, 0x97, 0x59, 0xa1, 0x44, - 0x3f, 0x88, 0x9e, 0x7a, 0xa3, 0x04, 0x4d, 0x02, 0xed, 0xa8, 0xde, 0x85, 0x39, 0xec, 0x60, 0xb2, - 0x84, 0x71, 0xbf, 0x55, 0x1f, 0x58, 0x9b, 0x4b, 0x18, 0xc8, 0xbe, 0x52, 0xf7, 0x4c, 0x5e, 0x41, - 0x1c, 0x4e, 0x86, 0x9b, 0x22, 0x7b, 0x8f, 0x15, 0x86, 0x00, 0x0f, 0x92, 0x8f, 0x61, 0xf8, 0x4b, - 0x8b, 0x3e, 0xdb, 0xe1, 0xfd, 0x4a, 0xbe, 0x85, 0xd8, 0xdf, 0x36, 0xc3, 0xbe, 0x80, 0x58, 0xfb, - 0x27, 0x8f, 0x68, 0xcd, 0x2f, 0xf7, 0x4d, 0xf6, 0x9e, 0xb4, 0x33, 0xdc, 0xfc, 0x13, 0xc1, 0xc5, - 0x5d, 0x10, 0xef, 0x50, 0x6f, 0x65, 0x81, 0xec, 0x73, 0x18, 0xdc, 0xa1, 0x65, 0x47, 0x51, 0xd3, - 0x23, 0x86, 0xcd, 0x61, 0xf0, 0x16, 0x2d, 0xbb, 0xd8, 0x0b, 0x54, 0xdf, 0x07, 0x9c, 0xdf, 0xc0, - 0xc9, 0x4f, 0xd2, 0x58, 0xf6, 0x7c, 0xe1, 0x2f, 0xf4, 0xa2, 0xbb, 0xd0, 0x8b, 0xef, 0xdd, 0x85, - 0x9e, 0x5e, 0xbd, 0x1f, 0x61, 0xbe, 0x8b, 0x7f, 0x1f, 0x7a, 0xd3, 0x29, 0xfd, 0xbc, 0xfe, 0x3f, - 0x00, 0x00, 0xff, 0xff, 0x89, 0x43, 0x0c, 0x13, 0x04, 0x06, 0x00, 0x00, +var file_accounts_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x47, 0x0a, 0x06, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x63, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x2b, 0x0a, 0x07, 0x70, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x68, 0x6f, 0x65, + 0x6e, 0x69, 0x78, 0x52, 0x07, 0x70, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x12, 0x2b, 0x0a, 0x07, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x07, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, + 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xfa, 0x04, + 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, + 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, + 0x75, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x76, 0x65, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6d, 0x69, + 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x64, + 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x7a, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x7a, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x12, + 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x68, + 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x68, 0x6f, 0x6e, 0x65, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x07, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, + 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, + 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x2f, 0x0a, 0x09, 0x49, 0x64, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x73, 0x73, 0x22, 0x1f, 0x0a, 0x07, 0x50, + 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x22, 0x9f, 0x01, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x63, + 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x22, 0x5d, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2a, + 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x32, 0x99, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x10, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, + 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x12, 0x2d, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x12, 0x2c, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0f, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x11, 0x2e, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x42, 0x14, + 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x3b, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_accounts_proto_rawDescOnce sync.Once + file_accounts_proto_rawDescData = file_accounts_proto_rawDesc +) + +func file_accounts_proto_rawDescGZIP() []byte { + file_accounts_proto_rawDescOnce.Do(func() { + file_accounts_proto_rawDescData = protoimpl.X.CompressGZIP(file_accounts_proto_rawDescData) + }) + return file_accounts_proto_rawDescData +} + +var file_accounts_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_accounts_proto_goTypes = []interface{}{ + (*Record)(nil), // 0: settings.Record + (*Payload)(nil), // 1: settings.Payload + (*Account)(nil), // 2: settings.Account + (*StandardClaims)(nil), // 3: settings.StandardClaims + (*Address)(nil), // 4: settings.Address + (*IdHistory)(nil), // 5: settings.IdHistory + (*Phoenix)(nil), // 6: settings.Phoenix + (*GetRequest)(nil), // 7: settings.GetRequest + (*Query)(nil), // 8: settings.Query + (*Records)(nil), // 9: settings.Records +} +var file_accounts_proto_depIdxs = []int32{ + 1, // 0: settings.Record.payload:type_name -> settings.Payload + 6, // 1: settings.Payload.phoenix:type_name -> settings.Phoenix + 2, // 2: settings.Payload.account:type_name -> settings.Account + 3, // 3: settings.Account.standard_claims:type_name -> settings.StandardClaims + 5, // 4: settings.Account.identities:type_name -> settings.IdHistory + 4, // 5: settings.StandardClaims.address:type_name -> settings.Address + 5, // 6: settings.GetRequest.identity:type_name -> settings.IdHistory + 0, // 7: settings.Records.records:type_name -> settings.Record + 0, // 8: settings.AccountsService.Set:input_type -> settings.Record + 7, // 9: settings.AccountsService.Get:input_type -> settings.GetRequest + 8, // 10: settings.AccountsService.Search:input_type -> settings.Query + 0, // 11: settings.AccountsService.Set:output_type -> settings.Record + 0, // 12: settings.AccountsService.Get:output_type -> settings.Record + 9, // 13: settings.AccountsService.Search:output_type -> settings.Records + 11, // [11:14] is the sub-list for method output_type + 8, // [8:11] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_accounts_proto_init() } +func file_accounts_proto_init() { + if File_accounts_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_accounts_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Record); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Payload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Account); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StandardClaims); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Address); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IdHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Phoenix); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Query); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Records); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_accounts_proto_rawDesc, + NumEnums: 0, + NumMessages: 10, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_accounts_proto_goTypes, + DependencyIndexes: file_accounts_proto_depIdxs, + MessageInfos: file_accounts_proto_msgTypes, + }.Build() + File_accounts_proto = out.File + file_accounts_proto_rawDesc = nil + file_accounts_proto_goTypes = nil + file_accounts_proto_depIdxs = nil } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index 6cb22dd5bb..001e6ef195 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -1,17 +1,18 @@ // Code generated by protoc-gen-micro. DO NOT EDIT. -// source: pkg/proto/v0/accounts.proto +// source: accounts.proto package proto import ( fmt "fmt" proto "github.com/golang/protobuf/proto" - empty "github.com/golang/protobuf/ptypes/empty" + _ "google.golang.org/genproto/googleapis/api/annotations" math "math" ) import ( context "context" + api "github.com/micro/go-micro/v2/api" client "github.com/micro/go-micro/v2/client" server "github.com/micro/go-micro/v2/server" ) @@ -28,32 +29,39 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package // Reference imports to suppress errors if they are not otherwise used. +var _ api.Endpoint var _ context.Context var _ client.Option var _ server.Option -// Client API for SettingsService service +// Api Endpoints for AccountsService service -type SettingsService interface { - Set(ctx context.Context, in *Record, opts ...client.CallOption) (*Record, error) - Get(ctx context.Context, in *Query, opts ...client.CallOption) (*Record, error) - List(ctx context.Context, in *empty.Empty, opts ...client.CallOption) (*Records, error) +func NewAccountsServiceEndpoints() []*api.Endpoint { + return []*api.Endpoint{} } -type settingsService struct { +// Client API for AccountsService service + +type AccountsService interface { + Set(ctx context.Context, in *Record, opts ...client.CallOption) (*Record, error) + Get(ctx context.Context, in *GetRequest, opts ...client.CallOption) (*Record, error) + Search(ctx context.Context, in *Query, opts ...client.CallOption) (*Records, error) +} + +type accountsService struct { c client.Client name string } -func NewSettingsService(name string, c client.Client) SettingsService { - return &settingsService{ +func NewAccountsService(name string, c client.Client) AccountsService { + return &accountsService{ c: c, name: name, } } -func (c *settingsService) Set(ctx context.Context, in *Record, opts ...client.CallOption) (*Record, error) { - req := c.c.NewRequest(c.name, "SettingsService.Set", in) +func (c *accountsService) Set(ctx context.Context, in *Record, opts ...client.CallOption) (*Record, error) { + req := c.c.NewRequest(c.name, "AccountsService.Set", in) out := new(Record) err := c.c.Call(ctx, req, out, opts...) if err != nil { @@ -62,8 +70,8 @@ func (c *settingsService) Set(ctx context.Context, in *Record, opts ...client.Ca return out, nil } -func (c *settingsService) Get(ctx context.Context, in *Query, opts ...client.CallOption) (*Record, error) { - req := c.c.NewRequest(c.name, "SettingsService.Get", in) +func (c *accountsService) Get(ctx context.Context, in *GetRequest, opts ...client.CallOption) (*Record, error) { + req := c.c.NewRequest(c.name, "AccountsService.Get", in) out := new(Record) err := c.c.Call(ctx, req, out, opts...) if err != nil { @@ -72,8 +80,8 @@ func (c *settingsService) Get(ctx context.Context, in *Query, opts ...client.Cal return out, nil } -func (c *settingsService) List(ctx context.Context, in *empty.Empty, opts ...client.CallOption) (*Records, error) { - req := c.c.NewRequest(c.name, "SettingsService.List", in) +func (c *accountsService) Search(ctx context.Context, in *Query, opts ...client.CallOption) (*Records, error) { + req := c.c.NewRequest(c.name, "AccountsService.Search", in) out := new(Records) err := c.c.Call(ctx, req, out, opts...) if err != nil { @@ -82,39 +90,39 @@ func (c *settingsService) List(ctx context.Context, in *empty.Empty, opts ...cli return out, nil } -// Server API for SettingsService service +// Server API for AccountsService service -type SettingsServiceHandler interface { +type AccountsServiceHandler interface { Set(context.Context, *Record, *Record) error - Get(context.Context, *Query, *Record) error - List(context.Context, *empty.Empty, *Records) error + Get(context.Context, *GetRequest, *Record) error + Search(context.Context, *Query, *Records) error } -func RegisterSettingsServiceHandler(s server.Server, hdlr SettingsServiceHandler, opts ...server.HandlerOption) error { - type settingsService interface { +func RegisterAccountsServiceHandler(s server.Server, hdlr AccountsServiceHandler, opts ...server.HandlerOption) error { + type accountsService interface { Set(ctx context.Context, in *Record, out *Record) error - Get(ctx context.Context, in *Query, out *Record) error - List(ctx context.Context, in *empty.Empty, out *Records) error + Get(ctx context.Context, in *GetRequest, out *Record) error + Search(ctx context.Context, in *Query, out *Records) error } - type SettingsService struct { - settingsService + type AccountsService struct { + accountsService } - h := &settingsServiceHandler{hdlr} - return s.Handle(s.NewHandler(&SettingsService{h}, opts...)) + h := &accountsServiceHandler{hdlr} + return s.Handle(s.NewHandler(&AccountsService{h}, opts...)) } -type settingsServiceHandler struct { - SettingsServiceHandler +type accountsServiceHandler struct { + AccountsServiceHandler } -func (h *settingsServiceHandler) Set(ctx context.Context, in *Record, out *Record) error { - return h.SettingsServiceHandler.Set(ctx, in, out) +func (h *accountsServiceHandler) Set(ctx context.Context, in *Record, out *Record) error { + return h.AccountsServiceHandler.Set(ctx, in, out) } -func (h *settingsServiceHandler) Get(ctx context.Context, in *Query, out *Record) error { - return h.SettingsServiceHandler.Get(ctx, in, out) +func (h *accountsServiceHandler) Get(ctx context.Context, in *GetRequest, out *Record) error { + return h.AccountsServiceHandler.Get(ctx, in, out) } -func (h *settingsServiceHandler) List(ctx context.Context, in *empty.Empty, out *Records) error { - return h.SettingsServiceHandler.List(ctx, in, out) +func (h *accountsServiceHandler) Search(ctx context.Context, in *Query, out *Records) error { + return h.AccountsServiceHandler.Search(ctx, in, out) } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index d48059bcca..edaa3b75d9 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -1,13 +1,15 @@ syntax = "proto3"; -package settings; -option go_package = "proto"; -import "google/protobuf/empty.proto"; +option go_package = "pkg/proto/v0;proto"; -service SettingsService { +package settings; + +import "google/api/field_behavior.proto"; + +service AccountsService { rpc Set(Record) returns (Record); - rpc Get(Query) returns (Record); - rpc List(google.protobuf.Empty) returns(Records); + rpc Get(GetRequest) returns (Record); + rpc Search(Query) returns (Records); } message Record { @@ -67,10 +69,60 @@ message Phoenix { string theme = 1; } +// Used to fetch exactly one user. The conditions are optional. If set, all have to be true. +message GetRequest { + // Used to look up user by the oidc sub and iss + IdHistory identity = 1; + + // Used to look up the user by our internal uuid + string uuid = 2; + + // Used to authenticate users using basic auth + string username = 3; + string password = 4; + + // Used as a fallback mechanism in case sub or iss changed for an existing user + string email = 5; +} + message Query { - string key = 1; + // Optional. The maximum number of accounts to return in the response. + int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A pagination token returned from a previous call to `Get` + // that indicates from where search should continue. + string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Search criteria used to select the Accounts to return. + // If no search criteria is specified then all accounts will be + // returned. + // + // Query expressions can be used to restrict results based upon the standard claims, + // iss, and uuid where the operators `=`, `NOT`, `AND` and `OR` + // can be used along with the suffix wildcard symbol `*`. + // + // The *_name claims in a query expression should use escaped quotes + // for values that include whitespace to prevent unexpected behavior. + // + // Some example queries are: + // + // * Query `name=Th*` returns accounts whose name claim + // starts with "Th". + // * Query `email=foo@example.com` returns accounts with + // `email` set to `foo@example.com`. + // * Query `address/country=de` returns accounts that have + // an address in Germany + // * Query `name=\\"Test String\\"` returns accounts with + // display names that include both "Test" and "String". + string query = 3; } message Records { + // A possibly paginated accounts search result for + // the specified query. repeated Record records = 1; + + // A pagination token returned from a previous call to `Search` + // that indicates from where searching should continue. + string next_page_token = 2; } diff --git a/pkg/server/grpc/server.go b/pkg/server/grpc/server.go index 9b01aaf017..b2031ef998 100644 --- a/pkg/server/grpc/server.go +++ b/pkg/server/grpc/server.go @@ -19,7 +19,7 @@ func NewService(opts ...Option) grpc.Service { ) hdlr := svc.New(options.Config) - if err := proto.RegisterSettingsServiceHandler(service.Server(), hdlr); err != nil { + if err := proto.RegisterAccountsServiceHandler(service.Server(), hdlr); err != nil { options.Logger.Fatal().Err(err).Msg("could not register service handler") } diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index b927de58e6..358400d966 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -3,7 +3,6 @@ package service import ( "context" - "github.com/golang/protobuf/ptypes/empty" "github.com/owncloud/ocis-accounts/pkg/account" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" @@ -26,13 +25,13 @@ func New(cfg *config.Config) Service { return s } -// Service implements the SettingsServiceHandler interface +// Service implements the AccountsServiceHandler interface type Service struct { Config *config.Config Manager account.Manager } -// Set implements the SettingsServiceHandler interface +// Set implements the AccountsServiceHandler interface // This implementation replaces the existent data with the requested. It does not calculate diff func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { r, err := s.Manager.Write(req) @@ -44,9 +43,10 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er return nil } -// Get implements the SettingsServiceHandler interface -func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) error { - r, err := s.Manager.Read(req.GetKey()) +// Get implements the AccountsServiceHandler interface +func (s Service) Get(c context.Context, req *proto.GetRequest, res *proto.Record) error { + // TODO implement other GetRequest properties: Identity, username&password, email + r, err := s.Manager.Read(req.GetUuid()) if err != nil { return err } @@ -55,13 +55,16 @@ func (s Service) Get(c context.Context, req *proto.Query, res *proto.Record) err return nil } -// List implements the SettingsServiceHandler interface -func (s Service) List(ctx context.Context, in *empty.Empty, res *proto.Records) error { +// Search implements the AccountsServiceHandler interface +func (s Service) Search(ctx context.Context, in *proto.Query, res *proto.Records) error { r, err := s.Manager.List() if err != nil { return err } + // TODO implement filter + // TODO implement pagination + res.Records = r return nil } diff --git a/third_party/google/api/field_behavior.proto b/third_party/google/api/field_behavior.proto new file mode 100644 index 0000000000..540dbb925f --- /dev/null +++ b/third_party/google/api/field_behavior.proto @@ -0,0 +1,79 @@ +// Copyright 2019 Google LLC. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +syntax = "proto3"; + +package google.api; + +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "FieldBehaviorProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.FieldOptions { + // A designation of a specific field behavior (required, output only, etc.) + // in protobuf messages. + // + // Examples: + // + // string name = 1 [(google.api.field_behavior) = REQUIRED]; + // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + // google.protobuf.Duration ttl = 1 + // [(google.api.field_behavior) = INPUT_ONLY]; + // google.protobuf.Timestamp expire_time = 1 + // [(google.api.field_behavior) = OUTPUT_ONLY, + // (google.api.field_behavior) = IMMUTABLE]; + repeated google.api.FieldBehavior field_behavior = 1052; +} + +// An indicator of the behavior of a given field (for example, that a field +// is required in requests, or given as output but ignored as input). +// This **does not** change the behavior in protocol buffers itself; it only +// denotes the behavior and may affect how API tooling handles the field. +// +// Note: This enum **may** receive new values in the future. +enum FieldBehavior { + // Conventional default for enums. Do not use this. + FIELD_BEHAVIOR_UNSPECIFIED = 0; + + // Specifically denotes a field as optional. + // While all fields in protocol buffers are optional, this may be specified + // for emphasis if appropriate. + OPTIONAL = 1; + + // Denotes a field as required. + // This indicates that the field **must** be provided as part of the request, + // and failure to do so will cause an error (usually `INVALID_ARGUMENT`). + REQUIRED = 2; + + // Denotes a field as output only. + // This indicates that the field is provided in responses, but including the + // field in a request does nothing (the server *must* ignore it and + // *must not* throw an error as a result of the field's presence). + OUTPUT_ONLY = 3; + + // Denotes a field as input only. + // This indicates that the field is provided in requests, and the + // corresponding field is not included in output. + INPUT_ONLY = 4; + + // Denotes a field as immutable. + // This indicates that the field may be set once in a request to create a + // resource, but may not be changed thereafter. + IMMUTABLE = 5; +} \ No newline at end of file diff --git a/third_party/google/protobuf/descriptor.proto b/third_party/google/protobuf/descriptor.proto new file mode 100644 index 0000000000..dcfe8fe676 --- /dev/null +++ b/third_party/google/protobuf/descriptor.proto @@ -0,0 +1,909 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// The messages in this file describe the definitions found in .proto files. +// A valid .proto file can be translated directly to a FileDescriptorProto +// without any other information (e.g. without reading its imports). + + +syntax = "proto2"; + +package google.protobuf; + +option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DescriptorProtos"; +option csharp_namespace = "Google.Protobuf.Reflection"; +option objc_class_prefix = "GPB"; +option cc_enable_arenas = true; + +// descriptor.proto must be optimized for speed because reflection-based +// algorithms don't work during bootstrapping. +option optimize_for = SPEED; + +// The protocol compiler can output a FileDescriptorSet containing the .proto +// files it parses. +message FileDescriptorSet { + repeated FileDescriptorProto file = 1; +} + +// Describes a complete .proto file. +message FileDescriptorProto { + optional string name = 1; // file name, relative to root of source tree + optional string package = 2; // e.g. "foo", "foo.bar", etc. + + // Names of files imported by this file. + repeated string dependency = 3; + // Indexes of the public imported files in the dependency list above. + repeated int32 public_dependency = 10; + // Indexes of the weak imported files in the dependency list. + // For Google-internal migration only. Do not use. + repeated int32 weak_dependency = 11; + + // All top-level definitions in this file. + repeated DescriptorProto message_type = 4; + repeated EnumDescriptorProto enum_type = 5; + repeated ServiceDescriptorProto service = 6; + repeated FieldDescriptorProto extension = 7; + + optional FileOptions options = 8; + + // This field contains optional information about the original source code. + // You may safely remove this entire field without harming runtime + // functionality of the descriptors -- the information is needed only by + // development tools. + optional SourceCodeInfo source_code_info = 9; + + // The syntax of the proto file. + // The supported values are "proto2" and "proto3". + optional string syntax = 12; +} + +// Describes a message type. +message DescriptorProto { + optional string name = 1; + + repeated FieldDescriptorProto field = 2; + repeated FieldDescriptorProto extension = 6; + + repeated DescriptorProto nested_type = 3; + repeated EnumDescriptorProto enum_type = 4; + + message ExtensionRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + + optional ExtensionRangeOptions options = 3; + } + repeated ExtensionRange extension_range = 5; + + repeated OneofDescriptorProto oneof_decl = 8; + + optional MessageOptions options = 7; + + // Range of reserved tag numbers. Reserved tag numbers may not be used by + // fields or extension ranges in the same message. Reserved ranges may + // not overlap. + message ReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + } + repeated ReservedRange reserved_range = 9; + // Reserved field names, which may not be used by fields in the same message. + // A given name may only be reserved once. + repeated string reserved_name = 10; +} + +message ExtensionRangeOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +// Describes a field within a message. +message FieldDescriptorProto { + enum Type { + // 0 is reserved for errors. + // Order is weird for historical reasons. + TYPE_DOUBLE = 1; + TYPE_FLOAT = 2; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + TYPE_INT64 = 3; + TYPE_UINT64 = 4; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + TYPE_INT32 = 5; + TYPE_FIXED64 = 6; + TYPE_FIXED32 = 7; + TYPE_BOOL = 8; + TYPE_STRING = 9; + // Tag-delimited aggregate. + // Group type is deprecated and not supported in proto3. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. + TYPE_GROUP = 10; + TYPE_MESSAGE = 11; // Length-delimited aggregate. + + // New in version 2. + TYPE_BYTES = 12; + TYPE_UINT32 = 13; + TYPE_ENUM = 14; + TYPE_SFIXED32 = 15; + TYPE_SFIXED64 = 16; + TYPE_SINT32 = 17; // Uses ZigZag encoding. + TYPE_SINT64 = 18; // Uses ZigZag encoding. + } + + enum Label { + // 0 is reserved for errors + LABEL_OPTIONAL = 1; + LABEL_REQUIRED = 2; + LABEL_REPEATED = 3; + } + + optional string name = 1; + optional int32 number = 3; + optional Label label = 4; + + // If type_name is set, this need not be set. If both this and type_name + // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. + optional Type type = 5; + + // For message and enum types, this is the name of the type. If the name + // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + // rules are used to find the type (i.e. first the nested types within this + // message are searched, then within the parent, on up to the root + // namespace). + optional string type_name = 6; + + // For extensions, this is the name of the type being extended. It is + // resolved in the same manner as type_name. + optional string extendee = 2; + + // For numeric types, contains the original text representation of the value. + // For booleans, "true" or "false". + // For strings, contains the default text contents (not escaped in any way). + // For bytes, contains the C escaped value. All bytes >= 128 are escaped. + // TODO(kenton): Base-64 encode? + optional string default_value = 7; + + // If set, gives the index of a oneof in the containing type's oneof_decl + // list. This field is a member of that oneof. + optional int32 oneof_index = 9; + + // JSON name of this field. The value is set by protocol compiler. If the + // user has set a "json_name" option on this field, that option's value + // will be used. Otherwise, it's deduced from the field's name by converting + // it to camelCase. + optional string json_name = 10; + + optional FieldOptions options = 8; + + // If true, this is a proto3 "optional". When a proto3 field is optional, it + // tracks presence regardless of field type. + // + // When proto3_optional is true, this field must be belong to a oneof to + // signal to old proto3 clients that presence is tracked for this field. This + // oneof is known as a "synthetic" oneof, and this field must be its sole + // member (each proto3 optional field gets its own synthetic oneof). Synthetic + // oneofs exist in the descriptor only, and do not generate any API. Synthetic + // oneofs must be ordered after all "real" oneofs. + // + // For message fields, proto3_optional doesn't create any semantic change, + // since non-repeated message fields always track presence. However it still + // indicates the semantic detail of whether the user wrote "optional" or not. + // This can be useful for round-tripping the .proto file. For consistency we + // give message fields a synthetic oneof also, even though it is not required + // to track presence. This is especially important because the parser can't + // tell if a field is a message or an enum, so it must always create a + // synthetic oneof. + // + // Proto2 optional fields do not set this flag, because they already indicate + // optional with `LABEL_OPTIONAL`. + optional bool proto3_optional = 17; +} + +// Describes a oneof. +message OneofDescriptorProto { + optional string name = 1; + optional OneofOptions options = 2; +} + +// Describes an enum type. +message EnumDescriptorProto { + optional string name = 1; + + repeated EnumValueDescriptorProto value = 2; + + optional EnumOptions options = 3; + + // Range of reserved numeric values. Reserved values may not be used by + // entries in the same enum. Reserved ranges may not overlap. + // + // Note that this is distinct from DescriptorProto.ReservedRange in that it + // is inclusive such that it can appropriately represent the entire int32 + // domain. + message EnumReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Inclusive. + } + + // Range of reserved numeric values. Reserved numeric values may not be used + // by enum values in the same enum declaration. Reserved ranges may not + // overlap. + repeated EnumReservedRange reserved_range = 4; + + // Reserved enum value names, which may not be reused. A given name may only + // be reserved once. + repeated string reserved_name = 5; +} + +// Describes a value within an enum. +message EnumValueDescriptorProto { + optional string name = 1; + optional int32 number = 2; + + optional EnumValueOptions options = 3; +} + +// Describes a service. +message ServiceDescriptorProto { + optional string name = 1; + repeated MethodDescriptorProto method = 2; + + optional ServiceOptions options = 3; +} + +// Describes a method of a service. +message MethodDescriptorProto { + optional string name = 1; + + // Input and output type names. These are resolved in the same way as + // FieldDescriptorProto.type_name, but must refer to a message type. + optional string input_type = 2; + optional string output_type = 3; + + optional MethodOptions options = 4; + + // Identifies if client streams multiple client messages + optional bool client_streaming = 5 [default = false]; + // Identifies if server streams multiple server messages + optional bool server_streaming = 6 [default = false]; +} + + +// =================================================================== +// Options + +// Each of the definitions above may have "options" attached. These are +// just annotations which may cause code to be generated slightly differently +// or may contain hints for code that manipulates protocol messages. +// +// Clients may define custom options as extensions of the *Options messages. +// These extensions may not yet be known at parsing time, so the parser cannot +// store the values in them. Instead it stores them in a field in the *Options +// message called uninterpreted_option. This field must have the same name +// across all *Options messages. We then use this field to populate the +// extensions when we build a descriptor, at which point all protos have been +// parsed and so all extensions are known. +// +// Extension numbers for custom options may be chosen as follows: +// * For options which will only be used within a single application or +// organization, or for experimental options, use field numbers 50000 +// through 99999. It is up to you to ensure that you do not use the +// same number for multiple options. +// * For options which will be published and used publicly by multiple +// independent entities, e-mail protobuf-global-extension-registry@google.com +// to reserve extension numbers. Simply provide your project name (e.g. +// Objective-C plugin) and your project website (if available) -- there's no +// need to explain how you intend to use them. Usually you only need one +// extension number. You can declare multiple options with only one extension +// number by putting them in a sub-message. See the Custom Options section of +// the docs for examples: +// https://developers.google.com/protocol-buffers/docs/proto#options +// If this turns out to be popular, a web service will be set up +// to automatically assign option numbers. + +message FileOptions { + + // Sets the Java package where classes generated from this .proto will be + // placed. By default, the proto package is used, but this is often + // inappropriate because proto packages do not normally start with backwards + // domain names. + optional string java_package = 1; + + + // If set, all the classes from the .proto file are wrapped in a single + // outer class with the given name. This applies to both Proto1 + // (equivalent to the old "--one_java_file" option) and Proto2 (where + // a .proto always translates to a single class, but you may want to + // explicitly choose the class name). + optional string java_outer_classname = 8; + + // If set true, then the Java code generator will generate a separate .java + // file for each top-level message, enum, and service defined in the .proto + // file. Thus, these types will *not* be nested inside the outer class + // named by java_outer_classname. However, the outer class will still be + // generated to contain the file's getDescriptor() method as well as any + // top-level extensions defined in the file. + optional bool java_multiple_files = 10 [default = false]; + + // This option does nothing. + optional bool java_generate_equals_and_hash = 20 [deprecated=true]; + + // If set true, then the Java2 code generator will generate code that + // throws an exception whenever an attempt is made to assign a non-UTF-8 + // byte sequence to a string field. + // Message reflection will do the same. + // However, an extension field still accepts non-UTF-8 byte sequences. + // This option has no effect on when used with the lite runtime. + optional bool java_string_check_utf8 = 27 [default = false]; + + + // Generated classes can be optimized for speed or code size. + enum OptimizeMode { + SPEED = 1; // Generate complete code for parsing, serialization, + // etc. + CODE_SIZE = 2; // Use ReflectionOps to implement these methods. + LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. + } + optional OptimizeMode optimize_for = 9 [default = SPEED]; + + // Sets the Go package where structs generated from this .proto will be + // placed. If omitted, the Go package will be derived from the following: + // - The basename of the package import path, if provided. + // - Otherwise, the package statement in the .proto file, if present. + // - Otherwise, the basename of the .proto file, without extension. + optional string go_package = 11; + + + + + // Should generic services be generated in each language? "Generic" services + // are not specific to any particular RPC system. They are generated by the + // main code generators in each language (without additional plugins). + // Generic services were the only kind of service generation supported by + // early versions of google.protobuf. + // + // Generic services are now considered deprecated in favor of using plugins + // that generate code specific to your particular RPC system. Therefore, + // these default to false. Old code which depends on generic services should + // explicitly set them to true. + optional bool cc_generic_services = 16 [default = false]; + optional bool java_generic_services = 17 [default = false]; + optional bool py_generic_services = 18 [default = false]; + optional bool php_generic_services = 42 [default = false]; + + // Is this file deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for everything in the file, or it will be completely ignored; in the very + // least, this is a formalization for deprecating files. + optional bool deprecated = 23 [default = false]; + + // Enables the use of arenas for the proto messages in this file. This applies + // only to generated classes for C++. + optional bool cc_enable_arenas = 31 [default = true]; + + + // Sets the objective c class prefix which is prepended to all objective c + // generated classes from this .proto. There is no default. + optional string objc_class_prefix = 36; + + // Namespace for generated classes; defaults to the package. + optional string csharp_namespace = 37; + + // By default Swift generators will take the proto package and CamelCase it + // replacing '.' with underscore and use that to prefix the types/symbols + // defined. When this options is provided, they will use this value instead + // to prefix the types/symbols defined. + optional string swift_prefix = 39; + + // Sets the php class prefix which is prepended to all php generated classes + // from this .proto. Default is empty. + optional string php_class_prefix = 40; + + // Use this option to change the namespace of php generated classes. Default + // is empty. When this option is empty, the package name will be used for + // determining the namespace. + optional string php_namespace = 41; + + // Use this option to change the namespace of php generated metadata classes. + // Default is empty. When this option is empty, the proto file name will be + // used for determining the namespace. + optional string php_metadata_namespace = 44; + + // Use this option to change the package of ruby generated classes. Default + // is empty. When this option is not set, the package name will be used for + // determining the ruby package. + optional string ruby_package = 45; + + + // The parser stores options it doesn't recognize here. + // See the documentation for the "Options" section above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. + // See the documentation for the "Options" section above. + extensions 1000 to max; + + reserved 38; +} + +message MessageOptions { + // Set true to use the old proto1 MessageSet wire format for extensions. + // This is provided for backwards-compatibility with the MessageSet wire + // format. You should not use this for any other reason: It's less + // efficient, has fewer features, and is more complicated. + // + // The message must be defined exactly as follows: + // message Foo { + // option message_set_wire_format = true; + // extensions 4 to max; + // } + // Note that the message cannot have any defined fields; MessageSets only + // have extensions. + // + // All extensions of your type must be singular messages; e.g. they cannot + // be int32s, enums, or repeated messages. + // + // Because this is an option, the above two restrictions are not enforced by + // the protocol compiler. + optional bool message_set_wire_format = 1 [default = false]; + + // Disables the generation of the standard "descriptor()" accessor, which can + // conflict with a field of the same name. This is meant to make migration + // from proto1 easier; new code should avoid fields named "descriptor". + optional bool no_standard_descriptor_accessor = 2 [default = false]; + + // Is this message deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the message, or it will be completely ignored; in the very least, + // this is a formalization for deprecating messages. + optional bool deprecated = 3 [default = false]; + + // Whether the message is an automatically generated map entry type for the + // maps field. + // + // For maps fields: + // map map_field = 1; + // The parsed descriptor looks like: + // message MapFieldEntry { + // option map_entry = true; + // optional KeyType key = 1; + // optional ValueType value = 2; + // } + // repeated MapFieldEntry map_field = 1; + // + // Implementations may choose not to generate the map_entry=true message, but + // use a native map in the target language to hold the keys and values. + // The reflection APIs in such implementations still need to work as + // if the field is a repeated message field. + // + // NOTE: Do not set the option in .proto files. Always use the maps syntax + // instead. The option should only be implicitly set by the proto compiler + // parser. + optional bool map_entry = 7; + + reserved 8; // javalite_serializable + reserved 9; // javanano_as_lite + + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message FieldOptions { + // The ctype option instructs the C++ code generator to use a different + // representation of the field than it normally would. See the specific + // options below. This option is not yet implemented in the open source + // release -- sorry, we'll try to include it in a future version! + optional CType ctype = 1 [default = STRING]; + enum CType { + // Default mode. + STRING = 0; + + CORD = 1; + + STRING_PIECE = 2; + } + // The packed option can be enabled for repeated primitive fields to enable + // a more efficient representation on the wire. Rather than repeatedly + // writing the tag and type for each element, the entire array is encoded as + // a single length-delimited blob. In proto3, only explicit setting it to + // false will avoid using packed encoding. + optional bool packed = 2; + + // The jstype option determines the JavaScript type used for values of the + // field. The option is permitted only for 64 bit integral and fixed types + // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING + // is represented as JavaScript string, which avoids loss of precision that + // can happen when a large value is converted to a floating point JavaScript. + // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to + // use the JavaScript "number" type. The behavior of the default option + // JS_NORMAL is implementation dependent. + // + // This option is an enum to permit additional types to be added, e.g. + // goog.math.Integer. + optional JSType jstype = 6 [default = JS_NORMAL]; + enum JSType { + // Use the default type. + JS_NORMAL = 0; + + // Use JavaScript strings. + JS_STRING = 1; + + // Use JavaScript numbers. + JS_NUMBER = 2; + } + + // Should this field be parsed lazily? Lazy applies only to message-type + // fields. It means that when the outer message is initially parsed, the + // inner message's contents will not be parsed but instead stored in encoded + // form. The inner message will actually be parsed when it is first accessed. + // + // This is only a hint. Implementations are free to choose whether to use + // eager or lazy parsing regardless of the value of this option. However, + // setting this option true suggests that the protocol author believes that + // using lazy parsing on this field is worth the additional bookkeeping + // overhead typically needed to implement it. + // + // This option does not affect the public interface of any generated code; + // all method signatures remain the same. Furthermore, thread-safety of the + // interface is not affected by this option; const methods remain safe to + // call from multiple threads concurrently, while non-const methods continue + // to require exclusive access. + // + // + // Note that implementations may choose not to check required fields within + // a lazy sub-message. That is, calling IsInitialized() on the outer message + // may return true even if the inner message has missing required fields. + // This is necessary because otherwise the inner message would have to be + // parsed in order to perform the check, defeating the purpose of lazy + // parsing. An implementation which chooses not to check required fields + // must be consistent about it. That is, for any particular sub-message, the + // implementation must either *always* check its required fields, or *never* + // check its required fields, regardless of whether or not the message has + // been parsed. + optional bool lazy = 5 [default = false]; + + // Is this field deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for accessors, or it will be completely ignored; in the very least, this + // is a formalization for deprecating fields. + optional bool deprecated = 3 [default = false]; + + // For Google-internal migration only. Do not use. + optional bool weak = 10 [default = false]; + + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; + + reserved 4; // removed jtype +} + +message OneofOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumOptions { + + // Set this option to true to allow mapping different tag names to the same + // value. + optional bool allow_alias = 2; + + // Is this enum deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum, or it will be completely ignored; in the very least, this + // is a formalization for deprecating enums. + optional bool deprecated = 3 [default = false]; + + reserved 5; // javanano_as_lite + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumValueOptions { + // Is this enum value deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum value, or it will be completely ignored; in the very least, + // this is a formalization for deprecating enum values. + optional bool deprecated = 1 [default = false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message ServiceOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this service deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the service, or it will be completely ignored; in the very least, + // this is a formalization for deprecating services. + optional bool deprecated = 33 [default = false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message MethodOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this method deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the method, or it will be completely ignored; in the very least, + // this is a formalization for deprecating methods. + optional bool deprecated = 33 [default = false]; + + // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + // or neither? HTTP based RPC implementation may choose GET verb for safe + // methods, and PUT verb for idempotent methods instead of the default POST. + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0; + NO_SIDE_EFFECTS = 1; // implies idempotent + IDEMPOTENT = 2; // idempotent, but may have side effects + } + optional IdempotencyLevel idempotency_level = 34 + [default = IDEMPOTENCY_UNKNOWN]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + + +// A message representing a option the parser does not recognize. This only +// appears in options protos created by the compiler::Parser class. +// DescriptorPool resolves these when building Descriptor objects. Therefore, +// options protos in descriptor objects (e.g. returned by Descriptor::options(), +// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions +// in them. +message UninterpretedOption { + // The name of the uninterpreted option. Each string represents a segment in + // a dot-separated name. is_extension is true iff a segment represents an + // extension (denoted with parentheses in options specs in .proto files). + // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents + // "foo.(bar.baz).qux". + message NamePart { + required string name_part = 1; + required bool is_extension = 2; + } + repeated NamePart name = 2; + + // The value of the uninterpreted option, in whatever type the tokenizer + // identified it as during parsing. Exactly one of these should be set. + optional string identifier_value = 3; + optional uint64 positive_int_value = 4; + optional int64 negative_int_value = 5; + optional double double_value = 6; + optional bytes string_value = 7; + optional string aggregate_value = 8; +} + +// =================================================================== +// Optional source code info + +// Encapsulates information about the original source file from which a +// FileDescriptorProto was generated. +message SourceCodeInfo { + // A Location identifies a piece of source code in a .proto file which + // corresponds to a particular definition. This information is intended + // to be useful to IDEs, code indexers, documentation generators, and similar + // tools. + // + // For example, say we have a file like: + // message Foo { + // optional string foo = 1; + // } + // Let's look at just the field definition: + // optional string foo = 1; + // ^ ^^ ^^ ^ ^^^ + // a bc de f ghi + // We have the following locations: + // span path represents + // [a,i) [ 4, 0, 2, 0 ] The whole field definition. + // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + // + // Notes: + // - A location may refer to a repeated field itself (i.e. not to any + // particular index within it). This is used whenever a set of elements are + // logically enclosed in a single code segment. For example, an entire + // extend block (possibly containing multiple extension definitions) will + // have an outer location whose path refers to the "extensions" repeated + // field without an index. + // - Multiple locations may have the same path. This happens when a single + // logical declaration is spread out across multiple places. The most + // obvious example is the "extend" block again -- there may be multiple + // extend blocks in the same scope, each of which will have the same path. + // - A location's span is not always a subset of its parent's span. For + // example, the "extendee" of an extension declaration appears at the + // beginning of the "extend" block and is shared by all extensions within + // the block. + // - Just because a location's span is a subset of some other location's span + // does not mean that it is a descendant. For example, a "group" defines + // both a type and a field in a single declaration. Thus, the locations + // corresponding to the type and field and their components will overlap. + // - Code which tries to interpret locations should probably be designed to + // ignore those that it doesn't understand, as more types of locations could + // be recorded in the future. + repeated Location location = 1; + message Location { + // Identifies which part of the FileDescriptorProto was defined at this + // location. + // + // Each element is a field number or an index. They form a path from + // the root FileDescriptorProto to the place where the definition. For + // example, this path: + // [ 4, 3, 2, 7, 1 ] + // refers to: + // file.message_type(3) // 4, 3 + // .field(7) // 2, 7 + // .name() // 1 + // This is because FileDescriptorProto.message_type has field number 4: + // repeated DescriptorProto message_type = 4; + // and DescriptorProto.field has field number 2: + // repeated FieldDescriptorProto field = 2; + // and FieldDescriptorProto.name has field number 1: + // optional string name = 1; + // + // Thus, the above path gives the location of a field name. If we removed + // the last element: + // [ 4, 3, 2, 7 ] + // this path refers to the whole field declaration (from the beginning + // of the label to the terminating semicolon). + repeated int32 path = 1 [packed = true]; + + // Always has exactly three or four elements: start line, start column, + // end line (optional, otherwise assumed same as start line), end column. + // These are packed into a single field for efficiency. Note that line + // and column numbers are zero-based -- typically you will want to add + // 1 to each before displaying to a user. + repeated int32 span = 2 [packed = true]; + + // If this SourceCodeInfo represents a complete declaration, these are any + // comments appearing before and after the declaration which appear to be + // attached to the declaration. + // + // A series of line comments appearing on consecutive lines, with no other + // tokens appearing on those lines, will be treated as a single comment. + // + // leading_detached_comments will keep paragraphs of comments that appear + // before (but not connected to) the current element. Each paragraph, + // separated by empty lines, will be one comment element in the repeated + // field. + // + // Only the comment content is provided; comment markers (e.g. //) are + // stripped out. For block comments, leading whitespace and an asterisk + // will be stripped from the beginning of each line other than the first. + // Newlines are included in the output. + // + // Examples: + // + // optional int32 foo = 1; // Comment attached to foo. + // // Comment attached to bar. + // optional int32 bar = 2; + // + // optional string baz = 3; + // // Comment attached to baz. + // // Another line attached to baz. + // + // // Comment attached to qux. + // // + // // Another line attached to qux. + // optional double qux = 4; + // + // // Detached comment for corge. This is not leading or trailing comments + // // to qux or corge because there are blank lines separating it from + // // both. + // + // // Detached comment for corge paragraph 2. + // + // optional string corge = 5; + // /* Block comment attached + // * to corge. Leading asterisks + // * will be removed. */ + // /* Block comment attached to + // * grault. */ + // optional int32 grault = 6; + // + // // ignored detached comments. + optional string leading_comments = 3; + optional string trailing_comments = 4; + repeated string leading_detached_comments = 6; + } +} + +// Describes the relationship between generated code and its original source +// file. A GeneratedCodeInfo message is associated with only one generated +// source file, but may contain references to different source .proto files. +message GeneratedCodeInfo { + // An Annotation connects some span of text in generated code to an element + // of its generating .proto file. + repeated Annotation annotation = 1; + message Annotation { + // Identifies the element in the original source .proto file. This field + // is formatted the same as SourceCodeInfo.Location.path. + repeated int32 path = 1 [packed = true]; + + // Identifies the filesystem path to the original source .proto. + optional string source_file = 2; + + // Identifies the starting offset in bytes in the generated code + // that relates to the identified object. + optional int32 begin = 3; + + // Identifies the ending offset in bytes in the generated code that + // relates to the identified offset. The end offset should be one past + // the last relevant byte (so the length of the text = end - begin). + optional int32 end = 4; + } +} \ No newline at end of file From 422ceb9080efad31adf8ef39390f761419cc5a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 6 May 2020 19:07:23 +0200 Subject: [PATCH 135/407] disable checking deprecated packages in generated code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 2 +- go.sum | 68 +++++++++++++++++++++++++++++++++++ pkg/proto/v0/staticcheck.conf | 1 + 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 pkg/proto/v0/staticcheck.conf diff --git a/go.mod b/go.mod index 96351e8ea9..967d31240d 100644 --- a/go.mod +++ b/go.mod @@ -22,4 +22,4 @@ require ( honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab // indirect ) -replace google.golang.org/grpc => google.golang.org/grpc v1.26.0 \ No newline at end of file +replace google.golang.org/grpc => google.golang.org/grpc v1.26.0 diff --git a/go.sum b/go.sum index 1a21493aef..efe27e44b3 100644 --- a/go.sum +++ b/go.sum @@ -67,9 +67,11 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= @@ -83,8 +85,12 @@ github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReG github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= +github.com/cloudflare/cloudflare-go v0.10.9/go.mod h1:5TrsWH+3f4NV6WjtS5QFp+DifH81rph40gU374Sh0dQ= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -119,6 +125,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -134,13 +141,17 @@ github.com/docker/docker v1.4.2-0.20190710153559-aa8249ae1b8b/go.mod h1:eEKB0N0r github.com/docker/docker v1.4.2-0.20191101170500-ac7306503d23/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/ef-ds/deque v1.0.4-0.20190904040645-54cb57c252a1/go.mod h1:HvODWzv6Y6kBf3Ah2WzN1bHjDUezGLaAhwuWVwfpEJs= +github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch/v5 v5.0.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= @@ -157,6 +168,13 @@ github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAU github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= +github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/go-billy/v5 v5.0.0 h1:7NQHvd9FVid8VL4qVUMm8XifBK+2xCoZ2lSk0agRrHM= +github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= +github.com/go-git/go-git/v5 v5.0.0 h1:k5RWPm4iJwYtfWoxIJy4wJX9ON7ihPeZZYC1fLYDnpg= +github.com/go-git/go-git/v5 v5.0.0/go.mod h1:oYD8y9kWsGINPFJoLdaScGCN6dlKg23blmClfZwtUVA= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -174,6 +192,9 @@ github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.6 h1:UHSEyLZUwX9Qoi99vVwvewiMC8mM2bf7XEM2nqvzEn8= github.com/go-test/deep v1.0.6/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.3/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -199,6 +220,7 @@ github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -247,6 +269,7 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.14.4 h1:IOPK2xMPP3aV6/NPt4jt//ELFo3Vv8sDVD8j3+tleDU= github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= @@ -266,6 +289,7 @@ github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwP github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -287,6 +311,7 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= @@ -304,6 +329,7 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= @@ -326,14 +352,18 @@ github.com/marten-seemann/qtls v0.3.2/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwm github.com/marten-seemann/qtls v0.4.1 h1:YlT8QP3WCCvvok7MGEZkMldXbyqgr8oFg5/n8Gtbkks= github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.9.1/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= +github.com/mholt/certmagic v0.9.3/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= github.com/micro/cli/v2 v2.1.1 h1:uFw0SMIKmGuyHIm8lXns/NOn7V62bM5y7DnlxUM+BEQ= @@ -345,10 +375,15 @@ github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXpRw= github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= +github.com/micro/go-micro/v2 v2.6.1-0.20200506095814-5387f73b5d8e h1:EvjB9RKFavhizMUClRqK3hymBdhm9Ysa2UYWN6tLUL0= +github.com/micro/go-micro/v2 v2.6.1-0.20200506095814-5387f73b5d8e/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1 h1:7IkXfl94MdLZQwk0lNmu9Cg5WP42Zak9EtQMeN4SvVs= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1/go.mod h1:QrkcwcDtIs2hIJpIEhozekyf6Rfz5C36kFI8+zzCpX0= github.com/micro/mdns v0.3.0 h1:bYycYe+98AXR3s8Nq5qvt6C573uFTDPIYzJemWON0QE= github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= +github.com/micro/micro v1.18.1-0.20200129112143-c64a2f7745fe h1:7wltlc6/cQmh7RGLA1jnRUsxB0kbu9HFh/u2o6yMVcA= +github.com/micro/micro/v2 v2.6.1-0.20200506111713-0a691b399107 h1:Dl5GAdKQOzhIdcXmgqk+m/kHc9PomfeStzPETfvGDj8= +github.com/micro/micro/v2 v2.6.1-0.20200506111713-0a691b399107/go.mod h1:AejRahuyvXRGyYeU2UV6YQC/wL/+lwlF7YUmKnofhek= github.com/micro/protoc-gen-micro v1.0.0 h1:qKh5S3I1RfenhIs5mqDFJLwRlRDlgin7XWiUKZbpwLM= github.com/micro/protoc-gen-micro v1.0.0/go.mod h1:C8ij4DJhapBmypcT00AXdb0cZ675/3PqUO02buWWqbE= github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -359,6 +394,7 @@ github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= @@ -383,17 +419,24 @@ github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL github.com/nats-io/nats-server/v2 v2.1.0/go.mod h1:r5y0WgCag0dTj/qiHkHrXAcKQ/f5GMOZaEGdoxxnJ4I= github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats-server/v2 v2.1.6/go.mod h1:BL1NOtaBQ5/y97djERRVWNouMW7GT3gxnmbE/eC8u8A= github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nats.go v1.9.2 h1:oDeERm3NcZVrPpdR/JpGdWHMv3oJ8yY30YwxKq+DU2s= +github.com/nats-io/nats.go v1.9.2/go.mod h1:AjGArbfyR50+afOUotNX2Xs5SYHf+CoOa5HH1eEl2HE= github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= github.com/nats-io/nkeys v0.1.0 h1:qMd4+pRHgdr1nAClu+2h/2a5F2TmKcCzjCDazVgRoX4= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.4 h1:aEsHIssIk6ETN5m2/MD8Y4B2X7FfXrBAUdkyRvbVYzA= +github.com/nats-io/nkeys v0.1.4/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= +github.com/netdata/go-orchestrator v0.0.0-20190905093727-c793edba0e8f/go.mod h1:ECF8anFVCt/TfTIWVPgPrNaYJXtAtpAOF62ugDbw41A= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nlopes/slack v0.6.1-0.20191106133607-d06c2a2b3249/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= @@ -404,6 +447,8 @@ github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.3/go.mod h1:YZeBtGzYYEsCHp2LST/u/0NDwGkRoBtmn1cIWCJiS6M= +github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -423,6 +468,8 @@ github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV0 github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -477,7 +524,10 @@ github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sacloud/libsacloud v1.26.1/go.mod h1:79ZwATmHLIFZIMd7sxA3LwzVy/B77uj3LDoToVTxDoQ= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -527,7 +577,9 @@ github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4 github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= +github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= @@ -535,12 +587,14 @@ github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -585,6 +639,9 @@ golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a h1:R/qVym5WAxsZWQqZCwDY/8 golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200117160349-530e935923ad h1:Jh8cai0fqIK+f6nG0UgPW5wFk8wmiMhM3AyciDBdtQg= golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM= +golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -634,10 +691,13 @@ golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -661,6 +721,7 @@ golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -681,6 +742,9 @@ golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4 h1:Hynbrlo6LbYI3H1IqXpkVDOcX/3HiPdhVEuyj5a59RM= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= @@ -689,6 +753,7 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0 h1:xQwXv67TxFo9nC1GJFyab5eq/5B590r6RlnL/G8Sz7w= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -780,6 +845,8 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= @@ -802,6 +869,7 @@ gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQb gopkg.in/telegram-bot-api.v4 v4.6.4/go.mod h1:5DpGO5dbumb40px+dXcwCpcjmeHNYLpk0bp3XRNvWDM= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/pkg/proto/v0/staticcheck.conf b/pkg/proto/v0/staticcheck.conf new file mode 100644 index 0000000000..5120a177a3 --- /dev/null +++ b/pkg/proto/v0/staticcheck.conf @@ -0,0 +1 @@ +checks = ["all", "-ST1003", "-ST1000", "-SA1019"] \ No newline at end of file From bce69829201e0506d34fc8d73b6387151c49c783 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Thu, 7 May 2020 18:10:47 +0200 Subject: [PATCH 136/407] Adapt creating settings bundles to most recent format --- pkg/service/v0/service.go | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 3ece9622db..389cc66c73 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -144,14 +144,18 @@ func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { SingleChoiceValue: &settings.SingleChoiceListSetting{ Options: []*settings.ListOption{ { - Option: &settings.ListOption_StringValue{ - StringValue: "Europe/Berlin", + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "Europe/Berlin", + }, }, DisplayValue: "Europe/Berlin", }, { - Option: &settings.ListOption_StringValue{ - StringValue: "Asia/Kathmandu", + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "Asia/Kathmandu", + }, }, DisplayValue: "Asia/Kathmandu", }, @@ -167,14 +171,18 @@ func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { SingleChoiceValue: &settings.SingleChoiceListSetting{ Options: []*settings.ListOption{ { - Option: &settings.ListOption_StringValue{ - StringValue: "de_DE", + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "de_DE", + }, }, DisplayValue: "Deutsch", }, { - Option: &settings.ListOption_StringValue{ - StringValue: "en_EN", + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "en_EN", + }, }, DisplayValue: "English", }, @@ -223,14 +231,18 @@ func generateSettingsBundleNotificationsRequest() settings.SaveSettingsBundleReq MultiChoiceValue: &settings.MultiChoiceListSetting{ Options: []*settings.ListOption{ { - Option: &settings.ListOption_StringValue{ - StringValue: "email", + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "email", + }, }, DisplayValue: "Send via email", }, { - Option: &settings.ListOption_StringValue{ - StringValue: "stream", + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "stream", + }, }, DisplayValue: "Show in stream", Default: true, From ce9c74eb01429d5fa98f587ccd92265e2dd5e910 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 11 May 2020 10:01:19 +0200 Subject: [PATCH 137/407] regenerate proto files --- pkg/proto/v0/accounts.pb.go | 275 +++++++++++++++--------------- pkg/proto/v0/accounts.pb.micro.go | 8 - 2 files changed, 136 insertions(+), 147 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index dae8aea9c3..52f5a82a46 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -1,19 +1,18 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.21.0-devel +// protoc-gen-go v1.21.0 // protoc v3.11.4 // source: accounts.proto package proto import ( - reflect "reflect" - sync "sync" - proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) const ( @@ -87,8 +86,7 @@ type Payload struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Phoenix *Phoenix `protobuf:"bytes,1,opt,name=phoenix,proto3" json:"phoenix,omitempty"` - Account *Account `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` + Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` } func (x *Payload) Reset() { @@ -123,13 +121,6 @@ func (*Payload) Descriptor() ([]byte, []int) { return file_accounts_proto_rawDescGZIP(), []int{1} } -func (x *Payload) GetPhoenix() *Phoenix { - if x != nil { - return x.Phoenix - } - return nil -} - func (x *Payload) GetAccount() *Account { if x != nil { return x.Account @@ -142,8 +133,9 @@ type Account struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - StandardClaims *StandardClaims `protobuf:"bytes,1,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` - Identities []*IdHistory `protobuf:"bytes,2,rep,name=identities,proto3" json:"identities,omitempty"` // keep track of every identity of a given user + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + StandardClaims *StandardClaims `protobuf:"bytes,2,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` + Identities []*IdHistory `protobuf:"bytes,3,rep,name=identities,proto3" json:"identities,omitempty"` // keep track of every identity of a given user } func (x *Account) Reset() { @@ -178,6 +170,13 @@ func (*Account) Descriptor() ([]byte, []int) { return file_accounts_proto_rawDescGZIP(), []int{2} } +func (x *Account) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + func (x *Account) GetStandardClaims() *StandardClaims { if x != nil { return x.StandardClaims @@ -822,112 +821,111 @@ var file_accounts_proto_rawDesc = []byte{ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x63, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x2b, 0x0a, 0x07, 0x70, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x68, 0x6f, 0x65, - 0x6e, 0x69, 0x78, 0x52, 0x07, 0x70, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x12, 0x2b, 0x0a, 0x07, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x07, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, - 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, - 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, - 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xfa, 0x04, - 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, - 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, - 0x75, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x76, 0x65, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6d, 0x69, - 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x64, - 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, - 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, - 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x7a, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x7a, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x12, - 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, - 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x68, - 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x68, 0x6f, 0x6e, 0x65, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x07, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, - 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x2f, 0x0a, 0x09, 0x49, 0x64, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x73, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x73, 0x73, 0x22, 0x1f, 0x0a, 0x07, 0x50, - 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x22, 0x9f, 0x01, 0x0a, - 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, - 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x63, - 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x22, 0x5d, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2a, - 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x32, 0x99, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x10, 0x2e, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, - 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x12, 0x2d, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, - 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x12, 0x2c, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0f, 0x2e, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x11, 0x2e, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x42, 0x14, - 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x3b, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x36, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x2b, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, + 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x0f, + 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, + 0x0e, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, + 0x33, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, + 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x22, 0xfa, 0x04, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, + 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, + 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x0a, + 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, + 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x7a, 0x6f, + 0x6e, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x7a, 0x6f, + 0x6e, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x13, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, + 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, + 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, + 0x79, 0x22, 0x2f, 0x0a, 0x09, 0x49, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x62, + 0x12, 0x10, 0x0a, 0x03, 0x69, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, + 0x73, 0x73, 0x22, 0x1f, 0x0a, 0x07, 0x50, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x68, + 0x65, 0x6d, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x49, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x63, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x5d, 0x0a, 0x07, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, + 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0x99, 0x01, 0x0a, 0x0f, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x29, 0x0a, + 0x03, 0x53, 0x65, 0x74, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2d, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, + 0x14, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x12, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -957,24 +955,23 @@ var file_accounts_proto_goTypes = []interface{}{ } var file_accounts_proto_depIdxs = []int32{ 1, // 0: settings.Record.payload:type_name -> settings.Payload - 6, // 1: settings.Payload.phoenix:type_name -> settings.Phoenix - 2, // 2: settings.Payload.account:type_name -> settings.Account - 3, // 3: settings.Account.standard_claims:type_name -> settings.StandardClaims - 5, // 4: settings.Account.identities:type_name -> settings.IdHistory - 4, // 5: settings.StandardClaims.address:type_name -> settings.Address - 5, // 6: settings.GetRequest.identity:type_name -> settings.IdHistory - 0, // 7: settings.Records.records:type_name -> settings.Record - 0, // 8: settings.AccountsService.Set:input_type -> settings.Record - 7, // 9: settings.AccountsService.Get:input_type -> settings.GetRequest - 8, // 10: settings.AccountsService.Search:input_type -> settings.Query - 0, // 11: settings.AccountsService.Set:output_type -> settings.Record - 0, // 12: settings.AccountsService.Get:output_type -> settings.Record - 9, // 13: settings.AccountsService.Search:output_type -> settings.Records - 11, // [11:14] is the sub-list for method output_type - 8, // [8:11] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 2, // 1: settings.Payload.account:type_name -> settings.Account + 3, // 2: settings.Account.standard_claims:type_name -> settings.StandardClaims + 5, // 3: settings.Account.identities:type_name -> settings.IdHistory + 4, // 4: settings.StandardClaims.address:type_name -> settings.Address + 5, // 5: settings.GetRequest.identity:type_name -> settings.IdHistory + 0, // 6: settings.Records.records:type_name -> settings.Record + 0, // 7: settings.AccountsService.Set:input_type -> settings.Record + 7, // 8: settings.AccountsService.Get:input_type -> settings.GetRequest + 8, // 9: settings.AccountsService.Search:input_type -> settings.Query + 0, // 10: settings.AccountsService.Set:output_type -> settings.Record + 0, // 11: settings.AccountsService.Get:output_type -> settings.Record + 9, // 12: settings.AccountsService.Search:output_type -> settings.Records + 10, // [10:13] is the sub-list for method output_type + 7, // [7:10] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_accounts_proto_init() } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index 001e6ef195..a5a64a453b 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -12,7 +12,6 @@ import ( import ( context "context" - api "github.com/micro/go-micro/v2/api" client "github.com/micro/go-micro/v2/client" server "github.com/micro/go-micro/v2/server" ) @@ -29,17 +28,10 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package // Reference imports to suppress errors if they are not otherwise used. -var _ api.Endpoint var _ context.Context var _ client.Option var _ server.Option -// Api Endpoints for AccountsService service - -func NewAccountsServiceEndpoints() []*api.Endpoint { - return []*api.Endpoint{} -} - // Client API for AccountsService service type AccountsService interface { From 2f3d7cbc397b5b960ecde5b602bc0adbdd6777cc Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 11 May 2020 11:41:11 +0200 Subject: [PATCH 138/407] downgrade go-micro --- go.mod | 2 +- go.sum | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 9a1512faaa..4d217e7300 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.14.4 // indirect github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 - github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb + github.com/micro/micro/v2 v2.0.1-0.20200210100719-f38a1d8d5348 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-pkg/v2 v2.2.1 github.com/owncloud/ocis-settings v0.0.0-00010101000000-000000000000 diff --git a/go.sum b/go.sum index ea505c35db..fc3be4889b 100644 --- a/go.sum +++ b/go.sum @@ -519,6 +519,7 @@ github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= github.com/micro/cli/v2 v2.1.1 h1:uFw0SMIKmGuyHIm8lXns/NOn7V62bM5y7DnlxUM+BEQ= github.com/micro/cli/v2 v2.1.1/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= +github.com/micro/cli/v2 v2.1.2-0.20200203150404-894195727d9c/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/cli/v2 v2.1.2 h1:43J1lChg/rZCC1rvdqZNFSQDrGT7qfMrtp6/ztpIkEM= github.com/micro/cli/v2 v2.1.2/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6s+iDsrM= @@ -527,6 +528,7 @@ github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXpRw= github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= +github.com/micro/go-micro/v2 v2.0.1-0.20200207205803-ef537270add3/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb h1:LjGUj/0hVn8pn8I+MoJCctj1gQny14lqT3a6v5THEoo= github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb/go.mod h1:qz2UT4UFdFVs+qUGMuDK3xuHgude1BgntqQ29sbpPlE= github.com/micro/go-micro/v2 v2.6.1-0.20200506095814-5387f73b5d8e h1:EvjB9RKFavhizMUClRqK3hymBdhm9Ysa2UYWN6tLUL0= @@ -539,6 +541,7 @@ github.com/micro/mdns v0.3.0 h1:bYycYe+98AXR3s8Nq5qvt6C573uFTDPIYzJemWON0QE= github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= github.com/micro/micro v1.16.0/go.mod h1:TO5Ng0KidbfRYIxVM4Q3deZ0A+qwRyP9WeXp+k2fWNA= github.com/micro/micro v1.18.1-0.20200129112143-c64a2f7745fe h1:7wltlc6/cQmh7RGLA1jnRUsxB0kbu9HFh/u2o6yMVcA= +github.com/micro/micro/v2 v2.0.1-0.20200210100719-f38a1d8d5348/go.mod h1:MQBt/cBC7vKP6JMebU5982Umd5GIrVdhPbOGieXowyY= github.com/micro/micro/v2 v2.5.1-0.20200418121137-24e9b206767c/go.mod h1:fqqaYbJGYzSBi7Ms2Adly7Xzw9+WIRBAucUjwGmYeFY= github.com/micro/micro/v2 v2.6.1-0.20200506111713-0a691b399107 h1:Dl5GAdKQOzhIdcXmgqk+m/kHc9PomfeStzPETfvGDj8= github.com/micro/micro/v2 v2.6.1-0.20200506111713-0a691b399107/go.mod h1:AejRahuyvXRGyYeU2UV6YQC/wL/+lwlF7YUmKnofhek= From f537f420c4090dd8c7c121fecf789d43a641f009 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 11 May 2020 12:42:21 +0200 Subject: [PATCH 139/407] use latest settings and get rid of replace --- go.mod | 4 +--- go.sum | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4d217e7300..eb8ab39cf8 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/micro/micro/v2 v2.0.1-0.20200210100719-f38a1d8d5348 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-pkg/v2 v2.2.1 - github.com/owncloud/ocis-settings v0.0.0-00010101000000-000000000000 + github.com/owncloud/ocis-settings v0.0.0-20200511093940-0fddb624d0da github.com/restic/calens v0.2.0 github.com/spf13/afero v1.2.2 // indirect github.com/spf13/viper v1.6.3 @@ -24,5 +24,3 @@ require ( ) replace google.golang.org/grpc => google.golang.org/grpc v1.26.0 - -replace github.com/owncloud/ocis-settings => ../ocis-settings diff --git a/go.sum b/go.sum index fc3be4889b..f7e3a298b3 100644 --- a/go.sum +++ b/go.sum @@ -67,6 +67,7 @@ github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJ github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/UnnoTed/fileb0x v1.1.4 h1:IUgFzgBipF/ujNx9wZgkrKOF3oltUuXMSoaejrBws+A= github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ9cgOiZs= github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= @@ -113,6 +114,7 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bmatcuk/doublestar v1.1.1 h1:YroD6BJCZBYx06yYFEWvUuKVWQn3vLLQAVmDmvTSaiQ= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= @@ -229,6 +231,7 @@ github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+ github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= @@ -451,6 +454,7 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= +github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= @@ -475,7 +479,9 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= +github.com/labstack/echo v3.2.1+incompatible h1:J2M7YArHx4gi8p/3fDw8tX19SXhBCoRpviyAZSN3I88= github.com/labstack/echo v3.2.1+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= +github.com/labstack/gommon v0.2.7 h1:2qOPq/twXDrQ6ooBGrn3mrmVOC+biLlatwgIu8lbzRM= github.com/labstack/gommon v0.2.7/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= @@ -498,15 +504,18 @@ github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGD github.com/marten-seemann/qtls v0.3.2/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= @@ -529,6 +538,7 @@ github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95 github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXpRw= github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= github.com/micro/go-micro/v2 v2.0.1-0.20200207205803-ef537270add3/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= +github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb h1:LjGUj/0hVn8pn8I+MoJCctj1gQny14lqT3a6v5THEoo= github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb/go.mod h1:qz2UT4UFdFVs+qUGMuDK3xuHgude1BgntqQ29sbpPlE= github.com/micro/go-micro/v2 v2.6.1-0.20200506095814-5387f73b5d8e h1:EvjB9RKFavhizMUClRqK3hymBdhm9Ysa2UYWN6tLUL0= @@ -565,10 +575,13 @@ github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go. github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= @@ -618,6 +631,7 @@ github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/Hzq github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= +github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= @@ -796,7 +810,9 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 h1:gKMu1Bf6QINDnvyZuTaACm9ofY+PRh+5vFz4oxBZeF8= github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= From 3714125213f5c9a9bd0eed5f03b8820554d13a73 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 15 May 2020 13:52:32 +0200 Subject: [PATCH 140/407] Add more languages to language options --- pkg/service/v0/service.go | 44 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index db849a12d4..2363ee0f8e 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -176,7 +176,15 @@ func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { { Value: &settings.ListOptionValue{ Option: &settings.ListOptionValue_StringValue{ - StringValue: "de_DE", + StringValue: "cs", + }, + }, + DisplayValue: "Czech", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "de", }, }, DisplayValue: "Deutsch", @@ -184,11 +192,43 @@ func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { { Value: &settings.ListOptionValue{ Option: &settings.ListOptionValue_StringValue{ - StringValue: "en_EN", + StringValue: "en", }, }, DisplayValue: "English", }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "es", + }, + }, + DisplayValue: "Español", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "fr", + }, + }, + DisplayValue: "Français", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "gl", + }, + }, + DisplayValue: "Galego", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "it", + }, + }, + DisplayValue: "Italiano", + }, }, }, }, From 93325178f881ba1b78d6aa6b09dbe1124ad48db7 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 19 May 2020 10:38:53 +0200 Subject: [PATCH 141/407] Move settings bundles into own file --- go.mod | 3 +- go.sum | 3 + pkg/service/v0/service.go | 216 ++----------------------------------- pkg/service/v0/settings.go | 206 +++++++++++++++++++++++++++++++++++ 4 files changed, 216 insertions(+), 212 deletions(-) create mode 100644 pkg/service/v0/settings.go diff --git a/go.mod b/go.mod index eb8ab39cf8..0c937f5061 100644 --- a/go.mod +++ b/go.mod @@ -8,15 +8,14 @@ require ( github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/protobuf v1.4.1 github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect - github.com/grpc-ecosystem/grpc-gateway v1.14.4 // indirect github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 + github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e github.com/micro/micro/v2 v2.0.1-0.20200210100719-f38a1d8d5348 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-pkg/v2 v2.2.1 github.com/owncloud/ocis-settings v0.0.0-20200511093940-0fddb624d0da github.com/restic/calens v0.2.0 - github.com/spf13/afero v1.2.2 // indirect github.com/spf13/viper v1.6.3 google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84 google.golang.org/protobuf v1.22.0 diff --git a/go.sum b/go.sum index f7e3a298b3..c18136dc92 100644 --- a/go.sum +++ b/go.sum @@ -538,6 +538,7 @@ github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95 github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXpRw= github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= github.com/micro/go-micro/v2 v2.0.1-0.20200207205803-ef537270add3/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= +github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e h1:EXYgiOLVc7zkUCIsAc++GQiOvPRh/gaGl++fqY1807g= github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb h1:LjGUj/0hVn8pn8I+MoJCctj1gQny14lqT3a6v5THEoo= github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb/go.mod h1:qz2UT4UFdFVs+qUGMuDK3xuHgude1BgntqQ29sbpPlE= @@ -668,6 +669,8 @@ github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0Q github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV03z6zI= github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= +github.com/owncloud/ocis-settings v0.0.0-20200511093940-0fddb624d0da h1:VVkg5s6zs37MvKZ1YQK0/dfN3D+WQ7VuESOfnrhdqP4= +github.com/owncloud/ocis-settings v0.0.0-20200511093940-0fddb624d0da/go.mod h1:1PyfbVIZMTX21JxsRT+maRIjRFD3H+yhfpr1jMz3PeA= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 2363ee0f8e..3f52c86cda 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -3,11 +3,11 @@ package service import ( "context" - "github.com/micro/go-micro/v2" "github.com/owncloud/ocis-accounts/pkg/account" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" olog "github.com/owncloud/ocis-pkg/v2/log" + mclient "github.com/micro/go-micro/v2/client" settings "github.com/owncloud/ocis-settings/pkg/proto/v0" ) @@ -73,19 +73,17 @@ func (s Service) Search(ctx context.Context, in *proto.Query, res *proto.Records // RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. func RegisterSettingsBundles(l *olog.Logger) { - // TODO it's ok if this fails. But show a warning that the settings service is not reachable. Make sure that init doesn't die if the settings service is not reachable. - svc := micro.NewService() - svc.Init() - service := settings.NewBundleService("com.owncloud.api.settings", svc.Client()) // TODO fetch service name instead of hardcoding it. + // TODO this won't work with a registry other than mdns. Look into Micro's client initialization. + // https://github.com/owncloud/ocis-proxy/issues/38 + service := settings.NewBundleService("com.owncloud.api.settings", mclient.DefaultClient) - // TODO avoid hardcoding these values, perhaps load them from a file and using jsonpb's type Marshal. requests := []settings.SaveSettingsBundleRequest{ generateSettingsBundleProfileRequest(), generateSettingsBundleNotificationsRequest(), } - for _, request := range requests { - res, err := service.SaveSettingsBundle(context.Background(), &request) + for i := range requests { + res, err := service.SaveSettingsBundle(context.Background(), &requests[i]) if err != nil { l.Err(err). Msg("Error registering settings bundle") @@ -96,205 +94,3 @@ func RegisterSettingsBundles(l *olog.Logger) { } } } - -func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { - return settings.SaveSettingsBundleRequest{ - SettingsBundle: &settings.SettingsBundle{ - Identifier: &settings.Identifier{ - Extension: "ocis-accounts", - BundleKey: "profile", - }, - DisplayName: "Profile", - Settings: []*settings.Setting{ - { - SettingKey: "firstname", - DisplayName: "Firstname", - Description: "Input for firstname", - Value: &settings.Setting_StringValue{ - StringValue: &settings.StringSetting{ - Placeholder: "Set firstname", - }, - }, - }, - { - SettingKey: "lastname", - DisplayName: "Lastname", - Description: "Input for lastname", - Value: &settings.Setting_StringValue{ - StringValue: &settings.StringSetting{ - Placeholder: "Set lastname", - }, - }, - }, - { - SettingKey: "age", - DisplayName: "Age", - Description: "Input for age", - Value: &settings.Setting_IntValue{ - IntValue: &settings.IntSetting{ - Placeholder: "Set age", - Min: 16, - Max: 200, - Step: 2, - }, - }, - }, - { - SettingKey: "timezone", - DisplayName: "Timezone", - Description: "User timezone", - Value: &settings.Setting_SingleChoiceValue{ - SingleChoiceValue: &settings.SingleChoiceListSetting{ - Options: []*settings.ListOption{ - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "Europe/Berlin", - }, - }, - DisplayValue: "Europe/Berlin", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "Asia/Kathmandu", - }, - }, - DisplayValue: "Asia/Kathmandu", - }, - }, - }, - }, - }, - { - SettingKey: "language", - DisplayName: "Language", - Description: "User language", - Value: &settings.Setting_SingleChoiceValue{ - SingleChoiceValue: &settings.SingleChoiceListSetting{ - Options: []*settings.ListOption{ - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "cs", - }, - }, - DisplayValue: "Czech", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "de", - }, - }, - DisplayValue: "Deutsch", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "en", - }, - }, - DisplayValue: "English", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "es", - }, - }, - DisplayValue: "Español", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "fr", - }, - }, - DisplayValue: "Français", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "gl", - }, - }, - DisplayValue: "Galego", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "it", - }, - }, - DisplayValue: "Italiano", - }, - }, - }, - }, - }, - }, - }, - } -} - -func generateSettingsBundleNotificationsRequest() settings.SaveSettingsBundleRequest { - return settings.SaveSettingsBundleRequest{ - SettingsBundle: &settings.SettingsBundle{ - Identifier: &settings.Identifier{ - Extension: "ocis-accounts", - BundleKey: "notifications", - }, - DisplayName: "Notifications", - Settings: []*settings.Setting{ - { - SettingKey: "email", - DisplayName: "Email", - Value: &settings.Setting_BoolValue{ - BoolValue: &settings.BoolSetting{ - Default: false, - Label: "Send via email", - }, - }, - }, - { - SettingKey: "stream", - DisplayName: "Stream", - Value: &settings.Setting_BoolValue{ - BoolValue: &settings.BoolSetting{ - Default: true, - Label: "Show in stream", - }, - }, - }, - { - SettingKey: "transport", - DisplayName: "Transport", - Value: &settings.Setting_MultiChoiceValue{ - MultiChoiceValue: &settings.MultiChoiceListSetting{ - Options: []*settings.ListOption{ - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "email", - }, - }, - DisplayValue: "Send via email", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "stream", - }, - }, - DisplayValue: "Show in stream", - Default: true, - }, - }, - }, - }, - }, - }, - }, - } -} diff --git a/pkg/service/v0/settings.go b/pkg/service/v0/settings.go new file mode 100644 index 0000000000..12ebafe99b --- /dev/null +++ b/pkg/service/v0/settings.go @@ -0,0 +1,206 @@ +package service + +import settings "github.com/owncloud/ocis-settings/pkg/proto/v0" + +func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { + return settings.SaveSettingsBundleRequest{ + SettingsBundle: &settings.SettingsBundle{ + Identifier: &settings.Identifier{ + Extension: "ocis-accounts", + BundleKey: "profile", + }, + DisplayName: "Profile", + Settings: []*settings.Setting{ + { + SettingKey: "firstname", + DisplayName: "Firstname", + Description: "Input for firstname", + Value: &settings.Setting_StringValue{ + StringValue: &settings.StringSetting{ + Placeholder: "Set firstname", + }, + }, + }, + { + SettingKey: "lastname", + DisplayName: "Lastname", + Description: "Input for lastname", + Value: &settings.Setting_StringValue{ + StringValue: &settings.StringSetting{ + Placeholder: "Set lastname", + }, + }, + }, + { + SettingKey: "age", + DisplayName: "Age", + Description: "Input for age", + Value: &settings.Setting_IntValue{ + IntValue: &settings.IntSetting{ + Placeholder: "Set age", + Min: 16, + Max: 200, + Step: 2, + }, + }, + }, + { + SettingKey: "timezone", + DisplayName: "Timezone", + Description: "User timezone", + Value: &settings.Setting_SingleChoiceValue{ + SingleChoiceValue: &settings.SingleChoiceListSetting{ + Options: []*settings.ListOption{ + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "Europe/Berlin", + }, + }, + DisplayValue: "Europe/Berlin", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "Asia/Kathmandu", + }, + }, + DisplayValue: "Asia/Kathmandu", + }, + }, + }, + }, + }, + { + SettingKey: "language", + DisplayName: "Language", + Description: "User language", + Value: &settings.Setting_SingleChoiceValue{ + SingleChoiceValue: &settings.SingleChoiceListSetting{ + Options: []*settings.ListOption{ + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "cs", + }, + }, + DisplayValue: "Czech", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "de", + }, + }, + DisplayValue: "Deutsch", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "en", + }, + }, + DisplayValue: "English", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "es", + }, + }, + DisplayValue: "Español", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "fr", + }, + }, + DisplayValue: "Français", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "gl", + }, + }, + DisplayValue: "Galego", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "it", + }, + }, + DisplayValue: "Italiano", + }, + }, + }, + }, + }, + }, + }, + } +} + +func generateSettingsBundleNotificationsRequest() settings.SaveSettingsBundleRequest { + return settings.SaveSettingsBundleRequest{ + SettingsBundle: &settings.SettingsBundle{ + Identifier: &settings.Identifier{ + Extension: "ocis-accounts", + BundleKey: "notifications", + }, + DisplayName: "Notifications", + Settings: []*settings.Setting{ + { + SettingKey: "email", + DisplayName: "Email", + Value: &settings.Setting_BoolValue{ + BoolValue: &settings.BoolSetting{ + Default: false, + Label: "Send via email", + }, + }, + }, + { + SettingKey: "stream", + DisplayName: "Stream", + Value: &settings.Setting_BoolValue{ + BoolValue: &settings.BoolSetting{ + Default: true, + Label: "Show in stream", + }, + }, + }, + { + SettingKey: "transport", + DisplayName: "Transport", + Value: &settings.Setting_MultiChoiceValue{ + MultiChoiceValue: &settings.MultiChoiceListSetting{ + Options: []*settings.ListOption{ + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "email", + }, + }, + DisplayValue: "Send via email", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "stream", + }, + }, + DisplayValue: "Show in stream", + Default: true, + }, + }, + }, + }, + }, + }, + }, + } +} + From 868e95e2bf506a879dbc1b987caafe4597f538f7 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 22 May 2020 09:52:20 +0200 Subject: [PATCH 142/407] Remove notifications bundle and remove settings from profile bundle --- pkg/service/v0/service.go | 1 - pkg/service/v0/settings.go | 95 -------------------------------------- 2 files changed, 96 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 3f52c86cda..7508c8a92f 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -79,7 +79,6 @@ func RegisterSettingsBundles(l *olog.Logger) { requests := []settings.SaveSettingsBundleRequest{ generateSettingsBundleProfileRequest(), - generateSettingsBundleNotificationsRequest(), } for i := range requests { diff --git a/pkg/service/v0/settings.go b/pkg/service/v0/settings.go index 12ebafe99b..4934053baa 100644 --- a/pkg/service/v0/settings.go +++ b/pkg/service/v0/settings.go @@ -11,39 +11,6 @@ func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { }, DisplayName: "Profile", Settings: []*settings.Setting{ - { - SettingKey: "firstname", - DisplayName: "Firstname", - Description: "Input for firstname", - Value: &settings.Setting_StringValue{ - StringValue: &settings.StringSetting{ - Placeholder: "Set firstname", - }, - }, - }, - { - SettingKey: "lastname", - DisplayName: "Lastname", - Description: "Input for lastname", - Value: &settings.Setting_StringValue{ - StringValue: &settings.StringSetting{ - Placeholder: "Set lastname", - }, - }, - }, - { - SettingKey: "age", - DisplayName: "Age", - Description: "Input for age", - Value: &settings.Setting_IntValue{ - IntValue: &settings.IntSetting{ - Placeholder: "Set age", - Min: 16, - Max: 200, - Step: 2, - }, - }, - }, { SettingKey: "timezone", DisplayName: "Timezone", @@ -142,65 +109,3 @@ func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { }, } } - -func generateSettingsBundleNotificationsRequest() settings.SaveSettingsBundleRequest { - return settings.SaveSettingsBundleRequest{ - SettingsBundle: &settings.SettingsBundle{ - Identifier: &settings.Identifier{ - Extension: "ocis-accounts", - BundleKey: "notifications", - }, - DisplayName: "Notifications", - Settings: []*settings.Setting{ - { - SettingKey: "email", - DisplayName: "Email", - Value: &settings.Setting_BoolValue{ - BoolValue: &settings.BoolSetting{ - Default: false, - Label: "Send via email", - }, - }, - }, - { - SettingKey: "stream", - DisplayName: "Stream", - Value: &settings.Setting_BoolValue{ - BoolValue: &settings.BoolSetting{ - Default: true, - Label: "Show in stream", - }, - }, - }, - { - SettingKey: "transport", - DisplayName: "Transport", - Value: &settings.Setting_MultiChoiceValue{ - MultiChoiceValue: &settings.MultiChoiceListSetting{ - Options: []*settings.ListOption{ - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "email", - }, - }, - DisplayValue: "Send via email", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "stream", - }, - }, - DisplayValue: "Show in stream", - Default: true, - }, - }, - }, - }, - }, - }, - }, - } -} - From 6ba5a34e2fd0c0843e0361f781f387e1b79f2b83 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 22 May 2020 12:21:21 +0200 Subject: [PATCH 143/407] update ocis-settings to 46ea31026363 --- go.mod | 4 ++-- go.sum | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 0c937f5061..2fff7ea6b8 100644 --- a/go.mod +++ b/go.mod @@ -10,11 +10,11 @@ require ( github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 - github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e + github.com/micro/go-micro/v2 v2.6.0 github.com/micro/micro/v2 v2.0.1-0.20200210100719-f38a1d8d5348 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-pkg/v2 v2.2.1 - github.com/owncloud/ocis-settings v0.0.0-20200511093940-0fddb624d0da + github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 github.com/restic/calens v0.2.0 github.com/spf13/viper v1.6.3 google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84 diff --git a/go.sum b/go.sum index c18136dc92..109e067dcd 100644 --- a/go.sum +++ b/go.sum @@ -542,6 +542,8 @@ github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e h1:EXYgiOLVc7z github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb h1:LjGUj/0hVn8pn8I+MoJCctj1gQny14lqT3a6v5THEoo= github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb/go.mod h1:qz2UT4UFdFVs+qUGMuDK3xuHgude1BgntqQ29sbpPlE= +github.com/micro/go-micro/v2 v2.6.0 h1:HH6uEqTu6pkBtAlwAqQW2sf33640iEa1s9puGIctpO0= +github.com/micro/go-micro/v2 v2.6.0/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= github.com/micro/go-micro/v2 v2.6.1-0.20200506095814-5387f73b5d8e h1:EvjB9RKFavhizMUClRqK3hymBdhm9Ysa2UYWN6tLUL0= github.com/micro/go-micro/v2 v2.6.1-0.20200506095814-5387f73b5d8e/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= @@ -671,6 +673,8 @@ github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV0 github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= github.com/owncloud/ocis-settings v0.0.0-20200511093940-0fddb624d0da h1:VVkg5s6zs37MvKZ1YQK0/dfN3D+WQ7VuESOfnrhdqP4= github.com/owncloud/ocis-settings v0.0.0-20200511093940-0fddb624d0da/go.mod h1:1PyfbVIZMTX21JxsRT+maRIjRFD3H+yhfpr1jMz3PeA= +github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 h1:wk/7aAUITTrM192TFoIDq4fqzJQtFOQ0dDdSRkJ25SU= +github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363/go.mod h1:/h0ceztOoFc3KAnm8nqZI4zwsaaZK9q4MTgtintwsXc= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= From a5d5eac711c18438f4ae835492954486fc1232d7 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 22 May 2020 10:31:04 +0000 Subject: [PATCH 144/407] Automated changelog update [skip ci] --- go.mod | 1 - 1 file changed, 1 deletion(-) diff --git a/go.mod b/go.mod index 2fff7ea6b8..adb9029912 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module github.com/owncloud/ocis-accounts go 1.13 require ( - github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/go-test/deep v1.0.6 // indirect github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/protobuf v1.4.1 From b63a7cd24150f8c6d57ec81ac526813a263975e4 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 12 Jun 2020 16:45:45 +0200 Subject: [PATCH 145/407] Remove timezone setting from profile settings bundle --- pkg/service/v0/settings.go | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/pkg/service/v0/settings.go b/pkg/service/v0/settings.go index 4934053baa..07f62b91ab 100644 --- a/pkg/service/v0/settings.go +++ b/pkg/service/v0/settings.go @@ -11,33 +11,6 @@ func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { }, DisplayName: "Profile", Settings: []*settings.Setting{ - { - SettingKey: "timezone", - DisplayName: "Timezone", - Description: "User timezone", - Value: &settings.Setting_SingleChoiceValue{ - SingleChoiceValue: &settings.SingleChoiceListSetting{ - Options: []*settings.ListOption{ - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "Europe/Berlin", - }, - }, - DisplayValue: "Europe/Berlin", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "Asia/Kathmandu", - }, - }, - DisplayValue: "Asia/Kathmandu", - }, - }, - }, - }, - }, { SettingKey: "language", DisplayName: "Language", From 5a4a5d87371ca926d377f01a5eaa72f4115b1ddf Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 12 Jun 2020 16:50:53 +0200 Subject: [PATCH 146/407] Add changelog item --- changelog/unreleased/remove-timezone-setting.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 changelog/unreleased/remove-timezone-setting.md diff --git a/changelog/unreleased/remove-timezone-setting.md b/changelog/unreleased/remove-timezone-setting.md new file mode 100644 index 0000000000..d46f57d064 --- /dev/null +++ b/changelog/unreleased/remove-timezone-setting.md @@ -0,0 +1,7 @@ +Change: Remove timezone setting + +We had a timezone setting in our profile settings bundle. As we're not dealing with a timezone yet +it would be confusing for the user to have a timezone setting available. We removed it, until we +have a timezone implementation available in ocis-web. + +https://github.com/owncloud/ocis-accounts/pull/33 From 81eef794c95e65f59f951cf583a0a3ac306e8b1b Mon Sep 17 00:00:00 2001 From: Alex Unger Date: Fri, 12 Jun 2020 16:32:09 +0000 Subject: [PATCH 147/407] Automated changelog update [skip ci] --- CHANGELOG.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f2be334d8..a7f9ad7637 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ +# Changelog for [unreleased] (UNRELEASED) + +The following sections list the changes in ocis-accounts unreleased. + +[unreleased]: https://github.com/owncloud/ocis-accounts/compare/v0.1.1...master + +## Summary + +* Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) + +## Details + +* Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) + + We had a timezone setting in our profile settings bundle. As we're not dealing with a timezone + yet it would be confusing for the user to have a timezone setting available. We removed it, until + we have a timezone implementation available in ocis-web. + + https://github.com/owncloud/ocis-accounts/pull/33 + # Changelog for [0.1.1] (2020-04-29) The following sections list the changes in ocis-accounts 0.1.1. From 16c5d13e101d142279d121469ec6872e9b61f8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 7 May 2020 18:43:06 +0200 Subject: [PATCH 148/407] Update accounts API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/update-accounts-api.md | 5 + pkg/account/accounts.go | 11 +- pkg/proto/v0/accounts.pb.go | 1347 +++++++------------ pkg/proto/v0/accounts.proto | 7 +- pkg/service/v0/service.go | 66 +- pkg/store/filesystem/store.go | 105 +- 6 files changed, 679 insertions(+), 862 deletions(-) create mode 100644 changelog/unreleased/update-accounts-api.md diff --git a/changelog/unreleased/update-accounts-api.md b/changelog/unreleased/update-accounts-api.md new file mode 100644 index 0000000000..55993cf884 --- /dev/null +++ b/changelog/unreleased/update-accounts-api.md @@ -0,0 +1,5 @@ +Enhancement: Update accounts API + +We updated the api to allow fetching users not onyl by UUID, but also by identity (OpenID issuer and subject) email, username and optionally a password. + +https://github.com/owncloud/ocis-accounts/pull/30 diff --git a/pkg/account/accounts.go b/pkg/account/accounts.go index 19df2cf85c..5c453d8f71 100644 --- a/pkg/account/accounts.go +++ b/pkg/account/accounts.go @@ -17,9 +17,16 @@ var ( type RegisterFunc func(*config.Config) Manager // Manager is an accounts service interface +// TODO email and username might not be unique? type Manager interface { - // Read a record - Read(key string) (*proto.Record, error) + // Read a record by uuid + Read(uuid string) (*proto.Record, error) + // Read a record by username + ReadByUsername(username string) (*proto.Record, error) + // Read a record by email + ReadByEmail(email string) (*proto.Record, error) + // Read a record by identity (iss & sub) + ReadByIdentity(identity *proto.IdHistory) (*proto.Record, error) // Write a record Write(*proto.Record) (*proto.Record, error) // List all records diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 52f5a82a46..e9e298b6be 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -1,591 +1,534 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.21.0 -// protoc v3.11.4 // source: accounts.proto package proto import ( + fmt "fmt" proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" + math "math" ) -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type Record struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Payload *Payload `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Payload *Payload `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Record) Reset() { - *x = Record{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Record) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Record) ProtoMessage() {} - -func (x *Record) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Record.ProtoReflect.Descriptor instead. +func (m *Record) Reset() { *m = Record{} } +func (m *Record) String() string { return proto.CompactTextString(m) } +func (*Record) ProtoMessage() {} func (*Record) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{0} + return fileDescriptor_e1e7723af4c007b7, []int{0} } -func (x *Record) GetKey() string { - if x != nil { - return x.Key +func (m *Record) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Record.Unmarshal(m, b) +} +func (m *Record) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Record.Marshal(b, m, deterministic) +} +func (m *Record) XXX_Merge(src proto.Message) { + xxx_messageInfo_Record.Merge(m, src) +} +func (m *Record) XXX_Size() int { + return xxx_messageInfo_Record.Size(m) +} +func (m *Record) XXX_DiscardUnknown() { + xxx_messageInfo_Record.DiscardUnknown(m) +} + +var xxx_messageInfo_Record proto.InternalMessageInfo + +func (m *Record) GetKey() string { + if m != nil { + return m.Key } return "" } -func (x *Record) GetPayload() *Payload { - if x != nil { - return x.Payload +func (m *Record) GetPayload() *Payload { + if m != nil { + return m.Payload } return nil } type Payload struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Payload) Reset() { - *x = Payload{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Payload) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Payload) ProtoMessage() {} - -func (x *Payload) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Payload.ProtoReflect.Descriptor instead. +func (m *Payload) Reset() { *m = Payload{} } +func (m *Payload) String() string { return proto.CompactTextString(m) } +func (*Payload) ProtoMessage() {} func (*Payload) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{1} + return fileDescriptor_e1e7723af4c007b7, []int{1} } -func (x *Payload) GetAccount() *Account { - if x != nil { - return x.Account +func (m *Payload) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Payload.Unmarshal(m, b) +} +func (m *Payload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Payload.Marshal(b, m, deterministic) +} +func (m *Payload) XXX_Merge(src proto.Message) { + xxx_messageInfo_Payload.Merge(m, src) +} +func (m *Payload) XXX_Size() int { + return xxx_messageInfo_Payload.Size(m) +} +func (m *Payload) XXX_DiscardUnknown() { + xxx_messageInfo_Payload.DiscardUnknown(m) +} + +var xxx_messageInfo_Payload proto.InternalMessageInfo + +func (m *Payload) GetAccount() *Account { + if m != nil { + return m.Account } return nil } type Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` - StandardClaims *StandardClaims `protobuf:"bytes,2,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` - Identities []*IdHistory `protobuf:"bytes,3,rep,name=identities,proto3" json:"identities,omitempty"` // keep track of every identity of a given user + StandardClaims *StandardClaims `protobuf:"bytes,1,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` + Identities []*IdHistory `protobuf:"bytes,2,rep,name=identities,proto3" json:"identities,omitempty"` + Issuer string `protobuf:"bytes,3,opt,name=Issuer,proto3" json:"Issuer,omitempty"` + Password string `protobuf:"bytes,4,opt,name=Password,proto3" json:"Password,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Account) Reset() { - *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Account) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Account) ProtoMessage() {} - -func (x *Account) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Account.ProtoReflect.Descriptor instead. +func (m *Account) Reset() { *m = Account{} } +func (m *Account) String() string { return proto.CompactTextString(m) } +func (*Account) ProtoMessage() {} func (*Account) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{2} + return fileDescriptor_e1e7723af4c007b7, []int{2} } -func (x *Account) GetUuid() string { - if x != nil { - return x.Uuid +func (m *Account) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Account.Unmarshal(m, b) +} +func (m *Account) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Account.Marshal(b, m, deterministic) +} +func (m *Account) XXX_Merge(src proto.Message) { + xxx_messageInfo_Account.Merge(m, src) +} +func (m *Account) XXX_Size() int { + return xxx_messageInfo_Account.Size(m) +} +func (m *Account) XXX_DiscardUnknown() { + xxx_messageInfo_Account.DiscardUnknown(m) +} + +var xxx_messageInfo_Account proto.InternalMessageInfo + +func (m *Account) GetStandardClaims() *StandardClaims { + if m != nil { + return m.StandardClaims + } + return nil +} + +func (m *Account) GetIdentities() []*IdHistory { + if m != nil { + return m.Identities + } + return nil +} + +func (m *Account) GetIssuer() string { + if m != nil { + return m.Issuer } return "" } -func (x *Account) GetStandardClaims() *StandardClaims { - if x != nil { - return x.StandardClaims +func (m *Account) GetPassword() string { + if m != nil { + return m.Password } - return nil -} - -func (x *Account) GetIdentities() []*IdHistory { - if x != nil { - return x.Identities - } - return nil + return "" } // OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims type StandardClaims struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - GivenName string `protobuf:"bytes,3,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` - FamilyName string `protobuf:"bytes,4,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"` - MiddleName string `protobuf:"bytes,5,opt,name=middle_name,json=middleName,proto3" json:"middle_name,omitempty"` - Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` - PreferredUsername string `protobuf:"bytes,7,opt,name=preferred_username,json=preferredUsername,proto3" json:"preferred_username,omitempty"` - Profile string `protobuf:"bytes,8,opt,name=profile,proto3" json:"profile,omitempty"` - Picture string `protobuf:"bytes,9,opt,name=picture,proto3" json:"picture,omitempty"` - Website string `protobuf:"bytes,10,opt,name=website,proto3" json:"website,omitempty"` - Email string `protobuf:"bytes,11,opt,name=email,proto3" json:"email,omitempty"` - EmailVerified bool `protobuf:"varint,12,opt,name=email_verified,json=emailVerified,proto3" json:"email_verified,omitempty"` - Gender string `protobuf:"bytes,13,opt,name=gender,proto3" json:"gender,omitempty"` - Birthdate string `protobuf:"bytes,14,opt,name=birthdate,proto3" json:"birthdate,omitempty"` - Zoneinfo string `protobuf:"bytes,15,opt,name=zoneinfo,proto3" json:"zoneinfo,omitempty"` - Locale string `protobuf:"bytes,16,opt,name=locale,proto3" json:"locale,omitempty"` - PhoneNumber string `protobuf:"bytes,17,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` - PhoneNumberVerified bool `protobuf:"varint,18,opt,name=phone_number_verified,json=phoneNumberVerified,proto3" json:"phone_number_verified,omitempty"` - UpdatedAt int32 `protobuf:"varint,19,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Address *Address `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty"` + Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + GivenName string `protobuf:"bytes,3,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` + FamilyName string `protobuf:"bytes,4,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"` + MiddleName string `protobuf:"bytes,5,opt,name=middle_name,json=middleName,proto3" json:"middle_name,omitempty"` + Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` + PreferredUsername string `protobuf:"bytes,7,opt,name=preferred_username,json=preferredUsername,proto3" json:"preferred_username,omitempty"` + Profile string `protobuf:"bytes,8,opt,name=profile,proto3" json:"profile,omitempty"` + Picture string `protobuf:"bytes,9,opt,name=picture,proto3" json:"picture,omitempty"` + Website string `protobuf:"bytes,10,opt,name=website,proto3" json:"website,omitempty"` + Email string `protobuf:"bytes,11,opt,name=email,proto3" json:"email,omitempty"` + EmailVerified bool `protobuf:"varint,12,opt,name=email_verified,json=emailVerified,proto3" json:"email_verified,omitempty"` + Gender string `protobuf:"bytes,13,opt,name=gender,proto3" json:"gender,omitempty"` + Birthdate string `protobuf:"bytes,14,opt,name=birthdate,proto3" json:"birthdate,omitempty"` + Zoneinfo string `protobuf:"bytes,15,opt,name=zoneinfo,proto3" json:"zoneinfo,omitempty"` + Locale string `protobuf:"bytes,16,opt,name=locale,proto3" json:"locale,omitempty"` + PhoneNumber string `protobuf:"bytes,17,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` + PhoneNumberVerified bool `protobuf:"varint,18,opt,name=phone_number_verified,json=phoneNumberVerified,proto3" json:"phone_number_verified,omitempty"` + UpdatedAt int32 `protobuf:"varint,19,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Address *Address `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StandardClaims) Reset() { - *x = StandardClaims{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StandardClaims) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StandardClaims) ProtoMessage() {} - -func (x *StandardClaims) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StandardClaims.ProtoReflect.Descriptor instead. +func (m *StandardClaims) Reset() { *m = StandardClaims{} } +func (m *StandardClaims) String() string { return proto.CompactTextString(m) } +func (*StandardClaims) ProtoMessage() {} func (*StandardClaims) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{3} + return fileDescriptor_e1e7723af4c007b7, []int{3} } -func (x *StandardClaims) GetSub() string { - if x != nil { - return x.Sub +func (m *StandardClaims) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StandardClaims.Unmarshal(m, b) +} +func (m *StandardClaims) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StandardClaims.Marshal(b, m, deterministic) +} +func (m *StandardClaims) XXX_Merge(src proto.Message) { + xxx_messageInfo_StandardClaims.Merge(m, src) +} +func (m *StandardClaims) XXX_Size() int { + return xxx_messageInfo_StandardClaims.Size(m) +} +func (m *StandardClaims) XXX_DiscardUnknown() { + xxx_messageInfo_StandardClaims.DiscardUnknown(m) +} + +var xxx_messageInfo_StandardClaims proto.InternalMessageInfo + +func (m *StandardClaims) GetSub() string { + if m != nil { + return m.Sub } return "" } -func (x *StandardClaims) GetName() string { - if x != nil { - return x.Name +func (m *StandardClaims) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *StandardClaims) GetGivenName() string { - if x != nil { - return x.GivenName +func (m *StandardClaims) GetGivenName() string { + if m != nil { + return m.GivenName } return "" } -func (x *StandardClaims) GetFamilyName() string { - if x != nil { - return x.FamilyName +func (m *StandardClaims) GetFamilyName() string { + if m != nil { + return m.FamilyName } return "" } -func (x *StandardClaims) GetMiddleName() string { - if x != nil { - return x.MiddleName +func (m *StandardClaims) GetMiddleName() string { + if m != nil { + return m.MiddleName } return "" } -func (x *StandardClaims) GetNickname() string { - if x != nil { - return x.Nickname +func (m *StandardClaims) GetNickname() string { + if m != nil { + return m.Nickname } return "" } -func (x *StandardClaims) GetPreferredUsername() string { - if x != nil { - return x.PreferredUsername +func (m *StandardClaims) GetPreferredUsername() string { + if m != nil { + return m.PreferredUsername } return "" } -func (x *StandardClaims) GetProfile() string { - if x != nil { - return x.Profile +func (m *StandardClaims) GetProfile() string { + if m != nil { + return m.Profile } return "" } -func (x *StandardClaims) GetPicture() string { - if x != nil { - return x.Picture +func (m *StandardClaims) GetPicture() string { + if m != nil { + return m.Picture } return "" } -func (x *StandardClaims) GetWebsite() string { - if x != nil { - return x.Website +func (m *StandardClaims) GetWebsite() string { + if m != nil { + return m.Website } return "" } -func (x *StandardClaims) GetEmail() string { - if x != nil { - return x.Email +func (m *StandardClaims) GetEmail() string { + if m != nil { + return m.Email } return "" } -func (x *StandardClaims) GetEmailVerified() bool { - if x != nil { - return x.EmailVerified +func (m *StandardClaims) GetEmailVerified() bool { + if m != nil { + return m.EmailVerified } return false } -func (x *StandardClaims) GetGender() string { - if x != nil { - return x.Gender +func (m *StandardClaims) GetGender() string { + if m != nil { + return m.Gender } return "" } -func (x *StandardClaims) GetBirthdate() string { - if x != nil { - return x.Birthdate +func (m *StandardClaims) GetBirthdate() string { + if m != nil { + return m.Birthdate } return "" } -func (x *StandardClaims) GetZoneinfo() string { - if x != nil { - return x.Zoneinfo +func (m *StandardClaims) GetZoneinfo() string { + if m != nil { + return m.Zoneinfo } return "" } -func (x *StandardClaims) GetLocale() string { - if x != nil { - return x.Locale +func (m *StandardClaims) GetLocale() string { + if m != nil { + return m.Locale } return "" } -func (x *StandardClaims) GetPhoneNumber() string { - if x != nil { - return x.PhoneNumber +func (m *StandardClaims) GetPhoneNumber() string { + if m != nil { + return m.PhoneNumber } return "" } -func (x *StandardClaims) GetPhoneNumberVerified() bool { - if x != nil { - return x.PhoneNumberVerified +func (m *StandardClaims) GetPhoneNumberVerified() bool { + if m != nil { + return m.PhoneNumberVerified } return false } -func (x *StandardClaims) GetUpdatedAt() int32 { - if x != nil { - return x.UpdatedAt +func (m *StandardClaims) GetUpdatedAt() int32 { + if m != nil { + return m.UpdatedAt } return 0 } -func (x *StandardClaims) GetAddress() *Address { - if x != nil { - return x.Address +func (m *StandardClaims) GetAddress() *Address { + if m != nil { + return m.Address } return nil } type Address struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Formatted string `protobuf:"bytes,1,opt,name=formatted,proto3" json:"formatted,omitempty"` - StreetAddress string `protobuf:"bytes,2,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` - Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` - Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` - PostalCode string `protobuf:"bytes,5,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` - Country string `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"` + Formatted string `protobuf:"bytes,1,opt,name=formatted,proto3" json:"formatted,omitempty"` + StreetAddress string `protobuf:"bytes,2,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` + Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + PostalCode string `protobuf:"bytes,5,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` + Country string `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Address) Reset() { - *x = Address{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Address) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Address) ProtoMessage() {} - -func (x *Address) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Address.ProtoReflect.Descriptor instead. +func (m *Address) Reset() { *m = Address{} } +func (m *Address) String() string { return proto.CompactTextString(m) } +func (*Address) ProtoMessage() {} func (*Address) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{4} + return fileDescriptor_e1e7723af4c007b7, []int{4} } -func (x *Address) GetFormatted() string { - if x != nil { - return x.Formatted +func (m *Address) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Address.Unmarshal(m, b) +} +func (m *Address) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Address.Marshal(b, m, deterministic) +} +func (m *Address) XXX_Merge(src proto.Message) { + xxx_messageInfo_Address.Merge(m, src) +} +func (m *Address) XXX_Size() int { + return xxx_messageInfo_Address.Size(m) +} +func (m *Address) XXX_DiscardUnknown() { + xxx_messageInfo_Address.DiscardUnknown(m) +} + +var xxx_messageInfo_Address proto.InternalMessageInfo + +func (m *Address) GetFormatted() string { + if m != nil { + return m.Formatted } return "" } -func (x *Address) GetStreetAddress() string { - if x != nil { - return x.StreetAddress +func (m *Address) GetStreetAddress() string { + if m != nil { + return m.StreetAddress } return "" } -func (x *Address) GetLocality() string { - if x != nil { - return x.Locality +func (m *Address) GetLocality() string { + if m != nil { + return m.Locality } return "" } -func (x *Address) GetRegion() string { - if x != nil { - return x.Region +func (m *Address) GetRegion() string { + if m != nil { + return m.Region } return "" } -func (x *Address) GetPostalCode() string { - if x != nil { - return x.PostalCode +func (m *Address) GetPostalCode() string { + if m != nil { + return m.PostalCode } return "" } -func (x *Address) GetCountry() string { - if x != nil { - return x.Country +func (m *Address) GetCountry() string { + if m != nil { + return m.Country } return "" } type IdHistory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` - Iss string `protobuf:"bytes,2,opt,name=iss,proto3" json:"iss,omitempty"` + Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` + Iss string `protobuf:"bytes,2,opt,name=iss,proto3" json:"iss,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *IdHistory) Reset() { - *x = IdHistory{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *IdHistory) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*IdHistory) ProtoMessage() {} - -func (x *IdHistory) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use IdHistory.ProtoReflect.Descriptor instead. +func (m *IdHistory) Reset() { *m = IdHistory{} } +func (m *IdHistory) String() string { return proto.CompactTextString(m) } +func (*IdHistory) ProtoMessage() {} func (*IdHistory) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{5} + return fileDescriptor_e1e7723af4c007b7, []int{5} } -func (x *IdHistory) GetSub() string { - if x != nil { - return x.Sub +func (m *IdHistory) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_IdHistory.Unmarshal(m, b) +} +func (m *IdHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_IdHistory.Marshal(b, m, deterministic) +} +func (m *IdHistory) XXX_Merge(src proto.Message) { + xxx_messageInfo_IdHistory.Merge(m, src) +} +func (m *IdHistory) XXX_Size() int { + return xxx_messageInfo_IdHistory.Size(m) +} +func (m *IdHistory) XXX_DiscardUnknown() { + xxx_messageInfo_IdHistory.DiscardUnknown(m) +} + +var xxx_messageInfo_IdHistory proto.InternalMessageInfo + +func (m *IdHistory) GetSub() string { + if m != nil { + return m.Sub } return "" } -func (x *IdHistory) GetIss() string { - if x != nil { - return x.Iss +func (m *IdHistory) GetIss() string { + if m != nil { + return m.Iss } return "" } type Phoenix struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` + Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Phoenix) Reset() { - *x = Phoenix{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Phoenix) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Phoenix) ProtoMessage() {} - -func (x *Phoenix) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Phoenix.ProtoReflect.Descriptor instead. +func (m *Phoenix) Reset() { *m = Phoenix{} } +func (m *Phoenix) String() string { return proto.CompactTextString(m) } +func (*Phoenix) ProtoMessage() {} func (*Phoenix) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{6} + return fileDescriptor_e1e7723af4c007b7, []int{6} } -func (x *Phoenix) GetTheme() string { - if x != nil { - return x.Theme +func (m *Phoenix) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Phoenix.Unmarshal(m, b) +} +func (m *Phoenix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Phoenix.Marshal(b, m, deterministic) +} +func (m *Phoenix) XXX_Merge(src proto.Message) { + xxx_messageInfo_Phoenix.Merge(m, src) +} +func (m *Phoenix) XXX_Size() int { + return xxx_messageInfo_Phoenix.Size(m) +} +func (m *Phoenix) XXX_DiscardUnknown() { + xxx_messageInfo_Phoenix.DiscardUnknown(m) +} + +var xxx_messageInfo_Phoenix proto.InternalMessageInfo + +func (m *Phoenix) GetTheme() string { + if m != nil { + return m.Theme } return "" } // Used to fetch exactly one user. The conditions are optional. If set, all have to be true. type GetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Used to look up user by the oidc sub and iss Identity *IdHistory `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // Used to look up the user by our internal uuid @@ -594,81 +537,73 @@ type GetRequest struct { Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` // Used as a fallback mechanism in case sub or iss changed for an existing user - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GetRequest) Reset() { - *x = GetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetRequest) ProtoMessage() {} - -func (x *GetRequest) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetRequest.ProtoReflect.Descriptor instead. +func (m *GetRequest) Reset() { *m = GetRequest{} } +func (m *GetRequest) String() string { return proto.CompactTextString(m) } +func (*GetRequest) ProtoMessage() {} func (*GetRequest) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{7} + return fileDescriptor_e1e7723af4c007b7, []int{7} } -func (x *GetRequest) GetIdentity() *IdHistory { - if x != nil { - return x.Identity +func (m *GetRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetRequest.Unmarshal(m, b) +} +func (m *GetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetRequest.Marshal(b, m, deterministic) +} +func (m *GetRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetRequest.Merge(m, src) +} +func (m *GetRequest) XXX_Size() int { + return xxx_messageInfo_GetRequest.Size(m) +} +func (m *GetRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetRequest proto.InternalMessageInfo + +func (m *GetRequest) GetIdentity() *IdHistory { + if m != nil { + return m.Identity } return nil } -func (x *GetRequest) GetUuid() string { - if x != nil { - return x.Uuid +func (m *GetRequest) GetUuid() string { + if m != nil { + return m.Uuid } return "" } -func (x *GetRequest) GetUsername() string { - if x != nil { - return x.Username +func (m *GetRequest) GetUsername() string { + if m != nil { + return m.Username } return "" } -func (x *GetRequest) GetPassword() string { - if x != nil { - return x.Password +func (m *GetRequest) GetPassword() string { + if m != nil { + return m.Password } return "" } -func (x *GetRequest) GetEmail() string { - if x != nil { - return x.Email +func (m *GetRequest) GetEmail() string { + if m != nil { + return m.Email } return "" } type Query struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Optional. The maximum number of accounts to return in the response. PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. A pagination token returned from a previous call to `Get` @@ -695,428 +630,180 @@ type Query struct { // an address in Germany // * Query `name=\\"Test String\\"` returns accounts with // display names that include both "Test" and "String". - Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Query) Reset() { - *x = Query{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Query) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Query) ProtoMessage() {} - -func (x *Query) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Query.ProtoReflect.Descriptor instead. +func (m *Query) Reset() { *m = Query{} } +func (m *Query) String() string { return proto.CompactTextString(m) } +func (*Query) ProtoMessage() {} func (*Query) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{8} + return fileDescriptor_e1e7723af4c007b7, []int{8} } -func (x *Query) GetPageSize() int32 { - if x != nil { - return x.PageSize +func (m *Query) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Query.Unmarshal(m, b) +} +func (m *Query) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Query.Marshal(b, m, deterministic) +} +func (m *Query) XXX_Merge(src proto.Message) { + xxx_messageInfo_Query.Merge(m, src) +} +func (m *Query) XXX_Size() int { + return xxx_messageInfo_Query.Size(m) +} +func (m *Query) XXX_DiscardUnknown() { + xxx_messageInfo_Query.DiscardUnknown(m) +} + +var xxx_messageInfo_Query proto.InternalMessageInfo + +func (m *Query) GetPageSize() int32 { + if m != nil { + return m.PageSize } return 0 } -func (x *Query) GetPageToken() string { - if x != nil { - return x.PageToken +func (m *Query) GetPageToken() string { + if m != nil { + return m.PageToken } return "" } -func (x *Query) GetQuery() string { - if x != nil { - return x.Query +func (m *Query) GetQuery() string { + if m != nil { + return m.Query } return "" } type Records struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // A possibly paginated accounts search result for // the specified query. Records []*Record `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` // A pagination token returned from a previous call to `Search` // that indicates from where searching should continue. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Records) Reset() { - *x = Records{} - if protoimpl.UnsafeEnabled { - mi := &file_accounts_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Records) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Records) ProtoMessage() {} - -func (x *Records) ProtoReflect() protoreflect.Message { - mi := &file_accounts_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Records.ProtoReflect.Descriptor instead. +func (m *Records) Reset() { *m = Records{} } +func (m *Records) String() string { return proto.CompactTextString(m) } +func (*Records) ProtoMessage() {} func (*Records) Descriptor() ([]byte, []int) { - return file_accounts_proto_rawDescGZIP(), []int{9} + return fileDescriptor_e1e7723af4c007b7, []int{9} } -func (x *Records) GetRecords() []*Record { - if x != nil { - return x.Records +func (m *Records) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Records.Unmarshal(m, b) +} +func (m *Records) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Records.Marshal(b, m, deterministic) +} +func (m *Records) XXX_Merge(src proto.Message) { + xxx_messageInfo_Records.Merge(m, src) +} +func (m *Records) XXX_Size() int { + return xxx_messageInfo_Records.Size(m) +} +func (m *Records) XXX_DiscardUnknown() { + xxx_messageInfo_Records.DiscardUnknown(m) +} + +var xxx_messageInfo_Records proto.InternalMessageInfo + +func (m *Records) GetRecords() []*Record { + if m != nil { + return m.Records } return nil } -func (x *Records) GetNextPageToken() string { - if x != nil { - return x.NextPageToken +func (m *Records) GetNextPageToken() string { + if m != nil { + return m.NextPageToken } return "" } -var File_accounts_proto protoreflect.FileDescriptor - -var file_accounts_proto_rawDesc = []byte{ - 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, - 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x47, 0x0a, 0x06, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x36, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x2b, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, - 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x0f, - 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x52, - 0x0e, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, - 0x33, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, - 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x22, 0xfa, 0x04, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, - 0x64, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, - 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, - 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x7a, 0x6f, - 0x6e, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x7a, 0x6f, - 0x6e, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x13, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, - 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, - 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, - 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, - 0x79, 0x22, 0x2f, 0x0a, 0x09, 0x49, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x75, 0x62, - 0x12, 0x10, 0x0a, 0x03, 0x69, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, - 0x73, 0x73, 0x22, 0x1f, 0x0a, 0x07, 0x50, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x68, - 0x65, 0x6d, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x49, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x63, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x5d, 0x0a, 0x07, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, - 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0x99, 0x01, 0x0a, 0x0f, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x29, 0x0a, - 0x03, 0x53, 0x65, 0x74, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2d, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, - 0x14, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x12, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, +func init() { + proto.RegisterType((*Record)(nil), "settings.Record") + proto.RegisterType((*Payload)(nil), "settings.Payload") + proto.RegisterType((*Account)(nil), "settings.Account") + proto.RegisterType((*StandardClaims)(nil), "settings.StandardClaims") + proto.RegisterType((*Address)(nil), "settings.Address") + proto.RegisterType((*IdHistory)(nil), "settings.IdHistory") + proto.RegisterType((*Phoenix)(nil), "settings.Phoenix") + proto.RegisterType((*GetRequest)(nil), "settings.GetRequest") + proto.RegisterType((*Query)(nil), "settings.Query") + proto.RegisterType((*Records)(nil), "settings.Records") } -var ( - file_accounts_proto_rawDescOnce sync.Once - file_accounts_proto_rawDescData = file_accounts_proto_rawDesc -) +func init() { proto.RegisterFile("accounts.proto", fileDescriptor_e1e7723af4c007b7) } -func file_accounts_proto_rawDescGZIP() []byte { - file_accounts_proto_rawDescOnce.Do(func() { - file_accounts_proto_rawDescData = protoimpl.X.CompressGZIP(file_accounts_proto_rawDescData) - }) - return file_accounts_proto_rawDescData -} - -var file_accounts_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_accounts_proto_goTypes = []interface{}{ - (*Record)(nil), // 0: settings.Record - (*Payload)(nil), // 1: settings.Payload - (*Account)(nil), // 2: settings.Account - (*StandardClaims)(nil), // 3: settings.StandardClaims - (*Address)(nil), // 4: settings.Address - (*IdHistory)(nil), // 5: settings.IdHistory - (*Phoenix)(nil), // 6: settings.Phoenix - (*GetRequest)(nil), // 7: settings.GetRequest - (*Query)(nil), // 8: settings.Query - (*Records)(nil), // 9: settings.Records -} -var file_accounts_proto_depIdxs = []int32{ - 1, // 0: settings.Record.payload:type_name -> settings.Payload - 2, // 1: settings.Payload.account:type_name -> settings.Account - 3, // 2: settings.Account.standard_claims:type_name -> settings.StandardClaims - 5, // 3: settings.Account.identities:type_name -> settings.IdHistory - 4, // 4: settings.StandardClaims.address:type_name -> settings.Address - 5, // 5: settings.GetRequest.identity:type_name -> settings.IdHistory - 0, // 6: settings.Records.records:type_name -> settings.Record - 0, // 7: settings.AccountsService.Set:input_type -> settings.Record - 7, // 8: settings.AccountsService.Get:input_type -> settings.GetRequest - 8, // 9: settings.AccountsService.Search:input_type -> settings.Query - 0, // 10: settings.AccountsService.Set:output_type -> settings.Record - 0, // 11: settings.AccountsService.Get:output_type -> settings.Record - 9, // 12: settings.AccountsService.Search:output_type -> settings.Records - 10, // [10:13] is the sub-list for method output_type - 7, // [7:10] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name -} - -func init() { file_accounts_proto_init() } -func file_accounts_proto_init() { - if File_accounts_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_accounts_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Record); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_accounts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Payload); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_accounts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_accounts_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StandardClaims); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_accounts_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Address); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_accounts_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IdHistory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_accounts_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Phoenix); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_accounts_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_accounts_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Query); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_accounts_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Records); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_accounts_proto_rawDesc, - NumEnums: 0, - NumMessages: 10, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_accounts_proto_goTypes, - DependencyIndexes: file_accounts_proto_depIdxs, - MessageInfos: file_accounts_proto_msgTypes, - }.Build() - File_accounts_proto = out.File - file_accounts_proto_rawDesc = nil - file_accounts_proto_goTypes = nil - file_accounts_proto_depIdxs = nil +var fileDescriptor_e1e7723af4c007b7 = []byte{ + // 882 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x55, 0x4b, 0x6f, 0x1b, 0x37, + 0x10, 0xc6, 0x46, 0xd6, 0x6b, 0x14, 0x4b, 0x36, 0xed, 0x16, 0x84, 0xd0, 0xc0, 0xea, 0x02, 0x2d, + 0xd4, 0x47, 0xac, 0xc2, 0x01, 0x7a, 0xe9, 0xc9, 0xc9, 0xc1, 0xcd, 0x25, 0x70, 0x57, 0x6d, 0x0f, + 0x05, 0x8a, 0x05, 0xb5, 0x1c, 0x49, 0x84, 0x57, 0xcb, 0x0d, 0xc9, 0x55, 0x22, 0xff, 0x93, 0x9e, + 0xfa, 0x2b, 0x7a, 0xec, 0x7f, 0xe9, 0xef, 0xe8, 0x29, 0xe0, 0x63, 0x57, 0x7e, 0x9d, 0xc4, 0xef, + 0xc1, 0xe1, 0x70, 0x76, 0x86, 0x82, 0x21, 0xcb, 0x32, 0x59, 0x15, 0x46, 0x9f, 0x97, 0x4a, 0x1a, + 0x49, 0x7a, 0x1a, 0x8d, 0x11, 0xc5, 0x4a, 0x8f, 0xcf, 0x56, 0x52, 0xae, 0x72, 0x9c, 0xb1, 0x52, + 0xcc, 0x96, 0x02, 0x73, 0x9e, 0x2e, 0x70, 0xcd, 0xb6, 0x42, 0x2a, 0x6f, 0x8d, 0xaf, 0xa0, 0x93, + 0x60, 0x26, 0x15, 0x27, 0x47, 0xd0, 0xba, 0xc1, 0x1d, 0x8d, 0x26, 0xd1, 0xb4, 0x9f, 0xd8, 0x25, + 0xf9, 0x0e, 0xba, 0x25, 0xdb, 0xe5, 0x92, 0x71, 0xfa, 0x6c, 0x12, 0x4d, 0x07, 0x17, 0xc7, 0xe7, + 0x75, 0xe0, 0xf3, 0x6b, 0x2f, 0x24, 0xb5, 0x23, 0xfe, 0x11, 0xba, 0x81, 0xb3, 0xfb, 0x42, 0x42, + 0x2e, 0xda, 0xbd, 0x7d, 0x97, 0x5e, 0x48, 0x6a, 0x47, 0xfc, 0x4f, 0x04, 0xdd, 0x40, 0x92, 0x4b, + 0x18, 0x69, 0xc3, 0x0a, 0xce, 0x14, 0x4f, 0xb3, 0x9c, 0x89, 0x8d, 0x0e, 0x01, 0xe8, 0x3e, 0xc0, + 0x3c, 0x18, 0xde, 0x38, 0x3d, 0x19, 0xea, 0x7b, 0x98, 0xbc, 0x02, 0x10, 0x1c, 0x0b, 0x23, 0x8c, + 0x40, 0x4d, 0x9f, 0x4d, 0x5a, 0xd3, 0xc1, 0xc5, 0xc9, 0x7e, 0xf7, 0x5b, 0xfe, 0xb3, 0xd0, 0x46, + 0xaa, 0x5d, 0x72, 0xc7, 0x46, 0x3e, 0x87, 0xce, 0x5b, 0xad, 0x2b, 0x54, 0xb4, 0xe5, 0x6e, 0x1f, + 0x10, 0x19, 0x43, 0xef, 0x9a, 0x69, 0xfd, 0x41, 0x2a, 0x4e, 0x0f, 0x9c, 0xd2, 0xe0, 0xf8, 0xff, + 0x03, 0x18, 0xde, 0xcf, 0xc5, 0x56, 0x50, 0x57, 0x8b, 0xba, 0x82, 0xba, 0x5a, 0x10, 0x02, 0x07, + 0x05, 0xdb, 0xa0, 0x2b, 0x5f, 0x3f, 0x71, 0x6b, 0xf2, 0x02, 0x60, 0x25, 0xb6, 0x58, 0xa4, 0x4e, + 0xf1, 0x07, 0xf6, 0x1d, 0xf3, 0xce, 0xca, 0x67, 0x30, 0x58, 0xb2, 0x8d, 0xc8, 0x77, 0x5e, 0xf7, + 0xc7, 0x82, 0xa7, 0x6a, 0xc3, 0x46, 0x70, 0x9e, 0xa3, 0x37, 0xb4, 0xbd, 0xc1, 0x53, 0xce, 0x30, + 0x86, 0x5e, 0x21, 0xb2, 0x1b, 0xa7, 0x76, 0x7c, 0xd6, 0x35, 0x26, 0x2f, 0x81, 0x94, 0x0a, 0x97, + 0xa8, 0x14, 0xf2, 0xb4, 0xd2, 0xa8, 0x9c, 0xab, 0xeb, 0x5c, 0xc7, 0x8d, 0xf2, 0x5b, 0x10, 0x08, + 0x85, 0x6e, 0xa9, 0xe4, 0x52, 0xe4, 0x48, 0x7b, 0xce, 0x53, 0x43, 0xa7, 0x88, 0xcc, 0x54, 0x0a, + 0x69, 0x3f, 0x28, 0x1e, 0x5a, 0xe5, 0x03, 0x2e, 0xb4, 0x30, 0x48, 0xc1, 0x2b, 0x01, 0x92, 0x53, + 0x68, 0xe3, 0x86, 0x89, 0x9c, 0x0e, 0x1c, 0xef, 0x01, 0xf9, 0x0a, 0x86, 0x6e, 0x91, 0x6e, 0x51, + 0x89, 0xa5, 0x40, 0x4e, 0x9f, 0x4f, 0xa2, 0x69, 0x2f, 0x39, 0x74, 0xec, 0xef, 0x81, 0xb4, 0xdf, + 0x68, 0x85, 0x05, 0x47, 0x45, 0x0f, 0xfd, 0x37, 0xf2, 0x88, 0x7c, 0x01, 0xfd, 0x85, 0x50, 0x66, + 0xcd, 0x99, 0x41, 0x3a, 0xf4, 0xd5, 0x6c, 0x08, 0x5b, 0x8b, 0x5b, 0x59, 0xa0, 0x28, 0x96, 0x92, + 0x8e, 0x7c, 0x2d, 0x6a, 0x6c, 0x23, 0xe6, 0x32, 0x63, 0x39, 0xd2, 0x23, 0x1f, 0xd1, 0x23, 0xf2, + 0x25, 0x3c, 0x2f, 0xd7, 0xb2, 0xc0, 0xb4, 0xa8, 0x36, 0x0b, 0x54, 0xf4, 0xd8, 0xa9, 0x03, 0xc7, + 0xbd, 0x73, 0x14, 0xb9, 0x80, 0xcf, 0xee, 0x5a, 0xf6, 0xa9, 0x13, 0x97, 0xfa, 0xc9, 0x1d, 0x6f, + 0x73, 0x81, 0x17, 0x00, 0x55, 0x69, 0x93, 0xe2, 0x29, 0x33, 0xf4, 0x64, 0x12, 0x4d, 0xdb, 0x49, + 0x3f, 0x30, 0x97, 0xc6, 0x0d, 0x0d, 0xe7, 0x0a, 0xb5, 0xa6, 0xa7, 0x8f, 0x86, 0xc6, 0x0b, 0x49, + 0xed, 0x88, 0xff, 0xb5, 0x43, 0xe3, 0xd7, 0xb6, 0x00, 0x4b, 0xa9, 0x36, 0xcc, 0x18, 0xe4, 0xa1, + 0xf7, 0xf6, 0x84, 0xad, 0xae, 0x36, 0x0a, 0xd1, 0xa4, 0x75, 0x74, 0xdf, 0x8b, 0x87, 0x9e, 0xad, + 0x83, 0x8c, 0xa1, 0xe7, 0x6e, 0x2f, 0xcc, 0x2e, 0xb4, 0x64, 0x83, 0x6d, 0x9d, 0x14, 0xae, 0x84, + 0x2c, 0x42, 0x33, 0x06, 0x64, 0x1b, 0xb1, 0x94, 0xda, 0xb0, 0x3c, 0xcd, 0x24, 0x6f, 0x1a, 0xd1, + 0x53, 0x6f, 0x24, 0x77, 0x9d, 0xe0, 0xe6, 0x5a, 0xed, 0x42, 0x1f, 0xd6, 0x30, 0x9e, 0x41, 0xbf, + 0x99, 0xc4, 0x27, 0xc6, 0xe6, 0x08, 0x5a, 0xa2, 0xc9, 0xd4, 0x2e, 0xe3, 0x33, 0xe8, 0x5e, 0xaf, + 0x25, 0x16, 0xe2, 0xa3, 0xed, 0x22, 0xb3, 0xc6, 0x0d, 0x86, 0x0d, 0x1e, 0xc4, 0x7f, 0x47, 0x00, + 0x57, 0x68, 0x12, 0x7c, 0x5f, 0xa1, 0x36, 0x64, 0x06, 0xbd, 0x30, 0xdf, 0xbb, 0xf0, 0x84, 0x3c, + 0xf9, 0x08, 0x34, 0x26, 0x3b, 0xa9, 0x55, 0x25, 0x78, 0x3d, 0xa9, 0x76, 0x6d, 0x8b, 0xd2, 0x8c, + 0x48, 0x28, 0x4a, 0x8d, 0xad, 0x56, 0x3e, 0x78, 0x1a, 0x6a, 0xbc, 0xef, 0xf3, 0xf6, 0x9d, 0x3e, + 0x8f, 0x33, 0x68, 0xff, 0x52, 0xa1, 0xda, 0x91, 0x09, 0xf4, 0x4b, 0xb6, 0xc2, 0x54, 0x8b, 0x5b, + 0x7f, 0x89, 0xf6, 0xeb, 0xd6, 0x7f, 0x97, 0x91, 0x0d, 0xb0, 0xc2, 0xb9, 0xb8, 0x45, 0x12, 0x03, + 0x38, 0x87, 0x91, 0x37, 0x58, 0xf8, 0x94, 0xbc, 0xc5, 0x6d, 0xfc, 0xd5, 0xb2, 0xf6, 0x90, 0xf7, + 0x36, 0x5c, 0xc8, 0xcc, 0x83, 0xf8, 0x4f, 0xe8, 0xfa, 0xe7, 0x5c, 0x93, 0x6f, 0xa1, 0xab, 0xfc, + 0x92, 0x46, 0xee, 0x19, 0x3c, 0xda, 0x57, 0xc0, 0x7b, 0x92, 0xda, 0x40, 0xbe, 0x86, 0x51, 0x81, + 0x1f, 0x4d, 0xfa, 0xf0, 0xd4, 0xe4, 0xd0, 0xd2, 0xd7, 0xf5, 0xa1, 0x17, 0x7f, 0x45, 0x30, 0x0a, + 0x8f, 0xb5, 0x9e, 0xa3, 0xda, 0x8a, 0x0c, 0xc9, 0x37, 0xd0, 0x9a, 0xa3, 0x21, 0x8f, 0xa2, 0x8f, + 0x1f, 0x31, 0xe4, 0x25, 0xb4, 0xae, 0xd0, 0x90, 0xd3, 0xbd, 0xb0, 0xff, 0x64, 0x4f, 0xd8, 0xbf, + 0x87, 0xce, 0x1c, 0x99, 0xca, 0xd6, 0x64, 0xb4, 0xd7, 0x5c, 0x0d, 0xc7, 0xc7, 0x0f, 0xcd, 0xfa, + 0xf5, 0xe9, 0x1f, 0xa4, 0xbc, 0x59, 0xcd, 0xdc, 0xdf, 0xda, 0x6c, 0xfb, 0xc3, 0x4f, 0x6e, 0xb1, + 0xe8, 0xb8, 0x9f, 0x57, 0x9f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x02, 0xb9, 0x9c, 0x08, 0x23, 0x07, + 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 9b559cc002..1bc78f5274 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -22,9 +22,10 @@ message Payload { } message Account { - string uuid = 1; - StandardClaims standard_claims = 2; - repeated IdHistory identities = 3; // keep track of every identity of a given user + StandardClaims standard_claims = 1; + repeated IdHistory identities = 2; // keep track of every identity of a given user + string Issuer = 3; + string Password = 4; } // OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 7508c8a92f..946c5827cc 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -2,6 +2,7 @@ package service import ( "context" + "errors" "github.com/owncloud/ocis-accounts/pkg/account" "github.com/owncloud/ocis-accounts/pkg/config" @@ -46,15 +47,68 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er } // Get implements the AccountsServiceHandler interface -func (s Service) Get(c context.Context, req *proto.GetRequest, res *proto.Record) error { +func (s Service) Get(c context.Context, req *proto.GetRequest, res *proto.Record) (err error) { // TODO implement other GetRequest properties: Identity, username&password, email - r, err := s.Manager.Read(req.GetUuid()) - if err != nil { - return err + var r, ruuid, rname, rmail *proto.Record + if req.GetIdentity() != nil { + r, err = s.Manager.ReadByIdentity(req.GetIdentity()) + if err != nil { + return err + } + } + if req.GetUuid() != "" { + ruuid, err = s.Manager.Read(req.GetUuid()) + if err != nil { + return err + } + + if r == nil { + r = ruuid + } else if r.Key != ruuid.Key { + r = nil + return errors.New("uuid mismatch") + } + } + if req.GetUsername() != "" { + rname, err = s.Manager.ReadByUsername(req.GetUsername()) + if err != nil { + return err + } + if r == nil { + r = rname + } else if r.Key != rname.Key { + r = nil + return errors.New("username mismatch") + } + } + if req.GetEmail() != "" { + rmail, err = s.Manager.ReadByEmail(req.GetEmail()) + if err != nil { + return err + } + if r == nil { + r = rmail + } else if r.Key != rmail.Key { + r = nil + return errors.New("email mismatch") + } } - res.Payload = r.GetPayload() - return nil + if r != nil { + // TODO store only salted hash + if req.GetPassword() != "" { + if r.Payload.Account.Password != req.GetPassword() { + return errors.New("wrong password") + } + } + res.Key = r.Key + res.Payload = r.GetPayload() + // password never leaves + res.Payload.Account.Password = "" + return nil + } + + return errors.New("at least one request param must be set") } // Search implements the AccountsServiceHandler interface diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go index e7d8adbaa6..6677638f16 100644 --- a/pkg/store/filesystem/store.go +++ b/pkg/store/filesystem/store.go @@ -8,6 +8,7 @@ import ( "os" "path" "path/filepath" + "strings" // gproto "github.com/golang/protobuf/proto" "github.com/owncloud/ocis-accounts/pkg/account" @@ -20,6 +21,10 @@ var ( // StoreName is the default name for the accounts store StoreName = "ocis-store" managerName = "filesystem" + uuidSpace = "uuid" + usernameSpace = "username" + emailSpace = "email" + identitySpace = "identity" emptyKeyError = "key cannot be empty" ) @@ -53,7 +58,7 @@ func New(cfg *config.Config) account.Manager { // List returns all the identities in the mountPath folder func (s Store) List() ([]*proto.Record, error) { records := []*proto.Record{} - identities, err := ioutil.ReadDir(s.mountPath) + identities, err := ioutil.ReadDir(path.Join(s.mountPath, uuidSpace)) if err != nil { s.Logger.Err(err).Msgf("error reading %v", s.mountPath) return nil, err @@ -69,24 +74,10 @@ func (s Store) List() ([]*proto.Record, error) { return records, nil } -// NewRecord initializes a new record with the given options -func NewRecord(options ...Option) *proto.Record { - opts := NewOptions(options...) - - return &proto.Record{ - Payload: &proto.Payload{ - Account: &proto.Account{ - Uuid: opts.UUID, - }, - }, - } -} - -// Read implements the store interface. This implementation only reads by id. -func (s Store) Read(key string) (*proto.Record, error) { - contents, err := ioutil.ReadFile(path.Join(s.mountPath, key)) +func (s Store) readSpace(space string, subspace string, key string) (*proto.Record, error) { + contents, err := ioutil.ReadFile(path.Join(s.mountPath, space, subspace, key)) if err != nil { - s.Logger.Err(err).Msgf("error reading contents of key %v: file not found", key) + s.Logger.Err(err).Str("space", space).Str("subspace", subspace).Str("key", key).Msg("error reading record") return nil, err } @@ -102,15 +93,45 @@ func (s Store) Read(key string) (*proto.Record, error) { return rec, nil } +// Read implements the store interface. This implementation only reads by id. +func (s Store) Read(uuid string) (*proto.Record, error) { + return s.readSpace(uuidSpace, "", uuid) +} + +// ReadByUsername implements the store interface. This implementation only reads by username. +func (s Store) ReadByUsername(username string) (*proto.Record, error) { + return s.readSpace(usernameSpace, "", username) +} + +// ReadByEmail implements the store interface. This implementation only reads by email. +func (s Store) ReadByEmail(email string) (*proto.Record, error) { + i := strings.LastIndex(email, "@") + if i < 0 { + // no domain part + return s.readSpace(emailSpace, "local", email) + } + + return s.readSpace(emailSpace, email[:i], email[i:]) +} + +// ReadByIdentity implements the store interface. This implementation only reads by iss & sub. +func (s Store) ReadByIdentity(identity *proto.IdHistory) (*proto.Record, error) { + if identity.Iss == "" { + s.Logger.Error().Msg("iss cannot be empty") + return nil, fmt.Errorf(emptyKeyError) + } + return s.readSpace(identitySpace, identity.Iss, identity.Sub) +} + // Write implements the store interface func (s Store) Write(rec *proto.Record) (*proto.Record, error) { - path := filepath.Join(s.mountPath, rec.Key) - if len(rec.Key) < 1 { s.Logger.Error().Msg("key cannot be empty") return nil, fmt.Errorf(emptyKeyError) } + path := filepath.Join(s.mountPath, uuidSpace, rec.Key) + contents, err := json.Marshal(rec) if err != nil { s.Logger.Err(err).Msg("record could not be marshaled") @@ -120,8 +141,50 @@ func (s Store) Write(rec *proto.Record) (*proto.Record, error) { if err := ioutil.WriteFile(path, contents, 0644); err != nil { return nil, err } + s.Logger.Info().Int("bytes", len(contents)).Str("path", path).Msg("wrote account") + + // write symlinks for other lookups + // use hardlinks? + // TODO what if target already exists? use dirs with multiple symlinks to uuid? + // TODO what if username or email changes? use uuid folder with a file per property? srsly ... we should use a proper storage for this + if rec.Payload != nil { + if rec.Payload.Account != nil { + if rec.Payload.Account.StandardClaims != nil { + if rec.Payload.Account.StandardClaims.PreferredUsername != "" { + p := filepath.Join(s.mountPath, usernameSpace, rec.Payload.Account.StandardClaims.PreferredUsername) + os.MkdirAll(filepath.Dir(p), 0700) + os.Symlink(path, p) + } else { + s.Logger.Warn().Str("uuid", rec.Key).Msg("has no preferred username in standard claims") + } + if rec.Payload.Account.StandardClaims.Email != "" { + p := filepath.Join(s.mountPath, emailSpace, rec.Payload.Account.StandardClaims.Email) + os.MkdirAll(filepath.Dir(p), 0700) + os.Symlink(path, p) + } else { + s.Logger.Warn().Str("uuid", rec.Key).Msg("has no email in standard claims") + } + if rec.Payload.Account.Issuer != "" { + if rec.Payload.Account.StandardClaims.Sub != "" { + p := filepath.Join(s.mountPath, identitySpace, rec.Payload.Account.Issuer, rec.Payload.Account.StandardClaims.Sub) + os.MkdirAll(filepath.Dir(p), 0700) + os.Symlink(path, p) + } else { + s.Logger.Warn().Str("uuid", rec.Key).Msg("has no sub in standard claims") + } + } else { + s.Logger.Warn().Str("uuid", rec.Key).Msg("has no issuer in account") + } + } else { + s.Logger.Warn().Str("uuid", rec.Key).Msg("has no standard claims in account") + } + } else { + s.Logger.Warn().Str("uuid", rec.Key).Msg("has no account in payload") + } + } else { + s.Logger.Warn().Str("uuid", rec.Key).Msg("has no payload") + } - s.Logger.Info().Msgf("%v bytes written to %v", len(contents), path) return rec, nil } From 2fd05e2b6fe2a47c687bd0c0bc5e1b5c48a585b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 8 May 2020 19:08:39 +0200 Subject: [PATCH 149/407] rewrite API, talk to ldap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- docs/getting-started.md | 6 - go.mod | 6 +- go.sum | 192 +-- pkg/account/accounts.go | 34 - pkg/command/root.go | 6 +- pkg/command/server.go | 5 +- pkg/config/config.go | 30 +- pkg/flagset/flagset.go | 118 +- pkg/proto/v0/accounts.pb.go | 1319 ++++++++++-------- pkg/proto/v0/accounts.pb.micro.go | 189 ++- pkg/proto/v0/accounts.proto | 328 +++-- pkg/service/v0/service.go | 176 +-- pkg/store/filesystem/option.go | 27 - pkg/store/filesystem/store.go | 193 --- pkg/store/registry.go | 6 - third_party/google/api/annotations.proto | 31 + third_party/google/api/http.proto | 376 +++++ third_party/google/protobuf/empty.proto | 52 + third_party/google/protobuf/field_mask.proto | 245 ++++ 19 files changed, 2043 insertions(+), 1296 deletions(-) delete mode 100644 pkg/account/accounts.go delete mode 100644 pkg/store/filesystem/option.go delete mode 100644 pkg/store/filesystem/store.go delete mode 100644 pkg/store/registry.go create mode 100644 third_party/google/api/annotations.proto create mode 100644 third_party/google/api/http.proto create mode 100644 third_party/google/protobuf/empty.proto create mode 100644 third_party/google/protobuf/field_mask.proto diff --git a/docs/getting-started.md b/docs/getting-started.md index 5ca2d957df..2bae880f1a 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -31,12 +31,6 @@ If you prefer to configure the service with environment variables you can see th #### Server -OCIS_ACCOUNTS_MANAGER -: Enable sending traces, defaults to `filesystem` - -OCIS_ACCOUNTS_MOUNT_PATH -: Mounting point for the accounts service when running on the filesystem as manager. - OCIS_ACCOUNTS_NAME : Name of the accounts service. It will be part of the namespace. diff --git a/go.mod b/go.mod index adb9029912..59b87b5a2e 100644 --- a/go.mod +++ b/go.mod @@ -10,14 +10,14 @@ require ( github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.6.0 - github.com/micro/micro/v2 v2.0.1-0.20200210100719-f38a1d8d5348 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-pkg/v2 v2.2.1 github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 github.com/restic/calens v0.2.0 + github.com/rs/zerolog v1.17.2 github.com/spf13/viper v1.6.3 - google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84 - google.golang.org/protobuf v1.22.0 + google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb + gopkg.in/ldap.v2 v2.5.1 honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab // indirect ) diff --git a/go.sum b/go.sum index 109e067dcd..fcf757dcb3 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,3 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= @@ -43,12 +42,10 @@ github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocm github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvdeRAgDr0izn4z5Ij88= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= -github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= @@ -67,12 +64,12 @@ github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJ github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/UnnoTed/fileb0x v1.1.4 h1:IUgFzgBipF/ujNx9wZgkrKOF3oltUuXMSoaejrBws+A= github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ9cgOiZs= github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -88,6 +85,7 @@ github.com/anacrolix/missinggo/perf v1.0.0/go.mod h1:ljAFWkBuzkO12MQclXzZrosP5ur github.com/anacrolix/sync v0.2.0/go.mod h1:BbecHL6jDSExojhNtgTFSBcdGerzNc64tz3DCOj/I0g= github.com/anacrolix/tagflag v0.0.0-20180109131632-2146c8d41bf0/go.mod h1:1m2U/K6ZT+JZG0+bdMK6qauP49QT4wE5pmhJXOKKCHw= github.com/anacrolix/utp v0.0.0-20180219060659-9e0e1d1d0572/go.mod h1:MDwc+vsGEq7RMw6lr2GKOEqjWny5hO5OZXRVNaBJ2Dk= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= @@ -95,6 +93,7 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee/go.mod h1:u7Wtt4WATGGgae9mURNGQQqxAudPKrxfsbSDSGOso+g= github.com/asim/go-awsxray v0.0.0-20161209120537-0d8a60b6e205/go.mod h1:frVmN4PtXUuL1EbZn0uL4PHSTKNKFnbMpBIhngqMuNQ= @@ -108,14 +107,13 @@ github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmatcuk/doublestar v1.1.1 h1:YroD6BJCZBYx06yYFEWvUuKVWQn3vLLQAVmDmvTSaiQ= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= @@ -130,19 +128,13 @@ github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4r github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= github.com/cloudflare/cloudflare-go v0.10.6/go.mod h1:dcRl7AXBH5Bf7QFTBVc3TRzwvotSeO4AlnMhuxORAX8= -github.com/cloudflare/cloudflare-go v0.10.9/go.mod h1:5TrsWH+3f4NV6WjtS5QFp+DifH81rph40gU374Sh0dQ= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -154,25 +146,18 @@ github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.17+incompatible h1:f/Z3EoDSx1yjaIjLQGo1diYUlQYSBrrAQ5vP8NjwXwo= github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.18+incompatible h1:Zz1aXgDrFFi1nadh58tA9ktt06cmPTwNNP3dXwIq1lE= github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMElOWxok= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -180,11 +165,9 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= @@ -198,7 +181,6 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= @@ -209,8 +191,6 @@ github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkg github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -224,15 +204,13 @@ github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHqu github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsouza/go-dockerclient v1.4.4/go.mod h1:PrwszSL5fbmsESocROrOGq/NULMXRw+bajY0ltzD6MA= github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+4np9qfPbb+znGc= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= +github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= @@ -241,7 +219,6 @@ github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPw github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/chi v4.1.0+incompatible h1:ETj3cggsVIY2Xao5ExCu6YhEh5MD6JTfcBzS37R260w= github.com/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -249,6 +226,7 @@ github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/go-billy/v5 v5.0.0 h1:7NQHvd9FVid8VL4qVUMm8XifBK+2xCoZ2lSk0agRrHM= github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.0.1 h1:q+IFMfLx200Q3scvt2hN79JsEzy4AmBTp/pqnefH+Bc= github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= github.com/go-git/go-git/v5 v5.0.0 h1:k5RWPm4iJwYtfWoxIJy4wJX9ON7ihPeZZYC1fLYDnpg= github.com/go-git/go-git/v5 v5.0.0/go.mod h1:oYD8y9kWsGINPFJoLdaScGCN6dlKg23blmClfZwtUVA= @@ -258,7 +236,6 @@ github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3I github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= -github.com/go-log/log v0.1.0 h1:wudGTNsiGzrD5ZjgIkVZ517ugi2XRe9Q/xRCzwEO4/U= github.com/go-log/log v0.1.0/go.mod h1:4mBwpdRMFLiuXZDCwU2lKQFsoSCo72j3HqBK9d81N2M= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= @@ -285,15 +262,12 @@ github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm github.com/gobwas/ws v1.0.3/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -314,9 +288,7 @@ github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgj github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0 h1:aRz0NBceriICVtjhCgKkDvl+RudKu1CT6h0ZvUTrNfE= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0 h1:oOuy+ugB+P/kBdUnG5QaMXSIyJ1q38wWSojYCb3z5VQ= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= @@ -325,7 +297,6 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -345,7 +316,6 @@ github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OI github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= @@ -364,12 +334,9 @@ github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -406,7 +373,6 @@ github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= @@ -418,16 +384,13 @@ github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvh github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= -github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= @@ -437,7 +400,6 @@ github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joncalhoun/qson v0.0.0-20170526102502-8a9cab3a62b1/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -449,39 +411,32 @@ github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGn github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= -github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= -github.com/labstack/echo v3.2.1+incompatible h1:J2M7YArHx4gi8p/3fDw8tX19SXhBCoRpviyAZSN3I88= github.com/labstack/echo v3.2.1+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= -github.com/labstack/gommon v0.2.7 h1:2qOPq/twXDrQ6ooBGrn3mrmVOC+biLlatwgIu8lbzRM= github.com/labstack/gommon v0.2.7/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= @@ -493,74 +448,43 @@ github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVL github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gNfqwTxjbE7s3Vb8s= github.com/lucas-clemente/quic-go v0.13.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= github.com/lucas-clemente/quic-go v0.14.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/marten-seemann/chacha20 v0.2.0 h1:f40vqzzx+3GdOmzQoItkLX5WLvHgPgyYqFFIO5Gh4hQ= github.com/marten-seemann/chacha20 v0.2.0/go.mod h1:HSdjFau7GzYRj+ahFNwsO3ouVJr1HFkWoEwNDb4TMtE= github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGDAUWqna+CNTrI= github.com/marten-seemann/qtls v0.3.2/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.9.1/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= github.com/mholt/certmagic v0.9.3/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= -github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= -github.com/micro/cli/v2 v2.1.1 h1:uFw0SMIKmGuyHIm8lXns/NOn7V62bM5y7DnlxUM+BEQ= github.com/micro/cli/v2 v2.1.1/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= -github.com/micro/cli/v2 v2.1.2-0.20200203150404-894195727d9c/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/cli/v2 v2.1.2 h1:43J1lChg/rZCC1rvdqZNFSQDrGT7qfMrtp6/ztpIkEM= github.com/micro/cli/v2 v2.1.2/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6s+iDsrM= github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= -github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= -github.com/micro/go-micro/v2 v2.0.0 h1:bMx549RwJ9Yuiui8cDVlfYhVNP8I8KBJTMyLthEXpRw= github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= -github.com/micro/go-micro/v2 v2.0.1-0.20200207205803-ef537270add3/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= -github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e h1:EXYgiOLVc7zkUCIsAc++GQiOvPRh/gaGl++fqY1807g= -github.com/micro/go-micro/v2 v2.0.1-0.20200212105717-d76baf59de2e/go.mod h1:CDPVByZzOp1RNrJfNxEGgNOJ11wEw8NoHfADo8M3+LM= -github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb h1:LjGUj/0hVn8pn8I+MoJCctj1gQny14lqT3a6v5THEoo= -github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb/go.mod h1:qz2UT4UFdFVs+qUGMuDK3xuHgude1BgntqQ29sbpPlE= github.com/micro/go-micro/v2 v2.6.0 h1:HH6uEqTu6pkBtAlwAqQW2sf33640iEa1s9puGIctpO0= github.com/micro/go-micro/v2 v2.6.0/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= -github.com/micro/go-micro/v2 v2.6.1-0.20200506095814-5387f73b5d8e h1:EvjB9RKFavhizMUClRqK3hymBdhm9Ysa2UYWN6tLUL0= -github.com/micro/go-micro/v2 v2.6.1-0.20200506095814-5387f73b5d8e/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= -github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1 h1:7IkXfl94MdLZQwk0lNmu9Cg5WP42Zak9EtQMeN4SvVs= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1/go.mod h1:QrkcwcDtIs2hIJpIEhozekyf6Rfz5C36kFI8+zzCpX0= -github.com/micro/mdns v0.3.0 h1:bYycYe+98AXR3s8Nq5qvt6C573uFTDPIYzJemWON0QE= github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= github.com/micro/micro v1.16.0/go.mod h1:TO5Ng0KidbfRYIxVM4Q3deZ0A+qwRyP9WeXp+k2fWNA= -github.com/micro/micro v1.18.1-0.20200129112143-c64a2f7745fe h1:7wltlc6/cQmh7RGLA1jnRUsxB0kbu9HFh/u2o6yMVcA= -github.com/micro/micro/v2 v2.0.1-0.20200210100719-f38a1d8d5348/go.mod h1:MQBt/cBC7vKP6JMebU5982Umd5GIrVdhPbOGieXowyY= -github.com/micro/micro/v2 v2.5.1-0.20200418121137-24e9b206767c/go.mod h1:fqqaYbJGYzSBi7Ms2Adly7Xzw9+WIRBAucUjwGmYeFY= -github.com/micro/micro/v2 v2.6.1-0.20200506111713-0a691b399107 h1:Dl5GAdKQOzhIdcXmgqk+m/kHc9PomfeStzPETfvGDj8= -github.com/micro/micro/v2 v2.6.1-0.20200506111713-0a691b399107/go.mod h1:AejRahuyvXRGyYeU2UV6YQC/wL/+lwlF7YUmKnofhek= -github.com/micro/protoc-gen-micro v1.0.0 h1:qKh5S3I1RfenhIs5mqDFJLwRlRDlgin7XWiUKZbpwLM= github.com/micro/protoc-gen-micro v1.0.0/go.mod h1:C8ij4DJhapBmypcT00AXdb0cZ675/3PqUO02buWWqbE= -github.com/micro/protoc-gen-micro/v2 v2.3.0/go.mod h1:gcsUvKSTTTalq+pqdUbFS40OTsURpYgL5+yUguR1djk= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -569,7 +493,6 @@ github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -578,25 +501,17 @@ github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go. github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= -github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= @@ -605,28 +520,24 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.0/go.mod h1:r5y0WgCag0dTj/qiHkHrXAcKQ/f5GMOZaEGdoxxnJ4I= -github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats-server/v2 v2.1.6 h1:qAaHZaS8pRRNQLFaiBA1rq5WynyEGp9DFgmMfoaiXGY= github.com/nats-io/nats-server/v2 v2.1.6/go.mod h1:BL1NOtaBQ5/y97djERRVWNouMW7GT3gxnmbE/eC8u8A= github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= -github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nats.go v1.9.2 h1:oDeERm3NcZVrPpdR/JpGdWHMv3oJ8yY30YwxKq+DU2s= github.com/nats-io/nats.go v1.9.2/go.mod h1:AjGArbfyR50+afOUotNX2Xs5SYHf+CoOa5HH1eEl2HE= github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.4 h1:aEsHIssIk6ETN5m2/MD8Y4B2X7FfXrBAUdkyRvbVYzA= github.com/nats-io/nkeys v0.1.4/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= -github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= -github.com/netdata/go-orchestrator v0.0.0-20190905093727-c793edba0e8f/go.mod h1:ECF8anFVCt/TfTIWVPgPrNaYJXtAtpAOF62ugDbw41A= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nlopes/slack v0.6.1-0.20191106133607-d06c2a2b3249/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= @@ -634,7 +545,6 @@ github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/Hzq github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= -github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= @@ -643,8 +553,6 @@ github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.3/go.mod h1:YZeBtGzYYEsCHp2LST/u/0NDwGkRoBtmn1cIWCJiS6M= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -671,11 +579,8 @@ github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0Q github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV03z6zI= github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= -github.com/owncloud/ocis-settings v0.0.0-20200511093940-0fddb624d0da h1:VVkg5s6zs37MvKZ1YQK0/dfN3D+WQ7VuESOfnrhdqP4= -github.com/owncloud/ocis-settings v0.0.0-20200511093940-0fddb624d0da/go.mod h1:1PyfbVIZMTX21JxsRT+maRIjRFD3H+yhfpr1jMz3PeA= github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 h1:wk/7aAUITTrM192TFoIDq4fqzJQtFOQ0dDdSRkJ25SU= github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363/go.mod h1:/h0ceztOoFc3KAnm8nqZI4zwsaaZK9q4MTgtintwsXc= -github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -683,7 +588,6 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= @@ -695,10 +599,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -706,26 +608,22 @@ github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.2.1 h1:JnMpQc6ppsNgw9QPAGF6Dod479itz7lvlsMzzNayLOI= github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0 h1:L+1lyG48J1zAQXA3RBX/nG/B3gjlHq0zTt2tlbJLyCY= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5 h1:3+auTFlqw+ZaQYJARz6ArODtkaIwtvBTx3N2NehQlL8= github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= @@ -738,9 +636,7 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -754,34 +650,25 @@ github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLS github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs= @@ -796,10 +683,8 @@ github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRci github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog= @@ -816,10 +701,7 @@ github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMW github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 h1:gKMu1Bf6QINDnvyZuTaACm9ofY+PRh+5vFz4oxBZeF8= github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= @@ -831,38 +713,32 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= gocloud.dev v0.17.0/go.mod h1:tIHTRdR1V5dlD8sTkzYdTGizBJ314BDykJ8KmadEXwo= gocloud.dev/pubsub/rabbitpubsub v0.17.0/go.mod h1:7o1XYDiIC+b0mmcwJuofsDg08t0DtU2ubfn7C/Uz7Y0= @@ -888,7 +764,6 @@ golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3 golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200117160349-530e935923ad h1:Jh8cai0fqIK+f6nG0UgPW5wFk8wmiMhM3AyciDBdtQg= golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM= @@ -900,14 +775,12 @@ golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm0 golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -949,34 +822,25 @@ golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1011,9 +875,7 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4 h1:Hynbrlo6LbYI3H1IqXpkVDOcX/3HiPdhVEuyj5a59RM= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5 h1:LfCXLvNmTYH9kEmVgqbnsWfruoXZIrh4YBgqVHtDvw0= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1021,19 +883,15 @@ golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fq golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0 h1:xQwXv67TxFo9nC1GJFyab5eq/5B590r6RlnL/G8Sz7w= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1057,7 +915,6 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200427214658-4697a2867c88 h1:Nj7oNnL9tSACMt2JvszZN6P4IXiy1t6E/YRMr7YtaSw= golang.org/x/tools v0.0.0-20200427214658-4697a2867c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -1093,33 +950,17 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a h1:Ob5/580gVHBJZgXnff1cZDbG+xLtMVE5mDRTe+nIsX4= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb h1:nAFaltAMbNVA0rixtwvdnqgSVLX3HFUUvMkEklmzbYM= google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84 h1:pSLkPbrjnPyLDYUO2VM9mDLqo2V6CFBY84lFSZAfoi4= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0 h1:qdOKuR/EIArgaWNjetjgTzgVTAZ+S/WXVrq9HW9zimw= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0 h1:cJv5/xdbk1NnMPR1VP9+HU6gupuG9MLBoH1r6RHZ2MY= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= @@ -1130,12 +971,11 @@ gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUy gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= @@ -1146,17 +986,16 @@ gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdOD gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= +gopkg.in/ldap.v2 v2.5.1/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk= gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= -gopkg.in/olivere/elastic.v5 v5.0.83/go.mod h1:LXF6q9XNBxpMqrcgax95C6xyARXWbbCXUrtTxrNrxJI= gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -1165,7 +1004,6 @@ gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzE gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= gopkg.in/telegram-bot-api.v4 v4.6.4/go.mod h1:5DpGO5dbumb40px+dXcwCpcjmeHNYLpk0bp3XRNvWDM= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -1173,15 +1011,12 @@ gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bl gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab h1:33/51YKJC1SC6WAomp3Feij834LXL1uK1Jmt45mkghE= honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab/go.mod h1:NELv708mC2Q9lQf29l+sO/v7NIOAQzEXu7jcugNzwvM= @@ -1199,5 +1034,4 @@ k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/account/accounts.go b/pkg/account/accounts.go deleted file mode 100644 index 5c453d8f71..0000000000 --- a/pkg/account/accounts.go +++ /dev/null @@ -1,34 +0,0 @@ -package account - -import ( - "github.com/owncloud/ocis-accounts/pkg/config" - "github.com/owncloud/ocis-accounts/pkg/proto/v0" -) - -var ( - // Registry uses the strategy pattern as a registry - Registry = map[string]RegisterFunc{} - - // DefaultManager defines the default accounts manager - DefaultManager = "filesystem" -) - -// RegisterFunc stores store constructors -type RegisterFunc func(*config.Config) Manager - -// Manager is an accounts service interface -// TODO email and username might not be unique? -type Manager interface { - // Read a record by uuid - Read(uuid string) (*proto.Record, error) - // Read a record by username - ReadByUsername(username string) (*proto.Record, error) - // Read a record by email - ReadByEmail(email string) (*proto.Record, error) - // Read a record by identity (iss & sub) - ReadByIdentity(identity *proto.IdHistory) (*proto.Record, error) - // Write a record - Write(*proto.Record) (*proto.Record, error) - // List all records - List() ([]*proto.Record, error) -} diff --git a/pkg/command/root.go b/pkg/command/root.go index 85308f7bdb..d08a7acebc 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -1,21 +1,19 @@ package command import ( - "github.com/owncloud/ocis-accounts/pkg/flagset" "os" "os/user" "path" "strings" + "github.com/owncloud/ocis-accounts/pkg/flagset" + "github.com/joho/godotenv" "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/version" "github.com/owncloud/ocis-pkg/v2/log" "github.com/spf13/viper" - - // init store manager - _ "github.com/owncloud/ocis-accounts/pkg/store" ) var ( diff --git a/pkg/command/server.go b/pkg/command/server.go index 654f8b450b..4c05977d65 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -3,9 +3,10 @@ package command import ( "context" "fmt" - "github.com/owncloud/ocis-accounts/pkg/flagset" "syscall" + "github.com/owncloud/ocis-accounts/pkg/flagset" + "github.com/micro/cli/v2" "github.com/oklog/run" "github.com/owncloud/ocis-accounts/pkg/config" @@ -23,7 +24,7 @@ func Server(cfg *config.Config) *cli.Command { return &cli.Command{ Name: "server", Usage: "Start ocis accounts service", - Description: "an accounts backend manager (driver) needs to be specified. By default the service uses the filesystem as storage", + Description: "uses an LDAP server as the storage backend", Flags: flagset.ServerWithConfig(cfg), Before: func(c *cli.Context) error { logger = oclog.NewLogger( diff --git a/pkg/config/config.go b/pkg/config/config.go index 6c419c987d..00db2bf774 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -1,6 +1,29 @@ // Package config should be moved to internal package config +// LDAP defines the available ldap configuration. +type LDAP struct { + Hostname string + Port int + BaseDN string + UserFilter string + GroupFilter string + BindDN string + BindPassword string + IDP string + Schema LDAPSchema +} + +// LDAPSchema defines the available ldap schema configuration. +type LDAPSchema struct { + AccountID string + Identities string + Username string + DisplayName string + Mail string + Groups string +} + // Server configures a server. type Server struct { Name string @@ -17,10 +40,9 @@ type Log struct { // Config merges all Account config parameters. type Config struct { - MountPath string - Manager string - Server Server - Log Log + LDAP LDAP + Server Server + Log Log } // New returns a new config. diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index 16dbe5d7d1..aa7bd4e872 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -1,7 +1,9 @@ package flagset -import "github.com/micro/cli/v2" -import "github.com/owncloud/ocis-accounts/pkg/config" +import ( + "github.com/micro/cli/v2" + "github.com/owncloud/ocis-accounts/pkg/config" +) // RootWithConfig applies cfg to the root flagset func RootWithConfig(cfg *config.Config) []cli.Flag { @@ -33,20 +35,6 @@ func RootWithConfig(cfg *config.Config) []cli.Flag { // ServerWithConfig applies cfg to the root flagset func ServerWithConfig(cfg *config.Config) []cli.Flag { return []cli.Flag{ - &cli.StringFlag{ - Name: "manager", - DefaultText: "filesystem", - Usage: "accounts backend manager", - Value: "filesystem", - EnvVars: []string{"ACCOUNTS_MANAGER"}, - Destination: &cfg.Manager, - }, - &cli.StringFlag{ - Name: "mount-path", - Usage: "mounting point (necessary when manager=filesystem)", - EnvVars: []string{"ACCOUNTS_MOUNT_PATH"}, - Destination: &cfg.MountPath, - }, &cli.StringFlag{ Name: "name", Value: "accounts", @@ -58,8 +46,8 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { &cli.StringFlag{ Name: "namespace", Aliases: []string{"ns"}, - Value: "com.owncloud", - DefaultText: "com.owncloud", + Value: "com.owncloud.api", + DefaultText: "com.owncloud.api", Usage: "namespace", EnvVars: []string{"ACCOUNTS_NAMESPACE"}, Destination: &cfg.Server.Namespace, @@ -73,5 +61,99 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { EnvVars: []string{"ACCOUNTS_ADDRESS"}, Destination: &cfg.Server.Address, }, + // LDAP + + &cli.StringFlag{ + Name: "ldap-hostname", + Value: "localhost", + Usage: "LDAP hostname", + EnvVars: []string{"ACCOUNTS_LDAP_HOSTNAME"}, + Destination: &cfg.LDAP.Hostname, + }, + &cli.IntFlag{ + Name: "ldap-port", + Value: 9126, + Usage: "LDAP port", + EnvVars: []string{"ACCOUNTS_LDAP_PORT"}, + Destination: &cfg.LDAP.Port, + }, + &cli.StringFlag{ + Name: "ldap-base-dn", + Value: "dc=example,dc=org", + Usage: "LDAP basedn", + EnvVars: []string{"ACCOUNTS_LDAP_BASE_DN"}, + Destination: &cfg.LDAP.BaseDN, + }, + &cli.StringFlag{ + Name: "ldap-userfilter", + Value: "(&(objectclass=posixAccount)(cn=%s))", + Usage: "LDAP userfilter", + EnvVars: []string{"ACCOUNTS_LDAP_USERFILTER"}, + Destination: &cfg.LDAP.UserFilter, + }, + &cli.StringFlag{ + Name: "ldap-groupfilter", + Value: "(&(objectclass=posixGroup)(cn=%s))", + Usage: "LDAP groupfilter", + EnvVars: []string{"ACCOUNTS_LDAP_GROUPFILTER"}, + Destination: &cfg.LDAP.GroupFilter, + }, + &cli.StringFlag{ + Name: "ldap-bind-dn", + Value: "cn=reva,ou=sysusers,dc=example,dc=org", + Usage: "LDAP bind dn", + EnvVars: []string{"ACCOUNTS_LDAP_BIND_DN"}, + Destination: &cfg.LDAP.BindDN, + }, + &cli.StringFlag{ + Name: "ldap-bind-password", + Value: "reva", + Usage: "LDAP bind password", + EnvVars: []string{"ACCOUNTS_LDAP_BIND_PASSWORD"}, + Destination: &cfg.LDAP.BindPassword, + }, + &cli.StringFlag{ + Name: "ldap-idp", + Value: "https://localhost:9200", + Usage: "Identity provider to use for users", + EnvVars: []string{"ACCOUNTS_LDAP_IDP"}, + Destination: &cfg.LDAP.IDP, + }, + // ldap dn is always the dn + &cli.StringFlag{ + Name: "ldap-schema-account-id", + Value: "ownclouduuid", // TODO write down LDAP schema & register OID + Usage: "LDAP schema account id", + EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_ACCOUNT_ID"}, + Destination: &cfg.LDAP.Schema.AccountID, + }, + &cli.StringFlag{ + Name: "ldap-schema-username", + Value: "uid", + Usage: "LDAP schema username", + EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_USERNAME"}, + Destination: &cfg.LDAP.Schema.Username, + }, + &cli.StringFlag{ + Name: "ldap-schema-displayName", + Value: "sn", + Usage: "LDAP schema displayName", + EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_DISPLAYNAME"}, + Destination: &cfg.LDAP.Schema.DisplayName, + }, + &cli.StringFlag{ + Name: "ldap-schema-mail", + Value: "mail", + Usage: "LDAP schema mail", + EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_MAIL"}, + Destination: &cfg.LDAP.Schema.Mail, + }, + &cli.StringFlag{ + Name: "ldap-schema-cn", + Value: "memberof", + Usage: "LDAP schema cn", + EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_GROUPS"}, + Destination: &cfg.LDAP.Schema.Groups, + }, } } diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index e9e298b6be..6b8b5de5df 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -6,7 +6,9 @@ package proto import ( fmt "fmt" proto "github.com/golang/protobuf/proto" + _ "github.com/golang/protobuf/ptypes/empty" _ "google.golang.org/genproto/googleapis/api/annotations" + field_mask "google.golang.org/genproto/protobuf/field_mask" math "math" ) @@ -21,107 +23,332 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package -type Record struct { - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Payload *Payload `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` +type ListAccountsRequest struct { + // Optional. The maximum number of accounts to return in the response + PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A pagination token returned from a previous call to `Get` + // that indicates from where search should continue + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. Search criteria used to select the accounts to return. + // If no search criteria is specified then all accounts will be + // returned + // + // TODO update query language + // Query expressions can be used to restrict results based upon + // the account properties where the operators `=`, `NOT`, `AND` and `OR` + // can be used along with the suffix wildcard symbol `*`. + // + // The string properties in a query expression should use escaped quotes + // for values that include whitespace to prevent unexpected behavior. + // + // Some example queries are: + // + // * Query `display_name=Th*` returns accounts whose display_name + // starts with "Th" + // * Query `email=foo@example.com` returns accounts with + // `email` set to `foo@example.com` + // * Query `display_name=\\"Test String\\"` returns accounts with + // display names that include both "Test" and "String" + Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` } -func (m *Record) Reset() { *m = Record{} } -func (m *Record) String() string { return proto.CompactTextString(m) } -func (*Record) ProtoMessage() {} -func (*Record) Descriptor() ([]byte, []int) { +func (m *ListAccountsRequest) Reset() { *m = ListAccountsRequest{} } +func (m *ListAccountsRequest) String() string { return proto.CompactTextString(m) } +func (*ListAccountsRequest) ProtoMessage() {} +func (*ListAccountsRequest) Descriptor() ([]byte, []int) { return fileDescriptor_e1e7723af4c007b7, []int{0} } -func (m *Record) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Record.Unmarshal(m, b) +func (m *ListAccountsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListAccountsRequest.Unmarshal(m, b) } -func (m *Record) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Record.Marshal(b, m, deterministic) +func (m *ListAccountsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListAccountsRequest.Marshal(b, m, deterministic) } -func (m *Record) XXX_Merge(src proto.Message) { - xxx_messageInfo_Record.Merge(m, src) +func (m *ListAccountsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListAccountsRequest.Merge(m, src) } -func (m *Record) XXX_Size() int { - return xxx_messageInfo_Record.Size(m) +func (m *ListAccountsRequest) XXX_Size() int { + return xxx_messageInfo_ListAccountsRequest.Size(m) } -func (m *Record) XXX_DiscardUnknown() { - xxx_messageInfo_Record.DiscardUnknown(m) +func (m *ListAccountsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListAccountsRequest.DiscardUnknown(m) } -var xxx_messageInfo_Record proto.InternalMessageInfo +var xxx_messageInfo_ListAccountsRequest proto.InternalMessageInfo -func (m *Record) GetKey() string { +func (m *ListAccountsRequest) GetPageSize() int32 { if m != nil { - return m.Key + return m.PageSize + } + return 0 +} + +func (m *ListAccountsRequest) GetPageToken() string { + if m != nil { + return m.PageToken } return "" } -func (m *Record) GetPayload() *Payload { +func (m *ListAccountsRequest) GetQuery() string { if m != nil { - return m.Payload + return m.Query } - return nil + return "" } -type Payload struct { - Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` +type ListAccountsResponse struct { + // The field name should match the noun "accounts" in the method name. There + // will be a maximum number of items returned based on the page_size field + // in the request + Accounts []*Account `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` + // Token to retrieve the next page of results, or empty if there are no + // more results in the list + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` } -func (m *Payload) Reset() { *m = Payload{} } -func (m *Payload) String() string { return proto.CompactTextString(m) } -func (*Payload) ProtoMessage() {} -func (*Payload) Descriptor() ([]byte, []int) { +func (m *ListAccountsResponse) Reset() { *m = ListAccountsResponse{} } +func (m *ListAccountsResponse) String() string { return proto.CompactTextString(m) } +func (*ListAccountsResponse) ProtoMessage() {} +func (*ListAccountsResponse) Descriptor() ([]byte, []int) { return fileDescriptor_e1e7723af4c007b7, []int{1} } -func (m *Payload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Payload.Unmarshal(m, b) +func (m *ListAccountsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListAccountsResponse.Unmarshal(m, b) } -func (m *Payload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Payload.Marshal(b, m, deterministic) +func (m *ListAccountsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListAccountsResponse.Marshal(b, m, deterministic) } -func (m *Payload) XXX_Merge(src proto.Message) { - xxx_messageInfo_Payload.Merge(m, src) +func (m *ListAccountsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListAccountsResponse.Merge(m, src) } -func (m *Payload) XXX_Size() int { - return xxx_messageInfo_Payload.Size(m) +func (m *ListAccountsResponse) XXX_Size() int { + return xxx_messageInfo_ListAccountsResponse.Size(m) } -func (m *Payload) XXX_DiscardUnknown() { - xxx_messageInfo_Payload.DiscardUnknown(m) +func (m *ListAccountsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListAccountsResponse.DiscardUnknown(m) } -var xxx_messageInfo_Payload proto.InternalMessageInfo +var xxx_messageInfo_ListAccountsResponse proto.InternalMessageInfo -func (m *Payload) GetAccount() *Account { +func (m *ListAccountsResponse) GetAccounts() []*Account { + if m != nil { + return m.Accounts + } + return nil +} + +func (m *ListAccountsResponse) GetNextPageToken() string { + if m != nil { + return m.NextPageToken + } + return "" +} + +type GetAccountRequest struct { + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetAccountRequest) Reset() { *m = GetAccountRequest{} } +func (m *GetAccountRequest) String() string { return proto.CompactTextString(m) } +func (*GetAccountRequest) ProtoMessage() {} +func (*GetAccountRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{2} +} + +func (m *GetAccountRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetAccountRequest.Unmarshal(m, b) +} +func (m *GetAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetAccountRequest.Marshal(b, m, deterministic) +} +func (m *GetAccountRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetAccountRequest.Merge(m, src) +} +func (m *GetAccountRequest) XXX_Size() int { + return xxx_messageInfo_GetAccountRequest.Size(m) +} +func (m *GetAccountRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetAccountRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetAccountRequest proto.InternalMessageInfo + +func (m *GetAccountRequest) GetAccountId() string { + if m != nil { + return m.AccountId + } + return "" +} + +type CreateAccountRequest struct { + // The account id to use for this account + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + // The account resource to create + Account *Account `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateAccountRequest) Reset() { *m = CreateAccountRequest{} } +func (m *CreateAccountRequest) String() string { return proto.CompactTextString(m) } +func (*CreateAccountRequest) ProtoMessage() {} +func (*CreateAccountRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{3} +} + +func (m *CreateAccountRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateAccountRequest.Unmarshal(m, b) +} +func (m *CreateAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateAccountRequest.Marshal(b, m, deterministic) +} +func (m *CreateAccountRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateAccountRequest.Merge(m, src) +} +func (m *CreateAccountRequest) XXX_Size() int { + return xxx_messageInfo_CreateAccountRequest.Size(m) +} +func (m *CreateAccountRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateAccountRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateAccountRequest proto.InternalMessageInfo + +func (m *CreateAccountRequest) GetAccountId() string { + if m != nil { + return m.AccountId + } + return "" +} + +func (m *CreateAccountRequest) GetAccount() *Account { if m != nil { return m.Account } return nil } +type UpdateAccountRequest struct { + // The account resource which replaces the resource on the server + Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + // The update mask applies to the resource. For the `FieldMask` definition, + // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask + UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateAccountRequest) Reset() { *m = UpdateAccountRequest{} } +func (m *UpdateAccountRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateAccountRequest) ProtoMessage() {} +func (*UpdateAccountRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{4} +} + +func (m *UpdateAccountRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateAccountRequest.Unmarshal(m, b) +} +func (m *UpdateAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateAccountRequest.Marshal(b, m, deterministic) +} +func (m *UpdateAccountRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateAccountRequest.Merge(m, src) +} +func (m *UpdateAccountRequest) XXX_Size() int { + return xxx_messageInfo_UpdateAccountRequest.Size(m) +} +func (m *UpdateAccountRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateAccountRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateAccountRequest proto.InternalMessageInfo + +func (m *UpdateAccountRequest) GetAccount() *Account { + if m != nil { + return m.Account + } + return nil +} + +func (m *UpdateAccountRequest) GetUpdateMask() *field_mask.FieldMask { + if m != nil { + return m.UpdateMask + } + return nil +} + +type DeleteAccountRequest struct { + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteAccountRequest) Reset() { *m = DeleteAccountRequest{} } +func (m *DeleteAccountRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteAccountRequest) ProtoMessage() {} +func (*DeleteAccountRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{5} +} + +func (m *DeleteAccountRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteAccountRequest.Unmarshal(m, b) +} +func (m *DeleteAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteAccountRequest.Marshal(b, m, deterministic) +} +func (m *DeleteAccountRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteAccountRequest.Merge(m, src) +} +func (m *DeleteAccountRequest) XXX_Size() int { + return xxx_messageInfo_DeleteAccountRequest.Size(m) +} +func (m *DeleteAccountRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteAccountRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteAccountRequest proto.InternalMessageInfo + +func (m *DeleteAccountRequest) GetAccountId() string { + if m != nil { + return m.AccountId + } + return "" +} + type Account struct { - StandardClaims *StandardClaims `protobuf:"bytes,1,opt,name=standard_claims,json=standardClaims,proto3" json:"standard_claims,omitempty"` - Identities []*IdHistory `protobuf:"bytes,2,rep,name=identities,proto3" json:"identities,omitempty"` - Issuer string `protobuf:"bytes,3,opt,name=Issuer,proto3" json:"Issuer,omitempty"` - Password string `protobuf:"bytes,4,opt,name=Password,proto3" json:"Password,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // the non reassignable and stable account_id of an account + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + // The identities that are mapped to this account + Identities []*Identities `protobuf:"bytes,2,rep,name=identities,proto3" json:"identities,omitempty"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` + DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Mail string `protobuf:"bytes,5,opt,name=mail,proto3" json:"mail,omitempty"` + Groups []*Group `protobuf:"bytes,6,rep,name=groups,proto3" json:"groups,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Account) Reset() { *m = Account{} } func (m *Account) String() string { return proto.CompactTextString(m) } func (*Account) ProtoMessage() {} func (*Account) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{2} + return fileDescriptor_e1e7723af4c007b7, []int{6} } func (m *Account) XXX_Unmarshal(b []byte) error { @@ -142,668 +369,542 @@ func (m *Account) XXX_DiscardUnknown() { var xxx_messageInfo_Account proto.InternalMessageInfo -func (m *Account) GetStandardClaims() *StandardClaims { +func (m *Account) GetAccountId() string { if m != nil { - return m.StandardClaims + return m.AccountId } - return nil + return "" } -func (m *Account) GetIdentities() []*IdHistory { +func (m *Account) GetIdentities() []*Identities { if m != nil { return m.Identities } return nil } -func (m *Account) GetIssuer() string { - if m != nil { - return m.Issuer - } - return "" -} - -func (m *Account) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -// OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims -type StandardClaims struct { - Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - GivenName string `protobuf:"bytes,3,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` - FamilyName string `protobuf:"bytes,4,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"` - MiddleName string `protobuf:"bytes,5,opt,name=middle_name,json=middleName,proto3" json:"middle_name,omitempty"` - Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` - PreferredUsername string `protobuf:"bytes,7,opt,name=preferred_username,json=preferredUsername,proto3" json:"preferred_username,omitempty"` - Profile string `protobuf:"bytes,8,opt,name=profile,proto3" json:"profile,omitempty"` - Picture string `protobuf:"bytes,9,opt,name=picture,proto3" json:"picture,omitempty"` - Website string `protobuf:"bytes,10,opt,name=website,proto3" json:"website,omitempty"` - Email string `protobuf:"bytes,11,opt,name=email,proto3" json:"email,omitempty"` - EmailVerified bool `protobuf:"varint,12,opt,name=email_verified,json=emailVerified,proto3" json:"email_verified,omitempty"` - Gender string `protobuf:"bytes,13,opt,name=gender,proto3" json:"gender,omitempty"` - Birthdate string `protobuf:"bytes,14,opt,name=birthdate,proto3" json:"birthdate,omitempty"` - Zoneinfo string `protobuf:"bytes,15,opt,name=zoneinfo,proto3" json:"zoneinfo,omitempty"` - Locale string `protobuf:"bytes,16,opt,name=locale,proto3" json:"locale,omitempty"` - PhoneNumber string `protobuf:"bytes,17,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` - PhoneNumberVerified bool `protobuf:"varint,18,opt,name=phone_number_verified,json=phoneNumberVerified,proto3" json:"phone_number_verified,omitempty"` - UpdatedAt int32 `protobuf:"varint,19,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Address *Address `protobuf:"bytes,20,opt,name=address,proto3" json:"address,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *StandardClaims) Reset() { *m = StandardClaims{} } -func (m *StandardClaims) String() string { return proto.CompactTextString(m) } -func (*StandardClaims) ProtoMessage() {} -func (*StandardClaims) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{3} -} - -func (m *StandardClaims) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StandardClaims.Unmarshal(m, b) -} -func (m *StandardClaims) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StandardClaims.Marshal(b, m, deterministic) -} -func (m *StandardClaims) XXX_Merge(src proto.Message) { - xxx_messageInfo_StandardClaims.Merge(m, src) -} -func (m *StandardClaims) XXX_Size() int { - return xxx_messageInfo_StandardClaims.Size(m) -} -func (m *StandardClaims) XXX_DiscardUnknown() { - xxx_messageInfo_StandardClaims.DiscardUnknown(m) -} - -var xxx_messageInfo_StandardClaims proto.InternalMessageInfo - -func (m *StandardClaims) GetSub() string { - if m != nil { - return m.Sub - } - return "" -} - -func (m *StandardClaims) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *StandardClaims) GetGivenName() string { - if m != nil { - return m.GivenName - } - return "" -} - -func (m *StandardClaims) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -func (m *StandardClaims) GetMiddleName() string { - if m != nil { - return m.MiddleName - } - return "" -} - -func (m *StandardClaims) GetNickname() string { - if m != nil { - return m.Nickname - } - return "" -} - -func (m *StandardClaims) GetPreferredUsername() string { - if m != nil { - return m.PreferredUsername - } - return "" -} - -func (m *StandardClaims) GetProfile() string { - if m != nil { - return m.Profile - } - return "" -} - -func (m *StandardClaims) GetPicture() string { - if m != nil { - return m.Picture - } - return "" -} - -func (m *StandardClaims) GetWebsite() string { - if m != nil { - return m.Website - } - return "" -} - -func (m *StandardClaims) GetEmail() string { - if m != nil { - return m.Email - } - return "" -} - -func (m *StandardClaims) GetEmailVerified() bool { - if m != nil { - return m.EmailVerified - } - return false -} - -func (m *StandardClaims) GetGender() string { - if m != nil { - return m.Gender - } - return "" -} - -func (m *StandardClaims) GetBirthdate() string { - if m != nil { - return m.Birthdate - } - return "" -} - -func (m *StandardClaims) GetZoneinfo() string { - if m != nil { - return m.Zoneinfo - } - return "" -} - -func (m *StandardClaims) GetLocale() string { - if m != nil { - return m.Locale - } - return "" -} - -func (m *StandardClaims) GetPhoneNumber() string { - if m != nil { - return m.PhoneNumber - } - return "" -} - -func (m *StandardClaims) GetPhoneNumberVerified() bool { - if m != nil { - return m.PhoneNumberVerified - } - return false -} - -func (m *StandardClaims) GetUpdatedAt() int32 { - if m != nil { - return m.UpdatedAt - } - return 0 -} - -func (m *StandardClaims) GetAddress() *Address { - if m != nil { - return m.Address - } - return nil -} - -type Address struct { - Formatted string `protobuf:"bytes,1,opt,name=formatted,proto3" json:"formatted,omitempty"` - StreetAddress string `protobuf:"bytes,2,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` - Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` - Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` - PostalCode string `protobuf:"bytes,5,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` - Country string `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Address) Reset() { *m = Address{} } -func (m *Address) String() string { return proto.CompactTextString(m) } -func (*Address) ProtoMessage() {} -func (*Address) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{4} -} - -func (m *Address) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Address.Unmarshal(m, b) -} -func (m *Address) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Address.Marshal(b, m, deterministic) -} -func (m *Address) XXX_Merge(src proto.Message) { - xxx_messageInfo_Address.Merge(m, src) -} -func (m *Address) XXX_Size() int { - return xxx_messageInfo_Address.Size(m) -} -func (m *Address) XXX_DiscardUnknown() { - xxx_messageInfo_Address.DiscardUnknown(m) -} - -var xxx_messageInfo_Address proto.InternalMessageInfo - -func (m *Address) GetFormatted() string { - if m != nil { - return m.Formatted - } - return "" -} - -func (m *Address) GetStreetAddress() string { - if m != nil { - return m.StreetAddress - } - return "" -} - -func (m *Address) GetLocality() string { - if m != nil { - return m.Locality - } - return "" -} - -func (m *Address) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *Address) GetPostalCode() string { - if m != nil { - return m.PostalCode - } - return "" -} - -func (m *Address) GetCountry() string { - if m != nil { - return m.Country - } - return "" -} - -type IdHistory struct { - Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"` - Iss string `protobuf:"bytes,2,opt,name=iss,proto3" json:"iss,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *IdHistory) Reset() { *m = IdHistory{} } -func (m *IdHistory) String() string { return proto.CompactTextString(m) } -func (*IdHistory) ProtoMessage() {} -func (*IdHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{5} -} - -func (m *IdHistory) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IdHistory.Unmarshal(m, b) -} -func (m *IdHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IdHistory.Marshal(b, m, deterministic) -} -func (m *IdHistory) XXX_Merge(src proto.Message) { - xxx_messageInfo_IdHistory.Merge(m, src) -} -func (m *IdHistory) XXX_Size() int { - return xxx_messageInfo_IdHistory.Size(m) -} -func (m *IdHistory) XXX_DiscardUnknown() { - xxx_messageInfo_IdHistory.DiscardUnknown(m) -} - -var xxx_messageInfo_IdHistory proto.InternalMessageInfo - -func (m *IdHistory) GetSub() string { - if m != nil { - return m.Sub - } - return "" -} - -func (m *IdHistory) GetIss() string { - if m != nil { - return m.Iss - } - return "" -} - -type Phoenix struct { - Theme string `protobuf:"bytes,1,opt,name=theme,proto3" json:"theme,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Phoenix) Reset() { *m = Phoenix{} } -func (m *Phoenix) String() string { return proto.CompactTextString(m) } -func (*Phoenix) ProtoMessage() {} -func (*Phoenix) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{6} -} - -func (m *Phoenix) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Phoenix.Unmarshal(m, b) -} -func (m *Phoenix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Phoenix.Marshal(b, m, deterministic) -} -func (m *Phoenix) XXX_Merge(src proto.Message) { - xxx_messageInfo_Phoenix.Merge(m, src) -} -func (m *Phoenix) XXX_Size() int { - return xxx_messageInfo_Phoenix.Size(m) -} -func (m *Phoenix) XXX_DiscardUnknown() { - xxx_messageInfo_Phoenix.DiscardUnknown(m) -} - -var xxx_messageInfo_Phoenix proto.InternalMessageInfo - -func (m *Phoenix) GetTheme() string { - if m != nil { - return m.Theme - } - return "" -} - -// Used to fetch exactly one user. The conditions are optional. If set, all have to be true. -type GetRequest struct { - // Used to look up user by the oidc sub and iss - Identity *IdHistory `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` - // Used to look up the user by our internal uuid - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` - // Used to authenticate users using basic auth - Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` - // Used as a fallback mechanism in case sub or iss changed for an existing user - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetRequest) Reset() { *m = GetRequest{} } -func (m *GetRequest) String() string { return proto.CompactTextString(m) } -func (*GetRequest) ProtoMessage() {} -func (*GetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{7} -} - -func (m *GetRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetRequest.Unmarshal(m, b) -} -func (m *GetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetRequest.Marshal(b, m, deterministic) -} -func (m *GetRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetRequest.Merge(m, src) -} -func (m *GetRequest) XXX_Size() int { - return xxx_messageInfo_GetRequest.Size(m) -} -func (m *GetRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetRequest proto.InternalMessageInfo - -func (m *GetRequest) GetIdentity() *IdHistory { - if m != nil { - return m.Identity - } - return nil -} - -func (m *GetRequest) GetUuid() string { - if m != nil { - return m.Uuid - } - return "" -} - -func (m *GetRequest) GetUsername() string { +func (m *Account) GetUsername() string { if m != nil { return m.Username } return "" } -func (m *GetRequest) GetPassword() string { +func (m *Account) GetDisplayName() string { if m != nil { - return m.Password + return m.DisplayName } return "" } -func (m *GetRequest) GetEmail() string { +func (m *Account) GetMail() string { if m != nil { - return m.Email + return m.Mail } return "" } -type Query struct { - // Optional. The maximum number of accounts to return in the response. +func (m *Account) GetGroups() []*Group { + if m != nil { + return m.Groups + } + return nil +} + +type Identities struct { + SignInType string `protobuf:"bytes,1,opt,name=sign_in_type,json=signInType,proto3" json:"sign_in_type,omitempty"` + Issuer string `protobuf:"bytes,2,opt,name=issuer,proto3" json:"issuer,omitempty"` + IssuerAssignedId string `protobuf:"bytes,3,opt,name=issuer_assigned_id,json=issuerAssignedId,proto3" json:"issuer_assigned_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Identities) Reset() { *m = Identities{} } +func (m *Identities) String() string { return proto.CompactTextString(m) } +func (*Identities) ProtoMessage() {} +func (*Identities) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{7} +} + +func (m *Identities) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Identities.Unmarshal(m, b) +} +func (m *Identities) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Identities.Marshal(b, m, deterministic) +} +func (m *Identities) XXX_Merge(src proto.Message) { + xxx_messageInfo_Identities.Merge(m, src) +} +func (m *Identities) XXX_Size() int { + return xxx_messageInfo_Identities.Size(m) +} +func (m *Identities) XXX_DiscardUnknown() { + xxx_messageInfo_Identities.DiscardUnknown(m) +} + +var xxx_messageInfo_Identities proto.InternalMessageInfo + +func (m *Identities) GetSignInType() string { + if m != nil { + return m.SignInType + } + return "" +} + +func (m *Identities) GetIssuer() string { + if m != nil { + return m.Issuer + } + return "" +} + +func (m *Identities) GetIssuerAssignedId() string { + if m != nil { + return m.IssuerAssignedId + } + return "" +} + +type ListGroupsRequest struct { + // Optional. The maximum number of groups to return in the response PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. A pagination token returned from a previous call to `Get` - // that indicates from where search should continue. + // that indicates from where search should continue PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Search criteria used to select the Accounts to return. - // If no search criteria is specified then all accounts will be - // returned. + // Optional. Search criteria used to select the groups to return. + // If no search criteria is specified then all groups will be + // returned // - // Query expressions can be used to restrict results based upon the standard claims, - // iss, and uuid where the operators `=`, `NOT`, `AND` and `OR` + // TODO update query language + // Query expressions can be used to restrict results based upon + // the account properties where the operators `=`, `NOT`, `AND` and `OR` // can be used along with the suffix wildcard symbol `*`. // - // The *_name claims in a query expression should use escaped quotes + // The string properties in a query expression should use escaped quotes // for values that include whitespace to prevent unexpected behavior. // // Some example queries are: // - // * Query `name=Th*` returns accounts whose name claim - // starts with "Th". - // * Query `email=foo@example.com` returns accounts with - // `email` set to `foo@example.com`. - // * Query `address/country=de` returns accounts that have - // an address in Germany - // * Query `name=\\"Test String\\"` returns accounts with - // display names that include both "Test" and "String". + // * Query `display_name=Th*` returns accounts whose display_name + // starts with "Th" + // * Query `display_name=\\"Test String\\"` returns groups with + // display names that include both "Test" and "String" Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` } -func (m *Query) Reset() { *m = Query{} } -func (m *Query) String() string { return proto.CompactTextString(m) } -func (*Query) ProtoMessage() {} -func (*Query) Descriptor() ([]byte, []int) { +func (m *ListGroupsRequest) Reset() { *m = ListGroupsRequest{} } +func (m *ListGroupsRequest) String() string { return proto.CompactTextString(m) } +func (*ListGroupsRequest) ProtoMessage() {} +func (*ListGroupsRequest) Descriptor() ([]byte, []int) { return fileDescriptor_e1e7723af4c007b7, []int{8} } -func (m *Query) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Query.Unmarshal(m, b) +func (m *ListGroupsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListGroupsRequest.Unmarshal(m, b) } -func (m *Query) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Query.Marshal(b, m, deterministic) +func (m *ListGroupsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListGroupsRequest.Marshal(b, m, deterministic) } -func (m *Query) XXX_Merge(src proto.Message) { - xxx_messageInfo_Query.Merge(m, src) +func (m *ListGroupsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListGroupsRequest.Merge(m, src) } -func (m *Query) XXX_Size() int { - return xxx_messageInfo_Query.Size(m) +func (m *ListGroupsRequest) XXX_Size() int { + return xxx_messageInfo_ListGroupsRequest.Size(m) } -func (m *Query) XXX_DiscardUnknown() { - xxx_messageInfo_Query.DiscardUnknown(m) +func (m *ListGroupsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListGroupsRequest.DiscardUnknown(m) } -var xxx_messageInfo_Query proto.InternalMessageInfo +var xxx_messageInfo_ListGroupsRequest proto.InternalMessageInfo -func (m *Query) GetPageSize() int32 { +func (m *ListGroupsRequest) GetPageSize() int32 { if m != nil { return m.PageSize } return 0 } -func (m *Query) GetPageToken() string { +func (m *ListGroupsRequest) GetPageToken() string { if m != nil { return m.PageToken } return "" } -func (m *Query) GetQuery() string { +func (m *ListGroupsRequest) GetQuery() string { if m != nil { return m.Query } return "" } -type Records struct { - // A possibly paginated accounts search result for - // the specified query. - Records []*Record `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` - // A pagination token returned from a previous call to `Search` - // that indicates from where searching should continue. +type ListGroupsResponse struct { + // The field name should match the noun "group" in the method name. There + // will be a maximum number of items returned based on the page_size field + // in the request + Groups []*Group `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"` + // Token to retrieve the next page of results, or empty if there are no + // more results in the list NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` } -func (m *Records) Reset() { *m = Records{} } -func (m *Records) String() string { return proto.CompactTextString(m) } -func (*Records) ProtoMessage() {} -func (*Records) Descriptor() ([]byte, []int) { +func (m *ListGroupsResponse) Reset() { *m = ListGroupsResponse{} } +func (m *ListGroupsResponse) String() string { return proto.CompactTextString(m) } +func (*ListGroupsResponse) ProtoMessage() {} +func (*ListGroupsResponse) Descriptor() ([]byte, []int) { return fileDescriptor_e1e7723af4c007b7, []int{9} } -func (m *Records) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Records.Unmarshal(m, b) +func (m *ListGroupsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListGroupsResponse.Unmarshal(m, b) } -func (m *Records) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Records.Marshal(b, m, deterministic) +func (m *ListGroupsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListGroupsResponse.Marshal(b, m, deterministic) } -func (m *Records) XXX_Merge(src proto.Message) { - xxx_messageInfo_Records.Merge(m, src) +func (m *ListGroupsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListGroupsResponse.Merge(m, src) } -func (m *Records) XXX_Size() int { - return xxx_messageInfo_Records.Size(m) +func (m *ListGroupsResponse) XXX_Size() int { + return xxx_messageInfo_ListGroupsResponse.Size(m) } -func (m *Records) XXX_DiscardUnknown() { - xxx_messageInfo_Records.DiscardUnknown(m) +func (m *ListGroupsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListGroupsResponse.DiscardUnknown(m) } -var xxx_messageInfo_Records proto.InternalMessageInfo +var xxx_messageInfo_ListGroupsResponse proto.InternalMessageInfo -func (m *Records) GetRecords() []*Record { +func (m *ListGroupsResponse) GetGroups() []*Group { if m != nil { - return m.Records + return m.Groups } return nil } -func (m *Records) GetNextPageToken() string { +func (m *ListGroupsResponse) GetNextPageToken() string { if m != nil { return m.NextPageToken } return "" } +type GetGroupRequest struct { + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetGroupRequest) Reset() { *m = GetGroupRequest{} } +func (m *GetGroupRequest) String() string { return proto.CompactTextString(m) } +func (*GetGroupRequest) ProtoMessage() {} +func (*GetGroupRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{10} +} + +func (m *GetGroupRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetGroupRequest.Unmarshal(m, b) +} +func (m *GetGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetGroupRequest.Marshal(b, m, deterministic) +} +func (m *GetGroupRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetGroupRequest.Merge(m, src) +} +func (m *GetGroupRequest) XXX_Size() int { + return xxx_messageInfo_GetGroupRequest.Size(m) +} +func (m *GetGroupRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetGroupRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetGroupRequest proto.InternalMessageInfo + +func (m *GetGroupRequest) GetGroupId() string { + if m != nil { + return m.GroupId + } + return "" +} + +type CreateGroupRequest struct { + // The group id to use for this group + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + // The account resource to create + Group *Group `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateGroupRequest) Reset() { *m = CreateGroupRequest{} } +func (m *CreateGroupRequest) String() string { return proto.CompactTextString(m) } +func (*CreateGroupRequest) ProtoMessage() {} +func (*CreateGroupRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{11} +} + +func (m *CreateGroupRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateGroupRequest.Unmarshal(m, b) +} +func (m *CreateGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateGroupRequest.Marshal(b, m, deterministic) +} +func (m *CreateGroupRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateGroupRequest.Merge(m, src) +} +func (m *CreateGroupRequest) XXX_Size() int { + return xxx_messageInfo_CreateGroupRequest.Size(m) +} +func (m *CreateGroupRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateGroupRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateGroupRequest proto.InternalMessageInfo + +func (m *CreateGroupRequest) GetGroupId() string { + if m != nil { + return m.GroupId + } + return "" +} + +func (m *CreateGroupRequest) GetGroup() *Group { + if m != nil { + return m.Group + } + return nil +} + +type UpdateGroupRequest struct { + // The group resource which replaces the resource on the server + Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` + // The update mask applies to the resource. For the `FieldMask` definition, + // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask + UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateGroupRequest) Reset() { *m = UpdateGroupRequest{} } +func (m *UpdateGroupRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateGroupRequest) ProtoMessage() {} +func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{12} +} + +func (m *UpdateGroupRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateGroupRequest.Unmarshal(m, b) +} +func (m *UpdateGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateGroupRequest.Marshal(b, m, deterministic) +} +func (m *UpdateGroupRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateGroupRequest.Merge(m, src) +} +func (m *UpdateGroupRequest) XXX_Size() int { + return xxx_messageInfo_UpdateGroupRequest.Size(m) +} +func (m *UpdateGroupRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateGroupRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateGroupRequest proto.InternalMessageInfo + +func (m *UpdateGroupRequest) GetGroup() *Group { + if m != nil { + return m.Group + } + return nil +} + +func (m *UpdateGroupRequest) GetUpdateMask() *field_mask.FieldMask { + if m != nil { + return m.UpdateMask + } + return nil +} + +type DeleteGroupRequest struct { + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteGroupRequest) Reset() { *m = DeleteGroupRequest{} } +func (m *DeleteGroupRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteGroupRequest) ProtoMessage() {} +func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{13} +} + +func (m *DeleteGroupRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteGroupRequest.Unmarshal(m, b) +} +func (m *DeleteGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteGroupRequest.Marshal(b, m, deterministic) +} +func (m *DeleteGroupRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteGroupRequest.Merge(m, src) +} +func (m *DeleteGroupRequest) XXX_Size() int { + return xxx_messageInfo_DeleteGroupRequest.Size(m) +} +func (m *DeleteGroupRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteGroupRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteGroupRequest proto.InternalMessageInfo + +func (m *DeleteGroupRequest) GetGroupId() string { + if m != nil { + return m.GroupId + } + return "" +} + +type Group struct { + // the non reassignable and stable group_id of a group + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + Groupname string `protobuf:"bytes,2,opt,name=groupname,proto3" json:"groupname,omitempty"` + Accounts []*Account `protobuf:"bytes,3,rep,name=accounts,proto3" json:"accounts,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Group) Reset() { *m = Group{} } +func (m *Group) String() string { return proto.CompactTextString(m) } +func (*Group) ProtoMessage() {} +func (*Group) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{14} +} + +func (m *Group) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Group.Unmarshal(m, b) +} +func (m *Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Group.Marshal(b, m, deterministic) +} +func (m *Group) XXX_Merge(src proto.Message) { + xxx_messageInfo_Group.Merge(m, src) +} +func (m *Group) XXX_Size() int { + return xxx_messageInfo_Group.Size(m) +} +func (m *Group) XXX_DiscardUnknown() { + xxx_messageInfo_Group.DiscardUnknown(m) +} + +var xxx_messageInfo_Group proto.InternalMessageInfo + +func (m *Group) GetGroupId() string { + if m != nil { + return m.GroupId + } + return "" +} + +func (m *Group) GetGroupname() string { + if m != nil { + return m.Groupname + } + return "" +} + +func (m *Group) GetAccounts() []*Account { + if m != nil { + return m.Accounts + } + return nil +} + func init() { - proto.RegisterType((*Record)(nil), "settings.Record") - proto.RegisterType((*Payload)(nil), "settings.Payload") + proto.RegisterType((*ListAccountsRequest)(nil), "settings.ListAccountsRequest") + proto.RegisterType((*ListAccountsResponse)(nil), "settings.ListAccountsResponse") + proto.RegisterType((*GetAccountRequest)(nil), "settings.GetAccountRequest") + proto.RegisterType((*CreateAccountRequest)(nil), "settings.CreateAccountRequest") + proto.RegisterType((*UpdateAccountRequest)(nil), "settings.UpdateAccountRequest") + proto.RegisterType((*DeleteAccountRequest)(nil), "settings.DeleteAccountRequest") proto.RegisterType((*Account)(nil), "settings.Account") - proto.RegisterType((*StandardClaims)(nil), "settings.StandardClaims") - proto.RegisterType((*Address)(nil), "settings.Address") - proto.RegisterType((*IdHistory)(nil), "settings.IdHistory") - proto.RegisterType((*Phoenix)(nil), "settings.Phoenix") - proto.RegisterType((*GetRequest)(nil), "settings.GetRequest") - proto.RegisterType((*Query)(nil), "settings.Query") - proto.RegisterType((*Records)(nil), "settings.Records") + proto.RegisterType((*Identities)(nil), "settings.Identities") + proto.RegisterType((*ListGroupsRequest)(nil), "settings.ListGroupsRequest") + proto.RegisterType((*ListGroupsResponse)(nil), "settings.ListGroupsResponse") + proto.RegisterType((*GetGroupRequest)(nil), "settings.GetGroupRequest") + proto.RegisterType((*CreateGroupRequest)(nil), "settings.CreateGroupRequest") + proto.RegisterType((*UpdateGroupRequest)(nil), "settings.UpdateGroupRequest") + proto.RegisterType((*DeleteGroupRequest)(nil), "settings.DeleteGroupRequest") + proto.RegisterType((*Group)(nil), "settings.Group") } func init() { proto.RegisterFile("accounts.proto", fileDescriptor_e1e7723af4c007b7) } var fileDescriptor_e1e7723af4c007b7 = []byte{ - // 882 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x55, 0x4b, 0x6f, 0x1b, 0x37, - 0x10, 0xc6, 0x46, 0xd6, 0x6b, 0x14, 0x4b, 0x36, 0xed, 0x16, 0x84, 0xd0, 0xc0, 0xea, 0x02, 0x2d, - 0xd4, 0x47, 0xac, 0xc2, 0x01, 0x7a, 0xe9, 0xc9, 0xc9, 0xc1, 0xcd, 0x25, 0x70, 0x57, 0x6d, 0x0f, - 0x05, 0x8a, 0x05, 0xb5, 0x1c, 0x49, 0x84, 0x57, 0xcb, 0x0d, 0xc9, 0x55, 0x22, 0xff, 0x93, 0x9e, - 0xfa, 0x2b, 0x7a, 0xec, 0x7f, 0xe9, 0xef, 0xe8, 0x29, 0xe0, 0x63, 0x57, 0x7e, 0x9d, 0xc4, 0xef, - 0xc1, 0xe1, 0x70, 0x76, 0x86, 0x82, 0x21, 0xcb, 0x32, 0x59, 0x15, 0x46, 0x9f, 0x97, 0x4a, 0x1a, - 0x49, 0x7a, 0x1a, 0x8d, 0x11, 0xc5, 0x4a, 0x8f, 0xcf, 0x56, 0x52, 0xae, 0x72, 0x9c, 0xb1, 0x52, - 0xcc, 0x96, 0x02, 0x73, 0x9e, 0x2e, 0x70, 0xcd, 0xb6, 0x42, 0x2a, 0x6f, 0x8d, 0xaf, 0xa0, 0x93, - 0x60, 0x26, 0x15, 0x27, 0x47, 0xd0, 0xba, 0xc1, 0x1d, 0x8d, 0x26, 0xd1, 0xb4, 0x9f, 0xd8, 0x25, - 0xf9, 0x0e, 0xba, 0x25, 0xdb, 0xe5, 0x92, 0x71, 0xfa, 0x6c, 0x12, 0x4d, 0x07, 0x17, 0xc7, 0xe7, - 0x75, 0xe0, 0xf3, 0x6b, 0x2f, 0x24, 0xb5, 0x23, 0xfe, 0x11, 0xba, 0x81, 0xb3, 0xfb, 0x42, 0x42, - 0x2e, 0xda, 0xbd, 0x7d, 0x97, 0x5e, 0x48, 0x6a, 0x47, 0xfc, 0x4f, 0x04, 0xdd, 0x40, 0x92, 0x4b, - 0x18, 0x69, 0xc3, 0x0a, 0xce, 0x14, 0x4f, 0xb3, 0x9c, 0x89, 0x8d, 0x0e, 0x01, 0xe8, 0x3e, 0xc0, - 0x3c, 0x18, 0xde, 0x38, 0x3d, 0x19, 0xea, 0x7b, 0x98, 0xbc, 0x02, 0x10, 0x1c, 0x0b, 0x23, 0x8c, - 0x40, 0x4d, 0x9f, 0x4d, 0x5a, 0xd3, 0xc1, 0xc5, 0xc9, 0x7e, 0xf7, 0x5b, 0xfe, 0xb3, 0xd0, 0x46, - 0xaa, 0x5d, 0x72, 0xc7, 0x46, 0x3e, 0x87, 0xce, 0x5b, 0xad, 0x2b, 0x54, 0xb4, 0xe5, 0x6e, 0x1f, - 0x10, 0x19, 0x43, 0xef, 0x9a, 0x69, 0xfd, 0x41, 0x2a, 0x4e, 0x0f, 0x9c, 0xd2, 0xe0, 0xf8, 0xff, - 0x03, 0x18, 0xde, 0xcf, 0xc5, 0x56, 0x50, 0x57, 0x8b, 0xba, 0x82, 0xba, 0x5a, 0x10, 0x02, 0x07, - 0x05, 0xdb, 0xa0, 0x2b, 0x5f, 0x3f, 0x71, 0x6b, 0xf2, 0x02, 0x60, 0x25, 0xb6, 0x58, 0xa4, 0x4e, - 0xf1, 0x07, 0xf6, 0x1d, 0xf3, 0xce, 0xca, 0x67, 0x30, 0x58, 0xb2, 0x8d, 0xc8, 0x77, 0x5e, 0xf7, - 0xc7, 0x82, 0xa7, 0x6a, 0xc3, 0x46, 0x70, 0x9e, 0xa3, 0x37, 0xb4, 0xbd, 0xc1, 0x53, 0xce, 0x30, - 0x86, 0x5e, 0x21, 0xb2, 0x1b, 0xa7, 0x76, 0x7c, 0xd6, 0x35, 0x26, 0x2f, 0x81, 0x94, 0x0a, 0x97, - 0xa8, 0x14, 0xf2, 0xb4, 0xd2, 0xa8, 0x9c, 0xab, 0xeb, 0x5c, 0xc7, 0x8d, 0xf2, 0x5b, 0x10, 0x08, - 0x85, 0x6e, 0xa9, 0xe4, 0x52, 0xe4, 0x48, 0x7b, 0xce, 0x53, 0x43, 0xa7, 0x88, 0xcc, 0x54, 0x0a, - 0x69, 0x3f, 0x28, 0x1e, 0x5a, 0xe5, 0x03, 0x2e, 0xb4, 0x30, 0x48, 0xc1, 0x2b, 0x01, 0x92, 0x53, - 0x68, 0xe3, 0x86, 0x89, 0x9c, 0x0e, 0x1c, 0xef, 0x01, 0xf9, 0x0a, 0x86, 0x6e, 0x91, 0x6e, 0x51, - 0x89, 0xa5, 0x40, 0x4e, 0x9f, 0x4f, 0xa2, 0x69, 0x2f, 0x39, 0x74, 0xec, 0xef, 0x81, 0xb4, 0xdf, - 0x68, 0x85, 0x05, 0x47, 0x45, 0x0f, 0xfd, 0x37, 0xf2, 0x88, 0x7c, 0x01, 0xfd, 0x85, 0x50, 0x66, - 0xcd, 0x99, 0x41, 0x3a, 0xf4, 0xd5, 0x6c, 0x08, 0x5b, 0x8b, 0x5b, 0x59, 0xa0, 0x28, 0x96, 0x92, - 0x8e, 0x7c, 0x2d, 0x6a, 0x6c, 0x23, 0xe6, 0x32, 0x63, 0x39, 0xd2, 0x23, 0x1f, 0xd1, 0x23, 0xf2, - 0x25, 0x3c, 0x2f, 0xd7, 0xb2, 0xc0, 0xb4, 0xa8, 0x36, 0x0b, 0x54, 0xf4, 0xd8, 0xa9, 0x03, 0xc7, - 0xbd, 0x73, 0x14, 0xb9, 0x80, 0xcf, 0xee, 0x5a, 0xf6, 0xa9, 0x13, 0x97, 0xfa, 0xc9, 0x1d, 0x6f, - 0x73, 0x81, 0x17, 0x00, 0x55, 0x69, 0x93, 0xe2, 0x29, 0x33, 0xf4, 0x64, 0x12, 0x4d, 0xdb, 0x49, - 0x3f, 0x30, 0x97, 0xc6, 0x0d, 0x0d, 0xe7, 0x0a, 0xb5, 0xa6, 0xa7, 0x8f, 0x86, 0xc6, 0x0b, 0x49, - 0xed, 0x88, 0xff, 0xb5, 0x43, 0xe3, 0xd7, 0xb6, 0x00, 0x4b, 0xa9, 0x36, 0xcc, 0x18, 0xe4, 0xa1, - 0xf7, 0xf6, 0x84, 0xad, 0xae, 0x36, 0x0a, 0xd1, 0xa4, 0x75, 0x74, 0xdf, 0x8b, 0x87, 0x9e, 0xad, - 0x83, 0x8c, 0xa1, 0xe7, 0x6e, 0x2f, 0xcc, 0x2e, 0xb4, 0x64, 0x83, 0x6d, 0x9d, 0x14, 0xae, 0x84, - 0x2c, 0x42, 0x33, 0x06, 0x64, 0x1b, 0xb1, 0x94, 0xda, 0xb0, 0x3c, 0xcd, 0x24, 0x6f, 0x1a, 0xd1, - 0x53, 0x6f, 0x24, 0x77, 0x9d, 0xe0, 0xe6, 0x5a, 0xed, 0x42, 0x1f, 0xd6, 0x30, 0x9e, 0x41, 0xbf, - 0x99, 0xc4, 0x27, 0xc6, 0xe6, 0x08, 0x5a, 0xa2, 0xc9, 0xd4, 0x2e, 0xe3, 0x33, 0xe8, 0x5e, 0xaf, - 0x25, 0x16, 0xe2, 0xa3, 0xed, 0x22, 0xb3, 0xc6, 0x0d, 0x86, 0x0d, 0x1e, 0xc4, 0x7f, 0x47, 0x00, - 0x57, 0x68, 0x12, 0x7c, 0x5f, 0xa1, 0x36, 0x64, 0x06, 0xbd, 0x30, 0xdf, 0xbb, 0xf0, 0x84, 0x3c, - 0xf9, 0x08, 0x34, 0x26, 0x3b, 0xa9, 0x55, 0x25, 0x78, 0x3d, 0xa9, 0x76, 0x6d, 0x8b, 0xd2, 0x8c, - 0x48, 0x28, 0x4a, 0x8d, 0xad, 0x56, 0x3e, 0x78, 0x1a, 0x6a, 0xbc, 0xef, 0xf3, 0xf6, 0x9d, 0x3e, - 0x8f, 0x33, 0x68, 0xff, 0x52, 0xa1, 0xda, 0x91, 0x09, 0xf4, 0x4b, 0xb6, 0xc2, 0x54, 0x8b, 0x5b, - 0x7f, 0x89, 0xf6, 0xeb, 0xd6, 0x7f, 0x97, 0x91, 0x0d, 0xb0, 0xc2, 0xb9, 0xb8, 0x45, 0x12, 0x03, - 0x38, 0x87, 0x91, 0x37, 0x58, 0xf8, 0x94, 0xbc, 0xc5, 0x6d, 0xfc, 0xd5, 0xb2, 0xf6, 0x90, 0xf7, - 0x36, 0x5c, 0xc8, 0xcc, 0x83, 0xf8, 0x4f, 0xe8, 0xfa, 0xe7, 0x5c, 0x93, 0x6f, 0xa1, 0xab, 0xfc, - 0x92, 0x46, 0xee, 0x19, 0x3c, 0xda, 0x57, 0xc0, 0x7b, 0x92, 0xda, 0x40, 0xbe, 0x86, 0x51, 0x81, - 0x1f, 0x4d, 0xfa, 0xf0, 0xd4, 0xe4, 0xd0, 0xd2, 0xd7, 0xf5, 0xa1, 0x17, 0x7f, 0x45, 0x30, 0x0a, - 0x8f, 0xb5, 0x9e, 0xa3, 0xda, 0x8a, 0x0c, 0xc9, 0x37, 0xd0, 0x9a, 0xa3, 0x21, 0x8f, 0xa2, 0x8f, - 0x1f, 0x31, 0xe4, 0x25, 0xb4, 0xae, 0xd0, 0x90, 0xd3, 0xbd, 0xb0, 0xff, 0x64, 0x4f, 0xd8, 0xbf, - 0x87, 0xce, 0x1c, 0x99, 0xca, 0xd6, 0x64, 0xb4, 0xd7, 0x5c, 0x0d, 0xc7, 0xc7, 0x0f, 0xcd, 0xfa, - 0xf5, 0xe9, 0x1f, 0xa4, 0xbc, 0x59, 0xcd, 0xdc, 0xdf, 0xda, 0x6c, 0xfb, 0xc3, 0x4f, 0x6e, 0xb1, - 0xe8, 0xb8, 0x9f, 0x57, 0x9f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x02, 0xb9, 0x9c, 0x08, 0x23, 0x07, - 0x00, 0x00, + // 925 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xd7, 0x36, 0x75, 0x62, 0x3f, 0x3b, 0x0d, 0x79, 0xb5, 0x5a, 0x7b, 0x63, 0x53, 0x33, 0x15, + 0x21, 0x0a, 0x61, 0xb7, 0x32, 0xe5, 0x92, 0x8a, 0x43, 0xca, 0x9f, 0xc8, 0x12, 0x20, 0xb4, 0x2d, + 0x20, 0x95, 0x83, 0xb5, 0xc9, 0x4e, 0xcd, 0x10, 0x7b, 0x77, 0xeb, 0x19, 0x5b, 0x71, 0x2b, 0x24, + 0xc4, 0x95, 0x23, 0x1f, 0x8d, 0x1b, 0x27, 0x0e, 0x7c, 0x10, 0xb4, 0x33, 0xb3, 0xde, 0x59, 0xef, + 0xc6, 0x49, 0x85, 0xc4, 0xc9, 0x33, 0xef, 0xbd, 0x79, 0xbf, 0xf7, 0xf7, 0xe7, 0x85, 0x3b, 0xfe, + 0xf9, 0x79, 0x34, 0x0b, 0x05, 0x77, 0xe2, 0x69, 0x24, 0x22, 0xac, 0x72, 0x2a, 0x04, 0x0b, 0x47, + 0xdc, 0x7e, 0x30, 0x8a, 0xa2, 0xd1, 0x98, 0xba, 0x7e, 0xcc, 0xdc, 0x97, 0x8c, 0x8e, 0x83, 0xe1, + 0x19, 0xfd, 0xc9, 0x9f, 0xb3, 0x68, 0xaa, 0x4c, 0xed, 0x8e, 0x61, 0xe0, 0x87, 0x61, 0x24, 0x7c, + 0xc1, 0xa2, 0x50, 0x3b, 0xb2, 0xf7, 0xb4, 0x56, 0xde, 0xce, 0x66, 0x2f, 0x5d, 0x3a, 0x89, 0xc5, + 0x42, 0x2b, 0x7b, 0xab, 0x4a, 0x05, 0x30, 0xf1, 0xf9, 0x85, 0xb2, 0x20, 0x73, 0xb8, 0xfb, 0x15, + 0xe3, 0xe2, 0x44, 0x47, 0xe7, 0xd1, 0x57, 0x33, 0xca, 0x05, 0xf6, 0xa0, 0x16, 0xfb, 0x23, 0x3a, + 0xe4, 0xec, 0x35, 0x6d, 0x59, 0x3d, 0xeb, 0xa0, 0xf2, 0x74, 0xe3, 0xef, 0x13, 0xcb, 0xab, 0x26, + 0xd2, 0x67, 0xec, 0x35, 0x45, 0x02, 0x20, 0x2d, 0x44, 0x74, 0x41, 0xc3, 0xd6, 0xad, 0x9e, 0x75, + 0x50, 0x53, 0x26, 0xf2, 0xe1, 0xf3, 0x44, 0x8a, 0x6d, 0xa8, 0xbc, 0x9a, 0xd1, 0xe9, 0xa2, 0xb5, + 0x91, 0xa9, 0x95, 0x84, 0x4c, 0xa0, 0x99, 0xc7, 0xe5, 0x71, 0x14, 0x72, 0x8a, 0x1f, 0x41, 0x35, + 0xad, 0x54, 0xcb, 0xea, 0x6d, 0x1c, 0xd4, 0xfb, 0xbb, 0x4e, 0x5a, 0x2a, 0x47, 0x5b, 0x7b, 0x4b, + 0x13, 0xdc, 0x87, 0x9d, 0x90, 0x5e, 0x8a, 0xe1, 0x6a, 0x28, 0xde, 0x76, 0x22, 0xfe, 0x36, 0x8d, + 0x84, 0xf4, 0x61, 0xf7, 0x94, 0xa6, 0x68, 0x69, 0x92, 0x5d, 0x00, 0xed, 0x68, 0xc8, 0x02, 0x99, + 0x65, 0xcd, 0xab, 0x69, 0xc9, 0x20, 0x20, 0x67, 0xd0, 0xfc, 0x6c, 0x4a, 0x7d, 0x41, 0xdf, 0xea, + 0x19, 0x7e, 0x08, 0x5b, 0xfa, 0x22, 0x43, 0x29, 0x4d, 0x20, 0xb5, 0x20, 0xbf, 0x5a, 0xd0, 0xfc, + 0x2e, 0x0e, 0x8a, 0x20, 0x86, 0x17, 0xeb, 0x3a, 0x2f, 0xf8, 0x04, 0xea, 0x33, 0xe9, 0x44, 0x76, + 0x56, 0xc3, 0xda, 0x8e, 0x6a, 0xbe, 0x93, 0x36, 0xdf, 0xf9, 0x32, 0x69, 0xfe, 0xd7, 0x3e, 0xbf, + 0xf0, 0x40, 0x99, 0x27, 0x67, 0xf2, 0x09, 0x34, 0x3f, 0xa7, 0x63, 0xfa, 0x96, 0x69, 0x92, 0xbf, + 0x2c, 0xd8, 0xd2, 0x2f, 0xae, 0xab, 0xc8, 0x63, 0x00, 0x16, 0xd0, 0x50, 0x30, 0xc1, 0x28, 0x6f, + 0xdd, 0x92, 0x5d, 0x6d, 0x66, 0xe9, 0x0c, 0x96, 0x3a, 0xcf, 0xb0, 0x43, 0x1b, 0xaa, 0x33, 0x4e, + 0xa7, 0xa1, 0x3f, 0xa1, 0x6a, 0x7e, 0xbc, 0xe5, 0x1d, 0xdf, 0x83, 0x46, 0xc0, 0x78, 0x3c, 0xf6, + 0x17, 0x43, 0xa9, 0xbf, 0x2d, 0xf5, 0x75, 0x2d, 0xfb, 0x26, 0x31, 0x41, 0xb8, 0x3d, 0xf1, 0xd9, + 0xb8, 0x55, 0x91, 0x2a, 0x79, 0xc6, 0x0f, 0x60, 0x73, 0x34, 0x8d, 0x66, 0x31, 0x6f, 0x6d, 0xca, + 0x20, 0x76, 0xb2, 0x20, 0x4e, 0x13, 0xb9, 0xa7, 0xd5, 0x44, 0x00, 0x64, 0x51, 0x61, 0x0f, 0x1a, + 0x9c, 0x8d, 0xc2, 0x21, 0x0b, 0x87, 0x62, 0x11, 0x53, 0x9d, 0x20, 0x24, 0xb2, 0x41, 0xf8, 0x7c, + 0x11, 0x53, 0xbc, 0x07, 0x9b, 0x8c, 0xf3, 0x19, 0x9d, 0xea, 0xe9, 0xd3, 0x37, 0x3c, 0x02, 0x54, + 0xa7, 0xa1, 0xcf, 0x13, 0x73, 0x1a, 0x24, 0x05, 0x52, 0xd9, 0xbc, 0xa3, 0x34, 0x27, 0x5a, 0x31, + 0x08, 0x88, 0x80, 0xdd, 0x64, 0x27, 0x64, 0x28, 0xff, 0xdf, 0x26, 0x52, 0x40, 0x13, 0x55, 0xef, + 0x61, 0x56, 0x2a, 0x6b, 0x6d, 0xa9, 0x6e, 0xbc, 0x81, 0x47, 0xb0, 0x73, 0x4a, 0x15, 0x4a, 0x9a, + 0x5a, 0x1b, 0xaa, 0xd2, 0x49, 0x36, 0x34, 0x5b, 0xf2, 0x3e, 0x08, 0xc8, 0xf7, 0x80, 0x6a, 0xf7, + 0x6e, 0xf8, 0x00, 0xdf, 0x87, 0x8a, 0x3c, 0xea, 0xe1, 0x2f, 0x84, 0xab, 0xb4, 0xe4, 0x12, 0x50, + 0xad, 0x5b, 0xce, 0xef, 0xf2, 0xb1, 0xb5, 0xee, 0xf1, 0x7f, 0x5b, 0x33, 0x17, 0x50, 0xad, 0xd9, + 0x4d, 0x4b, 0x10, 0x41, 0x45, 0x9a, 0xae, 0xcb, 0xba, 0x03, 0x35, 0x79, 0x94, 0x4b, 0xa0, 0xca, + 0x9e, 0x09, 0x72, 0x5c, 0xba, 0x71, 0x2d, 0x97, 0xf6, 0x7f, 0xaf, 0xc2, 0x4e, 0xca, 0xc7, 0xcf, + 0xe8, 0x74, 0xce, 0xce, 0x29, 0x9e, 0x43, 0xc3, 0xa4, 0x69, 0xec, 0x66, 0x0e, 0x4a, 0xfe, 0x36, + 0xec, 0x77, 0xaf, 0x52, 0xab, 0xa9, 0x22, 0xcd, 0xdf, 0xfe, 0xfc, 0xe7, 0x8f, 0x5b, 0x77, 0xb0, + 0xe1, 0xce, 0x1f, 0xb9, 0x4b, 0x12, 0x0f, 0x00, 0x32, 0x72, 0xc6, 0x3d, 0xa3, 0xfa, 0xab, 0x94, + 0x6d, 0x17, 0x13, 0x20, 0xfb, 0xd2, 0x67, 0x0f, 0xf7, 0x4c, 0x9f, 0xee, 0x9b, 0x8c, 0x90, 0x3e, + 0x3d, 0xfc, 0xe5, 0xd8, 0x3a, 0x44, 0x1f, 0xb6, 0x73, 0x74, 0x8e, 0x46, 0xb0, 0x65, 0x3c, 0x5f, + 0x86, 0xd5, 0x95, 0x58, 0xf7, 0x49, 0x2e, 0xfe, 0xe3, 0x25, 0x0f, 0x5f, 0xc2, 0x76, 0x8e, 0xcc, + 0x4d, 0x88, 0x32, 0x96, 0x2f, 0x83, 0x78, 0x2c, 0x21, 0x9c, 0xfe, 0xc3, 0xd2, 0x74, 0x9c, 0x7c, + 0x5a, 0x4b, 0xe4, 0x31, 0x6c, 0xe7, 0x48, 0xdc, 0x44, 0x2e, 0x63, 0x77, 0xfb, 0x5e, 0x61, 0x6c, + 0xbf, 0x48, 0xbe, 0x1b, 0xc8, 0x43, 0x09, 0xdf, 0x3d, 0x5c, 0x57, 0x4d, 0xfc, 0x11, 0x20, 0xa3, + 0x0c, 0xb3, 0x61, 0x05, 0xfa, 0xb2, 0x3b, 0xe5, 0x4a, 0x3d, 0x0f, 0x28, 0xd1, 0x1a, 0x08, 0x09, + 0x9a, 0x26, 0x94, 0x17, 0x50, 0x4d, 0x89, 0x02, 0xdb, 0xb9, 0x59, 0x30, 0x37, 0xc7, 0x5e, 0x5d, + 0x52, 0x42, 0xa4, 0xaf, 0x0e, 0xde, 0xcf, 0x7c, 0xb9, 0x6f, 0xd2, 0xc5, 0xd1, 0x33, 0xf0, 0x03, + 0xd4, 0x0d, 0x5a, 0xc1, 0xce, 0xea, 0x04, 0xac, 0x47, 0x68, 0x4b, 0x84, 0xbb, 0xc4, 0x88, 0xf6, + 0x58, 0x53, 0xc3, 0xcf, 0x50, 0x37, 0x78, 0xc5, 0x74, 0x5c, 0xa4, 0x9b, 0xa2, 0xe3, 0x23, 0xe9, + 0x78, 0xbf, 0xdf, 0x2d, 0x84, 0xee, 0x98, 0x09, 0x68, 0xac, 0x00, 0xea, 0x06, 0x93, 0x98, 0x58, + 0x45, 0x82, 0xb9, 0xb2, 0xcf, 0x0f, 0x24, 0x64, 0xfb, 0xf0, 0xaa, 0x6a, 0x3d, 0x6d, 0xbe, 0xc0, + 0xf8, 0x62, 0xa4, 0xbe, 0x1c, 0xdd, 0xf9, 0xa3, 0x27, 0xea, 0xfd, 0xa6, 0xfc, 0xf9, 0xf8, 0xdf, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xf5, 0xb2, 0x46, 0xcf, 0x0a, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index a5a64a453b..1a3a400742 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -6,7 +6,9 @@ package proto import ( fmt "fmt" proto "github.com/golang/protobuf/proto" + empty "github.com/golang/protobuf/ptypes/empty" _ "google.golang.org/genproto/googleapis/api/annotations" + _ "google.golang.org/genproto/protobuf/field_mask" math "math" ) @@ -35,9 +37,26 @@ var _ server.Option // Client API for AccountsService service type AccountsService interface { - Set(ctx context.Context, in *Record, opts ...client.CallOption) (*Record, error) - Get(ctx context.Context, in *GetRequest, opts ...client.CallOption) (*Record, error) - Search(ctx context.Context, in *Query, opts ...client.CallOption) (*Records, error) + // Lists accounts + ListAccounts(ctx context.Context, in *ListAccountsRequest, opts ...client.CallOption) (*ListAccountsResponse, error) + // Gets an account + GetAccount(ctx context.Context, in *GetAccountRequest, opts ...client.CallOption) (*Account, error) + // Creates an account + CreateAccount(ctx context.Context, in *CreateAccountRequest, opts ...client.CallOption) (*Account, error) + // Updates an account + UpdateAccount(ctx context.Context, in *UpdateAccountRequest, opts ...client.CallOption) (*Account, error) + // Deletes an account + DeleteAccount(ctx context.Context, in *DeleteAccountRequest, opts ...client.CallOption) (*empty.Empty, error) + // Lists groups + ListGroups(ctx context.Context, in *ListGroupsRequest, opts ...client.CallOption) (*ListGroupsResponse, error) + // Gets an groups + GetGroup(ctx context.Context, in *GetGroupRequest, opts ...client.CallOption) (*Group, error) + // Creates a group + CreateGroup(ctx context.Context, in *CreateGroupRequest, opts ...client.CallOption) (*Group, error) + // Updates a group + UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...client.CallOption) (*Group, error) + // Deletes a group + DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...client.CallOption) (*empty.Empty, error) } type accountsService struct { @@ -52,9 +71,9 @@ func NewAccountsService(name string, c client.Client) AccountsService { } } -func (c *accountsService) Set(ctx context.Context, in *Record, opts ...client.CallOption) (*Record, error) { - req := c.c.NewRequest(c.name, "AccountsService.Set", in) - out := new(Record) +func (c *accountsService) ListAccounts(ctx context.Context, in *ListAccountsRequest, opts ...client.CallOption) (*ListAccountsResponse, error) { + req := c.c.NewRequest(c.name, "AccountsService.ListAccounts", in) + out := new(ListAccountsResponse) err := c.c.Call(ctx, req, out, opts...) if err != nil { return nil, err @@ -62,9 +81,9 @@ func (c *accountsService) Set(ctx context.Context, in *Record, opts ...client.Ca return out, nil } -func (c *accountsService) Get(ctx context.Context, in *GetRequest, opts ...client.CallOption) (*Record, error) { - req := c.c.NewRequest(c.name, "AccountsService.Get", in) - out := new(Record) +func (c *accountsService) GetAccount(ctx context.Context, in *GetAccountRequest, opts ...client.CallOption) (*Account, error) { + req := c.c.NewRequest(c.name, "AccountsService.GetAccount", in) + out := new(Account) err := c.c.Call(ctx, req, out, opts...) if err != nil { return nil, err @@ -72,9 +91,79 @@ func (c *accountsService) Get(ctx context.Context, in *GetRequest, opts ...clien return out, nil } -func (c *accountsService) Search(ctx context.Context, in *Query, opts ...client.CallOption) (*Records, error) { - req := c.c.NewRequest(c.name, "AccountsService.Search", in) - out := new(Records) +func (c *accountsService) CreateAccount(ctx context.Context, in *CreateAccountRequest, opts ...client.CallOption) (*Account, error) { + req := c.c.NewRequest(c.name, "AccountsService.CreateAccount", in) + out := new(Account) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *accountsService) UpdateAccount(ctx context.Context, in *UpdateAccountRequest, opts ...client.CallOption) (*Account, error) { + req := c.c.NewRequest(c.name, "AccountsService.UpdateAccount", in) + out := new(Account) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *accountsService) DeleteAccount(ctx context.Context, in *DeleteAccountRequest, opts ...client.CallOption) (*empty.Empty, error) { + req := c.c.NewRequest(c.name, "AccountsService.DeleteAccount", in) + out := new(empty.Empty) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *accountsService) ListGroups(ctx context.Context, in *ListGroupsRequest, opts ...client.CallOption) (*ListGroupsResponse, error) { + req := c.c.NewRequest(c.name, "AccountsService.ListGroups", in) + out := new(ListGroupsResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *accountsService) GetGroup(ctx context.Context, in *GetGroupRequest, opts ...client.CallOption) (*Group, error) { + req := c.c.NewRequest(c.name, "AccountsService.GetGroup", in) + out := new(Group) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *accountsService) CreateGroup(ctx context.Context, in *CreateGroupRequest, opts ...client.CallOption) (*Group, error) { + req := c.c.NewRequest(c.name, "AccountsService.CreateGroup", in) + out := new(Group) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *accountsService) UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...client.CallOption) (*Group, error) { + req := c.c.NewRequest(c.name, "AccountsService.UpdateGroup", in) + out := new(Group) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *accountsService) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...client.CallOption) (*empty.Empty, error) { + req := c.c.NewRequest(c.name, "AccountsService.DeleteGroup", in) + out := new(empty.Empty) err := c.c.Call(ctx, req, out, opts...) if err != nil { return nil, err @@ -85,16 +174,40 @@ func (c *accountsService) Search(ctx context.Context, in *Query, opts ...client. // Server API for AccountsService service type AccountsServiceHandler interface { - Set(context.Context, *Record, *Record) error - Get(context.Context, *GetRequest, *Record) error - Search(context.Context, *Query, *Records) error + // Lists accounts + ListAccounts(context.Context, *ListAccountsRequest, *ListAccountsResponse) error + // Gets an account + GetAccount(context.Context, *GetAccountRequest, *Account) error + // Creates an account + CreateAccount(context.Context, *CreateAccountRequest, *Account) error + // Updates an account + UpdateAccount(context.Context, *UpdateAccountRequest, *Account) error + // Deletes an account + DeleteAccount(context.Context, *DeleteAccountRequest, *empty.Empty) error + // Lists groups + ListGroups(context.Context, *ListGroupsRequest, *ListGroupsResponse) error + // Gets an groups + GetGroup(context.Context, *GetGroupRequest, *Group) error + // Creates a group + CreateGroup(context.Context, *CreateGroupRequest, *Group) error + // Updates a group + UpdateGroup(context.Context, *UpdateGroupRequest, *Group) error + // Deletes a group + DeleteGroup(context.Context, *DeleteGroupRequest, *empty.Empty) error } func RegisterAccountsServiceHandler(s server.Server, hdlr AccountsServiceHandler, opts ...server.HandlerOption) error { type accountsService interface { - Set(ctx context.Context, in *Record, out *Record) error - Get(ctx context.Context, in *GetRequest, out *Record) error - Search(ctx context.Context, in *Query, out *Records) error + ListAccounts(ctx context.Context, in *ListAccountsRequest, out *ListAccountsResponse) error + GetAccount(ctx context.Context, in *GetAccountRequest, out *Account) error + CreateAccount(ctx context.Context, in *CreateAccountRequest, out *Account) error + UpdateAccount(ctx context.Context, in *UpdateAccountRequest, out *Account) error + DeleteAccount(ctx context.Context, in *DeleteAccountRequest, out *empty.Empty) error + ListGroups(ctx context.Context, in *ListGroupsRequest, out *ListGroupsResponse) error + GetGroup(ctx context.Context, in *GetGroupRequest, out *Group) error + CreateGroup(ctx context.Context, in *CreateGroupRequest, out *Group) error + UpdateGroup(ctx context.Context, in *UpdateGroupRequest, out *Group) error + DeleteGroup(ctx context.Context, in *DeleteGroupRequest, out *empty.Empty) error } type AccountsService struct { accountsService @@ -107,14 +220,42 @@ type accountsServiceHandler struct { AccountsServiceHandler } -func (h *accountsServiceHandler) Set(ctx context.Context, in *Record, out *Record) error { - return h.AccountsServiceHandler.Set(ctx, in, out) +func (h *accountsServiceHandler) ListAccounts(ctx context.Context, in *ListAccountsRequest, out *ListAccountsResponse) error { + return h.AccountsServiceHandler.ListAccounts(ctx, in, out) } -func (h *accountsServiceHandler) Get(ctx context.Context, in *GetRequest, out *Record) error { - return h.AccountsServiceHandler.Get(ctx, in, out) +func (h *accountsServiceHandler) GetAccount(ctx context.Context, in *GetAccountRequest, out *Account) error { + return h.AccountsServiceHandler.GetAccount(ctx, in, out) } -func (h *accountsServiceHandler) Search(ctx context.Context, in *Query, out *Records) error { - return h.AccountsServiceHandler.Search(ctx, in, out) +func (h *accountsServiceHandler) CreateAccount(ctx context.Context, in *CreateAccountRequest, out *Account) error { + return h.AccountsServiceHandler.CreateAccount(ctx, in, out) +} + +func (h *accountsServiceHandler) UpdateAccount(ctx context.Context, in *UpdateAccountRequest, out *Account) error { + return h.AccountsServiceHandler.UpdateAccount(ctx, in, out) +} + +func (h *accountsServiceHandler) DeleteAccount(ctx context.Context, in *DeleteAccountRequest, out *empty.Empty) error { + return h.AccountsServiceHandler.DeleteAccount(ctx, in, out) +} + +func (h *accountsServiceHandler) ListGroups(ctx context.Context, in *ListGroupsRequest, out *ListGroupsResponse) error { + return h.AccountsServiceHandler.ListGroups(ctx, in, out) +} + +func (h *accountsServiceHandler) GetGroup(ctx context.Context, in *GetGroupRequest, out *Group) error { + return h.AccountsServiceHandler.GetGroup(ctx, in, out) +} + +func (h *accountsServiceHandler) CreateGroup(ctx context.Context, in *CreateGroupRequest, out *Group) error { + return h.AccountsServiceHandler.CreateGroup(ctx, in, out) +} + +func (h *accountsServiceHandler) UpdateGroup(ctx context.Context, in *UpdateGroupRequest, out *Group) error { + return h.AccountsServiceHandler.UpdateGroup(ctx, in, out) +} + +func (h *accountsServiceHandler) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, out *empty.Empty) error { + return h.AccountsServiceHandler.DeleteGroup(ctx, in, out) } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 1bc78f5274..c3edda72fe 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -5,125 +5,255 @@ option go_package = "pkg/proto/v0;proto"; package settings; import "google/api/field_behavior.proto"; +import "google/api/annotations.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +// Follow recommended Methods for rpc APIs https://cloud.google.com/apis/design/resources?hl=de#methods +// https://cloud.google.com/apis/design/standard_methods?hl=de#list +// https://cloud.google.com/apis/design/naming_convention?hl=de service AccountsService { - rpc Set(Record) returns (Record); - rpc Get(GetRequest) returns (Record); - rpc Search(Query) returns (Records); + // Lists accounts + rpc ListAccounts(ListAccountsRequest) returns (ListAccountsResponse) { + // List method maps to HTTP GET + option (google.api.http) = { + get: "/v0/accounts" + }; + } + // Gets an account + rpc GetAccount(GetAccountRequest) returns (Account) { + option (google.api.http) = { + get: "/v0/accounts/{account_id=*}" + body: "*" + }; + } + // Creates an account + rpc CreateAccount(CreateAccountRequest) returns (Account) { + // Create maps to HTTP POST. URL path as the collection name. + // HTTP request body contains the resource + option (google.api.http) = { + post: "/v0/accounts" + body: "account" + }; + } + // Updates an account + rpc UpdateAccount(UpdateAccountRequest) returns (Account) { + // Update maps to HTTP PATCH. Resource name is mapped to a URL path. + // Resource is contained in the HTTP request body + option (google.api.http) = { + patch: "/v0/accounts/{account.account_id=*}" + body: "account" + }; + }; + // Deletes an account + rpc DeleteAccount(DeleteAccountRequest) returns (google.protobuf.Empty) { + // Delete maps to HTTP DELETE. Resource name maps to the URL path. + // There is no request body + option (google.api.http) = { + delete: "/v0/accounts/{account_id=*}" + }; + } + + // Lists groups + rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) { + // List method maps to HTTP GET + option (google.api.http) = { + get: "/v0/groups" + }; + } + // Gets an groups + rpc GetGroup(GetGroupRequest) returns (Group) { + option (google.api.http) = { + get: "/v0/groups/{group_id=*}" + body: "*" + }; + } + // Creates a group + rpc CreateGroup(CreateGroupRequest) returns (Group) { + // Create maps to HTTP POST. URL path as the collection name. + // HTTP request body contains the resource + option (google.api.http) = { + post: "/v0/groups" + body: "group" + }; + } + // Updates a group + rpc UpdateGroup(UpdateGroupRequest) returns (Group) { + // Update maps to HTTP PATCH. Resource name is mapped to a URL path. + // Resource is contained in the HTTP request body + option (google.api.http) = { + patch: "/v0/groups/{group.group_id=*}" + body: "group" + }; + }; + // Deletes a group + rpc DeleteGroup(DeleteGroupRequest) returns (google.protobuf.Empty) { + // Delete maps to HTTP DELETE. Resource name maps to the URL path. + // There is no request body + option (google.api.http) = { + delete: "/v0/groups/{group_id=*}" + }; + } } -message Record { - string key = 1; - Payload payload = 2; -} - -message Payload { - Account account = 1; -} - -message Account { - StandardClaims standard_claims = 1; - repeated IdHistory identities = 2; // keep track of every identity of a given user - string Issuer = 3; - string Password = 4; -} - -// OIDC standard claims https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims -message StandardClaims { - string sub = 1; - string name = 2; - string given_name = 3; - string family_name = 4; - string middle_name = 5; - string nickname = 6; - string preferred_username = 7; - string profile = 8; - string picture = 9; - string website = 10; - string email = 11; - bool email_verified = 12; - string gender = 13; - string birthdate = 14; - string zoneinfo = 15; - string locale = 16; - string phone_number = 17; - bool phone_number_verified = 18; - int32 updated_at = 19; - Address address = 20; -} - -message Address { - string formatted = 1; - string street_address = 2; - string locality = 3; - string region = 4; - string postal_code = 5; - string country = 6; -} - -message IdHistory { - string sub = 1; - string iss = 2; -} - -message Phoenix { - string theme = 1; -} - -// Used to fetch exactly one user. The conditions are optional. If set, all have to be true. -message GetRequest { - // Used to look up user by the oidc sub and iss - IdHistory identity = 1; - - // Used to look up the user by our internal uuid - string uuid = 2; - - // Used to authenticate users using basic auth - string username = 3; - string password = 4; - - // Used as a fallback mechanism in case sub or iss changed for an existing user - string email = 5; -} - -message Query { - // Optional. The maximum number of accounts to return in the response. +message ListAccountsRequest { + // Optional. The maximum number of accounts to return in the response int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL]; // Optional. A pagination token returned from a previous call to `Get` - // that indicates from where search should continue. + // that indicates from where search should continue string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; - // Search criteria used to select the Accounts to return. + // Optional. Search criteria used to select the accounts to return. // If no search criteria is specified then all accounts will be - // returned. + // returned // - // Query expressions can be used to restrict results based upon the standard claims, - // iss, and uuid where the operators `=`, `NOT`, `AND` and `OR` + // TODO update query language + // Query expressions can be used to restrict results based upon + // the account properties where the operators `=`, `NOT`, `AND` and `OR` // can be used along with the suffix wildcard symbol `*`. // - // The *_name claims in a query expression should use escaped quotes + // The string properties in a query expression should use escaped quotes // for values that include whitespace to prevent unexpected behavior. // // Some example queries are: // - // * Query `name=Th*` returns accounts whose name claim - // starts with "Th". + // * Query `display_name=Th*` returns accounts whose display_name + // starts with "Th" // * Query `email=foo@example.com` returns accounts with - // `email` set to `foo@example.com`. - // * Query `address/country=de` returns accounts that have - // an address in Germany - // * Query `name=\\"Test String\\"` returns accounts with - // display names that include both "Test" and "String". - string query = 3; + // `email` set to `foo@example.com` + // * Query `display_name=\\"Test String\\"` returns accounts with + // display names that include both "Test" and "String" + string query = 3 [(google.api.field_behavior) = OPTIONAL]; } -message Records { - // A possibly paginated accounts search result for - // the specified query. - repeated Record records = 1; +message ListAccountsResponse { + // The field name should match the noun "accounts" in the method name. There + // will be a maximum number of items returned based on the page_size field + // in the request + repeated Account accounts = 1; - // A pagination token returned from a previous call to `Search` - // that indicates from where searching should continue. + // Token to retrieve the next page of results, or empty if there are no + // more results in the list string next_page_token = 2; } + +message GetAccountRequest { + string account_id = 1; +} + +message CreateAccountRequest { + // The account id to use for this account + string account_id = 1; + + // The account resource to create + Account account = 2; +} + +message UpdateAccountRequest { + // The account resource which replaces the resource on the server + Account account = 1; + + // The update mask applies to the resource. For the `FieldMask` definition, + // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask + google.protobuf.FieldMask update_mask = 2; + } + +message DeleteAccountRequest { + string account_id = 1; +} + +message Account { + // the non reassignable and stable account_id of an account + string account_id = 1; + + // The identities that are mapped to this account + repeated Identities identities = 2; // keep track of every identity of a given user + + string username = 3; + string display_name = 4; + string mail = 5; + // TODO avatar needed? because the standard claims contain it or our own avatar service will use the accountid or email to look up the avatar + + repeated Group groups = 6; +} + +message Identities { + string sign_in_type = 1; + string issuer = 2; + string issuer_assigned_id = 3; +} + +message ListGroupsRequest { + // Optional. The maximum number of groups to return in the response + int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A pagination token returned from a previous call to `Get` + // that indicates from where search should continue + string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Search criteria used to select the groups to return. + // If no search criteria is specified then all groups will be + // returned + // + // TODO update query language + // Query expressions can be used to restrict results based upon + // the account properties where the operators `=`, `NOT`, `AND` and `OR` + // can be used along with the suffix wildcard symbol `*`. + // + // The string properties in a query expression should use escaped quotes + // for values that include whitespace to prevent unexpected behavior. + // + // Some example queries are: + // + // * Query `display_name=Th*` returns accounts whose display_name + // starts with "Th" + // * Query `display_name=\\"Test String\\"` returns groups with + // display names that include both "Test" and "String" + string query = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +message ListGroupsResponse { + // The field name should match the noun "group" in the method name. There + // will be a maximum number of items returned based on the page_size field + // in the request + repeated Group groups = 1; + + // Token to retrieve the next page of results, or empty if there are no + // more results in the list + string next_page_token = 2; +} + +message GetGroupRequest { + string group_id = 1; +} + +message CreateGroupRequest { + // The group id to use for this group + string group_id = 1; + + // The account resource to create + Group group = 2; +} + +message UpdateGroupRequest { + // The group resource which replaces the resource on the server + Group group = 1; + + // The update mask applies to the resource. For the `FieldMask` definition, + // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask + google.protobuf.FieldMask update_mask = 2; + } + +message DeleteGroupRequest { + string group_id = 1; +} + +message Group { + // the non reassignable and stable group_id of a group + string group_id = 1; + + string groupname = 2; + + repeated Account accounts = 3; +} \ No newline at end of file diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 946c5827cc..6f7698df1f 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -2,14 +2,18 @@ package service import ( "context" + "crypto/tls" "errors" + "fmt" - "github.com/owncloud/ocis-accounts/pkg/account" + "github.com/golang/protobuf/ptypes/empty" + mclient "github.com/micro/go-micro/v2/client" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" olog "github.com/owncloud/ocis-pkg/v2/log" - mclient "github.com/micro/go-micro/v2/client" settings "github.com/owncloud/ocis-settings/pkg/proto/v0" + "github.com/rs/zerolog/log" + "gopkg.in/ldap.v2" ) // New returns a new instance of Service @@ -18,113 +22,109 @@ func New(cfg *config.Config) Service { Config: cfg, } - if newReg, ok := account.Registry[cfg.Manager]; ok { - s.Manager = newReg(cfg) - } else { - l := olog.NewLogger(olog.Name("ocis-accounts")) - l.Fatal().Msgf("unknown manager: %v", cfg.Manager) - } - return s } // Service implements the AccountsServiceHandler interface type Service struct { - Config *config.Config - Manager account.Manager + Config *config.Config } -// Set implements the AccountsServiceHandler interface -// This implementation replaces the existent data with the requested. It does not calculate diff -func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) error { - r, err := s.Manager.Write(req) +// ListAccounts implements the AccountsServiceHandler interface +func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, res *proto.ListAccountsResponse) error { + + l, err := ldap.DialTLS("tcp", fmt.Sprintf("%s:%d", s.Config.LDAP.Hostname, s.Config.LDAP.Port), &tls.Config{InsecureSkipVerify: true}) + if err != nil { + return err + } + defer l.Close() + + // First bind with a read only user + err = l.Bind(s.Config.LDAP.BindDN, s.Config.LDAP.BindPassword) if err != nil { return err } - res.Payload = r.GetPayload() - return nil -} + // TODO parse query using https://github.com/araddon/qlbridge + // TODO combine the parsed query with a query filter from the config, eg. fmt.Sprintf(s.Config.LDAP.UserFilter, clientID) + filter := "(&)" // see Absolute True and False Filters in https://tools.ietf.org/html/rfc4526#section-2 -// Get implements the AccountsServiceHandler interface -func (s Service) Get(c context.Context, req *proto.GetRequest, res *proto.Record) (err error) { - // TODO implement other GetRequest properties: Identity, username&password, email - var r, ruuid, rname, rmail *proto.Record - if req.GetIdentity() != nil { - r, err = s.Manager.ReadByIdentity(req.GetIdentity()) - if err != nil { - return err - } - } - if req.GetUuid() != "" { - ruuid, err = s.Manager.Read(req.GetUuid()) - if err != nil { - return err - } + // Search for the given clientID + searchRequest := ldap.NewSearchRequest( + s.Config.LDAP.BaseDN, + ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, + filter, + []string{"dn", s.Config.LDAP.Schema.AccountID, s.Config.LDAP.Schema.Username, s.Config.LDAP.Schema.DisplayName, s.Config.LDAP.Schema.Mail, s.Config.LDAP.Schema.Groups}, // TODO Groups, Identities? + nil, + ) - if r == nil { - r = ruuid - } else if r.Key != ruuid.Key { - r = nil - return errors.New("uuid mismatch") - } - } - if req.GetUsername() != "" { - rname, err = s.Manager.ReadByUsername(req.GetUsername()) - if err != nil { - return err - } - if r == nil { - r = rname - } else if r.Key != rname.Key { - r = nil - return errors.New("username mismatch") - } - } - if req.GetEmail() != "" { - rmail, err = s.Manager.ReadByEmail(req.GetEmail()) - if err != nil { - return err - } - if r == nil { - r = rmail - } else if r.Key != rmail.Key { - r = nil - return errors.New("email mismatch") - } - } - - if r != nil { - // TODO store only salted hash - if req.GetPassword() != "" { - if r.Payload.Account.Password != req.GetPassword() { - return errors.New("wrong password") - } - } - res.Key = r.Key - res.Payload = r.GetPayload() - // password never leaves - res.Payload.Account.Password = "" - return nil - } - - return errors.New("at least one request param must be set") -} - -// Search implements the AccountsServiceHandler interface -func (s Service) Search(ctx context.Context, in *proto.Query, res *proto.Records) error { - r, err := s.Manager.List() + sr, err := l.Search(searchRequest) if err != nil { return err } - // TODO implement filter - // TODO implement pagination + log.Debug().Interface("entries", sr.Entries).Msg("entries") + + res.Accounts = make([]*proto.Account, 0) + for i := range sr.Entries { + res.Accounts = append(res.Accounts, &proto.Account{ + AccountId: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.AccountID), + // TODO identities + Username: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.Username), + DisplayName: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.DisplayName), + Mail: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.Mail), + //Groups: sr.Entries[i].GetAttributeValues(s.Config.LDAP.Schema.Groups), + }) + } - res.Records = r return nil } +// GetAccount implements the AccountsServiceHandler interface +func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res *proto.Account) (err error) { + return errors.New("not implemented") +} + +// CreateAccount implements the AccountsServiceHandler interface +func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountRequest, res *proto.Account) (err error) { + return errors.New("not implemented") +} + +// UpdateAccount implements the AccountsServiceHandler interface +func (s Service) UpdateAccount(c context.Context, req *proto.UpdateAccountRequest, res *proto.Account) (err error) { + return errors.New("not implemented") +} + +// DeleteAccount implements the AccountsServiceHandler interface +func (s Service) DeleteAccount(c context.Context, req *proto.DeleteAccountRequest, res *empty.Empty) (err error) { + return errors.New("not implemented") +} + +// ListGroups implements the AccountsServiceHandler interface +func (s Service) ListGroups(c context.Context, req *proto.ListGroupsRequest, res *proto.ListGroupsResponse) (err error) { + return errors.New("not implemented") +} + +// GetGroup implements the AccountsServiceHandler interface +func (s Service) GetGroup(c context.Context, req *proto.GetGroupRequest, res *proto.Group) (err error) { + return errors.New("not implemented") +} + +// CreateGroup implements the AccountsServiceHandler interface +func (s Service) CreateGroup(c context.Context, req *proto.CreateGroupRequest, res *proto.Group) (err error) { + return errors.New("not implemented") +} + +// UpdateGroup implements the AccountsServiceHandler interface +func (s Service) UpdateGroup(c context.Context, req *proto.UpdateGroupRequest, res *proto.Group) (err error) { + return errors.New("not implemented") +} + +// DeleteGroup implements the AccountsServiceHandler interface +func (s Service) DeleteGroup(c context.Context, req *proto.DeleteGroupRequest, res *empty.Empty) (err error) { + return errors.New("not implemented") +} + // RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. func RegisterSettingsBundles(l *olog.Logger) { // TODO this won't work with a registry other than mdns. Look into Micro's client initialization. diff --git a/pkg/store/filesystem/option.go b/pkg/store/filesystem/option.go deleted file mode 100644 index 63ffb325af..0000000000 --- a/pkg/store/filesystem/option.go +++ /dev/null @@ -1,27 +0,0 @@ -package store - -// Options are the available configurable options on initialization. -type Options struct { - UUID string -} - -// Option captures configuration behavior. -type Option func(*Options) - -// NewOptions build a new Options struct. -func NewOptions(o ...Option) *Options { - opts := &Options{} - - for _, f := range o { - f(opts) - } - - return opts -} - -// WithUUID sets UUID option. -func WithUUID(uuid string) Option { - return func(o *Options) { - o.UUID = uuid - } -} diff --git a/pkg/store/filesystem/store.go b/pkg/store/filesystem/store.go deleted file mode 100644 index 6677638f16..0000000000 --- a/pkg/store/filesystem/store.go +++ /dev/null @@ -1,193 +0,0 @@ -// Package store implements the go-micro store interface -package store - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "os" - "path" - "path/filepath" - "strings" - - // gproto "github.com/golang/protobuf/proto" - "github.com/owncloud/ocis-accounts/pkg/account" - "github.com/owncloud/ocis-accounts/pkg/config" - "github.com/owncloud/ocis-accounts/pkg/proto/v0" - olog "github.com/owncloud/ocis-pkg/v2/log" -) - -var ( - // StoreName is the default name for the accounts store - StoreName = "ocis-store" - managerName = "filesystem" - uuidSpace = "uuid" - usernameSpace = "username" - emailSpace = "email" - identitySpace = "identity" - emptyKeyError = "key cannot be empty" -) - -// StoreName is the default name for the store container - -// Store interacts with the filesystem to manage account information -type Store struct { - mountPath string - Logger olog.Logger -} - -// New creates a new store -func New(cfg *config.Config) account.Manager { - s := Store{ - Logger: olog.NewLogger(olog.Name(cfg.Server.Name)), - } - - dest := filepath.Join(cfg.MountPath, StoreName) - if _, err := os.Stat(dest); err != nil { - s.Logger.Info().Msgf("creating container on %v", dest) - err := os.MkdirAll(dest, 0700) - if err != nil { - s.Logger.Err(err).Msgf("providing container on %v", dest) - } - } - - s.mountPath = dest - return &s -} - -// List returns all the identities in the mountPath folder -func (s Store) List() ([]*proto.Record, error) { - records := []*proto.Record{} - identities, err := ioutil.ReadDir(path.Join(s.mountPath, uuidSpace)) - if err != nil { - s.Logger.Err(err).Msgf("error reading %v", s.mountPath) - return nil, err - } - - s.Logger.Info().Msg("listing identities") - for _, v := range identities { - records = append(records, &proto.Record{ - Key: v.Name(), - }) - } - - return records, nil -} - -func (s Store) readSpace(space string, subspace string, key string) (*proto.Record, error) { - contents, err := ioutil.ReadFile(path.Join(s.mountPath, space, subspace, key)) - if err != nil { - s.Logger.Err(err).Str("space", space).Str("subspace", subspace).Str("key", key).Msg("error reading record") - return nil, err - } - - rec := NewRecord( - WithUUID(key), - ) - - if err = json.Unmarshal(contents, rec); err != nil { - s.Logger.Err(err).Msg("error unmarshaling record") - return nil, err - } - - return rec, nil -} - -// Read implements the store interface. This implementation only reads by id. -func (s Store) Read(uuid string) (*proto.Record, error) { - return s.readSpace(uuidSpace, "", uuid) -} - -// ReadByUsername implements the store interface. This implementation only reads by username. -func (s Store) ReadByUsername(username string) (*proto.Record, error) { - return s.readSpace(usernameSpace, "", username) -} - -// ReadByEmail implements the store interface. This implementation only reads by email. -func (s Store) ReadByEmail(email string) (*proto.Record, error) { - i := strings.LastIndex(email, "@") - if i < 0 { - // no domain part - return s.readSpace(emailSpace, "local", email) - } - - return s.readSpace(emailSpace, email[:i], email[i:]) -} - -// ReadByIdentity implements the store interface. This implementation only reads by iss & sub. -func (s Store) ReadByIdentity(identity *proto.IdHistory) (*proto.Record, error) { - if identity.Iss == "" { - s.Logger.Error().Msg("iss cannot be empty") - return nil, fmt.Errorf(emptyKeyError) - } - return s.readSpace(identitySpace, identity.Iss, identity.Sub) -} - -// Write implements the store interface -func (s Store) Write(rec *proto.Record) (*proto.Record, error) { - if len(rec.Key) < 1 { - s.Logger.Error().Msg("key cannot be empty") - return nil, fmt.Errorf(emptyKeyError) - } - - path := filepath.Join(s.mountPath, uuidSpace, rec.Key) - - contents, err := json.Marshal(rec) - if err != nil { - s.Logger.Err(err).Msg("record could not be marshaled") - return nil, err - } - - if err := ioutil.WriteFile(path, contents, 0644); err != nil { - return nil, err - } - s.Logger.Info().Int("bytes", len(contents)).Str("path", path).Msg("wrote account") - - // write symlinks for other lookups - // use hardlinks? - // TODO what if target already exists? use dirs with multiple symlinks to uuid? - // TODO what if username or email changes? use uuid folder with a file per property? srsly ... we should use a proper storage for this - if rec.Payload != nil { - if rec.Payload.Account != nil { - if rec.Payload.Account.StandardClaims != nil { - if rec.Payload.Account.StandardClaims.PreferredUsername != "" { - p := filepath.Join(s.mountPath, usernameSpace, rec.Payload.Account.StandardClaims.PreferredUsername) - os.MkdirAll(filepath.Dir(p), 0700) - os.Symlink(path, p) - } else { - s.Logger.Warn().Str("uuid", rec.Key).Msg("has no preferred username in standard claims") - } - if rec.Payload.Account.StandardClaims.Email != "" { - p := filepath.Join(s.mountPath, emailSpace, rec.Payload.Account.StandardClaims.Email) - os.MkdirAll(filepath.Dir(p), 0700) - os.Symlink(path, p) - } else { - s.Logger.Warn().Str("uuid", rec.Key).Msg("has no email in standard claims") - } - if rec.Payload.Account.Issuer != "" { - if rec.Payload.Account.StandardClaims.Sub != "" { - p := filepath.Join(s.mountPath, identitySpace, rec.Payload.Account.Issuer, rec.Payload.Account.StandardClaims.Sub) - os.MkdirAll(filepath.Dir(p), 0700) - os.Symlink(path, p) - } else { - s.Logger.Warn().Str("uuid", rec.Key).Msg("has no sub in standard claims") - } - } else { - s.Logger.Warn().Str("uuid", rec.Key).Msg("has no issuer in account") - } - } else { - s.Logger.Warn().Str("uuid", rec.Key).Msg("has no standard claims in account") - } - } else { - s.Logger.Warn().Str("uuid", rec.Key).Msg("has no account in payload") - } - } else { - s.Logger.Warn().Str("uuid", rec.Key).Msg("has no payload") - } - - return rec, nil -} - -func init() { - account.Registry[managerName] = New -} diff --git a/pkg/store/registry.go b/pkg/store/registry.go deleted file mode 100644 index c85ddcedde..0000000000 --- a/pkg/store/registry.go +++ /dev/null @@ -1,6 +0,0 @@ -package store - -import ( - // init filesystem store - _ "github.com/owncloud/ocis-accounts/pkg/store/filesystem" -) diff --git a/third_party/google/api/annotations.proto b/third_party/google/api/annotations.proto new file mode 100644 index 0000000000..18dcf20990 --- /dev/null +++ b/third_party/google/api/annotations.proto @@ -0,0 +1,31 @@ +// Copyright (c) 2015, Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/http.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "AnnotationsProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.MethodOptions { + // See `HttpRule`. + HttpRule http = 72295728; +} \ No newline at end of file diff --git a/third_party/google/api/http.proto b/third_party/google/api/http.proto new file mode 100644 index 0000000000..a43cff771f --- /dev/null +++ b/third_party/google/api/http.proto @@ -0,0 +1,376 @@ +// Copyright 2019 Google LLC. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// Defines the HTTP configuration for an API service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; + + // When set to true, URL path parameters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; +} + +// # gRPC Transcoding +// +// gRPC Transcoding is a feature for mapping between a gRPC method and one or +// more HTTP REST endpoints. It allows developers to build a single API service +// that supports both gRPC APIs and REST APIs. Many systems, including [Google +// APIs](https://github.com/googleapis/googleapis), +// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC +// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), +// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature +// and use it for large scale production services. +// +// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies +// how different portions of the gRPC request message are mapped to the URL +// path, URL query parameters, and HTTP request body. It also controls how the +// gRPC response message is mapped to the HTTP response body. `HttpRule` is +// typically specified as an `google.api.http` annotation on the gRPC method. +// +// Each mapping specifies a URL path template and an HTTP method. The path +// template may refer to one or more fields in the gRPC request message, as long +// as each field is a non-repeated field with a primitive (non-message) type. +// The path template controls how fields of the request message are mapped to +// the URL path. +// +// Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/{name=messages/*}" +// }; +// } +// } +// message GetMessageRequest { +// string name = 1; // Mapped to URL path. +// } +// message Message { +// string text = 1; // The resource content. +// } +// +// This enables an HTTP REST to gRPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` +// +// Any fields in the request message which are not bound by the path template +// automatically become HTTP query parameters if there is no HTTP request body. +// For example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get:"/v1/messages/{message_id}" +// }; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // Mapped to URL path. +// int64 revision = 2; // Mapped to URL query parameter `revision`. +// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. +// } +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | +// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: +// "foo"))` +// +// Note that fields which are mapped to URL query parameters must have a +// primitive type or a repeated primitive type or a non-repeated message type. +// In the case of a repeated type, the parameter can be repeated in the URL +// as `...?param=A¶m=B`. In the case of a message type, each field of the +// message is mapped to a separate parameter, such as +// `...?foo.a=A&foo.b=B&foo.c=C`. +// +// For HTTP methods that allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice when +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// This enables the following two alternative HTTP JSON to RPC mappings: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: +// "123456")` +// +// ## Rules for HTTP mapping +// +// 1. Leaf request fields (recursive expansion nested messages in the request +// message) are classified into three categories: +// - Fields referred by the path template. They are passed via the URL path. +// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They are passed via the HTTP +// request body. +// - All other fields are passed via the URL query parameters, and the +// parameter name is the field path in the request message. A repeated +// field can be represented as multiple query parameters under the same +// name. +// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL query parameter, all fields +// are passed via URL path and HTTP request body. +// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP request body, all +// fields are passed via URL path and URL query parameters. +// +// ### Path template syntax +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single URL path segment. The syntax `**` matches +// zero or more URL path segments, which must be the last part of the URL path +// except the `Verb`. +// +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` +// contains any reserved character, such characters should be percent-encoded +// before the matching. +// +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path on the client +// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The +// server side does the reverse decoding. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{var}`. +// +// If a variable contains multiple path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path on the +// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. +// The server side does the reverse decoding, except "%2F" and "%2f" are left +// unchanged. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{+var}`. +// +// ## Using gRPC API Service Configuration +// +// gRPC API Service Configuration (service config) is a configuration language +// for configuring a gRPC service to become a user-facing product. The +// service config is simply the YAML representation of the `google.api.Service` +// proto message. +// +// As an alternative to annotating your proto file, you can configure gRPC +// transcoding in your service config YAML files. You do this by specifying a +// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same +// effect as the proto annotation. This can be particularly useful if you +// have a proto that is reused in multiple services. Note that any transcoding +// specified in the service config will override any matching transcoding +// configuration in the proto. +// +// Example: +// +// http: +// rules: +// # Selects a gRPC method and applies HttpRule to it. +// - selector: example.v1.Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// ## Special notes +// +// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the +// proto to JSON conversion must follow the [proto3 +// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). +// +// While the single segment variable follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion, the multi segment variable **does not** follow RFC 6570 Section +// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding +// for multi segment variables. +// +// The path variables **must not** refer to any repeated or mapped field, +// because client libraries are not capable of handling such variable expansion. +// +// The path variables **must not** capture the leading "/" character. The reason +// is that the most common use case "{var}" does not capture the leading "/" +// character. For consistency, all path variables must share the same behavior. +// +// Repeated message fields must not be mapped to URL query parameters, because +// no client library can support such complicated mapping. +// +// If an API needs to use a JSON array for request or response body, it can map +// the request or response body to a repeated field. However, some gRPC +// Transcoding implementations may not support this feature. +message HttpRule { + // Selects a method to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Maps to HTTP GET. Used for listing and getting information about + // resources. + string get = 2; + + // Maps to HTTP PUT. Used for replacing a resource. + string put = 3; + + // Maps to HTTP POST. Used for creating a resource or performing an action. + string post = 4; + + // Maps to HTTP DELETE. Used for deleting a resource. + string delete = 5; + + // Maps to HTTP PATCH. Used for updating a resource. + string patch = 6; + + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP request + // body, or `*` for mapping all request fields not captured by the path + // pattern to the HTTP body, or omitted for not having any HTTP request body. + // + // NOTE: the referred field must be present at the top-level of the request + // message type. + string body = 7; + + // Optional. The name of the response field whose value is mapped to the HTTP + // response body. When omitted, the entire response message will be used + // as the HTTP response body. + // + // NOTE: The referred field must be present at the top-level of the response + // message type. + string response_body = 12; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} \ No newline at end of file diff --git a/third_party/google/protobuf/empty.proto b/third_party/google/protobuf/empty.proto new file mode 100644 index 0000000000..d675375e14 --- /dev/null +++ b/third_party/google/protobuf/empty.proto @@ -0,0 +1,52 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option go_package = "github.com/golang/protobuf/ptypes/empty"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "EmptyProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option cc_enable_arenas = true; + +// A generic empty message that you can re-use to avoid defining duplicated +// empty messages in your APIs. A typical example is to use it as the request +// or the response type of an API method. For instance: +// +// service Foo { +// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); +// } +// +// The JSON representation for `Empty` is empty JSON object `{}`. +message Empty {} \ No newline at end of file diff --git a/third_party/google/protobuf/field_mask.proto b/third_party/google/protobuf/field_mask.proto new file mode 100644 index 0000000000..ae488d6031 --- /dev/null +++ b/third_party/google/protobuf/field_mask.proto @@ -0,0 +1,245 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "FieldMaskProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option go_package = "google.golang.org/genproto/protobuf/field_mask;field_mask"; +option cc_enable_arenas = true; + +// `FieldMask` represents a set of symbolic field paths, for example: +// +// paths: "f.a" +// paths: "f.b.d" +// +// Here `f` represents a field in some root message, `a` and `b` +// fields in the message found in `f`, and `d` a field found in the +// message in `f.b`. +// +// Field masks are used to specify a subset of fields that should be +// returned by a get operation or modified by an update operation. +// Field masks also have a custom JSON encoding (see below). +// +// # Field Masks in Projections +// +// When used in the context of a projection, a response message or +// sub-message is filtered by the API to only contain those fields as +// specified in the mask. For example, if the mask in the previous +// example is applied to a response message as follows: +// +// f { +// a : 22 +// b { +// d : 1 +// x : 2 +// } +// y : 13 +// } +// z: 8 +// +// The result will not contain specific values for fields x,y and z +// (their value will be set to the default, and omitted in proto text +// output): +// +// +// f { +// a : 22 +// b { +// d : 1 +// } +// } +// +// A repeated field is not allowed except at the last position of a +// paths string. +// +// If a FieldMask object is not present in a get operation, the +// operation applies to all fields (as if a FieldMask of all fields +// had been specified). +// +// Note that a field mask does not necessarily apply to the +// top-level response message. In case of a REST get operation, the +// field mask applies directly to the response, but in case of a REST +// list operation, the mask instead applies to each individual message +// in the returned resource list. In case of a REST custom method, +// other definitions may be used. Where the mask applies will be +// clearly documented together with its declaration in the API. In +// any case, the effect on the returned resource/resources is required +// behavior for APIs. +// +// # Field Masks in Update Operations +// +// A field mask in update operations specifies which fields of the +// targeted resource are going to be updated. The API is required +// to only change the values of the fields as specified in the mask +// and leave the others untouched. If a resource is passed in to +// describe the updated values, the API ignores the values of all +// fields not covered by the mask. +// +// If a repeated field is specified for an update operation, new values will +// be appended to the existing repeated field in the target resource. Note that +// a repeated field is only allowed in the last position of a `paths` string. +// +// If a sub-message is specified in the last position of the field mask for an +// update operation, then new value will be merged into the existing sub-message +// in the target resource. +// +// For example, given the target message: +// +// f { +// b { +// d: 1 +// x: 2 +// } +// c: [1] +// } +// +// And an update message: +// +// f { +// b { +// d: 10 +// } +// c: [2] +// } +// +// then if the field mask is: +// +// paths: ["f.b", "f.c"] +// +// then the result will be: +// +// f { +// b { +// d: 10 +// x: 2 +// } +// c: [1, 2] +// } +// +// An implementation may provide options to override this default behavior for +// repeated and message fields. +// +// In order to reset a field's value to the default, the field must +// be in the mask and set to the default value in the provided resource. +// Hence, in order to reset all fields of a resource, provide a default +// instance of the resource and set all fields in the mask, or do +// not provide a mask as described below. +// +// If a field mask is not present on update, the operation applies to +// all fields (as if a field mask of all fields has been specified). +// Note that in the presence of schema evolution, this may mean that +// fields the client does not know and has therefore not filled into +// the request will be reset to their default. If this is unwanted +// behavior, a specific service may require a client to always specify +// a field mask, producing an error if not. +// +// As with get operations, the location of the resource which +// describes the updated values in the request message depends on the +// operation kind. In any case, the effect of the field mask is +// required to be honored by the API. +// +// ## Considerations for HTTP REST +// +// The HTTP kind of an update operation which uses a field mask must +// be set to PATCH instead of PUT in order to satisfy HTTP semantics +// (PUT must only be used for full updates). +// +// # JSON Encoding of Field Masks +// +// In JSON, a field mask is encoded as a single string where paths are +// separated by a comma. Fields name in each path are converted +// to/from lower-camel naming conventions. +// +// As an example, consider the following message declarations: +// +// message Profile { +// User user = 1; +// Photo photo = 2; +// } +// message User { +// string display_name = 1; +// string address = 2; +// } +// +// In proto a field mask for `Profile` may look as such: +// +// mask { +// paths: "user.display_name" +// paths: "photo" +// } +// +// In JSON, the same mask is represented as below: +// +// { +// mask: "user.displayName,photo" +// } +// +// # Field Masks and Oneof Fields +// +// Field masks treat fields in oneofs just as regular fields. Consider the +// following message: +// +// message SampleMessage { +// oneof test_oneof { +// string name = 4; +// SubMessage sub_message = 9; +// } +// } +// +// The field mask can be: +// +// mask { +// paths: "name" +// } +// +// Or: +// +// mask { +// paths: "sub_message" +// } +// +// Note that oneof type names ("test_oneof" in this case) cannot be used in +// paths. +// +// ## Field Mask Verification +// +// The implementation of any API method which has a FieldMask type field in the +// request should verify the included field paths, and return an +// `INVALID_ARGUMENT` error if any path is unmappable. +message FieldMask { + // The set of field mask paths. + repeated string paths = 1; +} \ No newline at end of file From 810d2b6b347b5e89654de9a3967a35392bad94f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 4 Jun 2020 18:04:46 +0200 Subject: [PATCH 150/407] parse odata query and build ldap filter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 1 + go.sum | 2 + pkg/provider/ldap.go | 180 ++++++++++++++++++++++++++++++++++++++ pkg/provider/ldap_test.go | 68 ++++++++++++++ pkg/service/v0/service.go | 29 +++++- 5 files changed, 276 insertions(+), 4 deletions(-) create mode 100644 pkg/provider/ldap.go create mode 100644 pkg/provider/ldap_test.go diff --git a/go.mod b/go.mod index 59b87b5a2e..6e6944692e 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/owncloud/ocis-accounts go 1.13 require ( + github.com/CiscoM31/godata v0.0.0-20191007193734-c2c4ebb1b415 github.com/go-test/deep v1.0.6 // indirect github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/protobuf v1.4.1 diff --git a/go.sum b/go.sum index fcf757dcb3..0c2e6151b2 100644 --- a/go.sum +++ b/go.sum @@ -44,6 +44,8 @@ github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6L github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvdeRAgDr0izn4z5Ij88= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/CiscoM31/godata v0.0.0-20191007193734-c2c4ebb1b415 h1:rATYsVSP89BOyS9/o+cdGZ8qU7AHh4frtS59nFPoX8k= +github.com/CiscoM31/godata v0.0.0-20191007193734-c2c4ebb1b415/go.mod h1:tjaihnMBH6p5DVnGBksDQQHpErbrLvb9ek6cEWuyc7E= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= diff --git a/pkg/provider/ldap.go b/pkg/provider/ldap.go new file mode 100644 index 0000000000..5454ba99ed --- /dev/null +++ b/pkg/provider/ldap.go @@ -0,0 +1,180 @@ +package provider + +import ( + "fmt" + "strings" + + "github.com/CiscoM31/godata" + "github.com/owncloud/ocis-accounts/pkg/config" + "gopkg.in/ldap.v2" +) + +func init() { + // add (ap)prox filter + godata.GlobalFilterTokenizer = FilterTokenizer() + godata.GlobalFilterParser.DefineOperator("ap", 2, godata.OpAssociationLeft, 4, false) +} + +// LDAPNodeMap is used to convert query tokens into ldap filters according to https://tools.ietf.org/search/rfc4515 +var LDAPNodeMap = map[string]string{ + // 11.2.6.1.1 Built-in Filter Operations according to http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#_Toc31358949 + + // Comparison Operators + "eq": "(%s=%s)", // -> LDAP equal + "ne": "(!(%s=%s))", // -> LDAP NOT equal + //"gt": "(&(%s>=%s)(!(%s=%s)))", // -> TODO can be constructed but requires more parameters + "ge": "(%s>=%s)", // -> LDAP greaterorequal + //"lt": "(&(%s<=%s)(!(%s=%s)))", // -> TODO can be constructed but requires more parameters + "le": "(%s<=%s)", // -> LDAP lessorequal + //"has": "(%s=*)", // -> TODO LDAP present but in odata has looks like "Style has Sales.Color'Yellow'" + //"in": "???", // TODO + + // additional native LDAP Search String Filter Definition according to https://tools.ietf.org/search/rfc4515#section-3 + "ap": "(%s~=%s)", // approx, TODO needs token in parser, odata uses $search instead of $filter for fuzzy search + + // Logical Operators + // While LDAP understands logical filters like (&()()()()) we leave that as an optimization and use at max two params + "and": "(&%s%s)", + "or": "(|%s%s)", + "not": "(!%s)", + + // Arithmetic operators + //"add": "" + //"sub": "" + //"mul": "" + //"div": "" + //"divby": "" + //"mod": "" + + // Grouping operators + + // 11.2.6.1.2 Built-in Query Functions according to http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_BuiltinQueryFunctions + //String and Collection Functions + //"concat": "CONCAT(%s,%s)", + "contains": "(%s=*%s*)", + "endswith": "(%s=*%s)", + //"indexof": "LOCATE(%s)", + //"length": "LENGTH(%s)", + "startswith": "(%s=%s*)", + //"substring": "", + + // + //"tolower": "LOWER(%s)", + //"toupper": "UPPER(%s)", + //"trim": "TRIM(%s)", + //"year": "YEAR(%s)", + //"month": "MONTH(%s)", + //"day": "DAY(%s)", + //"hour": "HOUR(%s)", + //"minute": "MINUTE(%s)", + //"second": "SECOND(%s)", + //"fractionalsecond": "MICROSECOND(%s)", + //"date": "DATE(%s)", + //"time": "TIME(%s)", + //"totaloffsetminutes": "", + //"now": "NOW()", + //"maxdatetime":"", + //"mindatetime":"", + //"totalseconds":"", + //"round": "ROUND(%s)", + //"floor": "FLOOR(%s)", + //"ceiling": "CEIL(%s)", + //"isof": "", // TODO objectclass= + //"cast": "", + //"geo.distance": "", + //"geo.intersects": "", + //"geo.length": "", + //"any": "", + //"all": "", + //"null": "NULL", +} + +// BuildLDAPFilter converts a GoDataFilterQuery into an ldap filter +func BuildLDAPFilter(r *godata.GoDataFilterQuery, c *config.LDAPSchema) (string, error) { + return recursiveBuildFilter(r.Tree, c) +} + +// Builds the filter recursively using DFS +func recursiveBuildFilter(n *godata.ParseNode, c *config.LDAPSchema) (string, error) { + if n.Token.Type == godata.FilterTokenLiteral { + switch n.Token.Value { + case "accountid": + return c.AccountID, nil + case "displayname": + return c.DisplayName, nil + case "username": + return c.Username, nil + case "mail": + return c.Mail, nil + case "groups": + // TODO groups + return "", godata.NotImplementedError(n.Token.Value + " is not implemented.") + case "identities": + // TODO identities + return "", godata.NotImplementedError(n.Token.Value + " is not implemented.") + } + return "", godata.BadRequestError("unknown property " + n.Token.Value) + } + if n.Token.Type == godata.FilterTokenString { + // without leading and ending ' required by odata + // encode LDAP safe + return strings.TrimSuffix(strings.TrimPrefix(ldap.EscapeFilter(n.Token.Value), "'"), "'"), nil + } + if n.Token.Type == godata.FilterTokenInteger { + return n.Token.Value, nil + } + if n.Token.Type == godata.FilterTokenFloat { + return n.Token.Value, nil + } + + if v, ok := LDAPNodeMap[n.Token.Value]; ok { + children := []interface{}{} + // build each child first using DFS + for _, child := range n.Children { + f, err := recursiveBuildFilter(child, c) + if err != nil { + return "", err + } + children = append(children, f) + } + // merge together the children and the current node + result := fmt.Sprintf(v, children...) + return result, nil + } + return "", godata.NotImplementedError(n.Token.Value + " is not implemented.") +} + +// FilterTokenizer creates a tokenizer capable of tokenizing filter statements +// TODO disable tokens we don't handle anyway +func FilterTokenizer() *godata.Tokenizer { + t := godata.Tokenizer{} + t.Add("^[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}T[0-9]{2,2}:[0-9]{2,2}(:[0-9]{2,2}(.[0-9]+)?)?(Z|[+-][0-9]{2,2}:[0-9]{2,2})", godata.FilterTokenDateTime) + t.Add("^-?[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}", godata.FilterTokenDate) + t.Add("^[0-9]{2,2}:[0-9]{2,2}(:[0-9]{2,2}(.[0-9]+)?)?", godata.FilterTokenTime) + t.Add("^\\(", godata.FilterTokenOpenParen) + t.Add("^\\)", godata.FilterTokenCloseParen) + t.Add("^/", godata.FilterTokenNav) + t.Add("^:", godata.FilterTokenColon) + t.Add("^,", godata.FilterTokenComma) + t.Add("^(geo.distance|geo.intersects|geo.length)", godata.FilterTokenFunc) + t.Add("^(substringof|substring|length|indexof)", godata.FilterTokenFunc) + // only change from the global tokenizer is the added ap + t.Add("^(eq|ne|gt|ge|lt|le|and|or|not|has|in|ap)", godata.FilterTokenLogical) + t.Add("^(add|sub|mul|divby|div|mod)", godata.FilterTokenOp) + t.Add("^(contains|endswith|startswith|tolower|toupper|"+ + "trim|concat|year|month|day|hour|minute|second|fractionalseconds|date|"+ + "time|totaloffsetminutes|now|maxdatetime|mindatetime|totalseconds|round|"+ + "floor|ceiling|isof|cast)", godata.FilterTokenFunc) + t.Add("^(any|all)", godata.FilterTokenLambda) + t.Add("^null", godata.FilterTokenNull) + t.Add("^\\$it", godata.FilterTokenIt) + t.Add("^\\$root", godata.FilterTokenRoot) + t.Add("^-?[0-9]+\\.[0-9]+", godata.FilterTokenFloat) + t.Add("^-?[0-9]+", godata.FilterTokenInteger) + t.Add("^'(''|[^'])*'", godata.FilterTokenString) + t.Add("^(true|false)", godata.FilterTokenBoolean) + t.Add("^@*[a-zA-Z][a-zA-Z0-9_.]*", godata.FilterTokenLiteral) // The optional '@' character is used to identify parameter aliases + t.Ignore("^ ", godata.FilterTokenWhitespace) + + return &t +} diff --git a/pkg/provider/ldap_test.go b/pkg/provider/ldap_test.go new file mode 100644 index 0000000000..efc67b4e3d --- /dev/null +++ b/pkg/provider/ldap_test.go @@ -0,0 +1,68 @@ +package provider + +import ( + "testing" + + "github.com/CiscoM31/godata" + "github.com/owncloud/ocis-accounts/pkg/config" +) + +var c *config.LDAPSchema + +func init() { + c = &config.LDAPSchema{ + AccountID: "ownclouduuid", + Username: "uid", + Mail: "mail", + DisplayName: "displayname", + } +} + +func TestEQ(t *testing.T) { testLDAPFilters(t, "accountid eq 'a-b-c-d'", "(ownclouduuid=a-b-c-d)") } +func TestNE(t *testing.T) { testLDAPFilters(t, "mail ne 'foo@bar.com'", "(!(mail=foo@bar.com))") } +func TestGE(t *testing.T) { testLDAPFilters(t, "displayname ge 'marie'", "(displayname>=marie)") } +func TestLE(t *testing.T) { testLDAPFilters(t, "username le 'marie'", "(uid<=marie)") } + +//func TestHas(t *testing.T) { testLDAPFilters(t, "Style has Sales.Color'Yellow'", "(foo=*)") } +func TestAP(t *testing.T) { + testLDAPFilters(t, "displayname ap 'einstein'", "(displayname~=einstein)") +} +func TestAND(t *testing.T) { + testLDAPFilters(t, "accountid le 500000 and accountid ge 300000", "(&(ownclouduuid<=500000)(ownclouduuid>=300000))") +} +func TestOR(t *testing.T) { + testLDAPFilters(t, "accountid le 700000 or accountid ge 900000", "(|(ownclouduuid<=700000)(ownclouduuid>=900000))") +} +func TestNOT(t *testing.T) { + // not operator takes precedence over ap, so we need brackets + testLDAPFilters(t, "not ( displayname ap 'einstein' )", "(!(displayname~=einstein))") +} +func TestContains(t *testing.T) { + testLDAPFilters(t, "contains(username,'eins')", "(uid=*eins*)") +} +func TestStartsWith(t *testing.T) { + testLDAPFilters(t, "startswith(username,'eins')", "(uid=eins*)") +} +func TestEndsWith(t *testing.T) { + testLDAPFilters(t, "endswith(username,'eins')", "(uid=*eins)") +} +func TestEncoding(t *testing.T) { + testLDAPFilters(t, "displayname eq 'eins(*)tein'", "(displayname=eins\\28\\2a\\29tein)") +} + +func testLDAPFilters(t *testing.T, have string, want string) { + + var err error + + var q *godata.GoDataFilterQuery + if q, err = godata.ParseFilterString(have); err != nil { + t.Error(err) + } + var filter string + if filter, err = BuildLDAPFilter(q, c); err != nil { + t.Error(err) + } + if filter != want { + t.Error("expected", want, "for", have, "but got", filter) + } +} diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 6f7698df1f..ce077c72a0 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -6,10 +6,12 @@ import ( "errors" "fmt" + "github.com/CiscoM31/godata" "github.com/golang/protobuf/ptypes/empty" mclient "github.com/micro/go-micro/v2/client" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" + "github.com/owncloud/ocis-accounts/pkg/provider" olog "github.com/owncloud/ocis-pkg/v2/log" settings "github.com/owncloud/ocis-settings/pkg/proto/v0" "github.com/rs/zerolog/log" @@ -31,9 +33,30 @@ type Service struct { } // ListAccounts implements the AccountsServiceHandler interface -func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, res *proto.ListAccountsResponse) error { +func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, res *proto.ListAccountsResponse) (err error) { - l, err := ldap.DialTLS("tcp", fmt.Sprintf("%s:%d", s.Config.LDAP.Hostname, s.Config.LDAP.Port), &tls.Config{InsecureSkipVerify: true}) + log.Debug().Str("query", in.Query).Int32("page-size", in.PageSize).Str("page-token", in.PageToken).Msg("ListAccounts") + + filter := "(&)" // see Absolute True and False Filters in https://tools.ietf.org/html/rfc4526#section-2 + + if in.Query != "" { + // parse the query like an odata filter + var q *godata.GoDataFilterQuery + if q, err = godata.ParseFilterString(in.Query); err != nil { + return err + } + + // convert to ldap filter + filter, err = provider.BuildLDAPFilter(q, &s.Config.LDAP.Schema) + if err != nil { + return err + } + } + + log.Debug().Str("filter", filter).Msg("using filter") + + var l *ldap.Conn + l, err = ldap.DialTLS("tcp", fmt.Sprintf("%s:%d", s.Config.LDAP.Hostname, s.Config.LDAP.Port), &tls.Config{InsecureSkipVerify: true}) if err != nil { return err } @@ -45,9 +68,7 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest return err } - // TODO parse query using https://github.com/araddon/qlbridge // TODO combine the parsed query with a query filter from the config, eg. fmt.Sprintf(s.Config.LDAP.UserFilter, clientID) - filter := "(&)" // see Absolute True and False Filters in https://tools.ietf.org/html/rfc4526#section-2 // Search for the given clientID searchRequest := ldap.NewSearchRequest( From 5ae2ef9b8044af9d7b8bcc40f6d274d3e4f47b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 8 Jun 2020 17:38:19 +0200 Subject: [PATCH 151/407] add graph api properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- docs/_index.md | 13 +- go.mod | 1 + pkg/flagset/flagset.go | 9 +- pkg/proto/v0/accounts.pb.go | 1796 +++++++++++++++++-- pkg/proto/v0/accounts.pb.micro.go | 264 ++- pkg/proto/v0/accounts.proto | 614 ++++++- pkg/service/v0/service.go | 135 +- third_party/google/protobuf/timestamp.proto | 138 ++ 8 files changed, 2729 insertions(+), 241 deletions(-) create mode 100644 third_party/google/protobuf/timestamp.proto diff --git a/docs/_index.md b/docs/_index.md index c075dd2d92..3249c0241d 100644 --- a/docs/_index.md +++ b/docs/_index.md @@ -7,4 +7,15 @@ geekdocEditPath: edit/master/docs geekdocFilePath: _index.md --- -This service provides an inter-operable accounts service that operates on the filesystem by default. +[![GitHub](https://img.shields.io/github/license/owncloud/ocis-hello)](https://github.com/owncloud/ocis-hello/blob/master/LICENSE) + +## Abstract +OCIS needs to be able to identify users. Whithout a non reassignable and persistend account ID share metadata cannot be reliably persisted. `ocis-accounts` allows exchanging oidc claims for a uuid. Using a uuid allows users to change the login, mail or even openid connect provider without breaking any persisted metadata that might have been attached to it. + +- persists accounts +- uses graph api properties + -ldap can be synced using the onpremise* attributes + +## Table of Contents + +{{< toc-tree >}} \ No newline at end of file diff --git a/go.mod b/go.mod index 6e6944692e..f9d4f7cdd0 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 + github.com/micro/go-micro v1.18.0 github.com/micro/go-micro/v2 v2.6.0 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-pkg/v2 v2.2.1 diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index aa7bd4e872..a4b9f08bce 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -121,8 +121,13 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { }, // ldap dn is always the dn &cli.StringFlag{ - Name: "ldap-schema-account-id", - Value: "ownclouduuid", // TODO write down LDAP schema & register OID + Name: "ldap-schema-account-id", + // TODO write down LDAP schema & register OID ownclouduuid + //... use 'sourceAnchor','immutableid' see https://docs.microsoft.com/en-us/azure/active-directory/hybrid/plan-connect-design-concepts#sourceanchor + // or 'ms-DS-ConsistencyGuid' see https://docs.microsoft.com/en-us/azure/active-directory/hybrid/plan-connect-design-concepts + // or build a scim schema for ldap? https://ldapwiki.com/wiki/SCIM%20Common%20Attribute + // glauth -> support id and externalid from scim + Value: "uidNumber", Usage: "LDAP schema account id", EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_ACCOUNT_ID"}, Destination: &cfg.LDAP.Schema.AccountID, diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 6b8b5de5df..f753f25b6d 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -7,6 +7,7 @@ import ( fmt "fmt" proto "github.com/golang/protobuf/proto" _ "github.com/golang/protobuf/ptypes/empty" + timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" field_mask "google.golang.org/genproto/protobuf/field_mask" math "math" @@ -154,7 +155,7 @@ func (m *ListAccountsResponse) GetNextPageToken() string { } type GetAccountRequest struct { - AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -185,16 +186,16 @@ func (m *GetAccountRequest) XXX_DiscardUnknown() { var xxx_messageInfo_GetAccountRequest proto.InternalMessageInfo -func (m *GetAccountRequest) GetAccountId() string { +func (m *GetAccountRequest) GetId() string { if m != nil { - return m.AccountId + return m.Id } return "" } type CreateAccountRequest struct { // The account id to use for this account - AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The account resource to create Account *Account `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -227,9 +228,9 @@ func (m *CreateAccountRequest) XXX_DiscardUnknown() { var xxx_messageInfo_CreateAccountRequest proto.InternalMessageInfo -func (m *CreateAccountRequest) GetAccountId() string { +func (m *CreateAccountRequest) GetId() string { if m != nil { - return m.AccountId + return m.Id } return "" } @@ -292,7 +293,7 @@ func (m *UpdateAccountRequest) GetUpdateMask() *field_mask.FieldMask { } type DeleteAccountRequest struct { - AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -323,25 +324,188 @@ func (m *DeleteAccountRequest) XXX_DiscardUnknown() { var xxx_messageInfo_DeleteAccountRequest proto.InternalMessageInfo -func (m *DeleteAccountRequest) GetAccountId() string { +func (m *DeleteAccountRequest) GetId() string { if m != nil { - return m.AccountId + return m.Id } return "" } +// Account follows the properties of the ms graph api user resuorce. +// See https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties type Account struct { - // the non reassignable and stable account_id of an account - AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - // The identities that are mapped to this account - Identities []*Identities `protobuf:"bytes,2,rep,name=identities,proto3" json:"identities,omitempty"` - Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` - DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Mail string `protobuf:"bytes,5,opt,name=mail,proto3" json:"mail,omitempty"` - Groups []*Group `protobuf:"bytes,6,rep,name=groups,proto3" json:"groups,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // A freeform text entry field for the user to describe themselves. + AboutMe string `protobuf:"bytes,1,opt,name=about_me,json=aboutMe,proto3" json:"about_me,omitempty"` + // *true* if the account is enabled; otherwise, *false*. This property is required when a user is created. Supports $filter. + AccountEnabled bool `protobuf:"varint,2,opt,name=account_enabled,json=accountEnabled,proto3" json:"account_enabled,omitempty"` + // Sets the age group of the user. Allowed values: null, minor, notAdult and adult. Refer to the legal age group property definitions for further information. + AgeGroup string `protobuf:"bytes,3,opt,name=age_group,json=ageGroup,proto3" json:"age_group,omitempty"` + // The licenses that are assigned to the account. Not nullable. + AssignedLicenses []*AssignedLicense `protobuf:"bytes,4,rep,name=assigned_licenses,json=assignedLicenses,proto3" json:"assigned_licenses,omitempty"` + // The plans that are assigned to the account. Read-only. Not nullable. + AssignedPlans []*AssignedPlan `protobuf:"bytes,5,rep,name=assigned_plans,json=assignedPlans,proto3" json:"assigned_plans,omitempty"` + // The birthday of the user. + Birthday *timestamp.Timestamp `protobuf:"bytes,6,opt,name=birthday,proto3" json:"birthday,omitempty"` + // The telephone numbers for the user. NOTE: Although this is a string collection, only one number can be set for this property. + BusinessPhones []string `protobuf:"bytes,7,rep,name=business_phones,json=businessPhones,proto3" json:"business_phones,omitempty"` + // The city in which the user is located. Supports $filter. + City string `protobuf:"bytes,8,opt,name=city,proto3" json:"city,omitempty"` + // The company name which the user is associated. This property can be useful for describing the company that an external user comes from. + CompanyName string `protobuf:"bytes,9,opt,name=company_name,json=companyName,proto3" json:"company_name,omitempty"` + // Sets whether consent has been obtained for minors. Allowed values: null, granted, denied and notRequired. Refer to the legal age group property definitions for further information. + ConsentProvidedForMinor string `protobuf:"bytes,10,opt,name=consent_provided_for_minor,json=consentProvidedForMinor,proto3" json:"consent_provided_for_minor,omitempty"` + // The country/region in which the user is located; for example, “US” or “UK”. Supports $filter. + Country string `protobuf:"bytes,11,opt,name=country,proto3" json:"country,omitempty"` + // The created date of the account object. + CreatedDateTime *timestamp.Timestamp `protobuf:"bytes,12,opt,name=created_date_time,json=createdDateTime,proto3" json:"created_date_time,omitempty"` + // Indicates whether the account was created as + // - a regular school or work account (null), + // - an external account (Invitation), + // - a local account for an Azure Active Directory B2C tenant (LocalAccount) or + // - self-service sign-up using email verification (EmailVerified). Read-only. + CreationType string `protobuf:"bytes,13,opt,name=creation_type,json=creationType,proto3" json:"creation_type,omitempty"` + // The date and time the user was deleted. Returned only on $select. + DeletedDateTime *timestamp.Timestamp `protobuf:"bytes,14,opt,name=deleted_date_time,json=deletedDateTime,proto3" json:"deleted_date_time,omitempty"` + // The name for the department in which the user works. Supports $filter. + Department string `protobuf:"bytes,15,opt,name=department,proto3" json:"department,omitempty"` + // The name displayed in the address book for the account. + // This is usually the combination of the user's first name, middle initial and last name. + // This property is required when a user is created and it cannot be cleared during updates. + // Supports $filter and $orderby. + DisplayName string `protobuf:"bytes,16,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // The employee identifier assigned to the user by the organization. Supports $filter. + EmployeeId string `protobuf:"bytes,17,opt,name=employee_id,json=employeeId,proto3" json:"employee_id,omitempty"` + // For an external user invited to the tenant using the invitation API, this property represents the invited user's invitation status. + // For invited users, the state can be `PendingAcceptance` or `Accepted`, or emptystring / null for all other users. + // Returned only on $select. Supports $filter with the supported values. For example: $filter=externalUserState eq 'PendingAcceptance'. + ExternalUserState string `protobuf:"bytes,18,opt,name=external_user_state,json=externalUserState,proto3" json:"external_user_state,omitempty"` + // Shows the timestamp for the latest change to the externalUserState property. Returned only on $select. + // note: in the ms graph beta this changed to a string ?!? + ExternalUserStateChangeDateTime *timestamp.Timestamp `protobuf:"bytes,19,opt,name=external_user_state_change_date_time,json=externalUserStateChangeDateTime,proto3" json:"external_user_state_change_date_time,omitempty"` + // The fax number of the account. + FaxNumber string `protobuf:"bytes,20,opt,name=fax_number,json=faxNumber,proto3" json:"fax_number,omitempty"` + // The given name (first name) of the user. Supports $filter. + GivenName string `protobuf:"bytes,21,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` + // The hire date of the user. + HireDate *timestamp.Timestamp `protobuf:"bytes,22,opt,name=hire_date,json=hireDate,proto3" json:"hire_date,omitempty"` + // The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. + Id string `protobuf:"bytes,23,opt,name=id,proto3" json:"id,omitempty"` + // Represents the identities that can be used to sign in to this user account. + // An identity can be provided by OCIS (also known as a local account), by organizations, or by social identity providers such as Facebook, Google, and Microsoft, and is tied to an account. + // May contain multiple items with the same signInType value. Supports $filter. + Identities []*Identities `protobuf:"bytes,24,rep,name=identities,proto3" json:"identities,omitempty"` + // The instant message voice over IP (VOIP) session initiation protocol (SIP) addresses for the user. Read-only. + ImAddresses []string `protobuf:"bytes,25,rep,name=im_addresses,json=imAddresses,proto3" json:"im_addresses,omitempty"` + // A list for the user to describe their interests. + Interests []string `protobuf:"bytes,26,rep,name=interests,proto3" json:"interests,omitempty"` + // *true* if the user is a resource account; otherwise, *false*. Null value should be considered false. + IsResourceAccount bool `protobuf:"varint,27,opt,name=is_resource_account,json=isResourceAccount,proto3" json:"is_resource_account,omitempty"` + // The user’s job title. Supports $filter. + JobTitle string `protobuf:"bytes,28,opt,name=job_title,json=jobTitle,proto3" json:"job_title,omitempty"` + // The time when this account last changed their password. + LastPasswordChangeDateTime *timestamp.Timestamp `protobuf:"bytes,29,opt,name=last_password_change_date_time,json=lastPasswordChangeDateTime,proto3" json:"last_password_change_date_time,omitempty"` + // Used by enterprise applications to determine the legal age group of the user. + // This property is read-only and calculated based on `ageGroup` and `consentProvidedForMinor` properties. + // Allowed values: `null`, `minorWithOutParentalConsent`, `minorWithParentalConsent`, `minorNoParentalConsentRequired`, `notAdult` and `adult`. + // Refer to the legal age group property definitions for further information.) + LegalAgeGroupClassification string `protobuf:"bytes,30,opt,name=legal_age_group_classification,json=legalAgeGroupClassification,proto3" json:"legal_age_group_classification,omitempty"` + // The SMTP address for the user, for example, "jeff@contoso.onmicrosoft.com". Read-Only. Supports $filter. + Mail string `protobuf:"bytes,32,opt,name=mail,proto3" json:"mail,omitempty"` + // The mail alias for the user. This property must be specified when a user is created. Supports $filter. + MailNickname string `protobuf:"bytes,34,opt,name=mail_nickname,json=mailNickname,proto3" json:"mail_nickname,omitempty"` + // The primary cellular telephone number for the user. + MobilePhone string `protobuf:"bytes,35,opt,name=mobile_phone,json=mobilePhone,proto3" json:"mobile_phone,omitempty"` + // The URL for the user's personal site. + MySite string `protobuf:"bytes,36,opt,name=my_site,json=mySite,proto3" json:"my_site,omitempty"` + // The office location in the user's place of business. + OfficeLocation string `protobuf:"bytes,37,opt,name=office_location,json=officeLocation,proto3" json:"office_location,omitempty"` + // Contains the on-premises LDAP `distinguished name` or `DN`. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + OnPremisesDistinguishedName string `protobuf:"bytes,38,opt,name=on_premises_distinguished_name,json=onPremisesDistinguishedName,proto3" json:"on_premises_distinguished_name,omitempty"` + // Contains the on-premises `domainFQDN`, also called `dnsDomainName` synchronized from the on-premises directory + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + OnPremisesDomainName string `protobuf:"bytes,39,opt,name=on_premises_domain_name,json=onPremisesDomainName,proto3" json:"on_premises_domain_name,omitempty"` + // This property is used to associate an on-premises LDAP user to the ocis account object. + // This property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property. + // Important: The $ and _ characters cannot be used when specifying this property. Supports $filter. + OnPremisesImmutableId string `protobuf:"bytes,41,opt,name=on_premises_immutable_id,json=onPremisesImmutableId,proto3" json:"on_premises_immutable_id,omitempty"` + // Indicates the last time at which the object was synced with the on-premises directory; Read-only. + OnPremisesLastSyncDateTime *timestamp.Timestamp `protobuf:"bytes,42,opt,name=on_premises_last_sync_date_time,json=onPremisesLastSyncDateTime,proto3" json:"on_premises_last_sync_date_time,omitempty"` + // Errors when using synchronization during provisioning. + OnPremisesProvisioningErrors []*OnPremisesProvisioningError `protobuf:"bytes,43,rep,name=on_premises_provisioning_errors,json=onPremisesProvisioningErrors,proto3" json:"on_premises_provisioning_errors,omitempty"` + // Contains the on-premises `samAccountName` synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + OnPremisesSamAccountName string `protobuf:"bytes,44,opt,name=on_premises_sam_account_name,json=onPremisesSamAccountName,proto3" json:"on_premises_sam_account_name,omitempty"` + // Contains the on-premises security identifier (SID) for the user that was synchronized from on-premises to the cloud. Read-only. + OnPremisesSecurityIdentifier string `protobuf:"bytes,45,opt,name=on_premises_security_identifier,json=onPremisesSecurityIdentifier,proto3" json:"on_premises_security_identifier,omitempty"` + // *true* if this object is synced from an on-premises directory; + // *false* if this object was originally synced from an on-premises directory but is no longer synced; + // null if this object has never been synced from an on-premises directory (default). Read-only + OnPremisesSyncEnabled bool `protobuf:"varint,46,opt,name=on_premises_sync_enabled,json=onPremisesSyncEnabled,proto3" json:"on_premises_sync_enabled,omitempty"` + // Contains the on-premises userPrincipalName synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + OnPremisesUserPrincipalName string `protobuf:"bytes,47,opt,name=on_premises_user_principal_name,json=onPremisesUserPrincipalName,proto3" json:"on_premises_user_principal_name,omitempty"` + // A list of additional email addresses for the user; for example: ["bob@contoso.com", "Robert@fabrikam.com"]. Supports $filter. + // note: in ms graph v1.0 this is a string. in the beta api it is a string collection + OtherMails []string `protobuf:"bytes,48,rep,name=other_mails,json=otherMails,proto3" json:"other_mails,omitempty"` + // Specifies password policies for the user. This value is an enumeration with one possible value being “DisableStrongPassword”, which allows weaker passwords than the default policy to be specified. “DisablePasswordExpiration” can also be specified. The two may be specified together; for example: "DisablePasswordExpiration, DisableStrongPassword". + PasswordPolicies string `protobuf:"bytes,49,opt,name=password_policies,json=passwordPolicies,proto3" json:"password_policies,omitempty"` + // A list for the user to enumerate their past projects. + PastProjects []string `protobuf:"bytes,51,rep,name=past_projects,json=pastProjects,proto3" json:"past_projects,omitempty"` + // The postal code for the user's postal address. The postal code is specific to the user's country/region. In the United States of America, this attribute contains the ZIP code. + PostalCode string `protobuf:"bytes,52,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` + // The preferred data location for the user. For more information, see OneDrive Online Multi-Geo. https://docs.microsoft.com/sharepoint/dev/solution-guidance/multigeo-introduction string preferredDataLocation = 53; + PreferredDataLocation string `protobuf:"bytes,53,opt,name=preferred_data_location,json=preferredDataLocation,proto3" json:"preferred_data_location,omitempty"` + // The preferred language for the user. Should follow ISO 639-1 Code; for example "en-US". + PreferredLanguage string `protobuf:"bytes,54,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` + // The preferred name for the user. + PreferredName string `protobuf:"bytes,55,opt,name=preferred_name,json=preferredName,proto3" json:"preferred_name,omitempty"` + // For example: ["SMTP: bob@contoso.com", "smtp: bob@sales.contoso.com"] + // The any operator is required for filter expressions on multi-valued properties. Read-only, Not nullable. Supports $filter. + ProxyAddresses []string `protobuf:"bytes,57,rep,name=proxy_addresses,json=proxyAddresses,proto3" json:"proxy_addresses,omitempty"` + // Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get + // an error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph). + // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. + // Returned only on $select. Read-only. Use invalidateAllRefreshTokens to reset. + RefreshTokensValidFromDateTime *timestamp.Timestamp `protobuf:"bytes,58,opt,name=refresh_tokens_valid_from_date_time,json=refreshTokensValidFromDateTime,proto3" json:"refresh_tokens_valid_from_date_time,omitempty"` + // A list for the user to enumerate their responsibilities. + Responsibilities []string `protobuf:"bytes,59,rep,name=responsibilities,proto3" json:"responsibilities,omitempty"` + // A list for the user to enumerate the schools they have attended. + Schools []string `protobuf:"bytes,60,rep,name=schools,proto3" json:"schools,omitempty"` + // *true* if the Outlook global address list should contain this user, otherwise *false*. If not set, this will be treated as *true*. + // For users invited through the invitation manager, this property will be set to *false*. + ShowInAddressList bool `protobuf:"varint,61,opt,name=show_in_address_list,json=showInAddressList,proto3" json:"show_in_address_list,omitempty"` + // Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get + // an error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph). + // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. + // Read-only. Use revokeSignInSessions to reset. + SignInSessionsValidFromDateTime *timestamp.Timestamp `protobuf:"bytes,62,opt,name=sign_in_sessions_valid_from_date_time,json=signInSessionsValidFromDateTime,proto3" json:"sign_in_sessions_valid_from_date_time,omitempty"` + // A list for the user to enumerate their skills. + Skills []string `protobuf:"bytes,64,rep,name=skills,proto3" json:"skills,omitempty"` + // The state or province in the user's address. Supports $filter + State string `protobuf:"bytes,65,opt,name=state,proto3" json:"state,omitempty"` + // The street address of the user's place of business. + StreetAddress string `protobuf:"bytes,66,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + // The user's surname (family name or last name). Supports $filter. + Surname string `protobuf:"bytes,67,opt,name=surname,proto3" json:"surname,omitempty"` + // A two letter country code (ISO standard 3166). Required for users that will be assigned licenses due to legal requirement to check for availability of services in countries. Examples include: "US", "JP", and "GB". Not nullable. Supports $filter. + UsageLocation string `protobuf:"bytes,68,opt,name=usage_location,json=usageLocation,proto3" json:"usage_location,omitempty"` + // The user principal name (UPN) of the user. The UPN is an Internet-style login name for the user based on the Internet standard RFC 822. + // By convention, this should map to the user's email name. The general format is alias@domain, + // where domain must be present in the tenant’s collection of verified domains. + // This property is required when a user is created. The verified domains for the tenant can be accessed + // from the verifiedDomains property of organization. Supports $filter and $orderby. + UserPrincipalName string `protobuf:"bytes,69,opt,name=user_principal_name,json=userPrincipalName,proto3" json:"user_principal_name,omitempty"` + // A string value that can be used to classify user types in your directory, such as “Member” and “Guest”. Supports $filter. + UserType string `protobuf:"bytes,70,opt,name=user_type,json=userType,proto3" json:"user_type,omitempty"` + // The users password. Used when updating the users password + // TODO: the username is stored as an identity? + Password string `protobuf:"bytes,71,opt,name=password,proto3" json:"password,omitempty"` + // The groups, directory roles and administrative units that the user is a member of. Read-only. Nullable. + MemberOf []*Group `protobuf:"bytes,100,rep,name=memberOf,proto3" json:"memberOf,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Account) Reset() { *m = Account{} } @@ -369,23 +533,107 @@ func (m *Account) XXX_DiscardUnknown() { var xxx_messageInfo_Account proto.InternalMessageInfo -func (m *Account) GetAccountId() string { +func (m *Account) GetAboutMe() string { if m != nil { - return m.AccountId + return m.AboutMe } return "" } -func (m *Account) GetIdentities() []*Identities { +func (m *Account) GetAccountEnabled() bool { if m != nil { - return m.Identities + return m.AccountEnabled + } + return false +} + +func (m *Account) GetAgeGroup() string { + if m != nil { + return m.AgeGroup + } + return "" +} + +func (m *Account) GetAssignedLicenses() []*AssignedLicense { + if m != nil { + return m.AssignedLicenses } return nil } -func (m *Account) GetUsername() string { +func (m *Account) GetAssignedPlans() []*AssignedPlan { if m != nil { - return m.Username + return m.AssignedPlans + } + return nil +} + +func (m *Account) GetBirthday() *timestamp.Timestamp { + if m != nil { + return m.Birthday + } + return nil +} + +func (m *Account) GetBusinessPhones() []string { + if m != nil { + return m.BusinessPhones + } + return nil +} + +func (m *Account) GetCity() string { + if m != nil { + return m.City + } + return "" +} + +func (m *Account) GetCompanyName() string { + if m != nil { + return m.CompanyName + } + return "" +} + +func (m *Account) GetConsentProvidedForMinor() string { + if m != nil { + return m.ConsentProvidedForMinor + } + return "" +} + +func (m *Account) GetCountry() string { + if m != nil { + return m.Country + } + return "" +} + +func (m *Account) GetCreatedDateTime() *timestamp.Timestamp { + if m != nil { + return m.CreatedDateTime + } + return nil +} + +func (m *Account) GetCreationType() string { + if m != nil { + return m.CreationType + } + return "" +} + +func (m *Account) GetDeletedDateTime() *timestamp.Timestamp { + if m != nil { + return m.DeletedDateTime + } + return nil +} + +func (m *Account) GetDepartment() string { + if m != nil { + return m.Department } return "" } @@ -397,6 +645,104 @@ func (m *Account) GetDisplayName() string { return "" } +func (m *Account) GetEmployeeId() string { + if m != nil { + return m.EmployeeId + } + return "" +} + +func (m *Account) GetExternalUserState() string { + if m != nil { + return m.ExternalUserState + } + return "" +} + +func (m *Account) GetExternalUserStateChangeDateTime() *timestamp.Timestamp { + if m != nil { + return m.ExternalUserStateChangeDateTime + } + return nil +} + +func (m *Account) GetFaxNumber() string { + if m != nil { + return m.FaxNumber + } + return "" +} + +func (m *Account) GetGivenName() string { + if m != nil { + return m.GivenName + } + return "" +} + +func (m *Account) GetHireDate() *timestamp.Timestamp { + if m != nil { + return m.HireDate + } + return nil +} + +func (m *Account) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *Account) GetIdentities() []*Identities { + if m != nil { + return m.Identities + } + return nil +} + +func (m *Account) GetImAddresses() []string { + if m != nil { + return m.ImAddresses + } + return nil +} + +func (m *Account) GetInterests() []string { + if m != nil { + return m.Interests + } + return nil +} + +func (m *Account) GetIsResourceAccount() bool { + if m != nil { + return m.IsResourceAccount + } + return false +} + +func (m *Account) GetJobTitle() string { + if m != nil { + return m.JobTitle + } + return "" +} + +func (m *Account) GetLastPasswordChangeDateTime() *timestamp.Timestamp { + if m != nil { + return m.LastPasswordChangeDateTime + } + return nil +} + +func (m *Account) GetLegalAgeGroupClassification() string { + if m != nil { + return m.LegalAgeGroupClassification + } + return "" +} + func (m *Account) GetMail() string { if m != nil { return m.Mail @@ -404,16 +750,269 @@ func (m *Account) GetMail() string { return "" } -func (m *Account) GetGroups() []*Group { +func (m *Account) GetMailNickname() string { if m != nil { - return m.Groups + return m.MailNickname + } + return "" +} + +func (m *Account) GetMobilePhone() string { + if m != nil { + return m.MobilePhone + } + return "" +} + +func (m *Account) GetMySite() string { + if m != nil { + return m.MySite + } + return "" +} + +func (m *Account) GetOfficeLocation() string { + if m != nil { + return m.OfficeLocation + } + return "" +} + +func (m *Account) GetOnPremisesDistinguishedName() string { + if m != nil { + return m.OnPremisesDistinguishedName + } + return "" +} + +func (m *Account) GetOnPremisesDomainName() string { + if m != nil { + return m.OnPremisesDomainName + } + return "" +} + +func (m *Account) GetOnPremisesImmutableId() string { + if m != nil { + return m.OnPremisesImmutableId + } + return "" +} + +func (m *Account) GetOnPremisesLastSyncDateTime() *timestamp.Timestamp { + if m != nil { + return m.OnPremisesLastSyncDateTime + } + return nil +} + +func (m *Account) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { + if m != nil { + return m.OnPremisesProvisioningErrors + } + return nil +} + +func (m *Account) GetOnPremisesSamAccountName() string { + if m != nil { + return m.OnPremisesSamAccountName + } + return "" +} + +func (m *Account) GetOnPremisesSecurityIdentifier() string { + if m != nil { + return m.OnPremisesSecurityIdentifier + } + return "" +} + +func (m *Account) GetOnPremisesSyncEnabled() bool { + if m != nil { + return m.OnPremisesSyncEnabled + } + return false +} + +func (m *Account) GetOnPremisesUserPrincipalName() string { + if m != nil { + return m.OnPremisesUserPrincipalName + } + return "" +} + +func (m *Account) GetOtherMails() []string { + if m != nil { + return m.OtherMails + } + return nil +} + +func (m *Account) GetPasswordPolicies() string { + if m != nil { + return m.PasswordPolicies + } + return "" +} + +func (m *Account) GetPastProjects() []string { + if m != nil { + return m.PastProjects + } + return nil +} + +func (m *Account) GetPostalCode() string { + if m != nil { + return m.PostalCode + } + return "" +} + +func (m *Account) GetPreferredDataLocation() string { + if m != nil { + return m.PreferredDataLocation + } + return "" +} + +func (m *Account) GetPreferredLanguage() string { + if m != nil { + return m.PreferredLanguage + } + return "" +} + +func (m *Account) GetPreferredName() string { + if m != nil { + return m.PreferredName + } + return "" +} + +func (m *Account) GetProxyAddresses() []string { + if m != nil { + return m.ProxyAddresses + } + return nil +} + +func (m *Account) GetRefreshTokensValidFromDateTime() *timestamp.Timestamp { + if m != nil { + return m.RefreshTokensValidFromDateTime + } + return nil +} + +func (m *Account) GetResponsibilities() []string { + if m != nil { + return m.Responsibilities + } + return nil +} + +func (m *Account) GetSchools() []string { + if m != nil { + return m.Schools + } + return nil +} + +func (m *Account) GetShowInAddressList() bool { + if m != nil { + return m.ShowInAddressList + } + return false +} + +func (m *Account) GetSignInSessionsValidFromDateTime() *timestamp.Timestamp { + if m != nil { + return m.SignInSessionsValidFromDateTime + } + return nil +} + +func (m *Account) GetSkills() []string { + if m != nil { + return m.Skills + } + return nil +} + +func (m *Account) GetState() string { + if m != nil { + return m.State + } + return "" +} + +func (m *Account) GetStreetAddress() string { + if m != nil { + return m.StreetAddress + } + return "" +} + +func (m *Account) GetSurname() string { + if m != nil { + return m.Surname + } + return "" +} + +func (m *Account) GetUsageLocation() string { + if m != nil { + return m.UsageLocation + } + return "" +} + +func (m *Account) GetUserPrincipalName() string { + if m != nil { + return m.UserPrincipalName + } + return "" +} + +func (m *Account) GetUserType() string { + if m != nil { + return m.UserType + } + return "" +} + +func (m *Account) GetPassword() string { + if m != nil { + return m.Password + } + return "" +} + +func (m *Account) GetMemberOf() []*Group { + if m != nil { + return m.MemberOf } return nil } type Identities struct { - SignInType string `protobuf:"bytes,1,opt,name=sign_in_type,json=signInType,proto3" json:"sign_in_type,omitempty"` - Issuer string `protobuf:"bytes,2,opt,name=issuer,proto3" json:"issuer,omitempty"` + // Specifies the user sign-in types in your directory, such as `emailAddress`, `userName` or `federated`. + // Here, federated represents a unique identifier for a user from an issuer, that can be in any format chosen by the issuer. + // Additional validation is enforced on *issuerAssignedId* when the sign-in type is set to `emailAddress` or `userName`. + // This property can also be set to any custom string. + SignInType string `protobuf:"bytes,1,opt,name=sign_in_type,json=signInType,proto3" json:"sign_in_type,omitempty"` + // Specifies the issuer of the identity, for example facebook.com. + // For local accounts (where signInType is not federated), this property is + // the local B2C tenant default domain name, for example contoso.onmicrosoft.com. + // For external users from other Azure AD organization, this will be the domain of + // the federated organization, for example contoso.com. + // Supports $filter. 512 character limit. + Issuer string `protobuf:"bytes,2,opt,name=issuer,proto3" json:"issuer,omitempty"` + // Specifies the unique identifier assigned to the user by the issuer. The combination of *issuer* and *issuerAssignedId* must be unique within the organization. Represents the sign-in name for the user, when signInType is set to emailAddress or userName (also known as local accounts). + // When *signInType* is set to: + // * `emailAddress`, (or starts with `emailAddress` like `emailAddress1`) *issuerAssignedId* must be a valid email address + // * `userName`, issuerAssignedId must be a valid local part of an email address + // Supports $filter. 512 character limit. IssuerAssignedId string `protobuf:"bytes,3,opt,name=issuer_assigned_id,json=issuerAssignedId,proto3" json:"issuer_assigned_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -595,7 +1194,7 @@ func (m *ListGroupsResponse) GetNextPageToken() string { } type GetGroupRequest struct { - GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -626,16 +1225,16 @@ func (m *GetGroupRequest) XXX_DiscardUnknown() { var xxx_messageInfo_GetGroupRequest proto.InternalMessageInfo -func (m *GetGroupRequest) GetGroupId() string { +func (m *GetGroupRequest) GetId() string { if m != nil { - return m.GroupId + return m.Id } return "" } type CreateGroupRequest struct { // The group id to use for this group - GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The account resource to create Group *Group `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -668,9 +1267,9 @@ func (m *CreateGroupRequest) XXX_DiscardUnknown() { var xxx_messageInfo_CreateGroupRequest proto.InternalMessageInfo -func (m *CreateGroupRequest) GetGroupId() string { +func (m *CreateGroupRequest) GetId() string { if m != nil { - return m.GroupId + return m.Id } return "" } @@ -733,7 +1332,7 @@ func (m *UpdateGroupRequest) GetUpdateMask() *field_mask.FieldMask { } type DeleteGroupRequest struct { - GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -764,18 +1363,349 @@ func (m *DeleteGroupRequest) XXX_DiscardUnknown() { var xxx_messageInfo_DeleteGroupRequest proto.InternalMessageInfo -func (m *DeleteGroupRequest) GetGroupId() string { +func (m *DeleteGroupRequest) GetId() string { if m != nil { - return m.GroupId + return m.Id + } + return "" +} + +type AddMemberRequest struct { + // The account id to add + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AddMemberRequest) Reset() { *m = AddMemberRequest{} } +func (m *AddMemberRequest) String() string { return proto.CompactTextString(m) } +func (*AddMemberRequest) ProtoMessage() {} +func (*AddMemberRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{14} +} + +func (m *AddMemberRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AddMemberRequest.Unmarshal(m, b) +} +func (m *AddMemberRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AddMemberRequest.Marshal(b, m, deterministic) +} +func (m *AddMemberRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddMemberRequest.Merge(m, src) +} +func (m *AddMemberRequest) XXX_Size() int { + return xxx_messageInfo_AddMemberRequest.Size(m) +} +func (m *AddMemberRequest) XXX_DiscardUnknown() { + xxx_messageInfo_AddMemberRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_AddMemberRequest proto.InternalMessageInfo + +func (m *AddMemberRequest) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type RemoveMemberRequest struct { + // The account id to remove + // TODO id in the body indt in the url? not necessary ... use empty? + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RemoveMemberRequest) Reset() { *m = RemoveMemberRequest{} } +func (m *RemoveMemberRequest) String() string { return proto.CompactTextString(m) } +func (*RemoveMemberRequest) ProtoMessage() {} +func (*RemoveMemberRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{15} +} + +func (m *RemoveMemberRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RemoveMemberRequest.Unmarshal(m, b) +} +func (m *RemoveMemberRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RemoveMemberRequest.Marshal(b, m, deterministic) +} +func (m *RemoveMemberRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RemoveMemberRequest.Merge(m, src) +} +func (m *RemoveMemberRequest) XXX_Size() int { + return xxx_messageInfo_RemoveMemberRequest.Size(m) +} +func (m *RemoveMemberRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RemoveMemberRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RemoveMemberRequest proto.InternalMessageInfo + +func (m *RemoveMemberRequest) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type ListMembersRequest struct { + PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A pagination token returned from a previous call to `Get` + // that indicates from where search should continue + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. Search criteria used to select the groups to return. + // If no search criteria is specified then all groups will be + // returned + // + // TODO update query language + // Query expressions can be used to restrict results based upon + // the account properties where the operators `=`, `NOT`, `AND` and `OR` + // can be used along with the suffix wildcard symbol `*`. + // + // The string properties in a query expression should use escaped quotes + // for values that include whitespace to prevent unexpected behavior. + // + // Some example queries are: + // + // * Query `display_name=Th*` returns accounts whose display_name + // starts with "Th" + // * Query `display_name=\\"Test String\\"` returns groups with + // display names that include both "Test" and "String" + Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListMembersRequest) Reset() { *m = ListMembersRequest{} } +func (m *ListMembersRequest) String() string { return proto.CompactTextString(m) } +func (*ListMembersRequest) ProtoMessage() {} +func (*ListMembersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{16} +} + +func (m *ListMembersRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListMembersRequest.Unmarshal(m, b) +} +func (m *ListMembersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListMembersRequest.Marshal(b, m, deterministic) +} +func (m *ListMembersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListMembersRequest.Merge(m, src) +} +func (m *ListMembersRequest) XXX_Size() int { + return xxx_messageInfo_ListMembersRequest.Size(m) +} +func (m *ListMembersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListMembersRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListMembersRequest proto.InternalMessageInfo + +func (m *ListMembersRequest) GetPageSize() int32 { + if m != nil { + return m.PageSize + } + return 0 +} + +func (m *ListMembersRequest) GetPageToken() string { + if m != nil { + return m.PageToken + } + return "" +} + +func (m *ListMembersRequest) GetQuery() string { + if m != nil { + return m.Query + } + return "" +} + +type ListMembersResponse struct { + // The field name should match the noun "members" in the method name. There + // will be a maximum number of items returned based on the page_size field + // in the request + Members []*Account `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` + // Token to retrieve the next page of results, or empty if there are no + // more results in the list + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListMembersResponse) Reset() { *m = ListMembersResponse{} } +func (m *ListMembersResponse) String() string { return proto.CompactTextString(m) } +func (*ListMembersResponse) ProtoMessage() {} +func (*ListMembersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{17} +} + +func (m *ListMembersResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListMembersResponse.Unmarshal(m, b) +} +func (m *ListMembersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListMembersResponse.Marshal(b, m, deterministic) +} +func (m *ListMembersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListMembersResponse.Merge(m, src) +} +func (m *ListMembersResponse) XXX_Size() int { + return xxx_messageInfo_ListMembersResponse.Size(m) +} +func (m *ListMembersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListMembersResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListMembersResponse proto.InternalMessageInfo + +func (m *ListMembersResponse) GetMembers() []*Account { + if m != nil { + return m.Members + } + return nil +} + +func (m *ListMembersResponse) GetNextPageToken() string { + if m != nil { + return m.NextPageToken } return "" } type Group struct { - // the non reassignable and stable group_id of a group - GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` - Groupname string `protobuf:"bytes,2,opt,name=groupname,proto3" json:"groupname,omitempty"` - Accounts []*Account `protobuf:"bytes,3,rep,name=accounts,proto3" json:"accounts,omitempty"` + // Indicates if people external to the organization can send messages to the group. Default value is false. + // Returned only on $select. + AllowExternalSenders bool `protobuf:"varint,1,opt,name=allow_external_senders,json=allowExternalSenders,proto3" json:"allow_external_senders,omitempty"` + // The list of sensitivity label pairs (label ID, label name) associated with an Office 365 group. + //Returned only on $select. Read-only. + AssignedLabels []*AssignedLabel `protobuf:"bytes,2,rep,name=assigned_labels,json=assignedLabels,proto3" json:"assigned_labels,omitempty"` + // The licenses that are assigned to the group. + // Returned only on $select. Read-only. + AssignedLicenses []*AssignedLicense `protobuf:"bytes,3,rep,name=assigned_licenses,json=assignedLicenses,proto3" json:"assigned_licenses,omitempty"` + // Indicates if new members added to the group will be auto-subscribed to receive email notifications. You can set this property in a PATCH request for the group; do not set it in the initial POST request that creates the group. Default value is false. + // Returned only on $select. + AutoSubscribeNewMembers bool `protobuf:"varint,4,opt,name=auto_subscribe_new_members,json=autoSubscribeNewMembers,proto3" json:"auto_subscribe_new_members,omitempty"` + // Describes a classification for the group (such as low, medium or high business impact). Valid values for this property are defined by creating a ClassificationList setting value, based on the template definition. + // Returned by default. + Classification string `protobuf:"bytes,5,opt,name=classification,proto3" json:"classification,omitempty"` + // App ID of the app used to create the group. Can be null for some groups. + // Returned by default. Read-only. Supports $filter. + CreatedByAppId string `protobuf:"bytes,6,opt,name=created_by_app_id,json=createdByAppId,proto3" json:"created_by_app_id,omitempty"` + // Timestamp of when the group was created. The value cannot be modified and is automatically populated when the group is created + // Returned by default. Read-only. + CreatedDateTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=created_date_time,json=createdDateTime,proto3" json:"created_date_time,omitempty"` + // For some Azure Active Directory objects (user, group, application), if the object is deleted, it is first logically deleted, and this property is updated with the date and time when the object was deleted. Otherwise this property is null. If the object is restored, this property is updated to null. + // Returned by default. Read-only. + DeletedDateTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=deleted_date_time,json=deletedDateTime,proto3" json:"deleted_date_time,omitempty"` + // An optional description for the group. Returned by default. + Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` + // The display name for the group. This property is required when a group is created and cannot be cleared during updates. + // Returned by default. Supports $filter and $orderby. + DisplayName string `protobuf:"bytes,10,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Timestamp of when the group is set to expire. The value cannot be modified and is automatically populated when the group is created. + // Returned by default. Read-only. + ExpirationDateTime *timestamp.Timestamp `protobuf:"bytes,11,opt,name=expiration_date_time,json=expirationDateTime,proto3" json:"expiration_date_time,omitempty"` + // Specifies the group type and its membership. + // If the collection contains `Unified` then the group is an Office 365 group; otherwise it's a security group. + // If the collection includes `DynamicMembership`, the group has dynamic membership; otherwise, membership is static. + // Returned by default. Supports $filter. + GroupTypes []string `protobuf:"bytes,12,rep,name=group_types,json=groupTypes,proto3" json:"group_types,omitempty"` + // Indicates whether there are members in this group that have license errors from its group-based license assignment. + // This property is never returned on a GET operation. You can use it as a $filter argument to get groups that have members with license errors (that is, filter for this property being true). + HasMembersWithLicenseErrors bool `protobuf:"varint,13,opt,name=has_members_with_license_errors,json=hasMembersWithLicenseErrors,proto3" json:"has_members_with_license_errors,omitempty"` + // True if the group is not displayed in certain parts of the Outlook user interface: + // in the Address Book, in address lists for selecting message recipients, and in the Browse Groups dialog for searching groups; false otherwise. Default value is false. + // Returned only on $select. + HideFromAddressLists bool `protobuf:"varint,14,opt,name=hide_from_address_lists,json=hideFromAddressLists,proto3" json:"hide_from_address_lists,omitempty"` + // True if the group is not displayed in Outlook clients, such as Outlook for Windows and Outlook on the web, false otherwise. Default value is false. + // Returned only on $select. + HideFromOutlookClients bool `protobuf:"varint,15,opt,name=hide_from_outlook_clients,json=hideFromOutlookClients,proto3" json:"hide_from_outlook_clients,omitempty"` + // The unique identifier for the group. + // Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. + Id string `protobuf:"bytes,16,opt,name=id,proto3" json:"id,omitempty"` + // Indicates whether the signed-in user is subscribed to receive email conversations. Default value is true. + // Returned only on $select. + IsSubscribedByMail bool `protobuf:"varint,17,opt,name=is_subscribed_by_mail,json=isSubscribedByMail,proto3" json:"is_subscribed_by_mail,omitempty"` + // Indicates status of the group license assignment to all members of the group. + // Possible values: `QueuedForProcessing`, `ProcessingInProgress`, and `ProcessingComplete`. + // Returned only on $select. Read-only. + LicenseProcessingState string `protobuf:"bytes,18,opt,name=license_processing_state,json=licenseProcessingState,proto3" json:"license_processing_state,omitempty"` + // The SMTP address for the group, for example, "serviceadmins@contoso.onmicrosoft.com". + // Returned by default. Read-only. Supports $filter. + Mail string `protobuf:"bytes,19,opt,name=mail,proto3" json:"mail,omitempty"` + // Specifies whether the group is mail-enabled. + // Returned by default. + MailEnabled bool `protobuf:"varint,20,opt,name=mail_enabled,json=mailEnabled,proto3" json:"mail_enabled,omitempty"` + // The mail alias for the group, unique in the organization. This property must be specified when a group is created. + // Returned by default. Supports $filter. + MailNickname string `protobuf:"bytes,21,opt,name=mail_nickname,json=mailNickname,proto3" json:"mail_nickname,omitempty"` + // The rule that determines members for this group if the group is a dynamic group (groupTypes contains DynamicMembership). For more information about the syntax of the membership rule, see Membership Rules syntax. + // Returned by default. + MembershipRule string `protobuf:"bytes,22,opt,name=membership_rule,json=membershipRule,proto3" json:"membership_rule,omitempty"` + // Indicates whether the dynamic membership processing is on or paused. Possible values are "On" or "Paused". + // Returned by default. + MembershipRuleProcessingState string `protobuf:"bytes,23,opt,name=membership_rule_processing_state,json=membershipRuleProcessingState,proto3" json:"membership_rule_processing_state,omitempty"` + // Contains the on-premises domain FQDN, also called dnsDomainName synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. + // Returned by default. Read-only. + OnPremisesDomainName string `protobuf:"bytes,24,opt,name=on_premises_domain_name,json=onPremisesDomainName,proto3" json:"on_premises_domain_name,omitempty"` + // Indicates the last time at which the group was synced with the on-premises directory. + // Returned by default. Read-only. Supports $filter. + OnPremisesLastSyncDateTime string `protobuf:"bytes,25,opt,name=on_premises_last_sync_date_time,json=onPremisesLastSyncDateTime,proto3" json:"on_premises_last_sync_date_time,omitempty"` + // Contains the on-premises netBios name synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. + // Returned by default. Read-only. + OnPremisesNetBiosName string `protobuf:"bytes,26,opt,name=on_premises_net_bios_name,json=onPremisesNetBiosName,proto3" json:"on_premises_net_bios_name,omitempty"` + // Errors when using synchronization during provisioning. + OnPremisesProvisioningErrors []*OnPremisesProvisioningError `protobuf:"bytes,27,rep,name=on_premises_provisioning_errors,json=onPremisesProvisioningErrors,proto3" json:"on_premises_provisioning_errors,omitempty"` + // Contains the on-premises `samAccountName` synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Returned by default. Read-only. + OnPremisesSamAccountName string `protobuf:"bytes,28,opt,name=on_premises_sam_account_name,json=onPremisesSamAccountName,proto3" json:"on_premises_sam_account_name,omitempty"` + // Contains the on-premises security identifier (SID) for the group that was synchronized from on-premises to the cloud. Returned by default. Read-only. + OnPremisesSecurityIdentifier string `protobuf:"bytes,29,opt,name=on_premises_security_identifier,json=onPremisesSecurityIdentifier,proto3" json:"on_premises_security_identifier,omitempty"` + // *true* if this group is synced from an on-premises directory; + // *false* if this group was originally synced from an on-premises directory but is no longer synced; + // null if this object has never been synced from an on-premises directory (default). + // Returned by default. Read-only. Supports $filter. + OnPremisesSyncEnabled bool `protobuf:"varint,30,opt,name=on_premises_sync_enabled,json=onPremisesSyncEnabled,proto3" json:"on_premises_sync_enabled,omitempty"` + // The preferred data location for the group. For more information, see OneDrive Online Multi-Geo. https://docs.microsoft.com/sharepoint/dev/solution-guidance/multigeo-introduction string preferredDataLocation = 53; + PreferredDataLocation string `protobuf:"bytes,31,opt,name=preferred_data_location,json=preferredDataLocation,proto3" json:"preferred_data_location,omitempty"` + // The preferred language for the user. Should follow ISO 639-1 Code; for example "en-US". + PreferredLanguage string `protobuf:"bytes,32,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` + // Email addresses for the group that direct to the same group mailbox. + // For example: ["SMTP: bob@contoso.com", "smtp: bob@sales.contoso.com"]. + // The any operator is required for filter expressions on multi-valued properties. + // Returned by default. Read-only. Not nullable. Supports $filter. + ProxyAddresses []string `protobuf:"bytes,33,rep,name=proxy_addresses,json=proxyAddresses,proto3" json:"proxy_addresses,omitempty"` + // Timestamp of when the group was last renewed. + // This cannot be modified directly and is only updated via the renew service action. + // Returned by default. Read-only. + RenewedDateTime *timestamp.Timestamp `protobuf:"bytes,34,opt,name=renewed_date_time,json=renewedDateTime,proto3" json:"renewed_date_time,omitempty"` + // Specifies the group behaviors that can be set for an Office 365 group during creation. This can be set only as part of creation (POST). Possible values are `AllowOnlyMembersToPost`, `HideGroupInOutlook`, `SubscribeNewGroupMembers`, `WelcomeEmailDisable`. For more information, see Set Microsoft 365 group behaviors and provisioning options. https://docs.microsoft.com/en-us/graph/group-set-options + ResourceBehaviorOptions []string `protobuf:"bytes,35,rep,name=resource_behavior_options,json=resourceBehaviorOptions,proto3" json:"resource_behavior_options,omitempty"` + // Specifies the group resources that are provisioned as part of Office 365 group creation, that are not normally part of default group creation. Possible value is `Team`. For more information, see Set Microsoft 365 group behaviors and provisioning options. https://docs.microsoft.com/en-us/graph/group-set-options + ResourceProvisioningOptions []string `protobuf:"bytes,36,rep,name=resource_provisioning_options,json=resourceProvisioningOptions,proto3" json:"resource_provisioning_options,omitempty"` + // Specifies whether the group is a security group. + // Returned by default. Supports $filter. + SecurityEnabled bool `protobuf:"varint,37,opt,name=security_enabled,json=securityEnabled,proto3" json:"security_enabled,omitempty"` + // Security identifier of the group, used in Windows scenarios. + // Returned by default. + SecurityIdentifier string `protobuf:"bytes,38,opt,name=security_identifier,json=securityIdentifier,proto3" json:"security_identifier,omitempty"` + // Specifies an Office 365 group's color theme. Possible values are Teal, Purple, Green, Blue, Pink, Orange or Red. + // Returned by default. + Theme string `protobuf:"bytes,39,opt,name=theme,proto3" json:"theme,omitempty"` + // Specifies the visibility of an Office 365 group. Possible values are: Private, Public, or Hiddenmembership; blank values are treated as public. See group visibility options to learn more. + // Visibility can be set only when a group is created; it is not editable. + // Visibility is supported only for unified groups; it is not supported for security groups. + // Returned by default. + Visibility string `protobuf:"bytes,43,opt,name=visibility,proto3" json:"visibility,omitempty"` + // Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable. + // TODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later + Members []*Account `protobuf:"bytes,100,rep,name=members,proto3" json:"members,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -785,7 +1715,7 @@ func (m *Group) Reset() { *m = Group{} } func (m *Group) String() string { return proto.CompactTextString(m) } func (*Group) ProtoMessage() {} func (*Group) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{14} + return fileDescriptor_e1e7723af4c007b7, []int{18} } func (m *Group) XXX_Unmarshal(b []byte) error { @@ -806,27 +1736,523 @@ func (m *Group) XXX_DiscardUnknown() { var xxx_messageInfo_Group proto.InternalMessageInfo -func (m *Group) GetGroupId() string { +func (m *Group) GetAllowExternalSenders() bool { if m != nil { - return m.GroupId + return m.AllowExternalSenders } - return "" + return false } -func (m *Group) GetGroupname() string { +func (m *Group) GetAssignedLabels() []*AssignedLabel { if m != nil { - return m.Groupname - } - return "" -} - -func (m *Group) GetAccounts() []*Account { - if m != nil { - return m.Accounts + return m.AssignedLabels } return nil } +func (m *Group) GetAssignedLicenses() []*AssignedLicense { + if m != nil { + return m.AssignedLicenses + } + return nil +} + +func (m *Group) GetAutoSubscribeNewMembers() bool { + if m != nil { + return m.AutoSubscribeNewMembers + } + return false +} + +func (m *Group) GetClassification() string { + if m != nil { + return m.Classification + } + return "" +} + +func (m *Group) GetCreatedByAppId() string { + if m != nil { + return m.CreatedByAppId + } + return "" +} + +func (m *Group) GetCreatedDateTime() *timestamp.Timestamp { + if m != nil { + return m.CreatedDateTime + } + return nil +} + +func (m *Group) GetDeletedDateTime() *timestamp.Timestamp { + if m != nil { + return m.DeletedDateTime + } + return nil +} + +func (m *Group) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Group) GetDisplayName() string { + if m != nil { + return m.DisplayName + } + return "" +} + +func (m *Group) GetExpirationDateTime() *timestamp.Timestamp { + if m != nil { + return m.ExpirationDateTime + } + return nil +} + +func (m *Group) GetGroupTypes() []string { + if m != nil { + return m.GroupTypes + } + return nil +} + +func (m *Group) GetHasMembersWithLicenseErrors() bool { + if m != nil { + return m.HasMembersWithLicenseErrors + } + return false +} + +func (m *Group) GetHideFromAddressLists() bool { + if m != nil { + return m.HideFromAddressLists + } + return false +} + +func (m *Group) GetHideFromOutlookClients() bool { + if m != nil { + return m.HideFromOutlookClients + } + return false +} + +func (m *Group) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *Group) GetIsSubscribedByMail() bool { + if m != nil { + return m.IsSubscribedByMail + } + return false +} + +func (m *Group) GetLicenseProcessingState() string { + if m != nil { + return m.LicenseProcessingState + } + return "" +} + +func (m *Group) GetMail() string { + if m != nil { + return m.Mail + } + return "" +} + +func (m *Group) GetMailEnabled() bool { + if m != nil { + return m.MailEnabled + } + return false +} + +func (m *Group) GetMailNickname() string { + if m != nil { + return m.MailNickname + } + return "" +} + +func (m *Group) GetMembershipRule() string { + if m != nil { + return m.MembershipRule + } + return "" +} + +func (m *Group) GetMembershipRuleProcessingState() string { + if m != nil { + return m.MembershipRuleProcessingState + } + return "" +} + +func (m *Group) GetOnPremisesDomainName() string { + if m != nil { + return m.OnPremisesDomainName + } + return "" +} + +func (m *Group) GetOnPremisesLastSyncDateTime() string { + if m != nil { + return m.OnPremisesLastSyncDateTime + } + return "" +} + +func (m *Group) GetOnPremisesNetBiosName() string { + if m != nil { + return m.OnPremisesNetBiosName + } + return "" +} + +func (m *Group) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { + if m != nil { + return m.OnPremisesProvisioningErrors + } + return nil +} + +func (m *Group) GetOnPremisesSamAccountName() string { + if m != nil { + return m.OnPremisesSamAccountName + } + return "" +} + +func (m *Group) GetOnPremisesSecurityIdentifier() string { + if m != nil { + return m.OnPremisesSecurityIdentifier + } + return "" +} + +func (m *Group) GetOnPremisesSyncEnabled() bool { + if m != nil { + return m.OnPremisesSyncEnabled + } + return false +} + +func (m *Group) GetPreferredDataLocation() string { + if m != nil { + return m.PreferredDataLocation + } + return "" +} + +func (m *Group) GetPreferredLanguage() string { + if m != nil { + return m.PreferredLanguage + } + return "" +} + +func (m *Group) GetProxyAddresses() []string { + if m != nil { + return m.ProxyAddresses + } + return nil +} + +func (m *Group) GetRenewedDateTime() *timestamp.Timestamp { + if m != nil { + return m.RenewedDateTime + } + return nil +} + +func (m *Group) GetResourceBehaviorOptions() []string { + if m != nil { + return m.ResourceBehaviorOptions + } + return nil +} + +func (m *Group) GetResourceProvisioningOptions() []string { + if m != nil { + return m.ResourceProvisioningOptions + } + return nil +} + +func (m *Group) GetSecurityEnabled() bool { + if m != nil { + return m.SecurityEnabled + } + return false +} + +func (m *Group) GetSecurityIdentifier() string { + if m != nil { + return m.SecurityIdentifier + } + return "" +} + +func (m *Group) GetTheme() string { + if m != nil { + return m.Theme + } + return "" +} + +func (m *Group) GetVisibility() string { + if m != nil { + return m.Visibility + } + return "" +} + +func (m *Group) GetMembers() []*Account { + if m != nil { + return m.Members + } + return nil +} + +type AssignedLabel struct { + // The unique identifier of the label. + LabelId string `protobuf:"bytes,1,opt,name=label_id,json=labelId,proto3" json:"label_id,omitempty"` + // The display name of the label. Read-only. + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AssignedLabel) Reset() { *m = AssignedLabel{} } +func (m *AssignedLabel) String() string { return proto.CompactTextString(m) } +func (*AssignedLabel) ProtoMessage() {} +func (*AssignedLabel) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{19} +} + +func (m *AssignedLabel) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AssignedLabel.Unmarshal(m, b) +} +func (m *AssignedLabel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AssignedLabel.Marshal(b, m, deterministic) +} +func (m *AssignedLabel) XXX_Merge(src proto.Message) { + xxx_messageInfo_AssignedLabel.Merge(m, src) +} +func (m *AssignedLabel) XXX_Size() int { + return xxx_messageInfo_AssignedLabel.Size(m) +} +func (m *AssignedLabel) XXX_DiscardUnknown() { + xxx_messageInfo_AssignedLabel.DiscardUnknown(m) +} + +var xxx_messageInfo_AssignedLabel proto.InternalMessageInfo + +func (m *AssignedLabel) GetLabelId() string { + if m != nil { + return m.LabelId + } + return "" +} + +func (m *AssignedLabel) GetDisplayName() string { + if m != nil { + return m.DisplayName + } + return "" +} + +type AssignedLicense struct { + SkuId string `protobuf:"bytes,1,opt,name=sku_id,json=skuId,proto3" json:"sku_id,omitempty"` + DisabledPlans []string `protobuf:"bytes,2,rep,name=disabled_plans,json=disabledPlans,proto3" json:"disabled_plans,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AssignedLicense) Reset() { *m = AssignedLicense{} } +func (m *AssignedLicense) String() string { return proto.CompactTextString(m) } +func (*AssignedLicense) ProtoMessage() {} +func (*AssignedLicense) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{20} +} + +func (m *AssignedLicense) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AssignedLicense.Unmarshal(m, b) +} +func (m *AssignedLicense) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AssignedLicense.Marshal(b, m, deterministic) +} +func (m *AssignedLicense) XXX_Merge(src proto.Message) { + xxx_messageInfo_AssignedLicense.Merge(m, src) +} +func (m *AssignedLicense) XXX_Size() int { + return xxx_messageInfo_AssignedLicense.Size(m) +} +func (m *AssignedLicense) XXX_DiscardUnknown() { + xxx_messageInfo_AssignedLicense.DiscardUnknown(m) +} + +var xxx_messageInfo_AssignedLicense proto.InternalMessageInfo + +func (m *AssignedLicense) GetSkuId() string { + if m != nil { + return m.SkuId + } + return "" +} + +func (m *AssignedLicense) GetDisabledPlans() []string { + if m != nil { + return m.DisabledPlans + } + return nil +} + +type AssignedPlan struct { + // The date and time at which the plan was assigned; for example: 2013-01-02T19:32:30Z. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z' + AssignedDateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=assigned_date_time,json=assignedDateTime,proto3" json:"assigned_date_time,omitempty"` + // For example, “Enabled”. + CapabilityStatus string `protobuf:"bytes,2,opt,name=capabilityStatus,proto3" json:"capabilityStatus,omitempty"` + // The name of the service; for example, “Exchange”. + Service string `protobuf:"bytes,3,opt,name=service,proto3" json:"service,omitempty"` + // A GUID that identifies the service plan. + ServicePlanId string `protobuf:"bytes,4,opt,name=servicePlanId,proto3" json:"servicePlanId,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AssignedPlan) Reset() { *m = AssignedPlan{} } +func (m *AssignedPlan) String() string { return proto.CompactTextString(m) } +func (*AssignedPlan) ProtoMessage() {} +func (*AssignedPlan) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{21} +} + +func (m *AssignedPlan) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AssignedPlan.Unmarshal(m, b) +} +func (m *AssignedPlan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AssignedPlan.Marshal(b, m, deterministic) +} +func (m *AssignedPlan) XXX_Merge(src proto.Message) { + xxx_messageInfo_AssignedPlan.Merge(m, src) +} +func (m *AssignedPlan) XXX_Size() int { + return xxx_messageInfo_AssignedPlan.Size(m) +} +func (m *AssignedPlan) XXX_DiscardUnknown() { + xxx_messageInfo_AssignedPlan.DiscardUnknown(m) +} + +var xxx_messageInfo_AssignedPlan proto.InternalMessageInfo + +func (m *AssignedPlan) GetAssignedDateTime() *timestamp.Timestamp { + if m != nil { + return m.AssignedDateTime + } + return nil +} + +func (m *AssignedPlan) GetCapabilityStatus() string { + if m != nil { + return m.CapabilityStatus + } + return "" +} + +func (m *AssignedPlan) GetService() string { + if m != nil { + return m.Service + } + return "" +} + +func (m *AssignedPlan) GetServicePlanId() string { + if m != nil { + return m.ServicePlanId + } + return "" +} + +type OnPremisesProvisioningError struct { + // Category of the provisioning error. Note: Currently, there is only one possible value. Possible value: PropertyConflict - indicates a property value is not unique. Other objects contain the same value for the property. + Category string `protobuf:"bytes,1,opt,name=category,proto3" json:"category,omitempty"` + // The date and time at which the error occurred. + OccurredDateTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=occurred_date_time,json=occurredDateTime,proto3" json:"occurred_date_time,omitempty"` + // Name of the directory property causing the error. Current possible values: UserPrincipalName or ProxyAddress + PropertyCausingError string `protobuf:"bytes,3,opt,name=property_causing_error,json=propertyCausingError,proto3" json:"property_causing_error,omitempty"` + // Value of the property causing the error. + Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *OnPremisesProvisioningError) Reset() { *m = OnPremisesProvisioningError{} } +func (m *OnPremisesProvisioningError) String() string { return proto.CompactTextString(m) } +func (*OnPremisesProvisioningError) ProtoMessage() {} +func (*OnPremisesProvisioningError) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{22} +} + +func (m *OnPremisesProvisioningError) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OnPremisesProvisioningError.Unmarshal(m, b) +} +func (m *OnPremisesProvisioningError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OnPremisesProvisioningError.Marshal(b, m, deterministic) +} +func (m *OnPremisesProvisioningError) XXX_Merge(src proto.Message) { + xxx_messageInfo_OnPremisesProvisioningError.Merge(m, src) +} +func (m *OnPremisesProvisioningError) XXX_Size() int { + return xxx_messageInfo_OnPremisesProvisioningError.Size(m) +} +func (m *OnPremisesProvisioningError) XXX_DiscardUnknown() { + xxx_messageInfo_OnPremisesProvisioningError.DiscardUnknown(m) +} + +var xxx_messageInfo_OnPremisesProvisioningError proto.InternalMessageInfo + +func (m *OnPremisesProvisioningError) GetCategory() string { + if m != nil { + return m.Category + } + return "" +} + +func (m *OnPremisesProvisioningError) GetOccurredDateTime() *timestamp.Timestamp { + if m != nil { + return m.OccurredDateTime + } + return nil +} + +func (m *OnPremisesProvisioningError) GetPropertyCausingError() string { + if m != nil { + return m.PropertyCausingError + } + return "" +} + +func (m *OnPremisesProvisioningError) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + func init() { proto.RegisterType((*ListAccountsRequest)(nil), "settings.ListAccountsRequest") proto.RegisterType((*ListAccountsResponse)(nil), "settings.ListAccountsResponse") @@ -842,69 +2268,209 @@ func init() { proto.RegisterType((*CreateGroupRequest)(nil), "settings.CreateGroupRequest") proto.RegisterType((*UpdateGroupRequest)(nil), "settings.UpdateGroupRequest") proto.RegisterType((*DeleteGroupRequest)(nil), "settings.DeleteGroupRequest") + proto.RegisterType((*AddMemberRequest)(nil), "settings.AddMemberRequest") + proto.RegisterType((*RemoveMemberRequest)(nil), "settings.RemoveMemberRequest") + proto.RegisterType((*ListMembersRequest)(nil), "settings.ListMembersRequest") + proto.RegisterType((*ListMembersResponse)(nil), "settings.ListMembersResponse") proto.RegisterType((*Group)(nil), "settings.Group") + proto.RegisterType((*AssignedLabel)(nil), "settings.AssignedLabel") + proto.RegisterType((*AssignedLicense)(nil), "settings.AssignedLicense") + proto.RegisterType((*AssignedPlan)(nil), "settings.AssignedPlan") + proto.RegisterType((*OnPremisesProvisioningError)(nil), "settings.OnPremisesProvisioningError") } func init() { proto.RegisterFile("accounts.proto", fileDescriptor_e1e7723af4c007b7) } var fileDescriptor_e1e7723af4c007b7 = []byte{ - // 925 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xd7, 0x36, 0x75, 0x62, 0x3f, 0x3b, 0x0d, 0x79, 0xb5, 0x5a, 0x7b, 0x63, 0x53, 0x33, 0x15, - 0x21, 0x0a, 0x61, 0xb7, 0x32, 0xe5, 0x92, 0x8a, 0x43, 0xca, 0x9f, 0xc8, 0x12, 0x20, 0xb4, 0x2d, - 0x20, 0x95, 0x83, 0xb5, 0xc9, 0x4e, 0xcd, 0x10, 0x7b, 0x77, 0xeb, 0x19, 0x5b, 0x71, 0x2b, 0x24, - 0xc4, 0x95, 0x23, 0x1f, 0x8d, 0x1b, 0x27, 0x0e, 0x7c, 0x10, 0xb4, 0x33, 0xb3, 0xde, 0x59, 0xef, - 0xc6, 0x49, 0x85, 0xc4, 0xc9, 0x33, 0xef, 0xbd, 0x79, 0xbf, 0xf7, 0xf7, 0xe7, 0x85, 0x3b, 0xfe, - 0xf9, 0x79, 0x34, 0x0b, 0x05, 0x77, 0xe2, 0x69, 0x24, 0x22, 0xac, 0x72, 0x2a, 0x04, 0x0b, 0x47, - 0xdc, 0x7e, 0x30, 0x8a, 0xa2, 0xd1, 0x98, 0xba, 0x7e, 0xcc, 0xdc, 0x97, 0x8c, 0x8e, 0x83, 0xe1, - 0x19, 0xfd, 0xc9, 0x9f, 0xb3, 0x68, 0xaa, 0x4c, 0xed, 0x8e, 0x61, 0xe0, 0x87, 0x61, 0x24, 0x7c, - 0xc1, 0xa2, 0x50, 0x3b, 0xb2, 0xf7, 0xb4, 0x56, 0xde, 0xce, 0x66, 0x2f, 0x5d, 0x3a, 0x89, 0xc5, - 0x42, 0x2b, 0x7b, 0xab, 0x4a, 0x05, 0x30, 0xf1, 0xf9, 0x85, 0xb2, 0x20, 0x73, 0xb8, 0xfb, 0x15, - 0xe3, 0xe2, 0x44, 0x47, 0xe7, 0xd1, 0x57, 0x33, 0xca, 0x05, 0xf6, 0xa0, 0x16, 0xfb, 0x23, 0x3a, - 0xe4, 0xec, 0x35, 0x6d, 0x59, 0x3d, 0xeb, 0xa0, 0xf2, 0x74, 0xe3, 0xef, 0x13, 0xcb, 0xab, 0x26, - 0xd2, 0x67, 0xec, 0x35, 0x45, 0x02, 0x20, 0x2d, 0x44, 0x74, 0x41, 0xc3, 0xd6, 0xad, 0x9e, 0x75, - 0x50, 0x53, 0x26, 0xf2, 0xe1, 0xf3, 0x44, 0x8a, 0x6d, 0xa8, 0xbc, 0x9a, 0xd1, 0xe9, 0xa2, 0xb5, - 0x91, 0xa9, 0x95, 0x84, 0x4c, 0xa0, 0x99, 0xc7, 0xe5, 0x71, 0x14, 0x72, 0x8a, 0x1f, 0x41, 0x35, - 0xad, 0x54, 0xcb, 0xea, 0x6d, 0x1c, 0xd4, 0xfb, 0xbb, 0x4e, 0x5a, 0x2a, 0x47, 0x5b, 0x7b, 0x4b, - 0x13, 0xdc, 0x87, 0x9d, 0x90, 0x5e, 0x8a, 0xe1, 0x6a, 0x28, 0xde, 0x76, 0x22, 0xfe, 0x36, 0x8d, - 0x84, 0xf4, 0x61, 0xf7, 0x94, 0xa6, 0x68, 0x69, 0x92, 0x5d, 0x00, 0xed, 0x68, 0xc8, 0x02, 0x99, - 0x65, 0xcd, 0xab, 0x69, 0xc9, 0x20, 0x20, 0x67, 0xd0, 0xfc, 0x6c, 0x4a, 0x7d, 0x41, 0xdf, 0xea, - 0x19, 0x7e, 0x08, 0x5b, 0xfa, 0x22, 0x43, 0x29, 0x4d, 0x20, 0xb5, 0x20, 0xbf, 0x5a, 0xd0, 0xfc, - 0x2e, 0x0e, 0x8a, 0x20, 0x86, 0x17, 0xeb, 0x3a, 0x2f, 0xf8, 0x04, 0xea, 0x33, 0xe9, 0x44, 0x76, - 0x56, 0xc3, 0xda, 0x8e, 0x6a, 0xbe, 0x93, 0x36, 0xdf, 0xf9, 0x32, 0x69, 0xfe, 0xd7, 0x3e, 0xbf, - 0xf0, 0x40, 0x99, 0x27, 0x67, 0xf2, 0x09, 0x34, 0x3f, 0xa7, 0x63, 0xfa, 0x96, 0x69, 0x92, 0xbf, - 0x2c, 0xd8, 0xd2, 0x2f, 0xae, 0xab, 0xc8, 0x63, 0x00, 0x16, 0xd0, 0x50, 0x30, 0xc1, 0x28, 0x6f, - 0xdd, 0x92, 0x5d, 0x6d, 0x66, 0xe9, 0x0c, 0x96, 0x3a, 0xcf, 0xb0, 0x43, 0x1b, 0xaa, 0x33, 0x4e, - 0xa7, 0xa1, 0x3f, 0xa1, 0x6a, 0x7e, 0xbc, 0xe5, 0x1d, 0xdf, 0x83, 0x46, 0xc0, 0x78, 0x3c, 0xf6, - 0x17, 0x43, 0xa9, 0xbf, 0x2d, 0xf5, 0x75, 0x2d, 0xfb, 0x26, 0x31, 0x41, 0xb8, 0x3d, 0xf1, 0xd9, - 0xb8, 0x55, 0x91, 0x2a, 0x79, 0xc6, 0x0f, 0x60, 0x73, 0x34, 0x8d, 0x66, 0x31, 0x6f, 0x6d, 0xca, - 0x20, 0x76, 0xb2, 0x20, 0x4e, 0x13, 0xb9, 0xa7, 0xd5, 0x44, 0x00, 0x64, 0x51, 0x61, 0x0f, 0x1a, - 0x9c, 0x8d, 0xc2, 0x21, 0x0b, 0x87, 0x62, 0x11, 0x53, 0x9d, 0x20, 0x24, 0xb2, 0x41, 0xf8, 0x7c, - 0x11, 0x53, 0xbc, 0x07, 0x9b, 0x8c, 0xf3, 0x19, 0x9d, 0xea, 0xe9, 0xd3, 0x37, 0x3c, 0x02, 0x54, - 0xa7, 0xa1, 0xcf, 0x13, 0x73, 0x1a, 0x24, 0x05, 0x52, 0xd9, 0xbc, 0xa3, 0x34, 0x27, 0x5a, 0x31, - 0x08, 0x88, 0x80, 0xdd, 0x64, 0x27, 0x64, 0x28, 0xff, 0xdf, 0x26, 0x52, 0x40, 0x13, 0x55, 0xef, - 0x61, 0x56, 0x2a, 0x6b, 0x6d, 0xa9, 0x6e, 0xbc, 0x81, 0x47, 0xb0, 0x73, 0x4a, 0x15, 0x4a, 0x9a, - 0x5a, 0x1b, 0xaa, 0xd2, 0x49, 0x36, 0x34, 0x5b, 0xf2, 0x3e, 0x08, 0xc8, 0xf7, 0x80, 0x6a, 0xf7, - 0x6e, 0xf8, 0x00, 0xdf, 0x87, 0x8a, 0x3c, 0xea, 0xe1, 0x2f, 0x84, 0xab, 0xb4, 0xe4, 0x12, 0x50, - 0xad, 0x5b, 0xce, 0xef, 0xf2, 0xb1, 0xb5, 0xee, 0xf1, 0x7f, 0x5b, 0x33, 0x17, 0x50, 0xad, 0xd9, - 0x4d, 0x4b, 0x10, 0x41, 0x45, 0x9a, 0xae, 0xcb, 0xba, 0x03, 0x35, 0x79, 0x94, 0x4b, 0xa0, 0xca, - 0x9e, 0x09, 0x72, 0x5c, 0xba, 0x71, 0x2d, 0x97, 0xf6, 0x7f, 0xaf, 0xc2, 0x4e, 0xca, 0xc7, 0xcf, - 0xe8, 0x74, 0xce, 0xce, 0x29, 0x9e, 0x43, 0xc3, 0xa4, 0x69, 0xec, 0x66, 0x0e, 0x4a, 0xfe, 0x36, - 0xec, 0x77, 0xaf, 0x52, 0xab, 0xa9, 0x22, 0xcd, 0xdf, 0xfe, 0xfc, 0xe7, 0x8f, 0x5b, 0x77, 0xb0, - 0xe1, 0xce, 0x1f, 0xb9, 0x4b, 0x12, 0x0f, 0x00, 0x32, 0x72, 0xc6, 0x3d, 0xa3, 0xfa, 0xab, 0x94, - 0x6d, 0x17, 0x13, 0x20, 0xfb, 0xd2, 0x67, 0x0f, 0xf7, 0x4c, 0x9f, 0xee, 0x9b, 0x8c, 0x90, 0x3e, - 0x3d, 0xfc, 0xe5, 0xd8, 0x3a, 0x44, 0x1f, 0xb6, 0x73, 0x74, 0x8e, 0x46, 0xb0, 0x65, 0x3c, 0x5f, - 0x86, 0xd5, 0x95, 0x58, 0xf7, 0x49, 0x2e, 0xfe, 0xe3, 0x25, 0x0f, 0x5f, 0xc2, 0x76, 0x8e, 0xcc, - 0x4d, 0x88, 0x32, 0x96, 0x2f, 0x83, 0x78, 0x2c, 0x21, 0x9c, 0xfe, 0xc3, 0xd2, 0x74, 0x9c, 0x7c, - 0x5a, 0x4b, 0xe4, 0x31, 0x6c, 0xe7, 0x48, 0xdc, 0x44, 0x2e, 0x63, 0x77, 0xfb, 0x5e, 0x61, 0x6c, - 0xbf, 0x48, 0xbe, 0x1b, 0xc8, 0x43, 0x09, 0xdf, 0x3d, 0x5c, 0x57, 0x4d, 0xfc, 0x11, 0x20, 0xa3, - 0x0c, 0xb3, 0x61, 0x05, 0xfa, 0xb2, 0x3b, 0xe5, 0x4a, 0x3d, 0x0f, 0x28, 0xd1, 0x1a, 0x08, 0x09, - 0x9a, 0x26, 0x94, 0x17, 0x50, 0x4d, 0x89, 0x02, 0xdb, 0xb9, 0x59, 0x30, 0x37, 0xc7, 0x5e, 0x5d, - 0x52, 0x42, 0xa4, 0xaf, 0x0e, 0xde, 0xcf, 0x7c, 0xb9, 0x6f, 0xd2, 0xc5, 0xd1, 0x33, 0xf0, 0x03, - 0xd4, 0x0d, 0x5a, 0xc1, 0xce, 0xea, 0x04, 0xac, 0x47, 0x68, 0x4b, 0x84, 0xbb, 0xc4, 0x88, 0xf6, - 0x58, 0x53, 0xc3, 0xcf, 0x50, 0x37, 0x78, 0xc5, 0x74, 0x5c, 0xa4, 0x9b, 0xa2, 0xe3, 0x23, 0xe9, - 0x78, 0xbf, 0xdf, 0x2d, 0x84, 0xee, 0x98, 0x09, 0x68, 0xac, 0x00, 0xea, 0x06, 0x93, 0x98, 0x58, - 0x45, 0x82, 0xb9, 0xb2, 0xcf, 0x0f, 0x24, 0x64, 0xfb, 0xf0, 0xaa, 0x6a, 0x3d, 0x6d, 0xbe, 0xc0, - 0xf8, 0x62, 0xa4, 0xbe, 0x1c, 0xdd, 0xf9, 0xa3, 0x27, 0xea, 0xfd, 0xa6, 0xfc, 0xf9, 0xf8, 0xdf, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xf5, 0xb2, 0x46, 0xcf, 0x0a, 0x00, 0x00, + // 3033 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x5b, 0x6f, 0x1c, 0x37, + 0xb2, 0x86, 0x64, 0x4b, 0x1a, 0x95, 0xee, 0xd4, 0x58, 0x6a, 0x8d, 0x2e, 0x56, 0xc6, 0x77, 0x3b, + 0x91, 0x1c, 0xc7, 0x71, 0x12, 0xfb, 0x24, 0x88, 0x25, 0x5f, 0x8e, 0x70, 0x7c, 0x11, 0x46, 0xce, + 0x09, 0x70, 0xce, 0x22, 0x0d, 0x4e, 0x37, 0x35, 0x43, 0xab, 0xbb, 0xd9, 0x69, 0xb2, 0x65, 0x4f, + 0x16, 0x01, 0x16, 0xfb, 0x07, 0xf6, 0x61, 0x9f, 0xf6, 0x6f, 0xec, 0x6f, 0xd8, 0xf7, 0x7d, 0xd8, + 0x3f, 0xb0, 0x0f, 0xfb, 0xbe, 0x7f, 0x61, 0xc1, 0x22, 0xd9, 0xd3, 0x73, 0x91, 0x26, 0x46, 0x80, + 0x3c, 0x69, 0x58, 0x55, 0xac, 0x62, 0xb1, 0x8a, 0xd5, 0xf5, 0x91, 0x82, 0x79, 0x1a, 0x04, 0x22, + 0x4f, 0x94, 0xdc, 0x49, 0x33, 0xa1, 0x04, 0xa9, 0x48, 0xa6, 0x14, 0x4f, 0x5a, 0xb2, 0x76, 0xb9, + 0x25, 0x44, 0x2b, 0x62, 0xbb, 0x34, 0xe5, 0xbb, 0xc7, 0x9c, 0x45, 0xa1, 0xdf, 0x64, 0x6d, 0x7a, + 0xca, 0x45, 0x66, 0x44, 0x6b, 0x1b, 0x25, 0x01, 0x9a, 0x24, 0x42, 0x51, 0xc5, 0x45, 0x62, 0x15, + 0xd5, 0xd6, 0x2d, 0x17, 0x47, 0xcd, 0xfc, 0x78, 0x97, 0xc5, 0xa9, 0xea, 0x58, 0xe6, 0x76, 0x3f, + 0xd3, 0x18, 0x88, 0xa9, 0x3c, 0xb1, 0x12, 0x97, 0xfb, 0x25, 0x14, 0x8f, 0x99, 0x54, 0x34, 0x4e, + 0x8d, 0x40, 0xfd, 0x14, 0x96, 0x5f, 0x70, 0xa9, 0x1e, 0xdb, 0xe5, 0x37, 0xd8, 0x8f, 0x39, 0x93, + 0x8a, 0x6c, 0xc3, 0x74, 0x4a, 0x5b, 0xcc, 0x97, 0xfc, 0x27, 0xe6, 0x8d, 0x6d, 0x8f, 0xdd, 0x9c, + 0xd8, 0xbb, 0xf0, 0xcf, 0xc7, 0x63, 0x8d, 0x8a, 0xa6, 0x1e, 0xf1, 0x9f, 0x18, 0xa9, 0x03, 0xa0, + 0x84, 0x12, 0x27, 0x2c, 0xf1, 0xc6, 0xb7, 0xc7, 0x6e, 0x4e, 0x1b, 0x11, 0x9c, 0xf8, 0x46, 0x53, + 0xc9, 0x1a, 0x4c, 0xfc, 0x98, 0xb3, 0xac, 0xe3, 0x5d, 0xe8, 0xb2, 0x0d, 0xa5, 0x1e, 0x43, 0xb5, + 0xd7, 0xae, 0x4c, 0x45, 0x22, 0x19, 0xf9, 0x04, 0x2a, 0x6e, 0x2b, 0xbd, 0xb1, 0xed, 0x0b, 0x37, + 0x67, 0xee, 0x2d, 0xed, 0xb8, 0xbd, 0xdc, 0xb1, 0xd2, 0x8d, 0x42, 0x84, 0x5c, 0x87, 0x85, 0x84, + 0xbd, 0x57, 0x7e, 0xff, 0x52, 0x1a, 0x73, 0x9a, 0x7c, 0xe8, 0x56, 0x52, 0xbf, 0x02, 0x4b, 0xcf, + 0x99, 0xb3, 0xe6, 0x9c, 0x9c, 0x87, 0x71, 0x1e, 0xa2, 0x77, 0xd3, 0x8d, 0x71, 0x1e, 0xd6, 0x8f, + 0xa0, 0xba, 0x9f, 0x31, 0xaa, 0xd8, 0xf9, 0x72, 0xe4, 0x0e, 0x4c, 0xd9, 0x05, 0xa0, 0xb1, 0xa1, + 0x4b, 0x74, 0x12, 0xf5, 0x3f, 0x8c, 0x41, 0xf5, 0xbb, 0x34, 0x1c, 0xd4, 0x5a, 0xd2, 0x32, 0x36, + 0x4a, 0x0b, 0x79, 0x04, 0x33, 0x39, 0x2a, 0xc1, 0xe0, 0x5a, 0xb3, 0xb5, 0x1d, 0x13, 0xdd, 0x1d, + 0x17, 0xdd, 0x9d, 0x67, 0x3a, 0xfe, 0x2f, 0xa9, 0x3c, 0x69, 0x80, 0x11, 0xd7, 0xbf, 0xeb, 0xd7, + 0xa1, 0xfa, 0x84, 0x45, 0x6c, 0x94, 0x5f, 0xf5, 0x7f, 0x7b, 0x30, 0x65, 0x45, 0xc8, 0x1a, 0x54, + 0x68, 0x53, 0xe4, 0xca, 0x8f, 0x99, 0x95, 0x98, 0xc2, 0xf1, 0x4b, 0x46, 0x6e, 0xc0, 0x82, 0x5d, + 0x96, 0xcf, 0x12, 0xda, 0x8c, 0x58, 0x88, 0xeb, 0xa9, 0x34, 0xdc, 0x21, 0x78, 0x6a, 0xa8, 0x64, + 0x1d, 0xa6, 0x75, 0x58, 0x5a, 0x99, 0xc8, 0x53, 0x93, 0x02, 0x8d, 0x0a, 0x6d, 0xb1, 0xe7, 0x7a, + 0x4c, 0x9e, 0xc1, 0x12, 0x95, 0x92, 0xb7, 0x12, 0x16, 0xfa, 0x11, 0x0f, 0x58, 0x22, 0x99, 0xf4, + 0x2e, 0x62, 0xc4, 0xd7, 0x4a, 0x1b, 0x61, 0x45, 0x5e, 0x18, 0x89, 0xc6, 0x22, 0xed, 0x25, 0x48, + 0xf2, 0x35, 0xcc, 0x17, 0x7a, 0xd2, 0x88, 0x26, 0xd2, 0x9b, 0x40, 0x25, 0x2b, 0x83, 0x4a, 0x0e, + 0x23, 0x9a, 0x34, 0xe6, 0x68, 0x69, 0x24, 0xc9, 0x03, 0xa8, 0x34, 0x79, 0xa6, 0xda, 0x21, 0xed, + 0x78, 0x93, 0x67, 0xec, 0xea, 0x1b, 0x77, 0x66, 0x1a, 0x85, 0xac, 0xde, 0x84, 0x66, 0x2e, 0x79, + 0xc2, 0xa4, 0xf4, 0xd3, 0xb6, 0x48, 0x98, 0xf4, 0xa6, 0xb6, 0x2f, 0xdc, 0x9c, 0x6e, 0xcc, 0x3b, + 0xf2, 0x21, 0x52, 0x09, 0x81, 0x8b, 0x01, 0x57, 0x1d, 0xaf, 0x82, 0xfe, 0xe3, 0x6f, 0xf2, 0x11, + 0xcc, 0x06, 0x22, 0x4e, 0x69, 0xd2, 0xf1, 0x13, 0x1a, 0x33, 0x6f, 0x1a, 0x79, 0x33, 0x96, 0xf6, + 0x8a, 0xc6, 0x8c, 0x3c, 0x82, 0x5a, 0xa0, 0x0f, 0x44, 0xa2, 0xfc, 0x34, 0x13, 0xa7, 0x3c, 0x64, + 0xa1, 0x7f, 0x2c, 0x32, 0x3f, 0xe6, 0x89, 0xc8, 0x3c, 0xc0, 0x09, 0xab, 0x56, 0xe2, 0xd0, 0x0a, + 0x3c, 0x13, 0xd9, 0x4b, 0xcd, 0x26, 0x1e, 0x4c, 0x61, 0x20, 0xb2, 0x8e, 0x37, 0x63, 0x62, 0x67, + 0x87, 0x7a, 0xd7, 0x03, 0x4c, 0xf1, 0xd0, 0xc7, 0x6c, 0xd2, 0xe5, 0xc0, 0x9b, 0x1d, 0xe9, 0xf7, + 0x82, 0x9d, 0xf4, 0x84, 0x2a, 0xa6, 0xa9, 0xe4, 0x0a, 0xcc, 0x21, 0x89, 0x8b, 0xc4, 0x57, 0x9d, + 0x94, 0x79, 0x73, 0x68, 0x67, 0xd6, 0x11, 0xdf, 0x74, 0x52, 0xa6, 0x8d, 0x85, 0x98, 0x77, 0x65, + 0x63, 0xf3, 0xa3, 0x8d, 0xd9, 0x49, 0x85, 0xb1, 0x2d, 0x80, 0x90, 0xa5, 0x34, 0x53, 0x31, 0x4b, + 0x94, 0xb7, 0x80, 0x96, 0x4a, 0x14, 0xbd, 0x9d, 0x21, 0x97, 0x69, 0x44, 0xed, 0x76, 0x2e, 0x9a, + 0xed, 0xb4, 0x34, 0xdc, 0xce, 0xcb, 0x30, 0xc3, 0xe2, 0x34, 0x12, 0x1d, 0xc6, 0x7c, 0x1e, 0x7a, + 0x4b, 0x46, 0x87, 0x23, 0x1d, 0x84, 0x64, 0x07, 0x96, 0xd9, 0x7b, 0xc5, 0xb2, 0x84, 0x46, 0x7e, + 0x2e, 0x59, 0xe6, 0x4b, 0x45, 0x15, 0xf3, 0x08, 0x0a, 0x2e, 0x39, 0xd6, 0x77, 0x92, 0x65, 0x47, + 0x9a, 0x41, 0x38, 0x5c, 0x1d, 0x22, 0xef, 0x07, 0x6d, 0x9a, 0xb4, 0x58, 0xc9, 0xdd, 0xe5, 0x91, + 0xee, 0x5e, 0x1e, 0x50, 0xbe, 0x8f, 0x4a, 0x0a, 0xf7, 0x37, 0x01, 0x8e, 0xe9, 0x7b, 0x3f, 0xc9, + 0xe3, 0x26, 0xcb, 0xbc, 0x2a, 0xae, 0x68, 0xfa, 0x98, 0xbe, 0x7f, 0x85, 0x04, 0xcd, 0x6e, 0xf1, + 0x53, 0x96, 0x18, 0xdf, 0x2f, 0x19, 0x36, 0x52, 0xd0, 0xf3, 0x2f, 0x60, 0xba, 0xcd, 0x33, 0xb3, + 0x24, 0x6f, 0x65, 0x74, 0x86, 0x6b, 0x61, 0x6d, 0xda, 0x56, 0x87, 0xd5, 0xa2, 0xea, 0xdd, 0x07, + 0xe0, 0x21, 0x4b, 0x14, 0x57, 0x9c, 0x49, 0xcf, 0xc3, 0x43, 0x56, 0xed, 0x1e, 0xb2, 0x83, 0x82, + 0xd7, 0x28, 0xc9, 0xe9, 0xd8, 0xf0, 0xd8, 0xa7, 0x61, 0x98, 0x31, 0xa9, 0x4f, 0xf8, 0x1a, 0x1e, + 0x92, 0x19, 0x1e, 0x3f, 0x76, 0x24, 0xb2, 0x01, 0xd3, 0x3c, 0x51, 0x2c, 0x63, 0x52, 0x49, 0xaf, + 0x86, 0xfc, 0x2e, 0x41, 0x07, 0x86, 0x4b, 0x3f, 0x63, 0x52, 0xe4, 0x59, 0xc0, 0x7c, 0x57, 0x32, + 0xd7, 0xb1, 0xe2, 0x2c, 0x71, 0xfd, 0xe5, 0x40, 0x8e, 0x2b, 0x5c, 0xeb, 0x30, 0xfd, 0x56, 0x34, + 0x7d, 0xc5, 0x55, 0xc4, 0xbc, 0x0d, 0x53, 0x74, 0xde, 0x8a, 0xe6, 0x1b, 0x3d, 0x26, 0x3f, 0xc0, + 0x56, 0x44, 0xa5, 0xfe, 0x5c, 0x48, 0xf9, 0x4e, 0x64, 0xe1, 0x60, 0xbc, 0x36, 0x47, 0xee, 0x50, + 0x4d, 0x6b, 0x38, 0xb4, 0x0a, 0xfa, 0x42, 0xb5, 0x0f, 0x5b, 0x11, 0x6b, 0xd1, 0xc8, 0x2f, 0xea, + 0x9e, 0x1f, 0x44, 0xba, 0xe0, 0x1c, 0xf3, 0x00, 0xcf, 0x85, 0xb7, 0x85, 0x2b, 0x5a, 0x47, 0xa9, + 0xc7, 0xb6, 0x16, 0xee, 0xf7, 0x88, 0xe8, 0x8a, 0x11, 0x53, 0x1e, 0x79, 0xdb, 0xa6, 0x62, 0xe8, + 0xdf, 0xfa, 0xbc, 0xe9, 0xbf, 0x7e, 0xc2, 0x83, 0x13, 0x8c, 0x73, 0xdd, 0x9c, 0x37, 0x4d, 0x7c, + 0x65, 0x69, 0x7a, 0xaf, 0x63, 0xd1, 0xe4, 0x11, 0x33, 0x15, 0xc9, 0xbb, 0x62, 0xce, 0x81, 0xa1, + 0x61, 0x39, 0x22, 0xab, 0x30, 0x15, 0x77, 0x7c, 0xc9, 0x15, 0xf3, 0xae, 0x22, 0x77, 0x32, 0xee, + 0x1c, 0x71, 0x85, 0x45, 0x5d, 0x1c, 0x1f, 0xf3, 0x80, 0xf9, 0x91, 0xb0, 0x4b, 0xbd, 0x86, 0x02, + 0xf3, 0x86, 0xfc, 0xc2, 0x52, 0xb5, 0x8b, 0x22, 0xf1, 0xd3, 0x8c, 0xc5, 0x5c, 0x32, 0xe9, 0x87, + 0x5c, 0xea, 0xf8, 0xe7, 0x5c, 0xb6, 0x59, 0x68, 0x52, 0xf0, 0xba, 0x71, 0x51, 0x24, 0x87, 0x56, + 0xe8, 0x49, 0x59, 0x06, 0x93, 0xf2, 0x73, 0x58, 0xed, 0x51, 0x22, 0x62, 0xca, 0x6d, 0x02, 0xdf, + 0xc0, 0xd9, 0xd5, 0xd2, 0x6c, 0x64, 0xda, 0x5c, 0xf6, 0xca, 0xd3, 0x78, 0x1c, 0xe7, 0x4a, 0x7f, + 0x6a, 0xf4, 0x91, 0xbe, 0x85, 0xf3, 0x2e, 0x75, 0xe7, 0x1d, 0x38, 0xee, 0x41, 0x48, 0x7c, 0xb8, + 0x5c, 0x9e, 0x88, 0x39, 0x20, 0x3b, 0x49, 0x50, 0x0a, 0xfc, 0xed, 0xd1, 0x81, 0xef, 0xea, 0x7e, + 0x41, 0xa5, 0x3a, 0xea, 0x24, 0x41, 0x11, 0xf8, 0xa8, 0xd7, 0x00, 0x96, 0x6c, 0xc9, 0x45, 0xc2, + 0x93, 0x96, 0xcf, 0xb2, 0x4c, 0x64, 0xd2, 0xbb, 0x83, 0x27, 0xe6, 0x5a, 0xf7, 0xc4, 0xbc, 0x2e, + 0xd4, 0x1d, 0x96, 0xc4, 0x9f, 0x6a, 0xe9, 0xc6, 0x86, 0x38, 0x9b, 0x29, 0xc9, 0x37, 0xb0, 0x51, + 0xb6, 0x26, 0x69, 0xec, 0xce, 0x85, 0xd9, 0xc3, 0x8f, 0x71, 0x2f, 0xbc, 0xae, 0x8e, 0x23, 0x1a, + 0xdb, 0xf3, 0x81, 0xfb, 0xf8, 0xb4, 0x77, 0xb5, 0x92, 0x05, 0x79, 0xc6, 0x55, 0xc7, 0x37, 0xe7, + 0xf6, 0x98, 0xb3, 0xcc, 0xfb, 0x04, 0x55, 0x94, 0x96, 0x71, 0x64, 0x85, 0x0e, 0x0a, 0x99, 0xfe, + 0x70, 0xe0, 0x86, 0xba, 0x8e, 0x60, 0x07, 0xcf, 0x67, 0x29, 0x1c, 0x7a, 0xbb, 0x5c, 0x63, 0xf0, + 0xa4, 0xd7, 0x3e, 0xd6, 0xcf, 0x34, 0xe3, 0x49, 0xc0, 0x53, 0x1a, 0x19, 0x17, 0x76, 0xfb, 0x93, + 0x48, 0x57, 0xc7, 0x43, 0x27, 0xe3, 0x6a, 0xba, 0x50, 0x6d, 0x96, 0xf9, 0xfa, 0x10, 0x48, 0xef, + 0x2e, 0x56, 0x0e, 0x40, 0xd2, 0x4b, 0x4d, 0x21, 0x77, 0x60, 0xa9, 0x38, 0xe8, 0xa9, 0x88, 0x78, + 0xa0, 0x0b, 0xd7, 0xa7, 0xa8, 0x78, 0xd1, 0x31, 0x0e, 0x2d, 0x5d, 0x9f, 0xb0, 0x14, 0x4b, 0x43, + 0x26, 0xde, 0xb2, 0x40, 0x49, 0xef, 0x33, 0xd4, 0x37, 0xab, 0x89, 0x87, 0x96, 0xa6, 0x4d, 0xa6, + 0x42, 0x2a, 0x1a, 0xf9, 0x81, 0x08, 0x99, 0x77, 0xdf, 0x7c, 0x46, 0x0c, 0x69, 0x5f, 0x84, 0x8c, + 0x3c, 0x80, 0xd5, 0x34, 0x63, 0xc7, 0x2c, 0xcb, 0xcc, 0x47, 0x8f, 0x76, 0x8f, 0xd3, 0xe7, 0x26, + 0x41, 0x0b, 0xf6, 0x13, 0xaa, 0x68, 0x71, 0xaa, 0x3e, 0x01, 0xd2, 0x9d, 0x17, 0xd1, 0xa4, 0x95, + 0xd3, 0x16, 0xf3, 0x1e, 0x98, 0xaf, 0x4f, 0xc1, 0x79, 0x61, 0x19, 0xe4, 0x1a, 0xcc, 0x77, 0xc5, + 0x71, 0xbf, 0xbe, 0x30, 0x5d, 0x6f, 0x41, 0xc5, 0x1d, 0xba, 0x01, 0x0b, 0x69, 0x26, 0xde, 0x77, + 0x4a, 0xf5, 0xf7, 0x2b, 0xd3, 0xa4, 0x20, 0xb9, 0x5b, 0x82, 0x5b, 0x70, 0x25, 0x63, 0xc7, 0x19, + 0x93, 0x6d, 0xd3, 0x44, 0x4b, 0xff, 0x94, 0x46, 0x3c, 0xf4, 0x8f, 0x33, 0x11, 0x97, 0xce, 0xc8, + 0xc3, 0x91, 0x67, 0x64, 0xcb, 0xaa, 0xc1, 0xae, 0x5b, 0xfe, 0xaf, 0x56, 0xf2, 0x2c, 0x13, 0x71, + 0x71, 0x4e, 0x6e, 0xc3, 0x62, 0x66, 0x5a, 0x7d, 0xde, 0xe4, 0x91, 0xf9, 0x94, 0x3c, 0xc2, 0x25, + 0x0d, 0xd0, 0x75, 0x17, 0x23, 0x83, 0xb6, 0x10, 0x91, 0xf4, 0xfe, 0x0b, 0x45, 0xdc, 0x90, 0xec, + 0x42, 0x55, 0xb6, 0xc5, 0x3b, 0x9f, 0x27, 0xce, 0x33, 0x3f, 0xe2, 0x52, 0x79, 0x5f, 0x9b, 0x8f, + 0x82, 0xe6, 0x1d, 0x24, 0xd6, 0x3b, 0x8d, 0x32, 0xc8, 0x5b, 0xb8, 0xa6, 0x9b, 0x3e, 0x3d, 0x41, + 0x32, 0xa9, 0x0f, 0xd3, 0x19, 0x1e, 0x7e, 0x33, 0xfa, 0x73, 0xad, 0x15, 0x1d, 0x24, 0x47, 0x56, + 0xcd, 0xa0, 0x8b, 0x2b, 0x30, 0x29, 0x4f, 0x78, 0x14, 0x49, 0xef, 0x5b, 0x5c, 0xb5, 0x1d, 0x91, + 0x2a, 0x4c, 0x98, 0x9e, 0xe2, 0x31, 0x86, 0xca, 0x0c, 0x74, 0x24, 0xa5, 0xca, 0x18, 0x53, 0xce, + 0x13, 0x6f, 0xcf, 0x44, 0xd2, 0x50, 0xad, 0x13, 0xb8, 0x17, 0x79, 0x86, 0x91, 0xde, 0x37, 0x1d, + 0x9d, 0x1d, 0x6a, 0x05, 0xb9, 0xd4, 0x9f, 0x9b, 0x22, 0xd1, 0x9e, 0x18, 0x05, 0x48, 0x2d, 0x12, + 0x6c, 0x07, 0x96, 0x87, 0x1d, 0xb3, 0xa7, 0x26, 0xc3, 0xf2, 0x81, 0xc3, 0xb5, 0x0e, 0xd3, 0x28, + 0x8f, 0xcd, 0xdd, 0x33, 0xf3, 0x19, 0xd5, 0x04, 0x6c, 0xec, 0x6a, 0x50, 0x71, 0xe7, 0xc7, 0x7b, + 0x6e, 0x78, 0x6e, 0x4c, 0xee, 0x40, 0x25, 0x66, 0xba, 0x31, 0x79, 0x7d, 0xec, 0x85, 0x58, 0xf2, + 0x16, 0xba, 0x25, 0x0f, 0x3f, 0x77, 0x8d, 0x42, 0xa0, 0xae, 0x00, 0xba, 0x7d, 0x03, 0xd9, 0x86, + 0x59, 0x17, 0x25, 0x34, 0x6b, 0x70, 0x07, 0x98, 0x0d, 0x47, 0xc3, 0x2b, 0x30, 0xc9, 0xa5, 0xcc, + 0x59, 0x66, 0x51, 0x9e, 0x1d, 0x91, 0x8f, 0x81, 0x98, 0x5f, 0x7e, 0x81, 0x05, 0x78, 0x68, 0x21, + 0xc7, 0xa2, 0xe1, 0x38, 0x10, 0x70, 0x10, 0xd6, 0x15, 0x2c, 0xe9, 0xac, 0xc0, 0xc5, 0xfc, 0x76, + 0x88, 0x97, 0x01, 0x29, 0x5b, 0xb5, 0x78, 0xf7, 0x06, 0x4c, 0x62, 0x9f, 0xe0, 0xd0, 0xee, 0xc0, + 0x66, 0x59, 0xf6, 0x2f, 0x46, 0xba, 0x1f, 0xc1, 0xc2, 0x73, 0x66, 0xac, 0x9c, 0x85, 0xf3, 0xfe, + 0x07, 0x88, 0xc1, 0xb9, 0xe7, 0x49, 0x91, 0x6b, 0x30, 0x61, 0x90, 0x9b, 0x01, 0x9b, 0x03, 0x0b, + 0x33, 0xdc, 0xfa, 0x7b, 0x20, 0x06, 0xde, 0xf6, 0x28, 0x2b, 0x26, 0x8f, 0x9d, 0x37, 0xf9, 0xd7, + 0xc1, 0xda, 0xab, 0x40, 0x0c, 0xac, 0x3d, 0xd7, 0xd9, 0x3a, 0x2c, 0x3e, 0x0e, 0xc3, 0x97, 0x98, + 0x71, 0x67, 0xc9, 0x5c, 0x83, 0xe5, 0x06, 0x8b, 0xc5, 0x29, 0x3b, 0x5f, 0x2c, 0x37, 0x11, 0x34, + 0x42, 0xbf, 0x5d, 0xe2, 0xbc, 0x35, 0x57, 0x34, 0x85, 0x59, 0x9b, 0x39, 0x77, 0x60, 0xca, 0x9c, + 0xa3, 0x73, 0x2e, 0x4a, 0x9c, 0xc4, 0x2f, 0xce, 0x9e, 0xbf, 0x2c, 0xc1, 0x84, 0xc1, 0xe7, 0xf7, + 0x61, 0x85, 0x46, 0x91, 0x78, 0xe7, 0x17, 0x30, 0x47, 0xb2, 0x24, 0x34, 0xd6, 0x74, 0x95, 0xad, + 0x22, 0xf7, 0xa9, 0x65, 0x1e, 0x19, 0x1e, 0xf9, 0x16, 0x16, 0xba, 0xa8, 0x9e, 0x36, 0x59, 0x24, + 0xbd, 0x71, 0x5c, 0xdc, 0xea, 0x10, 0x4c, 0xaf, 0xf9, 0x8d, 0x02, 0xbd, 0xe3, 0x50, 0x0e, 0xbf, + 0x17, 0xb8, 0xf0, 0xe1, 0xf7, 0x02, 0x8f, 0xa0, 0x46, 0x73, 0x25, 0x7c, 0x99, 0x37, 0x65, 0x90, + 0xf1, 0x26, 0xf3, 0x13, 0xf6, 0xce, 0x77, 0x3b, 0x76, 0x11, 0x7d, 0x58, 0xd5, 0x12, 0x47, 0x4e, + 0xe0, 0x15, 0x7b, 0xf7, 0xb2, 0xd8, 0xae, 0xf9, 0xbe, 0xbe, 0x7d, 0xc2, 0x34, 0xc3, 0xbd, 0x54, + 0x72, 0xab, 0x0b, 0xa7, 0x9b, 0x1d, 0x9f, 0xa6, 0xa9, 0x2e, 0x3b, 0x93, 0x56, 0xd4, 0x30, 0xf6, + 0x3a, 0x8f, 0xd3, 0xf4, 0x20, 0x1c, 0x8e, 0xbc, 0xa7, 0x3e, 0x1c, 0x79, 0x0f, 0x05, 0xd5, 0x95, + 0x0f, 0x07, 0xd5, 0xdb, 0x30, 0x13, 0x32, 0xed, 0x78, 0x8a, 0xfe, 0xd9, 0x2b, 0x88, 0x12, 0x69, + 0x00, 0x56, 0xc3, 0x20, 0xac, 0x7e, 0x01, 0x55, 0xf6, 0x3e, 0xe5, 0x99, 0xb9, 0x08, 0xe8, 0xae, + 0x67, 0x66, 0xe4, 0x7a, 0x48, 0x77, 0x5e, 0xb1, 0xa4, 0xcb, 0x30, 0x63, 0x30, 0x93, 0xae, 0xfe, + 0xd2, 0x9b, 0x35, 0x0d, 0x1d, 0x92, 0x74, 0xf5, 0x97, 0xba, 0x6f, 0x6c, 0x53, 0xe9, 0x82, 0xe8, + 0xbf, 0xe3, 0xaa, 0xed, 0x72, 0xc4, 0x75, 0xd9, 0x73, 0x18, 0xd8, 0xf5, 0x36, 0x95, 0x36, 0x96, + 0xdf, 0x73, 0xd5, 0xb6, 0x49, 0x61, 0xbb, 0xe7, 0xcf, 0x61, 0xb5, 0xcd, 0x43, 0x66, 0x3e, 0xfd, + 0xe5, 0xfe, 0x41, 0xe2, 0xe5, 0x44, 0xa5, 0x51, 0xd5, 0x6c, 0xfd, 0x4d, 0x2f, 0xb5, 0x10, 0x92, + 0x7c, 0x05, 0x6b, 0xdd, 0x69, 0x22, 0x57, 0x91, 0x10, 0x27, 0x7e, 0x10, 0x71, 0x96, 0x28, 0x89, + 0x97, 0x12, 0x95, 0xc6, 0x8a, 0x9b, 0xf8, 0xda, 0xb0, 0xf7, 0x0d, 0xd7, 0x16, 0x92, 0xc5, 0xa2, + 0xb4, 0x7e, 0x0a, 0x97, 0xb8, 0xec, 0x66, 0x26, 0x26, 0x0f, 0x42, 0xbe, 0x25, 0x54, 0x43, 0xb8, + 0x2c, 0x92, 0x32, 0xdc, 0xeb, 0xe8, 0x66, 0x96, 0x7c, 0x09, 0x9e, 0xf3, 0x34, 0xcd, 0x44, 0xa0, + 0xbb, 0x8f, 0xa4, 0xd5, 0x73, 0x49, 0xb1, 0x62, 0xf9, 0x87, 0x05, 0xdb, 0xdc, 0x54, 0x38, 0x38, + 0xb9, 0x5c, 0x82, 0x93, 0x1a, 0x29, 0x6a, 0x38, 0xe9, 0xba, 0xf5, 0x2a, 0xda, 0x9d, 0xd1, 0x34, + 0xd7, 0xa3, 0x0f, 0x20, 0xce, 0x4b, 0x43, 0x10, 0xe7, 0x0d, 0x58, 0xb0, 0xc1, 0x68, 0xf3, 0xd4, + 0xcf, 0xf2, 0xc8, 0x5c, 0x31, 0x4c, 0x37, 0xe6, 0xbb, 0xe4, 0x46, 0x1e, 0x31, 0xf2, 0x1c, 0xb6, + 0xfb, 0x04, 0x07, 0xdd, 0x30, 0x57, 0x0d, 0x9b, 0xbd, 0x33, 0xfb, 0xbd, 0x39, 0x07, 0x39, 0x7a, + 0xe7, 0x20, 0xc7, 0xfd, 0xd1, 0x00, 0x70, 0x0d, 0xa7, 0x9f, 0x07, 0xf2, 0xbe, 0x84, 0xb5, 0xb2, + 0x92, 0x84, 0x29, 0xbf, 0xc9, 0x85, 0x34, 0xd6, 0x6b, 0xfd, 0xf8, 0xf3, 0x15, 0x53, 0x7b, 0x5c, + 0x48, 0x34, 0xff, 0x0b, 0xe0, 0xe1, 0xfa, 0x6f, 0x07, 0x0f, 0x37, 0x7e, 0x3d, 0x3c, 0xdc, 0xfc, + 0x95, 0xf0, 0x70, 0xeb, 0x3c, 0x78, 0x78, 0x0e, 0x88, 0xba, 0xfc, 0xe1, 0x20, 0x6a, 0xfb, 0x2c, + 0x10, 0x35, 0x04, 0x1d, 0x7d, 0x34, 0x14, 0x1d, 0x3d, 0x83, 0xa5, 0x8c, 0x25, 0xec, 0x5d, 0x4f, + 0xc9, 0xad, 0x8f, 0x2e, 0xb9, 0x76, 0x52, 0x91, 0x3f, 0x0f, 0x61, 0xad, 0xb8, 0xc7, 0x72, 0x8f, + 0x40, 0xbe, 0xc0, 0x62, 0x2b, 0xbd, 0x2b, 0x68, 0x7a, 0xd5, 0x09, 0xec, 0x59, 0xfe, 0x6b, 0xc3, + 0x26, 0x7b, 0xb0, 0x59, 0xcc, 0xed, 0x49, 0x1f, 0x37, 0xff, 0x2a, 0xce, 0x5f, 0x77, 0x42, 0xe5, + 0xb4, 0x70, 0x3a, 0x6e, 0xc1, 0x62, 0x11, 0x4b, 0x17, 0x88, 0x6b, 0x18, 0x88, 0x05, 0x47, 0x77, + 0x21, 0xd8, 0x85, 0xe5, 0x61, 0x61, 0x37, 0x57, 0x3b, 0x44, 0x0e, 0x06, 0xbb, 0x0a, 0x13, 0xaa, + 0xcd, 0x8a, 0xfb, 0x1b, 0x33, 0x20, 0x5b, 0x00, 0x7a, 0x15, 0x08, 0xe9, 0x3a, 0xde, 0x1d, 0xd3, + 0xcf, 0x77, 0x29, 0xe5, 0x1e, 0x26, 0x1c, 0xd5, 0xc3, 0xd4, 0x5f, 0xc2, 0x5c, 0x4f, 0xeb, 0x40, + 0xd6, 0xa0, 0x82, 0x3d, 0x86, 0x5f, 0x74, 0x69, 0x53, 0x38, 0x3e, 0x08, 0x07, 0xbe, 0x5d, 0xe3, + 0x03, 0xdf, 0xae, 0xfa, 0x6b, 0x58, 0xe8, 0xeb, 0x22, 0xc8, 0x25, 0x0d, 0xdd, 0xf2, 0xae, 0xba, + 0x09, 0x79, 0x92, 0x1f, 0xe8, 0x4e, 0x78, 0x3e, 0xe4, 0x12, 0x37, 0xc6, 0x3e, 0x31, 0x8c, 0xe3, + 0x66, 0xcf, 0x39, 0x2a, 0x3e, 0x25, 0xd4, 0xff, 0x36, 0x06, 0xb3, 0xe5, 0xa7, 0x06, 0xf2, 0xdf, + 0x40, 0x8a, 0x56, 0xa6, 0x9b, 0x38, 0x63, 0x23, 0x13, 0xa7, 0x68, 0x66, 0xca, 0xb0, 0x39, 0xa0, + 0x29, 0x35, 0xbb, 0xa6, 0x0b, 0x61, 0x2e, 0xad, 0x4b, 0x03, 0x74, 0x84, 0x8a, 0x2c, 0x3b, 0xe5, + 0x01, 0xb3, 0x00, 0xc8, 0x0d, 0xc9, 0x55, 0x98, 0xb3, 0x3f, 0xf5, 0xf2, 0x0e, 0x42, 0xec, 0x82, + 0x34, 0xd4, 0x2c, 0x13, 0xeb, 0x7f, 0x1f, 0x83, 0xf5, 0x73, 0x6a, 0x8f, 0x06, 0x7f, 0x01, 0x55, + 0xac, 0x25, 0xb2, 0x8e, 0xdd, 0xa6, 0x62, 0xac, 0x3d, 0x16, 0x41, 0x90, 0xbb, 0x83, 0x6b, 0x3d, + 0x1e, 0x1f, 0xed, 0xb1, 0x9b, 0x55, 0x78, 0x7c, 0x1f, 0x56, 0xd2, 0x4c, 0xa4, 0x2c, 0x53, 0x1d, + 0x3f, 0xa0, 0xb9, 0x2c, 0x2a, 0xa5, 0x75, 0xaa, 0xea, 0xb8, 0xfb, 0x86, 0x69, 0xd6, 0x56, 0x85, + 0x89, 0x53, 0x1a, 0xe5, 0xcc, 0x7a, 0x66, 0x06, 0xf7, 0xfe, 0x74, 0x11, 0x16, 0xdc, 0x43, 0xe3, + 0x91, 0xdd, 0x8b, 0x00, 0x66, 0xcb, 0xef, 0x8f, 0x64, 0xb3, 0x9b, 0x78, 0x43, 0xde, 0x43, 0x6b, + 0x5b, 0x67, 0xb1, 0x4d, 0x33, 0x5e, 0xaf, 0xfe, 0xf1, 0x1f, 0xff, 0xfa, 0xf3, 0xf8, 0x3c, 0x99, + 0xdd, 0x3d, 0xbd, 0xbb, 0x5b, 0xbc, 0x4e, 0xfe, 0x0e, 0xa0, 0xfb, 0xea, 0x48, 0xd6, 0x4b, 0x20, + 0xa8, 0xff, 0x2d, 0xb2, 0x36, 0x98, 0xf8, 0xf5, 0x2d, 0xd4, 0xe9, 0x91, 0xe5, 0xb2, 0xce, 0xdd, + 0xdf, 0xf3, 0xf0, 0xeb, 0xdb, 0x3f, 0x3f, 0x1c, 0xbb, 0x4d, 0x28, 0xcc, 0xf5, 0x3c, 0x57, 0x92, + 0xd2, 0x22, 0x87, 0xbd, 0x63, 0x0e, 0xb3, 0xb1, 0x89, 0x36, 0x56, 0xeb, 0x3d, 0xeb, 0x7e, 0x58, + 0x3c, 0x3b, 0xa6, 0x30, 0xd7, 0xf3, 0x76, 0x59, 0x36, 0x31, 0xec, 0x51, 0x73, 0x98, 0x89, 0x8f, + 0xd1, 0xc4, 0xf5, 0x7b, 0xeb, 0xbd, 0x6e, 0xd8, 0x5f, 0x3b, 0xc6, 0x9d, 0xc2, 0x62, 0x08, 0x73, + 0x3d, 0x6f, 0x95, 0x65, 0x8b, 0xc3, 0x1e, 0x31, 0x6b, 0x2b, 0x03, 0x69, 0xf5, 0x34, 0x4e, 0x55, + 0xa7, 0xbe, 0x8e, 0x66, 0x2f, 0xdd, 0x1e, 0xb6, 0x7b, 0xf7, 0xfe, 0x3a, 0x09, 0x73, 0x06, 0x88, + 0xbb, 0x7c, 0xf8, 0x7f, 0x80, 0x2e, 0x3a, 0x2f, 0x87, 0x6a, 0xe0, 0xa6, 0xa0, 0xb6, 0x31, 0x9c, + 0x69, 0x33, 0x81, 0xa0, 0xdd, 0x59, 0x02, 0xda, 0xae, 0xc5, 0xee, 0x6f, 0xa0, 0xe2, 0x30, 0x39, + 0x59, 0xeb, 0xc9, 0x82, 0x32, 0x74, 0xad, 0xf5, 0xa3, 0xe4, 0xfa, 0x06, 0xea, 0x5a, 0x21, 0x4b, + 0x5d, 0x5d, 0xa5, 0xf8, 0x7f, 0x0f, 0x33, 0x25, 0x18, 0x4f, 0x36, 0xfa, 0xa3, 0x7f, 0xbe, 0xee, + 0x35, 0xd4, 0xbd, 0x5c, 0x2f, 0xad, 0xf3, 0xa1, 0x45, 0xe5, 0x21, 0xcc, 0x94, 0x20, 0x7d, 0x59, + 0xf1, 0x20, 0xd2, 0x1f, 0x54, 0x7c, 0x1d, 0x15, 0x6f, 0xdf, 0x5b, 0x2d, 0x2f, 0x1a, 0xff, 0xda, + 0x58, 0x5b, 0x2b, 0x3f, 0xc0, 0x4c, 0x09, 0xbe, 0x97, 0xad, 0x0c, 0xa2, 0xfa, 0x33, 0xa3, 0x6c, + 0xbd, 0xb8, 0x3d, 0xb8, 0x43, 0x24, 0x80, 0xe9, 0x02, 0xf8, 0x93, 0x5a, 0x29, 0x2f, 0xfb, 0x6e, + 0x03, 0x06, 0x3d, 0xb8, 0x85, 0x4a, 0xaf, 0xd4, 0xb7, 0x06, 0x94, 0xee, 0xda, 0x6f, 0xd1, 0xee, + 0xd5, 0x8c, 0x1d, 0xeb, 0x18, 0x9c, 0xc2, 0x6c, 0xf9, 0xe6, 0xa0, 0x5c, 0x46, 0x86, 0xdc, 0x28, + 0x0c, 0x9a, 0x7a, 0x80, 0xa6, 0xee, 0xde, 0xbe, 0x73, 0xb6, 0xa9, 0xd2, 0x49, 0xf9, 0xb9, 0xb0, + 0x9b, 0xc1, 0x4c, 0xe9, 0x4e, 0x80, 0xf4, 0xa5, 0x64, 0xef, 0x0d, 0x45, 0x6d, 0xf3, 0x0c, 0xae, + 0xcd, 0x58, 0x1b, 0x30, 0x32, 0xc2, 0xdd, 0xbd, 0xea, 0xff, 0x91, 0xf4, 0xa4, 0x65, 0xfe, 0x95, + 0x64, 0xf7, 0xf4, 0xee, 0x23, 0x13, 0x8a, 0x49, 0xfc, 0xf3, 0xd9, 0x7f, 0x02, 0x00, 0x00, 0xff, + 0xff, 0xdf, 0x4e, 0x18, 0xf7, 0x02, 0x23, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index 1a3a400742..ad9183f931 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -7,6 +7,7 @@ import ( fmt "fmt" proto "github.com/golang/protobuf/proto" empty "github.com/golang/protobuf/ptypes/empty" + _ "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" _ "google.golang.org/genproto/protobuf/field_mask" math "math" @@ -47,16 +48,6 @@ type AccountsService interface { UpdateAccount(ctx context.Context, in *UpdateAccountRequest, opts ...client.CallOption) (*Account, error) // Deletes an account DeleteAccount(ctx context.Context, in *DeleteAccountRequest, opts ...client.CallOption) (*empty.Empty, error) - // Lists groups - ListGroups(ctx context.Context, in *ListGroupsRequest, opts ...client.CallOption) (*ListGroupsResponse, error) - // Gets an groups - GetGroup(ctx context.Context, in *GetGroupRequest, opts ...client.CallOption) (*Group, error) - // Creates a group - CreateGroup(ctx context.Context, in *CreateGroupRequest, opts ...client.CallOption) (*Group, error) - // Updates a group - UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...client.CallOption) (*Group, error) - // Deletes a group - DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...client.CallOption) (*empty.Empty, error) } type accountsService struct { @@ -121,56 +112,6 @@ func (c *accountsService) DeleteAccount(ctx context.Context, in *DeleteAccountRe return out, nil } -func (c *accountsService) ListGroups(ctx context.Context, in *ListGroupsRequest, opts ...client.CallOption) (*ListGroupsResponse, error) { - req := c.c.NewRequest(c.name, "AccountsService.ListGroups", in) - out := new(ListGroupsResponse) - err := c.c.Call(ctx, req, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *accountsService) GetGroup(ctx context.Context, in *GetGroupRequest, opts ...client.CallOption) (*Group, error) { - req := c.c.NewRequest(c.name, "AccountsService.GetGroup", in) - out := new(Group) - err := c.c.Call(ctx, req, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *accountsService) CreateGroup(ctx context.Context, in *CreateGroupRequest, opts ...client.CallOption) (*Group, error) { - req := c.c.NewRequest(c.name, "AccountsService.CreateGroup", in) - out := new(Group) - err := c.c.Call(ctx, req, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *accountsService) UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...client.CallOption) (*Group, error) { - req := c.c.NewRequest(c.name, "AccountsService.UpdateGroup", in) - out := new(Group) - err := c.c.Call(ctx, req, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *accountsService) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...client.CallOption) (*empty.Empty, error) { - req := c.c.NewRequest(c.name, "AccountsService.DeleteGroup", in) - out := new(empty.Empty) - err := c.c.Call(ctx, req, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // Server API for AccountsService service type AccountsServiceHandler interface { @@ -184,16 +125,6 @@ type AccountsServiceHandler interface { UpdateAccount(context.Context, *UpdateAccountRequest, *Account) error // Deletes an account DeleteAccount(context.Context, *DeleteAccountRequest, *empty.Empty) error - // Lists groups - ListGroups(context.Context, *ListGroupsRequest, *ListGroupsResponse) error - // Gets an groups - GetGroup(context.Context, *GetGroupRequest, *Group) error - // Creates a group - CreateGroup(context.Context, *CreateGroupRequest, *Group) error - // Updates a group - UpdateGroup(context.Context, *UpdateGroupRequest, *Group) error - // Deletes a group - DeleteGroup(context.Context, *DeleteGroupRequest, *empty.Empty) error } func RegisterAccountsServiceHandler(s server.Server, hdlr AccountsServiceHandler, opts ...server.HandlerOption) error { @@ -203,11 +134,6 @@ func RegisterAccountsServiceHandler(s server.Server, hdlr AccountsServiceHandler CreateAccount(ctx context.Context, in *CreateAccountRequest, out *Account) error UpdateAccount(ctx context.Context, in *UpdateAccountRequest, out *Account) error DeleteAccount(ctx context.Context, in *DeleteAccountRequest, out *empty.Empty) error - ListGroups(ctx context.Context, in *ListGroupsRequest, out *ListGroupsResponse) error - GetGroup(ctx context.Context, in *GetGroupRequest, out *Group) error - CreateGroup(ctx context.Context, in *CreateGroupRequest, out *Group) error - UpdateGroup(ctx context.Context, in *UpdateGroupRequest, out *Group) error - DeleteGroup(ctx context.Context, in *DeleteGroupRequest, out *empty.Empty) error } type AccountsService struct { accountsService @@ -240,22 +166,190 @@ func (h *accountsServiceHandler) DeleteAccount(ctx context.Context, in *DeleteAc return h.AccountsServiceHandler.DeleteAccount(ctx, in, out) } -func (h *accountsServiceHandler) ListGroups(ctx context.Context, in *ListGroupsRequest, out *ListGroupsResponse) error { - return h.AccountsServiceHandler.ListGroups(ctx, in, out) +// Client API for GroupsService service + +type GroupsService interface { + // Lists groups + ListGroups(ctx context.Context, in *ListGroupsRequest, opts ...client.CallOption) (*ListGroupsResponse, error) + // Gets an groups + GetGroup(ctx context.Context, in *GetGroupRequest, opts ...client.CallOption) (*Group, error) + // Creates a group + CreateGroup(ctx context.Context, in *CreateGroupRequest, opts ...client.CallOption) (*Group, error) + // Updates a group + UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...client.CallOption) (*Group, error) + // Deletes a group + DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...client.CallOption) (*empty.Empty, error) + // group:addmember https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0&tabs=http + AddMember(ctx context.Context, in *AddMemberRequest, opts ...client.CallOption) (*Group, error) + // group:removemember https://docs.microsoft.com/en-us/graph/api/group-delete-members?view=graph-rest-1.0 + RemoveMember(ctx context.Context, in *RemoveMemberRequest, opts ...client.CallOption) (*Group, error) + // group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 + ListMembers(ctx context.Context, in *ListMembersRequest, opts ...client.CallOption) (*ListMembersResponse, error) } -func (h *accountsServiceHandler) GetGroup(ctx context.Context, in *GetGroupRequest, out *Group) error { - return h.AccountsServiceHandler.GetGroup(ctx, in, out) +type groupsService struct { + c client.Client + name string } -func (h *accountsServiceHandler) CreateGroup(ctx context.Context, in *CreateGroupRequest, out *Group) error { - return h.AccountsServiceHandler.CreateGroup(ctx, in, out) +func NewGroupsService(name string, c client.Client) GroupsService { + return &groupsService{ + c: c, + name: name, + } } -func (h *accountsServiceHandler) UpdateGroup(ctx context.Context, in *UpdateGroupRequest, out *Group) error { - return h.AccountsServiceHandler.UpdateGroup(ctx, in, out) +func (c *groupsService) ListGroups(ctx context.Context, in *ListGroupsRequest, opts ...client.CallOption) (*ListGroupsResponse, error) { + req := c.c.NewRequest(c.name, "GroupsService.ListGroups", in) + out := new(ListGroupsResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (h *accountsServiceHandler) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, out *empty.Empty) error { - return h.AccountsServiceHandler.DeleteGroup(ctx, in, out) +func (c *groupsService) GetGroup(ctx context.Context, in *GetGroupRequest, opts ...client.CallOption) (*Group, error) { + req := c.c.NewRequest(c.name, "GroupsService.GetGroup", in) + out := new(Group) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *groupsService) CreateGroup(ctx context.Context, in *CreateGroupRequest, opts ...client.CallOption) (*Group, error) { + req := c.c.NewRequest(c.name, "GroupsService.CreateGroup", in) + out := new(Group) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *groupsService) UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...client.CallOption) (*Group, error) { + req := c.c.NewRequest(c.name, "GroupsService.UpdateGroup", in) + out := new(Group) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *groupsService) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...client.CallOption) (*empty.Empty, error) { + req := c.c.NewRequest(c.name, "GroupsService.DeleteGroup", in) + out := new(empty.Empty) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *groupsService) AddMember(ctx context.Context, in *AddMemberRequest, opts ...client.CallOption) (*Group, error) { + req := c.c.NewRequest(c.name, "GroupsService.AddMember", in) + out := new(Group) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *groupsService) RemoveMember(ctx context.Context, in *RemoveMemberRequest, opts ...client.CallOption) (*Group, error) { + req := c.c.NewRequest(c.name, "GroupsService.RemoveMember", in) + out := new(Group) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *groupsService) ListMembers(ctx context.Context, in *ListMembersRequest, opts ...client.CallOption) (*ListMembersResponse, error) { + req := c.c.NewRequest(c.name, "GroupsService.ListMembers", in) + out := new(ListMembersResponse) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for GroupsService service + +type GroupsServiceHandler interface { + // Lists groups + ListGroups(context.Context, *ListGroupsRequest, *ListGroupsResponse) error + // Gets an groups + GetGroup(context.Context, *GetGroupRequest, *Group) error + // Creates a group + CreateGroup(context.Context, *CreateGroupRequest, *Group) error + // Updates a group + UpdateGroup(context.Context, *UpdateGroupRequest, *Group) error + // Deletes a group + DeleteGroup(context.Context, *DeleteGroupRequest, *empty.Empty) error + // group:addmember https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0&tabs=http + AddMember(context.Context, *AddMemberRequest, *Group) error + // group:removemember https://docs.microsoft.com/en-us/graph/api/group-delete-members?view=graph-rest-1.0 + RemoveMember(context.Context, *RemoveMemberRequest, *Group) error + // group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 + ListMembers(context.Context, *ListMembersRequest, *ListMembersResponse) error +} + +func RegisterGroupsServiceHandler(s server.Server, hdlr GroupsServiceHandler, opts ...server.HandlerOption) error { + type groupsService interface { + ListGroups(ctx context.Context, in *ListGroupsRequest, out *ListGroupsResponse) error + GetGroup(ctx context.Context, in *GetGroupRequest, out *Group) error + CreateGroup(ctx context.Context, in *CreateGroupRequest, out *Group) error + UpdateGroup(ctx context.Context, in *UpdateGroupRequest, out *Group) error + DeleteGroup(ctx context.Context, in *DeleteGroupRequest, out *empty.Empty) error + AddMember(ctx context.Context, in *AddMemberRequest, out *Group) error + RemoveMember(ctx context.Context, in *RemoveMemberRequest, out *Group) error + ListMembers(ctx context.Context, in *ListMembersRequest, out *ListMembersResponse) error + } + type GroupsService struct { + groupsService + } + h := &groupsServiceHandler{hdlr} + return s.Handle(s.NewHandler(&GroupsService{h}, opts...)) +} + +type groupsServiceHandler struct { + GroupsServiceHandler +} + +func (h *groupsServiceHandler) ListGroups(ctx context.Context, in *ListGroupsRequest, out *ListGroupsResponse) error { + return h.GroupsServiceHandler.ListGroups(ctx, in, out) +} + +func (h *groupsServiceHandler) GetGroup(ctx context.Context, in *GetGroupRequest, out *Group) error { + return h.GroupsServiceHandler.GetGroup(ctx, in, out) +} + +func (h *groupsServiceHandler) CreateGroup(ctx context.Context, in *CreateGroupRequest, out *Group) error { + return h.GroupsServiceHandler.CreateGroup(ctx, in, out) +} + +func (h *groupsServiceHandler) UpdateGroup(ctx context.Context, in *UpdateGroupRequest, out *Group) error { + return h.GroupsServiceHandler.UpdateGroup(ctx, in, out) +} + +func (h *groupsServiceHandler) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, out *empty.Empty) error { + return h.GroupsServiceHandler.DeleteGroup(ctx, in, out) +} + +func (h *groupsServiceHandler) AddMember(ctx context.Context, in *AddMemberRequest, out *Group) error { + return h.GroupsServiceHandler.AddMember(ctx, in, out) +} + +func (h *groupsServiceHandler) RemoveMember(ctx context.Context, in *RemoveMemberRequest, out *Group) error { + return h.GroupsServiceHandler.RemoveMember(ctx, in, out) +} + +func (h *groupsServiceHandler) ListMembers(ctx context.Context, in *ListMembersRequest, out *ListMembersResponse) error { + return h.GroupsServiceHandler.ListMembers(ctx, in, out) } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index c3edda72fe..249d418f71 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -8,6 +8,7 @@ import "google/api/field_behavior.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; +import "google/protobuf/timestamp.proto"; // Follow recommended Methods for rpc APIs https://cloud.google.com/apis/design/resources?hl=de#methods // https://cloud.google.com/apis/design/standard_methods?hl=de#list @@ -23,7 +24,7 @@ service AccountsService { // Gets an account rpc GetAccount(GetAccountRequest) returns (Account) { option (google.api.http) = { - get: "/v0/accounts/{account_id=*}" + get: "/v0/accounts/{id=*}" body: "*" }; } @@ -41,7 +42,7 @@ service AccountsService { // Update maps to HTTP PATCH. Resource name is mapped to a URL path. // Resource is contained in the HTTP request body option (google.api.http) = { - patch: "/v0/accounts/{account.account_id=*}" + patch: "/v0/accounts/{account.id=*}" body: "account" }; }; @@ -50,10 +51,12 @@ service AccountsService { // Delete maps to HTTP DELETE. Resource name maps to the URL path. // There is no request body option (google.api.http) = { - delete: "/v0/accounts/{account_id=*}" + delete: "/v0/accounts/{id=*}" }; } +} +service GroupsService { // Lists groups rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) { // List method maps to HTTP GET @@ -64,7 +67,7 @@ service AccountsService { // Gets an groups rpc GetGroup(GetGroupRequest) returns (Group) { option (google.api.http) = { - get: "/v0/groups/{group_id=*}" + get: "/v0/groups/{id=*}" body: "*" }; } @@ -82,7 +85,7 @@ service AccountsService { // Update maps to HTTP PATCH. Resource name is mapped to a URL path. // Resource is contained in the HTTP request body option (google.api.http) = { - patch: "/v0/groups/{group.group_id=*}" + patch: "/v0/groups/{group.id=*}" body: "group" }; }; @@ -91,9 +94,39 @@ service AccountsService { // Delete maps to HTTP DELETE. Resource name maps to the URL path. // There is no request body option (google.api.http) = { - delete: "/v0/groups/{group_id=*}" + delete: "/v0/groups/{id=*}" }; } + + // additional group methods: https://docs.microsoft.com/en-us/graph/api/resources/group?view=graph-rest-1.0#methods + + // references are accessed using $ref, see http://docs.oasis-open.org/odata/odata/v4.0/cs01/part2-url-conventions/odata-v4.0-cs01-part2-url-conventions.html#_Toc365046422 + // or the stack overflow question https://stackoverflow.com/questions/49362894/why-is-the-microsoft-graph-api-using-ref-in-the-uri + + // group:addmember https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0&tabs=http + rpc AddMember(AddMemberRequest) returns (Group) { + // All request parameters go into body. + option (google.api.http) = { + post: "/v0/groups/{id=*}/members/$ref" + body: "*" + }; + } + // group:removemember https://docs.microsoft.com/en-us/graph/api/group-delete-members?view=graph-rest-1.0 + rpc RemoveMember(RemoveMemberRequest) returns (Group) { + // All request parameters go into body. + option (google.api.http) = { + delete: "/v0/groups/{id=*}/members/{account.id}/$ref" + body: "*" + }; + } + // group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 + rpc ListMembers(ListMembersRequest) returns (ListMembersResponse) { + // All request parameters go into body. + option (google.api.http) = { + get: "/v0/groups/{id=*}/members/$ref" + }; + } + } message ListAccountsRequest { @@ -139,12 +172,12 @@ message ListAccountsResponse { } message GetAccountRequest { - string account_id = 1; + string id = 1; } message CreateAccountRequest { // The account id to use for this account - string account_id = 1; + string id = 1; // The account resource to create Account account = 2; @@ -160,30 +193,301 @@ message UpdateAccountRequest { } message DeleteAccountRequest { - string account_id = 1; + string id = 1; } +// Account follows the properties of the ms graph api user resuorce. +// See https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties message Account { - // the non reassignable and stable account_id of an account - string account_id = 1; - // The identities that are mapped to this account - repeated Identities identities = 2; // keep track of every identity of a given user + // A freeform text entry field for the user to describe themselves. + string about_me = 1; - string username = 3; - string display_name = 4; - string mail = 5; - // TODO avatar needed? because the standard claims contain it or our own avatar service will use the accountid or email to look up the avatar + // *true* if the account is enabled; otherwise, *false*. This property is required when a user is created. Supports $filter. + bool account_enabled = 2; - repeated Group groups = 6; + // Sets the age group of the user. Allowed values: null, minor, notAdult and adult. Refer to the legal age group property definitions for further information. + string age_group = 3; + + // The licenses that are assigned to the account. Not nullable. + repeated AssignedLicense assigned_licenses = 4; + + // The plans that are assigned to the account. Read-only. Not nullable. + repeated AssignedPlan assigned_plans = 5; + + // The birthday of the user. + google.protobuf.Timestamp birthday = 6; + + // The telephone numbers for the user. NOTE: Although this is a string collection, only one number can be set for this property. + repeated string business_phones = 7; + + // The city in which the user is located. Supports $filter. + string city = 8; + + // The company name which the user is associated. This property can be useful for describing the company that an external user comes from. + string company_name = 9; + + // Sets whether consent has been obtained for minors. Allowed values: null, granted, denied and notRequired. Refer to the legal age group property definitions for further information. + string consent_provided_for_minor = 10; + + // The country/region in which the user is located; for example, “US” or “UK”. Supports $filter. + string country = 11; + + // The created date of the account object. + google.protobuf.Timestamp created_date_time = 12; + + // Indicates whether the account was created as + // - a regular school or work account (null), + // - an external account (Invitation), + // - a local account for an Azure Active Directory B2C tenant (LocalAccount) or + // - self-service sign-up using email verification (EmailVerified). Read-only. + string creation_type = 13; + + // The date and time the user was deleted. Returned only on $select. + google.protobuf.Timestamp deleted_date_time = 14; + + // The name for the department in which the user works. Supports $filter. + string department = 15; + + // The name displayed in the address book for the account. + // This is usually the combination of the user's first name, middle initial and last name. + // This property is required when a user is created and it cannot be cleared during updates. + // Supports $filter and $orderby. + string display_name = 16; + + // The employee identifier assigned to the user by the organization. Supports $filter. + string employee_id = 17; + + // For an external user invited to the tenant using the invitation API, this property represents the invited user's invitation status. + // For invited users, the state can be `PendingAcceptance` or `Accepted`, or emptystring / null for all other users. + // Returned only on $select. Supports $filter with the supported values. For example: $filter=externalUserState eq 'PendingAcceptance'. + string external_user_state = 18; + + // Shows the timestamp for the latest change to the externalUserState property. Returned only on $select. + // note: in the ms graph beta this changed to a string ?!? + google.protobuf.Timestamp external_user_state_change_date_time = 19; + + // The fax number of the account. + string fax_number = 20; + + // The given name (first name) of the user. Supports $filter. + string given_name = 21; + + // The hire date of the user. + google.protobuf.Timestamp hire_date = 22; + + // The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. + string id = 23; + + // Represents the identities that can be used to sign in to this user account. + // An identity can be provided by OCIS (also known as a local account), by organizations, or by social identity providers such as Facebook, Google, and Microsoft, and is tied to an account. + // May contain multiple items with the same signInType value. Supports $filter. + repeated Identities identities = 24; + + // The instant message voice over IP (VOIP) session initiation protocol (SIP) addresses for the user. Read-only. + repeated string im_addresses = 25; + + // A list for the user to describe their interests. + repeated string interests = 26; + + // *true* if the user is a resource account; otherwise, *false*. Null value should be considered false. + bool is_resource_account = 27; + + // The user’s job title. Supports $filter. + string job_title = 28; + + // The time when this account last changed their password. + google.protobuf.Timestamp last_password_change_date_time = 29; + + // Used by enterprise applications to determine the legal age group of the user. + // This property is read-only and calculated based on `ageGroup` and `consentProvidedForMinor` properties. + // Allowed values: `null`, `minorWithOutParentalConsent`, `minorWithParentalConsent`, `minorNoParentalConsentRequired`, `notAdult` and `adult`. + // Refer to the legal age group property definitions for further information.) + string legal_age_group_classification = 30; + + // State of license assignments for this user. Read-only. + // licenseAssignmentState collection licenseAssignmentStates = 31 + + // The SMTP address for the user, for example, "jeff@contoso.onmicrosoft.com". Read-Only. Supports $filter. + string mail = 32; + + // Settings for the primary mailbox of the signed-in user. You can get or update settings for sending automatic replies to incoming messages, locale and time zone. + // mailboxSettings mailboxSettings = 33 + + // The mail alias for the user. This property must be specified when a user is created. Supports $filter. + string mail_nickname = 34; + + // The primary cellular telephone number for the user. + string mobile_phone = 35; + + // The URL for the user's personal site. + string my_site = 36; + + // The office location in the user's place of business. + string office_location = 37; + + // Contains the on-premises LDAP `distinguished name` or `DN`. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + string on_premises_distinguished_name = 38; + + // Contains the on-premises `domainFQDN`, also called `dnsDomainName` synchronized from the on-premises directory + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + string on_premises_domain_name = 39; + + // Contains extensionAttributes 1-15 for the user. Note that the individual extension attributes are neither selectable nor filterable. + // For an onPremisesSyncEnabled user, this set of properties is mastered on-premises and is read-only. + // For a cloud-only user (where onPremisesSyncEnabled is false), these properties may be set during creation or update. + //onPremisesExtensionAttributes onPremisesExtensionAttributes = 40 + + // This property is used to associate an on-premises LDAP user to the ocis account object. + // This property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property. + // Important: The $ and _ characters cannot be used when specifying this property. Supports $filter. + string on_premises_immutable_id = 41; + + // Indicates the last time at which the object was synced with the on-premises directory; Read-only. + google.protobuf.Timestamp on_premises_last_sync_date_time = 42; + + // Errors when using synchronization during provisioning. + repeated OnPremisesProvisioningError on_premises_provisioning_errors = 43; + + // Contains the on-premises `samAccountName` synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + string on_premises_sam_account_name = 44; + + // Contains the on-premises security identifier (SID) for the user that was synchronized from on-premises to the cloud. Read-only. + string on_premises_security_identifier = 45; + + // *true* if this object is synced from an on-premises directory; + // *false* if this object was originally synced from an on-premises directory but is no longer synced; + // null if this object has never been synced from an on-premises directory (default). Read-only + bool on_premises_sync_enabled = 46; + + // Contains the on-premises userPrincipalName synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + string on_premises_user_principal_name = 47; + + // A list of additional email addresses for the user; for example: ["bob@contoso.com", "Robert@fabrikam.com"]. Supports $filter. + // note: in ms graph v1.0 this is a string. in the beta api it is a string collection + repeated string other_mails = 48; + + // Specifies password policies for the user. This value is an enumeration with one possible value being “DisableStrongPassword”, which allows weaker passwords than the default policy to be specified. “DisablePasswordExpiration” can also be specified. The two may be specified together; for example: "DisablePasswordExpiration, DisableStrongPassword". + string password_policies = 49; + + // Specifies the password profile for the user. The profile contains the user’s password. This property is required when a user is created. The password in the profile must satisfy minimum requirements as specified by the passwordPolicies property. By default, a strong password is required. + // passwordProfile passwordProfile = 50 + + // A list for the user to enumerate their past projects. + repeated string past_projects = 51; + + // The postal code for the user's postal address. The postal code is specific to the user's country/region. In the United States of America, this attribute contains the ZIP code. + string postal_code = 52; + + // The preferred data location for the user. For more information, see OneDrive Online Multi-Geo. https://docs.microsoft.com/sharepoint/dev/solution-guidance/multigeo-introduction string preferredDataLocation = 53; + string preferred_data_location = 53; + + // The preferred language for the user. Should follow ISO 639-1 Code; for example "en-US". + string preferred_language = 54; + + // The preferred name for the user. + string preferred_name = 55; + + // The plans that are provisioned for the user. Read-only. Not nullable. + // repeated provisionedPlans provisionedPlans = 56 + + // For example: ["SMTP: bob@contoso.com", "smtp: bob@sales.contoso.com"] + // The any operator is required for filter expressions on multi-valued properties. Read-only, Not nullable. Supports $filter. + repeated string proxy_addresses = 57; + + // Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get + // an error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph). + // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. + // Returned only on $select. Read-only. Use invalidateAllRefreshTokens to reset. + google.protobuf.Timestamp refresh_tokens_valid_from_date_time = 58; + + // A list for the user to enumerate their responsibilities. + repeated string responsibilities = 59; + + // A list for the user to enumerate the schools they have attended. + repeated string schools = 60; + + // *true* if the Outlook global address list should contain this user, otherwise *false*. If not set, this will be treated as *true*. + // For users invited through the invitation manager, this property will be set to *false*. + bool show_in_address_list = 61; + + // Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get + // an error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph). + // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. + // Read-only. Use revokeSignInSessions to reset. + google.protobuf.Timestamp sign_in_sessions_valid_from_date_time = 62; + + // Get the last signed-in date and request ID of the sign-in for a given user. + // Supports $filter, but not with any other filterable properties. + // Returned only on $select. Read-only. + //signInActivity signInActivity = 63 + + // A list for the user to enumerate their skills. + repeated string skills = 64; + + // The state or province in the user's address. Supports $filter + string state = 65; + + // The street address of the user's place of business. + string street_address = 66; + + // The user's surname (family name or last name). Supports $filter. + string surname = 67; + + // A two letter country code (ISO standard 3166). Required for users that will be assigned licenses due to legal requirement to check for availability of services in countries. Examples include: "US", "JP", and "GB". Not nullable. Supports $filter. + string usage_location = 68; + + // The user principal name (UPN) of the user. The UPN is an Internet-style login name for the user based on the Internet standard RFC 822. + // By convention, this should map to the user's email name. The general format is alias@domain, + // where domain must be present in the tenant’s collection of verified domains. + // This property is required when a user is created. The verified domains for the tenant can be accessed + // from the verifiedDomains property of organization. Supports $filter and $orderby. + string user_principal_name = 69; + + // A string value that can be used to classify user types in your directory, such as “Member” and “Guest”. Supports $filter. + string user_type = 70; + + // Properties that are not part of the graph API: + + // The users password. Used when updating the users password + // TODO: the username is stored as an identity? + string password = 71; + + + // relationships + + // The groups, directory roles and administrative units that the user is a member of. Read-only. Nullable. + repeated Group memberOf = 100; } message Identities { + // Specifies the user sign-in types in your directory, such as `emailAddress`, `userName` or `federated`. + // Here, federated represents a unique identifier for a user from an issuer, that can be in any format chosen by the issuer. + // Additional validation is enforced on *issuerAssignedId* when the sign-in type is set to `emailAddress` or `userName`. + // This property can also be set to any custom string. string sign_in_type = 1; + + // Specifies the issuer of the identity, for example facebook.com. + // For local accounts (where signInType is not federated), this property is + // the local B2C tenant default domain name, for example contoso.onmicrosoft.com. + // For external users from other Azure AD organization, this will be the domain of + // the federated organization, for example contoso.com. + // Supports $filter. 512 character limit. string issuer = 2; + + // Specifies the unique identifier assigned to the user by the issuer. The combination of *issuer* and *issuerAssignedId* must be unique within the organization. Represents the sign-in name for the user, when signInType is set to emailAddress or userName (also known as local accounts). + // When *signInType* is set to: + // * `emailAddress`, (or starts with `emailAddress` like `emailAddress1`) *issuerAssignedId* must be a valid email address + // * `userName`, issuerAssignedId must be a valid local part of an email address + // Supports $filter. 512 character limit. string issuer_assigned_id = 3; } +// TODO additional user methods? https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#methods + message ListGroupsRequest { // Optional. The maximum number of groups to return in the response int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL]; @@ -225,12 +529,12 @@ message ListGroupsResponse { } message GetGroupRequest { - string group_id = 1; + string id = 1; } message CreateGroupRequest { // The group id to use for this group - string group_id = 1; + string id = 1; // The account resource to create Group group = 2; @@ -246,14 +550,274 @@ message UpdateGroupRequest { } message DeleteGroupRequest { - string group_id = 1; + string id = 1; +} + +message AddMemberRequest { + // The account id to add + string id = 1; +} + +message RemoveMemberRequest { + // The account id to remove + // TODO id in the body indt in the url? not necessary ... use empty? + string id = 1; +} + +message ListMembersRequest { + int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A pagination token returned from a previous call to `Get` + // that indicates from where search should continue + string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Search criteria used to select the groups to return. + // If no search criteria is specified then all groups will be + // returned + // + // TODO update query language + // Query expressions can be used to restrict results based upon + // the account properties where the operators `=`, `NOT`, `AND` and `OR` + // can be used along with the suffix wildcard symbol `*`. + // + // The string properties in a query expression should use escaped quotes + // for values that include whitespace to prevent unexpected behavior. + // + // Some example queries are: + // + // * Query `display_name=Th*` returns accounts whose display_name + // starts with "Th" + // * Query `display_name=\\"Test String\\"` returns groups with + // display names that include both "Test" and "String" + string query = 3 [(google.api.field_behavior) = OPTIONAL]; +} + +message ListMembersResponse { + // The field name should match the noun "members" in the method name. There + // will be a maximum number of items returned based on the page_size field + // in the request + repeated Account members = 1; + + // Token to retrieve the next page of results, or empty if there are no + // more results in the list + string next_page_token = 2; } message Group { - // the non reassignable and stable group_id of a group - string group_id = 1; + // Indicates if people external to the organization can send messages to the group. Default value is false. + // Returned only on $select. + bool allow_external_senders = 1; - string groupname = 2; + // The list of sensitivity label pairs (label ID, label name) associated with an Office 365 group. + //Returned only on $select. Read-only. + repeated AssignedLabel assigned_labels = 2; - repeated Account accounts = 3; + // The licenses that are assigned to the group. + // Returned only on $select. Read-only. + repeated AssignedLicense assigned_licenses = 3; + + // Indicates if new members added to the group will be auto-subscribed to receive email notifications. You can set this property in a PATCH request for the group; do not set it in the initial POST request that creates the group. Default value is false. + // Returned only on $select. + bool auto_subscribe_new_members = 4; + + // Describes a classification for the group (such as low, medium or high business impact). Valid values for this property are defined by creating a ClassificationList setting value, based on the template definition. + // Returned by default. + string classification = 5; + + // App ID of the app used to create the group. Can be null for some groups. + // Returned by default. Read-only. Supports $filter. + string created_by_app_id = 6; + + // Timestamp of when the group was created. The value cannot be modified and is automatically populated when the group is created + // Returned by default. Read-only. + google.protobuf.Timestamp created_date_time = 7; + + // For some Azure Active Directory objects (user, group, application), if the object is deleted, it is first logically deleted, and this property is updated with the date and time when the object was deleted. Otherwise this property is null. If the object is restored, this property is updated to null. + // Returned by default. Read-only. + google.protobuf.Timestamp deleted_date_time = 8; + + // An optional description for the group. Returned by default. + string description = 9; + + // The display name for the group. This property is required when a group is created and cannot be cleared during updates. + // Returned by default. Supports $filter and $orderby. + string display_name = 10; + + // Timestamp of when the group is set to expire. The value cannot be modified and is automatically populated when the group is created. + // Returned by default. Read-only. + google.protobuf.Timestamp expiration_date_time = 11; + + // Specifies the group type and its membership. + // If the collection contains `Unified` then the group is an Office 365 group; otherwise it's a security group. + // If the collection includes `DynamicMembership`, the group has dynamic membership; otherwise, membership is static. + // Returned by default. Supports $filter. + repeated string group_types = 12; + + // Indicates whether there are members in this group that have license errors from its group-based license assignment. + // This property is never returned on a GET operation. You can use it as a $filter argument to get groups that have members with license errors (that is, filter for this property being true). + bool has_members_with_license_errors = 13; + + // True if the group is not displayed in certain parts of the Outlook user interface: + // in the Address Book, in address lists for selecting message recipients, and in the Browse Groups dialog for searching groups; false otherwise. Default value is false. + // Returned only on $select. + bool hide_from_address_lists = 14; + + // True if the group is not displayed in Outlook clients, such as Outlook for Windows and Outlook on the web, false otherwise. Default value is false. + // Returned only on $select. + bool hide_from_outlook_clients = 15; + + // The unique identifier for the group. + // Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. + string id = 16; + + // Indicates whether the signed-in user is subscribed to receive email conversations. Default value is true. + // Returned only on $select. + bool is_subscribed_by_mail = 17; + + // Indicates status of the group license assignment to all members of the group. + // Possible values: `QueuedForProcessing`, `ProcessingInProgress`, and `ProcessingComplete`. + // Returned only on $select. Read-only. + string license_processing_state = 18; + + // The SMTP address for the group, for example, "serviceadmins@contoso.onmicrosoft.com". + // Returned by default. Read-only. Supports $filter. + string mail = 19; + + // Specifies whether the group is mail-enabled. + // Returned by default. + bool mail_enabled = 20; + + // The mail alias for the group, unique in the organization. This property must be specified when a group is created. + // Returned by default. Supports $filter. + string mail_nickname = 21; + + // The rule that determines members for this group if the group is a dynamic group (groupTypes contains DynamicMembership). For more information about the syntax of the membership rule, see Membership Rules syntax. + // Returned by default. + string membership_rule = 22; + + // Indicates whether the dynamic membership processing is on or paused. Possible values are "On" or "Paused". + // Returned by default. + string membership_rule_processing_state = 23; + + // Contains the on-premises domain FQDN, also called dnsDomainName synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. + // Returned by default. Read-only. + string on_premises_domain_name = 24; + + // Indicates the last time at which the group was synced with the on-premises directory. + // Returned by default. Read-only. Supports $filter. + string on_premises_last_sync_date_time = 25; + + // Contains the on-premises netBios name synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. + // Returned by default. Read-only. + string on_premises_net_bios_name = 26; + + // Errors when using synchronization during provisioning. + repeated OnPremisesProvisioningError on_premises_provisioning_errors = 27; + + // Contains the on-premises `samAccountName` synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Returned by default. Read-only. + string on_premises_sam_account_name = 28; + + // Contains the on-premises security identifier (SID) for the group that was synchronized from on-premises to the cloud. Returned by default. Read-only. + string on_premises_security_identifier = 29; + + // *true* if this group is synced from an on-premises directory; + // *false* if this group was originally synced from an on-premises directory but is no longer synced; + // null if this object has never been synced from an on-premises directory (default). + // Returned by default. Read-only. Supports $filter. + bool on_premises_sync_enabled = 30; + + // The preferred data location for the group. For more information, see OneDrive Online Multi-Geo. https://docs.microsoft.com/sharepoint/dev/solution-guidance/multigeo-introduction string preferredDataLocation = 53; + string preferred_data_location = 31; + + // The preferred language for the user. Should follow ISO 639-1 Code; for example "en-US". + string preferred_language = 32; + + // Email addresses for the group that direct to the same group mailbox. + // For example: ["SMTP: bob@contoso.com", "smtp: bob@sales.contoso.com"]. + // The any operator is required for filter expressions on multi-valued properties. + // Returned by default. Read-only. Not nullable. Supports $filter. + repeated string proxy_addresses = 33; + + // Timestamp of when the group was last renewed. + // This cannot be modified directly and is only updated via the renew service action. + // Returned by default. Read-only. + google.protobuf.Timestamp renewed_date_time = 34; + + // Specifies the group behaviors that can be set for an Office 365 group during creation. This can be set only as part of creation (POST). Possible values are `AllowOnlyMembersToPost`, `HideGroupInOutlook`, `SubscribeNewGroupMembers`, `WelcomeEmailDisable`. For more information, see Set Microsoft 365 group behaviors and provisioning options. https://docs.microsoft.com/en-us/graph/group-set-options + repeated string resource_behavior_options = 35; + + // Specifies the group resources that are provisioned as part of Office 365 group creation, that are not normally part of default group creation. Possible value is `Team`. For more information, see Set Microsoft 365 group behaviors and provisioning options. https://docs.microsoft.com/en-us/graph/group-set-options + repeated string resource_provisioning_options = 36; + + // Specifies whether the group is a security group. + // Returned by default. Supports $filter. + bool security_enabled = 37; + + // Security identifier of the group, used in Windows scenarios. + // Returned by default. + string security_identifier = 38; + + // Specifies an Office 365 group's color theme. Possible values are Teal, Purple, Green, Blue, Pink, Orange or Red. + // Returned by default. + string theme = 39; + + // Count of conversations that have been delivered one or more new posts since the signed-in user's last visit to the group. This property is the same as unseenCount. + // Returned only on $select. + //int unseenConversationsCount = 40; + + // Count of conversations that have received new posts since the signed-in user last visited the group. This property is the same as unseenConversationsCount. + // Returned only on $select. + //int unseenCount = 41; + + // Count of new posts that have been delivered to the group's conversations since the signed-in user's last visit to the group. + // Returned only on $select. + //int unseenMessagesCount = 42; + + // Specifies the visibility of an Office 365 group. Possible values are: Private, Public, or Hiddenmembership; blank values are treated as public. See group visibility options to learn more. + // Visibility can be set only when a group is created; it is not editable. + // Visibility is supported only for unified groups; it is not supported for security groups. + // Returned by default. + string visibility = 43; + + // relationships + + // Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable. + // TODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later + repeated Account members = 100; + +} + +message AssignedLabel { + // The unique identifier of the label. + string label_id = 1; + // The display name of the label. Read-only. + string display_name = 2; +} + +message AssignedLicense { + string sku_id = 1; + repeated string disabled_plans = 2; +} + +message AssignedPlan { + // The date and time at which the plan was assigned; for example: 2013-01-02T19:32:30Z. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z' + google.protobuf.Timestamp assigned_date_time = 1; + // For example, “Enabled”. + string capabilityStatus = 2; + // The name of the service; for example, “Exchange”. + string service = 3; + // A GUID that identifies the service plan. + string servicePlanId = 4; +} + +message OnPremisesProvisioningError { + // Category of the provisioning error. Note: Currently, there is only one possible value. Possible value: PropertyConflict - indicates a property value is not unique. Other objects contain the same value for the property. + string category = 1; + // The date and time at which the error occurred. + google.protobuf.Timestamp occurred_date_time = 2; + // Name of the directory property causing the error. Current possible values: UserPrincipalName or ProxyAddress + string property_causing_error = 3; + // Value of the property causing the error. + string value = 4; } \ No newline at end of file diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index ce077c72a0..399aec1dd1 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -5,6 +5,7 @@ import ( "crypto/tls" "errors" "fmt" + "regexp" "github.com/CiscoM31/godata" "github.com/golang/protobuf/ptypes/empty" @@ -32,10 +33,84 @@ type Service struct { Config *config.Config } +func (s Service) getBoundConnection(binddn string, password string) (l *ldap.Conn, err error) { + l, err = ldap.DialTLS("tcp", fmt.Sprintf("%s:%d", s.Config.LDAP.Hostname, s.Config.LDAP.Port), &tls.Config{InsecureSkipVerify: true}) + if err != nil { + return nil, err + } + + err = l.Bind(binddn, password) + if err != nil { + l.Close() + return nil, err + } + + return +} + +func (s Service) lookupDN(username string) (binddn string, err error) { + l, err := s.getBoundConnection(s.Config.LDAP.BindDN, s.Config.LDAP.BindPassword) + if err != nil { + return "", err + } + defer l.Close() + + filter := fmt.Sprintf("(%s=%s)", s.Config.LDAP.Schema.Username, ldap.EscapeFilter(username)) + + // Search for the given username + searchRequest := ldap.NewSearchRequest( + s.Config.LDAP.BaseDN, + ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, + filter, + []string{"dn"}, + nil, + ) + + sr, err := l.Search(searchRequest) + if err != nil { + return "", err + } + + switch len(sr.Entries) { + case 0: // TODO return not found error + case 1: + return sr.Entries[0].DN, nil + default: // TODO return too many results error? + } + return "", fmt.Errorf("dn not found for %s", filter) +} + +// the auth request is currently hardcoded and has to macth this regex +// userName eq \"teddy\" and password eq \"F&1!b90t111!\" +var authQuery = regexp.MustCompile(`^username eq '(.*)' and password eq '(.*)'$`) // TODO how is ' escaped in the password? + // ListAccounts implements the AccountsServiceHandler interface +// the query contains account properties +// TODO id vs onpremiseimmutableid func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, res *proto.ListAccountsResponse) (err error) { - log.Debug().Str("query", in.Query).Int32("page-size", in.PageSize).Str("page-token", in.PageToken).Msg("ListAccounts") + var binddn string + var password string + + // check if this looks like an auth request + match := authQuery.FindStringSubmatch(in.Query) + if len(match) == 3 { + + binddn, err = s.lookupDN(match[1]) + if err != nil { + log.Error().Err(err).Msg("ListAccounts with auth request") + return + } + log.Debug().Str("username", match[1]).Str("binddn", binddn).Msg("ListAccounts with auth request") + + password = match[2] + // remove password from query + in.Query = fmt.Sprintf("username eq '%s'", match[1]) + } else { + log.Debug().Str("query", in.Query).Int32("page-size", in.PageSize).Str("page-token", in.PageToken).Msg("ListAccounts") + binddn = s.Config.LDAP.BindDN + password = s.Config.LDAP.BindPassword + } filter := "(&)" // see Absolute True and False Filters in https://tools.ietf.org/html/rfc4526#section-2 @@ -43,31 +118,25 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest // parse the query like an odata filter var q *godata.GoDataFilterQuery if q, err = godata.ParseFilterString(in.Query); err != nil { - return err + return } // convert to ldap filter filter, err = provider.BuildLDAPFilter(q, &s.Config.LDAP.Schema) if err != nil { - return err + return } } log.Debug().Str("filter", filter).Msg("using filter") var l *ldap.Conn - l, err = ldap.DialTLS("tcp", fmt.Sprintf("%s:%d", s.Config.LDAP.Hostname, s.Config.LDAP.Port), &tls.Config{InsecureSkipVerify: true}) + l, err = s.getBoundConnection(binddn, password) if err != nil { - return err + return } defer l.Close() - // First bind with a read only user - err = l.Bind(s.Config.LDAP.BindDN, s.Config.LDAP.BindPassword) - if err != nil { - return err - } - // TODO combine the parsed query with a query filter from the config, eg. fmt.Sprintf(s.Config.LDAP.UserFilter, clientID) // Search for the given clientID @@ -89,8 +158,9 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest res.Accounts = make([]*proto.Account, 0) for i := range sr.Entries { res.Accounts = append(res.Accounts, &proto.Account{ - AccountId: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.AccountID), + Id: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.AccountID), // TODO identities + // TODO Username is in the identities ... or in onpremisesamaccountname or in preferredname ... Username: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.Username), DisplayName: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.DisplayName), Mail: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.Mail), @@ -103,7 +173,46 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest // GetAccount implements the AccountsServiceHandler interface func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res *proto.Account) (err error) { - return errors.New("not implemented") + + l, err := s.getBoundConnection(s.Config.LDAP.BindDN, s.Config.LDAP.BindPassword) + if err != nil { + return err + } + defer l.Close() + + // TODO combine the parsed query with a query filter from the config, eg. fmt.Sprintf(s.Config.LDAP.UserFilter, clientID) + filter := fmt.Sprintf("(%s=%s)", s.Config.LDAP.Schema.AccountID, ldap.EscapeFilter(req.Id)) + + // Search for the given clientID + searchRequest := ldap.NewSearchRequest( + s.Config.LDAP.BaseDN, + ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, + filter, + []string{"dn", s.Config.LDAP.Schema.AccountID, s.Config.LDAP.Schema.Username, s.Config.LDAP.Schema.DisplayName, s.Config.LDAP.Schema.Mail, s.Config.LDAP.Schema.Groups}, // TODO Groups, Identities? + nil, + ) + + sr, err := l.Search(searchRequest) + if err != nil { + return err + } + + log.Debug().Interface("entries", sr.Entries).Msg("entries") + + switch len(sr.Entries) { + case 0: // TODO return not found error + case 1: + res.Id = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.AccountID) + // TODO identities? + // TODO Username is in the identities ... or in onpremisesamaccountname or in preferredname ... + res.Username = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.Username) + res.DisplayName = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.DisplayName) + res.Mail = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.Mail) + // TODO groups + default: // TODO return too many results error? + } + + return nil } // CreateAccount implements the AccountsServiceHandler interface diff --git a/third_party/google/protobuf/timestamp.proto b/third_party/google/protobuf/timestamp.proto new file mode 100644 index 0000000000..7279266f6d --- /dev/null +++ b/third_party/google/protobuf/timestamp.proto @@ -0,0 +1,138 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/timestamp"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "TimestampProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// A Timestamp represents a point in time independent of any time zone or local +// calendar, encoded as a count of seconds and fractions of seconds at +// nanosecond resolution. The count is relative to an epoch at UTC midnight on +// January 1, 1970, in the proleptic Gregorian calendar which extends the +// Gregorian calendar backwards to year one. +// +// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap +// second table is needed for interpretation, using a [24-hour linear +// smear](https://developers.google.com/time/smear). +// +// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By +// restricting to that range, we ensure that we can convert to and from [RFC +// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. +// +// # Examples +// +// Example 1: Compute Timestamp from POSIX `time()`. +// +// Timestamp timestamp; +// timestamp.set_seconds(time(NULL)); +// timestamp.set_nanos(0); +// +// Example 2: Compute Timestamp from POSIX `gettimeofday()`. +// +// struct timeval tv; +// gettimeofday(&tv, NULL); +// +// Timestamp timestamp; +// timestamp.set_seconds(tv.tv_sec); +// timestamp.set_nanos(tv.tv_usec * 1000); +// +// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. +// +// FILETIME ft; +// GetSystemTimeAsFileTime(&ft); +// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; +// +// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z +// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. +// Timestamp timestamp; +// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); +// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); +// +// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. +// +// long millis = System.currentTimeMillis(); +// +// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) +// .setNanos((int) ((millis % 1000) * 1000000)).build(); +// +// +// Example 5: Compute Timestamp from current time in Python. +// +// timestamp = Timestamp() +// timestamp.GetCurrentTime() +// +// # JSON Mapping +// +// In JSON format, the Timestamp type is encoded as a string in the +// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the +// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" +// where {year} is always expressed using four digits while {month}, {day}, +// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional +// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), +// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone +// is required. A proto3 JSON serializer should always use UTC (as indicated by +// "Z") when printing the Timestamp type and a proto3 JSON parser should be +// able to accept both UTC and other timezones (as indicated by an offset). +// +// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past +// 01:30 UTC on January 15, 2017. +// +// In JavaScript, one can convert a Date object to this format using the +// standard +// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) +// method. In Python, a standard `datetime.datetime` object can be converted +// to this format using +// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with +// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use +// the Joda Time's [`ISODateTimeFormat.dateTime()`]( +// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D +// ) to obtain a formatter capable of generating timestamps in this format. +// +// +message Timestamp { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +} \ No newline at end of file From 368d744b7c09249b58fed35960b03e36d996dc7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 8 Jun 2020 17:53:26 +0200 Subject: [PATCH 152/407] add filed mask MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/proto/v0/accounts.pb.go | 408 +++++++++++++++++++----------------- pkg/proto/v0/accounts.proto | 12 +- 2 files changed, 225 insertions(+), 195 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index f753f25b6d..85cd3b4ec3 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -30,6 +30,9 @@ type ListAccountsRequest struct { // Optional. A pagination token returned from a previous call to `Get` // that indicates from where search should continue PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. Used to specify a subset of fields that should be + // returned by a get operation or modified by an update operation. + FieldMask *field_mask.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Optional. Search criteria used to select the accounts to return. // If no search criteria is specified then all accounts will be // returned @@ -50,7 +53,7 @@ type ListAccountsRequest struct { // `email` set to `foo@example.com` // * Query `display_name=\\"Test String\\"` returns accounts with // display names that include both "Test" and "String" - Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -95,6 +98,13 @@ func (m *ListAccountsRequest) GetPageToken() string { return "" } +func (m *ListAccountsRequest) GetFieldMask() *field_mask.FieldMask { + if m != nil { + return m.FieldMask + } + return nil +} + func (m *ListAccountsRequest) GetQuery() string { if m != nil { return m.Query @@ -1071,6 +1081,9 @@ type ListGroupsRequest struct { // Optional. A pagination token returned from a previous call to `Get` // that indicates from where search should continue PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. Used to specify a subset of fields that should be + // returned by a get operation or modified by an update operation. + FieldMask *field_mask.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Optional. Search criteria used to select the groups to return. // If no search criteria is specified then all groups will be // returned @@ -1089,7 +1102,7 @@ type ListGroupsRequest struct { // starts with "Th" // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" - Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1134,6 +1147,13 @@ func (m *ListGroupsRequest) GetPageToken() string { return "" } +func (m *ListGroupsRequest) GetFieldMask() *field_mask.FieldMask { + if m != nil { + return m.FieldMask + } + return nil +} + func (m *ListGroupsRequest) GetQuery() string { if m != nil { return m.Query @@ -2282,195 +2302,197 @@ func init() { func init() { proto.RegisterFile("accounts.proto", fileDescriptor_e1e7723af4c007b7) } var fileDescriptor_e1e7723af4c007b7 = []byte{ - // 3033 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x5b, 0x6f, 0x1c, 0x37, - 0xb2, 0x86, 0x64, 0x4b, 0x1a, 0x95, 0xee, 0xd4, 0x58, 0x6a, 0x8d, 0x2e, 0x56, 0xc6, 0x77, 0x3b, - 0x91, 0x1c, 0xc7, 0x71, 0x12, 0xfb, 0x24, 0x88, 0x25, 0x5f, 0x8e, 0x70, 0x7c, 0x11, 0x46, 0xce, - 0x09, 0x70, 0xce, 0x22, 0x0d, 0x4e, 0x37, 0x35, 0x43, 0xab, 0xbb, 0xd9, 0x69, 0xb2, 0x65, 0x4f, - 0x16, 0x01, 0x16, 0xfb, 0x07, 0xf6, 0x61, 0x9f, 0xf6, 0x6f, 0xec, 0x6f, 0xd8, 0xf7, 0x7d, 0xd8, - 0x3f, 0xb0, 0x0f, 0xfb, 0xbe, 0x7f, 0x61, 0xc1, 0x22, 0xd9, 0xd3, 0x73, 0x91, 0x26, 0x46, 0x80, - 0x3c, 0x69, 0x58, 0x55, 0xac, 0x62, 0xb1, 0x8a, 0xd5, 0xf5, 0x91, 0x82, 0x79, 0x1a, 0x04, 0x22, - 0x4f, 0x94, 0xdc, 0x49, 0x33, 0xa1, 0x04, 0xa9, 0x48, 0xa6, 0x14, 0x4f, 0x5a, 0xb2, 0x76, 0xb9, - 0x25, 0x44, 0x2b, 0x62, 0xbb, 0x34, 0xe5, 0xbb, 0xc7, 0x9c, 0x45, 0xa1, 0xdf, 0x64, 0x6d, 0x7a, - 0xca, 0x45, 0x66, 0x44, 0x6b, 0x1b, 0x25, 0x01, 0x9a, 0x24, 0x42, 0x51, 0xc5, 0x45, 0x62, 0x15, - 0xd5, 0xd6, 0x2d, 0x17, 0x47, 0xcd, 0xfc, 0x78, 0x97, 0xc5, 0xa9, 0xea, 0x58, 0xe6, 0x76, 0x3f, - 0xd3, 0x18, 0x88, 0xa9, 0x3c, 0xb1, 0x12, 0x97, 0xfb, 0x25, 0x14, 0x8f, 0x99, 0x54, 0x34, 0x4e, - 0x8d, 0x40, 0xfd, 0x14, 0x96, 0x5f, 0x70, 0xa9, 0x1e, 0xdb, 0xe5, 0x37, 0xd8, 0x8f, 0x39, 0x93, - 0x8a, 0x6c, 0xc3, 0x74, 0x4a, 0x5b, 0xcc, 0x97, 0xfc, 0x27, 0xe6, 0x8d, 0x6d, 0x8f, 0xdd, 0x9c, - 0xd8, 0xbb, 0xf0, 0xcf, 0xc7, 0x63, 0x8d, 0x8a, 0xa6, 0x1e, 0xf1, 0x9f, 0x18, 0xa9, 0x03, 0xa0, - 0x84, 0x12, 0x27, 0x2c, 0xf1, 0xc6, 0xb7, 0xc7, 0x6e, 0x4e, 0x1b, 0x11, 0x9c, 0xf8, 0x46, 0x53, - 0xc9, 0x1a, 0x4c, 0xfc, 0x98, 0xb3, 0xac, 0xe3, 0x5d, 0xe8, 0xb2, 0x0d, 0xa5, 0x1e, 0x43, 0xb5, - 0xd7, 0xae, 0x4c, 0x45, 0x22, 0x19, 0xf9, 0x04, 0x2a, 0x6e, 0x2b, 0xbd, 0xb1, 0xed, 0x0b, 0x37, - 0x67, 0xee, 0x2d, 0xed, 0xb8, 0xbd, 0xdc, 0xb1, 0xd2, 0x8d, 0x42, 0x84, 0x5c, 0x87, 0x85, 0x84, - 0xbd, 0x57, 0x7e, 0xff, 0x52, 0x1a, 0x73, 0x9a, 0x7c, 0xe8, 0x56, 0x52, 0xbf, 0x02, 0x4b, 0xcf, - 0x99, 0xb3, 0xe6, 0x9c, 0x9c, 0x87, 0x71, 0x1e, 0xa2, 0x77, 0xd3, 0x8d, 0x71, 0x1e, 0xd6, 0x8f, - 0xa0, 0xba, 0x9f, 0x31, 0xaa, 0xd8, 0xf9, 0x72, 0xe4, 0x0e, 0x4c, 0xd9, 0x05, 0xa0, 0xb1, 0xa1, - 0x4b, 0x74, 0x12, 0xf5, 0x3f, 0x8c, 0x41, 0xf5, 0xbb, 0x34, 0x1c, 0xd4, 0x5a, 0xd2, 0x32, 0x36, - 0x4a, 0x0b, 0x79, 0x04, 0x33, 0x39, 0x2a, 0xc1, 0xe0, 0x5a, 0xb3, 0xb5, 0x1d, 0x13, 0xdd, 0x1d, - 0x17, 0xdd, 0x9d, 0x67, 0x3a, 0xfe, 0x2f, 0xa9, 0x3c, 0x69, 0x80, 0x11, 0xd7, 0xbf, 0xeb, 0xd7, - 0xa1, 0xfa, 0x84, 0x45, 0x6c, 0x94, 0x5f, 0xf5, 0x7f, 0x7b, 0x30, 0x65, 0x45, 0xc8, 0x1a, 0x54, - 0x68, 0x53, 0xe4, 0xca, 0x8f, 0x99, 0x95, 0x98, 0xc2, 0xf1, 0x4b, 0x46, 0x6e, 0xc0, 0x82, 0x5d, - 0x96, 0xcf, 0x12, 0xda, 0x8c, 0x58, 0x88, 0xeb, 0xa9, 0x34, 0xdc, 0x21, 0x78, 0x6a, 0xa8, 0x64, - 0x1d, 0xa6, 0x75, 0x58, 0x5a, 0x99, 0xc8, 0x53, 0x93, 0x02, 0x8d, 0x0a, 0x6d, 0xb1, 0xe7, 0x7a, - 0x4c, 0x9e, 0xc1, 0x12, 0x95, 0x92, 0xb7, 0x12, 0x16, 0xfa, 0x11, 0x0f, 0x58, 0x22, 0x99, 0xf4, - 0x2e, 0x62, 0xc4, 0xd7, 0x4a, 0x1b, 0x61, 0x45, 0x5e, 0x18, 0x89, 0xc6, 0x22, 0xed, 0x25, 0x48, - 0xf2, 0x35, 0xcc, 0x17, 0x7a, 0xd2, 0x88, 0x26, 0xd2, 0x9b, 0x40, 0x25, 0x2b, 0x83, 0x4a, 0x0e, - 0x23, 0x9a, 0x34, 0xe6, 0x68, 0x69, 0x24, 0xc9, 0x03, 0xa8, 0x34, 0x79, 0xa6, 0xda, 0x21, 0xed, - 0x78, 0x93, 0x67, 0xec, 0xea, 0x1b, 0x77, 0x66, 0x1a, 0x85, 0xac, 0xde, 0x84, 0x66, 0x2e, 0x79, - 0xc2, 0xa4, 0xf4, 0xd3, 0xb6, 0x48, 0x98, 0xf4, 0xa6, 0xb6, 0x2f, 0xdc, 0x9c, 0x6e, 0xcc, 0x3b, - 0xf2, 0x21, 0x52, 0x09, 0x81, 0x8b, 0x01, 0x57, 0x1d, 0xaf, 0x82, 0xfe, 0xe3, 0x6f, 0xf2, 0x11, - 0xcc, 0x06, 0x22, 0x4e, 0x69, 0xd2, 0xf1, 0x13, 0x1a, 0x33, 0x6f, 0x1a, 0x79, 0x33, 0x96, 0xf6, - 0x8a, 0xc6, 0x8c, 0x3c, 0x82, 0x5a, 0xa0, 0x0f, 0x44, 0xa2, 0xfc, 0x34, 0x13, 0xa7, 0x3c, 0x64, - 0xa1, 0x7f, 0x2c, 0x32, 0x3f, 0xe6, 0x89, 0xc8, 0x3c, 0xc0, 0x09, 0xab, 0x56, 0xe2, 0xd0, 0x0a, - 0x3c, 0x13, 0xd9, 0x4b, 0xcd, 0x26, 0x1e, 0x4c, 0x61, 0x20, 0xb2, 0x8e, 0x37, 0x63, 0x62, 0x67, - 0x87, 0x7a, 0xd7, 0x03, 0x4c, 0xf1, 0xd0, 0xc7, 0x6c, 0xd2, 0xe5, 0xc0, 0x9b, 0x1d, 0xe9, 0xf7, - 0x82, 0x9d, 0xf4, 0x84, 0x2a, 0xa6, 0xa9, 0xe4, 0x0a, 0xcc, 0x21, 0x89, 0x8b, 0xc4, 0x57, 0x9d, - 0x94, 0x79, 0x73, 0x68, 0x67, 0xd6, 0x11, 0xdf, 0x74, 0x52, 0xa6, 0x8d, 0x85, 0x98, 0x77, 0x65, - 0x63, 0xf3, 0xa3, 0x8d, 0xd9, 0x49, 0x85, 0xb1, 0x2d, 0x80, 0x90, 0xa5, 0x34, 0x53, 0x31, 0x4b, - 0x94, 0xb7, 0x80, 0x96, 0x4a, 0x14, 0xbd, 0x9d, 0x21, 0x97, 0x69, 0x44, 0xed, 0x76, 0x2e, 0x9a, - 0xed, 0xb4, 0x34, 0xdc, 0xce, 0xcb, 0x30, 0xc3, 0xe2, 0x34, 0x12, 0x1d, 0xc6, 0x7c, 0x1e, 0x7a, - 0x4b, 0x46, 0x87, 0x23, 0x1d, 0x84, 0x64, 0x07, 0x96, 0xd9, 0x7b, 0xc5, 0xb2, 0x84, 0x46, 0x7e, - 0x2e, 0x59, 0xe6, 0x4b, 0x45, 0x15, 0xf3, 0x08, 0x0a, 0x2e, 0x39, 0xd6, 0x77, 0x92, 0x65, 0x47, - 0x9a, 0x41, 0x38, 0x5c, 0x1d, 0x22, 0xef, 0x07, 0x6d, 0x9a, 0xb4, 0x58, 0xc9, 0xdd, 0xe5, 0x91, - 0xee, 0x5e, 0x1e, 0x50, 0xbe, 0x8f, 0x4a, 0x0a, 0xf7, 0x37, 0x01, 0x8e, 0xe9, 0x7b, 0x3f, 0xc9, - 0xe3, 0x26, 0xcb, 0xbc, 0x2a, 0xae, 0x68, 0xfa, 0x98, 0xbe, 0x7f, 0x85, 0x04, 0xcd, 0x6e, 0xf1, - 0x53, 0x96, 0x18, 0xdf, 0x2f, 0x19, 0x36, 0x52, 0xd0, 0xf3, 0x2f, 0x60, 0xba, 0xcd, 0x33, 0xb3, - 0x24, 0x6f, 0x65, 0x74, 0x86, 0x6b, 0x61, 0x6d, 0xda, 0x56, 0x87, 0xd5, 0xa2, 0xea, 0xdd, 0x07, - 0xe0, 0x21, 0x4b, 0x14, 0x57, 0x9c, 0x49, 0xcf, 0xc3, 0x43, 0x56, 0xed, 0x1e, 0xb2, 0x83, 0x82, - 0xd7, 0x28, 0xc9, 0xe9, 0xd8, 0xf0, 0xd8, 0xa7, 0x61, 0x98, 0x31, 0xa9, 0x4f, 0xf8, 0x1a, 0x1e, - 0x92, 0x19, 0x1e, 0x3f, 0x76, 0x24, 0xb2, 0x01, 0xd3, 0x3c, 0x51, 0x2c, 0x63, 0x52, 0x49, 0xaf, - 0x86, 0xfc, 0x2e, 0x41, 0x07, 0x86, 0x4b, 0x3f, 0x63, 0x52, 0xe4, 0x59, 0xc0, 0x7c, 0x57, 0x32, - 0xd7, 0xb1, 0xe2, 0x2c, 0x71, 0xfd, 0xe5, 0x40, 0x8e, 0x2b, 0x5c, 0xeb, 0x30, 0xfd, 0x56, 0x34, - 0x7d, 0xc5, 0x55, 0xc4, 0xbc, 0x0d, 0x53, 0x74, 0xde, 0x8a, 0xe6, 0x1b, 0x3d, 0x26, 0x3f, 0xc0, - 0x56, 0x44, 0xa5, 0xfe, 0x5c, 0x48, 0xf9, 0x4e, 0x64, 0xe1, 0x60, 0xbc, 0x36, 0x47, 0xee, 0x50, - 0x4d, 0x6b, 0x38, 0xb4, 0x0a, 0xfa, 0x42, 0xb5, 0x0f, 0x5b, 0x11, 0x6b, 0xd1, 0xc8, 0x2f, 0xea, - 0x9e, 0x1f, 0x44, 0xba, 0xe0, 0x1c, 0xf3, 0x00, 0xcf, 0x85, 0xb7, 0x85, 0x2b, 0x5a, 0x47, 0xa9, - 0xc7, 0xb6, 0x16, 0xee, 0xf7, 0x88, 0xe8, 0x8a, 0x11, 0x53, 0x1e, 0x79, 0xdb, 0xa6, 0x62, 0xe8, - 0xdf, 0xfa, 0xbc, 0xe9, 0xbf, 0x7e, 0xc2, 0x83, 0x13, 0x8c, 0x73, 0xdd, 0x9c, 0x37, 0x4d, 0x7c, - 0x65, 0x69, 0x7a, 0xaf, 0x63, 0xd1, 0xe4, 0x11, 0x33, 0x15, 0xc9, 0xbb, 0x62, 0xce, 0x81, 0xa1, - 0x61, 0x39, 0x22, 0xab, 0x30, 0x15, 0x77, 0x7c, 0xc9, 0x15, 0xf3, 0xae, 0x22, 0x77, 0x32, 0xee, - 0x1c, 0x71, 0x85, 0x45, 0x5d, 0x1c, 0x1f, 0xf3, 0x80, 0xf9, 0x91, 0xb0, 0x4b, 0xbd, 0x86, 0x02, - 0xf3, 0x86, 0xfc, 0xc2, 0x52, 0xb5, 0x8b, 0x22, 0xf1, 0xd3, 0x8c, 0xc5, 0x5c, 0x32, 0xe9, 0x87, - 0x5c, 0xea, 0xf8, 0xe7, 0x5c, 0xb6, 0x59, 0x68, 0x52, 0xf0, 0xba, 0x71, 0x51, 0x24, 0x87, 0x56, - 0xe8, 0x49, 0x59, 0x06, 0x93, 0xf2, 0x73, 0x58, 0xed, 0x51, 0x22, 0x62, 0xca, 0x6d, 0x02, 0xdf, - 0xc0, 0xd9, 0xd5, 0xd2, 0x6c, 0x64, 0xda, 0x5c, 0xf6, 0xca, 0xd3, 0x78, 0x1c, 0xe7, 0x4a, 0x7f, - 0x6a, 0xf4, 0x91, 0xbe, 0x85, 0xf3, 0x2e, 0x75, 0xe7, 0x1d, 0x38, 0xee, 0x41, 0x48, 0x7c, 0xb8, - 0x5c, 0x9e, 0x88, 0x39, 0x20, 0x3b, 0x49, 0x50, 0x0a, 0xfc, 0xed, 0xd1, 0x81, 0xef, 0xea, 0x7e, - 0x41, 0xa5, 0x3a, 0xea, 0x24, 0x41, 0x11, 0xf8, 0xa8, 0xd7, 0x00, 0x96, 0x6c, 0xc9, 0x45, 0xc2, - 0x93, 0x96, 0xcf, 0xb2, 0x4c, 0x64, 0xd2, 0xbb, 0x83, 0x27, 0xe6, 0x5a, 0xf7, 0xc4, 0xbc, 0x2e, - 0xd4, 0x1d, 0x96, 0xc4, 0x9f, 0x6a, 0xe9, 0xc6, 0x86, 0x38, 0x9b, 0x29, 0xc9, 0x37, 0xb0, 0x51, - 0xb6, 0x26, 0x69, 0xec, 0xce, 0x85, 0xd9, 0xc3, 0x8f, 0x71, 0x2f, 0xbc, 0xae, 0x8e, 0x23, 0x1a, - 0xdb, 0xf3, 0x81, 0xfb, 0xf8, 0xb4, 0x77, 0xb5, 0x92, 0x05, 0x79, 0xc6, 0x55, 0xc7, 0x37, 0xe7, - 0xf6, 0x98, 0xb3, 0xcc, 0xfb, 0x04, 0x55, 0x94, 0x96, 0x71, 0x64, 0x85, 0x0e, 0x0a, 0x99, 0xfe, - 0x70, 0xe0, 0x86, 0xba, 0x8e, 0x60, 0x07, 0xcf, 0x67, 0x29, 0x1c, 0x7a, 0xbb, 0x5c, 0x63, 0xf0, - 0xa4, 0xd7, 0x3e, 0xd6, 0xcf, 0x34, 0xe3, 0x49, 0xc0, 0x53, 0x1a, 0x19, 0x17, 0x76, 0xfb, 0x93, - 0x48, 0x57, 0xc7, 0x43, 0x27, 0xe3, 0x6a, 0xba, 0x50, 0x6d, 0x96, 0xf9, 0xfa, 0x10, 0x48, 0xef, - 0x2e, 0x56, 0x0e, 0x40, 0xd2, 0x4b, 0x4d, 0x21, 0x77, 0x60, 0xa9, 0x38, 0xe8, 0xa9, 0x88, 0x78, - 0xa0, 0x0b, 0xd7, 0xa7, 0xa8, 0x78, 0xd1, 0x31, 0x0e, 0x2d, 0x5d, 0x9f, 0xb0, 0x14, 0x4b, 0x43, - 0x26, 0xde, 0xb2, 0x40, 0x49, 0xef, 0x33, 0xd4, 0x37, 0xab, 0x89, 0x87, 0x96, 0xa6, 0x4d, 0xa6, - 0x42, 0x2a, 0x1a, 0xf9, 0x81, 0x08, 0x99, 0x77, 0xdf, 0x7c, 0x46, 0x0c, 0x69, 0x5f, 0x84, 0x8c, - 0x3c, 0x80, 0xd5, 0x34, 0x63, 0xc7, 0x2c, 0xcb, 0xcc, 0x47, 0x8f, 0x76, 0x8f, 0xd3, 0xe7, 0x26, - 0x41, 0x0b, 0xf6, 0x13, 0xaa, 0x68, 0x71, 0xaa, 0x3e, 0x01, 0xd2, 0x9d, 0x17, 0xd1, 0xa4, 0x95, - 0xd3, 0x16, 0xf3, 0x1e, 0x98, 0xaf, 0x4f, 0xc1, 0x79, 0x61, 0x19, 0xe4, 0x1a, 0xcc, 0x77, 0xc5, - 0x71, 0xbf, 0xbe, 0x30, 0x5d, 0x6f, 0x41, 0xc5, 0x1d, 0xba, 0x01, 0x0b, 0x69, 0x26, 0xde, 0x77, - 0x4a, 0xf5, 0xf7, 0x2b, 0xd3, 0xa4, 0x20, 0xb9, 0x5b, 0x82, 0x5b, 0x70, 0x25, 0x63, 0xc7, 0x19, - 0x93, 0x6d, 0xd3, 0x44, 0x4b, 0xff, 0x94, 0x46, 0x3c, 0xf4, 0x8f, 0x33, 0x11, 0x97, 0xce, 0xc8, - 0xc3, 0x91, 0x67, 0x64, 0xcb, 0xaa, 0xc1, 0xae, 0x5b, 0xfe, 0xaf, 0x56, 0xf2, 0x2c, 0x13, 0x71, - 0x71, 0x4e, 0x6e, 0xc3, 0x62, 0x66, 0x5a, 0x7d, 0xde, 0xe4, 0x91, 0xf9, 0x94, 0x3c, 0xc2, 0x25, - 0x0d, 0xd0, 0x75, 0x17, 0x23, 0x83, 0xb6, 0x10, 0x91, 0xf4, 0xfe, 0x0b, 0x45, 0xdc, 0x90, 0xec, - 0x42, 0x55, 0xb6, 0xc5, 0x3b, 0x9f, 0x27, 0xce, 0x33, 0x3f, 0xe2, 0x52, 0x79, 0x5f, 0x9b, 0x8f, - 0x82, 0xe6, 0x1d, 0x24, 0xd6, 0x3b, 0x8d, 0x32, 0xc8, 0x5b, 0xb8, 0xa6, 0x9b, 0x3e, 0x3d, 0x41, - 0x32, 0xa9, 0x0f, 0xd3, 0x19, 0x1e, 0x7e, 0x33, 0xfa, 0x73, 0xad, 0x15, 0x1d, 0x24, 0x47, 0x56, - 0xcd, 0xa0, 0x8b, 0x2b, 0x30, 0x29, 0x4f, 0x78, 0x14, 0x49, 0xef, 0x5b, 0x5c, 0xb5, 0x1d, 0x91, - 0x2a, 0x4c, 0x98, 0x9e, 0xe2, 0x31, 0x86, 0xca, 0x0c, 0x74, 0x24, 0xa5, 0xca, 0x18, 0x53, 0xce, - 0x13, 0x6f, 0xcf, 0x44, 0xd2, 0x50, 0xad, 0x13, 0xb8, 0x17, 0x79, 0x86, 0x91, 0xde, 0x37, 0x1d, - 0x9d, 0x1d, 0x6a, 0x05, 0xb9, 0xd4, 0x9f, 0x9b, 0x22, 0xd1, 0x9e, 0x18, 0x05, 0x48, 0x2d, 0x12, - 0x6c, 0x07, 0x96, 0x87, 0x1d, 0xb3, 0xa7, 0x26, 0xc3, 0xf2, 0x81, 0xc3, 0xb5, 0x0e, 0xd3, 0x28, - 0x8f, 0xcd, 0xdd, 0x33, 0xf3, 0x19, 0xd5, 0x04, 0x6c, 0xec, 0x6a, 0x50, 0x71, 0xe7, 0xc7, 0x7b, - 0x6e, 0x78, 0x6e, 0x4c, 0xee, 0x40, 0x25, 0x66, 0xba, 0x31, 0x79, 0x7d, 0xec, 0x85, 0x58, 0xf2, - 0x16, 0xba, 0x25, 0x0f, 0x3f, 0x77, 0x8d, 0x42, 0xa0, 0xae, 0x00, 0xba, 0x7d, 0x03, 0xd9, 0x86, - 0x59, 0x17, 0x25, 0x34, 0x6b, 0x70, 0x07, 0x98, 0x0d, 0x47, 0xc3, 0x2b, 0x30, 0xc9, 0xa5, 0xcc, - 0x59, 0x66, 0x51, 0x9e, 0x1d, 0x91, 0x8f, 0x81, 0x98, 0x5f, 0x7e, 0x81, 0x05, 0x78, 0x68, 0x21, - 0xc7, 0xa2, 0xe1, 0x38, 0x10, 0x70, 0x10, 0xd6, 0x15, 0x2c, 0xe9, 0xac, 0xc0, 0xc5, 0xfc, 0x76, - 0x88, 0x97, 0x01, 0x29, 0x5b, 0xb5, 0x78, 0xf7, 0x06, 0x4c, 0x62, 0x9f, 0xe0, 0xd0, 0xee, 0xc0, - 0x66, 0x59, 0xf6, 0x2f, 0x46, 0xba, 0x1f, 0xc1, 0xc2, 0x73, 0x66, 0xac, 0x9c, 0x85, 0xf3, 0xfe, - 0x07, 0x88, 0xc1, 0xb9, 0xe7, 0x49, 0x91, 0x6b, 0x30, 0x61, 0x90, 0x9b, 0x01, 0x9b, 0x03, 0x0b, - 0x33, 0xdc, 0xfa, 0x7b, 0x20, 0x06, 0xde, 0xf6, 0x28, 0x2b, 0x26, 0x8f, 0x9d, 0x37, 0xf9, 0xd7, - 0xc1, 0xda, 0xab, 0x40, 0x0c, 0xac, 0x3d, 0xd7, 0xd9, 0x3a, 0x2c, 0x3e, 0x0e, 0xc3, 0x97, 0x98, - 0x71, 0x67, 0xc9, 0x5c, 0x83, 0xe5, 0x06, 0x8b, 0xc5, 0x29, 0x3b, 0x5f, 0x2c, 0x37, 0x11, 0x34, - 0x42, 0xbf, 0x5d, 0xe2, 0xbc, 0x35, 0x57, 0x34, 0x85, 0x59, 0x9b, 0x39, 0x77, 0x60, 0xca, 0x9c, - 0xa3, 0x73, 0x2e, 0x4a, 0x9c, 0xc4, 0x2f, 0xce, 0x9e, 0xbf, 0x2c, 0xc1, 0x84, 0xc1, 0xe7, 0xf7, - 0x61, 0x85, 0x46, 0x91, 0x78, 0xe7, 0x17, 0x30, 0x47, 0xb2, 0x24, 0x34, 0xd6, 0x74, 0x95, 0xad, - 0x22, 0xf7, 0xa9, 0x65, 0x1e, 0x19, 0x1e, 0xf9, 0x16, 0x16, 0xba, 0xa8, 0x9e, 0x36, 0x59, 0x24, - 0xbd, 0x71, 0x5c, 0xdc, 0xea, 0x10, 0x4c, 0xaf, 0xf9, 0x8d, 0x02, 0xbd, 0xe3, 0x50, 0x0e, 0xbf, - 0x17, 0xb8, 0xf0, 0xe1, 0xf7, 0x02, 0x8f, 0xa0, 0x46, 0x73, 0x25, 0x7c, 0x99, 0x37, 0x65, 0x90, - 0xf1, 0x26, 0xf3, 0x13, 0xf6, 0xce, 0x77, 0x3b, 0x76, 0x11, 0x7d, 0x58, 0xd5, 0x12, 0x47, 0x4e, - 0xe0, 0x15, 0x7b, 0xf7, 0xb2, 0xd8, 0xae, 0xf9, 0xbe, 0xbe, 0x7d, 0xc2, 0x34, 0xc3, 0xbd, 0x54, - 0x72, 0xab, 0x0b, 0xa7, 0x9b, 0x1d, 0x9f, 0xa6, 0xa9, 0x2e, 0x3b, 0x93, 0x56, 0xd4, 0x30, 0xf6, - 0x3a, 0x8f, 0xd3, 0xf4, 0x20, 0x1c, 0x8e, 0xbc, 0xa7, 0x3e, 0x1c, 0x79, 0x0f, 0x05, 0xd5, 0x95, - 0x0f, 0x07, 0xd5, 0xdb, 0x30, 0x13, 0x32, 0xed, 0x78, 0x8a, 0xfe, 0xd9, 0x2b, 0x88, 0x12, 0x69, - 0x00, 0x56, 0xc3, 0x20, 0xac, 0x7e, 0x01, 0x55, 0xf6, 0x3e, 0xe5, 0x99, 0xb9, 0x08, 0xe8, 0xae, - 0x67, 0x66, 0xe4, 0x7a, 0x48, 0x77, 0x5e, 0xb1, 0xa4, 0xcb, 0x30, 0x63, 0x30, 0x93, 0xae, 0xfe, - 0xd2, 0x9b, 0x35, 0x0d, 0x1d, 0x92, 0x74, 0xf5, 0x97, 0xba, 0x6f, 0x6c, 0x53, 0xe9, 0x82, 0xe8, - 0xbf, 0xe3, 0xaa, 0xed, 0x72, 0xc4, 0x75, 0xd9, 0x73, 0x18, 0xd8, 0xf5, 0x36, 0x95, 0x36, 0x96, - 0xdf, 0x73, 0xd5, 0xb6, 0x49, 0x61, 0xbb, 0xe7, 0xcf, 0x61, 0xb5, 0xcd, 0x43, 0x66, 0x3e, 0xfd, - 0xe5, 0xfe, 0x41, 0xe2, 0xe5, 0x44, 0xa5, 0x51, 0xd5, 0x6c, 0xfd, 0x4d, 0x2f, 0xb5, 0x10, 0x92, - 0x7c, 0x05, 0x6b, 0xdd, 0x69, 0x22, 0x57, 0x91, 0x10, 0x27, 0x7e, 0x10, 0x71, 0x96, 0x28, 0x89, - 0x97, 0x12, 0x95, 0xc6, 0x8a, 0x9b, 0xf8, 0xda, 0xb0, 0xf7, 0x0d, 0xd7, 0x16, 0x92, 0xc5, 0xa2, - 0xb4, 0x7e, 0x0a, 0x97, 0xb8, 0xec, 0x66, 0x26, 0x26, 0x0f, 0x42, 0xbe, 0x25, 0x54, 0x43, 0xb8, - 0x2c, 0x92, 0x32, 0xdc, 0xeb, 0xe8, 0x66, 0x96, 0x7c, 0x09, 0x9e, 0xf3, 0x34, 0xcd, 0x44, 0xa0, - 0xbb, 0x8f, 0xa4, 0xd5, 0x73, 0x49, 0xb1, 0x62, 0xf9, 0x87, 0x05, 0xdb, 0xdc, 0x54, 0x38, 0x38, - 0xb9, 0x5c, 0x82, 0x93, 0x1a, 0x29, 0x6a, 0x38, 0xe9, 0xba, 0xf5, 0x2a, 0xda, 0x9d, 0xd1, 0x34, - 0xd7, 0xa3, 0x0f, 0x20, 0xce, 0x4b, 0x43, 0x10, 0xe7, 0x0d, 0x58, 0xb0, 0xc1, 0x68, 0xf3, 0xd4, - 0xcf, 0xf2, 0xc8, 0x5c, 0x31, 0x4c, 0x37, 0xe6, 0xbb, 0xe4, 0x46, 0x1e, 0x31, 0xf2, 0x1c, 0xb6, - 0xfb, 0x04, 0x07, 0xdd, 0x30, 0x57, 0x0d, 0x9b, 0xbd, 0x33, 0xfb, 0xbd, 0x39, 0x07, 0x39, 0x7a, - 0xe7, 0x20, 0xc7, 0xfd, 0xd1, 0x00, 0x70, 0x0d, 0xa7, 0x9f, 0x07, 0xf2, 0xbe, 0x84, 0xb5, 0xb2, - 0x92, 0x84, 0x29, 0xbf, 0xc9, 0x85, 0x34, 0xd6, 0x6b, 0xfd, 0xf8, 0xf3, 0x15, 0x53, 0x7b, 0x5c, - 0x48, 0x34, 0xff, 0x0b, 0xe0, 0xe1, 0xfa, 0x6f, 0x07, 0x0f, 0x37, 0x7e, 0x3d, 0x3c, 0xdc, 0xfc, - 0x95, 0xf0, 0x70, 0xeb, 0x3c, 0x78, 0x78, 0x0e, 0x88, 0xba, 0xfc, 0xe1, 0x20, 0x6a, 0xfb, 0x2c, - 0x10, 0x35, 0x04, 0x1d, 0x7d, 0x34, 0x14, 0x1d, 0x3d, 0x83, 0xa5, 0x8c, 0x25, 0xec, 0x5d, 0x4f, - 0xc9, 0xad, 0x8f, 0x2e, 0xb9, 0x76, 0x52, 0x91, 0x3f, 0x0f, 0x61, 0xad, 0xb8, 0xc7, 0x72, 0x8f, - 0x40, 0xbe, 0xc0, 0x62, 0x2b, 0xbd, 0x2b, 0x68, 0x7a, 0xd5, 0x09, 0xec, 0x59, 0xfe, 0x6b, 0xc3, - 0x26, 0x7b, 0xb0, 0x59, 0xcc, 0xed, 0x49, 0x1f, 0x37, 0xff, 0x2a, 0xce, 0x5f, 0x77, 0x42, 0xe5, - 0xb4, 0x70, 0x3a, 0x6e, 0xc1, 0x62, 0x11, 0x4b, 0x17, 0x88, 0x6b, 0x18, 0x88, 0x05, 0x47, 0x77, - 0x21, 0xd8, 0x85, 0xe5, 0x61, 0x61, 0x37, 0x57, 0x3b, 0x44, 0x0e, 0x06, 0xbb, 0x0a, 0x13, 0xaa, - 0xcd, 0x8a, 0xfb, 0x1b, 0x33, 0x20, 0x5b, 0x00, 0x7a, 0x15, 0x08, 0xe9, 0x3a, 0xde, 0x1d, 0xd3, - 0xcf, 0x77, 0x29, 0xe5, 0x1e, 0x26, 0x1c, 0xd5, 0xc3, 0xd4, 0x5f, 0xc2, 0x5c, 0x4f, 0xeb, 0x40, - 0xd6, 0xa0, 0x82, 0x3d, 0x86, 0x5f, 0x74, 0x69, 0x53, 0x38, 0x3e, 0x08, 0x07, 0xbe, 0x5d, 0xe3, - 0x03, 0xdf, 0xae, 0xfa, 0x6b, 0x58, 0xe8, 0xeb, 0x22, 0xc8, 0x25, 0x0d, 0xdd, 0xf2, 0xae, 0xba, - 0x09, 0x79, 0x92, 0x1f, 0xe8, 0x4e, 0x78, 0x3e, 0xe4, 0x12, 0x37, 0xc6, 0x3e, 0x31, 0x8c, 0xe3, - 0x66, 0xcf, 0x39, 0x2a, 0x3e, 0x25, 0xd4, 0xff, 0x36, 0x06, 0xb3, 0xe5, 0xa7, 0x06, 0xf2, 0xdf, - 0x40, 0x8a, 0x56, 0xa6, 0x9b, 0x38, 0x63, 0x23, 0x13, 0xa7, 0x68, 0x66, 0xca, 0xb0, 0x39, 0xa0, - 0x29, 0x35, 0xbb, 0xa6, 0x0b, 0x61, 0x2e, 0xad, 0x4b, 0x03, 0x74, 0x84, 0x8a, 0x2c, 0x3b, 0xe5, - 0x01, 0xb3, 0x00, 0xc8, 0x0d, 0xc9, 0x55, 0x98, 0xb3, 0x3f, 0xf5, 0xf2, 0x0e, 0x42, 0xec, 0x82, - 0x34, 0xd4, 0x2c, 0x13, 0xeb, 0x7f, 0x1f, 0x83, 0xf5, 0x73, 0x6a, 0x8f, 0x06, 0x7f, 0x01, 0x55, - 0xac, 0x25, 0xb2, 0x8e, 0xdd, 0xa6, 0x62, 0xac, 0x3d, 0x16, 0x41, 0x90, 0xbb, 0x83, 0x6b, 0x3d, - 0x1e, 0x1f, 0xed, 0xb1, 0x9b, 0x55, 0x78, 0x7c, 0x1f, 0x56, 0xd2, 0x4c, 0xa4, 0x2c, 0x53, 0x1d, - 0x3f, 0xa0, 0xb9, 0x2c, 0x2a, 0xa5, 0x75, 0xaa, 0xea, 0xb8, 0xfb, 0x86, 0x69, 0xd6, 0x56, 0x85, - 0x89, 0x53, 0x1a, 0xe5, 0xcc, 0x7a, 0x66, 0x06, 0xf7, 0xfe, 0x74, 0x11, 0x16, 0xdc, 0x43, 0xe3, - 0x91, 0xdd, 0x8b, 0x00, 0x66, 0xcb, 0xef, 0x8f, 0x64, 0xb3, 0x9b, 0x78, 0x43, 0xde, 0x43, 0x6b, - 0x5b, 0x67, 0xb1, 0x4d, 0x33, 0x5e, 0xaf, 0xfe, 0xf1, 0x1f, 0xff, 0xfa, 0xf3, 0xf8, 0x3c, 0x99, - 0xdd, 0x3d, 0xbd, 0xbb, 0x5b, 0xbc, 0x4e, 0xfe, 0x0e, 0xa0, 0xfb, 0xea, 0x48, 0xd6, 0x4b, 0x20, - 0xa8, 0xff, 0x2d, 0xb2, 0x36, 0x98, 0xf8, 0xf5, 0x2d, 0xd4, 0xe9, 0x91, 0xe5, 0xb2, 0xce, 0xdd, - 0xdf, 0xf3, 0xf0, 0xeb, 0xdb, 0x3f, 0x3f, 0x1c, 0xbb, 0x4d, 0x28, 0xcc, 0xf5, 0x3c, 0x57, 0x92, - 0xd2, 0x22, 0x87, 0xbd, 0x63, 0x0e, 0xb3, 0xb1, 0x89, 0x36, 0x56, 0xeb, 0x3d, 0xeb, 0x7e, 0x58, - 0x3c, 0x3b, 0xa6, 0x30, 0xd7, 0xf3, 0x76, 0x59, 0x36, 0x31, 0xec, 0x51, 0x73, 0x98, 0x89, 0x8f, - 0xd1, 0xc4, 0xf5, 0x7b, 0xeb, 0xbd, 0x6e, 0xd8, 0x5f, 0x3b, 0xc6, 0x9d, 0xc2, 0x62, 0x08, 0x73, - 0x3d, 0x6f, 0x95, 0x65, 0x8b, 0xc3, 0x1e, 0x31, 0x6b, 0x2b, 0x03, 0x69, 0xf5, 0x34, 0x4e, 0x55, - 0xa7, 0xbe, 0x8e, 0x66, 0x2f, 0xdd, 0x1e, 0xb6, 0x7b, 0xf7, 0xfe, 0x3a, 0x09, 0x73, 0x06, 0x88, - 0xbb, 0x7c, 0xf8, 0x7f, 0x80, 0x2e, 0x3a, 0x2f, 0x87, 0x6a, 0xe0, 0xa6, 0xa0, 0xb6, 0x31, 0x9c, - 0x69, 0x33, 0x81, 0xa0, 0xdd, 0x59, 0x02, 0xda, 0xae, 0xc5, 0xee, 0x6f, 0xa0, 0xe2, 0x30, 0x39, - 0x59, 0xeb, 0xc9, 0x82, 0x32, 0x74, 0xad, 0xf5, 0xa3, 0xe4, 0xfa, 0x06, 0xea, 0x5a, 0x21, 0x4b, - 0x5d, 0x5d, 0xa5, 0xf8, 0x7f, 0x0f, 0x33, 0x25, 0x18, 0x4f, 0x36, 0xfa, 0xa3, 0x7f, 0xbe, 0xee, - 0x35, 0xd4, 0xbd, 0x5c, 0x2f, 0xad, 0xf3, 0xa1, 0x45, 0xe5, 0x21, 0xcc, 0x94, 0x20, 0x7d, 0x59, - 0xf1, 0x20, 0xd2, 0x1f, 0x54, 0x7c, 0x1d, 0x15, 0x6f, 0xdf, 0x5b, 0x2d, 0x2f, 0x1a, 0xff, 0xda, - 0x58, 0x5b, 0x2b, 0x3f, 0xc0, 0x4c, 0x09, 0xbe, 0x97, 0xad, 0x0c, 0xa2, 0xfa, 0x33, 0xa3, 0x6c, - 0xbd, 0xb8, 0x3d, 0xb8, 0x43, 0x24, 0x80, 0xe9, 0x02, 0xf8, 0x93, 0x5a, 0x29, 0x2f, 0xfb, 0x6e, - 0x03, 0x06, 0x3d, 0xb8, 0x85, 0x4a, 0xaf, 0xd4, 0xb7, 0x06, 0x94, 0xee, 0xda, 0x6f, 0xd1, 0xee, - 0xd5, 0x8c, 0x1d, 0xeb, 0x18, 0x9c, 0xc2, 0x6c, 0xf9, 0xe6, 0xa0, 0x5c, 0x46, 0x86, 0xdc, 0x28, - 0x0c, 0x9a, 0x7a, 0x80, 0xa6, 0xee, 0xde, 0xbe, 0x73, 0xb6, 0xa9, 0xd2, 0x49, 0xf9, 0xb9, 0xb0, - 0x9b, 0xc1, 0x4c, 0xe9, 0x4e, 0x80, 0xf4, 0xa5, 0x64, 0xef, 0x0d, 0x45, 0x6d, 0xf3, 0x0c, 0xae, - 0xcd, 0x58, 0x1b, 0x30, 0x32, 0xc2, 0xdd, 0xbd, 0xea, 0xff, 0x91, 0xf4, 0xa4, 0x65, 0xfe, 0x95, - 0x64, 0xf7, 0xf4, 0xee, 0x23, 0x13, 0x8a, 0x49, 0xfc, 0xf3, 0xd9, 0x7f, 0x02, 0x00, 0x00, 0xff, - 0xff, 0xdf, 0x4e, 0x18, 0xf7, 0x02, 0x23, 0x00, 0x00, + // 3066 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4b, 0x6f, 0x1c, 0x47, + 0x92, 0x46, 0x53, 0x22, 0xd9, 0x1d, 0xcd, 0x67, 0xb2, 0x45, 0x16, 0x9b, 0x0f, 0xd1, 0xad, 0xb7, + 0x64, 0x93, 0xb2, 0x2c, 0xcb, 0xb6, 0xb4, 0x36, 0x2c, 0x52, 0x8f, 0x25, 0x56, 0x0f, 0xa2, 0x29, + 0xaf, 0x81, 0xdd, 0x85, 0x0b, 0xd9, 0x55, 0xd9, 0xdd, 0x29, 0x56, 0x55, 0x96, 0x2b, 0xab, 0x28, + 0xb5, 0x17, 0x06, 0x16, 0xfb, 0x07, 0xf6, 0xb0, 0xa7, 0xf9, 0x15, 0x83, 0x99, 0xdf, 0x30, 0xf7, + 0x39, 0xcc, 0x1f, 0x98, 0xc3, 0xdc, 0xe7, 0x2f, 0x0c, 0x32, 0x32, 0xb3, 0xba, 0xfa, 0x41, 0xb6, + 0x05, 0x0f, 0x06, 0x98, 0x13, 0x3b, 0x23, 0x22, 0x23, 0x32, 0x32, 0x22, 0xa3, 0xe2, 0xcb, 0x24, + 0x2c, 0x50, 0xcf, 0x13, 0x59, 0x94, 0xca, 0xdd, 0x38, 0x11, 0xa9, 0x20, 0x65, 0xc9, 0xd2, 0x94, + 0x47, 0x1d, 0x59, 0xbf, 0xdc, 0x11, 0xa2, 0x13, 0xb0, 0x3d, 0x1a, 0xf3, 0xbd, 0x36, 0x67, 0x81, + 0xef, 0xb6, 0x58, 0x97, 0x9e, 0x72, 0x91, 0x68, 0xd1, 0xfa, 0x66, 0x41, 0x80, 0x46, 0x91, 0x48, + 0x69, 0xca, 0x45, 0x64, 0x14, 0xd5, 0x37, 0x0c, 0x17, 0x47, 0xad, 0xac, 0xbd, 0xc7, 0xc2, 0x38, + 0xed, 0x19, 0xe6, 0xce, 0x30, 0x53, 0x1b, 0x08, 0xa9, 0x3c, 0x31, 0x12, 0x97, 0x87, 0x25, 0x52, + 0x1e, 0x32, 0x99, 0xd2, 0x30, 0xd6, 0x02, 0x8d, 0xdf, 0x95, 0x60, 0xe5, 0x05, 0x97, 0xe9, 0x63, + 0xb3, 0xfe, 0x26, 0xfb, 0x31, 0x63, 0x32, 0x25, 0x3b, 0x50, 0x89, 0x69, 0x87, 0xb9, 0x92, 0xff, + 0xc4, 0x9c, 0xd2, 0x4e, 0xe9, 0xe6, 0xf4, 0xfe, 0x85, 0x3f, 0x3f, 0x2e, 0x35, 0xcb, 0x8a, 0x7a, + 0xcc, 0x7f, 0x62, 0xa4, 0x01, 0x80, 0x12, 0xa9, 0x38, 0x61, 0x91, 0x33, 0xb5, 0x53, 0xba, 0x59, + 0xd1, 0x22, 0x38, 0xf1, 0x8d, 0xa2, 0x92, 0xaf, 0x00, 0xfa, 0x4b, 0x72, 0x2e, 0xec, 0x94, 0x6e, + 0x56, 0xef, 0xd5, 0x77, 0xf5, 0x9a, 0x76, 0xed, 0x9a, 0x76, 0x9f, 0x29, 0x91, 0x97, 0x54, 0x9e, + 0x34, 0x2b, 0x6d, 0xfb, 0x93, 0xac, 0xc3, 0xf4, 0x8f, 0x19, 0x4b, 0x7a, 0xce, 0xc5, 0xbe, 0x66, + 0x4d, 0x69, 0x84, 0x50, 0x1b, 0x5c, 0xb2, 0x8c, 0x45, 0x24, 0x19, 0xf9, 0x04, 0xca, 0x36, 0x0c, + 0x4e, 0x69, 0xe7, 0xc2, 0xcd, 0xea, 0xbd, 0xe5, 0x5d, 0x1b, 0x87, 0x5d, 0x23, 0xdd, 0xcc, 0x45, + 0xc8, 0x75, 0x58, 0x8c, 0xd8, 0xfb, 0xd4, 0x1d, 0xf6, 0xa2, 0x39, 0xaf, 0xc8, 0x47, 0xd6, 0x89, + 0xc6, 0x15, 0x58, 0x7e, 0xce, 0xac, 0x35, 0xbb, 0x3f, 0x0b, 0x30, 0xc5, 0x7d, 0xdc, 0x98, 0x4a, + 0x73, 0x8a, 0xfb, 0x8d, 0x63, 0xa8, 0x1d, 0x24, 0x8c, 0xa6, 0xec, 0x7c, 0x39, 0x72, 0x07, 0x66, + 0xcd, 0x02, 0xd0, 0xd8, 0xd8, 0x25, 0x5a, 0x89, 0xc6, 0xff, 0x94, 0xa0, 0xf6, 0x5d, 0xec, 0x8f, + 0x6a, 0x2d, 0x68, 0x29, 0x4d, 0xd2, 0x42, 0x1e, 0x41, 0x35, 0x43, 0x25, 0x3a, 0x0a, 0x53, 0x13, + 0xa3, 0x00, 0x5a, 0x5c, 0xfd, 0x6e, 0x5c, 0x87, 0xda, 0x13, 0x16, 0xb0, 0x49, 0x7e, 0x35, 0xfe, + 0xea, 0xc0, 0xac, 0x11, 0x21, 0xeb, 0x50, 0xa6, 0x2d, 0x91, 0xa5, 0x6e, 0xc8, 0x8c, 0xc4, 0x2c, + 0x8e, 0x5f, 0x32, 0x72, 0x03, 0x16, 0xcd, 0xb2, 0x5c, 0x16, 0xd1, 0x56, 0xc0, 0x7c, 0x5c, 0x4f, + 0xb9, 0x69, 0x0f, 0xd0, 0x53, 0x4d, 0x25, 0x1b, 0x50, 0x51, 0x61, 0xe9, 0x24, 0x22, 0x8b, 0x31, + 0x71, 0x2a, 0xcd, 0x32, 0xed, 0xb0, 0xe7, 0x6a, 0x4c, 0x9e, 0xc1, 0x32, 0x95, 0x92, 0x77, 0x22, + 0xe6, 0xbb, 0x01, 0xf7, 0x58, 0x24, 0x99, 0x74, 0x2e, 0x62, 0xc4, 0xd7, 0x0b, 0x1b, 0x61, 0x44, + 0x5e, 0x68, 0x89, 0xe6, 0x12, 0x1d, 0x24, 0x48, 0xf2, 0x35, 0x2c, 0xe4, 0x7a, 0xe2, 0x80, 0x46, + 0xd2, 0x99, 0x46, 0x25, 0xab, 0xa3, 0x4a, 0x8e, 0x02, 0x1a, 0x35, 0xe7, 0x69, 0x61, 0x24, 0xc9, + 0x03, 0x28, 0xb7, 0x78, 0x92, 0x76, 0x7d, 0xda, 0x73, 0x66, 0xce, 0xd8, 0xd5, 0x37, 0xf6, 0xbc, + 0x35, 0x73, 0x59, 0xb5, 0x09, 0xad, 0x4c, 0xf2, 0x88, 0x49, 0xe9, 0xc6, 0x5d, 0x11, 0x31, 0xe9, + 0xcc, 0xee, 0x5c, 0xb8, 0x59, 0x69, 0x2e, 0x58, 0xf2, 0x11, 0x52, 0x09, 0x81, 0x8b, 0x1e, 0x4f, + 0x7b, 0x4e, 0x19, 0xfd, 0xc7, 0xdf, 0xe4, 0x23, 0x98, 0xf3, 0x44, 0x18, 0xd3, 0xa8, 0xe7, 0x46, + 0x34, 0x64, 0x4e, 0x05, 0x79, 0x55, 0x43, 0x7b, 0x45, 0x43, 0x46, 0x1e, 0x41, 0xdd, 0x53, 0x07, + 0x22, 0x4a, 0xdd, 0x38, 0x11, 0xa7, 0xdc, 0x67, 0xbe, 0xdb, 0x16, 0x89, 0x1b, 0xf2, 0x48, 0x24, + 0x0e, 0xe0, 0x84, 0x35, 0x23, 0x71, 0x64, 0x04, 0x9e, 0x89, 0xe4, 0xa5, 0x62, 0x13, 0x07, 0x66, + 0x31, 0x10, 0x49, 0xcf, 0xa9, 0xea, 0xd8, 0x99, 0xa1, 0xda, 0x75, 0x0f, 0x53, 0xdc, 0x77, 0x31, + 0x9b, 0x54, 0x29, 0x71, 0xe6, 0x26, 0xfa, 0xbd, 0x68, 0x26, 0x3d, 0xa1, 0x29, 0x53, 0x54, 0x72, + 0x05, 0xe6, 0x91, 0xc4, 0x45, 0xe4, 0xa6, 0xbd, 0x98, 0x39, 0xf3, 0x68, 0x67, 0xce, 0x12, 0xdf, + 0xf4, 0x62, 0xa6, 0x8c, 0xf9, 0x98, 0x77, 0x45, 0x63, 0x0b, 0x93, 0x8d, 0x99, 0x49, 0xb9, 0xb1, + 0x6d, 0x00, 0x9f, 0xc5, 0x34, 0x49, 0x43, 0x16, 0xa5, 0xce, 0x22, 0x5a, 0x2a, 0x50, 0xd4, 0x76, + 0xfa, 0x5c, 0xc6, 0x01, 0x35, 0xdb, 0xb9, 0xa4, 0xb7, 0xd3, 0xd0, 0x70, 0x3b, 0x2f, 0x43, 0x95, + 0x85, 0x71, 0x20, 0x7a, 0x8c, 0xb9, 0xdc, 0x77, 0x96, 0xb5, 0x0e, 0x4b, 0x3a, 0xf4, 0xc9, 0x2e, + 0xac, 0xb0, 0xf7, 0x29, 0x4b, 0x22, 0x1a, 0xb8, 0x99, 0x64, 0x89, 0x2b, 0x53, 0x9a, 0x32, 0x87, + 0xa0, 0xe0, 0xb2, 0x65, 0x7d, 0x27, 0x59, 0x72, 0xac, 0x18, 0x84, 0xc3, 0xd5, 0x31, 0xf2, 0xae, + 0xd7, 0xa5, 0x51, 0x87, 0x15, 0xdc, 0x5d, 0x99, 0xe8, 0xee, 0xe5, 0x11, 0xe5, 0x07, 0xa8, 0x24, + 0x77, 0x7f, 0x0b, 0xa0, 0x4d, 0xdf, 0xbb, 0x51, 0x16, 0xb6, 0x58, 0xe2, 0xd4, 0x70, 0x45, 0x95, + 0x36, 0x7d, 0xff, 0x0a, 0x09, 0x8a, 0xdd, 0xe1, 0xa7, 0x2c, 0xd2, 0xbe, 0x5f, 0xd2, 0x6c, 0xa4, + 0xa0, 0xe7, 0x5f, 0x40, 0xa5, 0xcb, 0x13, 0xbd, 0x24, 0x67, 0x75, 0x72, 0x86, 0x2b, 0x61, 0x65, + 0xda, 0x54, 0x87, 0xb5, 0xbc, 0xea, 0xdd, 0x07, 0xe0, 0x3e, 0x8b, 0x52, 0x9e, 0x72, 0x26, 0x1d, + 0x07, 0x0f, 0x59, 0xad, 0x7f, 0xc8, 0x0e, 0x73, 0x5e, 0xb3, 0x20, 0xa7, 0x62, 0xc3, 0x43, 0x97, + 0xfa, 0x7e, 0xc2, 0xa4, 0x3a, 0xe1, 0xeb, 0x78, 0x48, 0xaa, 0x3c, 0x7c, 0x6c, 0x49, 0x64, 0x13, + 0x2a, 0x3c, 0x4a, 0x59, 0xc2, 0x64, 0x2a, 0x9d, 0x3a, 0xf2, 0xfb, 0x04, 0x15, 0x18, 0x2e, 0xdd, + 0x84, 0x49, 0x91, 0x25, 0x1e, 0x73, 0x6d, 0xc9, 0xdc, 0xc0, 0x8a, 0xb3, 0xcc, 0xd5, 0x97, 0x03, + 0x39, 0xb6, 0x70, 0x6d, 0x40, 0xe5, 0xad, 0x68, 0xb9, 0x29, 0x4f, 0x03, 0xe6, 0x6c, 0xea, 0xa2, + 0xf3, 0x56, 0xb4, 0xde, 0xa8, 0x31, 0xf9, 0x01, 0xb6, 0x03, 0x2a, 0xd5, 0xe7, 0x42, 0xca, 0x77, + 0x22, 0xf1, 0x47, 0xe3, 0xb5, 0x35, 0x71, 0x87, 0xea, 0x4a, 0xc3, 0x91, 0x51, 0x30, 0x14, 0xaa, + 0x03, 0xd8, 0x0e, 0x58, 0x87, 0x06, 0x6e, 0x5e, 0xf7, 0x5c, 0x2f, 0x50, 0x05, 0xa7, 0xcd, 0x3d, + 0x3c, 0x17, 0xce, 0x36, 0xae, 0x68, 0x03, 0xa5, 0x1e, 0x9b, 0x5a, 0x78, 0x30, 0x20, 0xa2, 0x2a, + 0x46, 0x48, 0x79, 0xe0, 0xec, 0xe8, 0x8a, 0xa1, 0x7e, 0xab, 0xf3, 0xa6, 0xfe, 0xba, 0x11, 0xf7, + 0x4e, 0x30, 0xce, 0x0d, 0x7d, 0xde, 0x14, 0xf1, 0x95, 0xa1, 0xa9, 0xbd, 0x0e, 0x45, 0x8b, 0x07, + 0x4c, 0x57, 0x24, 0xe7, 0x8a, 0x3e, 0x07, 0x9a, 0x86, 0xe5, 0x88, 0xac, 0xc1, 0x6c, 0xd8, 0x73, + 0x25, 0x4f, 0x99, 0x73, 0x15, 0xb9, 0x33, 0x61, 0xef, 0x98, 0xa7, 0x58, 0xd4, 0x45, 0xbb, 0xcd, + 0x3d, 0xe6, 0x06, 0xc2, 0x2c, 0xf5, 0x1a, 0x0a, 0x2c, 0x68, 0xf2, 0x0b, 0x43, 0x55, 0x2e, 0x8a, + 0xc8, 0x8d, 0x13, 0x16, 0x72, 0xc9, 0xa4, 0xeb, 0x73, 0xa9, 0xe2, 0x9f, 0x71, 0xd9, 0x65, 0xbe, + 0x4e, 0xc1, 0xeb, 0xda, 0x45, 0x11, 0x1d, 0x19, 0xa1, 0x27, 0x45, 0x19, 0x4c, 0xca, 0xcf, 0x61, + 0x6d, 0x40, 0x89, 0x08, 0x29, 0x37, 0x09, 0x7c, 0x03, 0x67, 0xd7, 0x0a, 0xb3, 0x91, 0x69, 0x72, + 0xd9, 0x29, 0x4e, 0xe3, 0x61, 0x98, 0xa5, 0xea, 0x53, 0xa3, 0x8e, 0xf4, 0x2d, 0x9c, 0x77, 0xa9, + 0x3f, 0xef, 0xd0, 0x72, 0x0f, 0x7d, 0xe2, 0xc2, 0xe5, 0xe2, 0x44, 0xcc, 0x01, 0xd9, 0x8b, 0xbc, + 0x42, 0xe0, 0x6f, 0x4f, 0x0e, 0x7c, 0x5f, 0xf7, 0x0b, 0x2a, 0xd3, 0xe3, 0x5e, 0xe4, 0xe5, 0x81, + 0x0f, 0x06, 0x0d, 0x60, 0xc9, 0x96, 0x5c, 0x44, 0x3c, 0xea, 0xb8, 0x2c, 0x49, 0x44, 0x22, 0x9d, + 0x3b, 0x78, 0x62, 0xae, 0xf5, 0x4f, 0xcc, 0xeb, 0x5c, 0xdd, 0x51, 0x41, 0xfc, 0xa9, 0x92, 0x6e, + 0x6e, 0x8a, 0xb3, 0x99, 0x92, 0x7c, 0x03, 0x9b, 0x45, 0x6b, 0x92, 0x86, 0xf6, 0x5c, 0xe8, 0x3d, + 0xfc, 0x18, 0xf7, 0xc2, 0xe9, 0xeb, 0x38, 0xa6, 0xa1, 0x39, 0x1f, 0xb8, 0x8f, 0x4f, 0x07, 0x57, + 0x2b, 0x99, 0x97, 0x25, 0x3c, 0xed, 0xb9, 0xfa, 0xdc, 0xb6, 0x39, 0x4b, 0x9c, 0x4f, 0x50, 0x45, + 0x61, 0x19, 0xc7, 0x46, 0xe8, 0x30, 0x97, 0x19, 0x0e, 0x07, 0x6e, 0xa8, 0xed, 0x08, 0x76, 0xf1, + 0x7c, 0x16, 0xc2, 0xa1, 0xb6, 0xcb, 0x36, 0x06, 0x4f, 0x06, 0xed, 0x63, 0xfd, 0x8c, 0x13, 0x1e, + 0x79, 0x3c, 0xa6, 0x81, 0x76, 0x61, 0x6f, 0x38, 0x89, 0x54, 0x75, 0x3c, 0xb2, 0x32, 0xb6, 0xa6, + 0x8b, 0xb4, 0xcb, 0x12, 0x57, 0x1d, 0x02, 0xe9, 0xdc, 0xc5, 0xca, 0x01, 0x48, 0x7a, 0xa9, 0x28, + 0xe4, 0x0e, 0x2c, 0xe7, 0x07, 0x3d, 0x16, 0x01, 0xf7, 0x54, 0xe1, 0xfa, 0x14, 0x15, 0x2f, 0x59, + 0xc6, 0x91, 0xa1, 0xab, 0x13, 0x16, 0x63, 0x69, 0x48, 0xc4, 0x5b, 0xe6, 0xa5, 0xd2, 0xf9, 0x0c, + 0xf5, 0xcd, 0x29, 0xe2, 0x91, 0xa1, 0x29, 0x93, 0xb1, 0x90, 0x29, 0x0d, 0x5c, 0x4f, 0xf8, 0xcc, + 0xb9, 0xaf, 0x3f, 0x23, 0x9a, 0x74, 0x20, 0x7c, 0x46, 0x1e, 0xc0, 0x5a, 0x9c, 0xb0, 0x36, 0x4b, + 0x12, 0xfd, 0xd1, 0xa3, 0xfd, 0xe3, 0xf4, 0xb9, 0x4e, 0xd0, 0x9c, 0xfd, 0x84, 0xa6, 0x34, 0x3f, + 0x55, 0x9f, 0x00, 0xe9, 0xcf, 0x0b, 0x68, 0xd4, 0xc9, 0x68, 0x87, 0x39, 0x0f, 0xf4, 0xd7, 0x27, + 0xe7, 0xbc, 0x30, 0x0c, 0x72, 0x0d, 0x16, 0xfa, 0xe2, 0xb8, 0x5f, 0x5f, 0xe8, 0xae, 0x37, 0xa7, + 0xe2, 0x0e, 0xdd, 0x80, 0xc5, 0x38, 0x11, 0xef, 0x7b, 0x85, 0xfa, 0xfb, 0x95, 0x6e, 0x52, 0x90, + 0xdc, 0x2f, 0xc1, 0x1d, 0xb8, 0x92, 0xb0, 0x76, 0xc2, 0x64, 0x57, 0x37, 0xd1, 0xd2, 0x3d, 0xa5, + 0x01, 0xf7, 0xdd, 0x76, 0x22, 0xc2, 0xc2, 0x19, 0x79, 0x38, 0xf1, 0x8c, 0x6c, 0x1b, 0x35, 0xd8, + 0x75, 0xcb, 0x7f, 0x57, 0x4a, 0x9e, 0x25, 0x22, 0xcc, 0xcf, 0xc9, 0x6d, 0x58, 0x4a, 0x74, 0xab, + 0xcf, 0x5b, 0x3c, 0xd0, 0x9f, 0x92, 0x47, 0xb8, 0xa4, 0x11, 0xba, 0xea, 0x62, 0xa4, 0xd7, 0x15, + 0x22, 0x90, 0xce, 0xbf, 0xa0, 0x88, 0x1d, 0x92, 0x3d, 0xa8, 0xc9, 0xae, 0x78, 0xe7, 0xf2, 0xc8, + 0x7a, 0xe6, 0x06, 0x5c, 0xa6, 0xce, 0xd7, 0xfa, 0xa3, 0xa0, 0x78, 0x87, 0x91, 0xf1, 0x4e, 0xa1, + 0x0c, 0xf2, 0x16, 0xae, 0xa9, 0xa6, 0x4f, 0x4d, 0x90, 0x4c, 0xaa, 0xc3, 0x74, 0x86, 0x87, 0xdf, + 0x4c, 0xfe, 0x5c, 0x2b, 0x45, 0x87, 0xd1, 0xb1, 0x51, 0x33, 0xea, 0xe2, 0x2a, 0xcc, 0xc8, 0x13, + 0x1e, 0x04, 0xd2, 0xf9, 0x16, 0x57, 0x6d, 0x46, 0xa4, 0x06, 0xd3, 0xba, 0xa7, 0x78, 0x8c, 0xa1, + 0xd2, 0x03, 0x15, 0x49, 0x99, 0x26, 0x8c, 0xa5, 0xd6, 0x13, 0x67, 0x5f, 0x47, 0x52, 0x53, 0x8d, + 0x13, 0xb8, 0x17, 0x59, 0x82, 0x91, 0x3e, 0xd0, 0x1d, 0x9d, 0x19, 0x2a, 0x05, 0x99, 0x54, 0x9f, + 0x9b, 0x3c, 0xd1, 0x9e, 0x68, 0x05, 0x48, 0xcd, 0x13, 0x6c, 0x17, 0x56, 0xc6, 0x1d, 0xb3, 0xa7, + 0x3a, 0xc3, 0xb2, 0x91, 0xc3, 0xb5, 0x01, 0x15, 0x94, 0xc7, 0xe6, 0xee, 0x99, 0xfe, 0x8c, 0x2a, + 0x02, 0x36, 0x76, 0x75, 0x28, 0xdb, 0xf3, 0xe3, 0x3c, 0xd7, 0x3c, 0x3b, 0x26, 0x77, 0xa0, 0x1c, + 0x32, 0xd5, 0x98, 0xbc, 0x6e, 0x3b, 0x3e, 0x96, 0xbc, 0xc5, 0x7e, 0xc9, 0xc3, 0xcf, 0x5d, 0x33, + 0x17, 0x68, 0xa4, 0x00, 0xfd, 0xbe, 0x81, 0xec, 0xc0, 0x9c, 0x8d, 0x12, 0x9a, 0xd5, 0xb8, 0x03, + 0xf4, 0x86, 0xa3, 0xe1, 0x55, 0x98, 0xe1, 0x52, 0x66, 0x2c, 0x31, 0x28, 0xcf, 0x8c, 0xc8, 0xc7, + 0x40, 0xf4, 0x2f, 0x37, 0xc7, 0x02, 0xdc, 0x37, 0x90, 0x63, 0x49, 0x73, 0x2c, 0x08, 0x38, 0xf4, + 0x1b, 0xbf, 0x2d, 0xc1, 0xb2, 0x4a, 0x0b, 0x5c, 0xcd, 0x3f, 0x05, 0x5a, 0x66, 0x40, 0x8a, 0x0b, + 0x36, 0x58, 0xf9, 0x06, 0xcc, 0x60, 0x8f, 0x61, 0x91, 0xf2, 0xc8, 0x46, 0x1b, 0xf6, 0x2f, 0x46, + 0xc9, 0x1f, 0xc1, 0xe2, 0x73, 0xa6, 0xad, 0x9c, 0x85, 0x11, 0xff, 0x0d, 0x88, 0xc6, 0xc8, 0xe7, + 0x49, 0x91, 0x6b, 0x30, 0xad, 0x51, 0x9f, 0x06, 0xaa, 0x23, 0x0b, 0xd3, 0xdc, 0xc6, 0x7b, 0x20, + 0x1a, 0x1a, 0x0f, 0x28, 0xcb, 0x27, 0x97, 0xce, 0x9b, 0xfc, 0xeb, 0x20, 0xf1, 0x55, 0x20, 0x1a, + 0x12, 0x9f, 0xeb, 0x6c, 0x03, 0x96, 0x1e, 0xfb, 0xfe, 0x4b, 0xcc, 0xd6, 0xb3, 0x64, 0xae, 0xc1, + 0x4a, 0x93, 0x85, 0xe2, 0x94, 0x9d, 0x2f, 0x96, 0xe9, 0x08, 0x6a, 0xa1, 0xbf, 0x73, 0xce, 0xe5, + 0x89, 0x73, 0x61, 0x24, 0x71, 0xde, 0xea, 0x9b, 0xa1, 0xdc, 0xac, 0xc9, 0x9c, 0x3b, 0x30, 0xab, + 0xcf, 0xe0, 0x39, 0x97, 0x2c, 0x56, 0xe2, 0x17, 0x67, 0xcf, 0x6f, 0x96, 0x61, 0x5a, 0x63, 0xfb, + 0xfb, 0xb0, 0x4a, 0x83, 0x40, 0xbc, 0x73, 0x73, 0x88, 0x24, 0x59, 0xe4, 0x6b, 0x6b, 0xaa, 0x42, + 0xd7, 0x90, 0xfb, 0xd4, 0x30, 0x8f, 0x35, 0x8f, 0x7c, 0x0b, 0x8b, 0xfd, 0x1b, 0x01, 0xda, 0x62, + 0x81, 0x74, 0xa6, 0x70, 0x71, 0x6b, 0x63, 0xee, 0x03, 0x14, 0xbf, 0x99, 0x23, 0x7f, 0x1c, 0xca, + 0xf1, 0x77, 0x0a, 0x17, 0x3e, 0xfc, 0x4e, 0xe1, 0x11, 0xd4, 0x69, 0x96, 0x0a, 0x57, 0x66, 0x2d, + 0xe9, 0x25, 0xbc, 0xc5, 0xdc, 0x88, 0xbd, 0x73, 0xed, 0x8e, 0x5d, 0x44, 0x1f, 0xd6, 0x94, 0xc4, + 0xb1, 0x15, 0x78, 0xc5, 0xde, 0xbd, 0xcc, 0xb7, 0x6b, 0x61, 0xa8, 0xe7, 0x9f, 0xd6, 0x8d, 0xf4, + 0x20, 0x95, 0xdc, 0xea, 0x43, 0xf1, 0x56, 0xcf, 0xa5, 0x71, 0xac, 0x4a, 0xd6, 0x8c, 0x11, 0xd5, + 0x8c, 0xfd, 0xde, 0xe3, 0x38, 0x3e, 0xf4, 0xc7, 0xa3, 0xf6, 0xd9, 0x0f, 0x47, 0xed, 0x63, 0x01, + 0x79, 0xf9, 0xc3, 0x01, 0xf9, 0x0e, 0x54, 0x7d, 0xa6, 0x1c, 0x8f, 0xd1, 0x3f, 0x73, 0x7d, 0x51, + 0x20, 0x8d, 0x40, 0x72, 0x18, 0x85, 0xe4, 0x2f, 0xa0, 0xc6, 0xde, 0xc7, 0x3c, 0xd1, 0x97, 0x08, + 0xfd, 0xf5, 0x54, 0x27, 0xae, 0x87, 0xf4, 0xe7, 0xe5, 0x4b, 0xba, 0x0c, 0x55, 0x8d, 0xb7, 0xd4, + 0x97, 0x43, 0x3a, 0x73, 0xba, 0x19, 0x44, 0x92, 0xfa, 0x72, 0x48, 0xd5, 0x73, 0x76, 0xa9, 0xb4, + 0x41, 0x74, 0xdf, 0xf1, 0xb4, 0x6b, 0x73, 0xc4, 0x76, 0xe8, 0xf3, 0x18, 0xd8, 0x8d, 0x2e, 0x95, + 0x26, 0x96, 0xdf, 0xf3, 0xb4, 0x6b, 0x92, 0xc2, 0x74, 0xde, 0x9f, 0xc3, 0x5a, 0x97, 0xfb, 0x4c, + 0xb7, 0x0d, 0xc5, 0xde, 0x43, 0xe2, 0xc5, 0x46, 0xb9, 0x59, 0x53, 0x6c, 0xd5, 0x0f, 0x14, 0xda, + 0x0f, 0x49, 0xbe, 0x82, 0xf5, 0xfe, 0x34, 0x91, 0xa5, 0x81, 0x10, 0x27, 0xae, 0x17, 0x70, 0x16, + 0xa5, 0x12, 0x2f, 0x34, 0xca, 0xcd, 0x55, 0x3b, 0xf1, 0xb5, 0x66, 0x1f, 0x68, 0xae, 0x29, 0x24, + 0x4b, 0x79, 0x69, 0xfd, 0x14, 0x2e, 0x71, 0xd9, 0xcf, 0x4c, 0x4c, 0x1e, 0x84, 0x8b, 0xcb, 0xa8, + 0x86, 0x70, 0x99, 0x27, 0xa5, 0xbf, 0xdf, 0x53, 0x8d, 0x30, 0xf9, 0x12, 0x1c, 0xeb, 0x69, 0x9c, + 0x08, 0x4f, 0x75, 0x2e, 0x51, 0x67, 0xe0, 0x82, 0x63, 0xd5, 0xf0, 0x8f, 0x72, 0xb6, 0xbe, 0xe5, + 0xb0, 0x50, 0x74, 0xa5, 0x00, 0x45, 0x15, 0xca, 0x54, 0x50, 0xd4, 0x76, 0xfa, 0x35, 0xb4, 0x5b, + 0x55, 0x34, 0xdb, 0xdf, 0x8f, 0xa0, 0xd5, 0x4b, 0x63, 0xd0, 0xea, 0x0d, 0x58, 0x34, 0xc1, 0xe8, + 0xf2, 0xd8, 0x4d, 0xb2, 0x40, 0x5f, 0x4f, 0x54, 0x9a, 0x0b, 0x7d, 0x72, 0x33, 0x0b, 0x18, 0x79, + 0x0e, 0x3b, 0x43, 0x82, 0xa3, 0x6e, 0xe8, 0x6b, 0x8a, 0xad, 0xc1, 0x99, 0xc3, 0xde, 0x9c, 0x83, + 0x3a, 0x9d, 0x73, 0x50, 0xe7, 0xc1, 0x64, 0xf0, 0xb8, 0x8e, 0xd3, 0xcf, 0x03, 0x88, 0x5f, 0xc2, + 0x7a, 0x51, 0x49, 0xc4, 0x52, 0xb7, 0xc5, 0x85, 0xd4, 0xd6, 0xeb, 0xc3, 0xd8, 0xf5, 0x15, 0x4b, + 0xf7, 0xb9, 0x90, 0x68, 0xfe, 0x17, 0x40, 0xcb, 0x8d, 0x7f, 0x1c, 0xb4, 0xdc, 0xfc, 0xf5, 0xd0, + 0x72, 0xeb, 0x57, 0x42, 0xcb, 0xed, 0xf3, 0xa0, 0xe5, 0x39, 0x00, 0xec, 0xf2, 0x87, 0x03, 0xb0, + 0x9d, 0xb3, 0x00, 0xd8, 0x18, 0x64, 0xf5, 0xd1, 0x58, 0x64, 0xf5, 0x0c, 0x96, 0x13, 0x16, 0xb1, + 0x77, 0x03, 0x25, 0xb7, 0x31, 0xb9, 0xe4, 0x9a, 0x49, 0x79, 0xfe, 0x3c, 0x84, 0xf5, 0xfc, 0x0e, + 0xcc, 0x3e, 0x3e, 0xb9, 0x02, 0x8b, 0xad, 0x74, 0xae, 0xa0, 0xe9, 0x35, 0x2b, 0xb0, 0x6f, 0xf8, + 0xaf, 0x35, 0x9b, 0xec, 0xc3, 0x56, 0x3e, 0x77, 0x20, 0x7d, 0xec, 0xfc, 0xab, 0x38, 0x7f, 0xc3, + 0x0a, 0x15, 0xd3, 0xc2, 0xea, 0xb8, 0x05, 0x4b, 0x79, 0x2c, 0x6d, 0x20, 0xae, 0x61, 0x20, 0x16, + 0x2d, 0xdd, 0x86, 0x60, 0x0f, 0x56, 0xc6, 0x85, 0x5d, 0x5f, 0x0b, 0x11, 0x39, 0x1a, 0xec, 0x1a, + 0x4c, 0xa7, 0x5d, 0x96, 0xdf, 0xfd, 0xe8, 0x01, 0xd9, 0x06, 0x50, 0xab, 0x40, 0x38, 0xd8, 0x73, + 0xee, 0x68, 0x2c, 0xd0, 0xa7, 0x14, 0x7b, 0x18, 0x7f, 0x52, 0x0f, 0xd3, 0x78, 0x09, 0xf3, 0x03, + 0xad, 0x03, 0x59, 0x87, 0x32, 0xf6, 0x18, 0x6e, 0xde, 0xa5, 0xcd, 0xe2, 0xf8, 0xd0, 0x1f, 0xf9, + 0x76, 0x4d, 0x8d, 0x7c, 0xbb, 0x1a, 0xaf, 0x61, 0x71, 0xa8, 0x8b, 0x20, 0x97, 0x14, 0xec, 0xcb, + 0xfa, 0xea, 0xa6, 0xe5, 0x49, 0x76, 0xa8, 0x3a, 0xe1, 0x05, 0x9f, 0x4b, 0xdc, 0x18, 0xf3, 0x3c, + 0x31, 0x85, 0x9b, 0x3d, 0x6f, 0xa9, 0xf8, 0x0c, 0xd1, 0xf8, 0x43, 0x09, 0xe6, 0x8a, 0xcf, 0x14, + 0xe4, 0x5f, 0x81, 0xe4, 0xad, 0x4c, 0x3f, 0x71, 0x4a, 0x13, 0x13, 0x27, 0x6f, 0x66, 0x8a, 0x90, + 0xdb, 0xa3, 0x31, 0xd5, 0xbb, 0xa6, 0x0a, 0x61, 0x26, 0x8d, 0x4b, 0x23, 0x74, 0x84, 0x99, 0x2c, + 0x39, 0xe5, 0x1e, 0x33, 0xe0, 0xc9, 0x0e, 0xc9, 0x55, 0x98, 0x37, 0x3f, 0xd5, 0xf2, 0x0e, 0x7d, + 0x0d, 0x52, 0x9a, 0x83, 0xc4, 0xc6, 0x1f, 0x4b, 0xb0, 0x71, 0x4e, 0xed, 0x51, 0xc0, 0xd1, 0xa3, + 0x29, 0xeb, 0x88, 0xa4, 0x67, 0xb6, 0x29, 0x1f, 0x2b, 0x8f, 0x85, 0xe7, 0x65, 0xf6, 0xe0, 0x1a, + 0x8f, 0xa7, 0x26, 0x7b, 0x6c, 0x67, 0xe5, 0x1e, 0xdf, 0x87, 0xd5, 0x38, 0x11, 0x31, 0x4b, 0xd2, + 0x9e, 0xeb, 0xd1, 0x4c, 0xe6, 0x95, 0xd2, 0x38, 0x55, 0xb3, 0xdc, 0x03, 0xcd, 0xd4, 0x6b, 0xab, + 0xc1, 0xf4, 0x29, 0x0d, 0x32, 0x66, 0x3c, 0xd3, 0x83, 0x7b, 0xff, 0x77, 0x11, 0x16, 0xed, 0x23, + 0xe5, 0xb1, 0xd9, 0x0b, 0x0f, 0xe6, 0x8a, 0x6f, 0x97, 0x64, 0xab, 0x9f, 0x78, 0x63, 0x9e, 0x61, + 0xeb, 0xdb, 0x67, 0xb1, 0x75, 0x33, 0xde, 0xa8, 0xfd, 0xef, 0x9f, 0xfe, 0xf2, 0xff, 0x53, 0x0b, + 0x64, 0x6e, 0xef, 0xf4, 0xee, 0x5e, 0xfe, 0xb2, 0xf9, 0x5f, 0x00, 0xfd, 0x17, 0x4b, 0xb2, 0x51, + 0x00, 0x41, 0xc3, 0xef, 0x98, 0xf5, 0xd1, 0xc4, 0x6f, 0x6c, 0xa3, 0x4e, 0x87, 0xac, 0x14, 0x75, + 0xee, 0xfd, 0x37, 0xf7, 0xbf, 0xbe, 0xfd, 0xf3, 0xc3, 0xd2, 0x6d, 0x42, 0x61, 0x7e, 0xe0, 0xa9, + 0x93, 0x14, 0x16, 0x39, 0xee, 0x0d, 0x74, 0x9c, 0x8d, 0x2d, 0xb4, 0xb1, 0xd6, 0x18, 0x58, 0xf7, + 0xc3, 0xfc, 0xc9, 0x32, 0x86, 0xf9, 0x81, 0x77, 0xcf, 0xa2, 0x89, 0x71, 0x0f, 0xa2, 0xe3, 0x4c, + 0x7c, 0x8c, 0x26, 0xae, 0xdf, 0xdb, 0x18, 0x74, 0xc3, 0xfc, 0xda, 0xd5, 0xee, 0xe4, 0x16, 0x7d, + 0x98, 0x1f, 0x78, 0xe7, 0x2c, 0x5a, 0x1c, 0xf7, 0x00, 0x5a, 0x5f, 0x1d, 0x49, 0xab, 0xa7, 0x61, + 0x9c, 0xf6, 0x1a, 0x1b, 0x68, 0xf6, 0xd2, 0xed, 0x71, 0xbb, 0x77, 0xef, 0xf7, 0x33, 0x30, 0xaf, + 0x81, 0xb8, 0xcd, 0x87, 0xff, 0x04, 0xe8, 0xa3, 0xf3, 0x62, 0xa8, 0x46, 0x2e, 0x19, 0xea, 0x9b, + 0xe3, 0x99, 0x26, 0x13, 0x08, 0xda, 0x9d, 0x23, 0xa0, 0xec, 0x1a, 0xec, 0xfe, 0x06, 0xca, 0x16, + 0x93, 0x93, 0xf5, 0x81, 0x2c, 0x28, 0x42, 0xd7, 0xfa, 0x30, 0x4a, 0x6e, 0x6c, 0xa2, 0xae, 0x55, + 0xb2, 0xdc, 0xd7, 0x55, 0x88, 0xff, 0xf7, 0x50, 0x2d, 0xc0, 0x78, 0xb2, 0x39, 0x1c, 0xfd, 0xf3, + 0x75, 0xaf, 0xa3, 0xee, 0x95, 0x46, 0x61, 0x9d, 0x0f, 0x0d, 0x2a, 0xf7, 0xa1, 0x5a, 0x80, 0xf4, + 0x45, 0xc5, 0xa3, 0x48, 0x7f, 0x54, 0xf1, 0x75, 0x54, 0xbc, 0x73, 0x6f, 0xad, 0xb8, 0x68, 0xfc, + 0x6b, 0x62, 0x6d, 0xac, 0xfc, 0x00, 0xd5, 0x02, 0x7c, 0x2f, 0x5a, 0x19, 0x45, 0xf5, 0x67, 0x46, + 0xd9, 0x78, 0x71, 0x7b, 0x74, 0x87, 0x88, 0x07, 0x95, 0x1c, 0xf8, 0x93, 0x7a, 0x21, 0x2f, 0x87, + 0x6e, 0x03, 0x46, 0x3d, 0xb8, 0x85, 0x4a, 0xaf, 0x34, 0xb6, 0x47, 0x94, 0xee, 0x99, 0x6f, 0xd1, + 0xde, 0xd5, 0x84, 0xb5, 0x55, 0x0c, 0x4e, 0x61, 0xae, 0x78, 0x73, 0x50, 0x2c, 0x23, 0x63, 0x6e, + 0x14, 0x46, 0x4d, 0x3d, 0x40, 0x53, 0x77, 0x6f, 0xdf, 0x39, 0xdb, 0x54, 0xe1, 0xa4, 0xfc, 0x9c, + 0xdb, 0x4d, 0xa0, 0x5a, 0xb8, 0x13, 0x20, 0x43, 0x29, 0x39, 0x78, 0x43, 0x51, 0xdf, 0x3a, 0x83, + 0x6b, 0x32, 0xd6, 0x04, 0x8c, 0x4c, 0x70, 0x77, 0xbf, 0xf6, 0x1f, 0x24, 0x3e, 0xe9, 0xe8, 0x7f, + 0x61, 0xd9, 0x3b, 0xbd, 0xfb, 0x48, 0x87, 0x62, 0x06, 0xff, 0x7c, 0xf6, 0xb7, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xc7, 0x2d, 0x03, 0x5c, 0x7a, 0x23, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 249d418f71..bf1281f9f1 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -137,6 +137,10 @@ message ListAccountsRequest { // that indicates from where search should continue string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; + // Optional. Used to specify a subset of fields that should be + // returned by a get operation or modified by an update operation. + google.protobuf.FieldMask field_mask = 3; + // Optional. Search criteria used to select the accounts to return. // If no search criteria is specified then all accounts will be // returned @@ -157,7 +161,7 @@ message ListAccountsRequest { // `email` set to `foo@example.com` // * Query `display_name=\\"Test String\\"` returns accounts with // display names that include both "Test" and "String" - string query = 3 [(google.api.field_behavior) = OPTIONAL]; + string query = 4 [(google.api.field_behavior) = OPTIONAL]; } message ListAccountsResponse { @@ -496,6 +500,10 @@ message ListGroupsRequest { // that indicates from where search should continue string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; + // Optional. Used to specify a subset of fields that should be + // returned by a get operation or modified by an update operation. + google.protobuf.FieldMask field_mask = 3; + // Optional. Search criteria used to select the groups to return. // If no search criteria is specified then all groups will be // returned @@ -514,7 +522,7 @@ message ListGroupsRequest { // starts with "Th" // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" - string query = 3 [(google.api.field_behavior) = OPTIONAL]; + string query = 4 [(google.api.field_behavior) = OPTIONAL]; } message ListGroupsResponse { From e78c4395dee7eebe1a57e1d75c958bee2484e7b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 9 Jun 2020 13:40:18 +0200 Subject: [PATCH 153/407] Use reasonable set of properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ocis-graph will be responsible for building graph api resources like user and groups as well as their relationships. ocis accounts deals users and groups with all properties necessary to provision user accounts. Signed-off-by: Jörn Friedrich Dreyer --- pkg/proto/v0/accounts.pb.go | 1717 +++++++++++------------------------ pkg/proto/v0/accounts.proto | 577 ++++-------- pkg/service/v0/service.go | 2 - 3 files changed, 711 insertions(+), 1585 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 85cd3b4ec3..ff52efda74 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -344,178 +344,105 @@ func (m *DeleteAccountRequest) GetId() string { // Account follows the properties of the ms graph api user resuorce. // See https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties type Account struct { - // A freeform text entry field for the user to describe themselves. - AboutMe string `protobuf:"bytes,1,opt,name=about_me,json=aboutMe,proto3" json:"about_me,omitempty"` + // The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // *true* if the account is enabled; otherwise, *false*. This property is required when a user is created. Supports $filter. AccountEnabled bool `protobuf:"varint,2,opt,name=account_enabled,json=accountEnabled,proto3" json:"account_enabled,omitempty"` - // Sets the age group of the user. Allowed values: null, minor, notAdult and adult. Refer to the legal age group property definitions for further information. - AgeGroup string `protobuf:"bytes,3,opt,name=age_group,json=ageGroup,proto3" json:"age_group,omitempty"` - // The licenses that are assigned to the account. Not nullable. - AssignedLicenses []*AssignedLicense `protobuf:"bytes,4,rep,name=assigned_licenses,json=assignedLicenses,proto3" json:"assigned_licenses,omitempty"` - // The plans that are assigned to the account. Read-only. Not nullable. - AssignedPlans []*AssignedPlan `protobuf:"bytes,5,rep,name=assigned_plans,json=assignedPlans,proto3" json:"assigned_plans,omitempty"` - // The birthday of the user. - Birthday *timestamp.Timestamp `protobuf:"bytes,6,opt,name=birthday,proto3" json:"birthday,omitempty"` - // The telephone numbers for the user. NOTE: Although this is a string collection, only one number can be set for this property. - BusinessPhones []string `protobuf:"bytes,7,rep,name=business_phones,json=businessPhones,proto3" json:"business_phones,omitempty"` - // The city in which the user is located. Supports $filter. - City string `protobuf:"bytes,8,opt,name=city,proto3" json:"city,omitempty"` - // The company name which the user is associated. This property can be useful for describing the company that an external user comes from. - CompanyName string `protobuf:"bytes,9,opt,name=company_name,json=companyName,proto3" json:"company_name,omitempty"` - // Sets whether consent has been obtained for minors. Allowed values: null, granted, denied and notRequired. Refer to the legal age group property definitions for further information. - ConsentProvidedForMinor string `protobuf:"bytes,10,opt,name=consent_provided_for_minor,json=consentProvidedForMinor,proto3" json:"consent_provided_for_minor,omitempty"` - // The country/region in which the user is located; for example, “US” or “UK”. Supports $filter. - Country string `protobuf:"bytes,11,opt,name=country,proto3" json:"country,omitempty"` - // The created date of the account object. - CreatedDateTime *timestamp.Timestamp `protobuf:"bytes,12,opt,name=created_date_time,json=createdDateTime,proto3" json:"created_date_time,omitempty"` + // A resource account is also known as a /disabled user object/ in Azure AD, and can be used to represent resources in general. + // In Exchange it might be used to represent conference rooms, for example, and allow them to have a phone number. + // You could give printers or machines with a sync client resource accounts as well. + // A resource account can be homed in Microsoft 365 or on premises using Skype for Business Server 2019. + // *true* if the user is a resource account; otherwise, *false*. Null value should be considered false. + IsResourceAccount bool `protobuf:"varint,3,opt,name=is_resource_account,json=isResourceAccount,proto3" json:"is_resource_account,omitempty"` // Indicates whether the account was created as - // - a regular school or work account (null), + // - a regular school or work account ("" / emptystring), + // - a local account, fully managed by ocis (LocalAccount), includes synced accounts or // - an external account (Invitation), - // - a local account for an Azure Active Directory B2C tenant (LocalAccount) or // - self-service sign-up using email verification (EmailVerified). Read-only. - CreationType string `protobuf:"bytes,13,opt,name=creation_type,json=creationType,proto3" json:"creation_type,omitempty"` - // The date and time the user was deleted. Returned only on $select. - DeletedDateTime *timestamp.Timestamp `protobuf:"bytes,14,opt,name=deleted_date_time,json=deletedDateTime,proto3" json:"deleted_date_time,omitempty"` - // The name for the department in which the user works. Supports $filter. - Department string `protobuf:"bytes,15,opt,name=department,proto3" json:"department,omitempty"` + CreationType string `protobuf:"bytes,4,opt,name=creation_type,json=creationType,proto3" json:"creation_type,omitempty"` + // Represents the identities that can be used to sign in to this account. + // An identity can be provided by OCIS (also known as a local account), by organizations, or by social identity providers such as Facebook, Google, and Microsoft, and is tied to an account. + // May contain multiple items with the same signInType value. Supports $filter. + Identities []*Identities `protobuf:"bytes,5,rep,name=identities,proto3" json:"identities,omitempty"` // The name displayed in the address book for the account. // This is usually the combination of the user's first name, middle initial and last name. // This property is required when a user is created and it cannot be cleared during updates. // Supports $filter and $orderby. - DisplayName string `protobuf:"bytes,16,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // The employee identifier assigned to the user by the organization. Supports $filter. - EmployeeId string `protobuf:"bytes,17,opt,name=employee_id,json=employeeId,proto3" json:"employee_id,omitempty"` - // For an external user invited to the tenant using the invitation API, this property represents the invited user's invitation status. - // For invited users, the state can be `PendingAcceptance` or `Accepted`, or emptystring / null for all other users. - // Returned only on $select. Supports $filter with the supported values. For example: $filter=externalUserState eq 'PendingAcceptance'. - ExternalUserState string `protobuf:"bytes,18,opt,name=external_user_state,json=externalUserState,proto3" json:"external_user_state,omitempty"` - // Shows the timestamp for the latest change to the externalUserState property. Returned only on $select. - // note: in the ms graph beta this changed to a string ?!? - ExternalUserStateChangeDateTime *timestamp.Timestamp `protobuf:"bytes,19,opt,name=external_user_state_change_date_time,json=externalUserStateChangeDateTime,proto3" json:"external_user_state_change_date_time,omitempty"` - // The fax number of the account. - FaxNumber string `protobuf:"bytes,20,opt,name=fax_number,json=faxNumber,proto3" json:"fax_number,omitempty"` - // The given name (first name) of the user. Supports $filter. - GivenName string `protobuf:"bytes,21,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` - // The hire date of the user. - HireDate *timestamp.Timestamp `protobuf:"bytes,22,opt,name=hire_date,json=hireDate,proto3" json:"hire_date,omitempty"` - // The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. - Id string `protobuf:"bytes,23,opt,name=id,proto3" json:"id,omitempty"` - // Represents the identities that can be used to sign in to this user account. - // An identity can be provided by OCIS (also known as a local account), by organizations, or by social identity providers such as Facebook, Google, and Microsoft, and is tied to an account. - // May contain multiple items with the same signInType value. Supports $filter. - Identities []*Identities `protobuf:"bytes,24,rep,name=identities,proto3" json:"identities,omitempty"` - // The instant message voice over IP (VOIP) session initiation protocol (SIP) addresses for the user. Read-only. - ImAddresses []string `protobuf:"bytes,25,rep,name=im_addresses,json=imAddresses,proto3" json:"im_addresses,omitempty"` - // A list for the user to describe their interests. - Interests []string `protobuf:"bytes,26,rep,name=interests,proto3" json:"interests,omitempty"` - // *true* if the user is a resource account; otherwise, *false*. Null value should be considered false. - IsResourceAccount bool `protobuf:"varint,27,opt,name=is_resource_account,json=isResourceAccount,proto3" json:"is_resource_account,omitempty"` - // The user’s job title. Supports $filter. - JobTitle string `protobuf:"bytes,28,opt,name=job_title,json=jobTitle,proto3" json:"job_title,omitempty"` - // The time when this account last changed their password. - LastPasswordChangeDateTime *timestamp.Timestamp `protobuf:"bytes,29,opt,name=last_password_change_date_time,json=lastPasswordChangeDateTime,proto3" json:"last_password_change_date_time,omitempty"` - // Used by enterprise applications to determine the legal age group of the user. - // This property is read-only and calculated based on `ageGroup` and `consentProvidedForMinor` properties. - // Allowed values: `null`, `minorWithOutParentalConsent`, `minorWithParentalConsent`, `minorNoParentalConsentRequired`, `notAdult` and `adult`. - // Refer to the legal age group property definitions for further information.) - LegalAgeGroupClassification string `protobuf:"bytes,30,opt,name=legal_age_group_classification,json=legalAgeGroupClassification,proto3" json:"legal_age_group_classification,omitempty"` + // posixaccount MUST cn + DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // The username + // posixaccount MUST uid + Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` + // used for exposing the user using ldap + // posixaccount MUST uidnumber + UidNumber int64 `protobuf:"varint,8,opt,name=uid_number,json=uidNumber,proto3" json:"uid_number,omitempty"` + // used for exposing the user using ldap + // posixaccount MUST gidnumber + GidNumber int64 `protobuf:"varint,9,opt,name=gid_number,json=gidNumber,proto3" json:"gid_number,omitempty"` // The SMTP address for the user, for example, "jeff@contoso.onmicrosoft.com". Read-Only. Supports $filter. - Mail string `protobuf:"bytes,32,opt,name=mail,proto3" json:"mail,omitempty"` - // The mail alias for the user. This property must be specified when a user is created. Supports $filter. - MailNickname string `protobuf:"bytes,34,opt,name=mail_nickname,json=mailNickname,proto3" json:"mail_nickname,omitempty"` - // The primary cellular telephone number for the user. - MobilePhone string `protobuf:"bytes,35,opt,name=mobile_phone,json=mobilePhone,proto3" json:"mobile_phone,omitempty"` - // The URL for the user's personal site. - MySite string `protobuf:"bytes,36,opt,name=my_site,json=mySite,proto3" json:"my_site,omitempty"` - // The office location in the user's place of business. - OfficeLocation string `protobuf:"bytes,37,opt,name=office_location,json=officeLocation,proto3" json:"office_location,omitempty"` - // Contains the on-premises LDAP `distinguished name` or `DN`. - // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. - OnPremisesDistinguishedName string `protobuf:"bytes,38,opt,name=on_premises_distinguished_name,json=onPremisesDistinguishedName,proto3" json:"on_premises_distinguished_name,omitempty"` - // Contains the on-premises `domainFQDN`, also called `dnsDomainName` synchronized from the on-premises directory - // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. - OnPremisesDomainName string `protobuf:"bytes,39,opt,name=on_premises_domain_name,json=onPremisesDomainName,proto3" json:"on_premises_domain_name,omitempty"` - // This property is used to associate an on-premises LDAP user to the ocis account object. - // This property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property. - // Important: The $ and _ characters cannot be used when specifying this property. Supports $filter. - OnPremisesImmutableId string `protobuf:"bytes,41,opt,name=on_premises_immutable_id,json=onPremisesImmutableId,proto3" json:"on_premises_immutable_id,omitempty"` - // Indicates the last time at which the object was synced with the on-premises directory; Read-only. - OnPremisesLastSyncDateTime *timestamp.Timestamp `protobuf:"bytes,42,opt,name=on_premises_last_sync_date_time,json=onPremisesLastSyncDateTime,proto3" json:"on_premises_last_sync_date_time,omitempty"` - // Errors when using synchronization during provisioning. - OnPremisesProvisioningErrors []*OnPremisesProvisioningError `protobuf:"bytes,43,rep,name=on_premises_provisioning_errors,json=onPremisesProvisioningErrors,proto3" json:"on_premises_provisioning_errors,omitempty"` - // Contains the on-premises `samAccountName` synchronized from the on-premises directory. - // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. - OnPremisesSamAccountName string `protobuf:"bytes,44,opt,name=on_premises_sam_account_name,json=onPremisesSamAccountName,proto3" json:"on_premises_sam_account_name,omitempty"` - // Contains the on-premises security identifier (SID) for the user that was synchronized from on-premises to the cloud. Read-only. - OnPremisesSecurityIdentifier string `protobuf:"bytes,45,opt,name=on_premises_security_identifier,json=onPremisesSecurityIdentifier,proto3" json:"on_premises_security_identifier,omitempty"` + // inetorgperson MAY mail + Mail string `protobuf:"bytes,10,opt,name=mail,proto3" json:"mail,omitempty"` + // A description, useful for resource accounts + // posixaccount MAY description + Description string `protobuf:"bytes,11,opt,name=description,proto3" json:"description,omitempty"` + // Specifies the password profile for the user. + // The profile contains the user’s password. This property is required when a user is created. + // The password in the profile must satisfy minimum requirements as specified by the passwordPolicies property. + // By default, a strong password is required. + // posixaccount MAY authPassword + PasswordProfile *PasswordProfile `protobuf:"bytes,12,opt,name=password_profile,json=passwordProfile,proto3" json:"password_profile,omitempty"` + // The groups, directory roles and administrative units that the user is a member of. Read-only. Nullable. + // should we only respond with repeated strings of ids? no clients should a proper filter mask! + MemberOf []*Group `protobuf:"bytes,13,rep,name=memberOf,proto3" json:"memberOf,omitempty"` + // The created date of the account object. + CreatedDateTime *timestamp.Timestamp `protobuf:"bytes,16,opt,name=created_date_time,json=createdDateTime,proto3" json:"created_date_time,omitempty"` + // The date and time the user was deleted. Returned only on $select. + DeletedDateTime *timestamp.Timestamp `protobuf:"bytes,17,opt,name=deleted_date_time,json=deletedDateTime,proto3" json:"deleted_date_time,omitempty"` // *true* if this object is synced from an on-premises directory; // *false* if this object was originally synced from an on-premises directory but is no longer synced; // null if this object has never been synced from an on-premises directory (default). Read-only - OnPremisesSyncEnabled bool `protobuf:"varint,46,opt,name=on_premises_sync_enabled,json=onPremisesSyncEnabled,proto3" json:"on_premises_sync_enabled,omitempty"` + OnPremisesSyncEnabled bool `protobuf:"varint,20,opt,name=on_premises_sync_enabled,json=onPremisesSyncEnabled,proto3" json:"on_premises_sync_enabled,omitempty"` + // This property is used to associate an on-premises LDAP user to the ocis account object. + // This property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property. + // Important: The $ and _ characters cannot be used when specifying this property. Supports $filter. + OnPremisesImmutableId string `protobuf:"bytes,21,opt,name=on_premises_immutable_id,json=onPremisesImmutableId,proto3" json:"on_premises_immutable_id,omitempty"` + // Contains the on-premises security identifier (SID) for the user that was synchronized from on-premises to the cloud. Read-only. + OnPremisesSecurityIdentifier string `protobuf:"bytes,22,opt,name=on_premises_security_identifier,json=onPremisesSecurityIdentifier,proto3" json:"on_premises_security_identifier,omitempty"` + // Contains the on-premises LDAP `distinguished name` or `DN`. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + OnPremisesDistinguishedName string `protobuf:"bytes,23,opt,name=on_premises_distinguished_name,json=onPremisesDistinguishedName,proto3" json:"on_premises_distinguished_name,omitempty"` + // Contains the on-premises `samAccountName` synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + OnPremisesSamAccountName string `protobuf:"bytes,24,opt,name=on_premises_sam_account_name,json=onPremisesSamAccountName,proto3" json:"on_premises_sam_account_name,omitempty"` + // Contains the on-premises `domainFQDN`, also called `dnsDomainName` synchronized from the on-premises directory + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + OnPremisesDomainName string `protobuf:"bytes,25,opt,name=on_premises_domain_name,json=onPremisesDomainName,proto3" json:"on_premises_domain_name,omitempty"` // Contains the on-premises userPrincipalName synchronized from the on-premises directory. // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. - OnPremisesUserPrincipalName string `protobuf:"bytes,47,opt,name=on_premises_user_principal_name,json=onPremisesUserPrincipalName,proto3" json:"on_premises_user_principal_name,omitempty"` - // A list of additional email addresses for the user; for example: ["bob@contoso.com", "Robert@fabrikam.com"]. Supports $filter. - // note: in ms graph v1.0 this is a string. in the beta api it is a string collection - OtherMails []string `protobuf:"bytes,48,rep,name=other_mails,json=otherMails,proto3" json:"other_mails,omitempty"` - // Specifies password policies for the user. This value is an enumeration with one possible value being “DisableStrongPassword”, which allows weaker passwords than the default policy to be specified. “DisablePasswordExpiration” can also be specified. The two may be specified together; for example: "DisablePasswordExpiration, DisableStrongPassword". - PasswordPolicies string `protobuf:"bytes,49,opt,name=password_policies,json=passwordPolicies,proto3" json:"password_policies,omitempty"` - // A list for the user to enumerate their past projects. - PastProjects []string `protobuf:"bytes,51,rep,name=past_projects,json=pastProjects,proto3" json:"past_projects,omitempty"` - // The postal code for the user's postal address. The postal code is specific to the user's country/region. In the United States of America, this attribute contains the ZIP code. - PostalCode string `protobuf:"bytes,52,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` - // The preferred data location for the user. For more information, see OneDrive Online Multi-Geo. https://docs.microsoft.com/sharepoint/dev/solution-guidance/multigeo-introduction string preferredDataLocation = 53; - PreferredDataLocation string `protobuf:"bytes,53,opt,name=preferred_data_location,json=preferredDataLocation,proto3" json:"preferred_data_location,omitempty"` - // The preferred language for the user. Should follow ISO 639-1 Code; for example "en-US". - PreferredLanguage string `protobuf:"bytes,54,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` - // The preferred name for the user. - PreferredName string `protobuf:"bytes,55,opt,name=preferred_name,json=preferredName,proto3" json:"preferred_name,omitempty"` - // For example: ["SMTP: bob@contoso.com", "smtp: bob@sales.contoso.com"] - // The any operator is required for filter expressions on multi-valued properties. Read-only, Not nullable. Supports $filter. - ProxyAddresses []string `protobuf:"bytes,57,rep,name=proxy_addresses,json=proxyAddresses,proto3" json:"proxy_addresses,omitempty"` + OnPremisesUserPrincipalName string `protobuf:"bytes,26,opt,name=on_premises_user_principal_name,json=onPremisesUserPrincipalName,proto3" json:"on_premises_user_principal_name,omitempty"` + // Indicates the last time at which the object was synced with the on-premises directory; Read-only. + OnPremisesLastSyncDateTime *timestamp.Timestamp `protobuf:"bytes,28,opt,name=on_premises_last_sync_date_time,json=onPremisesLastSyncDateTime,proto3" json:"on_premises_last_sync_date_time,omitempty"` + // Errors when using synchronization during provisioning. + OnPremisesProvisioningErrors []*OnPremisesProvisioningError `protobuf:"bytes,29,rep,name=on_premises_provisioning_errors,json=onPremisesProvisioningErrors,proto3" json:"on_premises_provisioning_errors,omitempty"` + // For an external user invited to the tenant using the invitation API, this property represents the invited user's invitation status. + // For invited users, the state can be `PendingAcceptance` or `Accepted`, or "" / emptystring for all other users. + // Returned only on $select. Supports $filter with the supported values. For example: $filter=externalUserState eq 'PendingAcceptance'. + ExternalUserState string `protobuf:"bytes,40,opt,name=external_user_state,json=externalUserState,proto3" json:"external_user_state,omitempty"` + // Shows the timestamp for the latest change to the externalUserState property. Returned only on $select. + ExternalUserStateChangeDateTime *timestamp.Timestamp `protobuf:"bytes,41,opt,name=external_user_state_change_date_time,json=externalUserStateChangeDateTime,proto3" json:"external_user_state_change_date_time,omitempty"` // Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get // an error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph). // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. // Returned only on $select. Read-only. Use invalidateAllRefreshTokens to reset. - RefreshTokensValidFromDateTime *timestamp.Timestamp `protobuf:"bytes,58,opt,name=refresh_tokens_valid_from_date_time,json=refreshTokensValidFromDateTime,proto3" json:"refresh_tokens_valid_from_date_time,omitempty"` - // A list for the user to enumerate their responsibilities. - Responsibilities []string `protobuf:"bytes,59,rep,name=responsibilities,proto3" json:"responsibilities,omitempty"` - // A list for the user to enumerate the schools they have attended. - Schools []string `protobuf:"bytes,60,rep,name=schools,proto3" json:"schools,omitempty"` - // *true* if the Outlook global address list should contain this user, otherwise *false*. If not set, this will be treated as *true*. - // For users invited through the invitation manager, this property will be set to *false*. - ShowInAddressList bool `protobuf:"varint,61,opt,name=show_in_address_list,json=showInAddressList,proto3" json:"show_in_address_list,omitempty"` + RefreshTokensValidFromDateTime *timestamp.Timestamp `protobuf:"bytes,60,opt,name=refresh_tokens_valid_from_date_time,json=refreshTokensValidFromDateTime,proto3" json:"refresh_tokens_valid_from_date_time,omitempty"` // Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get // an error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph). // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. // Read-only. Use revokeSignInSessions to reset. - SignInSessionsValidFromDateTime *timestamp.Timestamp `protobuf:"bytes,62,opt,name=sign_in_sessions_valid_from_date_time,json=signInSessionsValidFromDateTime,proto3" json:"sign_in_sessions_valid_from_date_time,omitempty"` - // A list for the user to enumerate their skills. - Skills []string `protobuf:"bytes,64,rep,name=skills,proto3" json:"skills,omitempty"` - // The state or province in the user's address. Supports $filter - State string `protobuf:"bytes,65,opt,name=state,proto3" json:"state,omitempty"` - // The street address of the user's place of business. - StreetAddress string `protobuf:"bytes,66,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` - // The user's surname (family name or last name). Supports $filter. - Surname string `protobuf:"bytes,67,opt,name=surname,proto3" json:"surname,omitempty"` - // A two letter country code (ISO standard 3166). Required for users that will be assigned licenses due to legal requirement to check for availability of services in countries. Examples include: "US", "JP", and "GB". Not nullable. Supports $filter. - UsageLocation string `protobuf:"bytes,68,opt,name=usage_location,json=usageLocation,proto3" json:"usage_location,omitempty"` - // The user principal name (UPN) of the user. The UPN is an Internet-style login name for the user based on the Internet standard RFC 822. - // By convention, this should map to the user's email name. The general format is alias@domain, - // where domain must be present in the tenant’s collection of verified domains. - // This property is required when a user is created. The verified domains for the tenant can be accessed - // from the verifiedDomains property of organization. Supports $filter and $orderby. - UserPrincipalName string `protobuf:"bytes,69,opt,name=user_principal_name,json=userPrincipalName,proto3" json:"user_principal_name,omitempty"` - // A string value that can be used to classify user types in your directory, such as “Member” and “Guest”. Supports $filter. - UserType string `protobuf:"bytes,70,opt,name=user_type,json=userType,proto3" json:"user_type,omitempty"` - // The users password. Used when updating the users password - // TODO: the username is stored as an identity? - Password string `protobuf:"bytes,71,opt,name=password,proto3" json:"password,omitempty"` - // The groups, directory roles and administrative units that the user is a member of. Read-only. Nullable. - MemberOf []*Group `protobuf:"bytes,100,rep,name=memberOf,proto3" json:"memberOf,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SignInSessionsValidFromDateTime *timestamp.Timestamp `protobuf:"bytes,61,opt,name=sign_in_sessions_valid_from_date_time,json=signInSessionsValidFromDateTime,proto3" json:"sign_in_sessions_valid_from_date_time,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Account) Reset() { *m = Account{} } @@ -543,9 +470,9 @@ func (m *Account) XXX_DiscardUnknown() { var xxx_messageInfo_Account proto.InternalMessageInfo -func (m *Account) GetAboutMe() string { +func (m *Account) GetId() string { if m != nil { - return m.AboutMe + return m.Id } return "" } @@ -557,74 +484,11 @@ func (m *Account) GetAccountEnabled() bool { return false } -func (m *Account) GetAgeGroup() string { +func (m *Account) GetIsResourceAccount() bool { if m != nil { - return m.AgeGroup + return m.IsResourceAccount } - return "" -} - -func (m *Account) GetAssignedLicenses() []*AssignedLicense { - if m != nil { - return m.AssignedLicenses - } - return nil -} - -func (m *Account) GetAssignedPlans() []*AssignedPlan { - if m != nil { - return m.AssignedPlans - } - return nil -} - -func (m *Account) GetBirthday() *timestamp.Timestamp { - if m != nil { - return m.Birthday - } - return nil -} - -func (m *Account) GetBusinessPhones() []string { - if m != nil { - return m.BusinessPhones - } - return nil -} - -func (m *Account) GetCity() string { - if m != nil { - return m.City - } - return "" -} - -func (m *Account) GetCompanyName() string { - if m != nil { - return m.CompanyName - } - return "" -} - -func (m *Account) GetConsentProvidedForMinor() string { - if m != nil { - return m.ConsentProvidedForMinor - } - return "" -} - -func (m *Account) GetCountry() string { - if m != nil { - return m.Country - } - return "" -} - -func (m *Account) GetCreatedDateTime() *timestamp.Timestamp { - if m != nil { - return m.CreatedDateTime - } - return nil + return false } func (m *Account) GetCreationType() string { @@ -634,76 +498,6 @@ func (m *Account) GetCreationType() string { return "" } -func (m *Account) GetDeletedDateTime() *timestamp.Timestamp { - if m != nil { - return m.DeletedDateTime - } - return nil -} - -func (m *Account) GetDepartment() string { - if m != nil { - return m.Department - } - return "" -} - -func (m *Account) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Account) GetEmployeeId() string { - if m != nil { - return m.EmployeeId - } - return "" -} - -func (m *Account) GetExternalUserState() string { - if m != nil { - return m.ExternalUserState - } - return "" -} - -func (m *Account) GetExternalUserStateChangeDateTime() *timestamp.Timestamp { - if m != nil { - return m.ExternalUserStateChangeDateTime - } - return nil -} - -func (m *Account) GetFaxNumber() string { - if m != nil { - return m.FaxNumber - } - return "" -} - -func (m *Account) GetGivenName() string { - if m != nil { - return m.GivenName - } - return "" -} - -func (m *Account) GetHireDate() *timestamp.Timestamp { - if m != nil { - return m.HireDate - } - return nil -} - -func (m *Account) GetId() string { - if m != nil { - return m.Id - } - return "" -} - func (m *Account) GetIdentities() []*Identities { if m != nil { return m.Identities @@ -711,48 +505,34 @@ func (m *Account) GetIdentities() []*Identities { return nil } -func (m *Account) GetImAddresses() []string { +func (m *Account) GetDisplayName() string { if m != nil { - return m.ImAddresses - } - return nil -} - -func (m *Account) GetInterests() []string { - if m != nil { - return m.Interests - } - return nil -} - -func (m *Account) GetIsResourceAccount() bool { - if m != nil { - return m.IsResourceAccount - } - return false -} - -func (m *Account) GetJobTitle() string { - if m != nil { - return m.JobTitle + return m.DisplayName } return "" } -func (m *Account) GetLastPasswordChangeDateTime() *timestamp.Timestamp { +func (m *Account) GetUsername() string { if m != nil { - return m.LastPasswordChangeDateTime - } - return nil -} - -func (m *Account) GetLegalAgeGroupClassification() string { - if m != nil { - return m.LegalAgeGroupClassification + return m.Username } return "" } +func (m *Account) GetUidNumber() int64 { + if m != nil { + return m.UidNumber + } + return 0 +} + +func (m *Account) GetGidNumber() int64 { + if m != nil { + return m.GidNumber + } + return 0 +} + func (m *Account) GetMail() string { if m != nil { return m.Mail @@ -760,30 +540,58 @@ func (m *Account) GetMail() string { return "" } -func (m *Account) GetMailNickname() string { +func (m *Account) GetDescription() string { if m != nil { - return m.MailNickname + return m.Description } return "" } -func (m *Account) GetMobilePhone() string { +func (m *Account) GetPasswordProfile() *PasswordProfile { if m != nil { - return m.MobilePhone + return m.PasswordProfile + } + return nil +} + +func (m *Account) GetMemberOf() []*Group { + if m != nil { + return m.MemberOf + } + return nil +} + +func (m *Account) GetCreatedDateTime() *timestamp.Timestamp { + if m != nil { + return m.CreatedDateTime + } + return nil +} + +func (m *Account) GetDeletedDateTime() *timestamp.Timestamp { + if m != nil { + return m.DeletedDateTime + } + return nil +} + +func (m *Account) GetOnPremisesSyncEnabled() bool { + if m != nil { + return m.OnPremisesSyncEnabled + } + return false +} + +func (m *Account) GetOnPremisesImmutableId() string { + if m != nil { + return m.OnPremisesImmutableId } return "" } -func (m *Account) GetMySite() string { +func (m *Account) GetOnPremisesSecurityIdentifier() string { if m != nil { - return m.MySite - } - return "" -} - -func (m *Account) GetOfficeLocation() string { - if m != nil { - return m.OfficeLocation + return m.OnPremisesSecurityIdentifier } return "" } @@ -795,6 +603,13 @@ func (m *Account) GetOnPremisesDistinguishedName() string { return "" } +func (m *Account) GetOnPremisesSamAccountName() string { + if m != nil { + return m.OnPremisesSamAccountName + } + return "" +} + func (m *Account) GetOnPremisesDomainName() string { if m != nil { return m.OnPremisesDomainName @@ -802,9 +617,9 @@ func (m *Account) GetOnPremisesDomainName() string { return "" } -func (m *Account) GetOnPremisesImmutableId() string { +func (m *Account) GetOnPremisesUserPrincipalName() string { if m != nil { - return m.OnPremisesImmutableId + return m.OnPremisesUserPrincipalName } return "" } @@ -823,86 +638,16 @@ func (m *Account) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningErr return nil } -func (m *Account) GetOnPremisesSamAccountName() string { +func (m *Account) GetExternalUserState() string { if m != nil { - return m.OnPremisesSamAccountName + return m.ExternalUserState } return "" } -func (m *Account) GetOnPremisesSecurityIdentifier() string { +func (m *Account) GetExternalUserStateChangeDateTime() *timestamp.Timestamp { if m != nil { - return m.OnPremisesSecurityIdentifier - } - return "" -} - -func (m *Account) GetOnPremisesSyncEnabled() bool { - if m != nil { - return m.OnPremisesSyncEnabled - } - return false -} - -func (m *Account) GetOnPremisesUserPrincipalName() string { - if m != nil { - return m.OnPremisesUserPrincipalName - } - return "" -} - -func (m *Account) GetOtherMails() []string { - if m != nil { - return m.OtherMails - } - return nil -} - -func (m *Account) GetPasswordPolicies() string { - if m != nil { - return m.PasswordPolicies - } - return "" -} - -func (m *Account) GetPastProjects() []string { - if m != nil { - return m.PastProjects - } - return nil -} - -func (m *Account) GetPostalCode() string { - if m != nil { - return m.PostalCode - } - return "" -} - -func (m *Account) GetPreferredDataLocation() string { - if m != nil { - return m.PreferredDataLocation - } - return "" -} - -func (m *Account) GetPreferredLanguage() string { - if m != nil { - return m.PreferredLanguage - } - return "" -} - -func (m *Account) GetPreferredName() string { - if m != nil { - return m.PreferredName - } - return "" -} - -func (m *Account) GetProxyAddresses() []string { - if m != nil { - return m.ProxyAddresses + return m.ExternalUserStateChangeDateTime } return nil } @@ -914,27 +659,6 @@ func (m *Account) GetRefreshTokensValidFromDateTime() *timestamp.Timestamp { return nil } -func (m *Account) GetResponsibilities() []string { - if m != nil { - return m.Responsibilities - } - return nil -} - -func (m *Account) GetSchools() []string { - if m != nil { - return m.Schools - } - return nil -} - -func (m *Account) GetShowInAddressList() bool { - if m != nil { - return m.ShowInAddressList - } - return false -} - func (m *Account) GetSignInSessionsValidFromDateTime() *timestamp.Timestamp { if m != nil { return m.SignInSessionsValidFromDateTime @@ -942,86 +666,27 @@ func (m *Account) GetSignInSessionsValidFromDateTime() *timestamp.Timestamp { return nil } -func (m *Account) GetSkills() []string { - if m != nil { - return m.Skills - } - return nil -} - -func (m *Account) GetState() string { - if m != nil { - return m.State - } - return "" -} - -func (m *Account) GetStreetAddress() string { - if m != nil { - return m.StreetAddress - } - return "" -} - -func (m *Account) GetSurname() string { - if m != nil { - return m.Surname - } - return "" -} - -func (m *Account) GetUsageLocation() string { - if m != nil { - return m.UsageLocation - } - return "" -} - -func (m *Account) GetUserPrincipalName() string { - if m != nil { - return m.UserPrincipalName - } - return "" -} - -func (m *Account) GetUserType() string { - if m != nil { - return m.UserType - } - return "" -} - -func (m *Account) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -func (m *Account) GetMemberOf() []*Group { - if m != nil { - return m.MemberOf - } - return nil -} - +// Identities Represents an identity used to sign in to a user account. +// An identity can be provided by ocis, by organizations, or by social identity providers such as Facebook, Google, or Microsoft, that are tied to a user account. +// This enables the user to sign in to the user account with any of those associated identities. +// They are also used to keep a history of old usernames. type Identities struct { // Specifies the user sign-in types in your directory, such as `emailAddress`, `userName` or `federated`. // Here, federated represents a unique identifier for a user from an issuer, that can be in any format chosen by the issuer. - // Additional validation is enforced on *issuerAssignedId* when the sign-in type is set to `emailAddress` or `userName`. + // Additional validation is enforced on *issuer_assigned_id* when the sign-in type is set to `emailAddress` or `userName`. // This property can also be set to any custom string. SignInType string `protobuf:"bytes,1,opt,name=sign_in_type,json=signInType,proto3" json:"sign_in_type,omitempty"` // Specifies the issuer of the identity, for example facebook.com. // For local accounts (where signInType is not federated), this property is // the local B2C tenant default domain name, for example contoso.onmicrosoft.com. // For external users from other Azure AD organization, this will be the domain of - // the federated organization, for example contoso.com. + // the federated organization, for example contoso.com. // Supports $filter. 512 character limit. Issuer string `protobuf:"bytes,2,opt,name=issuer,proto3" json:"issuer,omitempty"` // Specifies the unique identifier assigned to the user by the issuer. The combination of *issuer* and *issuerAssignedId* must be unique within the organization. Represents the sign-in name for the user, when signInType is set to emailAddress or userName (also known as local accounts). // When *signInType* is set to: // * `emailAddress`, (or starts with `emailAddress` like `emailAddress1`) *issuerAssignedId* must be a valid email address - // * `userName`, issuerAssignedId must be a valid local part of an email address + // * `userName`, issuer_assigned_id must be a valid local part of an email address // Supports $filter. 512 character limit. IssuerAssignedId string `protobuf:"bytes,3,opt,name=issuer_assigned_id,json=issuerAssignedId,proto3" json:"issuer_assigned_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -1075,6 +740,86 @@ func (m *Identities) GetIssuerAssignedId() string { return "" } +type PasswordProfile struct { + // The password for the user. This property is required when a user is created. + // It can be updated, but the user will be required to change the password on the next login. + // The password must satisfy minimum requirements as specified by the user’s passwordPolicies property. By default, a strong password is required. + Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` + // The time when this account last changed their password. + LastPasswordChangeDateTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=last_password_change_date_time,json=lastPasswordChangeDateTime,proto3" json:"last_password_change_date_time,omitempty"` + // Specifies password policies for the user. + //This value is an enumeration with one possible value being “DisableStrongPassword”, which allows weaker passwords than the default policy to be specified. + // “DisablePasswordExpiration” can also be specified. + PasswordPolicies []string `protobuf:"bytes,3,rep,name=password_policies,json=passwordPolicies,proto3" json:"password_policies,omitempty"` + // *true* if the user must change her password on the next login; otherwise false. + ForceChangePasswordNextSignIn bool `protobuf:"varint,4,opt,name=force_change_password_next_sign_in,json=forceChangePasswordNextSignIn,proto3" json:"force_change_password_next_sign_in,omitempty"` + // If *true*, at next sign-in, the user must perform a multi-factor authentication (MFA) before being forced to change their password. The behavior is identical to forceChangePasswordNextSignIn except that the user is required to first perform a multi-factor authentication before password change. After a password change, this property will be automatically reset to false. If not set, default is false. + ForceChangePasswordNextSignInWithMfa bool `protobuf:"varint,5,opt,name=force_change_password_next_sign_in_with_mfa,json=forceChangePasswordNextSignInWithMfa,proto3" json:"force_change_password_next_sign_in_with_mfa,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PasswordProfile) Reset() { *m = PasswordProfile{} } +func (m *PasswordProfile) String() string { return proto.CompactTextString(m) } +func (*PasswordProfile) ProtoMessage() {} +func (*PasswordProfile) Descriptor() ([]byte, []int) { + return fileDescriptor_e1e7723af4c007b7, []int{8} +} + +func (m *PasswordProfile) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PasswordProfile.Unmarshal(m, b) +} +func (m *PasswordProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PasswordProfile.Marshal(b, m, deterministic) +} +func (m *PasswordProfile) XXX_Merge(src proto.Message) { + xxx_messageInfo_PasswordProfile.Merge(m, src) +} +func (m *PasswordProfile) XXX_Size() int { + return xxx_messageInfo_PasswordProfile.Size(m) +} +func (m *PasswordProfile) XXX_DiscardUnknown() { + xxx_messageInfo_PasswordProfile.DiscardUnknown(m) +} + +var xxx_messageInfo_PasswordProfile proto.InternalMessageInfo + +func (m *PasswordProfile) GetPassword() string { + if m != nil { + return m.Password + } + return "" +} + +func (m *PasswordProfile) GetLastPasswordChangeDateTime() *timestamp.Timestamp { + if m != nil { + return m.LastPasswordChangeDateTime + } + return nil +} + +func (m *PasswordProfile) GetPasswordPolicies() []string { + if m != nil { + return m.PasswordPolicies + } + return nil +} + +func (m *PasswordProfile) GetForceChangePasswordNextSignIn() bool { + if m != nil { + return m.ForceChangePasswordNextSignIn + } + return false +} + +func (m *PasswordProfile) GetForceChangePasswordNextSignInWithMfa() bool { + if m != nil { + return m.ForceChangePasswordNextSignInWithMfa + } + return false +} + type ListGroupsRequest struct { // Optional. The maximum number of groups to return in the response PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` @@ -1112,7 +857,7 @@ func (m *ListGroupsRequest) Reset() { *m = ListGroupsRequest{} } func (m *ListGroupsRequest) String() string { return proto.CompactTextString(m) } func (*ListGroupsRequest) ProtoMessage() {} func (*ListGroupsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{8} + return fileDescriptor_e1e7723af4c007b7, []int{9} } func (m *ListGroupsRequest) XXX_Unmarshal(b []byte) error { @@ -1178,7 +923,7 @@ func (m *ListGroupsResponse) Reset() { *m = ListGroupsResponse{} } func (m *ListGroupsResponse) String() string { return proto.CompactTextString(m) } func (*ListGroupsResponse) ProtoMessage() {} func (*ListGroupsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{9} + return fileDescriptor_e1e7723af4c007b7, []int{10} } func (m *ListGroupsResponse) XXX_Unmarshal(b []byte) error { @@ -1224,7 +969,7 @@ func (m *GetGroupRequest) Reset() { *m = GetGroupRequest{} } func (m *GetGroupRequest) String() string { return proto.CompactTextString(m) } func (*GetGroupRequest) ProtoMessage() {} func (*GetGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{10} + return fileDescriptor_e1e7723af4c007b7, []int{11} } func (m *GetGroupRequest) XXX_Unmarshal(b []byte) error { @@ -1266,7 +1011,7 @@ func (m *CreateGroupRequest) Reset() { *m = CreateGroupRequest{} } func (m *CreateGroupRequest) String() string { return proto.CompactTextString(m) } func (*CreateGroupRequest) ProtoMessage() {} func (*CreateGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{11} + return fileDescriptor_e1e7723af4c007b7, []int{12} } func (m *CreateGroupRequest) XXX_Unmarshal(b []byte) error { @@ -1316,7 +1061,7 @@ func (m *UpdateGroupRequest) Reset() { *m = UpdateGroupRequest{} } func (m *UpdateGroupRequest) String() string { return proto.CompactTextString(m) } func (*UpdateGroupRequest) ProtoMessage() {} func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{12} + return fileDescriptor_e1e7723af4c007b7, []int{13} } func (m *UpdateGroupRequest) XXX_Unmarshal(b []byte) error { @@ -1362,7 +1107,7 @@ func (m *DeleteGroupRequest) Reset() { *m = DeleteGroupRequest{} } func (m *DeleteGroupRequest) String() string { return proto.CompactTextString(m) } func (*DeleteGroupRequest) ProtoMessage() {} func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{13} + return fileDescriptor_e1e7723af4c007b7, []int{14} } func (m *DeleteGroupRequest) XXX_Unmarshal(b []byte) error { @@ -1402,7 +1147,7 @@ func (m *AddMemberRequest) Reset() { *m = AddMemberRequest{} } func (m *AddMemberRequest) String() string { return proto.CompactTextString(m) } func (*AddMemberRequest) ProtoMessage() {} func (*AddMemberRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{14} + return fileDescriptor_e1e7723af4c007b7, []int{15} } func (m *AddMemberRequest) XXX_Unmarshal(b []byte) error { @@ -1443,7 +1188,7 @@ func (m *RemoveMemberRequest) Reset() { *m = RemoveMemberRequest{} } func (m *RemoveMemberRequest) String() string { return proto.CompactTextString(m) } func (*RemoveMemberRequest) ProtoMessage() {} func (*RemoveMemberRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{15} + return fileDescriptor_e1e7723af4c007b7, []int{16} } func (m *RemoveMemberRequest) XXX_Unmarshal(b []byte) error { @@ -1476,6 +1221,9 @@ type ListMembersRequest struct { // Optional. A pagination token returned from a previous call to `Get` // that indicates from where search should continue PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. Used to specify a subset of fields that should be + // returned by a get operation or modified by an update operation. + FieldMask *field_mask.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Optional. Search criteria used to select the groups to return. // If no search criteria is specified then all groups will be // returned @@ -1494,7 +1242,7 @@ type ListMembersRequest struct { // starts with "Th" // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" - Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1504,7 +1252,7 @@ func (m *ListMembersRequest) Reset() { *m = ListMembersRequest{} } func (m *ListMembersRequest) String() string { return proto.CompactTextString(m) } func (*ListMembersRequest) ProtoMessage() {} func (*ListMembersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{16} + return fileDescriptor_e1e7723af4c007b7, []int{17} } func (m *ListMembersRequest) XXX_Unmarshal(b []byte) error { @@ -1539,6 +1287,13 @@ func (m *ListMembersRequest) GetPageToken() string { return "" } +func (m *ListMembersRequest) GetFieldMask() *field_mask.FieldMask { + if m != nil { + return m.FieldMask + } + return nil +} + func (m *ListMembersRequest) GetQuery() string { if m != nil { return m.Query @@ -1563,7 +1318,7 @@ func (m *ListMembersResponse) Reset() { *m = ListMembersResponse{} } func (m *ListMembersResponse) String() string { return proto.CompactTextString(m) } func (*ListMembersResponse) ProtoMessage() {} func (*ListMembersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{17} + return fileDescriptor_e1e7723af4c007b7, []int{18} } func (m *ListMembersResponse) XXX_Unmarshal(b []byte) error { @@ -1599,143 +1354,82 @@ func (m *ListMembersResponse) GetNextPageToken() string { } type Group struct { - // Indicates if people external to the organization can send messages to the group. Default value is false. - // Returned only on $select. - AllowExternalSenders bool `protobuf:"varint,1,opt,name=allow_external_senders,json=allowExternalSenders,proto3" json:"allow_external_senders,omitempty"` - // The list of sensitivity label pairs (label ID, label name) associated with an Office 365 group. - //Returned only on $select. Read-only. - AssignedLabels []*AssignedLabel `protobuf:"bytes,2,rep,name=assigned_labels,json=assignedLabels,proto3" json:"assigned_labels,omitempty"` - // The licenses that are assigned to the group. - // Returned only on $select. Read-only. - AssignedLicenses []*AssignedLicense `protobuf:"bytes,3,rep,name=assigned_licenses,json=assignedLicenses,proto3" json:"assigned_licenses,omitempty"` - // Indicates if new members added to the group will be auto-subscribed to receive email notifications. You can set this property in a PATCH request for the group; do not set it in the initial POST request that creates the group. Default value is false. - // Returned only on $select. - AutoSubscribeNewMembers bool `protobuf:"varint,4,opt,name=auto_subscribe_new_members,json=autoSubscribeNewMembers,proto3" json:"auto_subscribe_new_members,omitempty"` - // Describes a classification for the group (such as low, medium or high business impact). Valid values for this property are defined by creating a ClassificationList setting value, based on the template definition. - // Returned by default. - Classification string `protobuf:"bytes,5,opt,name=classification,proto3" json:"classification,omitempty"` - // App ID of the app used to create the group. Can be null for some groups. - // Returned by default. Read-only. Supports $filter. - CreatedByAppId string `protobuf:"bytes,6,opt,name=created_by_app_id,json=createdByAppId,proto3" json:"created_by_app_id,omitempty"` + // The unique identifier for the group. + // Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // The display name for the group. This property is required when a group is created and cannot be cleared during updates. + // Returned by default. Supports $filter and $orderby. + // groupofnames MUST cn + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable. + // TODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later + Members []*Account `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` + // groupofnames MAY businessCategory + // groupofnames MAY o + // groupofnames MAY ou + // groupofnames MAY owner, SINGLE-VALUE but there might be multiple owners + Owners []*Account `protobuf:"bytes,4,rep,name=owners,proto3" json:"owners,omitempty"` + // An optional description for the group. Returned by default. + // groupofnames MAY description + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + // used for exposing the user using ldap + // posixgroup MUST gidnumber + GidNumber int64 `protobuf:"varint,6,opt,name=gid_number,json=gidNumber,proto3" json:"gid_number,omitempty"` // Timestamp of when the group was created. The value cannot be modified and is automatically populated when the group is created // Returned by default. Read-only. CreatedDateTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=created_date_time,json=createdDateTime,proto3" json:"created_date_time,omitempty"` // For some Azure Active Directory objects (user, group, application), if the object is deleted, it is first logically deleted, and this property is updated with the date and time when the object was deleted. Otherwise this property is null. If the object is restored, this property is updated to null. // Returned by default. Read-only. DeletedDateTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=deleted_date_time,json=deletedDateTime,proto3" json:"deleted_date_time,omitempty"` - // An optional description for the group. Returned by default. - Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` - // The display name for the group. This property is required when a group is created and cannot be cleared during updates. - // Returned by default. Supports $filter and $orderby. - DisplayName string `protobuf:"bytes,10,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // Timestamp of when the group is set to expire. The value cannot be modified and is automatically populated when the group is created. // Returned by default. Read-only. - ExpirationDateTime *timestamp.Timestamp `protobuf:"bytes,11,opt,name=expiration_date_time,json=expirationDateTime,proto3" json:"expiration_date_time,omitempty"` - // Specifies the group type and its membership. - // If the collection contains `Unified` then the group is an Office 365 group; otherwise it's a security group. - // If the collection includes `DynamicMembership`, the group has dynamic membership; otherwise, membership is static. - // Returned by default. Supports $filter. - GroupTypes []string `protobuf:"bytes,12,rep,name=group_types,json=groupTypes,proto3" json:"group_types,omitempty"` - // Indicates whether there are members in this group that have license errors from its group-based license assignment. - // This property is never returned on a GET operation. You can use it as a $filter argument to get groups that have members with license errors (that is, filter for this property being true). - HasMembersWithLicenseErrors bool `protobuf:"varint,13,opt,name=has_members_with_license_errors,json=hasMembersWithLicenseErrors,proto3" json:"has_members_with_license_errors,omitempty"` + ExpirationDateTime *timestamp.Timestamp `protobuf:"bytes,9,opt,name=expiration_date_time,json=expirationDateTime,proto3" json:"expiration_date_time,omitempty"` // True if the group is not displayed in certain parts of the Outlook user interface: // in the Address Book, in address lists for selecting message recipients, and in the Browse Groups dialog for searching groups; false otherwise. Default value is false. // Returned only on $select. - HideFromAddressLists bool `protobuf:"varint,14,opt,name=hide_from_address_lists,json=hideFromAddressLists,proto3" json:"hide_from_address_lists,omitempty"` - // True if the group is not displayed in Outlook clients, such as Outlook for Windows and Outlook on the web, false otherwise. Default value is false. - // Returned only on $select. - HideFromOutlookClients bool `protobuf:"varint,15,opt,name=hide_from_outlook_clients,json=hideFromOutlookClients,proto3" json:"hide_from_outlook_clients,omitempty"` - // The unique identifier for the group. - // Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. - Id string `protobuf:"bytes,16,opt,name=id,proto3" json:"id,omitempty"` - // Indicates whether the signed-in user is subscribed to receive email conversations. Default value is true. - // Returned only on $select. - IsSubscribedByMail bool `protobuf:"varint,17,opt,name=is_subscribed_by_mail,json=isSubscribedByMail,proto3" json:"is_subscribed_by_mail,omitempty"` - // Indicates status of the group license assignment to all members of the group. - // Possible values: `QueuedForProcessing`, `ProcessingInProgress`, and `ProcessingComplete`. - // Returned only on $select. Read-only. - LicenseProcessingState string `protobuf:"bytes,18,opt,name=license_processing_state,json=licenseProcessingState,proto3" json:"license_processing_state,omitempty"` - // The SMTP address for the group, for example, "serviceadmins@contoso.onmicrosoft.com". - // Returned by default. Read-only. Supports $filter. - Mail string `protobuf:"bytes,19,opt,name=mail,proto3" json:"mail,omitempty"` - // Specifies whether the group is mail-enabled. + HideFromAddressLists bool `protobuf:"varint,10,opt,name=hide_from_address_lists,json=hideFromAddressLists,proto3" json:"hide_from_address_lists,omitempty"` + // Specifies the visibility of an Office 365 group. Possible values are: Private, Public, or Hiddenmembership; blank values are treated as public. See group visibility options to learn more. + // Visibility can be set only when a group is created; it is not editable. // Returned by default. - MailEnabled bool `protobuf:"varint,20,opt,name=mail_enabled,json=mailEnabled,proto3" json:"mail_enabled,omitempty"` - // The mail alias for the group, unique in the organization. This property must be specified when a group is created. - // Returned by default. Supports $filter. - MailNickname string `protobuf:"bytes,21,opt,name=mail_nickname,json=mailNickname,proto3" json:"mail_nickname,omitempty"` - // The rule that determines members for this group if the group is a dynamic group (groupTypes contains DynamicMembership). For more information about the syntax of the membership rule, see Membership Rules syntax. - // Returned by default. - MembershipRule string `protobuf:"bytes,22,opt,name=membership_rule,json=membershipRule,proto3" json:"membership_rule,omitempty"` - // Indicates whether the dynamic membership processing is on or paused. Possible values are "On" or "Paused". - // Returned by default. - MembershipRuleProcessingState string `protobuf:"bytes,23,opt,name=membership_rule_processing_state,json=membershipRuleProcessingState,proto3" json:"membership_rule_processing_state,omitempty"` - // Contains the on-premises domain FQDN, also called dnsDomainName synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. - // Returned by default. Read-only. - OnPremisesDomainName string `protobuf:"bytes,24,opt,name=on_premises_domain_name,json=onPremisesDomainName,proto3" json:"on_premises_domain_name,omitempty"` - // Indicates the last time at which the group was synced with the on-premises directory. - // Returned by default. Read-only. Supports $filter. - OnPremisesLastSyncDateTime string `protobuf:"bytes,25,opt,name=on_premises_last_sync_date_time,json=onPremisesLastSyncDateTime,proto3" json:"on_premises_last_sync_date_time,omitempty"` - // Contains the on-premises netBios name synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. - // Returned by default. Read-only. - OnPremisesNetBiosName string `protobuf:"bytes,26,opt,name=on_premises_net_bios_name,json=onPremisesNetBiosName,proto3" json:"on_premises_net_bios_name,omitempty"` - // Errors when using synchronization during provisioning. - OnPremisesProvisioningErrors []*OnPremisesProvisioningError `protobuf:"bytes,27,rep,name=on_premises_provisioning_errors,json=onPremisesProvisioningErrors,proto3" json:"on_premises_provisioning_errors,omitempty"` - // Contains the on-premises `samAccountName` synchronized from the on-premises directory. - // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Returned by default. Read-only. - OnPremisesSamAccountName string `protobuf:"bytes,28,opt,name=on_premises_sam_account_name,json=onPremisesSamAccountName,proto3" json:"on_premises_sam_account_name,omitempty"` - // Contains the on-premises security identifier (SID) for the group that was synchronized from on-premises to the cloud. Returned by default. Read-only. - OnPremisesSecurityIdentifier string `protobuf:"bytes,29,opt,name=on_premises_security_identifier,json=onPremisesSecurityIdentifier,proto3" json:"on_premises_security_identifier,omitempty"` + Visibility string `protobuf:"bytes,11,opt,name=visibility,proto3" json:"visibility,omitempty"` // *true* if this group is synced from an on-premises directory; // *false* if this group was originally synced from an on-premises directory but is no longer synced; // null if this object has never been synced from an on-premises directory (default). // Returned by default. Read-only. Supports $filter. - OnPremisesSyncEnabled bool `protobuf:"varint,30,opt,name=on_premises_sync_enabled,json=onPremisesSyncEnabled,proto3" json:"on_premises_sync_enabled,omitempty"` - // The preferred data location for the group. For more information, see OneDrive Online Multi-Geo. https://docs.microsoft.com/sharepoint/dev/solution-guidance/multigeo-introduction string preferredDataLocation = 53; - PreferredDataLocation string `protobuf:"bytes,31,opt,name=preferred_data_location,json=preferredDataLocation,proto3" json:"preferred_data_location,omitempty"` - // The preferred language for the user. Should follow ISO 639-1 Code; for example "en-US". - PreferredLanguage string `protobuf:"bytes,32,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` - // Email addresses for the group that direct to the same group mailbox. - // For example: ["SMTP: bob@contoso.com", "smtp: bob@sales.contoso.com"]. - // The any operator is required for filter expressions on multi-valued properties. - // Returned by default. Read-only. Not nullable. Supports $filter. - ProxyAddresses []string `protobuf:"bytes,33,rep,name=proxy_addresses,json=proxyAddresses,proto3" json:"proxy_addresses,omitempty"` - // Timestamp of when the group was last renewed. - // This cannot be modified directly and is only updated via the renew service action. + OnPremisesSyncEnabled bool `protobuf:"varint,20,opt,name=on_premises_sync_enabled,json=onPremisesSyncEnabled,proto3" json:"on_premises_sync_enabled,omitempty"` + // This property is used to associate an on-premises LDAP user to the ocis account object. + // This property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property. + // Important: The $ and _ characters cannot be used when specifying this property. Supports $filter. + OnPremisesImmutableId string `protobuf:"bytes,21,opt,name=on_premises_immutable_id,json=onPremisesImmutableId,proto3" json:"on_premises_immutable_id,omitempty"` + // Contains the on-premises security identifier (SID) for the group that was synchronized from on-premises to the cloud. Returned by default. Read-only. + OnPremisesSecurityIdentifier string `protobuf:"bytes,22,opt,name=on_premises_security_identifier,json=onPremisesSecurityIdentifier,proto3" json:"on_premises_security_identifier,omitempty"` + // Contains the on-premises LDAP `distinguished name` or `DN`. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + OnPremisesDistinguishedName string `protobuf:"bytes,23,opt,name=on_premises_distinguished_name,json=onPremisesDistinguishedName,proto3" json:"on_premises_distinguished_name,omitempty"` + // Contains the on-premises `samAccountName` synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Returned by default. Read-only. + OnPremisesSamAccountName string `protobuf:"bytes,24,opt,name=on_premises_sam_account_name,json=onPremisesSamAccountName,proto3" json:"on_premises_sam_account_name,omitempty"` + // Contains the on-premises domain FQDN, also called dnsDomainName synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. // Returned by default. Read-only. - RenewedDateTime *timestamp.Timestamp `protobuf:"bytes,34,opt,name=renewed_date_time,json=renewedDateTime,proto3" json:"renewed_date_time,omitempty"` - // Specifies the group behaviors that can be set for an Office 365 group during creation. This can be set only as part of creation (POST). Possible values are `AllowOnlyMembersToPost`, `HideGroupInOutlook`, `SubscribeNewGroupMembers`, `WelcomeEmailDisable`. For more information, see Set Microsoft 365 group behaviors and provisioning options. https://docs.microsoft.com/en-us/graph/group-set-options - ResourceBehaviorOptions []string `protobuf:"bytes,35,rep,name=resource_behavior_options,json=resourceBehaviorOptions,proto3" json:"resource_behavior_options,omitempty"` - // Specifies the group resources that are provisioned as part of Office 365 group creation, that are not normally part of default group creation. Possible value is `Team`. For more information, see Set Microsoft 365 group behaviors and provisioning options. https://docs.microsoft.com/en-us/graph/group-set-options - ResourceProvisioningOptions []string `protobuf:"bytes,36,rep,name=resource_provisioning_options,json=resourceProvisioningOptions,proto3" json:"resource_provisioning_options,omitempty"` - // Specifies whether the group is a security group. - // Returned by default. Supports $filter. - SecurityEnabled bool `protobuf:"varint,37,opt,name=security_enabled,json=securityEnabled,proto3" json:"security_enabled,omitempty"` - // Security identifier of the group, used in Windows scenarios. - // Returned by default. - SecurityIdentifier string `protobuf:"bytes,38,opt,name=security_identifier,json=securityIdentifier,proto3" json:"security_identifier,omitempty"` - // Specifies an Office 365 group's color theme. Possible values are Teal, Purple, Green, Blue, Pink, Orange or Red. - // Returned by default. - Theme string `protobuf:"bytes,39,opt,name=theme,proto3" json:"theme,omitempty"` - // Specifies the visibility of an Office 365 group. Possible values are: Private, Public, or Hiddenmembership; blank values are treated as public. See group visibility options to learn more. - // Visibility can be set only when a group is created; it is not editable. - // Visibility is supported only for unified groups; it is not supported for security groups. - // Returned by default. - Visibility string `protobuf:"bytes,43,opt,name=visibility,proto3" json:"visibility,omitempty"` - // Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable. - // TODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later - Members []*Account `protobuf:"bytes,100,rep,name=members,proto3" json:"members,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + OnPremisesDomainName string `protobuf:"bytes,25,opt,name=on_premises_domain_name,json=onPremisesDomainName,proto3" json:"on_premises_domain_name,omitempty"` + // Contains the on-premises netBios name synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. + // Returned by default. Read-only. + OnPremisesNetBiosName string `protobuf:"bytes,26,opt,name=on_premises_net_bios_name,json=onPremisesNetBiosName,proto3" json:"on_premises_net_bios_name,omitempty"` + // Indicates the last time at which the group was synced with the on-premises directory. + // Returned by default. Read-only. Supports $filter. + OnPremisesLastSyncDateTime string `protobuf:"bytes,27,opt,name=on_premises_last_sync_date_time,json=onPremisesLastSyncDateTime,proto3" json:"on_premises_last_sync_date_time,omitempty"` + // Errors when using synchronization during provisioning. + OnPremisesProvisioningErrors []*OnPremisesProvisioningError `protobuf:"bytes,28,rep,name=on_premises_provisioning_errors,json=onPremisesProvisioningErrors,proto3" json:"on_premises_provisioning_errors,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Group) Reset() { *m = Group{} } func (m *Group) String() string { return proto.CompactTextString(m) } func (*Group) ProtoMessage() {} func (*Group) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{18} + return fileDescriptor_e1e7723af4c007b7, []int{19} } func (m *Group) XXX_Unmarshal(b []byte) error { @@ -1756,48 +1450,48 @@ func (m *Group) XXX_DiscardUnknown() { var xxx_messageInfo_Group proto.InternalMessageInfo -func (m *Group) GetAllowExternalSenders() bool { +func (m *Group) GetId() string { if m != nil { - return m.AllowExternalSenders - } - return false -} - -func (m *Group) GetAssignedLabels() []*AssignedLabel { - if m != nil { - return m.AssignedLabels - } - return nil -} - -func (m *Group) GetAssignedLicenses() []*AssignedLicense { - if m != nil { - return m.AssignedLicenses - } - return nil -} - -func (m *Group) GetAutoSubscribeNewMembers() bool { - if m != nil { - return m.AutoSubscribeNewMembers - } - return false -} - -func (m *Group) GetClassification() string { - if m != nil { - return m.Classification + return m.Id } return "" } -func (m *Group) GetCreatedByAppId() string { +func (m *Group) GetDisplayName() string { if m != nil { - return m.CreatedByAppId + return m.DisplayName } return "" } +func (m *Group) GetMembers() []*Account { + if m != nil { + return m.Members + } + return nil +} + +func (m *Group) GetOwners() []*Account { + if m != nil { + return m.Owners + } + return nil +} + +func (m *Group) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Group) GetGidNumber() int64 { + if m != nil { + return m.GidNumber + } + return 0 +} + func (m *Group) GetCreatedDateTime() *timestamp.Timestamp { if m != nil { return m.CreatedDateTime @@ -1812,20 +1506,6 @@ func (m *Group) GetDeletedDateTime() *timestamp.Timestamp { return nil } -func (m *Group) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Group) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - func (m *Group) GetExpirationDateTime() *timestamp.Timestamp { if m != nil { return m.ExpirationDateTime @@ -1833,20 +1513,6 @@ func (m *Group) GetExpirationDateTime() *timestamp.Timestamp { return nil } -func (m *Group) GetGroupTypes() []string { - if m != nil { - return m.GroupTypes - } - return nil -} - -func (m *Group) GetHasMembersWithLicenseErrors() bool { - if m != nil { - return m.HasMembersWithLicenseErrors - } - return false -} - func (m *Group) GetHideFromAddressLists() bool { if m != nil { return m.HideFromAddressLists @@ -1854,107 +1520,9 @@ func (m *Group) GetHideFromAddressLists() bool { return false } -func (m *Group) GetHideFromOutlookClients() bool { +func (m *Group) GetVisibility() string { if m != nil { - return m.HideFromOutlookClients - } - return false -} - -func (m *Group) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Group) GetIsSubscribedByMail() bool { - if m != nil { - return m.IsSubscribedByMail - } - return false -} - -func (m *Group) GetLicenseProcessingState() string { - if m != nil { - return m.LicenseProcessingState - } - return "" -} - -func (m *Group) GetMail() string { - if m != nil { - return m.Mail - } - return "" -} - -func (m *Group) GetMailEnabled() bool { - if m != nil { - return m.MailEnabled - } - return false -} - -func (m *Group) GetMailNickname() string { - if m != nil { - return m.MailNickname - } - return "" -} - -func (m *Group) GetMembershipRule() string { - if m != nil { - return m.MembershipRule - } - return "" -} - -func (m *Group) GetMembershipRuleProcessingState() string { - if m != nil { - return m.MembershipRuleProcessingState - } - return "" -} - -func (m *Group) GetOnPremisesDomainName() string { - if m != nil { - return m.OnPremisesDomainName - } - return "" -} - -func (m *Group) GetOnPremisesLastSyncDateTime() string { - if m != nil { - return m.OnPremisesLastSyncDateTime - } - return "" -} - -func (m *Group) GetOnPremisesNetBiosName() string { - if m != nil { - return m.OnPremisesNetBiosName - } - return "" -} - -func (m *Group) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { - if m != nil { - return m.OnPremisesProvisioningErrors - } - return nil -} - -func (m *Group) GetOnPremisesSamAccountName() string { - if m != nil { - return m.OnPremisesSamAccountName - } - return "" -} - -func (m *Group) GetOnPremisesSecurityIdentifier() string { - if m != nil { - return m.OnPremisesSecurityIdentifier + return m.Visibility } return "" } @@ -1966,246 +1534,62 @@ func (m *Group) GetOnPremisesSyncEnabled() bool { return false } -func (m *Group) GetPreferredDataLocation() string { +func (m *Group) GetOnPremisesImmutableId() string { if m != nil { - return m.PreferredDataLocation + return m.OnPremisesImmutableId } return "" } -func (m *Group) GetPreferredLanguage() string { +func (m *Group) GetOnPremisesSecurityIdentifier() string { if m != nil { - return m.PreferredLanguage + return m.OnPremisesSecurityIdentifier } return "" } -func (m *Group) GetProxyAddresses() []string { +func (m *Group) GetOnPremisesDistinguishedName() string { if m != nil { - return m.ProxyAddresses + return m.OnPremisesDistinguishedName + } + return "" +} + +func (m *Group) GetOnPremisesSamAccountName() string { + if m != nil { + return m.OnPremisesSamAccountName + } + return "" +} + +func (m *Group) GetOnPremisesDomainName() string { + if m != nil { + return m.OnPremisesDomainName + } + return "" +} + +func (m *Group) GetOnPremisesNetBiosName() string { + if m != nil { + return m.OnPremisesNetBiosName + } + return "" +} + +func (m *Group) GetOnPremisesLastSyncDateTime() string { + if m != nil { + return m.OnPremisesLastSyncDateTime + } + return "" +} + +func (m *Group) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { + if m != nil { + return m.OnPremisesProvisioningErrors } return nil } -func (m *Group) GetRenewedDateTime() *timestamp.Timestamp { - if m != nil { - return m.RenewedDateTime - } - return nil -} - -func (m *Group) GetResourceBehaviorOptions() []string { - if m != nil { - return m.ResourceBehaviorOptions - } - return nil -} - -func (m *Group) GetResourceProvisioningOptions() []string { - if m != nil { - return m.ResourceProvisioningOptions - } - return nil -} - -func (m *Group) GetSecurityEnabled() bool { - if m != nil { - return m.SecurityEnabled - } - return false -} - -func (m *Group) GetSecurityIdentifier() string { - if m != nil { - return m.SecurityIdentifier - } - return "" -} - -func (m *Group) GetTheme() string { - if m != nil { - return m.Theme - } - return "" -} - -func (m *Group) GetVisibility() string { - if m != nil { - return m.Visibility - } - return "" -} - -func (m *Group) GetMembers() []*Account { - if m != nil { - return m.Members - } - return nil -} - -type AssignedLabel struct { - // The unique identifier of the label. - LabelId string `protobuf:"bytes,1,opt,name=label_id,json=labelId,proto3" json:"label_id,omitempty"` - // The display name of the label. Read-only. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AssignedLabel) Reset() { *m = AssignedLabel{} } -func (m *AssignedLabel) String() string { return proto.CompactTextString(m) } -func (*AssignedLabel) ProtoMessage() {} -func (*AssignedLabel) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{19} -} - -func (m *AssignedLabel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AssignedLabel.Unmarshal(m, b) -} -func (m *AssignedLabel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AssignedLabel.Marshal(b, m, deterministic) -} -func (m *AssignedLabel) XXX_Merge(src proto.Message) { - xxx_messageInfo_AssignedLabel.Merge(m, src) -} -func (m *AssignedLabel) XXX_Size() int { - return xxx_messageInfo_AssignedLabel.Size(m) -} -func (m *AssignedLabel) XXX_DiscardUnknown() { - xxx_messageInfo_AssignedLabel.DiscardUnknown(m) -} - -var xxx_messageInfo_AssignedLabel proto.InternalMessageInfo - -func (m *AssignedLabel) GetLabelId() string { - if m != nil { - return m.LabelId - } - return "" -} - -func (m *AssignedLabel) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -type AssignedLicense struct { - SkuId string `protobuf:"bytes,1,opt,name=sku_id,json=skuId,proto3" json:"sku_id,omitempty"` - DisabledPlans []string `protobuf:"bytes,2,rep,name=disabled_plans,json=disabledPlans,proto3" json:"disabled_plans,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AssignedLicense) Reset() { *m = AssignedLicense{} } -func (m *AssignedLicense) String() string { return proto.CompactTextString(m) } -func (*AssignedLicense) ProtoMessage() {} -func (*AssignedLicense) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{20} -} - -func (m *AssignedLicense) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AssignedLicense.Unmarshal(m, b) -} -func (m *AssignedLicense) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AssignedLicense.Marshal(b, m, deterministic) -} -func (m *AssignedLicense) XXX_Merge(src proto.Message) { - xxx_messageInfo_AssignedLicense.Merge(m, src) -} -func (m *AssignedLicense) XXX_Size() int { - return xxx_messageInfo_AssignedLicense.Size(m) -} -func (m *AssignedLicense) XXX_DiscardUnknown() { - xxx_messageInfo_AssignedLicense.DiscardUnknown(m) -} - -var xxx_messageInfo_AssignedLicense proto.InternalMessageInfo - -func (m *AssignedLicense) GetSkuId() string { - if m != nil { - return m.SkuId - } - return "" -} - -func (m *AssignedLicense) GetDisabledPlans() []string { - if m != nil { - return m.DisabledPlans - } - return nil -} - -type AssignedPlan struct { - // The date and time at which the plan was assigned; for example: 2013-01-02T19:32:30Z. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z' - AssignedDateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=assigned_date_time,json=assignedDateTime,proto3" json:"assigned_date_time,omitempty"` - // For example, “Enabled”. - CapabilityStatus string `protobuf:"bytes,2,opt,name=capabilityStatus,proto3" json:"capabilityStatus,omitempty"` - // The name of the service; for example, “Exchange”. - Service string `protobuf:"bytes,3,opt,name=service,proto3" json:"service,omitempty"` - // A GUID that identifies the service plan. - ServicePlanId string `protobuf:"bytes,4,opt,name=servicePlanId,proto3" json:"servicePlanId,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *AssignedPlan) Reset() { *m = AssignedPlan{} } -func (m *AssignedPlan) String() string { return proto.CompactTextString(m) } -func (*AssignedPlan) ProtoMessage() {} -func (*AssignedPlan) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{21} -} - -func (m *AssignedPlan) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AssignedPlan.Unmarshal(m, b) -} -func (m *AssignedPlan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AssignedPlan.Marshal(b, m, deterministic) -} -func (m *AssignedPlan) XXX_Merge(src proto.Message) { - xxx_messageInfo_AssignedPlan.Merge(m, src) -} -func (m *AssignedPlan) XXX_Size() int { - return xxx_messageInfo_AssignedPlan.Size(m) -} -func (m *AssignedPlan) XXX_DiscardUnknown() { - xxx_messageInfo_AssignedPlan.DiscardUnknown(m) -} - -var xxx_messageInfo_AssignedPlan proto.InternalMessageInfo - -func (m *AssignedPlan) GetAssignedDateTime() *timestamp.Timestamp { - if m != nil { - return m.AssignedDateTime - } - return nil -} - -func (m *AssignedPlan) GetCapabilityStatus() string { - if m != nil { - return m.CapabilityStatus - } - return "" -} - -func (m *AssignedPlan) GetService() string { - if m != nil { - return m.Service - } - return "" -} - -func (m *AssignedPlan) GetServicePlanId() string { - if m != nil { - return m.ServicePlanId - } - return "" -} - type OnPremisesProvisioningError struct { // Category of the provisioning error. Note: Currently, there is only one possible value. Possible value: PropertyConflict - indicates a property value is not unique. Other objects contain the same value for the property. Category string `protobuf:"bytes,1,opt,name=category,proto3" json:"category,omitempty"` @@ -2224,7 +1608,7 @@ func (m *OnPremisesProvisioningError) Reset() { *m = OnPremisesProvision func (m *OnPremisesProvisioningError) String() string { return proto.CompactTextString(m) } func (*OnPremisesProvisioningError) ProtoMessage() {} func (*OnPremisesProvisioningError) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{22} + return fileDescriptor_e1e7723af4c007b7, []int{20} } func (m *OnPremisesProvisioningError) XXX_Unmarshal(b []byte) error { @@ -2282,6 +1666,7 @@ func init() { proto.RegisterType((*DeleteAccountRequest)(nil), "settings.DeleteAccountRequest") proto.RegisterType((*Account)(nil), "settings.Account") proto.RegisterType((*Identities)(nil), "settings.Identities") + proto.RegisterType((*PasswordProfile)(nil), "settings.PasswordProfile") proto.RegisterType((*ListGroupsRequest)(nil), "settings.ListGroupsRequest") proto.RegisterType((*ListGroupsResponse)(nil), "settings.ListGroupsResponse") proto.RegisterType((*GetGroupRequest)(nil), "settings.GetGroupRequest") @@ -2293,206 +1678,134 @@ func init() { proto.RegisterType((*ListMembersRequest)(nil), "settings.ListMembersRequest") proto.RegisterType((*ListMembersResponse)(nil), "settings.ListMembersResponse") proto.RegisterType((*Group)(nil), "settings.Group") - proto.RegisterType((*AssignedLabel)(nil), "settings.AssignedLabel") - proto.RegisterType((*AssignedLicense)(nil), "settings.AssignedLicense") - proto.RegisterType((*AssignedPlan)(nil), "settings.AssignedPlan") proto.RegisterType((*OnPremisesProvisioningError)(nil), "settings.OnPremisesProvisioningError") } func init() { proto.RegisterFile("accounts.proto", fileDescriptor_e1e7723af4c007b7) } var fileDescriptor_e1e7723af4c007b7 = []byte{ - // 3066 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4b, 0x6f, 0x1c, 0x47, - 0x92, 0x46, 0x53, 0x22, 0xd9, 0x1d, 0xcd, 0x67, 0xb2, 0x45, 0x16, 0x9b, 0x0f, 0xd1, 0xad, 0xb7, - 0x64, 0x93, 0xb2, 0x2c, 0xcb, 0xb6, 0xb4, 0x36, 0x2c, 0x52, 0x8f, 0x25, 0x56, 0x0f, 0xa2, 0x29, - 0xaf, 0x81, 0xdd, 0x85, 0x0b, 0xd9, 0x55, 0xd9, 0xdd, 0x29, 0x56, 0x55, 0x96, 0x2b, 0xab, 0x28, - 0xb5, 0x17, 0x06, 0x16, 0xfb, 0x07, 0xf6, 0xb0, 0xa7, 0xf9, 0x15, 0x83, 0x99, 0xdf, 0x30, 0xf7, - 0x39, 0xcc, 0x1f, 0x98, 0xc3, 0xdc, 0xe7, 0x2f, 0x0c, 0x32, 0x32, 0xb3, 0xba, 0xfa, 0x41, 0xb6, - 0x05, 0x0f, 0x06, 0x98, 0x13, 0x3b, 0x23, 0x22, 0x23, 0x32, 0x32, 0x22, 0xa3, 0xe2, 0xcb, 0x24, - 0x2c, 0x50, 0xcf, 0x13, 0x59, 0x94, 0xca, 0xdd, 0x38, 0x11, 0xa9, 0x20, 0x65, 0xc9, 0xd2, 0x94, - 0x47, 0x1d, 0x59, 0xbf, 0xdc, 0x11, 0xa2, 0x13, 0xb0, 0x3d, 0x1a, 0xf3, 0xbd, 0x36, 0x67, 0x81, - 0xef, 0xb6, 0x58, 0x97, 0x9e, 0x72, 0x91, 0x68, 0xd1, 0xfa, 0x66, 0x41, 0x80, 0x46, 0x91, 0x48, - 0x69, 0xca, 0x45, 0x64, 0x14, 0xd5, 0x37, 0x0c, 0x17, 0x47, 0xad, 0xac, 0xbd, 0xc7, 0xc2, 0x38, - 0xed, 0x19, 0xe6, 0xce, 0x30, 0x53, 0x1b, 0x08, 0xa9, 0x3c, 0x31, 0x12, 0x97, 0x87, 0x25, 0x52, - 0x1e, 0x32, 0x99, 0xd2, 0x30, 0xd6, 0x02, 0x8d, 0xdf, 0x95, 0x60, 0xe5, 0x05, 0x97, 0xe9, 0x63, - 0xb3, 0xfe, 0x26, 0xfb, 0x31, 0x63, 0x32, 0x25, 0x3b, 0x50, 0x89, 0x69, 0x87, 0xb9, 0x92, 0xff, - 0xc4, 0x9c, 0xd2, 0x4e, 0xe9, 0xe6, 0xf4, 0xfe, 0x85, 0x3f, 0x3f, 0x2e, 0x35, 0xcb, 0x8a, 0x7a, - 0xcc, 0x7f, 0x62, 0xa4, 0x01, 0x80, 0x12, 0xa9, 0x38, 0x61, 0x91, 0x33, 0xb5, 0x53, 0xba, 0x59, - 0xd1, 0x22, 0x38, 0xf1, 0x8d, 0xa2, 0x92, 0xaf, 0x00, 0xfa, 0x4b, 0x72, 0x2e, 0xec, 0x94, 0x6e, - 0x56, 0xef, 0xd5, 0x77, 0xf5, 0x9a, 0x76, 0xed, 0x9a, 0x76, 0x9f, 0x29, 0x91, 0x97, 0x54, 0x9e, - 0x34, 0x2b, 0x6d, 0xfb, 0x93, 0xac, 0xc3, 0xf4, 0x8f, 0x19, 0x4b, 0x7a, 0xce, 0xc5, 0xbe, 0x66, - 0x4d, 0x69, 0x84, 0x50, 0x1b, 0x5c, 0xb2, 0x8c, 0x45, 0x24, 0x19, 0xf9, 0x04, 0xca, 0x36, 0x0c, - 0x4e, 0x69, 0xe7, 0xc2, 0xcd, 0xea, 0xbd, 0xe5, 0x5d, 0x1b, 0x87, 0x5d, 0x23, 0xdd, 0xcc, 0x45, - 0xc8, 0x75, 0x58, 0x8c, 0xd8, 0xfb, 0xd4, 0x1d, 0xf6, 0xa2, 0x39, 0xaf, 0xc8, 0x47, 0xd6, 0x89, - 0xc6, 0x15, 0x58, 0x7e, 0xce, 0xac, 0x35, 0xbb, 0x3f, 0x0b, 0x30, 0xc5, 0x7d, 0xdc, 0x98, 0x4a, - 0x73, 0x8a, 0xfb, 0x8d, 0x63, 0xa8, 0x1d, 0x24, 0x8c, 0xa6, 0xec, 0x7c, 0x39, 0x72, 0x07, 0x66, - 0xcd, 0x02, 0xd0, 0xd8, 0xd8, 0x25, 0x5a, 0x89, 0xc6, 0xff, 0x94, 0xa0, 0xf6, 0x5d, 0xec, 0x8f, - 0x6a, 0x2d, 0x68, 0x29, 0x4d, 0xd2, 0x42, 0x1e, 0x41, 0x35, 0x43, 0x25, 0x3a, 0x0a, 0x53, 0x13, - 0xa3, 0x00, 0x5a, 0x5c, 0xfd, 0x6e, 0x5c, 0x87, 0xda, 0x13, 0x16, 0xb0, 0x49, 0x7e, 0x35, 0xfe, - 0xea, 0xc0, 0xac, 0x11, 0x21, 0xeb, 0x50, 0xa6, 0x2d, 0x91, 0xa5, 0x6e, 0xc8, 0x8c, 0xc4, 0x2c, - 0x8e, 0x5f, 0x32, 0x72, 0x03, 0x16, 0xcd, 0xb2, 0x5c, 0x16, 0xd1, 0x56, 0xc0, 0x7c, 0x5c, 0x4f, - 0xb9, 0x69, 0x0f, 0xd0, 0x53, 0x4d, 0x25, 0x1b, 0x50, 0x51, 0x61, 0xe9, 0x24, 0x22, 0x8b, 0x31, - 0x71, 0x2a, 0xcd, 0x32, 0xed, 0xb0, 0xe7, 0x6a, 0x4c, 0x9e, 0xc1, 0x32, 0x95, 0x92, 0x77, 0x22, - 0xe6, 0xbb, 0x01, 0xf7, 0x58, 0x24, 0x99, 0x74, 0x2e, 0x62, 0xc4, 0xd7, 0x0b, 0x1b, 0x61, 0x44, - 0x5e, 0x68, 0x89, 0xe6, 0x12, 0x1d, 0x24, 0x48, 0xf2, 0x35, 0x2c, 0xe4, 0x7a, 0xe2, 0x80, 0x46, - 0xd2, 0x99, 0x46, 0x25, 0xab, 0xa3, 0x4a, 0x8e, 0x02, 0x1a, 0x35, 0xe7, 0x69, 0x61, 0x24, 0xc9, - 0x03, 0x28, 0xb7, 0x78, 0x92, 0x76, 0x7d, 0xda, 0x73, 0x66, 0xce, 0xd8, 0xd5, 0x37, 0xf6, 0xbc, - 0x35, 0x73, 0x59, 0xb5, 0x09, 0xad, 0x4c, 0xf2, 0x88, 0x49, 0xe9, 0xc6, 0x5d, 0x11, 0x31, 0xe9, - 0xcc, 0xee, 0x5c, 0xb8, 0x59, 0x69, 0x2e, 0x58, 0xf2, 0x11, 0x52, 0x09, 0x81, 0x8b, 0x1e, 0x4f, - 0x7b, 0x4e, 0x19, 0xfd, 0xc7, 0xdf, 0xe4, 0x23, 0x98, 0xf3, 0x44, 0x18, 0xd3, 0xa8, 0xe7, 0x46, - 0x34, 0x64, 0x4e, 0x05, 0x79, 0x55, 0x43, 0x7b, 0x45, 0x43, 0x46, 0x1e, 0x41, 0xdd, 0x53, 0x07, - 0x22, 0x4a, 0xdd, 0x38, 0x11, 0xa7, 0xdc, 0x67, 0xbe, 0xdb, 0x16, 0x89, 0x1b, 0xf2, 0x48, 0x24, - 0x0e, 0xe0, 0x84, 0x35, 0x23, 0x71, 0x64, 0x04, 0x9e, 0x89, 0xe4, 0xa5, 0x62, 0x13, 0x07, 0x66, - 0x31, 0x10, 0x49, 0xcf, 0xa9, 0xea, 0xd8, 0x99, 0xa1, 0xda, 0x75, 0x0f, 0x53, 0xdc, 0x77, 0x31, - 0x9b, 0x54, 0x29, 0x71, 0xe6, 0x26, 0xfa, 0xbd, 0x68, 0x26, 0x3d, 0xa1, 0x29, 0x53, 0x54, 0x72, - 0x05, 0xe6, 0x91, 0xc4, 0x45, 0xe4, 0xa6, 0xbd, 0x98, 0x39, 0xf3, 0x68, 0x67, 0xce, 0x12, 0xdf, - 0xf4, 0x62, 0xa6, 0x8c, 0xf9, 0x98, 0x77, 0x45, 0x63, 0x0b, 0x93, 0x8d, 0x99, 0x49, 0xb9, 0xb1, - 0x6d, 0x00, 0x9f, 0xc5, 0x34, 0x49, 0x43, 0x16, 0xa5, 0xce, 0x22, 0x5a, 0x2a, 0x50, 0xd4, 0x76, - 0xfa, 0x5c, 0xc6, 0x01, 0x35, 0xdb, 0xb9, 0xa4, 0xb7, 0xd3, 0xd0, 0x70, 0x3b, 0x2f, 0x43, 0x95, - 0x85, 0x71, 0x20, 0x7a, 0x8c, 0xb9, 0xdc, 0x77, 0x96, 0xb5, 0x0e, 0x4b, 0x3a, 0xf4, 0xc9, 0x2e, - 0xac, 0xb0, 0xf7, 0x29, 0x4b, 0x22, 0x1a, 0xb8, 0x99, 0x64, 0x89, 0x2b, 0x53, 0x9a, 0x32, 0x87, - 0xa0, 0xe0, 0xb2, 0x65, 0x7d, 0x27, 0x59, 0x72, 0xac, 0x18, 0x84, 0xc3, 0xd5, 0x31, 0xf2, 0xae, - 0xd7, 0xa5, 0x51, 0x87, 0x15, 0xdc, 0x5d, 0x99, 0xe8, 0xee, 0xe5, 0x11, 0xe5, 0x07, 0xa8, 0x24, - 0x77, 0x7f, 0x0b, 0xa0, 0x4d, 0xdf, 0xbb, 0x51, 0x16, 0xb6, 0x58, 0xe2, 0xd4, 0x70, 0x45, 0x95, - 0x36, 0x7d, 0xff, 0x0a, 0x09, 0x8a, 0xdd, 0xe1, 0xa7, 0x2c, 0xd2, 0xbe, 0x5f, 0xd2, 0x6c, 0xa4, - 0xa0, 0xe7, 0x5f, 0x40, 0xa5, 0xcb, 0x13, 0xbd, 0x24, 0x67, 0x75, 0x72, 0x86, 0x2b, 0x61, 0x65, - 0xda, 0x54, 0x87, 0xb5, 0xbc, 0xea, 0xdd, 0x07, 0xe0, 0x3e, 0x8b, 0x52, 0x9e, 0x72, 0x26, 0x1d, - 0x07, 0x0f, 0x59, 0xad, 0x7f, 0xc8, 0x0e, 0x73, 0x5e, 0xb3, 0x20, 0xa7, 0x62, 0xc3, 0x43, 0x97, - 0xfa, 0x7e, 0xc2, 0xa4, 0x3a, 0xe1, 0xeb, 0x78, 0x48, 0xaa, 0x3c, 0x7c, 0x6c, 0x49, 0x64, 0x13, - 0x2a, 0x3c, 0x4a, 0x59, 0xc2, 0x64, 0x2a, 0x9d, 0x3a, 0xf2, 0xfb, 0x04, 0x15, 0x18, 0x2e, 0xdd, - 0x84, 0x49, 0x91, 0x25, 0x1e, 0x73, 0x6d, 0xc9, 0xdc, 0xc0, 0x8a, 0xb3, 0xcc, 0xd5, 0x97, 0x03, - 0x39, 0xb6, 0x70, 0x6d, 0x40, 0xe5, 0xad, 0x68, 0xb9, 0x29, 0x4f, 0x03, 0xe6, 0x6c, 0xea, 0xa2, - 0xf3, 0x56, 0xb4, 0xde, 0xa8, 0x31, 0xf9, 0x01, 0xb6, 0x03, 0x2a, 0xd5, 0xe7, 0x42, 0xca, 0x77, - 0x22, 0xf1, 0x47, 0xe3, 0xb5, 0x35, 0x71, 0x87, 0xea, 0x4a, 0xc3, 0x91, 0x51, 0x30, 0x14, 0xaa, - 0x03, 0xd8, 0x0e, 0x58, 0x87, 0x06, 0x6e, 0x5e, 0xf7, 0x5c, 0x2f, 0x50, 0x05, 0xa7, 0xcd, 0x3d, - 0x3c, 0x17, 0xce, 0x36, 0xae, 0x68, 0x03, 0xa5, 0x1e, 0x9b, 0x5a, 0x78, 0x30, 0x20, 0xa2, 0x2a, - 0x46, 0x48, 0x79, 0xe0, 0xec, 0xe8, 0x8a, 0xa1, 0x7e, 0xab, 0xf3, 0xa6, 0xfe, 0xba, 0x11, 0xf7, - 0x4e, 0x30, 0xce, 0x0d, 0x7d, 0xde, 0x14, 0xf1, 0x95, 0xa1, 0xa9, 0xbd, 0x0e, 0x45, 0x8b, 0x07, - 0x4c, 0x57, 0x24, 0xe7, 0x8a, 0x3e, 0x07, 0x9a, 0x86, 0xe5, 0x88, 0xac, 0xc1, 0x6c, 0xd8, 0x73, - 0x25, 0x4f, 0x99, 0x73, 0x15, 0xb9, 0x33, 0x61, 0xef, 0x98, 0xa7, 0x58, 0xd4, 0x45, 0xbb, 0xcd, - 0x3d, 0xe6, 0x06, 0xc2, 0x2c, 0xf5, 0x1a, 0x0a, 0x2c, 0x68, 0xf2, 0x0b, 0x43, 0x55, 0x2e, 0x8a, - 0xc8, 0x8d, 0x13, 0x16, 0x72, 0xc9, 0xa4, 0xeb, 0x73, 0xa9, 0xe2, 0x9f, 0x71, 0xd9, 0x65, 0xbe, - 0x4e, 0xc1, 0xeb, 0xda, 0x45, 0x11, 0x1d, 0x19, 0xa1, 0x27, 0x45, 0x19, 0x4c, 0xca, 0xcf, 0x61, - 0x6d, 0x40, 0x89, 0x08, 0x29, 0x37, 0x09, 0x7c, 0x03, 0x67, 0xd7, 0x0a, 0xb3, 0x91, 0x69, 0x72, - 0xd9, 0x29, 0x4e, 0xe3, 0x61, 0x98, 0xa5, 0xea, 0x53, 0xa3, 0x8e, 0xf4, 0x2d, 0x9c, 0x77, 0xa9, - 0x3f, 0xef, 0xd0, 0x72, 0x0f, 0x7d, 0xe2, 0xc2, 0xe5, 0xe2, 0x44, 0xcc, 0x01, 0xd9, 0x8b, 0xbc, - 0x42, 0xe0, 0x6f, 0x4f, 0x0e, 0x7c, 0x5f, 0xf7, 0x0b, 0x2a, 0xd3, 0xe3, 0x5e, 0xe4, 0xe5, 0x81, - 0x0f, 0x06, 0x0d, 0x60, 0xc9, 0x96, 0x5c, 0x44, 0x3c, 0xea, 0xb8, 0x2c, 0x49, 0x44, 0x22, 0x9d, - 0x3b, 0x78, 0x62, 0xae, 0xf5, 0x4f, 0xcc, 0xeb, 0x5c, 0xdd, 0x51, 0x41, 0xfc, 0xa9, 0x92, 0x6e, - 0x6e, 0x8a, 0xb3, 0x99, 0x92, 0x7c, 0x03, 0x9b, 0x45, 0x6b, 0x92, 0x86, 0xf6, 0x5c, 0xe8, 0x3d, - 0xfc, 0x18, 0xf7, 0xc2, 0xe9, 0xeb, 0x38, 0xa6, 0xa1, 0x39, 0x1f, 0xb8, 0x8f, 0x4f, 0x07, 0x57, - 0x2b, 0x99, 0x97, 0x25, 0x3c, 0xed, 0xb9, 0xfa, 0xdc, 0xb6, 0x39, 0x4b, 0x9c, 0x4f, 0x50, 0x45, - 0x61, 0x19, 0xc7, 0x46, 0xe8, 0x30, 0x97, 0x19, 0x0e, 0x07, 0x6e, 0xa8, 0xed, 0x08, 0x76, 0xf1, - 0x7c, 0x16, 0xc2, 0xa1, 0xb6, 0xcb, 0x36, 0x06, 0x4f, 0x06, 0xed, 0x63, 0xfd, 0x8c, 0x13, 0x1e, - 0x79, 0x3c, 0xa6, 0x81, 0x76, 0x61, 0x6f, 0x38, 0x89, 0x54, 0x75, 0x3c, 0xb2, 0x32, 0xb6, 0xa6, - 0x8b, 0xb4, 0xcb, 0x12, 0x57, 0x1d, 0x02, 0xe9, 0xdc, 0xc5, 0xca, 0x01, 0x48, 0x7a, 0xa9, 0x28, - 0xe4, 0x0e, 0x2c, 0xe7, 0x07, 0x3d, 0x16, 0x01, 0xf7, 0x54, 0xe1, 0xfa, 0x14, 0x15, 0x2f, 0x59, - 0xc6, 0x91, 0xa1, 0xab, 0x13, 0x16, 0x63, 0x69, 0x48, 0xc4, 0x5b, 0xe6, 0xa5, 0xd2, 0xf9, 0x0c, - 0xf5, 0xcd, 0x29, 0xe2, 0x91, 0xa1, 0x29, 0x93, 0xb1, 0x90, 0x29, 0x0d, 0x5c, 0x4f, 0xf8, 0xcc, - 0xb9, 0xaf, 0x3f, 0x23, 0x9a, 0x74, 0x20, 0x7c, 0x46, 0x1e, 0xc0, 0x5a, 0x9c, 0xb0, 0x36, 0x4b, - 0x12, 0xfd, 0xd1, 0xa3, 0xfd, 0xe3, 0xf4, 0xb9, 0x4e, 0xd0, 0x9c, 0xfd, 0x84, 0xa6, 0x34, 0x3f, - 0x55, 0x9f, 0x00, 0xe9, 0xcf, 0x0b, 0x68, 0xd4, 0xc9, 0x68, 0x87, 0x39, 0x0f, 0xf4, 0xd7, 0x27, - 0xe7, 0xbc, 0x30, 0x0c, 0x72, 0x0d, 0x16, 0xfa, 0xe2, 0xb8, 0x5f, 0x5f, 0xe8, 0xae, 0x37, 0xa7, - 0xe2, 0x0e, 0xdd, 0x80, 0xc5, 0x38, 0x11, 0xef, 0x7b, 0x85, 0xfa, 0xfb, 0x95, 0x6e, 0x52, 0x90, - 0xdc, 0x2f, 0xc1, 0x1d, 0xb8, 0x92, 0xb0, 0x76, 0xc2, 0x64, 0x57, 0x37, 0xd1, 0xd2, 0x3d, 0xa5, - 0x01, 0xf7, 0xdd, 0x76, 0x22, 0xc2, 0xc2, 0x19, 0x79, 0x38, 0xf1, 0x8c, 0x6c, 0x1b, 0x35, 0xd8, - 0x75, 0xcb, 0x7f, 0x57, 0x4a, 0x9e, 0x25, 0x22, 0xcc, 0xcf, 0xc9, 0x6d, 0x58, 0x4a, 0x74, 0xab, - 0xcf, 0x5b, 0x3c, 0xd0, 0x9f, 0x92, 0x47, 0xb8, 0xa4, 0x11, 0xba, 0xea, 0x62, 0xa4, 0xd7, 0x15, - 0x22, 0x90, 0xce, 0xbf, 0xa0, 0x88, 0x1d, 0x92, 0x3d, 0xa8, 0xc9, 0xae, 0x78, 0xe7, 0xf2, 0xc8, - 0x7a, 0xe6, 0x06, 0x5c, 0xa6, 0xce, 0xd7, 0xfa, 0xa3, 0xa0, 0x78, 0x87, 0x91, 0xf1, 0x4e, 0xa1, - 0x0c, 0xf2, 0x16, 0xae, 0xa9, 0xa6, 0x4f, 0x4d, 0x90, 0x4c, 0xaa, 0xc3, 0x74, 0x86, 0x87, 0xdf, - 0x4c, 0xfe, 0x5c, 0x2b, 0x45, 0x87, 0xd1, 0xb1, 0x51, 0x33, 0xea, 0xe2, 0x2a, 0xcc, 0xc8, 0x13, - 0x1e, 0x04, 0xd2, 0xf9, 0x16, 0x57, 0x6d, 0x46, 0xa4, 0x06, 0xd3, 0xba, 0xa7, 0x78, 0x8c, 0xa1, - 0xd2, 0x03, 0x15, 0x49, 0x99, 0x26, 0x8c, 0xa5, 0xd6, 0x13, 0x67, 0x5f, 0x47, 0x52, 0x53, 0x8d, - 0x13, 0xb8, 0x17, 0x59, 0x82, 0x91, 0x3e, 0xd0, 0x1d, 0x9d, 0x19, 0x2a, 0x05, 0x99, 0x54, 0x9f, - 0x9b, 0x3c, 0xd1, 0x9e, 0x68, 0x05, 0x48, 0xcd, 0x13, 0x6c, 0x17, 0x56, 0xc6, 0x1d, 0xb3, 0xa7, - 0x3a, 0xc3, 0xb2, 0x91, 0xc3, 0xb5, 0x01, 0x15, 0x94, 0xc7, 0xe6, 0xee, 0x99, 0xfe, 0x8c, 0x2a, - 0x02, 0x36, 0x76, 0x75, 0x28, 0xdb, 0xf3, 0xe3, 0x3c, 0xd7, 0x3c, 0x3b, 0x26, 0x77, 0xa0, 0x1c, - 0x32, 0xd5, 0x98, 0xbc, 0x6e, 0x3b, 0x3e, 0x96, 0xbc, 0xc5, 0x7e, 0xc9, 0xc3, 0xcf, 0x5d, 0x33, - 0x17, 0x68, 0xa4, 0x00, 0xfd, 0xbe, 0x81, 0xec, 0xc0, 0x9c, 0x8d, 0x12, 0x9a, 0xd5, 0xb8, 0x03, - 0xf4, 0x86, 0xa3, 0xe1, 0x55, 0x98, 0xe1, 0x52, 0x66, 0x2c, 0x31, 0x28, 0xcf, 0x8c, 0xc8, 0xc7, - 0x40, 0xf4, 0x2f, 0x37, 0xc7, 0x02, 0xdc, 0x37, 0x90, 0x63, 0x49, 0x73, 0x2c, 0x08, 0x38, 0xf4, - 0x1b, 0xbf, 0x2d, 0xc1, 0xb2, 0x4a, 0x0b, 0x5c, 0xcd, 0x3f, 0x05, 0x5a, 0x66, 0x40, 0x8a, 0x0b, - 0x36, 0x58, 0xf9, 0x06, 0xcc, 0x60, 0x8f, 0x61, 0x91, 0xf2, 0xc8, 0x46, 0x1b, 0xf6, 0x2f, 0x46, - 0xc9, 0x1f, 0xc1, 0xe2, 0x73, 0xa6, 0xad, 0x9c, 0x85, 0x11, 0xff, 0x0d, 0x88, 0xc6, 0xc8, 0xe7, - 0x49, 0x91, 0x6b, 0x30, 0xad, 0x51, 0x9f, 0x06, 0xaa, 0x23, 0x0b, 0xd3, 0xdc, 0xc6, 0x7b, 0x20, - 0x1a, 0x1a, 0x0f, 0x28, 0xcb, 0x27, 0x97, 0xce, 0x9b, 0xfc, 0xeb, 0x20, 0xf1, 0x55, 0x20, 0x1a, - 0x12, 0x9f, 0xeb, 0x6c, 0x03, 0x96, 0x1e, 0xfb, 0xfe, 0x4b, 0xcc, 0xd6, 0xb3, 0x64, 0xae, 0xc1, - 0x4a, 0x93, 0x85, 0xe2, 0x94, 0x9d, 0x2f, 0x96, 0xe9, 0x08, 0x6a, 0xa1, 0xbf, 0x73, 0xce, 0xe5, - 0x89, 0x73, 0x61, 0x24, 0x71, 0xde, 0xea, 0x9b, 0xa1, 0xdc, 0xac, 0xc9, 0x9c, 0x3b, 0x30, 0xab, - 0xcf, 0xe0, 0x39, 0x97, 0x2c, 0x56, 0xe2, 0x17, 0x67, 0xcf, 0x6f, 0x96, 0x61, 0x5a, 0x63, 0xfb, - 0xfb, 0xb0, 0x4a, 0x83, 0x40, 0xbc, 0x73, 0x73, 0x88, 0x24, 0x59, 0xe4, 0x6b, 0x6b, 0xaa, 0x42, - 0xd7, 0x90, 0xfb, 0xd4, 0x30, 0x8f, 0x35, 0x8f, 0x7c, 0x0b, 0x8b, 0xfd, 0x1b, 0x01, 0xda, 0x62, - 0x81, 0x74, 0xa6, 0x70, 0x71, 0x6b, 0x63, 0xee, 0x03, 0x14, 0xbf, 0x99, 0x23, 0x7f, 0x1c, 0xca, - 0xf1, 0x77, 0x0a, 0x17, 0x3e, 0xfc, 0x4e, 0xe1, 0x11, 0xd4, 0x69, 0x96, 0x0a, 0x57, 0x66, 0x2d, - 0xe9, 0x25, 0xbc, 0xc5, 0xdc, 0x88, 0xbd, 0x73, 0xed, 0x8e, 0x5d, 0x44, 0x1f, 0xd6, 0x94, 0xc4, - 0xb1, 0x15, 0x78, 0xc5, 0xde, 0xbd, 0xcc, 0xb7, 0x6b, 0x61, 0xa8, 0xe7, 0x9f, 0xd6, 0x8d, 0xf4, - 0x20, 0x95, 0xdc, 0xea, 0x43, 0xf1, 0x56, 0xcf, 0xa5, 0x71, 0xac, 0x4a, 0xd6, 0x8c, 0x11, 0xd5, - 0x8c, 0xfd, 0xde, 0xe3, 0x38, 0x3e, 0xf4, 0xc7, 0xa3, 0xf6, 0xd9, 0x0f, 0x47, 0xed, 0x63, 0x01, - 0x79, 0xf9, 0xc3, 0x01, 0xf9, 0x0e, 0x54, 0x7d, 0xa6, 0x1c, 0x8f, 0xd1, 0x3f, 0x73, 0x7d, 0x51, - 0x20, 0x8d, 0x40, 0x72, 0x18, 0x85, 0xe4, 0x2f, 0xa0, 0xc6, 0xde, 0xc7, 0x3c, 0xd1, 0x97, 0x08, - 0xfd, 0xf5, 0x54, 0x27, 0xae, 0x87, 0xf4, 0xe7, 0xe5, 0x4b, 0xba, 0x0c, 0x55, 0x8d, 0xb7, 0xd4, - 0x97, 0x43, 0x3a, 0x73, 0xba, 0x19, 0x44, 0x92, 0xfa, 0x72, 0x48, 0xd5, 0x73, 0x76, 0xa9, 0xb4, - 0x41, 0x74, 0xdf, 0xf1, 0xb4, 0x6b, 0x73, 0xc4, 0x76, 0xe8, 0xf3, 0x18, 0xd8, 0x8d, 0x2e, 0x95, - 0x26, 0x96, 0xdf, 0xf3, 0xb4, 0x6b, 0x92, 0xc2, 0x74, 0xde, 0x9f, 0xc3, 0x5a, 0x97, 0xfb, 0x4c, - 0xb7, 0x0d, 0xc5, 0xde, 0x43, 0xe2, 0xc5, 0x46, 0xb9, 0x59, 0x53, 0x6c, 0xd5, 0x0f, 0x14, 0xda, - 0x0f, 0x49, 0xbe, 0x82, 0xf5, 0xfe, 0x34, 0x91, 0xa5, 0x81, 0x10, 0x27, 0xae, 0x17, 0x70, 0x16, - 0xa5, 0x12, 0x2f, 0x34, 0xca, 0xcd, 0x55, 0x3b, 0xf1, 0xb5, 0x66, 0x1f, 0x68, 0xae, 0x29, 0x24, - 0x4b, 0x79, 0x69, 0xfd, 0x14, 0x2e, 0x71, 0xd9, 0xcf, 0x4c, 0x4c, 0x1e, 0x84, 0x8b, 0xcb, 0xa8, - 0x86, 0x70, 0x99, 0x27, 0xa5, 0xbf, 0xdf, 0x53, 0x8d, 0x30, 0xf9, 0x12, 0x1c, 0xeb, 0x69, 0x9c, - 0x08, 0x4f, 0x75, 0x2e, 0x51, 0x67, 0xe0, 0x82, 0x63, 0xd5, 0xf0, 0x8f, 0x72, 0xb6, 0xbe, 0xe5, - 0xb0, 0x50, 0x74, 0xa5, 0x00, 0x45, 0x15, 0xca, 0x54, 0x50, 0xd4, 0x76, 0xfa, 0x35, 0xb4, 0x5b, - 0x55, 0x34, 0xdb, 0xdf, 0x8f, 0xa0, 0xd5, 0x4b, 0x63, 0xd0, 0xea, 0x0d, 0x58, 0x34, 0xc1, 0xe8, - 0xf2, 0xd8, 0x4d, 0xb2, 0x40, 0x5f, 0x4f, 0x54, 0x9a, 0x0b, 0x7d, 0x72, 0x33, 0x0b, 0x18, 0x79, - 0x0e, 0x3b, 0x43, 0x82, 0xa3, 0x6e, 0xe8, 0x6b, 0x8a, 0xad, 0xc1, 0x99, 0xc3, 0xde, 0x9c, 0x83, - 0x3a, 0x9d, 0x73, 0x50, 0xe7, 0xc1, 0x64, 0xf0, 0xb8, 0x8e, 0xd3, 0xcf, 0x03, 0x88, 0x5f, 0xc2, - 0x7a, 0x51, 0x49, 0xc4, 0x52, 0xb7, 0xc5, 0x85, 0xd4, 0xd6, 0xeb, 0xc3, 0xd8, 0xf5, 0x15, 0x4b, - 0xf7, 0xb9, 0x90, 0x68, 0xfe, 0x17, 0x40, 0xcb, 0x8d, 0x7f, 0x1c, 0xb4, 0xdc, 0xfc, 0xf5, 0xd0, - 0x72, 0xeb, 0x57, 0x42, 0xcb, 0xed, 0xf3, 0xa0, 0xe5, 0x39, 0x00, 0xec, 0xf2, 0x87, 0x03, 0xb0, - 0x9d, 0xb3, 0x00, 0xd8, 0x18, 0x64, 0xf5, 0xd1, 0x58, 0x64, 0xf5, 0x0c, 0x96, 0x13, 0x16, 0xb1, - 0x77, 0x03, 0x25, 0xb7, 0x31, 0xb9, 0xe4, 0x9a, 0x49, 0x79, 0xfe, 0x3c, 0x84, 0xf5, 0xfc, 0x0e, - 0xcc, 0x3e, 0x3e, 0xb9, 0x02, 0x8b, 0xad, 0x74, 0xae, 0xa0, 0xe9, 0x35, 0x2b, 0xb0, 0x6f, 0xf8, - 0xaf, 0x35, 0x9b, 0xec, 0xc3, 0x56, 0x3e, 0x77, 0x20, 0x7d, 0xec, 0xfc, 0xab, 0x38, 0x7f, 0xc3, - 0x0a, 0x15, 0xd3, 0xc2, 0xea, 0xb8, 0x05, 0x4b, 0x79, 0x2c, 0x6d, 0x20, 0xae, 0x61, 0x20, 0x16, - 0x2d, 0xdd, 0x86, 0x60, 0x0f, 0x56, 0xc6, 0x85, 0x5d, 0x5f, 0x0b, 0x11, 0x39, 0x1a, 0xec, 0x1a, - 0x4c, 0xa7, 0x5d, 0x96, 0xdf, 0xfd, 0xe8, 0x01, 0xd9, 0x06, 0x50, 0xab, 0x40, 0x38, 0xd8, 0x73, - 0xee, 0x68, 0x2c, 0xd0, 0xa7, 0x14, 0x7b, 0x18, 0x7f, 0x52, 0x0f, 0xd3, 0x78, 0x09, 0xf3, 0x03, - 0xad, 0x03, 0x59, 0x87, 0x32, 0xf6, 0x18, 0x6e, 0xde, 0xa5, 0xcd, 0xe2, 0xf8, 0xd0, 0x1f, 0xf9, - 0x76, 0x4d, 0x8d, 0x7c, 0xbb, 0x1a, 0xaf, 0x61, 0x71, 0xa8, 0x8b, 0x20, 0x97, 0x14, 0xec, 0xcb, - 0xfa, 0xea, 0xa6, 0xe5, 0x49, 0x76, 0xa8, 0x3a, 0xe1, 0x05, 0x9f, 0x4b, 0xdc, 0x18, 0xf3, 0x3c, - 0x31, 0x85, 0x9b, 0x3d, 0x6f, 0xa9, 0xf8, 0x0c, 0xd1, 0xf8, 0x43, 0x09, 0xe6, 0x8a, 0xcf, 0x14, - 0xe4, 0x5f, 0x81, 0xe4, 0xad, 0x4c, 0x3f, 0x71, 0x4a, 0x13, 0x13, 0x27, 0x6f, 0x66, 0x8a, 0x90, - 0xdb, 0xa3, 0x31, 0xd5, 0xbb, 0xa6, 0x0a, 0x61, 0x26, 0x8d, 0x4b, 0x23, 0x74, 0x84, 0x99, 0x2c, - 0x39, 0xe5, 0x1e, 0x33, 0xe0, 0xc9, 0x0e, 0xc9, 0x55, 0x98, 0x37, 0x3f, 0xd5, 0xf2, 0x0e, 0x7d, - 0x0d, 0x52, 0x9a, 0x83, 0xc4, 0xc6, 0x1f, 0x4b, 0xb0, 0x71, 0x4e, 0xed, 0x51, 0xc0, 0xd1, 0xa3, - 0x29, 0xeb, 0x88, 0xa4, 0x67, 0xb6, 0x29, 0x1f, 0x2b, 0x8f, 0x85, 0xe7, 0x65, 0xf6, 0xe0, 0x1a, - 0x8f, 0xa7, 0x26, 0x7b, 0x6c, 0x67, 0xe5, 0x1e, 0xdf, 0x87, 0xd5, 0x38, 0x11, 0x31, 0x4b, 0xd2, - 0x9e, 0xeb, 0xd1, 0x4c, 0xe6, 0x95, 0xd2, 0x38, 0x55, 0xb3, 0xdc, 0x03, 0xcd, 0xd4, 0x6b, 0xab, - 0xc1, 0xf4, 0x29, 0x0d, 0x32, 0x66, 0x3c, 0xd3, 0x83, 0x7b, 0xff, 0x77, 0x11, 0x16, 0xed, 0x23, - 0xe5, 0xb1, 0xd9, 0x0b, 0x0f, 0xe6, 0x8a, 0x6f, 0x97, 0x64, 0xab, 0x9f, 0x78, 0x63, 0x9e, 0x61, - 0xeb, 0xdb, 0x67, 0xb1, 0x75, 0x33, 0xde, 0xa8, 0xfd, 0xef, 0x9f, 0xfe, 0xf2, 0xff, 0x53, 0x0b, - 0x64, 0x6e, 0xef, 0xf4, 0xee, 0x5e, 0xfe, 0xb2, 0xf9, 0x5f, 0x00, 0xfd, 0x17, 0x4b, 0xb2, 0x51, - 0x00, 0x41, 0xc3, 0xef, 0x98, 0xf5, 0xd1, 0xc4, 0x6f, 0x6c, 0xa3, 0x4e, 0x87, 0xac, 0x14, 0x75, - 0xee, 0xfd, 0x37, 0xf7, 0xbf, 0xbe, 0xfd, 0xf3, 0xc3, 0xd2, 0x6d, 0x42, 0x61, 0x7e, 0xe0, 0xa9, - 0x93, 0x14, 0x16, 0x39, 0xee, 0x0d, 0x74, 0x9c, 0x8d, 0x2d, 0xb4, 0xb1, 0xd6, 0x18, 0x58, 0xf7, - 0xc3, 0xfc, 0xc9, 0x32, 0x86, 0xf9, 0x81, 0x77, 0xcf, 0xa2, 0x89, 0x71, 0x0f, 0xa2, 0xe3, 0x4c, - 0x7c, 0x8c, 0x26, 0xae, 0xdf, 0xdb, 0x18, 0x74, 0xc3, 0xfc, 0xda, 0xd5, 0xee, 0xe4, 0x16, 0x7d, - 0x98, 0x1f, 0x78, 0xe7, 0x2c, 0x5a, 0x1c, 0xf7, 0x00, 0x5a, 0x5f, 0x1d, 0x49, 0xab, 0xa7, 0x61, - 0x9c, 0xf6, 0x1a, 0x1b, 0x68, 0xf6, 0xd2, 0xed, 0x71, 0xbb, 0x77, 0xef, 0xf7, 0x33, 0x30, 0xaf, - 0x81, 0xb8, 0xcd, 0x87, 0xff, 0x04, 0xe8, 0xa3, 0xf3, 0x62, 0xa8, 0x46, 0x2e, 0x19, 0xea, 0x9b, - 0xe3, 0x99, 0x26, 0x13, 0x08, 0xda, 0x9d, 0x23, 0xa0, 0xec, 0x1a, 0xec, 0xfe, 0x06, 0xca, 0x16, - 0x93, 0x93, 0xf5, 0x81, 0x2c, 0x28, 0x42, 0xd7, 0xfa, 0x30, 0x4a, 0x6e, 0x6c, 0xa2, 0xae, 0x55, - 0xb2, 0xdc, 0xd7, 0x55, 0x88, 0xff, 0xf7, 0x50, 0x2d, 0xc0, 0x78, 0xb2, 0x39, 0x1c, 0xfd, 0xf3, - 0x75, 0xaf, 0xa3, 0xee, 0x95, 0x46, 0x61, 0x9d, 0x0f, 0x0d, 0x2a, 0xf7, 0xa1, 0x5a, 0x80, 0xf4, - 0x45, 0xc5, 0xa3, 0x48, 0x7f, 0x54, 0xf1, 0x75, 0x54, 0xbc, 0x73, 0x6f, 0xad, 0xb8, 0x68, 0xfc, - 0x6b, 0x62, 0x6d, 0xac, 0xfc, 0x00, 0xd5, 0x02, 0x7c, 0x2f, 0x5a, 0x19, 0x45, 0xf5, 0x67, 0x46, - 0xd9, 0x78, 0x71, 0x7b, 0x74, 0x87, 0x88, 0x07, 0x95, 0x1c, 0xf8, 0x93, 0x7a, 0x21, 0x2f, 0x87, - 0x6e, 0x03, 0x46, 0x3d, 0xb8, 0x85, 0x4a, 0xaf, 0x34, 0xb6, 0x47, 0x94, 0xee, 0x99, 0x6f, 0xd1, - 0xde, 0xd5, 0x84, 0xb5, 0x55, 0x0c, 0x4e, 0x61, 0xae, 0x78, 0x73, 0x50, 0x2c, 0x23, 0x63, 0x6e, - 0x14, 0x46, 0x4d, 0x3d, 0x40, 0x53, 0x77, 0x6f, 0xdf, 0x39, 0xdb, 0x54, 0xe1, 0xa4, 0xfc, 0x9c, - 0xdb, 0x4d, 0xa0, 0x5a, 0xb8, 0x13, 0x20, 0x43, 0x29, 0x39, 0x78, 0x43, 0x51, 0xdf, 0x3a, 0x83, - 0x6b, 0x32, 0xd6, 0x04, 0x8c, 0x4c, 0x70, 0x77, 0xbf, 0xf6, 0x1f, 0x24, 0x3e, 0xe9, 0xe8, 0x7f, - 0x61, 0xd9, 0x3b, 0xbd, 0xfb, 0x48, 0x87, 0x62, 0x06, 0xff, 0x7c, 0xf6, 0xb7, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xc7, 0x2d, 0x03, 0x5c, 0x7a, 0x23, 0x00, 0x00, + // 1955 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xeb, 0x6e, 0xdc, 0xc6, + 0x15, 0xc6, 0x4a, 0x96, 0xb4, 0x3a, 0x2b, 0x59, 0xd2, 0x68, 0x2d, 0x51, 0xab, 0x8b, 0x37, 0xf4, + 0x25, 0xb2, 0x94, 0x4a, 0x86, 0x9a, 0xf4, 0xe2, 0x34, 0x05, 0x64, 0xc9, 0x76, 0x85, 0xda, 0x8e, + 0xb0, 0x72, 0x1a, 0xf4, 0x82, 0x10, 0x14, 0x39, 0xbb, 0x9a, 0x78, 0x79, 0xc9, 0xcc, 0x70, 0xad, + 0x4d, 0x11, 0xa0, 0xe8, 0x0b, 0xf4, 0x47, 0x1f, 0xa4, 0x97, 0x17, 0xe9, 0x8f, 0xbe, 0x40, 0x7e, + 0xf4, 0x57, 0xdf, 0xa1, 0x40, 0x31, 0x17, 0x92, 0xc3, 0xe5, 0x5e, 0x52, 0x24, 0x40, 0x61, 0x20, + 0xbf, 0xb4, 0x9c, 0x73, 0xe6, 0xfb, 0xce, 0x9c, 0x73, 0x38, 0xf3, 0x71, 0x04, 0x37, 0x5d, 0xcf, + 0x8b, 0x92, 0x90, 0xb3, 0x83, 0x98, 0x46, 0x3c, 0x42, 0x55, 0x86, 0x39, 0x27, 0x61, 0x87, 0x35, + 0x6e, 0x77, 0xa2, 0xa8, 0xd3, 0xc5, 0x87, 0x6e, 0x4c, 0x0e, 0xdb, 0x04, 0x77, 0x7d, 0xe7, 0x12, + 0x5f, 0xb9, 0x3d, 0x12, 0x51, 0xe5, 0xda, 0xd8, 0x32, 0x1c, 0xdc, 0x30, 0x8c, 0xb8, 0xcb, 0x49, + 0x14, 0x6a, 0xa0, 0xc6, 0xa6, 0xb6, 0xca, 0xa7, 0xcb, 0xa4, 0x7d, 0x88, 0x83, 0x98, 0xf7, 0xb5, + 0xb1, 0x39, 0x68, 0x54, 0x04, 0x81, 0xcb, 0x5e, 0x6b, 0x8f, 0xdb, 0x83, 0x1e, 0x9c, 0x04, 0x98, + 0x71, 0x37, 0x88, 0x95, 0x83, 0xfd, 0xb7, 0x0a, 0xac, 0x3e, 0x27, 0x8c, 0x1f, 0xeb, 0xf8, 0x5b, + 0xf8, 0x8b, 0x04, 0x33, 0x8e, 0x9a, 0x30, 0x1f, 0xbb, 0x1d, 0xec, 0x30, 0xf2, 0x25, 0xb6, 0x2a, + 0xcd, 0xca, 0xee, 0xcc, 0xe3, 0xe9, 0xaf, 0x8f, 0x2b, 0xad, 0xaa, 0x18, 0xbd, 0x20, 0x5f, 0x62, + 0x64, 0x03, 0x48, 0x0f, 0x1e, 0xbd, 0xc6, 0xa1, 0x35, 0xd5, 0xac, 0xec, 0xce, 0x2b, 0x17, 0x39, + 0xf1, 0x95, 0x18, 0x45, 0x3f, 0x05, 0xc8, 0x43, 0xb2, 0xa6, 0x9b, 0x95, 0xdd, 0xda, 0x51, 0xe3, + 0x40, 0xc5, 0x74, 0x90, 0xc6, 0x74, 0xf0, 0x54, 0xb8, 0xbc, 0x70, 0xd9, 0xeb, 0xd6, 0x7c, 0x3b, + 0xfd, 0x89, 0x36, 0x60, 0xe6, 0x8b, 0x04, 0xd3, 0xbe, 0x75, 0x23, 0x47, 0x56, 0x23, 0x76, 0x00, + 0xf5, 0x62, 0xc8, 0x2c, 0x8e, 0x42, 0x86, 0xd1, 0x0f, 0xa0, 0x9a, 0x96, 0xc1, 0xaa, 0x34, 0xa7, + 0x77, 0x6b, 0x47, 0x2b, 0x07, 0x69, 0x1d, 0x0e, 0xb4, 0x77, 0x2b, 0x73, 0x41, 0xf7, 0x61, 0x29, + 0xc4, 0xd7, 0xdc, 0x19, 0x5c, 0x45, 0x6b, 0x51, 0x0c, 0x9f, 0xa7, 0x8b, 0xb0, 0xef, 0xc0, 0xca, + 0x33, 0x9c, 0xb2, 0xa5, 0xf9, 0xb9, 0x09, 0x53, 0xc4, 0x97, 0x89, 0x99, 0x6f, 0x4d, 0x11, 0xdf, + 0xbe, 0x80, 0xfa, 0x09, 0xc5, 0x2e, 0xc7, 0xe3, 0xfd, 0xd0, 0x3e, 0xcc, 0xe9, 0x00, 0x24, 0xd9, + 0xd0, 0x10, 0x53, 0x0f, 0xfb, 0x0f, 0x15, 0xa8, 0x7f, 0x12, 0xfb, 0x65, 0x54, 0x03, 0xa5, 0x32, + 0x09, 0x05, 0x7d, 0x08, 0xb5, 0x44, 0x82, 0xa8, 0x2a, 0x4c, 0x4d, 0xac, 0x02, 0x28, 0x77, 0xf1, + 0xdb, 0xbe, 0x0f, 0xf5, 0x53, 0xdc, 0xc5, 0x93, 0xd6, 0x65, 0xff, 0x67, 0x01, 0xe6, 0xb4, 0x4b, + 0x69, 0xcd, 0xef, 0xc2, 0x92, 0x8e, 0xc5, 0xc1, 0xa1, 0x7b, 0xd9, 0xc5, 0xbe, 0x0c, 0xa2, 0xda, + 0x4a, 0xdf, 0x9a, 0x27, 0x6a, 0x14, 0x1d, 0xc0, 0x2a, 0x61, 0x0e, 0xc5, 0x2c, 0x4a, 0xa8, 0x87, + 0x9d, 0x74, 0x89, 0xd3, 0xd2, 0x79, 0x85, 0x88, 0x4a, 0x4b, 0x4b, 0x4a, 0x74, 0x07, 0x16, 0x3d, + 0x91, 0x74, 0x12, 0x85, 0x0e, 0xef, 0xc7, 0x58, 0xf5, 0x4a, 0x6b, 0x21, 0x1d, 0x7c, 0xd5, 0x8f, + 0x31, 0x7a, 0x1f, 0x80, 0xf8, 0x38, 0xe4, 0x84, 0x13, 0xcc, 0xac, 0x19, 0xd9, 0x17, 0xf5, 0x3c, + 0x5d, 0x67, 0x99, 0xad, 0x65, 0xf8, 0xa1, 0x77, 0x60, 0xc1, 0x27, 0x2c, 0xee, 0xba, 0x7d, 0x27, + 0x74, 0x03, 0x6c, 0xcd, 0x4a, 0xe4, 0x9a, 0x1e, 0x7b, 0xe9, 0x06, 0x18, 0x35, 0xa0, 0x9a, 0x30, + 0x4c, 0xa5, 0x79, 0x4e, 0x9a, 0xb3, 0x67, 0xb4, 0x0d, 0x90, 0x10, 0xdf, 0x09, 0x93, 0xe0, 0x12, + 0x53, 0xab, 0xda, 0xac, 0xec, 0x4e, 0xb7, 0xe6, 0x13, 0xe2, 0xbf, 0x94, 0x03, 0xc2, 0xdc, 0xc9, + 0xcd, 0xf3, 0xca, 0xdc, 0xc9, 0xcc, 0x08, 0x6e, 0x04, 0x2e, 0xe9, 0x5a, 0x20, 0x51, 0xe5, 0x6f, + 0xd4, 0x84, 0x9a, 0x8f, 0x99, 0x47, 0x49, 0x2c, 0x56, 0x66, 0xd5, 0x74, 0x3c, 0xf9, 0x10, 0x3a, + 0x85, 0xe5, 0xd8, 0x65, 0xec, 0x4d, 0x44, 0x7d, 0x27, 0xa6, 0x51, 0x9b, 0x74, 0xb1, 0xb5, 0x20, + 0x8b, 0xbd, 0x91, 0x2f, 0xf7, 0x5c, 0x7b, 0x9c, 0x2b, 0x87, 0xd6, 0x52, 0x5c, 0x1c, 0x40, 0xfb, + 0x50, 0x0d, 0xb0, 0x88, 0xe2, 0xe3, 0xb6, 0xb5, 0x28, 0x93, 0xb5, 0x94, 0xcf, 0x7e, 0x46, 0xa3, + 0x24, 0x6e, 0x65, 0x0e, 0xe8, 0x29, 0xac, 0xc8, 0x5c, 0x63, 0xdf, 0x91, 0x0d, 0x26, 0x76, 0x17, + 0x6b, 0x79, 0x44, 0x83, 0xbd, 0x4a, 0xb7, 0x9e, 0xd6, 0x92, 0x9e, 0x74, 0xea, 0x72, 0x2c, 0x46, + 0x05, 0x8e, 0x2f, 0xbb, 0xcc, 0xc4, 0x59, 0x99, 0x8c, 0xa3, 0x27, 0x65, 0x38, 0x3f, 0x06, 0x2b, + 0x0a, 0x9d, 0x98, 0xe2, 0x80, 0x30, 0xcc, 0x1c, 0xd6, 0x0f, 0xbd, 0xac, 0xe5, 0xea, 0xb2, 0x8b, + 0x6e, 0x45, 0xe1, 0xb9, 0x36, 0x5f, 0xf4, 0x43, 0x2f, 0xed, 0xbc, 0x81, 0x89, 0x24, 0x08, 0x12, + 0x2e, 0x2c, 0x0e, 0xf1, 0xad, 0x5b, 0x32, 0xd5, 0xc6, 0xc4, 0xb3, 0xd4, 0x7a, 0xe6, 0xa3, 0x27, + 0x70, 0xbb, 0xc0, 0x88, 0xbd, 0x84, 0x12, 0xde, 0x77, 0x54, 0x2b, 0xb5, 0x09, 0xa6, 0xd6, 0x9a, + 0x9c, 0xbf, 0x65, 0x10, 0x6b, 0xa7, 0xb3, 0xcc, 0x07, 0x9d, 0xc0, 0x8e, 0x09, 0xe3, 0x13, 0x26, + 0x12, 0x9e, 0x10, 0x76, 0x85, 0x7d, 0xd5, 0x80, 0xeb, 0x12, 0x65, 0x33, 0x47, 0x39, 0x35, 0x7d, + 0x64, 0x43, 0xfe, 0x1c, 0xb6, 0x0a, 0xb1, 0xb8, 0x41, 0xfa, 0x0a, 0x29, 0x08, 0x4b, 0x42, 0x58, + 0x46, 0x20, 0x6e, 0xa0, 0x5f, 0x25, 0x39, 0xff, 0x03, 0x58, 0x2f, 0x04, 0x11, 0x05, 0x2e, 0x09, + 0xd5, 0xd4, 0x0d, 0x39, 0xb5, 0x6e, 0xb0, 0x4b, 0xa3, 0x9c, 0x76, 0x5a, 0x4c, 0x81, 0x78, 0x07, + 0x9c, 0x98, 0x92, 0xd0, 0x23, 0xb1, 0xdb, 0x55, 0xd3, 0x1b, 0x83, 0xc1, 0x7f, 0xc2, 0x30, 0x3d, + 0x4f, 0x7d, 0x24, 0x8a, 0x53, 0x44, 0xe9, 0xba, 0x8c, 0xab, 0xfa, 0xe5, 0x0d, 0xb1, 0x35, 0xb1, + 0x21, 0x1a, 0x39, 0xc3, 0x73, 0x97, 0x71, 0x51, 0xe1, 0xac, 0x37, 0xba, 0x45, 0x82, 0x98, 0x46, + 0x3d, 0xc2, 0x48, 0x14, 0x92, 0xb0, 0xe3, 0x60, 0x4a, 0x23, 0xca, 0xac, 0x6d, 0xd9, 0xef, 0xf7, + 0xf2, 0x7e, 0xff, 0x38, 0x83, 0x3b, 0x37, 0xdc, 0x9f, 0x08, 0x6f, 0xb3, 0xa0, 0x25, 0x23, 0x13, + 0x5b, 0x19, 0xbe, 0xe6, 0x62, 0x37, 0xe8, 0xaa, 0x8c, 0x30, 0xee, 0x72, 0x6c, 0xed, 0xca, 0x44, + 0xac, 0xa4, 0x26, 0x91, 0x86, 0x0b, 0x61, 0x40, 0x04, 0xee, 0x0e, 0xf1, 0x77, 0xbc, 0x2b, 0x37, + 0xec, 0x60, 0x23, 0x07, 0x0f, 0x26, 0xe6, 0xe0, 0x76, 0x09, 0xfc, 0x44, 0x82, 0x64, 0x89, 0xe8, + 0xc0, 0x1d, 0x8a, 0xdb, 0x14, 0xb3, 0x2b, 0x75, 0xea, 0x31, 0xa7, 0xe7, 0x76, 0x89, 0xef, 0xb4, + 0x69, 0x14, 0x18, 0x4c, 0x3f, 0x9b, 0xc8, 0xb4, 0xa3, 0x61, 0xe4, 0x31, 0xc9, 0x7e, 0x25, 0x40, + 0x9e, 0xd2, 0x28, 0xc8, 0x88, 0x3e, 0x87, 0x7b, 0x8c, 0x74, 0x42, 0x87, 0x84, 0x0e, 0xc3, 0x4c, + 0xe4, 0x67, 0x04, 0xd5, 0x47, 0x93, 0x17, 0x25, 0x80, 0xce, 0xc2, 0x0b, 0x0d, 0x53, 0xe2, 0xb2, + 0x39, 0x40, 0xbe, 0x93, 0xa3, 0x26, 0x2c, 0xa4, 0xcc, 0xf2, 0x5c, 0x50, 0x67, 0x11, 0x28, 0x10, + 0x79, 0x2a, 0xac, 0xc1, 0x2c, 0x61, 0x2c, 0xc1, 0x54, 0x9f, 0xf9, 0xfa, 0x09, 0xbd, 0x07, 0x48, + 0xfd, 0x72, 0x5c, 0x26, 0xdc, 0xb1, 0x2f, 0xb6, 0x80, 0x69, 0xe9, 0xb3, 0xac, 0x2c, 0xc7, 0xda, + 0x70, 0xe6, 0xdb, 0x5f, 0x4f, 0xc1, 0xd2, 0xc0, 0x8e, 0x2a, 0x8e, 0x85, 0x74, 0x4f, 0xd5, 0xbc, + 0xd9, 0x33, 0xfa, 0x0c, 0x76, 0x64, 0x63, 0x67, 0xfb, 0x74, 0xa9, 0xbe, 0x53, 0x93, 0x7b, 0x5c, + 0x20, 0xa4, 0xa4, 0x03, 0xa5, 0xdd, 0x87, 0x95, 0xfc, 0x08, 0x88, 0xba, 0xc4, 0x13, 0x47, 0xde, + 0x74, 0x73, 0x5a, 0x04, 0x9f, 0x6d, 0xf4, 0x7a, 0x1c, 0x9d, 0x81, 0xdd, 0x8e, 0xc4, 0x39, 0xab, + 0x83, 0xc8, 0x66, 0x4a, 0x55, 0xa4, 0xf3, 0x27, 0x8f, 0xd4, 0x6a, 0x6b, 0x5b, 0x7a, 0x2a, 0xb6, + 0x94, 0xfb, 0x25, 0xbe, 0xe6, 0x17, 0x32, 0xa3, 0xe8, 0xd7, 0xb0, 0x3f, 0x19, 0xca, 0x79, 0x43, + 0xf8, 0x95, 0x13, 0xb4, 0x5d, 0x6b, 0x46, 0x62, 0xde, 0x1d, 0x8b, 0xf9, 0x29, 0xe1, 0x57, 0x2f, + 0xda, 0xae, 0xfd, 0x97, 0x0a, 0xac, 0x08, 0xb5, 0x27, 0x8f, 0x9e, 0xb7, 0x42, 0x9e, 0x62, 0x40, + 0x66, 0xc0, 0x5a, 0x9c, 0xbe, 0x0b, 0xb3, 0x1d, 0x39, 0xa2, 0xa5, 0x69, 0xe9, 0x54, 0xd5, 0xe6, + 0x6f, 0x2c, 0x4b, 0xdf, 0x81, 0xa5, 0x67, 0x58, 0xb1, 0x8c, 0x12, 0x65, 0xbf, 0x04, 0xa4, 0x44, + 0xe9, 0x38, 0x2f, 0x74, 0x0f, 0x66, 0x24, 0xb5, 0xee, 0xbd, 0x52, 0x60, 0xca, 0x6a, 0x5f, 0x03, + 0x52, 0x5a, 0xb4, 0x00, 0x96, 0x4d, 0xae, 0x8c, 0x9b, 0xfc, 0xed, 0x34, 0xe8, 0x5d, 0x40, 0x4a, + 0x83, 0x8e, 0x5d, 0xac, 0x0d, 0xcb, 0xc7, 0xbe, 0xff, 0x42, 0x4a, 0x93, 0x51, 0x3e, 0xf7, 0x60, + 0xb5, 0x85, 0x83, 0xa8, 0x87, 0xc7, 0xbb, 0xfd, 0xb5, 0xa2, 0x4a, 0xa8, 0xbc, 0xde, 0x8a, 0xa6, + 0xfb, 0x5c, 0x7d, 0xc6, 0x65, 0x11, 0xeb, 0xae, 0xdb, 0x87, 0x39, 0x25, 0xd6, 0xc6, 0x7c, 0x11, + 0xa5, 0x1e, 0xdf, 0xb8, 0xf3, 0xfe, 0x5d, 0x85, 0x19, 0x59, 0x8a, 0x52, 0x2b, 0x0d, 0xaa, 0xe6, + 0xa9, 0xb2, 0x6a, 0x36, 0x22, 0x9a, 0x9e, 0x18, 0xd1, 0x03, 0x98, 0x8d, 0xde, 0x84, 0xc2, 0xf7, + 0xc6, 0x28, 0x5f, 0xed, 0x30, 0xa8, 0x8f, 0x67, 0xca, 0xfa, 0xb8, 0x28, 0xba, 0x67, 0x07, 0x45, + 0xf7, 0x50, 0x2d, 0x3b, 0xf7, 0x1d, 0x69, 0xd9, 0xea, 0xff, 0xae, 0x65, 0x9f, 0x43, 0x1d, 0x5f, + 0xc7, 0x84, 0xaa, 0xcf, 0x9b, 0x1c, 0x6a, 0x7e, 0x22, 0x14, 0xca, 0xe7, 0x65, 0x68, 0x1f, 0xc0, + 0xfa, 0x15, 0xf1, 0xb1, 0x3a, 0x79, 0x5d, 0xdf, 0xa7, 0x98, 0x31, 0xa7, 0x4b, 0x18, 0x67, 0xf2, + 0x2b, 0xa3, 0xda, 0xaa, 0x0b, 0xb3, 0x38, 0x52, 0x8f, 0x95, 0x51, 0x74, 0x13, 0x43, 0x3b, 0x00, + 0x42, 0xd9, 0x5c, 0x92, 0x2e, 0xe1, 0x7d, 0xfd, 0xd1, 0x61, 0x8c, 0x7c, 0x2f, 0xb8, 0xff, 0x1f, + 0x82, 0xfb, 0x27, 0xb0, 0x61, 0x4e, 0x0b, 0x31, 0x77, 0x2e, 0x49, 0xc4, 0x4c, 0xa9, 0x6d, 0x24, + 0xef, 0x25, 0xe6, 0x8f, 0x49, 0xc4, 0xe4, 0xcc, 0x93, 0xc9, 0x22, 0x7b, 0x53, 0xce, 0xff, 0x96, + 0x42, 0x7a, 0xeb, 0x3b, 0x13, 0xd2, 0xf6, 0x3f, 0x2a, 0xb0, 0x39, 0x66, 0xb6, 0x90, 0x5b, 0x9e, + 0xcb, 0x71, 0x27, 0xa2, 0xfd, 0x54, 0x6e, 0xa5, 0xcf, 0xe8, 0x17, 0x80, 0x22, 0xcf, 0x4b, 0x28, + 0x2d, 0xbc, 0x8b, 0x93, 0x25, 0xd6, 0x72, 0x3a, 0x2b, 0x5b, 0xf3, 0xfb, 0xb0, 0x16, 0xd3, 0x28, + 0xc6, 0x94, 0xf7, 0x1d, 0xcf, 0x4d, 0x58, 0xb6, 0x56, 0x2d, 0x0d, 0xeb, 0xa9, 0xf5, 0x44, 0x19, + 0x55, 0x6c, 0x75, 0x98, 0xe9, 0xb9, 0xdd, 0x24, 0xbd, 0x97, 0x50, 0x0f, 0x47, 0x7f, 0xba, 0x01, + 0x4b, 0xe9, 0xdd, 0xd5, 0x05, 0xa6, 0x3d, 0xe2, 0x61, 0xe4, 0xc1, 0x82, 0x79, 0xa5, 0x85, 0xb6, + 0xf3, 0xd4, 0x0d, 0xb9, 0x9d, 0x6b, 0xec, 0x8c, 0x32, 0xab, 0x6d, 0xdf, 0xae, 0xff, 0xf1, 0x9f, + 0xff, 0xfa, 0xf3, 0xd4, 0x4d, 0xb4, 0x70, 0xd8, 0x7b, 0x78, 0x98, 0x5d, 0x78, 0xfd, 0x0e, 0x20, + 0xbf, 0xc8, 0x42, 0x9b, 0xc6, 0x51, 0x3d, 0x78, 0xbd, 0xd5, 0x28, 0x6f, 0xb4, 0xf6, 0x8e, 0xc4, + 0xb4, 0xd0, 0xaa, 0x89, 0x79, 0xf8, 0x7b, 0xe2, 0x7f, 0xb4, 0xf7, 0xd5, 0xa3, 0xca, 0x1e, 0x72, + 0x61, 0xb1, 0x70, 0x03, 0x86, 0x8c, 0x20, 0x87, 0x5d, 0x8d, 0x0d, 0xe3, 0xd8, 0x96, 0x1c, 0xeb, + 0x76, 0x21, 0xee, 0x47, 0xd9, 0x4d, 0x56, 0x0c, 0x8b, 0x85, 0xeb, 0x30, 0x93, 0x62, 0xd8, 0x3d, + 0xd9, 0x30, 0x8a, 0xf7, 0x24, 0xc5, 0xfd, 0xa3, 0xcd, 0xe2, 0x32, 0xf4, 0xaf, 0x03, 0xb5, 0x9c, + 0x8c, 0xd1, 0x87, 0xc5, 0xc2, 0xf5, 0x97, 0xc9, 0x38, 0xec, 0x5e, 0xac, 0xb1, 0x56, 0x6a, 0xab, + 0x27, 0x41, 0xcc, 0xfb, 0xf6, 0xa6, 0xa4, 0xbd, 0xb5, 0x37, 0x2c, 0x7b, 0x47, 0x7f, 0x9f, 0x85, + 0x45, 0x25, 0x17, 0xd3, 0x7e, 0xf8, 0x2d, 0x40, 0xae, 0x21, 0xcd, 0x52, 0x95, 0xa4, 0x70, 0x63, + 0x6b, 0xb8, 0x51, 0x77, 0x02, 0x92, 0xbc, 0x0b, 0x08, 0x04, 0xaf, 0x56, 0x98, 0xaf, 0xa0, 0x9a, + 0x2a, 0x47, 0xb4, 0x51, 0xe8, 0x02, 0x53, 0x60, 0x35, 0x06, 0xb5, 0x9c, 0xbd, 0x25, 0xb1, 0xd6, + 0xd0, 0x4a, 0x8e, 0x65, 0xd4, 0xff, 0x53, 0xa8, 0x19, 0x62, 0x13, 0x6d, 0x0d, 0x56, 0x7f, 0x3c, + 0xf6, 0x86, 0xc4, 0x5e, 0xb5, 0x8d, 0x38, 0x1f, 0x69, 0xed, 0xe8, 0x43, 0xcd, 0x10, 0x9e, 0x26, + 0x70, 0x59, 0x8f, 0x96, 0x81, 0xef, 0x4b, 0xe0, 0xe6, 0xd1, 0xba, 0x19, 0xb4, 0xfc, 0xab, 0x6b, + 0xad, 0x59, 0x3e, 0x83, 0x9a, 0x21, 0x32, 0x4d, 0x96, 0xb2, 0xf6, 0x1c, 0x59, 0x65, 0xbd, 0x8a, + 0xbd, 0x72, 0x86, 0x90, 0x07, 0xf3, 0x99, 0x3c, 0x45, 0x0d, 0xa3, 0x2f, 0x07, 0x34, 0x6b, 0x79, + 0x05, 0x0f, 0x24, 0xe8, 0x1d, 0x7b, 0xa7, 0x04, 0x7a, 0xa8, 0x75, 0xd2, 0xe1, 0x5d, 0x8a, 0xdb, + 0xa2, 0x06, 0x3d, 0x58, 0x30, 0xf5, 0xad, 0xb9, 0x8d, 0x0c, 0xd1, 0xbd, 0x65, 0xaa, 0x1f, 0x49, + 0xaa, 0x87, 0x7b, 0xfb, 0xa3, 0xa9, 0x8c, 0x37, 0xe5, 0xab, 0x8c, 0x97, 0x42, 0xcd, 0x50, 0x9f, + 0x68, 0xa0, 0x25, 0x8b, 0x32, 0xba, 0xb1, 0x3d, 0xc2, 0xaa, 0x3b, 0x56, 0x17, 0x0c, 0x4d, 0x58, + 0xee, 0xe3, 0xfa, 0x6f, 0x50, 0xfc, 0xba, 0xa3, 0xfe, 0xb3, 0x71, 0xd8, 0x7b, 0xf8, 0xa1, 0x2a, + 0xc5, 0xac, 0xfc, 0xf3, 0xc3, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x9a, 0x29, 0x88, 0x91, + 0x19, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index bf1281f9f1..a9bfb28da6 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -204,273 +204,169 @@ message DeleteAccountRequest { // See https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties message Account { - // A freeform text entry field for the user to describe themselves. - string about_me = 1; + // Note that field numbers in the range 1 through 15 take one byte to encode, including the field number and the field's type + + // The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. + string id = 1; // *true* if the account is enabled; otherwise, *false*. This property is required when a user is created. Supports $filter. bool account_enabled = 2; - // Sets the age group of the user. Allowed values: null, minor, notAdult and adult. Refer to the legal age group property definitions for further information. - string age_group = 3; - - // The licenses that are assigned to the account. Not nullable. - repeated AssignedLicense assigned_licenses = 4; - - // The plans that are assigned to the account. Read-only. Not nullable. - repeated AssignedPlan assigned_plans = 5; - - // The birthday of the user. - google.protobuf.Timestamp birthday = 6; - - // The telephone numbers for the user. NOTE: Although this is a string collection, only one number can be set for this property. - repeated string business_phones = 7; - - // The city in which the user is located. Supports $filter. - string city = 8; - - // The company name which the user is associated. This property can be useful for describing the company that an external user comes from. - string company_name = 9; - - // Sets whether consent has been obtained for minors. Allowed values: null, granted, denied and notRequired. Refer to the legal age group property definitions for further information. - string consent_provided_for_minor = 10; - - // The country/region in which the user is located; for example, “US” or “UK”. Supports $filter. - string country = 11; - - // The created date of the account object. - google.protobuf.Timestamp created_date_time = 12; + // A resource account is also known as a /disabled user object/ in Azure AD, and can be used to represent resources in general. + // In Exchange it might be used to represent conference rooms, for example, and allow them to have a phone number. + // You could give printers or machines with a sync client resource accounts as well. + // A resource account can be homed in Microsoft 365 or on premises using Skype for Business Server 2019. + // *true* if the user is a resource account; otherwise, *false*. Null value should be considered false. + bool is_resource_account = 3; // Indicates whether the account was created as - // - a regular school or work account (null), + // - a regular school or work account ("" / emptystring), + // - a local account, fully managed by ocis (LocalAccount), includes synced accounts or // - an external account (Invitation), - // - a local account for an Azure Active Directory B2C tenant (LocalAccount) or // - self-service sign-up using email verification (EmailVerified). Read-only. - string creation_type = 13; + string creation_type = 4; - // The date and time the user was deleted. Returned only on $select. - google.protobuf.Timestamp deleted_date_time = 14; + // Represents the identities that can be used to sign in to this account. + // An identity can be provided by OCIS (also known as a local account), by organizations, or by social identity providers such as Facebook, Google, and Microsoft, and is tied to an account. + // May contain multiple items with the same signInType value. Supports $filter. + repeated Identities identities = 5; - // The name for the department in which the user works. Supports $filter. - string department = 15; + // posixaccount properties // The name displayed in the address book for the account. // This is usually the combination of the user's first name, middle initial and last name. // This property is required when a user is created and it cannot be cleared during updates. // Supports $filter and $orderby. - string display_name = 16; + // posixaccount MUST cn + string display_name = 6; - // The employee identifier assigned to the user by the organization. Supports $filter. - string employee_id = 17; + // The username + // posixaccount MUST uid + string username = 7; - // For an external user invited to the tenant using the invitation API, this property represents the invited user's invitation status. - // For invited users, the state can be `PendingAcceptance` or `Accepted`, or emptystring / null for all other users. - // Returned only on $select. Supports $filter with the supported values. For example: $filter=externalUserState eq 'PendingAcceptance'. - string external_user_state = 18; + // used for exposing the user using ldap + // posixaccount MUST uidnumber + int64 uid_number = 8; - // Shows the timestamp for the latest change to the externalUserState property. Returned only on $select. - // note: in the ms graph beta this changed to a string ?!? - google.protobuf.Timestamp external_user_state_change_date_time = 19; + // used for exposing the user using ldap + // posixaccount MUST gidnumber + int64 gid_number = 9; - // The fax number of the account. - string fax_number = 20; + // posixaccount MUST homedirectory + // constructed dynamically in glauth - // The given name (first name) of the user. Supports $filter. - string given_name = 21; + // posixaccount MAY loginshell + // posixaccount MAY gecos - // The hire date of the user. - google.protobuf.Timestamp hire_date = 22; - - // The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. - string id = 23; - - // Represents the identities that can be used to sign in to this user account. - // An identity can be provided by OCIS (also known as a local account), by organizations, or by social identity providers such as Facebook, Google, and Microsoft, and is tied to an account. - // May contain multiple items with the same signInType value. Supports $filter. - repeated Identities identities = 24; - - // The instant message voice over IP (VOIP) session initiation protocol (SIP) addresses for the user. Read-only. - repeated string im_addresses = 25; - - // A list for the user to describe their interests. - repeated string interests = 26; - - // *true* if the user is a resource account; otherwise, *false*. Null value should be considered false. - bool is_resource_account = 27; - - // The user’s job title. Supports $filter. - string job_title = 28; - - // The time when this account last changed their password. - google.protobuf.Timestamp last_password_change_date_time = 29; - - // Used by enterprise applications to determine the legal age group of the user. - // This property is read-only and calculated based on `ageGroup` and `consentProvidedForMinor` properties. - // Allowed values: `null`, `minorWithOutParentalConsent`, `minorWithParentalConsent`, `minorNoParentalConsentRequired`, `notAdult` and `adult`. - // Refer to the legal age group property definitions for further information.) - string legal_age_group_classification = 30; - - // State of license assignments for this user. Read-only. - // licenseAssignmentState collection licenseAssignmentStates = 31 + // For the GECOS field: + // - User's full name (or application name, if the account is for a program) -> displayname (description) + // - Building and room number or contact person -> - + // - Office telephone number -> - + // - Any other contact information (pager number, fax, etc.) -> mail + // eg "Albert Einstein (Beware! I'm doing science!),,,einstein@example.com" as the gecos // The SMTP address for the user, for example, "jeff@contoso.onmicrosoft.com". Read-Only. Supports $filter. - string mail = 32; + // inetorgperson MAY mail + string mail = 10; - // Settings for the primary mailbox of the signed-in user. You can get or update settings for sending automatic replies to incoming messages, locale and time zone. - // mailboxSettings mailboxSettings = 33 + // A description, useful for resource accounts + // posixaccount MAY description + string description = 11; - // The mail alias for the user. This property must be specified when a user is created. Supports $filter. - string mail_nickname = 34; + // Specifies the password profile for the user. + // The profile contains the user’s password. This property is required when a user is created. + // The password in the profile must satisfy minimum requirements as specified by the passwordPolicies property. + // By default, a strong password is required. + // posixaccount MAY authPassword + PasswordProfile password_profile = 12; - // The primary cellular telephone number for the user. - string mobile_phone = 35; + // The groups, directory roles and administrative units that the user is a member of. Read-only. Nullable. + // should we only respond with repeated strings of ids? no clients should a proper filter mask! + repeated Group memberOf = 13; - // The URL for the user's personal site. - string my_site = 36; + // Field numbers in the range 16 through 2047 take two bytes. So you should reserve the field numbers 1 through 15 for very frequently occurring message elements. Remember to leave some room for frequently occurring elements that might be added in the future. - // The office location in the user's place of business. - string office_location = 37; + // The created date of the account object. + google.protobuf.Timestamp created_date_time = 16; - // Contains the on-premises LDAP `distinguished name` or `DN`. - // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. - string on_premises_distinguished_name = 38; + // The date and time the user was deleted. Returned only on $select. + google.protobuf.Timestamp deleted_date_time = 17; - // Contains the on-premises `domainFQDN`, also called `dnsDomainName` synchronized from the on-premises directory - // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. - string on_premises_domain_name = 39; - - // Contains extensionAttributes 1-15 for the user. Note that the individual extension attributes are neither selectable nor filterable. - // For an onPremisesSyncEnabled user, this set of properties is mastered on-premises and is read-only. - // For a cloud-only user (where onPremisesSyncEnabled is false), these properties may be set during creation or update. - //onPremisesExtensionAttributes onPremisesExtensionAttributes = 40 - - // This property is used to associate an on-premises LDAP user to the ocis account object. - // This property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property. - // Important: The $ and _ characters cannot be used when specifying this property. Supports $filter. - string on_premises_immutable_id = 41; - - // Indicates the last time at which the object was synced with the on-premises directory; Read-only. - google.protobuf.Timestamp on_premises_last_sync_date_time = 42; - - // Errors when using synchronization during provisioning. - repeated OnPremisesProvisioningError on_premises_provisioning_errors = 43; - - // Contains the on-premises `samAccountName` synchronized from the on-premises directory. - // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. - string on_premises_sam_account_name = 44; - - // Contains the on-premises security identifier (SID) for the user that was synchronized from on-premises to the cloud. Read-only. - string on_premises_security_identifier = 45; + // properties for sync // *true* if this object is synced from an on-premises directory; // *false* if this object was originally synced from an on-premises directory but is no longer synced; // null if this object has never been synced from an on-premises directory (default). Read-only - bool on_premises_sync_enabled = 46; + bool on_premises_sync_enabled = 20; + + // This property is used to associate an on-premises LDAP user to the ocis account object. + // This property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property. + // Important: The $ and _ characters cannot be used when specifying this property. Supports $filter. + string on_premises_immutable_id = 21; + + // Contains the on-premises security identifier (SID) for the user that was synchronized from on-premises to the cloud. Read-only. + string on_premises_security_identifier = 22; + + // Contains the on-premises LDAP `distinguished name` or `DN`. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + string on_premises_distinguished_name = 23; + + // Contains the on-premises `samAccountName` synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + string on_premises_sam_account_name = 24; + + // Contains the on-premises `domainFQDN`, also called `dnsDomainName` synchronized from the on-premises directory + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + string on_premises_domain_name = 25; // Contains the on-premises userPrincipalName synchronized from the on-premises directory. // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. - string on_premises_user_principal_name = 47; + string on_premises_user_principal_name = 26; - // A list of additional email addresses for the user; for example: ["bob@contoso.com", "Robert@fabrikam.com"]. Supports $filter. - // note: in ms graph v1.0 this is a string. in the beta api it is a string collection - repeated string other_mails = 48; + // Contains extensionAttributes 1-15 for the user. Note that the individual extension attributes are neither selectable nor filterable. + // For an onPremisesSyncEnabled user, this set of properties is mastered on-premises and is read-only. + // For a cloud-only user (where onPremisesSyncEnabled is false), these properties may be set during creation or update. + //onPremisesExtensionAttributes onPremisesExtensionAttributes = 27 - // Specifies password policies for the user. This value is an enumeration with one possible value being “DisableStrongPassword”, which allows weaker passwords than the default policy to be specified. “DisablePasswordExpiration” can also be specified. The two may be specified together; for example: "DisablePasswordExpiration, DisableStrongPassword". - string password_policies = 49; + // Indicates the last time at which the object was synced with the on-premises directory; Read-only. + google.protobuf.Timestamp on_premises_last_sync_date_time = 28; - // Specifies the password profile for the user. The profile contains the user’s password. This property is required when a user is created. The password in the profile must satisfy minimum requirements as specified by the passwordPolicies property. By default, a strong password is required. - // passwordProfile passwordProfile = 50 + // Errors when using synchronization during provisioning. + repeated OnPremisesProvisioningError on_premises_provisioning_errors = 29; - // A list for the user to enumerate their past projects. - repeated string past_projects = 51; + // TODO do we need to sync uidnumber and gidnumber from the external ldap? we may assign different numbers so eos has a non colliding namespace. + // we can sync them to the (uid|gid)_number fileds but what if they changed in the external ldap and now collide? + // move those properties to a posixaccount message so we can exchange that part with an external (readonly or writeable) ldap server? - // The postal code for the user's postal address. The postal code is specific to the user's country/region. In the United States of America, this attribute contains the ZIP code. - string postal_code = 52; + // For an external user invited to the tenant using the invitation API, this property represents the invited user's invitation status. + // For invited users, the state can be `PendingAcceptance` or `Accepted`, or "" / emptystring for all other users. + // Returned only on $select. Supports $filter with the supported values. For example: $filter=externalUserState eq 'PendingAcceptance'. + string external_user_state = 40; - // The preferred data location for the user. For more information, see OneDrive Online Multi-Geo. https://docs.microsoft.com/sharepoint/dev/solution-guidance/multigeo-introduction string preferredDataLocation = 53; - string preferred_data_location = 53; - - // The preferred language for the user. Should follow ISO 639-1 Code; for example "en-US". - string preferred_language = 54; - - // The preferred name for the user. - string preferred_name = 55; - - // The plans that are provisioned for the user. Read-only. Not nullable. - // repeated provisionedPlans provisionedPlans = 56 - - // For example: ["SMTP: bob@contoso.com", "smtp: bob@sales.contoso.com"] - // The any operator is required for filter expressions on multi-valued properties. Read-only, Not nullable. Supports $filter. - repeated string proxy_addresses = 57; + // Shows the timestamp for the latest change to the externalUserState property. Returned only on $select. + google.protobuf.Timestamp external_user_state_change_date_time = 41; // Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get // an error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph). // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. // Returned only on $select. Read-only. Use invalidateAllRefreshTokens to reset. - google.protobuf.Timestamp refresh_tokens_valid_from_date_time = 58; - - // A list for the user to enumerate their responsibilities. - repeated string responsibilities = 59; - - // A list for the user to enumerate the schools they have attended. - repeated string schools = 60; - - // *true* if the Outlook global address list should contain this user, otherwise *false*. If not set, this will be treated as *true*. - // For users invited through the invitation manager, this property will be set to *false*. - bool show_in_address_list = 61; + google.protobuf.Timestamp refresh_tokens_valid_from_date_time = 60; // Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get // an error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph). // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. // Read-only. Use revokeSignInSessions to reset. - google.protobuf.Timestamp sign_in_sessions_valid_from_date_time = 62; - - // Get the last signed-in date and request ID of the sign-in for a given user. - // Supports $filter, but not with any other filterable properties. - // Returned only on $select. Read-only. - //signInActivity signInActivity = 63 - - // A list for the user to enumerate their skills. - repeated string skills = 64; - - // The state or province in the user's address. Supports $filter - string state = 65; - - // The street address of the user's place of business. - string street_address = 66; - - // The user's surname (family name or last name). Supports $filter. - string surname = 67; - - // A two letter country code (ISO standard 3166). Required for users that will be assigned licenses due to legal requirement to check for availability of services in countries. Examples include: "US", "JP", and "GB". Not nullable. Supports $filter. - string usage_location = 68; - - // The user principal name (UPN) of the user. The UPN is an Internet-style login name for the user based on the Internet standard RFC 822. - // By convention, this should map to the user's email name. The general format is alias@domain, - // where domain must be present in the tenant’s collection of verified domains. - // This property is required when a user is created. The verified domains for the tenant can be accessed - // from the verifiedDomains property of organization. Supports $filter and $orderby. - string user_principal_name = 69; - - // A string value that can be used to classify user types in your directory, such as “Member” and “Guest”. Supports $filter. - string user_type = 70; - - // Properties that are not part of the graph API: - - // The users password. Used when updating the users password - // TODO: the username is stored as an identity? - string password = 71; - - - // relationships - - // The groups, directory roles and administrative units that the user is a member of. Read-only. Nullable. - repeated Group memberOf = 100; + google.protobuf.Timestamp sign_in_sessions_valid_from_date_time = 61; } +// Identities Represents an identity used to sign in to a user account. +// An identity can be provided by ocis, by organizations, or by social identity providers such as Facebook, Google, or Microsoft, that are tied to a user account. +// This enables the user to sign in to the user account with any of those associated identities. +// They are also used to keep a history of old usernames. message Identities { // Specifies the user sign-in types in your directory, such as `emailAddress`, `userName` or `federated`. // Here, federated represents a unique identifier for a user from an issuer, that can be in any format chosen by the issuer. - // Additional validation is enforced on *issuerAssignedId* when the sign-in type is set to `emailAddress` or `userName`. + // Additional validation is enforced on *issuer_assigned_id* when the sign-in type is set to `emailAddress` or `userName`. // This property can also be set to any custom string. string sign_in_type = 1; @@ -478,19 +374,37 @@ message Identities { // For local accounts (where signInType is not federated), this property is // the local B2C tenant default domain name, for example contoso.onmicrosoft.com. // For external users from other Azure AD organization, this will be the domain of - // the federated organization, for example contoso.com. + // the federated organization, for example contoso.com. // Supports $filter. 512 character limit. string issuer = 2; // Specifies the unique identifier assigned to the user by the issuer. The combination of *issuer* and *issuerAssignedId* must be unique within the organization. Represents the sign-in name for the user, when signInType is set to emailAddress or userName (also known as local accounts). // When *signInType* is set to: // * `emailAddress`, (or starts with `emailAddress` like `emailAddress1`) *issuerAssignedId* must be a valid email address - // * `userName`, issuerAssignedId must be a valid local part of an email address + // * `userName`, issuer_assigned_id must be a valid local part of an email address // Supports $filter. 512 character limit. string issuer_assigned_id = 3; } +message PasswordProfile { + // The password for the user. This property is required when a user is created. + // It can be updated, but the user will be required to change the password on the next login. + // The password must satisfy minimum requirements as specified by the user’s passwordPolicies property. By default, a strong password is required. + string password = 1; -// TODO additional user methods? https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#methods + // The time when this account last changed their password. + google.protobuf.Timestamp last_password_change_date_time = 2; + + // Specifies password policies for the user. + //This value is an enumeration with one possible value being “DisableStrongPassword”, which allows weaker passwords than the default policy to be specified. + // “DisablePasswordExpiration” can also be specified. + repeated string password_policies = 3; + + // *true* if the user must change her password on the next login; otherwise false. + bool force_change_password_next_sign_in = 4; + + // If *true*, at next sign-in, the user must perform a multi-factor authentication (MFA) before being forced to change their password. The behavior is identical to forceChangePasswordNextSignIn except that the user is required to first perform a multi-factor authentication before password change. After a password change, this property will be automatically reset to false. If not set, default is false. + bool force_change_password_next_sign_in_with_mfa = 5; +} message ListGroupsRequest { // Optional. The maximum number of groups to return in the response @@ -579,6 +493,10 @@ message ListMembersRequest { // that indicates from where search should continue string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; + // Optional. Used to specify a subset of fields that should be + // returned by a get operation or modified by an update operation. + google.protobuf.FieldMask field_mask = 3; + // Optional. Search criteria used to select the groups to return. // If no search criteria is specified then all groups will be // returned @@ -597,7 +515,7 @@ message ListMembersRequest { // starts with "Th" // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" - string query = 3 [(google.api.field_behavior) = OPTIONAL]; + string query = 4 [(google.api.field_behavior) = OPTIONAL]; } message ListMembersResponse { @@ -612,29 +530,45 @@ message ListMembersResponse { } message Group { - // Indicates if people external to the organization can send messages to the group. Default value is false. - // Returned only on $select. - bool allow_external_senders = 1; - // The list of sensitivity label pairs (label ID, label name) associated with an Office 365 group. - //Returned only on $select. Read-only. - repeated AssignedLabel assigned_labels = 2; + // The unique identifier for the group. + // Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. + string id = 1; - // The licenses that are assigned to the group. - // Returned only on $select. Read-only. - repeated AssignedLicense assigned_licenses = 3; + // groupofnames - // Indicates if new members added to the group will be auto-subscribed to receive email notifications. You can set this property in a PATCH request for the group; do not set it in the initial POST request that creates the group. Default value is false. - // Returned only on $select. - bool auto_subscribe_new_members = 4; + // The display name for the group. This property is required when a group is created and cannot be cleared during updates. + // Returned by default. Supports $filter and $orderby. + // groupofnames MUST cn + string display_name = 2; + // groupofnames MUST/MAY member - // Describes a classification for the group (such as low, medium or high business impact). Valid values for this property are defined by creating a ClassificationList setting value, based on the template definition. - // Returned by default. - string classification = 5; + // Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable. + // TODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later + repeated Account members = 3; + + // groupofnames MAY businessCategory + // groupofnames MAY o + // groupofnames MAY ou + // groupofnames MAY owner, SINGLE-VALUE but there might be multiple owners + repeated Account owners = 4; + + // An optional description for the group. Returned by default. + // groupofnames MAY description + string description = 5; + + // groupofnames MAY seeAlso + + // posixgroup + + // used for exposing the user using ldap + // posixgroup MUST gidnumber + int64 gid_number = 6; + // posixgroup MAY authPassword + // posixgroup MAY userPassword + // posixgroup MAY memberUid -> groupofnames member + // posixgroup MAY description -> groupofnames - // App ID of the app used to create the group. Can be null for some groups. - // Returned by default. Read-only. Supports $filter. - string created_by_app_id = 6; // Timestamp of when the group was created. The value cannot be modified and is automatically populated when the group is created // Returned by default. Read-only. @@ -644,179 +578,60 @@ message Group { // Returned by default. Read-only. google.protobuf.Timestamp deleted_date_time = 8; - // An optional description for the group. Returned by default. - string description = 9; - - // The display name for the group. This property is required when a group is created and cannot be cleared during updates. - // Returned by default. Supports $filter and $orderby. - string display_name = 10; - // Timestamp of when the group is set to expire. The value cannot be modified and is automatically populated when the group is created. // Returned by default. Read-only. - google.protobuf.Timestamp expiration_date_time = 11; - - // Specifies the group type and its membership. - // If the collection contains `Unified` then the group is an Office 365 group; otherwise it's a security group. - // If the collection includes `DynamicMembership`, the group has dynamic membership; otherwise, membership is static. - // Returned by default. Supports $filter. - repeated string group_types = 12; - - // Indicates whether there are members in this group that have license errors from its group-based license assignment. - // This property is never returned on a GET operation. You can use it as a $filter argument to get groups that have members with license errors (that is, filter for this property being true). - bool has_members_with_license_errors = 13; + google.protobuf.Timestamp expiration_date_time = 9; // True if the group is not displayed in certain parts of the Outlook user interface: // in the Address Book, in address lists for selecting message recipients, and in the Browse Groups dialog for searching groups; false otherwise. Default value is false. // Returned only on $select. - bool hide_from_address_lists = 14; + bool hide_from_address_lists = 10; - // True if the group is not displayed in Outlook clients, such as Outlook for Windows and Outlook on the web, false otherwise. Default value is false. - // Returned only on $select. - bool hide_from_outlook_clients = 15; - - // The unique identifier for the group. - // Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. - string id = 16; - - // Indicates whether the signed-in user is subscribed to receive email conversations. Default value is true. - // Returned only on $select. - bool is_subscribed_by_mail = 17; - - // Indicates status of the group license assignment to all members of the group. - // Possible values: `QueuedForProcessing`, `ProcessingInProgress`, and `ProcessingComplete`. - // Returned only on $select. Read-only. - string license_processing_state = 18; - - // The SMTP address for the group, for example, "serviceadmins@contoso.onmicrosoft.com". - // Returned by default. Read-only. Supports $filter. - string mail = 19; - - // Specifies whether the group is mail-enabled. + // Specifies the visibility of an Office 365 group. Possible values are: Private, Public, or Hiddenmembership; blank values are treated as public. See group visibility options to learn more. + // Visibility can be set only when a group is created; it is not editable. // Returned by default. - bool mail_enabled = 20; + string visibility = 11; - // The mail alias for the group, unique in the organization. This property must be specified when a group is created. - // Returned by default. Supports $filter. - string mail_nickname = 21; + // Field numbers in the range 16 through 2047 take two bytes. So you should reserve the field numbers 1 through 15 for very frequently occurring message elements. Remember to leave some room for frequently occurring elements that might be added in the future. - // The rule that determines members for this group if the group is a dynamic group (groupTypes contains DynamicMembership). For more information about the syntax of the membership rule, see Membership Rules syntax. - // Returned by default. - string membership_rule = 22; - - // Indicates whether the dynamic membership processing is on or paused. Possible values are "On" or "Paused". - // Returned by default. - string membership_rule_processing_state = 23; - - // Contains the on-premises domain FQDN, also called dnsDomainName synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. - // Returned by default. Read-only. - string on_premises_domain_name = 24; - - // Indicates the last time at which the group was synced with the on-premises directory. - // Returned by default. Read-only. Supports $filter. - string on_premises_last_sync_date_time = 25; - - // Contains the on-premises netBios name synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. - // Returned by default. Read-only. - string on_premises_net_bios_name = 26; - - // Errors when using synchronization during provisioning. - repeated OnPremisesProvisioningError on_premises_provisioning_errors = 27; - - // Contains the on-premises `samAccountName` synchronized from the on-premises directory. - // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Returned by default. Read-only. - string on_premises_sam_account_name = 28; - - // Contains the on-premises security identifier (SID) for the group that was synchronized from on-premises to the cloud. Returned by default. Read-only. - string on_premises_security_identifier = 29; + // properties for sync // *true* if this group is synced from an on-premises directory; // *false* if this group was originally synced from an on-premises directory but is no longer synced; // null if this object has never been synced from an on-premises directory (default). // Returned by default. Read-only. Supports $filter. - bool on_premises_sync_enabled = 30; + bool on_premises_sync_enabled = 20; - // The preferred data location for the group. For more information, see OneDrive Online Multi-Geo. https://docs.microsoft.com/sharepoint/dev/solution-guidance/multigeo-introduction string preferredDataLocation = 53; - string preferred_data_location = 31; + // This property is used to associate an on-premises LDAP user to the ocis account object. + // This property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property. + // Important: The $ and _ characters cannot be used when specifying this property. Supports $filter. + string on_premises_immutable_id = 21; - // The preferred language for the user. Should follow ISO 639-1 Code; for example "en-US". - string preferred_language = 32; + // Contains the on-premises security identifier (SID) for the group that was synchronized from on-premises to the cloud. Returned by default. Read-only. + string on_premises_security_identifier = 22; - // Email addresses for the group that direct to the same group mailbox. - // For example: ["SMTP: bob@contoso.com", "smtp: bob@sales.contoso.com"]. - // The any operator is required for filter expressions on multi-valued properties. - // Returned by default. Read-only. Not nullable. Supports $filter. - repeated string proxy_addresses = 33; + // Contains the on-premises LDAP `distinguished name` or `DN`. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only. + string on_premises_distinguished_name = 23; - // Timestamp of when the group was last renewed. - // This cannot be modified directly and is only updated via the renew service action. + // Contains the on-premises `samAccountName` synchronized from the on-premises directory. + // The property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Returned by default. Read-only. + string on_premises_sam_account_name = 24; + + // Contains the on-premises domain FQDN, also called dnsDomainName synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. // Returned by default. Read-only. - google.protobuf.Timestamp renewed_date_time = 34; + string on_premises_domain_name = 25; - // Specifies the group behaviors that can be set for an Office 365 group during creation. This can be set only as part of creation (POST). Possible values are `AllowOnlyMembersToPost`, `HideGroupInOutlook`, `SubscribeNewGroupMembers`, `WelcomeEmailDisable`. For more information, see Set Microsoft 365 group behaviors and provisioning options. https://docs.microsoft.com/en-us/graph/group-set-options - repeated string resource_behavior_options = 35; + // Contains the on-premises netBios name synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect. + // Returned by default. Read-only. + string on_premises_net_bios_name = 26; - // Specifies the group resources that are provisioned as part of Office 365 group creation, that are not normally part of default group creation. Possible value is `Team`. For more information, see Set Microsoft 365 group behaviors and provisioning options. https://docs.microsoft.com/en-us/graph/group-set-options - repeated string resource_provisioning_options = 36; + // Indicates the last time at which the group was synced with the on-premises directory. + // Returned by default. Read-only. Supports $filter. + string on_premises_last_sync_date_time = 27; - // Specifies whether the group is a security group. - // Returned by default. Supports $filter. - bool security_enabled = 37; - - // Security identifier of the group, used in Windows scenarios. - // Returned by default. - string security_identifier = 38; - - // Specifies an Office 365 group's color theme. Possible values are Teal, Purple, Green, Blue, Pink, Orange or Red. - // Returned by default. - string theme = 39; - - // Count of conversations that have been delivered one or more new posts since the signed-in user's last visit to the group. This property is the same as unseenCount. - // Returned only on $select. - //int unseenConversationsCount = 40; - - // Count of conversations that have received new posts since the signed-in user last visited the group. This property is the same as unseenConversationsCount. - // Returned only on $select. - //int unseenCount = 41; - - // Count of new posts that have been delivered to the group's conversations since the signed-in user's last visit to the group. - // Returned only on $select. - //int unseenMessagesCount = 42; - - // Specifies the visibility of an Office 365 group. Possible values are: Private, Public, or Hiddenmembership; blank values are treated as public. See group visibility options to learn more. - // Visibility can be set only when a group is created; it is not editable. - // Visibility is supported only for unified groups; it is not supported for security groups. - // Returned by default. - string visibility = 43; - - // relationships - - // Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable. - // TODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later - repeated Account members = 100; - -} - -message AssignedLabel { - // The unique identifier of the label. - string label_id = 1; - // The display name of the label. Read-only. - string display_name = 2; -} - -message AssignedLicense { - string sku_id = 1; - repeated string disabled_plans = 2; -} - -message AssignedPlan { - // The date and time at which the plan was assigned; for example: 2013-01-02T19:32:30Z. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 would look like this: '2014-01-01T00:00:00Z' - google.protobuf.Timestamp assigned_date_time = 1; - // For example, “Enabled”. - string capabilityStatus = 2; - // The name of the service; for example, “Exchange”. - string service = 3; - // A GUID that identifies the service plan. - string servicePlanId = 4; + // Errors when using synchronization during provisioning. + repeated OnPremisesProvisioningError on_premises_provisioning_errors = 28; } message OnPremisesProvisioningError { diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 399aec1dd1..5d868566ff 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -160,7 +160,6 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest res.Accounts = append(res.Accounts, &proto.Account{ Id: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.AccountID), // TODO identities - // TODO Username is in the identities ... or in onpremisesamaccountname or in preferredname ... Username: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.Username), DisplayName: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.DisplayName), Mail: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.Mail), @@ -204,7 +203,6 @@ func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res case 1: res.Id = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.AccountID) // TODO identities? - // TODO Username is in the identities ... or in onpremisesamaccountname or in preferredname ... res.Username = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.Username) res.DisplayName = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.DisplayName) res.Mail = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.Mail) From c2668daae8c1ca04f0b2370a2dd6d9ca7b14730c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 9 Jun 2020 15:59:45 +0200 Subject: [PATCH 154/407] persist accounts using json, index using bleve MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 12 +- go.sum | 74 ++++++++++++- pkg/config/config.go | 7 +- pkg/flagset/flagset.go | 103 +---------------- pkg/provider/bleve.go | 98 ++++++++++++++++ pkg/provider/ldap.go | 180 ------------------------------ pkg/provider/ldap_test.go | 68 ------------ pkg/provider/tokenizer.go | 38 +++++++ pkg/service/v0/service.go | 228 +++++++++++++------------------------- 9 files changed, 308 insertions(+), 500 deletions(-) create mode 100644 pkg/provider/bleve.go delete mode 100644 pkg/provider/ldap.go delete mode 100644 pkg/provider/ldap_test.go create mode 100644 pkg/provider/tokenizer.go diff --git a/go.mod b/go.mod index f9d4f7cdd0..f07cb1c9c4 100644 --- a/go.mod +++ b/go.mod @@ -4,22 +4,30 @@ go 1.13 require ( github.com/CiscoM31/godata v0.0.0-20191007193734-c2c4ebb1b415 + github.com/blevesearch/bleve v1.0.9 + github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d // indirect + github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 // indirect + github.com/cznic/strutil v0.0.0-20181122101858-275e90344537 // indirect + github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect + github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect + github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect github.com/go-test/deep v1.0.6 // indirect github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/protobuf v1.4.1 github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 - github.com/micro/go-micro v1.18.0 github.com/micro/go-micro/v2 v2.6.0 github.com/oklog/run v1.1.0 github.com/owncloud/ocis-pkg/v2 v2.2.1 github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 + github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 github.com/rs/zerolog v1.17.2 github.com/spf13/viper v1.6.3 + github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb - gopkg.in/ldap.v2 v2.5.1 honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab // indirect ) diff --git a/go.sum b/go.sum index 0c2e6151b2..af773073ee 100644 --- a/go.sum +++ b/go.sum @@ -63,6 +63,8 @@ github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:i github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w= +github.com/RoaringBitmap/roaring v0.4.21 h1:WJ/zIlNX4wQZ9x8Ey33O1UaD9TCTakYsdLFSBcTwH+8= +github.com/RoaringBitmap/roaring v0.4.21/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= @@ -114,6 +116,26 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blevesearch/bleve v1.0.9 h1:kqw/Ank/61UV9/Bx9kCcnfH6qWPgmS8O5LNfpsgzASg= +github.com/blevesearch/bleve v1.0.9/go.mod h1:tb04/rbU29clbtNgorgFd8XdJea4x3ybYaOjWKr+UBU= +github.com/blevesearch/blevex v0.0.0-20190916190636-152f0fe5c040 h1:SjYVcfJVZoCfBlg+fkaq2eoZHTf5HaJfaTeTkOtyfHQ= +github.com/blevesearch/blevex v0.0.0-20190916190636-152f0fe5c040/go.mod h1:WH+MU2F4T0VmSdaPX+Wu5GYoZBrYWdOZWSjzvYcDmqQ= +github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo= +github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M= +github.com/blevesearch/mmap-go v1.0.2 h1:JtMHb+FgQCTTYIhtMvimw15dJwu1Y5lrZDMOFXVWPk0= +github.com/blevesearch/mmap-go v1.0.2/go.mod h1:ol2qBqYaOUsGdm7aRMRrYGgPvnwLe6Y+7LMvAB5IbSA= +github.com/blevesearch/segment v0.9.0 h1:5lG7yBCx98or7gK2cHMKPukPZ/31Kag7nONpoBt22Ac= +github.com/blevesearch/segment v0.9.0/go.mod h1:9PfHYUdQCgHktBgvtUOF4x+pc4/l8rdH0u5spnW85UQ= +github.com/blevesearch/snowballstem v0.9.0 h1:lMQ189YspGP6sXvZQ4WZ+MLawfV8wOmPoD/iWeNXm8s= +github.com/blevesearch/snowballstem v0.9.0/go.mod h1:PivSj3JMc8WuaFkTSRDW2SlrulNWPl4ABg1tC/hlgLs= +github.com/blevesearch/zap/v11 v11.0.9 h1:wlSrDBeGN1G4M51NQHIXca23ttwUfQpWaK7uhO5lRSo= +github.com/blevesearch/zap/v11 v11.0.9/go.mod h1:47hzinvmY2EvvJruzsSCJpro7so8L1neseaGjrtXHOY= +github.com/blevesearch/zap/v12 v12.0.9 h1:PpatkY+BLVFZf0Ok3/fwgI/I4RU0z5blXFGuQANmqXk= +github.com/blevesearch/zap/v12 v12.0.9/go.mod h1:paQuvxy7yXor+0Mx8p2KNmJgygQbQNN+W6HRfL5Hvwc= +github.com/blevesearch/zap/v13 v13.0.1 h1:NSCM6uKu77Vn/x9nlPp4pE1o/bftqcOWZEHSyZVpGBQ= +github.com/blevesearch/zap/v13 v13.0.1/go.mod h1:XmyNLMvMf8Z5FjLANXwUeDW3e1+o77TTGUWrth7T9WI= +github.com/blevesearch/zap/v14 v14.0.0 h1:HF8Ysjm13qxB0jTGaKLlatNXmJbQD8bY+PrPxm5v4hE= +github.com/blevesearch/zap/v14 v14.0.0/go.mod h1:sUc/gPGJlFbSQ2ZUh/wGRYwkKx+Dg/5p+dd+eq6QMXk= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= @@ -153,18 +175,30 @@ github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/couchbase/ghistogram v0.1.0/go.mod h1:s1Jhy76zqfEecpNWJfWUiKZookAFaiGOEoyzgHt9i7k= +github.com/couchbase/moss v0.1.0/go.mod h1:9MaHIaRuy9pvLPUJxB8sh8OrLfyDczECVL37grCIubs= +github.com/couchbase/vellum v1.0.1 h1:qrj9ohvZedvc51S5KzPfJ6P6z0Vqzv7Lx7k3mVc2WOk= +github.com/couchbase/vellum v1.0.1/go.mod h1:FcwrEivFpNi24R3jLOs3n+fs5RnuQnQqCLBJ1uAg1W4= github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMElOWxok= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d h1:SwD98825d6bdB+pEuTxWOXiSjBrHdOl/UVp75eI7JT8= +github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= +github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso= +github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= +github.com/cznic/strutil v0.0.0-20181122101858-275e90344537 h1:MZRmHqDBd0vxNwenEbKSQqRVT24d3C05ft8kduSwlqM= +github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -198,6 +232,12 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.0.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= @@ -215,7 +255,11 @@ github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmy github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 h1:Ujru1hufTHVb++eG6OuNDKMxZnGIvF6o/u8q/8h2+I4= +github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= @@ -295,6 +339,7 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -328,6 +373,7 @@ github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1a github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -394,12 +440,15 @@ github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhK github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -426,6 +475,7 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/kljensen/snowball v0.6.0/go.mod h1:27N7E8fVU5H68RlUmnWwZCfxgt4POBJfENGMvNRhldw= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -450,6 +500,7 @@ github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVL github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gNfqwTxjbE7s3Vb8s= github.com/lucas-clemente/quic-go v0.13.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= github.com/lucas-clemente/quic-go v0.14.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -517,6 +568,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= +github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= +github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= @@ -591,6 +644,7 @@ github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTK github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -630,6 +684,9 @@ github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= github.com/restic/calens v0.2.0 h1:LVNAtmFc+Pb4ODX66qdX1T3Di1P0OTLyUsVyvM/xD7E= github.com/restic/calens v0.2.0/go.mod h1:UXwyAKS4wsgUZGEc7NrzzygJbLsQZIo3wl+62Q1wvmU= @@ -639,6 +696,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -668,14 +726,18 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs= github.com/spf13/viper v1.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= +github.com/steveyen/gtreap v0.1.0 h1:CjhzTa274PyJLJuMZwIzCO1PfC00oRa8d1Kc78bFXJM= +github.com/steveyen/gtreap v0.1.0/go.mod h1:kl/5J7XbrOmlIbYIXdRHDDE5QxHqpk0cmkT7Z4dM9/Y= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -689,9 +751,14 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= +github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog= github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc h1:yUaosFVTJwnltaHbSNC3i82I92quFs+OFPRl8kNMVwo= @@ -701,12 +768,15 @@ github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4 github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.10 h1:NotGKqX0KwQ72NUzqrjZq5ipPNDQex9lo3WpaS8L2sc= +github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= @@ -850,6 +920,8 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181221143128-b4a75ba826a6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -871,6 +943,7 @@ golang.org/x/sys v0.0.0-20190710143415-6ec70d6a5542/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -994,7 +1067,6 @@ gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eR gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= -gopkg.in/ldap.v2 v2.5.1/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk= gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= diff --git a/pkg/config/config.go b/pkg/config/config.go index 00db2bf774..2cafaddae3 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -26,9 +26,10 @@ type LDAPSchema struct { // Server configures a server. type Server struct { - Name string - Namespace string - Address string + Name string + Namespace string + Address string + AccountsDataPath string } // Log defines the available logging configuration. diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index a4b9f08bce..3be48c4731 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -61,104 +61,13 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { EnvVars: []string{"ACCOUNTS_ADDRESS"}, Destination: &cfg.Server.Address, }, - // LDAP - &cli.StringFlag{ - Name: "ldap-hostname", - Value: "localhost", - Usage: "LDAP hostname", - EnvVars: []string{"ACCOUNTS_LDAP_HOSTNAME"}, - Destination: &cfg.LDAP.Hostname, - }, - &cli.IntFlag{ - Name: "ldap-port", - Value: 9126, - Usage: "LDAP port", - EnvVars: []string{"ACCOUNTS_LDAP_PORT"}, - Destination: &cfg.LDAP.Port, - }, - &cli.StringFlag{ - Name: "ldap-base-dn", - Value: "dc=example,dc=org", - Usage: "LDAP basedn", - EnvVars: []string{"ACCOUNTS_LDAP_BASE_DN"}, - Destination: &cfg.LDAP.BaseDN, - }, - &cli.StringFlag{ - Name: "ldap-userfilter", - Value: "(&(objectclass=posixAccount)(cn=%s))", - Usage: "LDAP userfilter", - EnvVars: []string{"ACCOUNTS_LDAP_USERFILTER"}, - Destination: &cfg.LDAP.UserFilter, - }, - &cli.StringFlag{ - Name: "ldap-groupfilter", - Value: "(&(objectclass=posixGroup)(cn=%s))", - Usage: "LDAP groupfilter", - EnvVars: []string{"ACCOUNTS_LDAP_GROUPFILTER"}, - Destination: &cfg.LDAP.GroupFilter, - }, - &cli.StringFlag{ - Name: "ldap-bind-dn", - Value: "cn=reva,ou=sysusers,dc=example,dc=org", - Usage: "LDAP bind dn", - EnvVars: []string{"ACCOUNTS_LDAP_BIND_DN"}, - Destination: &cfg.LDAP.BindDN, - }, - &cli.StringFlag{ - Name: "ldap-bind-password", - Value: "reva", - Usage: "LDAP bind password", - EnvVars: []string{"ACCOUNTS_LDAP_BIND_PASSWORD"}, - Destination: &cfg.LDAP.BindPassword, - }, - &cli.StringFlag{ - Name: "ldap-idp", - Value: "https://localhost:9200", - Usage: "Identity provider to use for users", - EnvVars: []string{"ACCOUNTS_LDAP_IDP"}, - Destination: &cfg.LDAP.IDP, - }, - // ldap dn is always the dn - &cli.StringFlag{ - Name: "ldap-schema-account-id", - // TODO write down LDAP schema & register OID ownclouduuid - //... use 'sourceAnchor','immutableid' see https://docs.microsoft.com/en-us/azure/active-directory/hybrid/plan-connect-design-concepts#sourceanchor - // or 'ms-DS-ConsistencyGuid' see https://docs.microsoft.com/en-us/azure/active-directory/hybrid/plan-connect-design-concepts - // or build a scim schema for ldap? https://ldapwiki.com/wiki/SCIM%20Common%20Attribute - // glauth -> support id and externalid from scim - Value: "uidNumber", - Usage: "LDAP schema account id", - EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_ACCOUNT_ID"}, - Destination: &cfg.LDAP.Schema.AccountID, - }, - &cli.StringFlag{ - Name: "ldap-schema-username", - Value: "uid", - Usage: "LDAP schema username", - EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_USERNAME"}, - Destination: &cfg.LDAP.Schema.Username, - }, - &cli.StringFlag{ - Name: "ldap-schema-displayName", - Value: "sn", - Usage: "LDAP schema displayName", - EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_DISPLAYNAME"}, - Destination: &cfg.LDAP.Schema.DisplayName, - }, - &cli.StringFlag{ - Name: "ldap-schema-mail", - Value: "mail", - Usage: "LDAP schema mail", - EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_MAIL"}, - Destination: &cfg.LDAP.Schema.Mail, - }, - &cli.StringFlag{ - Name: "ldap-schema-cn", - Value: "memberof", - Usage: "LDAP schema cn", - EnvVars: []string{"ACCOUNTS_LDAP_SCHEMA_GROUPS"}, - Destination: &cfg.LDAP.Schema.Groups, + Name: "accounts-data-path", + Value: "/var/tmp/ocis-accounts", + DefaultText: "/var/tmp/ocis-accounts", + Usage: "accounts folder", + EnvVars: []string{"ACCOUNTS_DATA_PATH"}, + Destination: &cfg.Server.AccountsDataPath, }, } } diff --git a/pkg/provider/bleve.go b/pkg/provider/bleve.go new file mode 100644 index 0000000000..bfad794778 --- /dev/null +++ b/pkg/provider/bleve.go @@ -0,0 +1,98 @@ +package provider + +import ( + "errors" + + "github.com/CiscoM31/godata" + "github.com/blevesearch/bleve" + "github.com/blevesearch/bleve/search/query" +) + +func init() { + // add (ap)prox filter + godata.GlobalFilterTokenizer = FilterTokenizer() + godata.GlobalFilterParser.DefineOperator("ap", 2, godata.OpAssociationLeft, 4, false) +} + +// BuildBleveQuery converts a GoDataFilterQuery into a bleve query +func BuildBleveQuery(r *godata.GoDataFilterQuery) (query.Query, error) { + return recursiveBuildQuery(r.Tree) +} + +// Builds the filter recursively using DFS +func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { + if n.Token.Type == godata.FilterTokenFunc { + switch n.Token.Value { + case "startswith": + if len(n.Children) != 2 { + return nil, errors.New("startswith match must have two children") + } + if n.Children[0].Token.Type != godata.FilterTokenLiteral { + return nil, errors.New("startswith expected a literal as the first param") + } + if n.Children[1].Token.Type != godata.FilterTokenString { + return nil, errors.New("startswith expected a string as the second param") + } + q := bleve.NewTermQuery(n.Children[1].Token.Value) + q.SetField(n.Children[0].Token.Value) + return q, nil + default: + return nil, godata.NotImplementedError(n.Token.Value + " is not implemented.") + } + } + if n.Token.Type == godata.FilterTokenLogical { + switch n.Token.Value { + case "eq": + if len(n.Children) != 2 { + return nil, errors.New("Equality match must have two children") + } + if n.Children[0].Token.Type != godata.FilterTokenLiteral { + return nil, errors.New("Equality expected a literal on the lhs") + } + if n.Children[1].Token.Type != godata.FilterTokenString { + return nil, errors.New("Equality expected a string on the rhs") + } + q := bleve.NewTermQuery(n.Children[1].Token.Value) + q.SetField(n.Children[0].Token.Value) + return q, nil + case "and": + q := query.NewConjunctionQuery([]query.Query{}) + for _, child := range n.Children { + subQuery, err := recursiveBuildQuery(child) + if err != nil { + return nil, err + } + if subQuery != nil { + q.AddQuery(subQuery) + } + } + return q, nil + case "or": + q := query.NewDisjunctionQuery([]query.Query{}) + for _, child := range n.Children { + subQuery, err := recursiveBuildQuery(child) + if err != nil { + return nil, err + } + if subQuery != nil { + q.AddQuery(subQuery) + } + } + return q, nil + case "Not": + if len(n.Children) != 1 { + return nil, errors.New("Not filter must have only one child") + } + subQuery, err := recursiveBuildQuery(n.Children[0]) + if err != nil { + return nil, err + } + q := query.NewBooleanQuery(nil, nil, []query.Query{subQuery}) + return q, nil + default: + return nil, godata.NotImplementedError(n.Token.Value + " is not implemented.") + } + } + + return nil, godata.NotImplementedError(n.Token.Value + " is not implemented.") +} diff --git a/pkg/provider/ldap.go b/pkg/provider/ldap.go deleted file mode 100644 index 5454ba99ed..0000000000 --- a/pkg/provider/ldap.go +++ /dev/null @@ -1,180 +0,0 @@ -package provider - -import ( - "fmt" - "strings" - - "github.com/CiscoM31/godata" - "github.com/owncloud/ocis-accounts/pkg/config" - "gopkg.in/ldap.v2" -) - -func init() { - // add (ap)prox filter - godata.GlobalFilterTokenizer = FilterTokenizer() - godata.GlobalFilterParser.DefineOperator("ap", 2, godata.OpAssociationLeft, 4, false) -} - -// LDAPNodeMap is used to convert query tokens into ldap filters according to https://tools.ietf.org/search/rfc4515 -var LDAPNodeMap = map[string]string{ - // 11.2.6.1.1 Built-in Filter Operations according to http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#_Toc31358949 - - // Comparison Operators - "eq": "(%s=%s)", // -> LDAP equal - "ne": "(!(%s=%s))", // -> LDAP NOT equal - //"gt": "(&(%s>=%s)(!(%s=%s)))", // -> TODO can be constructed but requires more parameters - "ge": "(%s>=%s)", // -> LDAP greaterorequal - //"lt": "(&(%s<=%s)(!(%s=%s)))", // -> TODO can be constructed but requires more parameters - "le": "(%s<=%s)", // -> LDAP lessorequal - //"has": "(%s=*)", // -> TODO LDAP present but in odata has looks like "Style has Sales.Color'Yellow'" - //"in": "???", // TODO - - // additional native LDAP Search String Filter Definition according to https://tools.ietf.org/search/rfc4515#section-3 - "ap": "(%s~=%s)", // approx, TODO needs token in parser, odata uses $search instead of $filter for fuzzy search - - // Logical Operators - // While LDAP understands logical filters like (&()()()()) we leave that as an optimization and use at max two params - "and": "(&%s%s)", - "or": "(|%s%s)", - "not": "(!%s)", - - // Arithmetic operators - //"add": "" - //"sub": "" - //"mul": "" - //"div": "" - //"divby": "" - //"mod": "" - - // Grouping operators - - // 11.2.6.1.2 Built-in Query Functions according to http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_BuiltinQueryFunctions - //String and Collection Functions - //"concat": "CONCAT(%s,%s)", - "contains": "(%s=*%s*)", - "endswith": "(%s=*%s)", - //"indexof": "LOCATE(%s)", - //"length": "LENGTH(%s)", - "startswith": "(%s=%s*)", - //"substring": "", - - // - //"tolower": "LOWER(%s)", - //"toupper": "UPPER(%s)", - //"trim": "TRIM(%s)", - //"year": "YEAR(%s)", - //"month": "MONTH(%s)", - //"day": "DAY(%s)", - //"hour": "HOUR(%s)", - //"minute": "MINUTE(%s)", - //"second": "SECOND(%s)", - //"fractionalsecond": "MICROSECOND(%s)", - //"date": "DATE(%s)", - //"time": "TIME(%s)", - //"totaloffsetminutes": "", - //"now": "NOW()", - //"maxdatetime":"", - //"mindatetime":"", - //"totalseconds":"", - //"round": "ROUND(%s)", - //"floor": "FLOOR(%s)", - //"ceiling": "CEIL(%s)", - //"isof": "", // TODO objectclass= - //"cast": "", - //"geo.distance": "", - //"geo.intersects": "", - //"geo.length": "", - //"any": "", - //"all": "", - //"null": "NULL", -} - -// BuildLDAPFilter converts a GoDataFilterQuery into an ldap filter -func BuildLDAPFilter(r *godata.GoDataFilterQuery, c *config.LDAPSchema) (string, error) { - return recursiveBuildFilter(r.Tree, c) -} - -// Builds the filter recursively using DFS -func recursiveBuildFilter(n *godata.ParseNode, c *config.LDAPSchema) (string, error) { - if n.Token.Type == godata.FilterTokenLiteral { - switch n.Token.Value { - case "accountid": - return c.AccountID, nil - case "displayname": - return c.DisplayName, nil - case "username": - return c.Username, nil - case "mail": - return c.Mail, nil - case "groups": - // TODO groups - return "", godata.NotImplementedError(n.Token.Value + " is not implemented.") - case "identities": - // TODO identities - return "", godata.NotImplementedError(n.Token.Value + " is not implemented.") - } - return "", godata.BadRequestError("unknown property " + n.Token.Value) - } - if n.Token.Type == godata.FilterTokenString { - // without leading and ending ' required by odata - // encode LDAP safe - return strings.TrimSuffix(strings.TrimPrefix(ldap.EscapeFilter(n.Token.Value), "'"), "'"), nil - } - if n.Token.Type == godata.FilterTokenInteger { - return n.Token.Value, nil - } - if n.Token.Type == godata.FilterTokenFloat { - return n.Token.Value, nil - } - - if v, ok := LDAPNodeMap[n.Token.Value]; ok { - children := []interface{}{} - // build each child first using DFS - for _, child := range n.Children { - f, err := recursiveBuildFilter(child, c) - if err != nil { - return "", err - } - children = append(children, f) - } - // merge together the children and the current node - result := fmt.Sprintf(v, children...) - return result, nil - } - return "", godata.NotImplementedError(n.Token.Value + " is not implemented.") -} - -// FilterTokenizer creates a tokenizer capable of tokenizing filter statements -// TODO disable tokens we don't handle anyway -func FilterTokenizer() *godata.Tokenizer { - t := godata.Tokenizer{} - t.Add("^[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}T[0-9]{2,2}:[0-9]{2,2}(:[0-9]{2,2}(.[0-9]+)?)?(Z|[+-][0-9]{2,2}:[0-9]{2,2})", godata.FilterTokenDateTime) - t.Add("^-?[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}", godata.FilterTokenDate) - t.Add("^[0-9]{2,2}:[0-9]{2,2}(:[0-9]{2,2}(.[0-9]+)?)?", godata.FilterTokenTime) - t.Add("^\\(", godata.FilterTokenOpenParen) - t.Add("^\\)", godata.FilterTokenCloseParen) - t.Add("^/", godata.FilterTokenNav) - t.Add("^:", godata.FilterTokenColon) - t.Add("^,", godata.FilterTokenComma) - t.Add("^(geo.distance|geo.intersects|geo.length)", godata.FilterTokenFunc) - t.Add("^(substringof|substring|length|indexof)", godata.FilterTokenFunc) - // only change from the global tokenizer is the added ap - t.Add("^(eq|ne|gt|ge|lt|le|and|or|not|has|in|ap)", godata.FilterTokenLogical) - t.Add("^(add|sub|mul|divby|div|mod)", godata.FilterTokenOp) - t.Add("^(contains|endswith|startswith|tolower|toupper|"+ - "trim|concat|year|month|day|hour|minute|second|fractionalseconds|date|"+ - "time|totaloffsetminutes|now|maxdatetime|mindatetime|totalseconds|round|"+ - "floor|ceiling|isof|cast)", godata.FilterTokenFunc) - t.Add("^(any|all)", godata.FilterTokenLambda) - t.Add("^null", godata.FilterTokenNull) - t.Add("^\\$it", godata.FilterTokenIt) - t.Add("^\\$root", godata.FilterTokenRoot) - t.Add("^-?[0-9]+\\.[0-9]+", godata.FilterTokenFloat) - t.Add("^-?[0-9]+", godata.FilterTokenInteger) - t.Add("^'(''|[^'])*'", godata.FilterTokenString) - t.Add("^(true|false)", godata.FilterTokenBoolean) - t.Add("^@*[a-zA-Z][a-zA-Z0-9_.]*", godata.FilterTokenLiteral) // The optional '@' character is used to identify parameter aliases - t.Ignore("^ ", godata.FilterTokenWhitespace) - - return &t -} diff --git a/pkg/provider/ldap_test.go b/pkg/provider/ldap_test.go deleted file mode 100644 index efc67b4e3d..0000000000 --- a/pkg/provider/ldap_test.go +++ /dev/null @@ -1,68 +0,0 @@ -package provider - -import ( - "testing" - - "github.com/CiscoM31/godata" - "github.com/owncloud/ocis-accounts/pkg/config" -) - -var c *config.LDAPSchema - -func init() { - c = &config.LDAPSchema{ - AccountID: "ownclouduuid", - Username: "uid", - Mail: "mail", - DisplayName: "displayname", - } -} - -func TestEQ(t *testing.T) { testLDAPFilters(t, "accountid eq 'a-b-c-d'", "(ownclouduuid=a-b-c-d)") } -func TestNE(t *testing.T) { testLDAPFilters(t, "mail ne 'foo@bar.com'", "(!(mail=foo@bar.com))") } -func TestGE(t *testing.T) { testLDAPFilters(t, "displayname ge 'marie'", "(displayname>=marie)") } -func TestLE(t *testing.T) { testLDAPFilters(t, "username le 'marie'", "(uid<=marie)") } - -//func TestHas(t *testing.T) { testLDAPFilters(t, "Style has Sales.Color'Yellow'", "(foo=*)") } -func TestAP(t *testing.T) { - testLDAPFilters(t, "displayname ap 'einstein'", "(displayname~=einstein)") -} -func TestAND(t *testing.T) { - testLDAPFilters(t, "accountid le 500000 and accountid ge 300000", "(&(ownclouduuid<=500000)(ownclouduuid>=300000))") -} -func TestOR(t *testing.T) { - testLDAPFilters(t, "accountid le 700000 or accountid ge 900000", "(|(ownclouduuid<=700000)(ownclouduuid>=900000))") -} -func TestNOT(t *testing.T) { - // not operator takes precedence over ap, so we need brackets - testLDAPFilters(t, "not ( displayname ap 'einstein' )", "(!(displayname~=einstein))") -} -func TestContains(t *testing.T) { - testLDAPFilters(t, "contains(username,'eins')", "(uid=*eins*)") -} -func TestStartsWith(t *testing.T) { - testLDAPFilters(t, "startswith(username,'eins')", "(uid=eins*)") -} -func TestEndsWith(t *testing.T) { - testLDAPFilters(t, "endswith(username,'eins')", "(uid=*eins)") -} -func TestEncoding(t *testing.T) { - testLDAPFilters(t, "displayname eq 'eins(*)tein'", "(displayname=eins\\28\\2a\\29tein)") -} - -func testLDAPFilters(t *testing.T, have string, want string) { - - var err error - - var q *godata.GoDataFilterQuery - if q, err = godata.ParseFilterString(have); err != nil { - t.Error(err) - } - var filter string - if filter, err = BuildLDAPFilter(q, c); err != nil { - t.Error(err) - } - if filter != want { - t.Error("expected", want, "for", have, "but got", filter) - } -} diff --git a/pkg/provider/tokenizer.go b/pkg/provider/tokenizer.go new file mode 100644 index 0000000000..f4d7c59eff --- /dev/null +++ b/pkg/provider/tokenizer.go @@ -0,0 +1,38 @@ +package provider + +import "github.com/CiscoM31/godata" + +// FilterTokenizer creates a tokenizer capable of tokenizing filter statements +// TODO disable tokens we don't handle anyway +func FilterTokenizer() *godata.Tokenizer { + t := godata.Tokenizer{} + t.Add("^[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}T[0-9]{2,2}:[0-9]{2,2}(:[0-9]{2,2}(.[0-9]+)?)?(Z|[+-][0-9]{2,2}:[0-9]{2,2})", godata.FilterTokenDateTime) + t.Add("^-?[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}", godata.FilterTokenDate) + t.Add("^[0-9]{2,2}:[0-9]{2,2}(:[0-9]{2,2}(.[0-9]+)?)?", godata.FilterTokenTime) + t.Add("^\\(", godata.FilterTokenOpenParen) + t.Add("^\\)", godata.FilterTokenCloseParen) + t.Add("^/", godata.FilterTokenNav) + t.Add("^:", godata.FilterTokenColon) + t.Add("^,", godata.FilterTokenComma) + t.Add("^(geo.distance|geo.intersects|geo.length)", godata.FilterTokenFunc) + t.Add("^(substringof|substring|length|indexof)", godata.FilterTokenFunc) + // only change from the global tokenizer is the added ap + t.Add("^(eq|ne|gt|ge|lt|le|and|or|not|has|in|ap)", godata.FilterTokenLogical) + t.Add("^(add|sub|mul|divby|div|mod)", godata.FilterTokenOp) + t.Add("^(contains|endswith|startswith|tolower|toupper|"+ + "trim|concat|year|month|day|hour|minute|second|fractionalseconds|date|"+ + "time|totaloffsetminutes|now|maxdatetime|mindatetime|totalseconds|round|"+ + "floor|ceiling|isof|cast)", godata.FilterTokenFunc) + t.Add("^(any|all)", godata.FilterTokenLambda) + t.Add("^null", godata.FilterTokenNull) + t.Add("^\\$it", godata.FilterTokenIt) + t.Add("^\\$root", godata.FilterTokenRoot) + t.Add("^-?[0-9]+\\.[0-9]+", godata.FilterTokenFloat) + t.Add("^-?[0-9]+", godata.FilterTokenInteger) + t.Add("^'(''|[^'])*'", godata.FilterTokenString) + t.Add("^(true|false)", godata.FilterTokenBoolean) + t.Add("^@*[a-zA-Z][a-zA-Z0-9_.]*", godata.FilterTokenLiteral) // The optional '@' character is used to identify parameter aliases + t.Ignore("^ ", godata.FilterTokenWhitespace) + + return &t +} diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 5d868566ff..b61b71046e 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -2,12 +2,16 @@ package service import ( "context" - "crypto/tls" + "encoding/json" "errors" - "fmt" + "io/ioutil" + "os" + "path/filepath" "regexp" "github.com/CiscoM31/godata" + "github.com/blevesearch/bleve" + "github.com/blevesearch/bleve/search/query" "github.com/golang/protobuf/ptypes/empty" mclient "github.com/micro/go-micro/v2/client" "github.com/owncloud/ocis-accounts/pkg/config" @@ -16,13 +20,55 @@ import ( olog "github.com/owncloud/ocis-pkg/v2/log" settings "github.com/owncloud/ocis-settings/pkg/proto/v0" "github.com/rs/zerolog/log" - "gopkg.in/ldap.v2" ) // New returns a new instance of Service func New(cfg *config.Config) Service { + // read all user and group records + + // for now recreate index on every start + os.RemoveAll(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve")) + os.MkdirAll(filepath.Join(cfg.Server.AccountsDataPath, "accounts"), 0700) + + mapping := bleve.NewIndexMapping() + // TODO don't bother to store fields as we will load the account from disk + index, err := bleve.New(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve"), mapping) + if err != nil { + panic(err) + } + f, err := os.Open(filepath.Join(cfg.Server.AccountsDataPath, "accounts")) + if err != nil { + log.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not open acconts folder") + panic(err) + } + list, err := f.Readdir(-1) + f.Close() + if err != nil { + log.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not list accounts folder") + panic(err) + } + for _, file := range list { + path := filepath.Join(cfg.Server.AccountsDataPath, "accounts", file.Name()) + data, err := ioutil.ReadFile(path) + if err != nil { + log.Error().Err(err).Str("path", path).Msg("could not read account") + continue + } + a := proto.Account{} + err = json.Unmarshal(data, &a) + if err != nil { + log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") + continue + } + log.Debug().Interface("account", a).Msg("found account") + index.Index(a.Id, a) + } + + // TODO watch folders for new records + s := Service{ Config: cfg, + index: index, } return s @@ -31,53 +77,7 @@ func New(cfg *config.Config) Service { // Service implements the AccountsServiceHandler interface type Service struct { Config *config.Config -} - -func (s Service) getBoundConnection(binddn string, password string) (l *ldap.Conn, err error) { - l, err = ldap.DialTLS("tcp", fmt.Sprintf("%s:%d", s.Config.LDAP.Hostname, s.Config.LDAP.Port), &tls.Config{InsecureSkipVerify: true}) - if err != nil { - return nil, err - } - - err = l.Bind(binddn, password) - if err != nil { - l.Close() - return nil, err - } - - return -} - -func (s Service) lookupDN(username string) (binddn string, err error) { - l, err := s.getBoundConnection(s.Config.LDAP.BindDN, s.Config.LDAP.BindPassword) - if err != nil { - return "", err - } - defer l.Close() - - filter := fmt.Sprintf("(%s=%s)", s.Config.LDAP.Schema.Username, ldap.EscapeFilter(username)) - - // Search for the given username - searchRequest := ldap.NewSearchRequest( - s.Config.LDAP.BaseDN, - ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, - filter, - []string{"dn"}, - nil, - ) - - sr, err := l.Search(searchRequest) - if err != nil { - return "", err - } - - switch len(sr.Entries) { - case 0: // TODO return not found error - case 1: - return sr.Entries[0].DN, nil - default: // TODO return too many results error? - } - return "", fmt.Errorf("dn not found for %s", filter) + index bleve.Index } // the auth request is currently hardcoded and has to macth this regex @@ -89,82 +89,50 @@ var authQuery = regexp.MustCompile(`^username eq '(.*)' and password eq '(.*)'$` // TODO id vs onpremiseimmutableid func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, res *proto.ListAccountsResponse) (err error) { - var binddn string - var password string - - // check if this looks like an auth request - match := authQuery.FindStringSubmatch(in.Query) - if len(match) == 3 { - - binddn, err = s.lookupDN(match[1]) - if err != nil { - log.Error().Err(err).Msg("ListAccounts with auth request") - return - } - log.Debug().Str("username", match[1]).Str("binddn", binddn).Msg("ListAccounts with auth request") - - password = match[2] - // remove password from query - in.Query = fmt.Sprintf("username eq '%s'", match[1]) - } else { - log.Debug().Str("query", in.Query).Int32("page-size", in.PageSize).Str("page-token", in.PageToken).Msg("ListAccounts") - binddn = s.Config.LDAP.BindDN - password = s.Config.LDAP.BindPassword - } - - filter := "(&)" // see Absolute True and False Filters in https://tools.ietf.org/html/rfc4526#section-2 + var query query.Query if in.Query != "" { // parse the query like an odata filter var q *godata.GoDataFilterQuery if q, err = godata.ParseFilterString(in.Query); err != nil { + log.Error().Err(err).Msg("could not parse query") return } - // convert to ldap filter - filter, err = provider.BuildLDAPFilter(q, &s.Config.LDAP.Schema) + // convert to bleve query + query, err = provider.BuildBleveQuery(q) if err != nil { + log.Error().Err(err).Msg("could not build bleve query") return } + } else { + query = bleve.NewMatchAllQuery() } - log.Debug().Str("filter", filter).Msg("using filter") + log.Debug().Interface("query", query).Msg("using query") - var l *ldap.Conn - l, err = s.getBoundConnection(binddn, password) - if err != nil { - return - } - defer l.Close() - - // TODO combine the parsed query with a query filter from the config, eg. fmt.Sprintf(s.Config.LDAP.UserFilter, clientID) - - // Search for the given clientID - searchRequest := ldap.NewSearchRequest( - s.Config.LDAP.BaseDN, - ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, - filter, - []string{"dn", s.Config.LDAP.Schema.AccountID, s.Config.LDAP.Schema.Username, s.Config.LDAP.Schema.DisplayName, s.Config.LDAP.Schema.Mail, s.Config.LDAP.Schema.Groups}, // TODO Groups, Identities? - nil, - ) - - sr, err := l.Search(searchRequest) - if err != nil { - return err - } - - log.Debug().Interface("entries", sr.Entries).Msg("entries") + searchRequest := bleve.NewSearchRequest(query) + searchResult, err := s.index.Search(searchRequest) + log.Debug().Interface("result", searchResult).Msg("result") res.Accounts = make([]*proto.Account, 0) - for i := range sr.Entries { - res.Accounts = append(res.Accounts, &proto.Account{ - Id: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.AccountID), - // TODO identities - Username: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.Username), - DisplayName: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.DisplayName), - Mail: sr.Entries[i].GetAttributeValue(s.Config.LDAP.Schema.Mail), - //Groups: sr.Entries[i].GetAttributeValues(s.Config.LDAP.Schema.Groups), - }) + + for _, hit := range searchResult.Hits { + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", hit.ID) + + data, err := ioutil.ReadFile(path) + if err != nil { + log.Error().Err(err).Str("path", path).Msg("could not read account") + continue + } + a := proto.Account{} + err = json.Unmarshal(data, &a) + if err != nil { + log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") + continue + } + log.Debug().Interface("account", a).Msg("found account") + res.Accounts = append(res.Accounts, &a) } return nil @@ -172,45 +140,7 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest // GetAccount implements the AccountsServiceHandler interface func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res *proto.Account) (err error) { - - l, err := s.getBoundConnection(s.Config.LDAP.BindDN, s.Config.LDAP.BindPassword) - if err != nil { - return err - } - defer l.Close() - - // TODO combine the parsed query with a query filter from the config, eg. fmt.Sprintf(s.Config.LDAP.UserFilter, clientID) - filter := fmt.Sprintf("(%s=%s)", s.Config.LDAP.Schema.AccountID, ldap.EscapeFilter(req.Id)) - - // Search for the given clientID - searchRequest := ldap.NewSearchRequest( - s.Config.LDAP.BaseDN, - ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, - filter, - []string{"dn", s.Config.LDAP.Schema.AccountID, s.Config.LDAP.Schema.Username, s.Config.LDAP.Schema.DisplayName, s.Config.LDAP.Schema.Mail, s.Config.LDAP.Schema.Groups}, // TODO Groups, Identities? - nil, - ) - - sr, err := l.Search(searchRequest) - if err != nil { - return err - } - - log.Debug().Interface("entries", sr.Entries).Msg("entries") - - switch len(sr.Entries) { - case 0: // TODO return not found error - case 1: - res.Id = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.AccountID) - // TODO identities? - res.Username = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.Username) - res.DisplayName = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.DisplayName) - res.Mail = sr.Entries[0].GetAttributeValue(s.Config.LDAP.Schema.Mail) - // TODO groups - default: // TODO return too many results error? - } - - return nil + return errors.New("not implemented") } // CreateAccount implements the AccountsServiceHandler interface From a27ca2fe5ccedbd4fd00cb8e75b5a4192d636cee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 16 Jun 2020 18:57:50 +0200 Subject: [PATCH 155/407] implement create and delete api MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 2 + go.sum | 4 + pkg/proto/v0/accounts.pb.go | 255 ++++++++++++++++++------------------ pkg/proto/v0/accounts.proto | 3 +- pkg/service/v0/service.go | 142 ++++++++++++++++++-- 5 files changed, 270 insertions(+), 136 deletions(-) diff --git a/go.mod b/go.mod index f07cb1c9c4..a389cf138e 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect github.com/go-test/deep v1.0.6 // indirect + github.com/gofrs/uuid v3.2.0+incompatible github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/protobuf v1.4.1 github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect @@ -27,6 +28,7 @@ require ( github.com/rs/zerolog v1.17.2 github.com/spf13/viper v1.6.3 github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect + github.com/tredoe/osutil v1.0.5 google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab // indirect ) diff --git a/go.sum b/go.sum index af773073ee..b06f9ae12d 100644 --- a/go.sum +++ b/go.sum @@ -765,6 +765,10 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc h1:yUaosF github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= +github.com/tredoe/fileutil v1.0.0/go.mod h1:PBayWPFCURwkmW0u6E8E8C6Jtd9ZzWq/U1iMa6BLRPg= +github.com/tredoe/goutil v0.0.0-20200111155331-68cefb6d3cdc/go.mod h1:dp4VPOLeEFYbsf1ikgd+uytWDnpCdMiTHMg6mh7hHuQ= +github.com/tredoe/osutil v1.0.5 h1:mfXjHBJU46GoJDOUcHyV895fauUuVikR9U8yRbGBrqw= +github.com/tredoe/osutil v1.0.5/go.mod h1:DDO4G4Mwys6NJi5JmEVLnfFbQWIfVVri8L6HuXb/v98= github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index ff52efda74..ac05a115ab 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -372,7 +372,8 @@ type Account struct { DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // The username // posixaccount MUST uid - Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` + PreferredName string `protobuf:"bytes,7,opt,name=preferred_name,json=preferredName,proto3" json:"preferred_name,omitempty"` + // TODO rename to on_premise_? or move to extension? see https://docs.microsoft.com/en-us/graph/extensibility-open-users // used for exposing the user using ldap // posixaccount MUST uidnumber UidNumber int64 `protobuf:"varint,8,opt,name=uid_number,json=uidNumber,proto3" json:"uid_number,omitempty"` @@ -512,9 +513,9 @@ func (m *Account) GetDisplayName() string { return "" } -func (m *Account) GetUsername() string { +func (m *Account) GetPreferredName() string { if m != nil { - return m.Username + return m.PreferredName } return "" } @@ -1684,128 +1685,128 @@ func init() { func init() { proto.RegisterFile("accounts.proto", fileDescriptor_e1e7723af4c007b7) } var fileDescriptor_e1e7723af4c007b7 = []byte{ - // 1955 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xeb, 0x6e, 0xdc, 0xc6, - 0x15, 0xc6, 0x4a, 0x96, 0xb4, 0x3a, 0x2b, 0x59, 0xd2, 0x68, 0x2d, 0x51, 0xab, 0x8b, 0x37, 0xf4, - 0x25, 0xb2, 0x94, 0x4a, 0x86, 0x9a, 0xf4, 0xe2, 0x34, 0x05, 0x64, 0xc9, 0x76, 0x85, 0xda, 0x8e, - 0xb0, 0x72, 0x1a, 0xf4, 0x82, 0x10, 0x14, 0x39, 0xbb, 0x9a, 0x78, 0x79, 0xc9, 0xcc, 0x70, 0xad, - 0x4d, 0x11, 0xa0, 0xe8, 0x0b, 0xf4, 0x47, 0x1f, 0xa4, 0x97, 0x17, 0xe9, 0x8f, 0xbe, 0x40, 0x7e, - 0xf4, 0x57, 0xdf, 0xa1, 0x40, 0x31, 0x17, 0x92, 0xc3, 0xe5, 0x5e, 0x52, 0x24, 0x40, 0x61, 0x20, - 0xbf, 0xb4, 0x9c, 0x73, 0xe6, 0xfb, 0xce, 0x9c, 0x73, 0x38, 0xf3, 0x71, 0x04, 0x37, 0x5d, 0xcf, - 0x8b, 0x92, 0x90, 0xb3, 0x83, 0x98, 0x46, 0x3c, 0x42, 0x55, 0x86, 0x39, 0x27, 0x61, 0x87, 0x35, - 0x6e, 0x77, 0xa2, 0xa8, 0xd3, 0xc5, 0x87, 0x6e, 0x4c, 0x0e, 0xdb, 0x04, 0x77, 0x7d, 0xe7, 0x12, - 0x5f, 0xb9, 0x3d, 0x12, 0x51, 0xe5, 0xda, 0xd8, 0x32, 0x1c, 0xdc, 0x30, 0x8c, 0xb8, 0xcb, 0x49, - 0x14, 0x6a, 0xa0, 0xc6, 0xa6, 0xb6, 0xca, 0xa7, 0xcb, 0xa4, 0x7d, 0x88, 0x83, 0x98, 0xf7, 0xb5, - 0xb1, 0x39, 0x68, 0x54, 0x04, 0x81, 0xcb, 0x5e, 0x6b, 0x8f, 0xdb, 0x83, 0x1e, 0x9c, 0x04, 0x98, - 0x71, 0x37, 0x88, 0x95, 0x83, 0xfd, 0xb7, 0x0a, 0xac, 0x3e, 0x27, 0x8c, 0x1f, 0xeb, 0xf8, 0x5b, - 0xf8, 0x8b, 0x04, 0x33, 0x8e, 0x9a, 0x30, 0x1f, 0xbb, 0x1d, 0xec, 0x30, 0xf2, 0x25, 0xb6, 0x2a, - 0xcd, 0xca, 0xee, 0xcc, 0xe3, 0xe9, 0xaf, 0x8f, 0x2b, 0xad, 0xaa, 0x18, 0xbd, 0x20, 0x5f, 0x62, - 0x64, 0x03, 0x48, 0x0f, 0x1e, 0xbd, 0xc6, 0xa1, 0x35, 0xd5, 0xac, 0xec, 0xce, 0x2b, 0x17, 0x39, - 0xf1, 0x95, 0x18, 0x45, 0x3f, 0x05, 0xc8, 0x43, 0xb2, 0xa6, 0x9b, 0x95, 0xdd, 0xda, 0x51, 0xe3, - 0x40, 0xc5, 0x74, 0x90, 0xc6, 0x74, 0xf0, 0x54, 0xb8, 0xbc, 0x70, 0xd9, 0xeb, 0xd6, 0x7c, 0x3b, - 0xfd, 0x89, 0x36, 0x60, 0xe6, 0x8b, 0x04, 0xd3, 0xbe, 0x75, 0x23, 0x47, 0x56, 0x23, 0x76, 0x00, - 0xf5, 0x62, 0xc8, 0x2c, 0x8e, 0x42, 0x86, 0xd1, 0x0f, 0xa0, 0x9a, 0x96, 0xc1, 0xaa, 0x34, 0xa7, - 0x77, 0x6b, 0x47, 0x2b, 0x07, 0x69, 0x1d, 0x0e, 0xb4, 0x77, 0x2b, 0x73, 0x41, 0xf7, 0x61, 0x29, - 0xc4, 0xd7, 0xdc, 0x19, 0x5c, 0x45, 0x6b, 0x51, 0x0c, 0x9f, 0xa7, 0x8b, 0xb0, 0xef, 0xc0, 0xca, - 0x33, 0x9c, 0xb2, 0xa5, 0xf9, 0xb9, 0x09, 0x53, 0xc4, 0x97, 0x89, 0x99, 0x6f, 0x4d, 0x11, 0xdf, - 0xbe, 0x80, 0xfa, 0x09, 0xc5, 0x2e, 0xc7, 0xe3, 0xfd, 0xd0, 0x3e, 0xcc, 0xe9, 0x00, 0x24, 0xd9, - 0xd0, 0x10, 0x53, 0x0f, 0xfb, 0x0f, 0x15, 0xa8, 0x7f, 0x12, 0xfb, 0x65, 0x54, 0x03, 0xa5, 0x32, - 0x09, 0x05, 0x7d, 0x08, 0xb5, 0x44, 0x82, 0xa8, 0x2a, 0x4c, 0x4d, 0xac, 0x02, 0x28, 0x77, 0xf1, - 0xdb, 0xbe, 0x0f, 0xf5, 0x53, 0xdc, 0xc5, 0x93, 0xd6, 0x65, 0xff, 0x67, 0x01, 0xe6, 0xb4, 0x4b, - 0x69, 0xcd, 0xef, 0xc2, 0x92, 0x8e, 0xc5, 0xc1, 0xa1, 0x7b, 0xd9, 0xc5, 0xbe, 0x0c, 0xa2, 0xda, - 0x4a, 0xdf, 0x9a, 0x27, 0x6a, 0x14, 0x1d, 0xc0, 0x2a, 0x61, 0x0e, 0xc5, 0x2c, 0x4a, 0xa8, 0x87, - 0x9d, 0x74, 0x89, 0xd3, 0xd2, 0x79, 0x85, 0x88, 0x4a, 0x4b, 0x4b, 0x4a, 0x74, 0x07, 0x16, 0x3d, - 0x91, 0x74, 0x12, 0x85, 0x0e, 0xef, 0xc7, 0x58, 0xf5, 0x4a, 0x6b, 0x21, 0x1d, 0x7c, 0xd5, 0x8f, - 0x31, 0x7a, 0x1f, 0x80, 0xf8, 0x38, 0xe4, 0x84, 0x13, 0xcc, 0xac, 0x19, 0xd9, 0x17, 0xf5, 0x3c, - 0x5d, 0x67, 0x99, 0xad, 0x65, 0xf8, 0xa1, 0x77, 0x60, 0xc1, 0x27, 0x2c, 0xee, 0xba, 0x7d, 0x27, - 0x74, 0x03, 0x6c, 0xcd, 0x4a, 0xe4, 0x9a, 0x1e, 0x7b, 0xe9, 0x06, 0x18, 0x35, 0xa0, 0x9a, 0x30, - 0x4c, 0xa5, 0x79, 0x4e, 0x9a, 0xb3, 0x67, 0xb4, 0x0d, 0x90, 0x10, 0xdf, 0x09, 0x93, 0xe0, 0x12, - 0x53, 0xab, 0xda, 0xac, 0xec, 0x4e, 0xb7, 0xe6, 0x13, 0xe2, 0xbf, 0x94, 0x03, 0xc2, 0xdc, 0xc9, - 0xcd, 0xf3, 0xca, 0xdc, 0xc9, 0xcc, 0x08, 0x6e, 0x04, 0x2e, 0xe9, 0x5a, 0x20, 0x51, 0xe5, 0x6f, - 0xd4, 0x84, 0x9a, 0x8f, 0x99, 0x47, 0x49, 0x2c, 0x56, 0x66, 0xd5, 0x74, 0x3c, 0xf9, 0x10, 0x3a, - 0x85, 0xe5, 0xd8, 0x65, 0xec, 0x4d, 0x44, 0x7d, 0x27, 0xa6, 0x51, 0x9b, 0x74, 0xb1, 0xb5, 0x20, - 0x8b, 0xbd, 0x91, 0x2f, 0xf7, 0x5c, 0x7b, 0x9c, 0x2b, 0x87, 0xd6, 0x52, 0x5c, 0x1c, 0x40, 0xfb, - 0x50, 0x0d, 0xb0, 0x88, 0xe2, 0xe3, 0xb6, 0xb5, 0x28, 0x93, 0xb5, 0x94, 0xcf, 0x7e, 0x46, 0xa3, - 0x24, 0x6e, 0x65, 0x0e, 0xe8, 0x29, 0xac, 0xc8, 0x5c, 0x63, 0xdf, 0x91, 0x0d, 0x26, 0x76, 0x17, - 0x6b, 0x79, 0x44, 0x83, 0xbd, 0x4a, 0xb7, 0x9e, 0xd6, 0x92, 0x9e, 0x74, 0xea, 0x72, 0x2c, 0x46, - 0x05, 0x8e, 0x2f, 0xbb, 0xcc, 0xc4, 0x59, 0x99, 0x8c, 0xa3, 0x27, 0x65, 0x38, 0x3f, 0x06, 0x2b, - 0x0a, 0x9d, 0x98, 0xe2, 0x80, 0x30, 0xcc, 0x1c, 0xd6, 0x0f, 0xbd, 0xac, 0xe5, 0xea, 0xb2, 0x8b, - 0x6e, 0x45, 0xe1, 0xb9, 0x36, 0x5f, 0xf4, 0x43, 0x2f, 0xed, 0xbc, 0x81, 0x89, 0x24, 0x08, 0x12, - 0x2e, 0x2c, 0x0e, 0xf1, 0xad, 0x5b, 0x32, 0xd5, 0xc6, 0xc4, 0xb3, 0xd4, 0x7a, 0xe6, 0xa3, 0x27, - 0x70, 0xbb, 0xc0, 0x88, 0xbd, 0x84, 0x12, 0xde, 0x77, 0x54, 0x2b, 0xb5, 0x09, 0xa6, 0xd6, 0x9a, - 0x9c, 0xbf, 0x65, 0x10, 0x6b, 0xa7, 0xb3, 0xcc, 0x07, 0x9d, 0xc0, 0x8e, 0x09, 0xe3, 0x13, 0x26, - 0x12, 0x9e, 0x10, 0x76, 0x85, 0x7d, 0xd5, 0x80, 0xeb, 0x12, 0x65, 0x33, 0x47, 0x39, 0x35, 0x7d, - 0x64, 0x43, 0xfe, 0x1c, 0xb6, 0x0a, 0xb1, 0xb8, 0x41, 0xfa, 0x0a, 0x29, 0x08, 0x4b, 0x42, 0x58, - 0x46, 0x20, 0x6e, 0xa0, 0x5f, 0x25, 0x39, 0xff, 0x03, 0x58, 0x2f, 0x04, 0x11, 0x05, 0x2e, 0x09, - 0xd5, 0xd4, 0x0d, 0x39, 0xb5, 0x6e, 0xb0, 0x4b, 0xa3, 0x9c, 0x76, 0x5a, 0x4c, 0x81, 0x78, 0x07, - 0x9c, 0x98, 0x92, 0xd0, 0x23, 0xb1, 0xdb, 0x55, 0xd3, 0x1b, 0x83, 0xc1, 0x7f, 0xc2, 0x30, 0x3d, - 0x4f, 0x7d, 0x24, 0x8a, 0x53, 0x44, 0xe9, 0xba, 0x8c, 0xab, 0xfa, 0xe5, 0x0d, 0xb1, 0x35, 0xb1, - 0x21, 0x1a, 0x39, 0xc3, 0x73, 0x97, 0x71, 0x51, 0xe1, 0xac, 0x37, 0xba, 0x45, 0x82, 0x98, 0x46, - 0x3d, 0xc2, 0x48, 0x14, 0x92, 0xb0, 0xe3, 0x60, 0x4a, 0x23, 0xca, 0xac, 0x6d, 0xd9, 0xef, 0xf7, - 0xf2, 0x7e, 0xff, 0x38, 0x83, 0x3b, 0x37, 0xdc, 0x9f, 0x08, 0x6f, 0xb3, 0xa0, 0x25, 0x23, 0x13, - 0x5b, 0x19, 0xbe, 0xe6, 0x62, 0x37, 0xe8, 0xaa, 0x8c, 0x30, 0xee, 0x72, 0x6c, 0xed, 0xca, 0x44, - 0xac, 0xa4, 0x26, 0x91, 0x86, 0x0b, 0x61, 0x40, 0x04, 0xee, 0x0e, 0xf1, 0x77, 0xbc, 0x2b, 0x37, - 0xec, 0x60, 0x23, 0x07, 0x0f, 0x26, 0xe6, 0xe0, 0x76, 0x09, 0xfc, 0x44, 0x82, 0x64, 0x89, 0xe8, - 0xc0, 0x1d, 0x8a, 0xdb, 0x14, 0xb3, 0x2b, 0x75, 0xea, 0x31, 0xa7, 0xe7, 0x76, 0x89, 0xef, 0xb4, - 0x69, 0x14, 0x18, 0x4c, 0x3f, 0x9b, 0xc8, 0xb4, 0xa3, 0x61, 0xe4, 0x31, 0xc9, 0x7e, 0x25, 0x40, - 0x9e, 0xd2, 0x28, 0xc8, 0x88, 0x3e, 0x87, 0x7b, 0x8c, 0x74, 0x42, 0x87, 0x84, 0x0e, 0xc3, 0x4c, - 0xe4, 0x67, 0x04, 0xd5, 0x47, 0x93, 0x17, 0x25, 0x80, 0xce, 0xc2, 0x0b, 0x0d, 0x53, 0xe2, 0xb2, - 0x39, 0x40, 0xbe, 0x93, 0xa3, 0x26, 0x2c, 0xa4, 0xcc, 0xf2, 0x5c, 0x50, 0x67, 0x11, 0x28, 0x10, - 0x79, 0x2a, 0xac, 0xc1, 0x2c, 0x61, 0x2c, 0xc1, 0x54, 0x9f, 0xf9, 0xfa, 0x09, 0xbd, 0x07, 0x48, - 0xfd, 0x72, 0x5c, 0x26, 0xdc, 0xb1, 0x2f, 0xb6, 0x80, 0x69, 0xe9, 0xb3, 0xac, 0x2c, 0xc7, 0xda, - 0x70, 0xe6, 0xdb, 0x5f, 0x4f, 0xc1, 0xd2, 0xc0, 0x8e, 0x2a, 0x8e, 0x85, 0x74, 0x4f, 0xd5, 0xbc, - 0xd9, 0x33, 0xfa, 0x0c, 0x76, 0x64, 0x63, 0x67, 0xfb, 0x74, 0xa9, 0xbe, 0x53, 0x93, 0x7b, 0x5c, - 0x20, 0xa4, 0xa4, 0x03, 0xa5, 0xdd, 0x87, 0x95, 0xfc, 0x08, 0x88, 0xba, 0xc4, 0x13, 0x47, 0xde, - 0x74, 0x73, 0x5a, 0x04, 0x9f, 0x6d, 0xf4, 0x7a, 0x1c, 0x9d, 0x81, 0xdd, 0x8e, 0xc4, 0x39, 0xab, - 0x83, 0xc8, 0x66, 0x4a, 0x55, 0xa4, 0xf3, 0x27, 0x8f, 0xd4, 0x6a, 0x6b, 0x5b, 0x7a, 0x2a, 0xb6, - 0x94, 0xfb, 0x25, 0xbe, 0xe6, 0x17, 0x32, 0xa3, 0xe8, 0xd7, 0xb0, 0x3f, 0x19, 0xca, 0x79, 0x43, - 0xf8, 0x95, 0x13, 0xb4, 0x5d, 0x6b, 0x46, 0x62, 0xde, 0x1d, 0x8b, 0xf9, 0x29, 0xe1, 0x57, 0x2f, - 0xda, 0xae, 0xfd, 0x97, 0x0a, 0xac, 0x08, 0xb5, 0x27, 0x8f, 0x9e, 0xb7, 0x42, 0x9e, 0x62, 0x40, - 0x66, 0xc0, 0x5a, 0x9c, 0xbe, 0x0b, 0xb3, 0x1d, 0x39, 0xa2, 0xa5, 0x69, 0xe9, 0x54, 0xd5, 0xe6, - 0x6f, 0x2c, 0x4b, 0xdf, 0x81, 0xa5, 0x67, 0x58, 0xb1, 0x8c, 0x12, 0x65, 0xbf, 0x04, 0xa4, 0x44, - 0xe9, 0x38, 0x2f, 0x74, 0x0f, 0x66, 0x24, 0xb5, 0xee, 0xbd, 0x52, 0x60, 0xca, 0x6a, 0x5f, 0x03, - 0x52, 0x5a, 0xb4, 0x00, 0x96, 0x4d, 0xae, 0x8c, 0x9b, 0xfc, 0xed, 0x34, 0xe8, 0x5d, 0x40, 0x4a, - 0x83, 0x8e, 0x5d, 0xac, 0x0d, 0xcb, 0xc7, 0xbe, 0xff, 0x42, 0x4a, 0x93, 0x51, 0x3e, 0xf7, 0x60, - 0xb5, 0x85, 0x83, 0xa8, 0x87, 0xc7, 0xbb, 0xfd, 0xb5, 0xa2, 0x4a, 0xa8, 0xbc, 0xde, 0x8a, 0xa6, - 0xfb, 0x5c, 0x7d, 0xc6, 0x65, 0x11, 0xeb, 0xae, 0xdb, 0x87, 0x39, 0x25, 0xd6, 0xc6, 0x7c, 0x11, - 0xa5, 0x1e, 0xdf, 0xb8, 0xf3, 0xfe, 0x5d, 0x85, 0x19, 0x59, 0x8a, 0x52, 0x2b, 0x0d, 0xaa, 0xe6, - 0xa9, 0xb2, 0x6a, 0x36, 0x22, 0x9a, 0x9e, 0x18, 0xd1, 0x03, 0x98, 0x8d, 0xde, 0x84, 0xc2, 0xf7, - 0xc6, 0x28, 0x5f, 0xed, 0x30, 0xa8, 0x8f, 0x67, 0xca, 0xfa, 0xb8, 0x28, 0xba, 0x67, 0x07, 0x45, - 0xf7, 0x50, 0x2d, 0x3b, 0xf7, 0x1d, 0x69, 0xd9, 0xea, 0xff, 0xae, 0x65, 0x9f, 0x43, 0x1d, 0x5f, - 0xc7, 0x84, 0xaa, 0xcf, 0x9b, 0x1c, 0x6a, 0x7e, 0x22, 0x14, 0xca, 0xe7, 0x65, 0x68, 0x1f, 0xc0, - 0xfa, 0x15, 0xf1, 0xb1, 0x3a, 0x79, 0x5d, 0xdf, 0xa7, 0x98, 0x31, 0xa7, 0x4b, 0x18, 0x67, 0xf2, - 0x2b, 0xa3, 0xda, 0xaa, 0x0b, 0xb3, 0x38, 0x52, 0x8f, 0x95, 0x51, 0x74, 0x13, 0x43, 0x3b, 0x00, - 0x42, 0xd9, 0x5c, 0x92, 0x2e, 0xe1, 0x7d, 0xfd, 0xd1, 0x61, 0x8c, 0x7c, 0x2f, 0xb8, 0xff, 0x1f, - 0x82, 0xfb, 0x27, 0xb0, 0x61, 0x4e, 0x0b, 0x31, 0x77, 0x2e, 0x49, 0xc4, 0x4c, 0xa9, 0x6d, 0x24, - 0xef, 0x25, 0xe6, 0x8f, 0x49, 0xc4, 0xe4, 0xcc, 0x93, 0xc9, 0x22, 0x7b, 0x53, 0xce, 0xff, 0x96, - 0x42, 0x7a, 0xeb, 0x3b, 0x13, 0xd2, 0xf6, 0x3f, 0x2a, 0xb0, 0x39, 0x66, 0xb6, 0x90, 0x5b, 0x9e, - 0xcb, 0x71, 0x27, 0xa2, 0xfd, 0x54, 0x6e, 0xa5, 0xcf, 0xe8, 0x17, 0x80, 0x22, 0xcf, 0x4b, 0x28, - 0x2d, 0xbc, 0x8b, 0x93, 0x25, 0xd6, 0x72, 0x3a, 0x2b, 0x5b, 0xf3, 0xfb, 0xb0, 0x16, 0xd3, 0x28, - 0xc6, 0x94, 0xf7, 0x1d, 0xcf, 0x4d, 0x58, 0xb6, 0x56, 0x2d, 0x0d, 0xeb, 0xa9, 0xf5, 0x44, 0x19, - 0x55, 0x6c, 0x75, 0x98, 0xe9, 0xb9, 0xdd, 0x24, 0xbd, 0x97, 0x50, 0x0f, 0x47, 0x7f, 0xba, 0x01, - 0x4b, 0xe9, 0xdd, 0xd5, 0x05, 0xa6, 0x3d, 0xe2, 0x61, 0xe4, 0xc1, 0x82, 0x79, 0xa5, 0x85, 0xb6, - 0xf3, 0xd4, 0x0d, 0xb9, 0x9d, 0x6b, 0xec, 0x8c, 0x32, 0xab, 0x6d, 0xdf, 0xae, 0xff, 0xf1, 0x9f, - 0xff, 0xfa, 0xf3, 0xd4, 0x4d, 0xb4, 0x70, 0xd8, 0x7b, 0x78, 0x98, 0x5d, 0x78, 0xfd, 0x0e, 0x20, - 0xbf, 0xc8, 0x42, 0x9b, 0xc6, 0x51, 0x3d, 0x78, 0xbd, 0xd5, 0x28, 0x6f, 0xb4, 0xf6, 0x8e, 0xc4, - 0xb4, 0xd0, 0xaa, 0x89, 0x79, 0xf8, 0x7b, 0xe2, 0x7f, 0xb4, 0xf7, 0xd5, 0xa3, 0xca, 0x1e, 0x72, - 0x61, 0xb1, 0x70, 0x03, 0x86, 0x8c, 0x20, 0x87, 0x5d, 0x8d, 0x0d, 0xe3, 0xd8, 0x96, 0x1c, 0xeb, - 0x76, 0x21, 0xee, 0x47, 0xd9, 0x4d, 0x56, 0x0c, 0x8b, 0x85, 0xeb, 0x30, 0x93, 0x62, 0xd8, 0x3d, - 0xd9, 0x30, 0x8a, 0xf7, 0x24, 0xc5, 0xfd, 0xa3, 0xcd, 0xe2, 0x32, 0xf4, 0xaf, 0x03, 0xb5, 0x9c, - 0x8c, 0xd1, 0x87, 0xc5, 0xc2, 0xf5, 0x97, 0xc9, 0x38, 0xec, 0x5e, 0xac, 0xb1, 0x56, 0x6a, 0xab, - 0x27, 0x41, 0xcc, 0xfb, 0xf6, 0xa6, 0xa4, 0xbd, 0xb5, 0x37, 0x2c, 0x7b, 0x47, 0x7f, 0x9f, 0x85, - 0x45, 0x25, 0x17, 0xd3, 0x7e, 0xf8, 0x2d, 0x40, 0xae, 0x21, 0xcd, 0x52, 0x95, 0xa4, 0x70, 0x63, - 0x6b, 0xb8, 0x51, 0x77, 0x02, 0x92, 0xbc, 0x0b, 0x08, 0x04, 0xaf, 0x56, 0x98, 0xaf, 0xa0, 0x9a, - 0x2a, 0x47, 0xb4, 0x51, 0xe8, 0x02, 0x53, 0x60, 0x35, 0x06, 0xb5, 0x9c, 0xbd, 0x25, 0xb1, 0xd6, - 0xd0, 0x4a, 0x8e, 0x65, 0xd4, 0xff, 0x53, 0xa8, 0x19, 0x62, 0x13, 0x6d, 0x0d, 0x56, 0x7f, 0x3c, - 0xf6, 0x86, 0xc4, 0x5e, 0xb5, 0x8d, 0x38, 0x1f, 0x69, 0xed, 0xe8, 0x43, 0xcd, 0x10, 0x9e, 0x26, - 0x70, 0x59, 0x8f, 0x96, 0x81, 0xef, 0x4b, 0xe0, 0xe6, 0xd1, 0xba, 0x19, 0xb4, 0xfc, 0xab, 0x6b, - 0xad, 0x59, 0x3e, 0x83, 0x9a, 0x21, 0x32, 0x4d, 0x96, 0xb2, 0xf6, 0x1c, 0x59, 0x65, 0xbd, 0x8a, - 0xbd, 0x72, 0x86, 0x90, 0x07, 0xf3, 0x99, 0x3c, 0x45, 0x0d, 0xa3, 0x2f, 0x07, 0x34, 0x6b, 0x79, - 0x05, 0x0f, 0x24, 0xe8, 0x1d, 0x7b, 0xa7, 0x04, 0x7a, 0xa8, 0x75, 0xd2, 0xe1, 0x5d, 0x8a, 0xdb, - 0xa2, 0x06, 0x3d, 0x58, 0x30, 0xf5, 0xad, 0xb9, 0x8d, 0x0c, 0xd1, 0xbd, 0x65, 0xaa, 0x1f, 0x49, - 0xaa, 0x87, 0x7b, 0xfb, 0xa3, 0xa9, 0x8c, 0x37, 0xe5, 0xab, 0x8c, 0x97, 0x42, 0xcd, 0x50, 0x9f, - 0x68, 0xa0, 0x25, 0x8b, 0x32, 0xba, 0xb1, 0x3d, 0xc2, 0xaa, 0x3b, 0x56, 0x17, 0x0c, 0x4d, 0x58, - 0xee, 0xe3, 0xfa, 0x6f, 0x50, 0xfc, 0xba, 0xa3, 0xfe, 0xb3, 0x71, 0xd8, 0x7b, 0xf8, 0xa1, 0x2a, - 0xc5, 0xac, 0xfc, 0xf3, 0xc3, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x9a, 0x29, 0x88, 0x91, - 0x19, 0x00, 0x00, + // 1959 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x5b, 0x6f, 0x1b, 0xc7, + 0x15, 0x06, 0x25, 0x4b, 0xa2, 0x0e, 0x25, 0x4b, 0x1c, 0x31, 0xd2, 0x8a, 0xba, 0x98, 0x59, 0x5b, + 0x8e, 0x2c, 0xa5, 0xa2, 0xa1, 0x26, 0xbd, 0x38, 0x4d, 0x01, 0x59, 0xb2, 0x5d, 0xa1, 0xb6, 0x23, + 0x50, 0x4e, 0x83, 0x5e, 0x90, 0xc5, 0x6a, 0x77, 0x48, 0x4d, 0xcc, 0xbd, 0x64, 0x66, 0x96, 0x16, + 0x53, 0x04, 0x28, 0xfa, 0xd4, 0xb7, 0x3e, 0xf4, 0x87, 0xf4, 0xf2, 0x47, 0xfa, 0xd0, 0x3f, 0x90, + 0x87, 0x3e, 0xf5, 0x57, 0x14, 0x73, 0xd9, 0xdd, 0x21, 0x97, 0x97, 0x04, 0x09, 0x50, 0x04, 0xe8, + 0x93, 0x76, 0xe7, 0x7c, 0xf3, 0x9d, 0x33, 0xe7, 0x1c, 0xce, 0x7c, 0x3b, 0x82, 0xdb, 0xae, 0xe7, + 0x45, 0x49, 0xc8, 0xd9, 0x51, 0x4c, 0x23, 0x1e, 0xa1, 0x32, 0xc3, 0x9c, 0x93, 0xb0, 0xc3, 0xea, + 0x77, 0x3a, 0x51, 0xd4, 0xe9, 0xe2, 0xa6, 0x1b, 0x93, 0x66, 0x9b, 0xe0, 0xae, 0xef, 0x5c, 0xe1, + 0x6b, 0xb7, 0x47, 0x22, 0xaa, 0xa0, 0xf5, 0x6d, 0x03, 0xe0, 0x86, 0x61, 0xc4, 0x5d, 0x4e, 0xa2, + 0x50, 0x13, 0xd5, 0xb7, 0xb4, 0x55, 0xbe, 0x5d, 0x25, 0xed, 0x26, 0x0e, 0x62, 0xde, 0xd7, 0xc6, + 0xc6, 0xb0, 0x51, 0x39, 0x08, 0x5c, 0xf6, 0x5a, 0x23, 0xee, 0x0c, 0x23, 0x38, 0x09, 0x30, 0xe3, + 0x6e, 0x10, 0x2b, 0x80, 0xfd, 0xf7, 0x12, 0xac, 0x3d, 0x27, 0x8c, 0x9f, 0xe8, 0xf8, 0x5b, 0xf8, + 0xf3, 0x04, 0x33, 0x8e, 0x1a, 0xb0, 0x18, 0xbb, 0x1d, 0xec, 0x30, 0xf2, 0x05, 0xb6, 0x4a, 0x8d, + 0xd2, 0xfe, 0xdc, 0xe3, 0xd9, 0xaf, 0x4e, 0x4a, 0xad, 0xb2, 0x18, 0xbd, 0x24, 0x5f, 0x60, 0x64, + 0x03, 0x48, 0x04, 0x8f, 0x5e, 0xe3, 0xd0, 0x9a, 0x69, 0x94, 0xf6, 0x17, 0x15, 0x44, 0x4e, 0x7c, + 0x25, 0x46, 0xd1, 0x4f, 0x01, 0xf2, 0x90, 0xac, 0xd9, 0x46, 0x69, 0xbf, 0x72, 0x5c, 0x3f, 0x52, + 0x31, 0x1d, 0xa5, 0x31, 0x1d, 0x3d, 0x15, 0x90, 0x17, 0x2e, 0x7b, 0xdd, 0x5a, 0x6c, 0xa7, 0x8f, + 0x68, 0x13, 0xe6, 0x3e, 0x4f, 0x30, 0xed, 0x5b, 0xb7, 0x72, 0x66, 0x35, 0x62, 0x07, 0x50, 0x1b, + 0x0c, 0x99, 0xc5, 0x51, 0xc8, 0x30, 0xfa, 0x01, 0x94, 0xd3, 0x32, 0x58, 0xa5, 0xc6, 0xec, 0x7e, + 0xe5, 0xb8, 0x7a, 0x94, 0xd6, 0xe1, 0x48, 0xa3, 0x5b, 0x19, 0x04, 0xdd, 0x87, 0x95, 0x10, 0xdf, + 0x70, 0x67, 0x78, 0x15, 0xad, 0x65, 0x31, 0x7c, 0x91, 0x2e, 0xc2, 0xbe, 0x0b, 0xd5, 0x67, 0x38, + 0xf5, 0x96, 0xe6, 0xe7, 0x36, 0xcc, 0x10, 0x5f, 0x26, 0x66, 0xb1, 0x35, 0x43, 0x7c, 0xfb, 0x12, + 0x6a, 0xa7, 0x14, 0xbb, 0x1c, 0x4f, 0xc6, 0xa1, 0x43, 0x58, 0xd0, 0x01, 0x48, 0x67, 0x23, 0x43, + 0x4c, 0x11, 0xf6, 0x1f, 0x4a, 0x50, 0xfb, 0x38, 0xf6, 0x8b, 0xac, 0x06, 0x4b, 0x69, 0x1a, 0x0b, + 0xfa, 0x00, 0x2a, 0x89, 0x24, 0x51, 0x55, 0x98, 0x99, 0x5a, 0x05, 0x50, 0x70, 0xf1, 0x6c, 0xdf, + 0x87, 0xda, 0x19, 0xee, 0xe2, 0x69, 0xeb, 0xb2, 0xff, 0xb4, 0x0c, 0x0b, 0x1a, 0x52, 0x58, 0xf3, + 0x3b, 0xb0, 0xa2, 0x63, 0x71, 0x70, 0xe8, 0x5e, 0x75, 0xb1, 0x2f, 0x83, 0x28, 0xb7, 0xd2, 0x5f, + 0xcd, 0x13, 0x35, 0x8a, 0x8e, 0x60, 0x8d, 0x30, 0x87, 0x62, 0x16, 0x25, 0xd4, 0xc3, 0x4e, 0xba, + 0xc4, 0x59, 0x09, 0xae, 0x12, 0x51, 0x69, 0x69, 0x49, 0x1d, 0xdd, 0x85, 0x65, 0x4f, 0x24, 0x9d, + 0x44, 0xa1, 0xc3, 0xfb, 0x31, 0x56, 0xbd, 0xd2, 0x5a, 0x4a, 0x07, 0x5f, 0xf5, 0x63, 0x8c, 0xde, + 0x03, 0x20, 0x3e, 0x0e, 0x39, 0xe1, 0x04, 0x33, 0x6b, 0x4e, 0xf6, 0x45, 0x2d, 0x4f, 0xd7, 0x79, + 0x66, 0x6b, 0x19, 0x38, 0xf4, 0x36, 0x2c, 0xf9, 0x84, 0xc5, 0x5d, 0xb7, 0xef, 0x84, 0x6e, 0x80, + 0xad, 0x79, 0xc9, 0x5c, 0xd1, 0x63, 0x2f, 0xdd, 0x00, 0xa3, 0x3d, 0xb8, 0x1d, 0x53, 0xdc, 0xc6, + 0x94, 0x62, 0x5f, 0x81, 0x16, 0x54, 0xfb, 0x64, 0xa3, 0x12, 0xb6, 0x03, 0x90, 0x10, 0xdf, 0x09, + 0x93, 0xe0, 0x0a, 0x53, 0xab, 0xdc, 0x28, 0xed, 0xcf, 0xb6, 0x16, 0x13, 0xe2, 0xbf, 0x94, 0x03, + 0xc2, 0xdc, 0xc9, 0xcd, 0x8b, 0xca, 0xdc, 0xc9, 0xcc, 0x08, 0x6e, 0x05, 0x2e, 0xe9, 0x5a, 0x20, + 0xa9, 0xe5, 0x33, 0x6a, 0x40, 0xc5, 0xc7, 0xcc, 0xa3, 0x24, 0x16, 0x8b, 0xb4, 0x2a, 0x3a, 0xb4, + 0x7c, 0x08, 0x9d, 0xc1, 0x6a, 0xec, 0x32, 0xf6, 0x26, 0xa2, 0xbe, 0x13, 0xd3, 0xa8, 0x4d, 0xba, + 0xd8, 0x5a, 0x92, 0x75, 0xdf, 0xcc, 0x57, 0x7e, 0xa1, 0x11, 0x17, 0x0a, 0xd0, 0x5a, 0x89, 0x07, + 0x07, 0xd0, 0x21, 0x94, 0x03, 0x2c, 0xa2, 0xf8, 0xa8, 0x6d, 0x2d, 0xcb, 0xbc, 0xad, 0xe4, 0xb3, + 0x9f, 0xd1, 0x28, 0x89, 0x5b, 0x19, 0x00, 0x3d, 0x85, 0xaa, 0x4c, 0x3b, 0xf6, 0x1d, 0xd9, 0x6b, + 0x62, 0xa3, 0xb1, 0x56, 0xc7, 0xf4, 0xda, 0xab, 0x74, 0x17, 0x6a, 0xad, 0xe8, 0x49, 0x67, 0x2e, + 0xc7, 0x62, 0x54, 0xf0, 0xf8, 0xb2, 0xe1, 0x4c, 0x9e, 0xea, 0x74, 0x1e, 0x3d, 0x29, 0xe3, 0xf9, + 0x31, 0x58, 0x51, 0xe8, 0xc4, 0x14, 0x07, 0x84, 0x61, 0xe6, 0xb0, 0x7e, 0xe8, 0x65, 0xdd, 0x57, + 0x93, 0x0d, 0xf5, 0x56, 0x14, 0x5e, 0x68, 0xf3, 0x65, 0x3f, 0xf4, 0xd2, 0x26, 0x1c, 0x9a, 0x48, + 0x82, 0x20, 0xe1, 0xc2, 0xe2, 0x10, 0xdf, 0x7a, 0x4b, 0xa6, 0xda, 0x98, 0x78, 0x9e, 0x5a, 0xcf, + 0x7d, 0xf4, 0x04, 0xee, 0x0c, 0x78, 0xc4, 0x5e, 0x42, 0x09, 0xef, 0x3b, 0xaa, 0xab, 0xda, 0x04, + 0x53, 0x6b, 0x5d, 0xce, 0xdf, 0x36, 0x1c, 0x6b, 0xd0, 0x79, 0x86, 0x41, 0xa7, 0xb0, 0x6b, 0xd2, + 0xf8, 0x84, 0x89, 0x84, 0x27, 0x84, 0x5d, 0xa7, 0x6d, 0xb6, 0x21, 0x59, 0xb6, 0x72, 0x96, 0x33, + 0x13, 0x23, 0x9b, 0xee, 0xe7, 0xb0, 0x3d, 0x10, 0x8b, 0x1b, 0xa4, 0xbf, 0x26, 0x45, 0x61, 0x49, + 0x0a, 0xcb, 0x08, 0xc4, 0x0d, 0xf4, 0xaf, 0x4a, 0xce, 0x7f, 0x1f, 0x36, 0x06, 0x82, 0x88, 0x02, + 0x97, 0x84, 0x6a, 0xea, 0xa6, 0x9c, 0x5a, 0x33, 0xbc, 0x4b, 0xa3, 0x9c, 0x76, 0x36, 0x98, 0x82, + 0x84, 0x61, 0xea, 0xc4, 0x94, 0x84, 0x1e, 0x89, 0xdd, 0xae, 0x9a, 0x5e, 0x1f, 0x0e, 0xfe, 0x63, + 0x86, 0xe9, 0x45, 0x8a, 0x91, 0x2c, 0xce, 0x20, 0x4b, 0xd7, 0x65, 0x5c, 0xd5, 0x2f, 0x6f, 0x88, + 0xed, 0xa9, 0x0d, 0x51, 0xcf, 0x3d, 0x3c, 0x77, 0x19, 0x17, 0x15, 0xce, 0x7a, 0xa3, 0x3b, 0xe8, + 0x20, 0xa6, 0x51, 0x8f, 0x30, 0x12, 0x85, 0x24, 0xec, 0x38, 0x98, 0xd2, 0x88, 0x32, 0x6b, 0x47, + 0xf6, 0xfb, 0x5e, 0xde, 0xef, 0x1f, 0x65, 0x74, 0x17, 0x06, 0xfc, 0x89, 0x40, 0x9b, 0x05, 0x2d, + 0x18, 0x99, 0xd8, 0xd5, 0xf0, 0x0d, 0xc7, 0x34, 0x74, 0xbb, 0x2a, 0x23, 0x8c, 0xbb, 0x1c, 0x5b, + 0xfb, 0x32, 0x11, 0xd5, 0xd4, 0x24, 0xd2, 0x70, 0x29, 0x0c, 0x88, 0xc0, 0xbd, 0x11, 0x78, 0xc7, + 0xbb, 0x76, 0xc3, 0x0e, 0x36, 0x72, 0xf0, 0x60, 0x6a, 0x0e, 0xee, 0x14, 0xc8, 0x4f, 0x25, 0x49, + 0x96, 0x88, 0x0e, 0xdc, 0xa5, 0xb8, 0x4d, 0x31, 0xbb, 0x56, 0x07, 0x20, 0x73, 0x7a, 0x6e, 0x97, + 0xf8, 0x4e, 0x9b, 0x46, 0x81, 0xe1, 0xe9, 0x67, 0x53, 0x3d, 0xed, 0x6a, 0x1a, 0x79, 0x62, 0xb2, + 0x5f, 0x09, 0x92, 0xa7, 0x34, 0x0a, 0x32, 0x47, 0x9f, 0xc1, 0x1e, 0x23, 0x9d, 0xd0, 0x21, 0xa1, + 0xc3, 0x30, 0x13, 0xf9, 0x19, 0xe3, 0xea, 0xc3, 0xe9, 0x8b, 0x12, 0x44, 0xe7, 0xe1, 0xa5, 0xa6, + 0x29, 0xf8, 0xb2, 0x39, 0x40, 0xbe, 0xa9, 0xa3, 0x06, 0x2c, 0xa5, 0x9e, 0xe5, 0x11, 0xa1, 0x8e, + 0x25, 0x50, 0x24, 0xf2, 0x80, 0x58, 0x87, 0x79, 0xc2, 0x58, 0x82, 0xa9, 0x3e, 0xfe, 0xf5, 0x1b, + 0x7a, 0x17, 0x90, 0x7a, 0x72, 0x5c, 0x26, 0xe0, 0xd8, 0x17, 0x5b, 0xc0, 0xac, 0xc4, 0xac, 0x2a, + 0xcb, 0x89, 0x36, 0x9c, 0xfb, 0xf6, 0x57, 0x33, 0xb0, 0x32, 0xb4, 0xa3, 0xa2, 0x3a, 0x94, 0xd3, + 0x3d, 0x55, 0xfb, 0xcd, 0xde, 0xd1, 0xa7, 0xb0, 0x2b, 0x1b, 0x3b, 0xdb, 0xa7, 0x0b, 0xf5, 0x9d, + 0x99, 0xde, 0xe3, 0x82, 0x21, 0x75, 0x3a, 0x54, 0xda, 0x43, 0xa8, 0xe6, 0x47, 0x40, 0xd4, 0x25, + 0x9e, 0x38, 0xfd, 0x66, 0x1b, 0xb3, 0x22, 0xf8, 0x6c, 0xa3, 0xd7, 0xe3, 0xe8, 0x1c, 0xec, 0x76, + 0x24, 0x8e, 0x5c, 0x1d, 0x44, 0x36, 0x53, 0x0a, 0x24, 0x9d, 0x3f, 0x79, 0xba, 0x96, 0x5b, 0x3b, + 0x12, 0xa9, 0xbc, 0xa5, 0xbe, 0x5f, 0xe2, 0x1b, 0x7e, 0x29, 0x33, 0x8a, 0x7e, 0x0d, 0x87, 0xd3, + 0xa9, 0x9c, 0x37, 0x84, 0x5f, 0x3b, 0x41, 0xdb, 0xb5, 0xe6, 0x24, 0xe7, 0xbd, 0x89, 0x9c, 0x9f, + 0x10, 0x7e, 0xfd, 0xa2, 0xed, 0xda, 0x7f, 0x2d, 0x41, 0x55, 0x08, 0x3f, 0x79, 0xf4, 0x7c, 0x2f, + 0x94, 0x2a, 0x06, 0x64, 0x06, 0xac, 0x75, 0xea, 0x3b, 0x30, 0xdf, 0x91, 0x23, 0x5a, 0xa5, 0x16, + 0x4e, 0x55, 0x6d, 0xfe, 0xda, 0x0a, 0xf5, 0x6d, 0x58, 0x79, 0x86, 0x95, 0x97, 0x71, 0xfa, 0xec, + 0x97, 0x80, 0x94, 0x3e, 0x9d, 0x84, 0x42, 0x7b, 0x30, 0x27, 0x5d, 0xeb, 0xde, 0x2b, 0x04, 0xa6, + 0xac, 0xf6, 0x0d, 0x20, 0x25, 0x4b, 0x07, 0xc8, 0xb2, 0xc9, 0xa5, 0x49, 0x93, 0xbf, 0x9d, 0x1c, + 0xbd, 0x07, 0x48, 0xc9, 0xd1, 0x89, 0x8b, 0xb5, 0x61, 0xf5, 0xc4, 0xf7, 0x5f, 0x48, 0x69, 0x32, + 0x0e, 0xb3, 0x07, 0x6b, 0x2d, 0x1c, 0x44, 0x3d, 0x3c, 0x19, 0xf6, 0xb7, 0x92, 0x2a, 0xa1, 0x42, + 0x7d, 0x2f, 0x9a, 0xee, 0x33, 0xf5, 0x45, 0x97, 0x45, 0xac, 0xbb, 0xee, 0x10, 0x16, 0x94, 0x58, + 0x9b, 0xf0, 0x71, 0x94, 0x22, 0xbe, 0x76, 0xe7, 0xfd, 0xa7, 0x0c, 0x73, 0xb2, 0x14, 0x85, 0x56, + 0x1a, 0x16, 0xd0, 0x33, 0x45, 0x01, 0x6d, 0x44, 0x34, 0x3b, 0x35, 0xa2, 0x07, 0x30, 0x1f, 0xbd, + 0x09, 0x05, 0xf6, 0xd6, 0x38, 0xac, 0x06, 0x0c, 0xeb, 0xe3, 0xb9, 0xa2, 0x3e, 0x1e, 0x14, 0xdd, + 0xf3, 0xc3, 0xa2, 0x7b, 0xa4, 0x96, 0x5d, 0xf8, 0x8e, 0xb4, 0x6c, 0xf9, 0x9b, 0x6b, 0xd9, 0xe7, + 0x50, 0xc3, 0x37, 0x31, 0xa1, 0xea, 0x4b, 0x27, 0xa7, 0x5a, 0x9c, 0x4a, 0x85, 0xf2, 0x79, 0x19, + 0xdb, 0xfb, 0xb0, 0x71, 0x4d, 0x7c, 0xac, 0x4e, 0x5e, 0xd7, 0xf7, 0x29, 0x66, 0xcc, 0xe9, 0x12, + 0xc6, 0x99, 0xfc, 0xca, 0x28, 0xb7, 0x6a, 0xc2, 0x2c, 0x8e, 0xd4, 0x13, 0x65, 0x14, 0xdd, 0xc4, + 0xd0, 0x2e, 0x80, 0x50, 0x36, 0x57, 0xa4, 0x4b, 0x78, 0x5f, 0x7f, 0x74, 0x18, 0x23, 0xff, 0x17, + 0xdc, 0xff, 0x0b, 0xc1, 0xfd, 0x13, 0xd8, 0x34, 0xa7, 0x85, 0x98, 0x3b, 0x57, 0x24, 0x62, 0xa6, + 0xd4, 0x36, 0x92, 0xf7, 0x12, 0xf3, 0xc7, 0x24, 0x62, 0x72, 0xe6, 0xe9, 0x74, 0x91, 0xbd, 0x25, + 0xe7, 0x7f, 0x4b, 0x21, 0xbd, 0xfd, 0x9d, 0x09, 0x69, 0xfb, 0x9f, 0x25, 0xd8, 0x9a, 0x30, 0x5b, + 0xc8, 0x2d, 0xcf, 0xe5, 0xb8, 0x13, 0xd1, 0x7e, 0x2a, 0xb7, 0xd2, 0x77, 0xf4, 0x0b, 0x40, 0x91, + 0xe7, 0x25, 0xf2, 0x5b, 0xfd, 0x9b, 0x48, 0xac, 0xd5, 0x74, 0x56, 0xb6, 0xe6, 0xf7, 0x60, 0x3d, + 0xa6, 0x51, 0x8c, 0x29, 0xef, 0x3b, 0x9e, 0x9b, 0xb0, 0x6c, 0xad, 0x5a, 0x1a, 0xd6, 0x52, 0xeb, + 0xa9, 0x32, 0xaa, 0xd8, 0x6a, 0x30, 0xd7, 0x73, 0xbb, 0x49, 0x7a, 0x45, 0xa1, 0x5e, 0x8e, 0xff, + 0x7c, 0x0b, 0x56, 0xd2, 0x6b, 0xac, 0x4b, 0x4c, 0x7b, 0xc4, 0xc3, 0xc8, 0x83, 0x25, 0xf3, 0x76, + 0x0b, 0xed, 0xe4, 0xa9, 0x1b, 0x71, 0x51, 0x57, 0xdf, 0x1d, 0x67, 0x56, 0xdb, 0xbe, 0x5d, 0xfb, + 0xe3, 0xbf, 0xfe, 0xfd, 0x97, 0x99, 0xdb, 0x68, 0xa9, 0xd9, 0x7b, 0xd8, 0xcc, 0xee, 0xbe, 0x7e, + 0x07, 0x90, 0xdf, 0x69, 0xa1, 0x2d, 0xe3, 0xa8, 0x1e, 0xbe, 0xe9, 0xaa, 0x17, 0x37, 0x5a, 0x7b, + 0x57, 0x72, 0x5a, 0x68, 0xcd, 0xe4, 0x6c, 0xfe, 0x9e, 0xf8, 0x1f, 0x1e, 0x7c, 0xf9, 0xa8, 0x74, + 0x80, 0x5c, 0x58, 0x1e, 0xb8, 0x0c, 0x43, 0x46, 0x90, 0xa3, 0x6e, 0xc9, 0x46, 0xf9, 0xd8, 0x91, + 0x3e, 0x36, 0xec, 0x81, 0xb8, 0x1f, 0x65, 0x97, 0x5a, 0x31, 0x2c, 0x0f, 0xdc, 0x8c, 0x99, 0x2e, + 0x46, 0x5d, 0x99, 0x8d, 0x72, 0xf1, 0xae, 0x74, 0x71, 0xff, 0x78, 0x6b, 0x70, 0x19, 0xfa, 0xe9, + 0x48, 0x2d, 0x27, 0xf3, 0xe8, 0xc3, 0xf2, 0xc0, 0x4d, 0x98, 0xe9, 0x71, 0xd4, 0x15, 0x59, 0x7d, + 0xbd, 0xd0, 0x56, 0x4f, 0x82, 0x98, 0xf7, 0xed, 0x2d, 0xe9, 0xf6, 0xad, 0x83, 0x51, 0xd9, 0x3b, + 0xfe, 0xc7, 0x3c, 0x2c, 0x2b, 0xb9, 0x98, 0xf6, 0xc3, 0x6f, 0x01, 0x72, 0x0d, 0x69, 0x96, 0xaa, + 0x20, 0x85, 0xeb, 0xdb, 0xa3, 0x8d, 0xba, 0x13, 0x90, 0xf4, 0xbb, 0x84, 0x40, 0xf8, 0xd5, 0x0a, + 0xf3, 0x15, 0x94, 0x53, 0xe5, 0x88, 0x36, 0x07, 0xba, 0xc0, 0x14, 0x58, 0xf5, 0x61, 0x2d, 0x67, + 0x6f, 0x4b, 0xae, 0x75, 0x54, 0xcd, 0xb9, 0x8c, 0xfa, 0x7f, 0x02, 0x15, 0x43, 0x6c, 0xa2, 0xed, + 0xe1, 0xea, 0x4f, 0xe6, 0xde, 0x94, 0xdc, 0x6b, 0xb6, 0x11, 0xe7, 0x23, 0xad, 0x1d, 0x7d, 0xa8, + 0x18, 0xc2, 0xd3, 0x24, 0x2e, 0xea, 0xd1, 0x22, 0xf1, 0x7d, 0x49, 0xdc, 0x38, 0xde, 0x30, 0x83, + 0x96, 0x7f, 0x75, 0xad, 0xb5, 0x97, 0x4f, 0xa1, 0x62, 0x88, 0x4c, 0xd3, 0x4b, 0x51, 0x7b, 0x8e, + 0xad, 0xb2, 0x5e, 0xc5, 0x41, 0x31, 0x43, 0xc8, 0x83, 0xc5, 0x4c, 0x9e, 0xa2, 0xba, 0xd1, 0x97, + 0x43, 0x9a, 0xb5, 0xb8, 0x82, 0x07, 0x92, 0xf4, 0xae, 0xbd, 0x5b, 0x20, 0x6d, 0x6a, 0x9d, 0xd4, + 0xbc, 0x47, 0x71, 0x5b, 0xd4, 0xa0, 0x07, 0x4b, 0xa6, 0xbe, 0x35, 0xb7, 0x91, 0x11, 0xba, 0xb7, + 0xe8, 0xea, 0x47, 0xd2, 0xd5, 0xc3, 0x83, 0xc3, 0xf1, 0xae, 0x8c, 0x5f, 0xca, 0x97, 0x99, 0x5f, + 0x0a, 0x15, 0x43, 0x7d, 0xa2, 0xa1, 0x96, 0x1c, 0x94, 0xd1, 0xf5, 0x9d, 0x31, 0x56, 0xdd, 0xb1, + 0xba, 0x60, 0x68, 0xca, 0x72, 0x1f, 0xd7, 0x7e, 0x83, 0xe2, 0xd7, 0x1d, 0xf5, 0x4f, 0x8e, 0x66, + 0xef, 0xe1, 0x07, 0xaa, 0x14, 0xf3, 0xf2, 0xcf, 0x0f, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x83, + 0xbc, 0xbd, 0x54, 0x9c, 0x19, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index a9bfb28da6..02fb9c5b91 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -242,8 +242,9 @@ message Account { // The username // posixaccount MUST uid - string username = 7; + string preferred_name = 7; + // TODO rename to on_premise_? or move to extension? see https://docs.microsoft.com/en-us/graph/extensibility-open-users // used for exposing the user using ldap // posixaccount MUST uidnumber int64 uid_number = 8; diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index b61b71046e..fcedb024eb 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -4,14 +4,17 @@ import ( "context" "encoding/json" "errors" + "fmt" "io/ioutil" "os" "path/filepath" "regexp" + "strings" "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" "github.com/blevesearch/bleve/search/query" + "github.com/gofrs/uuid" "github.com/golang/protobuf/ptypes/empty" mclient "github.com/micro/go-micro/v2/client" "github.com/owncloud/ocis-accounts/pkg/config" @@ -20,6 +23,13 @@ import ( olog "github.com/owncloud/ocis-pkg/v2/log" settings "github.com/owncloud/ocis-settings/pkg/proto/v0" "github.com/rs/zerolog/log" + "github.com/tredoe/osutil/user/crypt" + + // register crypt functions + _ "github.com/tredoe/osutil/user/crypt/apr1_crypt" + _ "github.com/tredoe/osutil/user/crypt/md5_crypt" + _ "github.com/tredoe/osutil/user/crypt/sha256_crypt" + _ "github.com/tredoe/osutil/user/crypt/sha512_crypt" ) // New returns a new instance of Service @@ -80,17 +90,30 @@ type Service struct { index bleve.Index } -// the auth request is currently hardcoded and has to macth this regex -// userName eq \"teddy\" and password eq \"F&1!b90t111!\" -var authQuery = regexp.MustCompile(`^username eq '(.*)' and password eq '(.*)'$`) // TODO how is ' escaped in the password? +// an auth request is currently hardcoded and has to match this regex +// login eq \"teddy\" and password eq \"F&1!b90t111!\" +var authQuery = regexp.MustCompile(`^login eq '(.*)' and password eq '(.*)'$`) // TODO how is ' escaped in the password? // ListAccounts implements the AccountsServiceHandler interface // the query contains account properties // TODO id vs onpremiseimmutableid func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, res *proto.ListAccountsResponse) (err error) { + var password string + var query query.Query + // check if this looks like an auth request + match := authQuery.FindStringSubmatch(in.Query) + if len(match) == 3 { + in.Query = fmt.Sprintf("preferred_name eq '%s'", match[1]) // todo fetch email? make query configurable + password = match[2] + if password == "" { + + return fmt.Errorf("password must not be empty") + } + } + if in.Query != "" { // parse the query like an odata filter var q *godata.GoDataFilterQuery @@ -112,7 +135,8 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest log.Debug().Interface("query", query).Msg("using query") searchRequest := bleve.NewSearchRequest(query) - searchResult, err := s.index.Search(searchRequest) + var searchResult *bleve.SearchResult + searchResult, err = s.index.Search(searchRequest) log.Debug().Interface("result", searchResult).Msg("result") res.Accounts = make([]*proto.Account, 0) @@ -120,7 +144,8 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest for _, hit := range searchResult.Hits { path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", hit.ID) - data, err := ioutil.ReadFile(path) + var data []byte + data, err = ioutil.ReadFile(path) if err != nil { log.Error().Err(err).Str("path", path).Msg("could not read account") continue @@ -132,20 +157,106 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest continue } log.Debug().Interface("account", a).Msg("found account") + + if password != "" { + if a.PasswordProfile == nil { + log.Debug().Interface("account", a).Msg("no password profile") + return fmt.Errorf("invalid password") + } + if !s.passwordIsValid(a.PasswordProfile.Password, password) { + return fmt.Errorf("invalid password") + } + } + res.Accounts = append(res.Accounts, &a) } return nil } +func (s Service) passwordIsValid(hash string, pwd string) (ok bool) { + defer func() { + if r := recover(); r != nil { + log.Error().Err(fmt.Errorf("%s", r)).Str("hash", hash).Msg("password lib panicked") + } + }() + + c := crypt.NewFromHash(hash) + return c.Verify(hash, []byte(pwd)) == nil +} + +func cleanupID(id string) (string, error) { + id = filepath.Clean(id) + if id == "." || strings.Contains(id, "/") { + return "", errors.New("bad request") + } + return id, nil +} + // GetAccount implements the AccountsServiceHandler interface func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res *proto.Account) (err error) { - return errors.New("not implemented") + var id string + if id, err = cleanupID(req.Id); err != nil { + return + } + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) + + var data []byte + data, err = ioutil.ReadFile(path) + if err != nil { + log.Error().Err(err).Str("path", path).Msg("could not read account") + // TODO we need error handling ... eg Not Found + return fmt.Errorf("account not found") + } + err = json.Unmarshal(data, res) + if err != nil { + log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") + return fmt.Errorf("internal server error") + } + + log.Debug().Interface("account", res).Msg("found account") + return } // CreateAccount implements the AccountsServiceHandler interface func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountRequest, res *proto.Account) (err error) { - return errors.New("not implemented") + var id string + if req.Id == "" { + req.Id = uuid.Must(uuid.NewV4()).String() + } + // we are always ignoring the id in the account here ... hmm just do away with the extra id property? + req.Account.Id = req.Id + + if id, err = cleanupID(req.Id); err != nil { + return + } + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) + + if req.Account.PasswordProfile != nil && req.Account.PasswordProfile.Password != "" { + // encrypt password + c := crypt.New(crypt.SHA512) + if req.Account.PasswordProfile.Password, err = c.Generate([]byte(req.Account.PasswordProfile.Password), nil); err != nil { + req.Account.PasswordProfile.Password = "***REMOVED***" + log.Error().Err(err).Str("id", id).Interface("account", req.Account).Msg("could not hash password") + return + } + } + + var bytes []byte + bytes, err = json.Marshal(req.GetAccount) + if err = ioutil.WriteFile(path, bytes, 0600); err != nil { + req.Account.PasswordProfile.Password = "***REMOVED***" + log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not persist new account") + return + } + + if err = s.index.Index(id, req.Account); err != nil { + req.Account.PasswordProfile.Password = "***REMOVED***" + log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not index new account") + return + } + + return } // UpdateAccount implements the AccountsServiceHandler interface @@ -155,7 +266,22 @@ func (s Service) UpdateAccount(c context.Context, req *proto.UpdateAccountReques // DeleteAccount implements the AccountsServiceHandler interface func (s Service) DeleteAccount(c context.Context, req *proto.DeleteAccountRequest, res *empty.Empty) (err error) { - return errors.New("not implemented") + var id string + if id, err = cleanupID(req.Id); err != nil { + return + } + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) + + if err = os.Remove(path); err != nil { + log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account") + return + } + + if err = s.index.Delete(id); err != nil { + log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account from index") + return + } + return os.Remove(path) } // ListGroups implements the AccountsServiceHandler interface From f3a1d26d2d1fe73cefb1b034472e37212cd9a548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 17 Jun 2020 15:04:03 +0200 Subject: [PATCH 156/407] fix staticcheck MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/provider/bleve.go | 8 ++++---- pkg/service/v0/service.go | 10 +++++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/provider/bleve.go b/pkg/provider/bleve.go index bfad794778..7b55416b5f 100644 --- a/pkg/provider/bleve.go +++ b/pkg/provider/bleve.go @@ -44,13 +44,13 @@ func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { switch n.Token.Value { case "eq": if len(n.Children) != 2 { - return nil, errors.New("Equality match must have two children") + return nil, errors.New("equality match must have two children") } if n.Children[0].Token.Type != godata.FilterTokenLiteral { - return nil, errors.New("Equality expected a literal on the lhs") + return nil, errors.New("equality expected a literal on the lhs") } if n.Children[1].Token.Type != godata.FilterTokenString { - return nil, errors.New("Equality expected a string on the rhs") + return nil, errors.New("equality expected a string on the rhs") } q := bleve.NewTermQuery(n.Children[1].Token.Value) q.SetField(n.Children[0].Token.Value) @@ -81,7 +81,7 @@ func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { return q, nil case "Not": if len(n.Children) != 1 { - return nil, errors.New("Not filter must have only one child") + return nil, errors.New("not filter must have only one child") } subQuery, err := recursiveBuildQuery(n.Children[0]) if err != nil { diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index fcedb024eb..b574b3d5a1 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -137,6 +137,11 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest searchRequest := bleve.NewSearchRequest(query) var searchResult *bleve.SearchResult searchResult, err = s.index.Search(searchRequest) + if err != nil { + log.Error().Err(err).Msg("could not execute bleve search") + return + } + log.Debug().Interface("result", searchResult).Msg("result") res.Accounts = make([]*proto.Account, 0) @@ -243,7 +248,10 @@ func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountReques } var bytes []byte - bytes, err = json.Marshal(req.GetAccount) + if bytes, err = json.Marshal(req.Account); err != nil { + log.Error().Err(err).Interface("account", req.Account).Msg("could not marshal account") + return + } if err = ioutil.WriteFile(path, bytes, 0600); err != nil { req.Account.PasswordProfile.Password = "***REMOVED***" log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not persist new account") From 0f938a8b10ffb15e2ec44823b1999b06f0f78d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 17 Jun 2020 15:15:18 +0200 Subject: [PATCH 157/407] drop redundant id for create requests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/proto/v0/accounts.pb.go | 269 +++++++++++++++++------------------- pkg/proto/v0/accounts.proto | 10 +- pkg/service/v0/service.go | 11 +- 3 files changed, 133 insertions(+), 157 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index ac05a115ab..217a615f11 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -204,10 +204,8 @@ func (m *GetAccountRequest) GetId() string { } type CreateAccountRequest struct { - // The account id to use for this account - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The account resource to create - Account *Account `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` + Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -238,13 +236,6 @@ func (m *CreateAccountRequest) XXX_DiscardUnknown() { var xxx_messageInfo_CreateAccountRequest proto.InternalMessageInfo -func (m *CreateAccountRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - func (m *CreateAccountRequest) GetAccount() *Account { if m != nil { return m.Account @@ -999,10 +990,8 @@ func (m *GetGroupRequest) GetId() string { } type CreateGroupRequest struct { - // The group id to use for this group - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The account resource to create - Group *Group `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` + Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1033,13 +1022,6 @@ func (m *CreateGroupRequest) XXX_DiscardUnknown() { var xxx_messageInfo_CreateGroupRequest proto.InternalMessageInfo -func (m *CreateGroupRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - func (m *CreateGroupRequest) GetGroup() *Group { if m != nil { return m.Group @@ -1685,128 +1667,127 @@ func init() { func init() { proto.RegisterFile("accounts.proto", fileDescriptor_e1e7723af4c007b7) } var fileDescriptor_e1e7723af4c007b7 = []byte{ - // 1959 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x5b, 0x6f, 0x1b, 0xc7, - 0x15, 0x06, 0x25, 0x4b, 0xa2, 0x0e, 0x25, 0x4b, 0x1c, 0x31, 0xd2, 0x8a, 0xba, 0x98, 0x59, 0x5b, - 0x8e, 0x2c, 0xa5, 0xa2, 0xa1, 0x26, 0xbd, 0x38, 0x4d, 0x01, 0x59, 0xb2, 0x5d, 0xa1, 0xb6, 0x23, - 0x50, 0x4e, 0x83, 0x5e, 0x90, 0xc5, 0x6a, 0x77, 0x48, 0x4d, 0xcc, 0xbd, 0x64, 0x66, 0x96, 0x16, - 0x53, 0x04, 0x28, 0xfa, 0xd4, 0xb7, 0x3e, 0xf4, 0x87, 0xf4, 0xf2, 0x47, 0xfa, 0xd0, 0x3f, 0x90, - 0x87, 0x3e, 0xf5, 0x57, 0x14, 0x73, 0xd9, 0xdd, 0x21, 0x97, 0x97, 0x04, 0x09, 0x50, 0x04, 0xe8, - 0x93, 0x76, 0xe7, 0x7c, 0xf3, 0x9d, 0x33, 0xe7, 0x1c, 0xce, 0x7c, 0x3b, 0x82, 0xdb, 0xae, 0xe7, - 0x45, 0x49, 0xc8, 0xd9, 0x51, 0x4c, 0x23, 0x1e, 0xa1, 0x32, 0xc3, 0x9c, 0x93, 0xb0, 0xc3, 0xea, - 0x77, 0x3a, 0x51, 0xd4, 0xe9, 0xe2, 0xa6, 0x1b, 0x93, 0x66, 0x9b, 0xe0, 0xae, 0xef, 0x5c, 0xe1, - 0x6b, 0xb7, 0x47, 0x22, 0xaa, 0xa0, 0xf5, 0x6d, 0x03, 0xe0, 0x86, 0x61, 0xc4, 0x5d, 0x4e, 0xa2, - 0x50, 0x13, 0xd5, 0xb7, 0xb4, 0x55, 0xbe, 0x5d, 0x25, 0xed, 0x26, 0x0e, 0x62, 0xde, 0xd7, 0xc6, - 0xc6, 0xb0, 0x51, 0x39, 0x08, 0x5c, 0xf6, 0x5a, 0x23, 0xee, 0x0c, 0x23, 0x38, 0x09, 0x30, 0xe3, - 0x6e, 0x10, 0x2b, 0x80, 0xfd, 0xf7, 0x12, 0xac, 0x3d, 0x27, 0x8c, 0x9f, 0xe8, 0xf8, 0x5b, 0xf8, - 0xf3, 0x04, 0x33, 0x8e, 0x1a, 0xb0, 0x18, 0xbb, 0x1d, 0xec, 0x30, 0xf2, 0x05, 0xb6, 0x4a, 0x8d, - 0xd2, 0xfe, 0xdc, 0xe3, 0xd9, 0xaf, 0x4e, 0x4a, 0xad, 0xb2, 0x18, 0xbd, 0x24, 0x5f, 0x60, 0x64, - 0x03, 0x48, 0x04, 0x8f, 0x5e, 0xe3, 0xd0, 0x9a, 0x69, 0x94, 0xf6, 0x17, 0x15, 0x44, 0x4e, 0x7c, - 0x25, 0x46, 0xd1, 0x4f, 0x01, 0xf2, 0x90, 0xac, 0xd9, 0x46, 0x69, 0xbf, 0x72, 0x5c, 0x3f, 0x52, - 0x31, 0x1d, 0xa5, 0x31, 0x1d, 0x3d, 0x15, 0x90, 0x17, 0x2e, 0x7b, 0xdd, 0x5a, 0x6c, 0xa7, 0x8f, - 0x68, 0x13, 0xe6, 0x3e, 0x4f, 0x30, 0xed, 0x5b, 0xb7, 0x72, 0x66, 0x35, 0x62, 0x07, 0x50, 0x1b, - 0x0c, 0x99, 0xc5, 0x51, 0xc8, 0x30, 0xfa, 0x01, 0x94, 0xd3, 0x32, 0x58, 0xa5, 0xc6, 0xec, 0x7e, - 0xe5, 0xb8, 0x7a, 0x94, 0xd6, 0xe1, 0x48, 0xa3, 0x5b, 0x19, 0x04, 0xdd, 0x87, 0x95, 0x10, 0xdf, - 0x70, 0x67, 0x78, 0x15, 0xad, 0x65, 0x31, 0x7c, 0x91, 0x2e, 0xc2, 0xbe, 0x0b, 0xd5, 0x67, 0x38, - 0xf5, 0x96, 0xe6, 0xe7, 0x36, 0xcc, 0x10, 0x5f, 0x26, 0x66, 0xb1, 0x35, 0x43, 0x7c, 0xfb, 0x12, - 0x6a, 0xa7, 0x14, 0xbb, 0x1c, 0x4f, 0xc6, 0xa1, 0x43, 0x58, 0xd0, 0x01, 0x48, 0x67, 0x23, 0x43, - 0x4c, 0x11, 0xf6, 0x1f, 0x4a, 0x50, 0xfb, 0x38, 0xf6, 0x8b, 0xac, 0x06, 0x4b, 0x69, 0x1a, 0x0b, - 0xfa, 0x00, 0x2a, 0x89, 0x24, 0x51, 0x55, 0x98, 0x99, 0x5a, 0x05, 0x50, 0x70, 0xf1, 0x6c, 0xdf, - 0x87, 0xda, 0x19, 0xee, 0xe2, 0x69, 0xeb, 0xb2, 0xff, 0xb4, 0x0c, 0x0b, 0x1a, 0x52, 0x58, 0xf3, - 0x3b, 0xb0, 0xa2, 0x63, 0x71, 0x70, 0xe8, 0x5e, 0x75, 0xb1, 0x2f, 0x83, 0x28, 0xb7, 0xd2, 0x5f, - 0xcd, 0x13, 0x35, 0x8a, 0x8e, 0x60, 0x8d, 0x30, 0x87, 0x62, 0x16, 0x25, 0xd4, 0xc3, 0x4e, 0xba, - 0xc4, 0x59, 0x09, 0xae, 0x12, 0x51, 0x69, 0x69, 0x49, 0x1d, 0xdd, 0x85, 0x65, 0x4f, 0x24, 0x9d, - 0x44, 0xa1, 0xc3, 0xfb, 0x31, 0x56, 0xbd, 0xd2, 0x5a, 0x4a, 0x07, 0x5f, 0xf5, 0x63, 0x8c, 0xde, - 0x03, 0x20, 0x3e, 0x0e, 0x39, 0xe1, 0x04, 0x33, 0x6b, 0x4e, 0xf6, 0x45, 0x2d, 0x4f, 0xd7, 0x79, - 0x66, 0x6b, 0x19, 0x38, 0xf4, 0x36, 0x2c, 0xf9, 0x84, 0xc5, 0x5d, 0xb7, 0xef, 0x84, 0x6e, 0x80, - 0xad, 0x79, 0xc9, 0x5c, 0xd1, 0x63, 0x2f, 0xdd, 0x00, 0xa3, 0x3d, 0xb8, 0x1d, 0x53, 0xdc, 0xc6, - 0x94, 0x62, 0x5f, 0x81, 0x16, 0x54, 0xfb, 0x64, 0xa3, 0x12, 0xb6, 0x03, 0x90, 0x10, 0xdf, 0x09, - 0x93, 0xe0, 0x0a, 0x53, 0xab, 0xdc, 0x28, 0xed, 0xcf, 0xb6, 0x16, 0x13, 0xe2, 0xbf, 0x94, 0x03, - 0xc2, 0xdc, 0xc9, 0xcd, 0x8b, 0xca, 0xdc, 0xc9, 0xcc, 0x08, 0x6e, 0x05, 0x2e, 0xe9, 0x5a, 0x20, - 0xa9, 0xe5, 0x33, 0x6a, 0x40, 0xc5, 0xc7, 0xcc, 0xa3, 0x24, 0x16, 0x8b, 0xb4, 0x2a, 0x3a, 0xb4, - 0x7c, 0x08, 0x9d, 0xc1, 0x6a, 0xec, 0x32, 0xf6, 0x26, 0xa2, 0xbe, 0x13, 0xd3, 0xa8, 0x4d, 0xba, - 0xd8, 0x5a, 0x92, 0x75, 0xdf, 0xcc, 0x57, 0x7e, 0xa1, 0x11, 0x17, 0x0a, 0xd0, 0x5a, 0x89, 0x07, - 0x07, 0xd0, 0x21, 0x94, 0x03, 0x2c, 0xa2, 0xf8, 0xa8, 0x6d, 0x2d, 0xcb, 0xbc, 0xad, 0xe4, 0xb3, - 0x9f, 0xd1, 0x28, 0x89, 0x5b, 0x19, 0x00, 0x3d, 0x85, 0xaa, 0x4c, 0x3b, 0xf6, 0x1d, 0xd9, 0x6b, - 0x62, 0xa3, 0xb1, 0x56, 0xc7, 0xf4, 0xda, 0xab, 0x74, 0x17, 0x6a, 0xad, 0xe8, 0x49, 0x67, 0x2e, - 0xc7, 0x62, 0x54, 0xf0, 0xf8, 0xb2, 0xe1, 0x4c, 0x9e, 0xea, 0x74, 0x1e, 0x3d, 0x29, 0xe3, 0xf9, - 0x31, 0x58, 0x51, 0xe8, 0xc4, 0x14, 0x07, 0x84, 0x61, 0xe6, 0xb0, 0x7e, 0xe8, 0x65, 0xdd, 0x57, - 0x93, 0x0d, 0xf5, 0x56, 0x14, 0x5e, 0x68, 0xf3, 0x65, 0x3f, 0xf4, 0xd2, 0x26, 0x1c, 0x9a, 0x48, - 0x82, 0x20, 0xe1, 0xc2, 0xe2, 0x10, 0xdf, 0x7a, 0x4b, 0xa6, 0xda, 0x98, 0x78, 0x9e, 0x5a, 0xcf, - 0x7d, 0xf4, 0x04, 0xee, 0x0c, 0x78, 0xc4, 0x5e, 0x42, 0x09, 0xef, 0x3b, 0xaa, 0xab, 0xda, 0x04, - 0x53, 0x6b, 0x5d, 0xce, 0xdf, 0x36, 0x1c, 0x6b, 0xd0, 0x79, 0x86, 0x41, 0xa7, 0xb0, 0x6b, 0xd2, - 0xf8, 0x84, 0x89, 0x84, 0x27, 0x84, 0x5d, 0xa7, 0x6d, 0xb6, 0x21, 0x59, 0xb6, 0x72, 0x96, 0x33, - 0x13, 0x23, 0x9b, 0xee, 0xe7, 0xb0, 0x3d, 0x10, 0x8b, 0x1b, 0xa4, 0xbf, 0x26, 0x45, 0x61, 0x49, - 0x0a, 0xcb, 0x08, 0xc4, 0x0d, 0xf4, 0xaf, 0x4a, 0xce, 0x7f, 0x1f, 0x36, 0x06, 0x82, 0x88, 0x02, - 0x97, 0x84, 0x6a, 0xea, 0xa6, 0x9c, 0x5a, 0x33, 0xbc, 0x4b, 0xa3, 0x9c, 0x76, 0x36, 0x98, 0x82, - 0x84, 0x61, 0xea, 0xc4, 0x94, 0x84, 0x1e, 0x89, 0xdd, 0xae, 0x9a, 0x5e, 0x1f, 0x0e, 0xfe, 0x63, - 0x86, 0xe9, 0x45, 0x8a, 0x91, 0x2c, 0xce, 0x20, 0x4b, 0xd7, 0x65, 0x5c, 0xd5, 0x2f, 0x6f, 0x88, - 0xed, 0xa9, 0x0d, 0x51, 0xcf, 0x3d, 0x3c, 0x77, 0x19, 0x17, 0x15, 0xce, 0x7a, 0xa3, 0x3b, 0xe8, - 0x20, 0xa6, 0x51, 0x8f, 0x30, 0x12, 0x85, 0x24, 0xec, 0x38, 0x98, 0xd2, 0x88, 0x32, 0x6b, 0x47, - 0xf6, 0xfb, 0x5e, 0xde, 0xef, 0x1f, 0x65, 0x74, 0x17, 0x06, 0xfc, 0x89, 0x40, 0x9b, 0x05, 0x2d, - 0x18, 0x99, 0xd8, 0xd5, 0xf0, 0x0d, 0xc7, 0x34, 0x74, 0xbb, 0x2a, 0x23, 0x8c, 0xbb, 0x1c, 0x5b, - 0xfb, 0x32, 0x11, 0xd5, 0xd4, 0x24, 0xd2, 0x70, 0x29, 0x0c, 0x88, 0xc0, 0xbd, 0x11, 0x78, 0xc7, - 0xbb, 0x76, 0xc3, 0x0e, 0x36, 0x72, 0xf0, 0x60, 0x6a, 0x0e, 0xee, 0x14, 0xc8, 0x4f, 0x25, 0x49, - 0x96, 0x88, 0x0e, 0xdc, 0xa5, 0xb8, 0x4d, 0x31, 0xbb, 0x56, 0x07, 0x20, 0x73, 0x7a, 0x6e, 0x97, - 0xf8, 0x4e, 0x9b, 0x46, 0x81, 0xe1, 0xe9, 0x67, 0x53, 0x3d, 0xed, 0x6a, 0x1a, 0x79, 0x62, 0xb2, - 0x5f, 0x09, 0x92, 0xa7, 0x34, 0x0a, 0x32, 0x47, 0x9f, 0xc1, 0x1e, 0x23, 0x9d, 0xd0, 0x21, 0xa1, - 0xc3, 0x30, 0x13, 0xf9, 0x19, 0xe3, 0xea, 0xc3, 0xe9, 0x8b, 0x12, 0x44, 0xe7, 0xe1, 0xa5, 0xa6, - 0x29, 0xf8, 0xb2, 0x39, 0x40, 0xbe, 0xa9, 0xa3, 0x06, 0x2c, 0xa5, 0x9e, 0xe5, 0x11, 0xa1, 0x8e, - 0x25, 0x50, 0x24, 0xf2, 0x80, 0x58, 0x87, 0x79, 0xc2, 0x58, 0x82, 0xa9, 0x3e, 0xfe, 0xf5, 0x1b, - 0x7a, 0x17, 0x90, 0x7a, 0x72, 0x5c, 0x26, 0xe0, 0xd8, 0x17, 0x5b, 0xc0, 0xac, 0xc4, 0xac, 0x2a, - 0xcb, 0x89, 0x36, 0x9c, 0xfb, 0xf6, 0x57, 0x33, 0xb0, 0x32, 0xb4, 0xa3, 0xa2, 0x3a, 0x94, 0xd3, - 0x3d, 0x55, 0xfb, 0xcd, 0xde, 0xd1, 0xa7, 0xb0, 0x2b, 0x1b, 0x3b, 0xdb, 0xa7, 0x0b, 0xf5, 0x9d, - 0x99, 0xde, 0xe3, 0x82, 0x21, 0x75, 0x3a, 0x54, 0xda, 0x43, 0xa8, 0xe6, 0x47, 0x40, 0xd4, 0x25, - 0x9e, 0x38, 0xfd, 0x66, 0x1b, 0xb3, 0x22, 0xf8, 0x6c, 0xa3, 0xd7, 0xe3, 0xe8, 0x1c, 0xec, 0x76, - 0x24, 0x8e, 0x5c, 0x1d, 0x44, 0x36, 0x53, 0x0a, 0x24, 0x9d, 0x3f, 0x79, 0xba, 0x96, 0x5b, 0x3b, - 0x12, 0xa9, 0xbc, 0xa5, 0xbe, 0x5f, 0xe2, 0x1b, 0x7e, 0x29, 0x33, 0x8a, 0x7e, 0x0d, 0x87, 0xd3, - 0xa9, 0x9c, 0x37, 0x84, 0x5f, 0x3b, 0x41, 0xdb, 0xb5, 0xe6, 0x24, 0xe7, 0xbd, 0x89, 0x9c, 0x9f, - 0x10, 0x7e, 0xfd, 0xa2, 0xed, 0xda, 0x7f, 0x2d, 0x41, 0x55, 0x08, 0x3f, 0x79, 0xf4, 0x7c, 0x2f, - 0x94, 0x2a, 0x06, 0x64, 0x06, 0xac, 0x75, 0xea, 0x3b, 0x30, 0xdf, 0x91, 0x23, 0x5a, 0xa5, 0x16, - 0x4e, 0x55, 0x6d, 0xfe, 0xda, 0x0a, 0xf5, 0x6d, 0x58, 0x79, 0x86, 0x95, 0x97, 0x71, 0xfa, 0xec, - 0x97, 0x80, 0x94, 0x3e, 0x9d, 0x84, 0x42, 0x7b, 0x30, 0x27, 0x5d, 0xeb, 0xde, 0x2b, 0x04, 0xa6, - 0xac, 0xf6, 0x0d, 0x20, 0x25, 0x4b, 0x07, 0xc8, 0xb2, 0xc9, 0xa5, 0x49, 0x93, 0xbf, 0x9d, 0x1c, - 0xbd, 0x07, 0x48, 0xc9, 0xd1, 0x89, 0x8b, 0xb5, 0x61, 0xf5, 0xc4, 0xf7, 0x5f, 0x48, 0x69, 0x32, - 0x0e, 0xb3, 0x07, 0x6b, 0x2d, 0x1c, 0x44, 0x3d, 0x3c, 0x19, 0xf6, 0xb7, 0x92, 0x2a, 0xa1, 0x42, - 0x7d, 0x2f, 0x9a, 0xee, 0x33, 0xf5, 0x45, 0x97, 0x45, 0xac, 0xbb, 0xee, 0x10, 0x16, 0x94, 0x58, - 0x9b, 0xf0, 0x71, 0x94, 0x22, 0xbe, 0x76, 0xe7, 0xfd, 0xa7, 0x0c, 0x73, 0xb2, 0x14, 0x85, 0x56, - 0x1a, 0x16, 0xd0, 0x33, 0x45, 0x01, 0x6d, 0x44, 0x34, 0x3b, 0x35, 0xa2, 0x07, 0x30, 0x1f, 0xbd, - 0x09, 0x05, 0xf6, 0xd6, 0x38, 0xac, 0x06, 0x0c, 0xeb, 0xe3, 0xb9, 0xa2, 0x3e, 0x1e, 0x14, 0xdd, - 0xf3, 0xc3, 0xa2, 0x7b, 0xa4, 0x96, 0x5d, 0xf8, 0x8e, 0xb4, 0x6c, 0xf9, 0x9b, 0x6b, 0xd9, 0xe7, - 0x50, 0xc3, 0x37, 0x31, 0xa1, 0xea, 0x4b, 0x27, 0xa7, 0x5a, 0x9c, 0x4a, 0x85, 0xf2, 0x79, 0x19, - 0xdb, 0xfb, 0xb0, 0x71, 0x4d, 0x7c, 0xac, 0x4e, 0x5e, 0xd7, 0xf7, 0x29, 0x66, 0xcc, 0xe9, 0x12, - 0xc6, 0x99, 0xfc, 0xca, 0x28, 0xb7, 0x6a, 0xc2, 0x2c, 0x8e, 0xd4, 0x13, 0x65, 0x14, 0xdd, 0xc4, - 0xd0, 0x2e, 0x80, 0x50, 0x36, 0x57, 0xa4, 0x4b, 0x78, 0x5f, 0x7f, 0x74, 0x18, 0x23, 0xff, 0x17, - 0xdc, 0xff, 0x0b, 0xc1, 0xfd, 0x13, 0xd8, 0x34, 0xa7, 0x85, 0x98, 0x3b, 0x57, 0x24, 0x62, 0xa6, - 0xd4, 0x36, 0x92, 0xf7, 0x12, 0xf3, 0xc7, 0x24, 0x62, 0x72, 0xe6, 0xe9, 0x74, 0x91, 0xbd, 0x25, - 0xe7, 0x7f, 0x4b, 0x21, 0xbd, 0xfd, 0x9d, 0x09, 0x69, 0xfb, 0x9f, 0x25, 0xd8, 0x9a, 0x30, 0x5b, - 0xc8, 0x2d, 0xcf, 0xe5, 0xb8, 0x13, 0xd1, 0x7e, 0x2a, 0xb7, 0xd2, 0x77, 0xf4, 0x0b, 0x40, 0x91, - 0xe7, 0x25, 0xf2, 0x5b, 0xfd, 0x9b, 0x48, 0xac, 0xd5, 0x74, 0x56, 0xb6, 0xe6, 0xf7, 0x60, 0x3d, - 0xa6, 0x51, 0x8c, 0x29, 0xef, 0x3b, 0x9e, 0x9b, 0xb0, 0x6c, 0xad, 0x5a, 0x1a, 0xd6, 0x52, 0xeb, - 0xa9, 0x32, 0xaa, 0xd8, 0x6a, 0x30, 0xd7, 0x73, 0xbb, 0x49, 0x7a, 0x45, 0xa1, 0x5e, 0x8e, 0xff, - 0x7c, 0x0b, 0x56, 0xd2, 0x6b, 0xac, 0x4b, 0x4c, 0x7b, 0xc4, 0xc3, 0xc8, 0x83, 0x25, 0xf3, 0x76, - 0x0b, 0xed, 0xe4, 0xa9, 0x1b, 0x71, 0x51, 0x57, 0xdf, 0x1d, 0x67, 0x56, 0xdb, 0xbe, 0x5d, 0xfb, - 0xe3, 0xbf, 0xfe, 0xfd, 0x97, 0x99, 0xdb, 0x68, 0xa9, 0xd9, 0x7b, 0xd8, 0xcc, 0xee, 0xbe, 0x7e, - 0x07, 0x90, 0xdf, 0x69, 0xa1, 0x2d, 0xe3, 0xa8, 0x1e, 0xbe, 0xe9, 0xaa, 0x17, 0x37, 0x5a, 0x7b, - 0x57, 0x72, 0x5a, 0x68, 0xcd, 0xe4, 0x6c, 0xfe, 0x9e, 0xf8, 0x1f, 0x1e, 0x7c, 0xf9, 0xa8, 0x74, - 0x80, 0x5c, 0x58, 0x1e, 0xb8, 0x0c, 0x43, 0x46, 0x90, 0xa3, 0x6e, 0xc9, 0x46, 0xf9, 0xd8, 0x91, - 0x3e, 0x36, 0xec, 0x81, 0xb8, 0x1f, 0x65, 0x97, 0x5a, 0x31, 0x2c, 0x0f, 0xdc, 0x8c, 0x99, 0x2e, - 0x46, 0x5d, 0x99, 0x8d, 0x72, 0xf1, 0xae, 0x74, 0x71, 0xff, 0x78, 0x6b, 0x70, 0x19, 0xfa, 0xe9, - 0x48, 0x2d, 0x27, 0xf3, 0xe8, 0xc3, 0xf2, 0xc0, 0x4d, 0x98, 0xe9, 0x71, 0xd4, 0x15, 0x59, 0x7d, - 0xbd, 0xd0, 0x56, 0x4f, 0x82, 0x98, 0xf7, 0xed, 0x2d, 0xe9, 0xf6, 0xad, 0x83, 0x51, 0xd9, 0x3b, - 0xfe, 0xc7, 0x3c, 0x2c, 0x2b, 0xb9, 0x98, 0xf6, 0xc3, 0x6f, 0x01, 0x72, 0x0d, 0x69, 0x96, 0xaa, - 0x20, 0x85, 0xeb, 0xdb, 0xa3, 0x8d, 0xba, 0x13, 0x90, 0xf4, 0xbb, 0x84, 0x40, 0xf8, 0xd5, 0x0a, - 0xf3, 0x15, 0x94, 0x53, 0xe5, 0x88, 0x36, 0x07, 0xba, 0xc0, 0x14, 0x58, 0xf5, 0x61, 0x2d, 0x67, - 0x6f, 0x4b, 0xae, 0x75, 0x54, 0xcd, 0xb9, 0x8c, 0xfa, 0x7f, 0x02, 0x15, 0x43, 0x6c, 0xa2, 0xed, - 0xe1, 0xea, 0x4f, 0xe6, 0xde, 0x94, 0xdc, 0x6b, 0xb6, 0x11, 0xe7, 0x23, 0xad, 0x1d, 0x7d, 0xa8, - 0x18, 0xc2, 0xd3, 0x24, 0x2e, 0xea, 0xd1, 0x22, 0xf1, 0x7d, 0x49, 0xdc, 0x38, 0xde, 0x30, 0x83, - 0x96, 0x7f, 0x75, 0xad, 0xb5, 0x97, 0x4f, 0xa1, 0x62, 0x88, 0x4c, 0xd3, 0x4b, 0x51, 0x7b, 0x8e, - 0xad, 0xb2, 0x5e, 0xc5, 0x41, 0x31, 0x43, 0xc8, 0x83, 0xc5, 0x4c, 0x9e, 0xa2, 0xba, 0xd1, 0x97, - 0x43, 0x9a, 0xb5, 0xb8, 0x82, 0x07, 0x92, 0xf4, 0xae, 0xbd, 0x5b, 0x20, 0x6d, 0x6a, 0x9d, 0xd4, - 0xbc, 0x47, 0x71, 0x5b, 0xd4, 0xa0, 0x07, 0x4b, 0xa6, 0xbe, 0x35, 0xb7, 0x91, 0x11, 0xba, 0xb7, - 0xe8, 0xea, 0x47, 0xd2, 0xd5, 0xc3, 0x83, 0xc3, 0xf1, 0xae, 0x8c, 0x5f, 0xca, 0x97, 0x99, 0x5f, - 0x0a, 0x15, 0x43, 0x7d, 0xa2, 0xa1, 0x96, 0x1c, 0x94, 0xd1, 0xf5, 0x9d, 0x31, 0x56, 0xdd, 0xb1, - 0xba, 0x60, 0x68, 0xca, 0x72, 0x1f, 0xd7, 0x7e, 0x83, 0xe2, 0xd7, 0x1d, 0xf5, 0x4f, 0x8e, 0x66, - 0xef, 0xe1, 0x07, 0xaa, 0x14, 0xf3, 0xf2, 0xcf, 0x0f, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x83, - 0xbc, 0xbd, 0x54, 0x9c, 0x19, 0x00, 0x00, + // 1951 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x5b, 0x4f, 0x1c, 0xc9, + 0x15, 0xd6, 0x80, 0x81, 0xe1, 0x0c, 0x18, 0x28, 0xc6, 0xd0, 0x0c, 0x17, 0xcf, 0xb6, 0x8d, 0x17, + 0xc3, 0x06, 0x2c, 0xb2, 0x9b, 0x8b, 0x9d, 0x8d, 0x84, 0xc1, 0x76, 0x90, 0x6c, 0x2f, 0x1a, 0xbc, + 0x59, 0xe5, 0xa2, 0x6d, 0x35, 0xdd, 0x35, 0x43, 0xad, 0xa7, 0x2f, 0x5b, 0x55, 0x3d, 0x66, 0x36, + 0x5a, 0x29, 0xca, 0x53, 0xde, 0xf2, 0x90, 0x1f, 0x92, 0xcb, 0x1f, 0xc9, 0x43, 0xfe, 0xc0, 0x3e, + 0xe4, 0x29, 0xbf, 0x22, 0xaa, 0x4b, 0x77, 0xd7, 0x74, 0xcf, 0x30, 0xbb, 0xf1, 0x4a, 0x91, 0xa5, + 0x3c, 0xd1, 0x5d, 0xe7, 0x3b, 0xdf, 0x39, 0x75, 0xea, 0x4c, 0xd5, 0xd7, 0x05, 0xdc, 0x74, 0x3d, + 0x2f, 0x4a, 0x42, 0xce, 0xf6, 0x63, 0x1a, 0xf1, 0x08, 0x55, 0x19, 0xe6, 0x9c, 0x84, 0x1d, 0xd6, + 0xb8, 0xdd, 0x89, 0xa2, 0x4e, 0x17, 0x1f, 0xb8, 0x31, 0x39, 0x68, 0x13, 0xdc, 0xf5, 0x9d, 0x0b, + 0x7c, 0xe9, 0xf6, 0x48, 0x44, 0x15, 0xb4, 0xb1, 0x61, 0x00, 0xdc, 0x30, 0x8c, 0xb8, 0xcb, 0x49, + 0x14, 0x6a, 0xa2, 0xc6, 0xba, 0xb6, 0xca, 0xb7, 0x8b, 0xa4, 0x7d, 0x80, 0x83, 0x98, 0xf7, 0xb5, + 0xb1, 0x59, 0x34, 0xaa, 0x00, 0x81, 0xcb, 0x5e, 0x6b, 0xc4, 0xed, 0x22, 0x82, 0x93, 0x00, 0x33, + 0xee, 0x06, 0xb1, 0x02, 0xd8, 0x7f, 0xab, 0xc0, 0xf2, 0x73, 0xc2, 0xf8, 0x91, 0xce, 0xbf, 0x85, + 0xbf, 0x4c, 0x30, 0xe3, 0xa8, 0x09, 0xb3, 0xb1, 0xdb, 0xc1, 0x0e, 0x23, 0x5f, 0x61, 0xab, 0xd2, + 0xac, 0xec, 0x4c, 0x3d, 0x9e, 0xfc, 0xe6, 0xa8, 0xd2, 0xaa, 0x8a, 0xd1, 0x73, 0xf2, 0x15, 0x46, + 0x36, 0x80, 0x44, 0xf0, 0xe8, 0x35, 0x0e, 0xad, 0x89, 0x66, 0x65, 0x67, 0x56, 0x41, 0xa4, 0xe3, + 0x2b, 0x31, 0x8a, 0x7e, 0x0a, 0x90, 0xa7, 0x64, 0x4d, 0x36, 0x2b, 0x3b, 0xb5, 0xc3, 0xc6, 0xbe, + 0xca, 0x69, 0x3f, 0xcd, 0x69, 0xff, 0xa9, 0x80, 0xbc, 0x70, 0xd9, 0xeb, 0xd6, 0x6c, 0x3b, 0x7d, + 0x44, 0x6b, 0x30, 0xf5, 0x65, 0x82, 0x69, 0xdf, 0xba, 0x91, 0x33, 0xab, 0x11, 0x3b, 0x80, 0xfa, + 0x60, 0xca, 0x2c, 0x8e, 0x42, 0x86, 0xd1, 0x0f, 0xa0, 0x9a, 0x2e, 0x83, 0x55, 0x69, 0x4e, 0xee, + 0xd4, 0x0e, 0x97, 0xf6, 0xd3, 0x75, 0xd8, 0xd7, 0xe8, 0x56, 0x06, 0x41, 0xf7, 0x60, 0x21, 0xc4, + 0x57, 0xdc, 0x29, 0xce, 0xa2, 0x35, 0x2f, 0x86, 0xcf, 0xd2, 0x49, 0xd8, 0x77, 0x60, 0xe9, 0x19, + 0x4e, 0xa3, 0xa5, 0xf5, 0xb9, 0x09, 0x13, 0xc4, 0x97, 0x85, 0x99, 0x6d, 0x4d, 0x10, 0xdf, 0x3e, + 0x86, 0xfa, 0x31, 0xc5, 0x2e, 0xc7, 0x05, 0xdc, 0x1e, 0xcc, 0xe8, 0x80, 0x12, 0x3c, 0x34, 0xa5, + 0x14, 0x61, 0xff, 0xbe, 0x02, 0xf5, 0x4f, 0x63, 0xff, 0xed, 0x58, 0xd0, 0x23, 0xa8, 0x25, 0x92, + 0x44, 0x55, 0x7d, 0x62, 0x6c, 0xd5, 0x41, 0xc1, 0xc5, 0xb3, 0x7d, 0x0f, 0xea, 0x27, 0xb8, 0x8b, + 0x4b, 0x19, 0x14, 0xe7, 0xfb, 0xc7, 0x79, 0x98, 0xd1, 0x90, 0xa2, 0x0d, 0xbd, 0x0f, 0x0b, 0x3a, + 0x17, 0x07, 0x87, 0xee, 0x45, 0x17, 0xfb, 0x32, 0x89, 0x6a, 0x2b, 0xfd, 0x95, 0x3c, 0x51, 0xa3, + 0x68, 0x1f, 0x96, 0x09, 0x73, 0x28, 0x66, 0x51, 0x42, 0x3d, 0xec, 0xa4, 0x53, 0x9c, 0x94, 0xe0, + 0x25, 0x22, 0x56, 0x56, 0x5a, 0xd2, 0x40, 0x77, 0x60, 0xde, 0x13, 0x45, 0x26, 0x51, 0xe8, 0xf0, + 0x7e, 0x8c, 0x55, 0x6f, 0xb4, 0xe6, 0xd2, 0xc1, 0x57, 0xfd, 0x18, 0xa3, 0x0f, 0x01, 0x88, 0x8f, + 0x43, 0x4e, 0x38, 0xc1, 0xcc, 0x9a, 0x92, 0x7d, 0x50, 0xcf, 0xcb, 0x75, 0x9a, 0xd9, 0x5a, 0x06, + 0x0e, 0xbd, 0x07, 0x73, 0x3e, 0x61, 0x71, 0xd7, 0xed, 0x3b, 0xa1, 0x1b, 0x60, 0x6b, 0x5a, 0x32, + 0xd7, 0xf4, 0xd8, 0x4b, 0x37, 0xc0, 0x68, 0x1b, 0x6e, 0xc6, 0x14, 0xb7, 0x31, 0xa5, 0xd8, 0x57, + 0xa0, 0x19, 0xd5, 0x2e, 0xd9, 0xa8, 0x84, 0x6d, 0x02, 0x24, 0xc4, 0x77, 0xc2, 0x24, 0xb8, 0xc0, + 0xd4, 0xaa, 0x36, 0x2b, 0x3b, 0x93, 0xad, 0xd9, 0x84, 0xf8, 0x2f, 0xe5, 0x80, 0x30, 0x77, 0x72, + 0xf3, 0xac, 0x32, 0x77, 0x32, 0x33, 0x82, 0x1b, 0x81, 0x4b, 0xba, 0x16, 0x48, 0x6a, 0xf9, 0x8c, + 0x9a, 0x50, 0xf3, 0x31, 0xf3, 0x28, 0x89, 0xc5, 0x24, 0xad, 0x9a, 0x4e, 0x2d, 0x1f, 0x42, 0x27, + 0xb0, 0x18, 0xbb, 0x8c, 0xbd, 0x89, 0xa8, 0xef, 0xc4, 0x34, 0x6a, 0x93, 0x2e, 0xb6, 0xe6, 0xe4, + 0xba, 0xaf, 0xe5, 0x33, 0x3f, 0xd3, 0x88, 0x33, 0x05, 0x68, 0x2d, 0xc4, 0x83, 0x03, 0x68, 0x0f, + 0xaa, 0x01, 0x16, 0x59, 0x7c, 0xd2, 0xb6, 0xe6, 0x65, 0xdd, 0x16, 0x72, 0xef, 0x67, 0x34, 0x4a, + 0xe2, 0x56, 0x06, 0x40, 0x4f, 0x61, 0x49, 0x96, 0x1d, 0xfb, 0x8e, 0xec, 0x35, 0xb1, 0xb1, 0x58, + 0x8b, 0x23, 0x7a, 0xed, 0x55, 0xba, 0xeb, 0xb4, 0x16, 0xb4, 0xd3, 0x89, 0xcb, 0xb1, 0x18, 0x15, + 0x3c, 0xbe, 0x6c, 0x38, 0x93, 0x67, 0x69, 0x3c, 0x8f, 0x76, 0xca, 0x78, 0x7e, 0x0c, 0x56, 0x14, + 0x3a, 0x31, 0xc5, 0x01, 0x61, 0x98, 0x39, 0xac, 0x1f, 0x7a, 0x59, 0xf7, 0xd5, 0x65, 0x43, 0xdd, + 0x8a, 0xc2, 0x33, 0x6d, 0x3e, 0xef, 0x87, 0x5e, 0xda, 0x84, 0x05, 0x47, 0x12, 0x04, 0x09, 0x17, + 0x16, 0x87, 0xf8, 0xd6, 0x2d, 0x59, 0x6a, 0xc3, 0xf1, 0x34, 0xb5, 0x9e, 0xfa, 0xe8, 0x09, 0xdc, + 0x1e, 0x88, 0x88, 0xbd, 0x84, 0x12, 0xde, 0x77, 0x54, 0x57, 0xb5, 0x09, 0xa6, 0xd6, 0x8a, 0xf4, + 0xdf, 0x30, 0x02, 0x6b, 0xd0, 0x69, 0x86, 0x41, 0xc7, 0xb0, 0x65, 0xd2, 0xf8, 0x84, 0x89, 0x82, + 0x27, 0x84, 0x5d, 0xa6, 0x6d, 0xb6, 0x2a, 0x59, 0xd6, 0x73, 0x96, 0x13, 0x13, 0x23, 0x9b, 0xee, + 0xe7, 0xb0, 0x31, 0x90, 0x8b, 0x1b, 0xa4, 0xbf, 0x26, 0x45, 0x61, 0x49, 0x0a, 0xcb, 0x48, 0xc4, + 0x0d, 0xf4, 0xaf, 0x4a, 0xfa, 0x7f, 0x04, 0xab, 0x03, 0x49, 0x44, 0x81, 0x4b, 0x42, 0xe5, 0xba, + 0x26, 0x5d, 0xeb, 0x46, 0x74, 0x69, 0x94, 0x6e, 0x27, 0x83, 0x25, 0x48, 0x18, 0xa6, 0x4e, 0x4c, + 0x49, 0xe8, 0x91, 0xd8, 0xed, 0x2a, 0xf7, 0x46, 0x31, 0xf9, 0x4f, 0x19, 0xa6, 0x67, 0x29, 0x46, + 0xb2, 0x38, 0x83, 0x2c, 0x5d, 0x97, 0x71, 0xb5, 0x7e, 0x79, 0x43, 0x6c, 0x8c, 0x6d, 0x88, 0x46, + 0x1e, 0xe1, 0xb9, 0xcb, 0xb8, 0x58, 0xe1, 0xac, 0x37, 0xba, 0x83, 0x01, 0x62, 0x1a, 0xf5, 0x08, + 0x23, 0x51, 0x48, 0xc2, 0x8e, 0x83, 0x29, 0x8d, 0x28, 0xb3, 0x36, 0x65, 0xbf, 0x6f, 0xe7, 0xfd, + 0xfe, 0x49, 0x46, 0x77, 0x66, 0xc0, 0x9f, 0x08, 0xb4, 0xb9, 0xa0, 0x25, 0x23, 0x13, 0xbb, 0x1a, + 0xbe, 0xe2, 0x98, 0x86, 0x6e, 0x57, 0x55, 0x84, 0x71, 0x97, 0x63, 0x6b, 0x47, 0x16, 0x62, 0x29, + 0x35, 0x89, 0x32, 0x9c, 0x0b, 0x03, 0x22, 0x70, 0x77, 0x08, 0xde, 0xf1, 0x2e, 0xdd, 0xb0, 0x83, + 0x8d, 0x1a, 0xdc, 0x1f, 0x5b, 0x83, 0xdb, 0x25, 0xf2, 0x63, 0x49, 0x92, 0x15, 0xa2, 0x03, 0x77, + 0x28, 0x6e, 0x53, 0xcc, 0x2e, 0xd5, 0x81, 0xc7, 0x9c, 0x9e, 0xdb, 0x25, 0xbe, 0xd3, 0xa6, 0x51, + 0x60, 0x44, 0xfa, 0xd9, 0xd8, 0x48, 0x5b, 0x9a, 0x46, 0x9e, 0x90, 0xec, 0x97, 0x82, 0xe4, 0x29, + 0x8d, 0x82, 0x2c, 0xd0, 0x17, 0xb0, 0xcd, 0x48, 0x27, 0x74, 0x48, 0xe8, 0x30, 0xcc, 0x44, 0x7d, + 0x46, 0x84, 0xfa, 0x78, 0xfc, 0xa4, 0x04, 0xd1, 0x69, 0x78, 0xae, 0x69, 0x4a, 0xb1, 0x6c, 0x0e, + 0x90, 0x6f, 0xea, 0xa8, 0x09, 0x73, 0x69, 0x64, 0x79, 0x44, 0xa8, 0x63, 0x09, 0x14, 0x89, 0x3c, + 0x20, 0x56, 0x60, 0x9a, 0x30, 0x96, 0x60, 0xaa, 0x8f, 0x7b, 0xfd, 0x86, 0x3e, 0x00, 0xa4, 0x9e, + 0x1c, 0x97, 0x09, 0x38, 0xf6, 0xc5, 0x16, 0x30, 0x29, 0x31, 0x8b, 0xca, 0x72, 0xa4, 0x0d, 0xa7, + 0xbe, 0xfd, 0xcd, 0x04, 0x2c, 0x14, 0x76, 0x54, 0xd4, 0x80, 0x6a, 0xba, 0xa7, 0xea, 0xb8, 0xd9, + 0x3b, 0xfa, 0x1c, 0xb6, 0x64, 0x63, 0x67, 0xfb, 0x74, 0x69, 0x7d, 0x27, 0xc6, 0xf7, 0xb8, 0x60, + 0x48, 0x83, 0x16, 0x96, 0x76, 0x0f, 0x96, 0xf2, 0x23, 0x20, 0xea, 0x12, 0x4f, 0x9c, 0x7e, 0x93, + 0xcd, 0x49, 0x91, 0x7c, 0xb6, 0xd1, 0xeb, 0x71, 0x74, 0x0a, 0x76, 0x3b, 0x12, 0x47, 0xae, 0x4e, + 0x22, 0xf3, 0x94, 0x82, 0x48, 0xd7, 0x4f, 0x9e, 0xae, 0xd5, 0xd6, 0xa6, 0x44, 0xaa, 0x68, 0x69, + 0xec, 0x97, 0xf8, 0x8a, 0x9f, 0xcb, 0x8a, 0xa2, 0x5f, 0xc1, 0xde, 0x78, 0x2a, 0xe7, 0x0d, 0xe1, + 0x97, 0x4e, 0xd0, 0x76, 0xad, 0x29, 0xc9, 0x79, 0xf7, 0x5a, 0xce, 0xcf, 0x08, 0xbf, 0x7c, 0xd1, + 0x76, 0xed, 0xbf, 0x54, 0x60, 0x49, 0x08, 0x3d, 0x79, 0xf4, 0xbc, 0x13, 0xca, 0x14, 0x03, 0x32, + 0x13, 0xd6, 0xba, 0xf4, 0x7d, 0x98, 0xee, 0xc8, 0x11, 0xad, 0x4a, 0x4b, 0xa7, 0xaa, 0x36, 0x7f, + 0x6b, 0x45, 0xfa, 0x1e, 0x2c, 0x3c, 0xc3, 0x2a, 0xca, 0x28, 0x7d, 0xf6, 0x08, 0x90, 0xd2, 0xa3, + 0x03, 0xa8, 0x6d, 0x98, 0x92, 0xa1, 0xb4, 0x8a, 0x2c, 0x25, 0xa2, 0xac, 0xf6, 0x15, 0x20, 0x25, + 0x43, 0xff, 0x0b, 0xe7, 0xb7, 0x93, 0x9f, 0x77, 0x01, 0x29, 0xf9, 0x79, 0xed, 0xe4, 0x6c, 0x58, + 0x3c, 0xf2, 0xfd, 0x17, 0x52, 0x8a, 0x8c, 0xc2, 0x6c, 0xc3, 0x72, 0x0b, 0x07, 0x51, 0x0f, 0x5f, + 0x0f, 0xfb, 0x6b, 0x45, 0x2d, 0x99, 0x42, 0xbd, 0x13, 0x4d, 0xf6, 0x85, 0xfa, 0x62, 0xcb, 0x32, + 0xd6, 0x5d, 0xb6, 0x07, 0x33, 0x4a, 0x9c, 0x5d, 0xf3, 0xf1, 0x93, 0x22, 0xbe, 0x75, 0xa7, 0xfd, + 0xbb, 0x0a, 0x53, 0x72, 0x29, 0x4a, 0x22, 0xbf, 0x28, 0x98, 0x27, 0xca, 0x82, 0xd9, 0xc8, 0x68, + 0x72, 0x6c, 0x46, 0xf7, 0x61, 0x3a, 0x7a, 0x13, 0x0a, 0xec, 0x8d, 0x51, 0x58, 0x0d, 0x28, 0xea, + 0xe1, 0xa9, 0xb2, 0x1e, 0x1e, 0x14, 0xd9, 0xd3, 0x45, 0x91, 0x3d, 0x54, 0xbb, 0xce, 0x7c, 0x4f, + 0xda, 0xb5, 0xfa, 0xdd, 0xb5, 0xeb, 0x73, 0xa8, 0xe3, 0xab, 0x98, 0x50, 0xf5, 0x65, 0x93, 0x53, + 0xcd, 0x8e, 0xa5, 0x42, 0xb9, 0x5f, 0xc6, 0xf6, 0x11, 0xac, 0x5e, 0x12, 0x1f, 0xab, 0x93, 0xd6, + 0xf5, 0x7d, 0x8a, 0x19, 0x73, 0xba, 0x84, 0x71, 0x26, 0xbf, 0x2a, 0xaa, 0xad, 0xba, 0x30, 0x8b, + 0x23, 0xf4, 0x48, 0x19, 0x45, 0x37, 0x31, 0xb4, 0x05, 0x20, 0x94, 0xcc, 0x05, 0xe9, 0x12, 0xde, + 0xd7, 0x1f, 0x19, 0xc6, 0xc8, 0xff, 0x05, 0xf6, 0xff, 0x42, 0x60, 0xff, 0x04, 0xd6, 0x4c, 0xb7, + 0x10, 0x73, 0xe7, 0x82, 0x44, 0xcc, 0x94, 0xd6, 0x46, 0xf1, 0x5e, 0x62, 0xfe, 0x98, 0x44, 0x4c, + 0x7a, 0x1e, 0x8f, 0x17, 0xd5, 0xeb, 0xd2, 0xff, 0x2d, 0x85, 0xf3, 0xc6, 0xf7, 0x26, 0x9c, 0xed, + 0x7f, 0x54, 0x60, 0xfd, 0x1a, 0x6f, 0x21, 0xaf, 0x3c, 0x97, 0xe3, 0x4e, 0x44, 0xfb, 0xa9, 0xbc, + 0x4a, 0xdf, 0xd1, 0x2f, 0x00, 0x45, 0x9e, 0x97, 0xc8, 0x6f, 0xf3, 0xef, 0x22, 0xa9, 0x16, 0x53, + 0xaf, 0x6c, 0xce, 0x1f, 0xc2, 0x4a, 0x4c, 0xa3, 0x18, 0x53, 0xde, 0x77, 0x3c, 0x37, 0x61, 0xd9, + 0x5c, 0xb5, 0x14, 0xac, 0xa7, 0xd6, 0x63, 0x65, 0x54, 0xb9, 0xd5, 0x61, 0xaa, 0xe7, 0x76, 0x93, + 0xf4, 0x4a, 0x42, 0xbd, 0x1c, 0xfe, 0xe9, 0x06, 0x2c, 0xa4, 0xd7, 0x54, 0xe7, 0x98, 0xf6, 0x88, + 0x87, 0x91, 0x07, 0x73, 0xe6, 0xed, 0x15, 0xda, 0xcc, 0x4b, 0x37, 0xe4, 0x22, 0xae, 0xb1, 0x35, + 0xca, 0xac, 0xb6, 0x7d, 0xbb, 0xfe, 0x87, 0x7f, 0xfe, 0xeb, 0xcf, 0x13, 0x37, 0xd1, 0xdc, 0x41, + 0xef, 0xc1, 0x41, 0x76, 0xb7, 0xf5, 0x5b, 0x80, 0xfc, 0xce, 0x0a, 0xad, 0x1b, 0x47, 0x75, 0xf1, + 0x26, 0xab, 0x51, 0xde, 0x68, 0xed, 0x2d, 0xc9, 0x69, 0xa1, 0x65, 0x93, 0xf3, 0xe0, 0x77, 0xc4, + 0xff, 0x78, 0xf7, 0xeb, 0x87, 0x95, 0x5d, 0xe4, 0xc2, 0xfc, 0xc0, 0x65, 0x17, 0x32, 0x92, 0x1c, + 0x76, 0x0b, 0x36, 0x2c, 0xc6, 0xa6, 0x8c, 0xb1, 0x6a, 0x0f, 0xe4, 0xfd, 0x30, 0xbb, 0xc4, 0x8a, + 0x61, 0x7e, 0xe0, 0x26, 0xcc, 0x0c, 0x31, 0xec, 0x8a, 0x6c, 0x58, 0x88, 0x0f, 0x64, 0x88, 0x7b, + 0x87, 0xeb, 0x83, 0xd3, 0xd0, 0x4f, 0xfb, 0x6a, 0x3a, 0x59, 0x44, 0x1f, 0xe6, 0x07, 0x6e, 0xbe, + 0xcc, 0x88, 0xc3, 0xae, 0xc4, 0x1a, 0x2b, 0xa5, 0xb6, 0x7a, 0x12, 0xc4, 0xbc, 0x6f, 0xaf, 0xcb, + 0xb0, 0xb7, 0x76, 0x87, 0x55, 0xef, 0xf0, 0xef, 0xd3, 0x30, 0xaf, 0xe4, 0x61, 0xda, 0x0f, 0xbf, + 0x01, 0xc8, 0x35, 0xa3, 0xb9, 0x54, 0x25, 0xe9, 0xdb, 0xd8, 0x18, 0x6e, 0xd4, 0x9d, 0x80, 0x64, + 0xdc, 0x39, 0x04, 0x22, 0xae, 0x56, 0x94, 0xaf, 0xa0, 0x9a, 0x2a, 0x45, 0xb4, 0x36, 0xd0, 0x05, + 0xa6, 0xc0, 0x6a, 0x14, 0xb5, 0x9c, 0xbd, 0x21, 0xb9, 0x56, 0xd0, 0x52, 0xce, 0x65, 0xac, 0xff, + 0x67, 0x50, 0x33, 0xc4, 0x25, 0xda, 0x28, 0xae, 0xfe, 0xf5, 0xdc, 0x6b, 0x92, 0x7b, 0xd9, 0x36, + 0xf2, 0x7c, 0xa8, 0xb5, 0xa3, 0x0f, 0x35, 0x43, 0x78, 0x9a, 0xc4, 0x65, 0x3d, 0x5a, 0x26, 0xbe, + 0x27, 0x89, 0x9b, 0x87, 0xab, 0x66, 0xd2, 0xf2, 0xaf, 0x5e, 0x6b, 0x1d, 0xe5, 0x73, 0xa8, 0x19, + 0x22, 0xd3, 0x8c, 0x52, 0xd6, 0x9e, 0x23, 0x57, 0x59, 0xcf, 0x62, 0xb7, 0x5c, 0x21, 0xe4, 0xc1, + 0x6c, 0x26, 0x4f, 0x51, 0xc3, 0xe8, 0xcb, 0x82, 0x66, 0x2d, 0xcf, 0xe0, 0xbe, 0x24, 0xbd, 0x63, + 0x6f, 0x95, 0x48, 0x0f, 0xb4, 0x4e, 0x3a, 0xb8, 0x4b, 0x71, 0x5b, 0xac, 0x41, 0x0f, 0xe6, 0x4c, + 0x7d, 0x6b, 0x6e, 0x23, 0x43, 0x74, 0x6f, 0x39, 0xd4, 0x8f, 0x64, 0xa8, 0x07, 0xbb, 0x7b, 0xa3, + 0x43, 0x19, 0xbf, 0x94, 0xaf, 0xb3, 0xb8, 0x14, 0x6a, 0x86, 0xfa, 0x44, 0x85, 0x96, 0x1c, 0x94, + 0xd1, 0x8d, 0xcd, 0x11, 0x56, 0xdd, 0xb1, 0x7a, 0xc1, 0xd0, 0x98, 0xe9, 0x3e, 0xae, 0xff, 0x1a, + 0xc5, 0xaf, 0x3b, 0xea, 0x9f, 0x18, 0x07, 0xbd, 0x07, 0x8f, 0xd4, 0x52, 0x4c, 0xcb, 0x3f, 0x3f, + 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x7b, 0x5d, 0x05, 0x7c, 0x19, 0x00, 0x00, } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 02fb9c5b91..f2ba6b4757 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -180,11 +180,8 @@ message GetAccountRequest { } message CreateAccountRequest { - // The account id to use for this account - string id = 1; - // The account resource to create - Account account = 2; + Account account = 1; } message UpdateAccountRequest { @@ -456,11 +453,8 @@ message GetGroupRequest { } message CreateGroupRequest { - // The group id to use for this group - string id = 1; - // The account resource to create - Group group = 2; + Group group = 1; } message UpdateGroupRequest { diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index b574b3d5a1..34a7be485c 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -226,13 +226,14 @@ func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res // CreateAccount implements the AccountsServiceHandler interface func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountRequest, res *proto.Account) (err error) { var id string - if req.Id == "" { - req.Id = uuid.Must(uuid.NewV4()).String() + if req.Account == nil { + return fmt.Errorf("account missing") + } + if req.Account.Id == "" { + req.Account.Id = uuid.Must(uuid.NewV4()).String() } - // we are always ignoring the id in the account here ... hmm just do away with the extra id property? - req.Account.Id = req.Id - if id, err = cleanupID(req.Id); err != nil { + if id, err = cleanupID(req.Account.Id); err != nil { return } path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) From 544164724943ec5c2e52fd4104f3df1d997f6a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 17 Jun 2020 13:38:12 +0000 Subject: [PATCH 158/407] Automated changelog update [skip ci] --- CHANGELOG.md | 9 +++++++++ go.sum | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7f9ad7637..e79705d62d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) +* Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) ## Details @@ -18,6 +19,14 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/33 + +* Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) + + We updated the api to allow fetching users not onyl by UUID, but also by identity (OpenID issuer + and subject) email, username and optionally a password. + + https://github.com/owncloud/ocis-accounts/pull/30 + # Changelog for [0.1.1] (2020-04-29) The following sections list the changes in ocis-accounts 0.1.1. diff --git a/go.sum b/go.sum index b06f9ae12d..e6a2cc172b 100644 --- a/go.sum +++ b/go.sum @@ -48,6 +48,7 @@ github.com/CiscoM31/godata v0.0.0-20191007193734-c2c4ebb1b415 h1:rATYsVSP89BOyS9 github.com/CiscoM31/godata v0.0.0-20191007193734-c2c4ebb1b415/go.mod h1:tjaihnMBH6p5DVnGBksDQQHpErbrLvb9ek6cEWuyc7E= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= +github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= @@ -363,6 +364,7 @@ github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OI github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= @@ -434,11 +436,13 @@ github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKe github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= +github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -546,6 +550,7 @@ github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -560,6 +565,7 @@ github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1D github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -725,11 +731,13 @@ github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= From a828b8242bb54c6a9fe1e6eb85bfe9fe87389187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 17 Jun 2020 17:02:48 +0200 Subject: [PATCH 159/407] handle terms as keywords, remove quotes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/provider/bleve.go | 6 +++++- pkg/service/v0/service.go | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/provider/bleve.go b/pkg/provider/bleve.go index 7b55416b5f..bcb454b550 100644 --- a/pkg/provider/bleve.go +++ b/pkg/provider/bleve.go @@ -52,7 +52,11 @@ func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { if n.Children[1].Token.Type != godata.FilterTokenString { return nil, errors.New("equality expected a string on the rhs") } - q := bleve.NewTermQuery(n.Children[1].Token.Value) + // string tokens are enclosed with 'some string' + // ' is escaped as '' + // TODO unescape '' as ' + // http://docs.oasis-open.org/odata/odata/v4.01/cs01/part2-url-conventions/odata-v4.01-cs01-part2-url-conventions.html#sec_URLComponents + q := bleve.NewTermQuery(n.Children[1].Token.Value[1 : len(n.Children[1].Token.Value)-1]) q.SetField(n.Children[0].Token.Value) return q, nil case "and": diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 34a7be485c..3b6c9a6f45 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -13,6 +13,7 @@ import ( "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" + "github.com/blevesearch/bleve/analysis/analyzer/keyword" "github.com/blevesearch/bleve/search/query" "github.com/gofrs/uuid" "github.com/golang/protobuf/ptypes/empty" @@ -41,6 +42,8 @@ func New(cfg *config.Config) Service { os.MkdirAll(filepath.Join(cfg.Server.AccountsDataPath, "accounts"), 0700) mapping := bleve.NewIndexMapping() + mapping.DefaultAnalyzer = keyword.Name + // TODO don't bother to store fields as we will load the account from disk index, err := bleve.New(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve"), mapping) if err != nil { From 0cdeeb7f03411f3d7e84c3f6332febf0adf2fe88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 18 Jun 2020 14:08:41 +0200 Subject: [PATCH 160/407] allow handler to return an error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/command/server.go | 11 +++++--- pkg/server/grpc/server.go | 9 +++++-- pkg/service/v0/service.go | 53 +++++++++++++++++++++++---------------- 3 files changed, 46 insertions(+), 27 deletions(-) diff --git a/pkg/command/server.go b/pkg/command/server.go index 4c05977d65..223cc25501 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -2,7 +2,6 @@ package command import ( "context" - "fmt" "syscall" "github.com/owncloud/ocis-accounts/pkg/flagset" @@ -53,8 +52,14 @@ func Server(cfg *config.Config) *cli.Command { logger.Info().Str("service", service.Name()).Msg("Reporting settings bundle to account service") go svc.RegisterSettingsBundles(&logger) return service.Run() - }, func(_ error) { - fmt.Println("shutting down grpc server") + }, func(err error) { + if err != nil { + logger.Error().Err(err).Msg("account service died") + } else { + logger.Info(). + Str("service", service.Name()). + Msg("Shutting down server") + } cancel() }) diff --git a/pkg/server/grpc/server.go b/pkg/server/grpc/server.go index b2031ef998..16e6471ffb 100644 --- a/pkg/server/grpc/server.go +++ b/pkg/server/grpc/server.go @@ -18,8 +18,13 @@ func NewService(opts ...Option) grpc.Service { grpc.Logger(options.Logger), ) - hdlr := svc.New(options.Config) - if err := proto.RegisterAccountsServiceHandler(service.Server(), hdlr); err != nil { + var hdlr *svc.Service + var err error + + if hdlr, err = svc.New(options.Config); err != nil { + options.Logger.Fatal().Err(err).Msg("could not initialize service handler") + } + if err = proto.RegisterAccountsServiceHandler(service.Server(), hdlr); err != nil { options.Logger.Fatal().Err(err).Msg("could not register service handler") } diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 3b6c9a6f45..a37b480e61 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -34,57 +34,66 @@ import ( ) // New returns a new instance of Service -func New(cfg *config.Config) Service { +// TODO pass in logger as options +func New(cfg *config.Config) (s *Service, err error) { // read all user and group records // for now recreate index on every start - os.RemoveAll(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve")) - os.MkdirAll(filepath.Join(cfg.Server.AccountsDataPath, "accounts"), 0700) + if err = os.RemoveAll(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve")); err != nil { + return nil, err + } + + if err = os.MkdirAll(filepath.Join(cfg.Server.AccountsDataPath, "accounts"), 0700); err != nil { + return nil, err + } mapping := bleve.NewIndexMapping() + // keep all symbols in terms to allow exact maching, eg. emails mapping.DefaultAnalyzer = keyword.Name - // TODO don't bother to store fields as we will load the account from disk - index, err := bleve.New(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve"), mapping) - if err != nil { - panic(err) + + s = &Service{ + Config: cfg, } - f, err := os.Open(filepath.Join(cfg.Server.AccountsDataPath, "accounts")) - if err != nil { - log.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not open acconts folder") - panic(err) + + if s.index, err = bleve.New(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve"), mapping); err != nil { + return + } + var f *os.File + if f, err = os.Open(filepath.Join(cfg.Server.AccountsDataPath, "accounts")); err != nil { + log.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not open accounts folder") + return } list, err := f.Readdir(-1) f.Close() if err != nil { log.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not list accounts folder") - panic(err) + return } + var data []byte for _, file := range list { path := filepath.Join(cfg.Server.AccountsDataPath, "accounts", file.Name()) - data, err := ioutil.ReadFile(path) - if err != nil { + if data, err = ioutil.ReadFile(path); err != nil { log.Error().Err(err).Str("path", path).Msg("could not read account") continue } a := proto.Account{} - err = json.Unmarshal(data, &a) - if err != nil { + if err = json.Unmarshal(data, &a); err != nil { log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") continue } log.Debug().Interface("account", a).Msg("found account") - index.Index(a.Id, a) + if err = s.index.Index(a.Id, a); err != nil { + log.Error().Err(err).Str("path", path).Interface("account", a).Msg("could not index account") + continue + } } // TODO watch folders for new records - s := Service{ - Config: cfg, - index: index, - } + s.Config = cfg - return s + return } // Service implements the AccountsServiceHandler interface From b65e0636aade1641e79d669f5e77ce7ada607b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 18 Jun 2020 18:18:11 +0200 Subject: [PATCH 161/407] update debendencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 8 ++++---- go.sum | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index a389cf138e..4490494a45 100644 --- a/go.mod +++ b/go.mod @@ -12,9 +12,9 @@ require ( github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect github.com/go-test/deep v1.0.6 // indirect - github.com/gofrs/uuid v3.2.0+incompatible + github.com/gofrs/uuid v3.3.0+incompatible github.com/gogo/protobuf v1.3.1 // indirect - github.com/golang/protobuf v1.4.1 + github.com/golang/protobuf v1.4.2 github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/joho/godotenv v1.3.0 @@ -25,8 +25,8 @@ require ( github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 - github.com/rs/zerolog v1.17.2 - github.com/spf13/viper v1.6.3 + github.com/rs/zerolog v1.19.0 + github.com/spf13/viper v1.7.0 github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tredoe/osutil v1.0.5 google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb diff --git a/go.sum b/go.sum index e6a2cc172b..472a3e3a55 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,7 @@ cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= @@ -116,6 +117,7 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blevesearch/bleve v1.0.9 h1:kqw/Ank/61UV9/Bx9kCcnfH6qWPgmS8O5LNfpsgzASg= github.com/blevesearch/bleve v1.0.9/go.mod h1:tb04/rbU29clbtNgorgFd8XdJea4x3ybYaOjWKr+UBU= @@ -277,6 +279,7 @@ github.com/go-git/go-git-fixtures/v4 v4.0.1 h1:q+IFMfLx200Q3scvt2hN79JsEzy4AmBTp github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= github.com/go-git/go-git/v5 v5.0.0 h1:k5RWPm4iJwYtfWoxIJy4wJX9ON7ihPeZZYC1fLYDnpg= github.com/go-git/go-git/v5 v5.0.0/go.mod h1:oYD8y9kWsGINPFJoLdaScGCN6dlKg23blmClfZwtUVA= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= @@ -309,6 +312,8 @@ github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm github.com/gobwas/ws v1.0.3/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -339,6 +344,8 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -385,6 +392,7 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= @@ -397,7 +405,9 @@ github.com/grpc-ecosystem/grpc-gateway v1.14.4 h1:IOPK2xMPP3aV6/NPt4jt//ELFo3Vv8 github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hako/branca v0.0.0-20180808000428-10b799466ada/go.mod h1:tOPn4gvKEUWqIJNE+zpTeTALaRAXnrRqqSnPlO3VpEo= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.2.0/go.mod h1:1SIkFYi2ZTXUE5Kgt179+4hH33djo11+0Eo2XgTAtkw= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.2.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -433,6 +443,7 @@ github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoI github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= @@ -702,6 +713,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= +github.com/rs/zerolog v1.19.0 h1:hYz4ZVdUgjXTBUmrkrw55j1nHx68LfOKIQk5IYtyScg= +github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -743,6 +756,8 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs= github.com/spf13/viper v1.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw= +github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/steveyen/gtreap v0.1.0 h1:CjhzTa274PyJLJuMZwIzCO1PfC00oRa8d1Kc78bFXJM= github.com/steveyen/gtreap v0.1.0/go.mod h1:kl/5J7XbrOmlIbYIXdRHDDE5QxHqpk0cmkT7Z4dM9/Y= @@ -856,6 +871,7 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -999,6 +1015,7 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1051,6 +1068,8 @@ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miE google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0 h1:cJv5/xdbk1NnMPR1VP9+HU6gupuG9MLBoH1r6RHZ2MY= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= From 74a62bb3bf4e4f3bda82f719edaf3b66e089c7da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 18 Jun 2020 18:18:40 +0200 Subject: [PATCH 162/407] add mock implementation of the accounts service MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/proto/v0/accounts.mock.go | 89 +++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 pkg/proto/v0/accounts.mock.go diff --git a/pkg/proto/v0/accounts.mock.go b/pkg/proto/v0/accounts.mock.go new file mode 100644 index 0000000000..42f5e8276d --- /dev/null +++ b/pkg/proto/v0/accounts.mock.go @@ -0,0 +1,89 @@ +package proto + +import ( + context "context" + + empty "github.com/golang/protobuf/ptypes/empty" + client "github.com/micro/go-micro/v2/client" +) + +// MockAccountsService can be used to write tests +/* +To creata a mock overwrite the functions of an instance like this: + +```go +func mockAccSvc(retErr bool) proto.AccountsService { + if retErr { + return &proto.MockAccountsService{ + ListFunc: func(ctx context.Context, in *proto.ListAccountsRequest, opts ...client.CallOption) (out *proto.ListAccountsResponse, err error) { + return nil, fmt.Errorf("error returned by mockAccountsService LIST") + }, + } + } + + return &proto.MockAccountsService{ + ListFunc: func(ctx context.Context, in *proto.ListAccountsRequest, opts ...client.CallOption) (out *proto.ListAccountsResponse, err error) { + return &proto.ListAccountsResponse{ + Accounts: []*proto.Account{ + { + Id: "yay", + }, + }, + }, nil + }, + } +} +``` +*/ +type MockAccountsService struct { + ListFunc func(ctx context.Context, in *ListAccountsRequest, opts ...client.CallOption) (*ListAccountsResponse, error) + GetFunc func(ctx context.Context, in *GetAccountRequest, opts ...client.CallOption) (*Account, error) + CreateFunc func(ctx context.Context, in *CreateAccountRequest, opts ...client.CallOption) (*Account, error) + UpdateFunc func(ctx context.Context, in *UpdateAccountRequest, opts ...client.CallOption) (*Account, error) + DeleteFunc func(ctx context.Context, in *DeleteAccountRequest, opts ...client.CallOption) (*empty.Empty, error) +} + +// ListAccounts will panic if the function has been called, but not mocked +func (m MockAccountsService) ListAccounts(ctx context.Context, in *ListAccountsRequest, opts ...client.CallOption) (*ListAccountsResponse, error) { + if m.ListFunc != nil { + return m.ListFunc(ctx, in, opts...) + } + + panic("ListFunc was called in test but not mocked") +} + +// GetAccount will panic if the function has been called, but not mocked +func (m MockAccountsService) GetAccount(ctx context.Context, in *GetAccountRequest, opts ...client.CallOption) (*Account, error) { + if m.GetFunc != nil { + return m.GetFunc(ctx, in, opts...) + } + + panic("GetFunc was called in test but not mocked") +} + +// CreateAccount will panic if the function has been called, but not mocked +func (m MockAccountsService) CreateAccount(ctx context.Context, in *CreateAccountRequest, opts ...client.CallOption) (*Account, error) { + if m.CreateFunc != nil { + return m.CreateFunc(ctx, in, opts...) + } + + panic("CreateFunc was called in test but not mocked") +} + +// UpdateAccount will panic if the function has been called, but not mocked +func (m MockAccountsService) UpdateAccount(ctx context.Context, in *UpdateAccountRequest, opts ...client.CallOption) (*Account, error) { + if m.UpdateFunc != nil { + return m.UpdateFunc(ctx, in, opts...) + } + + panic("UpdateFunc was called in test but not mocked") +} + +// DeleteAccount will panic if the function has been called, but not mocked +func (m MockAccountsService) DeleteAccount(ctx context.Context, in *DeleteAccountRequest, opts ...client.CallOption) (*empty.Empty, error) { + if m.DeleteFunc != nil { + return m.DeleteFunc(ctx, in, opts...) + } + + panic("DeleteFunc was called in test but not mocked") +} From ebee2c544348881de0f15ee8d10b7394e5ec6a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 18 Jun 2020 16:42:50 +0200 Subject: [PATCH 163/407] create default accounts when dir does not exist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/service/v0/service.go | 88 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 2 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index a37b480e61..d1dcf99ada 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -43,8 +43,92 @@ func New(cfg *config.Config) (s *Service, err error) { return nil, err } - if err = os.MkdirAll(filepath.Join(cfg.Server.AccountsDataPath, "accounts"), 0700); err != nil { - return nil, err + // check if accounts exist + accountsDir := filepath.Join(cfg.Server.AccountsDataPath, "accounts") + var fi os.FileInfo + if fi, err = os.Stat(accountsDir); err != nil { + if os.IsNotExist(err) { + // create accounts directory + if err = os.MkdirAll(accountsDir, 0700); err != nil { + return nil, err + } + // create default accounts + accounts := []proto.Account{ + { + Id: "4c510ada-c86b-4815-8820-42cdf82c3d51", + PreferredName: "einstein", + Mail: "einstein@example.org", + DisplayName: "Albert Einstein", + UidNumber: 20000, + GidNumber: 30000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=35210$sa1u5Pmfo4cr23Vw$RJNGElaDB1D3xorWkfTEGm2Ko.o2QL3E0cimKx23MNxVWVFSkUUeRoC7FqC4RzYDNQBD6cKzovTEaDD.8TDkD.", + }, + }, + { + Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c", + PreferredName: "marie", + Mail: "marie@example.org", + DisplayName: "Marie Curie", + UidNumber: 20001, + GidNumber: 30000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=81434$sa1u5Pmfo4cr23Vw$W78cyL884GmuvDpxYPvSRBVzEj02T5QhTTcI8Dv4IKvMooDFGv4bwaWMkH9HfJ0wgpEBW7Lp.4Cad0xE/MYSg1", + }, + }, + { + Id: "932b4540-8d16-481e-8ef4-588e4b6b151c", + PreferredName: "richard", + Mail: "richard@example.org", + DisplayName: "Richard Feynman", + UidNumber: 20002, + GidNumber: 30000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=5524$sa1u5Pmfo4cr23Vw$58bQVL/JeUlwM0RY21YKAFMvKvwKLLysGllYXox.vwKT5dHMwdzJjCxwTDMnB2o2pwexC8o/iOXyP2zrhALS40", + }, + }, + // technical users for kopao and reva + { + Id: "820ba2a1-3f54-4538-80a4-2d73007e30bf", + PreferredName: "konnectd", + Mail: "idp@example.org", + DisplayName: "Kopano Konnectd", + UidNumber: 10000, + GidNumber: 15000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=9746$sa1u5Pmfo4cr23Vw$2hnwpkTvUkWX0v6mh8Aw1pbzEXa9EUJzmrey4g2W/8arwWCwhteqU//3aWnA3S0d5T21fOKYteoqlsN1IbTcN.", + }, + }, + { + Id: "bc596f3c-c955-4328-80a0-60d018b4ad57", + PreferredName: "reva", + Mail: "storage@example.org", + DisplayName: "Reva Inter Operability Platform", + UidNumber: 10001, + GidNumber: 15000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=91087$sa1u5Pmfo4cr23Vw$wPC3BbMTbP/ytlo0p.f99zJifyO70AUCdKIK9hkhwutBKGCirLmZs/MsWAG6xHjVvmnmHN5NoON7FUGv5pPaN.", + }, + }, + } + // TODO groups + for i := range accounts { + var bytes []byte + if bytes, err = json.Marshal(accounts[i]); err != nil { + log.Error().Err(err).Interface("account", accounts[i]).Msg("could not marshal default account") + return + } + path := filepath.Join(accountsDir, accounts[i].Id) + if err = ioutil.WriteFile(path, bytes, 0600); err != nil { + accounts[i].PasswordProfile.Password = "***REMOVED***" + log.Error().Err(err).Str("path", path).Interface("account", accounts[i]).Msg("could not persist default account") + return + } + } + + } + } else if !fi.IsDir() { + return nil, fmt.Errorf("%s is not a directory", accountsDir) } mapping := bleve.NewIndexMapping() From 474cf53e3f66ac2a5c246ccaa7e986d8e99bb434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 22 Jun 2020 10:54:03 +0200 Subject: [PATCH 164/407] fix typo --- pkg/service/v0/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index d1dcf99ada..6be43d700d 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -87,7 +87,7 @@ func New(cfg *config.Config) (s *Service, err error) { Password: "$6$rounds=5524$sa1u5Pmfo4cr23Vw$58bQVL/JeUlwM0RY21YKAFMvKvwKLLysGllYXox.vwKT5dHMwdzJjCxwTDMnB2o2pwexC8o/iOXyP2zrhALS40", }, }, - // technical users for kopao and reva + // technical users for kopano and reva { Id: "820ba2a1-3f54-4538-80a4-2d73007e30bf", PreferredName: "konnectd", From 630e2120e529c1f88d31b9e433d7061646db5c75 Mon Sep 17 00:00:00 2001 From: David Christofas Date: Tue, 23 Jun 2020 17:29:28 +0200 Subject: [PATCH 165/407] pass around the correct logger to the services Also did some minor refactoring to make the code similar to the other services. Implements one task of owncloud/product#86 Signed-off-by: David Christofas --- changelog/unreleased/pass-correct-logger.md | 6 ++ go.mod | 1 - go.sum | 81 +++++++++++++++++++-- pkg/command/root.go | 18 +++-- pkg/command/server.go | 13 +--- pkg/server/grpc/option.go | 9 +++ pkg/server/grpc/server.go | 3 +- pkg/service/v0/option.go | 39 ++++++++++ pkg/service/v0/service.go | 67 ++++++++--------- 9 files changed, 177 insertions(+), 60 deletions(-) create mode 100644 changelog/unreleased/pass-correct-logger.md create mode 100644 pkg/service/v0/option.go diff --git a/changelog/unreleased/pass-correct-logger.md b/changelog/unreleased/pass-correct-logger.md new file mode 100644 index 0000000000..049ad76046 --- /dev/null +++ b/changelog/unreleased/pass-correct-logger.md @@ -0,0 +1,6 @@ +Change: pass around the correct logger throughout the code + +Pass around the logger to have consistent log formatting, log level, etc. + +https://github.com/owncloud/ocis-accounts/issues/41 +https://github.com/owncloud/ocis-accounts/pull/48 diff --git a/go.mod b/go.mod index 4490494a45..5440c35867 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,6 @@ require ( github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 - github.com/rs/zerolog v1.19.0 github.com/spf13/viper v1.7.0 github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tredoe/osutil v1.0.5 diff --git a/go.sum b/go.sum index 472a3e3a55..8ce116d14d 100644 --- a/go.sum +++ b/go.sum @@ -43,6 +43,7 @@ github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocm github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvdeRAgDr0izn4z5Ij88= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CiscoM31/godata v0.0.0-20191007193734-c2c4ebb1b415 h1:rATYsVSP89BOyS9/o+cdGZ8qU7AHh4frtS59nFPoX8k= @@ -113,6 +114,7 @@ github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= @@ -155,7 +157,9 @@ github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4r github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -173,23 +177,29 @@ github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.18+incompatible h1:Zz1aXgDrFFi1nadh58tA9ktt06cmPTwNNP3dXwIq1lE= github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/couchbase/ghistogram v0.1.0/go.mod h1:s1Jhy76zqfEecpNWJfWUiKZookAFaiGOEoyzgHt9i7k= github.com/couchbase/moss v0.1.0/go.mod h1:9MaHIaRuy9pvLPUJxB8sh8OrLfyDczECVL37grCIubs= github.com/couchbase/vellum v1.0.1 h1:qrj9ohvZedvc51S5KzPfJ6P6z0Vqzv7Lx7k3mVc2WOk= github.com/couchbase/vellum v1.0.1/go.mod h1:FcwrEivFpNi24R3jLOs3n+fs5RnuQnQqCLBJ1uAg1W4= github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMElOWxok= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= @@ -204,9 +214,11 @@ github.com/cznic/strutil v0.0.0-20181122101858-275e90344537 h1:MZRmHqDBd0vxNwenE github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= @@ -243,16 +255,19 @@ github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpm github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/forestgiant/sliceutil v0.0.0-20160425183142-94783f95db6c/go.mod h1:pFdJbAhRf7rh6YYMUdIQGyzne6zYL1tCUW8QV2B3UfY= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsouza/go-dockerclient v1.4.4/go.mod h1:PrwszSL5fbmsESocROrOGq/NULMXRw+bajY0ltzD6MA= github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+4np9qfPbb+znGc= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= @@ -268,6 +283,7 @@ github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPw github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/chi v4.1.0+incompatible h1:ETj3cggsVIY2Xao5ExCu6YhEh5MD6JTfcBzS37R260w= github.com/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -318,8 +334,10 @@ github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -342,8 +360,6 @@ github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:x github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -352,6 +368,7 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -392,9 +409,12 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -433,6 +453,7 @@ github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= @@ -445,6 +466,7 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= @@ -466,6 +488,7 @@ github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joncalhoun/qson v0.0.0-20170526102502-8a9cab3a62b1/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -477,6 +500,7 @@ github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGn github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -493,8 +517,10 @@ github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgo github.com/kljensen/snowball v0.6.0/go.mod h1:27N7E8fVU5H68RlUmnWwZCfxgt4POBJfENGMvNRhldw= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= @@ -516,6 +542,7 @@ github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gN github.com/lucas-clemente/quic-go v0.13.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= github.com/lucas-clemente/quic-go v0.14.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -532,21 +559,25 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.9.1/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= github.com/mholt/certmagic v0.9.3/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= +github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= github.com/micro/cli/v2 v2.1.1/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/cli/v2 v2.1.2 h1:43J1lChg/rZCC1rvdqZNFSQDrGT7qfMrtp6/ztpIkEM= github.com/micro/cli/v2 v2.1.2/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6s+iDsrM= github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= +github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= github.com/micro/go-micro/v2 v2.6.0 h1:HH6uEqTu6pkBtAlwAqQW2sf33640iEa1s9puGIctpO0= github.com/micro/go-micro/v2 v2.6.0/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= +github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1 h1:7IkXfl94MdLZQwk0lNmu9Cg5WP42Zak9EtQMeN4SvVs= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1/go.mod h1:QrkcwcDtIs2hIJpIEhozekyf6Rfz5C36kFI8+zzCpX0= @@ -572,16 +603,20 @@ github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaC github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= @@ -592,6 +627,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.0/go.mod h1:r5y0WgCag0dTj/qiHkHrXAcKQ/f5GMOZaEGdoxxnJ4I= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= @@ -606,6 +642,7 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.4 h1:aEsHIssIk6ETN5m2/MD8Y4B2X7FfXrBAUdkyRvbVYzA= github.com/nats-io/nkeys v0.1.4/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= @@ -628,9 +665,11 @@ github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXW github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -653,6 +692,7 @@ github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV0 github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 h1:wk/7aAUITTrM192TFoIDq4fqzJQtFOQ0dDdSRkJ25SU= github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363/go.mod h1:/h0ceztOoFc3KAnm8nqZI4zwsaaZK9q4MTgtintwsXc= +github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -660,6 +700,7 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= @@ -672,6 +713,7 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= @@ -681,22 +723,26 @@ github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.2.1 h1:JnMpQc6ppsNgw9QPAGF6Dod479itz7lvlsMzzNayLOI= github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0 h1:L+1lyG48J1zAQXA3RBX/nG/B3gjlHq0zTt2tlbJLyCY= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5 h1:3+auTFlqw+ZaQYJARz6ArODtkaIwtvBTx3N2NehQlL8= github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= @@ -712,10 +758,11 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= -github.com/rs/zerolog v1.19.0 h1:hYz4ZVdUgjXTBUmrkrw55j1nHx68LfOKIQk5IYtyScg= -github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -729,24 +776,31 @@ github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLS github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -770,8 +824,10 @@ github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRci github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= @@ -812,6 +868,7 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= @@ -826,18 +883,23 @@ go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= gocloud.dev v0.17.0/go.mod h1:tIHTRdR1V5dlD8sTkzYdTGizBJ314BDykJ8KmadEXwo= gocloud.dev/pubsub/rabbitpubsub v0.17.0/go.mod h1:7o1XYDiIC+b0mmcwJuofsDg08t0DtU2ubfn7C/Uz7Y0= @@ -881,6 +943,7 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -937,6 +1000,7 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -986,10 +1050,12 @@ golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fq golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1066,8 +1132,6 @@ google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0 h1:cJv5/xdbk1NnMPR1VP9+HU6gupuG9MLBoH1r6RHZ2MY= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= @@ -1082,6 +1146,7 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= @@ -1092,6 +1157,7 @@ gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdOD gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= @@ -1109,6 +1175,7 @@ gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzE gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= gopkg.in/telegram-bot-api.v4 v4.6.4/go.mod h1:5DpGO5dbumb40px+dXcwCpcjmeHNYLpk0bp3XRNvWDM= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -1116,6 +1183,7 @@ gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bl gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1139,4 +1207,5 @@ k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/command/root.go b/pkg/command/root.go index d08a7acebc..8e8b0791cb 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -23,14 +23,16 @@ var ( // Execute is the entry point for the ocis-accounts command. func Execute() error { - rootCfg := config.New() + cfg := config.New() app := &cli.App{ - Name: "ocis-accounts", - Version: version.String, - Usage: "Example service for Reva/oCIS", - Flags: flagset.RootWithConfig(rootCfg), + Name: "ocis-accounts", + Version: version.String, + Usage: "Example service for Reva/oCIS", + Compiled: version.Compiled(), + Flags: flagset.RootWithConfig(cfg), Before: func(c *cli.Context) error { - logger := NewLogger(config.New()) + err := ParseConfig(c, cfg) + logger := NewLogger(cfg) for _, v := range defaultConfigPaths { // location is the user's home if v[0] == '$' || v[0] == '~' { @@ -46,7 +48,7 @@ func Execute() error { } } } - return nil + return err }, Authors: []*cli.Author{ @@ -57,7 +59,7 @@ func Execute() error { }, Commands: []*cli.Command{ - Server(rootCfg), + Server(cfg), }, } diff --git a/pkg/command/server.go b/pkg/command/server.go index 223cc25501..57ba1f522d 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -11,11 +11,6 @@ import ( "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/server/grpc" svc "github.com/owncloud/ocis-accounts/pkg/service/v0" - oclog "github.com/owncloud/ocis-pkg/v2/log" -) - -var ( - logger oclog.Logger ) // Server is the entry point for the server command. @@ -26,15 +21,10 @@ func Server(cfg *config.Config) *cli.Command { Description: "uses an LDAP server as the storage backend", Flags: flagset.ServerWithConfig(cfg), Before: func(c *cli.Context) error { - logger = oclog.NewLogger( - oclog.Name(cfg.Server.Name), - oclog.Level("info"), - oclog.Color(true), - oclog.Pretty(true), - ) return ParseConfig(c, cfg) }, Action: func(c *cli.Context) error { + logger := NewLogger(cfg) gr := run.Group{} ctx, cancel := context.WithCancel(context.Background()) @@ -46,6 +36,7 @@ func Server(cfg *config.Config) *cli.Command { grpc.Name(cfg.Server.Name), grpc.Namespace(cfg.Server.Namespace), grpc.Address(cfg.Server.Address), + grpc.Flags(flagset.RootWithConfig(config.New())), ) gr.Add(func() error { diff --git a/pkg/server/grpc/option.go b/pkg/server/grpc/option.go index 132cf498cf..8ccb9c4bf6 100644 --- a/pkg/server/grpc/option.go +++ b/pkg/server/grpc/option.go @@ -3,6 +3,7 @@ package grpc import ( "context" + "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-pkg/v2/log" ) @@ -18,6 +19,7 @@ type Options struct { Context context.Context Config *config.Config Namespace string + Flags []cli.Flag } // newOptions initializes the available default options. @@ -72,3 +74,10 @@ func Namespace(val string) Option { o.Namespace = val } } + +// Flags provides a function to set the flags option. +func Flags(val []cli.Flag) Option { + return func(o *Options) { + o.Flags = append(o.Flags, val...) + } +} diff --git a/pkg/server/grpc/server.go b/pkg/server/grpc/server.go index 16e6471ffb..6f8d342121 100644 --- a/pkg/server/grpc/server.go +++ b/pkg/server/grpc/server.go @@ -16,12 +16,13 @@ func NewService(opts ...Option) grpc.Service { grpc.Address(options.Address), grpc.Namespace(options.Namespace), grpc.Logger(options.Logger), + grpc.Flags(options.Flags...), ) var hdlr *svc.Service var err error - if hdlr, err = svc.New(options.Config); err != nil { + if hdlr, err = svc.New(svc.Logger(options.Logger), svc.Config(options.Config)); err != nil { options.Logger.Fatal().Err(err).Msg("could not initialize service handler") } if err = proto.RegisterAccountsServiceHandler(service.Server(), hdlr); err != nil { diff --git a/pkg/service/v0/option.go b/pkg/service/v0/option.go new file mode 100644 index 0000000000..7126aeed47 --- /dev/null +++ b/pkg/service/v0/option.go @@ -0,0 +1,39 @@ +package service + +import ( + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-pkg/v2/log" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Config *config.Config +} + +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 6be43d700d..18b8c1648d 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -21,9 +21,8 @@ import ( "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" "github.com/owncloud/ocis-accounts/pkg/provider" - olog "github.com/owncloud/ocis-pkg/v2/log" + "github.com/owncloud/ocis-pkg/v2/log" settings "github.com/owncloud/ocis-settings/pkg/proto/v0" - "github.com/rs/zerolog/log" "github.com/tredoe/osutil/user/crypt" // register crypt functions @@ -35,7 +34,10 @@ import ( // New returns a new instance of Service // TODO pass in logger as options -func New(cfg *config.Config) (s *Service, err error) { +func New(opts ...Option) (s *Service, err error) { + options := newOptions(opts...) + logger := options.Logger + cfg := options.Config // read all user and group records // for now recreate index on every start @@ -115,13 +117,13 @@ func New(cfg *config.Config) (s *Service, err error) { for i := range accounts { var bytes []byte if bytes, err = json.Marshal(accounts[i]); err != nil { - log.Error().Err(err).Interface("account", accounts[i]).Msg("could not marshal default account") + logger.Error().Err(err).Interface("account", accounts[i]).Msg("could not marshal default account") return } path := filepath.Join(accountsDir, accounts[i].Id) if err = ioutil.WriteFile(path, bytes, 0600); err != nil { accounts[i].PasswordProfile.Password = "***REMOVED***" - log.Error().Err(err).Str("path", path).Interface("account", accounts[i]).Msg("could not persist default account") + logger.Error().Err(err).Str("path", path).Interface("account", accounts[i]).Msg("could not persist default account") return } } @@ -145,43 +147,42 @@ func New(cfg *config.Config) (s *Service, err error) { } var f *os.File if f, err = os.Open(filepath.Join(cfg.Server.AccountsDataPath, "accounts")); err != nil { - log.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not open accounts folder") + logger.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not open accounts folder") return } list, err := f.Readdir(-1) f.Close() if err != nil { - log.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not list accounts folder") + logger.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not list accounts folder") return } var data []byte for _, file := range list { path := filepath.Join(cfg.Server.AccountsDataPath, "accounts", file.Name()) if data, err = ioutil.ReadFile(path); err != nil { - log.Error().Err(err).Str("path", path).Msg("could not read account") + logger.Error().Err(err).Str("path", path).Msg("could not read account") continue } a := proto.Account{} if err = json.Unmarshal(data, &a); err != nil { - log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") + logger.Error().Err(err).Str("path", path).Msg("could not unmarshal account") continue } - log.Debug().Interface("account", a).Msg("found account") + logger.Debug().Interface("account", a).Msg("found account") if err = s.index.Index(a.Id, a); err != nil { - log.Error().Err(err).Str("path", path).Interface("account", a).Msg("could not index account") + logger.Error().Err(err).Str("path", path).Interface("account", a).Msg("could not index account") continue } } // TODO watch folders for new records - s.Config = cfg - return } // Service implements the AccountsServiceHandler interface type Service struct { + log log.Logger Config *config.Config index bleve.Index } @@ -214,31 +215,31 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest // parse the query like an odata filter var q *godata.GoDataFilterQuery if q, err = godata.ParseFilterString(in.Query); err != nil { - log.Error().Err(err).Msg("could not parse query") + s.log.Error().Err(err).Msg("could not parse query") return } // convert to bleve query query, err = provider.BuildBleveQuery(q) if err != nil { - log.Error().Err(err).Msg("could not build bleve query") + s.log.Error().Err(err).Msg("could not build bleve query") return } } else { query = bleve.NewMatchAllQuery() } - log.Debug().Interface("query", query).Msg("using query") + s.log.Debug().Interface("query", query).Msg("using query") searchRequest := bleve.NewSearchRequest(query) var searchResult *bleve.SearchResult searchResult, err = s.index.Search(searchRequest) if err != nil { - log.Error().Err(err).Msg("could not execute bleve search") + s.log.Error().Err(err).Msg("could not execute bleve search") return } - log.Debug().Interface("result", searchResult).Msg("result") + s.log.Debug().Interface("result", searchResult).Msg("result") res.Accounts = make([]*proto.Account, 0) @@ -248,20 +249,20 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest var data []byte data, err = ioutil.ReadFile(path) if err != nil { - log.Error().Err(err).Str("path", path).Msg("could not read account") + s.log.Error().Err(err).Str("path", path).Msg("could not read account") continue } a := proto.Account{} err = json.Unmarshal(data, &a) if err != nil { - log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") + s.log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") continue } - log.Debug().Interface("account", a).Msg("found account") + s.log.Debug().Interface("account", a).Msg("found account") if password != "" { if a.PasswordProfile == nil { - log.Debug().Interface("account", a).Msg("no password profile") + s.log.Debug().Interface("account", a).Msg("no password profile") return fmt.Errorf("invalid password") } if !s.passwordIsValid(a.PasswordProfile.Password, password) { @@ -278,7 +279,7 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest func (s Service) passwordIsValid(hash string, pwd string) (ok bool) { defer func() { if r := recover(); r != nil { - log.Error().Err(fmt.Errorf("%s", r)).Str("hash", hash).Msg("password lib panicked") + s.log.Error().Err(fmt.Errorf("%s", r)).Str("hash", hash).Msg("password lib panicked") } }() @@ -305,17 +306,17 @@ func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res var data []byte data, err = ioutil.ReadFile(path) if err != nil { - log.Error().Err(err).Str("path", path).Msg("could not read account") + s.log.Error().Err(err).Str("path", path).Msg("could not read account") // TODO we need error handling ... eg Not Found return fmt.Errorf("account not found") } err = json.Unmarshal(data, res) if err != nil { - log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") + s.log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") return fmt.Errorf("internal server error") } - log.Debug().Interface("account", res).Msg("found account") + s.log.Debug().Interface("account", res).Msg("found account") return } @@ -339,25 +340,25 @@ func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountReques c := crypt.New(crypt.SHA512) if req.Account.PasswordProfile.Password, err = c.Generate([]byte(req.Account.PasswordProfile.Password), nil); err != nil { req.Account.PasswordProfile.Password = "***REMOVED***" - log.Error().Err(err).Str("id", id).Interface("account", req.Account).Msg("could not hash password") + s.log.Error().Err(err).Str("id", id).Interface("account", req.Account).Msg("could not hash password") return } } var bytes []byte if bytes, err = json.Marshal(req.Account); err != nil { - log.Error().Err(err).Interface("account", req.Account).Msg("could not marshal account") + s.log.Error().Err(err).Interface("account", req.Account).Msg("could not marshal account") return } if err = ioutil.WriteFile(path, bytes, 0600); err != nil { req.Account.PasswordProfile.Password = "***REMOVED***" - log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not persist new account") + s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not persist new account") return } if err = s.index.Index(id, req.Account); err != nil { req.Account.PasswordProfile.Password = "***REMOVED***" - log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not index new account") + s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not index new account") return } @@ -378,12 +379,12 @@ func (s Service) DeleteAccount(c context.Context, req *proto.DeleteAccountReques path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) if err = os.Remove(path); err != nil { - log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account") + s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account") return } if err = s.index.Delete(id); err != nil { - log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account from index") + s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account from index") return } return os.Remove(path) @@ -415,7 +416,7 @@ func (s Service) DeleteGroup(c context.Context, req *proto.DeleteGroupRequest, r } // RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. -func RegisterSettingsBundles(l *olog.Logger) { +func RegisterSettingsBundles(l *log.Logger) { // TODO this won't work with a registry other than mdns. Look into Micro's client initialization. // https://github.com/owncloud/ocis-proxy/issues/38 service := settings.NewBundleService("com.owncloud.api.settings", mclient.DefaultClient) From 5b33eb22ab17bd33f1bb67476a3b385b2d7e65cf Mon Sep 17 00:00:00 2001 From: David Christofas Date: Tue, 23 Jun 2020 15:42:31 +0000 Subject: [PATCH 166/407] Automated changelog update [skip ci] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e79705d62d..e47e140f38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,11 +6,20 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary +* Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) ## Details +* Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) + + Pass around the logger to have consistent log formatting, log level, etc. + + https://github.com/owncloud/ocis-accounts/issues/41 + https://github.com/owncloud/ocis-accounts/pull/48 + + * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) We had a timezone setting in our profile settings bundle. As we're not dealing with a timezone From c01f4d1ed9c1788082e77117576f35b37c2412f6 Mon Sep 17 00:00:00 2001 From: David Christofas Date: Wed, 24 Jun 2020 11:40:25 +0200 Subject: [PATCH 167/407] enable accounts on creation Signed-off-by: David Christofas --- changelog/unreleased/enable_accounts.md | 6 ++++++ pkg/service/v0/service.go | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 changelog/unreleased/enable_accounts.md diff --git a/changelog/unreleased/enable_accounts.md b/changelog/unreleased/enable_accounts.md new file mode 100644 index 0000000000..81db1ca008 --- /dev/null +++ b/changelog/unreleased/enable_accounts.md @@ -0,0 +1,6 @@ +Change: Enable accounts on creation + +Accounts have been created with the account_enabled flag set to false. +Now when they are created accounts will be enabled per default. + +https://github.com/owncloud/ocis-accounts/issues/43 diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 18b8c1648d..60380cf73a 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -66,6 +66,7 @@ func New(opts ...Option) (s *Service, err error) { PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=35210$sa1u5Pmfo4cr23Vw$RJNGElaDB1D3xorWkfTEGm2Ko.o2QL3E0cimKx23MNxVWVFSkUUeRoC7FqC4RzYDNQBD6cKzovTEaDD.8TDkD.", }, + AccountEnabled: true, }, { Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c", @@ -77,6 +78,7 @@ func New(opts ...Option) (s *Service, err error) { PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=81434$sa1u5Pmfo4cr23Vw$W78cyL884GmuvDpxYPvSRBVzEj02T5QhTTcI8Dv4IKvMooDFGv4bwaWMkH9HfJ0wgpEBW7Lp.4Cad0xE/MYSg1", }, + AccountEnabled: true, }, { Id: "932b4540-8d16-481e-8ef4-588e4b6b151c", @@ -88,6 +90,7 @@ func New(opts ...Option) (s *Service, err error) { PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=5524$sa1u5Pmfo4cr23Vw$58bQVL/JeUlwM0RY21YKAFMvKvwKLLysGllYXox.vwKT5dHMwdzJjCxwTDMnB2o2pwexC8o/iOXyP2zrhALS40", }, + AccountEnabled: true, }, // technical users for kopano and reva { @@ -100,6 +103,7 @@ func New(opts ...Option) (s *Service, err error) { PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=9746$sa1u5Pmfo4cr23Vw$2hnwpkTvUkWX0v6mh8Aw1pbzEXa9EUJzmrey4g2W/8arwWCwhteqU//3aWnA3S0d5T21fOKYteoqlsN1IbTcN.", }, + AccountEnabled: true, }, { Id: "bc596f3c-c955-4328-80a0-60d018b4ad57", @@ -111,6 +115,7 @@ func New(opts ...Option) (s *Service, err error) { PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=91087$sa1u5Pmfo4cr23Vw$wPC3BbMTbP/ytlo0p.f99zJifyO70AUCdKIK9hkhwutBKGCirLmZs/MsWAG6xHjVvmnmHN5NoON7FUGv5pPaN.", }, + AccountEnabled: true, }, } // TODO groups @@ -344,6 +349,7 @@ func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountReques return } } + req.Account.AccountEnabled = true var bytes []byte if bytes, err = json.Marshal(req.Account); err != nil { From 92191ac597a4ad652212b0ac8839b9cb30bd0247 Mon Sep 17 00:00:00 2001 From: David Christofas Date: Thu, 25 Jun 2020 07:37:53 +0000 Subject: [PATCH 168/407] Automated changelog update [skip ci] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e47e140f38..d6ac70152a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,12 +6,21 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary +* Change - Enable accounts on creation: [#43](https://github.com/owncloud/ocis-accounts/issues/43) * Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) ## Details +* Change - Enable accounts on creation: [#43](https://github.com/owncloud/ocis-accounts/issues/43) + + Accounts have been created with the account_enabled flag set to false. Now when they are + created accounts will be enabled per default. + + https://github.com/owncloud/ocis-accounts/issues/43 + + * Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) Pass around the logger to have consistent log formatting, log level, etc. From 435104b5ff658ea3a28935e2e9e20d6f7b8913cf Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Mon, 29 Jun 2020 11:12:43 +0200 Subject: [PATCH 169/407] Add code generation for swagger and protoweb Some of the Protobuf Messages were missing fields: - RemoveMemberRequest was missing the `account_id` field for the account/member id - ListMembersRequest was missing the `id` field for the group id Some of the endpoint annotations were not correct regarding declared bodies and the ids listed above. --- Makefile | 44 +- pkg/proto/v0/accounts.pb.go | 2782 ++++++++++++++++++---------- pkg/proto/v0/accounts.pb.micro.go | 188 ++ pkg/proto/v0/accounts.pb.web.go | 1129 +++++++++++ pkg/proto/v0/accounts.proto | 16 +- pkg/proto/v0/accounts.swagger.json | 953 ++++++++++ 6 files changed, 4129 insertions(+), 983 deletions(-) create mode 100644 pkg/proto/v0/accounts.pb.web.go create mode 100644 pkg/proto/v0/accounts.swagger.json diff --git a/Makefile b/Makefile index e3e0b96008..1609295487 100644 --- a/Makefile +++ b/Makefile @@ -156,6 +156,44 @@ docs: docs-copy docs-build watch: go run github.com/cespare/reflex -c reflex.conf -.PHONY: pb -pb: - protoc -I=$(PROTO_SRC) -I=third_party --go_out=. --micro_out=. $(PROTO_SRC)/*.proto +$(GOPATH)/bin/protoc-gen-go: + GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go + +$(GOPATH)/bin/protoc-gen-micro: + GO111MODULE=on go get -v github.com/micro/protoc-gen-micro/v2 + +$(GOPATH)/bin/protoc-gen-microweb: + GO111MODULE=off go get -v github.com/owncloud/protoc-gen-microweb + +$(GOPATH)/bin/protoc-gen-swagger: + GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger + +$(PROTO_SRC)/accounts.pb.go: $(PROTO_SRC)/accounts.proto + protoc \ + -I=third_party/ \ + -I=$(PROTO_SRC)/ \ + --go_out=. accounts.proto + +$(PROTO_SRC)/accounts.pb.micro.go: $(PROTO_SRC)/accounts.proto + protoc \ + -I=third_party/ \ + -I=$(PROTO_SRC)/ \ + --micro_out=. accounts.proto + +$(PROTO_SRC)/accounts.pb.web.go: $(PROTO_SRC)/accounts.proto + protoc \ + -I=third_party/ \ + -I=$(PROTO_SRC)/ \ + --microweb_out=. accounts.proto + +$(PROTO_SRC)/accounts.swagger.json: $(PROTO_SRC)/accounts.proto + # the other commands above respect the declared package in the .proto file for placement of the resulting file. + # `swagger_out` doesn't, so we have to specify the output path as `$(PROTO_SRC)` instead of `.` + protoc \ + -I=third_party/ \ + -I=$(PROTO_SRC)/ \ + --swagger_out=$(PROTO_SRC) accounts.proto + +.PHONY: protobuf +protobuf: $(GOPATH)/bin/protoc-gen-go $(GOPATH)/bin/protoc-gen-micro $(GOPATH)/bin/protoc-gen-microweb $(GOPATH)/bin/protoc-gen-swagger \ + $(PROTO_SRC)/accounts.pb.go $(PROTO_SRC)/accounts.pb.micro.go $(PROTO_SRC)/accounts.pb.web.go $(PROTO_SRC)/accounts.swagger.json diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 217a615f11..1af65aaca0 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -1,30 +1,39 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.21.0-devel +// protoc v3.11.4 // source: accounts.proto package proto import ( - fmt "fmt" proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/empty" + empty "github.com/golang/protobuf/ptypes/empty" timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" field_mask "google.golang.org/genproto/protobuf/field_mask" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 type ListAccountsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Optional. The maximum number of accounts to return in the response PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. A pagination token returned from a previous call to `Get` @@ -53,281 +62,325 @@ type ListAccountsRequest struct { // `email` set to `foo@example.com` // * Query `display_name=\\"Test String\\"` returns accounts with // display names that include both "Test" and "String" - Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` } -func (m *ListAccountsRequest) Reset() { *m = ListAccountsRequest{} } -func (m *ListAccountsRequest) String() string { return proto.CompactTextString(m) } -func (*ListAccountsRequest) ProtoMessage() {} +func (x *ListAccountsRequest) Reset() { + *x = ListAccountsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAccountsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAccountsRequest) ProtoMessage() {} + +func (x *ListAccountsRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAccountsRequest.ProtoReflect.Descriptor instead. func (*ListAccountsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{0} + return file_accounts_proto_rawDescGZIP(), []int{0} } -func (m *ListAccountsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListAccountsRequest.Unmarshal(m, b) -} -func (m *ListAccountsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListAccountsRequest.Marshal(b, m, deterministic) -} -func (m *ListAccountsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAccountsRequest.Merge(m, src) -} -func (m *ListAccountsRequest) XXX_Size() int { - return xxx_messageInfo_ListAccountsRequest.Size(m) -} -func (m *ListAccountsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListAccountsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListAccountsRequest proto.InternalMessageInfo - -func (m *ListAccountsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize +func (x *ListAccountsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize } return 0 } -func (m *ListAccountsRequest) GetPageToken() string { - if m != nil { - return m.PageToken +func (x *ListAccountsRequest) GetPageToken() string { + if x != nil { + return x.PageToken } return "" } -func (m *ListAccountsRequest) GetFieldMask() *field_mask.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListAccountsRequest) GetFieldMask() *field_mask.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListAccountsRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *ListAccountsRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } type ListAccountsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The field name should match the noun "accounts" in the method name. There // will be a maximum number of items returned based on the page_size field // in the request Accounts []*Account `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` // Token to retrieve the next page of results, or empty if there are no // more results in the list - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (m *ListAccountsResponse) Reset() { *m = ListAccountsResponse{} } -func (m *ListAccountsResponse) String() string { return proto.CompactTextString(m) } -func (*ListAccountsResponse) ProtoMessage() {} +func (x *ListAccountsResponse) Reset() { + *x = ListAccountsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAccountsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAccountsResponse) ProtoMessage() {} + +func (x *ListAccountsResponse) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAccountsResponse.ProtoReflect.Descriptor instead. func (*ListAccountsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{1} + return file_accounts_proto_rawDescGZIP(), []int{1} } -func (m *ListAccountsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListAccountsResponse.Unmarshal(m, b) -} -func (m *ListAccountsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListAccountsResponse.Marshal(b, m, deterministic) -} -func (m *ListAccountsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAccountsResponse.Merge(m, src) -} -func (m *ListAccountsResponse) XXX_Size() int { - return xxx_messageInfo_ListAccountsResponse.Size(m) -} -func (m *ListAccountsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListAccountsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListAccountsResponse proto.InternalMessageInfo - -func (m *ListAccountsResponse) GetAccounts() []*Account { - if m != nil { - return m.Accounts +func (x *ListAccountsResponse) GetAccounts() []*Account { + if x != nil { + return x.Accounts } return nil } -func (m *ListAccountsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken +func (x *ListAccountsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken } return "" } type GetAccountRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *GetAccountRequest) Reset() { *m = GetAccountRequest{} } -func (m *GetAccountRequest) String() string { return proto.CompactTextString(m) } -func (*GetAccountRequest) ProtoMessage() {} +func (x *GetAccountRequest) Reset() { + *x = GetAccountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAccountRequest) ProtoMessage() {} + +func (x *GetAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAccountRequest.ProtoReflect.Descriptor instead. func (*GetAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{2} + return file_accounts_proto_rawDescGZIP(), []int{2} } -func (m *GetAccountRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetAccountRequest.Unmarshal(m, b) -} -func (m *GetAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetAccountRequest.Marshal(b, m, deterministic) -} -func (m *GetAccountRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAccountRequest.Merge(m, src) -} -func (m *GetAccountRequest) XXX_Size() int { - return xxx_messageInfo_GetAccountRequest.Size(m) -} -func (m *GetAccountRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetAccountRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAccountRequest proto.InternalMessageInfo - -func (m *GetAccountRequest) GetId() string { - if m != nil { - return m.Id +func (x *GetAccountRequest) GetId() string { + if x != nil { + return x.Id } return "" } type CreateAccountRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The account resource to create - Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` } -func (m *CreateAccountRequest) Reset() { *m = CreateAccountRequest{} } -func (m *CreateAccountRequest) String() string { return proto.CompactTextString(m) } -func (*CreateAccountRequest) ProtoMessage() {} +func (x *CreateAccountRequest) Reset() { + *x = CreateAccountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAccountRequest) ProtoMessage() {} + +func (x *CreateAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAccountRequest.ProtoReflect.Descriptor instead. func (*CreateAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{3} + return file_accounts_proto_rawDescGZIP(), []int{3} } -func (m *CreateAccountRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateAccountRequest.Unmarshal(m, b) -} -func (m *CreateAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateAccountRequest.Marshal(b, m, deterministic) -} -func (m *CreateAccountRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateAccountRequest.Merge(m, src) -} -func (m *CreateAccountRequest) XXX_Size() int { - return xxx_messageInfo_CreateAccountRequest.Size(m) -} -func (m *CreateAccountRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateAccountRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateAccountRequest proto.InternalMessageInfo - -func (m *CreateAccountRequest) GetAccount() *Account { - if m != nil { - return m.Account +func (x *CreateAccountRequest) GetAccount() *Account { + if x != nil { + return x.Account } return nil } type UpdateAccountRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The account resource which replaces the resource on the server Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` // The update mask applies to the resource. For the `FieldMask` definition, // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask - UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (m *UpdateAccountRequest) Reset() { *m = UpdateAccountRequest{} } -func (m *UpdateAccountRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateAccountRequest) ProtoMessage() {} +func (x *UpdateAccountRequest) Reset() { + *x = UpdateAccountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateAccountRequest) ProtoMessage() {} + +func (x *UpdateAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateAccountRequest.ProtoReflect.Descriptor instead. func (*UpdateAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{4} + return file_accounts_proto_rawDescGZIP(), []int{4} } -func (m *UpdateAccountRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateAccountRequest.Unmarshal(m, b) -} -func (m *UpdateAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateAccountRequest.Marshal(b, m, deterministic) -} -func (m *UpdateAccountRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateAccountRequest.Merge(m, src) -} -func (m *UpdateAccountRequest) XXX_Size() int { - return xxx_messageInfo_UpdateAccountRequest.Size(m) -} -func (m *UpdateAccountRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateAccountRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateAccountRequest proto.InternalMessageInfo - -func (m *UpdateAccountRequest) GetAccount() *Account { - if m != nil { - return m.Account +func (x *UpdateAccountRequest) GetAccount() *Account { + if x != nil { + return x.Account } return nil } -func (m *UpdateAccountRequest) GetUpdateMask() *field_mask.FieldMask { - if m != nil { - return m.UpdateMask +func (x *UpdateAccountRequest) GetUpdateMask() *field_mask.FieldMask { + if x != nil { + return x.UpdateMask } return nil } type DeleteAccountRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *DeleteAccountRequest) Reset() { *m = DeleteAccountRequest{} } -func (m *DeleteAccountRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteAccountRequest) ProtoMessage() {} +func (x *DeleteAccountRequest) Reset() { + *x = DeleteAccountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteAccountRequest) ProtoMessage() {} + +func (x *DeleteAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteAccountRequest.ProtoReflect.Descriptor instead. func (*DeleteAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{5} + return file_accounts_proto_rawDescGZIP(), []int{5} } -func (m *DeleteAccountRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteAccountRequest.Unmarshal(m, b) -} -func (m *DeleteAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteAccountRequest.Marshal(b, m, deterministic) -} -func (m *DeleteAccountRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteAccountRequest.Merge(m, src) -} -func (m *DeleteAccountRequest) XXX_Size() int { - return xxx_messageInfo_DeleteAccountRequest.Size(m) -} -func (m *DeleteAccountRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteAccountRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteAccountRequest proto.InternalMessageInfo - -func (m *DeleteAccountRequest) GetId() string { - if m != nil { - return m.Id +func (x *DeleteAccountRequest) GetId() string { + if x != nil { + return x.Id } return "" } @@ -335,6 +388,10 @@ func (m *DeleteAccountRequest) GetId() string { // Account follows the properties of the ms graph api user resuorce. // See https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties type Account struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // *true* if the account is enabled; otherwise, *false*. This property is required when a user is created. Supports $filter. @@ -432,228 +489,232 @@ type Account struct { // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. // Read-only. Use revokeSignInSessions to reset. SignInSessionsValidFromDateTime *timestamp.Timestamp `protobuf:"bytes,61,opt,name=sign_in_sessions_valid_from_date_time,json=signInSessionsValidFromDateTime,proto3" json:"sign_in_sessions_valid_from_date_time,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Account) Reset() { *m = Account{} } -func (m *Account) String() string { return proto.CompactTextString(m) } -func (*Account) ProtoMessage() {} +func (x *Account) Reset() { + *x = Account{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Account) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Account) ProtoMessage() {} + +func (x *Account) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Account.ProtoReflect.Descriptor instead. func (*Account) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{6} + return file_accounts_proto_rawDescGZIP(), []int{6} } -func (m *Account) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Account.Unmarshal(m, b) -} -func (m *Account) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Account.Marshal(b, m, deterministic) -} -func (m *Account) XXX_Merge(src proto.Message) { - xxx_messageInfo_Account.Merge(m, src) -} -func (m *Account) XXX_Size() int { - return xxx_messageInfo_Account.Size(m) -} -func (m *Account) XXX_DiscardUnknown() { - xxx_messageInfo_Account.DiscardUnknown(m) -} - -var xxx_messageInfo_Account proto.InternalMessageInfo - -func (m *Account) GetId() string { - if m != nil { - return m.Id +func (x *Account) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Account) GetAccountEnabled() bool { - if m != nil { - return m.AccountEnabled +func (x *Account) GetAccountEnabled() bool { + if x != nil { + return x.AccountEnabled } return false } -func (m *Account) GetIsResourceAccount() bool { - if m != nil { - return m.IsResourceAccount +func (x *Account) GetIsResourceAccount() bool { + if x != nil { + return x.IsResourceAccount } return false } -func (m *Account) GetCreationType() string { - if m != nil { - return m.CreationType +func (x *Account) GetCreationType() string { + if x != nil { + return x.CreationType } return "" } -func (m *Account) GetIdentities() []*Identities { - if m != nil { - return m.Identities +func (x *Account) GetIdentities() []*Identities { + if x != nil { + return x.Identities } return nil } -func (m *Account) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *Account) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *Account) GetPreferredName() string { - if m != nil { - return m.PreferredName +func (x *Account) GetPreferredName() string { + if x != nil { + return x.PreferredName } return "" } -func (m *Account) GetUidNumber() int64 { - if m != nil { - return m.UidNumber +func (x *Account) GetUidNumber() int64 { + if x != nil { + return x.UidNumber } return 0 } -func (m *Account) GetGidNumber() int64 { - if m != nil { - return m.GidNumber +func (x *Account) GetGidNumber() int64 { + if x != nil { + return x.GidNumber } return 0 } -func (m *Account) GetMail() string { - if m != nil { - return m.Mail +func (x *Account) GetMail() string { + if x != nil { + return x.Mail } return "" } -func (m *Account) GetDescription() string { - if m != nil { - return m.Description +func (x *Account) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Account) GetPasswordProfile() *PasswordProfile { - if m != nil { - return m.PasswordProfile +func (x *Account) GetPasswordProfile() *PasswordProfile { + if x != nil { + return x.PasswordProfile } return nil } -func (m *Account) GetMemberOf() []*Group { - if m != nil { - return m.MemberOf +func (x *Account) GetMemberOf() []*Group { + if x != nil { + return x.MemberOf } return nil } -func (m *Account) GetCreatedDateTime() *timestamp.Timestamp { - if m != nil { - return m.CreatedDateTime +func (x *Account) GetCreatedDateTime() *timestamp.Timestamp { + if x != nil { + return x.CreatedDateTime } return nil } -func (m *Account) GetDeletedDateTime() *timestamp.Timestamp { - if m != nil { - return m.DeletedDateTime +func (x *Account) GetDeletedDateTime() *timestamp.Timestamp { + if x != nil { + return x.DeletedDateTime } return nil } -func (m *Account) GetOnPremisesSyncEnabled() bool { - if m != nil { - return m.OnPremisesSyncEnabled +func (x *Account) GetOnPremisesSyncEnabled() bool { + if x != nil { + return x.OnPremisesSyncEnabled } return false } -func (m *Account) GetOnPremisesImmutableId() string { - if m != nil { - return m.OnPremisesImmutableId +func (x *Account) GetOnPremisesImmutableId() string { + if x != nil { + return x.OnPremisesImmutableId } return "" } -func (m *Account) GetOnPremisesSecurityIdentifier() string { - if m != nil { - return m.OnPremisesSecurityIdentifier +func (x *Account) GetOnPremisesSecurityIdentifier() string { + if x != nil { + return x.OnPremisesSecurityIdentifier } return "" } -func (m *Account) GetOnPremisesDistinguishedName() string { - if m != nil { - return m.OnPremisesDistinguishedName +func (x *Account) GetOnPremisesDistinguishedName() string { + if x != nil { + return x.OnPremisesDistinguishedName } return "" } -func (m *Account) GetOnPremisesSamAccountName() string { - if m != nil { - return m.OnPremisesSamAccountName +func (x *Account) GetOnPremisesSamAccountName() string { + if x != nil { + return x.OnPremisesSamAccountName } return "" } -func (m *Account) GetOnPremisesDomainName() string { - if m != nil { - return m.OnPremisesDomainName +func (x *Account) GetOnPremisesDomainName() string { + if x != nil { + return x.OnPremisesDomainName } return "" } -func (m *Account) GetOnPremisesUserPrincipalName() string { - if m != nil { - return m.OnPremisesUserPrincipalName +func (x *Account) GetOnPremisesUserPrincipalName() string { + if x != nil { + return x.OnPremisesUserPrincipalName } return "" } -func (m *Account) GetOnPremisesLastSyncDateTime() *timestamp.Timestamp { - if m != nil { - return m.OnPremisesLastSyncDateTime +func (x *Account) GetOnPremisesLastSyncDateTime() *timestamp.Timestamp { + if x != nil { + return x.OnPremisesLastSyncDateTime } return nil } -func (m *Account) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { - if m != nil { - return m.OnPremisesProvisioningErrors +func (x *Account) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { + if x != nil { + return x.OnPremisesProvisioningErrors } return nil } -func (m *Account) GetExternalUserState() string { - if m != nil { - return m.ExternalUserState +func (x *Account) GetExternalUserState() string { + if x != nil { + return x.ExternalUserState } return "" } -func (m *Account) GetExternalUserStateChangeDateTime() *timestamp.Timestamp { - if m != nil { - return m.ExternalUserStateChangeDateTime +func (x *Account) GetExternalUserStateChangeDateTime() *timestamp.Timestamp { + if x != nil { + return x.ExternalUserStateChangeDateTime } return nil } -func (m *Account) GetRefreshTokensValidFromDateTime() *timestamp.Timestamp { - if m != nil { - return m.RefreshTokensValidFromDateTime +func (x *Account) GetRefreshTokensValidFromDateTime() *timestamp.Timestamp { + if x != nil { + return x.RefreshTokensValidFromDateTime } return nil } -func (m *Account) GetSignInSessionsValidFromDateTime() *timestamp.Timestamp { - if m != nil { - return m.SignInSessionsValidFromDateTime +func (x *Account) GetSignInSessionsValidFromDateTime() *timestamp.Timestamp { + if x != nil { + return x.SignInSessionsValidFromDateTime } return nil } @@ -663,6 +724,10 @@ func (m *Account) GetSignInSessionsValidFromDateTime() *timestamp.Timestamp { // This enables the user to sign in to the user account with any of those associated identities. // They are also used to keep a history of old usernames. type Identities struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Specifies the user sign-in types in your directory, such as `emailAddress`, `userName` or `federated`. // Here, federated represents a unique identifier for a user from an issuer, that can be in any format chosen by the issuer. // Additional validation is enforced on *issuer_assigned_id* when the sign-in type is set to `emailAddress` or `userName`. @@ -680,59 +745,67 @@ type Identities struct { // * `emailAddress`, (or starts with `emailAddress` like `emailAddress1`) *issuerAssignedId* must be a valid email address // * `userName`, issuer_assigned_id must be a valid local part of an email address // Supports $filter. 512 character limit. - IssuerAssignedId string `protobuf:"bytes,3,opt,name=issuer_assigned_id,json=issuerAssignedId,proto3" json:"issuer_assigned_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + IssuerAssignedId string `protobuf:"bytes,3,opt,name=issuer_assigned_id,json=issuerAssignedId,proto3" json:"issuer_assigned_id,omitempty"` } -func (m *Identities) Reset() { *m = Identities{} } -func (m *Identities) String() string { return proto.CompactTextString(m) } -func (*Identities) ProtoMessage() {} +func (x *Identities) Reset() { + *x = Identities{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Identities) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Identities) ProtoMessage() {} + +func (x *Identities) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Identities.ProtoReflect.Descriptor instead. func (*Identities) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{7} + return file_accounts_proto_rawDescGZIP(), []int{7} } -func (m *Identities) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Identities.Unmarshal(m, b) -} -func (m *Identities) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Identities.Marshal(b, m, deterministic) -} -func (m *Identities) XXX_Merge(src proto.Message) { - xxx_messageInfo_Identities.Merge(m, src) -} -func (m *Identities) XXX_Size() int { - return xxx_messageInfo_Identities.Size(m) -} -func (m *Identities) XXX_DiscardUnknown() { - xxx_messageInfo_Identities.DiscardUnknown(m) -} - -var xxx_messageInfo_Identities proto.InternalMessageInfo - -func (m *Identities) GetSignInType() string { - if m != nil { - return m.SignInType +func (x *Identities) GetSignInType() string { + if x != nil { + return x.SignInType } return "" } -func (m *Identities) GetIssuer() string { - if m != nil { - return m.Issuer +func (x *Identities) GetIssuer() string { + if x != nil { + return x.Issuer } return "" } -func (m *Identities) GetIssuerAssignedId() string { - if m != nil { - return m.IssuerAssignedId +func (x *Identities) GetIssuerAssignedId() string { + if x != nil { + return x.IssuerAssignedId } return "" } type PasswordProfile struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The password for the user. This property is required when a user is created. // It can be updated, but the user will be required to change the password on the next login. // The password must satisfy minimum requirements as specified by the user’s passwordPolicies property. By default, a strong password is required. @@ -746,73 +819,81 @@ type PasswordProfile struct { // *true* if the user must change her password on the next login; otherwise false. ForceChangePasswordNextSignIn bool `protobuf:"varint,4,opt,name=force_change_password_next_sign_in,json=forceChangePasswordNextSignIn,proto3" json:"force_change_password_next_sign_in,omitempty"` // If *true*, at next sign-in, the user must perform a multi-factor authentication (MFA) before being forced to change their password. The behavior is identical to forceChangePasswordNextSignIn except that the user is required to first perform a multi-factor authentication before password change. After a password change, this property will be automatically reset to false. If not set, default is false. - ForceChangePasswordNextSignInWithMfa bool `protobuf:"varint,5,opt,name=force_change_password_next_sign_in_with_mfa,json=forceChangePasswordNextSignInWithMfa,proto3" json:"force_change_password_next_sign_in_with_mfa,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ForceChangePasswordNextSignInWithMfa bool `protobuf:"varint,5,opt,name=force_change_password_next_sign_in_with_mfa,json=forceChangePasswordNextSignInWithMfa,proto3" json:"force_change_password_next_sign_in_with_mfa,omitempty"` } -func (m *PasswordProfile) Reset() { *m = PasswordProfile{} } -func (m *PasswordProfile) String() string { return proto.CompactTextString(m) } -func (*PasswordProfile) ProtoMessage() {} +func (x *PasswordProfile) Reset() { + *x = PasswordProfile{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PasswordProfile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PasswordProfile) ProtoMessage() {} + +func (x *PasswordProfile) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PasswordProfile.ProtoReflect.Descriptor instead. func (*PasswordProfile) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{8} + return file_accounts_proto_rawDescGZIP(), []int{8} } -func (m *PasswordProfile) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PasswordProfile.Unmarshal(m, b) -} -func (m *PasswordProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PasswordProfile.Marshal(b, m, deterministic) -} -func (m *PasswordProfile) XXX_Merge(src proto.Message) { - xxx_messageInfo_PasswordProfile.Merge(m, src) -} -func (m *PasswordProfile) XXX_Size() int { - return xxx_messageInfo_PasswordProfile.Size(m) -} -func (m *PasswordProfile) XXX_DiscardUnknown() { - xxx_messageInfo_PasswordProfile.DiscardUnknown(m) -} - -var xxx_messageInfo_PasswordProfile proto.InternalMessageInfo - -func (m *PasswordProfile) GetPassword() string { - if m != nil { - return m.Password +func (x *PasswordProfile) GetPassword() string { + if x != nil { + return x.Password } return "" } -func (m *PasswordProfile) GetLastPasswordChangeDateTime() *timestamp.Timestamp { - if m != nil { - return m.LastPasswordChangeDateTime +func (x *PasswordProfile) GetLastPasswordChangeDateTime() *timestamp.Timestamp { + if x != nil { + return x.LastPasswordChangeDateTime } return nil } -func (m *PasswordProfile) GetPasswordPolicies() []string { - if m != nil { - return m.PasswordPolicies +func (x *PasswordProfile) GetPasswordPolicies() []string { + if x != nil { + return x.PasswordPolicies } return nil } -func (m *PasswordProfile) GetForceChangePasswordNextSignIn() bool { - if m != nil { - return m.ForceChangePasswordNextSignIn +func (x *PasswordProfile) GetForceChangePasswordNextSignIn() bool { + if x != nil { + return x.ForceChangePasswordNextSignIn } return false } -func (m *PasswordProfile) GetForceChangePasswordNextSignInWithMfa() bool { - if m != nil { - return m.ForceChangePasswordNextSignInWithMfa +func (x *PasswordProfile) GetForceChangePasswordNextSignInWithMfa() bool { + if x != nil { + return x.ForceChangePasswordNextSignInWithMfa } return false } type ListGroupsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Optional. The maximum number of groups to return in the response PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. A pagination token returned from a previous call to `Get` @@ -839,367 +920,439 @@ type ListGroupsRequest struct { // starts with "Th" // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" - Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` } -func (m *ListGroupsRequest) Reset() { *m = ListGroupsRequest{} } -func (m *ListGroupsRequest) String() string { return proto.CompactTextString(m) } -func (*ListGroupsRequest) ProtoMessage() {} +func (x *ListGroupsRequest) Reset() { + *x = ListGroupsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListGroupsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListGroupsRequest) ProtoMessage() {} + +func (x *ListGroupsRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListGroupsRequest.ProtoReflect.Descriptor instead. func (*ListGroupsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{9} + return file_accounts_proto_rawDescGZIP(), []int{9} } -func (m *ListGroupsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListGroupsRequest.Unmarshal(m, b) -} -func (m *ListGroupsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListGroupsRequest.Marshal(b, m, deterministic) -} -func (m *ListGroupsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListGroupsRequest.Merge(m, src) -} -func (m *ListGroupsRequest) XXX_Size() int { - return xxx_messageInfo_ListGroupsRequest.Size(m) -} -func (m *ListGroupsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListGroupsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListGroupsRequest proto.InternalMessageInfo - -func (m *ListGroupsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize +func (x *ListGroupsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize } return 0 } -func (m *ListGroupsRequest) GetPageToken() string { - if m != nil { - return m.PageToken +func (x *ListGroupsRequest) GetPageToken() string { + if x != nil { + return x.PageToken } return "" } -func (m *ListGroupsRequest) GetFieldMask() *field_mask.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListGroupsRequest) GetFieldMask() *field_mask.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListGroupsRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *ListGroupsRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } type ListGroupsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The field name should match the noun "group" in the method name. There // will be a maximum number of items returned based on the page_size field // in the request Groups []*Group `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"` // Token to retrieve the next page of results, or empty if there are no // more results in the list - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (m *ListGroupsResponse) Reset() { *m = ListGroupsResponse{} } -func (m *ListGroupsResponse) String() string { return proto.CompactTextString(m) } -func (*ListGroupsResponse) ProtoMessage() {} +func (x *ListGroupsResponse) Reset() { + *x = ListGroupsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListGroupsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListGroupsResponse) ProtoMessage() {} + +func (x *ListGroupsResponse) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListGroupsResponse.ProtoReflect.Descriptor instead. func (*ListGroupsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{10} + return file_accounts_proto_rawDescGZIP(), []int{10} } -func (m *ListGroupsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListGroupsResponse.Unmarshal(m, b) -} -func (m *ListGroupsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListGroupsResponse.Marshal(b, m, deterministic) -} -func (m *ListGroupsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListGroupsResponse.Merge(m, src) -} -func (m *ListGroupsResponse) XXX_Size() int { - return xxx_messageInfo_ListGroupsResponse.Size(m) -} -func (m *ListGroupsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListGroupsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListGroupsResponse proto.InternalMessageInfo - -func (m *ListGroupsResponse) GetGroups() []*Group { - if m != nil { - return m.Groups +func (x *ListGroupsResponse) GetGroups() []*Group { + if x != nil { + return x.Groups } return nil } -func (m *ListGroupsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken +func (x *ListGroupsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken } return "" } type GetGroupRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *GetGroupRequest) Reset() { *m = GetGroupRequest{} } -func (m *GetGroupRequest) String() string { return proto.CompactTextString(m) } -func (*GetGroupRequest) ProtoMessage() {} +func (x *GetGroupRequest) Reset() { + *x = GetGroupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetGroupRequest) ProtoMessage() {} + +func (x *GetGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetGroupRequest.ProtoReflect.Descriptor instead. func (*GetGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{11} + return file_accounts_proto_rawDescGZIP(), []int{11} } -func (m *GetGroupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetGroupRequest.Unmarshal(m, b) -} -func (m *GetGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetGroupRequest.Marshal(b, m, deterministic) -} -func (m *GetGroupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetGroupRequest.Merge(m, src) -} -func (m *GetGroupRequest) XXX_Size() int { - return xxx_messageInfo_GetGroupRequest.Size(m) -} -func (m *GetGroupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetGroupRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetGroupRequest proto.InternalMessageInfo - -func (m *GetGroupRequest) GetId() string { - if m != nil { - return m.Id +func (x *GetGroupRequest) GetId() string { + if x != nil { + return x.Id } return "" } type CreateGroupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The account resource to create - Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` } -func (m *CreateGroupRequest) Reset() { *m = CreateGroupRequest{} } -func (m *CreateGroupRequest) String() string { return proto.CompactTextString(m) } -func (*CreateGroupRequest) ProtoMessage() {} +func (x *CreateGroupRequest) Reset() { + *x = CreateGroupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateGroupRequest) ProtoMessage() {} + +func (x *CreateGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateGroupRequest.ProtoReflect.Descriptor instead. func (*CreateGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{12} + return file_accounts_proto_rawDescGZIP(), []int{12} } -func (m *CreateGroupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateGroupRequest.Unmarshal(m, b) -} -func (m *CreateGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateGroupRequest.Marshal(b, m, deterministic) -} -func (m *CreateGroupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateGroupRequest.Merge(m, src) -} -func (m *CreateGroupRequest) XXX_Size() int { - return xxx_messageInfo_CreateGroupRequest.Size(m) -} -func (m *CreateGroupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateGroupRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateGroupRequest proto.InternalMessageInfo - -func (m *CreateGroupRequest) GetGroup() *Group { - if m != nil { - return m.Group +func (x *CreateGroupRequest) GetGroup() *Group { + if x != nil { + return x.Group } return nil } type UpdateGroupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The group resource which replaces the resource on the server Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` // The update mask applies to the resource. For the `FieldMask` definition, // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask - UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (m *UpdateGroupRequest) Reset() { *m = UpdateGroupRequest{} } -func (m *UpdateGroupRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateGroupRequest) ProtoMessage() {} +func (x *UpdateGroupRequest) Reset() { + *x = UpdateGroupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateGroupRequest) ProtoMessage() {} + +func (x *UpdateGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateGroupRequest.ProtoReflect.Descriptor instead. func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{13} + return file_accounts_proto_rawDescGZIP(), []int{13} } -func (m *UpdateGroupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateGroupRequest.Unmarshal(m, b) -} -func (m *UpdateGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateGroupRequest.Marshal(b, m, deterministic) -} -func (m *UpdateGroupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateGroupRequest.Merge(m, src) -} -func (m *UpdateGroupRequest) XXX_Size() int { - return xxx_messageInfo_UpdateGroupRequest.Size(m) -} -func (m *UpdateGroupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateGroupRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateGroupRequest proto.InternalMessageInfo - -func (m *UpdateGroupRequest) GetGroup() *Group { - if m != nil { - return m.Group +func (x *UpdateGroupRequest) GetGroup() *Group { + if x != nil { + return x.Group } return nil } -func (m *UpdateGroupRequest) GetUpdateMask() *field_mask.FieldMask { - if m != nil { - return m.UpdateMask +func (x *UpdateGroupRequest) GetUpdateMask() *field_mask.FieldMask { + if x != nil { + return x.UpdateMask } return nil } type DeleteGroupRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *DeleteGroupRequest) Reset() { *m = DeleteGroupRequest{} } -func (m *DeleteGroupRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteGroupRequest) ProtoMessage() {} +func (x *DeleteGroupRequest) Reset() { + *x = DeleteGroupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteGroupRequest) ProtoMessage() {} + +func (x *DeleteGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteGroupRequest.ProtoReflect.Descriptor instead. func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{14} + return file_accounts_proto_rawDescGZIP(), []int{14} } -func (m *DeleteGroupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteGroupRequest.Unmarshal(m, b) -} -func (m *DeleteGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteGroupRequest.Marshal(b, m, deterministic) -} -func (m *DeleteGroupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteGroupRequest.Merge(m, src) -} -func (m *DeleteGroupRequest) XXX_Size() int { - return xxx_messageInfo_DeleteGroupRequest.Size(m) -} -func (m *DeleteGroupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteGroupRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteGroupRequest proto.InternalMessageInfo - -func (m *DeleteGroupRequest) GetId() string { - if m != nil { - return m.Id +func (x *DeleteGroupRequest) GetId() string { + if x != nil { + return x.Id } return "" } type AddMemberRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The account id to add - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *AddMemberRequest) Reset() { *m = AddMemberRequest{} } -func (m *AddMemberRequest) String() string { return proto.CompactTextString(m) } -func (*AddMemberRequest) ProtoMessage() {} +func (x *AddMemberRequest) Reset() { + *x = AddMemberRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddMemberRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddMemberRequest) ProtoMessage() {} + +func (x *AddMemberRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddMemberRequest.ProtoReflect.Descriptor instead. func (*AddMemberRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{15} + return file_accounts_proto_rawDescGZIP(), []int{15} } -func (m *AddMemberRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AddMemberRequest.Unmarshal(m, b) -} -func (m *AddMemberRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AddMemberRequest.Marshal(b, m, deterministic) -} -func (m *AddMemberRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddMemberRequest.Merge(m, src) -} -func (m *AddMemberRequest) XXX_Size() int { - return xxx_messageInfo_AddMemberRequest.Size(m) -} -func (m *AddMemberRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AddMemberRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_AddMemberRequest proto.InternalMessageInfo - -func (m *AddMemberRequest) GetId() string { - if m != nil { - return m.Id +func (x *AddMemberRequest) GetId() string { + if x != nil { + return x.Id } return "" } type RemoveMemberRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The group id + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The account id to remove - // TODO id in the body indt in the url? not necessary ... use empty? - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` } -func (m *RemoveMemberRequest) Reset() { *m = RemoveMemberRequest{} } -func (m *RemoveMemberRequest) String() string { return proto.CompactTextString(m) } -func (*RemoveMemberRequest) ProtoMessage() {} +func (x *RemoveMemberRequest) Reset() { + *x = RemoveMemberRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveMemberRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveMemberRequest) ProtoMessage() {} + +func (x *RemoveMemberRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemoveMemberRequest.ProtoReflect.Descriptor instead. func (*RemoveMemberRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{16} + return file_accounts_proto_rawDescGZIP(), []int{16} } -func (m *RemoveMemberRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RemoveMemberRequest.Unmarshal(m, b) -} -func (m *RemoveMemberRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RemoveMemberRequest.Marshal(b, m, deterministic) -} -func (m *RemoveMemberRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RemoveMemberRequest.Merge(m, src) -} -func (m *RemoveMemberRequest) XXX_Size() int { - return xxx_messageInfo_RemoveMemberRequest.Size(m) -} -func (m *RemoveMemberRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RemoveMemberRequest.DiscardUnknown(m) +func (x *RemoveMemberRequest) GetId() string { + if x != nil { + return x.Id + } + return "" } -var xxx_messageInfo_RemoveMemberRequest proto.InternalMessageInfo - -func (m *RemoveMemberRequest) GetId() string { - if m != nil { - return m.Id +func (x *RemoveMemberRequest) GetAccountId() string { + if x != nil { + return x.AccountId } return "" } type ListMembersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. A pagination token returned from a previous call to `Get` // that indicates from where search should continue @@ -1225,125 +1378,150 @@ type ListMembersRequest struct { // starts with "Th" // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" - Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + // The group id + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` } -func (m *ListMembersRequest) Reset() { *m = ListMembersRequest{} } -func (m *ListMembersRequest) String() string { return proto.CompactTextString(m) } -func (*ListMembersRequest) ProtoMessage() {} +func (x *ListMembersRequest) Reset() { + *x = ListMembersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListMembersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMembersRequest) ProtoMessage() {} + +func (x *ListMembersRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListMembersRequest.ProtoReflect.Descriptor instead. func (*ListMembersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{17} + return file_accounts_proto_rawDescGZIP(), []int{17} } -func (m *ListMembersRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListMembersRequest.Unmarshal(m, b) -} -func (m *ListMembersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListMembersRequest.Marshal(b, m, deterministic) -} -func (m *ListMembersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListMembersRequest.Merge(m, src) -} -func (m *ListMembersRequest) XXX_Size() int { - return xxx_messageInfo_ListMembersRequest.Size(m) -} -func (m *ListMembersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListMembersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListMembersRequest proto.InternalMessageInfo - -func (m *ListMembersRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize +func (x *ListMembersRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize } return 0 } -func (m *ListMembersRequest) GetPageToken() string { - if m != nil { - return m.PageToken +func (x *ListMembersRequest) GetPageToken() string { + if x != nil { + return x.PageToken } return "" } -func (m *ListMembersRequest) GetFieldMask() *field_mask.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListMembersRequest) GetFieldMask() *field_mask.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListMembersRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *ListMembersRequest) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *ListMembersRequest) GetId() string { + if x != nil { + return x.Id } return "" } type ListMembersResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The field name should match the noun "members" in the method name. There // will be a maximum number of items returned based on the page_size field // in the request Members []*Account `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` // Token to retrieve the next page of results, or empty if there are no // more results in the list - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (m *ListMembersResponse) Reset() { *m = ListMembersResponse{} } -func (m *ListMembersResponse) String() string { return proto.CompactTextString(m) } -func (*ListMembersResponse) ProtoMessage() {} +func (x *ListMembersResponse) Reset() { + *x = ListMembersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListMembersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMembersResponse) ProtoMessage() {} + +func (x *ListMembersResponse) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListMembersResponse.ProtoReflect.Descriptor instead. func (*ListMembersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{18} + return file_accounts_proto_rawDescGZIP(), []int{18} } -func (m *ListMembersResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListMembersResponse.Unmarshal(m, b) -} -func (m *ListMembersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListMembersResponse.Marshal(b, m, deterministic) -} -func (m *ListMembersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListMembersResponse.Merge(m, src) -} -func (m *ListMembersResponse) XXX_Size() int { - return xxx_messageInfo_ListMembersResponse.Size(m) -} -func (m *ListMembersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListMembersResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListMembersResponse proto.InternalMessageInfo - -func (m *ListMembersResponse) GetMembers() []*Account { - if m != nil { - return m.Members +func (x *ListMembersResponse) GetMembers() []*Account { + if x != nil { + return x.Members } return nil } -func (m *ListMembersResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken +func (x *ListMembersResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken } return "" } type Group struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The unique identifier for the group. // Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The display name for the group. This property is required when a group is created and cannot be cleared during updates. // Returned by default. Supports $filter and $orderby. // groupofnames MUST cn - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // groupofnames MUST/MAY member // Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable. // TODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later Members []*Account `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` @@ -1403,177 +1581,185 @@ type Group struct { OnPremisesLastSyncDateTime string `protobuf:"bytes,27,opt,name=on_premises_last_sync_date_time,json=onPremisesLastSyncDateTime,proto3" json:"on_premises_last_sync_date_time,omitempty"` // Errors when using synchronization during provisioning. OnPremisesProvisioningErrors []*OnPremisesProvisioningError `protobuf:"bytes,28,rep,name=on_premises_provisioning_errors,json=onPremisesProvisioningErrors,proto3" json:"on_premises_provisioning_errors,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Group) Reset() { *m = Group{} } -func (m *Group) String() string { return proto.CompactTextString(m) } -func (*Group) ProtoMessage() {} +func (x *Group) Reset() { + *x = Group{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Group) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Group) ProtoMessage() {} + +func (x *Group) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Group.ProtoReflect.Descriptor instead. func (*Group) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{19} + return file_accounts_proto_rawDescGZIP(), []int{19} } -func (m *Group) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Group.Unmarshal(m, b) -} -func (m *Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Group.Marshal(b, m, deterministic) -} -func (m *Group) XXX_Merge(src proto.Message) { - xxx_messageInfo_Group.Merge(m, src) -} -func (m *Group) XXX_Size() int { - return xxx_messageInfo_Group.Size(m) -} -func (m *Group) XXX_DiscardUnknown() { - xxx_messageInfo_Group.DiscardUnknown(m) -} - -var xxx_messageInfo_Group proto.InternalMessageInfo - -func (m *Group) GetId() string { - if m != nil { - return m.Id +func (x *Group) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Group) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *Group) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *Group) GetMembers() []*Account { - if m != nil { - return m.Members +func (x *Group) GetMembers() []*Account { + if x != nil { + return x.Members } return nil } -func (m *Group) GetOwners() []*Account { - if m != nil { - return m.Owners +func (x *Group) GetOwners() []*Account { + if x != nil { + return x.Owners } return nil } -func (m *Group) GetDescription() string { - if m != nil { - return m.Description +func (x *Group) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Group) GetGidNumber() int64 { - if m != nil { - return m.GidNumber +func (x *Group) GetGidNumber() int64 { + if x != nil { + return x.GidNumber } return 0 } -func (m *Group) GetCreatedDateTime() *timestamp.Timestamp { - if m != nil { - return m.CreatedDateTime +func (x *Group) GetCreatedDateTime() *timestamp.Timestamp { + if x != nil { + return x.CreatedDateTime } return nil } -func (m *Group) GetDeletedDateTime() *timestamp.Timestamp { - if m != nil { - return m.DeletedDateTime +func (x *Group) GetDeletedDateTime() *timestamp.Timestamp { + if x != nil { + return x.DeletedDateTime } return nil } -func (m *Group) GetExpirationDateTime() *timestamp.Timestamp { - if m != nil { - return m.ExpirationDateTime +func (x *Group) GetExpirationDateTime() *timestamp.Timestamp { + if x != nil { + return x.ExpirationDateTime } return nil } -func (m *Group) GetHideFromAddressLists() bool { - if m != nil { - return m.HideFromAddressLists +func (x *Group) GetHideFromAddressLists() bool { + if x != nil { + return x.HideFromAddressLists } return false } -func (m *Group) GetVisibility() string { - if m != nil { - return m.Visibility +func (x *Group) GetVisibility() string { + if x != nil { + return x.Visibility } return "" } -func (m *Group) GetOnPremisesSyncEnabled() bool { - if m != nil { - return m.OnPremisesSyncEnabled +func (x *Group) GetOnPremisesSyncEnabled() bool { + if x != nil { + return x.OnPremisesSyncEnabled } return false } -func (m *Group) GetOnPremisesImmutableId() string { - if m != nil { - return m.OnPremisesImmutableId +func (x *Group) GetOnPremisesImmutableId() string { + if x != nil { + return x.OnPremisesImmutableId } return "" } -func (m *Group) GetOnPremisesSecurityIdentifier() string { - if m != nil { - return m.OnPremisesSecurityIdentifier +func (x *Group) GetOnPremisesSecurityIdentifier() string { + if x != nil { + return x.OnPremisesSecurityIdentifier } return "" } -func (m *Group) GetOnPremisesDistinguishedName() string { - if m != nil { - return m.OnPremisesDistinguishedName +func (x *Group) GetOnPremisesDistinguishedName() string { + if x != nil { + return x.OnPremisesDistinguishedName } return "" } -func (m *Group) GetOnPremisesSamAccountName() string { - if m != nil { - return m.OnPremisesSamAccountName +func (x *Group) GetOnPremisesSamAccountName() string { + if x != nil { + return x.OnPremisesSamAccountName } return "" } -func (m *Group) GetOnPremisesDomainName() string { - if m != nil { - return m.OnPremisesDomainName +func (x *Group) GetOnPremisesDomainName() string { + if x != nil { + return x.OnPremisesDomainName } return "" } -func (m *Group) GetOnPremisesNetBiosName() string { - if m != nil { - return m.OnPremisesNetBiosName +func (x *Group) GetOnPremisesNetBiosName() string { + if x != nil { + return x.OnPremisesNetBiosName } return "" } -func (m *Group) GetOnPremisesLastSyncDateTime() string { - if m != nil { - return m.OnPremisesLastSyncDateTime +func (x *Group) GetOnPremisesLastSyncDateTime() string { + if x != nil { + return x.OnPremisesLastSyncDateTime } return "" } -func (m *Group) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { - if m != nil { - return m.OnPremisesProvisioningErrors +func (x *Group) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { + if x != nil { + return x.OnPremisesProvisioningErrors } return nil } type OnPremisesProvisioningError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Category of the provisioning error. Note: Currently, there is only one possible value. Possible value: PropertyConflict - indicates a property value is not unique. Other objects contain the same value for the property. Category string `protobuf:"bytes,1,opt,name=category,proto3" json:"category,omitempty"` // The date and time at which the error occurred. @@ -1581,213 +1767,863 @@ type OnPremisesProvisioningError struct { // Name of the directory property causing the error. Current possible values: UserPrincipalName or ProxyAddress PropertyCausingError string `protobuf:"bytes,3,opt,name=property_causing_error,json=propertyCausingError,proto3" json:"property_causing_error,omitempty"` // Value of the property causing the error. - Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` } -func (m *OnPremisesProvisioningError) Reset() { *m = OnPremisesProvisioningError{} } -func (m *OnPremisesProvisioningError) String() string { return proto.CompactTextString(m) } -func (*OnPremisesProvisioningError) ProtoMessage() {} +func (x *OnPremisesProvisioningError) Reset() { + *x = OnPremisesProvisioningError{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OnPremisesProvisioningError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnPremisesProvisioningError) ProtoMessage() {} + +func (x *OnPremisesProvisioningError) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnPremisesProvisioningError.ProtoReflect.Descriptor instead. func (*OnPremisesProvisioningError) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{20} + return file_accounts_proto_rawDescGZIP(), []int{20} } -func (m *OnPremisesProvisioningError) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OnPremisesProvisioningError.Unmarshal(m, b) -} -func (m *OnPremisesProvisioningError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OnPremisesProvisioningError.Marshal(b, m, deterministic) -} -func (m *OnPremisesProvisioningError) XXX_Merge(src proto.Message) { - xxx_messageInfo_OnPremisesProvisioningError.Merge(m, src) -} -func (m *OnPremisesProvisioningError) XXX_Size() int { - return xxx_messageInfo_OnPremisesProvisioningError.Size(m) -} -func (m *OnPremisesProvisioningError) XXX_DiscardUnknown() { - xxx_messageInfo_OnPremisesProvisioningError.DiscardUnknown(m) -} - -var xxx_messageInfo_OnPremisesProvisioningError proto.InternalMessageInfo - -func (m *OnPremisesProvisioningError) GetCategory() string { - if m != nil { - return m.Category +func (x *OnPremisesProvisioningError) GetCategory() string { + if x != nil { + return x.Category } return "" } -func (m *OnPremisesProvisioningError) GetOccurredDateTime() *timestamp.Timestamp { - if m != nil { - return m.OccurredDateTime +func (x *OnPremisesProvisioningError) GetOccurredDateTime() *timestamp.Timestamp { + if x != nil { + return x.OccurredDateTime } return nil } -func (m *OnPremisesProvisioningError) GetPropertyCausingError() string { - if m != nil { - return m.PropertyCausingError +func (x *OnPremisesProvisioningError) GetPropertyCausingError() string { + if x != nil { + return x.PropertyCausingError } return "" } -func (m *OnPremisesProvisioningError) GetValue() string { - if m != nil { - return m.Value +func (x *OnPremisesProvisioningError) GetValue() string { + if x != nil { + return x.Value } return "" } -func init() { - proto.RegisterType((*ListAccountsRequest)(nil), "settings.ListAccountsRequest") - proto.RegisterType((*ListAccountsResponse)(nil), "settings.ListAccountsResponse") - proto.RegisterType((*GetAccountRequest)(nil), "settings.GetAccountRequest") - proto.RegisterType((*CreateAccountRequest)(nil), "settings.CreateAccountRequest") - proto.RegisterType((*UpdateAccountRequest)(nil), "settings.UpdateAccountRequest") - proto.RegisterType((*DeleteAccountRequest)(nil), "settings.DeleteAccountRequest") - proto.RegisterType((*Account)(nil), "settings.Account") - proto.RegisterType((*Identities)(nil), "settings.Identities") - proto.RegisterType((*PasswordProfile)(nil), "settings.PasswordProfile") - proto.RegisterType((*ListGroupsRequest)(nil), "settings.ListGroupsRequest") - proto.RegisterType((*ListGroupsResponse)(nil), "settings.ListGroupsResponse") - proto.RegisterType((*GetGroupRequest)(nil), "settings.GetGroupRequest") - proto.RegisterType((*CreateGroupRequest)(nil), "settings.CreateGroupRequest") - proto.RegisterType((*UpdateGroupRequest)(nil), "settings.UpdateGroupRequest") - proto.RegisterType((*DeleteGroupRequest)(nil), "settings.DeleteGroupRequest") - proto.RegisterType((*AddMemberRequest)(nil), "settings.AddMemberRequest") - proto.RegisterType((*RemoveMemberRequest)(nil), "settings.RemoveMemberRequest") - proto.RegisterType((*ListMembersRequest)(nil), "settings.ListMembersRequest") - proto.RegisterType((*ListMembersResponse)(nil), "settings.ListMembersResponse") - proto.RegisterType((*Group)(nil), "settings.Group") - proto.RegisterType((*OnPremisesProvisioningError)(nil), "settings.OnPremisesProvisioningError") +var File_accounts_proto protoreflect.FileDescriptor + +var file_accounts_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb1, 0x01, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x6d, 0x0a, + 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x23, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x43, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2b, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x26, 0x0a, 0x14, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x88, 0x0d, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, + 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, + 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, + 0x69, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x75, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, + 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x67, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x44, 0x0a, 0x10, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4f, + 0x66, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x4f, 0x66, 0x12, 0x46, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, + 0x73, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, + 0x53, 0x79, 0x6e, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x18, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x69, 0x6d, 0x6d, 0x75, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x49, 0x6d, 0x6d, 0x75, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, + 0x73, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x1e, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x3e, 0x0a, 0x1c, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x73, 0x61, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, + 0x65, 0x73, 0x53, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x35, 0x0a, 0x17, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x14, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, + 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x1b, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x55, 0x73, 0x65, 0x72, + 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5f, 0x0a, + 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x1a, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4c, 0x61, + 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, + 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x4f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x1c, + 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x69, 0x0a, 0x24, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x23, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x1e, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x6a, 0x0a, 0x25, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1f, 0x73, 0x69, 0x67, + 0x6e, 0x49, 0x6e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x74, 0x0a, 0x0a, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, + 0x67, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x61, + 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x49, 0x64, 0x22, 0xe0, 0x02, 0x0a, 0x0f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x5e, 0x0a, 0x1e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, + 0x49, 0x0a, 0x22, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, + 0x67, 0x6e, 0x5f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x66, 0x6f, 0x72, + 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x4e, 0x65, 0x78, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x12, 0x59, 0x0a, 0x2b, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x6e, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6d, 0x66, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x24, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x4e, 0x65, 0x78, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x57, 0x69, + 0x74, 0x68, 0x4d, 0x66, 0x61, 0x22, 0xaf, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x65, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, + 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x21, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x3b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x78, + 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3b, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x24, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x22, + 0x0a, 0x10, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x44, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc0, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x13, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, + 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xea, 0x08, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x12, 0x29, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, + 0x0a, 0x0a, 0x67, 0x69, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x67, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x46, 0x0a, + 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4c, 0x0a, + 0x14, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x68, + 0x69, 0x64, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x68, 0x69, + 0x64, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x37, 0x0a, 0x18, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, + 0x73, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, + 0x53, 0x79, 0x6e, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x18, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x69, 0x6d, 0x6d, 0x75, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x49, 0x6d, 0x6d, 0x75, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, + 0x73, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x1e, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x3e, 0x0a, 0x1c, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x73, 0x61, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, + 0x65, 0x73, 0x53, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x35, 0x0a, 0x17, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x14, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x19, 0x6f, 0x6e, 0x5f, 0x70, 0x72, + 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x62, 0x69, 0x6f, 0x73, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, + 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4e, 0x65, 0x74, 0x42, 0x69, 0x6f, 0x73, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x43, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, + 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x6f, 0x6e, 0x50, 0x72, + 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, + 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, + 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4f, 0x6e, 0x50, 0x72, 0x65, + 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, + 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x1c, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, + 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x1b, 0x4f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, + 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x12, 0x48, 0x0a, 0x12, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x63, 0x61, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x43, 0x61, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x8c, 0x04, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, + 0x59, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x61, 0x0a, 0x0d, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x0c, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x70, 0x0a, + 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x32, 0x1b, 0x2f, 0x76, 0x30, 0x2f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x2e, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x3a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x64, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, + 0x2a, 0x13, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x32, 0xac, 0x06, 0x0a, 0x0d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x57, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0a, 0x2f, + 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x64, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x26, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x32, 0x17, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x3a, + 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x5e, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x63, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, + 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x24, 0x72, 0x65, 0x66, + 0x12, 0x72, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, + 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, + 0x24, 0x72, 0x65, 0x66, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } -func init() { proto.RegisterFile("accounts.proto", fileDescriptor_e1e7723af4c007b7) } +var ( + file_accounts_proto_rawDescOnce sync.Once + file_accounts_proto_rawDescData = file_accounts_proto_rawDesc +) -var fileDescriptor_e1e7723af4c007b7 = []byte{ - // 1951 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x5b, 0x4f, 0x1c, 0xc9, - 0x15, 0xd6, 0x80, 0x81, 0xe1, 0x0c, 0x18, 0x28, 0xc6, 0xd0, 0x0c, 0x17, 0xcf, 0xb6, 0x8d, 0x17, - 0xc3, 0x06, 0x2c, 0xb2, 0x9b, 0x8b, 0x9d, 0x8d, 0x84, 0xc1, 0x76, 0x90, 0x6c, 0x2f, 0x1a, 0xbc, - 0x59, 0xe5, 0xa2, 0x6d, 0x35, 0xdd, 0x35, 0x43, 0xad, 0xa7, 0x2f, 0x5b, 0x55, 0x3d, 0x66, 0x36, - 0x5a, 0x29, 0xca, 0x53, 0xde, 0xf2, 0x90, 0x1f, 0x92, 0xcb, 0x1f, 0xc9, 0x43, 0xfe, 0xc0, 0x3e, - 0xe4, 0x29, 0xbf, 0x22, 0xaa, 0x4b, 0x77, 0xd7, 0x74, 0xcf, 0x30, 0xbb, 0xf1, 0x4a, 0x91, 0xa5, - 0x3c, 0xd1, 0x5d, 0xe7, 0x3b, 0xdf, 0x39, 0x75, 0xea, 0x4c, 0xd5, 0xd7, 0x05, 0xdc, 0x74, 0x3d, - 0x2f, 0x4a, 0x42, 0xce, 0xf6, 0x63, 0x1a, 0xf1, 0x08, 0x55, 0x19, 0xe6, 0x9c, 0x84, 0x1d, 0xd6, - 0xb8, 0xdd, 0x89, 0xa2, 0x4e, 0x17, 0x1f, 0xb8, 0x31, 0x39, 0x68, 0x13, 0xdc, 0xf5, 0x9d, 0x0b, - 0x7c, 0xe9, 0xf6, 0x48, 0x44, 0x15, 0xb4, 0xb1, 0x61, 0x00, 0xdc, 0x30, 0x8c, 0xb8, 0xcb, 0x49, - 0x14, 0x6a, 0xa2, 0xc6, 0xba, 0xb6, 0xca, 0xb7, 0x8b, 0xa4, 0x7d, 0x80, 0x83, 0x98, 0xf7, 0xb5, - 0xb1, 0x59, 0x34, 0xaa, 0x00, 0x81, 0xcb, 0x5e, 0x6b, 0xc4, 0xed, 0x22, 0x82, 0x93, 0x00, 0x33, - 0xee, 0x06, 0xb1, 0x02, 0xd8, 0x7f, 0xab, 0xc0, 0xf2, 0x73, 0xc2, 0xf8, 0x91, 0xce, 0xbf, 0x85, - 0xbf, 0x4c, 0x30, 0xe3, 0xa8, 0x09, 0xb3, 0xb1, 0xdb, 0xc1, 0x0e, 0x23, 0x5f, 0x61, 0xab, 0xd2, - 0xac, 0xec, 0x4c, 0x3d, 0x9e, 0xfc, 0xe6, 0xa8, 0xd2, 0xaa, 0x8a, 0xd1, 0x73, 0xf2, 0x15, 0x46, - 0x36, 0x80, 0x44, 0xf0, 0xe8, 0x35, 0x0e, 0xad, 0x89, 0x66, 0x65, 0x67, 0x56, 0x41, 0xa4, 0xe3, - 0x2b, 0x31, 0x8a, 0x7e, 0x0a, 0x90, 0xa7, 0x64, 0x4d, 0x36, 0x2b, 0x3b, 0xb5, 0xc3, 0xc6, 0xbe, - 0xca, 0x69, 0x3f, 0xcd, 0x69, 0xff, 0xa9, 0x80, 0xbc, 0x70, 0xd9, 0xeb, 0xd6, 0x6c, 0x3b, 0x7d, - 0x44, 0x6b, 0x30, 0xf5, 0x65, 0x82, 0x69, 0xdf, 0xba, 0x91, 0x33, 0xab, 0x11, 0x3b, 0x80, 0xfa, - 0x60, 0xca, 0x2c, 0x8e, 0x42, 0x86, 0xd1, 0x0f, 0xa0, 0x9a, 0x2e, 0x83, 0x55, 0x69, 0x4e, 0xee, - 0xd4, 0x0e, 0x97, 0xf6, 0xd3, 0x75, 0xd8, 0xd7, 0xe8, 0x56, 0x06, 0x41, 0xf7, 0x60, 0x21, 0xc4, - 0x57, 0xdc, 0x29, 0xce, 0xa2, 0x35, 0x2f, 0x86, 0xcf, 0xd2, 0x49, 0xd8, 0x77, 0x60, 0xe9, 0x19, - 0x4e, 0xa3, 0xa5, 0xf5, 0xb9, 0x09, 0x13, 0xc4, 0x97, 0x85, 0x99, 0x6d, 0x4d, 0x10, 0xdf, 0x3e, - 0x86, 0xfa, 0x31, 0xc5, 0x2e, 0xc7, 0x05, 0xdc, 0x1e, 0xcc, 0xe8, 0x80, 0x12, 0x3c, 0x34, 0xa5, - 0x14, 0x61, 0xff, 0xbe, 0x02, 0xf5, 0x4f, 0x63, 0xff, 0xed, 0x58, 0xd0, 0x23, 0xa8, 0x25, 0x92, - 0x44, 0x55, 0x7d, 0x62, 0x6c, 0xd5, 0x41, 0xc1, 0xc5, 0xb3, 0x7d, 0x0f, 0xea, 0x27, 0xb8, 0x8b, - 0x4b, 0x19, 0x14, 0xe7, 0xfb, 0xc7, 0x79, 0x98, 0xd1, 0x90, 0xa2, 0x0d, 0xbd, 0x0f, 0x0b, 0x3a, - 0x17, 0x07, 0x87, 0xee, 0x45, 0x17, 0xfb, 0x32, 0x89, 0x6a, 0x2b, 0xfd, 0x95, 0x3c, 0x51, 0xa3, - 0x68, 0x1f, 0x96, 0x09, 0x73, 0x28, 0x66, 0x51, 0x42, 0x3d, 0xec, 0xa4, 0x53, 0x9c, 0x94, 0xe0, - 0x25, 0x22, 0x56, 0x56, 0x5a, 0xd2, 0x40, 0x77, 0x60, 0xde, 0x13, 0x45, 0x26, 0x51, 0xe8, 0xf0, - 0x7e, 0x8c, 0x55, 0x6f, 0xb4, 0xe6, 0xd2, 0xc1, 0x57, 0xfd, 0x18, 0xa3, 0x0f, 0x01, 0x88, 0x8f, - 0x43, 0x4e, 0x38, 0xc1, 0xcc, 0x9a, 0x92, 0x7d, 0x50, 0xcf, 0xcb, 0x75, 0x9a, 0xd9, 0x5a, 0x06, - 0x0e, 0xbd, 0x07, 0x73, 0x3e, 0x61, 0x71, 0xd7, 0xed, 0x3b, 0xa1, 0x1b, 0x60, 0x6b, 0x5a, 0x32, - 0xd7, 0xf4, 0xd8, 0x4b, 0x37, 0xc0, 0x68, 0x1b, 0x6e, 0xc6, 0x14, 0xb7, 0x31, 0xa5, 0xd8, 0x57, - 0xa0, 0x19, 0xd5, 0x2e, 0xd9, 0xa8, 0x84, 0x6d, 0x02, 0x24, 0xc4, 0x77, 0xc2, 0x24, 0xb8, 0xc0, - 0xd4, 0xaa, 0x36, 0x2b, 0x3b, 0x93, 0xad, 0xd9, 0x84, 0xf8, 0x2f, 0xe5, 0x80, 0x30, 0x77, 0x72, - 0xf3, 0xac, 0x32, 0x77, 0x32, 0x33, 0x82, 0x1b, 0x81, 0x4b, 0xba, 0x16, 0x48, 0x6a, 0xf9, 0x8c, - 0x9a, 0x50, 0xf3, 0x31, 0xf3, 0x28, 0x89, 0xc5, 0x24, 0xad, 0x9a, 0x4e, 0x2d, 0x1f, 0x42, 0x27, - 0xb0, 0x18, 0xbb, 0x8c, 0xbd, 0x89, 0xa8, 0xef, 0xc4, 0x34, 0x6a, 0x93, 0x2e, 0xb6, 0xe6, 0xe4, - 0xba, 0xaf, 0xe5, 0x33, 0x3f, 0xd3, 0x88, 0x33, 0x05, 0x68, 0x2d, 0xc4, 0x83, 0x03, 0x68, 0x0f, - 0xaa, 0x01, 0x16, 0x59, 0x7c, 0xd2, 0xb6, 0xe6, 0x65, 0xdd, 0x16, 0x72, 0xef, 0x67, 0x34, 0x4a, - 0xe2, 0x56, 0x06, 0x40, 0x4f, 0x61, 0x49, 0x96, 0x1d, 0xfb, 0x8e, 0xec, 0x35, 0xb1, 0xb1, 0x58, - 0x8b, 0x23, 0x7a, 0xed, 0x55, 0xba, 0xeb, 0xb4, 0x16, 0xb4, 0xd3, 0x89, 0xcb, 0xb1, 0x18, 0x15, - 0x3c, 0xbe, 0x6c, 0x38, 0x93, 0x67, 0x69, 0x3c, 0x8f, 0x76, 0xca, 0x78, 0x7e, 0x0c, 0x56, 0x14, - 0x3a, 0x31, 0xc5, 0x01, 0x61, 0x98, 0x39, 0xac, 0x1f, 0x7a, 0x59, 0xf7, 0xd5, 0x65, 0x43, 0xdd, - 0x8a, 0xc2, 0x33, 0x6d, 0x3e, 0xef, 0x87, 0x5e, 0xda, 0x84, 0x05, 0x47, 0x12, 0x04, 0x09, 0x17, - 0x16, 0x87, 0xf8, 0xd6, 0x2d, 0x59, 0x6a, 0xc3, 0xf1, 0x34, 0xb5, 0x9e, 0xfa, 0xe8, 0x09, 0xdc, - 0x1e, 0x88, 0x88, 0xbd, 0x84, 0x12, 0xde, 0x77, 0x54, 0x57, 0xb5, 0x09, 0xa6, 0xd6, 0x8a, 0xf4, - 0xdf, 0x30, 0x02, 0x6b, 0xd0, 0x69, 0x86, 0x41, 0xc7, 0xb0, 0x65, 0xd2, 0xf8, 0x84, 0x89, 0x82, - 0x27, 0x84, 0x5d, 0xa6, 0x6d, 0xb6, 0x2a, 0x59, 0xd6, 0x73, 0x96, 0x13, 0x13, 0x23, 0x9b, 0xee, - 0xe7, 0xb0, 0x31, 0x90, 0x8b, 0x1b, 0xa4, 0xbf, 0x26, 0x45, 0x61, 0x49, 0x0a, 0xcb, 0x48, 0xc4, - 0x0d, 0xf4, 0xaf, 0x4a, 0xfa, 0x7f, 0x04, 0xab, 0x03, 0x49, 0x44, 0x81, 0x4b, 0x42, 0xe5, 0xba, - 0x26, 0x5d, 0xeb, 0x46, 0x74, 0x69, 0x94, 0x6e, 0x27, 0x83, 0x25, 0x48, 0x18, 0xa6, 0x4e, 0x4c, - 0x49, 0xe8, 0x91, 0xd8, 0xed, 0x2a, 0xf7, 0x46, 0x31, 0xf9, 0x4f, 0x19, 0xa6, 0x67, 0x29, 0x46, - 0xb2, 0x38, 0x83, 0x2c, 0x5d, 0x97, 0x71, 0xb5, 0x7e, 0x79, 0x43, 0x6c, 0x8c, 0x6d, 0x88, 0x46, - 0x1e, 0xe1, 0xb9, 0xcb, 0xb8, 0x58, 0xe1, 0xac, 0x37, 0xba, 0x83, 0x01, 0x62, 0x1a, 0xf5, 0x08, - 0x23, 0x51, 0x48, 0xc2, 0x8e, 0x83, 0x29, 0x8d, 0x28, 0xb3, 0x36, 0x65, 0xbf, 0x6f, 0xe7, 0xfd, - 0xfe, 0x49, 0x46, 0x77, 0x66, 0xc0, 0x9f, 0x08, 0xb4, 0xb9, 0xa0, 0x25, 0x23, 0x13, 0xbb, 0x1a, - 0xbe, 0xe2, 0x98, 0x86, 0x6e, 0x57, 0x55, 0x84, 0x71, 0x97, 0x63, 0x6b, 0x47, 0x16, 0x62, 0x29, - 0x35, 0x89, 0x32, 0x9c, 0x0b, 0x03, 0x22, 0x70, 0x77, 0x08, 0xde, 0xf1, 0x2e, 0xdd, 0xb0, 0x83, - 0x8d, 0x1a, 0xdc, 0x1f, 0x5b, 0x83, 0xdb, 0x25, 0xf2, 0x63, 0x49, 0x92, 0x15, 0xa2, 0x03, 0x77, - 0x28, 0x6e, 0x53, 0xcc, 0x2e, 0xd5, 0x81, 0xc7, 0x9c, 0x9e, 0xdb, 0x25, 0xbe, 0xd3, 0xa6, 0x51, - 0x60, 0x44, 0xfa, 0xd9, 0xd8, 0x48, 0x5b, 0x9a, 0x46, 0x9e, 0x90, 0xec, 0x97, 0x82, 0xe4, 0x29, - 0x8d, 0x82, 0x2c, 0xd0, 0x17, 0xb0, 0xcd, 0x48, 0x27, 0x74, 0x48, 0xe8, 0x30, 0xcc, 0x44, 0x7d, - 0x46, 0x84, 0xfa, 0x78, 0xfc, 0xa4, 0x04, 0xd1, 0x69, 0x78, 0xae, 0x69, 0x4a, 0xb1, 0x6c, 0x0e, - 0x90, 0x6f, 0xea, 0xa8, 0x09, 0x73, 0x69, 0x64, 0x79, 0x44, 0xa8, 0x63, 0x09, 0x14, 0x89, 0x3c, - 0x20, 0x56, 0x60, 0x9a, 0x30, 0x96, 0x60, 0xaa, 0x8f, 0x7b, 0xfd, 0x86, 0x3e, 0x00, 0xa4, 0x9e, - 0x1c, 0x97, 0x09, 0x38, 0xf6, 0xc5, 0x16, 0x30, 0x29, 0x31, 0x8b, 0xca, 0x72, 0xa4, 0x0d, 0xa7, - 0xbe, 0xfd, 0xcd, 0x04, 0x2c, 0x14, 0x76, 0x54, 0xd4, 0x80, 0x6a, 0xba, 0xa7, 0xea, 0xb8, 0xd9, - 0x3b, 0xfa, 0x1c, 0xb6, 0x64, 0x63, 0x67, 0xfb, 0x74, 0x69, 0x7d, 0x27, 0xc6, 0xf7, 0xb8, 0x60, - 0x48, 0x83, 0x16, 0x96, 0x76, 0x0f, 0x96, 0xf2, 0x23, 0x20, 0xea, 0x12, 0x4f, 0x9c, 0x7e, 0x93, - 0xcd, 0x49, 0x91, 0x7c, 0xb6, 0xd1, 0xeb, 0x71, 0x74, 0x0a, 0x76, 0x3b, 0x12, 0x47, 0xae, 0x4e, - 0x22, 0xf3, 0x94, 0x82, 0x48, 0xd7, 0x4f, 0x9e, 0xae, 0xd5, 0xd6, 0xa6, 0x44, 0xaa, 0x68, 0x69, - 0xec, 0x97, 0xf8, 0x8a, 0x9f, 0xcb, 0x8a, 0xa2, 0x5f, 0xc1, 0xde, 0x78, 0x2a, 0xe7, 0x0d, 0xe1, - 0x97, 0x4e, 0xd0, 0x76, 0xad, 0x29, 0xc9, 0x79, 0xf7, 0x5a, 0xce, 0xcf, 0x08, 0xbf, 0x7c, 0xd1, - 0x76, 0xed, 0xbf, 0x54, 0x60, 0x49, 0x08, 0x3d, 0x79, 0xf4, 0xbc, 0x13, 0xca, 0x14, 0x03, 0x32, - 0x13, 0xd6, 0xba, 0xf4, 0x7d, 0x98, 0xee, 0xc8, 0x11, 0xad, 0x4a, 0x4b, 0xa7, 0xaa, 0x36, 0x7f, - 0x6b, 0x45, 0xfa, 0x1e, 0x2c, 0x3c, 0xc3, 0x2a, 0xca, 0x28, 0x7d, 0xf6, 0x08, 0x90, 0xd2, 0xa3, - 0x03, 0xa8, 0x6d, 0x98, 0x92, 0xa1, 0xb4, 0x8a, 0x2c, 0x25, 0xa2, 0xac, 0xf6, 0x15, 0x20, 0x25, - 0x43, 0xff, 0x0b, 0xe7, 0xb7, 0x93, 0x9f, 0x77, 0x01, 0x29, 0xf9, 0x79, 0xed, 0xe4, 0x6c, 0x58, - 0x3c, 0xf2, 0xfd, 0x17, 0x52, 0x8a, 0x8c, 0xc2, 0x6c, 0xc3, 0x72, 0x0b, 0x07, 0x51, 0x0f, 0x5f, - 0x0f, 0xfb, 0x6b, 0x45, 0x2d, 0x99, 0x42, 0xbd, 0x13, 0x4d, 0xf6, 0x85, 0xfa, 0x62, 0xcb, 0x32, - 0xd6, 0x5d, 0xb6, 0x07, 0x33, 0x4a, 0x9c, 0x5d, 0xf3, 0xf1, 0x93, 0x22, 0xbe, 0x75, 0xa7, 0xfd, - 0xbb, 0x0a, 0x53, 0x72, 0x29, 0x4a, 0x22, 0xbf, 0x28, 0x98, 0x27, 0xca, 0x82, 0xd9, 0xc8, 0x68, - 0x72, 0x6c, 0x46, 0xf7, 0x61, 0x3a, 0x7a, 0x13, 0x0a, 0xec, 0x8d, 0x51, 0x58, 0x0d, 0x28, 0xea, - 0xe1, 0xa9, 0xb2, 0x1e, 0x1e, 0x14, 0xd9, 0xd3, 0x45, 0x91, 0x3d, 0x54, 0xbb, 0xce, 0x7c, 0x4f, - 0xda, 0xb5, 0xfa, 0xdd, 0xb5, 0xeb, 0x73, 0xa8, 0xe3, 0xab, 0x98, 0x50, 0xf5, 0x65, 0x93, 0x53, - 0xcd, 0x8e, 0xa5, 0x42, 0xb9, 0x5f, 0xc6, 0xf6, 0x11, 0xac, 0x5e, 0x12, 0x1f, 0xab, 0x93, 0xd6, - 0xf5, 0x7d, 0x8a, 0x19, 0x73, 0xba, 0x84, 0x71, 0x26, 0xbf, 0x2a, 0xaa, 0xad, 0xba, 0x30, 0x8b, - 0x23, 0xf4, 0x48, 0x19, 0x45, 0x37, 0x31, 0xb4, 0x05, 0x20, 0x94, 0xcc, 0x05, 0xe9, 0x12, 0xde, - 0xd7, 0x1f, 0x19, 0xc6, 0xc8, 0xff, 0x05, 0xf6, 0xff, 0x42, 0x60, 0xff, 0x04, 0xd6, 0x4c, 0xb7, - 0x10, 0x73, 0xe7, 0x82, 0x44, 0xcc, 0x94, 0xd6, 0x46, 0xf1, 0x5e, 0x62, 0xfe, 0x98, 0x44, 0x4c, - 0x7a, 0x1e, 0x8f, 0x17, 0xd5, 0xeb, 0xd2, 0xff, 0x2d, 0x85, 0xf3, 0xc6, 0xf7, 0x26, 0x9c, 0xed, - 0x7f, 0x54, 0x60, 0xfd, 0x1a, 0x6f, 0x21, 0xaf, 0x3c, 0x97, 0xe3, 0x4e, 0x44, 0xfb, 0xa9, 0xbc, - 0x4a, 0xdf, 0xd1, 0x2f, 0x00, 0x45, 0x9e, 0x97, 0xc8, 0x6f, 0xf3, 0xef, 0x22, 0xa9, 0x16, 0x53, - 0xaf, 0x6c, 0xce, 0x1f, 0xc2, 0x4a, 0x4c, 0xa3, 0x18, 0x53, 0xde, 0x77, 0x3c, 0x37, 0x61, 0xd9, - 0x5c, 0xb5, 0x14, 0xac, 0xa7, 0xd6, 0x63, 0x65, 0x54, 0xb9, 0xd5, 0x61, 0xaa, 0xe7, 0x76, 0x93, - 0xf4, 0x4a, 0x42, 0xbd, 0x1c, 0xfe, 0xe9, 0x06, 0x2c, 0xa4, 0xd7, 0x54, 0xe7, 0x98, 0xf6, 0x88, - 0x87, 0x91, 0x07, 0x73, 0xe6, 0xed, 0x15, 0xda, 0xcc, 0x4b, 0x37, 0xe4, 0x22, 0xae, 0xb1, 0x35, - 0xca, 0xac, 0xb6, 0x7d, 0xbb, 0xfe, 0x87, 0x7f, 0xfe, 0xeb, 0xcf, 0x13, 0x37, 0xd1, 0xdc, 0x41, - 0xef, 0xc1, 0x41, 0x76, 0xb7, 0xf5, 0x5b, 0x80, 0xfc, 0xce, 0x0a, 0xad, 0x1b, 0x47, 0x75, 0xf1, - 0x26, 0xab, 0x51, 0xde, 0x68, 0xed, 0x2d, 0xc9, 0x69, 0xa1, 0x65, 0x93, 0xf3, 0xe0, 0x77, 0xc4, - 0xff, 0x78, 0xf7, 0xeb, 0x87, 0x95, 0x5d, 0xe4, 0xc2, 0xfc, 0xc0, 0x65, 0x17, 0x32, 0x92, 0x1c, - 0x76, 0x0b, 0x36, 0x2c, 0xc6, 0xa6, 0x8c, 0xb1, 0x6a, 0x0f, 0xe4, 0xfd, 0x30, 0xbb, 0xc4, 0x8a, - 0x61, 0x7e, 0xe0, 0x26, 0xcc, 0x0c, 0x31, 0xec, 0x8a, 0x6c, 0x58, 0x88, 0x0f, 0x64, 0x88, 0x7b, - 0x87, 0xeb, 0x83, 0xd3, 0xd0, 0x4f, 0xfb, 0x6a, 0x3a, 0x59, 0x44, 0x1f, 0xe6, 0x07, 0x6e, 0xbe, - 0xcc, 0x88, 0xc3, 0xae, 0xc4, 0x1a, 0x2b, 0xa5, 0xb6, 0x7a, 0x12, 0xc4, 0xbc, 0x6f, 0xaf, 0xcb, - 0xb0, 0xb7, 0x76, 0x87, 0x55, 0xef, 0xf0, 0xef, 0xd3, 0x30, 0xaf, 0xe4, 0x61, 0xda, 0x0f, 0xbf, - 0x01, 0xc8, 0x35, 0xa3, 0xb9, 0x54, 0x25, 0xe9, 0xdb, 0xd8, 0x18, 0x6e, 0xd4, 0x9d, 0x80, 0x64, - 0xdc, 0x39, 0x04, 0x22, 0xae, 0x56, 0x94, 0xaf, 0xa0, 0x9a, 0x2a, 0x45, 0xb4, 0x36, 0xd0, 0x05, - 0xa6, 0xc0, 0x6a, 0x14, 0xb5, 0x9c, 0xbd, 0x21, 0xb9, 0x56, 0xd0, 0x52, 0xce, 0x65, 0xac, 0xff, - 0x67, 0x50, 0x33, 0xc4, 0x25, 0xda, 0x28, 0xae, 0xfe, 0xf5, 0xdc, 0x6b, 0x92, 0x7b, 0xd9, 0x36, - 0xf2, 0x7c, 0xa8, 0xb5, 0xa3, 0x0f, 0x35, 0x43, 0x78, 0x9a, 0xc4, 0x65, 0x3d, 0x5a, 0x26, 0xbe, - 0x27, 0x89, 0x9b, 0x87, 0xab, 0x66, 0xd2, 0xf2, 0xaf, 0x5e, 0x6b, 0x1d, 0xe5, 0x73, 0xa8, 0x19, - 0x22, 0xd3, 0x8c, 0x52, 0xd6, 0x9e, 0x23, 0x57, 0x59, 0xcf, 0x62, 0xb7, 0x5c, 0x21, 0xe4, 0xc1, - 0x6c, 0x26, 0x4f, 0x51, 0xc3, 0xe8, 0xcb, 0x82, 0x66, 0x2d, 0xcf, 0xe0, 0xbe, 0x24, 0xbd, 0x63, - 0x6f, 0x95, 0x48, 0x0f, 0xb4, 0x4e, 0x3a, 0xb8, 0x4b, 0x71, 0x5b, 0xac, 0x41, 0x0f, 0xe6, 0x4c, - 0x7d, 0x6b, 0x6e, 0x23, 0x43, 0x74, 0x6f, 0x39, 0xd4, 0x8f, 0x64, 0xa8, 0x07, 0xbb, 0x7b, 0xa3, - 0x43, 0x19, 0xbf, 0x94, 0xaf, 0xb3, 0xb8, 0x14, 0x6a, 0x86, 0xfa, 0x44, 0x85, 0x96, 0x1c, 0x94, - 0xd1, 0x8d, 0xcd, 0x11, 0x56, 0xdd, 0xb1, 0x7a, 0xc1, 0xd0, 0x98, 0xe9, 0x3e, 0xae, 0xff, 0x1a, - 0xc5, 0xaf, 0x3b, 0xea, 0x9f, 0x18, 0x07, 0xbd, 0x07, 0x8f, 0xd4, 0x52, 0x4c, 0xcb, 0x3f, 0x3f, - 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x7b, 0x5d, 0x05, 0x7c, 0x19, 0x00, 0x00, +func file_accounts_proto_rawDescGZIP() []byte { + file_accounts_proto_rawDescOnce.Do(func() { + file_accounts_proto_rawDescData = protoimpl.X.CompressGZIP(file_accounts_proto_rawDescData) + }) + return file_accounts_proto_rawDescData +} + +var file_accounts_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_accounts_proto_goTypes = []interface{}{ + (*ListAccountsRequest)(nil), // 0: settings.ListAccountsRequest + (*ListAccountsResponse)(nil), // 1: settings.ListAccountsResponse + (*GetAccountRequest)(nil), // 2: settings.GetAccountRequest + (*CreateAccountRequest)(nil), // 3: settings.CreateAccountRequest + (*UpdateAccountRequest)(nil), // 4: settings.UpdateAccountRequest + (*DeleteAccountRequest)(nil), // 5: settings.DeleteAccountRequest + (*Account)(nil), // 6: settings.Account + (*Identities)(nil), // 7: settings.Identities + (*PasswordProfile)(nil), // 8: settings.PasswordProfile + (*ListGroupsRequest)(nil), // 9: settings.ListGroupsRequest + (*ListGroupsResponse)(nil), // 10: settings.ListGroupsResponse + (*GetGroupRequest)(nil), // 11: settings.GetGroupRequest + (*CreateGroupRequest)(nil), // 12: settings.CreateGroupRequest + (*UpdateGroupRequest)(nil), // 13: settings.UpdateGroupRequest + (*DeleteGroupRequest)(nil), // 14: settings.DeleteGroupRequest + (*AddMemberRequest)(nil), // 15: settings.AddMemberRequest + (*RemoveMemberRequest)(nil), // 16: settings.RemoveMemberRequest + (*ListMembersRequest)(nil), // 17: settings.ListMembersRequest + (*ListMembersResponse)(nil), // 18: settings.ListMembersResponse + (*Group)(nil), // 19: settings.Group + (*OnPremisesProvisioningError)(nil), // 20: settings.OnPremisesProvisioningError + (*field_mask.FieldMask)(nil), // 21: google.protobuf.FieldMask + (*timestamp.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*empty.Empty)(nil), // 23: google.protobuf.Empty +} +var file_accounts_proto_depIdxs = []int32{ + 21, // 0: settings.ListAccountsRequest.field_mask:type_name -> google.protobuf.FieldMask + 6, // 1: settings.ListAccountsResponse.accounts:type_name -> settings.Account + 6, // 2: settings.CreateAccountRequest.account:type_name -> settings.Account + 6, // 3: settings.UpdateAccountRequest.account:type_name -> settings.Account + 21, // 4: settings.UpdateAccountRequest.update_mask:type_name -> google.protobuf.FieldMask + 7, // 5: settings.Account.identities:type_name -> settings.Identities + 8, // 6: settings.Account.password_profile:type_name -> settings.PasswordProfile + 19, // 7: settings.Account.memberOf:type_name -> settings.Group + 22, // 8: settings.Account.created_date_time:type_name -> google.protobuf.Timestamp + 22, // 9: settings.Account.deleted_date_time:type_name -> google.protobuf.Timestamp + 22, // 10: settings.Account.on_premises_last_sync_date_time:type_name -> google.protobuf.Timestamp + 20, // 11: settings.Account.on_premises_provisioning_errors:type_name -> settings.OnPremisesProvisioningError + 22, // 12: settings.Account.external_user_state_change_date_time:type_name -> google.protobuf.Timestamp + 22, // 13: settings.Account.refresh_tokens_valid_from_date_time:type_name -> google.protobuf.Timestamp + 22, // 14: settings.Account.sign_in_sessions_valid_from_date_time:type_name -> google.protobuf.Timestamp + 22, // 15: settings.PasswordProfile.last_password_change_date_time:type_name -> google.protobuf.Timestamp + 21, // 16: settings.ListGroupsRequest.field_mask:type_name -> google.protobuf.FieldMask + 19, // 17: settings.ListGroupsResponse.groups:type_name -> settings.Group + 19, // 18: settings.CreateGroupRequest.group:type_name -> settings.Group + 19, // 19: settings.UpdateGroupRequest.group:type_name -> settings.Group + 21, // 20: settings.UpdateGroupRequest.update_mask:type_name -> google.protobuf.FieldMask + 21, // 21: settings.ListMembersRequest.field_mask:type_name -> google.protobuf.FieldMask + 6, // 22: settings.ListMembersResponse.members:type_name -> settings.Account + 6, // 23: settings.Group.members:type_name -> settings.Account + 6, // 24: settings.Group.owners:type_name -> settings.Account + 22, // 25: settings.Group.created_date_time:type_name -> google.protobuf.Timestamp + 22, // 26: settings.Group.deleted_date_time:type_name -> google.protobuf.Timestamp + 22, // 27: settings.Group.expiration_date_time:type_name -> google.protobuf.Timestamp + 20, // 28: settings.Group.on_premises_provisioning_errors:type_name -> settings.OnPremisesProvisioningError + 22, // 29: settings.OnPremisesProvisioningError.occurred_date_time:type_name -> google.protobuf.Timestamp + 0, // 30: settings.AccountsService.ListAccounts:input_type -> settings.ListAccountsRequest + 2, // 31: settings.AccountsService.GetAccount:input_type -> settings.GetAccountRequest + 3, // 32: settings.AccountsService.CreateAccount:input_type -> settings.CreateAccountRequest + 4, // 33: settings.AccountsService.UpdateAccount:input_type -> settings.UpdateAccountRequest + 5, // 34: settings.AccountsService.DeleteAccount:input_type -> settings.DeleteAccountRequest + 9, // 35: settings.GroupsService.ListGroups:input_type -> settings.ListGroupsRequest + 11, // 36: settings.GroupsService.GetGroup:input_type -> settings.GetGroupRequest + 12, // 37: settings.GroupsService.CreateGroup:input_type -> settings.CreateGroupRequest + 13, // 38: settings.GroupsService.UpdateGroup:input_type -> settings.UpdateGroupRequest + 14, // 39: settings.GroupsService.DeleteGroup:input_type -> settings.DeleteGroupRequest + 15, // 40: settings.GroupsService.AddMember:input_type -> settings.AddMemberRequest + 16, // 41: settings.GroupsService.RemoveMember:input_type -> settings.RemoveMemberRequest + 17, // 42: settings.GroupsService.ListMembers:input_type -> settings.ListMembersRequest + 1, // 43: settings.AccountsService.ListAccounts:output_type -> settings.ListAccountsResponse + 6, // 44: settings.AccountsService.GetAccount:output_type -> settings.Account + 6, // 45: settings.AccountsService.CreateAccount:output_type -> settings.Account + 6, // 46: settings.AccountsService.UpdateAccount:output_type -> settings.Account + 23, // 47: settings.AccountsService.DeleteAccount:output_type -> google.protobuf.Empty + 10, // 48: settings.GroupsService.ListGroups:output_type -> settings.ListGroupsResponse + 19, // 49: settings.GroupsService.GetGroup:output_type -> settings.Group + 19, // 50: settings.GroupsService.CreateGroup:output_type -> settings.Group + 19, // 51: settings.GroupsService.UpdateGroup:output_type -> settings.Group + 23, // 52: settings.GroupsService.DeleteGroup:output_type -> google.protobuf.Empty + 19, // 53: settings.GroupsService.AddMember:output_type -> settings.Group + 19, // 54: settings.GroupsService.RemoveMember:output_type -> settings.Group + 18, // 55: settings.GroupsService.ListMembers:output_type -> settings.ListMembersResponse + 43, // [43:56] is the sub-list for method output_type + 30, // [30:43] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name +} + +func init() { file_accounts_proto_init() } +func file_accounts_proto_init() { + if File_accounts_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_accounts_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAccountsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAccountsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAccountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateAccountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateAccountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteAccountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Account); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Identities); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PasswordProfile); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGroupsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGroupsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGroupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateGroupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateGroupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteGroupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddMemberRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveMemberRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListMembersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListMembersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Group); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OnPremisesProvisioningError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_accounts_proto_rawDesc, + NumEnums: 0, + NumMessages: 21, + NumExtensions: 0, + NumServices: 2, + }, + GoTypes: file_accounts_proto_goTypes, + DependencyIndexes: file_accounts_proto_depIdxs, + MessageInfos: file_accounts_proto_msgTypes, + }.Build() + File_accounts_proto = out.File + file_accounts_proto_rawDesc = nil + file_accounts_proto_goTypes = nil + file_accounts_proto_depIdxs = nil } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index ad9183f931..eec78a8d81 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -15,6 +15,7 @@ import ( import ( context "context" + api "github.com/micro/go-micro/v2/api" client "github.com/micro/go-micro/v2/client" server "github.com/micro/go-micro/v2/server" ) @@ -31,10 +32,51 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package // Reference imports to suppress errors if they are not otherwise used. +var _ api.Endpoint var _ context.Context var _ client.Option var _ server.Option +// Api Endpoints for AccountsService service + +func NewAccountsServiceEndpoints() []*api.Endpoint { + return []*api.Endpoint{ + &api.Endpoint{ + Name: "AccountsService.ListAccounts", + Path: []string{"/v0/accounts"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + &api.Endpoint{ + Name: "AccountsService.GetAccount", + Path: []string{"/v0/accounts/{id=*}"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + &api.Endpoint{ + Name: "AccountsService.CreateAccount", + Path: []string{"/v0/accounts"}, + Method: []string{"POST"}, + Body: "account", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "AccountsService.UpdateAccount", + Path: []string{"/v0/accounts/{account.id=*}"}, + Method: []string{"PATCH"}, + Body: "account", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "AccountsService.DeleteAccount", + Path: []string{"/v0/accounts/{id=*}"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + }, + } +} + // Client API for AccountsService service type AccountsService interface { @@ -139,6 +181,39 @@ func RegisterAccountsServiceHandler(s server.Server, hdlr AccountsServiceHandler accountsService } h := &accountsServiceHandler{hdlr} + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.ListAccounts", + Path: []string{"/v0/accounts"}, + Method: []string{"GET"}, + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.GetAccount", + Path: []string{"/v0/accounts/{id=*}"}, + Method: []string{"GET"}, + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.CreateAccount", + Path: []string{"/v0/accounts"}, + Method: []string{"POST"}, + Body: "account", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.UpdateAccount", + Path: []string{"/v0/accounts/{account.id=*}"}, + Method: []string{"PATCH"}, + Body: "account", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.DeleteAccount", + Path: []string{"/v0/accounts/{id=*}"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + })) return s.Handle(s.NewHandler(&AccountsService{h}, opts...)) } @@ -166,6 +241,66 @@ func (h *accountsServiceHandler) DeleteAccount(ctx context.Context, in *DeleteAc return h.AccountsServiceHandler.DeleteAccount(ctx, in, out) } +// Api Endpoints for GroupsService service + +func NewGroupsServiceEndpoints() []*api.Endpoint { + return []*api.Endpoint{ + &api.Endpoint{ + Name: "GroupsService.ListGroups", + Path: []string{"/v0/groups"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.GetGroup", + Path: []string{"/v0/groups/{id=*}"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.CreateGroup", + Path: []string{"/v0/groups"}, + Method: []string{"POST"}, + Body: "group", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.UpdateGroup", + Path: []string{"/v0/groups/{group.id=*}"}, + Method: []string{"PATCH"}, + Body: "group", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.DeleteGroup", + Path: []string{"/v0/groups/{id=*}"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.AddMember", + Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.RemoveMember", + Path: []string{"/v0/groups/{id=*}/members/{account_id}/$ref"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.ListMembers", + Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + } +} + // Client API for GroupsService service type GroupsService interface { @@ -315,6 +450,59 @@ func RegisterGroupsServiceHandler(s server.Server, hdlr GroupsServiceHandler, op groupsService } h := &groupsServiceHandler{hdlr} + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.ListGroups", + Path: []string{"/v0/groups"}, + Method: []string{"GET"}, + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.GetGroup", + Path: []string{"/v0/groups/{id=*}"}, + Method: []string{"GET"}, + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.CreateGroup", + Path: []string{"/v0/groups"}, + Method: []string{"POST"}, + Body: "group", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.UpdateGroup", + Path: []string{"/v0/groups/{group.id=*}"}, + Method: []string{"PATCH"}, + Body: "group", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.DeleteGroup", + Path: []string{"/v0/groups/{id=*}"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.AddMember", + Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.RemoveMember", + Path: []string{"/v0/groups/{id=*}/members/{account_id}/$ref"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.ListMembers", + Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Method: []string{"GET"}, + Handler: "rpc", + })) return s.Handle(s.NewHandler(&GroupsService{h}, opts...)) } diff --git a/pkg/proto/v0/accounts.pb.web.go b/pkg/proto/v0/accounts.pb.web.go new file mode 100644 index 0000000000..2a2b6d77cb --- /dev/null +++ b/pkg/proto/v0/accounts.pb.web.go @@ -0,0 +1,1129 @@ +// Code generated by protoc-gen-microweb. DO NOT EDIT. +// source: proto.proto + +package proto + +import ( + "bytes" + "encoding/json" + "net/http" + + "github.com/go-chi/chi" + "github.com/go-chi/render" + "github.com/golang/protobuf/jsonpb" + + "github.com/golang/protobuf/ptypes/empty" +) + +type webAccountsServiceHandler struct { + r chi.Router + h AccountsServiceHandler +} + +func (h *webAccountsServiceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + h.r.ServeHTTP(w, r) +} + +func (h *webAccountsServiceHandler) ListAccounts(w http.ResponseWriter, r *http.Request) { + + req := &ListAccountsRequest{} + + resp := &ListAccountsResponse{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.ListAccounts( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webAccountsServiceHandler) GetAccount(w http.ResponseWriter, r *http.Request) { + + req := &GetAccountRequest{} + + resp := &Account{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.GetAccount( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webAccountsServiceHandler) CreateAccount(w http.ResponseWriter, r *http.Request) { + + req := &CreateAccountRequest{} + + resp := &Account{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.CreateAccount( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusCreated) + render.JSON(w, r, resp) +} + +func (h *webAccountsServiceHandler) UpdateAccount(w http.ResponseWriter, r *http.Request) { + + req := &UpdateAccountRequest{} + + resp := &Account{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.UpdateAccount( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webAccountsServiceHandler) DeleteAccount(w http.ResponseWriter, r *http.Request) { + + req := &DeleteAccountRequest{} + resp := &empty.Empty{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.DeleteAccount( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusNoContent) + render.NoContent(w, r) +} + +func RegisterAccountsServiceWeb(r chi.Router, i AccountsServiceHandler, middlewares ...func(http.Handler) http.Handler) { + handler := &webAccountsServiceHandler{ + r: r, + h: i, + } + + r.MethodFunc("GET", "/v0/accounts", handler.ListAccounts) + r.MethodFunc("GET", "/v0/accounts/{id=*}", handler.GetAccount) + r.MethodFunc("POST", "/v0/accounts", handler.CreateAccount) + r.MethodFunc("PATCH", "/v0/accounts/{account.id=*}", handler.UpdateAccount) + r.MethodFunc("DELETE", "/v0/accounts/{id=*}", handler.DeleteAccount) +} + +type webGroupsServiceHandler struct { + r chi.Router + h GroupsServiceHandler +} + +func (h *webGroupsServiceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + h.r.ServeHTTP(w, r) +} + +func (h *webGroupsServiceHandler) ListGroups(w http.ResponseWriter, r *http.Request) { + + req := &ListGroupsRequest{} + + resp := &ListGroupsResponse{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.ListGroups( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) GetGroup(w http.ResponseWriter, r *http.Request) { + + req := &GetGroupRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.GetGroup( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) CreateGroup(w http.ResponseWriter, r *http.Request) { + + req := &CreateGroupRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.CreateGroup( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusCreated) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) UpdateGroup(w http.ResponseWriter, r *http.Request) { + + req := &UpdateGroupRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.UpdateGroup( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) DeleteGroup(w http.ResponseWriter, r *http.Request) { + + req := &DeleteGroupRequest{} + resp := &empty.Empty{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.DeleteGroup( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusNoContent) + render.NoContent(w, r) +} + +func (h *webGroupsServiceHandler) AddMember(w http.ResponseWriter, r *http.Request) { + + req := &AddMemberRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.AddMember( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusCreated) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) RemoveMember(w http.ResponseWriter, r *http.Request) { + + req := &RemoveMemberRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.RemoveMember( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) ListMembers(w http.ResponseWriter, r *http.Request) { + + req := &ListMembersRequest{} + + resp := &ListMembersResponse{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.ListMembers( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func RegisterGroupsServiceWeb(r chi.Router, i GroupsServiceHandler, middlewares ...func(http.Handler) http.Handler) { + handler := &webGroupsServiceHandler{ + r: r, + h: i, + } + + r.MethodFunc("GET", "/v0/groups", handler.ListGroups) + r.MethodFunc("GET", "/v0/groups/{id=*}", handler.GetGroup) + r.MethodFunc("POST", "/v0/groups", handler.CreateGroup) + r.MethodFunc("PATCH", "/v0/groups/{group.id=*}", handler.UpdateGroup) + r.MethodFunc("DELETE", "/v0/groups/{id=*}", handler.DeleteGroup) + r.MethodFunc("POST", "/v0/groups/{id=*}/members/$ref", handler.AddMember) + r.MethodFunc("DELETE", "/v0/groups/{id=*}/members/{account_id}/$ref", handler.RemoveMember) + r.MethodFunc("GET", "/v0/groups/{id=*}/members/$ref", handler.ListMembers) +} + +// ListAccountsRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListAccountsRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListAccountsRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListAccountsRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListAccountsRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListAccountsRequest)(nil) + +// ListAccountsRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListAccountsRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListAccountsRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListAccountsRequest) UnmarshalJSON(b []byte) error { + return ListAccountsRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListAccountsRequest)(nil) + +// ListAccountsResponseJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListAccountsResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListAccountsResponseJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListAccountsResponse) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListAccountsResponseJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListAccountsResponse)(nil) + +// ListAccountsResponseJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListAccountsResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListAccountsResponseJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListAccountsResponse) UnmarshalJSON(b []byte) error { + return ListAccountsResponseJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListAccountsResponse)(nil) + +// GetAccountRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of GetAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var GetAccountRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *GetAccountRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := GetAccountRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*GetAccountRequest)(nil) + +// GetAccountRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of GetAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var GetAccountRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *GetAccountRequest) UnmarshalJSON(b []byte) error { + return GetAccountRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*GetAccountRequest)(nil) + +// CreateAccountRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of CreateAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var CreateAccountRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *CreateAccountRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := CreateAccountRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*CreateAccountRequest)(nil) + +// CreateAccountRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of CreateAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var CreateAccountRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *CreateAccountRequest) UnmarshalJSON(b []byte) error { + return CreateAccountRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*CreateAccountRequest)(nil) + +// UpdateAccountRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of UpdateAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var UpdateAccountRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *UpdateAccountRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := UpdateAccountRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*UpdateAccountRequest)(nil) + +// UpdateAccountRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of UpdateAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var UpdateAccountRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *UpdateAccountRequest) UnmarshalJSON(b []byte) error { + return UpdateAccountRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*UpdateAccountRequest)(nil) + +// DeleteAccountRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of DeleteAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var DeleteAccountRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *DeleteAccountRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := DeleteAccountRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*DeleteAccountRequest)(nil) + +// DeleteAccountRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of DeleteAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var DeleteAccountRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *DeleteAccountRequest) UnmarshalJSON(b []byte) error { + return DeleteAccountRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*DeleteAccountRequest)(nil) + +// AccountJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of Account. This struct is safe to replace or modify but +// should not be done so concurrently. +var AccountJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *Account) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := AccountJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*Account)(nil) + +// AccountJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of Account. This struct is safe to replace or modify but +// should not be done so concurrently. +var AccountJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *Account) UnmarshalJSON(b []byte) error { + return AccountJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*Account)(nil) + +// IdentitiesJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of Identities. This struct is safe to replace or modify but +// should not be done so concurrently. +var IdentitiesJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *Identities) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := IdentitiesJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*Identities)(nil) + +// IdentitiesJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of Identities. This struct is safe to replace or modify but +// should not be done so concurrently. +var IdentitiesJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *Identities) UnmarshalJSON(b []byte) error { + return IdentitiesJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*Identities)(nil) + +// PasswordProfileJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of PasswordProfile. This struct is safe to replace or modify but +// should not be done so concurrently. +var PasswordProfileJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *PasswordProfile) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := PasswordProfileJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*PasswordProfile)(nil) + +// PasswordProfileJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of PasswordProfile. This struct is safe to replace or modify but +// should not be done so concurrently. +var PasswordProfileJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *PasswordProfile) UnmarshalJSON(b []byte) error { + return PasswordProfileJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*PasswordProfile)(nil) + +// ListGroupsRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListGroupsRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListGroupsRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListGroupsRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListGroupsRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListGroupsRequest)(nil) + +// ListGroupsRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListGroupsRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListGroupsRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListGroupsRequest) UnmarshalJSON(b []byte) error { + return ListGroupsRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListGroupsRequest)(nil) + +// ListGroupsResponseJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListGroupsResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListGroupsResponseJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListGroupsResponse) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListGroupsResponseJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListGroupsResponse)(nil) + +// ListGroupsResponseJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListGroupsResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListGroupsResponseJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListGroupsResponse) UnmarshalJSON(b []byte) error { + return ListGroupsResponseJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListGroupsResponse)(nil) + +// GetGroupRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of GetGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var GetGroupRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *GetGroupRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := GetGroupRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*GetGroupRequest)(nil) + +// GetGroupRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of GetGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var GetGroupRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *GetGroupRequest) UnmarshalJSON(b []byte) error { + return GetGroupRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*GetGroupRequest)(nil) + +// CreateGroupRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of CreateGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var CreateGroupRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *CreateGroupRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := CreateGroupRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*CreateGroupRequest)(nil) + +// CreateGroupRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of CreateGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var CreateGroupRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *CreateGroupRequest) UnmarshalJSON(b []byte) error { + return CreateGroupRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*CreateGroupRequest)(nil) + +// UpdateGroupRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of UpdateGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var UpdateGroupRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *UpdateGroupRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := UpdateGroupRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*UpdateGroupRequest)(nil) + +// UpdateGroupRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of UpdateGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var UpdateGroupRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *UpdateGroupRequest) UnmarshalJSON(b []byte) error { + return UpdateGroupRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*UpdateGroupRequest)(nil) + +// DeleteGroupRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of DeleteGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var DeleteGroupRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *DeleteGroupRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := DeleteGroupRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*DeleteGroupRequest)(nil) + +// DeleteGroupRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of DeleteGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var DeleteGroupRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *DeleteGroupRequest) UnmarshalJSON(b []byte) error { + return DeleteGroupRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*DeleteGroupRequest)(nil) + +// AddMemberRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of AddMemberRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var AddMemberRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *AddMemberRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := AddMemberRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*AddMemberRequest)(nil) + +// AddMemberRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of AddMemberRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var AddMemberRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *AddMemberRequest) UnmarshalJSON(b []byte) error { + return AddMemberRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*AddMemberRequest)(nil) + +// RemoveMemberRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of RemoveMemberRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var RemoveMemberRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *RemoveMemberRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := RemoveMemberRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*RemoveMemberRequest)(nil) + +// RemoveMemberRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of RemoveMemberRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var RemoveMemberRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *RemoveMemberRequest) UnmarshalJSON(b []byte) error { + return RemoveMemberRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*RemoveMemberRequest)(nil) + +// ListMembersRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListMembersRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListMembersRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListMembersRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListMembersRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListMembersRequest)(nil) + +// ListMembersRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListMembersRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListMembersRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListMembersRequest) UnmarshalJSON(b []byte) error { + return ListMembersRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListMembersRequest)(nil) + +// ListMembersResponseJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListMembersResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListMembersResponseJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListMembersResponse) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListMembersResponseJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListMembersResponse)(nil) + +// ListMembersResponseJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListMembersResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListMembersResponseJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListMembersResponse) UnmarshalJSON(b []byte) error { + return ListMembersResponseJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListMembersResponse)(nil) + +// GroupJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of Group. This struct is safe to replace or modify but +// should not be done so concurrently. +var GroupJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *Group) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := GroupJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*Group)(nil) + +// GroupJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of Group. This struct is safe to replace or modify but +// should not be done so concurrently. +var GroupJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *Group) UnmarshalJSON(b []byte) error { + return GroupJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*Group)(nil) + +// OnPremisesProvisioningErrorJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of OnPremisesProvisioningError. This struct is safe to replace or modify but +// should not be done so concurrently. +var OnPremisesProvisioningErrorJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *OnPremisesProvisioningError) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := OnPremisesProvisioningErrorJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*OnPremisesProvisioningError)(nil) + +// OnPremisesProvisioningErrorJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of OnPremisesProvisioningError. This struct is safe to replace or modify but +// should not be done so concurrently. +var OnPremisesProvisioningErrorJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *OnPremisesProvisioningError) UnmarshalJSON(b []byte) error { + return OnPremisesProvisioningErrorJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*OnPremisesProvisioningError)(nil) diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index f2ba6b4757..84a4666f47 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -25,7 +25,6 @@ service AccountsService { rpc GetAccount(GetAccountRequest) returns (Account) { option (google.api.http) = { get: "/v0/accounts/{id=*}" - body: "*" }; } // Creates an account @@ -68,7 +67,6 @@ service GroupsService { rpc GetGroup(GetGroupRequest) returns (Group) { option (google.api.http) = { get: "/v0/groups/{id=*}" - body: "*" }; } // Creates a group @@ -115,8 +113,7 @@ service GroupsService { rpc RemoveMember(RemoveMemberRequest) returns (Group) { // All request parameters go into body. option (google.api.http) = { - delete: "/v0/groups/{id=*}/members/{account.id}/$ref" - body: "*" + delete: "/v0/groups/{id=*}/members/{account_id}/$ref" }; } // group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 @@ -476,9 +473,11 @@ message AddMemberRequest { } message RemoveMemberRequest { - // The account id to remove - // TODO id in the body indt in the url? not necessary ... use empty? + // The group id string id = 1; + + // The account id to remove + string account_id = 2; } message ListMembersRequest { @@ -511,6 +510,9 @@ message ListMembersRequest { // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" string query = 4 [(google.api.field_behavior) = OPTIONAL]; + + // The group id + string id = 5; } message ListMembersResponse { @@ -638,4 +640,4 @@ message OnPremisesProvisioningError { string property_causing_error = 3; // Value of the property causing the error. string value = 4; -} \ No newline at end of file +} diff --git a/pkg/proto/v0/accounts.swagger.json b/pkg/proto/v0/accounts.swagger.json new file mode 100644 index 0000000000..80f32ea797 --- /dev/null +++ b/pkg/proto/v0/accounts.swagger.json @@ -0,0 +1,953 @@ +{ + "swagger": "2.0", + "info": { + "title": "accounts.proto", + "version": "version not set" + }, + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/v0/accounts": { + "get": { + "summary": "Lists accounts", + "operationId": "AccountsService_ListAccounts", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsListAccountsResponse" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "page_size", + "description": "Optional. The maximum number of accounts to return in the response.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page_token", + "description": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "field_mask.paths", + "description": "The set of field mask paths.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "query", + "description": "Optional. Search criteria used to select the accounts to return.\nIf no search criteria is specified then all accounts will be\nreturned. TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `email=foo@example.com` returns accounts with\n`email` set to `foo@example.com`\n* Query `display_name=\\\\\"Test String\\\\\"` returns accounts with\ndisplay names that include both \"Test\" and \"String\"", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AccountsService" + ] + }, + "post": { + "summary": "Creates an account", + "operationId": "AccountsService_CreateAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsAccount" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "description": "The account resource to create", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsAccount" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/v0/accounts/{account.id}": { + "patch": { + "summary": "Updates an account", + "operationId": "AccountsService_UpdateAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsAccount" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "account.id", + "description": "The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "description": "The account resource which replaces the resource on the server", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsAccount" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/v0/accounts/{id}": { + "get": { + "summary": "Gets an account", + "operationId": "AccountsService_GetAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsAccount" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AccountsService" + ] + }, + "delete": { + "summary": "Deletes an account", + "operationId": "AccountsService_DeleteAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/v0/groups": { + "get": { + "summary": "Lists groups", + "operationId": "GroupsService_ListGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsListGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "page_size", + "description": "Optional. The maximum number of groups to return in the response.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page_token", + "description": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "field_mask.paths", + "description": "The set of field mask paths.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "query", + "description": "Optional. Search criteria used to select the groups to return.\nIf no search criteria is specified then all groups will be\nreturned. TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `display_name=\\\\\"Test String\\\\\"` returns groups with\ndisplay names that include both \"Test\" and \"String\"", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + }, + "post": { + "summary": "Creates a group", + "operationId": "GroupsService_CreateGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "description": "The account resource to create", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsGroup" + } + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/v0/groups/{group.id}": { + "patch": { + "summary": "Updates a group", + "operationId": "GroupsService_UpdateGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "group.id", + "description": "The unique identifier for the group.\nReturned by default. Inherited from directoryObject. Key. Not nullable. Read-only.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "description": "The group resource which replaces the resource on the server", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsGroup" + } + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/v0/groups/{id}": { + "get": { + "summary": "Gets an groups", + "operationId": "GroupsService_GetGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + }, + "delete": { + "summary": "Deletes a group", + "operationId": "GroupsService_DeleteGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/v0/groups/{id}/members/$ref": { + "get": { + "summary": "group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0", + "operationId": "GroupsService_ListMembers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsListMembersResponse" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "description": "The group id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page_size", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page_token", + "description": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "field_mask.paths", + "description": "The set of field mask paths.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "query", + "description": "Optional. Search criteria used to select the groups to return.\nIf no search criteria is specified then all groups will be\nreturned. TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `display_name=\\\\\"Test String\\\\\"` returns groups with\ndisplay names that include both \"Test\" and \"String\"", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + }, + "post": { + "summary": "group:addmember https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0\u0026tabs=http", + "operationId": "GroupsService_AddMember", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "description": "The account id to add", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsAddMemberRequest" + } + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/v0/groups/{id}/members/{account_id}/$ref": { + "delete": { + "summary": "group:removemember https://docs.microsoft.com/en-us/graph/api/group-delete-members?view=graph-rest-1.0", + "operationId": "GroupsService_RemoveMember", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "description": "The group id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "account_id", + "description": "The account id to remove", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + } + } + }, + "definitions": { + "protobufAny": { + "type": "object", + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "protobufFieldMask": { + "type": "object", + "properties": { + "paths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The set of field mask paths." + } + }, + "description": "paths: \"f.a\"\n paths: \"f.b.d\"\n\nHere `f` represents a field in some root message, `a` and `b`\nfields in the message found in `f`, and `d` a field found in the\nmessage in `f.b`.\n\nField masks are used to specify a subset of fields that should be\nreturned by a get operation or modified by an update operation.\nField masks also have a custom JSON encoding (see below).\n\n# Field Masks in Projections\n\nWhen used in the context of a projection, a response message or\nsub-message is filtered by the API to only contain those fields as\nspecified in the mask. For example, if the mask in the previous\nexample is applied to a response message as follows:\n\n f {\n a : 22\n b {\n d : 1\n x : 2\n }\n y : 13\n }\n z: 8\n\nThe result will not contain specific values for fields x,y and z\n(their value will be set to the default, and omitted in proto text\noutput):\n\n\n f {\n a : 22\n b {\n d : 1\n }\n }\n\nA repeated field is not allowed except at the last position of a\npaths string.\n\nIf a FieldMask object is not present in a get operation, the\noperation applies to all fields (as if a FieldMask of all fields\nhad been specified).\n\nNote that a field mask does not necessarily apply to the\ntop-level response message. In case of a REST get operation, the\nfield mask applies directly to the response, but in case of a REST\nlist operation, the mask instead applies to each individual message\nin the returned resource list. In case of a REST custom method,\nother definitions may be used. Where the mask applies will be\nclearly documented together with its declaration in the API. In\nany case, the effect on the returned resource/resources is required\nbehavior for APIs.\n\n# Field Masks in Update Operations\n\nA field mask in update operations specifies which fields of the\ntargeted resource are going to be updated. The API is required\nto only change the values of the fields as specified in the mask\nand leave the others untouched. If a resource is passed in to\ndescribe the updated values, the API ignores the values of all\nfields not covered by the mask.\n\nIf a repeated field is specified for an update operation, new values will\nbe appended to the existing repeated field in the target resource. Note that\na repeated field is only allowed in the last position of a `paths` string.\n\nIf a sub-message is specified in the last position of the field mask for an\nupdate operation, then new value will be merged into the existing sub-message\nin the target resource.\n\nFor example, given the target message:\n\n f {\n b {\n d: 1\n x: 2\n }\n c: [1]\n }\n\nAnd an update message:\n\n f {\n b {\n d: 10\n }\n c: [2]\n }\n\nthen if the field mask is:\n\n paths: [\"f.b\", \"f.c\"]\n\nthen the result will be:\n\n f {\n b {\n d: 10\n x: 2\n }\n c: [1, 2]\n }\n\nAn implementation may provide options to override this default behavior for\nrepeated and message fields.\n\nIn order to reset a field's value to the default, the field must\nbe in the mask and set to the default value in the provided resource.\nHence, in order to reset all fields of a resource, provide a default\ninstance of the resource and set all fields in the mask, or do\nnot provide a mask as described below.\n\nIf a field mask is not present on update, the operation applies to\nall fields (as if a field mask of all fields has been specified).\nNote that in the presence of schema evolution, this may mean that\nfields the client does not know and has therefore not filled into\nthe request will be reset to their default. If this is unwanted\nbehavior, a specific service may require a client to always specify\na field mask, producing an error if not.\n\nAs with get operations, the location of the resource which\ndescribes the updated values in the request message depends on the\noperation kind. In any case, the effect of the field mask is\nrequired to be honored by the API.\n\n## Considerations for HTTP REST\n\nThe HTTP kind of an update operation which uses a field mask must\nbe set to PATCH instead of PUT in order to satisfy HTTP semantics\n(PUT must only be used for full updates).\n\n# JSON Encoding of Field Masks\n\nIn JSON, a field mask is encoded as a single string where paths are\nseparated by a comma. Fields name in each path are converted\nto/from lower-camel naming conventions.\n\nAs an example, consider the following message declarations:\n\n message Profile {\n User user = 1;\n Photo photo = 2;\n }\n message User {\n string display_name = 1;\n string address = 2;\n }\n\nIn proto a field mask for `Profile` may look as such:\n\n mask {\n paths: \"user.display_name\"\n paths: \"photo\"\n }\n\nIn JSON, the same mask is represented as below:\n\n {\n mask: \"user.displayName,photo\"\n }\n\n# Field Masks and Oneof Fields\n\nField masks treat fields in oneofs just as regular fields. Consider the\nfollowing message:\n\n message SampleMessage {\n oneof test_oneof {\n string name = 4;\n SubMessage sub_message = 9;\n }\n }\n\nThe field mask can be:\n\n mask {\n paths: \"name\"\n }\n\nOr:\n\n mask {\n paths: \"sub_message\"\n }\n\nNote that oneof type names (\"test_oneof\" in this case) cannot be used in\npaths.\n\n## Field Mask Verification\n\nThe implementation of any API method which has a FieldMask type field in the\nrequest should verify the included field paths, and return an\n`INVALID_ARGUMENT` error if any path is unmappable.", + "title": "`FieldMask` represents a set of symbolic field paths, for example:" + }, + "runtimeError": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "settingsAccount": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only." + }, + "account_enabled": { + "type": "boolean", + "format": "boolean", + "description": "*true* if the account is enabled; otherwise, *false*. This property is required when a user is created. Supports $filter." + }, + "is_resource_account": { + "type": "boolean", + "format": "boolean", + "description": "A resource account is also known as a /disabled user object/ in Azure AD, and can be used to represent resources in general.\nIn Exchange it might be used to represent conference rooms, for example, and allow them to have a phone number.\nYou could give printers or machines with a sync client resource accounts as well.\nA resource account can be homed in Microsoft 365 or on premises using Skype for Business Server 2019.\n*true* if the user is a resource account; otherwise, *false*. Null value should be considered false." + }, + "creation_type": { + "type": "string", + "description": "Indicates whether the account was created as\n- a regular school or work account (\"\" / emptystring),\n- a local account, fully managed by ocis (LocalAccount), includes synced accounts or\n- an external account (Invitation),\n- self-service sign-up using email verification (EmailVerified). Read-only." + }, + "identities": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsIdentities" + }, + "description": "Represents the identities that can be used to sign in to this account.\nAn identity can be provided by OCIS (also known as a local account), by organizations, or by social identity providers such as Facebook, Google, and Microsoft, and is tied to an account.\nMay contain multiple items with the same signInType value. Supports $filter." + }, + "display_name": { + "type": "string", + "title": "The name displayed in the address book for the account.\nThis is usually the combination of the user's first name, middle initial and last name.\nThis property is required when a user is created and it cannot be cleared during updates.\nSupports $filter and $orderby.\nposixaccount MUST cn" + }, + "preferred_name": { + "type": "string", + "title": "The username\nposixaccount MUST uid" + }, + "uid_number": { + "type": "string", + "format": "int64", + "title": "TODO rename to on_premise_? or move to extension? see https://docs.microsoft.com/en-us/graph/extensibility-open-users\nused for exposing the user using ldap\nposixaccount MUST uidnumber" + }, + "gid_number": { + "type": "string", + "format": "int64", + "title": "used for exposing the user using ldap\nposixaccount MUST gidnumber" + }, + "mail": { + "type": "string", + "title": "The SMTP address for the user, for example, \"jeff@contoso.onmicrosoft.com\". Read-Only. Supports $filter.\ninetorgperson MAY mail" + }, + "description": { + "type": "string", + "title": "A description, useful for resource accounts\nposixaccount MAY description" + }, + "password_profile": { + "$ref": "#/definitions/settingsPasswordProfile", + "title": "Specifies the password profile for the user.\nThe profile contains the user’s password. This property is required when a user is created.\nThe password in the profile must satisfy minimum requirements as specified by the passwordPolicies property.\nBy default, a strong password is required.\nposixaccount MAY authPassword" + }, + "memberOf": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsGroup" + }, + "title": "The groups, directory roles and administrative units that the user is a member of. Read-only. Nullable.\nshould we only respond with repeated strings of ids? no clients should a proper filter mask!" + }, + "created_date_time": { + "type": "string", + "format": "date-time", + "description": "The created date of the account object." + }, + "deleted_date_time": { + "type": "string", + "format": "date-time", + "description": "The date and time the user was deleted. Returned only on $select." + }, + "on_premises_sync_enabled": { + "type": "boolean", + "format": "boolean", + "title": "*true* if this object is synced from an on-premises directory;\n*false* if this object was originally synced from an on-premises directory but is no longer synced;\nnull if this object has never been synced from an on-premises directory (default). Read-only" + }, + "on_premises_immutable_id": { + "type": "string", + "description": "This property is used to associate an on-premises LDAP user to the ocis account object.\nThis property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property.\nImportant: The $ and _ characters cannot be used when specifying this property. Supports $filter." + }, + "on_premises_security_identifier": { + "type": "string", + "description": "Contains the on-premises security identifier (SID) for the user that was synchronized from on-premises to the cloud. Read-only." + }, + "on_premises_distinguished_name": { + "type": "string", + "description": "Contains the on-premises LDAP `distinguished name` or `DN`.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_sam_account_name": { + "type": "string", + "description": "Contains the on-premises `samAccountName` synchronized from the on-premises directory.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_domain_name": { + "type": "string", + "description": "Contains the on-premises `domainFQDN`, also called `dnsDomainName` synchronized from the on-premises directory\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_user_principal_name": { + "type": "string", + "description": "Contains the on-premises userPrincipalName synchronized from the on-premises directory.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_last_sync_date_time": { + "type": "string", + "format": "date-time", + "description": "Indicates the last time at which the object was synced with the on-premises directory; Read-only." + }, + "on_premises_provisioning_errors": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsOnPremisesProvisioningError" + }, + "description": "Errors when using synchronization during provisioning." + }, + "external_user_state": { + "type": "string", + "description": "For an external user invited to the tenant using the invitation API, this property represents the invited user's invitation status.\nFor invited users, the state can be `PendingAcceptance` or `Accepted`, or \"\" / emptystring for all other users.\nReturned only on $select. Supports $filter with the supported values. For example: $filter=externalUserState eq 'PendingAcceptance'." + }, + "external_user_state_change_date_time": { + "type": "string", + "format": "date-time", + "description": "Shows the timestamp for the latest change to the externalUserState property. Returned only on $select." + }, + "refresh_tokens_valid_from_date_time": { + "type": "string", + "format": "date-time", + "description": "Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get\nan error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph).\nIf this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint.\nReturned only on $select. Read-only. Use invalidateAllRefreshTokens to reset." + }, + "sign_in_sessions_valid_from_date_time": { + "type": "string", + "format": "date-time", + "description": "Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get\nan error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph).\nIf this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint.\nRead-only. Use revokeSignInSessions to reset." + } + }, + "title": "Account follows the properties of the ms graph api user resuorce.\nSee https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties" + }, + "settingsAddMemberRequest": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "The account id to add" + } + } + }, + "settingsGroup": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier for the group.\nReturned by default. Inherited from directoryObject. Key. Not nullable. Read-only." + }, + "display_name": { + "type": "string", + "title": "The display name for the group. This property is required when a group is created and cannot be cleared during updates.\nReturned by default. Supports $filter and $orderby.\ngroupofnames MUST cn" + }, + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsAccount" + }, + "title": "Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable.\nTODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later" + }, + "owners": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsAccount" + }, + "title": "groupofnames MAY businessCategory\ngroupofnames MAY o\ngroupofnames MAY ou\ngroupofnames MAY owner, SINGLE-VALUE but there might be multiple owners" + }, + "description": { + "type": "string", + "title": "An optional description for the group. Returned by default.\ngroupofnames MAY description" + }, + "gid_number": { + "type": "string", + "format": "int64", + "title": "used for exposing the user using ldap\nposixgroup MUST gidnumber" + }, + "created_date_time": { + "type": "string", + "format": "date-time", + "description": "Timestamp of when the group was created. The value cannot be modified and is automatically populated when the group is created\nReturned by default. Read-only." + }, + "deleted_date_time": { + "type": "string", + "format": "date-time", + "description": "For some Azure Active Directory objects (user, group, application), if the object is deleted, it is first logically deleted, and this property is updated with the date and time when the object was deleted. Otherwise this property is null. If the object is restored, this property is updated to null.\nReturned by default. Read-only." + }, + "expiration_date_time": { + "type": "string", + "format": "date-time", + "description": "Timestamp of when the group is set to expire. The value cannot be modified and is automatically populated when the group is created.\nReturned by default. Read-only." + }, + "hide_from_address_lists": { + "type": "boolean", + "format": "boolean", + "description": "True if the group is not displayed in certain parts of the Outlook user interface:\nin the Address Book, in address lists for selecting message recipients, and in the Browse Groups dialog for searching groups; false otherwise. Default value is false.\nReturned only on $select." + }, + "visibility": { + "type": "string", + "description": "Specifies the visibility of an Office 365 group. Possible values are: Private, Public, or Hiddenmembership; blank values are treated as public. See group visibility options to learn more.\nVisibility can be set only when a group is created; it is not editable.\nReturned by default." + }, + "on_premises_sync_enabled": { + "type": "boolean", + "format": "boolean", + "description": "*true* if this group is synced from an on-premises directory;\n*false* if this group was originally synced from an on-premises directory but is no longer synced;\nnull if this object has never been synced from an on-premises directory (default).\nReturned by default. Read-only. Supports $filter." + }, + "on_premises_immutable_id": { + "type": "string", + "description": "This property is used to associate an on-premises LDAP user to the ocis account object.\nThis property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property.\nImportant: The $ and _ characters cannot be used when specifying this property. Supports $filter." + }, + "on_premises_security_identifier": { + "type": "string", + "description": "Contains the on-premises security identifier (SID) for the group that was synchronized from on-premises to the cloud. Returned by default. Read-only." + }, + "on_premises_distinguished_name": { + "type": "string", + "description": "Contains the on-premises LDAP `distinguished name` or `DN`.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_sam_account_name": { + "type": "string", + "description": "Contains the on-premises `samAccountName` synchronized from the on-premises directory.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Returned by default. Read-only." + }, + "on_premises_domain_name": { + "type": "string", + "description": "Contains the on-premises domain FQDN, also called dnsDomainName synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect.\nReturned by default. Read-only." + }, + "on_premises_net_bios_name": { + "type": "string", + "description": "Contains the on-premises netBios name synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect.\nReturned by default. Read-only." + }, + "on_premises_last_sync_date_time": { + "type": "string", + "description": "Indicates the last time at which the group was synced with the on-premises directory.\nReturned by default. Read-only. Supports $filter." + }, + "on_premises_provisioning_errors": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsOnPremisesProvisioningError" + }, + "description": "Errors when using synchronization during provisioning." + } + } + }, + "settingsIdentities": { + "type": "object", + "properties": { + "sign_in_type": { + "type": "string", + "description": "Specifies the user sign-in types in your directory, such as `emailAddress`, `userName` or `federated`.\nHere, federated represents a unique identifier for a user from an issuer, that can be in any format chosen by the issuer.\nAdditional validation is enforced on *issuer_assigned_id* when the sign-in type is set to `emailAddress` or `userName`.\nThis property can also be set to any custom string." + }, + "issuer": { + "type": "string", + "description": "Specifies the issuer of the identity, for example facebook.com.\nFor local accounts (where signInType is not federated), this property is\nthe local B2C tenant default domain name, for example contoso.onmicrosoft.com.\nFor external users from other Azure AD organization, this will be the domain of\nthe federated organization, for example contoso.com.\nSupports $filter. 512 character limit." + }, + "issuer_assigned_id": { + "type": "string", + "description": "Specifies the unique identifier assigned to the user by the issuer. The combination of *issuer* and *issuerAssignedId* must be unique within the organization. Represents the sign-in name for the user, when signInType is set to emailAddress or userName (also known as local accounts).\nWhen *signInType* is set to:\n* `emailAddress`, (or starts with `emailAddress` like `emailAddress1`) *issuerAssignedId* must be a valid email address\n* `userName`, issuer_assigned_id must be a valid local part of an email address\nSupports $filter. 512 character limit." + } + }, + "description": "Identities Represents an identity used to sign in to a user account.\nAn identity can be provided by ocis, by organizations, or by social identity providers such as Facebook, Google, or Microsoft, that are tied to a user account.\nThis enables the user to sign in to the user account with any of those associated identities.\nThey are also used to keep a history of old usernames." + }, + "settingsListAccountsResponse": { + "type": "object", + "properties": { + "accounts": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsAccount" + }, + "title": "The field name should match the noun \"accounts\" in the method name. There\nwill be a maximum number of items returned based on the page_size field\nin the request" + }, + "next_page_token": { + "type": "string", + "title": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list" + } + } + }, + "settingsListGroupsResponse": { + "type": "object", + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsGroup" + }, + "title": "The field name should match the noun \"group\" in the method name. There\nwill be a maximum number of items returned based on the page_size field\nin the request" + }, + "next_page_token": { + "type": "string", + "title": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list" + } + } + }, + "settingsListMembersResponse": { + "type": "object", + "properties": { + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsAccount" + }, + "title": "The field name should match the noun \"members\" in the method name. There\nwill be a maximum number of items returned based on the page_size field\nin the request" + }, + "next_page_token": { + "type": "string", + "title": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list" + } + } + }, + "settingsOnPremisesProvisioningError": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Category of the provisioning error. Note: Currently, there is only one possible value. Possible value: PropertyConflict - indicates a property value is not unique. Other objects contain the same value for the property." + }, + "occurred_date_time": { + "type": "string", + "format": "date-time", + "description": "The date and time at which the error occurred." + }, + "property_causing_error": { + "type": "string", + "title": "Name of the directory property causing the error. Current possible values: UserPrincipalName or ProxyAddress" + }, + "value": { + "type": "string", + "description": "Value of the property causing the error." + } + } + }, + "settingsPasswordProfile": { + "type": "object", + "properties": { + "password": { + "type": "string", + "description": "The password for the user. This property is required when a user is created.\nIt can be updated, but the user will be required to change the password on the next login.\nThe password must satisfy minimum requirements as specified by the user’s passwordPolicies property. By default, a strong password is required." + }, + "last_password_change_date_time": { + "type": "string", + "format": "date-time", + "description": "The time when this account last changed their password." + }, + "password_policies": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Specifies password policies for the user.\nThis value is an enumeration with one possible value being “DisableStrongPassword”, which allows weaker passwords than the default policy to be specified.\n“DisablePasswordExpiration” can also be specified." + }, + "force_change_password_next_sign_in": { + "type": "boolean", + "format": "boolean", + "description": "*true* if the user must change her password on the next login; otherwise false." + }, + "force_change_password_next_sign_in_with_mfa": { + "type": "boolean", + "format": "boolean", + "description": "If *true*, at next sign-in, the user must perform a multi-factor authentication (MFA) before being forced to change their password. The behavior is identical to forceChangePasswordNextSignIn except that the user is required to first perform a multi-factor authentication before password change. After a password change, this property will be automatically reset to false. If not set, default is false." + } + } + } + } +} From 52c793b4a0c153795524ee37d09911c3a76f5dd5 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 30 Jun 2020 12:48:36 +0200 Subject: [PATCH 170/407] Add ocis-web extension boilerplate This only renders an empty page but already has a navItem for ocis-web integration. --- .eslintrc.json | 17 + babel.config.js | 25 + package.json | 62 + rollup.config.js | 52 + ui/app.js | 40 + ui/client/accounts/index.js | 766 ++++++ ui/components/App.vue | 13 + yarn.lock | 5092 +++++++++++++++++++++++++++++++++++ 8 files changed, 6067 insertions(+) create mode 100644 .eslintrc.json create mode 100644 babel.config.js create mode 100644 package.json create mode 100644 rollup.config.js create mode 100644 ui/app.js create mode 100644 ui/client/accounts/index.js create mode 100644 ui/components/App.vue create mode 100644 yarn.lock diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..5e35a3432c --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,17 @@ +{ + "env": { + "browser": true, + "es6": true, + "amd": true + }, + "extends": [ + "standard", + "plugin:vue/essential" + ], + "parserOptions": { + "sourceType": "module" + }, + "rules": { + + } +} diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000000..d1065d2ff8 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,25 @@ +module.exports = function (api) { + api.cache(true) + + const presets = [ + [ + '@babel/preset-env', + { + useBuiltIns: 'usage', + corejs: '3' + } + ] + ] + const plugins = [ + '@babel/plugin-syntax-dynamic-import', + '@babel/plugin-proposal-class-properties', + '@babel/plugin-proposal-object-rest-spread', + '@babel/plugin-transform-runtime', + '@babel/plugin-proposal-export-default-from' + ] + + return { + presets, + plugins + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000000..2eef6d7bef --- /dev/null +++ b/package.json @@ -0,0 +1,62 @@ +{ + "private": true, + "name": "ocis-accounts", + "version": "0.0.0", + "description": "", + "homepage": "https://github.com/owncloud/ocis-accounts#readme", + "license": "Apache-2.0", + "author": "ownCloud GmbH ", + "repository": "https://github.com/owncloud/ocis-accounts.git", + "bugs": { + "url": "https://github.com/owncloud/ocis-accounts/issues", + "email": "support@owncloud.com" + }, + "scripts": { + "lint": "eslint ui/**/*.vue ui/**/*.js --color --global requirejs --global require", + "build": "rollup -c", + "watch": "rollup -c -w", + "test": "echo 'Not implemented'", + "generate-api": "node node_modules/swagger-vue-generator/bin/generate-api.js --package-version v0 --source pkg/proto/v0/accounts.swagger.json --moduleName accounts --destination ui/client/accounts/index.js" + }, + "devDependencies": { + "@babel/core": "^7.7.7", + "@babel/plugin-proposal-class-properties": "^7.7.4", + "@babel/plugin-proposal-export-default-from": "^7.7.4", + "@babel/plugin-proposal-object-rest-spread": "^7.7.7", + "@babel/plugin-syntax-dynamic-import": "^7.7.4", + "@babel/plugin-transform-runtime": "^7.8.0", + "@babel/preset-env": "^7.7.7", + "@erquhart/rollup-plugin-node-builtins": "^2.1.5", + "@rollup/plugin-commonjs": "^11.0.1", + "@rollup/plugin-json": "^4.0.1", + "@rollup/plugin-replace": "^2.3.0", + "axios": "^0.19.0", + "core-js": "3", + "cross-env": "^6.0.3", + "debounce": "^1.2.0", + "easygettext": "^2.7.0", + "eslint": "6.8.0", + "eslint-config-standard": "^14.1.0", + "eslint-plugin-import": "^2.17.3", + "eslint-plugin-node": "11.0.0", + "eslint-plugin-promise": "^4.1.1", + "eslint-plugin-standard": "^4.0.0", + "eslint-plugin-vue": "^6.1.2", + "qs": "^6.9.1", + "rimraf": "^3.0.0", + "rollup": "^1.28.0", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-eslint": "^7.0.0", + "rollup-plugin-filesize": "^6.2.1", + "rollup-plugin-node-globals": "^1.4.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-terser": "^5.1.3", + "rollup-plugin-vue": "^5.1.4", + "swagger-vue-generator": "^1.0.6", + "vue-template-compiler": "^2.6.11" + }, + "browserslist": [ + "> 1%", + "not dead" + ] +} diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000000..2c58522d70 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,52 @@ +import vue from 'rollup-plugin-vue' +import { terser } from 'rollup-plugin-terser' +import replace from '@rollup/plugin-replace' +import filesize from 'rollup-plugin-filesize' +import resolve from 'rollup-plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' +import babel from 'rollup-plugin-babel' +import json from '@rollup/plugin-json' +import builtins from '@erquhart/rollup-plugin-node-builtins' +import globals from 'rollup-plugin-node-globals' + +const production = !process.env.ROLLUP_WATCH + +// We can't really do much about circular dependencies in node_modules +function onwarn (warning) { + if (warning.code !== 'CIRCULAR_DEPENDENCY') { + console.error(`(!) ${warning.message}`) + } +} + +export default { + input: 'ui/app.js', + output: { + file: 'assets/accounts.js', + format: 'amd', + sourcemap: !production + }, + onwarn, + plugins: [ + vue(), + replace({ + 'process.env.NODE_ENV': JSON.stringify('production') + }), + resolve({ + mainFields: ['browser', 'jsnext', 'module', 'main'], + include: 'node_modules/**', + preferBuiltins: true + }), + babel({ + exclude: 'node_modules/**', + runtimeHelpers: true + }), + commonjs({ + include: 'node_modules/**' + }), + json(), + globals(), + builtins(), + production && terser(), + production && filesize() + ] +} diff --git a/ui/app.js b/ui/app.js new file mode 100644 index 0000000000..ef0d9e8e07 --- /dev/null +++ b/ui/app.js @@ -0,0 +1,40 @@ +import 'regenerator-runtime/runtime' +import App from './components/App.vue' + +const appInfo = { + name: 'Accounts', + id: 'accounts', + icon: 'text-vcard', + isFileEditor: false, + extensions: [], + config: { + url: 'https://localhost:9200' + } +} + +const routes = [ + { + name: 'accounts', + path: '/', + components: { + app: App + } + } +] + +const navItems = [ + { + name: 'Accounts', + iconMaterial: appInfo.icon, + route: { + name: 'accounts', + path: `/${appInfo.id}/` + } + } +] + +export default { + appInfo, + routes, + navItems +} diff --git a/ui/client/accounts/index.js b/ui/client/accounts/index.js new file mode 100644 index 0000000000..5a412be582 --- /dev/null +++ b/ui/client/accounts/index.js @@ -0,0 +1,766 @@ +/* eslint-disable */ +import axios from 'axios' +import qs from 'qs' +let domain = '' +export const getDomain = () => { + return domain +} +export const setDomain = ($domain) => { + domain = $domain +} +export const request = (method, url, body, queryParameters, form, config) => { + method = method.toLowerCase() + let keys = Object.keys(queryParameters) + let queryUrl = url + if (keys.length > 0) { + queryUrl = url + '?' + qs.stringify(queryParameters) + } + // let queryUrl = url+(keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') + if (body) { + return axios[method](queryUrl, body, config) + } else if (method === 'get') { + return axios[method](queryUrl, config) + } else { + return axios[method](queryUrl, qs.stringify(form), config) + } +} +/*========================================================== + * + ==========================================================*/ +/** +* Lists accounts +* request: AccountsService_ListAccounts +* url: AccountsService_ListAccountsURL +* method: AccountsService_ListAccounts_TYPE +* raw_url: AccountsService_ListAccounts_RAW_URL + * @param pageSize - Optional. The maximum number of accounts to return in the response. + * @param pageToken - Optional. A pagination token returned from a previous call to `Get` +that indicates from where search should continue. + * @param fieldMaskPaths - The set of field mask paths. + * @param query - Optional. Search criteria used to select the accounts to return. +If no search criteria is specified then all accounts will be +returned. TODO update query language +Query expressions can be used to restrict results based upon +the account properties where the operators `=`, `NOT`, `AND` and `OR` +can be used along with the suffix wildcard symbol `*`. + +The string properties in a query expression should use escaped quotes +for values that include whitespace to prevent unexpected behavior. + +Some example queries are: + +* Query `display_name=Th*` returns accounts whose display_name +starts with "Th" +* Query `email=foo@example.com` returns accounts with +`email` set to `foo@example.com` +* Query `display_name=\\"Test String\\"` returns accounts with +display names that include both "Test" and "String" +*/ +export const AccountsService_ListAccounts = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/accounts' + let body + let queryParameters = {} + let form = {} + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('get', domain + path, body, queryParameters, form, config) +} +export const AccountsService_ListAccounts_RAW_URL = function() { + return '/v0/accounts' +} +export const AccountsService_ListAccounts_TYPE = function() { + return 'get' +} +export const AccountsService_ListAccountsURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/accounts' + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Creates an account + * request: AccountsService_CreateAccount + * url: AccountsService_CreateAccountURL + * method: AccountsService_CreateAccount_TYPE + * raw_url: AccountsService_CreateAccount_RAW_URL + * @param body - The account resource to create + */ +export const AccountsService_CreateAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/accounts' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const AccountsService_CreateAccount_RAW_URL = function() { + return '/v0/accounts' +} +export const AccountsService_CreateAccount_TYPE = function() { + return 'post' +} +export const AccountsService_CreateAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/accounts' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Updates an account + * request: AccountsService_UpdateAccount + * url: AccountsService_UpdateAccountURL + * method: AccountsService_UpdateAccount_TYPE + * raw_url: AccountsService_UpdateAccount_RAW_URL + * @param accountId - The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. + * @param body - The account resource which replaces the resource on the server + */ +export const AccountsService_UpdateAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/accounts/{account.id}' + let body + let queryParameters = {} + let form = {} + path = path.replace('{account.id}', `${parameters['accountId']}`) + if (parameters['accountId'] === undefined) { + return Promise.reject(new Error('Missing required parameter: accountId')) + } + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('patch', domain + path, body, queryParameters, form, config) +} +export const AccountsService_UpdateAccount_RAW_URL = function() { + return '/v0/accounts/{account.id}' +} +export const AccountsService_UpdateAccount_TYPE = function() { + return 'patch' +} +export const AccountsService_UpdateAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/accounts/{account.id}' + path = path.replace('{account.id}', `${parameters['accountId']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Gets an account + * request: AccountsService_GetAccount + * url: AccountsService_GetAccountURL + * method: AccountsService_GetAccount_TYPE + * raw_url: AccountsService_GetAccount_RAW_URL + * @param id - + */ +export const AccountsService_GetAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/accounts/{id}' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('get', domain + path, body, queryParameters, form, config) +} +export const AccountsService_GetAccount_RAW_URL = function() { + return '/v0/accounts/{id}' +} +export const AccountsService_GetAccount_TYPE = function() { + return 'get' +} +export const AccountsService_GetAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/accounts/{id}' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Deletes an account + * request: AccountsService_DeleteAccount + * url: AccountsService_DeleteAccountURL + * method: AccountsService_DeleteAccount_TYPE + * raw_url: AccountsService_DeleteAccount_RAW_URL + * @param id - + */ +export const AccountsService_DeleteAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/accounts/{id}' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('delete', domain + path, body, queryParameters, form, config) +} +export const AccountsService_DeleteAccount_RAW_URL = function() { + return '/v0/accounts/{id}' +} +export const AccountsService_DeleteAccount_TYPE = function() { + return 'delete' +} +export const AccountsService_DeleteAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/accounts/{id}' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** +* Lists groups +* request: GroupsService_ListGroups +* url: GroupsService_ListGroupsURL +* method: GroupsService_ListGroups_TYPE +* raw_url: GroupsService_ListGroups_RAW_URL + * @param pageSize - Optional. The maximum number of groups to return in the response. + * @param pageToken - Optional. A pagination token returned from a previous call to `Get` +that indicates from where search should continue. + * @param fieldMaskPaths - The set of field mask paths. + * @param query - Optional. Search criteria used to select the groups to return. +If no search criteria is specified then all groups will be +returned. TODO update query language +Query expressions can be used to restrict results based upon +the account properties where the operators `=`, `NOT`, `AND` and `OR` +can be used along with the suffix wildcard symbol `*`. + +The string properties in a query expression should use escaped quotes +for values that include whitespace to prevent unexpected behavior. + +Some example queries are: + +* Query `display_name=Th*` returns accounts whose display_name +starts with "Th" +* Query `display_name=\\"Test String\\"` returns groups with +display names that include both "Test" and "String" +*/ +export const GroupsService_ListGroups = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups' + let body + let queryParameters = {} + let form = {} + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('get', domain + path, body, queryParameters, form, config) +} +export const GroupsService_ListGroups_RAW_URL = function() { + return '/v0/groups' +} +export const GroupsService_ListGroups_TYPE = function() { + return 'get' +} +export const GroupsService_ListGroupsURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups' + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Creates a group + * request: GroupsService_CreateGroup + * url: GroupsService_CreateGroupURL + * method: GroupsService_CreateGroup_TYPE + * raw_url: GroupsService_CreateGroup_RAW_URL + * @param body - The account resource to create + */ +export const GroupsService_CreateGroup = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const GroupsService_CreateGroup_RAW_URL = function() { + return '/v0/groups' +} +export const GroupsService_CreateGroup_TYPE = function() { + return 'post' +} +export const GroupsService_CreateGroupURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** +* Updates a group +* request: GroupsService_UpdateGroup +* url: GroupsService_UpdateGroupURL +* method: GroupsService_UpdateGroup_TYPE +* raw_url: GroupsService_UpdateGroup_RAW_URL + * @param groupId - The unique identifier for the group. +Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. + * @param body - The group resource which replaces the resource on the server +*/ +export const GroupsService_UpdateGroup = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{group.id}' + let body + let queryParameters = {} + let form = {} + path = path.replace('{group.id}', `${parameters['groupId']}`) + if (parameters['groupId'] === undefined) { + return Promise.reject(new Error('Missing required parameter: groupId')) + } + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('patch', domain + path, body, queryParameters, form, config) +} +export const GroupsService_UpdateGroup_RAW_URL = function() { + return '/v0/groups/{group.id}' +} +export const GroupsService_UpdateGroup_TYPE = function() { + return 'patch' +} +export const GroupsService_UpdateGroupURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{group.id}' + path = path.replace('{group.id}', `${parameters['groupId']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Gets an groups + * request: GroupsService_GetGroup + * url: GroupsService_GetGroupURL + * method: GroupsService_GetGroup_TYPE + * raw_url: GroupsService_GetGroup_RAW_URL + * @param id - + */ +export const GroupsService_GetGroup = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('get', domain + path, body, queryParameters, form, config) +} +export const GroupsService_GetGroup_RAW_URL = function() { + return '/v0/groups/{id}' +} +export const GroupsService_GetGroup_TYPE = function() { + return 'get' +} +export const GroupsService_GetGroupURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Deletes a group + * request: GroupsService_DeleteGroup + * url: GroupsService_DeleteGroupURL + * method: GroupsService_DeleteGroup_TYPE + * raw_url: GroupsService_DeleteGroup_RAW_URL + * @param id - + */ +export const GroupsService_DeleteGroup = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('delete', domain + path, body, queryParameters, form, config) +} +export const GroupsService_DeleteGroup_RAW_URL = function() { + return '/v0/groups/{id}' +} +export const GroupsService_DeleteGroup_TYPE = function() { + return 'delete' +} +export const GroupsService_DeleteGroupURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** +* group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 +* request: GroupsService_ListMembers +* url: GroupsService_ListMembersURL +* method: GroupsService_ListMembers_TYPE +* raw_url: GroupsService_ListMembers_RAW_URL + * @param id - The group id + * @param pageSize - + * @param pageToken - Optional. A pagination token returned from a previous call to `Get` +that indicates from where search should continue. + * @param fieldMaskPaths - The set of field mask paths. + * @param query - Optional. Search criteria used to select the groups to return. +If no search criteria is specified then all groups will be +returned. TODO update query language +Query expressions can be used to restrict results based upon +the account properties where the operators `=`, `NOT`, `AND` and `OR` +can be used along with the suffix wildcard symbol `*`. + +The string properties in a query expression should use escaped quotes +for values that include whitespace to prevent unexpected behavior. + +Some example queries are: + +* Query `display_name=Th*` returns accounts whose display_name +starts with "Th" +* Query `display_name=\\"Test String\\"` returns groups with +display names that include both "Test" and "String" +*/ +export const GroupsService_ListMembers = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}/members/$ref' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('get', domain + path, body, queryParameters, form, config) +} +export const GroupsService_ListMembers_RAW_URL = function() { + return '/v0/groups/{id}/members/$ref' +} +export const GroupsService_ListMembers_TYPE = function() { + return 'get' +} +export const GroupsService_ListMembersURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}/members/$ref' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * group:addmember https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0&tabs=http + * request: GroupsService_AddMember + * url: GroupsService_AddMemberURL + * method: GroupsService_AddMember_TYPE + * raw_url: GroupsService_AddMember_RAW_URL + * @param id - The account id to add + * @param body - + */ +export const GroupsService_AddMember = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}/members/$ref' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const GroupsService_AddMember_RAW_URL = function() { + return '/v0/groups/{id}/members/$ref' +} +export const GroupsService_AddMember_TYPE = function() { + return 'post' +} +export const GroupsService_AddMemberURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}/members/$ref' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * group:removemember https://docs.microsoft.com/en-us/graph/api/group-delete-members?view=graph-rest-1.0 + * request: GroupsService_RemoveMember + * url: GroupsService_RemoveMemberURL + * method: GroupsService_RemoveMember_TYPE + * raw_url: GroupsService_RemoveMember_RAW_URL + * @param id - The group id + * @param accountId - The account id to remove + */ +export const GroupsService_RemoveMember = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}/members/{account_id}/$ref' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + path = path.replace('{account_id}', `${parameters['accountId']}`) + if (parameters['accountId'] === undefined) { + return Promise.reject(new Error('Missing required parameter: accountId')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('delete', domain + path, body, queryParameters, form, config) +} +export const GroupsService_RemoveMember_RAW_URL = function() { + return '/v0/groups/{id}/members/{account_id}/$ref' +} +export const GroupsService_RemoveMember_TYPE = function() { + return 'delete' +} +export const GroupsService_RemoveMemberURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}/members/{account_id}/$ref' + path = path.replace('{id}', `${parameters['id']}`) + path = path.replace('{account_id}', `${parameters['accountId']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} \ No newline at end of file diff --git a/ui/components/App.vue b/ui/components/App.vue new file mode 100644 index 0000000000..bd2a699917 --- /dev/null +++ b/ui/components/App.vue @@ -0,0 +1,13 @@ + + + diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..e0feeef90b --- /dev/null +++ b/yarn.lock @@ -0,0 +1,5092 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.3", "@babel/code-frame@^7.5.5": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.3.tgz#324bcfd8d35cd3d47dae18cde63d752086435e9a" + integrity sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg== + dependencies: + "@babel/highlight" "^7.10.3" + +"@babel/compat-data@^7.10.1", "@babel/compat-data@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.3.tgz#9af3e033f36e8e2d6e47570db91e64a846f5d382" + integrity sha512-BDIfJ9uNZuI0LajPfoYV28lX8kyCPMHY6uY4WH1lJdcicmAfxCK5ASzaeV0D/wsUaRH/cLk+amuxtC37sZ8TUg== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@^7.7.7": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.3.tgz#73b0e8ddeec1e3fdd7a2de587a60e17c440ec77e" + integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helpers" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/template" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.3.tgz#32b9a0d963a71d7a54f5f6c15659c3dbc2a523a5" + integrity sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA== + dependencies: + "@babel/types" "^7.10.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" + integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== + dependencies: + "@babel/types" "^7.10.1" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.1": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.3.tgz#4e9012d6701bef0030348d7f9c808209bd3e8687" + integrity sha512-lo4XXRnBlU6eRM92FkiZxpo1xFLmv3VsPFk61zJKMm7XYJfwqXHsYJTY6agoc4a3L8QPw1HqWehO18coZgbT6A== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-compilation-targets@^7.10.2": + version "7.10.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285" + integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA== + dependencies: + "@babel/compat-data" "^7.10.1" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.1": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.3.tgz#2783daa6866822e3d5ed119163b50f0fc3ae4b35" + integrity sha512-iRT9VwqtdFmv7UheJWthGc/h2s7MqoweBF9RUj77NFZsg9VfISvBTum3k6coAhJ8RWv2tj3yUjA03HxPd0vfpQ== + dependencies: + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-member-expression-to-functions" "^7.10.3" + "@babel/helper-optimise-call-expression" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + +"@babel/helper-create-regexp-features-plugin@^7.10.1", "@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz#1b8feeab1594cbcfbf3ab5a3bbcabac0468efdbd" + integrity sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-regex" "^7.10.1" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.3.tgz#d27120a5e57c84727b30944549b2dfeca62401a8" + integrity sha512-bxRzDi4Sin/k0drWCczppOhov1sBSdBvXJObM1NLHQzjhXhwRtn7aRWGvLJWCYbuu2qUk3EKs6Ci9C9ps8XokQ== + dependencies: + "@babel/helper-function-name" "^7.10.3" + "@babel/types" "^7.10.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.3.tgz#9dc14f0cfa2833ea830a9c8a1c742b6e7461b05e" + integrity sha512-0nKcR64XrOC3lsl+uhD15cwxPvaB6QKUDlD84OT9C3myRbhJqTMYir69/RWItUvHpharv0eJ/wk7fl34ONSwZw== + dependencies: + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-function-name@^7.10.1", "@babel/helper-function-name@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz#79316cd75a9fa25ba9787ff54544307ed444f197" + integrity sha512-FvSj2aiOd8zbeqijjgqdMDSyxsGHaMt5Tr0XjQsGKHD3/1FP3wksjnLAWzxw7lvXiej8W1Jt47SKTZ6upQNiRw== + dependencies: + "@babel/helper-get-function-arity" "^7.10.3" + "@babel/template" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-get-function-arity@^7.10.1", "@babel/helper-get-function-arity@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz#3a28f7b28ccc7719eacd9223b659fdf162e4c45e" + integrity sha512-iUD/gFsR+M6uiy69JA6fzM5seno8oE85IYZdbVVEuQaZlEzMO2MXblh+KSPJgsZAUx0EEbWXU0yJaW7C9CdAVg== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-hoist-variables@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.3.tgz#d554f52baf1657ffbd7e5137311abc993bb3f068" + integrity sha512-9JyafKoBt5h20Yv1+BXQMdcXXavozI1vt401KBiRc2qzUepbVnd7ogVNymY1xkQN9fekGwfxtotH2Yf5xsGzgg== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-member-expression-to-functions@^7.10.1", "@babel/helper-member-expression-to-functions@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz#bc3663ac81ac57c39148fef4c69bf48a77ba8dd6" + integrity sha512-q7+37c4EPLSjNb2NmWOjNwj0+BOyYlssuQ58kHEWk1Z78K5i8vTUsteq78HMieRPQSl/NtpQyJfdjt3qZ5V2vw== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.1", "@babel/helper-module-imports@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz#766fa1d57608e53e5676f23ae498ec7a95e1b11a" + integrity sha512-Jtqw5M9pahLSUWA+76nhK9OG8nwYXzhQzVIGFoNaHnXF/r4l7kz4Fl0UAW7B6mqC5myoJiBP5/YQlXQTMfHI9w== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-module-transforms@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" + integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== + dependencies: + "@babel/helper-module-imports" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.10.1", "@babel/helper-optimise-call-expression@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz#f53c4b6783093195b0f69330439908841660c530" + integrity sha512-kT2R3VBH/cnSz+yChKpaKRJQJWxdGoc6SjioRId2wkeV3bK0wLLioFpJROrX0U4xr/NmxSSAWT/9Ih5snwIIzg== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.1", "@babel/helper-plugin-utils@^7.10.3", "@babel/helper-plugin-utils@^7.8.0": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz#aac45cccf8bc1873b99a85f34bceef3beb5d3244" + integrity sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g== + +"@babel/helper-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.1.tgz#021cf1a7ba99822f993222a001cc3fec83255b96" + integrity sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.10.1", "@babel/helper-remap-async-to-generator@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.3.tgz#18564f8a6748be466970195b876e8bba3bccf442" + integrity sha512-sLB7666ARbJUGDO60ZormmhQOyqMX/shKBXZ7fy937s+3ID8gSrneMvKSSb+8xIM5V7Vn6uNVtOY1vIm26XLtA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-wrap-function" "^7.10.1" + "@babel/template" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-replace-supers@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" + integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.1" + "@babel/helper-optimise-call-expression" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/helper-simple-access@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" + integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== + dependencies: + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/helper-split-export-declaration@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" + integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== + dependencies: + "@babel/types" "^7.10.1" + +"@babel/helper-validator-identifier@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz#60d9847f98c4cea1b279e005fdb7c28be5412d15" + integrity sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw== + +"@babel/helper-wrap-function@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz#956d1310d6696257a7afd47e4c42dfda5dfcedc9" + integrity sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/helpers@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" + integrity sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw== + dependencies: + "@babel/template" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/highlight@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.3.tgz#c633bb34adf07c5c13156692f5922c81ec53f28d" + integrity sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw== + dependencies: + "@babel/helper-validator-identifier" "^7.10.3" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.3.tgz#7e71d892b0d6e7d04a1af4c3c79d72c1f10f5315" + integrity sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA== + +"@babel/plugin-proposal-async-generator-functions@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.3.tgz#5a02453d46e5362e2073c7278beab2e53ad7d939" + integrity sha512-WUUWM7YTOudF4jZBAJIW9D7aViYC/Fn0Pln4RIHlQALyno3sXSjqmTA4Zy1TKC2D49RCR8Y/Pn4OIUtEypK3CA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-remap-async-to-generator" "^7.10.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.10.1", "@babel/plugin-proposal-class-properties@^7.7.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz#046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01" + integrity sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-proposal-dynamic-import@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz#e36979dc1dc3b73f6d6816fc4951da2363488ef0" + integrity sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-default-from@^7.7.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.1.tgz#59ea2a4f09dbb0358c73dab27def3d21a27bd370" + integrity sha512-Xfc1CfHapIkwZ/+AI+j4Ha3g233ol0EEdy6SmnUuQQiZX78SfQXHd8tmntc5zqCkwPnIHoiZa6l6p0OAvxYXHw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-export-default-from" "^7.10.1" + +"@babel/plugin-proposal-json-strings@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz#b1e691ee24c651b5a5e32213222b2379734aff09" + integrity sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz#02dca21673842ff2fe763ac253777f235e9bbf78" + integrity sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz#a9a38bc34f78bdfd981e791c27c6fdcec478c123" + integrity sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-numeric-separator" "^7.10.1" + +"@babel/plugin-proposal-object-rest-spread@^7.10.3", "@babel/plugin-proposal-object-rest-spread@^7.7.7": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.3.tgz#b8d0d22f70afa34ad84b7a200ff772f9b9fce474" + integrity sha512-ZZh5leCIlH9lni5bU/wB/UcjtcVLgR8gc+FAgW2OOY+m9h1II3ItTO1/cewNUcsIDZSYcSaz/rYVls+Fb0ExVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.1" + +"@babel/plugin-proposal-optional-catch-binding@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz#c9f86d99305f9fa531b568ff5ab8c964b8b223d2" + integrity sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.3.tgz#9a726f94622b653c0a3a7a59cdce94730f526f7c" + integrity sha512-yyG3n9dJ1vZ6v5sfmIlMMZ8azQoqx/5/nZTSWX1td6L1H1bsjzA8TInDChpafCZiJkeOFzp/PtrfigAQXxI1Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz#ed85e8058ab0fe309c3f448e5e1b73ca89cdb598" + integrity sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz#dc04feb25e2dd70c12b05d680190e138fa2c0c6f" + integrity sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5" + integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-dynamic-import@^7.7.4", "@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.1.tgz#634f58f36b5d6320d80f75441fdc61e1c05c33b0" + integrity sha512-+rcL4S/mN1Ss4zhSCbxzv1Wsf12eauvgTjWi0krXEeX1zd6qSxYnJoniE5Ssr5w2WPt61oUCJyXIFQIqO/29zw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz#25761ee7410bc8cf97327ba741ee94e4a61b7d99" + integrity sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz#8b8733f8c57397b3eaa47ddba8841586dcaef362" + integrity sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-arrow-functions@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz#cb5ee3a36f0863c06ead0b409b4cc43a889b295b" + integrity sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-async-to-generator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz#e5153eb1a3e028f79194ed8a7a4bf55f862b2062" + integrity sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg== + dependencies: + "@babel/helper-module-imports" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-remap-async-to-generator" "^7.10.1" + +"@babel/plugin-transform-block-scoped-functions@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz#146856e756d54b20fff14b819456b3e01820b85d" + integrity sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-block-scoping@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz#47092d89ca345811451cd0dc5d91605982705d5e" + integrity sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.3.tgz#8d9a656bc3d01f3ff69e1fccb354b0f9d72ac544" + integrity sha512-irEX0ChJLaZVC7FvvRoSIxJlmk0IczFLcwaRXUArBKYHCHbOhe57aG8q3uw/fJsoSXvZhjRX960hyeAGlVBXZw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-define-map" "^7.10.3" + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-optimise-call-expression" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.3.tgz#d3aa6eef67cb967150f76faff20f0abbf553757b" + integrity sha512-GWzhaBOsdbjVFav96drOz7FzrcEW6AP5nax0gLIpstiFaI3LOb2tAg06TimaWU6YKOfUACK3FVrxPJ4GSc5TgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + +"@babel/plugin-transform-destructuring@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz#abd58e51337815ca3a22a336b85f62b998e71907" + integrity sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-dotall-regex@^7.10.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz#920b9fec2d78bb57ebb64a644d5c2ba67cc104ee" + integrity sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-duplicate-keys@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz#c900a793beb096bc9d4d0a9d0cde19518ffc83b9" + integrity sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-exponentiation-operator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz#279c3116756a60dd6e6f5e488ba7957db9c59eb3" + integrity sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-for-of@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz#ff01119784eb0ee32258e8646157ba2501fcfda5" + integrity sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-function-name@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz#4ed46fd6e1d8fde2a2ec7b03c66d853d2c92427d" + integrity sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz#5794f8da82846b22e4e6631ea1658bce708eb46a" + integrity sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-member-expression-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz#90347cba31bca6f394b3f7bd95d2bbfd9fce2f39" + integrity sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-modules-amd@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz#65950e8e05797ebd2fe532b96e19fc5482a1d52a" + integrity sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz#d5ff4b4413ed97ffded99961056e1fb980fb9301" + integrity sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.3.tgz#004ae727b122b7b146b150d50cba5ffbff4ac56b" + integrity sha512-GWXWQMmE1GH4ALc7YXW56BTh/AlzvDWhUNn9ArFF0+Cz5G8esYlVbXfdyHa1xaD1j+GnBoCeoQNlwtZTVdiG/A== + dependencies: + "@babel/helper-hoist-variables" "^7.10.3" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz#ea080911ffc6eb21840a5197a39ede4ee67b1595" + integrity sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.3.tgz#a4f8444d1c5a46f35834a410285f2c901c007ca6" + integrity sha512-I3EH+RMFyVi8Iy/LekQm948Z4Lz4yKT7rK+vuCAeRm0kTa6Z5W7xuhRxDNJv0FPya/her6AUgrDITb70YHtTvA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz#6ee41a5e648da7632e22b6fb54012e87f612f324" + integrity sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-object-super@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz#2e3016b0adbf262983bf0d5121d676a5ed9c4fde" + integrity sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + +"@babel/plugin-transform-parameters@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz#b25938a3c5fae0354144a720b07b32766f683ddd" + integrity sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg== + dependencies: + "@babel/helper-get-function-arity" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-property-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz#cffc7315219230ed81dc53e4625bf86815b6050d" + integrity sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-regenerator@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.3.tgz#6ec680f140a5ceefd291c221cb7131f6d7e8cb6d" + integrity sha512-H5kNeW0u8mbk0qa1jVIVTeJJL6/TJ81ltD4oyPx0P499DhMJrTmmIFCmJ3QloGpQG8K9symccB7S7SJpCKLwtw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz#0fc1027312b4d1c3276a57890c8ae3bcc0b64a86" + integrity sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-runtime@^7.8.0": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.3.tgz#3b287b06acc534a7cb6e6c71d6b1d88b1922dd6c" + integrity sha512-b5OzMD1Hi8BBzgQdRHyVVaYrk9zG0wset1it2o3BgonkPadXfOv0aXRqd7864DeOIu3FGKP/h6lr15FE5mahVw== + dependencies: + "@babel/helper-module-imports" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz#e8b54f238a1ccbae482c4dce946180ae7b3143f3" + integrity sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-spread@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz#0c6d618a0c4461a274418460a28c9ccf5239a7c8" + integrity sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-sticky-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz#90fc89b7526228bed9842cff3588270a7a393b00" + integrity sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-regex" "^7.10.1" + +"@babel/plugin-transform-template-literals@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.3.tgz#69d39b3d44b31e7b4864173322565894ce939b25" + integrity sha512-yaBn9OpxQra/bk0/CaA4wr41O0/Whkg6nqjqApcinxM7pro51ojhX6fv1pimAnVjVfDy14K0ULoRL70CA9jWWA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.3" + +"@babel/plugin-transform-typeof-symbol@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz#60c0239b69965d166b80a84de7315c1bc7e0bb0e" + integrity sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-unicode-escapes@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz#add0f8483dab60570d9e03cecef6c023aa8c9940" + integrity sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-unicode-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz#6b58f2aea7b68df37ac5025d9c88752443a6b43f" + integrity sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/preset-env@^7.7.7": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.3.tgz#3e58c9861bbd93b6a679987c7e4bd365c56c80c9" + integrity sha512-jHaSUgiewTmly88bJtMHbOd1bJf2ocYxb5BWKSDQIP5tmgFuS/n0gl+nhSrYDhT33m0vPxp+rP8oYYgPgMNQlg== + dependencies: + "@babel/compat-data" "^7.10.3" + "@babel/helper-compilation-targets" "^7.10.2" + "@babel/helper-module-imports" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-proposal-async-generator-functions" "^7.10.3" + "@babel/plugin-proposal-class-properties" "^7.10.1" + "@babel/plugin-proposal-dynamic-import" "^7.10.1" + "@babel/plugin-proposal-json-strings" "^7.10.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" + "@babel/plugin-proposal-numeric-separator" "^7.10.1" + "@babel/plugin-proposal-object-rest-spread" "^7.10.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.1" + "@babel/plugin-proposal-optional-chaining" "^7.10.3" + "@babel/plugin-proposal-private-methods" "^7.10.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.1" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.1" + "@babel/plugin-transform-arrow-functions" "^7.10.1" + "@babel/plugin-transform-async-to-generator" "^7.10.1" + "@babel/plugin-transform-block-scoped-functions" "^7.10.1" + "@babel/plugin-transform-block-scoping" "^7.10.1" + "@babel/plugin-transform-classes" "^7.10.3" + "@babel/plugin-transform-computed-properties" "^7.10.3" + "@babel/plugin-transform-destructuring" "^7.10.1" + "@babel/plugin-transform-dotall-regex" "^7.10.1" + "@babel/plugin-transform-duplicate-keys" "^7.10.1" + "@babel/plugin-transform-exponentiation-operator" "^7.10.1" + "@babel/plugin-transform-for-of" "^7.10.1" + "@babel/plugin-transform-function-name" "^7.10.1" + "@babel/plugin-transform-literals" "^7.10.1" + "@babel/plugin-transform-member-expression-literals" "^7.10.1" + "@babel/plugin-transform-modules-amd" "^7.10.1" + "@babel/plugin-transform-modules-commonjs" "^7.10.1" + "@babel/plugin-transform-modules-systemjs" "^7.10.3" + "@babel/plugin-transform-modules-umd" "^7.10.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.3" + "@babel/plugin-transform-new-target" "^7.10.1" + "@babel/plugin-transform-object-super" "^7.10.1" + "@babel/plugin-transform-parameters" "^7.10.1" + "@babel/plugin-transform-property-literals" "^7.10.1" + "@babel/plugin-transform-regenerator" "^7.10.3" + "@babel/plugin-transform-reserved-words" "^7.10.1" + "@babel/plugin-transform-shorthand-properties" "^7.10.1" + "@babel/plugin-transform-spread" "^7.10.1" + "@babel/plugin-transform-sticky-regex" "^7.10.1" + "@babel/plugin-transform-template-literals" "^7.10.3" + "@babel/plugin-transform-typeof-symbol" "^7.10.1" + "@babel/plugin-transform-unicode-escapes" "^7.10.1" + "@babel/plugin-transform-unicode-regex" "^7.10.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.3" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@^7.8.4": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364" + integrity sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.1", "@babel/template@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.3.tgz#4d13bc8e30bf95b0ce9d175d30306f42a2c9a7b8" + integrity sha512-5BjI4gdtD+9fHZUsaxPHPNpwa+xRkDO7c7JbhYn2afvrkDu5SfAAbi9AIMXw2xEhO/BR35TqiW97IqNvCo/GqA== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/parser" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/traverse@^7.10.1", "@babel/traverse@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.3.tgz#0b01731794aa7b77b214bcd96661f18281155d7e" + integrity sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/types" "^7.10.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.10.1", "@babel/types@^7.10.3", "@babel/types@^7.4.4": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.3.tgz#6535e3b79fea86a6b09e012ea8528f935099de8e" + integrity sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.3" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@erquhart/browserify-fs@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@erquhart/browserify-fs/-/browserify-fs-1.0.2.tgz#abefe016a665a2a2efa6bd52bdb549e3fc15453d" + integrity sha512-RR0NQwOPDedo1jh4xnsAsAty2MPRKgySR120il8+zubig1Sw/z8k3O65A4ZC4fvk2nLsFs2w+WjGf5cEYN9VYw== + dependencies: + level-filesystem "^1.2.0" + level-js "^4.0.0" + levelup "^4.0.0" + +"@erquhart/rollup-plugin-node-builtins@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@erquhart/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.5.tgz#316c1a600c31d0748b647d62fb2c5535221898ff" + integrity sha512-WoI3h31fxdGW1kaw2i+6rkUE2huKIpkgVnRDHO5QD8qAXD0Z22NdU42nd5SYfEnCLl8e54ROLMdpnMVTDdgQIw== + dependencies: + "@erquhart/browserify-fs" "^1.0.2" + buffer-es6 "^4.9.2" + crypto-browserify "^3.11.0" + process-es6 "^0.11.2" + +"@rollup/plugin-commonjs@^11.0.1": + version "11.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef" + integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA== + dependencies: + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" + estree-walker "^1.0.1" + glob "^7.1.2" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-json@^4.0.1": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-replace@^2.3.0": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz#cd6bae39444de119f5d905322b91ebd4078562e7" + integrity sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ== + dependencies: + "@rollup/pluginutils" "^3.0.8" + magic-string "^0.25.5" + +"@rollup/pluginutils@^3.0.8": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@types/babel-types@*", "@types/babel-types@^7.0.0": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz#667eb1640e8039436028055737d2b9986ee336e3" + integrity sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ== + +"@types/babylon@^6.16.2": + version "6.16.5" + resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz#1c5641db69eb8cdf378edd25b4be7754beeb48b4" + integrity sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w== + dependencies: + "@types/babel-types" "*" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/estree@*": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/node@*": + version "14.0.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce" + integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ== + +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@vue/component-compiler-utils@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz#aa46d2a6f7647440b0b8932434d22f12371e543b" + integrity sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw== + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.14" + postcss-selector-parser "^5.0.0" + prettier "1.16.3" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + +"@vue/component-compiler-utils@^3.0.0", "@vue/component-compiler-utils@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.1.2.tgz#8213a5ff3202f9f2137fe55370f9e8b9656081c3" + integrity sha512-QLq9z8m79mCinpaEeSURhnNCN6djxpHw0lpP/bodMlt5kALfONpryMthvnrQOlTcIKoF+VoPi+lPHUYeDFPXug== + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.14" + postcss-selector-parser "^6.0.2" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + optionalDependencies: + prettier "^1.18.2" + +"@vue/component-compiler@^4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@vue/component-compiler/-/component-compiler-4.2.3.tgz#052855aea0f9a00eb0eb9786bdf447d29292ae37" + integrity sha512-B221AV3T/6PF37WnkoqUKIxBeHXmGuZsi/8pby89MAVSj9zmDdLCEZ7LDT8+DJWbElFrPELgnSvEadXxDRcrJQ== + dependencies: + "@vue/component-compiler-utils" "^3.0.0" + clean-css "^4.1.11" + hash-sum "^1.0.2" + postcss-modules-sync "^1.0.0" + source-map "0.6.*" + optionalDependencies: + less "^3.9.0" + pug "^2.0.3" + sass "^1.18.0" + stylus "^0.54.5" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abstract-leveldown@~6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz#b4b6159343c74b0c5197b2817854782d8f748c4a" + integrity sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q== + dependencies: + level-concat-iterator "~2.0.0" + xtend "~4.0.0" + +abstract-leveldown@~6.2.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" + integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== + dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +acorn-bigint@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/acorn-bigint/-/acorn-bigint-0.4.0.tgz#af3245ed8a7c3747387fca4680ae1960f617c4cd" + integrity sha512-W9iaqWzqFo7ZBLmI9dMjHYGrN0Nm/ZgToqhvd3RELJux7RsX6k1/80h+bD9TtTpeKky/kYNbr3+vHWqI3hdyfA== + +acorn-class-fields@^0.3.1: + version "0.3.6" + resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.3.6.tgz#e45916dcd95c3d7faad1c811e3abd818defe14d9" + integrity sha512-nOzMl1byCFAJLgxNUG7QorpzRHWlkBKVSSOMKUu+bVbVZG5lU4NZkOp/uA7CnE+NAsWhmxTsMgQdHsQXUO8Ulg== + dependencies: + acorn-private-class-elements "^0.2.6" + +acorn-dynamic-import@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== + +acorn-export-ns-from@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/acorn-export-ns-from/-/acorn-export-ns-from-0.1.0.tgz#192687869bba3bcb2ef1a1ba196486ea7e100e5c" + integrity sha512-QDQJBe2DfxNBIMxs+19XY2i/XXilJn+kPgX30HWNYK4IXoNj3ACNSWPU7szL0SzqjFyOG4zoZxG9P7JfNw5g7A== + +acorn-globals@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" + integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8= + dependencies: + acorn "^4.0.4" + +acorn-import-meta@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/acorn-import-meta/-/acorn-import-meta-1.1.0.tgz#c384423462ee7d4721d4de83231021a36cb09def" + integrity sha512-pshgiVR5mhpjFVdizKTN+kAGRqjJFUOEB3TvpQ6kiAutb1lvHrIVVcGoe5xzMpJkVNifCeymMG7/tsDkWn8CdQ== + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-logical-assignment@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/acorn-logical-assignment/-/acorn-logical-assignment-0.1.3.tgz#4c81ec136994e4b505e2de42636c923722e88377" + integrity sha512-tLFK3+HWerA2rAJaY02LRtDeO0/nwgw6Wn1EZwO8cNZRbZiwBxKo4V5rJEoVSfBvEqXo44JaiA2Q9ycYx+y7qQ== + +acorn-numeric-separator@^0.3.0: + version "0.3.3" + resolved "https://registry.yarnpkg.com/acorn-numeric-separator/-/acorn-numeric-separator-0.3.3.tgz#1002e3c3e68540449131370b81078b3fc36a4b18" + integrity sha512-xMbqqXR9EnxuGN1N6CbU+sm/sKS+VSttTnU6aRf9klvZF/P5E5BMtR3xZfSFWbVIkd4uXGKfgZJZwZ73zpExXQ== + +acorn-private-class-elements@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/acorn-private-class-elements/-/acorn-private-class-elements-0.2.6.tgz#625155cbf4d42ce1f8063db8c9b88adfdd8db2c5" + integrity sha512-PV+AhOU1/vCx5zIBgGYLB5+OoT8IPKZUcWEGdLBTQgFBMMzPM9S5SKSG4EdiuULqoq3pV3C07rGuSC1Y5gbi/g== + +acorn-private-methods@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/acorn-private-methods/-/acorn-private-methods-0.3.2.tgz#4a0b311607444157efc3180210d3a909673f6469" + integrity sha512-jTgRNDbEkbtxOIPUmDZ4u4oDGCO4tNPDNeW+jJrkbLl/Hzl9EVLva+kGQ289irSPhxi7FI9TjuXmIiqjnJcj9w== + dependencies: + acorn-private-class-elements "^0.2.6" + +acorn-stage3@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/acorn-stage3/-/acorn-stage3-2.1.0.tgz#63ffe0f00b8ac7ccdce34ce82b3b9a6777af390a" + integrity sha512-6R3IWwmMl1MBYf6JtaquuE8OqtCArA1zaDlY7QUeUNDcUzNJoZJm1nFQrv0SzdjkRv1khADbMfucFsF661LGow== + dependencies: + acorn-bigint "^0.4.0" + acorn-class-fields "^0.3.1" + acorn-dynamic-import "^4.0.0" + acorn-export-ns-from "^0.1.0" + acorn-import-meta "^1.0.0" + acorn-logical-assignment "^0.1.0" + acorn-numeric-separator "^0.3.0" + acorn-private-methods "^0.3.0" + acorn-static-class-features "^0.2.0" + +acorn-static-class-features@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/acorn-static-class-features/-/acorn-static-class-features-0.2.3.tgz#c59e17c81afa28d6fc140d2ab1429e3eaea5dd66" + integrity sha512-N7yRI9NduTJRam3BQTXHLR63ykHQv2MnxWTRq0+4PfQosGUz/tM0/ToRqWUqGphP960mDTm/7zJFx3dB/AZtiw== + dependencies: + acorn-private-class-elements "^0.2.6" + +acorn-walk@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= + +acorn@^4.0.4, acorn@~4.0.2: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= + +acorn@^5.7.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.0, acorn@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7, argparse@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + +axios@^0.19.0: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.15.0, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +bluebird@^3.1.1: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +brotli-size@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" + integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== + dependencies: + duplexer "0.1.1" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserslist@^4.12.0, browserslist@^4.8.5: + version "4.12.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711" + integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw== + dependencies: + caniuse-lite "^1.0.30001088" + electron-to-chromium "^1.3.483" + escalade "^3.0.1" + node-releases "^1.1.58" + +buffer-es6@^4.9.2, buffer-es6@^4.9.3: + version "4.9.3" + resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404" + integrity sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + +buntis@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/buntis/-/buntis-0.2.1.tgz#a043aabc7d64f2243bfaa53e34e999c2dd790e82" + integrity sha512-5wszfQlsqJmZrfxpPkO5yQcEoBAmfUYlXxXU/IM6PhPZ8DMnMMJQ9rvAHfe5WZmnB6E1IoJYylFfTaf1e2FJbQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001088: + version "1.0.30001090" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001090.tgz#ff7766332f60e80fea4903f30d360622e5551850" + integrity sha512-QzPRKDCyp7RhjczTPZaqK3CjPA5Ht2UnXhZhCI4f7QiB5JK6KEuZBxIzyWnB3wO4hgAj4GMRxAhuiacfw0Psjg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-parser@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" + integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= + dependencies: + is-regex "^1.0.3" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +cheerio@^1.0.0-rc.3: + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" + integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.1" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash "^4.15.0" + parse5 "^3.0.1" + +child_process@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/child_process/-/child_process-1.0.2.tgz#b1f7e7fc73d25e7fd1d455adc94e143830182b5a" + integrity sha1-sffn/HPSXn/R1FWtyU4UODAYK1o= + +"chokidar@>=2.0.0 <4.0.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +clean-css@^4.1.11: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +cli-boxes@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" + integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +clone@~0.1.9: + version "0.1.19" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" + integrity sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.19.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.4.4: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +config-chain@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== + dependencies: + bluebird "^3.1.1" + +constantinople@^3.0.1, constantinople@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647" + integrity sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw== + dependencies: + "@types/babel-types" "^7.0.0" + "@types/babylon" "^6.16.2" + babel-types "^6.26.0" + babylon "^6.18.0" + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js@3: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + +core-js@^2.4.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-env@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-6.0.3.tgz#4256b71e49b3a40637a0ce70768a6ef5c72ae941" + integrity sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag== + dependencies: + cross-spawn "^7.0.0" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-parse@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" + integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= + dependencies: + css "^2.0.0" + +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz#11e5e27c9a48d90284f22d45061c303d7a25ad87" + integrity sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + regexpu-core "^4.6.0" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + +debounce@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deferred-leveldown@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" + integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== + dependencies: + abstract-leveldown "~6.2.1" + inherits "^2.0.3" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +doctypes@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" + integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +duplexer@0.1.1, duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +easygettext@^2.7.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/easygettext/-/easygettext-2.13.0.tgz#32318e349087b17b2efe04b99ebd653f86192c75" + integrity sha512-VBeI1VDyX6QLWFhxy3sMAoQDHypjL52LuZtn+Rd8ISJm+oh2FmJzEK4JPqoTqQoD13ilTzM3V0Ie6+4fUXPEXA== + dependencies: + "@vue/component-compiler-utils" "^2.6.0" + acorn "^6.4.1" + acorn-stage3 "^2.0.0" + acorn-walk "^6.2.0" + buntis "0.2.1" + cheerio "^1.0.0-rc.3" + estree-walker "^2.0.1" + flow-remove-types "^1.2.3" + minimist "^1.2.5" + pofile "^1.1.0" + pug "^2.0.4" + vue-template-compiler "^2.6.10" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + +electron-to-chromium@^1.3.483: + version "1.3.483" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz#9269e7cfc1c8e72709824da171cbe47ca5e3ca9e" + integrity sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg== + +elliptic@^6.0.0, elliptic@^6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +entities@^1.1.1, entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + +errno@^0.1.1, errno@~0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" + integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-config-standard@^14.1.0: + version "14.1.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" + integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== + +eslint-import-resolver-node@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.17.3: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-node@11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz#365944bb0804c5d1d501182a9bc41a0ffefed726" + integrity sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" + integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== + +eslint-plugin-standard@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" + integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== + +eslint-plugin-vue@^6.1.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" + integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== + dependencies: + natural-compare "^1.4.0" + semver "^5.6.0" + vue-eslint-parser "^7.0.0" + +eslint-scope@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@6.8.0, eslint@^6.0.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2, espree@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +estree-walker@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" + integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" + integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +filesize@^4.1.2: + version "4.2.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-4.2.1.tgz#ab1cb2069db5d415911c1a13e144c0e743bc89bc" + integrity sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flow-remove-types@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-1.2.3.tgz#6131aefc7da43364bb8b479758c9dec7735d1a18" + integrity sha512-ypq/U3V+t9atYiOuSJd40tekCra03EHKoRsiK/wXGrsZimuum0kdwVY7Yv0HTaoXgHW1WiayomYd+Q3kkvPl9Q== + dependencies: + babylon "^6.15.0" + vlq "^0.2.1" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +foreach@~2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fs@0.0.1-security: + version "0.0.1-security" + resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4" + integrity sha1-invTcYa23d84E/I4WLV+yq9eQdQ= + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +fwd-stream@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fwd-stream/-/fwd-stream-1.0.4.tgz#ed281cabed46feecf921ee32dc4c50b372ac7cfa" + integrity sha1-7Sgcq+1G/uz5Ie4y3ExQs3KsfPo= + dependencies: + readable-stream "~1.0.26-4" + +generic-names@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917" + integrity sha1-LXhqEhruUIh2eWk56OO/+DbCCRc= + dependencies: + loader-utils "^0.2.16" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.2, glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +graceful-fs@^4.1.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +gzip-size@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handlebars@^4.0.6: + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +htmlparser2@^3.9.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + +immediate@~3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" + integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.2.0.tgz#63ce99d823090de7eb420e4bb05e6f3449aa389a" + integrity sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-expression@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" + integrity sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8= + dependencies: + acorn "~4.0.2" + object-assign "^4.0.1" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-object@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" + integrity sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc= + +is-promise@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-reference@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.0.3, is-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" + integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== + dependencies: + has-symbols "^1.0.1" + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is@~0.2.6: + version "0.2.7" + resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" + integrity sha1-OzSixI81mXLzUEKEkZOucmS2NWI= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +js-base64@^2.1.9: + version "2.6.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.2.tgz#cf9301bc5cc756892a9a6c8d7138322e5944fb0d" + integrity sha512-1hgLrLIrmCgZG+ID3VoLNLOSwjGnoZa8tyrUdEteMeIzsT6PH7PMLyUvbDwzNE56P3PNxyvuIOx4Uh2E5rzQIw== + +js-beautify@^1.6.12: + version "1.11.0" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.11.0.tgz#afb873dc47d58986360093dcb69951e8bcd5ded2" + integrity sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + mkdirp "~1.0.3" + nopt "^4.0.3" + +js-stringify@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" + integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jstransformer@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" + integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= + dependencies: + is-promise "^2.0.0" + promise "^7.0.1" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +less@^3.9.0: + version "3.11.3" + resolved "https://registry.yarnpkg.com/less/-/less-3.11.3.tgz#2d853954fcfe0169a8af869620bcaa16563dcc1c" + integrity sha512-VkZiTDdtNEzXA3LgjQiC3D7/ejleBPFVvq+aRI9mIj+Zhmif5TvFPM244bT4rzkvOCvJ9q4zAztok1M7Nygagw== + dependencies: + clone "^2.1.2" + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + promise "^7.1.1" + request "^2.83.0" + source-map "~0.6.0" + +level-blobs@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" + integrity sha1-mrm5e7mfHtv594o0M+Ie1WOGva8= + dependencies: + level-peek "1.0.6" + once "^1.3.0" + readable-stream "^1.0.26-4" + +level-concat-iterator@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" + integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== + +level-errors@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" + integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== + dependencies: + errno "~0.1.1" + +level-filesystem@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/level-filesystem/-/level-filesystem-1.2.0.tgz#a00aca9919c4a4dfafdca6a8108d225aadff63b3" + integrity sha1-oArKmRnEpN+v3KaoEI0iWq3/Y7M= + dependencies: + concat-stream "^1.4.4" + errno "^0.1.1" + fwd-stream "^1.0.4" + level-blobs "^0.1.7" + level-peek "^1.0.6" + level-sublevel "^5.2.0" + octal "^1.0.0" + once "^1.3.0" + xtend "^2.2.0" + +level-fix-range@2.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-2.0.0.tgz#c417d62159442151a19d9a2367868f1724c2d548" + integrity sha1-xBfWIVlEIVGhnZojZ4aPFyTC1Ug= + dependencies: + clone "~0.1.9" + +level-fix-range@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-1.0.2.tgz#bf15b915ae36d8470c821e883ddf79cd16420828" + integrity sha1-vxW5Fa422EcMgh6IPd95zRZCCCg= + +"level-hooks@>=4.4.0 <5": + version "4.5.0" + resolved "https://registry.yarnpkg.com/level-hooks/-/level-hooks-4.5.0.tgz#1b9ae61922930f3305d1a61fc4d83c8102c0dd93" + integrity sha1-G5rmGSKTDzMF0aYfxNg8gQLA3ZM= + dependencies: + string-range "~1.2" + +level-iterator-stream@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" + integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== + dependencies: + inherits "^2.0.4" + readable-stream "^3.4.0" + xtend "^4.0.2" + +level-js@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/level-js/-/level-js-4.0.2.tgz#fa51527fa38b87c4d111b0d0334de47fcda38f21" + integrity sha512-PeGjZsyMG4O89KHiez1zoMJxStnkM+oBIqgACjoo5PJqFiSUUm3GNod/KcbqN5ktyZa8jkG7I1T0P2u6HN9lIg== + dependencies: + abstract-leveldown "~6.0.1" + immediate "~3.2.3" + inherits "^2.0.3" + ltgt "^2.1.2" + typedarray-to-buffer "~3.1.5" + +level-peek@1.0.6, level-peek@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/level-peek/-/level-peek-1.0.6.tgz#bec51c72a82ee464d336434c7c876c3fcbcce77f" + integrity sha1-vsUccqgu5GTTNkNMfIdsP8vM538= + dependencies: + level-fix-range "~1.0.2" + +level-sublevel@^5.2.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-5.2.3.tgz#744c12c72d2e72be78dde3b9b5cd84d62191413a" + integrity sha1-dEwSxy0ucr543eO5tc2E1iGRQTo= + dependencies: + level-fix-range "2.0" + level-hooks ">=4.4.0 <5" + string-range "~1.2.1" + xtend "~2.0.4" + +level-supports@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" + integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== + dependencies: + xtend "^4.0.2" + +levelup@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" + integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== + dependencies: + deferred-leveldown "~5.3.0" + level-errors "~2.0.0" + level-iterator-stream "~4.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^4.1.2, lru-cache@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +ltgt@^2.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= + +magic-string@^0.22.5: + version "0.22.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== + dependencies: + vlq "^0.2.2" + +magic-string@^0.25.2, magic-string@^0.25.5, magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.1, mkdirp@~0.5.x: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@~1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-releases@^1.1.58: + version "1.1.58" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" + integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== + +nopt@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-inspect@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-keys@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67" + integrity sha1-zd7AKZiwkb5CvxA1rjLknxy26mc= + dependencies: + foreach "~2.0.1" + indexof "~0.0.1" + is "~0.2.6" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +octal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" + integrity sha1-Y+cWKmjvvrniE1iNWOmJ0eXEUws= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== + dependencies: + "@types/node" "*" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path@^0.12.7: + version "0.12.7" + resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= + dependencies: + process "^0.11.1" + util "^0.10.3" + +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pofile@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pofile/-/pofile-1.1.0.tgz#9ce84bbef5043ceb4f19bdc3520d85778fad4f94" + integrity sha512-6XYcNkXWGiJ2CVXogTP7uJ6ZXQCldYLZc16wgRp8tqRaBTTyIfF+TUT3EQJPXTLAT7OTPpTAoaFdoXKfaTRU1w== + +postcss-modules-local-by-default@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-sync@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-sync/-/postcss-modules-sync-1.0.0.tgz#619a719cf78dd16a4834135140b324cf77334be1" + integrity sha1-YZpxnPeN0WpINBNRQLMkz3czS+E= + dependencies: + generic-names "^1.0.2" + icss-replace-symbols "^1.0.2" + postcss "^5.2.5" + postcss-modules-local-by-default "^1.1.1" + postcss-modules-scope "^1.0.2" + string-hash "^1.1.0" + +postcss-selector-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^5.2.5: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.1: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.14: + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prettier@1.16.3: + version "1.16.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" + integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw== + +prettier@^1.18.2: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-es6@^0.11.2, process-es6@^0.11.6: + version "0.11.6" + resolved "https://registry.yarnpkg.com/process-es6/-/process-es6-0.11.6.tgz#c6bb389f9a951f82bd4eb169600105bd2ff9c778" + integrity sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.1: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise@^7.0.1, promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pug-attrs@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz#b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336" + integrity sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ== + dependencies: + constantinople "^3.0.1" + js-stringify "^1.0.1" + pug-runtime "^2.0.5" + +pug-code-gen@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.2.tgz#ad0967162aea077dcf787838d94ed14acb0217c2" + integrity sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw== + dependencies: + constantinople "^3.1.2" + doctypes "^1.1.0" + js-stringify "^1.0.1" + pug-attrs "^2.0.4" + pug-error "^1.3.3" + pug-runtime "^2.0.5" + void-elements "^2.0.1" + with "^5.0.0" + +pug-error@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz#f342fb008752d58034c185de03602dd9ffe15fa6" + integrity sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ== + +pug-filters@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz#ab2cc82db9eeccf578bda89130e252a0db026aa7" + integrity sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg== + dependencies: + clean-css "^4.1.11" + constantinople "^3.0.1" + jstransformer "1.0.0" + pug-error "^1.3.3" + pug-walk "^1.1.8" + resolve "^1.1.6" + uglify-js "^2.6.1" + +pug-lexer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz#531cde48c7c0b1fcbbc2b85485c8665e31489cfd" + integrity sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA== + dependencies: + character-parser "^2.1.1" + is-expression "^3.0.0" + pug-error "^1.3.3" + +pug-linker@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz#f5bf218b0efd65ce6670f7afc51658d0f82989fb" + integrity sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg== + dependencies: + pug-error "^1.3.3" + pug-walk "^1.1.8" + +pug-load@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz#d38c85eb85f6e2f704dea14dcca94144d35d3e7b" + integrity sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg== + dependencies: + object-assign "^4.1.0" + pug-walk "^1.1.8" + +pug-parser@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz#03e7ada48b6840bd3822f867d7d90f842d0ffdc9" + integrity sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA== + dependencies: + pug-error "^1.3.3" + token-stream "0.0.1" + +pug-runtime@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz#6da7976c36bf22f68e733c359240d8ae7a32953a" + integrity sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw== + +pug-strip-comments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz#cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8" + integrity sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw== + dependencies: + pug-error "^1.3.3" + +pug-walk@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz#b408f67f27912f8c21da2f45b7230c4bd2a5ea7a" + integrity sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA== + +pug@^2.0.3, pug@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz#ee7682ec0a60494b38d48a88f05f3b0ac931377d" + integrity sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw== + dependencies: + pug-code-gen "^2.0.2" + pug-filters "^3.1.1" + pug-lexer "^4.1.0" + pug-linker "^3.0.6" + pug-load "^2.0.12" + pug-parser "^5.0.1" + pug-runtime "^2.0.5" + pug-strip-comments "^1.0.4" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@^6.9.1: + version "6.9.4" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" + integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^1.0.26-4: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.2.2: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.26-4: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" + integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.6.0, regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request@^2.83.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-eslint@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-eslint/-/rollup-plugin-eslint-7.0.0.tgz#a6dbcbc14699a7a02155697c0c3dfa26cca59a9b" + integrity sha512-u35kXiY11ULeNQGTlRkYx7uGJ/hS/Dx3wj8f9YVC3oMLTGU9fOqQJsAKYtBFZU3gJ8Vt3gu8ppB1vnKl+7gatQ== + dependencies: + eslint "^6.0.0" + rollup-pluginutils "^2.7.1" + +rollup-plugin-filesize@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-6.2.1.tgz#552eebc88dd69db3321d99c27dbd49e550812e54" + integrity sha512-JQ2+NMoka81lCR2caGWyngqMKpvJCl7EkFYU7A+T0dA7U1Aml13FW5Ky0aiZIeU3/13cjsKQLRr35SQVmk6i/A== + dependencies: + boxen "^4.1.0" + brotli-size "4.0.0" + colors "^1.3.3" + filesize "^4.1.2" + gzip-size "^5.1.1" + lodash.merge "^4.6.2" + terser "^4.1.3" + +rollup-plugin-node-globals@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz#5e1f24a9bb97c0ef51249f625e16c7e61b7c020b" + integrity sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== + dependencies: + acorn "^5.7.3" + buffer-es6 "^4.9.3" + estree-walker "^0.5.2" + magic-string "^0.22.5" + process-es6 "^0.11.6" + rollup-pluginutils "^2.3.1" + +rollup-plugin-node-resolve@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" + integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== + dependencies: + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.11.1" + rollup-pluginutils "^2.8.1" + +rollup-plugin-terser@^5.1.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e" + integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^2.1.2" + terser "^4.6.2" + +rollup-plugin-vue@^5.1.4: + version "5.1.9" + resolved "https://registry.yarnpkg.com/rollup-plugin-vue/-/rollup-plugin-vue-5.1.9.tgz#8769cfdac5531c2d1970222b7887b883db37b866" + integrity sha512-DXzrBUD2j68Y6nls4MmuJsFL1SrQDpdgjxvhk/oy04LzJmXJoX1x31yLEBFkkmvpbon6Q885WJLvEMiMyT+3rA== + dependencies: + "@vue/component-compiler" "^4.2.3" + "@vue/component-compiler-utils" "^3.1.2" + debug "^4.1.1" + hash-sum "^1.0.2" + magic-string "^0.25.7" + querystring "^0.2.0" + rollup-pluginutils "^2.8.2" + source-map "0.7.3" + vue-runtime-helpers "^1.1.2" + +rollup-pluginutils@^2.3.1, rollup-pluginutils@^2.7.1, rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.28.0: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +rxjs@^6.5.3: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass@^1.18.0: + version "1.26.9" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.9.tgz#73c10cbb88c12b22a9e0107725bfd62296f4978f" + integrity sha512-t8AkRVi+xvba4yZiLWkJdgJHBFCB3Dh4johniQkPy9ywkgFHNasXFEFP+RG/F6LhQ+aoE4aX+IorIWQjS0esVw== + dependencies: + chokidar ">=2.0.0 <4.0.0" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.6.*, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@0.7.3, source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +string-hash@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + +string-range@~1.2, string-range@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" + integrity sha1-qJPtNH5yKZvIO++78qaSqNI51d0= + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-json-comments@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" + integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== + +stylus@^0.54.5: + version "0.54.7" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.7.tgz#c6ce4793965ee538bcebe50f31537bfc04d88cd2" + integrity sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug== + dependencies: + css-parse "~2.0.0" + debug "~3.1.0" + glob "^7.1.3" + mkdirp "~0.5.x" + safer-buffer "^2.1.2" + sax "~1.2.4" + semver "^6.0.0" + source-map "^0.7.3" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +swagger-vue-generator@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/swagger-vue-generator/-/swagger-vue-generator-1.0.6.tgz#a2d6ec729bad81b3245b5daa847aee8e83edbfd8" + integrity sha1-otbscputgbMkW12qhHrujoPtv9g= + dependencies: + argparse "^1.0.9" + chai "^4.1.2" + child_process "^1.0.2" + fs "0.0.1-security" + lodash "^4.17.4" + path "^0.12.7" + swagger-vue "^1.0.3" + yaml "^0.3.0" + +swagger-vue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/swagger-vue/-/swagger-vue-1.0.3.tgz#3c9fa5c6b6d83ae341dd8dab12f0a414a9900237" + integrity sha1-PJ+lxrbYOuNB3Y2rEvCkFKmQAjc= + dependencies: + handlebars "^4.0.6" + js-beautify "^1.6.12" + lodash "^4.17.4" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +term-size@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + +terser@^4.1.3, terser@^4.6.2: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +token-stream@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" + integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.10.0, tslib@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typedarray-to-buffer@~3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +uglify-js@^2.6.1: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-js@^3.1.4: + version "3.10.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.0.tgz#397a7e6e31ce820bfd1cb55b804ee140c587a9e7" + integrity sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA== + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vlq@^0.2.1, vlq@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== + +void-elements@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +vue-eslint-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83" + integrity sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q== + dependencies: + debug "^4.1.1" + eslint-scope "^5.0.0" + eslint-visitor-keys "^1.1.0" + espree "^6.2.1" + esquery "^1.0.1" + lodash "^4.17.15" + +vue-runtime-helpers@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vue-runtime-helpers/-/vue-runtime-helpers-1.1.2.tgz#446b7b820888ab0c5264d2c3a32468e72e4100f3" + integrity sha512-pZfGp+PW/IXEOyETE09xQHR1CKkR9HfHZdnMD/FVLUNI+HxYTa82evx5WrF6Kz4s82qtqHvMZ8MZpbk2zT2E1Q== + +vue-template-compiler@^2.6.10, vue-template-compiler@^2.6.11: + version "2.6.11" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" + integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + +vue-template-es2015-compiler@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" + integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + +with@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" + integrity sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4= + dependencies: + acorn "^3.1.0" + acorn-globals "^3.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +xtend@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" + integrity sha1-7vax8ZjByN6vrYsXZaBNrUoBxak= + +xtend@^4.0.2, xtend@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xtend@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee" + integrity sha1-XqZXptukRwacLlnFihE4ywxebO4= + dependencies: + is-object "~0.1.2" + object-keys "~0.2.0" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yaml@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-0.3.0.tgz#c31a616d07acdbc2012d73a6ba5b1b0bdd185a7f" + integrity sha1-wxphbQes28IBLXOmulsbC90YWn8= + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" From a48334eaade0e2bdfb77515be96f39cf9f2ffdbc Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 30 Jun 2020 12:50:39 +0200 Subject: [PATCH 171/407] Align root command with other ocis-extensions --- pkg/command/root.go | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/pkg/command/root.go b/pkg/command/root.go index 8e8b0791cb..3f250f0e5c 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -2,13 +2,10 @@ package command import ( "os" - "os/user" - "path" "strings" "github.com/owncloud/ocis-accounts/pkg/flagset" - "github.com/joho/godotenv" "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/version" @@ -27,29 +24,8 @@ func Execute() error { app := &cli.App{ Name: "ocis-accounts", Version: version.String, - Usage: "Example service for Reva/oCIS", + Usage: "Provide accounts and groups for oCIS", Compiled: version.Compiled(), - Flags: flagset.RootWithConfig(cfg), - Before: func(c *cli.Context) error { - err := ParseConfig(c, cfg) - logger := NewLogger(cfg) - for _, v := range defaultConfigPaths { - // location is the user's home - if v[0] == '$' || v[0] == '~' { - usr, _ := user.Current() - err := godotenv.Load(path.Join(usr.HomeDir, ".ocis", defaultFilename+".env")) - if err != nil { - logger.Debug().Msgf("ignoring missing env file on dir: %v", v) - } - } else { - err := godotenv.Load(path.Join(v, defaultFilename+".env")) - if err != nil { - logger.Debug().Msgf("ignoring missing env file on dir: %v", v) - } - } - } - return err - }, Authors: []*cli.Author{ { @@ -58,6 +34,12 @@ func Execute() error { }, }, + Flags: flagset.RootWithConfig(cfg), + + Before: func(c *cli.Context) error { + return ParseConfig(c, cfg) + }, + Commands: []*cli.Command{ Server(cfg), }, From b1ba52f02b8f33d9983b6b5959135951a10f7eec Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 30 Jun 2020 12:52:04 +0200 Subject: [PATCH 172/407] Add asset generation from javascript bundle On `make generate` the `pkg/assets/embed.go` will be generated from the current state of the javascript app bundle in `assets/accounts.js`. So you'll have to run `yarn build` first and then `make generate`. --- Makefile | 2 +- go.mod | 8 +- go.sum | 104 ++++++++++++++++++++++++++ pkg/assets/assets.go | 36 +++++++++ pkg/assets/embed.go | 173 +++++++++++++++++++++++++++++++++++++++++++ pkg/assets/embed.yml | 17 +++++ pkg/assets/option.go | 40 ++++++++++ 7 files changed, 377 insertions(+), 3 deletions(-) create mode 100644 pkg/assets/assets.go create mode 100644 pkg/assets/embed.go create mode 100644 pkg/assets/embed.yml create mode 100644 pkg/assets/option.go diff --git a/Makefile b/Makefile index 1609295487..2bcfafcf84 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ endif PACKAGES ?= $(shell go list ./...) SOURCES ?= $(shell find . -name "*.go" -type f -not -path "./node_modules/*") -GENERATE ?= $(PACKAGES) +GENERATE ?= $(PACKAGES) $(IMPORT)/pkg/assets TAGS ?= diff --git a/go.mod b/go.mod index 5440c35867..e49b08c384 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,8 @@ require ( github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect + github.com/go-chi/chi v4.1.0+incompatible + github.com/go-chi/render v1.0.1 github.com/go-test/deep v1.0.6 // indirect github.com/gofrs/uuid v3.3.0+incompatible github.com/gogo/protobuf v1.3.1 // indirect @@ -21,15 +23,17 @@ require ( github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.6.0 github.com/oklog/run v1.1.0 - github.com/owncloud/ocis-pkg/v2 v2.2.1 + github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170 github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 github.com/spf13/viper v1.7.0 github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tredoe/osutil v1.0.5 + golang.org/x/net v0.0.0-20200301022130-244492dfa37a google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb - honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab // indirect + google.golang.org/protobuf v1.23.0 + honnef.co/go/tools v0.0.1-2020.1.4 // indirect ) replace google.golang.org/grpc => google.golang.org/grpc v1.26.0 diff --git a/go.sum b/go.sum index 8ce116d14d..cc00b5b9c9 100644 --- a/go.sum +++ b/go.sum @@ -16,6 +16,7 @@ contrib.go.opencensus.io/exporter/jaeger v0.2.0/go.mod h1:ukdzwIYYHgZ7QYtwVFQUji contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= +contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= contrib.go.opencensus.io/exporter/zipkin v0.1.1/go.mod h1:GMvdSl3eJ2gapOaLKzTKE3qDgUkJ86k9k3yY2eqwkzc= contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= @@ -52,10 +53,18 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.1.0 h1:Y2lUDsFKVRSYGojLJ1yLxSXdMmMYTYls0rCvoqmMUQk= +github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig/v3 v3.0.1 h1:RuaOafp+8qOLUPX1lInLfUrLc1MEVbnz7a40RLoixKY= github.com/Masterminds/sprig/v3 v3.0.1/go.mod h1:Cp7HwZjmqKrC+Y7XqSJOU2yRvAJRGLiohfgz5ZJj8+4= +github.com/Masterminds/sprig/v3 v3.1.0 h1:j7GpgZ7PdFqNsmncycTHsLmVPf5/3wJtlgW9TNDYD9Y= +github.com/Masterminds/sprig/v3 v3.1.0/go.mod h1:ONGMf7UfYGAbMXCZmQLy8x3lCDIPrEZE/rU8pmrbihA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= @@ -71,6 +80,7 @@ github.com/RoaringBitmap/roaring v0.4.21/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06 github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/UnnoTed/fileb0x v1.1.4 h1:IUgFzgBipF/ujNx9wZgkrKOF3oltUuXMSoaejrBws+A= github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ9cgOiZs= github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= @@ -102,6 +112,9 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee h1:3T/l+vMotQ7cDSLWNAn2Vg1SAQ3mdyLgBWWBitSS3uU= github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee/go.mod h1:u7Wtt4WATGGgae9mURNGQQqxAudPKrxfsbSDSGOso+g= github.com/asim/go-awsxray v0.0.0-20161209120537-0d8a60b6e205/go.mod h1:frVmN4PtXUuL1EbZn0uL4PHSTKNKFnbMpBIhngqMuNQ= github.com/asim/go-bson v0.0.0-20160318195205-84522947cabd/go.mod h1:L59ZX7HuzTbNzFBt8g3SJkRraj+GBOgvLAfJYJUcQ5w= @@ -110,6 +123,7 @@ github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpi github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.31/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.29.26/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -141,6 +155,7 @@ github.com/blevesearch/zap/v13 v13.0.1 h1:NSCM6uKu77Vn/x9nlPp4pE1o/bftqcOWZEHSyZ github.com/blevesearch/zap/v13 v13.0.1/go.mod h1:XmyNLMvMf8Z5FjLANXwUeDW3e1+o77TTGUWrth7T9WI= github.com/blevesearch/zap/v14 v14.0.0 h1:HF8Ysjm13qxB0jTGaKLlatNXmJbQD8bY+PrPxm5v4hE= github.com/blevesearch/zap/v14 v14.0.0/go.mod h1:sUc/gPGJlFbSQ2ZUh/wGRYwkKx+Dg/5p+dd+eq6QMXk= +github.com/bmatcuk/doublestar v1.1.1 h1:YroD6BJCZBYx06yYFEWvUuKVWQn3vLLQAVmDmvTSaiQ= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= @@ -162,6 +177,7 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/cheggaaa/pb v1.0.28/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= @@ -186,6 +202,8 @@ github.com/coreos/etcd v3.3.18+incompatible h1:Zz1aXgDrFFi1nadh58tA9ktt06cmPTwNN github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-oidc v2.2.1+incompatible h1:mh48q/BqXqgjVHpy2ZY7WnWAbenxRjsz9N1i1YxjHAk= +github.com/coreos/go-oidc v2.2.1+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -206,6 +224,10 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cs3org/go-cs3apis v0.0.0-20200306065539-29abc33f5be0 h1:jTKILSBtDm0GEw3FtXPxc5wxGpaw2pxzREg1GBV9LIQ= +github.com/cs3org/go-cs3apis v0.0.0-20200306065539-29abc33f5be0/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= +github.com/cs3org/reva v0.1.0 h1:PYzDejKm/+xG3OTS2WgzBxcksVogEGmPgjJVegwSR2c= +github.com/cs3org/reva v0.1.0/go.mod h1:8j6QyyAq9Kjj7RPfJb7M1aEmw5DmsuCJKUULXxYOyRo= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d h1:SwD98825d6bdB+pEuTxWOXiSjBrHdOl/UVp75eI7JT8= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso= @@ -239,6 +261,7 @@ github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7j github.com/ef-ds/deque v1.0.4-0.20190904040645-54cb57c252a1/go.mod h1:HvODWzv6Y6kBf3Ah2WzN1bHjDUezGLaAhwuWVwfpEJs= github.com/eknkc/basex v1.0.0/go.mod h1:k/F/exNEHFdbs3ZHuasoP2E7zeWwZblG84Y7Z59vQRo= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20181003060214-f58a169a71a5/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= @@ -269,6 +292,7 @@ github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+ github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= @@ -306,9 +330,11 @@ github.com/go-log/log v0.1.0/go.mod h1:4mBwpdRMFLiuXZDCwU2lKQFsoSCo72j3HqBK9d81N github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= @@ -316,6 +342,7 @@ github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEK github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-redsync/redsync v1.3.1/go.mod h1:qxZwM5JOimfq8y98Wk2+c8dKtxJgG5/yIl2ODz2E5Dk= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stomp/stomp v2.0.3+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= @@ -397,6 +424,7 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -412,6 +440,7 @@ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= @@ -471,16 +500,24 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= +github.com/huandu/xstrings v1.3.0 h1:gvV6jG9dTgFEncxo+AF7PH6MZXi/vZl25owA/8Dg8Wo= +github.com/huandu/xstrings v1.3.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= +github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -505,6 +542,7 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= +github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= @@ -529,7 +567,9 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= +github.com/labstack/echo v3.2.1+incompatible h1:J2M7YArHx4gi8p/3fDw8tX19SXhBCoRpviyAZSN3I88= github.com/labstack/echo v3.2.1+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= +github.com/labstack/gommon v0.2.7 h1:2qOPq/twXDrQ6ooBGrn3mrmVOC+biLlatwgIu8lbzRM= github.com/labstack/gommon v0.2.7/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= @@ -551,12 +591,15 @@ github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGD github.com/marten-seemann/qtls v0.3.2/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= @@ -601,6 +644,7 @@ github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go. github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= @@ -611,6 +655,8 @@ github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQz github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -618,7 +664,9 @@ github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lN github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/moul/http2curl v0.0.0-20170919181001-9ac6cf4d929b/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= @@ -654,6 +702,7 @@ github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/Hzq github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= +github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= @@ -661,6 +710,7 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/oleiade/reflections v1.0.0/go.mod h1:RbATFBbKYkVdqmSFtx13Bb/tVhR0lgOBXunWTZKeL4w= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -683,17 +733,26 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/ory/fosite v0.30.4/go.mod h1:Lq9qQ9Sl6mcea2Tt8J7PU+wUeFYPZ+vg7N3zPVKGbN8= +github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8TWB0yn9KNs= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= github.com/owncloud/ocis-hello v0.1.0-alpha1/go.mod h1:tU2bOB7DjuXZ+ju+5A+7pUHmTfPIYUk3tMflqHTBTpE= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= +github.com/owncloud/ocis-pkg v1.2.1-0.20200115112437-3dd614fdcd51 h1:K720zP/n/8Y451mz3tSUAz4JkarK0GBqbF1A3i3294M= +github.com/owncloud/ocis-pkg v1.2.1-0.20200115112437-3dd614fdcd51/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= +github.com/owncloud/ocis-pkg v1.3.0 h1:2fkgvfd/spTjschuulYMHRuzxkCGGXae9ocebVYkm74= +github.com/owncloud/ocis-pkg v1.3.0/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV03z6zI= github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= +github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170 h1:MYfyffPyTZbTofJjAz3LSQUIaKKcjjBBBIJGaEAkP8g= +github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170/go.mod h1:s894msGwDsULmsROHkbsXFCP/eSqDcteDFUntZOiJdc= github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 h1:wk/7aAUITTrM192TFoIDq4fqzJQtFOQ0dDdSRkJ25SU= github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363/go.mod h1:/h0ceztOoFc3KAnm8nqZI4zwsaaZK9q4MTgtintwsXc= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= +github.com/parnurzeal/gorequest v0.2.15/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= @@ -712,13 +771,16 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/xattr v0.4.1/go.mod h1:W2cGD0TBEus7MkUgv0tNZ9JutLtVO3cXu+IBRuHqnFs= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -731,6 +793,7 @@ github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1: github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -738,6 +801,7 @@ github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+ github.com/prometheus/common v0.7.0 h1:L+1lyG48J1zAQXA3RBX/nG/B3gjlHq0zTt2tlbJLyCY= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -760,6 +824,8 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= +github.com/rs/zerolog v1.18.0 h1:CbAm3kP2Tptby1i9sYy2MGRg0uxIN9cyDb59Ys7W8z8= +github.com/rs/zerolog v1.18.0/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= @@ -786,6 +852,7 @@ github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:s github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= @@ -799,6 +866,8 @@ github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= @@ -826,6 +895,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= @@ -835,6 +905,7 @@ github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpP github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU= @@ -842,6 +913,7 @@ github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDW github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc h1:yUaosFVTJwnltaHbSNC3i82I92quFs+OFPRl8kNMVwo= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= github.com/tredoe/fileutil v1.0.0/go.mod h1:PBayWPFCURwkmW0u6E8E8C6Jtd9ZzWq/U1iMa6BLRPg= @@ -854,7 +926,9 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 h1:gKMu1Bf6QINDnvyZuTaACm9ofY+PRh+5vFz4oxBZeF8= github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= @@ -878,6 +952,7 @@ go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -885,6 +960,8 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= @@ -906,6 +983,7 @@ gocloud.dev/pubsub/rabbitpubsub v0.17.0/go.mod h1:7o1XYDiIC+b0mmcwJuofsDg08t0DtU golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -915,6 +993,7 @@ golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -929,6 +1008,9 @@ golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -945,6 +1027,8 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -952,12 +1036,15 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -988,12 +1075,15 @@ golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1008,6 +1098,7 @@ golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181021155630-eda9bb28ed51/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1024,6 +1115,7 @@ golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190415081028-16da32be82c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1084,10 +1176,14 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200427214658-4697a2867c88 h1:Nj7oNnL9tSACMt2JvszZN6P4IXiy1t6E/YRMr7YtaSw= golang.org/x/tools v0.0.0-20200427214658-4697a2867c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f h1:JcoF/bowzCDI+MXu1yLqQGNO3ibqWsWq+Sk7pOT218w= +golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -1102,6 +1198,7 @@ google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEn google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= @@ -1145,6 +1242,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= @@ -1164,12 +1262,16 @@ gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eR gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= +gopkg.in/ldap.v2 v2.5.1/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk= gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.1.9/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= @@ -1193,6 +1295,8 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab h1:33/51YKJC1SC6WAomp3Feij834LXL1uK1Jmt45mkghE= honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab/go.mod h1:NELv708mC2Q9lQf29l+sO/v7NIOAQzEXu7jcugNzwvM= +honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.0.0-20191109101513-0171b7c15da1/go.mod h1:VJq7+38rpM4TSUbRiZX4P5UVAKK2UQpNQLZClkFQkpE= k8s.io/apimachinery v0.0.0-20191109100837-dffb012825f2/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= k8s.io/apimachinery v0.0.0-20191111054156-6eb29fdf75dc/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= diff --git a/pkg/assets/assets.go b/pkg/assets/assets.go new file mode 100644 index 0000000000..82f05233b0 --- /dev/null +++ b/pkg/assets/assets.go @@ -0,0 +1,36 @@ +package assets + +import ( + "net/http" + "os" + + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-pkg/v2/log" +) + +//go:generate go run github.com/UnnoTed/fileb0x embed.yml + +// assets gets initialized by New and provides the handler. +type assets struct { + logger log.Logger + config *config.Config +} + +// Open just implements the HTTP filesystem interface. +func (a assets) Open(original string) (http.File, error) { + return FS.OpenFile( + CTX, + original, + os.O_RDONLY, + 0644, + ) +} + +// New returns a new http filesystem to serve assets. +func New(opts ...Option) http.FileSystem { + options := newOptions(opts...) + + return assets{ + config: options.Config, + } +} diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go new file mode 100644 index 0000000000..aee06a1542 --- /dev/null +++ b/pkg/assets/embed.go @@ -0,0 +1,173 @@ +// Code generated by fileb0x at "2020-06-29 17:28:18.895015 +0200 CEST m=+0.002488382" from config file "embed.yml" DO NOT EDIT. +// modification hash(2779c5cda0c9231b4f83452cd22127b5.8058aec596c5fb73022d09bb97af796e) + +package assets + +import ( + "bytes" + "compress/gzip" + "context" + "io" + "net/http" + "os" + "path" + + "golang.org/x/net/webdav" +) + +var ( + // CTX is a context for webdav vfs + CTX = context.Background() + + // FS is a virtual memory file system + FS = webdav.NewMemFS() + + // Handler is used to server files through a http handler + Handler *webdav.Handler + + // HTTP is the http file system + HTTP http.FileSystem = new(HTTPFS) +) + +// HTTPFS implements http.FileSystem +type HTTPFS struct { + // Prefix allows to limit the path of all requests. F.e. a prefix "css" would allow only calls to /css/* + Prefix string +} + +// FileAccountsJs is "accounts.js" +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\x6d\x8f\xdb\xb8\x73\x7f\xdf\x4f\x21\x0b\x81\x4e\xc4\x31\xca\xee\xf5\x55\xa5\xb0\x7b\x41\xb0\x57\x04\x48\x93\x43\x92\x16\x2d\x5c\xc3\xe0\x4a\xa3\x15\x1b\x99\x14\x28\xca\xbb\x86\xcd\xef\x5e\xf0\x49\xa2\xbd\xde\xf6\xfa\x07\xfe\xaf\x2c\x3e\x0d\x87\x3f\xce\xfc\x66\x86\x6e\xa0\x65\x1c\xf2\xbc\x9d\x78\xad\x98\xe0\x39\x3a\xa6\xd3\x08\xc9\xa8\x24\xab\x55\x5a\xad\xe6\x01\x85\x01\x1d\x55\x0e\xe4\x08\xcf\x83\x90\x6a\x2c\x8f\x5a\x63\x28\x7c\x0b\xe9\x48\x88\x42\xc7\x3d\x95\x09\x90\x97\x3d\x5f\x1f\xfe\x1b\x6a\x55\x0c\x52\x28\xa1\x0e\x03\x60\x49\xa0\xe8\xe8\xf8\xf5\x89\xff\x29\xc5\x00\x52\x1d\x30\x27\x69\x58\x98\x12\x62\x66\x89\x36\xf9\x7e\xd8\x3d\x88\xfe\xce\xfd\x94\x47\x8d\x05\xe1\x05\x53\x20\xa9\x12\xf2\x74\x4a\x7f\xff\x3d\x34\x52\xcc\x08\x2f\xe8\x78\xe0\xf5\xa7\x78\xfc\xac\x27\xc5\x94\xf0\x42\x89\xef\x4a\x32\xfe\xf8\x83\x3e\xda\x29\x51\x3b\xad\x82\x0e\x49\x6d\x0e\x8f\x25\xe6\xee\x10\x82\x40\x96\xc1\x72\x84\x84\xf1\x51\x51\x5e\x1b\x2d\xbb\x3b\x28\x3b\xcc\xc2\x31\x6b\x09\x54\x41\x2e\x96\xc9\xc8\xec\x0b\x4f\xc9\x7d\xce\x4f\xa7\xf5\x06\x55\x12\xd4\x24\x79\xc2\x8a\x2d\xe3\x7b\xf1\x33\xc6\xcc\x6c\xea\xb6\xe4\x24\x1d\xa7\x71\x00\xde\x40\xf3\x5d\x51\xa9\xd2\xb0\x6e\x9e\x2d\x30\x43\x47\xd6\xe6\x29\x3c\x43\x3d\x29\xc6\x1f\x53\x42\x08\x47\xaa\x93\xe2\x29\xb1\x5b\x4a\x29\x64\x9e\xfe\x0b\x70\x07\x41\xc2\xc6\x84\xf6\x12\x68\x73\x48\xe4\xc4\xb9\x59\x82\x2a\x23\xa2\x16\xbb\xa1\x07\x05\x8d\x13\x61\xc5\x5a\x39\xa6\x2d\xbc\x48\x16\x54\x78\xc8\x91\x6e\x85\xcc\x65\xb1\x03\xd5\x89\x86\x08\x2c\x0b\x2a\x1f\x09\xab\x2a\xa7\x3e\x25\xb2\x68\xa0\x87\x47\xaa\xc0\x6c\x40\x5d\x77\x4d\x9e\x72\x8a\xa5\xdd\xb3\xb6\xbb\xd4\x84\x90\x09\xd5\x82\x2b\xc6\x27\x08\x1b\xd4\x5a\x1b\x0d\x38\x3c\x2b\xa3\x40\xd8\x07\xc9\x62\x04\xae\x88\x2c\xb6\xfe\x97\xca\xc7\x0a\xfa\x11\x92\x33\x85\xe7\xf9\xf6\x1c\x17\x38\xc6\x18\x91\xe8\xe0\xee\x08\x95\x2c\x1a\x36\x0e\x54\xd5\xdd\xfd\x73\x0d\x83\x45\xda\x8e\x20\x6d\x36\x4a\x9d\x86\xf1\x2e\x59\x26\x0b\xfa\x20\xa7\x41\xe5\x61\xd4\xc9\x42\x15\x27\xd1\xe5\x54\x06\x81\x8e\x8c\xfe\x9a\x2d\xee\x5c\xc8\x1d\xed\x8d\xb4\xae\xb0\xc6\x62\x34\xe6\x06\x3c\xc1\xe1\x2e\xd2\xae\x5c\x8e\xf1\x9f\x0c\xfa\x26\xc5\x9d\x45\xfc\x0a\x7a\xc7\x3d\xed\x27\x28\xed\x38\x36\x72\x4a\x27\x4e\xeb\x05\x21\xb7\x5b\x96\xe5\x97\x10\xf8\x0b\xf5\x33\xfd\xb5\x76\xee\xfc\x5a\xe7\x0a\x4b\x4c\x11\x66\x7a\x76\x95\x70\x9c\xa3\x92\x87\xa3\x57\xc0\xc8\x2e\xc3\xd9\x30\x95\x8f\xa5\x2a\x6a\xda\xf7\xb9\x99\xa8\x75\x6d\xd0\x35\x04\x71\x36\xdd\xef\x68\x67\x6b\xad\x55\xf1\x24\xe9\x40\x6a\x8b\xda\x44\x8e\x7a\xf1\xce\x2e\x47\xc7\x45\x81\xf6\xac\xd5\x9b\x96\x59\x32\x98\x25\xc3\x5a\x6c\x48\xc4\x74\xde\xbc\x54\xc7\x46\x6d\x05\x37\xc1\x6f\x1f\x41\xfd\x19\x3c\xf6\x6b\x8b\xf7\xa4\xc9\xb2\x26\x6f\xf2\xcf\xf9\x7a\x83\x10\xaa\xf6\x59\xb6\x5f\x11\xc3\x03\xd2\x1d\x65\x8f\x05\xca\xb2\x7c\x20\x7b\x64\x25\x1d\x48\xbf\xf8\x3c\xe9\xa2\xef\x73\x66\x18\xd0\x72\x90\x47\x03\xc2\xda\x99\x39\x0e\x00\x04\x1b\xda\x14\xad\x90\xf7\xb4\xee\x22\x9a\x35\x84\xbc\x86\xcd\x19\xcb\x46\x67\x0a\x8c\x92\x03\x56\x48\x6b\x84\x16\x5c\x76\x8e\xce\x2d\xb5\x54\xf1\x5c\x72\xce\x27\xf3\x02\xba\xc0\x65\xa8\x24\x8e\x18\x1c\x53\x74\x9c\xe3\x44\x62\x57\x62\x8a\x6b\x27\x7e\x32\x16\xbe\x16\x1b\xac\x30\x73\x46\xee\x0e\xb6\x22\x64\xf2\x36\xee\x1c\x61\xb2\x06\xda\x92\xae\xb0\x06\x3b\xf3\x5b\x96\xa5\xc2\x42\xb6\x84\x82\x76\x86\xbd\xc5\xe9\x76\x4b\x9f\x28\x53\x29\xba\x83\x42\xc2\x28\xfa\x3d\xe4\x6d\xe1\x7b\x51\xa1\x3a\xe0\xe7\x91\x89\x7b\x26\xc1\xca\x6a\xa9\x11\xbe\x1c\xf6\xd0\x87\x71\x54\x46\x92\xaf\x49\xf4\x2a\x13\x85\x69\xde\xbd\x10\x18\x60\x7b\x29\x57\xd7\xf9\xe4\x7c\xc9\x62\x66\x80\x34\xbd\x61\x01\xe1\x77\xdc\xed\x46\x31\x45\x25\xcd\x91\x5e\x6e\xf0\x69\xb9\x41\x49\xd4\x1c\x08\xd7\xe0\x7d\x76\x63\xb0\xde\x0b\xd6\x24\x37\x86\x9c\x2c\x93\xc0\x4c\xc2\x84\x4f\x7d\x8f\x17\x02\x80\x98\x22\x17\x69\x85\x53\x25\xcb\x72\x98\xa9\x20\x70\x1a\x58\x2e\x70\x3b\x60\xa7\xcd\x35\x81\xc8\x9f\x66\xaa\xe0\x92\x4d\x9c\x04\x63\x4e\x3f\x0e\x03\xf8\xe8\xf4\xa3\x83\x24\x6c\x9f\x34\x02\xc6\x84\x0b\x95\x0c\x52\xec\x59\x03\x09\x4d\x7e\xb1\x8b\x7f\x49\x9c\xac\x74\x46\x6b\xd2\x2e\x4e\x8e\xb9\xc4\xcb\x01\xdc\x1e\xb1\xdd\x19\xbe\x77\x76\xe7\x17\xbe\xa6\x96\x35\xc7\x4b\xc4\xa6\xca\x25\x00\xdc\x05\x07\x27\x41\xdc\x09\x47\xd0\x39\xac\x95\xb1\x94\xa9\x57\x5f\xe8\x0e\x36\x44\x38\xc3\xc0\x50\x18\x8b\x23\xca\xfe\x7c\x16\xf5\xec\xd5\xab\x05\xa9\x33\x90\x9d\x81\xc6\x10\xa3\x97\xba\xa0\x52\x94\xf9\x5f\x43\x75\x46\xd4\x69\x67\x22\xbf\x81\x95\xf2\xc4\xfb\xd6\x35\xf1\x8b\xb1\x6d\x97\xfc\xcd\x10\xfb\x67\x51\x97\x6a\x7d\xb3\xd1\xd5\x6d\xc2\x78\xa2\xac\xea\x96\xc6\x3f\x8b\x9a\xa8\xf5\xed\x06\xe1\xdf\x96\x91\x96\x71\xda\xf7\x07\x37\xf6\xdb\xc6\x68\xd8\x2a\x90\xae\xfd\x8f\x1b\x84\x2d\x01\x29\x79\xb8\xe7\x4a\x32\x18\x8b\x61\x1a\xbb\x1c\xa2\xfd\x9f\x97\xfd\x55\xe1\x03\x14\x13\xfc\x74\x3a\xea\x0a\xec\x6d\x92\x39\xbe\x98\x53\x28\x48\x2c\x0c\x38\x9e\x4d\x60\x11\x78\x6f\x04\x5e\x6c\x4b\xd6\xe1\x6c\xa9\x14\x42\xa5\x7a\x83\xd5\x4c\xba\x5b\xab\xa4\x57\x55\xc2\x08\x2a\x5f\xdd\x44\x1a\x7e\x36\x02\x8d\xef\xcc\x7a\xae\x85\x75\xc1\xc8\xce\x2c\x63\x29\x67\x8c\x2f\xf3\x5b\x67\x1c\x61\xb6\x32\xb3\x56\x6c\xfc\x42\xbf\xe4\xaa\xe8\x81\x3f\xaa\x0e\x85\x5c\xf0\xed\x2d\x66\x33\x51\x27\x90\xa3\xa3\x49\xbf\xaa\x5f\x7f\xe5\xef\xc3\xdc\x0a\xb1\x36\xf7\x24\xa9\x30\x47\x8b\x16\x9e\xaa\xd6\xdc\x5c\x84\x31\x5b\xb2\xba\xc5\x33\xdd\x86\x71\xef\xd7\x61\xc6\x0d\x06\xbd\x64\xaa\xd6\x98\x99\xf6\xae\x77\x34\xcd\xf2\x21\xe2\xa6\x87\x39\x58\xf8\xe4\xc3\x4b\xb3\xd9\xc7\xea\x26\x2c\x4c\xda\x28\x2c\x1e\x8a\x5a\xf0\x51\xc9\xa9\x56\x42\x92\x1e\xf7\x67\xed\x16\xf7\x6b\xba\x21\xad\xcd\xc6\x7a\x7a\x30\xee\x45\x96\x4c\xf6\x8f\x80\xa6\x71\xfd\xf1\x45\xf7\x95\x32\xe4\xda\x05\x64\x99\x8a\x37\xf5\xe7\x5d\xad\x4c\x62\x04\x84\x90\xf6\x74\xba\xb2\x25\x21\xc4\x10\xeb\xa2\xd7\xe9\x04\x05\xa7\x3b\x40\x48\x63\x55\xec\xa8\xfc\x79\x2d\x40\xfb\x34\x60\x3c\x4b\x34\xee\xae\xf6\xe6\x0a\xf7\xa8\xcc\x55\xb1\xdd\x5a\xbc\xb6\x5b\xd2\x63\x6a\xfd\xeb\x74\xca\x95\x01\xe6\x8a\x5e\x08\x61\xf5\x6a\xda\x71\x40\x58\x19\xed\xa8\xcd\xaa\x5e\xaa\x77\xf4\xf1\xd3\xe4\x5e\xf8\x31\xdf\xc5\xf5\x4b\xd4\x58\xb3\x57\xf3\x29\xac\x8a\x0f\x71\xbd\x45\x76\x66\x3b\xd3\xb3\xac\xb0\x35\x15\xb6\x89\xc6\x1c\xa9\x58\x96\xe5\x8c\xfc\x29\xc5\x8e\x8d\xe0\x72\x29\x57\x30\xed\xf2\x3a\x2c\x40\x26\x95\x08\x9b\x5d\xbb\xf0\x5c\xa2\x3b\x5a\x52\x6b\xa8\xf9\xb5\x88\x3d\x2f\xb6\xbc\xad\x9c\xd1\xcf\x0b\x4c\x10\xc6\x8f\x06\xa4\xc3\x39\xb8\x29\x3e\xfc\x2f\x29\x24\x3e\xcc\xf5\xe4\xcb\x29\xe9\xda\x31\x6d\x32\x0b\xdb\xa4\x06\xa4\x9f\x70\x18\xaf\xd8\xe7\x7a\x53\x19\x9f\xb6\xe1\xdd\xde\x34\x02\x47\x8b\x12\x2d\xae\x2a\x61\x0f\x72\x84\x1c\xe1\xd9\xf5\x64\x20\x03\x98\x89\xc0\x93\x06\x14\x83\x18\x72\xcb\x3e\xdc\x49\xf4\x72\xa4\x77\x79\x8e\xe5\xcc\x07\x52\xcf\x83\x81\x00\xa4\x36\xea\xda\xa9\x23\xf9\x8c\xef\x23\xdb\x3a\x46\x5e\x53\xde\x63\x4b\x8f\x65\x7c\x26\x43\x8c\x86\x38\x07\x09\x7b\x72\xe3\x48\xd4\x92\x88\xff\xb6\xe5\x9b\x4b\x43\xed\xa7\xe7\x0b\xdb\x13\x54\x72\x8d\xb3\x10\x65\xbb\xce\x43\xa6\xed\x8a\x12\x93\xcb\xd0\x12\xf8\xfc\x19\xe1\x95\x42\x01\x62\xb0\x80\x18\x82\x4f\x95\xcb\x5e\xea\x8e\xca\x0f\x2a\xbf\x41\x73\xaa\x69\x86\x31\xa0\x2c\xf3\xac\xfc\x2b\x14\x63\xcf\x6a\xc8\x6f\x91\xc9\xfc\xcd\xb0\xc9\xc5\x7d\xb4\xd6\x78\x54\x62\x28\x23\x33\x88\x0e\x73\x63\xcd\xda\x9f\x78\x51\x6e\x7d\xb3\x89\xc2\xd5\x79\xce\xa2\x5c\xce\xe2\x0a\x55\x15\x67\x1f\x2e\x22\xed\x69\xaf\xf1\x8b\x52\xf5\xea\x25\x18\x1d\x82\xa0\xca\x07\xab\x8e\x8d\x55\x94\xc1\xdb\xa7\x0e\x2f\x9f\xfa\xf8\x1a\x0a\x32\x8b\xae\x0a\x29\x8d\xc4\xfc\xff\x4c\x5c\x56\x2b\xae\x03\xd2\xe2\xf2\xd0\xde\x4c\xdf\xde\x56\xe2\x9f\xc9\x4d\xf5\xf6\xad\x70\x06\xcb\x5e\xa0\x23\x36\x98\x12\x76\x89\x90\x0d\xd5\x86\x37\x0a\x17\xbc\xd1\x92\x6e\x03\x6f\xdc\x7b\x46\x18\x7b\x4f\x66\x2b\x0c\x0f\x10\xfe\x72\x19\x4e\x43\xfe\x92\x22\x3c\x46\xdd\x4b\xf2\xe2\x64\xd5\x59\x36\x9e\x1b\xf4\x7b\x36\xe7\x3e\xcb\xe6\x4b\x1f\x5e\xdd\xd8\x85\xf1\xfc\x45\x68\xbc\x22\xea\xd5\xe1\x15\xa3\xfe\x7f\xef\x65\x97\x9a\x45\xab\xf1\xe5\xdb\x8f\x92\x87\x64\x54\x54\xc1\x0e\xb8\x4a\x9e\x98\xea\xc4\xa4\x12\xbb\x3c\x11\x32\xf1\x1a\xa4\x7f\x83\xc2\x5a\x6b\xec\x9e\x3d\xca\xf3\x27\xc3\x70\xf3\xfc\xf5\x9b\xe7\xee\xe6\xe7\xe7\xb5\xcb\x9b\xe7\x36\x93\x12\x2f\x6f\x71\x76\x4e\x71\x7e\x51\x59\xb6\x28\x2f\x62\x35\xbd\x69\x89\xea\x41\x02\xfd\xa9\xb5\x89\x36\xa9\xfd\xb6\x4e\x76\x3a\xa5\xe1\xf5\xc4\xb6\x51\x96\x2d\xb6\x03\x59\x06\xef\x49\x7c\x6a\x1b\xaa\x0c\x13\x85\x38\xc5\xee\x62\xfb\x2c\x8f\x73\xce\xe4\x9d\x48\x79\xf7\x01\xcc\xee\xf2\xd7\xd8\xcb\x65\x57\xd1\x36\x26\xd3\xb7\x23\xe1\x69\x26\xa7\x48\xe3\xd0\xb8\x80\xfb\xaf\xb1\x46\x74\x66\x3b\xe5\xf2\xe0\xb6\xf3\x6e\x51\xc7\xae\x2d\xa3\xd7\x2e\x3f\x23\x9f\xd9\x87\xcc\xcc\xab\x5c\xe6\x1d\x9f\x2e\xd4\x8c\x8b\x40\xe7\x9c\x65\xf4\xe2\xa5\xfc\x1b\x14\x78\x32\x75\xf3\x00\xe1\x49\xe3\x96\x71\x36\x76\x67\x6c\x36\x53\xf7\xeb\x66\x05\xce\xac\x96\x2a\xf9\xc2\xac\xc0\x9a\x95\x8c\xeb\x13\x73\xe7\x31\xaf\xce\x88\xcb\xe8\x5e\xb1\x9c\x0b\x18\x84\x9f\x73\x69\x54\xd4\xd8\x3a\xd1\xdf\x4b\x45\x67\x83\x56\x3d\x1f\xce\xe5\xab\xa1\x82\x47\xcf\x2a\xa1\x52\x35\x5a\x86\x90\x2e\xb4\x7e\xc1\x0b\xac\x37\x71\xb5\xf7\x4c\x40\x95\x82\xdd\xa0\x52\xa4\x71\x08\xb8\xf6\x95\xb1\xbc\x7c\x9a\x8e\xa1\x9a\x43\xf3\x31\x14\x9b\xa5\x29\x8a\xf0\x52\x0f\x97\x80\x7d\xfd\x5b\x4a\x8d\xe7\xe7\xdc\xc8\x52\xc2\xd5\xc7\xd1\xc3\x60\xab\x74\xae\xe6\x3f\x1a\x2a\xf7\xb4\xf8\x18\xf2\xa8\x6f\x13\x57\x6c\x07\x04\x96\x97\xc4\x39\x0f\x4c\xa5\x7d\x41\xbb\x9c\x9b\x90\x44\xa6\xc8\x94\x98\x1a\x45\x0f\x70\x2a\xbc\xf3\x63\xff\x84\x85\x47\x3c\xa1\x63\xfa\x20\x44\x0f\xd4\x54\xeb\xbe\x54\xa0\x59\x96\x8f\xa4\xc6\x35\xa1\x98\x92\xd5\x2d\xaa\x6c\x06\x94\x74\xd7\xea\x0a\x79\x27\x0b\x61\xc3\xf1\x58\xca\xaa\x07\x95\xb4\x96\x5e\x4d\xb9\x21\x81\x37\x20\xb3\x2c\xef\xfc\x27\x09\x7d\xb8\x2b\x0c\x51\xb3\xfa\x9b\x6d\xfe\xc1\x47\xa2\x2e\x7b\x70\x57\x6c\x8d\x15\xb0\x1e\x1a\x93\xa2\x09\x2b\x28\x68\x40\x7b\xb2\xba\x41\xc8\x06\xe8\xae\xd8\x8e\xb5\x18\xe0\x53\x43\x38\x32\xe4\xd3\x9e\xe5\x9c\xb9\x32\xdc\x67\xa1\x7f\xb3\xe7\xa2\x01\x4f\xa0\xae\x51\x8c\xa3\xfc\x28\xb8\x82\xe7\x30\x69\xa0\x12\xb8\x0a\x2c\x6b\x1b\xe7\x0b\xcf\xfa\xa2\xf5\xe8\x74\x4a\x27\xee\xfe\x74\x6a\x16\x88\xb6\xdb\x7f\xff\xb7\xfb\xed\xf7\xef\xdf\xb6\x1f\xbf\x7e\xf9\x71\xff\x1f\x3f\xb6\x5b\x53\xd9\x90\x2b\xfd\x08\xdb\x3f\x5f\x96\x94\x6c\xcc\x95\x29\x75\x0c\x9a\x5b\x09\x8f\x6c\x54\x20\xa1\xf9\x28\x76\x83\xe0\xc0\xd5\xf8\xea\x40\x41\x9b\x26\x67\x48\x1b\x14\xc7\x51\x7e\xf3\x53\x48\x8b\x4a\xc3\x41\x2d\xa1\x77\x31\x46\xf1\x9e\x53\xae\x1c\x97\xbd\x31\xe9\x47\xf1\xc6\x5f\x6f\x31\x76\xb4\x11\x4f\xdf\x84\x50\x08\xe9\xf2\xb5\xd5\xb5\xd1\x58\x23\xdc\x9a\x1a\x3d\xbe\x2f\xe4\x12\xe9\x44\x91\x60\x0e\xd5\x6c\x17\x71\xd1\x34\x3b\x5e\xeb\xa4\x4a\x84\x95\x7f\x4c\xb7\xc1\x7f\x91\xf2\x00\xad\x90\xf0\xd1\x16\x7d\xd5\x79\x93\xa8\xbb\xb5\xc9\x37\x79\x4d\x8d\xdd\xb7\xa8\x5c\xb7\x9b\x39\xed\xd7\x4e\x06\x90\xa3\x29\x65\xcb\xf4\xc3\x30\xa4\xee\x8d\x5c\xc6\xb5\x4d\x94\xc7\xbe\x71\xa5\xe5\x7d\x6f\x73\x8b\x2a\x64\xf3\x7d\x5b\x6c\xeb\xb3\x5c\x75\xbb\xcb\x6f\x90\xae\x64\xb1\x35\xf9\x87\xa9\x97\x86\xc1\xda\x6f\xe5\x98\x2d\xec\x58\xd7\x62\xe2\x6a\x4c\x31\x6b\xca\x94\x2e\xad\x5a\xf0\x32\x35\xc6\xf4\x76\x5f\x53\xd9\xa4\x98\x8d\x7f\xb0\x1e\xee\x1b\x66\x38\x67\x75\x8b\xe1\x59\x01\x1f\xad\xbf\xad\x37\xb8\x16\xbc\x65\x8f\xe5\x71\x92\x7d\x99\x76\x4a\x0d\x63\xf9\xee\x5d\x2f\x6a\xda\x77\x62\x54\xe5\x3f\xfd\x76\x73\x93\xea\x10\xa8\x8f\x74\x18\x3e\xf1\x56\x94\x1c\x4b\x31\x29\x18\xcb\xb5\x57\x67\x51\x60\xa0\xaa\x2b\xd3\x77\xa9\x8d\xc0\xce\x94\x4a\xb3\xae\x54\xf9\xd1\x5d\x56\x29\xf1\x85\xa7\x96\xeb\xbf\x02\x1a\x06\x72\x06\xdb\xe9\xa4\xe6\x62\x2f\x4f\x1b\xb6\x4f\xf1\x1a\xf2\xb4\xbb\x4d\xf1\xda\x4d\xdc\xe7\xe9\x7f\xf1\x24\x49\x92\x80\x56\x42\x79\x93\x8c\x6a\x6a\xdb\xc2\x0c\xa4\x68\x83\x36\x48\x6f\x34\x0e\x0f\x3a\xe1\x63\x75\xfb\xf2\xeb\xec\x07\x69\xbd\xc1\x9c\xee\x3f\x29\xd8\x2d\x30\x7c\x38\xbb\x87\x7f\xa5\x0a\x24\xa3\x7d\xc9\x0b\xd3\x74\x98\x95\xaf\x22\x16\xac\x8d\x17\xac\xc1\xe9\xbb\xd4\x6c\x61\x19\xf8\x1f\xfe\x27\x00\x00\xff\xff\xfe\xde\x2b\xee\x87\x1e\x00\x00") + +func init() { + err := CTX.Err() + if err != nil { + panic(err) + } + + var f webdav.File + + var rb *bytes.Reader + var r *gzip.Reader + + rb = bytes.NewReader(FileAccountsJs) + r, err = gzip.NewReader(rb) + if err != nil { + panic(err) + } + + err = r.Close() + if err != nil { + panic(err) + } + + f, err = FS.OpenFile(CTX, "accounts.js", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777) + if err != nil { + panic(err) + } + + _, err = io.Copy(f, r) + if err != nil { + panic(err) + } + + err = f.Close() + if err != nil { + panic(err) + } + + Handler = &webdav.Handler{ + FileSystem: FS, + LockSystem: webdav.NewMemLS(), + } + +} + +// Open a file +func (hfs *HTTPFS) Open(path string) (http.File, error) { + path = hfs.Prefix + path + + f, err := FS.OpenFile(CTX, path, os.O_RDONLY, 0644) + if err != nil { + return nil, err + } + + return f, nil +} + +// ReadFile is adapTed from ioutil +func ReadFile(path string) ([]byte, error) { + f, err := FS.OpenFile(CTX, path, os.O_RDONLY, 0644) + if err != nil { + return nil, err + } + + buf := bytes.NewBuffer(make([]byte, 0, bytes.MinRead)) + + // If the buffer overflows, we will get bytes.ErrTooLarge. + // Return that as an error. Any other panic remains. + defer func() { + e := recover() + if e == nil { + return + } + if panicErr, ok := e.(error); ok && panicErr == bytes.ErrTooLarge { + err = panicErr + } else { + panic(e) + } + }() + _, err = buf.ReadFrom(f) + return buf.Bytes(), err +} + +// WriteFile is adapTed from ioutil +func WriteFile(filename string, data []byte, perm os.FileMode) error { + f, err := FS.OpenFile(CTX, filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm) + if err != nil { + return err + } + n, err := f.Write(data) + if err == nil && n < len(data) { + err = io.ErrShortWrite + } + if err1 := f.Close(); err == nil { + err = err1 + } + return err +} + +// WalkDirs looks for files in the given dir and returns a list of files in it +// usage for all files in the b0x: WalkDirs("", false) +func WalkDirs(name string, includeDirsInList bool, files ...string) ([]string, error) { + f, err := FS.OpenFile(CTX, name, os.O_RDONLY, 0) + if err != nil { + return nil, err + } + + fileInfos, err := f.Readdir(0) + if err != nil { + return nil, err + } + + err = f.Close() + if err != nil { + return nil, err + } + + for _, info := range fileInfos { + filename := path.Join(name, info.Name()) + + if includeDirsInList || !info.IsDir() { + files = append(files, filename) + } + + if info.IsDir() { + files, err = WalkDirs(filename, includeDirsInList, files...) + if err != nil { + return nil, err + } + } + } + + return files, nil +} diff --git a/pkg/assets/embed.yml b/pkg/assets/embed.yml new file mode 100644 index 0000000000..6dcfc266a9 --- /dev/null +++ b/pkg/assets/embed.yml @@ -0,0 +1,17 @@ +--- +pkg: "assets" +dest: "." +output: "embed.go" +fmt: true +noprefix: true + +compression: + compress: true + +custom: + - files: + - "../../assets/" + base: "../../assets/" + prefix: "" + +... diff --git a/pkg/assets/option.go b/pkg/assets/option.go new file mode 100644 index 0000000000..8dca9c43e9 --- /dev/null +++ b/pkg/assets/option.go @@ -0,0 +1,40 @@ +package assets + +import ( + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-pkg/v2/log" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} From b58ddeeb627028b66e0c4f3d0294e9767d840e31 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 30 Jun 2020 12:55:45 +0200 Subject: [PATCH 173/407] Add stubs for three missing service interface functions --- pkg/service/v0/service.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 60380cf73a..225e69a825 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -33,7 +33,6 @@ import ( ) // New returns a new instance of Service -// TODO pass in logger as options func New(opts ...Option) (s *Service, err error) { options := newOptions(opts...) logger := options.Logger @@ -421,6 +420,21 @@ func (s Service) DeleteGroup(c context.Context, req *proto.DeleteGroupRequest, r return errors.New("not implemented") } +// AddMember implements the AccountsServiceHandler interface +func (s Service) AddMember(c context.Context, req *proto.AddMemberRequest, res *proto.Group) error { + return errors.New("not implemented") +} + +// RemoveMember implements the AccountsServiceHandler interface +func (s Service) RemoveMember(c context.Context, req *proto.RemoveMemberRequest, res *proto.Group) error { + return errors.New("not implemented") +} + +// ListMembers implements the AccountsServiceHandler interface +func (s Service) ListMembers(c context.Context, req *proto.ListMembersRequest, res *proto.ListMembersResponse) error { + return errors.New("not implemented") +} + // RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. func RegisterSettingsBundles(l *log.Logger) { // TODO this won't work with a registry other than mdns. Look into Micro's client initialization. From 3f04adf4ff75cf8284f0d0ba0703005a913fd8db Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 30 Jun 2020 12:56:46 +0200 Subject: [PATCH 174/407] Set up http server - set up http server for a) handling the service requests and b) serving the static assets for the ocis-web extension - align the server command with other ocis-extensions, including config variable naming --- pkg/command/server.go | 107 +++++++++++++++++++++++++++----------- pkg/config/config.go | 15 ++++++ pkg/flagset/flagset.go | 55 +++++++++++++------- pkg/metrics/metrics.go | 22 ++++++++ pkg/server/grpc/option.go | 23 +++----- pkg/server/grpc/server.go | 10 ++-- pkg/server/http/option.go | 76 +++++++++++++++++++++++++++ pkg/server/http/server.go | 71 +++++++++++++++++++++++++ 8 files changed, 308 insertions(+), 71 deletions(-) create mode 100644 pkg/metrics/metrics.go create mode 100644 pkg/server/http/option.go create mode 100644 pkg/server/http/server.go diff --git a/pkg/command/server.go b/pkg/command/server.go index 57ba1f522d..7343e93ae5 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -2,14 +2,17 @@ package command import ( "context" - "syscall" - - "github.com/owncloud/ocis-accounts/pkg/flagset" + "os" + "os/signal" + "strings" "github.com/micro/cli/v2" "github.com/oklog/run" "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/flagset" + "github.com/owncloud/ocis-accounts/pkg/metrics" "github.com/owncloud/ocis-accounts/pkg/server/grpc" + "github.com/owncloud/ocis-accounts/pkg/server/http" svc "github.com/owncloud/ocis-accounts/pkg/service/v0" ) @@ -20,41 +23,83 @@ func Server(cfg *config.Config) *cli.Command { Usage: "Start ocis accounts service", Description: "uses an LDAP server as the storage backend", Flags: flagset.ServerWithConfig(cfg), - Before: func(c *cli.Context) error { - return ParseConfig(c, cfg) + Before: func(ctx *cli.Context) error { + if cfg.HTTP.Root != "/" { + cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/") + } + + // When running on single binary mode the before hook from the root command won't get called. We manually + // call this before hook from ocis command, so the configuration can be loaded. + return ParseConfig(ctx, cfg) }, Action: func(c *cli.Context) error { logger := NewLogger(cfg) - gr := run.Group{} - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - service := grpc.NewService( - grpc.Logger(logger), - grpc.Context(ctx), - grpc.Config(cfg), - grpc.Name(cfg.Server.Name), - grpc.Namespace(cfg.Server.Namespace), - grpc.Address(cfg.Server.Address), - grpc.Flags(flagset.RootWithConfig(config.New())), + var ( + gr = run.Group{} + ctx, cancel = context.WithCancel(context.Background()) + mtrcs = metrics.New() ) - gr.Add(func() error { - logger.Info().Str("service", service.Name()).Msg("Reporting settings bundle to account service") - go svc.RegisterSettingsBundles(&logger) - return service.Run() - }, func(err error) { - if err != nil { - logger.Error().Err(err).Msg("account service died") - } else { - logger.Info(). - Str("service", service.Name()). - Msg("Shutting down server") - } - cancel() - }) + defer cancel() + + { + server := http.Server( + http.Logger(logger), + http.Name(cfg.Server.Name), + http.Context(ctx), + http.Config(cfg), + http.Metrics(mtrcs), + http.Flags(flagset.RootWithConfig(cfg)), + http.Flags(flagset.ServerWithConfig(cfg)), + ) + + gr.Add(server.Run, func(_ error) { + logger.Info(). + Str("server", "http"). + Msg("Shutting down server") + + cancel() + }) + } + + { + server := grpc.Server( + grpc.Logger(logger), + grpc.Name(cfg.Server.Name), + grpc.Context(ctx), + grpc.Config(cfg), + grpc.Metrics(mtrcs), + ) + + gr.Add(func() error { + logger.Info().Str("service", server.Name()).Msg("Reporting settings bundles to settings service") + go svc.RegisterSettingsBundles(&logger) + return server.Run() + }, func(_ error) { + logger.Info(). + Str("server", "grpc"). + Msg("Shutting down server") + + cancel() + }) + } + + { + stop := make(chan os.Signal, 1) + + gr.Add(func() error { + signal.Notify(stop, os.Interrupt) + + <-stop + + return nil + }, func(err error) { + close(stop) + cancel() + }) + } - run.SignalHandler(ctx, syscall.SIGKILL) return gr.Run() }, } diff --git a/pkg/config/config.go b/pkg/config/config.go index 2cafaddae3..5e164c5e99 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -24,6 +24,19 @@ type LDAPSchema struct { Groups string } +// HTTP defines the available http configuration. +type HTTP struct { + Addr string + Namespace string + Root string +} + +// GRPC defines the available grpc configuration. +type GRPC struct { + Addr string + Namespace string +} + // Server configures a server. type Server struct { Name string @@ -42,6 +55,8 @@ type Log struct { // Config merges all Account config parameters. type Config struct { LDAP LDAP + HTTP HTTP + GRPC GRPC Server Server Log Log } diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index 3be48c4731..c52509a7b7 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -35,36 +35,51 @@ func RootWithConfig(cfg *config.Config) []cli.Flag { // ServerWithConfig applies cfg to the root flagset func ServerWithConfig(cfg *config.Config) []cli.Flag { return []cli.Flag{ + &cli.StringFlag{ + Name: "http-namespace", + Value: "com.owncloud.web", + Usage: "Set the base namespace for the http namespace", + EnvVars: []string{"ACCOUNTS_HTTP_NAMESPACE"}, + Destination: &cfg.HTTP.Namespace, + }, + &cli.StringFlag{ + Name: "http-addr", + Value: "localhost:9181", + Usage: "Address to bind http server", + EnvVars: []string{"ACCOUNTS_HTTP_ADDR"}, + Destination: &cfg.HTTP.Addr, + }, + &cli.StringFlag{ + Name: "http-root", + Value: "/", + Usage: "Root path of http server", + EnvVars: []string{"ACCOUNTS_HTTP_ROOT"}, + Destination: &cfg.HTTP.Root, + }, + &cli.StringFlag{ + Name: "grpc-namespace", + Value: "com.owncloud.api", + Usage: "Set the base namespace for the grpc namespace", + EnvVars: []string{"ACCOUNTS_GRPC_NAMESPACE"}, + Destination: &cfg.GRPC.Namespace, + }, + &cli.StringFlag{ + Name: "grpc-addr", + Value: "localhost:9180", + Usage: "Address to bind grpc server", + EnvVars: []string{"ACCOUNTS_GRPC_ADDR"}, + Destination: &cfg.GRPC.Addr, + }, &cli.StringFlag{ Name: "name", Value: "accounts", - DefaultText: "accounts", Usage: "service name", EnvVars: []string{"ACCOUNTS_NAME"}, Destination: &cfg.Server.Name, }, - &cli.StringFlag{ - Name: "namespace", - Aliases: []string{"ns"}, - Value: "com.owncloud.api", - DefaultText: "com.owncloud.api", - Usage: "namespace", - EnvVars: []string{"ACCOUNTS_NAMESPACE"}, - Destination: &cfg.Server.Namespace, - }, - &cli.StringFlag{ - Name: "address", - Aliases: []string{"addr"}, - Value: "localhost:9180", - DefaultText: "localhost:9180", - Usage: "service endpoint", - EnvVars: []string{"ACCOUNTS_ADDRESS"}, - Destination: &cfg.Server.Address, - }, &cli.StringFlag{ Name: "accounts-data-path", Value: "/var/tmp/ocis-accounts", - DefaultText: "/var/tmp/ocis-accounts", Usage: "accounts folder", EnvVars: []string{"ACCOUNTS_DATA_PATH"}, Destination: &cfg.Server.AccountsDataPath, diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go new file mode 100644 index 0000000000..0712724271 --- /dev/null +++ b/pkg/metrics/metrics.go @@ -0,0 +1,22 @@ +package metrics + +var ( + // Namespace defines the namespace for the defines metrics. + Namespace = "ocis" + + // Subsystem defines the subsystem for the defines metrics. + Subsystem = "accounts" +) + +// Metrics defines the available metrics of this service. +type Metrics struct { + // Counter *prometheus.CounterVec +} + +// New initializes the available metrics. +func New() *Metrics { + m := &Metrics{ + } + // TODO: implement metrics + return m +} diff --git a/pkg/server/grpc/option.go b/pkg/server/grpc/option.go index 8ccb9c4bf6..06e8538e9f 100644 --- a/pkg/server/grpc/option.go +++ b/pkg/server/grpc/option.go @@ -5,6 +5,7 @@ import ( "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/metrics" "github.com/owncloud/ocis-pkg/v2/log" ) @@ -14,11 +15,10 @@ type Option func(o *Options) // Options defines the available options for this package. type Options struct { Name string - Address string Logger log.Logger Context context.Context Config *config.Config - Namespace string + Metrics *metrics.Metrics Flags []cli.Flag } @@ -33,13 +33,6 @@ func newOptions(opts ...Option) Options { return opt } -// Logger provides a function to set the logger option. -func Logger(val log.Logger) Option { - return func(o *Options) { - o.Logger = val - } -} - // Name provides a name for the service. func Name(val string) Option { return func(o *Options) { @@ -47,10 +40,10 @@ func Name(val string) Option { } } -// Address provides an address for the service. -func Address(val string) Option { +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { return func(o *Options) { - o.Address = val + o.Logger = val } } @@ -68,10 +61,10 @@ func Config(val *config.Config) Option { } } -// Namespace provides a function to set the namespace option. -func Namespace(val string) Option { +// Metrics provides a function to set the metrics option. +func Metrics(val *metrics.Metrics) Option { return func(o *Options) { - o.Namespace = val + o.Metrics = val } } diff --git a/pkg/server/grpc/server.go b/pkg/server/grpc/server.go index 6f8d342121..6752862863 100644 --- a/pkg/server/grpc/server.go +++ b/pkg/server/grpc/server.go @@ -6,15 +6,15 @@ import ( "github.com/owncloud/ocis-pkg/v2/service/grpc" ) -// NewService initializes a new go-micro service ready to run -func NewService(opts ...Option) grpc.Service { +// Server initializes a new go-micro service ready to run +func Server(opts ...Option) grpc.Service { options := newOptions(opts...) service := grpc.NewService( - grpc.Name(options.Name), + grpc.Name(options.Config.Server.Name), grpc.Context(options.Context), - grpc.Address(options.Address), - grpc.Namespace(options.Namespace), + grpc.Address(options.Config.GRPC.Addr), + grpc.Namespace(options.Config.GRPC.Namespace), grpc.Logger(options.Logger), grpc.Flags(options.Flags...), ) diff --git a/pkg/server/http/option.go b/pkg/server/http/option.go new file mode 100644 index 0000000000..3687b735bb --- /dev/null +++ b/pkg/server/http/option.go @@ -0,0 +1,76 @@ +package http + +import ( + "context" + + "github.com/micro/cli/v2" + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/metrics" + "github.com/owncloud/ocis-pkg/v2/log" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Name string + Logger log.Logger + Context context.Context + Config *config.Config + Metrics *metrics.Metrics + Flags []cli.Flag +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Name provides a name for the service. +func Name(val string) Option { + return func(o *Options) { + o.Name = val + } +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} + +// Metrics provides a function to set the metrics option. +func Metrics(val *metrics.Metrics) Option { + return func(o *Options) { + o.Metrics = val + } +} + +// Flags provides a function to set the flags option. +func Flags(val []cli.Flag) Option { + return func(o *Options) { + o.Flags = append(o.Flags, val...) + } +} diff --git a/pkg/server/http/server.go b/pkg/server/http/server.go new file mode 100644 index 0000000000..fdd58b8c69 --- /dev/null +++ b/pkg/server/http/server.go @@ -0,0 +1,71 @@ +package http + +import ( + "github.com/go-chi/chi" + "github.com/owncloud/ocis-accounts/pkg/assets" + "github.com/owncloud/ocis-accounts/pkg/proto/v0" + svc "github.com/owncloud/ocis-accounts/pkg/service/v0" + "github.com/owncloud/ocis-accounts/pkg/version" + "github.com/owncloud/ocis-pkg/v2/middleware" + "github.com/owncloud/ocis-pkg/v2/service/http" +) + +// Server initializes the http service and server. +func Server(opts ...Option) http.Service { + options := newOptions(opts...) + + service := http.NewService( + http.Logger(options.Logger), + http.Name(options.Name), + http.Version(version.String), + http.Address(options.Config.HTTP.Addr), + http.Namespace(options.Config.HTTP.Namespace), + http.Context(options.Context), + http.Flags(options.Flags...), + ) + + handler, err := svc.New(svc.Logger(options.Logger), svc.Config(options.Config)) + if err != nil { + options.Logger.Fatal().Err(err).Msg("could not initialize service handler") + } + + mux := chi.NewMux() + + mux.Use(middleware.RealIP) + mux.Use(middleware.RequestID) + mux.Use(middleware.Cache) + mux.Use(middleware.Cors) + mux.Use(middleware.Secure) + + mux.Use(middleware.Version( + options.Name, + version.String, + )) + + mux.Use(middleware.Logger( + options.Logger, + )) + + mux.Use(middleware.Static( + options.Config.HTTP.Root, + assets.New( + assets.Logger(options.Logger), + assets.Config(options.Config), + ), + )) + + mux.Route(options.Config.HTTP.Root, func(r chi.Router) { + proto.RegisterAccountsServiceWeb(r, handler) + proto.RegisterGroupsServiceWeb(r, handler) + }) + + service.Handle( + "/", + mux, + ) + + if err := service.Init(); err != nil { + panic(err) + } + return service +} From 28e72bc5ada4e8b093fc8a93a8e38a1de62a7f69 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 30 Jun 2020 13:16:35 +0200 Subject: [PATCH 175/407] Remove obsolete config vars --- pkg/config/config.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/config/config.go b/pkg/config/config.go index 5e164c5e99..faaaf44d2c 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -40,8 +40,6 @@ type GRPC struct { // Server configures a server. type Server struct { Name string - Namespace string - Address string AccountsDataPath string } From f883c5bd0becc3e5d68169d3bf4d972390e5c394 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 30 Jun 2020 16:47:30 +0200 Subject: [PATCH 176/407] Set up reflex for `make watch` --- go.mod | 1 - go.sum | 46 +++++++----------------------------------- pkg/assets/assets.go | 24 ++++++++++++++++++++++ pkg/assets/embed.go | 6 +++--- pkg/config/config.go | 6 ++++++ pkg/flagset/flagset.go | 7 +++++++ reflex.conf | 5 +++++ ui/components/App.vue | 8 +++++--- 8 files changed, 57 insertions(+), 46 deletions(-) create mode 100644 reflex.conf diff --git a/go.mod b/go.mod index e49b08c384..75f8c8e4c7 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,6 @@ require ( github.com/golang/protobuf v1.4.2 github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.6.0 github.com/oklog/run v1.1.0 diff --git a/go.sum b/go.sum index cc00b5b9c9..91bbac9cd7 100644 --- a/go.sum +++ b/go.sum @@ -57,14 +57,10 @@ github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3Q github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/semver/v3 v3.1.0 h1:Y2lUDsFKVRSYGojLJ1yLxSXdMmMYTYls0rCvoqmMUQk= -github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig/v3 v3.0.1 h1:RuaOafp+8qOLUPX1lInLfUrLc1MEVbnz7a40RLoixKY= github.com/Masterminds/sprig/v3 v3.0.1/go.mod h1:Cp7HwZjmqKrC+Y7XqSJOU2yRvAJRGLiohfgz5ZJj8+4= -github.com/Masterminds/sprig/v3 v3.1.0 h1:j7GpgZ7PdFqNsmncycTHsLmVPf5/3wJtlgW9TNDYD9Y= -github.com/Masterminds/sprig/v3 v3.1.0/go.mod h1:ONGMf7UfYGAbMXCZmQLy8x3lCDIPrEZE/rU8pmrbihA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= @@ -171,6 +167,7 @@ github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QH github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/reflex v0.2.0 h1:6d9WpWJseKjJvZEevKP7Pk42nPx2+BUTqmhNk8wZPwM= github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -223,6 +220,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cs3org/go-cs3apis v0.0.0-20200306065539-29abc33f5be0 h1:jTKILSBtDm0GEw3FtXPxc5wxGpaw2pxzREg1GBV9LIQ= github.com/cs3org/go-cs3apis v0.0.0-20200306065539-29abc33f5be0/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= @@ -502,17 +500,12 @@ github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0 github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/huandu/xstrings v1.3.0 h1:gvV6jG9dTgFEncxo+AF7PH6MZXi/vZl25owA/8Dg8Wo= github.com/huandu/xstrings v1.3.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= -github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= -github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= @@ -544,6 +537,7 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= @@ -561,6 +555,7 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -655,8 +650,6 @@ github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQz github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -705,6 +698,7 @@ github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4r github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= +github.com/ogier/pflag v0.0.1 h1:RW6JSWSu/RkSatfcLtogGfFgpim5p7ARQ10ECk5O750= github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= @@ -739,13 +733,7 @@ github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY github.com/owncloud/ocis-hello v0.1.0-alpha1/go.mod h1:tU2bOB7DjuXZ+ju+5A+7pUHmTfPIYUk3tMflqHTBTpE= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= -github.com/owncloud/ocis-pkg v1.2.1-0.20200115112437-3dd614fdcd51 h1:K720zP/n/8Y451mz3tSUAz4JkarK0GBqbF1A3i3294M= -github.com/owncloud/ocis-pkg v1.2.1-0.20200115112437-3dd614fdcd51/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= -github.com/owncloud/ocis-pkg v1.3.0 h1:2fkgvfd/spTjschuulYMHRuzxkCGGXae9ocebVYkm74= -github.com/owncloud/ocis-pkg v1.3.0/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= -github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV03z6zI= -github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170 h1:MYfyffPyTZbTofJjAz3LSQUIaKKcjjBBBIJGaEAkP8g= github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170/go.mod h1:s894msGwDsULmsROHkbsXFCP/eSqDcteDFUntZOiJdc= github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 h1:wk/7aAUITTrM192TFoIDq4fqzJQtFOQ0dDdSRkJ25SU= @@ -866,8 +854,6 @@ github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= @@ -895,7 +881,6 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= @@ -946,7 +931,6 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -1008,9 +992,6 @@ golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1027,17 +1008,11 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1076,7 +1051,6 @@ golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1174,16 +1148,11 @@ golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200427214658-4697a2867c88 h1:Nj7oNnL9tSACMt2JvszZN6P4IXiy1t6E/YRMr7YtaSw= -golang.org/x/tools v0.0.0-20200427214658-4697a2867c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f h1:JcoF/bowzCDI+MXu1yLqQGNO3ibqWsWq+Sk7pOT218w= -golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -1201,6 +1170,7 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -1293,8 +1263,6 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab h1:33/51YKJC1SC6WAomp3Feij834LXL1uK1Jmt45mkghE= -honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab/go.mod h1:NELv708mC2Q9lQf29l+sO/v7NIOAQzEXu7jcugNzwvM= honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.0.0-20191109101513-0171b7c15da1/go.mod h1:VJq7+38rpM4TSUbRiZX4P5UVAKK2UQpNQLZClkFQkpE= diff --git a/pkg/assets/assets.go b/pkg/assets/assets.go index 82f05233b0..a09debf445 100644 --- a/pkg/assets/assets.go +++ b/pkg/assets/assets.go @@ -3,6 +3,7 @@ package assets import ( "net/http" "os" + "path" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-pkg/v2/log" @@ -18,6 +19,29 @@ type assets struct { // Open just implements the HTTP filesystem interface. func (a assets) Open(original string) (http.File, error) { + if a.config.Asset.Path != "" { + if stat, err := os.Stat(a.config.Asset.Path); err == nil && stat.IsDir() { + custom := path.Join( + a.config.Asset.Path, + original, + ) + + if _, err := os.Stat(custom); !os.IsNotExist(err) { + f, err := os.Open(custom) + + if err != nil { + return nil, err + } + + return f, nil + } + } else { + a.logger.Warn(). + Str("path", a.config.Asset.Path). + Msg("Assets directory doesn't exist") + } + } + return FS.OpenFile( CTX, original, diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index aee06a1542..fb7bc4040b 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-06-29 17:28:18.895015 +0200 CEST m=+0.002488382" from config file "embed.yml" DO NOT EDIT. -// modification hash(2779c5cda0c9231b4f83452cd22127b5.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-06-30 16:23:26.152338 +0200 CEST m=+0.001900579" from config file "embed.yml" DO NOT EDIT. +// modification hash(8102574180b123058ca85f1208ee4e4c.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,7 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\x6d\x8f\xdb\xb8\x73\x7f\xdf\x4f\x21\x0b\x81\x4e\xc4\x31\xca\xee\xf5\x55\xa5\xb0\x7b\x41\xb0\x57\x04\x48\x93\x43\x92\x16\x2d\x5c\xc3\xe0\x4a\xa3\x15\x1b\x99\x14\x28\xca\xbb\x86\xcd\xef\x5e\xf0\x49\xa2\xbd\xde\xf6\xfa\x07\xfe\xaf\x2c\x3e\x0d\x87\x3f\xce\xfc\x66\x86\x6e\xa0\x65\x1c\xf2\xbc\x9d\x78\xad\x98\xe0\x39\x3a\xa6\xd3\x08\xc9\xa8\x24\xab\x55\x5a\xad\xe6\x01\x85\x01\x1d\x55\x0e\xe4\x08\xcf\x83\x90\x6a\x2c\x8f\x5a\x63\x28\x7c\x0b\xe9\x48\x88\x42\xc7\x3d\x95\x09\x90\x97\x3d\x5f\x1f\xfe\x1b\x6a\x55\x0c\x52\x28\xa1\x0e\x03\x60\x49\xa0\xe8\xe8\xf8\xf5\x89\xff\x29\xc5\x00\x52\x1d\x30\x27\x69\x58\x98\x12\x62\x66\x89\x36\xf9\x7e\xd8\x3d\x88\xfe\xce\xfd\x94\x47\x8d\x05\xe1\x05\x53\x20\xa9\x12\xf2\x74\x4a\x7f\xff\x3d\x34\x52\xcc\x08\x2f\xe8\x78\xe0\xf5\xa7\x78\xfc\xac\x27\xc5\x94\xf0\x42\x89\xef\x4a\x32\xfe\xf8\x83\x3e\xda\x29\x51\x3b\xad\x82\x0e\x49\x6d\x0e\x8f\x25\xe6\xee\x10\x82\x40\x96\xc1\x72\x84\x84\xf1\x51\x51\x5e\x1b\x2d\xbb\x3b\x28\x3b\xcc\xc2\x31\x6b\x09\x54\x41\x2e\x96\xc9\xc8\xec\x0b\x4f\xc9\x7d\xce\x4f\xa7\xf5\x06\x55\x12\xd4\x24\x79\xc2\x8a\x2d\xe3\x7b\xf1\x33\xc6\xcc\x6c\xea\xb6\xe4\x24\x1d\xa7\x71\x00\xde\x40\xf3\x5d\x51\xa9\xd2\xb0\x6e\x9e\x2d\x30\x43\x47\xd6\xe6\x29\x3c\x43\x3d\x29\xc6\x1f\x53\x42\x08\x47\xaa\x93\xe2\x29\xb1\x5b\x4a\x29\x64\x9e\xfe\x0b\x70\x07\x41\xc2\xc6\x84\xf6\x12\x68\x73\x48\xe4\xc4\xb9\x59\x82\x2a\x23\xa2\x16\xbb\xa1\x07\x05\x8d\x13\x61\xc5\x5a\x39\xa6\x2d\xbc\x48\x16\x54\x78\xc8\x91\x6e\x85\xcc\x65\xb1\x03\xd5\x89\x86\x08\x2c\x0b\x2a\x1f\x09\xab\x2a\xa7\x3e\x25\xb2\x68\xa0\x87\x47\xaa\xc0\x6c\x40\x5d\x77\x4d\x9e\x72\x8a\xa5\xdd\xb3\xb6\xbb\xd4\x84\x90\x09\xd5\x82\x2b\xc6\x27\x08\x1b\xd4\x5a\x1b\x0d\x38\x3c\x2b\xa3\x40\xd8\x07\xc9\x62\x04\xae\x88\x2c\xb6\xfe\x97\xca\xc7\x0a\xfa\x11\x92\x33\x85\xe7\xf9\xf6\x1c\x17\x38\xc6\x18\x91\xe8\xe0\xee\x08\x95\x2c\x1a\x36\x0e\x54\xd5\xdd\xfd\x73\x0d\x83\x45\xda\x8e\x20\x6d\x36\x4a\x9d\x86\xf1\x2e\x59\x26\x0b\xfa\x20\xa7\x41\xe5\x61\xd4\xc9\x42\x15\x27\xd1\xe5\x54\x06\x81\x8e\x8c\xfe\x9a\x2d\xee\x5c\xc8\x1d\xed\x8d\xb4\xae\xb0\xc6\x62\x34\xe6\x06\x3c\xc1\xe1\x2e\xd2\xae\x5c\x8e\xf1\x9f\x0c\xfa\x26\xc5\x9d\x45\xfc\x0a\x7a\xc7\x3d\xed\x27\x28\xed\x38\x36\x72\x4a\x27\x4e\xeb\x05\x21\xb7\x5b\x96\xe5\x97\x10\xf8\x0b\xf5\x33\xfd\xb5\x76\xee\xfc\x5a\xe7\x0a\x4b\x4c\x11\x66\x7a\x76\x95\x70\x9c\xa3\x92\x87\xa3\x57\xc0\xc8\x2e\xc3\xd9\x30\x95\x8f\xa5\x2a\x6a\xda\xf7\xb9\x99\xa8\x75\x6d\xd0\x35\x04\x71\x36\xdd\xef\x68\x67\x6b\xad\x55\xf1\x24\xe9\x40\x6a\x8b\xda\x44\x8e\x7a\xf1\xce\x2e\x47\xc7\x45\x81\xf6\xac\xd5\x9b\x96\x59\x32\x98\x25\xc3\x5a\x6c\x48\xc4\x74\xde\xbc\x54\xc7\x46\x6d\x05\x37\xc1\x6f\x1f\x41\xfd\x19\x3c\xf6\x6b\x8b\xf7\xa4\xc9\xb2\x26\x6f\xf2\xcf\xf9\x7a\x83\x10\xaa\xf6\x59\xb6\x5f\x11\xc3\x03\xd2\x1d\x65\x8f\x05\xca\xb2\x7c\x20\x7b\x64\x25\x1d\x48\xbf\xf8\x3c\xe9\xa2\xef\x73\x66\x18\xd0\x72\x90\x47\x03\xc2\xda\x99\x39\x0e\x00\x04\x1b\xda\x14\xad\x90\xf7\xb4\xee\x22\x9a\x35\x84\xbc\x86\xcd\x19\xcb\x46\x67\x0a\x8c\x92\x03\x56\x48\x6b\x84\x16\x5c\x76\x8e\xce\x2d\xb5\x54\xf1\x5c\x72\xce\x27\xf3\x02\xba\xc0\x65\xa8\x24\x8e\x18\x1c\x53\x74\x9c\xe3\x44\x62\x57\x62\x8a\x6b\x27\x7e\x32\x16\xbe\x16\x1b\xac\x30\x73\x46\xee\x0e\xb6\x22\x64\xf2\x36\xee\x1c\x61\xb2\x06\xda\x92\xae\xb0\x06\x3b\xf3\x5b\x96\xa5\xc2\x42\xb6\x84\x82\x76\x86\xbd\xc5\xe9\x76\x4b\x9f\x28\x53\x29\xba\x83\x42\xc2\x28\xfa\x3d\xe4\x6d\xe1\x7b\x51\xa1\x3a\xe0\xe7\x91\x89\x7b\x26\xc1\xca\x6a\xa9\x11\xbe\x1c\xf6\xd0\x87\x71\x54\x46\x92\xaf\x49\xf4\x2a\x13\x85\x69\xde\xbd\x10\x18\x60\x7b\x29\x57\xd7\xf9\xe4\x7c\xc9\x62\x66\x80\x34\xbd\x61\x01\xe1\x77\xdc\xed\x46\x31\x45\x25\xcd\x91\x5e\x6e\xf0\x69\xb9\x41\x49\xd4\x1c\x08\xd7\xe0\x7d\x76\x63\xb0\xde\x0b\xd6\x24\x37\x86\x9c\x2c\x93\xc0\x4c\xc2\x84\x4f\x7d\x8f\x17\x02\x80\x98\x22\x17\x69\x85\x53\x25\xcb\x72\x98\xa9\x20\x70\x1a\x58\x2e\x70\x3b\x60\xa7\xcd\x35\x81\xc8\x9f\x66\xaa\xe0\x92\x4d\x9c\x04\x63\x4e\x3f\x0e\x03\xf8\xe8\xf4\xa3\x83\x24\x6c\x9f\x34\x02\xc6\x84\x0b\x95\x0c\x52\xec\x59\x03\x09\x4d\x7e\xb1\x8b\x7f\x49\x9c\xac\x74\x46\x6b\xd2\x2e\x4e\x8e\xb9\xc4\xcb\x01\xdc\x1e\xb1\xdd\x19\xbe\x77\x76\xe7\x17\xbe\xa6\x96\x35\xc7\x4b\xc4\xa6\xca\x25\x00\xdc\x05\x07\x27\x41\xdc\x09\x47\xd0\x39\xac\x95\xb1\x94\xa9\x57\x5f\xe8\x0e\x36\x44\x38\xc3\xc0\x50\x18\x8b\x23\xca\xfe\x7c\x16\xf5\xec\xd5\xab\x05\xa9\x33\x90\x9d\x81\xc6\x10\xa3\x97\xba\xa0\x52\x94\xf9\x5f\x43\x75\x46\xd4\x69\x67\x22\xbf\x81\x95\xf2\xc4\xfb\xd6\x35\xf1\x8b\xb1\x6d\x97\xfc\xcd\x10\xfb\x67\x51\x97\x6a\x7d\xb3\xd1\xd5\x6d\xc2\x78\xa2\xac\xea\x96\xc6\x3f\x8b\x9a\xa8\xf5\xed\x06\xe1\xdf\x96\x91\x96\x71\xda\xf7\x07\x37\xf6\xdb\xc6\x68\xd8\x2a\x90\xae\xfd\x8f\x1b\x84\x2d\x01\x29\x79\xb8\xe7\x4a\x32\x18\x8b\x61\x1a\xbb\x1c\xa2\xfd\x9f\x97\xfd\x55\xe1\x03\x14\x13\xfc\x74\x3a\xea\x0a\xec\x6d\x92\x39\xbe\x98\x53\x28\x48\x2c\x0c\x38\x9e\x4d\x60\x11\x78\x6f\x04\x5e\x6c\x4b\xd6\xe1\x6c\xa9\x14\x42\xa5\x7a\x83\xd5\x4c\xba\x5b\xab\xa4\x57\x55\xc2\x08\x2a\x5f\xdd\x44\x1a\x7e\x36\x02\x8d\xef\xcc\x7a\xae\x85\x75\xc1\xc8\xce\x2c\x63\x29\x67\x8c\x2f\xf3\x5b\x67\x1c\x61\xb6\x32\xb3\x56\x6c\xfc\x42\xbf\xe4\xaa\xe8\x81\x3f\xaa\x0e\x85\x5c\xf0\xed\x2d\x66\x33\x51\x27\x90\xa3\xa3\x49\xbf\xaa\x5f\x7f\xe5\xef\xc3\xdc\x0a\xb1\x36\xf7\x24\xa9\x30\x47\x8b\x16\x9e\xaa\xd6\xdc\x5c\x84\x31\x5b\xb2\xba\xc5\x33\xdd\x86\x71\xef\xd7\x61\xc6\x0d\x06\xbd\x64\xaa\xd6\x98\x99\xf6\xae\x77\x34\xcd\xf2\x21\xe2\xa6\x87\x39\x58\xf8\xe4\xc3\x4b\xb3\xd9\xc7\xea\x26\x2c\x4c\xda\x28\x2c\x1e\x8a\x5a\xf0\x51\xc9\xa9\x56\x42\x92\x1e\xf7\x67\xed\x16\xf7\x6b\xba\x21\xad\xcd\xc6\x7a\x7a\x30\xee\x45\x96\x4c\xf6\x8f\x80\xa6\x71\xfd\xf1\x45\xf7\x95\x32\xe4\xda\x05\x64\x99\x8a\x37\xf5\xe7\x5d\xad\x4c\x62\x04\x84\x90\xf6\x74\xba\xb2\x25\x21\xc4\x10\xeb\xa2\xd7\xe9\x04\x05\xa7\x3b\x40\x48\x63\x55\xec\xa8\xfc\x79\x2d\x40\xfb\x34\x60\x3c\x4b\x34\xee\xae\xf6\xe6\x0a\xf7\xa8\xcc\x55\xb1\xdd\x5a\xbc\xb6\x5b\xd2\x63\x6a\xfd\xeb\x74\xca\x95\x01\xe6\x8a\x5e\x08\x61\xf5\x6a\xda\x71\x40\x58\x19\xed\xa8\xcd\xaa\x5e\xaa\x77\xf4\xf1\xd3\xe4\x5e\xf8\x31\xdf\xc5\xf5\x4b\xd4\x58\xb3\x57\xf3\x29\xac\x8a\x0f\x71\xbd\x45\x76\x66\x3b\xd3\xb3\xac\xb0\x35\x15\xb6\x89\xc6\x1c\xa9\x58\x96\xe5\x8c\xfc\x29\xc5\x8e\x8d\xe0\x72\x29\x57\x30\xed\xf2\x3a\x2c\x40\x26\x95\x08\x9b\x5d\xbb\xf0\x5c\xa2\x3b\x5a\x52\x6b\xa8\xf9\xb5\x88\x3d\x2f\xb6\xbc\xad\x9c\xd1\xcf\x0b\x4c\x10\xc6\x8f\x06\xa4\xc3\x39\xb8\x29\x3e\xfc\x2f\x29\x24\x3e\xcc\xf5\xe4\xcb\x29\xe9\xda\x31\x6d\x32\x0b\xdb\xa4\x06\xa4\x9f\x70\x18\xaf\xd8\xe7\x7a\x53\x19\x9f\xb6\xe1\xdd\xde\x34\x02\x47\x8b\x12\x2d\xae\x2a\x61\x0f\x72\x84\x1c\xe1\xd9\xf5\x64\x20\x03\x98\x89\xc0\x93\x06\x14\x83\x18\x72\xcb\x3e\xdc\x49\xf4\x72\xa4\x77\x79\x8e\xe5\xcc\x07\x52\xcf\x83\x81\x00\xa4\x36\xea\xda\xa9\x23\xf9\x8c\xef\x23\xdb\x3a\x46\x5e\x53\xde\x63\x4b\x8f\x65\x7c\x26\x43\x8c\x86\x38\x07\x09\x7b\x72\xe3\x48\xd4\x92\x88\xff\xb6\xe5\x9b\x4b\x43\xed\xa7\xe7\x0b\xdb\x13\x54\x72\x8d\xb3\x10\x65\xbb\xce\x43\xa6\xed\x8a\x12\x93\xcb\xd0\x12\xf8\xfc\x19\xe1\x95\x42\x01\x62\xb0\x80\x18\x82\x4f\x95\xcb\x5e\xea\x8e\xca\x0f\x2a\xbf\x41\x73\xaa\x69\x86\x31\xa0\x2c\xf3\xac\xfc\x2b\x14\x63\xcf\x6a\xc8\x6f\x91\xc9\xfc\xcd\xb0\xc9\xc5\x7d\xb4\xd6\x78\x54\x62\x28\x23\x33\x88\x0e\x73\x63\xcd\xda\x9f\x78\x51\x6e\x7d\xb3\x89\xc2\xd5\x79\xce\xa2\x5c\xce\xe2\x0a\x55\x15\x67\x1f\x2e\x22\xed\x69\xaf\xf1\x8b\x52\xf5\xea\x25\x18\x1d\x82\xa0\xca\x07\xab\x8e\x8d\x55\x94\xc1\xdb\xa7\x0e\x2f\x9f\xfa\xf8\x1a\x0a\x32\x8b\xae\x0a\x29\x8d\xc4\xfc\xff\x4c\x5c\x56\x2b\xae\x03\xd2\xe2\xf2\xd0\xde\x4c\xdf\xde\x56\xe2\x9f\xc9\x4d\xf5\xf6\xad\x70\x06\xcb\x5e\xa0\x23\x36\x98\x12\x76\x89\x90\x0d\xd5\x86\x37\x0a\x17\xbc\xd1\x92\x6e\x03\x6f\xdc\x7b\x46\x18\x7b\x4f\x66\x2b\x0c\x0f\x10\xfe\x72\x19\x4e\x43\xfe\x92\x22\x3c\x46\xdd\x4b\xf2\xe2\x64\xd5\x59\x36\x9e\x1b\xf4\x7b\x36\xe7\x3e\xcb\xe6\x4b\x1f\x5e\xdd\xd8\x85\xf1\xfc\x45\x68\xbc\x22\xea\xd5\xe1\x15\xa3\xfe\x7f\xef\x65\x97\x9a\x45\xab\xf1\xe5\xdb\x8f\x92\x87\x64\x54\x54\xc1\x0e\xb8\x4a\x9e\x98\xea\xc4\xa4\x12\xbb\x3c\x11\x32\xf1\x1a\xa4\x7f\x83\xc2\x5a\x6b\xec\x9e\x3d\xca\xf3\x27\xc3\x70\xf3\xfc\xf5\x9b\xe7\xee\xe6\xe7\xe7\xb5\xcb\x9b\xe7\x36\x93\x12\x2f\x6f\x71\x76\x4e\x71\x7e\x51\x59\xb6\x28\x2f\x62\x35\xbd\x69\x89\xea\x41\x02\xfd\xa9\xb5\x89\x36\xa9\xfd\xb6\x4e\x76\x3a\xa5\xe1\xf5\xc4\xb6\x51\x96\x2d\xb6\x03\x59\x06\xef\x49\x7c\x6a\x1b\xaa\x0c\x13\x85\x38\xc5\xee\x62\xfb\x2c\x8f\x73\xce\xe4\x9d\x48\x79\xf7\x01\xcc\xee\xf2\xd7\xd8\xcb\x65\x57\xd1\x36\x26\xd3\xb7\x23\xe1\x69\x26\xa7\x48\xe3\xd0\xb8\x80\xfb\xaf\xb1\x46\x74\x66\x3b\xe5\xf2\xe0\xb6\xf3\x6e\x51\xc7\xae\x2d\xa3\xd7\x2e\x3f\x23\x9f\xd9\x87\xcc\xcc\xab\x5c\xe6\x1d\x9f\x2e\xd4\x8c\x8b\x40\xe7\x9c\x65\xf4\xe2\xa5\xfc\x1b\x14\x78\x32\x75\xf3\x00\xe1\x49\xe3\x96\x71\x36\x76\x67\x6c\x36\x53\xf7\xeb\x66\x05\xce\xac\x96\x2a\xf9\xc2\xac\xc0\x9a\x95\x8c\xeb\x13\x73\xe7\x31\xaf\xce\x88\xcb\xe8\x5e\xb1\x9c\x0b\x18\x84\x9f\x73\x69\x54\xd4\xd8\x3a\xd1\xdf\x4b\x45\x67\x83\x56\x3d\x1f\xce\xe5\xab\xa1\x82\x47\xcf\x2a\xa1\x52\x35\x5a\x86\x90\x2e\xb4\x7e\xc1\x0b\xac\x37\x71\xb5\xf7\x4c\x40\x95\x82\xdd\xa0\x52\xa4\x71\x08\xb8\xf6\x95\xb1\xbc\x7c\x9a\x8e\xa1\x9a\x43\xf3\x31\x14\x9b\xa5\x29\x8a\xf0\x52\x0f\x97\x80\x7d\xfd\x5b\x4a\x8d\xe7\xe7\xdc\xc8\x52\xc2\xd5\xc7\xd1\xc3\x60\xab\x74\xae\xe6\x3f\x1a\x2a\xf7\xb4\xf8\x18\xf2\xa8\x6f\x13\x57\x6c\x07\x04\x96\x97\xc4\x39\x0f\x4c\xa5\x7d\x41\xbb\x9c\x9b\x90\x44\xa6\xc8\x94\x98\x1a\x45\x0f\x70\x2a\xbc\xf3\x63\xff\x84\x85\x47\x3c\xa1\x63\xfa\x20\x44\x0f\xd4\x54\xeb\xbe\x54\xa0\x59\x96\x8f\xa4\xc6\x35\xa1\x98\x92\xd5\x2d\xaa\x6c\x06\x94\x74\xd7\xea\x0a\x79\x27\x0b\x61\xc3\xf1\x58\xca\xaa\x07\x95\xb4\x96\x5e\x4d\xb9\x21\x81\x37\x20\xb3\x2c\xef\xfc\x27\x09\x7d\xb8\x2b\x0c\x51\xb3\xfa\x9b\x6d\xfe\xc1\x47\xa2\x2e\x7b\x70\x57\x6c\x8d\x15\xb0\x1e\x1a\x93\xa2\x09\x2b\x28\x68\x40\x7b\xb2\xba\x41\xc8\x06\xe8\xae\xd8\x8e\xb5\x18\xe0\x53\x43\x38\x32\xe4\xd3\x9e\xe5\x9c\xb9\x32\xdc\x67\xa1\x7f\xb3\xe7\xa2\x01\x4f\xa0\xae\x51\x8c\xa3\xfc\x28\xb8\x82\xe7\x30\x69\xa0\x12\xb8\x0a\x2c\x6b\x1b\xe7\x0b\xcf\xfa\xa2\xf5\xe8\x74\x4a\x27\xee\xfe\x74\x6a\x16\x88\xb6\xdb\x7f\xff\xb7\xfb\xed\xf7\xef\xdf\xb6\x1f\xbf\x7e\xf9\x71\xff\x1f\x3f\xb6\x5b\x53\xd9\x90\x2b\xfd\x08\xdb\x3f\x5f\x96\x94\x6c\xcc\x95\x29\x75\x0c\x9a\x5b\x09\x8f\x6c\x54\x20\xa1\xf9\x28\x76\x83\xe0\xc0\xd5\xf8\xea\x40\x41\x9b\x26\x67\x48\x1b\x14\xc7\x51\x7e\xf3\x53\x48\x8b\x4a\xc3\x41\x2d\xa1\x77\x31\x46\xf1\x9e\x53\xae\x1c\x97\xbd\x31\xe9\x47\xf1\xc6\x5f\x6f\x31\x76\xb4\x11\x4f\xdf\x84\x50\x08\xe9\xf2\xb5\xd5\xb5\xd1\x58\x23\xdc\x9a\x1a\x3d\xbe\x2f\xe4\x12\xe9\x44\x91\x60\x0e\xd5\x6c\x17\x71\xd1\x34\x3b\x5e\xeb\xa4\x4a\x84\x95\x7f\x4c\xb7\xc1\x7f\x91\xf2\x00\xad\x90\xf0\xd1\x16\x7d\xd5\x79\x93\xa8\xbb\xb5\xc9\x37\x79\x4d\x8d\xdd\xb7\xa8\x5c\xb7\x9b\x39\xed\xd7\x4e\x06\x90\xa3\x29\x65\xcb\xf4\xc3\x30\xa4\xee\x8d\x5c\xc6\xb5\x4d\x94\xc7\xbe\x71\xa5\xe5\x7d\x6f\x73\x8b\x2a\x64\xf3\x7d\x5b\x6c\xeb\xb3\x5c\x75\xbb\xcb\x6f\x90\xae\x64\xb1\x35\xf9\x87\xa9\x97\x86\xc1\xda\x6f\xe5\x98\x2d\xec\x58\xd7\x62\xe2\x6a\x4c\x31\x6b\xca\x94\x2e\xad\x5a\xf0\x32\x35\xc6\xf4\x76\x5f\x53\xd9\xa4\x98\x8d\x7f\xb0\x1e\xee\x1b\x66\x38\x67\x75\x8b\xe1\x59\x01\x1f\xad\xbf\xad\x37\xb8\x16\xbc\x65\x8f\xe5\x71\x92\x7d\x99\x76\x4a\x0d\x63\xf9\xee\x5d\x2f\x6a\xda\x77\x62\x54\xe5\x3f\xfd\x76\x73\x93\xea\x10\xa8\x8f\x74\x18\x3e\xf1\x56\x94\x1c\x4b\x31\x29\x18\xcb\xb5\x57\x67\x51\x60\xa0\xaa\x2b\xd3\x77\xa9\x8d\xc0\xce\x94\x4a\xb3\xae\x54\xf9\xd1\x5d\x56\x29\xf1\x85\xa7\x96\xeb\xbf\x02\x1a\x06\x72\x06\xdb\xe9\xa4\xe6\x62\x2f\x4f\x1b\xb6\x4f\xf1\x1a\xf2\xb4\xbb\x4d\xf1\xda\x4d\xdc\xe7\xe9\x7f\xf1\x24\x49\x92\x80\x56\x42\x79\x93\x8c\x6a\x6a\xdb\xc2\x0c\xa4\x68\x83\x36\x48\x6f\x34\x0e\x0f\x3a\xe1\x63\x75\xfb\xf2\xeb\xec\x07\x69\xbd\xc1\x9c\xee\x3f\x29\xd8\x2d\x30\x7c\x38\xbb\x87\x7f\xa5\x0a\x24\xa3\x7d\xc9\x0b\xd3\x74\x98\x95\xaf\x22\x16\xac\x8d\x17\xac\xc1\xe9\xbb\xd4\x6c\x61\x19\xf8\x1f\xfe\x27\x00\x00\xff\xff\xfe\xde\x2b\xee\x87\x1e\x00\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\x6d\x8f\xe3\xb6\x73\x7f\xdf\x4f\x21\x0b\x81\xfe\x22\xc2\x55\x76\x93\xbe\xa9\x14\x76\x13\x1c\x36\x45\x80\x6b\x2e\xb8\xbb\x16\x2d\x5c\xc3\xe0\x4a\x23\x8b\x3d\x99\x14\x28\xca\xbb\x86\xcd\xef\x5e\xf0\x49\xa2\xbd\xde\x36\x2d\xd0\xbb\x17\x16\x9f\x66\x86\x3f\x0e\x7f\x33\xc3\x6d\xa0\x65\x1c\xf2\xbc\x9d\x78\xad\x98\xe0\x39\x3a\xa5\xd3\x08\xc9\xa8\x24\xab\x55\x5a\xad\xe6\x01\x85\x01\x9d\x54\x0e\xe4\x04\xaf\x83\x90\x6a\x2c\x4f\x5a\x63\x28\x7c\x0b\xe9\x48\x88\x42\xa7\x03\x95\x09\x90\xb7\x3d\x9f\x9e\xff\x13\x6a\x55\x0c\x52\x28\xa1\x8e\x03\x60\x49\xa0\xe8\xe8\xf8\xe9\x85\xff\x29\xc5\x00\x52\x1d\x31\x27\x69\x58\x98\x12\x62\x66\x89\x36\xf9\x72\xdc\x3f\x8b\xfe\xd1\xfd\x94\x27\x8d\x05\xe1\x05\x53\x20\xa9\x12\xf2\x7c\x4e\x7f\xf9\x25\x34\x52\xcc\x08\x2f\xe8\x78\xe4\xf5\xef\xf1\xf8\x45\x4f\x8a\x29\xe1\x85\x12\x5f\x94\x64\x7c\xf7\x95\xee\xec\x94\xa8\x9d\x56\xc1\x86\xa4\x36\x9b\xc7\x12\x73\xb7\x09\x41\x20\xcb\x60\xd9\x42\xc2\xf8\xa8\x28\xaf\x8d\x95\xdd\x23\x94\x1d\x66\x61\x9b\xb5\x04\xaa\x20\x17\xcb\x64\x64\xf4\xc2\x4b\xf2\x94\xf3\xf3\x79\xbd\x41\x95\x04\x35\x49\x9e\xb0\x62\xcb\xf8\x41\x7c\x8b\x31\x33\x4a\x9d\x4a\x4e\xd2\x71\x1a\x07\xe0\x0d\x34\x5f\x14\x95\x2a\x0d\xeb\xe6\xd9\x02\x33\x74\x62\x6d\x9e\xc2\x2b\xd4\x93\x62\x7c\x97\x12\x42\x38\x52\x9d\x14\x2f\x89\x55\x29\xa5\x90\x79\xfa\x4f\xc0\x1d\x04\x09\x1b\x13\xda\x4b\xa0\xcd\x31\x91\x13\xe7\x66\x09\xaa\x8c\x88\x5a\xec\x87\x1e\x14\x34\x4e\x84\x15\x6b\xe5\x98\xb6\xf0\x22\x59\x30\xe1\x39\x47\xba\x15\x32\x97\xc5\x1e\x54\x27\x1a\x22\xb0\x2c\xa8\xdc\x11\x56\x55\xce\x7c\x4a\x64\xd1\x40\x0f\x3b\xaa\xc0\x28\xa0\xae\xbb\x26\x2f\x39\xc5\xd2\xea\xac\xad\x96\x9a\x10\x32\xa1\x5a\x70\xc5\xf8\x04\x41\x41\xad\xb5\xb1\x80\xc3\xab\x32\x06\x04\x3d\x48\x16\x23\x70\x45\x64\xb1\xf5\xbf\x54\xee\x2a\xe8\x47\x48\x2e\x0c\x9e\xe7\xdb\x7d\x5c\xe1\x18\x63\x44\xa2\x8d\xbb\x2d\x54\xb2\x68\xd8\x38\x50\x55\x77\x4f\xaf\x35\x0c\x16\x69\x3b\x82\xb4\x51\x94\x3a\x0b\x63\x2d\x59\x26\x0b\xfa\x2c\xa7\x41\xe5\x61\xd4\xc9\x42\x15\x27\xd1\xe1\x54\x06\x81\x8e\x8c\xfe\x98\x2d\xee\x5c\xc8\x3d\xed\x8d\xb4\xae\xb0\xce\x62\x2c\xe6\x06\x3c\xc1\xe1\x31\xb2\xae\x5c\xb6\xf1\xef\x0c\xfa\x26\xc5\x9d\x45\xfc\x06\x7a\xa7\x03\xed\x27\x28\xed\x38\x36\x72\x4a\x27\x4e\xeb\x05\x21\xa7\x2d\xcb\xf2\x6b\x08\xfc\x81\xfa\x99\xfe\x58\x3b\xb7\x7f\xad\x73\x85\x25\xa6\x08\x33\x3d\x5f\x95\xb0\x9d\x93\x92\xc7\x93\x37\xc0\xc8\x2e\xc3\xde\x30\x95\xbb\x52\x15\x35\xed\xfb\xdc\x4c\xd4\xba\x36\xe8\x1a\x82\xb8\x98\xee\x35\xda\xd9\x5a\x6b\x55\xbc\x48\x3a\x90\xda\xa2\x36\x91\x93\x5e\x6e\x67\x97\xa3\xd3\x62\x40\x7b\xd1\xea\x4d\xcb\x2c\x19\xcc\x92\x61\x2d\x36\x24\x62\x3a\xef\x5e\xaa\x63\xa3\xb6\x82\x9b\x70\x6f\x77\xa0\xfe\x0c\x37\xf6\x53\x8b\x0f\xa4\xc9\xb2\x26\x6f\xf2\x8f\xf9\x7a\x83\x10\xaa\x0e\x59\x76\x58\x11\xc3\x03\xd2\x6d\xe5\x80\x05\xca\xb2\x7c\x20\x07\x64\x25\x1d\x49\xbf\xdc\x79\xd2\x45\xdf\x97\xcc\x30\xa0\x65\x23\x3b\x03\xc2\xda\xb9\x39\x0e\x00\x04\x1f\xda\x14\xad\x90\x4f\xb4\xee\x22\x9a\x35\x84\xbc\x86\xcd\x05\xcb\x46\x7b\x0a\x8c\x92\x03\x56\x48\x6b\x84\x16\x5c\xf6\x8e\xce\x2d\xb5\x54\xf1\x5c\x72\xc9\x27\xf3\x02\xba\xc0\x65\xa8\x24\x8e\x18\x1c\x53\x74\x9a\xe3\x44\x62\x57\x62\x8a\x6b\x27\x7e\x32\x1e\xbe\x16\x1b\xac\x30\x73\x4e\xee\x36\xb6\x22\x64\xf2\x3e\xee\x2e\xc2\x64\x1d\xb4\x25\x5d\x61\x1d\x76\xe6\xb7\x2c\x4b\x85\x85\x6c\x09\x05\xed\x0c\x7b\x8b\xd3\xed\x96\xbe\x50\xa6\x52\xf4\x08\x85\x84\x51\xf4\x07\xc8\xdb\xc2\xf7\xa2\x42\x75\xc0\x2f\x23\x13\xf7\x4c\x82\x95\xb5\x52\x23\x7c\x3d\xec\xa1\x0f\xe3\xa8\x8c\x24\xdf\x92\xe8\x4d\x26\x0a\xd3\xbc\x7b\x23\x30\xc0\xf6\x56\xae\xae\xf3\xc9\xdd\x25\x8b\x99\x01\xd2\xf4\x86\x05\x84\x3f\x72\xa7\x8d\x62\x8a\x4a\x9a\x23\xbd\x9c\xe0\xcb\x72\x82\x92\xa8\x39\x10\xae\xc1\xdf\xd9\x8d\xc1\xfa\x20\x58\x93\xdc\x1b\x72\xb2\x4c\x02\x33\x09\x13\x3e\xf5\x3d\x5e\x08\x00\x62\x8a\x5c\xa4\x15\xce\x94\x2c\xcb\x61\xa6\x82\xc0\x69\x60\xb9\xc0\x69\xc0\xce\x9a\x5b\x02\x91\xdf\xcd\x54\xc1\x35\x9b\x38\x09\xc6\x9d\xbe\x1e\x07\xf0\xd1\xe9\x6b\x07\x49\x50\x9f\x34\x02\xc6\x84\x0b\x95\x0c\x52\x1c\x58\x03\x09\x4d\xfe\x66\x17\xff\x2d\x71\xb2\xd2\x19\xad\x49\xbb\x38\x39\xe6\x12\x2f\x1b\x70\x3a\x62\xbf\x33\x7c\xef\xfc\xce\x2f\x7c\xcf\x2c\xeb\x8e\xd7\x88\x4d\x95\x4b\x00\xb8\x0b\x0e\x4e\x82\x78\x14\x8e\xa0\x73\x58\x2b\xe3\x29\x53\xaf\xfe\xa0\x7b\xd8\x10\xe1\x1c\x03\x43\x61\x3c\x8e\x28\xfb\xf3\x51\xd4\xf3\xad\x5e\x2d\x48\x5d\x80\xec\x1c\x34\x86\x18\xbd\xb5\x05\x95\xa2\xcc\xff\x1a\xaa\x33\xa2\xce\x3a\x13\xf9\x0d\xac\x94\x27\xfe\x6e\xdd\x12\xbf\x38\xdb\x76\xc9\xdf\x0c\xb1\x7f\x14\x75\xa9\xd6\xf7\x1b\x5d\x3d\x24\x8c\x27\xca\x9a\x6e\x69\xfc\xa3\xa8\x89\x5a\x3f\x6c\x10\xfe\x71\x19\x69\x19\xa7\x7d\x7f\x74\x63\x3f\x6e\x8c\x85\xad\x02\xe9\xda\x3f\x6d\x10\xb6\x04\xa4\xe4\xf1\x89\x2b\xc9\x60\x2c\x86\x69\xec\x72\x88\xf4\xbf\x2e\xfa\x55\xe1\x03\x14\x13\xfc\x7c\x3e\xe9\x0a\xec\x69\x92\x39\xbe\x98\x5d\x28\x48\x2c\x0c\x38\x9e\x4d\x60\x11\xf8\x64\x04\x5e\xa9\x25\xeb\xb0\xb7\x54\x0a\xa1\x52\xbd\xc1\x6a\x26\xdd\xad\x35\xd2\x9b\x2a\x61\x04\x95\xaf\xee\x23\x0b\x3f\x1a\x81\xe6\xee\xcc\x76\xae\x85\xbd\x82\x91\x9f\x59\xc6\x52\xce\x19\xdf\xe6\xb7\xce\x39\xc2\x6c\x65\x66\xad\xd8\xf8\x07\xfd\x23\x57\x45\x0f\x7c\xa7\x3a\x14\x72\xc1\xbb\x07\xcc\x66\xa2\x4e\x20\x47\x27\x93\x7e\x55\xdf\x7f\xcf\x7f\x0e\x73\x2b\xc4\xda\xdc\x93\xa4\xc2\x1c\x2d\x56\x78\xaa\x5a\x73\x73\x10\xc6\x6d\xc9\xea\x01\xcf\x74\x1b\xc6\xfd\xbd\x0e\x33\xee\x31\xe8\x25\x53\xb5\xce\xcc\xb4\xbf\x7a\x27\xd3\x2c\x9f\x23\x6e\x7a\x9e\x83\x85\x4f\x3e\xbc\x34\x9b\x7d\xac\xee\xc3\xc2\xa4\x8d\xc2\xe2\xb1\xa8\x05\x1f\x95\x9c\x6a\x25\x24\xe9\x71\x7f\xd1\x6e\x71\xbf\xa6\x1b\xd2\xda\x6c\xac\xa7\x47\x73\xbd\xc8\x92\xc9\xfe\x16\xd0\x34\x57\x7f\x7c\xd3\x7d\xa3\x0c\xb9\x75\x00\x59\xa6\x62\xa5\x7e\xbf\xab\x95\x49\x8c\x80\x10\xd2\x9e\xcf\x37\x54\x12\x42\x0c\xb1\x2e\x76\x9d\xcf\x50\x70\xba\x07\x84\x34\x56\xc5\x9e\xca\x6f\xb7\x02\xb4\x4f\x03\xc6\x8b\x44\xe3\xf1\x66\x6f\xae\x70\x8f\xca\x5c\x15\xdb\xad\xc5\x6b\xbb\x25\x3d\xa6\xf6\x7e\x9d\xcf\xb9\x32\xc0\xdc\xb0\x0b\x21\xac\xde\x4d\x3b\x8e\x08\x2b\x63\x1d\xb5\x59\xd5\x5b\xf3\x4e\x3e\x7e\x9a\xdc\x0b\xef\xf2\x7d\x5c\xbf\x44\x8d\x35\x7b\x37\x9f\xc2\xaa\xf8\x35\xae\xb7\xc8\xde\xa8\x33\x3d\xcb\x0a\x5b\x53\x61\x9b\x68\xcc\x91\x8a\x65\x59\xce\xc8\x9f\x52\xec\xd9\x08\x2e\x97\x72\x05\xd3\x3e\xaf\xc3\x02\x64\x52\x89\xa0\xec\xd6\x81\xe7\x12\x3d\xd2\x92\x5a\x47\xcd\x6f\x45\xec\x79\xb1\xe5\x6d\xe5\x9c\x7e\x5e\x60\x82\x30\xde\x19\x90\x8e\x97\xe0\xa6\xf8\xf8\xdf\xa4\x90\xf8\x38\xd7\x93\x6f\xa7\xa4\x6b\xc7\xb4\xc9\x2c\x6c\x93\x1a\x90\xbe\xc1\x71\xbc\xe1\x9f\xeb\x4d\x65\xee\xb4\x0d\xef\xf6\xa4\x11\x38\x5a\x94\x68\xb9\xaa\x12\x0e\x20\x47\xc8\x11\x9e\xaf\x9e\x0c\x64\x00\x33\x11\x78\xd2\x80\x62\x10\x43\x6e\xd9\x87\x3b\x89\x5e\x8e\xf4\x57\x9e\x63\x39\xf3\x81\xd4\xf3\x60\x20\x00\xa9\x8d\xb9\x76\xea\x48\x3e\xe2\xa7\xc8\xb7\x4e\xd1\xad\x29\x9f\xb0\xa5\xc7\x32\xde\x93\x21\x46\x43\x9c\x83\x84\x03\xb9\x77\x24\x6a\x49\xc4\x7f\xdb\xf2\xcd\xa5\xa1\xf6\xd3\xf3\x85\xed\x09\x26\xb9\xc6\x45\x88\xb2\x5d\x97\x21\xd3\x76\x45\x89\xc9\x75\x68\x09\x7c\xfe\x8a\xf0\x4a\xa1\x00\x31\x58\x40\x0c\xc1\xa7\xca\x65\x2f\x75\x47\xe5\xaf\x2a\xbf\x47\x73\xaa\x69\x86\x31\xa0\x2c\xf3\xac\xfc\x3d\x14\x63\xcf\x6a\xc8\x1f\x90\xc9\xfc\xcd\xb0\xc9\xc5\x7d\xb4\xd6\x78\x54\x62\x28\x23\x37\x88\x36\x73\x6f\xdd\xda\xef\x78\x31\x6e\x7d\xbf\x89\xc2\xd5\x65\xce\xa2\x5c\xce\xe2\x0a\x55\x15\x67\x1f\x2e\x22\x1d\x68\xaf\xf1\x9b\x52\xf5\xe6\x21\x18\x1b\x82\xa0\xca\x07\xab\x8e\x8d\x55\x94\xc1\xdb\xa7\x0e\x2f\x9f\xfa\xf8\x1a\x0a\x32\x8b\xae\x0a\x29\x8d\xc4\xfc\x7f\x4c\x5c\x56\x2b\xae\x03\xd2\xe2\x7a\xd3\xde\x4d\xef\x1e\x2a\xf1\x8f\xe4\xbe\xba\xbb\x13\xce\x61\xd9\x1b\x74\xc4\x06\x53\xc2\xae\x11\xb2\xa1\xda\xf0\x46\xe1\x82\x37\x5a\xd2\x6d\xe0\x8d\x7b\xcf\x08\x63\x3f\x93\xd9\x0b\xc3\x03\x84\x3f\x5c\x86\xd3\x90\xbf\xa4\x08\x8f\x51\xf7\x92\xbc\x38\x59\x75\x96\x8d\x97\x0e\xfd\x33\x9b\x73\x9f\x45\xf9\xd2\x87\x57\xf7\x76\x61\x3c\x7f\x11\x1a\xaf\x88\x7a\x75\x78\xc5\xa8\xff\xd7\xba\xec\x52\xb3\x68\x35\xbe\x7d\xfb\x51\xf2\x98\x8c\x8a\x2a\xd8\x03\x57\xc9\x0b\x53\x9d\x98\x54\x62\x97\x27\x42\x26\xde\x82\xf4\xff\x60\xb0\xd6\x1a\xbb\x67\x8f\xf2\xf2\xc9\x30\x9c\x3c\x7f\xff\xe4\xb9\x3b\xf9\xf9\x79\xed\xfa\xe4\xb9\xcd\xa4\xc4\xdb\x53\x9c\x2f\xa7\xb8\x3c\xa8\x2c\x5b\x8c\x17\xb1\x99\xde\xb5\x44\xf5\x2c\x81\x7e\xd3\xda\x44\x9b\xd4\x7e\xdb\x4b\x76\x3e\xa7\xe1\xf5\xc4\xb6\x51\x96\x2d\xbe\x03\x59\x06\x3f\x93\x78\xd7\x36\x54\x19\x26\x0a\x71\x8a\x3d\xc6\xfe\x59\x9e\xe6\x9c\xc9\x5f\x22\xe5\xaf\x0f\x60\xf6\x98\xbf\xc7\x5e\x2e\xbb\x8a\xd4\x98\x4c\xdf\x8e\x84\xa7\x99\x9c\x22\x8d\x43\xe3\x0a\xee\xbf\xc6\x1a\xd1\x9e\xed\x94\xeb\x8d\xdb\xce\xc7\xc5\x1c\xbb\xb6\x8c\x5e\xbb\xfc\x8c\x7c\x66\x1f\x32\x33\xaf\x72\x99\x77\xbc\xbb\x50\x33\x2e\x02\xdd\xe5\x2c\xa3\x17\x2f\xe5\xdf\xa0\xc0\x93\xa9\x9b\x07\x08\x4f\x1a\xb7\x8c\xb3\xb1\xbb\x60\xb3\x99\xba\xdf\x77\x2b\x70\x6e\xb5\x54\xc9\x57\x6e\x05\xd6\xad\x64\x5c\x9f\x98\x33\x8f\x79\x75\x46\x5c\x46\xe7\x8a\xe5\x5c\xc0\x20\xfc\x9a\x4b\x63\xa2\xc6\xf6\x12\xfd\x7f\x99\xe8\x7c\xd0\x9a\xe7\xc3\xb9\x7c\x37\x54\xf0\xe8\x59\x25\x54\xaa\xc6\xca\x10\xd2\x85\xd6\x6f\x78\x81\xf5\x26\xae\xf6\x9e\x09\xa8\x52\xb0\x1f\x54\x8a\x34\x0e\x01\xd7\xbe\x32\x96\xd7\x4f\xd3\x31\x54\x73\x68\x3e\x85\x62\xb3\x34\x45\x11\x5e\xea\xe1\x12\xb0\xaf\x7f\x4b\xa9\xf1\xfc\x9c\x1b\x79\x4a\x38\xfa\x38\x7a\x18\x6c\x95\xce\xd5\xfc\x87\x86\xca\x3d\x2d\xee\x42\x1e\xf5\x79\xe2\x8a\xed\x81\xc0\xf2\x92\x38\xe7\x81\xa9\xb4\x2f\x68\xd7\x73\x13\x92\xc8\x14\x99\x12\x53\xa3\xe8\x01\x4e\x85\x77\x7e\xec\x9f\xb0\xf0\x88\x27\x74\x4a\x9f\x85\xe8\x81\x9a\x6a\xdd\x97\x0a\x34\xcb\xf2\x91\xd4\xb8\x26\x14\x53\xb2\x7a\x40\x95\xcd\x80\x92\xee\x56\x5d\x21\x1f\x65\x21\x6c\x38\x1e\x4b\x59\xf5\xa0\x92\xd6\xd2\xab\x29\x37\x24\xf0\x06\x64\x96\xe5\x9d\xff\x24\xa1\x0f\x77\x85\x21\x6a\x56\x7f\xb6\xcd\xdf\xf8\x48\xd4\x75\x0f\xee\x8a\xad\xf1\x02\xd6\x43\x63\x52\x34\x61\x05\x05\x0b\x68\x4f\x56\xf7\x08\xd9\x00\xdd\x15\xdb\xb1\x16\x03\xfc\xde\x10\x8e\x0c\xf9\xb4\x17\x39\x67\xae\x0c\xf7\x59\xe8\xbf\x3b\x70\xd1\x80\x27\x50\xd7\x28\xc6\x51\x7e\x10\x5c\xc1\x6b\x98\x34\x50\x09\x5c\x05\x96\xb5\x8d\xcb\x85\x17\x7d\xd1\x7a\x74\x3e\xa7\x13\x77\x7f\x74\x6a\x16\x88\xb6\xdb\x7f\xfd\x97\xa7\xed\x97\x2f\x9f\xb7\x1f\x3e\xfd\xf1\xf5\xe9\xdf\xbe\x6e\xb7\xa6\xb2\x21\x37\xfa\x11\xb6\x7f\x7c\x59\x52\xb2\x31\x57\xa6\xd4\x31\x68\x6e\x25\xec\xd8\xa8\x40\x42\xf3\x41\xec\x07\xc1\x81\xab\xf1\xdd\x81\x82\x36\x4d\xce\x90\x36\x28\x8e\xa3\xfc\xec\xa7\x90\x16\x95\x86\x83\x5a\x42\x1f\x63\x8c\x62\x9d\x53\xae\x1c\x97\x7d\x67\xd2\x8f\xe2\x3b\x7f\xbc\xc5\xd8\xd1\x46\xbc\x7c\x16\x42\x21\xa4\xcb\xf7\x56\xd7\xc6\x62\x8d\x70\x6b\x6a\xf4\xf8\xbc\x90\x4b\xa4\x13\x45\x82\x3b\x54\xb3\x5f\xc4\x45\xd3\x7c\xf1\x5a\x27\x55\x22\xac\xfc\x63\xba\x0d\xfe\x8b\x94\x67\x68\x85\x84\x0f\xb6\xe8\xab\x2e\x9b\x44\x3d\xae\x4d\xbe\xc9\x6b\x6a\xfc\xbe\x45\xe5\xba\xdd\xcc\x69\xbf\x76\x32\x80\x9c\x4c\x29\x5b\xa6\xbf\x0e\x43\xea\xde\xc8\x65\x5c\xdb\x44\x79\xec\x77\xae\xb4\x7c\xea\x6d\x6e\x51\x85\x6c\xbe\x6f\x8b\x6d\x7d\x91\xab\x6e\xf7\xf9\x3d\xd2\x95\x2c\xb6\x26\xff\x30\xf5\xd2\x30\x58\xff\xad\x1c\xb3\x05\x8d\x75\x2d\x26\xae\xc6\x14\xb3\xa6\x4c\xe9\xd2\xaa\x05\x2f\x53\xe3\x4c\x77\x87\x9a\xca\x26\xc5\x6c\xfc\x8d\xf5\xf0\xd4\x30\xc3\x39\xab\x07\x0c\xaf\x0a\xf8\x68\xef\xdb\x7a\x83\x6b\xc1\x5b\xb6\x2b\x4f\x93\xec\xcb\xb4\x53\x6a\x18\xcb\x1f\x7e\xe8\x45\x4d\xfb\x4e\x8c\xaa\xfc\x87\x1f\xef\xef\x53\x1d\x02\xf5\x89\x0e\xc3\xef\xbc\x15\x25\xc7\x52\x4c\x0a\xc6\x72\xed\xcd\x59\x0c\x18\xa8\xea\xca\xf4\x87\xd4\x46\x60\xe7\x4a\xa5\x59\x57\xaa\xfc\xe4\x0e\xab\x94\xf8\xea\xa6\x96\xeb\xbf\x02\x1a\x06\x72\x01\xdb\xf9\xac\xe6\x62\x2f\x4f\x1b\x76\x48\xf1\x3a\x7c\x9c\x9c\x86\x0f\x3d\x1d\xc7\x32\x9d\xbe\xdd\xbd\xb0\x46\x75\x77\x3f\xdd\xfd\xfd\x2f\xfb\x64\xfa\x76\x67\xc2\x39\x65\x1c\xa4\x69\x0c\xb4\x69\x18\xdf\xa5\xda\xae\xef\x1e\x52\xbc\x76\x8a\x0e\x79\xfa\x1f\x3c\xb1\xff\x02\xde\xae\x9d\xa2\x8d\xfd\xaf\x37\x1a\x87\xb7\xa0\xf0\xb1\x7a\x78\xfb\x75\xf1\x83\xb4\xde\x60\x4e\x0f\xbf\x2b\xd8\x2f\x08\xfe\x7a\x71\x84\xff\x4c\x15\x48\x46\xfb\x92\x17\xa6\xe9\xe0\x2e\xdf\x05\x3b\x38\x2a\x2f\x58\x83\xd3\x1f\x52\xa3\xc2\x92\xf7\xdf\xfd\x57\x00\x00\x00\xff\xff\xdc\xb4\xa5\xe2\xc2\x1e\x00\x00") func init() { err := CTX.Err() diff --git a/pkg/config/config.go b/pkg/config/config.go index faaaf44d2c..3c9f59bfc2 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -43,6 +43,11 @@ type Server struct { AccountsDataPath string } +// Asset defines the available asset configuration. +type Asset struct { + Path string +} + // Log defines the available logging configuration. type Log struct { Level string @@ -56,6 +61,7 @@ type Config struct { HTTP HTTP GRPC GRPC Server Server + Asset Asset Log Log } diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index c52509a7b7..35195fac05 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -84,5 +84,12 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { EnvVars: []string{"ACCOUNTS_DATA_PATH"}, Destination: &cfg.Server.AccountsDataPath, }, + &cli.StringFlag{ + Name: "asset-path", + Value: "", + Usage: "Path to custom assets", + EnvVars: []string{"HELLO_ASSET_PATH"}, + Destination: &cfg.Asset.Path, + }, } } diff --git a/reflex.conf b/reflex.conf new file mode 100644 index 0000000000..3e496fb0b4 --- /dev/null +++ b/reflex.conf @@ -0,0 +1,5 @@ +# backend +-r '^(cmd|pkg)/.*\.go$' -R '^node_modules/' -s -- sh -c 'make bin/ocis-accounts && bin/ocis-accounts server --asset-path assets/' + +# frontend +-r '^ui/.*\.(vue|js)$' -R '^node_modules/' -- sh -c 'yarn build && make generate' diff --git a/ui/components/App.vue b/ui/components/App.vue index bd2a699917..0f572a2877 100644 --- a/ui/components/App.vue +++ b/ui/components/App.vue @@ -1,8 +1,10 @@ From 352b633e84eb239c0c9e3aac2297539e110b49b7 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 08:49:45 +0200 Subject: [PATCH 177/407] Show very basic account list This is the first step. Only shows name and email so far (because we don't have more data). Was necessary to change the request type of the list request to POST because it is not supported by microweb to have GET requests. --- package.json | 6 +- pkg/assets/embed.go | 6 +- pkg/proto/v0/accounts.pb.go | 159 ++++++++++++------------ pkg/proto/v0/accounts.pb.micro.go | 10 +- pkg/proto/v0/accounts.pb.web.go | 4 +- pkg/proto/v0/accounts.proto | 3 +- pkg/proto/v0/accounts.swagger.json | 68 +++++----- ui/app.js | 9 +- ui/client/accounts/index.js | 71 +++-------- ui/components/App.vue | 23 +++- ui/components/accounts/AccountsList.vue | 34 +++++ ui/store/index.js | 81 ++++++++++++ yarn.lock | 5 + 13 files changed, 293 insertions(+), 186 deletions(-) create mode 100644 ui/components/accounts/AccountsList.vue create mode 100644 ui/store/index.js diff --git a/package.json b/package.json index 2eef6d7bef..4372307e1e 100644 --- a/package.json +++ b/package.json @@ -58,5 +58,9 @@ "browserslist": [ "> 1%", "not dead" - ] + ], + "peerDependencies": { + "owncloud-design-system": "^1.7.0", + "vuex": "^3.5.1" + } } diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index fb7bc4040b..3175fa0665 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-06-30 16:23:26.152338 +0200 CEST m=+0.001900579" from config file "embed.yml" DO NOT EDIT. -// modification hash(8102574180b123058ca85f1208ee4e4c.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-07-01 08:46:04.986235 +0200 CEST m=+0.005590875" from config file "embed.yml" DO NOT EDIT. +// modification hash(1eb14edca0e22422a4c6e530b1cc0ce4.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,7 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\x6d\x8f\xe3\xb6\x73\x7f\xdf\x4f\x21\x0b\x81\xfe\x22\xc2\x55\x76\x93\xbe\xa9\x14\x76\x13\x1c\x36\x45\x80\x6b\x2e\xb8\xbb\x16\x2d\x5c\xc3\xe0\x4a\x23\x8b\x3d\x99\x14\x28\xca\xbb\x86\xcd\xef\x5e\xf0\x49\xa2\xbd\xde\x36\x2d\xd0\xbb\x17\x16\x9f\x66\x86\x3f\x0e\x7f\x33\xc3\x6d\xa0\x65\x1c\xf2\xbc\x9d\x78\xad\x98\xe0\x39\x3a\xa5\xd3\x08\xc9\xa8\x24\xab\x55\x5a\xad\xe6\x01\x85\x01\x9d\x54\x0e\xe4\x04\xaf\x83\x90\x6a\x2c\x4f\x5a\x63\x28\x7c\x0b\xe9\x48\x88\x42\xa7\x03\x95\x09\x90\xb7\x3d\x9f\x9e\xff\x13\x6a\x55\x0c\x52\x28\xa1\x8e\x03\x60\x49\xa0\xe8\xe8\xf8\xe9\x85\xff\x29\xc5\x00\x52\x1d\x31\x27\x69\x58\x98\x12\x62\x66\x89\x36\xf9\x72\xdc\x3f\x8b\xfe\xd1\xfd\x94\x27\x8d\x05\xe1\x05\x53\x20\xa9\x12\xf2\x7c\x4e\x7f\xf9\x25\x34\x52\xcc\x08\x2f\xe8\x78\xe4\xf5\xef\xf1\xf8\x45\x4f\x8a\x29\xe1\x85\x12\x5f\x94\x64\x7c\xf7\x95\xee\xec\x94\xa8\x9d\x56\xc1\x86\xa4\x36\x9b\xc7\x12\x73\xb7\x09\x41\x20\xcb\x60\xd9\x42\xc2\xf8\xa8\x28\xaf\x8d\x95\xdd\x23\x94\x1d\x66\x61\x9b\xb5\x04\xaa\x20\x17\xcb\x64\x64\xf4\xc2\x4b\xf2\x94\xf3\xf3\x79\xbd\x41\x95\x04\x35\x49\x9e\xb0\x62\xcb\xf8\x41\x7c\x8b\x31\x33\x4a\x9d\x4a\x4e\xd2\x71\x1a\x07\xe0\x0d\x34\x5f\x14\x95\x2a\x0d\xeb\xe6\xd9\x02\x33\x74\x62\x6d\x9e\xc2\x2b\xd4\x93\x62\x7c\x97\x12\x42\x38\x52\x9d\x14\x2f\x89\x55\x29\xa5\x90\x79\xfa\x4f\xc0\x1d\x04\x09\x1b\x13\xda\x4b\xa0\xcd\x31\x91\x13\xe7\x66\x09\xaa\x8c\x88\x5a\xec\x87\x1e\x14\x34\x4e\x84\x15\x6b\xe5\x98\xb6\xf0\x22\x59\x30\xe1\x39\x47\xba\x15\x32\x97\xc5\x1e\x54\x27\x1a\x22\xb0\x2c\xa8\xdc\x11\x56\x55\xce\x7c\x4a\x64\xd1\x40\x0f\x3b\xaa\xc0\x28\xa0\xae\xbb\x26\x2f\x39\xc5\xd2\xea\xac\xad\x96\x9a\x10\x32\xa1\x5a\x70\xc5\xf8\x04\x41\x41\xad\xb5\xb1\x80\xc3\xab\x32\x06\x04\x3d\x48\x16\x23\x70\x45\x64\xb1\xf5\xbf\x54\xee\x2a\xe8\x47\x48\x2e\x0c\x9e\xe7\xdb\x7d\x5c\xe1\x18\x63\x44\xa2\x8d\xbb\x2d\x54\xb2\x68\xd8\x38\x50\x55\x77\x4f\xaf\x35\x0c\x16\x69\x3b\x82\xb4\x51\x94\x3a\x0b\x63\x2d\x59\x26\x0b\xfa\x2c\xa7\x41\xe5\x61\xd4\xc9\x42\x15\x27\xd1\xe1\x54\x06\x81\x8e\x8c\xfe\x98\x2d\xee\x5c\xc8\x3d\xed\x8d\xb4\xae\xb0\xce\x62\x2c\xe6\x06\x3c\xc1\xe1\x31\xb2\xae\x5c\xb6\xf1\xef\x0c\xfa\x26\xc5\x9d\x45\xfc\x06\x7a\xa7\x03\xed\x27\x28\xed\x38\x36\x72\x4a\x27\x4e\xeb\x05\x21\xa7\x2d\xcb\xf2\x6b\x08\xfc\x81\xfa\x99\xfe\x58\x3b\xb7\x7f\xad\x73\x85\x25\xa6\x08\x33\x3d\x5f\x95\xb0\x9d\x93\x92\xc7\x93\x37\xc0\xc8\x2e\xc3\xde\x30\x95\xbb\x52\x15\x35\xed\xfb\xdc\x4c\xd4\xba\x36\xe8\x1a\x82\xb8\x98\xee\x35\xda\xd9\x5a\x6b\x55\xbc\x48\x3a\x90\xda\xa2\x36\x91\x93\x5e\x6e\x67\x97\xa3\xd3\x62\x40\x7b\xd1\xea\x4d\xcb\x2c\x19\xcc\x92\x61\x2d\x36\x24\x62\x3a\xef\x5e\xaa\x63\xa3\xb6\x82\x9b\x70\x6f\x77\xa0\xfe\x0c\x37\xf6\x53\x8b\x0f\xa4\xc9\xb2\x26\x6f\xf2\x8f\xf9\x7a\x83\x10\xaa\x0e\x59\x76\x58\x11\xc3\x03\xd2\x6d\xe5\x80\x05\xca\xb2\x7c\x20\x07\x64\x25\x1d\x49\xbf\xdc\x79\xd2\x45\xdf\x97\xcc\x30\xa0\x65\x23\x3b\x03\xc2\xda\xb9\x39\x0e\x00\x04\x1f\xda\x14\xad\x90\x4f\xb4\xee\x22\x9a\x35\x84\xbc\x86\xcd\x05\xcb\x46\x7b\x0a\x8c\x92\x03\x56\x48\x6b\x84\x16\x5c\xf6\x8e\xce\x2d\xb5\x54\xf1\x5c\x72\xc9\x27\xf3\x02\xba\xc0\x65\xa8\x24\x8e\x18\x1c\x53\x74\x9a\xe3\x44\x62\x57\x62\x8a\x6b\x27\x7e\x32\x1e\xbe\x16\x1b\xac\x30\x73\x4e\xee\x36\xb6\x22\x64\xf2\x3e\xee\x2e\xc2\x64\x1d\xb4\x25\x5d\x61\x1d\x76\xe6\xb7\x2c\x4b\x85\x85\x6c\x09\x05\xed\x0c\x7b\x8b\xd3\xed\x96\xbe\x50\xa6\x52\xf4\x08\x85\x84\x51\xf4\x07\xc8\xdb\xc2\xf7\xa2\x42\x75\xc0\x2f\x23\x13\xf7\x4c\x82\x95\xb5\x52\x23\x7c\x3d\xec\xa1\x0f\xe3\xa8\x8c\x24\xdf\x92\xe8\x4d\x26\x0a\xd3\xbc\x7b\x23\x30\xc0\xf6\x56\xae\xae\xf3\xc9\xdd\x25\x8b\x99\x01\xd2\xf4\x86\x05\x84\x3f\x72\xa7\x8d\x62\x8a\x4a\x9a\x23\xbd\x9c\xe0\xcb\x72\x82\x92\xa8\x39\x10\xae\xc1\xdf\xd9\x8d\xc1\xfa\x20\x58\x93\xdc\x1b\x72\xb2\x4c\x02\x33\x09\x13\x3e\xf5\x3d\x5e\x08\x00\x62\x8a\x5c\xa4\x15\xce\x94\x2c\xcb\x61\xa6\x82\xc0\x69\x60\xb9\xc0\x69\xc0\xce\x9a\x5b\x02\x91\xdf\xcd\x54\xc1\x35\x9b\x38\x09\xc6\x9d\xbe\x1e\x07\xf0\xd1\xe9\x6b\x07\x49\x50\x9f\x34\x02\xc6\x84\x0b\x95\x0c\x52\x1c\x58\x03\x09\x4d\xfe\x66\x17\xff\x2d\x71\xb2\xd2\x19\xad\x49\xbb\x38\x39\xe6\x12\x2f\x1b\x70\x3a\x62\xbf\x33\x7c\xef\xfc\xce\x2f\x7c\xcf\x2c\xeb\x8e\xd7\x88\x4d\x95\x4b\x00\xb8\x0b\x0e\x4e\x82\x78\x14\x8e\xa0\x73\x58\x2b\xe3\x29\x53\xaf\xfe\xa0\x7b\xd8\x10\xe1\x1c\x03\x43\x61\x3c\x8e\x28\xfb\xf3\x51\xd4\xf3\xad\x5e\x2d\x48\x5d\x80\xec\x1c\x34\x86\x18\xbd\xb5\x05\x95\xa2\xcc\xff\x1a\xaa\x33\xa2\xce\x3a\x13\xf9\x0d\xac\x94\x27\xfe\x6e\xdd\x12\xbf\x38\xdb\x76\xc9\xdf\x0c\xb1\x7f\x14\x75\xa9\xd6\xf7\x1b\x5d\x3d\x24\x8c\x27\xca\x9a\x6e\x69\xfc\xa3\xa8\x89\x5a\x3f\x6c\x10\xfe\x71\x19\x69\x19\xa7\x7d\x7f\x74\x63\x3f\x6e\x8c\x85\xad\x02\xe9\xda\x3f\x6d\x10\xb6\x04\xa4\xe4\xf1\x89\x2b\xc9\x60\x2c\x86\x69\xec\x72\x88\xf4\xbf\x2e\xfa\x55\xe1\x03\x14\x13\xfc\x7c\x3e\xe9\x0a\xec\x69\x92\x39\xbe\x98\x5d\x28\x48\x2c\x0c\x38\x9e\x4d\x60\x11\xf8\x64\x04\x5e\xa9\x25\xeb\xb0\xb7\x54\x0a\xa1\x52\xbd\xc1\x6a\x26\xdd\xad\x35\xd2\x9b\x2a\x61\x04\x95\xaf\xee\x23\x0b\x3f\x1a\x81\xe6\xee\xcc\x76\xae\x85\xbd\x82\x91\x9f\x59\xc6\x52\xce\x19\xdf\xe6\xb7\xce\x39\xc2\x6c\x65\x66\xad\xd8\xf8\x07\xfd\x23\x57\x45\x0f\x7c\xa7\x3a\x14\x72\xc1\xbb\x07\xcc\x66\xa2\x4e\x20\x47\x27\x93\x7e\x55\xdf\x7f\xcf\x7f\x0e\x73\x2b\xc4\xda\xdc\x93\xa4\xc2\x1c\x2d\x56\x78\xaa\x5a\x73\x73\x10\xc6\x6d\xc9\xea\x01\xcf\x74\x1b\xc6\xfd\xbd\x0e\x33\xee\x31\xe8\x25\x53\xb5\xce\xcc\xb4\xbf\x7a\x27\xd3\x2c\x9f\x23\x6e\x7a\x9e\x83\x85\x4f\x3e\xbc\x34\x9b\x7d\xac\xee\xc3\xc2\xa4\x8d\xc2\xe2\xb1\xa8\x05\x1f\x95\x9c\x6a\x25\x24\xe9\x71\x7f\xd1\x6e\x71\xbf\xa6\x1b\xd2\xda\x6c\xac\xa7\x47\x73\xbd\xc8\x92\xc9\xfe\x16\xd0\x34\x57\x7f\x7c\xd3\x7d\xa3\x0c\xb9\x75\x00\x59\xa6\x62\xa5\x7e\xbf\xab\x95\x49\x8c\x80\x10\xd2\x9e\xcf\x37\x54\x12\x42\x0c\xb1\x2e\x76\x9d\xcf\x50\x70\xba\x07\x84\x34\x56\xc5\x9e\xca\x6f\xb7\x02\xb4\x4f\x03\xc6\x8b\x44\xe3\xf1\x66\x6f\xae\x70\x8f\xca\x5c\x15\xdb\xad\xc5\x6b\xbb\x25\x3d\xa6\xf6\x7e\x9d\xcf\xb9\x32\xc0\xdc\xb0\x0b\x21\xac\xde\x4d\x3b\x8e\x08\x2b\x63\x1d\xb5\x59\xd5\x5b\xf3\x4e\x3e\x7e\x9a\xdc\x0b\xef\xf2\x7d\x5c\xbf\x44\x8d\x35\x7b\x37\x9f\xc2\xaa\xf8\x35\xae\xb7\xc8\xde\xa8\x33\x3d\xcb\x0a\x5b\x53\x61\x9b\x68\xcc\x91\x8a\x65\x59\xce\xc8\x9f\x52\xec\xd9\x08\x2e\x97\x72\x05\xd3\x3e\xaf\xc3\x02\x64\x52\x89\xa0\xec\xd6\x81\xe7\x12\x3d\xd2\x92\x5a\x47\xcd\x6f\x45\xec\x79\xb1\xe5\x6d\xe5\x9c\x7e\x5e\x60\x82\x30\xde\x19\x90\x8e\x97\xe0\xa6\xf8\xf8\xdf\xa4\x90\xf8\x38\xd7\x93\x6f\xa7\xa4\x6b\xc7\xb4\xc9\x2c\x6c\x93\x1a\x90\xbe\xc1\x71\xbc\xe1\x9f\xeb\x4d\x65\xee\xb4\x0d\xef\xf6\xa4\x11\x38\x5a\x94\x68\xb9\xaa\x12\x0e\x20\x47\xc8\x11\x9e\xaf\x9e\x0c\x64\x00\x33\x11\x78\xd2\x80\x62\x10\x43\x6e\xd9\x87\x3b\x89\x5e\x8e\xf4\x57\x9e\x63\x39\xf3\x81\xd4\xf3\x60\x20\x00\xa9\x8d\xb9\x76\xea\x48\x3e\xe2\xa7\xc8\xb7\x4e\xd1\xad\x29\x9f\xb0\xa5\xc7\x32\xde\x93\x21\x46\x43\x9c\x83\x84\x03\xb9\x77\x24\x6a\x49\xc4\x7f\xdb\xf2\xcd\xa5\xa1\xf6\xd3\xf3\x85\xed\x09\x26\xb9\xc6\x45\x88\xb2\x5d\x97\x21\xd3\x76\x45\x89\xc9\x75\x68\x09\x7c\xfe\x8a\xf0\x4a\xa1\x00\x31\x58\x40\x0c\xc1\xa7\xca\x65\x2f\x75\x47\xe5\xaf\x2a\xbf\x47\x73\xaa\x69\x86\x31\xa0\x2c\xf3\xac\xfc\x3d\x14\x63\xcf\x6a\xc8\x1f\x90\xc9\xfc\xcd\xb0\xc9\xc5\x7d\xb4\xd6\x78\x54\x62\x28\x23\x37\x88\x36\x73\x6f\xdd\xda\xef\x78\x31\x6e\x7d\xbf\x89\xc2\xd5\x65\xce\xa2\x5c\xce\xe2\x0a\x55\x15\x67\x1f\x2e\x22\x1d\x68\xaf\xf1\x9b\x52\xf5\xe6\x21\x18\x1b\x82\xa0\xca\x07\xab\x8e\x8d\x55\x94\xc1\xdb\xa7\x0e\x2f\x9f\xfa\xf8\x1a\x0a\x32\x8b\xae\x0a\x29\x8d\xc4\xfc\x7f\x4c\x5c\x56\x2b\xae\x03\xd2\xe2\x7a\xd3\xde\x4d\xef\x1e\x2a\xf1\x8f\xe4\xbe\xba\xbb\x13\xce\x61\xd9\x1b\x74\xc4\x06\x53\xc2\xae\x11\xb2\xa1\xda\xf0\x46\xe1\x82\x37\x5a\xd2\x6d\xe0\x8d\x7b\xcf\x08\x63\x3f\x93\xd9\x0b\xc3\x03\x84\x3f\x5c\x86\xd3\x90\xbf\xa4\x08\x8f\x51\xf7\x92\xbc\x38\x59\x75\x96\x8d\x97\x0e\xfd\x33\x9b\x73\x9f\x45\xf9\xd2\x87\x57\xf7\x76\x61\x3c\x7f\x11\x1a\xaf\x88\x7a\x75\x78\xc5\xa8\xff\xd7\xba\xec\x52\xb3\x68\x35\xbe\x7d\xfb\x51\xf2\x98\x8c\x8a\x2a\xd8\x03\x57\xc9\x0b\x53\x9d\x98\x54\x62\x97\x27\x42\x26\xde\x82\xf4\xff\x60\xb0\xd6\x1a\xbb\x67\x8f\xf2\xf2\xc9\x30\x9c\x3c\x7f\xff\xe4\xb9\x3b\xf9\xf9\x79\xed\xfa\xe4\xb9\xcd\xa4\xc4\xdb\x53\x9c\x2f\xa7\xb8\x3c\xa8\x2c\x5b\x8c\x17\xb1\x99\xde\xb5\x44\xf5\x2c\x81\x7e\xd3\xda\x44\x9b\xd4\x7e\xdb\x4b\x76\x3e\xa7\xe1\xf5\xc4\xb6\x51\x96\x2d\xbe\x03\x59\x06\x3f\x93\x78\xd7\x36\x54\x19\x26\x0a\x71\x8a\x3d\xc6\xfe\x59\x9e\xe6\x9c\xc9\x5f\x22\xe5\xaf\x0f\x60\xf6\x98\xbf\xc7\x5e\x2e\xbb\x8a\xd4\x98\x4c\xdf\x8e\x84\xa7\x99\x9c\x22\x8d\x43\xe3\x0a\xee\xbf\xc6\x1a\xd1\x9e\xed\x94\xeb\x8d\xdb\xce\xc7\xc5\x1c\xbb\xb6\x8c\x5e\xbb\xfc\x8c\x7c\x66\x1f\x32\x33\xaf\x72\x99\x77\xbc\xbb\x50\x33\x2e\x02\xdd\xe5\x2c\xa3\x17\x2f\xe5\xdf\xa0\xc0\x93\xa9\x9b\x07\x08\x4f\x1a\xb7\x8c\xb3\xb1\xbb\x60\xb3\x99\xba\xdf\x77\x2b\x70\x6e\xb5\x54\xc9\x57\x6e\x05\xd6\xad\x64\x5c\x9f\x98\x33\x8f\x79\x75\x46\x5c\x46\xe7\x8a\xe5\x5c\xc0\x20\xfc\x9a\x4b\x63\xa2\xc6\xf6\x12\xfd\x7f\x99\xe8\x7c\xd0\x9a\xe7\xc3\xb9\x7c\x37\x54\xf0\xe8\x59\x25\x54\xaa\xc6\xca\x10\xd2\x85\xd6\x6f\x78\x81\xf5\x26\xae\xf6\x9e\x09\xa8\x52\xb0\x1f\x54\x8a\x34\x0e\x01\xd7\xbe\x32\x96\xd7\x4f\xd3\x31\x54\x73\x68\x3e\x85\x62\xb3\x34\x45\x11\x5e\xea\xe1\x12\xb0\xaf\x7f\x4b\xa9\xf1\xfc\x9c\x1b\x79\x4a\x38\xfa\x38\x7a\x18\x6c\x95\xce\xd5\xfc\x87\x86\xca\x3d\x2d\xee\x42\x1e\xf5\x79\xe2\x8a\xed\x81\xc0\xf2\x92\x38\xe7\x81\xa9\xb4\x2f\x68\xd7\x73\x13\x92\xc8\x14\x99\x12\x53\xa3\xe8\x01\x4e\x85\x77\x7e\xec\x9f\xb0\xf0\x88\x27\x74\x4a\x9f\x85\xe8\x81\x9a\x6a\xdd\x97\x0a\x34\xcb\xf2\x91\xd4\xb8\x26\x14\x53\xb2\x7a\x40\x95\xcd\x80\x92\xee\x56\x5d\x21\x1f\x65\x21\x6c\x38\x1e\x4b\x59\xf5\xa0\x92\xd6\xd2\xab\x29\x37\x24\xf0\x06\x64\x96\xe5\x9d\xff\x24\xa1\x0f\x77\x85\x21\x6a\x56\x7f\xb6\xcd\xdf\xf8\x48\xd4\x75\x0f\xee\x8a\xad\xf1\x02\xd6\x43\x63\x52\x34\x61\x05\x05\x0b\x68\x4f\x56\xf7\x08\xd9\x00\xdd\x15\xdb\xb1\x16\x03\xfc\xde\x10\x8e\x0c\xf9\xb4\x17\x39\x67\xae\x0c\xf7\x59\xe8\xbf\x3b\x70\xd1\x80\x27\x50\xd7\x28\xc6\x51\x7e\x10\x5c\xc1\x6b\x98\x34\x50\x09\x5c\x05\x96\xb5\x8d\xcb\x85\x17\x7d\xd1\x7a\x74\x3e\xa7\x13\x77\x7f\x74\x6a\x16\x88\xb6\xdb\x7f\xfd\x97\xa7\xed\x97\x2f\x9f\xb7\x1f\x3e\xfd\xf1\xf5\xe9\xdf\xbe\x6e\xb7\xa6\xb2\x21\x37\xfa\x11\xb6\x7f\x7c\x59\x52\xb2\x31\x57\xa6\xd4\x31\x68\x6e\x25\xec\xd8\xa8\x40\x42\xf3\x41\xec\x07\xc1\x81\xab\xf1\xdd\x81\x82\x36\x4d\xce\x90\x36\x28\x8e\xa3\xfc\xec\xa7\x90\x16\x95\x86\x83\x5a\x42\x1f\x63\x8c\x62\x9d\x53\xae\x1c\x97\x7d\x67\xd2\x8f\xe2\x3b\x7f\xbc\xc5\xd8\xd1\x46\xbc\x7c\x16\x42\x21\xa4\xcb\xf7\x56\xd7\xc6\x62\x8d\x70\x6b\x6a\xf4\xf8\xbc\x90\x4b\xa4\x13\x45\x82\x3b\x54\xb3\x5f\xc4\x45\xd3\x7c\xf1\x5a\x27\x55\x22\xac\xfc\x63\xba\x0d\xfe\x8b\x94\x67\x68\x85\x84\x0f\xb6\xe8\xab\x2e\x9b\x44\x3d\xae\x4d\xbe\xc9\x6b\x6a\xfc\xbe\x45\xe5\xba\xdd\xcc\x69\xbf\x76\x32\x80\x9c\x4c\x29\x5b\xa6\xbf\x0e\x43\xea\xde\xc8\x65\x5c\xdb\x44\x79\xec\x77\xae\xb4\x7c\xea\x6d\x6e\x51\x85\x6c\xbe\x6f\x8b\x6d\x7d\x91\xab\x6e\xf7\xf9\x3d\xd2\x95\x2c\xb6\x26\xff\x30\xf5\xd2\x30\x58\xff\xad\x1c\xb3\x05\x8d\x75\x2d\x26\xae\xc6\x14\xb3\xa6\x4c\xe9\xd2\xaa\x05\x2f\x53\xe3\x4c\x77\x87\x9a\xca\x26\xc5\x6c\xfc\x8d\xf5\xf0\xd4\x30\xc3\x39\xab\x07\x0c\xaf\x0a\xf8\x68\xef\xdb\x7a\x83\x6b\xc1\x5b\xb6\x2b\x4f\x93\xec\xcb\xb4\x53\x6a\x18\xcb\x1f\x7e\xe8\x45\x4d\xfb\x4e\x8c\xaa\xfc\x87\x1f\xef\xef\x53\x1d\x02\xf5\x89\x0e\xc3\xef\xbc\x15\x25\xc7\x52\x4c\x0a\xc6\x72\xed\xcd\x59\x0c\x18\xa8\xea\xca\xf4\x87\xd4\x46\x60\xe7\x4a\xa5\x59\x57\xaa\xfc\xe4\x0e\xab\x94\xf8\xea\xa6\x96\xeb\xbf\x02\x1a\x06\x72\x01\xdb\xf9\xac\xe6\x62\x2f\x4f\x1b\x76\x48\xf1\x3a\x7c\x9c\x9c\x86\x0f\x3d\x1d\xc7\x32\x9d\xbe\xdd\xbd\xb0\x46\x75\x77\x3f\xdd\xfd\xfd\x2f\xfb\x64\xfa\x76\x67\xc2\x39\x65\x1c\xa4\x69\x0c\xb4\x69\x18\xdf\xa5\xda\xae\xef\x1e\x52\xbc\x76\x8a\x0e\x79\xfa\x1f\x3c\xb1\xff\x02\xde\xae\x9d\xa2\x8d\xfd\xaf\x37\x1a\x87\xb7\xa0\xf0\xb1\x7a\x78\xfb\x75\xf1\x83\xb4\xde\x60\x4e\x0f\xbf\x2b\xd8\x2f\x08\xfe\x7a\x71\x84\xff\x4c\x15\x48\x46\xfb\x92\x17\xa6\xe9\xe0\x2e\xdf\x05\x3b\x38\x2a\x2f\x58\x83\xd3\x1f\x52\xa3\xc2\x92\xf7\xdf\xfd\x57\x00\x00\x00\xff\xff\xdc\xb4\xa5\xe2\xc2\x1e\x00\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\xfd\xfb\x7a\xdb\xb6\xb6\x28\x8a\xff\xfd\xdb\x4f\x21\x71\x65\x71\x01\xd5\x30\x2d\xa5\xb3\x9d\x7b\x52\x41\x34\x13\xc7\xb9\xb4\x49\xec\xda\x4e\x7a\x51\x35\xbd\x69\x0a\xb2\x11\x4b\x80\x0a\x42\x76\x1c\x91\xbf\xf7\x39\xaf\x71\x9e\xec\x7c\xb8\xf1\x26\x2a\xed\x5c\xfb\xec\x93\xef\x8b\x45\x82\xb8\x0e\x00\xe3\x86\x81\x31\xe6\x74\xc1\x38\x45\x68\xb1\xe1\xa9\x62\x82\x23\xbc\x0d\x36\x19\xed\x65\x4a\xb2\x54\x05\xe3\xbb\x44\xf6\x14\x09\x36\xdc\x66\x9c\x07\x7d\xa2\x1e\xd6\x54\x2c\x7a\xd7\x4b\x71\x95\x2c\x2f\x6e\x58\x36\xa9\x1e\xe3\xae\x9c\xf7\x8c\xcf\xc5\xfd\xc4\xfe\x74\xe6\xb0\x15\xb8\x7a\x3a\x73\x64\x74\xb9\x98\xe8\x3f\xf1\xb6\x18\xfb\xce\xf6\x28\x52\x40\xf1\x56\x52\xb5\x91\xbc\xa7\x10\x25\x5b\xfa\x79\x2d\xa4\xca\xe2\x6d\x51\x00\x8d\xdc\x1b\xae\x1e\x0b\x3d\x22\x49\xea\x43\x56\x78\xab\x13\x29\xd9\x4d\x39\xb9\xfa\x44\x53\x15\xad\xa5\x50\x42\xf7\x04\x24\xa1\xd1\x4d\x92\x9d\xdc\xf3\x53\x29\xd6\x54\xaa\x07\xe0\x24\xf0\x05\x03\xe2\xfb\x7b\xfe\xb0\xba\x12\xcb\x89\xfd\x89\xb7\x05\x08\xc2\x23\xa6\xa8\x4c\x94\x90\x79\x1e\xfc\xf3\x9f\xfe\x25\x00\x46\x78\x94\x64\x0f\x3c\x7d\x53\xff\xde\x48\x09\x20\x21\x3c\x52\xe2\x5c\x49\xc6\xaf\x2f\x92\x6b\x93\xa5\xf6\x1e\x54\x40\x49\x35\x50\x40\x02\xb7\x83\x10\x84\x86\x21\xad\x86\xd0\x63\x3c\x53\x09\x4f\x75\x2f\x17\x13\x1a\x2f\x80\xf9\x61\xa6\x92\x26\x8a\x22\x51\x65\xc6\xba\x5d\x7a\xdf\x3b\x41\x3c\xcf\xa7\x33\x3c\x76\xa0\x66\xd1\x25\xe3\x77\xe2\xb6\x0e\x33\xdd\xa8\x6d\x92\x93\x20\xdb\x64\x6b\xca\xe7\x74\x7e\xae\x12\xa9\x02\x5f\xae\xcc\x2d\x80\xe1\x2d\x5b\xa0\x80\x7e\xa6\xe9\x46\x31\x7e\x1d\x10\x42\x38\x56\x37\x52\xdc\xf7\x74\x93\xc7\x52\x0a\x89\x82\x57\x94\x5b\x10\xf4\x58\xd6\x4b\x96\x92\x26\xf3\x87\x9e\xdc\x70\xae\x8b\xe0\xb1\xae\x22\x15\xab\xf5\x92\x2a\x3a\xb7\x55\x98\x6a\x4d\x3d\xfa\x5d\xb8\x2a\x99\xef\xc2\x25\xc2\xc5\x42\x48\x24\xa3\x15\x55\x37\x62\x4e\x04\xc8\x28\x91\xd7\x84\x8d\xc7\xb6\xfb\x09\x91\xd1\x9c\x2e\xe9\x75\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x42\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x19\x4e\x05\x57\x8c\x6f\xa8\x6f\x20\x2d\x0a\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x46\xb9\x22\x32\xba\x74\xbf\x89\xbc\x1e\xd3\x65\x46\x7b\x8d\x0e\x97\xf9\xcd\x38\x5a\x70\xac\xc3\x88\xd4\x06\x6e\x87\x30\x96\xd1\x9c\x65\xeb\x44\xa5\x37\xc7\x9f\x53\xba\x36\x90\x36\x5f\x70\xa1\x1b\x0a\x6c\x0f\xeb\xad\x84\xa1\x8c\x92\x2b\xb9\x59\x2b\xe4\xbf\xda\xba\xf0\x98\x93\xda\xe4\x18\x44\xb0\x20\x1b\x37\xcd\x06\xee\x5c\xc8\x55\xb2\xd4\xb5\x2d\x22\xb3\x58\x74\x8f\xb9\x06\x9e\xe0\x74\x52\xeb\x5d\x5c\x0d\xe3\x57\x46\x97\xf3\x00\x16\x06\xe2\x1d\xd0\xdb\xde\x25\xcb\x0d\x8d\xcd\x77\xd0\xf5\xc4\xb6\xba\xa2\xa8\x20\x64\x5b\x0b\x43\xd4\x06\x81\x9b\x50\x97\xd3\x4d\xeb\xc2\x8e\xbf\x28\x90\x02\x09\x09\x06\x56\x94\x5b\xc5\x0f\x67\xab\xe4\x83\xc3\x22\x5b\x5d\x77\xec\xc7\x06\x89\xbc\x8e\x55\x94\x26\xcb\x25\xd2\x19\x8b\x22\xd5\xd0\xd5\x08\xa2\x91\xdd\xb5\x68\x72\x17\x45\xa1\xa2\x7b\x99\xac\x49\x6a\xa0\x96\x91\x3a\xca\x5a\x20\xbc\xad\x3a\xb0\x6c\xbc\xad\xf5\x9b\x2e\x72\xa3\x8b\xdc\x4c\xc5\x8c\xd4\xf0\xb2\xc7\x72\x37\x2c\x2b\x4c\xc5\x73\xbf\x6f\xaf\xa9\x3a\xf5\x3b\xf6\x64\x01\x77\x64\x1e\x86\x73\x34\x47\xe7\x68\x3a\xc3\x18\x8f\xef\xc2\xf0\xae\x4f\x34\x1e\x90\x76\x28\x77\x20\x70\x18\xa2\x1b\x72\x87\x4d\x4d\x0f\x64\x5d\xed\x79\xb2\xa8\x3d\x37\x31\xc3\x0d\xae\x06\xb2\xd2\x40\x98\xda\x65\x0e\x1e\x00\x7e\x0d\xcd\xa2\x85\x90\xc7\x49\x7a\x53\x43\xb3\x14\x6f\xd5\x94\xce\x1a\x58\xb6\x36\x26\x8f\x51\x10\x05\x85\x8b\x02\xe3\x0a\x2e\xd7\x16\xcd\x1b\xd4\x32\xae\xe7\x25\x4d\x7c\x52\x16\x48\x2a\x70\x69\x54\x52\x47\xf6\x1c\x12\xbc\xed\x97\x39\x4d\x49\x48\x20\xb5\xd5\x67\x7a\x85\x4f\xc5\x0c\x14\x30\xbb\xc8\xed\xc0\xfa\x84\x64\x6e\x8d\xdb\x8d\x90\x99\x05\xba\x24\x8b\xc8\x2c\x58\xbf\xf7\x97\x61\x18\x08\x03\xb2\x8a\x14\x2c\x4b\xb0\x2f\x21\xb8\xbc\x4c\xee\x13\xa6\x02\x3c\xa1\x91\xa4\x99\x58\xde\x51\xb4\x8c\x5c\x2a\x8e\xd4\x0d\xe5\x4d\xca\xc4\x1d\x26\x01\x65\x7a\x59\x60\x68\x7f\x76\xa0\xf7\xdf\x71\x5c\xab\xb9\xab\x46\xd7\x65\xa2\x20\x41\x8b\x9d\x0a\x3d\xd8\x76\xeb\x2d\x52\x94\xd9\xbd\x64\x60\xa6\x01\xa9\x53\x7d\x01\xc2\x27\xdc\xb6\x96\x40\x82\xe3\x04\xe1\xa2\x9a\xc1\xab\x6a\x06\x25\x51\x25\x21\x9c\x52\xb7\x67\x67\x1a\xd6\x77\x82\xcd\x7b\x43\x8d\x9c\x0c\x26\xa1\x25\x12\x26\x7c\xb3\x5c\x42\x85\x00\x68\x1d\x45\x56\xb5\x45\xb6\x2b\x61\x88\x68\x89\x0a\x3c\x4e\xa3\x06\x17\xd8\x16\xc0\xf6\xa6\xab\x42\xec\x46\x93\x8d\x69\x1b\x9b\xd8\x1a\xf4\x72\xba\x78\x58\x53\x47\x9d\x2e\x6e\x68\xcf\x37\xdf\x9b\x0b\x9a\xf5\xb8\x50\xbd\xb5\x14\x77\x6c\x4e\x7b\x49\xef\xbf\x4c\xe1\xff\xea\xd9\xba\x82\x12\x5a\x96\x0d\xe1\x64\x83\x24\x54\x03\xb0\x6d\xd4\xd7\x9d\xc6\xf7\x76\xdd\xb9\x82\xfb\xba\x65\x96\x63\x1b\x62\xd9\xd8\x32\x00\xdc\x12\x07\x5b\x83\x98\x08\x8b\xa0\x11\x9d\x2a\xbd\x52\x36\x4b\xf5\x3e\x59\xd1\x19\x11\x76\x61\x00\x8d\xf4\x8a\x23\xca\xfc\xbc\x15\x69\xb9\xab\xfb\x15\xa4\x1a\x40\xb6\x0b\xb4\x0e\x62\xbc\xdb\x17\x1c\x8b\x18\xfd\x35\xa8\x96\x10\xb5\xbd\xd3\x94\x5f\x83\x35\xe1\x3d\xb7\xb7\xba\xaa\xaf\x16\xdb\x7d\xc5\xbf\x69\xc4\xfe\x56\xa4\xb1\x9a\x0e\x67\xc5\x78\xd4\x63\xbc\xa7\x4c\xd7\x0d\x1a\x7f\x2b\x52\xa2\xa6\xa3\x19\x86\xc7\xd5\x97\x05\xe3\xc9\x72\xf9\x60\xbf\x3d\x9e\xe9\x1e\x2e\x14\x95\xf6\xfd\xdb\x19\x06\x83\x80\x94\x7c\x38\xe6\x4a\x32\x9a\x45\xeb\x4d\x76\x83\x68\xad\xfd\xe3\xaa\x7d\x15\x39\x02\xc5\x04\xcf\xf3\x6d\x31\xa6\x66\x36\x49\x49\x5f\xf4\x28\x14\xed\x19\x30\x40\x3d\x37\xa1\x55\x85\x27\xba\xc2\x56\xb3\x64\xea\xc7\x16\x48\x21\x54\x50\xcc\x40\x95\x48\xf7\xde\x74\xd2\x75\x55\xd2\x8c\x2a\xd4\x1f\xd6\x7a\x78\xae\x2b\xd4\x7b\xa7\xec\xe7\x54\x98\x2d\x58\x5b\x67\x06\x63\x29\xbb\x18\x77\xf9\x5b\xbb\x38\x7c\x6e\xa5\x73\xf5\x59\xf6\x3e\x79\x8f\x54\xb4\xa4\xfc\x5a\xdd\x60\xcf\x0b\x1e\x8c\x80\x91\x1a\xcb\x8e\xb7\x9a\xfd\x1a\x0f\x06\xfc\x89\xcf\x3b\xc6\x6c\x81\x1c\x92\x54\xc0\x71\xd5\x0b\x87\xaa\xa6\x5c\x4f\x84\x5e\xb6\xa4\x3f\x82\x12\xdd\xfa\xef\x6e\x5f\xfb\x1c\x43\xa0\x45\xc5\xa9\x9a\xc5\xcc\x0a\xb7\xf5\xb6\xfa\x35\xbe\xac\xe1\xa6\xcb\x92\x58\x38\xe6\xc3\xd5\x66\xb8\x8f\xfe\xd0\x17\xec\x2d\x6b\x64\xf1\x21\x4a\x05\xcf\x94\xdc\xa4\x4a\x48\xb2\x86\x75\xe3\x7d\x09\xeb\x69\x32\x23\x4b\xc3\x8d\x2d\x93\x07\xbd\xbd\x48\xc5\xc9\xbe\xf4\xd0\xd4\x5b\x3f\xdb\x49\xee\x10\x43\xba\x26\x20\x0c\x55\xbd\x51\x37\xde\x7e\x5f\x33\x46\x94\x10\xb2\xcc\xf3\x8e\x26\x09\x21\x1a\xb1\x56\xfd\xca\x73\x1a\xf1\x64\x45\x31\x2e\x40\x45\xab\x44\xde\x76\x11\x68\xc7\x06\x64\x0d\x46\x63\xd2\x99\x8a\x14\xac\x71\x8c\x54\x74\x79\x69\xe0\x75\x79\x49\xd6\x90\x98\xfd\x95\xe7\x48\x69\xc0\x74\xf4\x0b\x63\x50\x7b\xd9\x8e\x07\x0c\x4a\xf7\x2e\x31\x5c\xd5\x6e\xf7\xb6\x8e\x7e\x6a\xde\x0b\x56\xe8\xba\x2e\xbf\xd4\x5e\xa6\x6c\x2f\x3f\x05\x2a\x7a\x56\x97\xb7\x88\xde\x8c\x46\x02\xab\x4a\x18\x99\x0a\x0c\xa3\x51\x52\x2a\x16\x86\x88\x91\x53\x29\x56\x2c\xa3\x96\x97\xb2\x02\xd3\x35\x4a\x7d\x01\xac\x59\x09\xdf\x58\xd7\x84\x23\x89\x27\x49\x9c\x98\x85\x8a\xba\x28\x76\x59\xd8\xe0\x6d\x65\x17\x7d\x59\x40\x13\x61\x58\x69\x20\x3d\x34\x81\x1b\xc0\xc3\x57\x58\x48\x78\x28\xe5\xc9\xdd\x2c\xc1\xd4\x62\xda\x5e\x59\xd9\x2c\xd0\x40\xba\xa5\x0f\x59\xc7\xfa\x9c\xce\xc6\x7a\x4f\x1b\xf2\x6e\x66\x1a\x53\x8b\x16\x25\xae\xb6\xaa\xa4\x77\x54\x66\x14\x61\x28\xb7\x9e\xf4\xc8\x80\x96\x88\xc0\x21\x0d\x1a\xad\xc5\x1a\x19\xec\xc3\x6d\x8d\xae\x1e\xe9\xb6\x3c\x07\x59\xe2\x03\x59\x94\x1f\x3d\x02\x90\x85\xee\xae\xc9\x9a\x91\x73\x38\xa9\xad\xad\x6d\x6d\xd7\xc4\x27\x60\xd0\x63\x5c\x1f\x93\x46\x8c\x1a\x71\xae\x25\xbd\x23\x43\x8b\x44\x0d\x12\x71\xcf\x46\x7c\xb3\x6c\xa8\x79\x74\xf8\xc2\xa4\xf8\x2e\xd9\x97\x06\x89\x32\x49\x4d\x92\x69\x92\x6a\x8c\x49\x9b\xb4\x78\x7c\x7e\x8c\xa1\xaf\xb0\x07\x31\x35\x00\xd1\x08\x3e\x50\x96\x7b\x49\x6f\x12\xf9\x4c\xa1\x21\x2e\x59\x4d\xfd\x19\x28\x0e\x43\x87\x95\x07\x34\xca\x96\x2c\xa5\x68\x84\x35\xe7\xaf\x3f\x6b\x5e\xdc\x51\xeb\x02\x32\x25\xd6\x71\x6d\x19\xd4\x06\x33\x74\x4a\xa0\x56\xe7\xa6\xc3\x59\x8d\x5c\x35\x79\x16\x65\x79\x16\x2b\xa8\xaa\x3a\xf7\x61\x29\xd2\x5d\xb2\x2c\x60\x47\x54\xed\x9c\x04\xdd\x07\x5f\xd1\xd8\x11\xab\x1b\x96\x8d\x6b\x1c\xbc\x51\x75\xb8\xfa\x13\x47\x5f\xbd\x40\x66\xa0\xab\x3c\x4b\x23\x81\xff\x29\xe3\xd2\xef\xf3\xc2\x43\x5a\xb4\x07\xed\x96\xe9\xc1\x68\x2c\x9e\x92\xe1\xf8\xe0\x40\xd8\x05\xcb\x76\xa0\x23\x66\x90\x10\xd6\x86\x90\x21\xd5\x1a\x6f\x44\x96\x78\xe3\x8a\xdd\xa6\x7c\x6e\xf5\x19\xfe\xdb\x13\x52\xae\x42\xaf\x80\x70\x93\xcb\x20\xf0\xfc\x4b\x80\x61\x53\x4b\xae\x98\x17\x5b\x57\x1a\x86\x9b\xe6\x82\x7e\xc2\x4a\xde\xa7\x6a\xbc\x4a\x83\xfe\xd0\x14\xac\xe7\xaf\x2a\xad\x97\xa8\xa5\x16\x5e\x8b\x91\xfe\xdb\x6d\x99\xa2\xba\x50\x7f\xb3\xab\xfb\x51\xf2\xa1\x97\xa9\x44\xd1\x15\xe5\xaa\x77\xcf\xd4\x8d\xd8\xa8\x9e\x29\xde\x13\xb2\xe7\x7a\x10\xfc\x37\x3a\x5c\x14\x05\x58\xb5\x47\x5c\x57\x60\x59\x6c\x64\x31\xd0\xde\x99\xe7\x76\xe6\x4b\xf5\x5a\x7b\xe6\xb9\xe1\xa4\xc4\xee\x2c\x96\x9b\x53\x34\x27\x2a\x0c\xab\xce\x8b\x7a\x37\xdd\xd2\x12\xe3\x2b\x49\x93\xdb\xa2\xd0\xd4\x26\x30\xcf\x66\x93\xe5\x79\xe0\xb5\x27\xe6\x1d\x87\x61\xb5\x76\x68\x18\xd2\x27\xa4\x3e\x6a\x43\xaa\x34\x26\xf2\x74\x8a\x4d\xea\xeb\x33\xde\x96\x3c\x93\xdb\x44\xca\x6d\x1f\x0a\x6c\x82\xf6\x61\x2f\xcb\x5d\xd5\x9a\xd1\x9c\xbe\xf9\xe2\x55\x33\x28\xc1\x05\xf8\x97\x16\xb8\xff\x1a\xd6\xa8\x8d\xd9\x64\x69\x0f\xdc\x24\x4e\xaa\xee\x98\xb2\x71\x4d\xdb\xe5\x72\xa0\x12\xfb\x90\x12\xf3\x2a\xcb\x79\xd7\x47\xe7\x65\xc6\xaa\x42\xbb\x39\xe3\x9a\xc6\x4b\x39\x1d\x14\x75\xc8\xd4\xe6\xa3\x18\xb2\x02\x16\x8c\xb3\xec\xa6\x81\xcd\x4a\xd4\xbd\x7f\x59\x51\xbb\xac\x2a\x29\xb9\xb5\xac\xa8\x59\x56\xb2\x2e\x9f\xe8\x39\xaf\xe3\xd5\x12\xe2\xb2\x36\xaf\x20\x4b\x01\x06\xc3\x31\x92\xba\x8b\x05\x98\x4d\xf4\x7f\xaa\x8b\x76\x0d\x9a\xee\x39\x72\x2e\xf7\x92\x0a\x5e\x53\xab\x78\x49\x55\xf7\xd2\x93\x74\x51\x14\x3b\x78\x81\x2d\x35\x5d\x5d\x3a\x4c\x90\x28\x45\x57\x6b\x15\xe0\x02\x3c\xc1\x35\x5a\xc6\xb8\xad\x9a\xae\x83\xaa\x24\xcd\x5b\x2f\x6c\xc6\x5a\x28\x82\x4a\x1e\x8e\x29\x38\xf9\x37\x96\x05\x94\xea\xdc\xda\x4a\xf1\x53\x5f\xa7\x1e\x1a\xb6\xaa\x40\xaa\x3c\x79\x18\x5b\xd5\xe2\xb5\xe7\xa3\xce\x36\x5c\xb1\x15\x25\xb4\xd2\x24\x96\x7c\x60\x20\x8d\x06\xad\x9d\xb7\x47\x7a\x32\xc0\x5a\xc4\x2c\x30\x06\xde\xa9\x40\xd3\xd2\xc0\xbb\x44\xdd\x10\xa2\xff\x86\xa1\x32\x27\x0e\x68\x47\x19\x55\x1d\xd5\x84\x61\xf5\x8c\xf3\xbc\x23\xaf\x3d\xb0\x09\x43\xfb\xdb\x9d\x27\xa3\xcb\x45\x18\xea\xbf\xdd\xdf\x75\xc7\x70\x9e\xd7\x86\x58\x4d\x42\x80\x11\xae\x89\x86\x46\xc8\x2d\xf5\xb0\xfd\xbe\x66\x6d\x5b\xda\x56\x2d\x8d\x41\x42\xfa\xac\x71\x60\xe5\xaa\xfc\x7b\xdf\x8b\x0d\xf6\xf4\xc8\x1f\xd0\xa0\x6d\x01\x23\xd8\x5e\xd7\xb9\xbc\xaa\x50\x51\xe0\xe9\x68\xa6\x01\x9b\x92\x6d\xa1\xd9\x44\x53\xe8\x4d\x76\xcc\x37\x2b\x2a\x93\xab\x25\x85\x4d\x4d\xd1\x5a\x3b\xf9\x79\x41\xb3\x54\xb2\xb5\x12\x12\x32\xb2\x5d\xc4\x9b\x30\xec\xa7\x16\xc3\x6f\x47\xf1\xe3\x02\x46\x78\xb2\xcb\x2b\x6f\x2c\x6f\xa6\x70\x5d\x62\xa3\x11\x2d\x9b\x2b\xe2\xb4\x80\x05\x69\x22\x4a\x27\xe8\x54\xb9\xe2\x3e\x1a\x85\x0a\x43\x2a\xf8\x82\x5d\x6f\x7c\xda\x63\x9d\x76\x2f\x99\x72\xef\x7f\xd3\xef\x56\x5e\xa0\x45\x01\x4b\x3d\x46\xcf\xf6\x43\x97\x2c\xd5\x5b\x7a\xc9\xdf\x31\x8c\xff\x13\x0e\x46\xb8\x80\x1b\x12\x04\x51\xb6\x5e\x32\x05\x73\xd2\x05\xff\xbe\x85\x11\x0a\xbe\x04\xb8\x13\x8c\x68\xa8\x45\x95\xc9\x6e\x93\x81\xed\x4e\x40\xc8\x1a\x29\x3c\xb9\xf1\x7a\x80\x20\xc0\xb1\xab\x54\xe1\xc2\x3d\xc2\x1d\x69\xb1\x89\x9a\xa4\x69\x54\x63\xd1\x44\x4d\x8d\x74\x94\xf0\xff\xd2\xec\xc2\x72\xe9\xf4\x6f\x3d\xc1\x7b\xc1\x40\x55\xd2\x58\x01\x0f\x5d\x20\x98\xa3\x3b\xa4\x8c\x54\xd5\xf1\x75\x77\x89\x4f\x74\x0f\xfa\x84\xa8\xb8\x4b\x4e\x2f\xe0\x9a\xec\x10\xbd\xfe\x4a\x37\x50\x6a\x4f\x0c\x3a\x05\x83\x19\x69\x18\xee\xd6\x82\xa4\x26\x38\x6e\xda\x34\x53\xbf\x32\xe7\x2c\x6e\xa2\xca\x8a\x78\xb7\xb2\xc6\x94\x36\x6b\xe0\x64\xf1\x27\x85\xfb\xff\x7b\xcd\xef\x9b\x02\xc1\xef\xa8\x54\x4e\x7b\xd7\x53\xa2\xb7\x96\x6c\xc5\x14\xbb\xa3\x3d\xd3\x2f\x8d\xbb\xaf\xf4\xd2\x6c\x1d\xad\xde\x77\xee\x82\xde\x95\x5f\x21\x14\x17\x70\x4c\x44\x34\x17\xe9\x46\xf3\x88\x70\x42\x56\xe8\x18\x87\xe1\x0a\x1d\x3b\xe5\xc1\xf1\xd2\x70\x8f\x18\xce\x3b\xf5\x1a\x93\x56\x3e\xa4\xb0\x39\x3a\xbe\x24\xfd\x44\x0b\x4f\xff\x16\xa2\x39\x47\xc1\x9c\xdd\x05\x18\x82\x24\xf8\x1a\xc2\x89\x12\x8d\x6f\x3e\xfd\x29\x56\xf9\xac\xb1\x4a\x32\xf9\xb4\xcb\x34\x29\xf2\xa0\xa9\x15\x25\xd7\x88\x6a\x36\x1a\x2e\x71\x85\x3a\x7b\x9f\x2c\x68\x4a\xe4\x59\xb0\x05\xba\x37\x69\x7e\xaa\x16\xa8\x9f\x45\x8b\x0a\x8c\xa0\xa6\x74\x86\x8b\x02\x8e\xda\xbb\xcb\xae\xd4\xf6\xc4\xda\xa5\x80\x14\x1e\x04\x1d\xda\xd9\xda\xfe\xba\xe8\x06\x15\x3c\xb3\x43\xbb\xd8\x21\xd2\x6c\x81\x8e\x9a\x43\x3b\xd2\x3c\x4b\x63\x7c\x17\x2e\x73\x73\x84\xc1\x35\x55\x01\xe3\x3d\x99\xe7\x41\xe6\x1e\x77\x91\xc2\xb3\x34\xa5\x59\x26\xa4\xed\x74\xb6\x59\x6b\x32\x4d\xe7\x65\xa7\x03\xbb\x20\x75\x61\x4d\xdf\xb5\x90\xec\x54\x0e\x18\x54\x51\xc0\x29\x49\x26\x7b\x18\x8b\x67\xd1\xc2\xa4\x2c\xd0\x08\x24\xc6\xc5\x5e\x06\xc4\x54\x0a\xaa\x80\xb7\xad\xf5\xad\xc7\x78\x8a\x04\xd4\xa6\x4f\xe2\xad\x98\xaa\x19\xa1\x9e\x21\xa2\x05\xbc\x27\x62\x1a\x5c\x5e\xa6\x42\xd2\x83\x4f\xd9\x65\x76\x93\x48\x3a\xbf\xbc\x0c\x66\x79\xfe\x16\x75\x7d\x80\x6d\x81\xe1\x96\x78\x2a\x5c\xee\xe5\x71\xb5\xd7\x4b\x4b\x8b\xf7\x11\xe3\xd9\x9a\xa6\xea\x5c\x6c\x64\xaa\xf9\xdb\x56\x4a\xd7\x3e\xba\xf5\xc8\xa0\xb0\xc2\xc5\x19\xbc\x83\x17\xf0\x86\xb4\x8a\xc2\x23\x22\xa2\x9f\x69\x72\xfb\x2e\x59\xc3\xcb\x2e\xb5\xe6\xa3\x30\x3c\xe4\x89\xc1\x0c\xa9\x98\xd3\xc3\x48\xd1\x4c\xa1\x37\xe8\x11\xc6\xf0\xa1\x6d\xb5\x51\xb1\x59\xdd\x78\xe2\xfd\x54\xcd\xf2\x1c\xe9\x1f\xc7\xa0\xf5\x09\xa1\x13\x1a\x6f\x0b\x5c\x60\x14\xdc\x51\x99\x31\xc1\xb3\x00\xa6\x33\x6c\x15\x56\x5b\x97\x16\x07\xdf\x46\xdf\x47\xdf\x05\xb0\x12\x73\x1a\x07\x96\x55\x0a\x20\x15\xeb\x07\xc9\xae\x6f\x54\x1c\xfc\xdf\xff\x57\xef\xf1\xf0\xf1\xb0\xf7\x82\x72\x96\xf5\x4e\x37\xd9\xcd\x6d\x22\xe9\x5d\x0f\x7d\x59\x0a\x26\x45\x7a\x1b\xc9\x0d\x0e\x74\x43\x18\x9e\x93\x21\xbc\x32\x9c\x59\x24\x13\x3e\x17\x2b\x84\xe1\x4b\x17\x6d\xb1\xf6\x22\x28\x18\xb8\x0d\x56\x2a\x1a\xd5\x24\x08\x62\xbd\xdd\xf0\x65\x30\x40\x83\xc1\xf3\xc1\x2b\x5c\x4e\x23\xfa\xf6\x7b\x5c\xc0\x1f\xe4\x03\x0a\x6e\xe9\x43\x16\x60\xf8\xd8\x35\x49\x7f\x58\x70\xe8\x1f\xf2\xc5\x12\xb8\xd7\x64\x5b\xc0\x2f\xd5\xa4\x68\x1a\xf0\xd2\x72\x2a\x3f\x1a\x3d\xe6\x2f\xf0\x13\xf9\x51\x63\x28\xf8\x81\xfc\xa8\xd1\x33\xfc\x4c\x7e\x8c\x32\xaa\xc6\x67\xdd\x30\xff\xd9\xae\x84\x1f\xcd\x1a\x06\x5a\xc0\xbb\xae\xae\xfc\x54\xe6\xc2\x79\xae\xf1\xed\x8b\xae\x5c\x3f\x54\xb9\x0a\xab\x28\xd0\x1d\xfb\x95\x7c\x44\x81\x51\x0b\x04\x78\xfc\x7a\xfa\xeb\x8c\xf4\x87\xb0\xa7\x37\xa7\x48\xc1\xaf\x5f\xeb\x88\x46\x8b\xbf\xe2\x89\x9a\xfe\x3a\x8b\xf7\xf6\xc3\x66\x2a\xcc\x99\xdd\x6f\xa0\x14\xd9\x66\x54\xc5\x67\xa0\x31\xfc\x3b\xb8\x49\xb2\xf8\x05\x50\xbe\x10\x32\xa5\x71\x47\xf1\x17\x9a\xab\x79\xa7\x29\xcb\x19\x52\x7a\x2b\x16\xba\xa4\xa2\xf2\xa5\x90\x5d\xf9\xeb\x27\xe6\x86\x33\x18\x5b\x3c\x4c\x71\x9e\x23\x49\xde\x21\x8a\xb1\x91\x9a\xfa\x9d\x6c\xcf\x1b\xae\x65\xad\x44\xb1\xab\x25\xed\x49\x9a\x52\x76\x47\x25\x68\xc6\x67\x10\xf4\x24\xfd\x63\xc3\x64\x0d\xdf\xf5\x64\x51\x14\x40\x55\xb7\x45\x94\x32\xd4\x09\xa4\x7e\x70\x23\x04\x4e\xdc\xaa\x73\xfc\x80\xe5\x0a\x91\xe7\xe2\xf0\x78\xcf\xb6\x04\x06\xa5\x25\x4d\xdf\x50\xd7\x7e\x12\x6d\x78\x96\x2c\x34\x87\x5d\xa6\x54\x2c\x2e\x64\x55\x2a\x17\x17\x89\xbc\xa6\xea\x15\x55\xe3\x0e\xb4\x61\x34\x23\x99\xed\x40\x89\xc9\x68\x9e\xdf\x23\x06\x01\x4f\x56\x34\xc0\x79\x7e\x5a\xbe\xe8\x15\x21\x11\xc3\x51\x66\x31\x1a\x8f\x3e\x09\xc6\xcb\x1a\xca\x6a\x35\xae\x08\xcc\xd9\x44\x9f\x10\x31\x41\xe9\xa4\x9f\x85\xa1\xc6\xdf\x61\x88\x36\xa4\x3f\xc4\xb1\x3b\xc0\xd3\x69\xb0\x99\x18\xd4\xce\xe2\x53\x3b\x5e\x8c\xe3\x32\xe9\x2d\xd2\x09\x05\x46\x25\x12\xae\x8c\xca\x02\xbf\x91\x03\xd8\x65\x37\xba\x78\x4a\x23\xbe\x51\x23\x48\xf8\x31\xe4\xf9\x1b\xfb\x5e\x60\x83\x72\xa4\x22\x02\xb8\xea\x42\x32\x1d\x15\x4e\x94\x3b\xf5\x2a\x40\xa8\xee\xad\x94\xc8\x6b\xc3\x63\x79\x7d\xc0\x93\xc7\x13\xae\x90\x54\x53\x35\xd3\xa2\x9f\x42\x9a\x4c\xe1\xd8\x24\x84\xa1\xf9\x99\xd2\x59\x9e\x0b\xf3\x2e\xec\x6b\x01\x4c\x59\x3c\x98\x52\xb6\x84\xc4\xbd\x2c\x96\x42\x48\x48\xbb\x7a\xdb\x73\xa7\x8a\x64\xa0\xf0\x64\x18\x23\xf5\x74\x38\x49\x54\xcc\x14\xd6\xd4\x06\x36\xae\x86\x15\xe3\x90\x75\x96\xd7\x05\x36\x0a\x19\x21\x02\xfe\x31\x1c\xfe\x7d\xf4\x8f\x7f\x3c\xfe\xee\x6f\x7f\xff\xdb\xf0\x1f\xff\x18\xe1\x78\x58\xc0\xc2\xd7\x91\x7c\x86\x65\xad\xbe\x75\x67\x7d\xcd\xf3\x20\xa7\xb8\x00\x46\x1e\x90\xb1\x96\xcb\x14\x62\xfe\x04\x14\xd2\x16\x28\xad\xda\xc4\x74\xa5\xdc\x7e\x4f\x86\x93\x85\x42\x72\x40\x61\x88\xe3\xa5\x42\x52\xd3\x7e\x63\xa6\x62\xd4\x9a\x61\x28\xfb\x44\xba\x63\x92\xe4\x69\x6a\x8e\x4a\x91\x20\x6c\x9a\x0e\x06\x33\xdc\x27\x02\x97\xb2\xb1\x51\xc3\x96\x19\xd3\xc1\xc0\xe4\x55\x79\x9e\xf6\x18\xef\x31\x1c\x86\x6c\x9a\xce\x8c\x81\x85\x07\x4e\x9e\xa7\x79\x3e\xf4\xa2\xa8\x0a\xc3\x83\x51\x51\xc0\x8d\x22\x5b\xc6\xd3\xe5\x66\x4e\xb3\x78\x6d\x0e\x8f\x81\xf1\x39\xfd\x7c\xb2\x30\xaf\x23\x5c\x44\xee\x1d\xe6\xed\xf5\xe2\x84\x19\xcb\xa1\x0a\x32\x04\xe6\xcf\x87\xcc\xd9\x10\xc7\xfd\x7b\xf4\x1a\x24\x0e\xc3\x7b\xc4\xcd\x2f\x2b\x0f\x8b\x1a\x87\x41\x4f\xc5\x18\x9b\x2c\x84\x4e\x85\x1e\x6c\x18\xa2\xff\xff\x8d\x42\x0c\x24\xce\xf3\xb2\x50\x65\x94\x58\xc0\x9d\x22\xd3\xa0\x76\xbe\x13\x40\xd0\x14\x29\x02\x08\x58\x56\x3b\xad\x0c\x20\xe8\x92\x55\x03\xbd\x27\xdf\x8a\x34\x59\x52\xbf\x33\x6b\x9b\x34\x70\xc2\x54\x30\x83\x07\x45\xee\xcc\x39\x6c\x9a\x28\x14\xd8\x7e\xdb\x3a\x6d\x0b\x01\x86\x95\xd2\xbc\x6e\x27\xaf\xff\x3e\x59\xd1\x2c\xcf\xbb\x44\x50\x85\x14\x3c\x68\xba\x07\xd7\xfb\xcb\x5b\x76\x21\x2b\xe0\x4a\x11\xa1\x50\x70\x46\x17\x4b\xcd\x81\x43\x20\xee\xf9\x8f\x86\x15\x68\xd6\x6e\xb1\xfa\x4a\x45\x96\xcb\xc6\x20\xc9\xb5\x8a\x16\xe5\x62\x9c\x50\x3f\x16\xa9\x3f\xc7\xb4\x80\xfb\xf6\xfc\x96\x27\x7d\xe4\x4a\xe9\x35\xcf\xc9\xb3\x68\x01\x82\x7c\x8e\x16\xc0\xc8\x70\xcc\x9e\x48\x7f\x9a\xc7\x06\x83\xd2\xa4\x72\xca\x66\x63\x4d\x48\x13\xa3\x28\x52\x90\x80\x40\x14\x12\xac\x87\x78\xac\xc8\xe1\x7f\xe4\xbf\x57\x28\xf1\xf7\xe8\x10\x4e\x3a\x17\x16\xb9\x54\xd3\x73\xbd\x81\x66\x65\xa7\x09\xf9\xac\xf2\x5c\xf6\xc9\x27\xa5\xc9\xc0\x2e\x7a\xa3\x13\x86\x28\x8e\xfb\x7d\x2d\x2f\x9e\x2b\x72\xa2\x22\xab\xc9\x65\x5f\x3a\xb9\xd9\x52\xba\x89\x24\x5d\x2f\x93\x94\xa2\x63\x05\x41\x14\x68\x8e\xeb\xad\xb8\xa7\xf2\x28\xc9\x28\xc2\x05\x5c\x9a\xba\xe6\x89\x4a\x34\x1f\xf5\xc9\xbc\xbd\x7f\x76\xf1\xe6\xe3\x31\x09\xde\x07\xf0\xd9\x24\x9c\x9e\xbc\xfd\xf5\xe5\x9b\xb7\x6f\x49\x70\x1a\xc0\x91\x4e\x82\x0b\x65\xa0\xf5\x6c\xcf\xd6\xb1\x16\x69\xb0\xd1\x52\xb7\xa1\x7a\x90\x11\x15\x59\x1e\x14\x16\x44\x45\x9a\xfb\x31\xaa\x56\x92\x4d\x44\xbc\x98\x88\xe9\xc6\xf0\xfe\x1b\xcd\x5d\xc4\xc8\xbe\x6e\x0b\x5c\x3b\x08\xd7\xb3\x66\x4e\x52\xad\x00\x99\x10\x3a\xe5\x33\x60\x44\xd5\x49\xeb\x04\xa5\xe4\x42\x99\x03\x35\x1c\x86\xa9\x3b\x68\x96\x3a\x67\xff\x48\xa1\x6c\xc2\xe3\xcd\x00\x2d\x26\x41\x14\xc4\xc1\x7f\x04\x78\xc0\xad\xd1\x49\x4a\xe7\x38\x0c\x4b\x16\xdb\x9a\xf6\x3a\xe0\x27\x15\x91\xae\x8c\x3d\xef\x15\x4a\x34\x39\x44\x2a\xca\x6e\x92\x55\x9e\x33\x8d\x05\xf4\x23\x0e\xc3\x53\x94\x40\xa0\x9f\x03\x23\xff\x51\xd3\x21\x48\x0c\x17\x08\xa7\x8a\xf4\xfb\x5f\xdb\x0c\x7b\xa4\xf6\xbe\x67\x5a\x2c\x87\x6d\x89\xe4\x5b\x45\x4e\x55\x18\xf6\x6d\xa2\x69\x3f\x0c\x83\xcc\xbc\xb5\x6d\xb9\x2b\x2b\xad\xf7\x8a\x3c\x93\x32\x79\x88\x58\x66\x7e\xbb\x36\x70\x60\xbe\x38\x95\x56\x01\xb7\x9d\xa4\xc4\x29\xb7\x9c\xb2\xe9\x4c\x79\x59\x59\x33\xf1\xfb\xb1\xc2\x9d\xae\xf0\x9d\x22\xc9\xa4\x4b\xb4\x66\x34\x6b\xa9\x0b\xf4\x46\xaf\x8e\xe7\x81\x93\x33\xb3\x6d\x05\xe1\x6e\x9b\x9a\x5d\x2b\x9e\xb2\x31\xb6\x12\xac\x24\x7c\xca\x06\x83\x19\xd0\xa9\x9c\xd5\x85\xf9\x17\x16\xcb\x78\x6d\x4b\x00\xe5\xa3\xd3\x9e\x04\x18\xde\x28\xcd\x9e\xbf\x39\xbe\x3c\x3d\x3b\xb9\x38\x09\x30\x3c\x52\x75\xf3\x82\x02\x5e\x76\xf2\x24\x4f\xac\xd2\xe3\xa9\xe1\x52\x9f\xfc\x7e\xe8\x5f\x0b\xf8\xd0\x28\xaf\x25\xe4\xdf\x88\x6f\x36\x9a\x8b\x55\xc2\x78\x18\x6a\x51\xe5\x59\xaa\xc5\xc6\x5f\xbc\x1a\xf2\x46\xad\x96\x0b\xb6\xa4\x41\x5d\x4d\x60\x4e\xb2\x81\x8e\x3f\x28\xf2\x5b\x43\x13\xa9\xa2\x7b\xc9\x14\x45\x2f\x15\xb2\x0c\x5f\x94\x2e\x85\xde\xe4\xfe\xcc\x39\x5a\x27\x92\x72\xf5\xb3\xd1\x85\x47\xb6\x91\x12\x34\xf6\x80\x9f\x16\xe8\x37\x1c\x23\x44\xc9\x39\x0a\xd8\x42\x1a\xb6\x13\x47\x99\x7a\x58\x96\x26\x37\x24\xe0\x82\xd3\x00\x5e\xa8\x28\x59\xaf\x29\x9f\x1f\xdd\xb0\xe5\x5c\xcf\x07\x8d\x32\x99\x7a\xd6\x3a\xf8\x94\xdc\x25\x16\x06\x71\x80\x01\x29\x62\x10\xb3\xaa\x7a\xe0\x41\x80\x23\xb1\xa6\x1c\xe9\x1e\x57\x23\x28\xe1\xf3\xd2\x2d\xa9\xc6\x90\x40\x45\x2f\x6b\x2b\x42\x13\x30\x87\xaf\xe5\xc1\xc1\x18\x3b\x8e\xf6\x43\xcd\x1e\x67\x7a\xa7\xa6\x72\x56\x62\xdc\x0f\x0a\xe1\x62\xfc\x7a\xfa\x46\xcd\xbc\x79\xc0\x73\xd5\xb4\xd9\xa9\x2f\xdf\x12\xb3\xf9\xf2\x5e\x5f\x3a\x41\x8f\xea\x46\x3f\x46\xef\x23\x8d\xd8\xf9\x48\x41\xe3\x93\x81\xaf\x34\x0d\x2a\x1c\x4b\xa2\x7b\x00\xa5\x70\x4c\x27\x32\x7e\xe7\x38\x27\x78\xa5\x0c\x7d\x83\x2f\xaa\xa1\xeb\xfe\x43\x91\x3f\x39\xe0\x08\xc3\xfd\x34\x7a\xb2\xff\x13\x72\xc7\x23\xf1\x74\x06\x1f\x0d\xa9\xee\x12\xbd\x55\x18\x96\x36\x35\x76\x06\x67\x01\x21\x5f\x94\xd7\x9b\x4c\xba\x4f\x41\x7a\xaf\x8c\xee\xbb\x75\x0c\xd2\xfb\x43\x39\xe5\x3c\x2e\x0a\x2d\x57\xbe\x52\xe8\xc1\x20\x91\x02\x5e\x2b\xf2\x01\x05\xf7\xb7\x59\x80\xe1\x17\x45\x44\x64\xb1\x17\xfc\xa8\xc8\x5b\x35\xf9\x45\xc5\xbf\xa8\x30\xfc\x45\x45\xee\x34\xfd\xdc\x08\xa2\x79\xfe\x05\x7e\xea\x44\x51\xf7\xe8\xb5\x32\x42\x3a\xd2\x88\xf2\x1e\xfd\xa2\xdf\x26\xaf\x35\x77\x4f\x7e\xd1\x7f\x63\xfb\xfc\xa3\x16\x00\x2d\x9e\x0c\x06\x9a\xb1\x30\xc9\x05\xfc\x60\x20\xf2\x93\x2a\xe0\x67\x65\xf8\x84\x5f\xed\xcf\x6f\x8a\xfc\xa4\x50\x50\xbf\xc1\x82\x41\xed\x5e\x27\xd1\xd8\xf9\x1e\x29\x22\x27\x2a\xae\xdf\xc3\xf9\x4d\xe1\x30\xfc\x55\xa3\xc3\xdf\x14\x6c\x9b\x87\x20\xc3\xf2\xc0\x03\x17\x40\x69\x5b\xa3\xd9\xa1\xf3\xda\x95\xa2\xbb\x14\x9c\x25\xeb\xdf\xd0\x70\xca\xdd\x4e\xb3\x05\xa2\x54\x2f\xe6\x6a\x85\x56\xba\xfe\xec\x9e\x39\xbd\x5e\x9a\x64\xb4\x37\x8c\xdb\x72\x45\xcd\xde\xcb\xde\x3b\xc0\xc5\xd8\x64\x1d\xed\x64\x95\x3b\x79\x41\xfa\xdc\x8f\x77\x73\xd7\xec\x64\xaa\xfc\xc0\x7d\x89\x6f\xbb\x4a\x80\xe8\x2c\x03\x02\x97\x86\x91\x5d\x3d\x4f\xd6\xeb\xe5\x83\xe6\xef\xbc\xd4\xa8\xd7\x26\xa7\x66\xd2\xb3\x35\x4d\x19\xd5\x0b\x54\xd0\x2e\x06\xc8\x03\xf7\xbd\x5e\xfb\x0d\x8e\xae\x5f\x3f\x90\xa8\xb1\xf9\xd8\xb0\x7f\x96\x2a\x87\x61\xff\xbd\x42\xb2\xc6\xfa\x4c\x56\x48\x4b\x19\xf6\x9c\x88\x20\x49\xe4\x94\x53\x23\x4d\x48\x7f\x6e\x1b\x97\x4f\xc0\xe9\x7d\xcd\x12\x7d\x62\xea\x8c\x25\x46\x16\xd1\x0c\x63\x8d\x63\x18\x25\xd3\x99\x91\x3f\x20\xe9\xba\x36\x36\x22\x44\x93\xd1\xc7\xfa\x87\x93\x6f\xf5\x8f\x20\x7f\xd3\x3f\x8c\x7c\xaf\x7f\x12\xf2\x9d\x31\xe0\x60\x3b\x17\xa3\x52\xd8\x40\x06\x8b\x8a\xcd\x5e\xc2\x1a\x6e\xc8\xad\x42\x29\x86\x3b\x32\x47\x37\x18\x1e\x88\xa4\x48\x67\xfb\x16\xc3\x4a\x4b\x9c\x77\xa5\xc4\x79\x4d\x86\x70\x45\x16\x79\x2e\x28\xdc\x13\x3a\xb9\x42\x29\xac\x70\x2c\xcd\xc3\x10\x3b\x29\x7f\xbc\x7a\x7a\x3d\xbe\x76\xf2\x61\x92\xe7\xd7\x9a\x31\xbc\xd3\x10\x59\x93\x07\xb4\x24\x77\xd3\xeb\x19\x5c\xc3\x0d\x06\x85\xb1\x31\x0b\xbe\x9f\x5e\xcf\xc8\xba\xbc\xae\xb4\xc6\x6e\x19\x2b\xb7\x8c\xfd\xda\xe9\x0f\xed\x5a\xfa\xce\xaf\xa5\xa5\x7d\xff\xde\xbf\x5f\xfb\xd5\xc9\x9c\x89\xf1\x3d\x2c\x2b\x03\xa2\x52\x98\x1d\x95\x42\xdd\xe4\x60\x14\xf3\x3c\x17\x13\x11\xdf\x17\x05\xa4\x94\x6c\x9d\x59\x5c\x9c\x50\x34\xc4\xb0\x4a\xd6\xfa\x69\x84\x61\xc1\x96\x8a\x4a\xfd\xf2\x18\x43\x26\x56\x54\x3f\x7e\x8b\x81\xde\x51\xf9\xa0\x9f\xff\xa6\xf3\xf0\xb9\x7e\xfc\xce\x3e\xbe\xd1\x52\xac\x7e\xff\x1e\x17\xb0\xa1\x24\xa5\xde\xe8\x0e\x32\xaa\x39\x99\x1b\x36\x9f\x53\x1e\x60\x58\x50\x87\xb1\x4e\xfd\xd9\x55\x80\x61\x69\x54\x64\x19\x55\xb0\xf6\xca\x32\xab\xd7\xf3\xd8\x30\xc0\x70\xd3\x71\x8d\x70\x4e\x2b\xcc\x7c\x47\x0d\x57\xf5\xc3\xf9\xc9\xfb\x00\x9c\x0a\x8a\x2d\x1e\x02\x0c\x0f\xd4\x88\x09\x2b\x6a\x50\xe6\x35\x25\x1f\x35\x61\xbb\xa2\x24\x8b\x16\x70\x4f\x35\xa2\xb7\xbc\xaa\xde\x4b\xc7\xe6\x5d\xac\x0f\xaa\xa4\x13\x9b\xc5\xd4\x78\xa0\x84\xfb\x72\x20\xe9\x35\xcb\x94\xd4\x2d\x9c\xd7\x2a\x31\x39\x6c\xde\x5a\x8e\x4b\x5a\xd1\x93\x4f\xba\xd7\x3f\xb9\x73\xd8\xcf\x94\xf4\x3f\xd1\x3c\xef\x7f\xaa\x5d\x2e\x6c\xbd\x46\x1a\xc4\x86\xc3\x81\x23\x4a\x92\x30\xdc\x77\x9e\xf6\x5c\xa1\x15\x45\xdb\xe2\x6b\x27\x67\x2b\xab\xf0\xb2\x59\x2c\x86\xff\xbb\x39\x4b\x2b\xb0\x3d\x51\xdb\x39\x97\xb1\xb6\x27\x0f\x14\xdd\x50\xa0\x78\xcc\xc3\xd0\xf1\x36\x37\x74\x4a\x67\xb0\xa2\x2e\x23\xf0\x30\x54\x7d\x42\x6e\x68\x18\xae\x6c\x6e\x8d\x15\xe3\x15\x85\x8b\x4e\x0c\x45\xee\xa9\x26\x7a\xcf\x15\x9a\xd7\x46\x5b\x52\x85\x25\x45\x12\xdc\xcd\x30\xb7\x0c\x40\x25\xd7\xb1\x82\xb9\x3b\xdc\x63\x82\x6b\xf2\x04\x49\x9e\x23\x19\xd5\x52\x09\xc5\x20\x0b\x78\x46\x35\xb5\xee\xe0\x93\xdb\xb2\x89\x2a\xba\xd8\x8d\xf2\xd4\xbc\x76\xd7\x73\x4e\x0b\x38\xed\x20\xb0\xc4\x8e\xfb\x94\xa2\x63\x6a\xa1\x61\x04\x06\x0b\x3b\x77\x06\xe7\x07\x66\x8e\xe2\xee\xd1\xbd\x06\xcf\x04\xc9\x9a\xae\x76\x62\x0e\x18\x33\x8a\xc3\x50\x4d\x33\x3a\x9b\xf2\x99\x39\x3e\xb3\x8f\xa4\x3f\xd2\x9c\xdd\x73\xcd\xa3\xd5\x6d\x18\x16\x68\x08\xfd\x91\xb9\xb4\xe4\xcb\xe7\xb9\x99\x96\xcc\x1e\xa3\x6d\xb5\x94\x56\xd5\x32\xc4\x70\xa4\xbf\x72\x90\x18\xc7\x2b\xff\x58\xc0\xdb\xf6\x34\x95\x63\x90\x56\x31\x67\xa4\x1e\x89\xbd\x76\xe3\x1d\xad\x2b\x8e\x36\x14\x71\x68\x5c\x54\x4b\x34\x15\x71\x08\x4a\xb3\x95\x79\x7e\xea\x16\x8b\x39\x27\xc5\xc6\x20\xfd\x7d\x17\xea\xbf\x46\xca\x48\xad\x92\x5c\xd1\x86\x29\xae\xd7\xb1\x99\x77\x07\x74\x03\x4a\x63\xa5\x7b\x6f\xa0\x6f\x6c\x73\xfb\x48\xe6\xb9\x66\x7a\x6c\x39\xf3\x6c\xb2\xe5\xb9\x4b\xb4\x60\xbe\x61\x99\x01\x0c\x9d\x69\xf2\xa7\x85\xcc\xee\xb5\x6a\xf4\x70\xd5\x54\xb2\x05\x92\x66\xad\xfb\x8a\xb9\xa9\xf8\x58\x3f\x78\x33\xac\x07\x6a\x98\x05\xdf\x65\xd1\xcc\x2a\x6d\x07\xa4\x9b\x96\x3c\x47\xa2\xb6\x12\xcc\x2c\x89\xa2\x80\xb3\x4e\xf0\x50\xcb\xa9\x82\x24\xd3\x59\x0d\xfe\xb4\x79\x0b\xcd\xb4\xa6\x4c\x6b\xaf\xcd\xaf\xb4\xda\x3e\x65\x75\xdb\x05\xbc\xeb\xaa\xdc\xae\x65\x90\xba\x15\x3a\x39\xa6\xb1\x6d\x8a\x37\x9b\x92\xcd\xa6\xfa\x65\x5b\xd4\xcc\xc3\x8d\x7d\xe1\xb6\x41\xb3\xd1\x4d\xa3\xbc\x18\xa3\x53\x95\xe7\x88\x2a\x84\xe6\xb4\x2e\x94\x3a\xf3\xd3\x5e\x63\xb7\xed\x1e\xcc\x58\x54\x50\xb1\x93\x75\x3d\x25\x76\x46\xd6\x6d\x2d\x7b\x4d\xab\x52\x7e\x9a\x0e\x67\x13\xc7\x9f\xd6\xd3\x3c\x71\x07\x6a\x4e\xf7\x40\x36\x2d\xab\xaa\x55\xe7\x2c\x37\x8e\xf5\x40\xa1\xbe\xa4\xec\xb3\x9e\x56\xb3\x28\x51\x6d\x89\x99\x1d\x7c\xe4\x30\xb0\xdd\x9b\x5a\xde\x28\x2d\x46\xc3\xf0\x33\x0d\xc3\x23\x87\x3c\x77\x18\xf2\x8c\xaa\x58\x16\x18\x2e\xdc\xf5\x4e\xfc\x57\x4f\x3f\x7a\x6b\x7f\xcc\xa1\x92\x6b\x3d\x0d\x54\xe3\x5c\x08\x1a\xe2\x4b\xd0\x79\x85\xf1\x82\x22\x03\x07\xbb\x66\xb2\x68\x41\xde\x53\x78\x16\x2d\xc8\x29\x85\xcf\xd1\x82\xdc\x52\xd0\x82\xa2\x21\xaa\xe4\x8c\xc2\xb5\xfe\x7d\x47\xe1\x07\xfd\xdb\x5d\xdf\x4f\xca\x55\x08\x49\x18\x6a\x8a\x55\x47\xff\x10\xd4\xf0\x78\xb0\x0b\x83\x6e\xaa\x56\x8e\xaf\x56\xb8\x28\xcc\x38\x6f\xe8\x3e\xe5\xf4\x7b\x0a\x5b\x7b\x72\x16\xf7\x87\x05\xc6\x18\x9e\x29\xb4\x75\xee\x13\xfa\x43\xb8\x97\xc9\x5a\xff\x5a\xd5\x5c\xdc\x3f\x55\x90\xdd\x24\x2b\xfd\x50\xc0\xd6\x39\x25\x98\x6b\x02\xb4\xa1\xe8\x4c\xa1\x4b\xda\xba\x05\xda\xdf\xdd\x5c\x52\x39\x86\x45\x93\x2c\xff\x4c\xb6\x05\x1e\xdf\x23\xbb\x65\x7e\x56\xfa\xc1\xd3\x66\x0d\x46\xb3\x5f\x0b\xb7\x6b\x75\x17\xad\x3a\xb3\xa2\x8a\x99\x4a\x54\xb3\xa3\x05\x68\xf6\x2e\xde\x6d\xbf\x94\xc8\xc6\xc6\x9a\xe5\x84\xd6\xcc\x59\x4e\x34\x3d\x77\xe8\x7e\x4e\x51\x45\x89\xcd\x07\x22\xe1\x9c\x4e\xe5\x8c\x50\x8d\x39\x6e\xe9\x43\xfb\xdc\x95\x2d\x50\xff\x19\xed\xb2\x73\x51\x75\xf1\xcf\xd1\x5e\xd7\x81\x73\x3d\x68\xdf\x81\x73\x6a\xa4\xdd\x4d\x46\xed\x8a\xac\x4f\xb4\x66\x94\x86\xf6\x1b\x5b\xad\x97\xb4\xfd\x6d\xa4\xa7\xbb\x0e\x1c\xa7\xb2\xe9\x00\x8e\x9b\xc5\xa4\x80\xad\x55\xb3\xc4\x9d\x47\x75\x35\xc5\xc8\x73\x63\xd1\xf4\x96\x22\xf3\x60\x14\x24\x4d\x4b\x9c\xf8\x94\xc2\x8e\x02\xf1\x2d\x85\x7d\x46\x49\xf1\x2d\xfd\xcb\xdd\x2d\x0c\x2b\xd7\x56\x98\xc4\x67\xed\xda\x9d\xe6\x36\x7e\xf7\x17\xab\x6e\x72\x91\x7a\xdf\xa2\x91\xbd\x06\xb5\xed\xae\xb8\x63\x37\x9b\x52\xb7\xca\x6a\x4d\x30\xdc\x69\x84\x57\x6f\xda\xb2\xe3\xbb\x63\xca\xf3\x66\xeb\x16\x6d\xcf\x29\x2a\x0d\x88\xa6\x5a\xd0\x9c\x05\x7d\x72\x47\x91\x3d\x1c\x0d\xb6\x85\x7d\xdd\x26\xb1\x2a\xea\x09\x25\xa3\xe6\xba\x5f\x72\xff\x3b\xb6\x43\xe5\xc5\x04\x10\x64\xaa\x66\xc0\xc8\x68\xdc\x26\x16\x4f\xd9\x18\x0b\x4b\xb7\x2a\xc2\xc0\x06\x83\x99\xbd\x47\x45\x28\x20\x6b\x45\x50\xd2\x14\x2d\x5f\xbb\xa5\x5f\x09\xdd\xc6\xce\xa0\xcd\x4b\x74\x5f\x03\x35\xd7\x69\x08\xaf\x31\x3a\xc6\xca\x0c\x74\x9d\xd5\xf6\xd4\xd3\x2a\xa6\x23\xbd\x01\xef\xa8\x53\x0d\x18\x8d\x9e\xd0\xb0\x1f\xd7\x91\xe8\x74\x41\x67\x79\x7e\xda\x44\xac\x0b\xbd\x44\x6b\x52\x85\xb7\x65\x04\x45\x0d\x31\x28\x45\xad\xd7\x9a\x5a\x79\x95\xe4\x0b\x0a\x6f\x28\x3c\xb2\xd2\x15\x4f\xee\xd8\xb5\xbd\x14\x17\x6c\x32\x2a\x9f\x5d\x1b\x75\x75\x9e\x07\x01\xbc\xd4\x62\xcd\x5a\x8a\x94\x66\x19\x7c\xa0\xe4\x25\x0d\xc3\x97\x34\xf2\xd6\x41\xf0\x9c\x92\x0f\x34\x0c\x3f\xd0\xe8\xee\x7f\x8e\x9f\xd3\xc9\x1b\x4a\xd0\x0b\x4a\x9e\x53\x6f\xf9\x10\x05\x18\x4f\x87\xb3\xc1\x0b\x3a\x1d\xcd\xe2\x47\xd4\x30\x71\x2f\x28\x79\x44\xa3\x95\xd1\xdc\x1d\x1e\xcf\xaf\xe9\xef\x87\xe8\xf7\xf9\x00\x1f\x62\x9c\xe7\x26\xe7\x53\xf2\xf7\xbf\x69\x32\xdb\xc8\x79\x74\x23\xc5\xaa\x96\x37\x0c\xd1\x1b\x4a\x4c\x7e\xcb\x23\xbc\xa2\xe4\x0d\x0d\xc3\xc1\x1b\x0a\x5f\xda\xfa\x94\x3f\x3a\x8f\xb3\x5e\xd1\xa7\xe4\xbb\x51\x9e\xf7\x77\x57\x2e\xad\x58\x23\x44\x1b\x77\x58\xb7\x05\x9e\x7e\xa1\x1d\xb7\x07\xb7\x0b\x21\xe2\x51\x51\xc0\xa8\x4f\x88\x46\x7b\xe8\xb9\x10\x4b\x9a\x70\x1c\x2d\x84\x30\xcb\xf8\x23\xdd\x63\xf5\xf7\x9a\x1a\x7b\x23\xda\xe2\x4c\xcc\x7d\x8f\x02\x7e\xec\x58\x73\xf7\xe8\x75\x1d\xcf\xbe\xd6\x0d\x8e\xa9\x59\x9f\xdb\xc2\x73\xf8\xd3\x99\xde\x11\x9c\xf4\xfb\x9a\x14\x05\xcf\x8e\x8e\x8e\xcf\xcf\x4f\xce\xce\x03\x1c\x86\x34\x2a\x5f\x41\x10\xfd\x7d\x88\x27\x74\x3a\x9c\xc5\xbf\x50\x48\x4d\xc2\x48\x27\x8c\x66\x5e\x37\x52\x6f\x8a\xf4\xfb\x72\xe7\x40\x49\xef\xa5\x30\xec\x27\xe5\xc1\xbb\xe3\xdd\xb6\x76\x17\xc6\x07\xa3\x62\xcc\x27\x1f\xb5\xc0\x30\x6a\x88\x3b\x8e\x09\xf8\x85\x16\x38\x56\x7a\x3f\x8c\xa0\xbc\xf4\x2c\x9c\x93\x05\xf8\xc9\x2a\x21\x8c\x2a\x03\x7e\xa0\xe4\x0f\x8a\x02\xfb\x16\x60\xf8\x99\x92\x1f\x6b\xef\xe3\x3a\xc6\xb2\x27\x4e\x60\xb6\x49\x1d\x67\xfd\xa0\x39\xfd\x9f\xa9\x26\xac\x56\x3f\xd2\x65\x8f\x45\xfd\xee\xdd\xc1\x29\xa3\x49\x85\x4b\x4a\x20\x99\x7d\x6b\x8c\xb1\xba\x65\x0e\x33\x23\xa5\x81\xbb\xdc\x11\xfc\xed\xa8\xed\xa9\x49\xed\xa8\xc0\x2f\x86\x51\x01\x0e\xa1\xff\xd6\x50\xc9\x28\x49\x7e\xd5\xc3\xb7\xaf\x01\x06\x2a\x2d\x3c\xca\x04\x29\x89\x92\x61\x48\xe5\x64\x5a\xfa\x20\xe9\x1a\xf0\x6f\xff\xf6\x80\xff\x0a\xac\xab\x36\xfb\x44\x4a\xcb\xca\x98\x1e\x48\xe9\xe0\xc5\xa5\x51\xe9\x08\xd9\xb2\xa1\xe7\xd2\x92\xb0\xf1\x5f\xa1\xac\x49\x9e\x0b\x59\xe3\x05\xf6\xd2\xea\x4e\xee\x80\x4b\xf4\xe0\x78\x01\xd7\x29\x26\xf7\xb8\x71\xba\xd6\xac\x94\xbd\x7f\x3b\xb1\x67\x83\x1c\xb4\xcc\xae\xa5\x6f\xa5\x25\x72\x59\x7c\xb5\xc3\x7f\xde\xc5\xac\xfb\x0e\x12\xd4\x0c\x48\xac\x5d\xc1\x95\x42\x1c\x83\x39\x67\x4f\xc9\x70\xec\x6d\x6c\x9e\xa6\x63\x5c\x52\x33\x24\x89\x40\x1c\xa8\x37\x8e\xc1\x61\xc8\x24\x4a\xac\xc7\x22\x2f\xa9\xfc\x45\x6e\xab\x39\x3d\x67\xaa\xe4\x30\x6e\xe9\x43\x27\x43\x71\xa6\x2a\x76\xa2\x3c\x5c\xd3\xc0\xe5\xdb\xa3\xf3\xf3\xb3\xcd\x92\xbe\x65\x99\x8a\x87\x70\x74\x7e\x7e\xae\x1e\x96\xf4\x05\x4d\x97\x89\x4c\x8c\x2e\xc8\xa4\x7e\xd4\x64\xcd\x67\x5a\x32\xca\xd5\x19\x4d\x95\x4b\x78\x71\xf2\xae\xf9\x66\xf9\xe1\xea\xfd\x42\xdc\x52\x6e\x5e\x47\xf0\x22\x51\xc9\x85\x4c\x78\xb6\xa0\xf2\x8d\xa2\x2b\x97\xeb\x25\x2b\x3b\xf1\xfa\xe2\xdd\xdb\x67\xcb\xe5\x91\x58\x2e\x69\xea\xba\xa0\xd3\x76\x12\x5e\x0a\xb9\x72\xa7\xbb\x2e\xe5\x9c\xea\x1c\x55\xda\x3b\x3a\x67\x89\xab\xf6\x1d\x5b\x51\xcd\x3d\x5b\xad\xf9\x10\x34\xc3\x37\x7f\x2f\xe6\xf4\x5d\xb2\xd6\xaf\x62\x4e\x5d\x17\x4f\x13\xa6\xc7\xf7\xc7\x86\x66\x7e\x50\xa7\xcb\xcd\x35\xe3\xe5\x83\xaf\xe3\xfc\xe3\xab\xb7\x66\xae\x5d\xb6\xf3\x8f\xaf\xde\x6f\x56\x57\x54\x56\xef\xa7\x89\xba\x39\xa7\xd7\xb5\x04\xc1\xb8\xaa\x5e\x1b\xb0\x3a\xff\xf8\xca\xc2\x46\x48\x0f\x18\x6b\x9d\xfc\x7c\xb3\x58\x54\xb5\xea\x29\x3a\xbf\xa1\xd4\x57\x73\x41\x3f\xab\x0b\x99\xa4\xb7\x47\xe5\x24\x95\x49\xfe\x5d\x6c\x52\xd7\xcb\xc2\x59\x3a\x4a\x22\xa6\x89\x9c\xc1\x46\x92\x54\x86\x61\x5a\x3b\x97\xd0\x3c\xd9\x46\x86\xe1\x46\x56\x48\x83\x48\x89\xad\x11\xf8\x46\x42\x89\xd6\x40\xd6\x6d\xdd\xab\xfc\x1a\xc7\x98\x23\xed\x6c\x77\x03\x7b\xd6\xcb\x6e\xde\xee\xfb\x0a\x3a\xab\x93\xd6\x24\x34\xe9\x54\x5b\x78\xad\xae\x14\x0d\x0d\xf1\xf2\x16\xec\x0b\xf9\x15\xe7\x80\x7f\xcd\xa1\xdf\x9f\xbb\x0c\xdc\x5a\x7f\x57\x4b\x49\xd0\x9f\x67\x2e\xb1\xc1\x42\x4e\x16\x32\xde\x16\x38\xba\xbc\xfc\xf8\xe1\xf8\xf2\xc5\xf1\xc7\x8b\x93\x93\xb7\xe7\x97\xaf\xde\x9e\x3c\x7f\xf6\xf6\xf2\xf5\xc9\xc9\x8f\x97\x97\xd5\x45\xf2\xb5\xb4\x68\xb2\x66\x84\x81\x14\xee\x70\x64\x55\x83\x2e\x52\x53\x39\x03\x89\x1b\xee\xaa\x6e\x64\xdd\x91\x92\x3b\xeb\xee\x70\x0c\xa5\xcc\xdc\xcd\x65\xfb\x12\x80\xb9\xa4\xea\xaf\x09\xda\x5b\xa8\x97\xe9\x0d\x5b\xce\x25\xe5\x2d\xcf\x18\xe6\x3a\xaf\xcb\x22\x93\xfb\x77\x62\xbe\x59\x52\xe2\x2e\x14\x39\x43\x21\x6a\x5d\x66\x99\x47\xd2\xc5\xc4\xcb\x89\x44\x38\x96\xce\x12\xfb\x4e\x92\x2d\xd7\x72\xda\x3a\xd1\x78\xb0\xad\xc6\x28\x8a\xf1\x9d\x8c\xaa\x0c\xd1\x35\x55\xbb\x4c\x62\xbf\xdf\xea\x53\xad\x44\x01\xf3\xda\x2e\x88\x92\xb9\x3d\x21\xe8\x82\x42\x39\x6c\x7b\x03\xa2\x59\x50\xd2\x95\xb8\xa3\xed\xb2\x78\xeb\x2d\x72\xdb\x15\xb4\x8a\x5f\x53\xb5\x5b\xd6\x9f\x5f\xfe\x49\xd9\x9b\x24\xdb\x5f\xd6\x7b\x67\xa8\x2a\x68\x95\xde\xac\xe7\x89\x6a\xf3\xc0\xfb\xa0\x45\x54\xed\x05\x54\x94\x98\x32\x99\xbf\x7b\x5a\x2b\xe3\xbe\x90\x32\x0f\x06\x15\xad\x36\x2a\xd9\x57\xa0\xfc\x46\x6a\xf9\x74\x21\x7b\x8a\xd5\x55\xc4\x7d\x21\x65\x1e\xdc\x1a\x9b\xdb\x2d\xbb\xd0\xd1\xbb\xab\x01\x14\xa3\x46\xeb\x2a\xfb\xca\xd4\xfc\x55\xf0\x94\x1d\x2c\x6b\xdd\xf9\xb6\xb7\xfa\x67\xa6\xd6\xaf\x56\x5f\xc2\xb8\xa3\x7a\xf7\x6d\x6f\xf5\xef\x1c\x20\xbf\xda\x40\x6d\x56\x3a\x9a\x28\xbf\x9a\x46\xf6\x18\x79\xa1\x7a\xe3\x70\x27\x9d\x23\x3f\x09\xab\x0e\xd0\xd9\xf3\x3c\x2a\xd1\x74\x06\xca\x9c\xb8\x8c\x57\xad\xbd\xd0\xb9\x94\x23\x49\xe7\x9b\xb4\x71\x33\xa0\xee\x6f\xb5\xdc\x43\x88\xe2\xc2\x7b\x9b\x12\x42\xf7\xba\x5d\xfd\x7b\xbf\x86\xbb\xd4\xf6\xbe\xdc\xf8\x6b\xed\xd6\x6c\x1d\x06\x08\x51\x52\xed\x60\x24\x31\xae\x6d\x92\x89\x1c\x04\x87\x41\x1c\x04\xba\x4f\xfa\x6f\xb3\x33\x1d\xbb\xaf\x72\x07\xa8\xbc\x55\xb7\xb9\xc7\x6e\xb3\x6a\xbe\x93\x47\x2b\x33\x37\x59\xe9\x84\x45\x18\x5b\xe6\x32\xd9\xe8\x10\x65\xd5\x25\xe1\x45\xd6\xb1\x42\xa5\x4d\xad\xc0\xd0\xc8\x52\x55\x3b\x15\x33\x5c\x14\x66\x7a\x3c\x30\x60\x07\x8c\x7e\x16\xf7\x30\xeb\xc6\x2d\x4a\x65\xb9\x60\xcc\x1b\xfa\x43\xec\x7d\xc0\xd1\xfb\xde\x5c\x1a\x03\x91\xb1\xb9\x50\xe4\x18\xe8\x49\xd9\x20\x11\xd6\x6f\xc3\x35\x55\xc8\xdb\x17\x0d\xe1\x60\x84\x71\x89\xa3\x91\x9a\xaa\xd2\x1d\xc0\x0c\x04\x1e\x53\x3f\x02\xb3\x92\xcb\xb7\xfa\x69\x1a\x08\xbc\xe5\xd5\x12\x54\x35\x68\x50\x47\x3a\x5b\x33\xc4\x3b\x46\xda\x58\x2c\xbb\x5d\x04\x49\x9a\x7d\xe3\xcd\x05\x32\xe6\x61\xc8\x3d\x55\x0d\xc3\x06\xf5\x40\xb2\xdd\x03\x96\x9d\xb9\x1e\xd0\xf9\x7f\xbf\x0f\x95\xeb\x23\x4f\x2f\x74\x4b\x66\x3e\xae\xf7\x0d\xad\x9a\x40\xa5\xd1\x2f\xd9\x16\x18\xfa\x0f\x32\x0c\xf7\x33\x3e\xde\x7e\x2d\xfa\xb8\xa1\x61\xd8\xd2\x6b\xeb\xa2\x8a\x10\xf2\xe0\x4d\xfe\xc7\xfd\xff\x71\xf8\x4d\xff\x7f\xfc\xff\x7a\xdf\xf4\xee\x36\xf4\x73\xef\xee\xdb\xe8\xbb\x68\x64\xde\x51\x8a\xed\x95\xb6\xe3\xbb\x84\xf7\x7e\x15\x1b\x93\xfa\x4f\x3d\x42\x9e\xd1\xde\xbb\x37\x17\x3a\xe1\xf0\x7f\xb4\x9a\xb0\xcc\x38\x52\x5e\x61\x56\xd3\x8a\x4d\x87\x33\xfc\x94\x3c\xc6\x2a\x5a\xb1\xcf\x8c\xa3\xed\x15\x5d\x08\x49\x8f\xac\xee\x5a\xcb\xc4\xe5\xad\x2e\x63\x62\x59\x4e\xc0\x25\xe3\x4c\x8d\x77\x52\x9a\x40\xdb\x85\x94\x8a\x4c\x2e\xfb\x33\x99\xca\x99\x5f\x6b\x36\x05\x6b\x36\xb7\xae\xab\xac\xbb\xa8\x94\xa5\x32\xd7\x4c\xef\x23\x61\x8e\x62\xb2\xb1\x66\xa2\x84\x74\xee\x45\x1e\x99\xe7\x4e\x7f\x6c\x3e\x9b\xfd\x45\x38\x76\x4f\xb1\x37\x1d\x0d\x43\xff\xe4\xaa\xf1\xf4\xd5\x55\xda\xfa\xaa\xf1\xc1\x83\x24\x0a\x17\xa8\x9a\x5f\x5c\x72\x76\x6b\x23\x23\xed\x6c\xf8\xe9\xcc\x1f\xdd\xeb\xe6\x25\x4b\x55\x95\x83\x1b\x97\xb9\xfd\x91\x67\x18\x53\xb1\x5a\x31\xa5\x18\xbf\x2e\x3d\x56\x5d\x7a\x26\x62\x3f\x9b\x69\x73\x9c\x6f\xae\xb4\x08\x7f\xa5\x99\x01\x8f\xb5\x2e\x2b\x86\x62\x7f\xf1\x7b\x99\xac\xd7\x74\xfe\xca\x31\x12\xfb\x33\x3a\x4c\x62\x10\xd7\x4a\x9a\x73\xb7\x7a\x7a\x49\x50\xde\x25\xeb\xaf\xd4\x92\x75\xf5\xf3\x5e\x8b\x52\x54\x7e\x7c\x67\x2a\x7f\x90\xbe\xe6\xe4\x96\x9a\x3b\x1f\xae\x73\x47\x49\x7a\xd3\x76\x45\x57\xf9\xcf\xb1\x8e\x7f\xc0\x79\x7e\xf2\xce\xac\x20\x21\xde\x15\xcb\x4a\xaf\xe0\xfa\xb7\xee\x7b\x55\xcc\xfb\x04\xb2\xd7\xd9\x6b\xa5\xf7\xc9\x74\x49\xad\x84\xb1\x7e\x70\xfc\xbd\x9e\x6d\xc2\xc7\xf6\x86\x5d\x03\x58\x06\xbf\x3b\x61\xe0\xdc\x32\x1c\x90\x42\x35\x6f\xb5\x5c\x18\x4e\x7c\x06\x4d\xad\x76\xa5\x1f\x55\xf7\xb7\x6e\x0e\xf6\x50\x75\x9c\x10\xcd\xe9\x9d\x12\x62\x99\x4d\xaa\xc7\xf8\x41\x46\x56\x88\x28\x93\x70\x13\x4f\x2d\xcd\x55\xeb\xe8\xd2\x7d\x7e\x2d\xc4\x2d\x59\x4a\x58\xca\x88\xae\x34\x26\xd1\x88\x2a\xd6\x1b\x38\x00\x85\x75\xb2\xe0\x2e\x51\xc9\xe4\x8e\x3a\xcb\xa5\x44\xd1\xa0\x69\xc5\xa1\xfc\xfd\x8d\x73\xfd\xd1\xf5\x56\x45\xe5\x9a\x68\xf3\x35\xcd\x06\xfd\x6a\x0e\xec\xcc\x60\xd8\xae\x25\x5d\x53\x3e\x37\x32\x70\xbd\x1e\xcb\x52\x7e\xbd\x36\xbb\x6d\xba\xeb\xc2\x85\xbb\xba\x07\x57\x92\x6c\xcd\x48\xba\xe4\xae\x12\x55\xdd\xcb\xb6\x94\xef\x6f\x63\x21\x85\x9f\x0c\x35\x22\x08\x43\x4d\xcf\x4c\x13\x13\x4d\x51\xb3\x1b\xb6\x30\x47\x81\xd4\x1b\x52\x54\x6e\xf8\x90\xd7\xda\xd6\xab\x19\xcb\xa7\x07\x23\x4d\x28\x35\x36\x4f\x29\x92\x30\xaa\x63\xcb\x63\x27\x2c\xab\x3f\x41\x19\x7f\x8a\x14\xfe\x1a\x46\xf8\xcb\xdb\xbe\x25\xf9\xea\xc5\x0e\xd2\xac\xf4\xe6\x32\x37\x36\x3a\x27\xf6\x6b\xdd\x77\xeb\x89\x6c\x31\x55\xd1\xe5\xdd\x6a\x5c\x8a\x3b\x64\x5b\x98\x9a\xfe\x5d\x4c\xd1\x1e\x25\x30\xb2\x2d\xc6\x6b\x89\x44\x83\x53\x92\x78\xcb\xa6\x72\xd6\x8d\x28\x3a\xcc\x6c\x8d\x4f\x20\x73\xfa\xde\x29\x26\x3c\xa0\xb2\xe3\x20\xf7\x99\xd5\x99\x11\x4e\xe5\xac\x68\x6a\x80\xcc\xc5\x75\xe7\x28\xac\xda\xc0\x19\x5b\x52\xae\xc6\xed\x04\xd2\x1f\x82\xa9\xc7\x21\x54\xb4\x9d\x27\x2a\x89\xb7\x8f\x1e\xd9\xc5\x4c\xad\x03\xb0\x8d\xa2\xf3\x98\x15\x18\x76\xca\x27\xe0\xc9\x55\x13\x33\x98\x4a\xa3\x47\x06\x61\x77\x99\x0e\x5a\xfc\xa5\x1b\x8b\x5c\x5b\x0d\x7f\xd6\x58\x33\x05\xdb\x39\xa5\xc6\x1a\x22\x7b\xe0\xa9\x1d\x99\xb1\x88\xb2\xdb\x44\x4f\x0d\x53\x37\x47\x06\xe3\x36\x55\xf2\xcd\x8a\xcd\x1d\x04\x8d\x40\x1e\xa4\x71\xf6\x75\xc1\xd2\xdb\xae\x2e\xf1\xe8\xd1\x9c\x66\x4a\x8a\x07\xe3\x9a\xb3\xee\x75\x57\xfa\xc8\x0c\x50\xba\x0d\xec\xfb\xbb\x72\x9a\x70\x54\x4b\xb4\x2e\x31\x21\xeb\x6e\x9f\xd7\x44\x1c\x8b\x2e\x3b\xb6\xc4\x34\x99\xed\xd9\x2c\xd3\x64\x46\x38\x86\x3e\x0b\xc3\xbe\xf0\xd7\xb0\x2f\x8d\x40\xd0\x64\x62\x37\x44\x4e\x65\x8d\x89\xdd\x0f\xa0\x07\x19\x65\x54\x19\x8b\x65\x6e\xf7\x9b\x61\xe6\xad\x1f\x75\x6e\xef\xab\x7c\xde\xa5\x62\x2e\x42\x84\xf1\x5c\x09\x82\x6c\x3d\x79\x8c\xb9\x26\x1a\xfe\xa5\x6d\x83\x6e\xc1\xf5\x49\xba\x77\xe3\x5c\x71\x9d\x3c\x2c\x45\x32\x87\x94\xb0\xc8\xb1\x6b\xb0\x21\xcc\xdc\x8d\x2f\xa3\x31\x84\x61\x6a\x76\x7c\x9e\xa3\x0d\xa1\x83\x8d\xc6\x26\xbe\x15\xb4\x01\xe7\x9c\x6e\xc5\x94\x69\xdf\x3d\xfe\x6f\xb7\xde\xd9\xac\xad\x5c\x37\x0a\x29\x2e\x4a\xe3\xa9\x7d\x12\xbe\x30\x5b\x56\xef\xde\xd8\xec\x5d\x3e\xe9\xda\xbd\x2e\x4b\xd1\xb1\xb5\x77\x4e\x53\xfb\xfb\x70\xd7\x94\xce\x3c\x11\xd8\x16\x46\x76\x72\x37\x82\x1a\xca\xd0\x52\xe9\xd3\xc1\x16\x08\xd3\x80\x28\xd7\x12\xc7\xe6\xda\x83\x77\x61\xe8\xd2\x39\x1e\x77\x23\x2a\x09\x6c\x3f\x82\x72\xcd\x4e\x45\x07\x92\xb2\x24\x7d\xef\xa8\x48\xe9\x1b\xf6\x2b\x99\x0a\xeb\x2f\xa7\x00\x47\x7a\xbb\xfb\x71\xa9\x65\x1c\x93\xc3\x04\x82\x28\x30\x88\xc2\xdc\x63\xd5\xd2\x65\x5b\xfd\x83\x5a\x68\xbd\xdf\xdc\x05\xc0\x8d\xf7\x92\x8a\x38\x9a\xab\xf2\xed\x14\xcd\xcd\x3b\xbf\x24\x0d\xbe\xa6\xf2\x94\xed\xfa\x63\x37\x9e\xee\xcc\x40\x02\x85\xcc\x1a\x2c\x36\x35\x5e\xed\x1e\x79\x3f\xbb\x7a\x91\x4e\x64\xac\x4b\x0a\x13\xdc\x86\xcf\x97\x54\xe6\x39\x1d\xef\xe9\xb3\xa3\xf7\x65\x8f\xab\xf7\x7d\xfd\xf5\x57\xe4\xcb\x7e\xd7\xf6\x7c\xc5\x39\xfb\x5d\xe8\xb6\x09\xf8\xb5\xcf\x4b\x1a\x66\xa7\xc7\x0f\x5a\x77\xdc\x4d\x64\x5c\xa3\x73\x42\x28\xc3\xee\xc5\x6e\xb2\x8a\xca\xf6\x16\x09\xc2\x70\x97\x83\xab\x9e\x30\x5e\x97\xf3\xbc\x72\xe6\x5c\xc6\x50\x60\x76\x81\xd5\x78\xd3\x89\x73\x61\xda\x8a\x6d\xe1\xdc\x56\xd6\x73\xd6\x19\x40\x2a\xa5\x90\x81\xf5\x45\x82\xb1\x26\x83\x66\xc6\x38\x88\xf6\x7c\xd9\x41\xfd\x85\x15\x64\xa2\x1f\xb4\x38\x0b\xbd\x93\xbd\xe6\xa9\xe3\x5b\x97\x9a\x4f\x22\x0f\xd2\x0a\xd4\x7e\xa5\xd7\x14\xbd\x7b\xd7\x97\x55\x6d\xd4\x43\x6c\x30\xbc\xf5\xc4\xce\x4b\xe0\x0c\xdb\x4b\x43\x75\x82\x78\x29\x1b\x0c\x0e\xfd\x13\x75\xa3\xde\xa9\xc6\xfa\xb2\xac\xe0\x53\x9b\x11\x36\x47\x2f\x9a\xa8\xbb\x08\x31\x92\x50\xa0\x44\x81\xf2\xce\x45\x9d\x59\xbe\x02\x87\xbd\x63\x0a\x0e\x77\xc7\xb2\x28\xae\xa4\x1d\x76\xf7\xa1\x86\xe3\x36\xee\x56\x2d\x8e\x03\xca\x62\x59\x4b\x8f\x5a\xc0\x75\x5d\xad\xb4\x47\xac\xab\xd4\x77\x20\x48\x39\x24\xd0\x58\xd3\x28\x77\x13\x22\x6a\xc4\xc6\x0e\x80\x95\x03\x48\x0a\xd8\x90\x96\xfc\x3d\x65\xb3\xf1\xa6\x54\xdf\xef\x21\xdf\x9b\x6e\xe1\x4e\xa1\xc4\xfb\x10\xd9\x11\xa1\xfd\xad\xc3\x3f\x11\x0b\xd3\x3a\x3f\x80\x5b\x40\xd8\x23\x0d\x57\x1e\x45\x81\x3b\x20\xd8\x3b\xca\x06\x04\x8c\xf0\x12\x04\x89\x03\x81\x28\x41\xc0\x0a\xf0\x02\xaf\x47\x46\x36\x9c\x41\x6a\xef\x52\xee\x51\x5c\x54\xa3\x31\x76\x31\x7b\x7c\xae\x5b\x95\x55\x81\xff\x64\xd0\x2e\x1f\x4a\x40\xd6\x78\xa1\xe6\xcd\xe3\x0d\x49\x2b\x23\x13\x8f\x67\x34\x46\x4c\xa3\x55\xb2\xde\x03\x4c\x66\x80\x18\xa7\xd3\xe1\x0c\x55\x8e\xe4\x35\x9f\xed\x6a\x68\x6f\x97\x4d\xdb\x83\xbc\x73\x2c\x26\xbb\x40\xf0\xd5\xa1\x1b\xbf\xb1\x7f\x3e\x72\x93\x6d\xef\xc0\xad\x96\xa0\x69\x5e\xfc\xdf\xeb\x8e\xc1\xa0\xdd\xdd\xa9\x23\x11\x93\xad\xea\x8e\xb5\xff\xae\x75\x88\x5a\x7b\xe4\xc2\x5c\x97\x6d\x2c\xcd\x72\xa5\x77\x0b\x60\x46\xec\xde\xd9\x13\x46\x6b\xd3\x5d\xcd\xce\x51\x53\xb3\xb2\x4e\x47\x3c\x4e\x45\x1a\xab\x22\x56\xfb\x34\x6e\xbb\x4d\xde\xef\xec\xa8\xd6\xb9\x40\x03\x83\x95\xfa\xaf\xaf\x49\x56\xbb\x44\x41\x4f\xa3\x55\x38\x5d\x37\x8f\x25\x2a\x1d\xcb\x3e\xad\xf6\x57\x11\x11\xdd\xc5\xa9\x44\x15\x3b\x88\xc3\x1f\x0a\xb8\x43\xee\x9d\xc1\x36\x15\xa1\x5a\xf2\xdb\xf1\xe7\x64\x35\xc5\x53\x35\xc3\x6d\xcd\x57\x79\x3a\xa1\xd1\x8e\x57\x91\x55\xe7\xe6\xa0\x5a\x05\x8c\xf6\x1f\x83\x51\xb2\x64\x54\xde\xd9\xe1\x57\xca\xb3\xaa\x68\x7b\x18\xd5\xe9\xc6\xce\x40\x1a\x20\xfb\xeb\x9d\xaf\x6a\xac\xb4\xa4\x7b\x40\xed\x5c\xa8\x48\x44\x4b\xfa\x5e\x17\xfe\xb4\x60\x6f\x8f\xcf\x91\x84\xc6\x59\x86\xa1\x07\xc7\xd2\xeb\xa9\xae\x5b\xa7\xe1\x1d\x43\xf1\x17\xd6\xfe\xea\x28\xea\x67\x2e\xc6\x67\x46\xb3\x0d\xa1\x3e\xec\x3b\x36\x2f\xe1\x60\x8f\xeb\x54\xd9\x51\xe3\x60\xbe\x59\x4f\x0d\x30\xfb\x0e\x76\x6a\x7a\xf1\xf1\xae\xa2\x7c\x08\x0a\x75\x28\xd0\xe9\xfe\x83\xda\x7a\xfb\x70\xe5\x0e\x6a\x3f\x4b\xf2\x4c\xb6\x31\xb7\x17\xc0\xfc\x6e\xbd\x90\x88\xee\xc1\x76\x9e\x7b\xbf\xa5\x0f\x86\x6d\xbf\x4b\x96\x63\x41\xd4\x40\x80\x9c\xf2\x59\xeb\x72\x52\x5f\xe5\xf9\xa9\xac\x1f\x36\x40\xb0\x4a\xd6\x8e\x2b\x0c\x6a\xf6\xb5\xb5\x2c\x0d\xa9\x4b\x57\x1a\x69\x36\x96\x18\x7d\x25\x68\x34\x0c\x47\xff\x07\xc6\xd0\xee\x7d\xe5\x95\x7c\x3a\x03\xb9\x73\x3d\xca\x7a\xac\x30\x97\x3b\x2a\xa3\x4d\x39\x1b\xd7\x5c\xf8\xbb\xd1\x78\xb6\x63\x5c\x85\x3d\xd2\xbc\xfe\x0e\x50\x2c\xce\x36\x40\xb1\x41\x8d\x3c\x37\xcd\x4d\x34\x07\xa3\xd2\x28\x2b\x73\xb2\x65\x97\x40\x31\x11\xce\xd0\xdd\x2c\x44\x0d\x3e\xc7\x08\x53\x8c\x63\x5e\xfb\xe6\x1b\x9f\x8a\x7a\x96\xc2\x43\xb9\xd2\xfa\x5e\xc8\x2e\x2f\x64\x55\x52\xc3\x27\x0d\x52\x38\xcf\x0d\x37\x5c\x20\x85\x27\xed\x6f\x13\xb5\x8f\xe3\xd8\xde\xd2\x87\x58\xc1\x5d\xb2\x8c\x95\xee\x44\xdc\x32\x87\x6a\x16\xa3\x8d\x62\xd4\x16\xd3\x7c\xba\x2e\x39\x9d\x55\x9c\xfa\xb3\xce\xce\xd7\x58\xf7\x5d\xef\x7d\x13\xc7\xbd\x07\x01\x8e\x83\x43\x1b\x7c\xcc\x05\x3a\xa1\x25\x62\xc2\x61\x88\xe8\x80\x04\x87\x01\x06\xe5\x42\x34\x96\x8d\x9e\xb6\xc5\x83\x3d\xaa\x31\x59\xeb\xe8\xdb\x9a\x92\xce\xfb\x61\x82\x0c\x6f\x83\x2b\x6b\xe5\x5e\x75\x30\x31\x3e\x00\x53\x48\x49\x02\x09\xe9\x8f\xf0\xd8\xd8\xcf\xf7\x16\x5d\xc7\x83\x72\x22\xa3\x52\xd0\x18\x2f\xa9\xea\x2d\x9d\x7b\x37\x15\x49\xca\xe7\x54\x53\xad\x85\x7b\x24\x3e\x0d\x16\x06\x4d\xb3\xf4\xcc\xbc\xbe\x34\xa6\x3a\xad\x14\x58\x18\x44\xb4\x66\x4b\x3a\xd7\xe8\x49\x98\x8a\x7c\x0f\x92\x25\xe9\x0f\xb1\xd5\x76\x2e\xa2\xcb\x2c\x15\x6b\xfa\x66\x4e\x38\x06\x36\x41\xcb\x06\x0a\x44\x8a\xa8\x3c\xb7\x4b\xf2\x8e\x8b\x39\x75\x71\x29\xec\x4b\x94\x65\xf2\xc8\x2e\x7f\x97\xa9\x3c\xd5\xac\x5e\x9a\x05\x1b\x69\xb5\xf2\x38\xcf\x6b\xa7\xd9\x25\x88\xac\x95\xde\xf9\xf9\xd9\xe5\xd1\xc9\xfb\x8b\xe3\x5f\x2e\x2e\x2f\xf3\x1c\x29\xd2\x91\x8e\xc1\x9c\xe1\x57\x27\xb9\x1b\x73\xa0\x61\xa0\x79\x29\x4b\x32\x72\x24\x56\x6b\xc1\x35\x4e\xd8\xfb\x21\x4a\xe6\x73\xcd\x62\x6b\x28\x66\x99\xf4\x24\x88\x2c\x71\xac\xe5\xc7\x65\xc3\xdb\xaf\x66\x55\xaa\x36\x33\xcf\x0d\x3e\x32\xa7\x6b\xfe\xc0\x38\xca\x6e\x92\xb9\xb8\x3f\x13\x42\x35\x7d\x00\x37\x4b\xa7\xf6\xd2\x0f\x2c\x31\x5b\x34\xe6\x0b\xdb\xf8\x44\x3d\x45\xfc\x72\x18\x97\xeb\xa2\x6b\xe3\x78\x87\xed\xb2\xda\x00\xe6\x50\xbd\xaa\xa5\x7e\xe8\x3e\x6e\xbe\x12\x35\x99\x56\x87\xe4\xb0\xc4\xf1\x74\x39\x2b\xa3\x29\x15\xb6\x8e\xf7\xce\x22\x30\x0e\x9e\xa5\xa9\xd8\x70\x95\xbd\x65\x99\x32\xd6\xef\xeb\x2c\xde\x26\x2e\x31\xb6\x62\x99\x41\x31\xe0\xfd\x8c\x9a\x93\x2b\x6b\xf3\x70\x2b\x49\x8b\x13\xb1\x47\xed\x5a\x40\x8f\x1e\x35\xbc\x70\x83\xde\x02\x97\x19\x5d\xea\xb5\x9d\xe7\xa5\x32\x57\x5a\x07\xdb\x30\x95\x28\x10\xe9\x81\xb2\xb7\x21\xb7\x89\x52\x32\x8b\xb7\x2b\x36\x9f\x2f\x69\x1c\x04\x30\x67\x77\x6c\x4e\x65\x1c\x04\x45\xd1\xc8\x7c\x70\x2d\xc5\x66\xdd\xac\xe0\xc0\x44\x0a\x6a\xa4\xa4\x74\xb9\xac\xea\xcd\x6e\x24\xe3\xb7\xba\x5e\x7b\xa5\xff\x86\x26\xf3\xa0\x30\x47\x80\x97\x77\x28\xe8\x05\x18\xf6\x17\xae\x17\x81\xb9\x58\x9d\x5a\xa0\xe9\x7d\x70\x64\x1d\x3a\xc5\x7a\xa8\x48\x45\x8f\x0c\xc1\xfd\xac\x50\xf0\xde\x7a\x8e\xfa\x3f\xd9\xc4\xf1\x2a\x61\x4b\xdb\xc6\x0c\x46\xe6\xff\x9e\xb6\x1c\xc4\x54\x74\xb9\x44\x2a\xf2\x93\x0d\x5d\xb2\xd7\x0e\x50\x0d\x55\x08\x5c\x99\x83\x25\xcb\x94\x4e\x3f\x08\x06\x34\x62\xf3\xa2\x0b\xe6\x2e\x29\xb9\x4b\x54\x22\xab\x21\x6e\x32\x2a\x6d\x50\x0e\xcd\x70\x2f\xa8\x94\x74\xae\xdf\x5d\xf7\xbf\x0e\xa6\xaf\x80\xa4\x55\xdd\x9f\x83\xfc\xab\x75\x69\x98\x7a\x88\x6a\xfa\x3d\x2a\x61\x5b\x8c\x6f\xa5\xe5\x3d\xcf\x95\x64\xeb\xb5\x41\xd5\x15\x69\x3f\x93\x75\xe6\xa9\x49\x71\x35\x99\xf8\x9a\xbf\x3b\xcf\x47\x7d\x2d\x8f\xae\xc6\x06\x4c\xe6\xbb\x22\x36\x6d\x47\xf9\xdb\x77\x57\xc3\xf4\xb1\x1e\xa8\x02\x63\x23\x01\x6d\xb2\x1b\xc7\xcf\x18\x67\x42\x25\xf6\x28\x87\xf7\x4e\x36\x03\xcc\x8c\xc6\xf4\xc9\x0e\x27\x47\xbd\xaf\x48\x49\xac\xcd\x74\xc5\xd0\xd1\xd9\xa4\xfe\x12\x6f\x8b\x31\xfd\xcf\xc7\x93\x33\xe9\xef\x4f\x4a\xac\x59\xfd\x6e\x2e\x33\x93\x0d\xc7\x0d\xdd\x8e\x34\x6b\x17\x52\xf6\x79\xd5\x43\x0a\xfe\xac\x28\x92\x18\xc7\xf5\x5e\xed\xe9\xd2\x7e\x6b\xfc\x3f\x9b\x01\x09\x14\xd7\xa3\xee\x2a\x87\xa2\x5f\x54\x28\x7a\xbd\x0e\xcc\x61\xab\xa5\x6f\xf1\xb6\x8e\xb3\xe3\xb7\x12\x6d\x2d\x2d\x89\x6f\x25\xb4\x38\x09\xcd\xb0\x39\x97\x55\xf0\x5e\xfa\xa7\xfe\x68\xf7\xa9\xf1\x83\x6b\x87\xbb\xef\x24\x7a\x27\xd1\xb6\x80\xcf\xd6\xd5\xbe\x69\x39\x80\x69\xc0\xb2\x37\x9c\x29\x96\x2c\xd9\x17\x3a\x0f\x20\xb8\xa6\xca\x7f\x3e\xb7\x0e\xf8\x67\x18\xc3\xb6\x80\x8a\x9c\xec\xd1\xbf\xee\x94\xd4\x7b\xd6\xc6\xf7\xc8\x62\xdb\xf8\x51\xbb\xf1\xb2\x69\xd3\x8a\x25\x35\xf3\x9d\x70\x77\x55\x36\x84\x1d\xcd\x7a\xb3\x87\x66\xb5\xe9\x15\x2d\xe3\x01\x3a\x92\x55\xda\xb2\x52\x4f\xb2\xfc\xc3\xd6\x42\xfd\x68\x99\x64\x59\x1c\x6c\x6e\x0f\xb4\x50\x91\x30\x4e\x65\x6f\x73\x7b\xb0\x4e\xe6\x73\xcd\x06\x17\xa6\xc0\xcd\x28\x80\xa9\xd3\x3a\xa3\xe0\x77\xde\x33\xff\xfc\xd0\xec\x7b\x80\x4b\x51\xda\xa1\x2d\x3b\x98\x3a\xc0\x27\xba\x32\x0f\x58\x83\x87\x2b\xd4\x5a\xc2\xdb\x14\xf3\x6f\x1a\x8b\xc5\xd4\xe0\xbf\xa5\x48\xe6\x54\x06\x78\x06\x8f\xf1\x0c\x17\xe3\x37\x1d\x98\xcc\xae\xc2\x47\x92\xd4\x16\xd8\x9b\xaf\x2e\xb0\x17\xff\xc6\x02\x33\x53\xf1\x52\x1a\xb7\x47\x1f\xe4\xd7\x9d\x32\xd7\xfc\xd3\x9a\x2b\x64\x46\x8b\x7c\x66\x2e\x8f\x31\x22\xfc\x61\x7b\x4a\x86\xb0\x21\xd3\xd9\x98\x3d\x4d\xc7\x58\x12\x61\x2e\x8c\x41\x12\x86\xfd\x97\xfe\x72\xa2\xf1\x32\xbc\x71\xe6\x32\x93\xa9\x04\x3e\x95\xb3\x59\xcc\xeb\x4e\x31\x37\x45\x01\xcf\x25\xd9\x52\x1b\x01\x2b\xfe\x20\x8d\xaf\x64\x1b\x77\xd2\xbc\x8d\x70\xe1\xc2\x50\x7e\xed\xa6\x5c\xe1\xee\xe1\x74\xde\x2c\x7b\x6e\xc4\x38\x77\x57\xef\x95\x24\xb2\x22\x1c\x5f\x5a\xd2\x8a\x55\xad\x3a\x0b\xb0\x29\x9b\xa1\x04\xc3\x86\x38\x47\xae\x3b\x6e\x04\x0d\x78\x4d\xe5\xa9\x0d\x2d\x4a\xd1\x06\xc7\xed\x03\xb0\x8d\x0b\x49\x6a\x8e\x6f\x74\xd5\x7f\x7c\x7d\x0a\xea\xca\x94\xba\xc8\xfe\x75\xd5\x75\xed\x98\xbd\xf2\x1e\x27\x6b\xe2\x6f\xa2\xdb\xfa\x22\x11\x33\x63\xd5\x72\x99\x0f\x43\x57\x3b\x10\x4a\x77\x33\xf9\x30\xe6\xb8\x48\x90\x47\x58\x46\xf5\xfb\x51\x92\xe9\xcc\x38\x7e\x87\xd7\x92\xcc\x7d\x50\x17\xf8\xc5\x5e\x32\xd5\x1f\x02\x08\xe0\xaf\xdd\xb2\x7d\x2d\xf3\xbc\xff\x8b\x2c\x60\xab\xcb\x75\xcd\xe2\x47\xb7\xae\xac\xd4\x5f\xf3\x0d\xa8\x26\x01\x04\x71\x35\xc3\x3f\x4a\x92\x6a\x5e\x62\x0d\x3f\x49\x73\xfb\x77\x95\xac\x03\x0c\x3f\xd8\xab\xae\xe6\xe5\x2f\xdd\xfb\xfd\x49\x77\xe9\x07\xdd\xa5\x55\xb2\xee\xea\xd1\x8f\xf2\xbf\x79\xe9\xf7\x67\xa3\xe0\xf9\x59\x4e\x77\x5c\x38\xce\x48\xf0\x25\xb0\x17\x83\x25\x29\x1d\x5e\x7e\x99\x05\x84\x78\x07\x1e\x3f\x4b\x0c\xbf\xc9\x2e\xef\x8f\x9c\x04\xcf\x7c\xab\xc6\x73\xee\x2e\x05\x28\x7b\x55\x20\x8c\x81\x72\xf2\xab\x9c\xac\x77\x9d\x85\xe8\x0d\x31\x6e\x3b\xc3\x50\x93\xe0\x43\x29\x75\xc6\xce\x1b\xa0\x9a\x04\xef\x37\xcb\x65\x10\xb7\x15\x95\x68\xe7\x5a\x56\xe5\x94\xd3\x68\x38\xaa\x03\x85\x02\x79\xdb\x2f\xa4\xf4\xd8\x30\x9e\xc8\x58\xf1\xc9\x1a\x51\x5c\xee\x74\x42\x10\x27\x3a\xa5\xfb\x00\xda\x8a\x86\x94\x4e\x6a\x20\x88\x79\x01\xd2\x0c\xb1\xe6\xc8\x74\x97\x2c\x96\x60\x0e\x06\x94\xdb\xc5\x35\x08\x66\x41\x31\xfe\x55\xe6\x39\x55\x68\xc7\xf9\x5c\xcd\xe1\x8e\xe4\x0d\x47\x32\x56\x6f\xc6\x89\x88\xdc\x06\x05\xc1\x5b\x2e\x06\x12\x6e\xae\xe0\xda\x64\xef\x12\x39\xc0\xb0\xe1\xce\x29\x72\xd5\x4e\xb6\x93\x69\xc1\xc9\xee\x29\x76\x0d\xb0\x7c\x42\xd1\x11\x92\x78\x3a\x9c\x81\x9c\x8e\x66\x38\xa6\xa8\xbc\xfa\x58\x06\x09\x54\x91\x3f\xe0\x36\x47\xee\xa5\xf5\xa9\x08\xc3\x23\x24\xca\xb0\x54\x60\x02\x9e\xf1\xee\xc0\x16\xad\xb9\xb5\xda\x7a\x61\xc8\x99\x2a\xc3\xa6\x6f\x96\x8a\xd0\x62\x4f\x3c\x8b\x2a\x18\x74\x22\x7b\x4e\x4d\x04\x0b\x30\xee\x1a\x61\x4e\x24\xb5\xb6\x42\x93\xc7\xf1\xc8\x86\x75\xc5\x09\x51\x63\x1f\xee\xb4\xc3\xa7\x65\xda\x15\xd8\xac\x5f\x0b\xf1\x38\xcd\xf8\x2c\xcf\xd5\x34\xf8\xe7\x3f\x4b\x98\xce\xf2\x3c\xe1\x53\x3d\xef\x78\x56\x98\x60\x5c\x3b\x6e\xa7\xac\x77\x6f\xef\xc6\xc6\x94\xd4\x62\xb3\xe9\x54\x75\x75\xfa\x86\xa4\x38\x0c\x51\xc2\x23\x33\x8d\x84\x90\x9b\x3c\xdf\xf0\x69\xca\x67\xfa\x19\x5b\xba\xba\x21\x43\xc8\x48\xa6\xaa\x28\xef\xe3\xec\xe9\x66\xbc\x71\xae\x24\x17\x44\x4c\xe6\xe8\x08\xad\x89\x9a\x6e\x66\x66\x1a\xd7\x66\x1a\xe7\xc8\x24\xe0\x30\x5c\xd4\xbd\x64\x95\x6e\x51\x17\x75\xe2\x40\x0d\xd5\x4c\x48\x5a\x06\x15\xd2\x4d\x2f\x89\x0d\x78\x3d\xee\xa3\x35\x71\x3a\x8f\x04\x63\x43\xb8\x4c\x50\x84\xf6\xfd\x4a\xb4\x20\x0b\x8e\x12\x98\xc3\xda\xd2\x3f\x10\xa6\x03\xff\x46\x1f\xb0\x59\x14\x5d\xd4\xce\xe5\x19\x9a\x3b\x04\x18\xc3\x7a\x67\xad\xdf\x70\xd2\x1f\x8d\x3d\x39\x9e\x73\x32\x84\x3b\x4e\x6c\xf8\xf9\x9d\x3d\xbc\xb5\xc1\xe6\xfb\x73\x3e\x18\x14\x05\xd8\xc4\x7a\x36\x5d\x9b\xb9\x7b\xc9\xa7\x6b\xbe\x3f\xa6\xb7\xdd\x82\x0b\x29\x56\xe8\x8e\x37\x0c\x21\xed\xb2\x78\xbc\x7b\x28\xfd\xc0\x61\xc5\xe1\x9a\xc3\x55\x7b\xab\xdf\x73\x72\x88\xd8\xfa\x46\x70\x9a\xb3\xb5\x98\xe7\x6c\x9d\xcc\x71\xf4\x8d\xa6\xce\xf4\x9e\x5e\xdd\x32\x75\xc8\x6c\x80\xa6\x47\x14\xc3\xb1\xc6\x1b\x4b\x91\x1a\x13\x04\x38\xd1\x6f\x19\x55\x6f\x56\x2b\x3a\x67\x89\xa2\x70\xae\x53\xd2\x25\x4d\x64\x95\x76\xc9\x6b\xae\x57\x3e\xe9\x97\x77\x34\xcb\x92\x6b\x7a\x74\x93\x70\x4e\x97\xf0\x59\xa7\xbd\xf0\x26\x42\x47\x1a\x8a\x17\x06\x03\x3d\xe3\xed\xed\x72\xc1\x5b\xe1\xe3\xf4\x76\x70\xdb\xfd\x82\x4f\xd5\x6c\xec\x6e\x86\x9a\x17\x30\x4c\x3e\x9c\x76\x86\xd3\xac\xc1\xed\x19\x37\xcc\x17\xbc\x6d\x66\xd4\xc9\xc6\xf1\x3f\x2e\xe0\x7d\xf3\x93\x88\xd6\x22\x53\x6e\x1c\x48\x0d\x82\x00\x8e\x5d\xb4\x97\x54\x2c\x07\xc1\xe1\x61\x30\x38\xe6\xd1\x8d\xc8\x14\x2e\xc6\x27\x3c\x0c\xcf\x79\x9e\xa3\x93\x66\x2d\xad\x83\x8f\x0e\x67\x3f\x72\xec\xa3\xac\xd7\x8e\x3e\x8c\xb3\x1f\x7f\xf4\xc2\xa7\x83\xc1\x51\x73\xb5\x74\x1f\x3a\xab\xf8\x65\xd5\x34\x76\xec\x97\xf7\x26\x87\x0b\x78\xe0\xe8\x88\x63\x38\xe2\x85\x9e\xc5\x7a\x37\xeb\x20\x2d\x8c\xbb\x32\x3d\x95\x86\x7a\x5f\x72\x3c\x79\x68\xe6\xbe\xe4\x95\xe9\xec\xa9\x69\xab\x88\x3f\xf3\x30\xfc\xcc\x23\x2e\xee\xdb\xb9\x6d\x6a\x99\xf1\x13\x0f\xc3\xfe\x3d\x9f\xa0\x6b\x4e\xd0\x8a\x1b\x53\xe3\x4f\x1c\x47\x1a\x33\x3f\x86\x15\x37\x0f\xa3\x48\xf0\x95\x05\x3d\x79\xcb\xe1\x81\x6b\x44\x7c\xcd\xeb\x53\xa2\xd7\xfa\x08\xe3\xb8\x2f\xa2\x64\x3e\x3f\xbe\xa3\xd6\x53\x00\xe5\x54\xe6\x79\x87\x73\xe8\x5a\xd1\x3c\x17\x11\x5b\xe9\x76\xce\x8d\x44\x9e\xe5\x39\x43\xef\x39\xd6\xe5\xd8\x92\xc6\x9a\xcd\xa9\xcd\xb5\x1e\x50\x20\xb8\xa4\xc9\xfc\xc1\x1c\xb7\xa6\x37\x09\xbf\x36\xc1\xe5\xce\x51\x60\x85\xfa\xa0\xe9\xfa\xbb\xe5\x17\xbe\x96\x0d\x47\xbb\x35\xd5\x67\xf6\x85\x6a\xdc\x69\xb3\x4c\xa6\x5b\xbd\x0d\x0e\x29\xa3\xea\x82\xad\xa8\xd8\x28\x0b\x5a\x18\xe2\x22\x46\x0f\x9c\xbc\xe7\xb0\x0b\x12\x14\x38\x70\x06\xf0\x96\x43\x7f\x84\x9d\x55\xf8\x2d\x87\x33\x0e\xef\x38\xbc\xe0\xf0\x86\xc3\x23\x0e\x2f\x39\x7c\xe0\xf0\x9c\xdb\xe8\x58\x27\x1c\xcc\x5e\x8f\xcf\x79\x01\xaf\xb8\xf1\xe2\xf1\x85\x93\xe7\xdc\x78\xcb\xfd\xc3\x6c\x75\x67\xae\x74\x72\x65\x4e\xd0\xa5\x86\xee\xcf\xf4\xea\x47\xa6\xda\x5f\xe0\x63\x1d\x4f\xbc\xae\x33\x28\xbf\x70\xd2\x58\x75\x1f\x39\x86\x1f\x39\x79\xc5\x91\x80\xe0\x8f\x0d\xdd\xd0\x77\x2c\x95\x42\x25\xd9\x6d\x80\xe1\x27\x4e\x7e\xe4\x61\xf8\x23\xb7\x14\x61\xfc\x93\xde\x79\xb7\x7c\x47\xc8\x07\x6a\x5c\x78\xfc\xc2\xcd\x69\xf5\x47\xee\x02\x0d\x18\xd3\x32\xfa\x99\x29\x84\xc7\x67\x7c\x8c\xb7\x94\x9c\xf1\x68\xa1\x41\xa1\x1f\x0c\x79\xd2\x18\x9f\xd6\x43\xd7\x5a\xcc\x7b\xc6\x27\x2f\x38\xc2\xf1\x3b\x5e\x06\xfb\x2f\x8a\xda\x8b\xa9\x99\x2b\x2a\x11\x2e\xe0\x17\x9d\xb9\xde\xa9\x8f\xb5\x8d\x73\xcb\x71\x11\xff\xe1\x37\xc3\x1b\x4d\x18\xe0\x11\xaf\x62\x22\x58\xcd\xc4\x05\xfd\xac\xde\x8b\x39\x45\x41\x60\x7c\x5a\xf7\xfe\xe0\xba\x64\x24\x2c\x48\xd1\x23\x0e\xdb\xf4\x26\x91\x49\xaa\xa8\x7c\x91\xa8\xc4\xde\x6a\x69\x36\xfb\x88\xdb\xe0\x26\xba\x91\x37\xbc\xc0\xf1\x6b\x1e\x86\xaf\xb9\x17\x0d\x27\xe8\x25\x27\xd5\xab\x17\xaf\xe0\x03\x27\x2f\xb9\x11\x1a\x5b\xf5\x7d\x70\x9e\xc2\x5e\x72\xd0\xa3\xc0\x71\xf3\xf3\x17\xee\x6f\x36\x99\xaf\x66\x9d\xfd\xc0\xe1\x67\x0e\xbf\x72\xf8\x8d\x83\x12\x44\x4f\xd8\x2e\x37\xb7\x5d\xf0\x58\x99\x70\xcd\x3e\x8c\xd5\xf8\x9d\x9e\xba\x77\xbc\x8c\xcb\x7d\xa6\x67\xfa\x8c\x13\x0a\x7a\x1a\x30\xbc\xe3\x84\x16\x40\xc5\xae\x15\x00\x48\x7b\xec\xbf\xb6\x2b\xcc\xe0\x19\xd5\x38\xe6\xb6\xa6\x97\x55\x44\xc1\x9a\x43\xb5\x8e\x88\x93\xcf\x93\xb9\x97\x77\x5b\x2e\x3f\xa9\xf1\x12\xce\x4b\x53\x3b\x07\x47\x42\x29\xa2\x65\x92\xe6\x69\x74\x8a\xc4\x05\x48\xb1\x27\xbe\x80\x61\x47\x84\xa5\x54\x5c\xec\xba\xd1\x32\xa1\x15\x56\x88\x1a\x87\x58\x75\x37\x5f\xb5\x10\xe2\xd4\xdd\x9d\x91\x22\x5a\x54\x01\xaa\xd0\x10\xa4\xef\x18\xd6\xdd\x92\x1e\x30\x05\x88\x26\xf4\x2a\x46\x7e\x6b\x6c\xb0\xe2\xfe\xc8\x79\xe2\x57\x9a\xd6\xb6\xb4\x0f\x3e\x8f\xf7\xd6\xaf\x8a\xa2\x00\x26\x3c\x86\x48\x44\x8b\x1b\x49\x05\x09\x1c\x18\x03\xd8\x08\x1f\x9a\x2e\x13\xde\x03\xf7\x42\x34\x3d\x70\xa7\x02\xc3\x52\x10\xce\x61\x2d\x88\x88\xca\x19\x81\x1b\x51\x0f\x19\x7b\x27\x6a\xa8\xe5\x41\x18\x6f\x71\x0b\xaa\x8c\x37\xa9\x95\x30\xd0\x80\x6b\x41\x56\x02\xae\x44\x13\xd5\xdc\x09\x0c\xf7\x82\xf4\xfb\xe8\x46\x84\xe1\x8d\xf0\x91\x64\xef\xcc\xb1\xa8\x28\xad\x04\x4c\x02\x86\x63\x41\x8e\x14\x4a\x05\xb4\x7c\x89\xf5\xd1\x1b\xb4\x14\xb8\x5f\x4a\xc8\x4b\x81\xb1\xf9\xf2\xfd\xf7\x84\x90\x57\xb4\xf2\x33\xa6\x73\x5f\x89\xba\x00\x59\x52\x29\x07\x9a\x33\xb3\x5e\x98\xe0\xb6\x51\x5f\xb2\x60\x0b\x64\xdd\xc0\x75\xc6\xd7\x5c\x96\xd7\xd5\xfb\x23\xe7\xcc\x6c\x29\xca\x6d\x3d\xc2\xd0\x32\xbb\x41\xad\x2b\x36\xcd\xd7\xd2\x2d\x2c\x52\x3b\x2e\xe5\x12\x31\x23\x14\xfa\x48\xb5\x8d\x14\x4d\xc1\x06\x5b\xae\xb7\xc5\x89\x20\xc7\x22\xcf\xfb\x3b\x0b\xba\x4f\xc3\xb0\x7f\xc3\x9b\xbd\x96\x75\x8e\x5b\x73\x89\xe3\x3d\xdc\xf2\x57\xb9\x70\x69\x38\xed\xa2\x00\x85\x78\x9d\x59\x2e\xcf\x35\x9a\xf2\xe4\x52\x44\x2e\x5e\x76\xdb\x28\xdc\xc2\x02\x63\x38\xef\xc0\x32\xa5\x3b\x68\x13\x60\xb7\x8b\xf1\x40\x94\x58\x28\x69\xa9\x85\x16\x70\x29\xba\x02\x4d\xf4\x69\xc4\x85\x62\x0b\x46\xe7\x78\x5b\x3d\x7b\x27\x88\xc6\xc2\x9f\x3a\xab\xd8\xb1\x12\x8d\xee\x95\xbe\x0c\x88\xf3\xa9\x08\x8c\x8c\x08\xf1\xb6\x61\x09\x19\x8e\x7d\x8c\xa0\xa7\xc9\xd8\x5d\x1a\xb2\x72\x2e\xe1\xd3\x64\x30\x98\xc1\x92\xb0\xc9\x22\x12\xb7\xf1\x22\x5a\x24\x6c\x09\x6b\x73\x6a\x6d\xd6\x0d\xdc\x98\x67\xa3\x53\x9b\x93\x85\x23\xa1\x66\x7e\x96\x13\xc4\xf2\x1c\x3d\x26\xc4\x74\xcf\x2d\xd9\x30\xbc\x10\xd6\x00\xaf\x96\x48\x46\x18\xfa\x43\x42\xc8\x72\x92\x12\x11\xa3\x79\x18\xce\x3d\xa1\x84\x94\x2c\x91\xc0\x30\x0f\x43\x34\x77\x74\x19\x32\x6b\xf0\x90\x12\x42\x16\x1e\x55\x4d\x6e\xd0\x5a\x20\x8f\x3e\x0e\xd2\x9b\x84\xf1\x5e\xfa\x90\x6a\x31\x18\xc7\x68\x43\xce\x05\x4a\x31\x9e\x6c\x2c\xfd\x49\xb5\x0c\x8f\xe3\xb5\x4e\x8b\x6f\x90\xa8\xad\x82\x79\x18\xf6\x33\xd3\x05\xdb\x9a\x71\x49\x5d\xd4\x60\xac\xd9\xf5\xfa\x34\x8c\x40\x86\x61\xbf\x31\xca\xcf\x76\x94\x56\x0b\xf9\x69\x77\x56\xad\x9b\x4f\x36\xbe\x17\x13\x84\x38\x69\x22\x16\x14\x98\x1f\xcd\x0f\x7a\x02\x45\x41\x93\xe0\x24\x13\x9c\x48\xe0\xe6\x18\xc3\x66\x55\xd0\x1f\x99\x8b\x8e\x2d\x5c\x84\x38\xc6\x31\x27\x5b\x57\x41\x4c\xc1\x16\x8f\x65\x01\x88\x11\x31\x0d\x04\x0f\x06\x6a\x86\x27\x0c\x71\x1c\x07\x1b\x6e\x6f\x85\xcc\xcb\x41\x04\xf6\xda\x7d\x97\xe9\x97\x30\x7b\x5e\x2c\xe9\xd8\x5c\x42\x35\x58\x3e\x0c\xd1\x88\x90\x1d\xeb\xad\x89\xfb\x8c\x14\x8e\xcb\x47\x73\xc2\x85\x82\x0f\xbe\xcd\x9e\xeb\x65\xaf\x6a\xdc\xd8\xa0\x7e\xde\x21\x73\xc2\x73\x0f\x3b\x16\x8f\xe6\x46\x93\xe5\xf8\x34\x31\x14\x86\x10\x22\x49\x44\x73\x3f\x5c\x89\xc9\x9d\x70\x77\x36\xca\x31\x9f\x55\xcd\x72\x50\x38\xfe\x24\x50\x17\x40\x40\xb3\x05\xc6\x41\x75\x6d\xed\x5e\x89\x3c\x37\xad\x4d\x1e\xc7\x23\x70\x43\xf4\x2a\x1a\x17\x56\xda\x18\xba\x1e\x89\x2e\x31\x74\x64\xae\x54\xd7\x56\x4e\xdf\xfb\x08\x28\xe0\xe2\xaf\x0d\xbf\x3e\xa4\xb2\xa2\xd7\xb6\xf3\x81\x1f\x4e\xf9\xe1\xa6\xfc\x00\x0e\x5e\xd6\x3d\xc7\xb3\xf6\x22\xad\x45\x92\x29\x3f\x08\x4d\x18\xf4\x37\xa1\x21\x51\xc0\x69\x57\x21\x6a\xf4\x35\x79\x8e\xec\x83\xe6\x5d\x9d\x0f\x59\xec\x9b\x24\x12\x1c\x06\x22\x8f\xe1\xd2\xec\x15\xbd\x88\x71\x01\x6f\xbb\x6a\xb4\x38\x50\x57\xe6\x6b\xaf\x57\x6a\xd0\x8d\x09\x98\x5e\xf1\x66\x35\x54\xd0\x4b\x4d\x80\xfa\x2b\xbd\xba\x0c\xd2\x9a\xf7\x98\xca\xe8\x72\x11\xf8\xab\xbb\xe7\x02\x49\x3c\x16\x93\x16\xea\x74\x14\xc6\xaa\x6d\x46\x85\x69\x46\xf8\x78\x01\xcf\x04\x7a\x2b\xf4\x82\xd0\xb8\xec\x99\x40\xa7\xfe\xa5\x16\xd4\xfb\x54\xd8\xe0\x05\xd6\x0d\x23\x8e\xd1\xee\xe8\x47\xe5\xe8\x47\x3b\x25\xcb\x96\x5d\x0d\xc5\xf8\x58\x84\x21\x5a\x8a\x6e\xc7\x36\x75\x82\x81\x54\x53\xfd\xd5\x1d\x41\x58\x4a\xab\x52\x46\x72\x22\x07\x41\xcf\xf8\xd3\x19\x04\x8c\xdf\x39\x05\x4f\xe0\x2e\xad\xc3\x52\x80\xe6\xb4\x6c\xc0\xa3\x1f\x6a\xae\x80\x7d\xe8\xb4\x8d\x70\xaf\xe6\x2a\x06\x72\xc0\xb1\xc1\x0d\x3c\x74\xec\x5b\x0d\xcf\x9e\x0a\xef\x6a\xde\xf0\xb4\xe8\x87\xa6\x6a\x20\x73\x9f\xad\xed\x4b\x2a\xc0\x81\x03\x3c\xe2\xd5\xcf\x76\xab\xe8\xa7\x12\x3b\xc7\xd3\x19\x94\xab\x5d\x7f\xb1\x57\xca\x3c\x0f\xea\x84\x87\x86\x7f\xfa\x1d\xf4\x5c\x7a\x62\xb6\xd1\x14\xa9\x32\x13\x69\xc2\x29\xca\x5a\x60\x28\xb4\x14\x35\x5d\xf8\x56\x13\xf2\xb8\x03\x5f\x5a\x2d\x32\x59\x38\x20\x41\x42\x56\x02\x21\x49\x96\xa2\x3a\x21\x42\x82\x1c\x39\x2f\xf1\xcd\xa0\x47\xf6\x10\x03\x71\x72\x84\x04\x9e\x5e\xf1\x19\x9e\xc8\x98\x52\x8d\xdf\x2b\x87\x97\x91\xb8\x25\x5d\x31\xaf\xf2\x5c\x41\x62\xa8\x76\x97\xc1\x22\x0d\x43\x0a\x89\x23\xda\xc4\xa2\x11\xfb\xe2\xc3\x0c\x30\x87\x8b\xf4\x76\x63\x15\x01\x74\x2a\x29\x0c\xc3\x3e\x61\x76\x25\x87\xe1\xa5\x9b\x2f\xa6\xd7\x32\x24\x95\x08\x91\x36\x2f\xfb\xb6\x5c\xb0\x19\x1e\xd1\x4b\xc8\xc6\x38\xe7\xe7\x5d\x59\xdd\x08\x68\x3f\x70\xb0\x2b\x0d\x37\x85\x37\xd5\x94\xac\xfc\xce\x6c\x89\x57\x7e\x8f\x52\x23\x63\x45\x0b\xb2\xea\xc4\xc7\x1a\x89\x2c\x45\x9e\xeb\xdf\x5f\xf9\x44\xb7\xfb\xb3\xfe\x1e\x5f\x1b\xd1\x0b\xba\x1c\x64\x6b\x44\xf4\x1b\x27\xbc\x16\xef\xd9\x4a\xc6\x54\x21\xde\x0c\x02\x7d\x43\x79\x23\x92\x41\xf3\x5a\x54\x5d\x3b\xbd\x14\x6d\xb3\xeb\xdf\xb8\x47\x3e\x8e\xb5\xb0\xb0\xf3\xde\x26\x6a\x67\x3c\x5d\xbd\x7c\x10\xd6\xf9\x79\x15\x41\xa0\xe9\x0d\xd2\x1f\x29\x0e\x0b\xd8\x1a\xd9\xa8\x53\x06\x15\x68\x29\xe0\xc1\xdb\x3d\x8b\x5a\xec\x2f\x83\xe2\xfe\x24\x48\xc1\xb1\x28\x60\xeb\xd0\x72\xbc\x14\x85\xf1\xee\x6d\x90\x8b\x59\x33\xbb\x42\xbf\xb0\x37\x30\xc8\xb3\x68\x31\x4e\xc2\x50\x0b\x04\x74\x2a\xf8\x2c\x0c\x25\xa2\x20\xf8\x5f\x8d\xc0\x60\x34\xe7\x05\x2e\x8c\xc0\xf8\x2b\xd7\xf5\xea\xa7\xda\x11\x6b\x2a\xda\xde\x61\x4d\x67\xed\xe2\xe9\x08\x55\xb0\xf2\x18\xaf\x76\xb1\xd1\xba\x86\xd0\x53\x54\xae\x67\xa0\xe5\x3e\x28\xfe\x5a\x7b\x66\x11\xef\x81\x7d\xe9\xd1\xe8\x4f\xaa\x3a\xd1\x55\x25\xcb\x65\x47\xbf\xdd\x89\xfd\x4a\xd8\x88\x39\xa5\xdc\x0f\xc2\x3c\x1b\x4e\x9e\xb5\x99\x26\xe7\x3a\x84\xa2\xd2\x62\x00\x9b\x88\xcf\x5a\x7c\x80\x94\x8c\xc6\x4b\xbd\x0c\x77\x8e\xe0\x36\x24\x19\x0c\x34\xb3\x3e\x1a\xbb\x48\xce\x5e\x7b\x94\x0e\x06\xde\x2d\xb6\xc6\xfe\x6d\x41\x51\x63\xff\x3c\x47\x99\x41\x3b\xd3\xcd\x8c\x28\x38\x38\x48\xf3\x9c\x23\x66\x0c\x6a\xcd\x1d\xd3\x2a\xa9\xa8\xc5\x87\xf6\xcc\xa8\x40\xcc\x71\x37\x75\x6d\x86\x4c\x5a\xe1\xfb\xf7\x02\xc5\x00\x42\x74\x01\x42\x34\x01\xd1\x31\x76\xd1\x1e\x59\x05\x65\xee\xae\xa5\xf9\xfe\x0a\xdf\x5f\x8e\xc4\x6e\x7f\x9d\x7e\xec\xbd\xd8\x45\x88\x8e\x58\x18\xdb\xf9\xca\xa7\x9e\xdd\x79\xce\x5e\xde\x1c\xb8\x47\xec\x9a\x0b\x49\x8f\x92\x8c\xba\x64\x16\x58\xa7\x91\x4b\xc5\x96\x8c\xfb\xd4\x95\x49\x9d\x0b\xf5\x6c\xe9\xcb\x67\x26\x69\xc3\x59\x6a\xec\xbd\x4d\xda\xc6\xa4\x65\x8a\xa5\xb7\x0f\x2e\xe9\x21\xc0\x40\x6b\x9e\x6b\x6e\x45\xe3\x12\xdc\x19\xbd\x3e\xfe\xbc\xb6\x58\x4a\x77\xfd\x4c\xc0\x3b\x01\x2f\x04\xd9\x7e\x78\x7f\xfe\xe1\xf4\xf4\xe4\xec\xe2\xf8\xc5\xe5\xaf\x71\x57\xc8\x85\x5b\x81\x82\x24\x00\xdd\x44\x35\xc6\x65\x92\x29\x13\xd2\x8d\x3c\x06\x77\x7c\x1a\xd1\xcf\x34\x45\x41\x72\x95\xce\x03\xb3\x34\x9e\x9f\x9d\xfc\x78\xfc\xfe\xf2\xe8\xd9\xd9\xf1\xc5\xde\x9a\xff\x25\x03\x08\xae\xff\x62\xdd\x99\x92\x81\x65\x94\xdf\x08\x62\xc7\x54\xc3\xf6\x3a\x0f\x3c\x12\x4e\xbb\xb3\x7b\x71\x0e\x5e\x0a\xf2\x46\xc0\x07\x41\xd0\x99\x20\x87\xc9\x21\xbc\x13\xe4\xf0\xea\x9b\xc3\x6b\x78\xe3\x56\xcb\x99\x80\x20\x09\x70\xf9\xfe\xce\xbd\x0f\xfb\x84\x9c\x89\xaa\x67\x79\xae\x53\xde\xd5\x52\x30\x3c\x17\xe4\x85\x88\x1a\xf0\xcc\xf3\x17\x22\xaa\x83\x01\x5e\x09\x52\xaa\x30\x0f\x11\x9e\x4c\x0e\xdd\xd0\x02\x3c\x1d\xcd\xc6\xe8\x83\xc8\xf3\x57\x22\xcf\x9f\x0b\x2d\x38\xbd\xec\xd4\x9a\x3a\x4e\xc6\xec\x97\x84\x3c\x17\x26\xa2\xb3\x59\x0c\x90\x92\xf7\xae\xe7\x0c\x1b\x1f\x19\x99\x71\xb8\x0c\x19\x19\xc2\x82\xa8\x5a\x14\x21\x74\xa0\x05\x45\x94\x92\xb4\x8c\xbd\x1d\x3c\x04\x10\x68\x79\xd7\x3b\x27\xd2\x8b\x37\x0c\x51\xea\x96\xf1\xa2\x0a\x0d\xe3\x2e\xb3\xb1\xfa\xf8\x6b\x2f\x4f\x87\x61\x88\xfa\xac\x5a\xdf\x79\xce\xea\x8b\x3d\xf8\x5d\xf3\x47\x44\x4d\x6b\x65\x0e\x46\x26\x52\xe4\x86\x04\x68\x12\xf7\x82\xc1\x66\x10\xe0\x00\x16\x24\xe8\x05\x83\x05\x64\x83\x81\x0f\x59\xeb\xd6\x72\xf0\x2f\x34\x89\x7d\xb6\x14\x63\x78\x25\x8c\xa8\xd9\xc8\x62\xbe\x3f\x42\x93\xfe\xef\xbf\x67\x2e\xdb\x07\x61\x24\x96\x46\xd7\x39\xf1\x13\x9e\x4c\x64\xcc\x60\x81\x21\x99\xf0\x09\xd2\x32\xfe\x7a\xa3\x88\xfb\x75\xa3\xce\x30\xf0\xe9\x70\x46\xf4\x9f\x5a\x92\x05\x5b\xbd\xe2\x3a\x48\x06\x36\xbb\x3b\xcc\x8f\x6b\x5f\xc8\x30\xd6\x7d\xd2\xfc\x4b\x3d\x95\x39\x3c\x32\x71\x15\x0f\x6a\xe5\x63\x6a\x87\x6b\x7c\x2d\x7a\x4b\xa2\x30\x7c\xe4\x06\xc1\x8d\x59\x07\xb4\x35\x50\x82\x8c\xc6\x62\xc7\x1e\xf8\xe0\xf1\x58\x0c\x06\xb8\xe4\x81\xab\x33\x4e\x31\x0b\x43\xc4\xa7\x62\x46\x2a\x73\x2e\xe0\x0e\x1d\x7e\x11\xe4\xa5\x68\x98\x47\x59\xa0\xef\xda\x47\x1d\x46\x76\x8d\xf7\x09\xf9\xa2\x49\xa2\x7e\x8e\xbf\x08\x57\xcf\x1f\x6d\xf5\xf3\x47\x41\x3a\xe2\x67\x28\x72\x18\x1d\x56\x28\x42\xd7\xb1\x8b\x8e\xab\xe8\x63\x2a\x32\xd6\xf4\x19\xd9\x26\x71\xf0\xf7\xa0\x00\x55\x40\xf0\x77\xbd\xe6\x82\xa0\x5c\xef\x0a\x82\x47\x4f\x92\xa7\x16\x59\xbd\x16\x24\x78\x34\x0c\x08\x21\x41\x52\x65\x39\x8c\x0e\x41\x27\x63\xf8\xc5\xf6\xd3\x7d\x08\x30\xfc\x28\x48\xbf\x7f\x18\x1d\x4e\x7f\xd1\x70\x32\x5e\x76\xdc\x9b\x45\x97\xa6\xd4\x4f\xfb\x06\x83\x26\x31\x3e\x34\x17\x32\xf4\x50\xc6\xbb\x23\x2a\x39\x9a\xda\xe5\xb6\x5a\x8c\x57\xa7\x86\x0d\x92\xab\xc0\xb9\x81\x2c\x0f\x12\x7a\x8f\xfb\x84\x78\xc7\x42\x79\x1e\x24\x7a\xd8\x72\x3a\x9c\xe5\x79\x70\x65\x9f\x47\x33\x3d\xe4\x1f\x3a\x79\xef\xca\xc2\xb3\x52\x91\x69\x74\xe3\xf6\xfe\x1d\xa2\x58\x0b\x4f\xd6\x18\x3c\x25\xac\xbc\x20\xe8\x50\xcb\x93\x61\x9e\x27\x4f\x49\x3a\x51\x93\x20\x70\x22\x4c\x8c\xcc\xa5\xbe\x9b\x44\x1e\x89\x39\x7d\xa6\x50\x82\xf1\x93\xef\xbe\x7b\xfc\x8f\xef\xf3\x9c\x3f\xfd\xee\xfb\x6f\x47\xff\xc8\xf3\x64\xa0\x31\x52\x9a\xe7\x48\xb4\x32\x0f\x46\x3a\xfb\xf7\xdf\x3e\x1e\xe6\xb9\x78\xfa\xdd\xdf\xbf\xfd\xdb\xb7\x13\x35\x61\xfe\x92\x5a\x82\x63\x1e\xeb\x77\xbb\x17\x13\x48\x06\x8f\x71\x2c\x0e\x4c\x89\x01\xe2\x07\xa6\xa5\x27\x4f\x46\x43\x3c\xf8\xfe\xbb\xef\xbe\xfd\xbe\x28\xe0\x67\x41\xb6\xa9\xa9\x3e\xfe\x41\x20\xcd\xf7\xda\xca\xcc\xdb\x10\x17\xae\x6e\xf8\x75\x57\x6b\xe8\x67\x46\x4b\xec\x3f\x5b\x32\xeb\xb7\xe5\x08\x17\xf0\x5b\x5b\x5f\xe4\x1d\xa5\x99\x89\xee\x8e\xee\x53\x5e\x21\x2f\x1d\xb7\x50\x63\x35\xe4\x2d\x6d\x4a\x59\x92\xef\xea\x10\xec\xb6\xeb\xe9\xda\x7b\xd6\x3a\xbb\x67\x7b\x48\xe7\xbd\x4c\xe8\x14\xc6\xaf\x7b\x42\xdd\x50\xd9\x53\x37\x09\xef\x25\xfe\xfe\x41\x4f\x48\xe3\x35\xbd\xa2\xbd\xbc\xd0\x8d\xba\x8d\xdc\xb7\x31\xf5\xf7\xb5\xf8\x1f\xa6\x45\x63\x4c\x37\xef\x09\x2d\xa3\xa7\x62\xb5\x4e\x14\xbb\x5a\xd2\x9e\xa4\x29\x65\x77\x26\x72\x8a\xab\xfa\x8b\xa8\x86\x56\x80\x62\xe4\x5d\xa2\x6e\xa2\x55\xf2\x19\xa8\x7f\x66\x1c\xa4\x7b\x5e\x2c\x85\x90\xc0\x19\x39\xfc\xfd\x11\x9a\x3e\x0a\xff\xeb\x7f\xcd\xf2\xdf\xe7\xbf\xcf\x27\xf9\x93\xe9\xbf\x9e\xce\xbe\x79\x8a\x0f\xaf\x41\xec\x7e\xc6\x87\xd7\x5d\xde\x74\x2c\xc7\x68\x83\xca\x25\x5d\x3b\x92\xd6\x2e\xd2\x52\x8d\xf1\x76\x77\xe2\xdf\x0b\xf8\x7b\x9f\x04\xc1\x54\xcd\x9c\x83\xc3\x94\x24\x3b\x21\x6b\x6c\x65\xfd\x11\x48\xcd\x60\xf8\x48\x55\x66\x87\x3a\x55\x2e\xb2\x77\xe6\x5b\x07\x36\xd6\x7f\x8b\x4f\x98\xfe\xd1\xd9\x05\xa9\xb3\x2d\x96\xc9\x75\x46\x82\x00\xa4\xee\xa7\x46\x39\x62\xa6\xd9\xd5\x7d\x08\xc4\x28\xe9\x36\xcb\x65\x61\x0a\x98\x53\xea\x3e\xd5\xcc\x2f\x5b\xa0\x7e\x92\xe7\xfd\x34\xcf\x4b\xb4\xe6\xba\xd8\xff\x28\xf2\xbc\xff\x5a\xe4\xf9\x8f\x02\xe7\x79\xa3\xff\xfd\x9f\x84\x17\x2c\x6c\xe3\x90\x11\x89\x04\x18\xc8\x34\xa5\x6a\x68\x86\xb5\xb6\x1c\x1a\xd1\x64\x60\xa2\x21\x27\x26\x4e\xb9\xe6\xb5\x42\x9b\x46\xac\xec\xb8\xf5\x55\x95\x51\x42\xeb\x5f\x4d\x50\xb7\xed\xd9\xf1\xe9\xdb\x67\x47\xc7\x97\x3f\x1e\x1f\x9f\x9e\x5f\x3e\x1a\xc6\xaf\x05\x9c\x1d\xbf\x3a\xfe\xe5\xf4\xd2\x7f\x3a\xff\xf0\xfc\xfc\xe2\xcd\xc5\x87\x8b\xe3\xf3\xcb\x0f\xef\x5f\x1c\xbf\x7c\xf3\xfe\xf8\xc5\xe5\xd1\xb3\xd3\x8b\x0f\x67\xc7\xf1\x8f\x5a\x0e\x5e\x90\x4c\x53\xce\x25\xc9\x34\x2f\x46\x15\x6a\x73\x92\xa0\x34\x6b\x40\x15\x6a\xf3\x9e\x20\xe0\x31\x21\x74\xd2\xdc\xf9\xcd\x7b\x83\xca\x6b\xdf\x3a\x23\xc9\x36\x32\xe1\x02\x17\x3c\x0c\x4f\x77\xda\xd1\xe0\x0e\xb2\x9b\x64\x15\x98\x2b\xf7\x15\x3d\x82\xc7\xbb\xa0\xf7\xeb\x9e\x47\xff\x0e\x28\x8c\x0b\x98\x36\x3c\x21\x21\x62\x12\x3c\x0a\x62\x4d\xd6\xdc\xaa\x9e\x96\xed\xd5\xda\xba\x73\x12\x11\x23\x56\x65\x26\x27\x8e\x02\xc8\x2a\x4e\x51\x65\x48\xca\x26\xcc\x4f\xaa\x00\x8e\x63\x77\x6f\xd3\x91\x1a\x81\xed\x42\x80\x1d\x8b\x80\xbe\xe6\x79\xf5\xba\x6c\xf9\x3c\xe0\x61\x68\xd8\x5a\x5e\xb2\xb0\x09\xf6\x8b\x55\x22\xef\x5c\x02\xb8\x59\xfc\x1b\xab\xcb\xf6\x17\x0c\xdc\x21\x81\x75\xaa\x67\x8e\xf1\x2b\x7e\xd7\x0c\xa9\x53\x7b\xc7\xc7\xcb\x3c\x47\xdc\xe7\xe4\xce\x68\x67\x4d\x32\xc7\xbe\x8d\x4d\x10\x6f\xd3\x87\x1b\x92\x79\x41\x6e\x9c\xd5\xf9\xbf\xc2\x6b\x3a\xe7\x9a\x85\x71\xe7\x7f\x77\xe4\x37\x81\x32\x58\x58\x9f\x84\xd6\x88\xfa\x0e\x5f\x49\x9a\xdc\xea\x94\xb9\x93\xe5\x31\xf4\xd7\x2e\x35\xa8\x19\x7f\xdf\x4d\x87\x86\x9d\xae\xb7\xf3\xab\x40\x0b\xc8\x54\x3d\x0d\xc3\x0d\xc6\x65\xf3\x0f\xb0\xd2\x88\xc5\x86\x36\x1f\x8e\xaf\x9e\xcc\x3d\x71\xbf\x32\x77\xc6\xc8\x7c\x7a\x35\x2b\x43\xee\xdc\x37\xda\x82\x63\xa2\x18\xa2\x0c\xa5\x0a\xdd\x59\xf0\x63\x58\x94\xe1\xd2\x87\x18\x4e\xc8\x74\x06\xe7\x64\x34\x3e\x7f\xe2\xc3\xa8\x8f\xcf\x07\x03\x7c\x52\xd7\x4a\x68\x99\xe4\x81\xdc\x4d\xcf\x67\x78\xf2\x10\xbb\x06\x1e\x1c\x54\x2f\xc9\x9d\xe3\xeb\x34\x04\x96\x16\x4e\x9f\xc8\xf4\xbe\xbc\x59\x7b\x02\xc7\x1a\x62\xe5\x02\xbb\x0c\xc3\x4f\xb6\xfa\x4b\xe7\x0e\xa2\x9c\xa9\xa6\xf1\xdd\x27\xec\x62\xa3\x7f\x26\x29\xba\x87\x05\x1c\xc3\x09\x5c\xea\x95\x72\xfc\x94\x5c\x87\x21\x5a\x0d\xc8\xc2\x31\x18\xd7\x70\x8c\x07\x9f\xe1\x9a\x1c\x0f\xee\xfd\x00\xfd\xa1\xf5\x6a\x50\xe6\xc2\xc5\x6c\x5c\xbf\x2f\x51\xbf\x3c\x62\x2f\x8e\xf0\x81\xb7\xee\x85\x4d\x75\x65\x26\x23\x82\xed\xee\x14\x2d\x1d\x90\x5b\xe3\xde\x2b\x23\x9c\x61\xef\x5f\x3b\x81\xa6\x0f\x78\x57\x79\x36\x76\x71\xe3\x13\xcf\x25\x0d\xb1\x8d\x20\xaf\x77\xb1\x23\x4b\x8f\x02\x13\x23\x3e\x08\x7d\x4a\x4f\xd9\x84\xff\x55\x26\xc8\x9a\x9f\x41\xfb\xed\xbf\x76\xbe\xa5\xee\xcb\x93\x20\xce\x08\x9b\x26\x2e\x79\x04\x07\x23\x3c\x1b\xdb\xb5\x39\xa7\x8b\x64\xb3\x54\xb1\xee\xdb\x82\x0c\x12\x3d\x81\x7a\xb2\x17\x95\x51\x0c\x5b\xa0\xc5\xd3\x8d\xed\xfe\x92\x48\x86\x16\x87\xa3\x2a\x22\xb6\x3d\x99\xa6\xf1\xf2\x09\xd9\x4c\xca\xb5\x22\xa6\xcb\x83\xd1\x6c\x52\x0e\x72\x84\x63\x9b\x34\xa8\x27\xd1\x22\x23\x62\xba\x38\x18\x95\x37\xae\xcb\x0a\x32\xcd\xa4\x66\x85\x55\x9c\xda\x18\x5d\xec\x4f\xbd\xc2\x96\x17\x9f\x8c\xb0\x69\x5d\x3d\xb4\xc5\x2a\x2d\x54\x0e\xc7\xfc\x89\x67\xc4\xc7\x7c\x30\xc0\xc6\xe9\x46\x25\x60\xf1\x9a\xbc\x52\xdd\xc4\x29\x0a\x48\xd8\x4e\x24\xfb\xf2\x5e\x42\x6d\x4d\xb1\x9a\xfb\x17\x7f\x37\xc1\xf4\xc6\x5c\x03\x49\x58\x65\xd6\xed\x8b\x6c\x58\xfb\x56\x92\xb9\xb0\x51\x65\xc8\xd8\x5f\x0d\xa9\x53\x16\x59\x74\x75\xc3\x9b\xb9\xee\xed\xc9\x92\x95\x26\x26\xde\xfc\xbe\x8b\xe1\xad\x79\xb1\x31\xc3\xc5\x15\xec\x87\xc0\xcb\xe0\x0a\x63\xf9\x84\x8f\xe5\x60\x80\x69\x2d\xe0\x9d\x0d\x19\x04\xca\x3a\xbf\xef\x35\x02\x4a\x28\xbc\x03\xe0\xa6\x4d\x73\x19\x2e\x10\x97\x0e\x10\x5c\xa5\x62\x06\x02\x94\xd5\xa3\xad\x19\xd9\x3a\x67\x1f\x71\xca\xc0\x3d\xda\xf8\x56\x1d\x54\xbe\x39\x4b\x36\x5b\x1b\x42\xc0\xb2\xbd\xe5\x6b\x33\xd2\x37\x53\x19\x86\x3e\xa5\xce\x3e\xba\xaf\x8d\x33\xac\xce\xcb\x30\x8d\x2c\x91\x6f\x38\x0c\xbb\xd3\x5d\xef\x5e\x0a\xb9\x32\x76\x8c\x1d\xe3\xeb\x88\x9d\xe0\xb3\x87\x61\xe3\x38\xd4\x27\x17\x4d\xa0\x7d\x64\xf4\xfe\x2f\x56\x5c\x2b\x15\x86\xb5\x97\x88\x65\xba\x96\xc9\x6e\x12\x52\x38\x36\xf6\x9f\x57\xe5\x38\xed\x53\xbd\x63\xb5\x62\xba\x6f\xed\xcb\x40\x5f\x71\xb8\xa4\xb3\xdb\x18\x0d\x5d\xd9\xb9\xf9\xd2\xca\x6e\x17\x61\x9c\xe9\xa5\x53\xde\x99\x8a\x37\xfa\xf5\x45\x33\xea\xf0\xce\x12\xd2\xdf\x3b\xd6\xce\x4b\xb6\xfc\x6a\x31\xfd\xbd\x6b\xc9\x2d\xc5\xd5\xd7\x8a\xe9\xef\x5d\xad\xb9\x12\xf1\x82\x59\x58\xd1\x64\xd5\xb5\x6e\x33\xbb\x58\x35\xaa\x88\xd6\x6c\x4d\x4d\xe1\x0f\x67\x6f\xcf\x69\x22\xd3\x9b\xd3\x44\x26\xab\xae\x1b\x99\x5d\xd3\xde\x2a\xd5\x5a\x56\xad\xaf\x76\x06\x13\x3e\x4f\xe4\xfc\xb9\x14\xf7\x19\x95\xc7\xfc\x6e\xf7\x6c\x0a\x75\xf9\x49\x29\x43\xd9\xe6\x79\x70\x46\x93\x54\xbd\x37\xf6\x7c\x5a\x30\x2e\x3f\x69\xfc\x31\xdf\xa4\x1a\x45\xda\xaf\xd6\x5e\x7d\x6f\x9e\xf3\xce\x2f\x9a\x53\xfb\x5a\xdc\x91\xae\x6f\xde\xae\x52\xf3\xc7\x2e\xf8\xe5\x92\xc1\x8a\xca\xeb\x6a\xfe\x7b\xaa\x2e\xdf\x96\xa9\xd2\x72\xec\x3b\x48\x9d\x4e\xf9\xac\x03\xd7\xcb\x89\xfe\x40\x14\x72\x47\xef\x31\xb5\x11\x29\xcb\xf3\x79\x32\x04\xb1\xeb\x31\x8a\x3f\x11\x86\xe8\x2d\x19\xaa\x93\xbc\xda\xd9\x3d\x2d\x60\x4e\xe9\xfa\xdd\xff\x67\x7d\xee\xc8\xa6\x90\x16\xbe\x71\xfc\xff\xce\x70\xe8\x67\x45\xf9\x7c\x27\xa6\xb4\x97\xf1\x18\xa2\x0d\x66\x8d\xe3\xad\x8d\xee\xd9\x7d\x55\x71\xc2\x98\xe1\x08\x62\x6a\x2c\x97\x0b\x50\x92\x75\x6e\x2f\x55\x29\x2c\xff\xf5\x7b\xf6\xcd\x21\x04\x01\xae\x92\x7e\xcf\xbe\x79\x64\x92\xea\xa1\x0d\x6e\xea\x84\x9e\x72\x2d\x94\x7c\x38\x7b\x53\xfa\xeb\x41\xaa\x56\xc1\x7f\xfe\x6d\x78\x78\xcd\x20\xf8\x67\xbd\xd6\xff\xfc\xf6\x99\x49\x8c\x1b\x89\x8f\xff\x76\x78\x0d\xc1\xa3\x66\xda\x91\xc9\x08\xcd\xc4\xa1\xce\x38\x68\xa4\x7d\xf7\xdc\x64\x9c\x36\x13\x5f\x98\xc4\x59\x60\x29\xee\x9c\x75\x1b\x67\x96\x97\xf7\xac\x35\xa6\xe6\x26\x25\xe6\x5a\xea\x73\xe4\x5f\xcb\x61\x2c\xda\xc1\x3a\x88\x62\xcc\x49\xc5\x5e\xa1\x5a\xa8\x1c\xa1\xc5\xb1\x35\x2b\x7d\x4b\xd0\xb6\xd1\x80\xe3\x5c\xc2\xd0\x56\x5d\x3a\xfd\xa2\x03\x12\x4c\x67\x41\x6c\x38\x17\xa8\xd5\xd0\x3a\xa3\x34\xa5\x5e\x58\x5f\x7a\x13\xe3\x3a\x57\xbc\x39\x3f\xf1\x1d\x89\xcd\xe7\xf2\xc2\xab\xe1\x84\x7e\x38\x3f\x79\x1f\x95\xc1\xcb\xcd\xed\x4b\x17\x88\xfc\x86\x21\x8a\x07\x01\x09\x06\x66\x6a\xad\x47\x58\xac\xd9\x50\x61\xee\x5e\xa3\x20\x0c\x70\xa1\xd9\xad\xea\xfa\x77\x79\xd0\xf3\x1f\x01\x1e\x1f\x8c\x9c\x9c\xa1\x3b\xe2\xb9\x7e\xe3\x94\x79\x40\xec\x69\x51\xad\xc0\x24\xc0\x93\x60\x12\xc4\xba\xd2\x01\xaf\xbc\x64\x54\x0b\xec\x8e\x79\x77\x0f\xce\xd3\x75\x46\xa6\xb3\xe2\x8e\xd5\x3d\x34\x66\x7b\x1c\x80\x36\x8a\xd9\xe1\x6d\x17\x9b\xe5\x82\x2d\x97\x74\x1e\x2b\x67\x59\x44\xe7\x7a\x63\x40\x33\xb3\xf7\x57\x56\x40\xa3\x29\x6b\x7e\xd2\xb0\xad\xae\x17\x9b\xaa\x99\xf7\xe2\x5b\x4b\x32\x3a\x0c\xdc\xaa\xc9\x87\x04\x6d\xcd\x63\x39\xc3\xf5\x3a\x9a\xce\x7b\x1c\xab\x46\xc3\xd0\x05\x74\xb1\x5a\xfc\x07\x46\xee\x18\xac\x76\xd7\xb5\x03\x46\xad\xf2\xfa\x99\x8e\xc4\x5b\x45\xa4\x37\x70\xd5\xd8\xe1\x9a\x75\xe8\xf3\xfb\xc6\x29\x61\x5f\x45\x97\x97\x47\xcf\xde\x1f\x1d\xbf\xbd\xbc\xc4\xb5\x59\xba\x62\xe5\x95\x45\x2d\xcb\x38\x0d\x6f\x75\x73\xa9\x77\x93\xd8\xeb\xac\x57\x94\xf2\x9e\x27\x42\x35\x3e\xfe\xbe\xb3\x02\x73\x23\xe9\x4f\xaa\xd0\x63\x3f\x66\xe4\x8a\xc1\x09\x23\xf7\xac\xea\xd3\x39\x73\x17\x0d\x8f\x99\x96\xd0\xca\xbe\xf8\x2d\x5e\xbb\x57\xa5\x60\x68\xf4\x23\x36\xeb\x15\xcb\xf3\xfe\x31\xc3\x61\xb8\x5b\xe8\x98\xd5\x6a\x82\x76\x15\xb5\xab\xd1\xc7\xcc\x24\x55\x77\xa1\x1b\xdf\xea\x92\x40\x23\x57\x2b\x87\xbb\xef\x3f\xc4\x45\x51\x74\xa0\xf6\x85\x89\xe8\xe0\xba\x10\x86\xa8\xd1\xbb\x4e\xcb\xa1\x85\x8c\xea\x40\x0d\x43\x74\xc2\x48\x3d\xc5\xa9\x48\x18\x7c\x32\x46\x21\x9f\x19\xe9\x8f\xe0\x88\x91\x83\x51\xcd\xb3\xa1\x9e\xac\xcf\x2c\x0c\x2f\xf5\x3e\xb7\x59\x2e\xfd\x09\xce\xe4\x13\x23\x97\xcc\x6b\x52\x3e\x31\x1c\x9b\xd2\xf0\xc9\x67\x08\xc3\x67\x0c\xd5\xdd\x8a\xeb\x57\x83\x7d\x3f\x33\x7f\xb0\x75\xce\xd0\x05\xc3\x63\x5d\xf5\x70\x5c\x5d\xad\x2c\xeb\x18\xd3\xb1\x95\x9f\x2f\x19\xf9\xe4\xfa\x3a\x1e\x0c\x8e\xd8\x13\x3a\xc6\x97\xa6\x67\xd3\x23\x36\x8b\xe4\x86\x23\x3c\xb6\x1d\xa8\x15\x2f\x2e\xad\x62\xd1\x0d\xaf\xbe\xdc\xd9\x42\x43\x84\x34\x61\xe2\x66\xa5\x9e\xe6\x3c\x3d\xd9\xcc\xf7\x7a\xc5\x9c\xe8\x15\xd3\x55\xac\x05\x61\x68\x57\xa3\x57\xc6\x09\x33\x6e\x3d\x3a\x16\xcb\x49\x63\xb1\xec\x2e\x95\x13\xd6\x8a\x90\x56\xa0\x46\x9c\xb4\x53\x56\xbb\x33\xbf\xd8\x70\x6f\x62\x97\x98\x6b\xe3\xb4\x38\xad\x63\x25\xb9\x69\xd8\xeb\xf9\x32\x4e\xad\x60\xbb\x50\x16\xae\x23\x80\xb7\x7a\x0e\xcd\x5e\x7c\xcf\xc8\x5b\x06\xb7\xe6\xef\x99\xf9\xfb\xce\xfc\x7d\x61\xfe\xbe\x31\x7f\x1f\xe9\xbf\xd6\x4b\x0c\x23\x0b\x19\xad\xa9\x5c\x08\xb9\xd2\xcc\x77\x9e\x6f\x0b\xf8\xc0\xc8\x4b\x16\x71\x71\x9f\xe7\x2f\x59\xb4\x12\x5f\xde\xfb\xc7\xcc\x3f\x09\xff\x60\x2f\x36\x9b\xb7\x5d\x7e\x5c\xe3\x12\x4d\x18\x71\x74\x6d\xf7\x05\x72\xd8\xf2\x39\x23\xfe\x9b\x75\xd3\xc2\xec\x55\xef\x0b\x96\xde\x76\x18\x15\xed\x57\xd0\x1c\x58\x6f\x01\xbb\x1e\x39\x6a\x2a\x86\xd1\x58\xee\xfa\xcf\x32\x6a\x86\xa9\x3c\x18\xb5\x5c\xa1\x7e\x72\xe6\x55\xc6\xed\x8a\x9d\x3b\x0c\x9a\xa6\x96\xab\x37\xcf\x3f\xb3\x3c\x3f\x67\xe8\x19\x33\x67\x60\x6a\x49\xe3\xe0\xca\x8a\x25\x01\xb8\x07\x6b\x14\x78\x17\x6f\x0b\x48\xe4\xf5\x5d\x3c\x9d\x81\x8b\xf7\x17\x07\x81\x7f\xcc\xf4\x67\xc1\xe3\xf7\x0c\x92\xf9\xdc\x5f\x21\x8d\x6f\x19\x08\x9e\xd2\xf8\x8c\x81\x58\x2c\xe2\x77\x0c\xec\x4d\xd5\x32\xc3\x0b\x9f\xf2\x6c\xb9\xf4\x89\x59\xfc\x86\x01\x5d\x31\x15\x3f\x62\x70\xc5\xf8\xbc\x2d\xef\xee\x60\x77\x77\x37\x2b\x72\x99\xbd\xc7\x83\x6c\xb3\x5e\x5b\x17\x53\xb8\x80\xf4\x7e\xde\xe1\x41\xe3\x30\x28\x20\xbd\x99\x33\xf9\xd7\x1a\x30\x59\x3b\xab\xdf\xac\x92\xec\xb6\xc3\xc6\x70\x58\xc0\x8d\x54\x6c\xd5\x65\x60\x16\x0d\x87\xa3\x6f\x3e\xb8\x5d\xf7\x92\x61\x90\xb5\xc3\x46\x6b\x74\x56\x7f\xff\xcf\xd1\x37\x23\xfa\x8f\xca\x2e\x29\x0c\x91\x3c\x20\x6a\x3a\x9c\x01\xe2\xfa\x61\x34\x73\x31\xc0\x0e\x0e\x80\x0f\x88\xce\x8c\x61\x2a\x81\xcf\x0a\x58\x2f\x13\xa5\x77\x46\x6d\x7e\x25\x5d\xd2\x24\xa3\x7a\xe6\xac\xbd\xa4\x7e\xda\xac\x9b\x9d\xdd\xd9\x00\x07\xcf\x19\x3e\x1c\xd1\x6f\x8b\x02\xbe\xb4\x35\x93\x7b\x18\x4b\x23\x28\x71\xcb\x69\xf0\x48\x89\x0f\xeb\x35\x95\x47\x49\x46\x91\x09\x15\xd3\x4c\xd1\x6c\x8f\x0d\x32\xee\xc3\x39\x4f\xf9\xcc\xda\x58\xfd\xd1\x66\x49\x1a\xa7\x79\x5f\xf9\xa4\x5c\xd0\x29\x42\xc1\x06\x9c\xd3\xd2\x05\x91\x18\xb4\x9c\x62\x02\xd1\x13\x6e\x9e\xb3\xb5\xe0\x19\x25\x02\x94\xe6\x9e\x3f\x33\x91\x99\x05\x60\xa3\x5c\x29\xa1\x99\xdd\x8e\x3b\x65\xee\x9e\xb4\xf5\xa3\xe5\x5e\xc0\x38\x65\x33\x29\xfa\x09\xe6\xce\x95\x9b\xde\x36\x36\x36\x60\x95\x00\x56\x15\xe3\x72\x9b\x67\x58\xb0\x25\x7d\x5f\x56\xe1\xdf\x60\xc9\x38\x7d\x5f\xcb\x5d\xbd\x43\x2a\x96\x9b\x15\xaf\x7f\xac\xa7\x40\xa6\x92\xf4\x36\xf6\xde\xc9\xd3\x5b\x3f\xe7\x2e\xa7\x7e\x06\x0d\x16\x9f\x30\xa7\x45\x01\xaa\x40\xd5\x2e\x50\xb8\x04\x6c\x01\x1f\x19\x99\x06\xe6\x72\x78\x90\x6c\xd4\x8d\x90\xec\x8b\x8b\x99\x17\xa4\xd6\x37\xe2\x81\xc5\x31\xb5\x04\x4d\x18\x02\x08\xa8\x4a\xae\xf5\xcf\xe7\x35\x93\x34\x0b\x20\x58\x48\xb1\x0a\x20\xb8\x11\x99\x0a\x20\x60\x8b\x83\x95\x98\x1b\x5b\xfe\x83\x8c\xf1\x94\xda\xb4\x0d\xdf\x49\x5d\x26\x99\x2a\xf3\xea\x77\x7f\x43\x01\x82\x55\xf2\xf9\x60\x21\xe4\x7d\x22\xe7\xba\x85\xb5\x14\x9f\x1f\x0e\xda\x1d\x35\x0e\x20\xf5\x4e\x08\x24\x55\xf2\xe1\xc0\x84\x33\x08\x20\xd8\x64\x54\x1e\x24\xd7\x94\xab\x60\x06\xaf\x19\x31\x62\xcf\xae\xd6\x06\xe1\x49\xdb\x8e\x06\x28\x39\x44\xab\x8c\xd1\x5c\x49\x36\xa7\x5c\x61\xef\x27\xa3\x52\xb1\xe8\xda\x9f\x5d\x9b\x8b\xa1\xb2\x7d\x77\xdb\x79\x95\x43\x41\x12\xd4\x1c\x60\x95\x28\x83\x57\x16\x73\x26\xc6\x89\xe6\xd9\x9e\x29\x25\xd9\xd5\x46\x51\x14\xdc\x48\xba\x08\x80\x5b\x63\x55\xfd\x82\x61\x6f\x96\xad\x7e\x8a\x6d\x36\xf0\x6e\x0b\x62\x59\x79\x30\xa8\x1e\x2b\xd9\x37\xb6\x62\xbb\xc6\xfb\x7a\xb2\x74\x71\x91\x69\xe6\x55\x8b\xaf\xb1\x6e\x4b\x3f\x4c\xfc\x43\x5d\x09\x30\xa9\x4a\x26\x99\xce\xab\x7f\x26\xf6\xa7\x96\xef\x3f\x1a\x0d\x98\x3d\x64\x1b\x31\x9b\x48\xa3\x5b\xdd\x47\x21\x15\xac\x13\x75\x63\x1d\x1f\x1e\x06\x84\x10\x19\xf9\x84\xea\x7c\x69\x52\x25\xea\x5c\x83\xea\xb5\x28\x05\x44\xc2\x7d\x90\x55\xbf\x7a\x1c\xe4\xea\x82\x92\x25\xbe\x6e\x19\x18\x59\x98\xe2\x89\xfe\x12\x57\x0e\x6a\x4b\x70\x19\xb9\xd4\xbf\x84\xa1\xed\xbe\x49\xd4\x0f\x45\x81\xf0\x2e\x76\xed\x0f\x0b\xf8\xe5\x6b\x0b\x6d\x7b\x2f\x59\x43\xfd\x5a\xf9\x7e\x73\x7e\x88\x34\xdf\x9a\x38\x9f\x75\x46\xea\xee\xd0\xa1\x68\x06\xc0\xb4\xe1\x22\xf7\x4a\x1c\x86\xae\x8c\xdf\x8e\x24\x18\x78\x4c\x8f\x24\x8e\x94\x78\xf5\xee\xc2\xcb\xff\xae\x70\x79\xb4\x5c\x15\xd6\x70\xd5\x25\x9b\x39\x44\x2d\x87\xbb\x4e\x12\x0c\x84\xbb\xd5\xc9\xaa\x6f\x19\x4d\x37\x92\x06\x18\xaa\xdd\x20\xc4\x2d\xa3\x24\x71\x8a\x82\x71\x4f\x93\x58\x49\x93\x79\x07\x15\x6d\x15\x8a\x56\x86\xad\xad\x5b\x5d\xa2\x7f\xe5\xe3\xdf\x7f\xcf\xbe\xc1\x28\x18\xa8\x41\x80\x09\x9a\xfe\x6b\x3c\xfb\x06\x07\x95\xc5\x35\x9d\xcc\xe9\x2e\xb8\xa6\xdf\xce\x70\xec\x6c\x55\x0c\x97\x12\xef\x08\xec\x66\x5e\x90\x82\x20\x00\x0d\x33\xe3\xb7\x04\x1f\xfc\xcf\xef\xff\x46\xbf\xc3\x45\x11\xb7\xe7\x0d\x6f\xdb\xe3\x68\x1c\xa5\xec\xb6\x83\xb7\x45\x01\x3f\x76\x09\xd2\x7b\xdc\xe9\x35\x42\x58\xce\x13\x95\x80\xd0\x4b\x8f\x26\x73\x2a\xb3\xb1\x99\x1e\x7f\xd4\x61\xa6\xd0\x51\x59\x31\x0d\x9c\x4f\xdb\x83\x0b\x8d\xa6\xad\x27\x7d\xcb\xdb\xfe\xf2\xee\xed\x6b\xa5\xd6\x67\x96\x54\x1a\xef\xe5\x91\xc6\xa5\x7e\xe5\xd9\x37\x83\xd8\xf4\xe6\xca\xf3\x20\x80\xd4\xa7\xae\x93\x2c\xbb\x17\x72\xae\x53\xc7\x22\x7a\x56\xc7\xc1\x24\x78\x9e\x64\x2c\xed\x05\x83\x2b\x25\x12\x94\x0c\x82\x38\x18\xa4\x56\x12\xb7\x97\x8d\xd1\x86\xa8\xe8\x2a\xc9\xe8\x87\xb3\xb7\x90\x11\x15\x6d\xe4\x12\x36\x61\xd8\x3f\xfc\x17\x9a\x26\x07\x5f\x66\xfa\xcf\xef\xf3\xdf\x07\xbf\x1f\xfc\x1e\xcd\xbe\x89\xf1\xe4\xf7\xc3\xdf\x0f\x3d\xd2\xcd\x70\xb7\x01\x0c\x9d\xd4\x14\x94\xbf\x1f\x0e\x2c\x5a\x1b\x68\x1c\x41\xeb\x48\xeb\x70\x60\xd1\x91\x2a\xd0\x06\x32\x1c\x67\xd6\x9f\x57\x24\xd6\x94\x23\x15\x59\xeb\xb6\x26\xfb\x02\x73\x86\x16\x60\x6e\x6b\x26\xab\xac\x7c\x38\xa7\xd2\x7a\xe4\xb4\x0e\x6b\x81\x45\xca\x8a\x6d\x44\xf9\x27\x60\x7f\xe2\xe7\x45\x37\x1d\x86\x7f\xd3\x7b\x27\x32\xf9\xce\xed\x15\x2b\x64\xce\xe3\xcd\x85\xab\x4d\x96\xe7\xac\xe4\x63\x3e\x9c\xbd\x0d\xc3\xa1\xcb\x5f\x26\x55\x3a\x33\xeb\xb9\x06\xe3\xca\xaa\xd2\x79\x33\x23\xc6\x4b\xeb\x72\x79\xe6\x4a\xbd\xb6\xab\x27\x60\xbc\xc7\x26\xc6\x74\xb2\xf3\x3b\xc2\xb0\x31\x51\x04\x27\xa8\xc6\x09\x96\x61\xc1\x7f\xe7\x41\x2b\x1a\x10\x5b\xa0\xb4\xae\xc4\x8b\x03\x0c\x42\x63\x41\x25\xd9\x0a\xd9\x38\xbb\x4a\xa2\x21\xa4\x58\xa3\xa2\xb7\xe2\xbe\x04\x73\xb2\x9b\x2d\x1d\x8c\x30\x06\x1b\x8e\x70\x63\x8c\x85\x3f\xb2\xb2\x6e\x81\x9f\x92\xa1\x8f\xe8\xa0\xbf\x92\x20\xa3\xea\xc0\xe2\x0c\x4d\x40\xc4\xc4\x14\x9a\xe8\x3f\xf1\x74\x86\xbd\xde\x61\x9a\xcc\x70\x5c\x7e\x19\x04\xd0\x0b\x06\x49\x9c\x18\xdf\x5f\x1b\x1c\x6f\x2c\x82\x80\x05\xb1\x91\x4f\x2b\x2e\xf2\xc2\x04\x22\x0b\x14\xfd\x6c\x4e\x5f\x9a\x1f\x26\xd5\x94\xc4\xd5\xe3\x05\xfd\xac\xc0\xce\x63\xec\x27\xd4\xbd\xeb\x4f\x65\x9a\xc9\xe7\xb6\x74\x9c\x95\x9c\x1c\x38\x66\x36\x66\x45\xdb\xe8\xb0\x66\xcf\x69\xc3\xaf\xde\x25\x4b\x36\x4f\x94\x89\x5e\xb3\xc9\xc6\x7d\x9e\xe7\x1c\x49\x57\x3f\x9e\x28\x24\x71\x4c\xd1\x1f\x0c\x05\x6e\xdb\xf7\x16\x09\x5b\xd2\x79\xef\x9e\xa9\x9b\x9e\xcd\x66\x1c\x49\xf4\x34\x5d\x75\x5d\xf5\xb5\x1b\xfb\x3e\xe3\x3d\xc4\x14\x05\x89\x71\x61\xac\xe8\x16\xde\x10\xab\x28\xcc\x72\x4f\xae\x84\x6c\xc4\x5b\x63\x9a\xad\x69\x34\x6b\xb2\xd8\x9b\xc9\xc1\xf1\xd1\xc9\xfb\xf7\xcf\x9e\x9b\xcb\x0c\x81\x51\x05\x33\xaf\x12\xd5\xb5\x99\x4b\x33\x0d\xfe\xdc\xd4\xf4\x9e\xaa\x7b\x21\x6f\x2d\x17\x6b\xae\x6b\xeb\xde\x55\xa5\x6d\x61\xbf\x1f\x77\x6c\x27\x03\xf7\xa5\x27\x16\xbd\x60\x50\x6e\xd7\x41\xb0\xca\x7a\xf4\x73\x4a\xe9\x9c\xce\x83\x71\x99\x6e\x5a\x71\x5e\xa3\x8c\x61\x7f\xe7\x17\x0c\xa6\x6f\xf4\x6b\xa3\x2a\x60\x2f\x3f\xe0\x8d\x52\x7e\x61\xb0\x26\x48\x45\x26\xb6\x8d\xa4\x9a\xe3\x64\xc9\x32\xcb\xf3\xd7\x0c\x2d\xb0\x71\x5a\xf4\x39\x93\x8b\x23\xb3\xca\xb5\x00\x31\x59\x1a\xd4\x81\xda\xe9\xd8\x19\x46\x8f\xd7\x61\x88\xc4\xd4\x7e\xb6\xdb\x5a\x7f\x9e\x91\xb5\x51\xd5\xeb\x3d\xe3\x26\xc6\x7e\x34\x28\x21\x0c\x6b\xdb\x5d\xec\x5c\x64\xac\x45\xa1\x6f\x8a\x02\x4e\xf8\xab\x6d\xeb\x49\x49\x8d\xe8\x4c\xaf\xf6\x56\x6b\xc8\xc5\xf4\xb2\x80\x29\xcf\xa7\x77\x01\x80\xf3\x1c\xb1\x76\x22\xe9\xf7\x77\x33\x42\x73\x5f\x62\x73\x6b\xbc\x91\xd4\xda\xb9\x95\xda\x4c\xc3\xe3\x53\x26\xf8\xee\xee\x76\x26\xca\xb4\x4b\xd3\xaa\x22\xc1\x5f\x88\x7b\xbe\x14\xc9\xfc\x54\x8a\x6b\x49\xb3\x2c\x0c\x59\x87\xfb\xad\xb5\xfb\x1a\x40\x57\x99\x4e\xa5\xac\xce\xf8\x61\xdd\xae\x7a\x63\x52\xaa\xa7\x3f\x6d\xab\x59\x85\x09\x60\x9b\xf0\x94\x2e\x2f\xc4\x2d\xe5\xc6\x1a\xa3\x7a\xf5\xd7\xd2\x3a\x6e\xeb\x19\x1b\xb1\xc8\x6c\x60\xa4\x17\xbc\xaa\xf6\x2b\xae\xb9\xc1\xe5\xd6\x3f\xbd\x89\xf7\xad\xe7\x9c\xcf\x91\xbd\x10\x07\x3f\x31\xb2\x6d\xb2\x25\x71\x90\xac\xd7\x4b\x66\x39\xf5\xc3\xcf\x07\xf7\xf7\xf7\x5a\xce\x5b\x1d\x6c\xe4\xd2\x32\xbc\xf3\xa0\xa6\x4c\xfc\xc1\xa9\x2c\xfb\xed\x05\x83\xcd\x9a\x6d\x24\xb5\x19\x20\xab\x89\x68\x25\x12\x77\x5f\xed\x67\x06\xbf\x32\xb2\x4d\xe6\xc9\x5a\x51\x19\xa3\xce\xd3\xf2\x26\xdf\x54\xf3\x15\xf5\x8a\x85\x61\x69\xc9\xe0\x74\x4b\xc6\x98\x61\xaf\x91\x95\xd5\x11\xbd\x62\x7a\x4f\xa3\xff\x87\xb6\x67\x6d\x6a\x23\xd7\xf2\xfb\xfe\x0a\xa3\x9a\xb8\x5a\xd7\xc2\xb1\x0d\x61\xa0\x8d\xd2\xc5\x10\x32\xc5\xde\x24\x70\x93\xcc\xde\x7b\xc7\xe5\x4a\x09\x5b\x80\x12\xbb\xdb\xa3\x96\x4d\x58\xbb\xff\xfb\x96\x8e\x1e\xad\x7e\x40\x66\xa7\x76\xbf\x40\x4b\x2d\x4b\xa7\xf5\x38\xe7\xe8\x3c\xff\x29\xe8\xdf\x05\x26\xff\x14\x98\x28\xc9\xd2\x5c\x4f\x80\x1d\x24\x9e\xb4\x32\x3c\xff\xad\x51\x0d\x3a\x9b\xcd\xf8\x4a\x21\x4c\x4c\xb1\xf2\x65\xf6\x4c\x79\xd6\x50\xe1\xdd\xae\xd4\x21\x7a\x7b\x1b\x5b\x59\x2f\x1b\x43\x8b\xb2\xfc\x56\x2c\x78\xd0\x7a\x91\xdd\x80\x42\x31\xae\xf7\x68\x8d\x60\x12\x67\xf7\x12\xb7\x6a\x44\x15\x4e\xa2\xff\x04\x90\x7f\xb8\xf8\x63\x7d\xf9\xcb\xb9\xa2\x6b\x75\xbb\x7f\x0c\x6e\x89\xa5\x22\xb5\xae\xc0\x6c\xeb\x55\x1f\xe8\x46\x27\x4d\x25\x67\xac\x8a\x69\x38\xf9\x96\x94\x4f\x6a\xdc\x4d\xd3\x26\x07\x10\x8c\x55\x9b\xae\xf4\x28\xa5\xb4\x3e\x08\x35\x04\xbd\x1b\xaa\x11\x0f\x48\x15\x55\xc7\xe8\x5f\x9f\x3e\xbe\xdd\xff\x7c\xf5\xf7\x8b\x0f\x88\x54\xf1\x74\x8c\xfe\xb5\x1f\xbe\x5d\xb2\xef\x76\x95\xdf\x19\x87\x90\x7d\x08\xcc\x15\x50\xfe\x56\xed\xfd\x6b\x3a\x1a\x0c\xba\x5d\x75\x7a\x30\x18\x14\xc5\xf8\xdf\xc2\xdd\x1f\xe8\x76\x96\x2d\x97\x59\x0a\xc9\x05\xf8\x4a\xc5\x8d\xb9\x23\x1d\xcd\xf0\xbc\x5c\x2d\x98\x48\x49\xe7\x6f\x2f\xff\x86\x8a\x22\x54\x38\x4f\x90\x41\xf1\x26\x13\x00\x22\x26\x7b\xc9\xb4\xca\x17\x96\x03\x4e\xd4\x94\x6e\x0b\x8b\xf2\xcb\x3e\x56\x46\x54\xb4\x5a\xc3\x5f\x3d\x7b\xcf\x77\xb1\x12\x7d\x30\x44\x89\xfe\x21\x7c\x76\xfb\xdf\x05\xfd\x77\xa0\xe4\x83\x3d\xbf\x7d\x16\xd3\x01\x56\xbf\xbc\xb5\x47\x8d\xcf\x23\x83\x0b\x38\x6b\x0d\x19\xc0\x20\x27\x9f\x9f\x39\xff\x04\x7a\x09\x73\x35\xa3\x4b\x61\x83\x89\x96\x0d\xf5\x8e\xad\x1d\xea\xb0\x1b\xff\x25\xbe\xaa\x6f\x96\xc4\x76\xeb\x3f\xda\xde\x4e\xa6\xd5\x7a\xfc\xe3\xb5\x20\x6d\xb3\x4b\x90\x19\xa5\x32\xcd\xdc\x47\x01\x2d\xc7\xe5\xe0\xc9\xa5\x2f\x88\x06\x35\xee\x76\xbf\x0b\xf7\x8c\xa3\xa6\x53\x37\xaf\x4d\x18\xf7\x13\x63\x9e\x08\x6f\x9f\x18\x73\xe0\x20\xa5\x72\x6b\x46\x9a\x3b\x11\x71\xcd\x05\xd8\x5e\xbb\x5d\xee\x29\xb4\xe6\xca\x7c\x21\x18\xae\x52\x45\x82\xf2\x73\x00\x60\x4c\xca\xb0\xf9\x80\x57\x6c\xe4\x1c\xc9\x6a\xc2\x71\x4e\x41\x25\x65\x1d\xe5\x20\xd9\xfa\x04\xad\xe5\x02\x11\x64\x96\x0a\x26\x5b\x23\x3c\x44\x90\x06\x01\x4d\x49\x46\x27\xc8\x8e\x6e\x05\xad\x4e\x98\x89\xa6\x44\xd0\x09\xb2\x57\x63\x44\x6c\x4f\xf5\xad\x53\xad\x32\x30\xfb\x71\xca\x4b\xa9\x6e\x66\xd0\x0d\x22\xa8\xc6\x22\xe9\x81\xcd\xfa\x81\xa0\xb4\xe4\x72\x10\x41\x55\xcc\x64\x2b\x4a\x74\x84\x08\xaa\x33\x13\x50\x55\xe7\x65\x8c\xc0\xb6\x82\xa9\x10\x41\x55\x44\x65\xda\x7c\xe4\x73\x21\xf9\x4c\xe9\xe2\xbd\x52\x2b\x10\xa4\xda\xe7\xdc\x15\x82\x33\x8b\x08\xca\xb3\xd9\x37\xae\xae\x99\xba\x47\x15\xe3\x99\xb4\x16\x9a\xc0\x07\x75\x34\xb6\x17\x52\xe3\x0d\xfd\x8c\x6b\xd8\x27\x64\x70\x53\x6b\x32\x63\x49\x0a\x9f\x40\x20\x96\x49\x0a\x18\xc7\x9b\x92\x45\x6a\x92\x4e\x21\x4e\x8c\x63\xb3\x61\x98\x74\x6a\x9a\xea\xa7\x2a\x65\x7a\xa6\x9b\xa0\x07\x05\x96\x66\x11\xb4\x73\x4a\x92\x10\x50\x51\x05\xf4\xa9\x91\x9f\xed\x6f\x6c\x24\x3c\xa9\xbb\x0d\x67\x38\x48\xeb\x3d\xab\x24\x2c\xe2\xcf\xa5\x53\x06\x73\x1d\xe6\x6f\xe3\x2a\x8c\x76\x10\x80\x3c\xfb\x3f\x00\x99\xc8\x80\x01\x4c\x99\x97\xd4\x59\x8b\xff\xdc\xa9\xad\x45\xaa\xb8\xd4\x44\x2c\xd3\x74\xcd\x5d\x9d\x53\xfe\xd0\x79\x14\xc4\x5f\xce\x4d\xb9\x28\x52\x56\xf1\xdf\x37\x4a\xa3\xf0\x3b\x9b\xa4\x3e\x89\x14\x0d\x93\x29\xe8\xd3\x8f\xfb\x6b\xb9\x08\x6a\x07\xd3\x18\x92\xef\x6d\x0b\x12\x29\x2a\x59\x54\x01\x95\x28\x8c\x2d\x1e\x4f\x1c\x42\xa7\x81\xdc\x29\xb8\x39\xc5\x95\x1f\x36\x7f\xd4\xf2\xb6\xde\x81\x6b\x0b\xc4\xc0\x86\x70\x9a\x70\x66\x19\xf5\x29\x91\x8d\x0c\xf9\x0a\x83\x49\x45\x63\x3a\xdd\x04\xb5\xa7\x8f\xe6\xfd\x75\x9a\xdf\x8b\x5b\x15\xa9\xbe\x37\xa2\x22\x2e\xdc\x19\x9f\x97\x19\xc8\x6b\x7d\x5a\x74\xfc\x44\xa7\x46\xf4\xfd\x64\x8f\x63\x97\x3a\x72\x8c\x25\x95\x86\x0c\xf1\xbe\x81\x43\x93\x1d\xfb\xe4\x77\xa5\x2c\x48\x65\xcd\xef\xb8\xfa\x4d\xb6\xca\x61\x5b\xd7\x8d\xcc\x35\x69\x5f\xcb\xc5\xb3\xb2\xc0\xa6\x86\xe4\x4f\x30\x4b\x04\xd9\x84\x83\x75\x9e\x27\x84\x57\x63\xaf\xaa\x4c\x38\x34\x65\xb3\xeb\x13\x79\x6e\x42\xc2\x16\xdc\x9a\x1d\x10\x2b\xb2\x96\x0b\x30\xf2\xfc\x2b\xac\xd7\x73\x60\x04\xe1\xe3\xda\x01\x49\xdb\x00\x21\x20\x5a\x93\xa1\x57\x4c\xc6\x68\xca\xca\x73\x2e\xca\x73\xee\x82\x80\xab\x42\xb0\x96\x9b\x54\x53\x7f\x8b\xce\x81\x5e\xa0\x5e\x14\xfe\x3e\x41\x71\x07\xf5\xc2\x9a\x18\x96\xa7\xd2\x69\x69\xc3\xe6\xc2\x6e\x32\x46\x45\x00\xd7\x8c\xb9\x9b\x80\xbf\xac\xef\x05\x77\x01\x6f\x67\x10\x78\x33\xf3\xef\x7c\xb6\x56\x99\xec\x2c\xd7\x39\x04\xa8\x63\x5e\xb5\xdd\xb7\xc1\xe9\x78\x33\x4e\x71\x4b\x4a\x78\xcd\x72\x28\x37\x5f\x36\x94\x94\xaa\x21\x67\x1b\x3e\x72\xb7\x8b\xdc\x23\xf4\xc6\x0c\xd7\xe4\x2b\xb1\xcd\xa4\x5e\x09\x65\x55\x65\x86\x6b\x92\x6a\xbb\xba\xf0\x63\xf3\x99\x41\x4d\x41\x66\xcc\x46\x02\x69\x04\x4d\xb0\xe7\x6f\xab\x34\xf9\x06\xf4\x3b\x63\xb5\x94\xf6\x14\xcc\x8f\x0d\x95\x8f\x95\x4d\xd8\xb5\x66\x74\x16\x4c\x7c\xce\xaa\x36\x37\x19\x33\x31\xa3\x84\x88\xb2\x16\x54\x4e\x78\x48\x8e\x8c\xd5\x74\x24\x49\xd8\x94\x70\x38\x09\xfe\x1d\xd7\x94\x06\xdc\xc7\x18\xcd\x59\xf4\xbb\xc0\xe3\x5b\xd6\x07\xa3\x01\x9a\x31\x72\xcb\xac\x4e\xb7\x0d\x65\xe4\x2c\x92\x2c\xba\x65\x15\x4c\x5f\xe8\xdf\x98\xbd\x48\x19\x2b\x0b\xc0\xc8\xd0\x35\xd4\x88\xdc\x36\xb8\x13\xba\xc8\x16\x8b\xb6\xee\x1d\x9e\x76\x7e\x11\xb7\xac\x9f\xaf\x24\x67\xf3\x1f\x65\xd0\xaa\x79\x7f\x81\xa0\x94\xbb\x94\x68\x0b\x46\x6f\x19\x59\xe9\xbf\xe3\x85\x07\x9d\xae\x18\xbc\xbd\x67\x74\xc1\xc8\x9c\x35\x65\x18\x55\x3f\x26\xb2\x61\xb4\x92\x94\x98\x3c\xb2\xb6\xbc\xcf\x0a\xe2\xa9\xd2\xc1\x98\x9f\x8e\x5e\x1d\x8d\x7b\x3d\x8e\x95\xd5\x17\xbe\x40\xbd\x28\xe2\xa7\xc3\xa3\x04\x0d\x4c\x78\xc2\xc0\x5c\x7a\x78\x04\xba\x82\x40\x25\x13\x86\xe6\xc3\x64\x59\xe7\xcb\x4b\xeb\x2a\xb8\x25\xc0\xcd\xd5\x7c\x83\xcf\x08\x68\x16\x12\xa6\x03\xc7\xc0\xb9\x0f\xc6\xe9\xa9\xf7\xf5\xea\xf5\x52\xfc\x34\x4b\x12\x10\x94\x3b\x46\xb7\x60\xf0\xf6\x39\xb3\x8e\x36\x4b\x46\x58\x9e\x8b\xbb\x7a\x84\x40\x67\x92\x57\xe5\xaf\x24\x9f\xaf\x67\x95\x33\x1e\x22\xf6\x89\xd4\xec\x91\x9c\x12\x55\x60\xa2\x4c\x72\xbe\x1b\x91\xf2\xd6\xae\xc3\xe4\xaf\xdc\x26\xf2\x63\xb5\x98\x66\x41\x26\x8a\x6d\x76\xf3\x35\xde\x66\xb1\x2a\x20\xf9\x6b\x8c\x32\x54\x68\x8e\x60\x32\xb5\x93\xc1\xc3\xc9\x08\xc2\x0b\x6b\xce\x57\xd0\xac\x9f\xdd\x7c\x9d\x40\x58\xc4\xd5\x94\xb0\x0a\xdf\x08\x8c\xe4\x60\x3c\x3b\x65\x65\x17\x33\x1f\x2a\x6c\x32\x9b\x92\x9c\x8a\xc9\x7a\x3a\x6e\x38\x4b\xe4\xde\xdb\x2c\xb7\x7e\xd6\xd2\x73\x98\x39\xe4\x87\xb6\xa6\xda\x1a\x78\x61\x00\x5f\x17\x2e\x73\x65\x94\x97\xd9\x14\xeb\x5f\x3d\x56\xde\xfa\x6e\xec\xc3\x81\xf5\x57\xd9\x2a\xd2\x38\x84\xc3\xd7\x70\xf3\x35\x90\x4c\x87\x45\x12\x07\xf1\x21\xf5\xb4\x64\x74\x30\xce\x4a\x6f\xcb\x5e\x2f\x2b\xf7\x88\x04\xed\x54\x6a\xc0\xd0\x05\xcd\x9d\x04\x7d\xd2\xb4\x28\x0a\x88\x04\x5f\x10\xa3\x97\x6e\x78\x70\x38\x0d\x6f\xa9\xc6\xec\xbd\xbc\x23\xa8\x63\xb2\xfb\x20\x91\x67\xfb\xc7\xc7\xaf\x4e\xf6\x87\x60\x1c\xe1\x0c\x48\xd3\xc0\x8f\x61\x32\xd8\x3f\x61\xfb\xb7\xd3\xed\xa8\x78\x79\x27\xc8\x3a\xe5\xf9\x8c\xad\x78\xc5\xf6\xb8\x45\x29\x1e\x46\xc6\xf6\x51\x3a\x0a\x62\xe4\x6f\x0d\x30\xad\x57\xad\x4f\x1a\x54\x75\x8a\xa0\xa0\x4c\x46\x39\xe4\x2a\x0d\x39\xe7\x94\x9a\xfc\xa5\x4f\x4a\x42\x15\x8e\x1b\x79\xc3\x15\xc8\x91\x7d\x48\x28\x4c\x9e\x9a\x05\xf3\xa1\x51\x1a\x7a\x75\xac\xfd\x74\x1c\xc2\x74\xb4\xdc\x61\xd0\x8b\xd1\xd1\x8b\xd1\x01\xea\x81\xdc\xee\x32\xd5\xfc\xab\x71\x4b\x18\x61\x32\x3c\xc2\x3d\xf4\xe2\xe0\x17\x04\x99\xdb\xfd\xfe\x47\x88\x08\x3a\x18\x8b\xd3\xb4\xdc\x08\xde\x62\x23\x0d\x83\xca\x08\x3c\x3e\x7c\xa5\x2f\x49\xbb\xdd\xe1\x91\xf9\x7f\x62\xcb\xc3\x91\xad\x60\xaf\xe9\xe1\x71\xb7\xcb\x4e\xe9\xab\x9f\xa1\x74\xf4\x0a\x4a\x27\x26\xc4\xcd\xc9\xcf\x50\x1a\x8e\x46\x49\xd6\xb3\xbd\x43\xcf\x31\x3b\x1d\x8e\x8e\x75\xe5\x23\x9b\xb0\x69\xcc\x4e\x47\x83\x43\x57\x1e\x9e\x8c\x76\xec\xf5\xeb\xa3\x69\x4f\x17\x46\xc7\xbb\xa3\x83\x2e\xb4\xb1\xf1\x70\xd8\x6b\xfa\xea\xe7\x83\xc3\x43\xdb\x7c\x34\x3a\xd4\xcd\x87\x23\xdf\x5e\xff\xb8\x7b\x74\x50\xfb\x7d\x24\x7a\x74\x48\x18\x85\x00\x37\xbd\x28\x1a\x0e\x46\x07\x5d\x86\x4f\x4f\x87\x83\x1d\x3c\xd7\xbe\x1e\x13\xdb\xff\xe1\x00\xfa\x3f\x0e\xfb\x1f\x8e\xc2\x01\x5a\x07\xf4\x67\x39\x7b\xd6\x63\xd5\xb8\x1f\x34\xdd\x7a\x71\xb7\xbb\xb7\x17\xd5\xbc\x56\xff\xd7\xee\xa8\xe0\x46\x68\xcc\x4e\x9e\x73\x5e\x34\x2d\xfe\x8c\xc4\x5f\xa3\xf1\x25\x7b\xbc\xe1\xef\x2b\x99\xfc\xac\xa3\xf2\x86\x41\xa6\xa3\x92\x82\x79\x74\xac\x4a\x2f\x6f\x3a\xc4\x16\xe1\x59\x09\x42\x40\x91\xdc\x81\x30\xe3\xd4\xdd\xde\x82\x38\xcb\xb2\xe2\x16\xdf\x98\x3e\xe9\xc0\xe1\xd8\xa5\x26\x92\xd8\xa7\x3c\xdb\xe3\x2d\x33\xee\x1c\xa4\x26\x9c\xc8\xe9\x38\x02\x25\x50\x85\xf8\xee\x76\xa9\x66\x60\xb2\x87\x6b\x37\x37\x39\xde\xed\xf6\xe6\xcc\xcc\x4c\x23\xb9\x9d\x04\xdd\x88\x26\x80\x74\x6f\xe0\x77\x03\x2f\x7e\x0c\x80\x27\x85\xd2\xc5\x7e\xf6\x66\x5d\xf0\x49\xdd\xee\x1e\x60\xf8\x6e\x37\xca\xe8\x92\x81\x9f\x1c\x26\xf6\x15\xbc\x49\x22\xd9\x72\x2d\x95\xd6\x18\xc1\x81\x0c\x79\xc8\xac\xaf\x13\x9f\x64\xd3\xb1\x68\x71\x14\x14\xdd\xae\x7c\xc2\x7f\x30\x9b\x52\x15\x09\x58\x94\xd8\xcf\xb2\x89\x12\x01\x2f\x25\x44\x21\xf7\x89\x8e\x81\xba\xca\x16\xae\x81\x97\x19\x37\x35\xf1\x71\xdf\x1a\x82\xe9\x46\x83\x00\x2f\x02\x06\xd4\x15\x02\xe4\xad\x19\x2e\x0a\x72\xc3\x9e\x8e\x6b\xf8\xc0\xa8\x75\xa8\xbb\x60\x74\xfb\xf1\xed\xf9\xf0\xe7\x83\xe3\x18\xd9\x07\x44\x3e\xbe\x3d\x3f\x38\x39\x3e\x82\x1a\xfd\x80\x0a\x72\xc5\xe8\x1d\xeb\x1b\x5e\x28\xda\xba\xe8\x0c\x17\xac\x6f\x9b\x10\x30\xeb\x57\x8a\xcb\x3c\xf6\x3d\xb6\x70\xb3\x37\xcc\x39\xca\x3f\x30\x70\xe7\x2b\xfc\x68\x2d\xad\x3d\xb1\x28\x8a\x82\x5c\x30\x4c\x3e\xfd\x98\x7f\xfd\xc2\xe8\xf6\x46\xb2\xd9\x37\xae\xda\xb5\x27\x3d\x34\x99\x22\xe0\xa8\x96\x2c\x06\xb9\x39\x43\x44\xa4\x73\x31\xab\x64\x79\x0d\xdd\xcb\x7a\x68\x82\x7a\x1c\x92\x37\x12\xc9\x57\x9c\xa9\xd6\x9e\x8b\x82\x7c\xad\x73\xcf\xdf\x59\x3d\xfd\x22\xec\x0c\x72\x5e\xe7\x73\xbf\x33\x17\xba\x8d\x7c\xd5\x5b\x37\xe1\x31\x64\xc6\x26\x9f\x19\x05\xd3\xb5\x10\x07\x79\xaf\x3f\x72\xc6\xe8\x95\x67\xf6\xc9\xb5\xe6\x60\xe7\xf3\x7f\xac\xb9\x7c\xbc\x96\xfc\x56\x7c\x8f\xf7\x86\x04\x8e\xe9\x9b\x4c\xe5\xba\x60\x95\x67\x31\x32\xda\x33\x57\xfe\xc4\x53\x25\x52\xbe\xd0\x4d\xe6\x7c\x21\x96\x42\x71\x19\xa3\x2e\x72\xac\x03\xb8\x19\xe8\x27\x19\xdf\xb1\xbe\x79\xb4\x35\xff\x05\x19\x72\xaf\xd2\xc5\xa3\xfe\xb5\xd9\x09\xf1\x19\x2b\xf7\x44\x7c\xc5\xfa\xe5\x06\x99\x9c\xb1\xa9\x9f\xf0\xbd\x21\xc9\x9d\xc0\xe5\x09\x17\xf6\xce\x67\x56\x62\xdb\xfc\x9b\x58\x7d\x58\x2f\x16\xe6\x97\x4a\x8a\x99\xd2\x45\x88\x9c\x2f\xd2\x3b\x88\xbc\xfe\xae\x9c\x5b\x87\x26\x4d\x20\x95\x6a\x32\x48\x73\xc8\xe6\x64\x43\xf9\x13\x71\xd6\x66\xc9\x86\xce\x22\x49\x36\x38\xde\x84\x5e\xe3\x1a\xd0\x64\x43\x6f\xa3\x0d\x76\x3b\xc8\x28\xca\xbf\xb2\x68\xa3\xf1\xd0\x46\x9f\x16\x47\x18\xa2\x4d\x1b\xbb\xd2\x51\x8d\x1e\x6f\x21\xe0\x40\x81\xb1\xb5\xab\x24\x08\x63\xe2\x43\xf9\x68\x54\x95\x39\x3c\xcf\xba\xdd\xbd\x55\xc2\x22\x49\xae\xdd\x62\x48\x72\x4f\xd0\x37\xfe\x88\x70\x2c\xc7\x1b\x8a\x50\xd1\xa2\xe1\x8c\xe6\x74\x83\x77\xbb\x46\x74\x81\xf9\x6e\x87\x6e\xb2\x6c\xc1\x59\x5a\xad\xac\x33\x7f\xd0\x50\xdc\x89\x54\x55\xea\xee\x58\x49\x67\x37\xd8\x43\x99\x4c\x16\xd1\x2a\x91\xf1\x13\x80\x1a\xff\xd3\x45\xc4\xa2\x4d\xed\x35\x04\x57\x42\x18\x4f\xe3\xc9\x22\x92\xae\x9d\x0b\x20\x84\xb1\xb1\x7f\x7c\x24\x4b\xc8\x15\x7d\x5b\x46\x03\xda\xb8\xb1\x97\xba\xfa\x2b\x8b\x66\x18\x3f\xd2\x59\xe9\xa4\x7b\x57\xb9\xdd\x6c\xf0\xf8\x91\xae\x93\xbb\x7e\x9e\x49\x15\xad\x71\x7c\xe7\xfd\xba\x4d\x48\xa3\xc7\x92\x31\xbc\x31\x1b\xe6\x81\x3e\x4e\x6e\xa6\xe4\x82\x6e\x26\x0f\x30\xf6\x9e\x30\x01\xdf\xf7\x28\xbd\x30\x4d\xae\x28\x6c\x84\xa4\x2d\x00\x54\xa2\x09\xcf\x03\x8e\x65\x2c\x7b\x51\x9e\xa0\x3e\xea\x3d\xc4\x1a\xbf\x3c\x68\xfc\x82\xc7\xe7\x2c\x5a\x12\x15\x5d\x90\xab\x27\x76\x2d\xf6\xd6\xd1\xcb\x82\x7c\x60\xb4\x41\x6a\xeb\x18\xb1\x8a\x90\x6a\xd6\x3f\x36\x0b\x87\x22\x59\x3d\x6d\xe3\x9e\xf7\x6b\xbb\x66\x63\x1f\x76\x85\x2a\xb7\x4c\xdd\x6e\x79\xa9\x2e\xeb\xda\x04\x69\xee\x6d\xbb\x40\xed\xc2\xbc\x04\xb7\x4f\x95\x3d\x21\x51\xa3\xaa\x6f\x11\xd5\x6e\x77\xcd\xdc\x73\x25\x53\xaa\x6f\xd1\xed\x5a\xdc\x56\xab\x0c\xae\x1b\xe1\x9b\x76\xa8\x3e\xdf\xf3\x8e\x6d\xd0\x31\xf2\x5c\x2f\xf0\xe3\x02\x82\x23\xc2\x18\xa4\x53\xf6\x4a\x3a\x99\xec\x94\x76\x26\x4e\xb0\x57\xa2\xe7\x1a\xb8\x06\x23\x9a\xb9\xfe\xe4\xd8\xa6\x10\x51\x12\xdf\xa6\x1d\xc6\xdf\xd2\x6f\x69\xf6\x90\x76\x4c\x23\x07\xe6\x4a\x66\x1b\x31\xe7\x73\x3d\x77\xd2\x0f\x53\x98\x1b\x5d\x15\x11\x4b\x7d\x0f\xbe\x66\x56\x31\xe4\x92\x43\xb5\x1a\x2e\x99\x26\xbb\xdd\x57\x16\xb9\x02\x36\x1c\x97\x2f\x92\x3a\xe9\x69\x62\x14\xd5\xaf\x36\x49\xea\x15\xf1\x35\xab\xd5\x04\xd4\xab\x0c\x40\xd4\xf7\x95\xc9\x35\xeb\x07\xf4\x6d\x2f\x78\xe5\x49\x1d\x6f\x10\xb9\x36\xc8\x6a\x6d\x92\x46\x4d\x5c\x6e\x3c\x57\x15\x90\xca\x00\x38\x5f\xa9\x81\x2b\x5b\x04\x2f\x1c\x51\x6d\x83\xc3\xbc\x4a\xdc\x43\x7c\x5d\xa3\xb6\x32\x6e\x5d\x20\xfb\xd2\xff\x4e\xc6\x01\x46\x6d\xd0\xe9\xa7\x07\x2e\x1b\x25\xcd\xaa\xb2\xcf\xb2\x8e\x98\xe5\x8f\xb3\x80\xde\xa7\x35\xa2\xde\x0a\x71\xa5\x49\x52\x2b\xeb\x91\x2a\x15\x01\xe5\x6f\x03\xde\xbf\x4d\x82\x67\xe8\xc4\x15\x88\x46\xf1\x4f\x40\x92\x49\x95\x98\x7f\xc6\x5c\xb8\x85\xb1\x68\x1d\xb4\xd1\x2c\x69\xab\x04\x30\x1a\xb5\x20\x42\x1a\xb7\xc0\x93\xd9\x03\x95\xa4\x34\x1a\x10\x57\xc2\x11\x42\x9a\xd1\xff\xca\x22\x5f\x65\x72\x25\xb9\x92\x71\x09\x20\xcc\x92\xc4\x66\x30\x58\x97\x97\x84\xba\xf4\x6c\x08\x8d\x85\x11\xab\x82\xd8\xf3\xad\xc1\x23\x22\xed\x7c\x61\x49\xa5\x2e\xe6\x1a\x7f\x1a\x96\x0d\x89\xb4\xc3\x13\xde\xb7\xc5\xc4\xd7\xc7\xc8\xf0\xc6\x28\xf6\x55\x63\x13\xb8\xee\x0b\x9b\x88\xe9\x58\xee\x76\x91\xac\x50\xdf\x14\xc2\x51\xe8\x69\xef\x76\xa5\x21\xc1\xa6\x58\xca\x68\xd6\x74\x30\x5e\x87\x72\x3a\x1b\xf1\x2d\xa7\x72\xb2\x9e\x8e\xb3\x72\x7d\x8d\xb4\x51\x7f\xdd\x24\x9f\xee\x76\xe7\x2c\x62\xe4\x1d\x8b\x74\x89\xe4\x64\xa6\x07\x6a\xac\x01\x09\x7e\x4f\x32\x77\xf4\x32\x7f\x84\x60\x33\xb8\x09\xb6\xa0\x92\x2c\x40\x31\x59\x6d\x93\x66\x25\x7a\xf5\xfd\x05\x47\x25\xf3\x44\xc7\xd8\x26\xdd\x3a\x1f\x9a\xac\xc4\x0d\x98\x2c\x28\xb8\xe0\x64\x75\x64\x09\x01\x34\x50\x99\x85\xa0\x86\x8c\xba\xdd\xba\x60\xd1\x37\x49\x16\x3d\xaa\x89\xe2\x31\x35\x42\xb2\xe1\x60\x30\x38\x78\x71\xf0\x4b\x17\xc5\xe5\x9b\x8b\xd1\x8b\x93\xf3\x17\x27\x07\x5d\x54\x46\x62\x7c\x3d\x48\x16\xbd\xdb\x18\xa1\x02\x93\x6f\xac\xc5\xbf\x93\x08\xbc\x35\x91\x48\x02\x65\xb5\x35\x4b\xf0\xd7\xf4\xea\x9a\xfb\xae\xbb\xdd\x88\x51\xde\x43\x09\xea\x7d\x60\xb0\x19\x64\x72\xcf\x26\x6a\x1a\x31\x22\x89\xc0\x31\xa8\x55\x35\x4a\xf5\xd5\x02\xc7\xee\xf1\x03\x8b\x32\x4c\x84\xbe\x41\xb2\x96\x3c\xb1\x8d\x88\x3c\x7a\x3c\x4f\x7d\x43\x15\x7f\x52\xd1\xf7\x6f\x0b\x10\x21\xff\x64\x3c\xa2\x12\xff\x14\xeb\xe3\xa7\x5f\x58\x1b\xfa\x8c\xa2\x97\x6c\x25\x5e\x6e\x06\x2f\xd9\x6c\x96\xad\x53\x95\xfb\x87\xfd\x85\xc8\x15\x22\x82\x6e\x0b\xc2\x82\x50\xc1\xa5\xc1\x44\xff\x26\x9b\x3f\x42\xec\x14\xf3\x18\xd8\xdb\x9a\x8a\xa4\x66\xb6\x14\x78\x3b\xbf\x17\x79\x2e\xd2\xbb\x8e\xe4\x7f\xac\x85\xe4\xf3\x4e\x07\x14\xd7\x5c\x23\xde\x8e\xfe\x2d\x32\x69\xab\x7e\xfa\x03\xf6\x8e\x7b\x97\x77\xbb\x15\x7d\x45\xe3\x3d\x6e\x57\xdd\x0b\xb0\xb4\x69\xb4\x9e\x28\x30\x25\xfb\xc6\x22\xab\x73\x96\xbd\x8c\x28\xe0\x57\x53\x8c\x0b\xf2\x9e\xd1\x6d\xca\x96\x3c\x5f\x31\x93\xa2\xc6\xa6\x74\xb2\xc9\x5f\xcc\xd1\x12\xa9\x50\xe6\xf4\x40\x62\x28\x37\x7f\xf1\xb6\x28\x88\x49\x18\x9a\xfb\x1f\xb4\x5d\xa1\xac\x43\x43\x41\x44\x7e\x19\x74\xd5\xda\x34\x18\x0b\x3a\x3f\xb3\x83\x7d\x02\x07\x86\xb6\xdf\xd8\xe9\x82\xbb\x48\x1e\xa9\xbe\x03\x0f\x42\x2e\x42\xe3\x3c\xde\x2e\x32\x36\x3f\xaf\x43\xa8\x59\xeb\x68\x40\x14\x18\xff\x09\x85\x23\xf4\xee\xea\xec\xcd\x97\xf3\xab\x0f\x6f\x2f\x7f\x45\xa0\xd1\x29\xc1\x69\x1b\xfa\x0f\x19\xfd\x2a\xfb\x4b\x26\xbf\x95\x8b\xd1\xe1\x65\xda\x3c\xb7\xa3\x7e\x95\xfd\x07\xc9\x56\x55\x0d\x2c\xa8\x48\xc6\xd8\x46\xf4\xe4\xfd\x95\xe4\x1b\xca\x21\xe3\xae\x89\xe9\xd9\x19\xf8\x98\x9c\xd4\xc1\x08\xd1\x11\x5d\x36\x42\x62\x5a\xd3\x03\x92\xda\xa4\xab\x6e\xb6\x90\x09\xde\xd9\x39\x88\x65\x84\x3e\x5d\x7c\xfe\x72\xf9\xe1\xf2\xf3\xe5\xd9\xbb\xcb\xdf\x2f\xde\x40\x90\x61\xf3\xfa\x30\x86\x10\x9f\x3c\x9d\xfb\xf0\x9f\x1c\x72\xf6\x47\x90\x08\x07\x8c\xf0\x70\x84\x0b\x52\xe9\xfc\xaf\xcc\x84\xb9\x23\xfd\x7f\xcf\x87\xcb\x5f\x9b\x93\x37\x0c\x78\x5e\x99\x65\xea\x57\x53\x85\xdd\x6c\x1d\x92\x8f\x2c\xda\x3a\x7c\x91\xf5\x7d\x9a\x23\xb8\xca\xd8\x8c\xd9\xfa\x80\xea\xfd\xed\x27\x6a\x34\x80\xcc\x1a\x82\xf2\x7e\xce\x53\x85\xad\xb7\x4e\x12\x31\x2a\xc0\xd6\xd1\xef\x3b\x62\xa7\xfc\xec\xfc\xfc\xea\xb7\x0f\x9f\x3f\x21\xc2\x76\xbb\xc9\x14\xe3\x38\x8d\x50\x7e\x9f\x3d\xbc\x77\x19\xc1\xb7\x36\x58\xc4\x5b\xe3\x14\xa4\xb2\x0e\xcc\x73\xc7\xf5\xd4\x47\xe0\xf1\x5e\xf5\x58\xb2\x9e\x4d\x68\xce\xd2\x3b\x2e\x51\x41\xb6\xfa\x23\x21\x37\x95\x81\xf5\xe8\x4f\x2e\x6a\x41\x96\x36\x4f\x78\x1e\x6f\x83\x8d\x5f\x3b\x20\xa5\xdb\x7f\x41\x6a\x3b\xa9\xd1\x32\x38\xbc\xae\xb9\x9b\x85\x46\x5b\xf7\x91\x94\x17\x61\x04\xb3\x37\x60\x72\x70\xcf\xda\x4d\xa1\xd6\x55\x2f\xcd\x20\x91\x34\xa0\x64\x67\xcc\x5b\xf1\x8f\x2c\x63\xf5\xaf\x73\x2e\xfb\x60\x12\x31\x96\xa0\xd8\x6c\x6d\x4f\xd1\x2f\x9c\x49\x2e\x3b\xa8\x94\x68\x07\x92\x70\xcb\x13\x5c\x5a\xc4\x19\x23\x7f\xe6\x88\x98\xc7\x88\x95\xa5\x59\x96\xc6\xe0\xb9\xb6\xbf\x99\x31\x39\x47\x36\x8e\xe3\xc5\x5c\x28\x93\xdd\x19\xac\x20\x72\x9b\x58\xcf\x91\x9f\x2d\x5b\xad\x2e\xd3\xdb\x2c\xbe\x64\x44\x66\x6b\xc5\xf3\x78\x62\x47\x2a\xfb\x5e\x31\x75\x1f\xa3\x97\x08\x34\xce\xa0\x52\xcc\x63\xfd\xc3\xf8\x27\x59\x14\x53\x92\xb2\xcd\xa5\xe2\xcb\xf2\x97\x67\x15\xa8\xde\x33\x05\xec\x50\x7c\xc9\xfa\xba\x6c\xc6\x89\x9f\x1c\xc5\xcd\x83\x6e\x3e\x27\xe8\x25\xc2\x7a\x90\x5c\x65\x92\xc7\xef\xc1\x89\x6f\xfc\x1f\xff\x13\x00\x00\xff\xff\xbd\x83\xc6\x8c\x0a\x0f\x01\x00") func init() { err := CTX.Err() diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 1af65aaca0..bc5eb3a8b0 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -2157,93 +2157,94 @@ var file_accounts_proto_rawDesc = []byte{ 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x61, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x8c, 0x04, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x0c, 0x4c, 0x69, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0xa1, 0x04, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, - 0x59, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x2e, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x61, 0x0a, 0x0d, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1d, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x0c, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x70, 0x0a, - 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, - 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, - 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x32, 0x1b, 0x2f, 0x76, 0x30, 0x2f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x2e, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x3a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x64, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x23, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x6c, 0x69, 0x73, + 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x59, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x30, 0x2f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, + 0x61, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, - 0x2a, 0x13, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x32, 0xac, 0x06, 0x0a, 0x0d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x57, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x0c, 0x2f, 0x76, 0x30, + 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x70, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x32, 0x1b, + 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x3a, 0x07, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x64, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x2a, 0x13, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x32, 0xac, 0x06, 0x0a, 0x0d, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0a, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, + 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x57, 0x0a, 0x0b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x13, 0x22, 0x0a, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3a, 0x05, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x64, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x32, 0x17, 0x2f, 0x76, 0x30, + 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x69, + 0x64, 0x3d, 0x2a, 0x7d, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x5e, 0x0a, 0x0b, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x63, 0x0a, 0x09, 0x41, + 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0a, 0x2f, - 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x64, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x26, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x32, 0x17, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x3a, - 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x5e, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x63, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, + 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, + 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, + 0x12, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, + 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x24, 0x72, 0x65, 0x66, - 0x12, 0x72, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, - 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, - 0x24, 0x72, 0x65, 0x66, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x24, 0x72, 0x65, 0x66, 0x12, 0x72, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index eec78a8d81..6f0e8ee6f3 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -43,8 +43,9 @@ func NewAccountsServiceEndpoints() []*api.Endpoint { return []*api.Endpoint{ &api.Endpoint{ Name: "AccountsService.ListAccounts", - Path: []string{"/v0/accounts"}, - Method: []string{"GET"}, + Path: []string{"/api/v0/accounts/accounts-list"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", }, &api.Endpoint{ @@ -183,8 +184,9 @@ func RegisterAccountsServiceHandler(s server.Server, hdlr AccountsServiceHandler h := &accountsServiceHandler{hdlr} opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "AccountsService.ListAccounts", - Path: []string{"/v0/accounts"}, - Method: []string{"GET"}, + Path: []string{"/api/v0/accounts/accounts-list"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ diff --git a/pkg/proto/v0/accounts.pb.web.go b/pkg/proto/v0/accounts.pb.web.go index 2a2b6d77cb..bc17a24d47 100644 --- a/pkg/proto/v0/accounts.pb.web.go +++ b/pkg/proto/v0/accounts.pb.web.go @@ -44,7 +44,7 @@ func (h *webAccountsServiceHandler) ListAccounts(w http.ResponseWriter, r *http. return } - render.Status(r, http.StatusOK) + render.Status(r, http.StatusCreated) render.JSON(w, r, resp) } @@ -149,7 +149,7 @@ func RegisterAccountsServiceWeb(r chi.Router, i AccountsServiceHandler, middlewa h: i, } - r.MethodFunc("GET", "/v0/accounts", handler.ListAccounts) + r.MethodFunc("POST", "/api/v0/accounts/accounts-list", handler.ListAccounts) r.MethodFunc("GET", "/v0/accounts/{id=*}", handler.GetAccount) r.MethodFunc("POST", "/v0/accounts", handler.CreateAccount) r.MethodFunc("PATCH", "/v0/accounts/{account.id=*}", handler.UpdateAccount) diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 84a4666f47..b33c42f6a8 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -18,7 +18,8 @@ service AccountsService { rpc ListAccounts(ListAccountsRequest) returns (ListAccountsResponse) { // List method maps to HTTP GET option (google.api.http) = { - get: "/v0/accounts" + post: "/api/v0/accounts/accounts-list", + body: "*" }; } // Gets an account diff --git a/pkg/proto/v0/accounts.swagger.json b/pkg/proto/v0/accounts.swagger.json index 80f32ea797..810a213fab 100644 --- a/pkg/proto/v0/accounts.swagger.json +++ b/pkg/proto/v0/accounts.swagger.json @@ -11,8 +11,8 @@ "application/json" ], "paths": { - "/v0/accounts": { - "get": { + "/api/v0/accounts/accounts-list": { + "post": { "summary": "Lists accounts", "operationId": "AccountsService_ListAccounts", "responses": { @@ -31,43 +31,20 @@ }, "parameters": [ { - "name": "page_size", - "description": "Optional. The maximum number of accounts to return in the response.", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "page_token", - "description": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "field_mask.paths", - "description": "The set of field mask paths.", - "in": "query", - "required": false, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "multi" - }, - { - "name": "query", - "description": "Optional. Search criteria used to select the accounts to return.\nIf no search criteria is specified then all accounts will be\nreturned. TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `email=foo@example.com` returns accounts with\n`email` set to `foo@example.com`\n* Query `display_name=\\\\\"Test String\\\\\"` returns accounts with\ndisplay names that include both \"Test\" and \"String\"", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsListAccountsRequest" + } } ], "tags": [ "AccountsService" ] - }, + } + }, + "/v0/accounts": { "post": { "summary": "Creates an account", "operationId": "AccountsService_CreateAccount", @@ -848,6 +825,29 @@ }, "description": "Identities Represents an identity used to sign in to a user account.\nAn identity can be provided by ocis, by organizations, or by social identity providers such as Facebook, Google, or Microsoft, that are tied to a user account.\nThis enables the user to sign in to the user account with any of those associated identities.\nThey are also used to keep a history of old usernames." }, + "settingsListAccountsRequest": { + "type": "object", + "properties": { + "page_size": { + "type": "integer", + "format": "int32", + "title": "Optional. The maximum number of accounts to return in the response" + }, + "page_token": { + "type": "string", + "title": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue" + }, + "field_mask": { + "$ref": "#/definitions/protobufFieldMask", + "description": "Optional. Used to specify a subset of fields that should be\nreturned by a get operation or modified by an update operation." + }, + "query": { + "type": "string", + "description": "TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `email=foo@example.com` returns accounts with\n`email` set to `foo@example.com`\n* Query `display_name=\\\\\"Test String\\\\\"` returns accounts with\ndisplay names that include both \"Test\" and \"String\"", + "title": "Optional. Search criteria used to select the accounts to return.\nIf no search criteria is specified then all accounts will be\nreturned" + } + } + }, "settingsListAccountsResponse": { "type": "object", "properties": { diff --git a/ui/app.js b/ui/app.js index ef0d9e8e07..510d6c3cb1 100644 --- a/ui/app.js +++ b/ui/app.js @@ -1,15 +1,13 @@ import 'regenerator-runtime/runtime' import App from './components/App.vue' +import store from './store' const appInfo = { name: 'Accounts', id: 'accounts', icon: 'text-vcard', isFileEditor: false, - extensions: [], - config: { - url: 'https://localhost:9200' - } + extensions: [] } const routes = [ @@ -36,5 +34,6 @@ const navItems = [ export default { appInfo, routes, - navItems + navItems, + store } diff --git a/ui/client/accounts/index.js b/ui/client/accounts/index.js index 5a412be582..3cdec3d464 100644 --- a/ui/client/accounts/index.js +++ b/ui/client/accounts/index.js @@ -28,82 +28,43 @@ export const request = (method, url, body, queryParameters, form, config) => { * ==========================================================*/ /** -* Lists accounts -* request: AccountsService_ListAccounts -* url: AccountsService_ListAccountsURL -* method: AccountsService_ListAccounts_TYPE -* raw_url: AccountsService_ListAccounts_RAW_URL - * @param pageSize - Optional. The maximum number of accounts to return in the response. - * @param pageToken - Optional. A pagination token returned from a previous call to `Get` -that indicates from where search should continue. - * @param fieldMaskPaths - The set of field mask paths. - * @param query - Optional. Search criteria used to select the accounts to return. -If no search criteria is specified then all accounts will be -returned. TODO update query language -Query expressions can be used to restrict results based upon -the account properties where the operators `=`, `NOT`, `AND` and `OR` -can be used along with the suffix wildcard symbol `*`. - -The string properties in a query expression should use escaped quotes -for values that include whitespace to prevent unexpected behavior. - -Some example queries are: - -* Query `display_name=Th*` returns accounts whose display_name -starts with "Th" -* Query `email=foo@example.com` returns accounts with -`email` set to `foo@example.com` -* Query `display_name=\\"Test String\\"` returns accounts with -display names that include both "Test" and "String" -*/ + * Lists accounts + * request: AccountsService_ListAccounts + * url: AccountsService_ListAccountsURL + * method: AccountsService_ListAccounts_TYPE + * raw_url: AccountsService_ListAccounts_RAW_URL + * @param body - + */ export const AccountsService_ListAccounts = function(parameters = {}) { const domain = parameters.$domain ? parameters.$domain : getDomain() const config = parameters.$config - let path = '/v0/accounts' + let path = '/api/v0/accounts/accounts-list' let body let queryParameters = {} let form = {} - if (parameters['pageSize'] !== undefined) { - queryParameters['page_size'] = parameters['pageSize'] + if (parameters['body'] !== undefined) { + body = parameters['body'] } - if (parameters['pageToken'] !== undefined) { - queryParameters['page_token'] = parameters['pageToken'] - } - if (parameters['fieldMaskPaths'] !== undefined) { - queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] - } - if (parameters['query'] !== undefined) { - queryParameters['query'] = parameters['query'] + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) } if (parameters.$queryParameters) { Object.keys(parameters.$queryParameters).forEach(function(parameterName) { queryParameters[parameterName] = parameters.$queryParameters[parameterName] }); } - return request('get', domain + path, body, queryParameters, form, config) + return request('post', domain + path, body, queryParameters, form, config) } export const AccountsService_ListAccounts_RAW_URL = function() { - return '/v0/accounts' + return '/api/v0/accounts/accounts-list' } export const AccountsService_ListAccounts_TYPE = function() { - return 'get' + return 'post' } export const AccountsService_ListAccountsURL = function(parameters = {}) { let queryParameters = {} const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/v0/accounts' - if (parameters['pageSize'] !== undefined) { - queryParameters['page_size'] = parameters['pageSize'] - } - if (parameters['pageToken'] !== undefined) { - queryParameters['page_token'] = parameters['pageToken'] - } - if (parameters['fieldMaskPaths'] !== undefined) { - queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] - } - if (parameters['query'] !== undefined) { - queryParameters['query'] = parameters['query'] - } + let path = '/api/v0/accounts/accounts-list' if (parameters.$queryParameters) { Object.keys(parameters.$queryParameters).forEach(function(parameterName) { queryParameters[parameterName] = parameters.$queryParameters[parameterName] diff --git a/ui/components/App.vue b/ui/components/App.vue index 0f572a2877..fdd2145262 100644 --- a/ui/components/App.vue +++ b/ui/components/App.vue @@ -1,15 +1,34 @@ diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue new file mode 100644 index 0000000000..d886aa9e70 --- /dev/null +++ b/ui/components/accounts/AccountsList.vue @@ -0,0 +1,34 @@ + + + diff --git a/ui/store/index.js b/ui/store/index.js new file mode 100644 index 0000000000..05e7280b0b --- /dev/null +++ b/ui/store/index.js @@ -0,0 +1,81 @@ +import { + // eslint-disable-next-line camelcase + AccountsService_ListAccounts +} from '../client/accounts' +import axios from 'axios' + +const state = { + config: null, + initialized: false, + accounts: {} +} + +const getters = { + config: state => state.config, + isInitialized: state => state.initialized, + getAccountsSorted: state => { + // FIXME: look at data fields for available sorting options + return Object.values(state.accounts) + } +} + +const mutations = { + LOAD_CONFIG (state, config) { + state.config = config + }, + SET_INITIALIZED (state, value) { + state.initialized = value + }, + SET_ACCOUNTS (state, accounts) { + state.accounts = accounts + } +} + +const actions = { + loadConfig ({ commit }, config) { + commit('LOAD_CONFIG', config) + }, + + async initialize ({ commit, dispatch }) { + await dispatch('fetchAccounts') + commit('SET_INITIALIZED', true) + }, + + async fetchAccounts ({ commit, dispatch, getters, rootGetters }) { + injectAuthToken(rootGetters) + const response = await AccountsService_ListAccounts({ + $domain: rootGetters.configuration.server, + body: {} + }) + if (response.status === 201) { + const accounts = response.data.accounts + commit('SET_ACCOUNTS', accounts || []) + } else { + dispatch('showMessage', { + title: 'Failed to fetch accounts.', + desc: response.statusText, + status: 'danger' + }, { root: true }) + } + } +} + +export default { + namespaced: true, + state, + getters, + actions, + mutations +} + +function injectAuthToken (rootGetters) { + axios.interceptors.request.use(config => { + if (typeof config.headers.Authorization === 'undefined') { + const token = rootGetters.user.token + if (token) { + config.headers.Authorization = `Bearer ${token}` + } + } + return config + }) +} diff --git a/yarn.lock b/yarn.lock index e0feeef90b..0d3fbb59ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4992,6 +4992,11 @@ vue-template-es2015-compiler@^1.9.0: resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== +vuex@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.5.1.tgz#f1b8dcea649bc25254cf4f4358081dbf5da18b3d" + integrity sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw== + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 48d28cf7dd8e34373369461cbc6fb49ee15012ac Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 09:17:17 +0200 Subject: [PATCH 178/407] Add more information to accounts list --- pkg/assets/embed.go | 6 +++--- ui/components/accounts/AccountsList.vue | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index 3175fa0665..ac66529e54 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-07-01 08:46:04.986235 +0200 CEST m=+0.005590875" from config file "embed.yml" DO NOT EDIT. -// modification hash(1eb14edca0e22422a4c6e530b1cc0ce4.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-07-01 09:16:48.869091 +0200 CEST m=+0.004214578" from config file "embed.yml" DO NOT EDIT. +// modification hash(89528609b2eeee1d43242d0d989b8f0c.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,7 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\xfd\xfb\x7a\xdb\xb6\xb6\x28\x8a\xff\xfd\xdb\x4f\x21\x71\x65\x71\x01\xd5\x30\x2d\xa5\xb3\x9d\x7b\x52\x41\x34\x13\xc7\xb9\xb4\x49\xec\xda\x4e\x7a\x51\x35\xbd\x69\x0a\xb2\x11\x4b\x80\x0a\x42\x76\x1c\x91\xbf\xf7\x39\xaf\x71\x9e\xec\x7c\xb8\xf1\x26\x2a\xed\x5c\xfb\xec\x93\xef\x8b\x45\x82\xb8\x0e\x00\xe3\x86\x81\x31\xe6\x74\xc1\x38\x45\x68\xb1\xe1\xa9\x62\x82\x23\xbc\x0d\x36\x19\xed\x65\x4a\xb2\x54\x05\xe3\xbb\x44\xf6\x14\x09\x36\xdc\x66\x9c\x07\x7d\xa2\x1e\xd6\x54\x2c\x7a\xd7\x4b\x71\x95\x2c\x2f\x6e\x58\x36\xa9\x1e\xe3\xae\x9c\xf7\x8c\xcf\xc5\xfd\xc4\xfe\x74\xe6\xb0\x15\xb8\x7a\x3a\x73\x64\x74\xb9\x98\xe8\x3f\xf1\xb6\x18\xfb\xce\xf6\x28\x52\x40\xf1\x56\x52\xb5\x91\xbc\xa7\x10\x25\x5b\xfa\x79\x2d\xa4\xca\xe2\x6d\x51\x00\x8d\xdc\x1b\xae\x1e\x0b\x3d\x22\x49\xea\x43\x56\x78\xab\x13\x29\xd9\x4d\x39\xb9\xfa\x44\x53\x15\xad\xa5\x50\x42\xf7\x04\x24\xa1\xd1\x4d\x92\x9d\xdc\xf3\x53\x29\xd6\x54\xaa\x07\xe0\x24\xf0\x05\x03\xe2\xfb\x7b\xfe\xb0\xba\x12\xcb\x89\xfd\x89\xb7\x05\x08\xc2\x23\xa6\xa8\x4c\x94\x90\x79\x1e\xfc\xf3\x9f\xfe\x25\x00\x46\x78\x94\x64\x0f\x3c\x7d\x53\xff\xde\x48\x09\x20\x21\x3c\x52\xe2\x5c\x49\xc6\xaf\x2f\x92\x6b\x93\xa5\xf6\x1e\x54\x40\x49\x35\x50\x40\x02\xb7\x83\x10\x84\x86\x21\xad\x86\xd0\x63\x3c\x53\x09\x4f\x75\x2f\x17\x13\x1a\x2f\x80\xf9\x61\xa6\x92\x26\x8a\x22\x51\x65\xc6\xba\x5d\x7a\xdf\x3b\x41\x3c\xcf\xa7\x33\x3c\x76\xa0\x66\xd1\x25\xe3\x77\xe2\xb6\x0e\x33\xdd\xa8\x6d\x92\x93\x20\xdb\x64\x6b\xca\xe7\x74\x7e\xae\x12\xa9\x02\x5f\xae\xcc\x2d\x80\xe1\x2d\x5b\xa0\x80\x7e\xa6\xe9\x46\x31\x7e\x1d\x10\x42\x38\x56\x37\x52\xdc\xf7\x74\x93\xc7\x52\x0a\x89\x82\x57\x94\x5b\x10\xf4\x58\xd6\x4b\x96\x92\x26\xf3\x87\x9e\xdc\x70\xae\x8b\xe0\xb1\xae\x22\x15\xab\xf5\x92\x2a\x3a\xb7\x55\x98\x6a\x4d\x3d\xfa\x5d\xb8\x2a\x99\xef\xc2\x25\xc2\xc5\x42\x48\x24\xa3\x15\x55\x37\x62\x4e\x04\xc8\x28\x91\xd7\x84\x8d\xc7\xb6\xfb\x09\x91\xd1\x9c\x2e\xe9\x75\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x42\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x19\x4e\x05\x57\x8c\x6f\xa8\x6f\x20\x2d\x0a\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x46\xb9\x22\x32\xba\x74\xbf\x89\xbc\x1e\xd3\x65\x46\x7b\x8d\x0e\x97\xf9\xcd\x38\x5a\x70\xac\xc3\x88\xd4\x06\x6e\x87\x30\x96\xd1\x9c\x65\xeb\x44\xa5\x37\xc7\x9f\x53\xba\x36\x90\x36\x5f\x70\xa1\x1b\x0a\x6c\x0f\xeb\xad\x84\xa1\x8c\x92\x2b\xb9\x59\x2b\xe4\xbf\xda\xba\xf0\x98\x93\xda\xe4\x18\x44\xb0\x20\x1b\x37\xcd\x06\xee\x5c\xc8\x55\xb2\xd4\xb5\x2d\x22\xb3\x58\x74\x8f\xb9\x06\x9e\xe0\x74\x52\xeb\x5d\x5c\x0d\xe3\x57\x46\x97\xf3\x00\x16\x06\xe2\x1d\xd0\xdb\xde\x25\xcb\x0d\x8d\xcd\x77\xd0\xf5\xc4\xb6\xba\xa2\xa8\x20\x64\x5b\x0b\x43\xd4\x06\x81\x9b\x50\x97\xd3\x4d\xeb\xc2\x8e\xbf\x28\x90\x02\x09\x09\x06\x56\x94\x5b\xc5\x0f\x67\xab\xe4\x83\xc3\x22\x5b\x5d\x77\xec\xc7\x06\x89\xbc\x8e\x55\x94\x26\xcb\x25\xd2\x19\x8b\x22\xd5\xd0\xd5\x08\xa2\x91\xdd\xb5\x68\x72\x17\x45\xa1\xa2\x7b\x99\xac\x49\x6a\xa0\x96\x91\x3a\xca\x5a\x20\xbc\xad\x3a\xb0\x6c\xbc\xad\xf5\x9b\x2e\x72\xa3\x8b\xdc\x4c\xc5\x8c\xd4\xf0\xb2\xc7\x72\x37\x2c\x2b\x4c\xc5\x73\xbf\x6f\xaf\xa9\x3a\xf5\x3b\xf6\x64\x01\x77\x64\x1e\x86\x73\x34\x47\xe7\x68\x3a\xc3\x18\x8f\xef\xc2\xf0\xae\x4f\x34\x1e\x90\x76\x28\x77\x20\x70\x18\xa2\x1b\x72\x87\x4d\x4d\x0f\x64\x5d\xed\x79\xb2\xa8\x3d\x37\x31\xc3\x0d\xae\x06\xb2\xd2\x40\x98\xda\x65\x0e\x1e\x00\x7e\x0d\xcd\xa2\x85\x90\xc7\x49\x7a\x53\x43\xb3\x14\x6f\xd5\x94\xce\x1a\x58\xb6\x36\x26\x8f\x51\x10\x05\x85\x8b\x02\xe3\x0a\x2e\xd7\x16\xcd\x1b\xd4\x32\xae\xe7\x25\x4d\x7c\x52\x16\x48\x2a\x70\x69\x54\x52\x47\xf6\x1c\x12\xbc\xed\x97\x39\x4d\x49\x48\x20\xb5\xd5\x67\x7a\x85\x4f\xc5\x0c\x14\x30\xbb\xc8\xed\xc0\xfa\x84\x64\x6e\x8d\xdb\x8d\x90\x99\x05\xba\x24\x8b\xc8\x2c\x58\xbf\xf7\x97\x61\x18\x08\x03\xb2\x8a\x14\x2c\x4b\xb0\x2f\x21\xb8\xbc\x4c\xee\x13\xa6\x02\x3c\xa1\x91\xa4\x99\x58\xde\x51\xb4\x8c\x5c\x2a\x8e\xd4\x0d\xe5\x4d\xca\xc4\x1d\x26\x01\x65\x7a\x59\x60\x68\x7f\x76\xa0\xf7\xdf\x71\x5c\xab\xb9\xab\x46\xd7\x65\xa2\x20\x41\x8b\x9d\x0a\x3d\xd8\x76\xeb\x2d\x52\x94\xd9\xbd\x64\x60\xa6\x01\xa9\x53\x7d\x01\xc2\x27\xdc\xb6\x96\x40\x82\xe3\x04\xe1\xa2\x9a\xc1\xab\x6a\x06\x25\x51\x25\x21\x9c\x52\xb7\x67\x67\x1a\xd6\x77\x82\xcd\x7b\x43\x8d\x9c\x0c\x26\xa1\x25\x12\x26\x7c\xb3\x5c\x42\x85\x00\x68\x1d\x45\x56\xb5\x45\xb6\x2b\x61\x88\x68\x89\x0a\x3c\x4e\xa3\x06\x17\xd8\x16\xc0\xf6\xa6\xab\x42\xec\x46\x93\x8d\x69\x1b\x9b\xd8\x1a\xf4\x72\xba\x78\x58\x53\x47\x9d\x2e\x6e\x68\xcf\x37\xdf\x9b\x0b\x9a\xf5\xb8\x50\xbd\xb5\x14\x77\x6c\x4e\x7b\x49\xef\xbf\x4c\xe1\xff\xea\xd9\xba\x82\x12\x5a\x96\x0d\xe1\x64\x83\x24\x54\x03\xb0\x6d\xd4\xd7\x9d\xc6\xf7\x76\xdd\xb9\x82\xfb\xba\x65\x96\x63\x1b\x62\xd9\xd8\x32\x00\xdc\x12\x07\x5b\x83\x98\x08\x8b\xa0\x11\x9d\x2a\xbd\x52\x36\x4b\xf5\x3e\x59\xd1\x19\x11\x76\x61\x00\x8d\xf4\x8a\x23\xca\xfc\xbc\x15\x69\xb9\xab\xfb\x15\xa4\x1a\x40\xb6\x0b\xb4\x0e\x62\xbc\xdb\x17\x1c\x8b\x18\xfd\x35\xa8\x96\x10\xb5\xbd\xd3\x94\x5f\x83\x35\xe1\x3d\xb7\xb7\xba\xaa\xaf\x16\xdb\x7d\xc5\xbf\x69\xc4\xfe\x56\xa4\xb1\x9a\x0e\x67\xc5\x78\xd4\x63\xbc\xa7\x4c\xd7\x0d\x1a\x7f\x2b\x52\xa2\xa6\xa3\x19\x86\xc7\xd5\x97\x05\xe3\xc9\x72\xf9\x60\xbf\x3d\x9e\xe9\x1e\x2e\x14\x95\xf6\xfd\xdb\x19\x06\x83\x80\x94\x7c\x38\xe6\x4a\x32\x9a\x45\xeb\x4d\x76\x83\x68\xad\xfd\xe3\xaa\x7d\x15\x39\x02\xc5\x04\xcf\xf3\x6d\x31\xa6\x66\x36\x49\x49\x5f\xf4\x28\x14\xed\x19\x30\x40\x3d\x37\xa1\x55\x85\x27\xba\xc2\x56\xb3\x64\xea\xc7\x16\x48\x21\x54\x50\xcc\x40\x95\x48\xf7\xde\x74\xd2\x75\x55\xd2\x8c\x2a\xd4\x1f\xd6\x7a\x78\xae\x2b\xd4\x7b\xa7\xec\xe7\x54\x98\x2d\x58\x5b\x67\x06\x63\x29\xbb\x18\x77\xf9\x5b\xbb\x38\x7c\x6e\xa5\x73\xf5\x59\xf6\x3e\x79\x8f\x54\xb4\xa4\xfc\x5a\xdd\x60\xcf\x0b\x1e\x8c\x80\x91\x1a\xcb\x8e\xb7\x9a\xfd\x1a\x0f\x06\xfc\x89\xcf\x3b\xc6\x6c\x81\x1c\x92\x54\xc0\x71\xd5\x0b\x87\xaa\xa6\x5c\x4f\x84\x5e\xb6\xa4\x3f\x82\x12\xdd\xfa\xef\x6e\x5f\xfb\x1c\x43\xa0\x45\xc5\xa9\x9a\xc5\xcc\x0a\xb7\xf5\xb6\xfa\x35\xbe\xac\xe1\xa6\xcb\x92\x58\x38\xe6\xc3\xd5\x66\xb8\x8f\xfe\xd0\x17\xec\x2d\x6b\x64\xf1\x21\x4a\x05\xcf\x94\xdc\xa4\x4a\x48\xb2\x86\x75\xe3\x7d\x09\xeb\x69\x32\x23\x4b\xc3\x8d\x2d\x93\x07\xbd\xbd\x48\xc5\xc9\xbe\xf4\xd0\xd4\x5b\x3f\xdb\x49\xee\x10\x43\xba\x26\x20\x0c\x55\xbd\x51\x37\xde\x7e\x5f\x33\x46\x94\x10\xb2\xcc\xf3\x8e\x26\x09\x21\x1a\xb1\x56\xfd\xca\x73\x1a\xf1\x64\x45\x31\x2e\x40\x45\xab\x44\xde\x76\x11\x68\xc7\x06\x64\x0d\x46\x63\xd2\x99\x8a\x14\xac\x71\x8c\x54\x74\x79\x69\xe0\x75\x79\x49\xd6\x90\x98\xfd\x95\xe7\x48\x69\xc0\x74\xf4\x0b\x63\x50\x7b\xd9\x8e\x07\x0c\x4a\xf7\x2e\x31\x5c\xd5\x6e\xf7\xb6\x8e\x7e\x6a\xde\x0b\x56\xe8\xba\x2e\xbf\xd4\x5e\xa6\x6c\x2f\x3f\x05\x2a\x7a\x56\x97\xb7\x88\xde\x8c\x46\x02\xab\x4a\x18\x99\x0a\x0c\xa3\x51\x52\x2a\x16\x86\x88\x91\x53\x29\x56\x2c\xa3\x96\x97\xb2\x02\xd3\x35\x4a\x7d\x01\xac\x59\x09\xdf\x58\xd7\x84\x23\x89\x27\x49\x9c\x98\x85\x8a\xba\x28\x76\x59\xd8\xe0\x6d\x65\x17\x7d\x59\x40\x13\x61\x58\x69\x20\x3d\x34\x81\x1b\xc0\xc3\x57\x58\x48\x78\x28\xe5\xc9\xdd\x2c\xc1\xd4\x62\xda\x5e\x59\xd9\x2c\xd0\x40\xba\xa5\x0f\x59\xc7\xfa\x9c\xce\xc6\x7a\x4f\x1b\xf2\x6e\x66\x1a\x53\x8b\x16\x25\xae\xb6\xaa\xa4\x77\x54\x66\x14\x61\x28\xb7\x9e\xf4\xc8\x80\x96\x88\xc0\x21\x0d\x1a\xad\xc5\x1a\x19\xec\xc3\x6d\x8d\xae\x1e\xe9\xb6\x3c\x07\x59\xe2\x03\x59\x94\x1f\x3d\x02\x90\x85\xee\xae\xc9\x9a\x91\x73\x38\xa9\xad\xad\x6d\x6d\xd7\xc4\x27\x60\xd0\x63\x5c\x1f\x93\x46\x8c\x1a\x71\xae\x25\xbd\x23\x43\x8b\x44\x0d\x12\x71\xcf\x46\x7c\xb3\x6c\xa8\x79\x74\xf8\xc2\xa4\xf8\x2e\xd9\x97\x06\x89\x32\x49\x4d\x92\x69\x92\x6a\x8c\x49\x9b\xb4\x78\x7c\x7e\x8c\xa1\xaf\xb0\x07\x31\x35\x00\xd1\x08\x3e\x50\x96\x7b\x49\x6f\x12\xf9\x4c\xa1\x21\x2e\x59\x4d\xfd\x19\x28\x0e\x43\x87\x95\x07\x34\xca\x96\x2c\xa5\x68\x84\x35\xe7\xaf\x3f\x6b\x5e\xdc\x51\xeb\x02\x32\x25\xd6\x71\x6d\x19\xd4\x06\x33\x74\x4a\xa0\x56\xe7\xa6\xc3\x59\x8d\x5c\x35\x79\x16\x65\x79\x16\x2b\xa8\xaa\x3a\xf7\x61\x29\xd2\x5d\xb2\x2c\x60\x47\x54\xed\x9c\x04\xdd\x07\x5f\xd1\xd8\x11\xab\x1b\x96\x8d\x6b\x1c\xbc\x51\x75\xb8\xfa\x13\x47\x5f\xbd\x40\x66\xa0\xab\x3c\x4b\x23\x81\xff\x29\xe3\xd2\xef\xf3\xc2\x43\x5a\xb4\x07\xed\x96\xe9\xc1\x68\x2c\x9e\x92\xe1\xf8\xe0\x40\xd8\x05\xcb\x76\xa0\x23\x66\x90\x10\xd6\x86\x90\x21\xd5\x1a\x6f\x44\x96\x78\xe3\x8a\xdd\xa6\x7c\x6e\xf5\x19\xfe\xdb\x13\x52\xae\x42\xaf\x80\x70\x93\xcb\x20\xf0\xfc\x4b\x80\x61\x53\x4b\xae\x98\x17\x5b\x57\x1a\x86\x9b\xe6\x82\x7e\xc2\x4a\xde\xa7\x6a\xbc\x4a\x83\xfe\xd0\x14\xac\xe7\xaf\x2a\xad\x97\xa8\xa5\x16\x5e\x8b\x91\xfe\xdb\x6d\x99\xa2\xba\x50\x7f\xb3\xab\xfb\x51\xf2\xa1\x97\xa9\x44\xd1\x15\xe5\xaa\x77\xcf\xd4\x8d\xd8\xa8\x9e\x29\xde\x13\xb2\xe7\x7a\x10\xfc\x37\x3a\x5c\x14\x05\x58\xb5\x47\x5c\x57\x60\x59\x6c\x64\x31\xd0\xde\x99\xe7\x76\xe6\x4b\xf5\x5a\x7b\xe6\xb9\xe1\xa4\xc4\xee\x2c\x96\x9b\x53\x34\x27\x2a\x0c\xab\xce\x8b\x7a\x37\xdd\xd2\x12\xe3\x2b\x49\x93\xdb\xa2\xd0\xd4\x26\x30\xcf\x66\x93\xe5\x79\xe0\xb5\x27\xe6\x1d\x87\x61\xb5\x76\x68\x18\xd2\x27\xa4\x3e\x6a\x43\xaa\x34\x26\xf2\x74\x8a\x4d\xea\xeb\x33\xde\x96\x3c\x93\xdb\x44\xca\x6d\x1f\x0a\x6c\x82\xf6\x61\x2f\xcb\x5d\xd5\x9a\xd1\x9c\xbe\xf9\xe2\x55\x33\x28\xc1\x05\xf8\x97\x16\xb8\xff\x1a\xd6\xa8\x8d\xd9\x64\x69\x0f\xdc\x24\x4e\xaa\xee\x98\xb2\x71\x4d\xdb\xe5\x72\xa0\x12\xfb\x90\x12\xf3\x2a\xcb\x79\xd7\x47\xe7\x65\xc6\xaa\x42\xbb\x39\xe3\x9a\xc6\x4b\x39\x1d\x14\x75\xc8\xd4\xe6\xa3\x18\xb2\x02\x16\x8c\xb3\xec\xa6\x81\xcd\x4a\xd4\xbd\x7f\x59\x51\xbb\xac\x2a\x29\xb9\xb5\xac\xa8\x59\x56\xb2\x2e\x9f\xe8\x39\xaf\xe3\xd5\x12\xe2\xb2\x36\xaf\x20\x4b\x01\x06\xc3\x31\x92\xba\x8b\x05\x98\x4d\xf4\x7f\xaa\x8b\x76\x0d\x9a\xee\x39\x72\x2e\xf7\x92\x0a\x5e\x53\xab\x78\x49\x55\xf7\xd2\x93\x74\x51\x14\x3b\x78\x81\x2d\x35\x5d\x5d\x3a\x4c\x90\x28\x45\x57\x6b\x15\xe0\x02\x3c\xc1\x35\x5a\xc6\xb8\xad\x9a\xae\x83\xaa\x24\xcd\x5b\x2f\x6c\xc6\x5a\x28\x82\x4a\x1e\x8e\x29\x38\xf9\x37\x96\x05\x94\xea\xdc\xda\x4a\xf1\x53\x5f\xa7\x1e\x1a\xb6\xaa\x40\xaa\x3c\x79\x18\x5b\xd5\xe2\xb5\xe7\xa3\xce\x36\x5c\xb1\x15\x25\xb4\xd2\x24\x96\x7c\x60\x20\x8d\x06\xad\x9d\xb7\x47\x7a\x32\xc0\x5a\xc4\x2c\x30\x06\xde\xa9\x40\xd3\xd2\xc0\xbb\x44\xdd\x10\xa2\xff\x86\xa1\x32\x27\x0e\x68\x47\x19\x55\x1d\xd5\x84\x61\xf5\x8c\xf3\xbc\x23\xaf\x3d\xb0\x09\x43\xfb\xdb\x9d\x27\xa3\xcb\x45\x18\xea\xbf\xdd\xdf\x75\xc7\x70\x9e\xd7\x86\x58\x4d\x42\x80\x11\xae\x89\x86\x46\xc8\x2d\xf5\xb0\xfd\xbe\x66\x6d\x5b\xda\x56\x2d\x8d\x41\x42\xfa\xac\x71\x60\xe5\xaa\xfc\x7b\xdf\x8b\x0d\xf6\xf4\xc8\x1f\xd0\xa0\x6d\x01\x23\xd8\x5e\xd7\xb9\xbc\xaa\x50\x51\xe0\xe9\x68\xa6\x01\x9b\x92\x6d\xa1\xd9\x44\x53\xe8\x4d\x76\xcc\x37\x2b\x2a\x93\xab\x25\x85\x4d\x4d\xd1\x5a\x3b\xf9\x79\x41\xb3\x54\xb2\xb5\x12\x12\x32\xb2\x5d\xc4\x9b\x30\xec\xa7\x16\xc3\x6f\x47\xf1\xe3\x02\x46\x78\xb2\xcb\x2b\x6f\x2c\x6f\xa6\x70\x5d\x62\xa3\x11\x2d\x9b\x2b\xe2\xb4\x80\x05\x69\x22\x4a\x27\xe8\x54\xb9\xe2\x3e\x1a\x85\x0a\x43\x2a\xf8\x82\x5d\x6f\x7c\xda\x63\x9d\x76\x2f\x99\x72\xef\x7f\xd3\xef\x56\x5e\xa0\x45\x01\x4b\x3d\x46\xcf\xf6\x43\x97\x2c\xd5\x5b\x7a\xc9\xdf\x31\x8c\xff\x13\x0e\x46\xb8\x80\x1b\x12\x04\x51\xb6\x5e\x32\x05\x73\xd2\x05\xff\xbe\x85\x11\x0a\xbe\x04\xb8\x13\x8c\x68\xa8\x45\x95\xc9\x6e\x93\x81\xed\x4e\x40\xc8\x1a\x29\x3c\xb9\xf1\x7a\x80\x20\xc0\xb1\xab\x54\xe1\xc2\x3d\xc2\x1d\x69\xb1\x89\x9a\xa4\x69\x54\x63\xd1\x44\x4d\x8d\x74\x94\xf0\xff\xd2\xec\xc2\x72\xe9\xf4\x6f\x3d\xc1\x7b\xc1\x40\x55\xd2\x58\x01\x0f\x5d\x20\x98\xa3\x3b\xa4\x8c\x54\xd5\xf1\x75\x77\x89\x4f\x74\x0f\xfa\x84\xa8\xb8\x4b\x4e\x2f\xe0\x9a\xec\x10\xbd\xfe\x4a\x37\x50\x6a\x4f\x0c\x3a\x05\x83\x19\x69\x18\xee\xd6\x82\xa4\x26\x38\x6e\xda\x34\x53\xbf\x32\xe7\x2c\x6e\xa2\xca\x8a\x78\xb7\xb2\xc6\x94\x36\x6b\xe0\x64\xf1\x27\x85\xfb\xff\x7b\xcd\xef\x9b\x02\xc1\xef\xa8\x54\x4e\x7b\xd7\x53\xa2\xb7\x96\x6c\xc5\x14\xbb\xa3\x3d\xd3\x2f\x8d\xbb\xaf\xf4\xd2\x6c\x1d\xad\xde\x77\xee\x82\xde\x95\x5f\x21\x14\x17\x70\x4c\x44\x34\x17\xe9\x46\xf3\x88\x70\x42\x56\xe8\x18\x87\xe1\x0a\x1d\x3b\xe5\xc1\xf1\xd2\x70\x8f\x18\xce\x3b\xf5\x1a\x93\x56\x3e\xa4\xb0\x39\x3a\xbe\x24\xfd\x44\x0b\x4f\xff\x16\xa2\x39\x47\xc1\x9c\xdd\x05\x18\x82\x24\xf8\x1a\xc2\x89\x12\x8d\x6f\x3e\xfd\x29\x56\xf9\xac\xb1\x4a\x32\xf9\xb4\xcb\x34\x29\xf2\xa0\xa9\x15\x25\xd7\x88\x6a\x36\x1a\x2e\x71\x85\x3a\x7b\x9f\x2c\x68\x4a\xe4\x59\xb0\x05\xba\x37\x69\x7e\xaa\x16\xa8\x9f\x45\x8b\x0a\x8c\xa0\xa6\x74\x86\x8b\x02\x8e\xda\xbb\xcb\xae\xd4\xf6\xc4\xda\xa5\x80\x14\x1e\x04\x1d\xda\xd9\xda\xfe\xba\xe8\x06\x15\x3c\xb3\x43\xbb\xd8\x21\xd2\x6c\x81\x8e\x9a\x43\x3b\xd2\x3c\x4b\x63\x7c\x17\x2e\x73\x73\x84\xc1\x35\x55\x01\xe3\x3d\x99\xe7\x41\xe6\x1e\x77\x91\xc2\xb3\x34\xa5\x59\x26\xa4\xed\x74\xb6\x59\x6b\x32\x4d\xe7\x65\xa7\x03\xbb\x20\x75\x61\x4d\xdf\xb5\x90\xec\x54\x0e\x18\x54\x51\xc0\x29\x49\x26\x7b\x18\x8b\x67\xd1\xc2\xa4\x2c\xd0\x08\x24\xc6\xc5\x5e\x06\xc4\x54\x0a\xaa\x80\xb7\xad\xf5\xad\xc7\x78\x8a\x04\xd4\xa6\x4f\xe2\xad\x98\xaa\x19\xa1\x9e\x21\xa2\x05\xbc\x27\x62\x1a\x5c\x5e\xa6\x42\xd2\x83\x4f\xd9\x65\x76\x93\x48\x3a\xbf\xbc\x0c\x66\x79\xfe\x16\x75\x7d\x80\x6d\x81\xe1\x96\x78\x2a\x5c\xee\xe5\x71\xb5\xd7\x4b\x4b\x8b\xf7\x11\xe3\xd9\x9a\xa6\xea\x5c\x6c\x64\xaa\xf9\xdb\x56\x4a\xd7\x3e\xba\xf5\xc8\xa0\xb0\xc2\xc5\x19\xbc\x83\x17\xf0\x86\xb4\x8a\xc2\x23\x22\xa2\x9f\x69\x72\xfb\x2e\x59\xc3\xcb\x2e\xb5\xe6\xa3\x30\x3c\xe4\x89\xc1\x0c\xa9\x98\xd3\xc3\x48\xd1\x4c\xa1\x37\xe8\x11\xc6\xf0\xa1\x6d\xb5\x51\xb1\x59\xdd\x78\xe2\xfd\x54\xcd\xf2\x1c\xe9\x1f\xc7\xa0\xf5\x09\xa1\x13\x1a\x6f\x0b\x5c\x60\x14\xdc\x51\x99\x31\xc1\xb3\x00\xa6\x33\x6c\x15\x56\x5b\x97\x16\x07\xdf\x46\xdf\x47\xdf\x05\xb0\x12\x73\x1a\x07\x96\x55\x0a\x20\x15\xeb\x07\xc9\xae\x6f\x54\x1c\xfc\xdf\xff\x57\xef\xf1\xf0\xf1\xb0\xf7\x82\x72\x96\xf5\x4e\x37\xd9\xcd\x6d\x22\xe9\x5d\x0f\x7d\x59\x0a\x26\x45\x7a\x1b\xc9\x0d\x0e\x74\x43\x18\x9e\x93\x21\xbc\x32\x9c\x59\x24\x13\x3e\x17\x2b\x84\xe1\x4b\x17\x6d\xb1\xf6\x22\x28\x18\xb8\x0d\x56\x2a\x1a\xd5\x24\x08\x62\xbd\xdd\xf0\x65\x30\x40\x83\xc1\xf3\xc1\x2b\x5c\x4e\x23\xfa\xf6\x7b\x5c\xc0\x1f\xe4\x03\x0a\x6e\xe9\x43\x16\x60\xf8\xd8\x35\x49\x7f\x58\x70\xe8\x1f\xf2\xc5\x12\xb8\xd7\x64\x5b\xc0\x2f\xd5\xa4\x68\x1a\xf0\xd2\x72\x2a\x3f\x1a\x3d\xe6\x2f\xf0\x13\xf9\x51\x63\x28\xf8\x81\xfc\xa8\xd1\x33\xfc\x4c\x7e\x8c\x32\xaa\xc6\x67\xdd\x30\xff\xd9\xae\x84\x1f\xcd\x1a\x06\x5a\xc0\xbb\xae\xae\xfc\x54\xe6\xc2\x79\xae\xf1\xed\x8b\xae\x5c\x3f\x54\xb9\x0a\xab\x28\xd0\x1d\xfb\x95\x7c\x44\x81\x51\x0b\x04\x78\xfc\x7a\xfa\xeb\x8c\xf4\x87\xb0\xa7\x37\xa7\x48\xc1\xaf\x5f\xeb\x88\x46\x8b\xbf\xe2\x89\x9a\xfe\x3a\x8b\xf7\xf6\xc3\x66\x2a\xcc\x99\xdd\x6f\xa0\x14\xd9\x66\x54\xc5\x67\xa0\x31\xfc\x3b\xb8\x49\xb2\xf8\x05\x50\xbe\x10\x32\xa5\x71\x47\xf1\x17\x9a\xab\x79\xa7\x29\xcb\x19\x52\x7a\x2b\x16\xba\xa4\xa2\xf2\xa5\x90\x5d\xf9\xeb\x27\xe6\x86\x33\x18\x5b\x3c\x4c\x71\x9e\x23\x49\xde\x21\x8a\xb1\x91\x9a\xfa\x9d\x6c\xcf\x1b\xae\x65\xad\x44\xb1\xab\x25\xed\x49\x9a\x52\x76\x47\x25\x68\xc6\x67\x10\xf4\x24\xfd\x63\xc3\x64\x0d\xdf\xf5\x64\x51\x14\x40\x55\xb7\x45\x94\x32\xd4\x09\xa4\x7e\x70\x23\x04\x4e\xdc\xaa\x73\xfc\x80\xe5\x0a\x91\xe7\xe2\xf0\x78\xcf\xb6\x04\x06\xa5\x25\x4d\xdf\x50\xd7\x7e\x12\x6d\x78\x96\x2c\x34\x87\x5d\xa6\x54\x2c\x2e\x64\x55\x2a\x17\x17\x89\xbc\xa6\xea\x15\x55\xe3\x0e\xb4\x61\x34\x23\x99\xed\x40\x89\xc9\x68\x9e\xdf\x23\x06\x01\x4f\x56\x34\xc0\x79\x7e\x5a\xbe\xe8\x15\x21\x11\xc3\x51\x66\x31\x1a\x8f\x3e\x09\xc6\xcb\x1a\xca\x6a\x35\xae\x08\xcc\xd9\x44\x9f\x10\x31\x41\xe9\xa4\x9f\x85\xa1\xc6\xdf\x61\x88\x36\xa4\x3f\xc4\xb1\x3b\xc0\xd3\x69\xb0\x99\x18\xd4\xce\xe2\x53\x3b\x5e\x8c\xe3\x32\xe9\x2d\xd2\x09\x05\x46\x25\x12\xae\x8c\xca\x02\xbf\x91\x03\xd8\x65\x37\xba\x78\x4a\x23\xbe\x51\x23\x48\xf8\x31\xe4\xf9\x1b\xfb\x5e\x60\x83\x72\xa4\x22\x02\xb8\xea\x42\x32\x1d\x15\x4e\x94\x3b\xf5\x2a\x40\xa8\xee\xad\x94\xc8\x6b\xc3\x63\x79\x7d\xc0\x93\xc7\x13\xae\x90\x54\x53\x35\xd3\xa2\x9f\x42\x9a\x4c\xe1\xd8\x24\x84\xa1\xf9\x99\xd2\x59\x9e\x0b\xf3\x2e\xec\x6b\x01\x4c\x59\x3c\x98\x52\xb6\x84\xc4\xbd\x2c\x96\x42\x48\x48\xbb\x7a\xdb\x73\xa7\x8a\x64\xa0\xf0\x64\x18\x23\xf5\x74\x38\x49\x54\xcc\x14\xd6\xd4\x06\x36\xae\x86\x15\xe3\x90\x75\x96\xd7\x05\x36\x0a\x19\x21\x02\xfe\x31\x1c\xfe\x7d\xf4\x8f\x7f\x3c\xfe\xee\x6f\x7f\xff\xdb\xf0\x1f\xff\x18\xe1\x78\x58\xc0\xc2\xd7\x91\x7c\x86\x65\xad\xbe\x75\x67\x7d\xcd\xf3\x20\xa7\xb8\x00\x46\x1e\x90\xb1\x96\xcb\x14\x62\xfe\x04\x14\xd2\x16\x28\xad\xda\xc4\x74\xa5\xdc\x7e\x4f\x86\x93\x85\x42\x72\x40\x61\x88\xe3\xa5\x42\x52\xd3\x7e\x63\xa6\x62\xd4\x9a\x61\x28\xfb\x44\xba\x63\x92\xe4\x69\x6a\x8e\x4a\x91\x20\x6c\x9a\x0e\x06\x33\xdc\x27\x02\x97\xb2\xb1\x51\xc3\x96\x19\xd3\xc1\xc0\xe4\x55\x79\x9e\xf6\x18\xef\x31\x1c\x86\x6c\x9a\xce\x8c\x81\x85\x07\x4e\x9e\xa7\x79\x3e\xf4\xa2\xa8\x0a\xc3\x83\x51\x51\xc0\x8d\x22\x5b\xc6\xd3\xe5\x66\x4e\xb3\x78\x6d\x0e\x8f\x81\xf1\x39\xfd\x7c\xb2\x30\xaf\x23\x5c\x44\xee\x1d\xe6\xed\xf5\xe2\x84\x19\xcb\xa1\x0a\x32\x04\xe6\xcf\x87\xcc\xd9\x10\xc7\xfd\x7b\xf4\x1a\x24\x0e\xc3\x7b\xc4\xcd\x2f\x2b\x0f\x8b\x1a\x87\x41\x4f\xc5\x18\x9b\x2c\x84\x4e\x85\x1e\x6c\x18\xa2\xff\xff\x8d\x42\x0c\x24\xce\xf3\xb2\x50\x65\x94\x58\xc0\x9d\x22\xd3\xa0\x76\xbe\x13\x40\xd0\x14\x29\x02\x08\x58\x56\x3b\xad\x0c\x20\xe8\x92\x55\x03\xbd\x27\xdf\x8a\x34\x59\x52\xbf\x33\x6b\x9b\x34\x70\xc2\x54\x30\x83\x07\x45\xee\xcc\x39\x6c\x9a\x28\x14\xd8\x7e\xdb\x3a\x6d\x0b\x01\x86\x95\xd2\xbc\x6e\x27\xaf\xff\x3e\x59\xd1\x2c\xcf\xbb\x44\x50\x85\x14\x3c\x68\xba\x07\xd7\xfb\xcb\x5b\x76\x21\x2b\xe0\x4a\x11\xa1\x50\x70\x46\x17\x4b\xcd\x81\x43\x20\xee\xf9\x8f\x86\x15\x68\xd6\x6e\xb1\xfa\x4a\x45\x96\xcb\xc6\x20\xc9\xb5\x8a\x16\xe5\x62\x9c\x50\x3f\x16\xa9\x3f\xc7\xb4\x80\xfb\xf6\xfc\x96\x27\x7d\xe4\x4a\xe9\x35\xcf\xc9\xb3\x68\x01\x82\x7c\x8e\x16\xc0\xc8\x70\xcc\x9e\x48\x7f\x9a\xc7\x06\x83\xd2\xa4\x72\xca\x66\x63\x4d\x48\x13\xa3\x28\x52\x90\x80\x40\x14\x12\xac\x87\x78\xac\xc8\xe1\x7f\xe4\xbf\x57\x28\xf1\xf7\xe8\x10\x4e\x3a\x17\x16\xb9\x54\xd3\x73\xbd\x81\x66\x65\xa7\x09\xf9\xac\xf2\x5c\xf6\xc9\x27\xa5\xc9\xc0\x2e\x7a\xa3\x13\x86\x28\x8e\xfb\x7d\x2d\x2f\x9e\x2b\x72\xa2\x22\xab\xc9\x65\x5f\x3a\xb9\xd9\x52\xba\x89\x24\x5d\x2f\x93\x94\xa2\x63\x05\x41\x14\x68\x8e\xeb\xad\xb8\xa7\xf2\x28\xc9\x28\xc2\x05\x5c\x9a\xba\xe6\x89\x4a\x34\x1f\xf5\xc9\xbc\xbd\x7f\x76\xf1\xe6\xe3\x31\x09\xde\x07\xf0\xd9\x24\x9c\x9e\xbc\xfd\xf5\xe5\x9b\xb7\x6f\x49\x70\x1a\xc0\x91\x4e\x82\x0b\x65\xa0\xf5\x6c\xcf\xd6\xb1\x16\x69\xb0\xd1\x52\xb7\xa1\x7a\x90\x11\x15\x59\x1e\x14\x16\x44\x45\x9a\xfb\x31\xaa\x56\x92\x4d\x44\xbc\x98\x88\xe9\xc6\xf0\xfe\x1b\xcd\x5d\xc4\xc8\xbe\x6e\x0b\x5c\x3b\x08\xd7\xb3\x66\x4e\x52\xad\x00\x99\x10\x3a\xe5\x33\x60\x44\xd5\x49\xeb\x04\xa5\xe4\x42\x99\x03\x35\x1c\x86\xa9\x3b\x68\x96\x3a\x67\xff\x48\xa1\x6c\xc2\xe3\xcd\x00\x2d\x26\x41\x14\xc4\xc1\x7f\x04\x78\xc0\xad\xd1\x49\x4a\xe7\x38\x0c\x4b\x16\xdb\x9a\xf6\x3a\xe0\x27\x15\x91\xae\x8c\x3d\xef\x15\x4a\x34\x39\x44\x2a\xca\x6e\x92\x55\x9e\x33\x8d\x05\xf4\x23\x0e\xc3\x53\x94\x40\xa0\x9f\x03\x23\xff\x51\xd3\x21\x48\x0c\x17\x08\xa7\x8a\xf4\xfb\x5f\xdb\x0c\x7b\xa4\xf6\xbe\x67\x5a\x2c\x87\x6d\x89\xe4\x5b\x45\x4e\x55\x18\xf6\x6d\xa2\x69\x3f\x0c\x83\xcc\xbc\xb5\x6d\xb9\x2b\x2b\xad\xf7\x8a\x3c\x93\x32\x79\x88\x58\x66\x7e\xbb\x36\x70\x60\xbe\x38\x95\x56\x01\xb7\x9d\xa4\xc4\x29\xb7\x9c\xb2\xe9\x4c\x79\x59\x59\x33\xf1\xfb\xb1\xc2\x9d\xae\xf0\x9d\x22\xc9\xa4\x4b\xb4\x66\x34\x6b\xa9\x0b\xf4\x46\xaf\x8e\xe7\x81\x93\x33\xb3\x6d\x05\xe1\x6e\x9b\x9a\x5d\x2b\x9e\xb2\x31\xb6\x12\xac\x24\x7c\xca\x06\x83\x19\xd0\xa9\x9c\xd5\x85\xf9\x17\x16\xcb\x78\x6d\x4b\x00\xe5\xa3\xd3\x9e\x04\x18\xde\x28\xcd\x9e\xbf\x39\xbe\x3c\x3d\x3b\xb9\x38\x09\x30\x3c\x52\x75\xf3\x82\x02\x5e\x76\xf2\x24\x4f\xac\xd2\xe3\xa9\xe1\x52\x9f\xfc\x7e\xe8\x5f\x0b\xf8\xd0\x28\xaf\x25\xe4\xdf\x88\x6f\x36\x9a\x8b\x55\xc2\x78\x18\x6a\x51\xe5\x59\xaa\xc5\xc6\x5f\xbc\x1a\xf2\x46\xad\x96\x0b\xb6\xa4\x41\x5d\x4d\x60\x4e\xb2\x81\x8e\x3f\x28\xf2\x5b\x43\x13\xa9\xa2\x7b\xc9\x14\x45\x2f\x15\xb2\x0c\x5f\x94\x2e\x85\xde\xe4\xfe\xcc\x39\x5a\x27\x92\x72\xf5\xb3\xd1\x85\x47\xb6\x91\x12\x34\xf6\x80\x9f\x16\xe8\x37\x1c\x23\x44\xc9\x39\x0a\xd8\x42\x1a\xb6\x13\x47\x99\x7a\x58\x96\x26\x37\x24\xe0\x82\xd3\x00\x5e\xa8\x28\x59\xaf\x29\x9f\x1f\xdd\xb0\xe5\x5c\xcf\x07\x8d\x32\x99\x7a\xd6\x3a\xf8\x94\xdc\x25\x16\x06\x71\x80\x01\x29\x62\x10\xb3\xaa\x7a\xe0\x41\x80\x23\xb1\xa6\x1c\xe9\x1e\x57\x23\x28\xe1\xf3\xd2\x2d\xa9\xc6\x90\x40\x45\x2f\x6b\x2b\x42\x13\x30\x87\xaf\xe5\xc1\xc1\x18\x3b\x8e\xf6\x43\xcd\x1e\x67\x7a\xa7\xa6\x72\x56\x62\xdc\x0f\x0a\xe1\x62\xfc\x7a\xfa\x46\xcd\xbc\x79\xc0\x73\xd5\xb4\xd9\xa9\x2f\xdf\x12\xb3\xf9\xf2\x5e\x5f\x3a\x41\x8f\xea\x46\x3f\x46\xef\x23\x8d\xd8\xf9\x48\x41\xe3\x93\x81\xaf\x34\x0d\x2a\x1c\x4b\xa2\x7b\x00\xa5\x70\x4c\x27\x32\x7e\xe7\x38\x27\x78\xa5\x0c\x7d\x83\x2f\xaa\xa1\xeb\xfe\x43\x91\x3f\x39\xe0\x08\xc3\xfd\x34\x7a\xb2\xff\x13\x72\xc7\x23\xf1\x74\x06\x1f\x0d\xa9\xee\x12\xbd\x55\x18\x96\x36\x35\x76\x06\x67\x01\x21\x5f\x94\xd7\x9b\x4c\xba\x4f\x41\x7a\xaf\x8c\xee\xbb\x75\x0c\xd2\xfb\x43\x39\xe5\x3c\x2e\x0a\x2d\x57\xbe\x52\xe8\xc1\x20\x91\x02\x5e\x2b\xf2\x01\x05\xf7\xb7\x59\x80\xe1\x17\x45\x44\x64\xb1\x17\xfc\xa8\xc8\x5b\x35\xf9\x45\xc5\xbf\xa8\x30\xfc\x45\x45\xee\x34\xfd\xdc\x08\xa2\x79\xfe\x05\x7e\xea\x44\x51\xf7\xe8\xb5\x32\x42\x3a\xd2\x88\xf2\x1e\xfd\xa2\xdf\x26\xaf\x35\x77\x4f\x7e\xd1\x7f\x63\xfb\xfc\xa3\x16\x00\x2d\x9e\x0c\x06\x9a\xb1\x30\xc9\x05\xfc\x60\x20\xf2\x93\x2a\xe0\x67\x65\xf8\x84\x5f\xed\xcf\x6f\x8a\xfc\xa4\x50\x50\xbf\xc1\x82\x41\xed\x5e\x27\xd1\xd8\xf9\x1e\x29\x22\x27\x2a\xae\xdf\xc3\xf9\x4d\xe1\x30\xfc\x55\xa3\xc3\xdf\x14\x6c\x9b\x87\x20\xc3\xf2\xc0\x03\x17\x40\x69\x5b\xa3\xd9\xa1\xf3\xda\x95\xa2\xbb\x14\x9c\x25\xeb\xdf\xd0\x70\xca\xdd\x4e\xb3\x05\xa2\x54\x2f\xe6\x6a\x85\x56\xba\xfe\xec\x9e\x39\xbd\x5e\x9a\x64\xb4\x37\x8c\xdb\x72\x45\xcd\xde\xcb\xde\x3b\xc0\xc5\xd8\x64\x1d\xed\x64\x95\x3b\x79\x41\xfa\xdc\x8f\x77\x73\xd7\xec\x64\xaa\xfc\xc0\x7d\x89\x6f\xbb\x4a\x80\xe8\x2c\x03\x02\x97\x86\x91\x5d\x3d\x4f\xd6\xeb\xe5\x83\xe6\xef\xbc\xd4\xa8\xd7\x26\xa7\x66\xd2\xb3\x35\x4d\x19\xd5\x0b\x54\xd0\x2e\x06\xc8\x03\xf7\xbd\x5e\xfb\x0d\x8e\xae\x5f\x3f\x90\xa8\xb1\xf9\xd8\xb0\x7f\x96\x2a\x87\x61\xff\xbd\x42\xb2\xc6\xfa\x4c\x56\x48\x4b\x19\xf6\x9c\x88\x20\x49\xe4\x94\x53\x23\x4d\x48\x7f\x6e\x1b\x97\x4f\xc0\xe9\x7d\xcd\x12\x7d\x62\xea\x8c\x25\x46\x16\xd1\x0c\x63\x8d\x63\x18\x25\xd3\x99\x91\x3f\x20\xe9\xba\x36\x36\x22\x44\x93\xd1\xc7\xfa\x87\x93\x6f\xf5\x8f\x20\x7f\xd3\x3f\x8c\x7c\xaf\x7f\x12\xf2\x9d\x31\xe0\x60\x3b\x17\xa3\x52\xd8\x40\x06\x8b\x8a\xcd\x5e\xc2\x1a\x6e\xc8\xad\x42\x29\x86\x3b\x32\x47\x37\x18\x1e\x88\xa4\x48\x67\xfb\x16\xc3\x4a\x4b\x9c\x77\xa5\xc4\x79\x4d\x86\x70\x45\x16\x79\x2e\x28\xdc\x13\x3a\xb9\x42\x29\xac\x70\x2c\xcd\xc3\x10\x3b\x29\x7f\xbc\x7a\x7a\x3d\xbe\x76\xf2\x61\x92\xe7\xd7\x9a\x31\xbc\xd3\x10\x59\x93\x07\xb4\x24\x77\xd3\xeb\x19\x5c\xc3\x0d\x06\x85\xb1\x31\x0b\xbe\x9f\x5e\xcf\xc8\xba\xbc\xae\xb4\xc6\x6e\x19\x2b\xb7\x8c\xfd\xda\xe9\x0f\xed\x5a\xfa\xce\xaf\xa5\xa5\x7d\xff\xde\xbf\x5f\xfb\xd5\xc9\x9c\x89\xf1\x3d\x2c\x2b\x03\xa2\x52\x98\x1d\x95\x42\xdd\xe4\x60\x14\xf3\x3c\x17\x13\x11\xdf\x17\x05\xa4\x94\x6c\x9d\x59\x5c\x9c\x50\x34\xc4\xb0\x4a\xd6\xfa\x69\x84\x61\xc1\x96\x8a\x4a\xfd\xf2\x18\x43\x26\x56\x54\x3f\x7e\x8b\x81\xde\x51\xf9\xa0\x9f\xff\xa6\xf3\xf0\xb9\x7e\xfc\xce\x3e\xbe\xd1\x52\xac\x7e\xff\x1e\x17\xb0\xa1\x24\xa5\xde\xe8\x0e\x32\xaa\x39\x99\x1b\x36\x9f\x53\x1e\x60\x58\x50\x87\xb1\x4e\xfd\xd9\x55\x80\x61\x69\x54\x64\x19\x55\xb0\xf6\xca\x32\xab\xd7\xf3\xd8\x30\xc0\x70\xd3\x71\x8d\x70\x4e\x2b\xcc\x7c\x47\x0d\x57\xf5\xc3\xf9\xc9\xfb\x00\x9c\x0a\x8a\x2d\x1e\x02\x0c\x0f\xd4\x88\x09\x2b\x6a\x50\xe6\x35\x25\x1f\x35\x61\xbb\xa2\x24\x8b\x16\x70\x4f\x35\xa2\xb7\xbc\xaa\xde\x4b\xc7\xe6\x5d\xac\x0f\xaa\xa4\x13\x9b\xc5\xd4\x78\xa0\x84\xfb\x72\x20\xe9\x35\xcb\x94\xd4\x2d\x9c\xd7\x2a\x31\x39\x6c\xde\x5a\x8e\x4b\x5a\xd1\x93\x4f\xba\xd7\x3f\xb9\x73\xd8\xcf\x94\xf4\x3f\xd1\x3c\xef\x7f\xaa\x5d\x2e\x6c\xbd\x46\x1a\xc4\x86\xc3\x81\x23\x4a\x92\x30\xdc\x77\x9e\xf6\x5c\xa1\x15\x45\xdb\xe2\x6b\x27\x67\x2b\xab\xf0\xb2\x59\x2c\x86\xff\xbb\x39\x4b\x2b\xb0\x3d\x51\xdb\x39\x97\xb1\xb6\x27\x0f\x14\xdd\x50\xa0\x78\xcc\xc3\xd0\xf1\x36\x37\x74\x4a\x67\xb0\xa2\x2e\x23\xf0\x30\x54\x7d\x42\x6e\x68\x18\xae\x6c\x6e\x8d\x15\xe3\x15\x85\x8b\x4e\x0c\x45\xee\xa9\x26\x7a\xcf\x15\x9a\xd7\x46\x5b\x52\x85\x25\x45\x12\xdc\xcd\x30\xb7\x0c\x40\x25\xd7\xb1\x82\xb9\x3b\xdc\x63\x82\x6b\xf2\x04\x49\x9e\x23\x19\xd5\x52\x09\xc5\x20\x0b\x78\x46\x35\xb5\xee\xe0\x93\xdb\xb2\x89\x2a\xba\xd8\x8d\xf2\xd4\xbc\x76\xd7\x73\x4e\x0b\x38\xed\x20\xb0\xc4\x8e\xfb\x94\xa2\x63\x6a\xa1\x61\x04\x06\x0b\x3b\x77\x06\xe7\x07\x66\x8e\xe2\xee\xd1\xbd\x06\xcf\x04\xc9\x9a\xae\x76\x62\x0e\x18\x33\x8a\xc3\x50\x4d\x33\x3a\x9b\xf2\x99\x39\x3e\xb3\x8f\xa4\x3f\xd2\x9c\xdd\x73\xcd\xa3\xd5\x6d\x18\x16\x68\x08\xfd\x91\xb9\xb4\xe4\xcb\xe7\xb9\x99\x96\xcc\x1e\xa3\x6d\xb5\x94\x56\xd5\x32\xc4\x70\xa4\xbf\x72\x90\x18\xc7\x2b\xff\x58\xc0\xdb\xf6\x34\x95\x63\x90\x56\x31\x67\xa4\x1e\x89\xbd\x76\xe3\x1d\xad\x2b\x8e\x36\x14\x71\x68\x5c\x54\x4b\x34\x15\x71\x08\x4a\xb3\x95\x79\x7e\xea\x16\x8b\x39\x27\xc5\xc6\x20\xfd\x7d\x17\xea\xbf\x46\xca\x48\xad\x92\x5c\xd1\x86\x29\xae\xd7\xb1\x99\x77\x07\x74\x03\x4a\x63\xa5\x7b\x6f\xa0\x6f\x6c\x73\xfb\x48\xe6\xb9\x66\x7a\x6c\x39\xf3\x6c\xb2\xe5\xb9\x4b\xb4\x60\xbe\x61\x99\x01\x0c\x9d\x69\xf2\xa7\x85\xcc\xee\xb5\x6a\xf4\x70\xd5\x54\xb2\x05\x92\x66\xad\xfb\x8a\xb9\xa9\xf8\x58\x3f\x78\x33\xac\x07\x6a\x98\x05\xdf\x65\xd1\xcc\x2a\x6d\x07\xa4\x9b\x96\x3c\x47\xa2\xb6\x12\xcc\x2c\x89\xa2\x80\xb3\x4e\xf0\x50\xcb\xa9\x82\x24\xd3\x59\x0d\xfe\xb4\x79\x0b\xcd\xb4\xa6\x4c\x6b\xaf\xcd\xaf\xb4\xda\x3e\x65\x75\xdb\x05\xbc\xeb\xaa\xdc\xae\x65\x90\xba\x15\x3a\x39\xa6\xb1\x6d\x8a\x37\x9b\x92\xcd\xa6\xfa\x65\x5b\xd4\xcc\xc3\x8d\x7d\xe1\xb6\x41\xb3\xd1\x4d\xa3\xbc\x18\xa3\x53\x95\xe7\x88\x2a\x84\xe6\xb4\x2e\x94\x3a\xf3\xd3\x5e\x63\xb7\xed\x1e\xcc\x58\x54\x50\xb1\x93\x75\x3d\x25\x76\x46\xd6\x6d\x2d\x7b\x4d\xab\x52\x7e\x9a\x0e\x67\x13\xc7\x9f\xd6\xd3\x3c\x71\x07\x6a\x4e\xf7\x40\x36\x2d\xab\xaa\x55\xe7\x2c\x37\x8e\xf5\x40\xa1\xbe\xa4\xec\xb3\x9e\x56\xb3\x28\x51\x6d\x89\x99\x1d\x7c\xe4\x30\xb0\xdd\x9b\x5a\xde\x28\x2d\x46\xc3\xf0\x33\x0d\xc3\x23\x87\x3c\x77\x18\xf2\x8c\xaa\x58\x16\x18\x2e\xdc\xf5\x4e\xfc\x57\x4f\x3f\x7a\x6b\x7f\xcc\xa1\x92\x6b\x3d\x0d\x54\xe3\x5c\x08\x1a\xe2\x4b\xd0\x79\x85\xf1\x82\x22\x03\x07\xbb\x66\xb2\x68\x41\xde\x53\x78\x16\x2d\xc8\x29\x85\xcf\xd1\x82\xdc\x52\xd0\x82\xa2\x21\xaa\xe4\x8c\xc2\xb5\xfe\x7d\x47\xe1\x07\xfd\xdb\x5d\xdf\x4f\xca\x55\x08\x49\x18\x6a\x8a\x55\x47\xff\x10\xd4\xf0\x78\xb0\x0b\x83\x6e\xaa\x56\x8e\xaf\x56\xb8\x28\xcc\x38\x6f\xe8\x3e\xe5\xf4\x7b\x0a\x5b\x7b\x72\x16\xf7\x87\x05\xc6\x18\x9e\x29\xb4\x75\xee\x13\xfa\x43\xb8\x97\xc9\x5a\xff\x5a\xd5\x5c\xdc\x3f\x55\x90\xdd\x24\x2b\xfd\x50\xc0\xd6\x39\x25\x98\x6b\x02\xb4\xa1\xe8\x4c\xa1\x4b\xda\xba\x05\xda\xdf\xdd\x5c\x52\x39\x86\x45\x93\x2c\xff\x4c\xb6\x05\x1e\xdf\x23\xbb\x65\x7e\x56\xfa\xc1\xd3\x66\x0d\x46\xb3\x5f\x0b\xb7\x6b\x75\x17\xad\x3a\xb3\xa2\x8a\x99\x4a\x54\xb3\xa3\x05\x68\xf6\x2e\xde\x6d\xbf\x94\xc8\xc6\xc6\x9a\xe5\x84\xd6\xcc\x59\x4e\x34\x3d\x77\xe8\x7e\x4e\x51\x45\x89\xcd\x07\x22\xe1\x9c\x4e\xe5\x8c\x50\x8d\x39\x6e\xe9\x43\xfb\xdc\x95\x2d\x50\xff\x19\xed\xb2\x73\x51\x75\xf1\xcf\xd1\x5e\xd7\x81\x73\x3d\x68\xdf\x81\x73\x6a\xa4\xdd\x4d\x46\xed\x8a\xac\x4f\xb4\x66\x94\x86\xf6\x1b\x5b\xad\x97\xb4\xfd\x6d\xa4\xa7\xbb\x0e\x1c\xa7\xb2\xe9\x00\x8e\x9b\xc5\xa4\x80\xad\x55\xb3\xc4\x9d\x47\x75\x35\xc5\xc8\x73\x63\xd1\xf4\x96\x22\xf3\x60\x14\x24\x4d\x4b\x9c\xf8\x94\xc2\x8e\x02\xf1\x2d\x85\x7d\x46\x49\xf1\x2d\xfd\xcb\xdd\x2d\x0c\x2b\xd7\x56\x98\xc4\x67\xed\xda\x9d\xe6\x36\x7e\xf7\x17\xab\x6e\x72\x91\x7a\xdf\xa2\x91\xbd\x06\xb5\xed\xae\xb8\x63\x37\x9b\x52\xb7\xca\x6a\x4d\x30\xdc\x69\x84\x57\x6f\xda\xb2\xe3\xbb\x63\xca\xf3\x66\xeb\x16\x6d\xcf\x29\x2a\x0d\x88\xa6\x5a\xd0\x9c\x05\x7d\x72\x47\x91\x3d\x1c\x0d\xb6\x85\x7d\xdd\x26\xb1\x2a\xea\x09\x25\xa3\xe6\xba\x5f\x72\xff\x3b\xb6\x43\xe5\xc5\x04\x10\x64\xaa\x66\xc0\xc8\x68\xdc\x26\x16\x4f\xd9\x18\x0b\x4b\xb7\x2a\xc2\xc0\x06\x83\x99\xbd\x47\x45\x28\x20\x6b\x45\x50\xd2\x14\x2d\x5f\xbb\xa5\x5f\x09\xdd\xc6\xce\xa0\xcd\x4b\x74\x5f\x03\x35\xd7\x69\x08\xaf\x31\x3a\xc6\xca\x0c\x74\x9d\xd5\xf6\xd4\xd3\x2a\xa6\x23\xbd\x01\xef\xa8\x53\x0d\x18\x8d\x9e\xd0\xb0\x1f\xd7\x91\xe8\x74\x41\x67\x79\x7e\xda\x44\xac\x0b\xbd\x44\x6b\x52\x85\xb7\x65\x04\x45\x0d\x31\x28\x45\xad\xd7\x9a\x5a\x79\x95\xe4\x0b\x0a\x6f\x28\x3c\xb2\xd2\x15\x4f\xee\xd8\xb5\xbd\x14\x17\x6c\x32\x2a\x9f\x5d\x1b\x75\x75\x9e\x07\x01\xbc\xd4\x62\xcd\x5a\x8a\x94\x66\x19\x7c\xa0\xe4\x25\x0d\xc3\x97\x34\xf2\xd6\x41\xf0\x9c\x92\x0f\x34\x0c\x3f\xd0\xe8\xee\x7f\x8e\x9f\xd3\xc9\x1b\x4a\xd0\x0b\x4a\x9e\x53\x6f\xf9\x10\x05\x18\x4f\x87\xb3\xc1\x0b\x3a\x1d\xcd\xe2\x47\xd4\x30\x71\x2f\x28\x79\x44\xa3\x95\xd1\xdc\x1d\x1e\xcf\xaf\xe9\xef\x87\xe8\xf7\xf9\x00\x1f\x62\x9c\xe7\x26\xe7\x53\xf2\xf7\xbf\x69\x32\xdb\xc8\x79\x74\x23\xc5\xaa\x96\x37\x0c\xd1\x1b\x4a\x4c\x7e\xcb\x23\xbc\xa2\xe4\x0d\x0d\xc3\xc1\x1b\x0a\x5f\xda\xfa\x94\x3f\x3a\x8f\xb3\x5e\xd1\xa7\xe4\xbb\x51\x9e\xf7\x77\x57\x2e\xad\x58\x23\x44\x1b\x77\x58\xb7\x05\x9e\x7e\xa1\x1d\xb7\x07\xb7\x0b\x21\xe2\x51\x51\xc0\xa8\x4f\x88\x46\x7b\xe8\xb9\x10\x4b\x9a\x70\x1c\x2d\x84\x30\xcb\xf8\x23\xdd\x63\xf5\xf7\x9a\x1a\x7b\x23\xda\xe2\x4c\xcc\x7d\x8f\x02\x7e\xec\x58\x73\xf7\xe8\x75\x1d\xcf\xbe\xd6\x0d\x8e\xa9\x59\x9f\xdb\xc2\x73\xf8\xd3\x99\xde\x11\x9c\xf4\xfb\x9a\x14\x05\xcf\x8e\x8e\x8e\xcf\xcf\x4f\xce\xce\x03\x1c\x86\x34\x2a\x5f\x41\x10\xfd\x7d\x88\x27\x74\x3a\x9c\xc5\xbf\x50\x48\x4d\xc2\x48\x27\x8c\x66\x5e\x37\x52\x6f\x8a\xf4\xfb\x72\xe7\x40\x49\xef\xa5\x30\xec\x27\xe5\xc1\xbb\xe3\xdd\xb6\x76\x17\xc6\x07\xa3\x62\xcc\x27\x1f\xb5\xc0\x30\x6a\x88\x3b\x8e\x09\xf8\x85\x16\x38\x56\x7a\x3f\x8c\xa0\xbc\xf4\x2c\x9c\x93\x05\xf8\xc9\x2a\x21\x8c\x2a\x03\x7e\xa0\xe4\x0f\x8a\x02\xfb\x16\x60\xf8\x99\x92\x1f\x6b\xef\xe3\x3a\xc6\xb2\x27\x4e\x60\xb6\x49\x1d\x67\xfd\xa0\x39\xfd\x9f\xa9\x26\xac\x56\x3f\xd2\x65\x8f\x45\xfd\xee\xdd\xc1\x29\xa3\x49\x85\x4b\x4a\x20\x99\x7d\x6b\x8c\xb1\xba\x65\x0e\x33\x23\xa5\x81\xbb\xdc\x11\xfc\xed\xa8\xed\xa9\x49\xed\xa8\xc0\x2f\x86\x51\x01\x0e\xa1\xff\xd6\x50\xc9\x28\x49\x7e\xd5\xc3\xb7\xaf\x01\x06\x2a\x2d\x3c\xca\x04\x29\x89\x92\x61\x48\xe5\x64\x5a\xfa\x20\xe9\x1a\xf0\x6f\xff\xf6\x80\xff\x0a\xac\xab\x36\xfb\x44\x4a\xcb\xca\x98\x1e\x48\xe9\xe0\xc5\xa5\x51\xe9\x08\xd9\xb2\xa1\xe7\xd2\x92\xb0\xf1\x5f\xa1\xac\x49\x9e\x0b\x59\xe3\x05\xf6\xd2\xea\x4e\xee\x80\x4b\xf4\xe0\x78\x01\xd7\x29\x26\xf7\xb8\x71\xba\xd6\xac\x94\xbd\x7f\x3b\xb1\x67\x83\x1c\xb4\xcc\xae\xa5\x6f\xa5\x25\x72\x59\x7c\xb5\xc3\x7f\xde\xc5\xac\xfb\x0e\x12\xd4\x0c\x48\xac\x5d\xc1\x95\x42\x1c\x83\x39\x67\x4f\xc9\x70\xec\x6d\x6c\x9e\xa6\x63\x5c\x52\x33\x24\x89\x40\x1c\xa8\x37\x8e\xc1\x61\xc8\x24\x4a\xac\xc7\x22\x2f\xa9\xfc\x45\x6e\xab\x39\x3d\x67\xaa\xe4\x30\x6e\xe9\x43\x27\x43\x71\xa6\x2a\x76\xa2\x3c\x5c\xd3\xc0\xe5\xdb\xa3\xf3\xf3\xb3\xcd\x92\xbe\x65\x99\x8a\x87\x70\x74\x7e\x7e\xae\x1e\x96\xf4\x05\x4d\x97\x89\x4c\x8c\x2e\xc8\xa4\x7e\xd4\x64\xcd\x67\x5a\x32\xca\xd5\x19\x4d\x95\x4b\x78\x71\xf2\xae\xf9\x66\xf9\xe1\xea\xfd\x42\xdc\x52\x6e\x5e\x47\xf0\x22\x51\xc9\x85\x4c\x78\xb6\xa0\xf2\x8d\xa2\x2b\x97\xeb\x25\x2b\x3b\xf1\xfa\xe2\xdd\xdb\x67\xcb\xe5\x91\x58\x2e\x69\xea\xba\xa0\xd3\x76\x12\x5e\x0a\xb9\x72\xa7\xbb\x2e\xe5\x9c\xea\x1c\x55\xda\x3b\x3a\x67\x89\xab\xf6\x1d\x5b\x51\xcd\x3d\x5b\xad\xf9\x10\x34\xc3\x37\x7f\x2f\xe6\xf4\x5d\xb2\xd6\xaf\x62\x4e\x5d\x17\x4f\x13\xa6\xc7\xf7\xc7\x86\x66\x7e\x50\xa7\xcb\xcd\x35\xe3\xe5\x83\xaf\xe3\xfc\xe3\xab\xb7\x66\xae\x5d\xb6\xf3\x8f\xaf\xde\x6f\x56\x57\x54\x56\xef\xa7\x89\xba\x39\xa7\xd7\xb5\x04\xc1\xb8\xaa\x5e\x1b\xb0\x3a\xff\xf8\xca\xc2\x46\x48\x0f\x18\x6b\x9d\xfc\x7c\xb3\x58\x54\xb5\xea\x29\x3a\xbf\xa1\xd4\x57\x73\x41\x3f\xab\x0b\x99\xa4\xb7\x47\xe5\x24\x95\x49\xfe\x5d\x6c\x52\xd7\xcb\xc2\x59\x3a\x4a\x22\xa6\x89\x9c\xc1\x46\x92\x54\x86\x61\x5a\x3b\x97\xd0\x3c\xd9\x46\x86\xe1\x46\x56\x48\x83\x48\x89\xad\x11\xf8\x46\x42\x89\xd6\x40\xd6\x6d\xdd\xab\xfc\x1a\xc7\x98\x23\xed\x6c\x77\x03\x7b\xd6\xcb\x6e\xde\xee\xfb\x0a\x3a\xab\x93\xd6\x24\x34\xe9\x54\x5b\x78\xad\xae\x14\x0d\x0d\xf1\xf2\x16\xec\x0b\xf9\x15\xe7\x80\x7f\xcd\xa1\xdf\x9f\xbb\x0c\xdc\x5a\x7f\x57\x4b\x49\xd0\x9f\x67\x2e\xb1\xc1\x42\x4e\x16\x32\xde\x16\x38\xba\xbc\xfc\xf8\xe1\xf8\xf2\xc5\xf1\xc7\x8b\x93\x93\xb7\xe7\x97\xaf\xde\x9e\x3c\x7f\xf6\xf6\xf2\xf5\xc9\xc9\x8f\x97\x97\xd5\x45\xf2\xb5\xb4\x68\xb2\x66\x84\x81\x14\xee\x70\x64\x55\x83\x2e\x52\x53\x39\x03\x89\x1b\xee\xaa\x6e\x64\xdd\x91\x92\x3b\xeb\xee\x70\x0c\xa5\xcc\xdc\xcd\x65\xfb\x12\x80\xb9\xa4\xea\xaf\x09\xda\x5b\xa8\x97\xe9\x0d\x5b\xce\x25\xe5\x2d\xcf\x18\xe6\x3a\xaf\xcb\x22\x93\xfb\x77\x62\xbe\x59\x52\xe2\x2e\x14\x39\x43\x21\x6a\x5d\x66\x99\x47\xd2\xc5\xc4\xcb\x89\x44\x38\x96\xce\x12\xfb\x4e\x92\x2d\xd7\x72\xda\x3a\xd1\x78\xb0\xad\xc6\x28\x8a\xf1\x9d\x8c\xaa\x0c\xd1\x35\x55\xbb\x4c\x62\xbf\xdf\xea\x53\xad\x44\x01\xf3\xda\x2e\x88\x92\xb9\x3d\x21\xe8\x82\x42\x39\x6c\x7b\x03\xa2\x59\x50\xd2\x95\xb8\xa3\xed\xb2\x78\xeb\x2d\x72\xdb\x15\xb4\x8a\x5f\x53\xb5\x5b\xd6\x9f\x5f\xfe\x49\xd9\x9b\x24\xdb\x5f\xd6\x7b\x67\xa8\x2a\x68\x95\xde\xac\xe7\x89\x6a\xf3\xc0\xfb\xa0\x45\x54\xed\x05\x54\x94\x98\x32\x99\xbf\x7b\x5a\x2b\xe3\xbe\x90\x32\x0f\x06\x15\xad\x36\x2a\xd9\x57\xa0\xfc\x46\x6a\xf9\x74\x21\x7b\x8a\xd5\x55\xc4\x7d\x21\x65\x1e\xdc\x1a\x9b\xdb\x2d\xbb\xd0\xd1\xbb\xab\x01\x14\xa3\x46\xeb\x2a\xfb\xca\xd4\xfc\x55\xf0\x94\x1d\x2c\x6b\xdd\xf9\xb6\xb7\xfa\x67\xa6\xd6\xaf\x56\x5f\xc2\xb8\xa3\x7a\xf7\x6d\x6f\xf5\xef\x1c\x20\xbf\xda\x40\x6d\x56\x3a\x9a\x28\xbf\x9a\x46\xf6\x18\x79\xa1\x7a\xe3\x70\x27\x9d\x23\x3f\x09\xab\x0e\xd0\xd9\xf3\x3c\x2a\xd1\x74\x06\xca\x9c\xb8\x8c\x57\xad\xbd\xd0\xb9\x94\x23\x49\xe7\x9b\xb4\x71\x33\xa0\xee\x6f\xb5\xdc\x43\x88\xe2\xc2\x7b\x9b\x12\x42\xf7\xba\x5d\xfd\x7b\xbf\x86\xbb\xd4\xf6\xbe\xdc\xf8\x6b\xed\xd6\x6c\x1d\x06\x08\x51\x52\xed\x60\x24\x31\xae\x6d\x92\x89\x1c\x04\x87\x41\x1c\x04\xba\x4f\xfa\x6f\xb3\x33\x1d\xbb\xaf\x72\x07\xa8\xbc\x55\xb7\xb9\xc7\x6e\xb3\x6a\xbe\x93\x47\x2b\x33\x37\x59\xe9\x84\x45\x18\x5b\xe6\x32\xd9\xe8\x10\x65\xd5\x25\xe1\x45\xd6\xb1\x42\xa5\x4d\xad\xc0\xd0\xc8\x52\x55\x3b\x15\x33\x5c\x14\x66\x7a\x3c\x30\x60\x07\x8c\x7e\x16\xf7\x30\xeb\xc6\x2d\x4a\x65\xb9\x60\xcc\x1b\xfa\x43\xec\x7d\xc0\xd1\xfb\xde\x5c\x1a\x03\x91\xb1\xb9\x50\xe4\x18\xe8\x49\xd9\x20\x11\xd6\x6f\xc3\x35\x55\xc8\xdb\x17\x0d\xe1\x60\x84\x71\x89\xa3\x91\x9a\xaa\xd2\x1d\xc0\x0c\x04\x1e\x53\x3f\x02\xb3\x92\xcb\xb7\xfa\x69\x1a\x08\xbc\xe5\xd5\x12\x54\x35\x68\x50\x47\x3a\x5b\x33\xc4\x3b\x46\xda\x58\x2c\xbb\x5d\x04\x49\x9a\x7d\xe3\xcd\x05\x32\xe6\x61\xc8\x3d\x55\x0d\xc3\x06\xf5\x40\xb2\xdd\x03\x96\x9d\xb9\x1e\xd0\xf9\x7f\xbf\x0f\x95\xeb\x23\x4f\x2f\x74\x4b\x66\x3e\xae\xf7\x0d\xad\x9a\x40\xa5\xd1\x2f\xd9\x16\x18\xfa\x0f\x32\x0c\xf7\x33\x3e\xde\x7e\x2d\xfa\xb8\xa1\x61\xd8\xd2\x6b\xeb\xa2\x8a\x10\xf2\xe0\x4d\xfe\xc7\xfd\xff\x71\xf8\x4d\xff\x7f\xfc\xff\x7a\xdf\xf4\xee\x36\xf4\x73\xef\xee\xdb\xe8\xbb\x68\x64\xde\x51\x8a\xed\x95\xb6\xe3\xbb\x84\xf7\x7e\x15\x1b\x93\xfa\x4f\x3d\x42\x9e\xd1\xde\xbb\x37\x17\x3a\xe1\xf0\x7f\xb4\x9a\xb0\xcc\x38\x52\x5e\x61\x56\xd3\x8a\x4d\x87\x33\xfc\x94\x3c\xc6\x2a\x5a\xb1\xcf\x8c\xa3\xed\x15\x5d\x08\x49\x8f\xac\xee\x5a\xcb\xc4\xe5\xad\x2e\x63\x62\x59\x4e\xc0\x25\xe3\x4c\x8d\x77\x52\x9a\x40\xdb\x85\x94\x8a\x4c\x2e\xfb\x33\x99\xca\x99\x5f\x6b\x36\x05\x6b\x36\xb7\xae\xab\xac\xbb\xa8\x94\xa5\x32\xd7\x4c\xef\x23\x61\x8e\x62\xb2\xb1\x66\xa2\x84\x74\xee\x45\x1e\x99\xe7\x4e\x7f\x6c\x3e\x9b\xfd\x45\x38\x76\x4f\xb1\x37\x1d\x0d\x43\xff\xe4\xaa\xf1\xf4\xd5\x55\xda\xfa\xaa\xf1\xc1\x83\x24\x0a\x17\xa8\x9a\x5f\x5c\x72\x76\x6b\x23\x23\xed\x6c\xf8\xe9\xcc\x1f\xdd\xeb\xe6\x25\x4b\x55\x95\x83\x1b\x97\xb9\xfd\x91\x67\x18\x53\xb1\x5a\x31\xa5\x18\xbf\x2e\x3d\x56\x5d\x7a\x26\x62\x3f\x9b\x69\x73\x9c\x6f\xae\xb4\x08\x7f\xa5\x99\x01\x8f\xb5\x2e\x2b\x86\x62\x7f\xf1\x7b\x99\xac\xd7\x74\xfe\xca\x31\x12\xfb\x33\x3a\x4c\x62\x10\xd7\x4a\x9a\x73\xb7\x7a\x7a\x49\x50\xde\x25\xeb\xaf\xd4\x92\x75\xf5\xf3\x5e\x8b\x52\x54\x7e\x7c\x67\x2a\x7f\x90\xbe\xe6\xe4\x96\x9a\x3b\x1f\xae\x73\x47\x49\x7a\xd3\x76\x45\x57\xf9\xcf\xb1\x8e\x7f\xc0\x79\x7e\xf2\xce\xac\x20\x21\xde\x15\xcb\x4a\xaf\xe0\xfa\xb7\xee\x7b\x55\xcc\xfb\x04\xb2\xd7\xd9\x6b\xa5\xf7\xc9\x74\x49\xad\x84\xb1\x7e\x70\xfc\xbd\x9e\x6d\xc2\xc7\xf6\x86\x5d\x03\x58\x06\xbf\x3b\x61\xe0\xdc\x32\x1c\x90\x42\x35\x6f\xb5\x5c\x18\x4e\x7c\x06\x4d\xad\x76\xa5\x1f\x55\xf7\xb7\x6e\x0e\xf6\x50\x75\x9c\x10\xcd\xe9\x9d\x12\x62\x99\x4d\xaa\xc7\xf8\x41\x46\x56\x88\x28\x93\x70\x13\x4f\x2d\xcd\x55\xeb\xe8\xd2\x7d\x7e\x2d\xc4\x2d\x59\x4a\x58\xca\x88\xae\x34\x26\xd1\x88\x2a\xd6\x1b\x38\x00\x85\x75\xb2\xe0\x2e\x51\xc9\xe4\x8e\x3a\xcb\xa5\x44\xd1\xa0\x69\xc5\xa1\xfc\xfd\x8d\x73\xfd\xd1\xf5\x56\x45\xe5\x9a\x68\xf3\x35\xcd\x06\xfd\x6a\x0e\xec\xcc\x60\xd8\xae\x25\x5d\x53\x3e\x37\x32\x70\xbd\x1e\xcb\x52\x7e\xbd\x36\xbb\x6d\xba\xeb\xc2\x85\xbb\xba\x07\x57\x92\x6c\xcd\x48\xba\xe4\xae\x12\x55\xdd\xcb\xb6\x94\xef\x6f\x63\x21\x85\x9f\x0c\x35\x22\x08\x43\x4d\xcf\x4c\x13\x13\x4d\x51\xb3\x1b\xb6\x30\x47\x81\xd4\x1b\x52\x54\x6e\xf8\x90\xd7\xda\xd6\xab\x19\xcb\xa7\x07\x23\x4d\x28\x35\x36\x4f\x29\x92\x30\xaa\x63\xcb\x63\x27\x2c\xab\x3f\x41\x19\x7f\x8a\x14\xfe\x1a\x46\xf8\xcb\xdb\xbe\x25\xf9\xea\xc5\x0e\xd2\xac\xf4\xe6\x32\x37\x36\x3a\x27\xf6\x6b\xdd\x77\xeb\x89\x6c\x31\x55\xd1\xe5\xdd\x6a\x5c\x8a\x3b\x64\x5b\x98\x9a\xfe\x5d\x4c\xd1\x1e\x25\x30\xb2\x2d\xc6\x6b\x89\x44\x83\x53\x92\x78\xcb\xa6\x72\xd6\x8d\x28\x3a\xcc\x6c\x8d\x4f\x20\x73\xfa\xde\x29\x26\x3c\xa0\xb2\xe3\x20\xf7\x99\xd5\x99\x11\x4e\xe5\xac\x68\x6a\x80\xcc\xc5\x75\xe7\x28\xac\xda\xc0\x19\x5b\x52\xae\xc6\xed\x04\xd2\x1f\x82\xa9\xc7\x21\x54\xb4\x9d\x27\x2a\x89\xb7\x8f\x1e\xd9\xc5\x4c\xad\x03\xb0\x8d\xa2\xf3\x98\x15\x18\x76\xca\x27\xe0\xc9\x55\x13\x33\x98\x4a\xa3\x47\x06\x61\x77\x99\x0e\x5a\xfc\xa5\x1b\x8b\x5c\x5b\x0d\x7f\xd6\x58\x33\x05\xdb\x39\xa5\xc6\x1a\x22\x7b\xe0\xa9\x1d\x99\xb1\x88\xb2\xdb\x44\x4f\x0d\x53\x37\x47\x06\xe3\x36\x55\xf2\xcd\x8a\xcd\x1d\x04\x8d\x40\x1e\xa4\x71\xf6\x75\xc1\xd2\xdb\xae\x2e\xf1\xe8\xd1\x9c\x66\x4a\x8a\x07\xe3\x9a\xb3\xee\x75\x57\xfa\xc8\x0c\x50\xba\x0d\xec\xfb\xbb\x72\x9a\x70\x54\x4b\xb4\x2e\x31\x21\xeb\x6e\x9f\xd7\x44\x1c\x8b\x2e\x3b\xb6\xc4\x34\x99\xed\xd9\x2c\xd3\x64\x46\x38\x86\x3e\x0b\xc3\xbe\xf0\xd7\xb0\x2f\x8d\x40\xd0\x64\x62\x37\x44\x4e\x65\x8d\x89\xdd\x0f\xa0\x07\x19\x65\x54\x19\x8b\x65\x6e\xf7\x9b\x61\xe6\xad\x1f\x75\x6e\xef\xab\x7c\xde\xa5\x62\x2e\x42\x84\xf1\x5c\x09\x82\x6c\x3d\x79\x8c\xb9\x26\x1a\xfe\xa5\x6d\x83\x6e\xc1\xf5\x49\xba\x77\xe3\x5c\x71\x9d\x3c\x2c\x45\x32\x87\x94\xb0\xc8\xb1\x6b\xb0\x21\xcc\xdc\x8d\x2f\xa3\x31\x84\x61\x6a\x76\x7c\x9e\xa3\x0d\xa1\x83\x8d\xc6\x26\xbe\x15\xb4\x01\xe7\x9c\x6e\xc5\x94\x69\xdf\x3d\xfe\x6f\xb7\xde\xd9\xac\xad\x5c\x37\x0a\x29\x2e\x4a\xe3\xa9\x7d\x12\xbe\x30\x5b\x56\xef\xde\xd8\xec\x5d\x3e\xe9\xda\xbd\x2e\x4b\xd1\xb1\xb5\x77\x4e\x53\xfb\xfb\x70\xd7\x94\xce\x3c\x11\xd8\x16\x46\x76\x72\x37\x82\x1a\xca\xd0\x52\xe9\xd3\xc1\x16\x08\xd3\x80\x28\xd7\x12\xc7\xe6\xda\x83\x77\x61\xe8\xd2\x39\x1e\x77\x23\x2a\x09\x6c\x3f\x82\x72\xcd\x4e\x45\x07\x92\xb2\x24\x7d\xef\xa8\x48\xe9\x1b\xf6\x2b\x99\x0a\xeb\x2f\xa7\x00\x47\x7a\xbb\xfb\x71\xa9\x65\x1c\x93\xc3\x04\x82\x28\x30\x88\xc2\xdc\x63\xd5\xd2\x65\x5b\xfd\x83\x5a\x68\xbd\xdf\xdc\x05\xc0\x8d\xf7\x92\x8a\x38\x9a\xab\xf2\xed\x14\xcd\xcd\x3b\xbf\x24\x0d\xbe\xa6\xf2\x94\xed\xfa\x63\x37\x9e\xee\xcc\x40\x02\x85\xcc\x1a\x2c\x36\x35\x5e\xed\x1e\x79\x3f\xbb\x7a\x91\x4e\x64\xac\x4b\x0a\x13\xdc\x86\xcf\x97\x54\xe6\x39\x1d\xef\xe9\xb3\xa3\xf7\x65\x8f\xab\xf7\x7d\xfd\xf5\x57\xe4\xcb\x7e\xd7\xf6\x7c\xc5\x39\xfb\x5d\xe8\xb6\x09\xf8\xb5\xcf\x4b\x1a\x66\xa7\xc7\x0f\x5a\x77\xdc\x4d\x64\x5c\xa3\x73\x42\x28\xc3\xee\xc5\x6e\xb2\x8a\xca\xf6\x16\x09\xc2\x70\x97\x83\xab\x9e\x30\x5e\x97\xf3\xbc\x72\xe6\x5c\xc6\x50\x60\x76\x81\xd5\x78\xd3\x89\x73\x61\xda\x8a\x6d\xe1\xdc\x56\xd6\x73\xd6\x19\x40\x2a\xa5\x90\x81\xf5\x45\x82\xb1\x26\x83\x66\xc6\x38\x88\xf6\x7c\xd9\x41\xfd\x85\x15\x64\xa2\x1f\xb4\x38\x0b\xbd\x93\xbd\xe6\xa9\xe3\x5b\x97\x9a\x4f\x22\x0f\xd2\x0a\xd4\x7e\xa5\xd7\x14\xbd\x7b\xd7\x97\x55\x6d\xd4\x43\x6c\x30\xbc\xf5\xc4\xce\x4b\xe0\x0c\xdb\x4b\x43\x75\x82\x78\x29\x1b\x0c\x0e\xfd\x13\x75\xa3\xde\xa9\xc6\xfa\xb2\xac\xe0\x53\x9b\x11\x36\x47\x2f\x9a\xa8\xbb\x08\x31\x92\x50\xa0\x44\x81\xf2\xce\x45\x9d\x59\xbe\x02\x87\xbd\x63\x0a\x0e\x77\xc7\xb2\x28\xae\xa4\x1d\x76\xf7\xa1\x86\xe3\x36\xee\x56\x2d\x8e\x03\xca\x62\x59\x4b\x8f\x5a\xc0\x75\x5d\xad\xb4\x47\xac\xab\xd4\x77\x20\x48\x39\x24\xd0\x58\xd3\x28\x77\x13\x22\x6a\xc4\xc6\x0e\x80\x95\x03\x48\x0a\xd8\x90\x96\xfc\x3d\x65\xb3\xf1\xa6\x54\xdf\xef\x21\xdf\x9b\x6e\xe1\x4e\xa1\xc4\xfb\x10\xd9\x11\xa1\xfd\xad\xc3\x3f\x11\x0b\xd3\x3a\x3f\x80\x5b\x40\xd8\x23\x0d\x57\x1e\x45\x81\x3b\x20\xd8\x3b\xca\x06\x04\x8c\xf0\x12\x04\x89\x03\x81\x28\x41\xc0\x0a\xf0\x02\xaf\x47\x46\x36\x9c\x41\x6a\xef\x52\xee\x51\x5c\x54\xa3\x31\x76\x31\x7b\x7c\xae\x5b\x95\x55\x81\xff\x64\xd0\x2e\x1f\x4a\x40\xd6\x78\xa1\xe6\xcd\xe3\x0d\x49\x2b\x23\x13\x8f\x67\x34\x46\x4c\xa3\x55\xb2\xde\x03\x4c\x66\x80\x18\xa7\xd3\xe1\x0c\x55\x8e\xe4\x35\x9f\xed\x6a\x68\x6f\x97\x4d\xdb\x83\xbc\x73\x2c\x26\xbb\x40\xf0\xd5\xa1\x1b\xbf\xb1\x7f\x3e\x72\x93\x6d\xef\xc0\xad\x96\xa0\x69\x5e\xfc\xdf\xeb\x8e\xc1\xa0\xdd\xdd\xa9\x23\x11\x93\xad\xea\x8e\xb5\xff\xae\x75\x88\x5a\x7b\xe4\xc2\x5c\x97\x6d\x2c\xcd\x72\xa5\x77\x0b\x60\x46\xec\xde\xd9\x13\x46\x6b\xd3\x5d\xcd\xce\x51\x53\xb3\xb2\x4e\x47\x3c\x4e\x45\x1a\xab\x22\x56\xfb\x34\x6e\xbb\x4d\xde\xef\xec\xa8\xd6\xb9\x40\x03\x83\x95\xfa\xaf\xaf\x49\x56\xbb\x44\x41\x4f\xa3\x55\x38\x5d\x37\x8f\x25\x2a\x1d\xcb\x3e\xad\xf6\x57\x11\x11\xdd\xc5\xa9\x44\x15\x3b\x88\xc3\x1f\x0a\xb8\x43\xee\x9d\xc1\x36\x15\xa1\x5a\xf2\xdb\xf1\xe7\x64\x35\xc5\x53\x35\xc3\x6d\xcd\x57\x79\x3a\xa1\xd1\x8e\x57\x91\x55\xe7\xe6\xa0\x5a\x05\x8c\xf6\x1f\x83\x51\xb2\x64\x54\xde\xd9\xe1\x57\xca\xb3\xaa\x68\x7b\x18\xd5\xe9\xc6\xce\x40\x1a\x20\xfb\xeb\x9d\xaf\x6a\xac\xb4\xa4\x7b\x40\xed\x5c\xa8\x48\x44\x4b\xfa\x5e\x17\xfe\xb4\x60\x6f\x8f\xcf\x91\x84\xc6\x59\x86\xa1\x07\xc7\xd2\xeb\xa9\xae\x5b\xa7\xe1\x1d\x43\xf1\x17\xd6\xfe\xea\x28\xea\x67\x2e\xc6\x67\x46\xb3\x0d\xa1\x3e\xec\x3b\x36\x2f\xe1\x60\x8f\xeb\x54\xd9\x51\xe3\x60\xbe\x59\x4f\x0d\x30\xfb\x0e\x76\x6a\x7a\xf1\xf1\xae\xa2\x7c\x08\x0a\x75\x28\xd0\xe9\xfe\x83\xda\x7a\xfb\x70\xe5\x0e\x6a\x3f\x4b\xf2\x4c\xb6\x31\xb7\x17\xc0\xfc\x6e\xbd\x90\x88\xee\xc1\x76\x9e\x7b\xbf\xa5\x0f\x86\x6d\xbf\x4b\x96\x63\x41\xd4\x40\x80\x9c\xf2\x59\xeb\x72\x52\x5f\xe5\xf9\xa9\xac\x1f\x36\x40\xb0\x4a\xd6\x8e\x2b\x0c\x6a\xf6\xb5\xb5\x2c\x0d\xa9\x4b\x57\x1a\x69\x36\x96\x18\x7d\x25\x68\x34\x0c\x47\xff\x07\xc6\xd0\xee\x7d\xe5\x95\x7c\x3a\x03\xb9\x73\x3d\xca\x7a\xac\x30\x97\x3b\x2a\xa3\x4d\x39\x1b\xd7\x5c\xf8\xbb\xd1\x78\xb6\x63\x5c\x85\x3d\xd2\xbc\xfe\x0e\x50\x2c\xce\x36\x40\xb1\x41\x8d\x3c\x37\xcd\x4d\x34\x07\xa3\xd2\x28\x2b\x73\xb2\x65\x97\x40\x31\x11\xce\xd0\xdd\x2c\x44\x0d\x3e\xc7\x08\x53\x8c\x63\x5e\xfb\xe6\x1b\x9f\x8a\x7a\x96\xc2\x43\xb9\xd2\xfa\x5e\xc8\x2e\x2f\x64\x55\x52\xc3\x27\x0d\x52\x38\xcf\x0d\x37\x5c\x20\x85\x27\xed\x6f\x13\xb5\x8f\xe3\xd8\xde\xd2\x87\x58\xc1\x5d\xb2\x8c\x95\xee\x44\xdc\x32\x87\x6a\x16\xa3\x8d\x62\xd4\x16\xd3\x7c\xba\x2e\x39\x9d\x55\x9c\xfa\xb3\xce\xce\xd7\x58\xf7\x5d\xef\x7d\x13\xc7\xbd\x07\x01\x8e\x83\x43\x1b\x7c\xcc\x05\x3a\xa1\x25\x62\xc2\x61\x88\xe8\x80\x04\x87\x01\x06\xe5\x42\x34\x96\x8d\x9e\xb6\xc5\x83\x3d\xaa\x31\x59\xeb\xe8\xdb\x9a\x92\xce\xfb\x61\x82\x0c\x6f\x83\x2b\x6b\xe5\x5e\x75\x30\x31\x3e\x00\x53\x48\x49\x02\x09\xe9\x8f\xf0\xd8\xd8\xcf\xf7\x16\x5d\xc7\x83\x72\x22\xa3\x52\xd0\x18\x2f\xa9\xea\x2d\x9d\x7b\x37\x15\x49\xca\xe7\x54\x53\xad\x85\x7b\x24\x3e\x0d\x16\x06\x4d\xb3\xf4\xcc\xbc\xbe\x34\xa6\x3a\xad\x14\x58\x18\x44\xb4\x66\x4b\x3a\xd7\xe8\x49\x98\x8a\x7c\x0f\x92\x25\xe9\x0f\xb1\xd5\x76\x2e\xa2\xcb\x2c\x15\x6b\xfa\x66\x4e\x38\x06\x36\x41\xcb\x06\x0a\x44\x8a\xa8\x3c\xb7\x4b\xf2\x8e\x8b\x39\x75\x71\x29\xec\x4b\x94\x65\xf2\xc8\x2e\x7f\x97\xa9\x3c\xd5\xac\x5e\x9a\x05\x1b\x69\xb5\xf2\x38\xcf\x6b\xa7\xd9\x25\x88\xac\x95\xde\xf9\xf9\xd9\xe5\xd1\xc9\xfb\x8b\xe3\x5f\x2e\x2e\x2f\xf3\x1c\x29\xd2\x91\x8e\xc1\x9c\xe1\x57\x27\xb9\x1b\x73\xa0\x61\xa0\x79\x29\x4b\x32\x72\x24\x56\x6b\xc1\x35\x4e\xd8\xfb\x21\x4a\xe6\x73\xcd\x62\x6b\x28\x66\x99\xf4\x24\x88\x2c\x71\xac\xe5\xc7\x65\xc3\xdb\xaf\x66\x55\xaa\x36\x33\xcf\x0d\x3e\x32\xa7\x6b\xfe\xc0\x38\xca\x6e\x92\xb9\xb8\x3f\x13\x42\x35\x7d\x00\x37\x4b\xa7\xf6\xd2\x0f\x2c\x31\x5b\x34\xe6\x0b\xdb\xf8\x44\x3d\x45\xfc\x72\x18\x97\xeb\xa2\x6b\xe3\x78\x87\xed\xb2\xda\x00\xe6\x50\xbd\xaa\xa5\x7e\xe8\x3e\x6e\xbe\x12\x35\x99\x56\x87\xe4\xb0\xc4\xf1\x74\x39\x2b\xa3\x29\x15\xb6\x8e\xf7\xce\x22\x30\x0e\x9e\xa5\xa9\xd8\x70\x95\xbd\x65\x99\x32\xd6\xef\xeb\x2c\xde\x26\x2e\x31\xb6\x62\x99\x41\x31\xe0\xfd\x8c\x9a\x93\x2b\x6b\xf3\x70\x2b\x49\x8b\x13\xb1\x47\xed\x5a\x40\x8f\x1e\x35\xbc\x70\x83\xde\x02\x97\x19\x5d\xea\xb5\x9d\xe7\xa5\x32\x57\x5a\x07\xdb\x30\x95\x28\x10\xe9\x81\xb2\xb7\x21\xb7\x89\x52\x32\x8b\xb7\x2b\x36\x9f\x2f\x69\x1c\x04\x30\x67\x77\x6c\x4e\x65\x1c\x04\x45\xd1\xc8\x7c\x70\x2d\xc5\x66\xdd\xac\xe0\xc0\x44\x0a\x6a\xa4\xa4\x74\xb9\xac\xea\xcd\x6e\x24\xe3\xb7\xba\x5e\x7b\xa5\xff\x86\x26\xf3\xa0\x30\x47\x80\x97\x77\x28\xe8\x05\x18\xf6\x17\xae\x17\x81\xb9\x58\x9d\x5a\xa0\xe9\x7d\x70\x64\x1d\x3a\xc5\x7a\xa8\x48\x45\x8f\x0c\xc1\xfd\xac\x50\xf0\xde\x7a\x8e\xfa\x3f\xd9\xc4\xf1\x2a\x61\x4b\xdb\xc6\x0c\x46\xe6\xff\x9e\xb6\x1c\xc4\x54\x74\xb9\x44\x2a\xf2\x93\x0d\x5d\xb2\xd7\x0e\x50\x0d\x55\x08\x5c\x99\x83\x25\xcb\x94\x4e\x3f\x08\x06\x34\x62\xf3\xa2\x0b\xe6\x2e\x29\xb9\x4b\x54\x22\xab\x21\x6e\x32\x2a\x6d\x50\x0e\xcd\x70\x2f\xa8\x94\x74\xae\xdf\x5d\xf7\xbf\x0e\xa6\xaf\x80\xa4\x55\xdd\x9f\x83\xfc\xab\x75\x69\x98\x7a\x88\x6a\xfa\x3d\x2a\x61\x5b\x8c\x6f\xa5\xe5\x3d\xcf\x95\x64\xeb\xb5\x41\xd5\x15\x69\x3f\x93\x75\xe6\xa9\x49\x71\x35\x99\xf8\x9a\xbf\x3b\xcf\x47\x7d\x2d\x8f\xae\xc6\x06\x4c\xe6\xbb\x22\x36\x6d\x47\xf9\xdb\x77\x57\xc3\xf4\xb1\x1e\xa8\x02\x63\x23\x01\x6d\xb2\x1b\xc7\xcf\x18\x67\x42\x25\xf6\x28\x87\xf7\x4e\x36\x03\xcc\x8c\xc6\xf4\xc9\x0e\x27\x47\xbd\xaf\x48\x49\xac\xcd\x74\xc5\xd0\xd1\xd9\xa4\xfe\x12\x6f\x8b\x31\xfd\xcf\xc7\x93\x33\xe9\xef\x4f\x4a\xac\x59\xfd\x6e\x2e\x33\x93\x0d\xc7\x0d\xdd\x8e\x34\x6b\x17\x52\xf6\x79\xd5\x43\x0a\xfe\xac\x28\x92\x18\xc7\xf5\x5e\xed\xe9\xd2\x7e\x6b\xfc\x3f\x9b\x01\x09\x14\xd7\xa3\xee\x2a\x87\xa2\x5f\x54\x28\x7a\xbd\x0e\xcc\x61\xab\xa5\x6f\xf1\xb6\x8e\xb3\xe3\xb7\x12\x6d\x2d\x2d\x89\x6f\x25\xb4\x38\x09\xcd\xb0\x39\x97\x55\xf0\x5e\xfa\xa7\xfe\x68\xf7\xa9\xf1\x83\x6b\x87\xbb\xef\x24\x7a\x27\xd1\xb6\x80\xcf\xd6\xd5\xbe\x69\x39\x80\x69\xc0\xb2\x37\x9c\x29\x96\x2c\xd9\x17\x3a\x0f\x20\xb8\xa6\xca\x7f\x3e\xb7\x0e\xf8\x67\x18\xc3\xb6\x80\x8a\x9c\xec\xd1\xbf\xee\x94\xd4\x7b\xd6\xc6\xf7\xc8\x62\xdb\xf8\x51\xbb\xf1\xb2\x69\xd3\x8a\x25\x35\xf3\x9d\x70\x77\x55\x36\x84\x1d\xcd\x7a\xb3\x87\x66\xb5\xe9\x15\x2d\xe3\x01\x3a\x92\x55\xda\xb2\x52\x4f\xb2\xfc\xc3\xd6\x42\xfd\x68\x99\x64\x59\x1c\x6c\x6e\x0f\xb4\x50\x91\x30\x4e\x65\x6f\x73\x7b\xb0\x4e\xe6\x73\xcd\x06\x17\xa6\xc0\xcd\x28\x80\xa9\xd3\x3a\xa3\xe0\x77\xde\x33\xff\xfc\xd0\xec\x7b\x80\x4b\x51\xda\xa1\x2d\x3b\x98\x3a\xc0\x27\xba\x32\x0f\x58\x83\x87\x2b\xd4\x5a\xc2\xdb\x14\xf3\x6f\x1a\x8b\xc5\xd4\xe0\xbf\xa5\x48\xe6\x54\x06\x78\x06\x8f\xf1\x0c\x17\xe3\x37\x1d\x98\xcc\xae\xc2\x47\x92\xd4\x16\xd8\x9b\xaf\x2e\xb0\x17\xff\xc6\x02\x33\x53\xf1\x52\x1a\xb7\x47\x1f\xe4\xd7\x9d\x32\xd7\xfc\xd3\x9a\x2b\x64\x46\x8b\x7c\x66\x2e\x8f\x31\x22\xfc\x61\x7b\x4a\x86\xb0\x21\xd3\xd9\x98\x3d\x4d\xc7\x58\x12\x61\x2e\x8c\x41\x12\x86\xfd\x97\xfe\x72\xa2\xf1\x32\xbc\x71\xe6\x32\x93\xa9\x04\x3e\x95\xb3\x59\xcc\xeb\x4e\x31\x37\x45\x01\xcf\x25\xd9\x52\x1b\x01\x2b\xfe\x20\x8d\xaf\x64\x1b\x77\xd2\xbc\x8d\x70\xe1\xc2\x50\x7e\xed\xa6\x5c\xe1\xee\xe1\x74\xde\x2c\x7b\x6e\xc4\x38\x77\x57\xef\x95\x24\xb2\x22\x1c\x5f\x5a\xd2\x8a\x55\xad\x3a\x0b\xb0\x29\x9b\xa1\x04\xc3\x86\x38\x47\xae\x3b\x6e\x04\x0d\x78\x4d\xe5\xa9\x0d\x2d\x4a\xd1\x06\xc7\xed\x03\xb0\x8d\x0b\x49\x6a\x8e\x6f\x74\xd5\x7f\x7c\x7d\x0a\xea\xca\x94\xba\xc8\xfe\x75\xd5\x75\xed\x98\xbd\xf2\x1e\x27\x6b\xe2\x6f\xa2\xdb\xfa\x22\x11\x33\x63\xd5\x72\x99\x0f\x43\x57\x3b\x10\x4a\x77\x33\xf9\x30\xe6\xb8\x48\x90\x47\x58\x46\xf5\xfb\x51\x92\xe9\xcc\x38\x7e\x87\xd7\x92\xcc\x7d\x50\x17\xf8\xc5\x5e\x32\xd5\x1f\x02\x08\xe0\xaf\xdd\xb2\x7d\x2d\xf3\xbc\xff\x8b\x2c\x60\xab\xcb\x75\xcd\xe2\x47\xb7\xae\xac\xd4\x5f\xf3\x0d\xa8\x26\x01\x04\x71\x35\xc3\x3f\x4a\x92\x6a\x5e\x62\x0d\x3f\x49\x73\xfb\x77\x95\xac\x03\x0c\x3f\xd8\xab\xae\xe6\xe5\x2f\xdd\xfb\xfd\x49\x77\xe9\x07\xdd\xa5\x55\xb2\xee\xea\xd1\x8f\xf2\xbf\x79\xe9\xf7\x67\xa3\xe0\xf9\x59\x4e\x77\x5c\x38\xce\x48\xf0\x25\xb0\x17\x83\x25\x29\x1d\x5e\x7e\x99\x05\x84\x78\x07\x1e\x3f\x4b\x0c\xbf\xc9\x2e\xef\x8f\x9c\x04\xcf\x7c\xab\xc6\x73\xee\x2e\x05\x28\x7b\x55\x20\x8c\x81\x72\xf2\xab\x9c\xac\x77\x9d\x85\xe8\x0d\x31\x6e\x3b\xc3\x50\x93\xe0\x43\x29\x75\xc6\xce\x1b\xa0\x9a\x04\xef\x37\xcb\x65\x10\xb7\x15\x95\x68\xe7\x5a\x56\xe5\x94\xd3\x68\x38\xaa\x03\x85\x02\x79\xdb\x2f\xa4\xf4\xd8\x30\x9e\xc8\x58\xf1\xc9\x1a\x51\x5c\xee\x74\x42\x10\x27\x3a\xa5\xfb\x00\xda\x8a\x86\x94\x4e\x6a\x20\x88\x79\x01\xd2\x0c\xb1\xe6\xc8\x74\x97\x2c\x96\x60\x0e\x06\x94\xdb\xc5\x35\x08\x66\x41\x31\xfe\x55\xe6\x39\x55\x68\xc7\xf9\x5c\xcd\xe1\x8e\xe4\x0d\x47\x32\x56\x6f\xc6\x89\x88\xdc\x06\x05\xc1\x5b\x2e\x06\x12\x6e\xae\xe0\xda\x64\xef\x12\x39\xc0\xb0\xe1\xce\x29\x72\xd5\x4e\xb6\x93\x69\xc1\xc9\xee\x29\x76\x0d\xb0\x7c\x42\xd1\x11\x92\x78\x3a\x9c\x81\x9c\x8e\x66\x38\xa6\xa8\xbc\xfa\x58\x06\x09\x54\x91\x3f\xe0\x36\x47\xee\xa5\xf5\xa9\x08\xc3\x23\x24\xca\xb0\x54\x60\x02\x9e\xf1\xee\xc0\x16\xad\xb9\xb5\xda\x7a\x61\xc8\x99\x2a\xc3\xa6\x6f\x96\x8a\xd0\x62\x4f\x3c\x8b\x2a\x18\x74\x22\x7b\x4e\x4d\x04\x0b\x30\xee\x1a\x61\x4e\x24\xb5\xb6\x42\x93\xc7\xf1\xc8\x86\x75\xc5\x09\x51\x63\x1f\xee\xb4\xc3\xa7\x65\xda\x15\xd8\xac\x5f\x0b\xf1\x38\xcd\xf8\x2c\xcf\xd5\x34\xf8\xe7\x3f\x4b\x98\xce\xf2\x3c\xe1\x53\x3d\xef\x78\x56\x98\x60\x5c\x3b\x6e\xa7\xac\x77\x6f\xef\xc6\xc6\x94\xd4\x62\xb3\xe9\x54\x75\x75\xfa\x86\xa4\x38\x0c\x51\xc2\x23\x33\x8d\x84\x90\x9b\x3c\xdf\xf0\x69\xca\x67\xfa\x19\x5b\xba\xba\x21\x43\xc8\x48\xa6\xaa\x28\xef\xe3\xec\xe9\x66\xbc\x71\xae\x24\x17\x44\x4c\xe6\xe8\x08\xad\x89\x9a\x6e\x66\x66\x1a\xd7\x66\x1a\xe7\xc8\x24\xe0\x30\x5c\xd4\xbd\x64\x95\x6e\x51\x17\x75\xe2\x40\x0d\xd5\x4c\x48\x5a\x06\x15\xd2\x4d\x2f\x89\x0d\x78\x3d\xee\xa3\x35\x71\x3a\x8f\x04\x63\x43\xb8\x4c\x50\x84\xf6\xfd\x4a\xb4\x20\x0b\x8e\x12\x98\xc3\xda\xd2\x3f\x10\xa6\x03\xff\x46\x1f\xb0\x59\x14\x5d\xd4\xce\xe5\x19\x9a\x3b\x04\x18\xc3\x7a\x67\xad\xdf\x70\xd2\x1f\x8d\x3d\x39\x9e\x73\x32\x84\x3b\x4e\x6c\xf8\xf9\x9d\x3d\xbc\xb5\xc1\xe6\xfb\x73\x3e\x18\x14\x05\xd8\xc4\x7a\x36\x5d\x9b\xb9\x7b\xc9\xa7\x6b\xbe\x3f\xa6\xb7\xdd\x82\x0b\x29\x56\xe8\x8e\x37\x0c\x21\xed\xb2\x78\xbc\x7b\x28\xfd\xc0\x61\xc5\xe1\x9a\xc3\x55\x7b\xab\xdf\x73\x72\x88\xd8\xfa\x46\x70\x9a\xb3\xb5\x98\xe7\x6c\x9d\xcc\x71\xf4\x8d\xa6\xce\xf4\x9e\x5e\xdd\x32\x75\xc8\x6c\x80\xa6\x47\x14\xc3\xb1\xc6\x1b\x4b\x91\x1a\x13\x04\x38\xd1\x6f\x19\x55\x6f\x56\x2b\x3a\x67\x89\xa2\x70\xae\x53\xd2\x25\x4d\x64\x95\x76\xc9\x6b\xae\x57\x3e\xe9\x97\x77\x34\xcb\x92\x6b\x7a\x74\x93\x70\x4e\x97\xf0\x59\xa7\xbd\xf0\x26\x42\x47\x1a\x8a\x17\x06\x03\x3d\xe3\xed\xed\x72\xc1\x5b\xe1\xe3\xf4\x76\x70\xdb\xfd\x82\x4f\xd5\x6c\xec\x6e\x86\x9a\x17\x30\x4c\x3e\x9c\x76\x86\xd3\xac\xc1\xed\x19\x37\xcc\x17\xbc\x6d\x66\xd4\xc9\xc6\xf1\x3f\x2e\xe0\x7d\xf3\x93\x88\xd6\x22\x53\x6e\x1c\x48\x0d\x82\x00\x8e\x5d\xb4\x97\x54\x2c\x07\xc1\xe1\x61\x30\x38\xe6\xd1\x8d\xc8\x14\x2e\xc6\x27\x3c\x0c\xcf\x79\x9e\xa3\x93\x66\x2d\xad\x83\x8f\x0e\x67\x3f\x72\xec\xa3\xac\xd7\x8e\x3e\x8c\xb3\x1f\x7f\xf4\xc2\xa7\x83\xc1\x51\x73\xb5\x74\x1f\x3a\xab\xf8\x65\xd5\x34\x76\xec\x97\xf7\x26\x87\x0b\x78\xe0\xe8\x88\x63\x38\xe2\x85\x9e\xc5\x7a\x37\xeb\x20\x2d\x8c\xbb\x32\x3d\x95\x86\x7a\x5f\x72\x3c\x79\x68\xe6\xbe\xe4\x95\xe9\xec\xa9\x69\xab\x88\x3f\xf3\x30\xfc\xcc\x23\x2e\xee\xdb\xb9\x6d\x6a\x99\xf1\x13\x0f\xc3\xfe\x3d\x9f\xa0\x6b\x4e\xd0\x8a\x1b\x53\xe3\x4f\x1c\x47\x1a\x33\x3f\x86\x15\x37\x0f\xa3\x48\xf0\x95\x05\x3d\x79\xcb\xe1\x81\x6b\x44\x7c\xcd\xeb\x53\xa2\xd7\xfa\x08\xe3\xb8\x2f\xa2\x64\x3e\x3f\xbe\xa3\xd6\x53\x00\xe5\x54\xe6\x79\x87\x73\xe8\x5a\xd1\x3c\x17\x11\x5b\xe9\x76\xce\x8d\x44\x9e\xe5\x39\x43\xef\x39\xd6\xe5\xd8\x92\xc6\x9a\xcd\xa9\xcd\xb5\x1e\x50\x20\xb8\xa4\xc9\xfc\xc1\x1c\xb7\xa6\x37\x09\xbf\x36\xc1\xe5\xce\x51\x60\x85\xfa\xa0\xe9\xfa\xbb\xe5\x17\xbe\x96\x0d\x47\xbb\x35\xd5\x67\xf6\x85\x6a\xdc\x69\xb3\x4c\xa6\x5b\xbd\x0d\x0e\x29\xa3\xea\x82\xad\xa8\xd8\x28\x0b\x5a\x18\xe2\x22\x46\x0f\x9c\xbc\xe7\xb0\x0b\x12\x14\x38\x70\x06\xf0\x96\x43\x7f\x84\x9d\x55\xf8\x2d\x87\x33\x0e\xef\x38\xbc\xe0\xf0\x86\xc3\x23\x0e\x2f\x39\x7c\xe0\xf0\x9c\xdb\xe8\x58\x27\x1c\xcc\x5e\x8f\xcf\x79\x01\xaf\xb8\xf1\xe2\xf1\x85\x93\xe7\xdc\x78\xcb\xfd\xc3\x6c\x75\x67\xae\x74\x72\x65\x4e\xd0\xa5\x86\xee\xcf\xf4\xea\x47\xa6\xda\x5f\xe0\x63\x1d\x4f\xbc\xae\x33\x28\xbf\x70\xd2\x58\x75\x1f\x39\x86\x1f\x39\x79\xc5\x91\x80\xe0\x8f\x0d\xdd\xd0\x77\x2c\x95\x42\x25\xd9\x6d\x80\xe1\x27\x4e\x7e\xe4\x61\xf8\x23\xb7\x14\x61\xfc\x93\xde\x79\xb7\x7c\x47\xc8\x07\x6a\x5c\x78\xfc\xc2\xcd\x69\xf5\x47\xee\x02\x0d\x18\xd3\x32\xfa\x99\x29\x84\xc7\x67\x7c\x8c\xb7\x94\x9c\xf1\x68\xa1\x41\xa1\x1f\x0c\x79\xd2\x18\x9f\xd6\x43\xd7\x5a\xcc\x7b\xc6\x27\x2f\x38\xc2\xf1\x3b\x5e\x06\xfb\x2f\x8a\xda\x8b\xa9\x99\x2b\x2a\x11\x2e\xe0\x17\x9d\xb9\xde\xa9\x8f\xb5\x8d\x73\xcb\x71\x11\xff\xe1\x37\xc3\x1b\x4d\x18\xe0\x11\xaf\x62\x22\x58\xcd\xc4\x05\xfd\xac\xde\x8b\x39\x45\x41\x60\x7c\x5a\xf7\xfe\xe0\xba\x64\x24\x2c\x48\xd1\x23\x0e\xdb\xf4\x26\x91\x49\xaa\xa8\x7c\x91\xa8\xc4\xde\x6a\x69\x36\xfb\x88\xdb\xe0\x26\xba\x91\x37\xbc\xc0\xf1\x6b\x1e\x86\xaf\xb9\x17\x0d\x27\xe8\x25\x27\xd5\xab\x17\xaf\xe0\x03\x27\x2f\xb9\x11\x1a\x5b\xf5\x7d\x70\x9e\xc2\x5e\x72\xd0\xa3\xc0\x71\xf3\xf3\x17\xee\x6f\x36\x99\xaf\x66\x9d\xfd\xc0\xe1\x67\x0e\xbf\x72\xf8\x8d\x83\x12\x44\x4f\xd8\x2e\x37\xb7\x5d\xf0\x58\x99\x70\xcd\x3e\x8c\xd5\xf8\x9d\x9e\xba\x77\xbc\x8c\xcb\x7d\xa6\x67\xfa\x8c\x13\x0a\x7a\x1a\x30\xbc\xe3\x84\x16\x40\xc5\xae\x15\x00\x48\x7b\xec\xbf\xb6\x2b\xcc\xe0\x19\xd5\x38\xe6\xb6\xa6\x97\x55\x44\xc1\x9a\x43\xb5\x8e\x88\x93\xcf\x93\xb9\x97\x77\x5b\x2e\x3f\xa9\xf1\x12\xce\x4b\x53\x3b\x07\x47\x42\x29\xa2\x65\x92\xe6\x69\x74\x8a\xc4\x05\x48\xb1\x27\xbe\x80\x61\x47\x84\xa5\x54\x5c\xec\xba\xd1\x32\xa1\x15\x56\x88\x1a\x87\x58\x75\x37\x5f\xb5\x10\xe2\xd4\xdd\x9d\x91\x22\x5a\x54\x01\xaa\xd0\x10\xa4\xef\x18\xd6\xdd\x92\x1e\x30\x05\x88\x26\xf4\x2a\x46\x7e\x6b\x6c\xb0\xe2\xfe\xc8\x79\xe2\x57\x9a\xd6\xb6\xb4\x0f\x3e\x8f\xf7\xd6\xaf\x8a\xa2\x00\x26\x3c\x86\x48\x44\x8b\x1b\x49\x05\x09\x1c\x18\x03\xd8\x08\x1f\x9a\x2e\x13\xde\x03\xf7\x42\x34\x3d\x70\xa7\x02\xc3\x52\x10\xce\x61\x2d\x88\x88\xca\x19\x81\x1b\x51\x0f\x19\x7b\x27\x6a\xa8\xe5\x41\x18\x6f\x71\x0b\xaa\x8c\x37\xa9\x95\x30\xd0\x80\x6b\x41\x56\x02\xae\x44\x13\xd5\xdc\x09\x0c\xf7\x82\xf4\xfb\xe8\x46\x84\xe1\x8d\xf0\x91\x64\xef\xcc\xb1\xa8\x28\xad\x04\x4c\x02\x86\x63\x41\x8e\x14\x4a\x05\xb4\x7c\x89\xf5\xd1\x1b\xb4\x14\xb8\x5f\x4a\xc8\x4b\x81\xb1\xf9\xf2\xfd\xf7\x84\x90\x57\xb4\xf2\x33\xa6\x73\x5f\x89\xba\x00\x59\x52\x29\x07\x9a\x33\xb3\x5e\x98\xe0\xb6\x51\x5f\xb2\x60\x0b\x64\xdd\xc0\x75\xc6\xd7\x5c\x96\xd7\xd5\xfb\x23\xe7\xcc\x6c\x29\xca\x6d\x3d\xc2\xd0\x32\xbb\x41\xad\x2b\x36\xcd\xd7\xd2\x2d\x2c\x52\x3b\x2e\xe5\x12\x31\x23\x14\xfa\x48\xb5\x8d\x14\x4d\xc1\x06\x5b\xae\xb7\xc5\x89\x20\xc7\x22\xcf\xfb\x3b\x0b\xba\x4f\xc3\xb0\x7f\xc3\x9b\xbd\x96\x75\x8e\x5b\x73\x89\xe3\x3d\xdc\xf2\x57\xb9\x70\x69\x38\xed\xa2\x00\x85\x78\x9d\x59\x2e\xcf\x35\x9a\xf2\xe4\x52\x44\x2e\x5e\x76\xdb\x28\xdc\xc2\x02\x63\x38\xef\xc0\x32\xa5\x3b\x68\x13\x60\xb7\x8b\xf1\x40\x94\x58\x28\x69\xa9\x85\x16\x70\x29\xba\x02\x4d\xf4\x69\xc4\x85\x62\x0b\x46\xe7\x78\x5b\x3d\x7b\x27\x88\xc6\xc2\x9f\x3a\xab\xd8\xb1\x12\x8d\xee\x95\xbe\x0c\x88\xf3\xa9\x08\x8c\x8c\x08\xf1\xb6\x61\x09\x19\x8e\x7d\x8c\xa0\xa7\xc9\xd8\x5d\x1a\xb2\x72\x2e\xe1\xd3\x64\x30\x98\xc1\x92\xb0\xc9\x22\x12\xb7\xf1\x22\x5a\x24\x6c\x09\x6b\x73\x6a\x6d\xd6\x0d\xdc\x98\x67\xa3\x53\x9b\x93\x85\x23\xa1\x66\x7e\x96\x13\xc4\xf2\x1c\x3d\x26\xc4\x74\xcf\x2d\xd9\x30\xbc\x10\xd6\x00\xaf\x96\x48\x46\x18\xfa\x43\x42\xc8\x72\x92\x12\x11\xa3\x79\x18\xce\x3d\xa1\x84\x94\x2c\x91\xc0\x30\x0f\x43\x34\x77\x74\x19\x32\x6b\xf0\x90\x12\x42\x16\x1e\x55\x4d\x6e\xd0\x5a\x20\x8f\x3e\x0e\xd2\x9b\x84\xf1\x5e\xfa\x90\x6a\x31\x18\xc7\x68\x43\xce\x05\x4a\x31\x9e\x6c\x2c\xfd\x49\xb5\x0c\x8f\xe3\xb5\x4e\x8b\x6f\x90\xa8\xad\x82\x79\x18\xf6\x33\xd3\x05\xdb\x9a\x71\x49\x5d\xd4\x60\xac\xd9\xf5\xfa\x34\x8c\x40\x86\x61\xbf\x31\xca\xcf\x76\x94\x56\x0b\xf9\x69\x77\x56\xad\x9b\x4f\x36\xbe\x17\x13\x84\x38\x69\x22\x16\x14\x98\x1f\xcd\x0f\x7a\x02\x45\x41\x93\xe0\x24\x13\x9c\x48\xe0\xe6\x18\xc3\x66\x55\xd0\x1f\x99\x8b\x8e\x2d\x5c\x84\x38\xc6\x31\x27\x5b\x57\x41\x4c\xc1\x16\x8f\x65\x01\x88\x11\x31\x0d\x04\x0f\x06\x6a\x86\x27\x0c\x71\x1c\x07\x1b\x6e\x6f\x85\xcc\xcb\x41\x04\xf6\xda\x7d\x97\xe9\x97\x30\x7b\x5e\x2c\xe9\xd8\x5c\x42\x35\x58\x3e\x0c\xd1\x88\x90\x1d\xeb\xad\x89\xfb\x8c\x14\x8e\xcb\x47\x73\xc2\x85\x82\x0f\xbe\xcd\x9e\xeb\x65\xaf\x6a\xdc\xd8\xa0\x7e\xde\x21\x73\xc2\x73\x0f\x3b\x16\x8f\xe6\x46\x93\xe5\xf8\x34\x31\x14\x86\x10\x22\x49\x44\x73\x3f\x5c\x89\xc9\x9d\x70\x77\x36\xca\x31\x9f\x55\xcd\x72\x50\x38\xfe\x24\x50\x17\x40\x40\xb3\x05\xc6\x41\x75\x6d\xed\x5e\x89\x3c\x37\xad\x4d\x1e\xc7\x23\x70\x43\xf4\x2a\x1a\x17\x56\xda\x18\xba\x1e\x89\x2e\x31\x74\x64\xae\x54\xd7\x56\x4e\xdf\xfb\x08\x28\xe0\xe2\xaf\x0d\xbf\x3e\xa4\xb2\xa2\xd7\xb6\xf3\x81\x1f\x4e\xf9\xe1\xa6\xfc\x00\x0e\x5e\xd6\x3d\xc7\xb3\xf6\x22\xad\x45\x92\x29\x3f\x08\x4d\x18\xf4\x37\xa1\x21\x51\xc0\x69\x57\x21\x6a\xf4\x35\x79\x8e\xec\x83\xe6\x5d\x9d\x0f\x59\xec\x9b\x24\x12\x1c\x06\x22\x8f\xe1\xd2\xec\x15\xbd\x88\x71\x01\x6f\xbb\x6a\xb4\x38\x50\x57\xe6\x6b\xaf\x57\x6a\xd0\x8d\x09\x98\x5e\xf1\x66\x35\x54\xd0\x4b\x4d\x80\xfa\x2b\xbd\xba\x0c\xd2\x9a\xf7\x98\xca\xe8\x72\x11\xf8\xab\xbb\xe7\x02\x49\x3c\x16\x93\x16\xea\x74\x14\xc6\xaa\x6d\x46\x85\x69\x46\xf8\x78\x01\xcf\x04\x7a\x2b\xf4\x82\xd0\xb8\xec\x99\x40\xa7\xfe\xa5\x16\xd4\xfb\x54\xd8\xe0\x05\xd6\x0d\x23\x8e\xd1\xee\xe8\x47\xe5\xe8\x47\x3b\x25\xcb\x96\x5d\x0d\xc5\xf8\x58\x84\x21\x5a\x8a\x6e\xc7\x36\x75\x82\x81\x54\x53\xfd\xd5\x1d\x41\x58\x4a\xab\x52\x46\x72\x22\x07\x41\xcf\xf8\xd3\x19\x04\x8c\xdf\x39\x05\x4f\xe0\x2e\xad\xc3\x52\x80\xe6\xb4\x6c\xc0\xa3\x1f\x6a\xae\x80\x7d\xe8\xb4\x8d\x70\xaf\xe6\x2a\x06\x72\xc0\xb1\xc1\x0d\x3c\x74\xec\x5b\x0d\xcf\x9e\x0a\xef\x6a\xde\xf0\xb4\xe8\x87\xa6\x6a\x20\x73\x9f\xad\xed\x4b\x2a\xc0\x81\x03\x3c\xe2\xd5\xcf\x76\xab\xe8\xa7\x12\x3b\xc7\xd3\x19\x94\xab\x5d\x7f\xb1\x57\xca\x3c\x0f\xea\x84\x87\x86\x7f\xfa\x1d\xf4\x5c\x7a\x62\xb6\xd1\x14\xa9\x32\x13\x69\xc2\x29\xca\x5a\x60\x28\xb4\x14\x35\x5d\xf8\x56\x13\xf2\xb8\x03\x5f\x5a\x2d\x32\x59\x38\x20\x41\x42\x56\x02\x21\x49\x96\xa2\x3a\x21\x42\x82\x1c\x39\x2f\xf1\xcd\xa0\x47\xf6\x10\x03\x71\x72\x84\x04\x9e\x5e\xf1\x19\x9e\xc8\x98\x52\x8d\xdf\x2b\x87\x97\x91\xb8\x25\x5d\x31\xaf\xf2\x5c\x41\x62\xa8\x76\x97\xc1\x22\x0d\x43\x0a\x89\x23\xda\xc4\xa2\x11\xfb\xe2\xc3\x0c\x30\x87\x8b\xf4\x76\x63\x15\x01\x74\x2a\x29\x0c\xc3\x3e\x61\x76\x25\x87\xe1\xa5\x9b\x2f\xa6\xd7\x32\x24\x95\x08\x91\x36\x2f\xfb\xb6\x5c\xb0\x19\x1e\xd1\x4b\xc8\xc6\x38\xe7\xe7\x5d\x59\xdd\x08\x68\x3f\x70\xb0\x2b\x0d\x37\x85\x37\xd5\x94\xac\xfc\xce\x6c\x89\x57\x7e\x8f\x52\x23\x63\x45\x0b\xb2\xea\xc4\xc7\x1a\x89\x2c\x45\x9e\xeb\xdf\x5f\xf9\x44\xb7\xfb\xb3\xfe\x1e\x5f\x1b\xd1\x0b\xba\x1c\x64\x6b\x44\xf4\x1b\x27\xbc\x16\xef\xd9\x4a\xc6\x54\x21\xde\x0c\x02\x7d\x43\x79\x23\x92\x41\xf3\x5a\x54\x5d\x3b\xbd\x14\x6d\xb3\xeb\xdf\xb8\x47\x3e\x8e\xb5\xb0\xb0\xf3\xde\x26\x6a\x67\x3c\x5d\xbd\x7c\x10\xd6\xf9\x79\x15\x41\xa0\xe9\x0d\xd2\x1f\x29\x0e\x0b\xd8\x1a\xd9\xa8\x53\x06\x15\x68\x29\xe0\xc1\xdb\x3d\x8b\x5a\xec\x2f\x83\xe2\xfe\x24\x48\xc1\xb1\x28\x60\xeb\xd0\x72\xbc\x14\x85\xf1\xee\x6d\x90\x8b\x59\x33\xbb\x42\xbf\xb0\x37\x30\xc8\xb3\x68\x31\x4e\xc2\x50\x0b\x04\x74\x2a\xf8\x2c\x0c\x25\xa2\x20\xf8\x5f\x8d\xc0\x60\x34\xe7\x05\x2e\x8c\xc0\xf8\x2b\xd7\xf5\xea\xa7\xda\x11\x6b\x2a\xda\xde\x61\x4d\x67\xed\xe2\xe9\x08\x55\xb0\xf2\x18\xaf\x76\xb1\xd1\xba\x86\xd0\x53\x54\xae\x67\xa0\xe5\x3e\x28\xfe\x5a\x7b\x66\x11\xef\x81\x7d\xe9\xd1\xe8\x4f\xaa\x3a\xd1\x55\x25\xcb\x65\x47\xbf\xdd\x89\xfd\x4a\xd8\x88\x39\xa5\xdc\x0f\xc2\x3c\x1b\x4e\x9e\xb5\x99\x26\xe7\x3a\x84\xa2\xd2\x62\x00\x9b\x88\xcf\x5a\x7c\x80\x94\x8c\xc6\x4b\xbd\x0c\x77\x8e\xe0\x36\x24\x19\x0c\x34\xb3\x3e\x1a\xbb\x48\xce\x5e\x7b\x94\x0e\x06\xde\x2d\xb6\xc6\xfe\x6d\x41\x51\x63\xff\x3c\x47\x99\x41\x3b\xd3\xcd\x8c\x28\x38\x38\x48\xf3\x9c\x23\x66\x0c\x6a\xcd\x1d\xd3\x2a\xa9\xa8\xc5\x87\xf6\xcc\xa8\x40\xcc\x71\x37\x75\x6d\x86\x4c\x5a\xe1\xfb\xf7\x02\xc5\x00\x42\x74\x01\x42\x34\x01\xd1\x31\x76\xd1\x1e\x59\x05\x65\xee\xae\xa5\xf9\xfe\x0a\xdf\x5f\x8e\xc4\x6e\x7f\x9d\x7e\xec\xbd\xd8\x45\x88\x8e\x58\x18\xdb\xf9\xca\xa7\x9e\xdd\x79\xce\x5e\xde\x1c\xb8\x47\xec\x9a\x0b\x49\x8f\x92\x8c\xba\x64\x16\x58\xa7\x91\x4b\xc5\x96\x8c\xfb\xd4\x95\x49\x9d\x0b\xf5\x6c\xe9\xcb\x67\x26\x69\xc3\x59\x6a\xec\xbd\x4d\xda\xc6\xa4\x65\x8a\xa5\xb7\x0f\x2e\xe9\x21\xc0\x40\x6b\x9e\x6b\x6e\x45\xe3\x12\xdc\x19\xbd\x3e\xfe\xbc\xb6\x58\x4a\x77\xfd\x4c\xc0\x3b\x01\x2f\x04\xd9\x7e\x78\x7f\xfe\xe1\xf4\xf4\xe4\xec\xe2\xf8\xc5\xe5\xaf\x71\x57\xc8\x85\x5b\x81\x82\x24\x00\xdd\x44\x35\xc6\x65\x92\x29\x13\xd2\x8d\x3c\x06\x77\x7c\x1a\xd1\xcf\x34\x45\x41\x72\x95\xce\x03\xb3\x34\x9e\x9f\x9d\xfc\x78\xfc\xfe\xf2\xe8\xd9\xd9\xf1\xc5\xde\x9a\xff\x25\x03\x08\xae\xff\x62\xdd\x99\x92\x81\x65\x94\xdf\x08\x62\xc7\x54\xc3\xf6\x3a\x0f\x3c\x12\x4e\xbb\xb3\x7b\x71\x0e\x5e\x0a\xf2\x46\xc0\x07\x41\xd0\x99\x20\x87\xc9\x21\xbc\x13\xe4\xf0\xea\x9b\xc3\x6b\x78\xe3\x56\xcb\x99\x80\x20\x09\x70\xf9\xfe\xce\xbd\x0f\xfb\x84\x9c\x89\xaa\x67\x79\xae\x53\xde\xd5\x52\x30\x3c\x17\xe4\x85\x88\x1a\xf0\xcc\xf3\x17\x22\xaa\x83\x01\x5e\x09\x52\xaa\x30\x0f\x11\x9e\x4c\x0e\xdd\xd0\x02\x3c\x1d\xcd\xc6\xe8\x83\xc8\xf3\x57\x22\xcf\x9f\x0b\x2d\x38\xbd\xec\xd4\x9a\x3a\x4e\xc6\xec\x97\x84\x3c\x17\x26\xa2\xb3\x59\x0c\x90\x92\xf7\xae\xe7\x0c\x1b\x1f\x19\x99\x71\xb8\x0c\x19\x19\xc2\x82\xa8\x5a\x14\x21\x74\xa0\x05\x45\x94\x92\xb4\x8c\xbd\x1d\x3c\x04\x10\x68\x79\xd7\x3b\x27\xd2\x8b\x37\x0c\x51\xea\x96\xf1\xa2\x0a\x0d\xe3\x2e\xb3\xb1\xfa\xf8\x6b\x2f\x4f\x87\x61\x88\xfa\xac\x5a\xdf\x79\xce\xea\x8b\x3d\xf8\x5d\xf3\x47\x44\x4d\x6b\x65\x0e\x46\x26\x52\xe4\x86\x04\x68\x12\xf7\x82\xc1\x66\x10\xe0\x00\x16\x24\xe8\x05\x83\x05\x64\x83\x81\x0f\x59\xeb\xd6\x72\xf0\x2f\x34\x89\x7d\xb6\x14\x63\x78\x25\x8c\xa8\xd9\xc8\x62\xbe\x3f\x42\x93\xfe\xef\xbf\x67\x2e\xdb\x07\x61\x24\x96\x46\xd7\x39\xf1\x13\x9e\x4c\x64\xcc\x60\x81\x21\x99\xf0\x09\xd2\x32\xfe\x7a\xa3\x88\xfb\x75\xa3\xce\x30\xf0\xe9\x70\x46\xf4\x9f\x5a\x92\x05\x5b\xbd\xe2\x3a\x48\x06\x36\xbb\x3b\xcc\x8f\x6b\x5f\xc8\x30\xd6\x7d\xd2\xfc\x4b\x3d\x95\x39\x3c\x32\x71\x15\x0f\x6a\xe5\x63\x6a\x87\x6b\x7c\x2d\x7a\x4b\xa2\x30\x7c\xe4\x06\xc1\x8d\x59\x07\xb4\x35\x50\x82\x8c\xc6\x62\xc7\x1e\xf8\xe0\xf1\x58\x0c\x06\xb8\xe4\x81\xab\x33\x4e\x31\x0b\x43\xc4\xa7\x62\x46\x2a\x73\x2e\xe0\x0e\x1d\x7e\x11\xe4\xa5\x68\x98\x47\x59\xa0\xef\xda\x47\x1d\x46\x76\x8d\xf7\x09\xf9\xa2\x49\xa2\x7e\x8e\xbf\x08\x57\xcf\x1f\x6d\xf5\xf3\x47\x41\x3a\xe2\x67\x28\x72\x18\x1d\x56\x28\x42\xd7\xb1\x8b\x8e\xab\xe8\x63\x2a\x32\xd6\xf4\x19\xd9\x26\x71\xf0\xf7\xa0\x00\x55\x40\xf0\x77\xbd\xe6\x82\xa0\x5c\xef\x0a\x82\x47\x4f\x92\xa7\x16\x59\xbd\x16\x24\x78\x34\x0c\x08\x21\x41\x52\x65\x39\x8c\x0e\x41\x27\x63\xf8\xc5\xf6\xd3\x7d\x08\x30\xfc\x28\x48\xbf\x7f\x18\x1d\x4e\x7f\xd1\x70\x32\x5e\x76\xdc\x9b\x45\x97\xa6\xd4\x4f\xfb\x06\x83\x26\x31\x3e\x34\x17\x32\xf4\x50\xc6\xbb\x23\x2a\x39\x9a\xda\xe5\xb6\x5a\x8c\x57\xa7\x86\x0d\x92\xab\xc0\xb9\x81\x2c\x0f\x12\x7a\x8f\xfb\x84\x78\xc7\x42\x79\x1e\x24\x7a\xd8\x72\x3a\x9c\xe5\x79\x70\x65\x9f\x47\x33\x3d\xe4\x1f\x3a\x79\xef\xca\xc2\xb3\x52\x91\x69\x74\xe3\xf6\xfe\x1d\xa2\x58\x0b\x4f\xd6\x18\x3c\x25\xac\xbc\x20\xe8\x50\xcb\x93\x61\x9e\x27\x4f\x49\x3a\x51\x93\x20\x70\x22\x4c\x8c\xcc\xa5\xbe\x9b\x44\x1e\x89\x39\x7d\xa6\x50\x82\xf1\x93\xef\xbe\x7b\xfc\x8f\xef\xf3\x9c\x3f\xfd\xee\xfb\x6f\x47\xff\xc8\xf3\x64\xa0\x31\x52\x9a\xe7\x48\xb4\x32\x0f\x46\x3a\xfb\xf7\xdf\x3e\x1e\xe6\xb9\x78\xfa\xdd\xdf\xbf\xfd\xdb\xb7\x13\x35\x61\xfe\x92\x5a\x82\x63\x1e\xeb\x77\xbb\x17\x13\x48\x06\x8f\x71\x2c\x0e\x4c\x89\x01\xe2\x07\xa6\xa5\x27\x4f\x46\x43\x3c\xf8\xfe\xbb\xef\xbe\xfd\xbe\x28\xe0\x67\x41\xb6\xa9\xa9\x3e\xfe\x41\x20\xcd\xf7\xda\xca\xcc\xdb\x10\x17\xae\x6e\xf8\x75\x57\x6b\xe8\x67\x46\x4b\xec\x3f\x5b\x32\xeb\xb7\xe5\x08\x17\xf0\x5b\x5b\x5f\xe4\x1d\xa5\x99\x89\xee\x8e\xee\x53\x5e\x21\x2f\x1d\xb7\x50\x63\x35\xe4\x2d\x6d\x4a\x59\x92\xef\xea\x10\xec\xb6\xeb\xe9\xda\x7b\xd6\x3a\xbb\x67\x7b\x48\xe7\xbd\x4c\xe8\x14\xc6\xaf\x7b\x42\xdd\x50\xd9\x53\x37\x09\xef\x25\xfe\xfe\x41\x4f\x48\xe3\x35\xbd\xa2\xbd\xbc\xd0\x8d\xba\x8d\xdc\xb7\x31\xf5\xf7\xb5\xf8\x1f\xa6\x45\x63\x4c\x37\xef\x09\x2d\xa3\xa7\x62\xb5\x4e\x14\xbb\x5a\xd2\x9e\xa4\x29\x65\x77\x26\x72\x8a\xab\xfa\x8b\xa8\x86\x56\x80\x62\xe4\x5d\xa2\x6e\xa2\x55\xf2\x19\xa8\x7f\x66\x1c\xa4\x7b\x5e\x2c\x85\x90\xc0\x19\x39\xfc\xfd\x11\x9a\x3e\x0a\xff\xeb\x7f\xcd\xf2\xdf\xe7\xbf\xcf\x27\xf9\x93\xe9\xbf\x9e\xce\xbe\x79\x8a\x0f\xaf\x41\xec\x7e\xc6\x87\xd7\x5d\xde\x74\x2c\xc7\x68\x83\xca\x25\x5d\x3b\x92\xd6\x2e\xd2\x52\x8d\xf1\x76\x77\xe2\xdf\x0b\xf8\x7b\x9f\x04\xc1\x54\xcd\x9c\x83\xc3\x94\x24\x3b\x21\x6b\x6c\x65\xfd\x11\x48\xcd\x60\xf8\x48\x55\x66\x87\x3a\x55\x2e\xb2\x77\xe6\x5b\x07\x36\xd6\x7f\x8b\x4f\x98\xfe\xd1\xd9\x05\xa9\xb3\x2d\x96\xc9\x75\x46\x82\x00\xa4\xee\xa7\x46\x39\x62\xa6\xd9\xd5\x7d\x08\xc4\x28\xe9\x36\xcb\x65\x61\x0a\x98\x53\xea\x3e\xd5\xcc\x2f\x5b\xa0\x7e\x92\xe7\xfd\x34\xcf\x4b\xb4\xe6\xba\xd8\xff\x28\xf2\xbc\xff\x5a\xe4\xf9\x8f\x02\xe7\x79\xa3\xff\xfd\x9f\x84\x17\x2c\x6c\xe3\x90\x11\x89\x04\x18\xc8\x34\xa5\x6a\x68\x86\xb5\xb6\x1c\x1a\xd1\x64\x60\xa2\x21\x27\x26\x4e\xb9\xe6\xb5\x42\x9b\x46\xac\xec\xb8\xf5\x55\x95\x51\x42\xeb\x5f\x4d\x50\xb7\xed\xd9\xf1\xe9\xdb\x67\x47\xc7\x97\x3f\x1e\x1f\x9f\x9e\x5f\x3e\x1a\xc6\xaf\x05\x9c\x1d\xbf\x3a\xfe\xe5\xf4\xd2\x7f\x3a\xff\xf0\xfc\xfc\xe2\xcd\xc5\x87\x8b\xe3\xf3\xcb\x0f\xef\x5f\x1c\xbf\x7c\xf3\xfe\xf8\xc5\xe5\xd1\xb3\xd3\x8b\x0f\x67\xc7\xf1\x8f\x5a\x0e\x5e\x90\x4c\x53\xce\x25\xc9\x34\x2f\x46\x15\x6a\x73\x92\xa0\x34\x6b\x40\x15\x6a\xf3\x9e\x20\xe0\x31\x21\x74\xd2\xdc\xf9\xcd\x7b\x83\xca\x6b\xdf\x3a\x23\xc9\x36\x32\xe1\x02\x17\x3c\x0c\x4f\x77\xda\xd1\xe0\x0e\xb2\x9b\x64\x15\x98\x2b\xf7\x15\x3d\x82\xc7\xbb\xa0\xf7\xeb\x9e\x47\xff\x0e\x28\x8c\x0b\x98\x36\x3c\x21\x21\x62\x12\x3c\x0a\x62\x4d\xd6\xdc\xaa\x9e\x96\xed\xd5\xda\xba\x73\x12\x11\x23\x56\x65\x26\x27\x8e\x02\xc8\x2a\x4e\x51\x65\x48\xca\x26\xcc\x4f\xaa\x00\x8e\x63\x77\x6f\xd3\x91\x1a\x81\xed\x42\x80\x1d\x8b\x80\xbe\xe6\x79\xf5\xba\x6c\xf9\x3c\xe0\x61\x68\xd8\x5a\x5e\xb2\xb0\x09\xf6\x8b\x55\x22\xef\x5c\x02\xb8\x59\xfc\x1b\xab\xcb\xf6\x17\x0c\xdc\x21\x81\x75\xaa\x67\x8e\xf1\x2b\x7e\xd7\x0c\xa9\x53\x7b\xc7\xc7\xcb\x3c\x47\xdc\xe7\xe4\xce\x68\x67\x4d\x32\xc7\xbe\x8d\x4d\x10\x6f\xd3\x87\x1b\x92\x79\x41\x6e\x9c\xd5\xf9\xbf\xc2\x6b\x3a\xe7\x9a\x85\x71\xe7\x7f\x77\xe4\x37\x81\x32\x58\x58\x9f\x84\xd6\x88\xfa\x0e\x5f\x49\x9a\xdc\xea\x94\xb9\x93\xe5\x31\xf4\xd7\x2e\x35\xa8\x19\x7f\xdf\x4d\x87\x86\x9d\xae\xb7\xf3\xab\x40\x0b\xc8\x54\x3d\x0d\xc3\x0d\xc6\x65\xf3\x0f\xb0\xd2\x88\xc5\x86\x36\x1f\x8e\xaf\x9e\xcc\x3d\x71\xbf\x32\x77\xc6\xc8\x7c\x7a\x35\x2b\x43\xee\xdc\x37\xda\x82\x63\xa2\x18\xa2\x0c\xa5\x0a\xdd\x59\xf0\x63\x58\x94\xe1\xd2\x87\x18\x4e\xc8\x74\x06\xe7\x64\x34\x3e\x7f\xe2\xc3\xa8\x8f\xcf\x07\x03\x7c\x52\xd7\x4a\x68\x99\xe4\x81\xdc\x4d\xcf\x67\x78\xf2\x10\xbb\x06\x1e\x1c\x54\x2f\xc9\x9d\xe3\xeb\x34\x04\x96\x16\x4e\x9f\xc8\xf4\xbe\xbc\x59\x7b\x02\xc7\x1a\x62\xe5\x02\xbb\x0c\xc3\x4f\xb6\xfa\x4b\xe7\x0e\xa2\x9c\xa9\xa6\xf1\xdd\x27\xec\x62\xa3\x7f\x26\x29\xba\x87\x05\x1c\xc3\x09\x5c\xea\x95\x72\xfc\x94\x5c\x87\x21\x5a\x0d\xc8\xc2\x31\x18\xd7\x70\x8c\x07\x9f\xe1\x9a\x1c\x0f\xee\xfd\x00\xfd\xa1\xf5\x6a\x50\xe6\xc2\xc5\x6c\x5c\xbf\x2f\x51\xbf\x3c\x62\x2f\x8e\xf0\x81\xb7\xee\x85\x4d\x75\x65\x26\x23\x82\xed\xee\x14\x2d\x1d\x90\x5b\xe3\xde\x2b\x23\x9c\x61\xef\x5f\x3b\x81\xa6\x0f\x78\x57\x79\x36\x76\x71\xe3\x13\xcf\x25\x0d\xb1\x8d\x20\xaf\x77\xb1\x23\x4b\x8f\x02\x13\x23\x3e\x08\x7d\x4a\x4f\xd9\x84\xff\x55\x26\xc8\x9a\x9f\x41\xfb\xed\xbf\x76\xbe\xa5\xee\xcb\x93\x20\xce\x08\x9b\x26\x2e\x79\x04\x07\x23\x3c\x1b\xdb\xb5\x39\xa7\x8b\x64\xb3\x54\xb1\xee\xdb\x82\x0c\x12\x3d\x81\x7a\xb2\x17\x95\x51\x0c\x5b\xa0\xc5\xd3\x8d\xed\xfe\x92\x48\x86\x16\x87\xa3\x2a\x22\xb6\x3d\x99\xa6\xf1\xf2\x09\xd9\x4c\xca\xb5\x22\xa6\xcb\x83\xd1\x6c\x52\x0e\x72\x84\x63\x9b\x34\xa8\x27\xd1\x22\x23\x62\xba\x38\x18\x95\x37\xae\xcb\x0a\x32\xcd\xa4\x66\x85\x55\x9c\xda\x18\x5d\xec\x4f\xbd\xc2\x96\x17\x9f\x8c\xb0\x69\x5d\x3d\xb4\xc5\x2a\x2d\x54\x0e\xc7\xfc\x89\x67\xc4\xc7\x7c\x30\xc0\xc6\xe9\x46\x25\x60\xf1\x9a\xbc\x52\xdd\xc4\x29\x0a\x48\xd8\x4e\x24\xfb\xf2\x5e\x42\x6d\x4d\xb1\x9a\xfb\x17\x7f\x37\xc1\xf4\xc6\x5c\x03\x49\x58\x65\xd6\xed\x8b\x6c\x58\xfb\x56\x92\xb9\xb0\x51\x65\xc8\xd8\x5f\x0d\xa9\x53\x16\x59\x74\x75\xc3\x9b\xb9\xee\xed\xc9\x92\x95\x26\x26\xde\xfc\xbe\x8b\xe1\xad\x79\xb1\x31\xc3\xc5\x15\xec\x87\xc0\xcb\xe0\x0a\x63\xf9\x84\x8f\xe5\x60\x80\x69\x2d\xe0\x9d\x0d\x19\x04\xca\x3a\xbf\xef\x35\x02\x4a\x28\xbc\x03\xe0\xa6\x4d\x73\x19\x2e\x10\x97\x0e\x10\x5c\xa5\x62\x06\x02\x94\xd5\xa3\xad\x19\xd9\x3a\x67\x1f\x71\xca\xc0\x3d\xda\xf8\x56\x1d\x54\xbe\x39\x4b\x36\x5b\x1b\x42\xc0\xb2\xbd\xe5\x6b\x33\xd2\x37\x53\x19\x86\x3e\xa5\xce\x3e\xba\xaf\x8d\x33\xac\xce\xcb\x30\x8d\x2c\x91\x6f\x38\x0c\xbb\xd3\x5d\xef\x5e\x0a\xb9\x32\x76\x8c\x1d\xe3\xeb\x88\x9d\xe0\xb3\x87\x61\xe3\x38\xd4\x27\x17\x4d\xa0\x7d\x64\xf4\xfe\x2f\x56\x5c\x2b\x15\x86\xb5\x97\x88\x65\xba\x96\xc9\x6e\x12\x52\x38\x36\xf6\x9f\x57\xe5\x38\xed\x53\xbd\x63\xb5\x62\xba\x6f\xed\xcb\x40\x5f\x71\xb8\xa4\xb3\xdb\x18\x0d\x5d\xd9\xb9\xf9\xd2\xca\x6e\x17\x61\x9c\xe9\xa5\x53\xde\x99\x8a\x37\xfa\xf5\x45\x33\xea\xf0\xce\x12\xd2\xdf\x3b\xd6\xce\x4b\xb6\xfc\x6a\x31\xfd\xbd\x6b\xc9\x2d\xc5\xd5\xd7\x8a\xe9\xef\x5d\xad\xb9\x12\xf1\x82\x59\x58\xd1\x64\xd5\xb5\x6e\x33\xbb\x58\x35\xaa\x88\xd6\x6c\x4d\x4d\xe1\x0f\x67\x6f\xcf\x69\x22\xd3\x9b\xd3\x44\x26\xab\xae\x1b\x99\x5d\xd3\xde\x2a\xd5\x5a\x56\xad\xaf\x76\x06\x13\x3e\x4f\xe4\xfc\xb9\x14\xf7\x19\x95\xc7\xfc\x6e\xf7\x6c\x0a\x75\xf9\x49\x29\x43\xd9\xe6\x79\x70\x46\x93\x54\xbd\x37\xf6\x7c\x5a\x30\x2e\x3f\x69\xfc\x31\xdf\xa4\x1a\x45\xda\xaf\xd6\x5e\x7d\x6f\x9e\xf3\xce\x2f\x9a\x53\xfb\x5a\xdc\x91\xae\x6f\xde\xae\x52\xf3\xc7\x2e\xf8\xe5\x92\xc1\x8a\xca\xeb\x6a\xfe\x7b\xaa\x2e\xdf\x96\xa9\xd2\x72\xec\x3b\x48\x9d\x4e\xf9\xac\x03\xd7\xcb\x89\xfe\x40\x14\x72\x47\xef\x31\xb5\x11\x29\xcb\xf3\x79\x32\x04\xb1\xeb\x31\x8a\x3f\x11\x86\xe8\x2d\x19\xaa\x93\xbc\xda\xd9\x3d\x2d\x60\x4e\xe9\xfa\xdd\xff\x67\x7d\xee\xc8\xa6\x90\x16\xbe\x71\xfc\xff\xce\x70\xe8\x67\x45\xf9\x7c\x27\xa6\xb4\x97\xf1\x18\xa2\x0d\x66\x8d\xe3\xad\x8d\xee\xd9\x7d\x55\x71\xc2\x98\xe1\x08\x62\x6a\x2c\x97\x0b\x50\x92\x75\x6e\x2f\x55\x29\x2c\xff\xf5\x7b\xf6\xcd\x21\x04\x01\xae\x92\x7e\xcf\xbe\x79\x64\x92\xea\xa1\x0d\x6e\xea\x84\x9e\x72\x2d\x94\x7c\x38\x7b\x53\xfa\xeb\x41\xaa\x56\xc1\x7f\xfe\x6d\x78\x78\xcd\x20\xf8\x67\xbd\xd6\xff\xfc\xf6\x99\x49\x8c\x1b\x89\x8f\xff\x76\x78\x0d\xc1\xa3\x66\xda\x91\xc9\x08\xcd\xc4\xa1\xce\x38\x68\xa4\x7d\xf7\xdc\x64\x9c\x36\x13\x5f\x98\xc4\x59\x60\x29\xee\x9c\x75\x1b\x67\x96\x97\xf7\xac\x35\xa6\xe6\x26\x25\xe6\x5a\xea\x73\xe4\x5f\xcb\x61\x2c\xda\xc1\x3a\x88\x62\xcc\x49\xc5\x5e\xa1\x5a\xa8\x1c\xa1\xc5\xb1\x35\x2b\x7d\x4b\xd0\xb6\xd1\x80\xe3\x5c\xc2\xd0\x56\x5d\x3a\xfd\xa2\x03\x12\x4c\x67\x41\x6c\x38\x17\xa8\xd5\xd0\x3a\xa3\x34\xa5\x5e\x58\x5f\x7a\x13\xe3\x3a\x57\xbc\x39\x3f\xf1\x1d\x89\xcd\xe7\xf2\xc2\xab\xe1\x84\x7e\x38\x3f\x79\x1f\x95\xc1\xcb\xcd\xed\x4b\x17\x88\xfc\x86\x21\x8a\x07\x01\x09\x06\x66\x6a\xad\x47\x58\xac\xd9\x50\x61\xee\x5e\xa3\x20\x0c\x70\xa1\xd9\xad\xea\xfa\x77\x79\xd0\xf3\x1f\x01\x1e\x1f\x8c\x9c\x9c\xa1\x3b\xe2\xb9\x7e\xe3\x94\x79\x40\xec\x69\x51\xad\xc0\x24\xc0\x93\x60\x12\xc4\xba\xd2\x01\xaf\xbc\x64\x54\x0b\xec\x8e\x79\x77\x0f\xce\xd3\x75\x46\xa6\xb3\xe2\x8e\xd5\x3d\x34\x66\x7b\x1c\x80\x36\x8a\xd9\xe1\x6d\x17\x9b\xe5\x82\x2d\x97\x74\x1e\x2b\x67\x59\x44\xe7\x7a\x63\x40\x33\xb3\xf7\x57\x56\x40\xa3\x29\x6b\x7e\xd2\xb0\xad\xae\x17\x9b\xaa\x99\xf7\xe2\x5b\x4b\x32\x3a\x0c\xdc\xaa\xc9\x87\x04\x6d\xcd\x63\x39\xc3\xf5\x3a\x9a\xce\x7b\x1c\xab\x46\xc3\xd0\x05\x74\xb1\x5a\xfc\x07\x46\xee\x18\xac\x76\xd7\xb5\x03\x46\xad\xf2\xfa\x99\x8e\xc4\x5b\x45\xa4\x37\x70\xd5\xd8\xe1\x9a\x75\xe8\xf3\xfb\xc6\x29\x61\x5f\x45\x97\x97\x47\xcf\xde\x1f\x1d\xbf\xbd\xbc\xc4\xb5\x59\xba\x62\xe5\x95\x45\x2d\xcb\x38\x0d\x6f\x75\x73\xa9\x77\x93\xd8\xeb\xac\x57\x94\xf2\x9e\x27\x42\x35\x3e\xfe\xbe\xb3\x02\x73\x23\xe9\x4f\xaa\xd0\x63\x3f\x66\xe4\x8a\xc1\x09\x23\xf7\xac\xea\xd3\x39\x73\x17\x0d\x8f\x99\x96\xd0\xca\xbe\xf8\x2d\x5e\xbb\x57\xa5\x60\x68\xf4\x23\x36\xeb\x15\xcb\xf3\xfe\x31\xc3\x61\xb8\x5b\xe8\x98\xd5\x6a\x82\x76\x15\xb5\xab\xd1\xc7\xcc\x24\x55\x77\xa1\x1b\xdf\xea\x92\x40\x23\x57\x2b\x87\xbb\xef\x3f\xc4\x45\x51\x74\xa0\xf6\x85\x89\xe8\xe0\xba\x10\x86\xa8\xd1\xbb\x4e\xcb\xa1\x85\x8c\xea\x40\x0d\x43\x74\xc2\x48\x3d\xc5\xa9\x48\x18\x7c\x32\x46\x21\x9f\x19\xe9\x8f\xe0\x88\x91\x83\x51\xcd\xb3\xa1\x9e\xac\xcf\x2c\x0c\x2f\xf5\x3e\xb7\x59\x2e\xfd\x09\xce\xe4\x13\x23\x97\xcc\x6b\x52\x3e\x31\x1c\x9b\xd2\xf0\xc9\x67\x08\xc3\x67\x0c\xd5\xdd\x8a\xeb\x57\x83\x7d\x3f\x33\x7f\xb0\x75\xce\xd0\x05\xc3\x63\x5d\xf5\x70\x5c\x5d\xad\x2c\xeb\x18\xd3\xb1\x95\x9f\x2f\x19\xf9\xe4\xfa\x3a\x1e\x0c\x8e\xd8\x13\x3a\xc6\x97\xa6\x67\xd3\x23\x36\x8b\xe4\x86\x23\x3c\xb6\x1d\xa8\x15\x2f\x2e\xad\x62\xd1\x0d\xaf\xbe\xdc\xd9\x42\x43\x84\x34\x61\xe2\x66\xa5\x9e\xe6\x3c\x3d\xd9\xcc\xf7\x7a\xc5\x9c\xe8\x15\xd3\x55\xac\x05\x61\x68\x57\xa3\x57\xc6\x09\x33\x6e\x3d\x3a\x16\xcb\x49\x63\xb1\xec\x2e\x95\x13\xd6\x8a\x90\x56\xa0\x46\x9c\xb4\x53\x56\xbb\x33\xbf\xd8\x70\x6f\x62\x97\x98\x6b\xe3\xb4\x38\xad\x63\x25\xb9\x69\xd8\xeb\xf9\x32\x4e\xad\x60\xbb\x50\x16\xae\x23\x80\xb7\x7a\x0e\xcd\x5e\x7c\xcf\xc8\x5b\x06\xb7\xe6\xef\x99\xf9\xfb\xce\xfc\x7d\x61\xfe\xbe\x31\x7f\x1f\xe9\xbf\xd6\x4b\x0c\x23\x0b\x19\xad\xa9\x5c\x08\xb9\xd2\xcc\x77\x9e\x6f\x0b\xf8\xc0\xc8\x4b\x16\x71\x71\x9f\xe7\x2f\x59\xb4\x12\x5f\xde\xfb\xc7\xcc\x3f\x09\xff\x60\x2f\x36\x9b\xb7\x5d\x7e\x5c\xe3\x12\x4d\x18\x71\x74\x6d\xf7\x05\x72\xd8\xf2\x39\x23\xfe\x9b\x75\xd3\xc2\xec\x55\xef\x0b\x96\xde\x76\x18\x15\xed\x57\xd0\x1c\x58\x6f\x01\xbb\x1e\x39\x6a\x2a\x86\xd1\x58\xee\xfa\xcf\x32\x6a\x86\xa9\x3c\x18\xb5\x5c\xa1\x7e\x72\xe6\x55\xc6\xed\x8a\x9d\x3b\x0c\x9a\xa6\x96\xab\x37\xcf\x3f\xb3\x3c\x3f\x67\xe8\x19\x33\x67\x60\x6a\x49\xe3\xe0\xca\x8a\x25\x01\xb8\x07\x6b\x14\x78\x17\x6f\x0b\x48\xe4\xf5\x5d\x3c\x9d\x81\x8b\xf7\x17\x07\x81\x7f\xcc\xf4\x67\xc1\xe3\xf7\x0c\x92\xf9\xdc\x5f\x21\x8d\x6f\x19\x08\x9e\xd2\xf8\x8c\x81\x58\x2c\xe2\x77\x0c\xec\x4d\xd5\x32\xc3\x0b\x9f\xf2\x6c\xb9\xf4\x89\x59\xfc\x86\x01\x5d\x31\x15\x3f\x62\x70\xc5\xf8\xbc\x2d\xef\xee\x60\x77\x77\x37\x2b\x72\x99\xbd\xc7\x83\x6c\xb3\x5e\x5b\x17\x53\xb8\x80\xf4\x7e\xde\xe1\x41\xe3\x30\x28\x20\xbd\x99\x33\xf9\xd7\x1a\x30\x59\x3b\xab\xdf\xac\x92\xec\xb6\xc3\xc6\x70\x58\xc0\x8d\x54\x6c\xd5\x65\x60\x16\x0d\x87\xa3\x6f\x3e\xb8\x5d\xf7\x92\x61\x90\xb5\xc3\x46\x6b\x74\x56\x7f\xff\xcf\xd1\x37\x23\xfa\x8f\xca\x2e\x29\x0c\x91\x3c\x20\x6a\x3a\x9c\x01\xe2\xfa\x61\x34\x73\x31\xc0\x0e\x0e\x80\x0f\x88\xce\x8c\x61\x2a\x81\xcf\x0a\x58\x2f\x13\xa5\x77\x46\x6d\x7e\x25\x5d\xd2\x24\xa3\x7a\xe6\xac\xbd\xa4\x7e\xda\xac\x9b\x9d\xdd\xd9\x00\x07\xcf\x19\x3e\x1c\xd1\x6f\x8b\x02\xbe\xb4\x35\x93\x7b\x18\x4b\x23\x28\x71\xcb\x69\xf0\x48\x89\x0f\xeb\x35\x95\x47\x49\x46\x91\x09\x15\xd3\x4c\xd1\x6c\x8f\x0d\x32\xee\xc3\x39\x4f\xf9\xcc\xda\x58\xfd\xd1\x66\x49\x1a\xa7\x79\x5f\xf9\xa4\x5c\xd0\x29\x42\xc1\x06\x9c\xd3\xd2\x05\x91\x18\xb4\x9c\x62\x02\xd1\x13\x6e\x9e\xb3\xb5\xe0\x19\x25\x02\x94\xe6\x9e\x3f\x33\x91\x99\x05\x60\xa3\x5c\x29\xa1\x99\xdd\x8e\x3b\x65\xee\x9e\xb4\xf5\xa3\xe5\x5e\xc0\x38\x65\x33\x29\xfa\x09\xe6\xce\x95\x9b\xde\x36\x36\x36\x60\x95\x00\x56\x15\xe3\x72\x9b\x67\x58\xb0\x25\x7d\x5f\x56\xe1\xdf\x60\xc9\x38\x7d\x5f\xcb\x5d\xbd\x43\x2a\x96\x9b\x15\xaf\x7f\xac\xa7\x40\xa6\x92\xf4\x36\xf6\xde\xc9\xd3\x5b\x3f\xe7\x2e\xa7\x7e\x06\x0d\x16\x9f\x30\xa7\x45\x01\xaa\x40\xd5\x2e\x50\xb8\x04\x6c\x01\x1f\x19\x99\x06\xe6\x72\x78\x90\x6c\xd4\x8d\x90\xec\x8b\x8b\x99\x17\xa4\xd6\x37\xe2\x81\xc5\x31\xb5\x04\x4d\x18\x02\x08\xa8\x4a\xae\xf5\xcf\xe7\x35\x93\x34\x0b\x20\x58\x48\xb1\x0a\x20\xb8\x11\x99\x0a\x20\x60\x8b\x83\x95\x98\x1b\x5b\xfe\x83\x8c\xf1\x94\xda\xb4\x0d\xdf\x49\x5d\x26\x99\x2a\xf3\xea\x77\x7f\x43\x01\x82\x55\xf2\xf9\x60\x21\xe4\x7d\x22\xe7\xba\x85\xb5\x14\x9f\x1f\x0e\xda\x1d\x35\x0e\x20\xf5\x4e\x08\x24\x55\xf2\xe1\xc0\x84\x33\x08\x20\xd8\x64\x54\x1e\x24\xd7\x94\xab\x60\x06\xaf\x19\x31\x62\xcf\xae\xd6\x06\xe1\x49\xdb\x8e\x06\x28\x39\x44\xab\x8c\xd1\x5c\x49\x36\xa7\x5c\x61\xef\x27\xa3\x52\xb1\xe8\xda\x9f\x5d\x9b\x8b\xa1\xb2\x7d\x77\xdb\x79\x95\x43\x41\x12\xd4\x1c\x60\x95\x28\x83\x57\x16\x73\x26\xc6\x89\xe6\xd9\x9e\x29\x25\xd9\xd5\x46\x51\x14\xdc\x48\xba\x08\x80\x5b\x63\x55\xfd\x82\x61\x6f\x96\xad\x7e\x8a\x6d\x36\xf0\x6e\x0b\x62\x59\x79\x30\xa8\x1e\x2b\xd9\x37\xb6\x62\xbb\xc6\xfb\x7a\xb2\x74\x71\x91\x69\xe6\x55\x8b\xaf\xb1\x6e\x4b\x3f\x4c\xfc\x43\x5d\x09\x30\xa9\x4a\x26\x99\xce\xab\x7f\x26\xf6\xa7\x96\xef\x3f\x1a\x0d\x98\x3d\x64\x1b\x31\x9b\x48\xa3\x5b\xdd\x47\x21\x15\xac\x13\x75\x63\x1d\x1f\x1e\x06\x84\x10\x19\xf9\x84\xea\x7c\x69\x52\x25\xea\x5c\x83\xea\xb5\x28\x05\x44\xc2\x7d\x90\x55\xbf\x7a\x1c\xe4\xea\x82\x92\x25\xbe\x6e\x19\x18\x59\x98\xe2\x89\xfe\x12\x57\x0e\x6a\x4b\x70\x19\xb9\xd4\xbf\x84\xa1\xed\xbe\x49\xd4\x0f\x45\x81\xf0\x2e\x76\xed\x0f\x0b\xf8\xe5\x6b\x0b\x6d\x7b\x2f\x59\x43\xfd\x5a\xf9\x7e\x73\x7e\x88\x34\xdf\x9a\x38\x9f\x75\x46\xea\xee\xd0\xa1\x68\x06\xc0\xb4\xe1\x22\xf7\x4a\x1c\x86\xae\x8c\xdf\x8e\x24\x18\x78\x4c\x8f\x24\x8e\x94\x78\xf5\xee\xc2\xcb\xff\xae\x70\x79\xb4\x5c\x15\xd6\x70\xd5\x25\x9b\x39\x44\x2d\x87\xbb\x4e\x12\x0c\x84\xbb\xd5\xc9\xaa\x6f\x19\x4d\x37\x92\x06\x18\xaa\xdd\x20\xc4\x2d\xa3\x24\x71\x8a\x82\x71\x4f\x93\x58\x49\x93\x79\x07\x15\x6d\x15\x8a\x56\x86\xad\xad\x5b\x5d\xa2\x7f\xe5\xe3\xdf\x7f\xcf\xbe\xc1\x28\x18\xa8\x41\x80\x09\x9a\xfe\x6b\x3c\xfb\x06\x07\x95\xc5\x35\x9d\xcc\xe9\x2e\xb8\xa6\xdf\xce\x70\xec\x6c\x55\x0c\x97\x12\xef\x08\xec\x66\x5e\x90\x82\x20\x00\x0d\x33\xe3\xb7\x04\x1f\xfc\xcf\xef\xff\x46\xbf\xc3\x45\x11\xb7\xe7\x0d\x6f\xdb\xe3\x68\x1c\xa5\xec\xb6\x83\xb7\x45\x01\x3f\x76\x09\xd2\x7b\xdc\xe9\x35\x42\x58\xce\x13\x95\x80\xd0\x4b\x8f\x26\x73\x2a\xb3\xb1\x99\x1e\x7f\xd4\x61\xa6\xd0\x51\x59\x31\x0d\x9c\x4f\xdb\x83\x0b\x8d\xa6\xad\x27\x7d\xcb\xdb\xfe\xf2\xee\xed\x6b\xa5\xd6\x67\x96\x54\x1a\xef\xe5\x91\xc6\xa5\x7e\xe5\xd9\x37\x83\xd8\xf4\xe6\xca\xf3\x20\x80\xd4\xa7\xae\x93\x2c\xbb\x17\x72\xae\x53\xc7\x22\x7a\x56\xc7\xc1\x24\x78\x9e\x64\x2c\xed\x05\x83\x2b\x25\x12\x94\x0c\x82\x38\x18\xa4\x56\x12\xb7\x97\x8d\xd1\x86\xa8\xe8\x2a\xc9\xe8\x87\xb3\xb7\x90\x11\x15\x6d\xe4\x12\x36\x61\xd8\x3f\xfc\x17\x9a\x26\x07\x5f\x66\xfa\xcf\xef\xf3\xdf\x07\xbf\x1f\xfc\x1e\xcd\xbe\x89\xf1\xe4\xf7\xc3\xdf\x0f\x3d\xd2\xcd\x70\xb7\x01\x0c\x9d\xd4\x14\x94\xbf\x1f\x0e\x2c\x5a\x1b\x68\x1c\x41\xeb\x48\xeb\x70\x60\xd1\x91\x2a\xd0\x06\x32\x1c\x67\xd6\x9f\x57\x24\xd6\x94\x23\x15\x59\xeb\xb6\x26\xfb\x02\x73\x86\x16\x60\x6e\x6b\x26\xab\xac\x7c\x38\xa7\xd2\x7a\xe4\xb4\x0e\x6b\x81\x45\xca\x8a\x6d\x44\xf9\x27\x60\x7f\xe2\xe7\x45\x37\x1d\x86\x7f\xd3\x7b\x27\x32\xf9\xce\xed\x15\x2b\x64\xce\xe3\xcd\x85\xab\x4d\x96\xe7\xac\xe4\x63\x3e\x9c\xbd\x0d\xc3\xa1\xcb\x5f\x26\x55\x3a\x33\xeb\xb9\x06\xe3\xca\xaa\xd2\x79\x33\x23\xc6\x4b\xeb\x72\x79\xe6\x4a\xbd\xb6\xab\x27\x60\xbc\xc7\x26\xc6\x74\xb2\xf3\x3b\xc2\xb0\x31\x51\x04\x27\xa8\xc6\x09\x96\x61\xc1\x7f\xe7\x41\x2b\x1a\x10\x5b\xa0\xb4\xae\xc4\x8b\x03\x0c\x42\x63\x41\x25\xd9\x0a\xd9\x38\xbb\x4a\xa2\x21\xa4\x58\xa3\xa2\xb7\xe2\xbe\x04\x73\xb2\x9b\x2d\x1d\x8c\x30\x06\x1b\x8e\x70\x63\x8c\x85\x3f\xb2\xb2\x6e\x81\x9f\x92\xa1\x8f\xe8\xa0\xbf\x92\x20\xa3\xea\xc0\xe2\x0c\x4d\x40\xc4\xc4\x14\x9a\xe8\x3f\xf1\x74\x86\xbd\xde\x61\x9a\xcc\x70\x5c\x7e\x19\x04\xd0\x0b\x06\x49\x9c\x18\xdf\x5f\x1b\x1c\x6f\x2c\x82\x80\x05\xb1\x91\x4f\x2b\x2e\xf2\xc2\x04\x22\x0b\x14\xfd\x6c\x4e\x5f\x9a\x1f\x26\xd5\x94\xc4\xd5\xe3\x05\xfd\xac\xc0\xce\x63\xec\x27\xd4\xbd\xeb\x4f\x65\x9a\xc9\xe7\xb6\x74\x9c\x95\x9c\x1c\x38\x66\x36\x66\x45\xdb\xe8\xb0\x66\xcf\x69\xc3\xaf\xde\x25\x4b\x36\x4f\x94\x89\x5e\xb3\xc9\xc6\x7d\x9e\xe7\x1c\x49\x57\x3f\x9e\x28\x24\x71\x4c\xd1\x1f\x0c\x05\x6e\xdb\xf7\x16\x09\x5b\xd2\x79\xef\x9e\xa9\x9b\x9e\xcd\x66\x1c\x49\xf4\x34\x5d\x75\x5d\xf5\xb5\x1b\xfb\x3e\xe3\x3d\xc4\x14\x05\x89\x71\x61\xac\xe8\x16\xde\x10\xab\x28\xcc\x72\x4f\xae\x84\x6c\xc4\x5b\x63\x9a\xad\x69\x34\x6b\xb2\xd8\x9b\xc9\xc1\xf1\xd1\xc9\xfb\xf7\xcf\x9e\x9b\xcb\x0c\x81\x51\x05\x33\xaf\x12\xd5\xb5\x99\x4b\x33\x0d\xfe\xdc\xd4\xf4\x9e\xaa\x7b\x21\x6f\x2d\x17\x6b\xae\x6b\xeb\xde\x55\xa5\x6d\x61\xbf\x1f\x77\x6c\x27\x03\xf7\xa5\x27\x16\xbd\x60\x50\x6e\xd7\x41\xb0\xca\x7a\xf4\x73\x4a\xe9\x9c\xce\x83\x71\x99\x6e\x5a\x71\x5e\xa3\x8c\x61\x7f\xe7\x17\x0c\xa6\x6f\xf4\x6b\xa3\x2a\x60\x2f\x3f\xe0\x8d\x52\x7e\x61\xb0\x26\x48\x45\x26\xb6\x8d\xa4\x9a\xe3\x64\xc9\x32\xcb\xf3\xd7\x0c\x2d\xb0\x71\x5a\xf4\x39\x93\x8b\x23\xb3\xca\xb5\x00\x31\x59\x1a\xd4\x81\xda\xe9\xd8\x19\x46\x8f\xd7\x61\x88\xc4\xd4\x7e\xb6\xdb\x5a\x7f\x9e\x91\xb5\x51\xd5\xeb\x3d\xe3\x26\xc6\x7e\x34\x28\x21\x0c\x6b\xdb\x5d\xec\x5c\x64\xac\x45\xa1\x6f\x8a\x02\x4e\xf8\xab\x6d\xeb\x49\x49\x8d\xe8\x4c\xaf\xf6\x56\x6b\xc8\xc5\xf4\xb2\x80\x29\xcf\xa7\x77\x01\x80\xf3\x1c\xb1\x76\x22\xe9\xf7\x77\x33\x42\x73\x5f\x62\x73\x6b\xbc\x91\xd4\xda\xb9\x95\xda\x4c\xc3\xe3\x53\x26\xf8\xee\xee\x76\x26\xca\xb4\x4b\xd3\xaa\x22\xc1\x5f\x88\x7b\xbe\x14\xc9\xfc\x54\x8a\x6b\x49\xb3\x2c\x0c\x59\x87\xfb\xad\xb5\xfb\x1a\x40\x57\x99\x4e\xa5\xac\xce\xf8\x61\xdd\xae\x7a\x63\x52\xaa\xa7\x3f\x6d\xab\x59\x85\x09\x60\x9b\xf0\x94\x2e\x2f\xc4\x2d\xe5\xc6\x1a\xa3\x7a\xf5\xd7\xd2\x3a\x6e\xeb\x19\x1b\xb1\xc8\x6c\x60\xa4\x17\xbc\xaa\xf6\x2b\xae\xb9\xc1\xe5\xd6\x3f\xbd\x89\xf7\xad\xe7\x9c\xcf\x91\xbd\x10\x07\x3f\x31\xb2\x6d\xb2\x25\x71\x90\xac\xd7\x4b\x66\x39\xf5\xc3\xcf\x07\xf7\xf7\xf7\x5a\xce\x5b\x1d\x6c\xe4\xd2\x32\xbc\xf3\xa0\xa6\x4c\xfc\xc1\xa9\x2c\xfb\xed\x05\x83\xcd\x9a\x6d\x24\xb5\x19\x20\xab\x89\x68\x25\x12\x77\x5f\xed\x67\x06\xbf\x32\xb2\x4d\xe6\xc9\x5a\x51\x19\xa3\xce\xd3\xf2\x26\xdf\x54\xf3\x15\xf5\x8a\x85\x61\x69\xc9\xe0\x74\x4b\xc6\x98\x61\xaf\x91\x95\xd5\x11\xbd\x62\x7a\x4f\xa3\xff\x87\xb6\x67\x6d\x6a\x23\xd7\xf2\xfb\xfe\x0a\xa3\x9a\xb8\x5a\xd7\xc2\xb1\x0d\x61\xa0\x8d\xd2\xc5\x10\x32\xc5\xde\x24\x70\x93\xcc\xde\x7b\xc7\xe5\x4a\x09\x5b\x80\x12\xbb\xdb\xa3\x96\x4d\x58\xbb\xff\xfb\x96\x8e\x1e\xad\x7e\x40\x66\xa7\x76\xbf\x40\x4b\x2d\x4b\xa7\xf5\x38\xe7\xe8\x3c\xff\x29\xe8\xdf\x05\x26\xff\x14\x98\x28\xc9\xd2\x5c\x4f\x80\x1d\x24\x9e\xb4\x32\x3c\xff\xad\x51\x0d\x3a\x9b\xcd\xf8\x4a\x21\x4c\x4c\xb1\xf2\x65\xf6\x4c\x79\xd6\x50\xe1\xdd\xae\xd4\x21\x7a\x7b\x1b\x5b\x59\x2f\x1b\x43\x8b\xb2\xfc\x56\x2c\x78\xd0\x7a\x91\xdd\x80\x42\x31\xae\xf7\x68\x8d\x60\x12\x67\xf7\x12\xb7\x6a\x44\x15\x4e\xa2\xff\x04\x90\x7f\xb8\xf8\x63\x7d\xf9\xcb\xb9\xa2\x6b\x75\xbb\x7f\x0c\x6e\x89\xa5\x22\xb5\xae\xc0\x6c\xeb\x55\x1f\xe8\x46\x27\x4d\x25\x67\xac\x8a\x69\x38\xf9\x96\x94\x4f\x6a\xdc\x4d\xd3\x26\x07\x10\x8c\x55\x9b\xae\xf4\x28\xa5\xb4\x3e\x08\x35\x04\xbd\x1b\xaa\x11\x0f\x48\x15\x55\xc7\xe8\x5f\x9f\x3e\xbe\xdd\xff\x7c\xf5\xf7\x8b\x0f\x88\x54\xf1\x74\x8c\xfe\xb5\x1f\xbe\x5d\xb2\xef\x76\x95\xdf\x19\x87\x90\x7d\x08\xcc\x15\x50\xfe\x56\xed\xfd\x6b\x3a\x1a\x0c\xba\x5d\x75\x7a\x30\x18\x14\xc5\xf8\xdf\xc2\xdd\x1f\xe8\x76\x96\x2d\x97\x59\x0a\xc9\x05\xf8\x4a\xc5\x8d\xb9\x23\x1d\xcd\xf0\xbc\x5c\x2d\x98\x48\x49\xe7\x6f\x2f\xff\x86\x8a\x22\x54\x38\x4f\x90\x41\xf1\x26\x13\x00\x22\x26\x7b\xc9\xb4\xca\x17\x96\x03\x4e\xd4\x94\x6e\x0b\x8b\xf2\xcb\x3e\x56\x46\x54\xb4\x5a\xc3\x5f\x3d\x7b\xcf\x77\xb1\x12\x7d\x30\x44\x89\xfe\x21\x7c\x76\xfb\xdf\x05\xfd\x77\xa0\xe4\x83\x3d\xbf\x7d\x16\xd3\x01\x56\xbf\xbc\xb5\x47\x8d\xcf\x23\x83\x0b\x38\x6b\x0d\x19\xc0\x20\x27\x9f\x9f\x39\xff\x04\x7a\x09\x73\x35\xa3\x4b\x61\x83\x89\x96\x0d\xf5\x8e\xad\x1d\xea\xb0\x1b\xff\x25\xbe\xaa\x6f\x96\xc4\x76\xeb\x3f\xda\xde\x4e\xa6\xd5\x7a\xfc\xe3\xb5\x20\x6d\xb3\x4b\x90\x19\xa5\x32\xcd\xdc\x47\x01\x2d\xc7\xe5\xe0\xc9\xa5\x2f\x88\x06\x35\xee\x76\xbf\x0b\xf7\x8c\xa3\xa6\x53\x37\xaf\x4d\x18\xf7\x13\x63\x9e\x08\x6f\x9f\x18\x73\xe0\x20\xa5\x72\x6b\x46\x9a\x3b\x11\x71\xcd\x05\xd8\x5e\xbb\x5d\xee\x29\xb4\xe6\xca\x7c\x21\x18\xae\x52\x45\x82\xf2\x73\x00\x60\x4c\xca\xb0\xf9\x80\x57\x6c\xe4\x1c\xc9\x6a\xc2\x71\x4e\x41\x25\x65\x1d\xe5\x20\xd9\xfa\x04\xad\xe5\x02\x11\x64\x96\x0a\x26\x5b\x23\x3c\x44\x90\x06\x01\x4d\x49\x46\x27\xc8\x8e\x6e\x05\xad\x4e\x98\x89\xa6\x44\xd0\x09\xb2\x57\x63\x44\x6c\x4f\xf5\xad\x53\xad\x32\x30\xfb\x71\xca\x4b\xa9\x6e\x66\xd0\x0d\x22\xa8\xc6\x22\xe9\x81\xcd\xfa\x81\xa0\xb4\xe4\x72\x10\x41\x55\xcc\x64\x2b\x4a\x74\x84\x08\xaa\x33\x13\x50\x55\xe7\x65\x8c\xc0\xb6\x82\xa9\x10\x41\x55\x44\x65\xda\x7c\xe4\x73\x21\xf9\x4c\xe9\xe2\xbd\x52\x2b\x10\xa4\xda\xe7\xdc\x15\x82\x33\x8b\x08\xca\xb3\xd9\x37\xae\xae\x99\xba\x47\x15\xe3\x99\xb4\x16\x9a\xc0\x07\x75\x34\xb6\x17\x52\xe3\x0d\xfd\x8c\x6b\xd8\x27\x64\x70\x53\x6b\x32\x63\x49\x0a\x9f\x40\x20\x96\x49\x0a\x18\xc7\x9b\x92\x45\x6a\x92\x4e\x21\x4e\x8c\x63\xb3\x61\x98\x74\x6a\x9a\xea\xa7\x2a\x65\x7a\xa6\x9b\xa0\x07\x05\x96\x66\x11\xb4\x73\x4a\x92\x10\x50\x51\x05\xf4\xa9\x91\x9f\xed\x6f\x6c\x24\x3c\xa9\xbb\x0d\x67\x38\x48\xeb\x3d\xab\x24\x2c\xe2\xcf\xa5\x53\x06\x73\x1d\xe6\x6f\xe3\x2a\x8c\x76\x10\x80\x3c\xfb\x3f\x00\x99\xc8\x80\x01\x4c\x99\x97\xd4\x59\x8b\xff\xdc\xa9\xad\x45\xaa\xb8\xd4\x44\x2c\xd3\x74\xcd\x5d\x9d\x53\xfe\xd0\x79\x14\xc4\x5f\xce\x4d\xb9\x28\x52\x56\xf1\xdf\x37\x4a\xa3\xf0\x3b\x9b\xa4\x3e\x89\x14\x0d\x93\x29\xe8\xd3\x8f\xfb\x6b\xb9\x08\x6a\x07\xd3\x18\x92\xef\x6d\x0b\x12\x29\x2a\x59\x54\x01\x95\x28\x8c\x2d\x1e\x4f\x1c\x42\xa7\x81\xdc\x29\xb8\x39\xc5\x95\x1f\x36\x7f\xd4\xf2\xb6\xde\x81\x6b\x0b\xc4\xc0\x86\x70\x9a\x70\x66\x19\xf5\x29\x91\x8d\x0c\xf9\x0a\x83\x49\x45\x63\x3a\xdd\x04\xb5\xa7\x8f\xe6\xfd\x75\x9a\xdf\x8b\x5b\x15\xa9\xbe\x37\xa2\x22\x2e\xdc\x19\x9f\x97\x19\xc8\x6b\x7d\x5a\x74\xfc\x44\xa7\x46\xf4\xfd\x64\x8f\x63\x97\x3a\x72\x8c\x25\x95\x86\x0c\xf1\xbe\x81\x43\x93\x1d\xfb\xe4\x77\xa5\x2c\x48\x65\xcd\xef\xb8\xfa\x4d\xb6\xca\x61\x5b\xd7\x8d\xcc\x35\x69\x5f\xcb\xc5\xb3\xb2\xc0\xa6\x86\xe4\x4f\x30\x4b\x04\xd9\x84\x83\x75\x9e\x27\x84\x57\x63\xaf\xaa\x4c\x38\x34\x65\xb3\xeb\x13\x79\x6e\x42\xc2\x16\xdc\x9a\x1d\x10\x2b\xb2\x96\x0b\x30\xf2\xfc\x2b\xac\xd7\x73\x60\x04\xe1\xe3\xda\x01\x49\xdb\x00\x21\x20\x5a\x93\xa1\x57\x4c\xc6\x68\xca\xca\x73\x2e\xca\x73\xee\x82\x80\xab\x42\xb0\x96\x9b\x54\x53\x7f\x8b\xce\x81\x5e\xa0\x5e\x14\xfe\x3e\x41\x71\x07\xf5\xc2\x9a\x18\x96\xa7\xd2\x69\x69\xc3\xe6\xc2\x6e\x32\x46\x45\x00\xd7\x8c\xb9\x9b\x80\xbf\xac\xef\x05\x77\x01\x6f\x67\x10\x78\x33\xf3\xef\x7c\xb6\x56\x99\xec\x2c\xd7\x39\x04\xa8\x63\x5e\xb5\xdd\xb7\xc1\xe9\x78\x33\x4e\x71\x4b\x4a\x78\xcd\x72\x28\x37\x5f\x36\x94\x94\xaa\x21\x67\x1b\x3e\x72\xb7\x8b\xdc\x23\xf4\xc6\x0c\xd7\xe4\x2b\xb1\xcd\xa4\x5e\x09\x65\x55\x65\x86\x6b\x92\x6a\xbb\xba\xf0\x63\xf3\x99\x41\x4d\x41\x66\xcc\x46\x02\x69\x04\x4d\xb0\xe7\x6f\xab\x34\xf9\x06\xf4\x3b\x63\xb5\x94\xf6\x14\xcc\x8f\x0d\x95\x8f\x95\x4d\xd8\xb5\x66\x74\x16\x4c\x7c\xce\xaa\x36\x37\x19\x33\x31\xa3\x84\x88\xb2\x16\x54\x4e\x78\x48\x8e\x8c\xd5\x74\x24\x49\xd8\x94\x70\x38\x09\xfe\x1d\xd7\x94\x06\xdc\xc7\x18\xcd\x59\xf4\xbb\xc0\xe3\x5b\xd6\x07\xa3\x01\x9a\x31\x72\xcb\xac\x4e\xb7\x0d\x65\xe4\x2c\x92\x2c\xba\x65\x15\x4c\x5f\xe8\xdf\x98\xbd\x48\x19\x2b\x0b\xc0\xc8\xd0\x35\xd4\x88\xdc\x36\xb8\x13\xba\xc8\x16\x8b\xb6\xee\x1d\x9e\x76\x7e\x11\xb7\xac\x9f\xaf\x24\x67\xf3\x1f\x65\xd0\xaa\x79\x7f\x81\xa0\x94\xbb\x94\x68\x0b\x46\x6f\x19\x59\xe9\xbf\xe3\x85\x07\x9d\xae\x18\xbc\xbd\x67\x74\xc1\xc8\x9c\x35\x65\x18\x55\x3f\x26\xb2\x61\xb4\x92\x94\x98\x3c\xb2\xb6\xbc\xcf\x0a\xe2\xa9\xd2\xc1\x98\x9f\x8e\x5e\x1d\x8d\x7b\x3d\x8e\x95\xd5\x17\xbe\x40\xbd\x28\xe2\xa7\xc3\xa3\x04\x0d\x4c\x78\xc2\xc0\x5c\x7a\x78\x04\xba\x82\x40\x25\x13\x86\xe6\xc3\x64\x59\xe7\xcb\x4b\xeb\x2a\xb8\x25\xc0\xcd\xd5\x7c\x83\xcf\x08\x68\x16\x12\xa6\x03\xc7\xc0\xb9\x0f\xc6\xe9\xa9\xf7\xf5\xea\xf5\x52\xfc\x34\x4b\x12\x10\x94\x3b\x46\xb7\x60\xf0\xf6\x39\xb3\x8e\x36\x4b\x46\x58\x9e\x8b\xbb\x7a\x84\x40\x67\x92\x57\xe5\xaf\x24\x9f\xaf\x67\x95\x33\x1e\x22\xf6\x89\xd4\xec\x91\x9c\x12\x55\x60\xa2\x4c\x72\xbe\x1b\x91\xf2\xd6\xae\xc3\xe4\xaf\xdc\x26\xf2\x63\xb5\x98\x66\x41\x26\x8a\x6d\x76\xf3\x35\xde\x66\xb1\x2a\x20\xf9\x6b\x8c\x32\x54\x68\x8e\x60\x32\xb5\x93\xc1\xc3\xc9\x08\xc2\x0b\x6b\xce\x57\xd0\xac\x9f\xdd\x7c\x9d\x40\x58\xc4\xd5\x94\xb0\x0a\xdf\x08\x8c\xe4\x60\x3c\x3b\x65\x65\x17\x33\x1f\x2a\x6c\x32\x9b\x92\x9c\x8a\xc9\x7a\x3a\x6e\x38\x4b\xe4\xde\xdb\x2c\xb7\x7e\xd6\xd2\x73\x98\x39\xe4\x87\xb6\xa6\xda\x1a\x78\x61\x00\x5f\x17\x2e\x73\x65\x94\x97\xd9\x14\xeb\x5f\x3d\x56\xde\xfa\x6e\xec\xc3\x81\xf5\x57\xd9\x2a\xd2\x38\x84\xc3\xd7\x70\xf3\x35\x90\x4c\x87\x45\x12\x07\xf1\x21\xf5\xb4\x64\x74\x30\xce\x4a\x6f\xcb\x5e\x2f\x2b\xf7\x88\x04\xed\x54\x6a\xc0\xd0\x05\xcd\x9d\x04\x7d\xd2\xb4\x28\x0a\x88\x04\x5f\x10\xa3\x97\x6e\x78\x70\x38\x0d\x6f\xa9\xc6\xec\xbd\xbc\x23\xa8\x63\xb2\xfb\x20\x91\x67\xfb\xc7\xc7\xaf\x4e\xf6\x87\x60\x1c\xe1\x0c\x48\xd3\xc0\x8f\x61\x32\xd8\x3f\x61\xfb\xb7\xd3\xed\xa8\x78\x79\x27\xc8\x3a\xe5\xf9\x8c\xad\x78\xc5\xf6\xb8\x45\x29\x1e\x46\xc6\xf6\x51\x3a\x0a\x62\xe4\x6f\x0d\x30\xad\x57\xad\x4f\x1a\x54\x75\x8a\xa0\xa0\x4c\x46\x39\xe4\x2a\x0d\x39\xe7\x94\x9a\xfc\xa5\x4f\x4a\x42\x15\x8e\x1b\x79\xc3\x15\xc8\x91\x7d\x48\x28\x4c\x9e\x9a\x05\xf3\xa1\x51\x1a\x7a\x75\xac\xfd\x74\x1c\xc2\x74\xb4\xdc\x61\xd0\x8b\xd1\xd1\x8b\xd1\x01\xea\x81\xdc\xee\x32\xd5\xfc\xab\x71\x4b\x18\x61\x32\x3c\xc2\x3d\xf4\xe2\xe0\x17\x04\x99\xdb\xfd\xfe\x47\x88\x08\x3a\x18\x8b\xd3\xb4\xdc\x08\xde\x62\x23\x0d\x83\xca\x08\x3c\x3e\x7c\xa5\x2f\x49\xbb\xdd\xe1\x91\xf9\x7f\x62\xcb\xc3\x91\xad\x60\xaf\xe9\xe1\x71\xb7\xcb\x4e\xe9\xab\x9f\xa1\x74\xf4\x0a\x4a\x27\x26\xc4\xcd\xc9\xcf\x50\x1a\x8e\x46\x49\xd6\xb3\xbd\x43\xcf\x31\x3b\x1d\x8e\x8e\x75\xe5\x23\x9b\xb0\x69\xcc\x4e\x47\x83\x43\x57\x1e\x9e\x8c\x76\xec\xf5\xeb\xa3\x69\x4f\x17\x46\xc7\xbb\xa3\x83\x2e\xb4\xb1\xf1\x70\xd8\x6b\xfa\xea\xe7\x83\xc3\x43\xdb\x7c\x34\x3a\xd4\xcd\x87\x23\xdf\x5e\xff\xb8\x7b\x74\x50\xfb\x7d\x24\x7a\x74\x48\x18\x85\x00\x37\xbd\x28\x1a\x0e\x46\x07\x5d\x86\x4f\x4f\x87\x83\x1d\x3c\xd7\xbe\x1e\x13\xdb\xff\xe1\x00\xfa\x3f\x0e\xfb\x1f\x8e\xc2\x01\x5a\x07\xf4\x67\x39\x7b\xd6\x63\xd5\xb8\x1f\x34\xdd\x7a\x71\xb7\xbb\xb7\x17\xd5\xbc\x56\xff\xd7\xee\xa8\xe0\x46\x68\xcc\x4e\x9e\x73\x5e\x34\x2d\xfe\x8c\xc4\x5f\xa3\xf1\x25\x7b\xbc\xe1\xef\x2b\x99\xfc\xac\xa3\xf2\x86\x41\xa6\xa3\x92\x82\x79\x74\xac\x4a\x2f\x6f\x3a\xc4\x16\xe1\x59\x09\x42\x40\x91\xdc\x81\x30\xe3\xd4\xdd\xde\x82\x38\xcb\xb2\xe2\x16\xdf\x98\x3e\xe9\xc0\xe1\xd8\xa5\x26\x92\xd8\xa7\x3c\xdb\xe3\x2d\x33\xee\x1c\xa4\x26\x9c\xc8\xe9\x38\x02\x25\x50\x85\xf8\xee\x76\xa9\x66\x60\xb2\x87\x6b\x37\x37\x39\xde\xed\xf6\xe6\xcc\xcc\x4c\x23\xb9\x9d\x04\xdd\x88\x26\x80\x74\x6f\xe0\x77\x03\x2f\x7e\x0c\x80\x27\x85\xd2\xc5\x7e\xf6\x66\x5d\xf0\x49\xdd\xee\x1e\x60\xf8\x6e\x37\xca\xe8\x92\x81\x9f\x1c\x26\xf6\x15\xbc\x49\x22\xd9\x72\x2d\x95\xd6\x18\xc1\x81\x0c\x79\xc8\xac\xaf\x13\x9f\x64\xd3\xb1\x68\x71\x14\x14\xdd\xae\x7c\xc2\x7f\x30\x9b\x52\x15\x09\x58\x94\xd8\xcf\xb2\x89\x12\x01\x2f\x25\x44\x21\xf7\x89\x8e\x81\xba\xca\x16\xae\x81\x97\x19\x37\x35\xf1\x71\xdf\x1a\x82\xe9\x46\x83\x00\x2f\x02\x06\xd4\x15\x02\xe4\xad\x19\x2e\x0a\x72\xc3\x9e\x8e\x6b\xf8\xc0\xa8\x75\xa8\xbb\x60\x74\xfb\xf1\xed\xf9\xf0\xe7\x83\xe3\x18\xd9\x07\x44\x3e\xbe\x3d\x3f\x38\x39\x3e\x82\x1a\xfd\x80\x0a\x72\xc5\xe8\x1d\xeb\x1b\x5e\x28\xda\xba\xe8\x0c\x17\xac\x6f\x9b\x10\x30\xeb\x57\x8a\xcb\x3c\xf6\x3d\xb6\x70\xb3\x37\xcc\x39\xca\x3f\x30\x70\xe7\x2b\xfc\x68\x2d\xad\x3d\xb1\x28\x8a\x82\x5c\x30\x4c\x3e\xfd\x98\x7f\xfd\xc2\xe8\xf6\x46\xb2\xd9\x37\xae\xda\xb5\x27\x3d\x34\x99\x22\xe0\xa8\x96\x2c\x06\xb9\x39\x43\x44\xa4\x73\x31\xab\x64\x79\x0d\xdd\xcb\x7a\x68\x82\x7a\x1c\x92\x37\x12\xc9\x57\x9c\xa9\xd6\x9e\x8b\x82\x7c\xad\x73\xcf\xdf\x59\x3d\xfd\x22\xec\x0c\x72\x5e\xe7\x73\xbf\x33\x17\xba\x8d\x7c\xd5\x5b\x37\xe1\x31\x64\xc6\x26\x9f\x19\x05\xd3\xb5\x10\x07\x79\xaf\x3f\x72\xc6\xe8\x95\x67\xf6\xc9\xb5\xe6\x60\xe7\xf3\x7f\xac\xb9\x7c\xbc\x96\xfc\x56\x7c\x8f\xf7\x86\x04\x8e\xe9\x9b\x4c\xe5\xba\x60\x95\x67\x31\x32\xda\x33\x57\xfe\xc4\x53\x25\x52\xbe\xd0\x4d\xe6\x7c\x21\x96\x42\x71\x19\xa3\x2e\x72\xac\x03\xb8\x19\xe8\x27\x19\xdf\xb1\xbe\x79\xb4\x35\xff\x05\x19\x72\xaf\xd2\xc5\xa3\xfe\xb5\xd9\x09\xf1\x19\x2b\xf7\x44\x7c\xc5\xfa\xe5\x06\x99\x9c\xb1\xa9\x9f\xf0\xbd\x21\xc9\x9d\xc0\xe5\x09\x17\xf6\xce\x67\x56\x62\xdb\xfc\x9b\x58\x7d\x58\x2f\x16\xe6\x97\x4a\x8a\x99\xd2\x45\x88\x9c\x2f\xd2\x3b\x88\xbc\xfe\xae\x9c\x5b\x87\x26\x4d\x20\x95\x6a\x32\x48\x73\xc8\xe6\x64\x43\xf9\x13\x71\xd6\x66\xc9\x86\xce\x22\x49\x36\x38\xde\x84\x5e\xe3\x1a\xd0\x64\x43\x6f\xa3\x0d\x76\x3b\xc8\x28\xca\xbf\xb2\x68\xa3\xf1\xd0\x46\x9f\x16\x47\x18\xa2\x4d\x1b\xbb\xd2\x51\x8d\x1e\x6f\x21\xe0\x40\x81\xb1\xb5\xab\x24\x08\x63\xe2\x43\xf9\x68\x54\x95\x39\x3c\xcf\xba\xdd\xbd\x55\xc2\x22\x49\xae\xdd\x62\x48\x72\x4f\xd0\x37\xfe\x88\x70\x2c\xc7\x1b\x8a\x50\xd1\xa2\xe1\x8c\xe6\x74\x83\x77\xbb\x46\x74\x81\xf9\x6e\x87\x6e\xb2\x6c\xc1\x59\x5a\xad\xac\x33\x7f\xd0\x50\xdc\x89\x54\x55\xea\xee\x58\x49\x67\x37\xd8\x43\x99\x4c\x16\xd1\x2a\x91\xf1\x13\x80\x1a\xff\xd3\x45\xc4\xa2\x4d\xed\x35\x04\x57\x42\x18\x4f\xe3\xc9\x22\x92\xae\x9d\x0b\x20\x84\xb1\xb1\x7f\x7c\x24\x4b\xc8\x15\x7d\x5b\x46\x03\xda\xb8\xb1\x97\xba\xfa\x2b\x8b\x66\x18\x3f\xd2\x59\xe9\xa4\x7b\x57\xb9\xdd\x6c\xf0\xf8\x91\xae\x93\xbb\x7e\x9e\x49\x15\xad\x71\x7c\xe7\xfd\xba\x4d\x48\xa3\xc7\x92\x31\xbc\x31\x1b\xe6\x81\x3e\x4e\x6e\xa6\xe4\x82\x6e\x26\x0f\x30\xf6\x9e\x30\x01\xdf\xf7\x28\xbd\x30\x4d\xae\x28\x6c\x84\xa4\x2d\x00\x54\xa2\x09\xcf\x03\x8e\x65\x2c\x7b\x51\x9e\xa0\x3e\xea\x3d\xc4\x1a\xbf\x3c\x68\xfc\x82\xc7\xe7\x2c\x5a\x12\x15\x5d\x90\xab\x27\x76\x2d\xf6\xd6\xd1\xcb\x82\x7c\x60\xb4\x41\x6a\xeb\x18\xb1\x8a\x90\x6a\xd6\x3f\x36\x0b\x87\x22\x59\x3d\x6d\xe3\x9e\xf7\x6b\xbb\x66\x63\x1f\x76\x85\x2a\xb7\x4c\xdd\x6e\x79\xa9\x2e\xeb\xda\x04\x69\xee\x6d\xbb\x40\xed\xc2\xbc\x04\xb7\x4f\x95\x3d\x21\x51\xa3\xaa\x6f\x11\xd5\x6e\x77\xcd\xdc\x73\x25\x53\xaa\x6f\xd1\xed\x5a\xdc\x56\xab\x0c\xae\x1b\xe1\x9b\x76\xa8\x3e\xdf\xf3\x8e\x6d\xd0\x31\xf2\x5c\x2f\xf0\xe3\x02\x82\x23\xc2\x18\xa4\x53\xf6\x4a\x3a\x99\xec\x94\x76\x26\x4e\xb0\x57\xa2\xe7\x1a\xb8\x06\x23\x9a\xb9\xfe\xe4\xd8\xa6\x10\x51\x12\xdf\xa6\x1d\xc6\xdf\xd2\x6f\x69\xf6\x90\x76\x4c\x23\x07\xe6\x4a\x66\x1b\x31\xe7\x73\x3d\x77\xd2\x0f\x53\x98\x1b\x5d\x15\x11\x4b\x7d\x0f\xbe\x66\x56\x31\xe4\x92\x43\xb5\x1a\x2e\x99\x26\xbb\xdd\x57\x16\xb9\x02\x36\x1c\x97\x2f\x92\x3a\xe9\x69\x62\x14\xd5\xaf\x36\x49\xea\x15\xf1\x35\xab\xd5\x04\xd4\xab\x0c\x40\xd4\xf7\x95\xc9\x35\xeb\x07\xf4\x6d\x2f\x78\xe5\x49\x1d\x6f\x10\xb9\x36\xc8\x6a\x6d\x92\x46\x4d\x5c\x6e\x3c\x57\x15\x90\xca\x00\x38\x5f\xa9\x81\x2b\x5b\x04\x2f\x1c\x51\x6d\x83\xc3\xbc\x4a\xdc\x43\x7c\x5d\xa3\xb6\x32\x6e\x5d\x20\xfb\xd2\xff\x4e\xc6\x01\x46\x6d\xd0\xe9\xa7\x07\x2e\x1b\x25\xcd\xaa\xb2\xcf\xb2\x8e\x98\xe5\x8f\xb3\x80\xde\xa7\x35\xa2\xde\x0a\x71\xa5\x49\x52\x2b\xeb\x91\x2a\x15\x01\xe5\x6f\x03\xde\xbf\x4d\x82\x67\xe8\xc4\x15\x88\x46\xf1\x4f\x40\x92\x49\x95\x98\x7f\xc6\x5c\xb8\x85\xb1\x68\x1d\xb4\xd1\x2c\x69\xab\x04\x30\x1a\xb5\x20\x42\x1a\xb7\xc0\x93\xd9\x03\x95\xa4\x34\x1a\x10\x57\xc2\x11\x42\x9a\xd1\xff\xca\x22\x5f\x65\x72\x25\xb9\x92\x71\x09\x20\xcc\x92\xc4\x66\x30\x58\x97\x97\x84\xba\xf4\x6c\x08\x8d\x85\x11\xab\x82\xd8\xf3\xad\xc1\x23\x22\xed\x7c\x61\x49\xa5\x2e\xe6\x1a\x7f\x1a\x96\x0d\x89\xb4\xc3\x13\xde\xb7\xc5\xc4\xd7\xc7\xc8\xf0\xc6\x28\xf6\x55\x63\x13\xb8\xee\x0b\x9b\x88\xe9\x58\xee\x76\x91\xac\x50\xdf\x14\xc2\x51\xe8\x69\xef\x76\xa5\x21\xc1\xa6\x58\xca\x68\xd6\x74\x30\x5e\x87\x72\x3a\x1b\xf1\x2d\xa7\x72\xb2\x9e\x8e\xb3\x72\x7d\x8d\xb4\x51\x7f\xdd\x24\x9f\xee\x76\xe7\x2c\x62\xe4\x1d\x8b\x74\x89\xe4\x64\xa6\x07\x6a\xac\x01\x09\x7e\x4f\x32\x77\xf4\x32\x7f\x84\x60\x33\xb8\x09\xb6\xa0\x92\x2c\x40\x31\x59\x6d\x93\x66\x25\x7a\xf5\xfd\x05\x47\x25\xf3\x44\xc7\xd8\x26\xdd\x3a\x1f\x9a\xac\xc4\x0d\x98\x2c\x28\xb8\xe0\x64\x75\x64\x09\x01\x34\x50\x99\x85\xa0\x86\x8c\xba\xdd\xba\x60\xd1\x37\x49\x16\x3d\xaa\x89\xe2\x31\x35\x42\xb2\xe1\x60\x30\x38\x78\x71\xf0\x4b\x17\xc5\xe5\x9b\x8b\xd1\x8b\x93\xf3\x17\x27\x07\x5d\x54\x46\x62\x7c\x3d\x48\x16\xbd\xdb\x18\xa1\x02\x93\x6f\xac\xc5\xbf\x93\x08\xbc\x35\x91\x48\x02\x65\xb5\x35\x4b\xf0\xd7\xf4\xea\x9a\xfb\xae\xbb\xdd\x88\x51\xde\x43\x09\xea\x7d\x60\xb0\x19\x64\x72\xcf\x26\x6a\x1a\x31\x22\x89\xc0\x31\xa8\x55\x35\x4a\xf5\xd5\x02\xc7\xee\xf1\x03\x8b\x32\x4c\x84\xbe\x41\xb2\x96\x3c\xb1\x8d\x88\x3c\x7a\x3c\x4f\x7d\x43\x15\x7f\x52\xd1\xf7\x6f\x0b\x10\x21\xff\x64\x3c\xa2\x12\xff\x14\xeb\xe3\xa7\x5f\x58\x1b\xfa\x8c\xa2\x97\x6c\x25\x5e\x6e\x06\x2f\xd9\x6c\x96\xad\x53\x95\xfb\x87\xfd\x85\xc8\x15\x22\x82\x6e\x0b\xc2\x82\x50\xc1\xa5\xc1\x44\xff\x26\x9b\x3f\x42\xec\x14\xf3\x18\xd8\xdb\x9a\x8a\xa4\x66\xb6\x14\x78\x3b\xbf\x17\x79\x2e\xd2\xbb\x8e\xe4\x7f\xac\x85\xe4\xf3\x4e\x07\x14\xd7\x5c\x23\xde\x8e\xfe\x2d\x32\x69\xab\x7e\xfa\x03\xf6\x8e\x7b\x97\x77\xbb\x15\x7d\x45\xe3\x3d\x6e\x57\xdd\x0b\xb0\xb4\x69\xb4\x9e\x28\x30\x25\xfb\xc6\x22\xab\x73\x96\xbd\x8c\x28\xe0\x57\x53\x8c\x0b\xf2\x9e\xd1\x6d\xca\x96\x3c\x5f\x31\x93\xa2\xc6\xa6\x74\xb2\xc9\x5f\xcc\xd1\x12\xa9\x50\xe6\xf4\x40\x62\x28\x37\x7f\xf1\xb6\x28\x88\x49\x18\x9a\xfb\x1f\xb4\x5d\xa1\xac\x43\x43\x41\x44\x7e\x19\x74\xd5\xda\x34\x18\x0b\x3a\x3f\xb3\x83\x7d\x02\x07\x86\xb6\xdf\xd8\xe9\x82\xbb\x48\x1e\xa9\xbe\x03\x0f\x42\x2e\x42\xe3\x3c\xde\x2e\x32\x36\x3f\xaf\x43\xa8\x59\xeb\x68\x40\x14\x18\xff\x09\x85\x23\xf4\xee\xea\xec\xcd\x97\xf3\xab\x0f\x6f\x2f\x7f\x45\xa0\xd1\x29\xc1\x69\x1b\xfa\x0f\x19\xfd\x2a\xfb\x4b\x26\xbf\x95\x8b\xd1\xe1\x65\xda\x3c\xb7\xa3\x7e\x95\xfd\x07\xc9\x56\x55\x0d\x2c\xa8\x48\xc6\xd8\x46\xf4\xe4\xfd\x95\xe4\x1b\xca\x21\xe3\xae\x89\xe9\xd9\x19\xf8\x98\x9c\xd4\xc1\x08\xd1\x11\x5d\x36\x42\x62\x5a\xd3\x03\x92\xda\xa4\xab\x6e\xb6\x90\x09\xde\xd9\x39\x88\x65\x84\x3e\x5d\x7c\xfe\x72\xf9\xe1\xf2\xf3\xe5\xd9\xbb\xcb\xdf\x2f\xde\x40\x90\x61\xf3\xfa\x30\x86\x10\x9f\x3c\x9d\xfb\xf0\x9f\x1c\x72\xf6\x47\x90\x08\x07\x8c\xf0\x70\x84\x0b\x52\xe9\xfc\xaf\xcc\x84\xb9\x23\xfd\x7f\xcf\x87\xcb\x5f\x9b\x93\x37\x0c\x78\x5e\x99\x65\xea\x57\x53\x85\xdd\x6c\x1d\x92\x8f\x2c\xda\x3a\x7c\x91\xf5\x7d\x9a\x23\xb8\xca\xd8\x8c\xd9\xfa\x80\xea\xfd\xed\x27\x6a\x34\x80\xcc\x1a\x82\xf2\x7e\xce\x53\x85\xad\xb7\x4e\x12\x31\x2a\xc0\xd6\xd1\xef\x3b\x62\xa7\xfc\xec\xfc\xfc\xea\xb7\x0f\x9f\x3f\x21\xc2\x76\xbb\xc9\x14\xe3\x38\x8d\x50\x7e\x9f\x3d\xbc\x77\x19\xc1\xb7\x36\x58\xc4\x5b\xe3\x14\xa4\xb2\x0e\xcc\x73\xc7\xf5\xd4\x47\xe0\xf1\x5e\xf5\x58\xb2\x9e\x4d\x68\xce\xd2\x3b\x2e\x51\x41\xb6\xfa\x23\x21\x37\x95\x81\xf5\xe8\x4f\x2e\x6a\x41\x96\x36\x4f\x78\x1e\x6f\x83\x8d\x5f\x3b\x20\xa5\xdb\x7f\x41\x6a\x3b\xa9\xd1\x32\x38\xbc\xae\xb9\x9b\x85\x46\x5b\xf7\x91\x94\x17\x61\x04\xb3\x37\x60\x72\x70\xcf\xda\x4d\xa1\xd6\x55\x2f\xcd\x20\x91\x34\xa0\x64\x67\xcc\x5b\xf1\x8f\x2c\x63\xf5\xaf\x73\x2e\xfb\x60\x12\x31\x96\xa0\xd8\x6c\x6d\x4f\xd1\x2f\x9c\x49\x2e\x3b\xa8\x94\x68\x07\x92\x70\xcb\x13\x5c\x5a\xc4\x19\x23\x7f\xe6\x88\x98\xc7\x88\x95\xa5\x59\x96\xc6\xe0\xb9\xb6\xbf\x99\x31\x39\x47\x36\x8e\xe3\xc5\x5c\x28\x93\xdd\x19\xac\x20\x72\x9b\x58\xcf\x91\x9f\x2d\x5b\xad\x2e\xd3\xdb\x2c\xbe\x64\x44\x66\x6b\xc5\xf3\x78\x62\x47\x2a\xfb\x5e\x31\x75\x1f\xa3\x97\x08\x34\xce\xa0\x52\xcc\x63\xfd\xc3\xf8\x27\x59\x14\x53\x92\xb2\xcd\xa5\xe2\xcb\xf2\x97\x67\x15\xa8\xde\x33\x05\xec\x50\x7c\xc9\xfa\xba\x6c\xc6\x89\x9f\x1c\xc5\xcd\x83\x6e\x3e\x27\xe8\x25\xc2\x7a\x90\x5c\x65\x92\xc7\xef\xc1\x89\x6f\xfc\x1f\xff\x13\x00\x00\xff\xff\xbd\x83\xc6\x8c\x0a\x0f\x01\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\xfd\xfb\x7a\xdb\x38\x96\x28\x8a\xff\xfd\xdb\x4f\x21\x71\x32\x1c\xa0\xb5\x4c\x4b\xa9\xae\xea\xdd\x54\x10\xb5\xe3\x38\x97\xaa\x24\x4e\xd9\x49\xea\xa2\xa8\xbd\x69\x0a\xb2\x10\x53\x80\x0a\x84\xec\x38\x22\x7f\xef\x73\x5e\xe3\x3c\xd9\xf9\x70\xe3\x45\xa2\x53\xe9\x99\x3d\x93\xef\x8b\x45\x82\xb8\x2e\x00\xeb\x86\xb5\x16\xe6\x74\xc1\x38\x45\x68\xb1\xe1\xa9\x62\x82\x23\xbc\x0d\x36\x39\xed\xe5\x4a\xb2\x54\x05\xe3\x9b\x44\xf6\x14\x09\x36\xdc\x66\x9c\x07\x7d\xa2\xee\xd6\x54\x2c\x7a\x57\x99\xb8\x4c\xb2\x77\x4b\x96\x4f\xea\xc7\xb8\x2b\xe7\x2d\xe3\x73\x71\x3b\xb1\x3f\x9d\x39\x6c\x05\xae\x9e\xce\x1c\x39\xcd\x16\x13\xfd\x27\xde\x96\x63\xdf\xd9\x1e\x45\x0a\x28\xde\x4a\xaa\x36\x92\xf7\x14\xa2\x64\x4b\x3f\xaf\x85\x54\x79\xbc\x2d\x4b\xa0\x91\x7b\xc3\xf5\x63\xa9\x47\x24\x49\x73\xc8\x0a\x6f\x75\x22\x25\xfb\x29\xa7\x97\x9f\x68\xaa\xa2\xb5\x14\x4a\xe8\x9e\x80\x24\x34\x5a\x26\xf9\xe9\x2d\x7f\x2b\xc5\x9a\x4a\x75\x07\x9c\x04\xbe\x60\x40\x7c\x7f\xcf\xef\x56\x97\x22\x9b\xd8\x9f\x78\x5b\x82\x20\x3c\x62\x8a\xca\x44\x09\x59\x14\xc1\x3f\xfe\xe1\x5f\x02\x60\x84\x47\x49\x7e\xc7\xd3\x97\xcd\xef\xad\x94\x00\x12\xc2\x23\x25\xce\x95\x64\xfc\xea\x5d\x72\x65\xb2\x34\xde\x83\x1a\x28\xa9\x06\x0a\x48\xe0\x76\x10\x82\xd0\x30\xa4\xf5\x10\x7a\x8c\xe7\x2a\xe1\xa9\xee\xe5\x62\x42\xe3\x05\x30\x3f\xcc\x54\xd2\x44\x51\x24\xea\xcc\x58\xb7\x4b\x6f\x7b\x17\x88\x17\xc5\x74\x86\xc7\x0e\xd4\x2c\xba\x60\xfc\x46\x5c\x37\x61\xa6\x1b\xb5\x4d\x72\x12\xe4\x9b\x7c\x4d\xf9\x9c\xce\xcf\x55\x22\x55\xe0\xcb\x55\xb9\x05\x30\xbc\x65\x0b\x14\xd0\xcf\x34\xdd\x28\xc6\xaf\x02\x42\x08\xc7\x6a\x29\xc5\x6d\x4f\x37\x79\x22\xa5\x90\x28\x78\x4e\xb9\x05\x41\x8f\xe5\xbd\x24\x93\x34\x99\xdf\xf5\xe4\x86\x73\x5d\x04\x8f\x75\x15\xa9\x58\xad\x33\xaa\xe8\xdc\x56\x61\xaa\x35\xf5\xe8\x77\xe1\xaa\x64\xbe\x0b\xe7\x08\x97\x0b\x21\x91\x8c\x56\x54\x2d\xc5\x9c\x08\x90\x51\x22\xaf\x08\x1b\x8f\x6d\xf7\x13\x22\xa3\x39\xcd\xe8\x55\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x44\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x39\x4e\x05\x57\x8c\x6f\xa8\x6f\x20\x2d\x4b\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x4e\xb9\x22\x32\xba\x70\xbf\x89\xbc\x1a\xd3\x2c\xa7\xbd\x56\x87\xab\xfc\x66\x1c\x3b\x70\x6c\xc2\x88\x34\x06\x6e\x87\x30\x96\xd1\x9c\xe5\xeb\x44\xa5\xcb\x93\xcf\x29\x5d\x1b\x48\x9b\x2f\xb8\xd4\x0d\x05\xb6\x87\xcd\x56\xc2\x50\x46\xc9\xa5\xdc\xac\x15\xf2\x5f\x6d\x5d\x78\xcc\x49\x63\x72\x0c\x22\x58\x90\x8d\x9b\x66\x03\x77\x2e\xe4\x2a\xc9\x74\x6d\x8b\xc8\x2c\x16\xdd\x63\xae\x81\x27\x38\x9d\x34\x7a\x17\xd7\xc3\xf8\x8d\xd1\x6c\x1e\xc0\xc2\x40\xbc\x03\x7a\xdb\x9b\x24\xdb\xd0\xd8\x7c\x07\x5d\x4f\x6c\xab\x2b\xcb\x1a\x42\xb6\xb5\x30\x44\xbb\x20\x70\x13\xea\x72\xba\x69\x5d\xd8\xf1\x97\x25\x52\x20\x21\xc1\xc0\xca\x6a\xab\xf8\xe1\x6c\x95\xbc\x73\x58\x64\xab\xeb\x8e\xfd\xd8\x20\x91\x57\xb1\x8a\xd2\x24\xcb\x90\xce\x58\x96\xa9\x86\xae\x46\x10\xad\xec\xae\x45\x93\xbb\x2c\x4b\x15\xdd\xca\x64\x4d\x52\x03\xb5\x9c\x34\x51\xd6\x02\xe1\x6d\xdd\x81\xac\xf5\xb6\xd6\x6f\xba\xc8\x5c\x17\x99\x4f\xc5\x8c\x34\xf0\xb2\xc7\x72\x4b\x96\x97\xa6\xe2\xa5\xdf\xb7\x57\x54\xbd\xf5\x3b\xf6\x74\x01\x37\x64\x19\x86\x4b\xb4\x44\xa7\x68\x3a\xc3\x18\x8f\x6f\xc2\xf0\xa6\x4f\x34\x1e\x90\x76\x28\x37\x20\x70\x18\xa2\x39\xb9\xc1\xa6\xa6\x3b\xb2\xae\xf7\x3c\x59\x34\x9e\xdb\x98\x61\x8e\xeb\x81\xac\x34\x10\xa6\x76\x99\x83\x07\x80\x5f\x43\xb3\x68\x21\xe4\x49\x92\x2e\x1b\x68\x96\xe2\xad\x9a\xd2\x59\x0b\xcb\x36\xc6\xe4\x31\x0a\xa2\xa0\x70\x59\x62\x5c\xc3\xe5\xca\xa2\x79\x83\x5a\xc6\xcd\xbc\xa4\x8d\x4f\xaa\x02\x49\x0d\x2e\x8d\x4a\x9a\xc8\x9e\x43\x82\xb7\xfd\x2a\xa7\x29\x09\x09\xa4\xb6\xfa\x5c\xaf\xf0\xa9\x98\x81\x02\x66\x17\xb9\x1d\x58\x9f\x90\xdc\xad\x71\xbb\x11\x72\xb3\x40\x33\xb2\x88\xcc\x82\xf5\x7b\x3f\x0b\xc3\x40\x18\x90\xd5\xa4\x20\xab\xc0\x9e\x41\x70\x71\x91\xdc\x26\x4c\x05\x78\x42\x23\x49\x73\x91\xdd\x50\x94\x45\x2e\x15\x47\x6a\x49\x79\x9b\x32\x71\x87\x49\x40\x99\x5e\x96\x18\x76\x3f\x3b\xd0\xfb\xef\x38\x6e\xd4\xdc\x55\xa3\xeb\x32\x51\x90\xa0\xc5\x5e\x85\x1e\x6c\xfb\xf5\x96\x29\xca\xed\x5e\x32\x30\xd3\x80\xd4\xa9\xbe\x00\xe1\x13\x6e\x5b\x4b\x20\xc1\x71\x82\x70\x59\xcf\xe0\x65\x3d\x83\x92\xa8\x8a\x10\x4e\xa9\xdb\xb3\x33\x0d\xeb\x1b\xc1\xe6\xbd\xa1\x46\x4e\x06\x93\xd0\x0a\x09\x13\xbe\xc9\x32\xa8\x11\x00\x6d\xa2\xc8\xba\xb6\xc8\x76\x25\x0c\x11\xad\x50\x81\xc7\x69\xd4\xe0\x02\xdb\x02\xd8\xde\x74\x55\x88\xdd\x68\xf2\x31\xdd\xc5\x26\xb6\x06\xbd\x9c\xde\xdd\xad\xa9\xa3\x4e\xef\x96\xb4\xe7\x9b\xef\xcd\x05\xcd\x7b\x5c\xa8\xde\x5a\x8a\x1b\x36\xa7\xbd\xa4\xf7\x1f\xa6\xf0\x7f\xf4\x6c\x5d\x41\x05\x2d\xcb\x86\x70\xb2\x41\x12\xea\x01\xd8\x36\x9a\xeb\x4e\xe3\x7b\xbb\xee\x5c\xc1\xfb\xba\x65\x96\xe3\x2e\xc4\xf2\xb1\x65\x00\xb8\x25\x0e\xb6\x06\x31\x11\x16\x41\x23\x3a\x55\x7a\xa5\x6c\x32\xf5\x26\x59\xd1\x19\x11\x76\x61\x00\x8d\xf4\x8a\x23\xca\xfc\xbc\x12\x69\xb5\xab\xfb\x35\xa4\x5a\x40\xb6\x0b\xb4\x09\x62\xbc\xdf\x17\x1c\x8b\x18\x7d\x1b\x54\x2b\x88\xda\xde\x69\xca\xaf\xc1\x9a\xf0\x9e\xdb\x5b\x5d\xd5\xd7\x8b\xed\xb6\xe6\xdf\x34\x62\x7f\x25\xd2\x58\x4d\x87\xb3\x72\x3c\xea\x31\xde\x53\xa6\xeb\x06\x8d\xbf\x12\x29\x51\xd3\xd1\x0c\xc3\xc3\xfa\xcb\x82\xf1\x24\xcb\xee\xec\xb7\x87\x33\xdd\xc3\x85\xa2\xd2\xbe\x7f\x37\xc3\x60\x10\x90\x92\x77\x27\x5c\x49\x46\xf3\x68\xbd\xc9\x97\x88\x36\xda\x3f\xa9\xdb\x57\x91\x23\x50\x4c\xf0\xa2\xd8\x96\x63\x6a\x66\x93\x54\xf4\x45\x8f\x42\xd1\x9e\x01\x03\x34\x73\x13\x5a\x57\x78\xa1\x2b\xdc\x69\x96\x4c\xfd\xd8\x02\x29\x84\x0a\xca\x19\xa8\x0a\xe9\xde\x9a\x4e\xba\xae\x4a\x9a\x53\x85\xfa\xc3\x46\x0f\x4f\x75\x85\x7a\xef\x54\xfd\x9c\x0a\xb3\x05\x1b\xeb\xcc\x60\x2c\x65\x17\xe3\x3e\x7f\x6b\x17\x87\xcf\xad\x74\xae\x3e\xcb\xdf\x24\x6f\x90\x8a\x32\xca\xaf\xd4\x12\x7b\x5e\xf0\x60\x04\x8c\x34\x58\x76\xbc\xd5\xec\xd7\x78\x30\xe0\x8f\x7c\xde\x31\x66\x0b\xe4\x90\xa4\x02\x8e\xeb\x5e\x38\x54\x35\xe5\x7a\x22\xf4\xb2\x25\xfd\x11\x54\xe8\xd6\x7f\x77\xfb\xda\xe7\x18\x02\x2d\x6b\x4e\xd5\x2c\x66\x56\xba\xad\xb7\xd5\xaf\xf1\x79\x03\x37\x9d\x57\xc4\xc2\x31\x1f\xae\x36\xc3\x7d\xf4\x87\xbe\x60\x2f\x6b\x90\xc5\xbb\x28\x15\x3c\x57\x72\x93\x2a\x21\xc9\x1a\xd6\xad\xf7\x0c\xd6\xd3\x64\x46\x32\xc3\x8d\x65\xc9\x9d\xde\x5e\xa4\xe6\x64\x9f\x79\x68\xea\xad\x9f\xef\x25\x77\x88\x21\x5d\x13\x10\x86\xaa\xd9\xa8\x1b\x6f\xbf\xaf\x19\x23\x4a\x08\xc9\x8a\xa2\xa3\x49\x42\x88\x46\xac\x75\xbf\x8a\x82\x46\x3c\x59\x51\x8c\x4b\x50\xd1\x2a\x91\xd7\x5d\x04\xda\xb1\x01\x79\x8b\xd1\x98\x74\xa6\x22\x05\x6b\x1c\x23\x15\x5d\x5c\x18\x78\x5d\x5c\x90\x35\x24\x66\x7f\x15\x05\x52\x1a\x30\x1d\xfd\xc2\x18\xd4\xbd\x6c\xc7\x1d\x06\xa5\x7b\x97\x18\xae\x6a\xbf\x7b\x5b\x47\x3f\x35\xef\x05\x2b\x74\xd5\x94\x5f\x1a\x2f\x53\x76\x2f\x3f\x05\x2a\x3a\x6a\xca\x5b\x44\x6f\x46\x23\x81\xd5\x25\x8c\x4c\x05\x86\xd1\xa8\x28\x15\x0b\x43\xc4\xc8\x5b\x29\x56\x2c\xa7\x96\x97\xb2\x02\xd3\x15\x4a\x7d\x01\xac\x59\x09\xdf\x58\xd7\x84\x23\x89\x27\x49\x9c\x98\x85\x8a\xba\x28\x76\x55\xd8\xe0\x6d\x65\x17\x7d\x55\x40\x13\x61\x58\x69\x20\xdd\xb5\x81\x1b\xc0\xdd\x57\x58\x48\xb8\xab\xe4\xc9\xfd\x2c\xc1\xd4\x62\xda\x5e\x55\xd9\x2c\xd0\x40\xba\xa6\x77\x79\xc7\xfa\x9c\xce\xc6\x7a\x4f\x1b\xf2\x6e\x66\x1a\x53\x8b\x16\x25\xae\xb7\xaa\xa4\x37\x54\xe6\x14\x61\xa8\xb6\x9e\xf4\xc8\x80\x56\x88\xc0\x21\x0d\x1a\xad\xc5\x1a\x19\xec\xc3\x6d\x8d\xae\x1e\xe9\xb6\x3c\x07\x59\xe1\x03\x59\x56\x1f\x3d\x02\x90\xa5\xee\xae\xc9\x9a\x93\x53\xb8\x68\xac\xad\x6d\x63\xd7\xc4\x17\x60\xd0\x63\xdc\x1c\x93\x46\x8c\x1a\x71\xae\x25\xbd\x21\x43\x8b\x44\x0d\x12\x71\xcf\x46\x7c\xb3\x6c\xa8\x79\x74\xf8\xc2\xa4\xf8\x2e\xd9\x97\x16\x89\x32\x49\x6d\x92\x69\x92\x1a\x8c\xc9\x2e\x69\xf1\xf8\xfc\x04\x43\x5f\x61\x0f\x62\x6a\x00\xa2\x11\x7c\xa0\x2c\xf7\x92\x2e\x13\x79\xa4\xd0\x10\x57\xac\xa6\xfe\x0c\x14\x87\xa1\xc3\xca\x03\x1a\xe5\x19\x4b\x29\x1a\x61\xcd\xf9\xeb\xcf\x9a\x17\x77\xd4\xba\x84\x5c\x89\x75\xdc\x58\x06\x8d\xc1\x0c\x9d\x12\x68\xa7\x73\xd3\xe1\xac\x41\xae\xda\x3c\x8b\xb2\x3c\x8b\x15\x54\x55\x93\xfb\xb0\x14\xe9\x26\xc9\x4a\xd8\x13\x55\x3b\x27\x41\xf7\xc1\x57\x34\x76\xc4\x6a\xc9\xf2\x71\x83\x83\x37\xaa\x0e\x57\x7f\xe2\xe8\xab\x17\xc8\x0c\x74\x95\x67\x69\x24\xf0\x3f\x65\x5c\xfa\x7d\x5e\x7a\x48\x8b\xdd\x41\xbb\x65\x7a\x30\x1a\x8b\xc7\x64\x38\x3e\x38\x10\x76\xc1\xb2\x3d\xe8\x88\x19\x24\x84\xed\x42\xc8\x90\x6a\x8d\x37\x22\x4b\xbc\x71\xcd\x6e\x53\x3e\xb7\xfa\x0c\xff\xed\x11\xa9\x56\xa1\x57\x40\xb8\xc9\x65\x10\x78\xfe\x25\xc0\xb0\x69\x24\xd7\xcc\x8b\xad\x2b\x0d\xc3\x4d\x7b\x41\x3f\x62\x15\xef\x53\x37\x5e\xa7\x41\x7f\x68\x0a\x36\xf3\xd7\x95\x36\x4b\x34\x52\x4b\xaf\xc5\x48\xff\xe5\xb6\x4c\x51\x5d\xa8\xbf\xd9\xd7\xfd\x28\x79\xd7\xcb\x55\xa2\xe8\x8a\x72\xd5\xbb\x65\x6a\x29\x36\xaa\x67\x8a\xf7\x84\xec\xb9\x1e\x04\xff\x89\x0e\x97\x65\x09\x56\xed\x11\x37\x15\x58\x16\x1b\x59\x0c\x74\xef\xcc\x73\x3b\xf3\x95\x7a\x6d\x77\xe6\xb9\xe1\xa4\xc4\xfe\x2c\x56\x9b\x53\xb4\x27\x2a\x0c\xeb\xce\x8b\x66\x37\xdd\xd2\x12\xe3\x4b\x49\x93\xeb\xb2\xd4\xd4\x26\x30\xcf\x66\x93\x15\x45\xe0\xb5\x27\xe6\x1d\x87\x61\xbd\x76\x68\x18\xd2\x47\xa4\x39\x6a\x43\xaa\x34\x26\xf2\x74\x8a\x4d\x9a\xeb\x33\xde\x56\x3c\x93\xdb\x44\xca\x6d\x1f\x0a\x6c\x82\xee\xc3\x5e\x96\xbb\x6a\x34\xa3\x39\x7d\xf3\xc5\xab\x66\x50\x82\x4b\xf0\x2f\x3b\xe0\xfe\x36\xac\xd1\x18\xb3\xc9\xb2\x3b\x70\x93\x38\xa9\xbb\x63\xca\xc6\x0d\x6d\x97\xcb\x81\x2a\xec\x43\x2a\xcc\xab\x2c\xe7\xdd\x1c\x9d\x97\x19\xeb\x0a\xed\xe6\x8c\x1b\x1a\x2f\xe5\x74\x50\xd4\x21\x53\x9b\x8f\x62\xc8\x4b\x58\x30\xce\xf2\x65\x0b\x9b\x55\xa8\xfb\xfe\x65\x45\xed\xb2\xaa\xa5\xe4\x9d\x65\x45\xcd\xb2\x92\x4d\xf9\x44\xcf\x79\x13\xaf\x56\x10\x97\x8d\x79\x05\x59\x09\x30\x18\x4e\x90\xd4\x5d\x2c\xc1\x6c\xa2\xff\xae\x2e\xda\x35\x68\xba\xe7\xc8\xb9\xbc\x97\x54\xf0\x86\x5a\xc5\x4b\xaa\xba\x97\x9e\xa4\x8b\xb2\xdc\xc3\x0b\x2c\xd3\x74\x35\x73\x98\x20\x51\x8a\xae\xd6\x2a\xc0\x25\x78\x82\x6b\xb4\x8c\xf1\xae\x6a\xba\x09\xaa\x8a\x34\x6f\xbd\xb0\x19\x6b\xa1\x08\x6a\x79\x38\xa6\xe0\xe4\xdf\x58\x96\x50\xa9\x73\x1b\x2b\xc5\x4f\x7d\x93\x7a\x68\xd8\xaa\x12\xa9\xea\xe4\x61\x6c\x55\x8b\x57\x9e\x8f\x3a\xdb\x70\xc5\x56\x94\xd0\x5a\x93\x58\xf1\x81\x81\x34\x1a\xb4\xdd\xbc\x3d\xd2\x93\x01\xd6\x22\x66\x89\x31\xf0\x4e\x05\x9a\x96\x06\x5e\x27\x6a\x49\x88\xfe\x1b\x86\xca\x9c\x38\xa0\x3d\x65\x54\x7d\x54\x13\x86\xf5\x33\x2e\x8a\x8e\xbc\xf6\xc0\x26\x0c\xed\x6f\x77\x9e\x9c\x66\x8b\x30\xd4\x7f\xbb\xbf\xeb\x8e\xe1\xa2\x68\x0c\xb1\x9e\x84\x00\x23\xdc\x10\x0d\x8d\x90\x5b\xe9\x61\xfb\x7d\xcd\xda\xee\x68\x5b\xb5\x34\x06\x09\xe9\xb3\xd6\x81\x95\xab\xf2\x6f\x7d\x2f\x36\xd8\xd3\x23\x7f\x40\x83\xb6\x25\x8c\x60\x7b\xd5\xe4\xf2\xea\x42\x65\x89\xa7\xa3\x99\x06\x6c\x4a\xb6\xa5\x66\x13\x4d\xa1\x97\xf9\x09\xdf\xac\xa8\x4c\x2e\x33\x0a\x9b\x86\xa2\xb5\x71\xf2\xf3\x94\xe6\xa9\x64\x6b\x25\x24\xe4\x64\xbb\x88\x37\x61\xd8\x4f\x2d\x86\xdf\x8e\xe2\x87\x25\x8c\xf0\x64\x9f\x57\xde\x58\xde\x4c\xe1\xa6\xc4\x46\x23\x5a\x35\x57\xc6\x69\x09\x0b\xd2\x46\x94\x4e\xd0\xa9\x73\xc5\x7d\x34\x0a\x15\x86\x54\xf0\x05\xbb\xda\xf8\xb4\x87\x3a\xed\x56\x32\xe5\xde\xff\xaa\xdf\xad\xbc\x40\xcb\x12\x32\x3d\x46\xcf\xf6\x43\x97\x2c\xd5\xcb\xbc\xe4\xef\x18\xc6\xff\x0d\x07\x23\xbd\xb5\x48\x10\x44\xf9\x3a\x63\x0a\x96\xa4\x0b\xfe\x7d\x0b\x23\x14\x7c\x09\x70\x27\x18\xd1\x50\x8b\x2a\x93\xfd\x26\x03\xdb\x9d\x80\x90\x35\x52\x78\x32\xf7\x7a\x80\x20\xc0\xb1\xab\x54\xe1\xd2\x3d\xc2\x0d\xd9\x61\x13\x35\x49\xd3\xa8\xc6\xa2\x89\x86\x1a\xe9\x38\xe1\xff\xa1\xd9\x85\x2c\x73\xfa\xb7\x9e\xe0\xbd\x60\xa0\x6a\x69\xac\x84\xbb\x2e\x10\x2c\xd1\x0d\x52\x46\xaa\xea\xf8\xba\xbf\xc4\x27\xba\x07\x7d\x42\x54\xdc\x25\xa7\x97\x70\x45\xf6\x88\x5e\x7f\xa5\x1b\xa8\xb4\x27\x06\x9d\x82\xc1\x8c\x34\x0c\xf7\x6b\x41\x52\x13\x1c\x37\x6d\x9a\xa9\x5f\x99\x73\x16\x37\x51\x55\x45\xbc\x5b\x59\x63\x4a\x9b\x35\x70\xba\xf8\x93\xc2\xfd\xff\x5a\xf3\xf7\x4d\x81\xe0\x37\x54\x2a\xa7\xbd\xeb\x29\xd1\x5b\x4b\xb6\x62\x8a\xdd\xd0\x9e\xe9\x97\xc6\xdd\x97\x7a\x69\xee\x1c\xad\xde\x76\xee\x82\xde\xa5\x5f\x21\x14\x97\x70\x42\x44\x34\x17\xe9\x46\xf3\x88\x70\x41\x56\xe8\x04\x87\xe1\x0a\x9d\x38\xe5\xc1\x49\x66\xb8\x47\x0c\xa7\x5d\x33\x7d\x31\xd9\xc9\x87\x14\x36\x47\xc7\xe7\xa4\x9f\x68\xe1\xe9\x5f\x42\x34\xa7\x28\x98\xb3\x9b\x00\x43\x90\x04\x5f\x43\x38\x51\xa2\xf1\xcd\xa7\x3f\xc5\x2a\x9f\x35\x56\x49\x26\x9f\xf6\x99\x26\x45\xee\x34\xb5\xa2\xe4\x0a\x51\xcd\x46\xc3\x39\xae\x51\x67\xef\x93\x05\x4d\x85\x3c\x4b\xb6\x40\xb7\x26\xcd\x4f\xd5\x02\xf5\xf3\x68\x51\x83\x11\xd4\x94\xce\x70\x59\xc2\xf1\xee\xee\xb2\x2b\x75\x77\x62\xed\x52\x40\x0a\x0f\x82\x0e\xed\x6c\x63\x7f\xbd\xeb\x06\x15\xbc\xb5\x43\x7b\xb7\x47\xa4\xd9\x02\x1d\xb7\x87\x76\xac\x79\x96\xd6\xf8\xde\xb9\xcc\xed\x11\x06\x57\x54\x05\x8c\xf7\x64\x51\x04\xb9\x7b\xdc\x47\x0a\x47\x69\x4a\xf3\x5c\x48\xdb\xe9\x7c\xb3\xd6\x64\x9a\xce\xab\x4e\x07\x76\x41\xea\xc2\x9a\xbe\x6b\x21\xd9\xa9\x1c\x30\xa8\xb2\x84\x23\x92\x4c\xee\x61\x2c\xde\x46\x0b\x93\xb2\x40\x23\x90\x18\x97\xf7\x32\x20\xa6\x52\x50\x25\xbc\xda\x59\xdf\x7a\x8c\x47\x48\x40\x63\xfa\x24\xde\x8a\xa9\x9a\x11\xea\x19\x22\x5a\xc2\x1b\x22\xa6\xc1\xc5\x45\x2a\x24\x3d\xf8\x94\x5f\xe4\xcb\x44\xd2\xf9\xc5\x45\x30\x2b\x8a\x57\xa8\xeb\x03\x6c\x4b\x0c\xd7\xc4\x53\xe1\x6a\x2f\x8f\xeb\xbd\x5e\x59\x5a\xbc\x89\x18\xcf\xd7\x34\x55\xe7\x62\x23\x53\xcd\xdf\xee\xa4\x74\xed\xa3\x6b\x8f\x0c\x4a\x2b\x5c\x9c\xc1\x6b\x78\x00\x4f\xc9\x4e\x51\x78\x49\x44\xf4\x0b\x4d\xae\x5f\x27\x6b\x78\xd6\xa5\xd6\x7c\x19\x86\x87\x3c\x31\x98\x21\x15\x73\x7a\x18\x29\x9a\x2b\xf4\x14\xbd\xc4\x18\xde\xef\x5a\x6d\xd4\x6c\x56\x37\x9e\x78\x33\x55\xb3\xa2\x40\xfa\xc7\x31\x68\x7d\x42\xe8\x84\xc6\xdb\x12\x97\x18\x05\x37\x54\xe6\x4c\xf0\x3c\x80\xe9\x0c\x5b\x85\xd5\xd6\xa5\xc5\xc1\x77\xd1\x0f\xd1\xf7\x01\xac\xc4\x9c\xc6\x81\x65\x95\x02\x48\xc5\xfa\x4e\xb2\xab\xa5\x8a\x83\xff\xf7\xff\xe9\x3d\x1c\x3e\x1c\xf6\x9e\x52\xce\xf2\xde\xdb\x4d\xbe\xbc\x4e\x24\xbd\xe9\xa1\x2f\x99\x60\x52\xa4\xd7\x91\xdc\xe0\x40\x37\x84\xe1\x09\x19\xc2\x73\xc3\x99\x45\x32\xe1\x73\xb1\x42\x18\xbe\x74\xd1\x16\x6b\x2f\x82\x82\x81\xdb\x60\x95\xa2\x51\x4d\x82\x20\xd6\xdb\x0d\x5f\x04\x03\x34\x18\x3c\x19\x3c\xc7\xd5\x34\xa2\xef\x7e\xc0\x25\xfc\x41\xde\xa3\xe0\x9a\xde\xe5\x01\x86\x0f\x5d\x93\xf4\x87\x05\x87\xfe\x21\x5f\x2c\x81\x7b\x41\xb6\x25\xfc\x5a\x4f\x8a\xa6\x01\xcf\x2c\xa7\xf2\x93\xd1\x63\xfe\x0a\x3f\x93\x9f\x34\x86\x82\x1f\xc9\x4f\x1a\x3d\xc3\x2f\xe4\xa7\x28\xa7\x6a\x7c\xd6\x0d\xf3\x5f\xec\x4a\xf8\xc9\xac\x61\xa0\x25\xbc\xee\xea\xca\xcf\x55\x2e\x5c\x14\x1a\xdf\x3e\xe8\xca\xf5\x63\x9d\xab\xb4\x8a\x02\xdd\xb1\xdf\xc8\x07\x14\x18\xb5\x40\x80\xc7\x2f\xa6\xbf\xcd\x48\x7f\x08\xf7\xf4\xe6\x08\x29\xf8\xed\x6b\x1d\xd1\x68\xf1\x37\x3c\x51\xd3\xdf\x66\xf1\xbd\xfd\xb0\x99\x4a\x73\x66\xf7\x3b\x28\x45\xb6\x39\x55\xf1\x19\x68\x0c\xff\x1a\x96\x49\x1e\x3f\x00\xca\x17\x42\xa6\x34\xee\x28\xfe\x40\x73\x35\xaf\x35\x65\x39\x43\x4a\x6f\xc5\x52\x97\x54\x54\x3e\x13\xb2\x2b\x7f\xf3\xc4\xdc\x70\x06\x63\x8b\x87\x29\x2e\x0a\x24\xc9\x6b\x44\x31\x36\x52\x53\xbf\x93\xed\x79\xc9\xb5\xac\x95\x28\x76\x99\xd1\x9e\xa4\x29\x65\x37\x54\x82\x66\x7c\x06\x41\x4f\xd2\x3f\x36\x4c\x36\xf0\x5d\x4f\x96\x65\x09\x54\x75\x5b\x44\x29\x43\x9d\x40\xea\x07\x37\x42\xe0\xc4\xad\x3a\xc7\x0f\x58\xae\x10\x79\x2e\x0e\x8f\xef\xd9\x96\xc0\xa0\xb2\xa4\xe9\x1b\xea\xda\x4f\xa2\x0d\xcf\x93\x85\xe6\xb0\xab\x94\x9a\xc5\x85\xbc\x4e\xe5\xe2\x5d\x22\xaf\xa8\x7a\x4e\xd5\xb8\x03\x6d\x18\xcd\x48\x6e\x3b\x50\x61\x32\x5a\x14\xb7\x88\x41\xc0\x93\x15\x0d\x70\x51\x1c\x55\x2f\x7a\x45\x48\xc4\x70\x94\x5b\x8c\xc6\xa3\x4f\x82\xf1\xaa\x86\xaa\x5a\x8d\x2b\x02\x73\x36\xd1\x27\x44\x4c\x50\x3a\xe9\xe7\x61\xa8\xf1\x77\x18\xa2\x0d\xe9\x0f\x71\xec\x0e\xf0\x74\x1a\x6c\x26\x06\xb5\xb3\xf8\xc8\x8e\x17\xe3\xb8\x4a\x7a\x85\x74\x42\x89\x51\x85\x84\x6b\xa3\xb2\xc0\x6f\xe4\x00\xf6\xd9\x8d\x2e\x9e\xd2\x88\x6f\xd4\x08\x12\x7e\x0c\x45\xf1\xd4\xbe\x97\xd8\xa0\x1c\xa9\x88\x00\xae\xba\x90\x4c\x47\x85\x13\xe5\x4e\xbd\x4a\x10\xaa\x7b\x2b\x25\xf2\xca\xf0\x58\x5e\x1f\xf0\xe8\xe1\x84\x2b\x24\xd5\x54\xcd\xb4\xe8\xa7\x90\x26\x53\x38\x36\x09\x61\x68\x7e\xa6\x74\x56\x14\xc2\xbc\x0b\xfb\x5a\x02\x53\x16\x0f\xa6\x94\x65\x90\xb8\x97\x45\x26\x84\x84\xb4\xab\xb7\x3d\x77\xaa\x48\x06\x0a\x4f\x86\x31\x52\x8f\x87\x93\x44\xc5\x4c\x61\x4d\x6d\x60\xe3\x6a\x58\x31\x0e\x79\x67\x79\x5d\x60\xa3\x90\x11\x22\xe0\xef\xc3\xe1\xdf\x46\x7f\xff\xfb\xc3\xef\xff\xfa\xb7\xbf\x0e\xff\xfe\xf7\x11\x8e\x87\x25\x2c\x7c\x1d\xc9\x67\xc8\x1a\xf5\xad\x3b\xeb\x6b\x9f\x07\x39\xc5\x05\x30\x72\x87\x8c\xb5\x5c\xae\x10\xf3\x27\xa0\x90\xee\x80\xd2\xaa\x4d\x4c\x57\xaa\xed\xf7\x68\x38\x59\x28\x24\x07\x14\x86\x38\xce\x14\x92\x9a\xf6\x1b\x33\x15\xa3\xd6\x0c\x43\xd9\x27\xd2\x1d\x93\x24\x8f\x53\x73\x54\x8a\x04\x61\xd3\x74\x30\x98\xe1\x3e\x11\xb8\x92\x8d\x8d\x1a\xb6\xca\x98\x0e\x06\x26\xaf\x2a\x8a\xb4\xc7\x78\x8f\xe1\x30\x64\xd3\x74\x66\x0c\x2c\x3c\x70\x8a\x22\x2d\x8a\xa1\x17\x45\x55\x18\x1e\x8c\xca\x12\xe6\x8a\x6c\x19\x4f\xb3\xcd\x9c\xe6\xf1\xda\x1c\x1e\x03\xe3\x73\xfa\xf9\x74\x61\x5e\x47\xb8\x8c\xdc\x3b\x2c\x77\xd7\x8b\x13\x66\x2c\x87\x2a\xc8\x10\x98\x3f\x1f\x32\x67\x43\x1c\xf7\x6f\xd1\x0b\x90\x38\x0c\x6f\x11\x37\xbf\xac\x3a\x2c\x6a\x1d\x06\x3d\x16\x63\x6c\xb2\x10\x3a\x15\x7a\xb0\x61\x88\xfe\xff\x73\x85\x18\x48\x5c\x14\x55\xa1\xda\x28\xb1\x84\x1b\x45\xa6\x41\xe3\x7c\x27\x80\xa0\x2d\x52\x04\x10\xb0\xbc\x71\x5a\x19\x40\xd0\x25\xab\x06\x7a\x4f\xbe\x12\x69\x92\x51\xbf\x33\x1b\x9b\x34\x70\xc2\x54\x30\x83\x3b\x45\x6e\xcc\x39\x6c\x9a\x28\x14\xd8\x7e\xdb\x3a\x6d\x0b\x01\x86\x95\xd2\xbc\x6e\x27\xaf\xff\x26\x59\xd1\xbc\x28\xba\x44\x50\x85\x14\xdc\x69\xba\x07\x57\xf7\x97\xb7\xec\x42\x5e\xc2\xa5\x22\x42\xa1\xe0\x8c\x2e\x32\xcd\x81\x43\x20\x6e\xf9\x4f\x86\x15\x68\xd7\x6e\xb1\xfa\x4a\x45\x96\xcb\xc6\x20\xc9\x95\x8a\x16\xd5\x62\x9c\x50\x3f\x16\xa9\x3f\xc7\xb4\x84\xdb\xdd\xf9\xad\x4e\xfa\xc8\xa5\xd2\x6b\x9e\x93\xb7\xd1\x02\x04\xf9\x1c\x2d\x80\x91\xe1\x98\x3d\x92\xfe\x34\x8f\x0d\x06\x95\x49\xe5\x94\xcd\xc6\x9a\x90\x26\x46\x51\xa4\x20\x01\x81\x28\x24\x58\x0f\xf1\x44\x91\xc3\x7f\x2b\x3e\xd6\x28\xf1\x63\x74\x08\x17\x9d\x0b\x8b\x9c\xab\xe9\xa9\xde\x40\xb3\xaa\xd3\x84\x7c\x56\x45\x21\xfb\xe4\x93\xd2\x64\x60\x1f\xbd\xd1\x09\x43\x14\xc7\xfd\xbe\x96\x17\x4f\x15\xb9\x50\x91\xd5\xe4\xb2\x2f\x9d\xdc\x6c\x25\xdd\x44\x92\xae\xb3\x24\xa5\xe8\x44\x41\x10\x05\x9a\xe3\x7a\x25\x6e\xa9\x3c\x4e\x72\x8a\x70\x09\xe7\xa6\xae\x79\xa2\x12\xcd\x47\x7d\x32\x6f\x6f\x8e\xde\xbd\xfc\x70\x42\x82\x37\x01\x7c\x36\x09\x6f\x4f\x5f\xfd\xf6\xec\xe5\xab\x57\x24\x78\x1b\xc0\xb1\x4e\x82\x77\xca\x40\xeb\xed\x3d\x5b\xc7\x5a\xa4\xc1\x46\x4b\xdd\x86\xea\x41\x4e\x54\x64\x79\x50\x58\x10\x15\x69\xee\xc7\xa8\x5a\x49\x3e\x11\xf1\x62\x22\xa6\x1b\xc3\xfb\x6f\x34\x77\x11\x23\xfb\xba\x2d\x71\xe3\x20\x5c\xcf\x9a\x39\x49\xb5\x02\x64\x42\xe8\x94\xcf\x80\x11\xd5\x24\xad\x13\x94\x92\x77\xca\x1c\xa8\xe1\x30\x4c\xdd\x41\xb3\xd4\x39\xfb\xc7\x0a\xe5\x13\x1e\x6f\x06\x68\x31\x09\xa2\x20\x0e\xfe\x2d\xc0\x03\x6e\x8d\x4e\x52\x3a\xc7\x61\x58\xb1\xd8\xd6\xb4\xd7\x01\x3f\xa9\x89\x74\x6d\xec\x79\xab\x50\xa2\xc9\x21\x52\x51\xbe\x4c\x56\x45\xc1\x34\x16\xd0\x8f\x38\x0c\x8f\x50\x02\x81\x7e\x0e\x8c\xfc\x47\x4d\x87\x20\x31\x5c\x20\x1c\x29\xd2\xef\x7f\x6d\x33\xdc\x23\xb5\xf7\x3d\xd3\x62\x39\x6c\x4b\x24\x5f\x29\x72\xa4\xc2\xb0\x6f\x13\x4d\xfb\x61\x18\xe4\xe6\x6d\xd7\x96\xbb\xb6\xd2\x7a\xa3\xc8\x91\x94\xc9\x5d\xc4\x72\xf3\xdb\xb5\x81\x03\xf3\xc5\xa9\xb4\x4a\xb8\xee\x24\x25\x4e\xb9\xe5\x94\x4d\x67\xca\xcb\xca\x9a\x89\xbf\x1f\x2b\xdc\xe8\x0a\x5f\x2b\x92\x4c\xba\x44\x6b\x46\xf3\x1d\x75\x81\xde\xe8\xf5\xf1\x3c\x70\x72\x66\xb6\xad\x20\xdc\x6d\x53\xb3\x6b\xc5\x63\x36\xc6\x56\x82\x95\x84\x4f\xd9\x60\x30\x03\x3a\x95\xb3\xa6\x30\xff\xc0\x62\x19\xaf\x6d\x09\xa0\x7a\x74\xda\x93\x00\xc3\x53\xa5\xd9\xf3\x97\x27\x17\x6f\xcf\x4e\xdf\x9d\x06\x18\x5e\xaa\xa6\x79\x41\x09\xcf\x3a\x79\x92\x47\x56\xe9\xf1\xd8\x70\xa9\x8f\x3e\x1e\xfa\xd7\x12\xde\xb7\xca\x6b\x09\xf9\x77\xe2\x9b\x8d\xe6\x62\x95\x30\x1e\x86\x5a\x54\x39\x4a\xb5\xd8\xf8\xab\x57\x43\x2e\xd5\x2a\x5b\xb0\x8c\x06\x4d\x35\x81\x39\xc9\x06\x3a\x7e\xaf\xc8\xef\x2d\x4d\xa4\x8a\x6e\x25\x53\x14\x3d\x53\xc8\x32\x7c\x51\x9a\x09\xbd\xc9\xfd\x99\x73\xb4\x4e\x24\xe5\xea\x17\xa3\x0b\x8f\x6c\x23\x15\x68\xec\x01\x3f\x2d\xd1\xef\x38\x46\x88\x92\x53\x14\xb0\x85\x34\x6c\x27\x8e\x72\x75\x97\x55\x26\x37\x24\xe0\x82\xd3\x00\x1e\xa8\x28\x59\xaf\x29\x9f\x1f\x2f\x59\x36\xd7\xf3\x41\xa3\x5c\xa6\x9e\xb5\x0e\x3e\x25\x37\x89\x85\x41\x1c\x60\x40\x8a\x18\xc4\xac\xea\x1e\x78\x10\xe0\x48\xac\x29\x47\xba\xc7\xf5\x08\x2a\xf8\x3c\x73\x4b\xaa\x35\x24\x50\xd1\xb3\xc6\x8a\xd0\x04\xcc\xe1\x6b\x79\x70\x30\xc6\x8e\xa3\x7d\xdf\xb0\xc7\x99\xde\xa8\xa9\x9c\x55\x18\xf7\xbd\x42\xb8\x1c\xbf\x98\x3e\x55\x33\x6f\x1e\xf0\x44\xb5\x6d\x76\x9a\xcb\xb7\xc2\x6c\xbe\xbc\xd7\x97\x4e\xd0\xcb\xa6\xd1\x8f\xd1\xfb\x48\x23\x76\xbe\x54\xd0\xfa\x64\xe0\x2b\x4d\x83\x0a\xc7\x92\xe8\x1e\x40\x25\x1c\xd3\x89\x8c\x5f\x3b\xce\x09\x9e\x2b\x43\xdf\xe0\x8b\x6a\xe9\xba\xff\x50\xe4\x4f\x0e\x38\xc2\xf0\x7e\x1a\x3d\xb9\xff\x13\x72\xc7\x23\xf1\x74\x06\x1f\x0c\xa9\xee\x12\xbd\x55\x18\x56\x36\x35\x76\x06\x67\x01\x21\x5f\x94\xd7\x9b\x4c\xba\x4f\x41\x7a\xcf\x8d\xee\x7b\xe7\x18\xa4\xf7\x87\x72\xca\x79\x5c\x96\x5a\xae\x7c\xae\xd0\x9d\x41\x22\x25\xbc\x50\xe4\x3d\x0a\x6e\xaf\xf3\x00\xc3\xaf\x8a\x88\xc8\x62\x2f\xf8\x49\x91\x57\x6a\xf2\xab\x8a\x7f\x55\x61\xf8\xab\x8a\xdc\x69\xfa\xb9\x11\x44\x8b\xe2\x0b\xfc\xdc\x89\xa2\x6e\xd1\x0b\x65\x84\x74\xa4\x11\xe5\x2d\xfa\x55\xbf\x4d\x5e\x68\xee\x9e\xfc\xaa\xff\xc6\xf6\xf9\x27\x2d\x00\x5a\x3c\x19\x0c\x34\x63\x61\x92\x4b\xf8\xd1\x40\xe4\x67\x55\xc2\x2f\xca\xf0\x09\xbf\xd9\x9f\xdf\x15\xf9\x59\xa1\xa0\xe9\xc1\x82\x41\xed\xbb\x93\x68\xec\x7c\x8b\x14\x91\x13\x15\x37\xfd\x70\x7e\x57\x38\x0c\x7f\xd3\xe8\xf0\x77\x05\xdb\xf6\x21\xc8\xb0\x3a\xf0\xc0\x25\x50\xba\xab\xd1\xec\xd0\x79\xed\x4b\xd1\x5d\x0a\xce\x8a\xf5\x6f\x69\x38\xe5\x7e\xa7\xd9\x02\x51\xaa\x17\x73\xbd\x42\x6b\x5d\x7f\x7e\xcb\x9c\x5e\x2f\x4d\x72\xda\x1b\xc6\xbb\x72\x45\xc3\xde\xcb\xfa\x1d\xe0\x72\x6c\xb2\x8e\xf6\xb2\xca\xbd\xbc\x20\x7d\xee\x87\xfb\xb9\x1b\x76\x32\x75\x7e\xe0\xbe\xc4\x77\x5d\x25\x40\x74\x96\x01\x81\x2b\xc3\xc8\xae\x9e\x27\xeb\x75\x76\xa7\xf9\x3b\x2f\x35\xea\xb5\xc9\xa9\x99\xf4\x7c\x4d\x53\x46\xf5\x02\x15\xb4\x8b\x01\xf2\xc0\x7d\xa3\xd7\x7e\x8b\xa3\xeb\x37\x0f\x24\x1a\x6c\x3e\x36\xec\x9f\xa5\xca\x61\xd8\x7f\xa3\x90\x6c\xb0\x3e\x93\x15\xd2\x52\x86\x3d\x27\x22\x48\x12\x39\xe5\xd4\x48\x13\xd2\x9f\xdb\xc6\xd5\x13\x70\x7a\xdb\xb0\x44\x9f\x98\x3a\x63\x89\x91\x45\x34\xc3\x58\xe3\x18\x46\xc9\x74\x66\xe4\x0f\x48\xba\xdc\xc6\x46\x84\x68\x32\xfa\x50\xff\x70\xf2\x9d\xfe\x11\xe4\xaf\xfa\x87\x91\x1f\xf4\x4f\x42\xbe\x37\x06\x1c\x6c\xcf\x31\x2a\x85\x0d\xe4\xb0\xa8\xd9\xec\x0c\xd6\x30\x27\xd7\x0a\xa5\x18\x6e\xc8\x12\xcd\x31\xdc\x11\x49\x91\xce\xf6\x1d\x86\x95\x96\x38\x6f\x2a\x89\xf3\x8a\x0c\xe1\x92\x2c\x8a\x42\x50\xb8\x25\x74\x72\x89\x52\x58\xe1\x58\x9a\x87\x21\x76\x52\xfe\x78\xf5\xf8\x6a\x7c\xe5\xe4\xc3\xa4\x28\xae\x34\x63\x78\xa3\x21\xb2\x26\x77\x28\x23\x37\xd3\xab\x19\x5c\xc1\x1c\x83\xc2\xd8\x98\x05\xdf\x4e\xaf\x66\x64\x5d\xb9\x2b\xad\xb1\x5b\xc6\xca\x2d\x63\xbf\x76\xfa\x43\xbb\x96\xbe\xf7\x6b\x29\xb3\xef\x3f\xf8\xf7\x2b\xbf\x3a\x99\x33\x31\xbe\x85\xac\x36\x20\xaa\x84\xd9\x51\x25\xd4\x4d\x0e\x46\x31\x2f\x0a\x31\x11\xf1\x6d\x59\x42\x4a\xc9\xd6\x99\xc5\xc5\x09\x45\x43\x0c\xab\x64\xad\x9f\x46\x18\x16\x2c\x53\x54\xea\x97\x87\x18\x72\xb1\xa2\xfa\xf1\x3b\x0c\xf4\x86\xca\x3b\xfd\xfc\x57\x9d\x87\xcf\xf5\xe3\xf7\xf6\xf1\xa5\x96\x62\xf5\xfb\x0f\xb8\x84\x0d\x25\x29\xf5\x46\x77\x90\x53\xcd\xc9\x2c\xd9\x7c\x4e\x79\x80\x61\x41\x1d\xc6\x7a\xeb\xcf\xae\x02\x0c\x99\x51\x91\xe5\x54\xc1\xda\x2b\xcb\xac\x5e\xcf\x63\xc3\x00\xc3\xbc\xc3\x8d\x70\x49\x6b\xcc\x7c\x43\x0d\x57\xf5\xe3\xf9\xe9\x9b\x00\x9c\x0a\x8a\x2d\xee\x02\x0c\x77\xd4\x88\x09\x2b\x6a\x50\xe6\x15\x25\x1f\x34\x61\xbb\xa4\x24\x8f\x16\x70\x4b\x35\xa2\xb7\xbc\xaa\xde\x4b\x27\xe6\x5d\xac\x0f\xea\xa4\x0b\x9b\xc5\xd4\x78\xa0\x84\xfb\x72\x20\xe9\x15\xcb\x95\xd4\x2d\x9c\x36\x2a\x31\x39\x6c\xde\x46\x8e\x73\x5a\xd3\x93\x4f\xba\xd7\x3f\xbb\x73\xd8\xcf\x94\xf4\x3f\xd1\xa2\xe8\x7f\x6a\x38\x17\xee\xbc\x46\x1a\xc4\x86\xc3\x81\x63\x4a\x92\x30\xbc\xef\x3c\xed\x89\x42\x2b\x8a\xb6\xe5\xd7\x4e\xce\x56\x56\xe1\x65\xb3\x58\x0c\xff\x37\x73\x96\x56\x62\x7b\xa2\xb6\x77\x2e\x63\x6d\x4f\xee\x28\x9a\x53\xa0\x78\xcc\xc3\xd0\xf1\x36\x73\x3a\xa5\x33\x58\x51\x97\x11\x78\x18\xaa\x3e\x21\x73\x1a\x86\x2b\x9b\x5b\x63\xc5\x78\x45\xe1\x5d\x27\x86\x22\xb7\x54\x13\xbd\x27\x0a\x2d\x1b\xa3\xad\xa8\x42\x46\x91\x04\xe7\x19\xe6\x96\x01\xa8\xe4\x2a\x56\x30\x77\x87\x7b\x4c\x70\x4d\x9e\x20\x29\x0a\x24\xa3\x46\x2a\xa1\x18\x64\x09\x6f\xa9\xa6\xd6\x1d\x7c\xf2\xae\x6c\xa2\xca\x2e\x76\xa3\x3a\x35\x6f\xf8\x7a\x2e\x69\x09\x47\x1d\x04\x96\xd8\x71\x1f\x51\x74\x42\x2d\x34\x8c\xc0\x60\x61\xe7\xce\xe0\xfc\xc0\xcc\x51\xdc\x2d\xba\xd5\xe0\x99\x20\xd9\xd0\xd5\x4e\xcc\x01\x63\x4e\x71\x18\xaa\x69\x4e\x67\x53\x3e\x33\xc7\x67\xf6\x91\xf4\x47\x9a\xb3\x7b\xa2\x79\xb4\xa6\x0d\xc3\x02\x0d\xa1\x3f\x32\x4e\x4b\xbe\x7c\x51\x98\x69\xc9\xed\x31\xda\x56\x4b\x69\x75\x2d\x43\x0c\xc7\xfa\x2b\x07\x89\x71\xbc\xf2\x8f\x25\xbc\xda\x9d\xa6\x6a\x0c\xd2\x2a\xe6\x8c\xd4\x23\xb1\xd7\x6e\xbc\xa6\x4d\xc5\xd1\x86\x22\x0e\x2d\x47\xb5\x44\x53\x11\x87\xa0\x34\x5b\x59\x14\x47\x6e\xb1\x98\x73\x52\x6c\x0c\xd2\xdf\x74\xa1\xfe\x2b\xa4\x8c\xd4\x2a\xc9\x25\x6d\x99\xe2\x7a\x1d\x9b\x79\x77\x40\x37\xa0\x34\x56\xba\xb7\x06\xfa\xc6\x36\xb7\x8f\x64\x51\x68\xa6\xc7\x96\x33\xcf\x26\x5b\x51\xb8\x44\x0b\xe6\x25\xcb\x0d\x60\xe8\x4c\x93\x3f\x2d\x64\x76\xaf\x55\xa3\x87\xab\xa7\x92\x2d\x90\x34\x6b\xdd\x57\xcc\x4d\xc5\x27\xfa\xc1\x9b\x61\xdd\x51\xc3\x2c\xf8\x2e\x8b\x76\x56\x69\x3b\x20\xdd\xb4\x14\x05\x12\x8d\x95\x60\x66\x49\x94\x25\x9c\x75\x82\x87\x5a\x4e\x15\x24\x99\xce\x1a\xf0\xa7\x6d\x2f\x34\xd3\x9a\x32\xad\xbd\x30\xbf\xd2\x6a\xfb\x94\xd5\x6d\x97\xf0\xba\xab\x72\xbb\x96\x41\xea\x56\xe8\xe4\x84\xc6\xb6\x29\xde\x6e\x4a\xb6\x9b\xea\x57\x6d\x51\x33\x0f\x73\xfb\xc2\x6d\x83\x66\xa3\x9b\x46\x79\x39\x46\x47\xaa\x28\x10\x55\x08\x2d\x69\x53\x28\x75\xe6\xa7\xbd\xd6\x6e\xdb\x3f\x98\xb1\xa8\xa0\x66\x27\x9b\x7a\x4a\xec\x8c\xac\x77\xb5\xec\x0d\xad\x4a\xf5\x69\x3a\x9c\x4d\x1c\x7f\xda\x4c\xf3\xc4\x1d\xa8\x39\xdd\x03\xd9\xb6\xac\xaa\x57\x9d\xb3\xdc\x38\xd1\x03\x85\xe6\x92\xb2\xcf\x7a\x5a\xcd\xa2\x44\x8d\x25\x66\x76\xf0\xb1\xc3\xc0\x76\x6f\x6a\x79\xa3\xb2\x18\x0d\xc3\xcf\x34\x0c\x8f\x1d\xf2\xdc\x63\xc8\x73\xaa\x62\x59\x62\x78\xe7\xdc\x3b\xf1\xb7\x9e\x7e\xf4\xd6\xfe\x98\x43\x25\x57\x7a\x1a\xa8\xc6\xb9\x10\xb4\xc4\x97\xa0\xd3\x85\xf1\x1d\x45\x06\x0e\x76\xcd\xe4\xd1\x82\xbc\xa1\xf0\x36\x5a\x90\x23\x0a\x9f\xa3\x05\xb9\xa6\xa0\x05\x45\x43\x54\xc9\x19\x85\x2b\xfd\xfb\x9a\xc2\x8f\xfa\xb7\xbb\xbe\x9f\x95\xab\x10\x92\x30\xd4\x14\xab\x89\xfe\x21\x68\xe0\xf1\x60\x1f\x06\xdd\x54\xad\x1a\x5f\xa3\x70\x59\x9a\x71\xce\xe9\x7d\xca\xe9\x37\x14\xb6\xf6\xe4\x2c\xee\x0f\x4b\x8c\x31\xbc\x55\x68\xeb\xc2\x27\xf4\x87\x70\x2b\x93\xb5\xfe\xb5\xaa\xb9\xb8\x7f\xa4\x20\x5f\x26\x2b\xfd\x50\xc2\xd6\x05\x25\x58\x6a\x02\xb4\xa1\xe8\x4c\xa1\x73\xba\xe3\x05\xda\xdf\xdf\x5c\x52\x39\x86\x45\x93\x2c\xff\x4c\xb6\x25\x1e\xdf\x22\xbb\x65\x7e\x51\xfa\xc1\xd3\x66\x0d\x46\xb3\x5f\x4b\xb7\x6b\x75\x17\xad\x3a\xb3\xa6\x8a\xb9\x4a\x54\xbb\xa3\x25\x68\xf6\x2e\xde\x6f\xbf\x92\xc8\xc6\xc6\x9a\xe5\x82\x36\xcc\x59\x2e\x34\x3d\x77\xe8\x7e\x49\x51\x4d\x89\xcd\x07\x22\xe1\x94\x4e\xe5\x8c\x50\x8d\x39\xae\xe9\xdd\xee\xb9\x2b\x5b\xa0\xfe\x5b\xda\x65\xe7\xa2\x9a\xe2\x9f\xa3\xbd\xae\x03\xa7\x7a\xd0\xbe\x03\xa7\xd4\x48\xbb\x9b\x9c\xda\x15\xd9\x9c\x68\xcd\x28\x0d\xed\x37\xb6\x5a\x67\x74\xf7\xdb\x48\x4f\x77\x13\x38\x4e\x65\xd3\x01\x1c\x37\x8b\x49\x09\x5b\xab\x66\x89\x3b\x8f\xea\x1a\x8a\x91\x27\xc6\xa2\xe9\x15\x45\xe6\xc1\x28\x48\xda\x96\x38\xf1\x11\x85\x3d\x05\xe2\x2b\x0a\xf7\x19\x25\xc5\xd7\xf4\x9b\xbb\x5b\x1a\x56\x6e\x57\x61\x12\x9f\xed\xd6\xee\x34\xb7\xf1\xeb\x6f\xac\xba\xcd\x45\xea\x7d\x8b\x46\xd6\x0d\x6a\xdb\x5d\x71\xc7\x6e\x36\xa5\xae\x95\xd5\x9a\x60\xb8\xd1\x08\xaf\xd9\xb4\x65\xc7\xf7\xc7\x54\x14\xed\xd6\x2d\xda\x5e\x52\x54\x19\x10\x4d\xb5\xa0\x39\x0b\xfa\xe4\x86\x22\x7b\x38\x1a\x6c\x4b\xfb\xba\x4d\x62\x55\x36\x13\x2a\x46\xcd\x75\xbf\xe2\xfe\xf7\x6c\x87\x2a\xc7\x04\x10\x64\xaa\x66\xc0\xc8\x68\xbc\x4b\x2c\x1e\xb3\x31\x16\x96\x6e\xd5\x84\x81\x0d\x06\x33\xeb\x47\x45\x28\x20\x6b\x45\x50\xd1\x14\x2d\x5f\xbb\xa5\x5f\x0b\xdd\xc6\xce\x60\x97\x97\xe8\x76\x03\x35\xee\x34\x84\x37\x18\x1d\x63\x65\x06\xba\xce\x7a\x7b\xea\x69\x15\xd3\x91\xde\x80\x37\xd4\xa9\x06\x8c\x46\x4f\x68\xd8\x8f\x9b\x48\x74\xba\xa0\xb3\xa2\x38\x6a\x23\xd6\x85\x16\x98\x1a\x52\x85\xb7\x65\x04\x45\x0d\x31\xa8\x44\xad\x17\x9a\x5a\x79\x95\xe4\x03\x0a\x4f\x29\xbc\xb4\xd2\x15\x4f\x6e\xd8\x95\x75\x8a\x0b\x36\x39\x95\x47\x57\x46\x5d\x5d\x14\x41\x00\xcf\xb4\x58\xb3\x96\x22\xa5\x79\x0e\xef\x29\x79\x46\xc3\xf0\x19\x8d\xbc\x75\x10\x3c\xa1\xe4\x3d\x0d\xc3\xf7\x34\xba\xf9\xdf\xe3\x27\x74\xf2\x94\x12\xf4\x80\x92\x27\xd4\x5b\x3e\x44\x01\xc6\xd3\xe1\x6c\xf0\x80\x4e\x47\xb3\xf8\x25\x35\x4c\xdc\x03\x4a\x5e\xd2\x68\x65\x34\x77\x87\x27\xf3\x2b\xfa\xf1\x10\x7d\x9c\x0f\xf0\x21\xc6\x45\x61\x72\x3e\x26\x7f\xfb\xab\x26\xb3\xad\x9c\xc7\x4b\x29\x56\x8d\xbc\x61\x88\x9e\x52\x62\xf2\x5b\x1e\xe1\x39\x25\x4f\x69\x18\x0e\x9e\x52\xf8\xb2\xab\x4f\xf9\xa3\xf3\x38\xeb\x39\x7d\x4c\xbe\x1f\x15\x45\x7f\x7f\xe5\xd2\x9a\x35\x42\xb4\xe5\xc3\xba\x2d\xf1\xf4\x0b\xed\xf0\x1e\xdc\x2e\x84\x88\x47\x65\x09\xa3\x3e\x21\x1a\xed\xa1\x27\x42\x64\x34\xe1\x38\x5a\x08\x61\x96\xf1\x07\x7a\x8f\xd5\xdf\x0b\x6a\xec\x8d\xe8\x0e\x67\x62\xfc\x3d\x4a\xf8\xa9\x63\xcd\xdd\xa2\x17\x4d\x3c\xfb\x42\x37\x38\xa6\x66\x7d\x6e\x4b\xcf\xe1\x4f\x67\x7a\x47\x70\xd2\xef\x6b\x52\x14\x1c\x1d\x1f\x9f\x9c\x9f\x9f\x9e\x9d\x07\x38\x0c\x69\x54\xbd\x82\x20\xfa\xfb\x10\x4f\xe8\x74\x38\x8b\x7f\xa5\x90\x9a\x84\x91\x4e\x18\xcd\xbc\x6e\xa4\xd9\x14\xe9\xf7\xe5\xde\x81\x92\xde\x4b\x61\xd8\x4f\xaa\x83\x77\xc7\xbb\x6d\xed\x2e\x8c\x0f\x46\xe5\x98\x4f\x3e\x68\x81\x61\xd4\x12\x77\x1c\x13\xf0\x2b\x2d\x71\xac\xf4\x7e\x18\x41\xe5\xf4\x2c\x5c\x90\x05\xf8\xd9\x2a\x21\x8c\x2a\x03\x7e\xa4\xe4\x0f\x8a\x02\xfb\x16\x60\xf8\x85\x92\x9f\x1a\xef\xe3\x26\xc6\xb2\x27\x4e\x60\xb6\x49\x13\x67\xfd\xa8\x39\xfd\x5f\xa8\x26\xac\x56\x3f\xd2\x65\x8f\x45\xfd\xee\xdd\xc3\x29\xa3\x49\x8d\x4b\x2a\x20\x99\x7d\x6b\x8c\xb1\xba\x65\x0e\x33\x23\x95\x81\xbb\xdc\x13\xfc\xed\xa8\xed\xa9\x49\xe3\xa8\xc0\x2f\x86\x51\x09\x0e\xa1\xff\xde\x52\xc9\x28\x49\x7e\xd3\xc3\xb7\xaf\x01\x06\x2a\x2d\x3c\xaa\x04\x29\x89\x92\x61\x48\xe5\x64\x5a\xc5\x20\xe9\x1a\xf0\xef\xff\xf2\x80\xbf\x05\xd6\x75\x9b\x7d\x22\xa5\x65\x65\x4c\x0f\xa4\x74\xf0\xe2\xd2\xa8\x74\x84\xdc\xb1\xa1\xe7\xd2\x92\xb0\xf1\xb7\x50\xd6\xa4\x28\x84\x6c\xf0\x02\xf7\xd2\xea\x4e\xee\x80\x4b\x74\xe7\x78\x01\xd7\x29\x26\xef\x09\xe3\x74\xa5\x59\x29\xeb\x7f\x3b\xb1\x67\x83\x1c\xb4\xcc\xae\xa5\x6f\xa5\x25\x72\x59\x7e\xb5\xc3\x7f\xde\xc5\xbc\xdb\x07\x09\x1a\x06\x24\xd6\xae\xe0\x52\x21\x8e\xc1\x9c\xb3\xa7\x64\x38\xf6\x36\x36\x8f\xd3\x31\xae\xa8\x19\x92\x44\x20\x0e\xd4\x1b\xc7\xe0\x30\x64\x12\x25\x36\x62\x91\x97\x54\xbe\x91\xdb\x6a\x4f\xcf\x99\xaa\x38\x8c\x6b\x7a\xd7\xc9\x50\x9c\xa9\x9a\x9d\xa8\x0e\xd7\x34\x70\xf9\xf6\xf8\xfc\xfc\x6c\x93\xd1\x57\x2c\x57\xf1\x10\x8e\xcf\xcf\xcf\xd5\x5d\x46\x9f\xd2\x34\x4b\x64\x62\x74\x41\x26\xf5\x83\x26\x6b\x3e\x53\xc6\x28\x57\x67\x34\x55\x2e\xe1\xe9\xe9\xeb\xf6\x9b\xe5\x87\xeb\xf7\x77\xe2\x9a\x72\xf3\x3a\x82\xa7\x89\x4a\xde\xc9\x84\xe7\x0b\x2a\x5f\x2a\xba\x72\xb9\x9e\xb1\xaa\x13\x2f\xde\xbd\x7e\x75\x94\x65\xc7\x22\xcb\x68\xea\xba\xa0\xd3\xf6\x12\x9e\x09\xb9\x72\xa7\xbb\x2e\xe5\x9c\xea\x1c\x75\xda\x6b\x3a\x67\x89\xab\xf6\x35\x5b\x51\xcd\x3d\x5b\xad\xf9\x10\x34\xc3\x37\x7f\x23\xe6\xf4\x75\xb2\xd6\xaf\x62\x4e\x5d\x17\xdf\x26\x4c\x8f\xef\x8f\x0d\xcd\xfd\xa0\xde\x66\x9b\x2b\xc6\xab\x07\x5f\xc7\xf9\x87\xe7\xaf\xcc\x5c\xbb\x6c\xe7\x1f\x9e\xbf\xd9\xac\x2e\xa9\xac\xdf\xdf\x26\x6a\x79\x4e\xaf\x1a\x09\x82\x71\x55\xbf\xb6\x60\x75\xfe\xe1\xb9\x85\x8d\x90\x1e\x30\xd6\x3a\xf9\xc9\x66\xb1\xa8\x6b\xd5\x53\x74\xbe\xa4\xd4\x57\xf3\x8e\x7e\x56\xef\x64\x92\x5e\x1f\x57\x93\x54\x25\xf9\x77\xb1\x49\x5d\x2f\x4b\x67\xe9\x28\x89\x98\x26\x72\x06\x1b\x49\x52\x19\x86\x69\xe3\x5c\x42\xf3\x64\x1b\x19\x86\x1b\x59\x23\x0d\x22\x25\xb6\x46\xe0\x1b\x09\x15\x5a\x03\xd9\xb4\x75\xaf\xf3\x6b\x1c\x63\x8e\xb4\xf3\xfd\x0d\xec\x59\x2f\xbb\x79\xbb\xfd\x15\x74\x56\x27\xad\x49\x68\xd3\xa9\x5d\xe1\xb5\x76\x29\x1a\x1a\xe2\xe5\x2d\xd8\x17\xf2\x2b\xc1\x01\xbf\x2d\xa0\xdf\x9f\x87\x0c\xdc\xda\x78\x57\x99\x24\xe8\xcf\x33\x57\xd8\x60\x21\x27\x0b\x19\x6f\x4b\x1c\x5d\x5c\x7c\x78\x7f\x72\xf1\xf4\xe4\xc3\xbb\xd3\xd3\x57\xe7\x17\xcf\x5f\x9d\x3e\x39\x7a\x75\xf1\xe2\xf4\xf4\xa7\x8b\x8b\xda\x91\x7c\x2d\x2d\x9a\x6c\x18\x61\x20\x85\x3b\x02\x59\x35\xa0\x8b\xd4\x54\xce\x40\xe2\x56\xb8\xaa\xb9\x6c\x06\x52\x72\x67\xdd\x1d\x81\xa1\x94\x99\xbb\xa5\xdc\x75\x02\x30\x4e\xaa\xde\x4d\xd0\x7a\xa1\x5e\xa4\x4b\x96\xcd\x25\xe5\x3b\x91\x31\x8c\x3b\xaf\xcb\x22\x93\xdb\xd7\x62\xbe\xc9\x28\x71\x0e\x45\xce\x50\x88\xda\x90\x59\xe6\x91\x74\x31\xf1\x72\x22\x11\x8e\xa5\xb3\xc4\xbe\x91\x64\xcb\xb5\x9c\xb6\x4e\x34\x1e\xdc\x55\x63\x94\xe5\xf8\x46\x46\x75\x86\xe8\x8a\xaa\x7d\x26\xb1\xdf\xdf\xe9\x53\xa3\x44\x09\xcb\xc6\x2e\x88\x92\xb9\x3d\x21\xe8\x82\x42\x35\x6c\xeb\x01\xd1\x2e\x28\xe9\x4a\xdc\xd0\xdd\xb2\x78\xeb\x2d\x72\x77\x2b\xd8\x29\x7e\x45\xd5\x7e\x59\x7f\x7e\xf9\x27\x65\x97\x49\x7e\x7f\x59\x1f\x9d\xa1\xae\x60\xa7\xf4\x66\x3d\x4f\xd4\x2e\x0f\x7c\x1f\xb4\x88\x6a\xbc\x80\x8a\x12\x53\x26\xf7\xbe\xa7\x8d\x32\xee\x0b\xa9\xf2\x60\x50\xd1\x6a\xa3\x92\xfb\x0a\x54\xdf\x48\x23\x9f\x2e\x64\x4f\xb1\xba\x8a\xb8\x2f\xa4\xca\x83\x77\xc6\xe6\x76\xcb\x3e\x74\xf4\xee\x6a\x01\xc5\xa8\xd1\xba\xca\x3e\x37\x35\x7f\x15\x3c\x55\x07\xab\x5a\xf7\xbe\xdd\x5b\xfd\x91\xa9\xf5\xab\xd5\x57\x30\xee\xa8\xde\x7d\xbb\xb7\xfa\xd7\x0e\x90\x5f\x6d\xa0\x31\x2b\x1d\x4d\x54\x5f\x4d\x23\xf7\x18\x79\xa1\x66\xe3\x70\x23\x5d\x20\x3f\x09\xab\x0e\xd0\xd9\xf3\x3c\x2a\xd1\x74\x06\xca\x9c\xb8\x8c\x57\x3b\x7b\xa1\x73\x29\x47\x92\xce\x37\x69\xcb\x33\xa0\x19\x6f\xb5\xda\x43\x88\xe2\xd2\x47\x9b\x12\x42\xf7\x7a\xb7\xfa\x37\x7e\x0d\x77\xa9\xed\x7d\xb9\xf1\xd7\xda\x6d\xd8\x3a\x0c\x10\xa2\xa4\xde\xc1\x48\x62\xdc\xd8\x24\x13\x39\x08\x0e\x83\x38\x08\x74\x9f\xf4\xdf\x76\x67\x3a\x76\x5f\x1d\x0e\x50\x79\xab\x6e\xe3\xc7\x6e\xb3\x6a\xbe\x93\x47\x2b\x33\x37\x79\x15\x84\x45\x18\x5b\xe6\x2a\xd9\xe8\x10\x65\xdd\x25\xe1\x45\xd6\xb1\x42\x95\x4d\xad\xc0\xd0\xca\x52\x57\x3b\x15\x33\x5c\x96\x66\x7a\x3c\x30\x60\x0f\x8c\x7e\x16\xef\x61\xd6\x4d\x58\x94\xda\x72\xc1\x98\x37\xf4\x87\xd8\xc7\x80\xa3\xb7\xbd\xa5\x34\x06\x22\x63\xe3\x50\xe4\x18\xe8\x49\xd5\x20\x11\x36\x6e\xc3\x15\x55\xc8\xdb\x17\x0d\xe1\x60\x84\x71\x85\xa3\x91\x9a\xaa\x2a\x1c\xc0\x0c\x04\x1e\x53\x3f\x02\xb3\x92\xab\xb7\xe6\x69\x1a\x08\xbc\xe5\xf5\x12\x54\x0d\x68\x50\x47\x3a\x77\x66\x88\x77\x8c\xb4\xb5\x58\xf6\xbb\x08\x92\xb4\xfb\xc6\xdb\x0b\x64\xcc\xc3\x90\x7b\xaa\x1a\x86\x2d\xea\x81\xe4\x6e\x0f\x58\x7e\xe6\x7a\x40\xe7\xff\xf9\x3e\xd4\xa1\x8f\x3c\xbd\xd0\x2d\x99\xf9\xb8\xba\x6f\x68\xf5\x04\x2a\x8d\x7e\xc9\xb6\xc4\xd0\xbf\x93\x61\x78\x3f\xe3\xe3\xed\xd7\xa2\x0f\x1b\x1a\x86\x3b\x7a\x6d\x5d\x54\x11\x42\xee\xbc\xc9\xff\xb8\xff\xbf\x0e\xff\xd2\xff\x5f\xff\xbf\xde\x5f\x7a\x37\x1b\xfa\xb9\x77\xf3\x5d\xf4\x7d\x34\x32\xef\x28\xc5\xd6\xa5\xed\xe4\x26\xe1\xbd\xdf\xc4\xc6\xa4\xfe\x43\x8f\x90\xe7\xb4\xf7\xfa\xe5\x3b\x9d\x70\xf8\xbf\x76\x9a\xb0\xcc\x38\x52\x5e\x61\xd6\xd0\x8a\x4d\x87\x33\xfc\x98\x3c\xc4\x2a\x5a\xb1\xcf\x8c\xa3\xed\x25\x5d\x08\x49\x8f\xad\xee\x5a\xcb\xc4\x95\x57\x97\x31\xb1\xac\x26\xe0\x82\x71\xa6\xc6\x7b\x29\x6d\xa0\xed\x43\x4a\x45\x26\x97\xfd\x99\x4c\xe5\xcc\xaf\x35\x9b\x82\x35\x9b\xdb\xd4\x55\x36\x43\x54\xca\x4a\x99\x6b\xa6\xf7\x81\x30\x47\x31\xf9\x58\x33\x51\x42\xba\xf0\x22\x0f\xcc\x73\x67\x3c\x36\x9f\xcd\xfe\x22\x1c\xbb\xa7\xd8\x9b\x8e\x86\xa1\x7f\x72\xd5\x78\xfa\xea\x2a\xdd\xf9\xaa\xf1\xc1\x9d\x24\x0a\x97\xa8\x9e\x5f\x5c\x71\x76\x6b\x23\x23\xed\x6d\xf8\xe9\xcc\x1f\xdd\xeb\xe6\x25\x4b\x55\x9d\x83\x9b\x90\xb9\xfd\x91\x67\x18\x53\xb1\x5a\x31\xa5\x18\xbf\xaa\x22\x56\x5d\x78\x26\xe2\x7e\x36\xd3\xe6\x38\xdf\x5c\x6a\x11\xfe\x52\x33\x03\x1e\x6b\x5d\xd4\x0c\xc5\xfd\xc5\x6f\x65\xb2\x5e\xd3\xf9\x73\xc7\x48\xdc\x9f\xd1\x61\x12\x83\xb8\x56\xd2\x9c\xbb\x35\xd3\x2b\x82\xf2\x3a\x59\x7f\xa5\x96\xbc\xab\x9f\xb7\x5a\x94\xa2\xf2\xc3\x6b\x53\xf9\x9d\xf4\x35\x27\xd7\xd4\xf8\x7c\xb8\xce\x1d\x27\xe9\x72\x37\x14\x5d\x1d\x3f\xc7\x06\xfe\x01\x17\xf9\xc9\x07\xb3\x82\x84\xf8\x50\x2c\x2b\xbd\x82\x9b\xdf\xba\xfd\xaa\x98\x8f\x09\x64\xdd\xd9\x1b\xa5\xef\x93\xe9\x92\x46\x09\x63\xfd\xe0\xf8\x7b\x3d\xdb\x84\x8f\xad\x87\x5d\x0b\x58\x06\xbf\x3b\x61\xe0\xd4\x32\x1c\x90\x42\x3d\x6f\x8d\x5c\x18\x2e\x7c\x06\x4d\xad\xf6\xa5\x1f\xd5\x8c\xb7\x6e\x0e\xf6\x50\x7d\x9c\x10\xcd\xe9\x8d\x12\x22\xcb\x27\xf5\x63\x7c\x27\x23\x2b\x44\x54\x49\xb8\x8d\xa7\x32\xe3\x6a\x1d\x5d\xb8\xcf\x2f\x84\xb8\x26\x99\x84\x4c\x46\x74\xa5\x31\x89\x46\x54\xb1\xde\xc0\x01\x28\xac\x93\x05\x77\x89\x4a\x26\x37\xd4\x59\x2e\x25\x8a\x06\x6d\x2b\x0e\xe5\xfd\x37\xce\xf5\x47\xd7\x5b\x15\x55\x6b\x62\x97\xaf\x69\x37\xe8\x57\x73\x60\x67\x06\xc3\x76\x2d\xe9\x9a\xf2\xb9\x91\x81\x9b\xf5\x58\x96\xf2\xeb\xb5\xd9\x6d\xd3\x5d\x17\x2e\x9d\xeb\x1e\x5c\x4a\xb2\x35\x23\xe9\x92\xbb\x2a\x54\x75\x2b\x77\xa5\x7c\xef\x8d\x85\x14\x7e\x34\xd4\x88\x20\x0c\x35\x3d\x33\x4d\x4c\x34\x45\xcd\x97\x6c\x61\x8e\x02\xa9\x37\xa4\xa8\xc3\xf0\x21\xaf\xb5\x6d\x56\x33\x96\x8f\x0f\x46\x9a\x50\x6a\x6c\x9e\x52\x24\x61\xd4\xc4\x96\x27\x4e\x58\x56\x7f\x82\x32\xfe\x14\x29\x7c\x1b\x46\xf8\xe6\x6d\xbf\x23\xf9\xea\xc5\x0e\xd2\xac\xf4\xf6\x32\x37\x36\x3a\x17\xf6\x6b\x33\x76\xeb\x85\xdc\x61\xaa\xa2\x8b\x9b\xd5\xb8\x12\x77\xc8\xb6\x34\x35\xfd\xab\x98\x62\x77\x94\xc0\xc8\xb6\x1c\xaf\x25\x12\x2d\x4e\x49\xe2\x2d\x9b\xca\x59\x37\xa2\xe8\x30\xb3\x35\x31\x81\xcc\xe9\x7b\xa7\x98\x70\x87\xaa\x8e\x83\xbc\xcf\xac\xce\x8c\x70\x2a\x67\x65\x5b\x03\x64\x1c\xd7\x5d\xa0\xb0\x7a\x03\xe7\x2c\xa3\x5c\x8d\x77\x13\x48\x7f\x08\xa6\x1e\x87\x50\xd1\x76\x9e\xa8\x24\xde\x3e\x78\x60\x17\x33\xb5\x01\xc0\x36\x8a\xce\x63\x56\x62\xd8\x2b\x9f\x80\x27\x57\x6d\xcc\x60\x2a\x8d\x1e\x18\x84\xdd\x65\x3a\x68\xf1\x97\x6e\x2c\x72\x6d\xb5\xe2\x59\x63\xcd\x14\x6c\xe7\x94\x1a\x6b\x88\xfc\x8e\xa7\x76\x64\xc6\x22\xca\x6e\x13\x3d\x35\x4c\x2d\x8f\x0d\xc6\x6d\xab\xe4\xdb\x15\x1b\x1f\x04\x8d\x40\xee\xa4\x09\xf6\xf5\x8e\xa5\xd7\x5d\x5d\xe2\xd1\x83\x39\xcd\x95\x14\x77\x26\x34\x67\x33\xea\xae\xf4\x37\x33\x40\x15\x36\xb0\xef\x7d\xe5\x34\xe1\xa8\x97\x68\x53\x62\x42\x36\xdc\x3e\x6f\x88\x38\x16\x5d\x76\x6c\x89\x69\x32\xbb\x67\xb3\x4c\x93\x19\xe1\x18\xfa\x2c\x0c\xfb\xc2\xbb\x61\x9f\x1b\x81\xa0\xcd\xc4\x6e\x88\x9c\xca\x06\x13\x7b\x3f\x80\xee\x64\x94\x53\x65\x2c\x96\xb9\xdd\x6f\x86\x99\xb7\x71\xd4\xb9\xf5\x57\xf9\xbc\x4f\xc5\xdc\x0d\x11\x26\x72\x25\x08\xb2\xf5\xe4\x31\xe6\x9a\x68\xf8\x97\x5d\x1b\x74\x0b\xae\x4f\xd2\xbd\x9b\xe0\x8a\xeb\xe4\x2e\x13\xc9\x1c\x52\xc2\x22\xc7\xae\xc1\x86\x30\xe3\x1b\x5f\xdd\xc6\x10\x86\xa9\xd9\xf1\x45\x81\x36\x84\x0e\x36\x1a\x9b\xf8\x56\xd0\x06\x5c\x70\xba\x15\x53\xa6\x7d\xf7\xf8\x5f\x6e\xbd\xb3\x59\x5b\xb9\x6e\x14\x52\x5c\x56\xc6\x53\xf7\x49\xf8\xc2\x6c\x59\xbd\x7b\x63\xb3\x77\xf9\xa4\x6b\xf7\xba\x2c\x65\xc7\xd6\xde\x3b\x4d\xed\xdf\x87\xbb\xa6\x74\xe6\x89\xc0\xb6\x34\xb2\x93\xf3\x08\x6a\x29\x43\x2b\xa5\x4f\x07\x5b\x20\x4c\x03\xa2\x5a\x4b\x1c\x1b\xb7\x07\x1f\xc2\xd0\xa5\x73\x3c\xee\x46\x54\x12\xd8\xfd\x08\xca\x35\x3b\x15\x1d\x48\xca\x92\xf4\x7b\x47\x45\xaa\xd8\xb0\x5f\xc9\x54\xda\x78\x39\x25\x38\xd2\xdb\xdd\x8f\x73\x2d\xe3\x98\x1c\xe6\x22\x88\x12\x83\x28\x8d\x1f\xab\x96\x2e\x77\xd5\x3f\x68\x07\xad\xf7\xdb\xbb\x00\xb8\x89\x5e\x52\x13\x47\xe3\x2a\xbf\x9b\xa2\xb9\x79\x17\x97\xa4\xc5\xd7\xd4\x91\xb2\x5d\x7f\xec\xc6\xd3\x9d\x19\x48\xa0\x90\x5b\x83\xc5\xb6\xc6\x6b\xb7\x47\x3e\xce\xae\x5e\xa4\x13\x19\xeb\x92\xc2\x5c\x6e\xc3\xe7\x19\x95\x45\x41\xc7\xf7\xf4\xd9\xd1\xfb\xaa\xc7\xf5\xfb\x7d\xfd\xf5\x2e\xf2\x55\xbf\x1b\x7b\xbe\xe6\x9c\xfd\x2e\x74\xdb\x04\xfc\xda\xe7\x15\x0d\xb3\xd3\xe3\x07\xad\x3b\xee\x26\x32\x6e\xd0\x39\x21\x94\x61\xf7\x62\x37\x59\x65\x6d\x7b\x8b\x04\x61\xb8\x2b\xc0\x55\x4f\x98\xa8\xcb\x45\x51\x07\x73\xae\xee\x50\x60\x76\x81\x35\x78\xd3\x89\x0b\x61\xba\x73\xb7\x85\x0b\x5b\xd9\xcc\xd9\x64\x00\xa9\x94\x42\x06\x36\x16\x09\xc6\x9a\x0c\x9a\x19\xe3\x20\x76\xe7\xcb\x0e\xea\x1b\x56\x90\xb9\xfd\x60\x87\xb3\xd0\x3b\xd9\x6b\x9e\x3a\xbe\x75\xa9\xf9\x24\xf2\x20\xad\x41\xed\x57\x7a\x43\xd1\x7b\xef\xfa\xb2\xaa\x8d\xe6\x15\x1b\x0c\x6f\x3d\xb1\xf3\x12\x38\xc3\xd6\x69\xa8\x49\x10\xcf\x65\x8b\xc1\xa1\x7f\xa2\x6e\xd4\x3b\xd5\x58\x5f\x56\x15\x7c\xda\x65\x84\xcd\xd1\x8b\x26\xea\xee\x86\x18\x49\x28\x50\xa2\x40\xf9\xe0\xa2\xce\x2c\x5f\x81\xc3\xde\x31\x05\x87\xbb\x63\x59\x96\x97\xd2\x0e\xbb\xfb\x50\xc3\x71\x1b\x37\xab\x1d\x8e\x03\xaa\x62\xf9\x8e\x1e\xb5\x84\xab\xa6\x5a\xe9\x1e\xb1\xae\x56\xdf\x81\x20\xd5\x90\x40\x63\x4d\xa3\xdc\x4d\x88\x68\x10\x1b\x3b\x00\x56\x0d\x20\x29\x61\x43\x76\xe4\xef\x29\x9b\x8d\x37\x95\xfa\xfe\x1e\xf2\xbd\xe9\x16\xee\x14\x4a\x7c\x0c\x91\x3d\x11\xda\x7b\x1d\xfe\x89\x58\x98\x36\xf9\x01\xbc\x03\x84\x7b\xa4\xe1\x3a\xa2\x28\x70\x07\x04\xeb\xa3\x6c\x40\xc0\x08\xaf\x40\x90\x38\x10\x88\x0a\x04\xac\x04\x2f\xf0\x7a\x64\x64\xaf\x33\x48\xad\x2f\xe5\x3d\x8a\x8b\x7a\x34\xc6\x2e\xe6\x9e\x98\xeb\x56\x65\x55\xe2\x3f\x19\xb4\xcb\x87\x12\x90\x0d\x5e\xa8\xed\x79\xbc\x21\x69\x6d\x64\xe2\xf1\x8c\xc6\x88\x69\xb4\x4a\xd6\xf7\x00\x93\x19\x20\xc6\xe9\x74\x38\x43\x75\x20\x79\xcd\x67\xbb\x1a\x76\xb7\xcb\x66\x37\x82\xbc\x0b\x2c\x26\xbb\x40\xf0\xd5\xa1\x9b\xb8\xb1\x7f\x3e\x72\x93\xed\xde\x81\x5b\x2d\x41\xdb\xbc\xf8\x3f\xd7\x1d\x83\x41\xbb\xbb\xd3\x44\x22\x26\x5b\xdd\x1d\x6b\xff\xdd\xe8\x10\xb5\xf6\xc8\xa5\x71\x97\x6d\x2d\xcd\x6a\xa5\x77\x0b\x60\x46\xec\xde\xdb\x13\x46\x6b\xd3\x5d\xcd\xde\x51\x53\xbb\xb2\xce\x40\x3c\x4e\x45\x1a\xab\x32\x56\xf7\x69\xdc\xf6\x9b\xbc\xdd\xdb\x51\x3b\xe7\x02\x2d\x0c\x56\xe9\xbf\xbe\x26\x59\xed\x13\x05\x3d\x8d\x56\xe1\x74\xd5\x3e\x96\xa8\x75\x2c\xf7\x69\xb5\xbf\x8a\x88\xe8\x3e\x4e\x25\xaa\xdc\x43\x1c\xfe\x50\xc0\x1d\x72\xef\x0d\xb6\xad\x08\xd5\x92\xdf\x5e\x3c\x27\xab\x29\x9e\xaa\x19\xde\xd5\x7c\x55\xa7\x13\x1a\xed\x78\x15\x59\x7d\x6e\x0e\x6a\xa7\x80\xd1\xfe\x63\x30\x4a\x96\x9c\xca\x1b\x3b\xfc\x5a\x79\x56\x17\xdd\x1d\x46\x7d\xba\xb1\x37\x90\x16\xc8\xbe\xbd\xf3\x75\x8d\xb5\x96\xf4\x1e\x50\xbb\x10\x2a\x12\xd1\x8a\xbe\x37\x85\x3f\x2d\xd8\xdb\xe3\x73\x24\xa1\x75\x96\x61\xe8\xc1\x89\xf4\x7a\xaa\xab\x9d\xd3\xf0\x8e\xa1\x78\x87\xb5\x6f\x1d\x45\xf3\xcc\xc5\xc4\xcc\x68\xb7\x21\xd4\xfb\xfb\x8e\xcd\x2b\x38\xd8\xe3\x3a\x55\x75\xd4\x04\x98\x6f\xd7\xd3\x00\xcc\x7d\x07\x3b\x0d\xbd\xf8\x78\x5f\x51\x3e\x04\x85\x3a\x14\xe8\xf4\xfe\x83\xda\x66\xfb\x70\xe9\x0e\x6a\x3f\x4b\xf2\x56\xee\x62\x6e\x2f\x80\xf9\xdd\xfa\x4e\x22\x7a\x0f\xb6\xf3\xdc\xfb\x35\xbd\x33\x6c\xfb\x4d\x92\x8d\x05\x51\x03\x01\x72\xca\x67\x3b\xce\x49\x7d\x55\x14\x47\xb2\x79\xd8\x00\xc1\x2a\x59\x3b\xae\x30\x68\xd8\xd7\x36\xb2\xb4\xa4\x2e\x5d\x69\xa4\xd9\x58\x62\xf4\x95\xa0\xd1\x30\x1c\xff\x37\x8c\x61\xb7\xf7\x75\x54\xf2\xe9\x0c\xe4\x9e\x7b\x94\x8d\x58\x61\x9c\x3b\x6a\xa3\x4d\x39\x1b\x37\x42\xf8\xbb\xd1\x78\xb6\x63\x5c\x5f\x7b\xc4\x48\x07\x50\x2c\xce\x36\x40\xb1\x97\x1a\x79\x6e\x9a\x9b\xdb\x1c\x8c\x4a\xa3\xaa\xcc\xc9\x96\x5d\x02\xc5\x44\x38\x43\x77\xb3\x10\x35\xf8\x1c\x23\x4c\x31\x8e\x79\xe3\x9b\x6f\x7c\x2a\x9a\x59\x4a\x0f\xe5\x5a\xeb\xfb\x4e\x76\x45\x21\xab\x93\x5a\x31\x69\x90\xc2\x45\x61\xb8\xe1\x12\x29\x3c\xd9\xfd\x36\x51\xf7\x71\x1c\xdb\x6b\x7a\x17\x2b\xb8\x49\xb2\x58\xe9\x4e\xc4\x3b\xe6\x50\xed\x62\xb4\x55\x8c\xda\x62\x9a\x4f\xd7\x25\xa7\xb3\x9a\x53\x7f\xdb\xd9\xf9\x06\xeb\xbe\x1f\xbd\x6f\xe2\xb8\xf7\x20\xc0\x71\x70\x68\x2f\x1f\x73\x17\x9d\xd0\x0a\x31\xe1\x30\x44\x74\x40\x82\xc3\x00\x83\x72\x57\x34\x56\x8d\x1e\xed\x8a\x07\xf7\xa8\xc6\x64\xa3\xa3\xaf\x1a\x4a\x3a\x1f\x87\x09\x72\xbc\x0d\x2e\xad\x95\x7b\xdd\xc1\xc4\xc4\x00\x4c\x21\x25\x09\x24\xa4\x3f\xc2\x63\x63\x3f\xdf\x5b\x74\x1d\x0f\xca\x89\x8c\x2a\x41\x63\x9c\x51\xd5\xcb\x5c\x78\x37\x15\x49\xca\xe7\x54\x53\xad\x85\x7b\x24\x3e\x0d\x16\x06\x4d\xb3\xf4\xcc\xbc\x3e\x33\xa6\x3a\x3b\x29\xb0\x30\x88\x68\xcd\x32\x3a\xd7\xe8\x49\x98\x8a\x7c\x0f\x92\x8c\xf4\x87\xd8\x6a\x3b\x17\xd1\x45\x9e\x8a\x35\x7d\x39\x27\x1c\x03\x9b\xa0\xac\x85\x02\x91\x22\xaa\x28\xec\x92\xbc\xe1\x62\x4e\xdd\xbd\x14\xf6\x25\xca\x73\x79\x6c\x97\xbf\xcb\x54\x9d\x6a\xd6\x2f\xed\x82\xad\xb4\x46\x79\x5c\x14\x8d\xd3\xec\x0a\x44\xd6\x4a\xef\xfc\xfc\xec\xe2\xf8\xf4\xcd\xbb\x93\x5f\xdf\x5d\x5c\x14\x05\x52\xa4\x23\x1d\x83\x39\xc3\xaf\x4f\x72\x37\xe6\x40\xc3\x40\xf3\x42\x56\x64\xe4\x58\xac\xd6\x82\x6b\x9c\x70\xef\x87\x28\x99\xcf\x35\x8b\xad\xa1\x98\xe7\xd2\x93\x20\x92\xe1\x58\xcb\x8f\x59\x2b\xda\xaf\x66\x55\xea\x36\x73\xcf\x0d\x3e\x30\xa7\x6b\xfe\xc0\x38\xca\x97\xc9\x5c\xdc\x9e\x09\xa1\xda\x31\x80\xdb\xa5\x53\xeb\xf4\x03\x19\x66\x8b\xd6\x7c\x61\x7b\x3f\x51\x4f\x11\xbf\x1c\xc6\xd5\xba\xe8\xda\x38\x3e\x60\xbb\xac\x37\x80\x39\x54\xaf\x6b\x69\x1e\xba\x8f\xdb\xaf\x44\x4d\xa6\xf5\x21\x39\x64\x38\x9e\x66\xb3\xea\x36\xa5\xd2\xd6\xf1\xc6\x59\x04\xc6\xc1\x51\x9a\x8a\x0d\x57\xf9\x2b\x96\x2b\x63\xfd\xbe\xce\xe3\x6d\xe2\x12\x63\x2b\x96\x19\x14\x03\x3e\xce\xa8\x39\xb9\xb2\x36\x0f\xd7\x92\xec\x70\x22\xf6\xa8\x5d\x0b\xe8\xd1\x83\x56\x14\x6e\xd0\x5b\xe0\x22\xa7\x99\x5e\xdb\x45\x51\x29\x73\xa5\x0d\xb0\x0d\x53\x89\x02\x91\x1e\x28\xeb\x0d\xb9\x4d\x94\x92\x79\xbc\x5d\xb1\xf9\x3c\xa3\x71\x10\xc0\x9c\xdd\xb0\x39\x95\x71\x10\x94\x65\x2b\xf3\xc1\x95\x14\x9b\x75\xbb\x82\x03\x73\x53\x50\x2b\x25\xa5\x59\x56\xd7\x9b\x2f\x25\xe3\xd7\xba\x5e\xeb\xd2\xbf\xa4\xc9\x3c\x28\xcd\x11\xe0\xc5\x0d\x0a\x7a\x01\x86\xfb\x0b\x37\x8b\xc0\x5c\xac\xde\x5a\xa0\xe9\x7d\x70\x6c\x03\x3a\xc5\x7a\xa8\x48\x45\x0f\x0c\xc1\xfd\xac\x50\xf0\x3e\xa7\xd2\x06\x2d\xc5\xff\x9d\xcd\x3c\xb5\x21\xa9\x7a\xff\x03\x4d\x9d\xac\x12\x96\xfd\x0b\x6d\x74\x83\xfc\x9b\xe1\xc7\xe6\x3d\x6e\xac\x52\xfe\xc7\x9a\x7c\xfe\x3f\xdf\xe4\x09\xd7\x55\xce\x6d\x7b\x33\x18\x99\xff\xf7\xb4\xeb\x96\xbd\x8a\x2e\x32\xa4\x22\xbf\x63\xa1\x4b\x80\xde\xdb\x19\x86\xb4\x07\xae\xcc\x41\xc6\x72\xa5\xd3\x0f\x82\x01\x8d\xd8\xbc\xec\xda\x38\x2e\x29\xb9\x49\x54\x22\xeb\xe1\x6e\x72\x2a\xed\xcd\x2a\xbb\x17\x10\xae\x25\x5d\x50\x29\xe9\x5c\x27\xc0\x2d\x9b\xab\x65\xfc\xdd\xf7\x6e\x58\x5f\x07\xe5\x57\x80\xb5\x53\xef\x9f\x4f\xcb\x57\xeb\x6a\x75\x39\x38\x08\xfe\x8b\xd5\xe9\x0d\xf1\x5f\xac\x62\xc3\xe6\xd6\xf6\xea\xff\x46\x7f\xae\xfe\xc5\xca\x2c\x17\x72\x9c\x25\x79\x1e\x07\x9b\xeb\x03\x5d\xe5\x41\x4a\xb9\xa2\x32\x28\x61\x4a\xfd\x22\x73\xab\x74\x62\xab\x60\xa9\x71\x8d\x77\x0b\xc2\x12\x15\x73\xa5\x7b\x00\x37\x89\x64\xd6\x19\x26\xc8\x37\x26\x48\x7f\x00\x81\x4e\x3b\xc8\x92\x4b\x9a\x05\x71\x73\xed\x3b\x42\xd4\x63\x79\x8f\xfa\x6d\x50\x96\x38\xbe\xbf\x95\x39\x5d\x4b\x9a\x26\xe6\xa6\xf0\x46\x53\xf3\x84\x5f\x51\xf9\x6d\x2d\xcd\x59\x5e\x37\xe5\x37\x9c\xe6\xd3\x47\xf5\xdb\xf8\x5a\x5a\x19\xf3\x5c\x49\xb6\x5e\x1b\x96\xac\x66\xe1\xcf\x64\x53\x48\x6a\x73\xd6\x9a\x1d\xfc\x5a\x5c\x4b\x2f\x2f\x7d\x2d\x8f\xae\xc6\x5e\x8c\xce\xf7\x55\x69\x74\xf7\x36\xcf\xfb\x7c\xb2\x4c\x1f\x9b\x17\xd2\x60\x6c\x34\x1d\x9b\x7c\xe9\xe4\x16\x13\x34\xac\xe2\x12\xaa\xe1\xbd\x96\xed\x8b\xa4\x46\x63\xfa\x68\x4f\x62\xa3\x3e\x26\xac\x24\xd6\x37\xa2\x16\xdc\xe8\x6c\xd2\x7c\x89\xb7\xe5\x98\xfe\xfb\xc3\xc9\x99\xf4\x7e\xd2\x12\x6b\x91\xbe\x5b\x9a\xcc\x65\x2b\x40\x4b\x77\xc0\xdc\x86\xe3\xd9\x7d\xd1\x33\x91\x82\x3f\x2b\x8a\x24\xc6\x71\xb3\x57\xf7\x74\xe9\x7e\xaf\x9b\x3f\x9b\x01\x09\x14\x37\x6f\xd7\x56\x8e\x15\x7b\x50\xb3\x62\xeb\x75\x60\x8c\x2a\x2c\x1f\x1b\x6f\x9b\xbc\x59\xfc\x4a\xa2\xad\xe5\x19\xe3\x6b\x09\x3b\x12\x83\x16\xcc\x5c\x68\x3a\x78\x23\xfd\x53\x7f\xb4\xff\xd4\xfa\xc1\x0d\x23\x8e\xd7\x12\xbd\x96\x68\x5b\xc2\x67\x59\x6d\x91\x3c\x80\x69\xc0\xf2\x97\x9c\x29\x96\x64\xec\x8b\xde\x69\xc1\x15\x55\xfe\xf3\xb9\xbd\x68\x63\x86\x31\x6c\x4b\xa8\xd9\xc6\x7b\xce\x59\xf6\x4a\x6a\x94\x64\xef\xf1\xc9\x63\xdb\xf8\xf1\x6e\xe3\x55\xd3\xa6\x15\xcb\x52\xce\xf7\xae\xb5\xac\xb3\x21\xec\x78\xd3\xa7\xf7\xf0\xa6\xbb\x7c\x29\xad\xee\xfd\x74\xac\x69\x65\xb3\x4e\x3d\x6b\xea\x1f\xf6\x30\x64\x2a\xb8\x4a\x18\xa7\xb2\xb7\xb9\x3e\x58\x27\xf3\xb9\x16\x77\x4b\x53\x60\x39\x0a\x60\xea\x4e\x97\x50\xf0\x91\xf7\xcc\x3f\x3f\x34\xfb\x1e\xe0\x4a\x65\xe6\xb0\xb2\x1d\x4c\x13\xe0\x13\x5d\x99\x07\xac\x21\xd5\x35\x1a\xac\xe0\x6d\x8a\xf9\x37\x8d\xc9\x62\x6a\xb0\x66\x26\x92\xb9\x66\x5f\x66\xf0\x10\xcf\x70\x39\x7e\xda\x81\xc9\xec\x2a\x7c\x29\x49\x63\x81\x3d\xfd\xea\x02\x7b\xf0\x2f\x2c\x30\x33\x15\xcf\xa4\x09\x6f\xf6\x5e\x7e\x3d\xf8\x7a\x23\x0e\xb5\x71\x15\x35\xa7\x45\x67\xc6\x49\x94\x11\xe1\x8d\x6a\x52\x32\x84\x0d\x99\xce\xc6\xec\x71\x3a\xc6\x92\x08\xe3\x18\x0a\x49\x18\xf6\x9f\x79\x27\x64\x13\x4d\x7c\xe3\xcc\xe2\x26\x53\x09\x7c\x2a\x67\xb3\x98\x37\x83\xdf\x6e\xca\x12\x9e\x48\xb2\xa5\xf6\xa6\xbb\xf8\xbd\x34\x31\xd1\xed\xfd\xb2\xe6\x6d\x84\x4b\x77\xdd\xec\xd7\x3c\x62\x4b\xe7\x6f\xd7\xe9\x41\xfa\xc4\xa8\x6b\x9c\x4f\xee\x73\x49\x64\x4d\x38\xbe\xec\x68\x25\xec\x11\x8a\xb3\xf4\x9c\xb2\x19\x4a\x30\x6c\x88\x0b\xd8\xbc\x17\x2e\xd4\x80\xd7\x54\x9e\xda\x2b\x84\x29\xda\xe0\x78\xf7\xa0\x7b\xe3\xae\x1e\x36\xc7\xb4\xba\xea\x3f\xbe\x3e\x05\x4d\xa5\x69\x53\x35\xf7\xf5\x23\xaa\x86\x39\x4d\x1d\x25\x52\x36\xd4\x5c\x89\x6e\xeb\x8b\x44\xcc\x8c\x35\x81\x14\xfc\x75\x93\x8d\x83\xdf\x74\x3f\x93\xbb\xf1\x55\xe1\x32\x41\x1e\x61\x99\x23\x9e\x0f\x92\x4c\x67\xe6\x82\x07\x78\x21\xc9\xd2\x5f\xde\x04\xbf\x5a\x67\x72\xfd\x21\x80\x00\xbe\xcd\x9b\xfe\x85\x2c\x8a\xfe\xaf\xb2\x84\xad\x2e\xd7\x35\x8b\x1f\xdc\xba\xb2\xda\xbd\x46\x0c\x50\x35\x09\x20\x88\xeb\x19\xfe\x49\x92\x54\xf3\x81\x6b\xf8\x59\x1a\x2f\xff\x55\xb2\x0e\x30\xfc\x68\x5d\xda\xcd\xcb\x37\xf9\xf7\xff\xac\xbb\xf4\xa3\xee\xd2\x2a\x59\x77\xf5\xe8\x27\xf9\x9f\x74\xee\xff\xc5\x28\x72\x7f\x91\xd3\xbd\x50\xad\x33\x12\x7c\x09\x6c\x00\x00\x49\xaa\xc0\xb6\x5f\x66\x01\x21\x3e\x50\xcf\x2f\x12\xc3\xef\xb2\x2b\xca\x2b\x27\xc1\x91\x6f\xd5\x44\xc8\xde\xa7\x00\x55\xaf\x4a\x84\x31\x50\x4e\x7e\x93\x93\xf5\x7e\x50\x20\xbd\x21\xc6\xbb\x41\x6f\xd4\x24\x78\x5f\x69\x97\x62\x17\xf5\x53\x4d\x82\x37\x9b\x2c\x0b\xe2\xdd\x03\x09\xb4\xe7\x7e\x59\x07\xdf\x35\x9a\xcc\xfa\xe0\xb0\x44\xde\xc6\x13\x29\x3d\x36\x8c\x27\x32\x56\x7c\xb2\x46\x14\x57\x3b\x9d\x10\xc4\x89\x4e\xe9\x36\x34\xb1\x2a\x20\x4a\x27\x0d\x10\xc4\xbc\x04\x69\x86\xd8\x08\x58\xbc\x4f\x16\x2b\x30\x07\x03\xca\xed\xe2\x1a\x04\xb3\xa0\x1c\xff\x26\x8b\x82\x2a\xb4\x17\x64\xb2\x11\x58\x4b\xf2\x56\xc0\x28\xab\x1f\xe7\x44\x44\x6e\x83\x82\xe0\x3b\xa1\x44\x12\x6e\x5c\xed\x6d\xb2\x0f\x7d\x1e\x60\xd8\x70\x17\xfc\xbc\x6e\x27\xdf\xcb\xb4\xe0\x64\xdf\x5a\xa5\x01\x58\x3e\xa1\xe8\x18\x49\x3c\x1d\xce\x40\x4e\x47\x33\x1c\x53\x54\xb9\x38\x57\x97\x81\xaa\xc8\x1b\xb2\x18\xd3\x9a\xca\xca\x5c\x84\xe1\x31\x12\xd5\xf5\x73\x60\x2e\x36\xe4\xdd\x17\xd8\xec\xcc\xad\x3d\x95\x13\x86\x9c\x39\xed\x9d\xbd\xf1\x93\xd0\xf2\x9e\x7b\x6b\xea\x4b\xdf\x13\xd9\x73\xea\x60\x58\x80\x09\xcb\x0a\x4b\x22\xa9\xb5\x09\x9c\x3c\x8c\x47\xf6\xfa\x66\x9c\x10\x35\xf6\xd7\x1a\x77\xc4\xae\x4d\xbb\x2e\x30\xec\x37\xae\x72\x9d\xe6\x7c\x56\x14\x6a\x1a\xfc\xe3\x1f\x15\x4c\x67\x45\x91\xf0\xa9\x9e\x77\x3c\x2b\xcd\xa5\x7b\x7b\xe1\xe5\x6c\x14\x7f\x1f\xae\xca\x94\xbc\xcc\xa8\x0d\x57\x55\x87\x48\x98\x93\x14\x87\x21\x4a\x78\x64\xa6\x91\x10\x32\x2f\x8a\x0d\x9f\xa6\x7c\xa6\x9f\xb1\xa5\xab\x1b\x32\x84\x9c\xe4\x0a\xf9\x23\x40\x3c\xce\x1f\x6f\xc6\x1b\x17\x32\x76\x41\xc4\x64\x89\x8e\xd1\x9a\xa8\xe9\x66\x66\xa6\x71\x6d\xa6\x71\x89\x4c\x02\x0e\xc3\x45\x33\x1a\x5e\x15\xfe\x78\xd1\x24\x0e\xd4\x50\xcd\x84\xa4\xd5\xe5\x61\xba\xe9\x8c\xd8\x8b\xed\xc7\x7d\xb4\x26\x4e\xb7\x99\x60\x6c\x08\x97\xb9\xfc\x64\xd7\x8f\x1a\x2d\xc8\x82\xa3\x04\x96\xb0\xb6\xf4\x0f\x84\xe9\xc0\xbf\xd0\x07\x6c\x16\x45\x17\xb5\x73\x79\x86\xc6\x57\x08\x63\x58\xef\xad\xf5\x39\x27\xfd\xd1\xd8\x93\xe3\x25\x27\x43\xb8\xe1\x64\xab\x87\xb0\xbf\x87\xb7\x7a\x14\x71\xbf\xbf\xe4\x83\x41\x59\x82\x4d\x6c\x66\xd3\xb5\x19\x1f\x6b\x3e\x5d\xf3\xfb\xef\xee\xb7\x5b\x70\x21\xc5\x0a\xdd\xf0\x96\xc1\xb3\x5d\x16\x0f\xf7\x8d\x4f\xee\x38\xac\x38\x5c\x71\xb8\xdc\xdd\xea\xb7\x9c\x1c\x22\xb6\x5e\x0a\x4e\x0b\xb6\x16\xf3\x82\xad\x93\x39\x8e\xfe\xa2\xa9\x33\xbd\xa5\x97\xd7\x4c\x1d\x32\x7b\x11\xdb\x4b\x8a\xe1\x44\xe3\x8d\x4c\xa4\x46\x82\x86\x0b\xfd\x96\x53\xf5\x72\xb5\xa2\x73\x96\x28\x0a\xa7\x3a\x25\xcd\x68\x22\xeb\xb4\x73\xde\x08\xb1\xf4\x49\xbf\xbc\xa6\x79\x9e\x5c\xd1\xe3\x65\xc2\x39\xcd\xe0\xb3\x4e\x7b\xea\x4d\x01\x8f\x35\x14\xdf\x19\x0c\xf4\x96\xef\x6e\x97\x77\x7c\xe7\x9a\x48\xbd\x1d\xdc\x76\x7f\xc7\xa7\x6a\x36\x76\x1e\xe0\xe6\x05\x0c\x93\x0f\x47\x9d\xd7\xe6\x36\xe0\xf6\x96\x1b\xe6\x0b\x5e\xb5\x33\xea\x64\x73\xc1\x07\x2e\xe1\x4d\xfb\x93\x88\xd6\x22\x57\x6e\x1c\x48\x0d\x82\x00\x4e\xdc\xad\x4e\xa9\xc8\x06\xc1\xe1\x61\x30\x38\xe1\xd1\x52\xe4\x0a\x97\xe3\x0b\x1e\x86\xa7\xbc\x28\xd0\x45\xbb\x96\x9d\x03\xce\x8e\xa0\x5e\x72\x8c\xe9\x6e\x50\x2f\x69\x82\x7a\xf9\x23\x56\x3e\x1d\x0c\x8e\xdb\xab\xa5\xdb\xb8\x44\xc5\xcf\xea\xa6\xb1\x63\xbf\x7c\xd4\x48\x5c\xc2\x1d\x47\xc7\x1c\xc3\x31\x2f\xf5\x2c\x36\xbb\xd9\x04\x69\x69\xc2\x12\x1a\x0d\x8d\xa6\xde\xe7\x1c\x4f\xee\xda\xb9\xcf\x79\x6d\x22\x7f\x64\xda\x2a\xe3\xcf\x3c\x0c\x3f\xf3\x88\x8b\xdb\xdd\xdc\x36\xb5\xca\xf8\x89\x87\x61\xff\x96\x4f\xd0\x15\x27\x68\xc5\x8d\x4b\xc1\x27\x8e\x23\x8d\x99\x1f\xc2\x8a\x9b\x87\x51\x24\xf8\xca\x82\x9e\xbc\xe2\x70\xc7\x35\x22\xbe\xe2\xcd\x29\xd1\x6b\x7d\x84\x71\xdc\x17\x51\x32\x9f\x9f\xdc\x50\x1b\x11\x84\x72\xa3\xe3\xda\xc3\xcb\xbd\x46\xd1\xa2\x10\x11\x5b\xe9\x76\xce\x8d\x44\x9e\x17\x05\x43\x6f\x38\xd6\xe5\x58\x46\x63\xcd\xe6\x34\xe6\x5a\x0f\x28\x10\xdc\x28\xb2\x8c\x59\x45\xba\x4c\xf8\x95\xb9\x44\xf2\x14\x05\x56\xa8\x0f\xda\x21\xfe\x77\xee\x7f\x68\x64\xc3\xd1\x7e\x4d\xcd\x99\x7d\xa0\x5a\xbe\xab\x96\xc9\x74\xab\xb7\xc5\x21\xe5\x54\xbd\x63\x2b\x2a\x36\xca\x82\x16\x86\xb8\x8c\xd1\x1d\x27\x6f\x38\xec\x83\x04\x05\x0e\x9c\x01\xbc\xe2\xd0\x1f\x61\xe7\xfd\x71\xcd\xe1\x8c\xc3\x6b\x0e\x0f\x38\x3c\xe5\xf0\x92\xc3\x33\x0e\xef\x39\x3c\xe1\xf6\x16\xbc\x0b\x0e\x66\xaf\xc7\xa7\xbc\x84\xe7\xdc\x44\xeb\xf9\xc2\xc9\x13\x6e\xa2\x62\xff\x61\xb6\xba\x33\x4b\x3c\xbd\x34\x96\x32\x52\x43\xf7\x17\x7a\xf9\x13\x53\xbb\x5f\xe0\x43\x13\x4f\xbc\x68\x32\x28\xbf\x72\xd2\x5a\x75\x1f\x38\x86\x9f\x38\x79\xce\x91\x80\xe0\x8f\x0d\xdd\xd0\xd7\x2c\x95\x42\x25\xf9\x75\x80\xe1\x67\x4e\x7e\xe2\x61\xf8\x13\xb7\x14\x61\xfc\xb3\xde\x79\xd7\x7c\x4f\xc8\x07\x6a\x42\xf5\xfc\xca\x8d\x55\xca\x07\xee\x2e\x14\x31\x26\xa4\xf4\x33\x53\x08\x8f\xcf\xf8\x18\x6f\x29\x39\xe3\xd1\x42\x83\x42\x3f\x18\xf2\xa4\x31\x3e\x6d\x5e\x51\x6d\x31\xef\x19\x9f\x3c\xe0\x08\xc7\xaf\xb9\x8b\x28\x0f\xaa\x2c\x1b\x2f\xa6\x66\xae\xa8\x44\xb8\x84\x5f\x75\xe6\x66\xa7\x3e\x34\x36\xce\x35\xc7\x65\xfc\x87\xdf\x0c\x4f\x35\x61\x80\x97\xbc\xbe\xfb\xc4\x6a\x26\xde\xd1\xcf\xea\x8d\x98\x53\x14\x04\x26\x76\x7d\xef\x0f\xae\x4b\x46\xc2\x82\x14\xbd\xe4\xb0\x4d\x97\x89\x4c\x52\x45\xe5\xd3\x44\x25\xd6\x7b\xad\xdd\xec\x4b\x6e\x2f\x31\xd2\x8d\x3c\xe5\x25\x8e\x5f\xf0\x30\x7c\xc1\xbd\x68\x38\x41\xcf\x38\xa9\x5f\xbd\x78\x05\xef\x39\x79\xc6\x8d\xd0\xb8\x53\xdf\x7b\x17\x11\xf0\x19\x07\x3d\x0a\x1c\xb7\x3f\x7f\xe1\xde\x83\xd1\x7c\x35\xeb\xec\x47\x0e\xbf\x70\xf8\x8d\xc3\xef\x1c\x94\x20\x7a\xc2\xf6\xb9\xb9\xed\x82\xc7\xca\x5c\xcb\xee\xaf\xab\x1b\xbf\xd6\x53\xf7\x9a\x57\xf7\xef\x9f\xe9\x99\x3e\xe3\x84\x82\x9e\x06\x0c\xaf\x39\xa1\x25\x50\xb1\x6f\xed\x03\xd2\x9a\xf7\xac\xed\x0a\x33\x78\x46\xb5\xcc\x59\xac\x89\x75\x7d\x73\x68\x23\x70\x62\xc7\xcd\xb2\x4f\x92\xb9\x97\x77\x77\x42\xfb\x52\x73\x1b\x00\xaf\x4c\x6a\x1d\x1c\x09\xa5\x88\x56\x49\x9a\xa7\xd1\x29\x12\x97\x20\xc5\x3d\xf7\x88\x18\x76\x44\x58\x4a\xc5\xc5\x7e\xb8\x3c\x73\x85\xca\x0a\x51\x13\xf8\xae\x19\xce\x8f\xd4\xfc\x25\x75\x3e\x72\x52\x44\x8b\xfa\x22\x3a\x34\x04\xe9\x3b\x86\x75\xb7\xa4\x07\x4c\x09\xa2\x0d\xbd\x9a\x91\xdf\x1a\x5b\xcb\xb8\x3f\x72\x37\x6e\x28\x4d\x6b\x77\xb4\x0f\x3e\x8f\xbf\x95\x43\x95\x65\x09\x4c\x78\x0c\x91\x88\x1d\x6e\x24\x15\x24\x70\x60\x0c\x60\x23\xfc\x15\x94\xb9\xf0\x91\xf6\x17\xa2\x1d\x69\x3f\x15\x18\x32\x41\x38\x87\xb5\x20\x22\xaa\x66\x04\x96\xa2\x79\x35\xf4\x8d\x68\xa0\x96\x3b\x61\xa2\x42\x2e\xa8\x32\x51\xe3\x56\xc2\x40\x03\xae\x04\x59\x09\xb8\x14\x6d\x54\x73\x23\x30\xdc\x0a\xd2\xef\xa3\xa5\x08\xc3\xa5\xf0\x37\x46\xdf\x18\xf3\x07\x51\x59\x03\x99\x04\x0c\x27\x82\x1c\x2b\x94\x0a\xd8\x89\x19\xd8\x47\x4f\x51\x26\x70\xbf\x92\x90\x33\x81\xb1\xf9\xf2\xc3\x0f\x84\x90\xe7\xb4\x8e\x27\xa8\x73\x5f\x8a\xa6\x00\x59\x51\x29\x07\x9a\x33\xb3\x5e\x98\xe0\xb6\x51\x5f\xb2\x64\x0b\x64\xc3\x3d\x76\xde\xa3\x9b\x55\x61\x29\xfa\x23\x17\xb4\x30\x13\xd5\xb6\x1e\x61\xd8\x31\xaf\x43\x3b\xae\x74\xed\xd7\x2a\xfc\x33\x52\x7b\xa1\x23\x13\x31\x23\x14\xfa\x48\xed\x1a\x23\x9b\x82\x2d\xb6\x5c\x6f\x8b\x0b\x41\x4e\x44\x51\xf4\xf7\x16\x74\x9f\x86\x61\x7f\xce\xdb\xbd\x96\x4d\x8e\x5b\x73\x89\xe3\x7b\xb8\xe5\xaf\x72\xe1\xd2\x70\xda\x65\x09\x0a\xf1\x26\xb3\x5c\x9d\x6b\xb4\xe5\xc9\x4c\x44\xee\x5e\xfc\x5d\xe7\x0f\x0b\x0b\x8c\xe1\xb4\x03\xcb\x54\x61\xdf\xcd\x45\xda\x5d\x8c\x07\xa2\xc4\x42\x49\x4b\x2d\xb4\x84\x73\xd1\x75\xa1\x4c\x9f\x46\x5c\x28\xb6\x60\x74\x8e\xb7\xf5\xb3\x0f\x76\x6a\x3c\x79\xa8\xb3\x7e\x1f\x2b\xd1\xea\x5e\x15\xb3\x84\xb8\xd8\xa9\xc0\xc8\x88\x10\x6f\x03\x9a\x90\xe1\xd8\xdf\x05\xf6\x38\x19\x3b\xe7\x40\x2b\xe7\x12\x3e\x4d\x06\x83\x19\x64\x84\x4d\x16\x91\xb8\x8e\x17\xd1\x22\x61\x19\xac\x8d\x75\x8a\x59\x37\x30\x37\xcf\x46\xa7\xb6\x24\x0b\x47\x42\xcd\xfc\x64\x13\xc4\x8a\x02\x3d\x24\xc4\x74\xcf\x2d\xd9\x30\x7c\x27\xac\xa1\x6d\x23\x91\x8c\x30\xf4\x87\x84\x90\x6c\x92\x12\x11\xa3\x65\x18\x2e\x3d\xa1\x84\x94\x64\x48\x60\x58\x86\x21\x5a\x3a\xba\x0c\xb9\x35\x6c\x4a\x09\x21\x0b\x8f\xaa\x26\x73\xb4\x16\xc8\xa3\x8f\x83\x74\x99\x30\xde\x4b\xef\x52\x2d\x06\xe3\x18\x6d\xc8\xa9\x40\x29\xc6\x93\x8d\xa5\x3f\xa9\x96\xe1\x71\xbc\xd6\x69\xf1\x1c\x89\xc6\x2a\x58\x86\x61\x3f\x37\x5d\xb0\xad\x19\x93\xd4\xb2\x01\x63\xcd\xae\x37\xa7\x61\x04\x32\x0c\xfb\xad\x51\x7e\xb6\xa3\xb4\x5a\xc8\x4f\xfb\xb3\x6a\xc3\xf9\xb2\xf1\xad\x98\x20\xc4\x49\x1b\xb1\xa0\xc0\xfc\x68\x7e\xd0\x13\x28\x0a\x9a\x04\x27\xb9\xe0\x44\x02\x37\xc7\x18\x36\xab\x82\xfe\xc8\x38\x34\xef\xe0\x22\xc4\x31\x8e\x39\xd9\xba\x0a\x62\x0a\xb6\x78\x2c\x4b\x40\x8c\x88\x69\x20\x78\x30\x50\x33\x3c\x61\x88\xe3\x38\xd8\x70\xeb\xfd\x35\xaf\x06\x11\xd8\xf0\x1a\x5d\x26\x9e\xc2\xec\x79\x91\xd1\xb1\x71\x36\x37\x58\x3e\x0c\xd1\x88\x90\x3d\x2b\xcd\x89\xfb\x8c\x14\x8e\xab\x47\x73\xc2\x85\x82\xf7\xbe\xcd\x9e\xeb\x65\xaf\x6e\xdc\xd8\x9a\x7f\xde\x23\x73\xc2\x73\x0f\x7b\x96\xcd\xc6\x73\xd1\x72\x7c\x9a\x18\x0a\x43\x08\x91\x24\xa2\xbd\x1f\x2e\xc5\xe4\x46\x38\xdf\xac\x6a\xcc\x67\x75\xb3\x1c\x14\x8e\x3f\x09\xd4\x05\x10\xd0\x6c\x81\x09\x44\xdf\x58\xbb\x97\xa2\x28\x4c\x6b\x93\x87\xf1\x08\xdc\x10\xbd\x8a\xc6\x5d\x1f\x6f\x0c\xda\x8f\x45\x97\x18\x3a\x32\xa1\x13\x1a\x2b\xa7\xef\x63\x81\x94\xf0\xee\xdb\x86\xdf\x1c\x52\x55\xd1\x0b\xdb\xf9\xc0\x0f\xa7\xfa\xb0\xac\x3e\x80\x83\x97\x0d\xc3\xf3\x76\x77\x91\x36\x6e\x8c\xaa\x3e\x08\x4d\x18\xf4\x37\xa1\x21\x51\xc2\x51\x57\x21\x6a\xf4\x35\x45\x81\xec\x83\xe6\x5d\x5d\xac\x68\xec\x9b\x24\x12\x1c\x06\x22\x0f\xe1\xdc\xec\x15\xbd\x88\x71\x09\xaf\xba\x6a\xb4\x38\x50\x57\xe6\x6b\x6f\x56\x6a\xd0\x0d\x5b\x20\x45\x6a\xde\xac\x81\x0a\x7a\x69\xc2\xff\x43\xf5\x2e\xf5\xea\x32\x48\x6b\xde\x63\x2a\xa7\xd9\x22\xf0\x2e\xfa\xa7\x02\x49\x3c\x16\x93\x1d\xd4\xe9\x28\x8c\x55\xdb\x8c\x4a\xd3\x8c\xf0\xf7\x82\xbc\x15\xe8\x95\xd0\x0b\x42\xe3\xb2\xb7\x02\x1d\xf9\x97\xc6\xe5\xfd\x47\xc2\x5e\x52\x62\xc3\xad\xe2\x18\xed\x8f\x7e\x54\x8d\x7e\xb4\x57\xb2\x6a\xd9\xd5\x50\x8e\x4f\x44\x18\xa2\x4c\x74\x07\xb0\x6a\x12\x0c\xa4\xda\xea\xaf\xee\x9b\xc2\xa5\xb4\x2a\x65\x24\x27\x72\x10\xf4\x4c\xdc\xac\x41\xc0\xf8\x8d\x53\xf0\x04\x2e\x38\x05\x64\x02\x34\xa7\x65\x2f\x36\xfb\xb1\x11\xf2\xdb\x5f\x91\xb8\x11\xee\xd5\xb8\x5c\x21\x07\x1c\x7b\x89\x89\x87\x8e\x7d\x6b\xe0\xd9\x23\xe1\xaf\x94\x30\x3c\x2d\xfa\xb1\xad\x1a\xc8\xdd\x67\x6b\x74\x96\x0a\x70\xe0\x00\x8f\x78\xf5\xb3\xdd\x2a\xfa\xa9\xc2\xce\xf1\x74\x06\xd5\x6a\xd7\x5f\xac\xeb\xa8\xe7\x41\x9d\xf0\xd0\xba\x87\x62\x0f\x3d\x57\x11\xd7\xed\xad\xa9\x54\x99\x89\x34\xd7\xa6\xca\xc6\x05\x70\x28\x13\x0d\x5d\xf8\x56\x13\xf2\xb8\x03\x5f\x5a\x2d\x32\x59\x38\x20\x41\x42\x56\x02\x21\x49\x32\x51\x9f\x10\x21\x41\x8e\xdd\x6d\x10\xed\xcb\xcd\xec\x21\x06\xe2\xe4\x18\x09\x3c\xbd\xe4\x33\x3c\x91\x31\xa5\x1a\xbf\xd7\x81\x6d\x23\x71\x4d\xba\xee\xb6\x2b\x0a\x05\x89\xa1\xda\x5d\x86\xc9\x34\x0c\x29\x24\x8e\x68\x13\x8b\x46\xec\x8b\xbf\x4e\x84\x39\x5c\xa4\xb7\x1b\xab\x09\xa0\x53\x49\x61\x18\xf6\x09\xb3\x2b\x39\x0c\xcf\xdd\x7c\x31\xbd\x96\x21\xa9\x45\x88\xb4\xed\xd4\xbf\x13\x6a\xd1\xf0\x88\x5e\x42\x36\xb6\x47\xbf\xec\xcb\xea\x46\x40\xfb\x91\x83\x5d\x69\xb8\x2d\xbc\xa9\xb6\x64\xe5\x77\xe6\x8e\x78\xe5\xf7\x28\x35\x32\x56\xb4\x20\xab\x4e\x7c\xac\x91\x48\x26\x8a\x42\xff\xfe\xc6\x27\xba\xdd\x5f\xf4\xf7\xf8\xca\x88\x5e\xd0\x15\x08\x5f\x23\xa2\xdf\x39\xe1\x8d\x7b\xdd\xad\x64\x4c\x15\xe2\xed\xcb\xde\x97\x94\xb7\x6e\x2c\x69\xbb\x3f\x36\xb5\xd3\x99\xd8\x75\xaf\xf8\x9d\x7b\xe4\xe3\x58\x0b\x0b\x3b\x1f\x55\xa6\x71\xc6\xd3\xd5\xcb\x3b\x61\x2f\x39\xa8\x6f\x0a\x69\x47\x7d\xf5\x47\x8a\xc3\x12\xb6\x46\x36\xea\x94\x41\x05\xca\x04\xdc\x79\xff\x06\xd1\xb8\xe3\xcf\xa0\xb8\x3f\xb9\x8c\xe4\x44\x94\xb0\x75\x68\x39\xce\x44\x69\xa2\xf8\x1b\xe4\x62\xd6\xcc\xbe\xd0\x2f\xac\xa7\x15\x79\x1b\x2d\xc6\x49\x18\x6a\x81\x80\x4e\x05\x9f\x85\xa1\x44\x14\x04\xff\xd6\x9b\x56\x8c\xe6\xbc\xc4\xa5\x11\x18\x7f\xe3\xba\x5e\xfd\xd4\x38\x62\x4d\xc5\x6e\x14\x68\xd3\x59\xbb\x78\x3a\xae\x24\x59\x79\x8c\xd7\x70\x60\xb6\x21\x60\xf4\x14\x55\xeb\x19\x68\xb5\x0f\xca\x6f\x6b\xcf\x2c\xe2\x7b\x60\x5f\x45\x2e\xfb\x93\xaa\x2e\x74\x55\x49\x96\x75\xf4\xdb\x9d\xd8\xaf\x84\xbd\x19\xab\x92\xfb\x41\x98\x67\xc3\xc9\xb3\x5d\xa6\xc9\x85\x08\xa2\xa8\xb2\x18\xc0\xe6\x66\x77\x2d\x3e\x40\x4a\x46\xe3\x4c\x2f\xc3\xbd\x23\xb8\x0d\x49\x06\x03\xcd\xac\x8f\xc6\xee\xc6\x76\xaf\x3d\x4a\x07\x03\x1f\xfe\x5e\x63\xff\x5d\x41\x51\x63\xff\xa2\x40\xb9\x41\x3b\xd3\xcd\x8c\x28\x38\x38\x48\x8b\x82\x23\x66\x0c\xe7\x8d\x2f\x79\x9d\x54\x36\xee\x81\xf7\xcc\xa8\x40\xcc\x71\x37\x4d\x6d\x86\x4c\x52\xfa\x6d\x40\x31\x80\x10\x5d\x80\x10\x6d\x40\x74\x8c\x5d\xec\x8e\xac\x86\x32\x77\xee\xa7\xbe\xbf\xc2\xf7\x97\x23\xb1\xdf\x5f\xa7\x1f\x7b\x23\xf6\x11\xa2\x23\x16\xc6\x47\xa6\x8e\x9d\x69\x77\x9e\xf3\x8b\x31\x07\xee\x11\xbb\xe2\x42\xd2\xe3\x24\xa7\x2e\x99\x05\x36\x38\x6c\xa6\x58\xc6\xb8\x4f\x5d\x99\xd4\xb9\x50\x47\x99\x2f\x9f\x9b\xa4\x0d\x67\xa9\xf1\xeb\x30\x69\x1b\x93\x96\x2b\x96\x5e\xdf\xb9\xa4\xbb\x00\x03\x6d\x44\xa8\xba\x16\x2d\x67\xd7\x33\x7a\x75\xf2\x79\x6d\xb1\x94\xee\xfa\x99\x80\xd7\x02\x1e\x08\xb2\x7d\xff\xe6\xfc\xfd\xdb\xb7\xa7\x67\xef\x4e\x9e\x5e\xfc\x16\x77\x5d\xad\x72\x2d\x50\x90\x04\xa0\x9b\xa8\xc7\x98\x25\xb9\x32\x57\x37\x92\x87\xe0\x8e\x4f\x23\xfa\x99\xa6\x28\x48\x2e\xd3\x79\x60\x96\xc6\x93\xb3\xd3\x9f\x4e\xde\x5c\x1c\x1f\x9d\x9d\xbc\xbb\xb7\xe6\x7f\xca\x00\x82\xab\x6f\xac\x3b\x57\x32\xb0\x8c\xf2\x53\x41\xec\x98\x1a\xd8\x5e\xe7\x81\x97\xc2\x69\x77\xf6\x1d\x64\xe1\x99\x20\x4f\x05\xbc\x17\x04\x9d\x09\x72\x98\x1c\xc2\x6b\x41\x0e\x2f\xff\x72\x78\x05\x4f\xdd\x6a\x39\x13\x10\x24\x01\xae\xde\x5f\xbb\xf7\x61\x9f\x90\x33\x51\xf7\xac\x28\x74\xca\xeb\x46\x0a\x86\x27\x82\x3c\x10\x51\x0b\x9e\x45\xf1\x40\x44\x4d\x30\xc0\x73\x41\x2a\x15\xe6\x21\xc2\x93\xc9\xa1\x1b\x5a\x80\xa7\xa3\xd9\x18\xbd\x17\x45\xf1\x5c\x14\xc5\x13\xa1\x05\xa7\x67\x9d\x5a\x53\xc7\xc9\x98\xfd\x92\x90\x27\xc2\xdc\xdc\x6e\x16\x03\xa4\xe4\x8d\xeb\x39\xc3\x26\x16\x4e\x6e\x02\xab\x43\x4e\x86\xb0\x20\xaa\x71\x5b\x18\x3a\xd0\x82\x22\x4a\x49\x5a\xdd\xb1\x1f\xdc\x05\x10\x68\x79\xd7\x07\x21\xd3\x8b\x37\x0c\x51\xea\x96\xf1\xa2\xbe\x02\xca\x39\xad\xb2\xe6\xf8\x1b\x2f\x8f\x87\x61\x88\xfa\xac\x5e\xdf\x45\xc1\x9a\x8b\x3d\xf8\xa8\xf9\x23\xa2\xa6\x8d\x32\x07\x23\x73\x23\xec\x86\x04\x68\x12\xf7\x82\xc1\x66\x10\xe0\x00\x16\x24\xe8\x05\x83\x05\xe4\x83\x81\xbf\x9a\xda\xad\xe5\xe0\x9f\x68\x12\xfb\x6c\x29\xc6\xf0\x5c\x18\x51\xb3\x95\xc5\x7c\x7f\x80\x26\xfd\x8f\x1f\x73\x97\xed\xbd\x30\x12\x4b\xab\xeb\x9c\xf8\x09\x4f\x26\x32\x66\xb0\xc0\x90\x4c\xf8\x04\x69\x19\x7f\xbd\x51\xc4\xfd\xba\x51\xe7\x18\xf8\x74\x38\x23\xfa\x4f\x23\xc9\x82\xad\x59\x71\x13\x24\x03\x9b\xdd\x1d\xe6\xc7\x8d\x2f\x64\x18\xeb\x3e\x69\xfe\xa5\x99\xca\x1c\x1e\x99\xb8\x8a\x07\x8d\xf2\x31\xb5\xc3\x35\x31\x55\xbd\x25\x51\x18\xbe\x74\x83\xe0\xc6\xac\x03\x76\x35\x50\x82\x8c\xc6\x62\xcf\x1e\xf8\xe0\xe1\x58\x0c\x06\xb8\xe2\x81\xeb\x33\x4e\x31\x0b\x43\xc4\xa7\x62\x46\x6a\x73\x2e\xe0\x0e\x1d\x7e\x11\xe4\x99\x68\x99\x47\x59\xa0\xef\xdb\x47\x1d\x46\x76\x8d\xf7\x09\xf9\xa2\x49\xa2\x7e\x8e\xbf\x08\x57\xcf\x1f\xbb\xea\xe7\x0f\x82\x74\xdc\x93\xa3\xc8\x61\x74\x58\xa3\x08\x5d\xc7\x3e\x3a\xae\x6f\x19\x54\x91\x71\xb8\xc8\xc9\x36\x89\x83\xbf\x05\x25\xa8\x12\x82\xbf\xe9\x35\x17\x04\xd5\x7a\x57\x10\x3c\x78\x94\x3c\xb6\xc8\xea\x85\x20\xc1\x83\x61\x40\x08\x09\x92\x3a\xcb\x61\x74\x08\x3a\x19\xc3\xaf\xb6\x9f\xee\x43\x80\xe1\x27\x41\xfa\xfd\xc3\xe8\x70\xfa\xab\x86\x93\x89\xa6\xe5\xde\x2c\xba\x34\xa5\x7e\xbe\x6f\x30\x68\x12\xe3\x43\xe3\x78\xa5\x87\x32\xde\x1f\x51\xc5\xd1\x34\x9c\x58\x1b\x77\x39\x3b\x35\x6c\x90\x5c\x06\x2e\xdc\x6b\x75\x90\xd0\x7b\xd8\x27\xc4\x07\x10\x2b\x8a\x20\xd1\xc3\x96\xd3\xe1\xac\x28\x82\x4b\xfb\x3c\x9a\xe9\x21\xff\xd8\xc9\x7b\xd7\x16\x9e\xb5\x8a\x4c\xa3\x1b\xb7\xf7\x6f\x10\xc5\x5a\x78\xb2\xc6\xe0\x29\x61\x95\x23\xb0\x43\x2d\x8f\x86\x45\x91\x3c\x26\xe9\x44\x4d\x82\xc0\x89\x30\x31\x32\xce\xbb\xcb\x44\x1e\x8b\x39\x3d\x52\x28\xc1\xf8\xd1\xf7\xdf\x3f\xfc\xfb\x0f\x45\xc1\x1f\x7f\xff\xc3\x77\xa3\xbf\x17\x45\x32\xd0\x18\x29\x2d\x0a\x24\x76\x32\x0f\x46\x3a\xfb\x0f\xdf\x3d\x1c\x16\x85\x78\xfc\xfd\xdf\xbe\xfb\xeb\x77\x13\x35\x61\xde\x19\x35\xc1\x31\x8f\xf5\xbb\xdd\x8b\x09\x24\x83\x87\x38\x16\x07\xa6\xc4\x00\xf1\x03\xd3\xd2\xa3\x47\xa3\x21\x1e\xfc\xf0\xfd\xf7\xdf\xfd\x50\x96\xf0\x8b\x20\xdb\xd4\x54\x1f\xff\x28\x90\xe6\x7b\x6d\x65\xe6\x6d\x88\x4b\x57\x37\xfc\xb6\xaf\x35\xf4\x33\xa3\x25\xf6\x5f\x2c\x99\xf5\xdb\x72\x84\x4b\xf8\x7d\x57\x5f\xe4\x03\x22\x9a\x89\xee\xbe\xc5\xab\x0a\x15\x51\x05\x68\xa2\xc6\x6a\xc8\x5b\xda\x54\xb2\x24\xdf\xd7\x21\xd8\x6d\xd7\xd3\xb5\xf7\xac\x75\x76\xcf\xf6\x90\xce\x7b\xb9\xd0\x29\x8c\x5f\xf5\x84\x5a\x52\xd9\x53\xcb\x84\xf7\x12\xef\x7f\xd0\x13\xd2\xdc\x8e\x50\xd3\x5e\x5e\xea\x46\xdd\x46\xee\x13\xb2\xee\xba\x92\xcf\x7d\xff\x37\xd3\xa2\x31\xa6\x9b\xf7\x84\x96\xd1\x53\xb1\x5a\x27\x8a\x5d\x66\xb4\x27\x69\x4a\xd9\x8d\xb9\x21\xc9\x55\xfd\x45\xd4\x43\x2b\x41\x31\xf2\x3a\x51\xcb\x68\x95\x7c\x06\xea\x9f\x19\x07\xe9\x9e\x17\x99\x10\x12\x38\x23\x87\x1f\x1f\xa0\xe9\x83\xf0\x3f\xfe\xcf\xac\xf8\x38\xff\x38\x9f\x14\x8f\xa6\xff\x7c\x3c\xfb\xcb\x63\x7c\x78\x05\x62\xff\x33\x3e\xbc\xea\x8a\x9a\x65\x39\x46\x7b\x79\x64\xd2\xb5\x23\x69\xc3\x61\x9e\x6a\x8c\xb7\xbf\x13\xff\x56\xc2\xdf\xfa\x24\x08\xa6\x6a\xe6\x02\x99\xa6\x24\xd9\xbb\x9a\xca\x56\xd6\x1f\x81\xd4\x0c\x86\xbf\x91\xce\xec\x50\xa7\xca\x45\x36\x36\xc6\xce\x81\x8d\x8d\xd3\xe4\x13\xa6\x7f\x74\x76\x41\xea\x6c\x8b\x2c\xb9\xca\x49\x10\x80\xd4\xfd\xd4\x28\x47\xcc\x34\xbb\x7a\x1f\x02\x31\x4a\xba\x4d\x96\x95\xa6\x80\x39\xa5\xee\x53\xcd\xfc\xb2\x05\xea\x27\x45\xd1\x4f\x8b\xa2\x42\x6b\xae\x8b\xfd\x0f\xa2\x28\xfa\x2f\x44\x51\xfc\x24\x70\x51\xb4\xfa\xdf\xff\x59\x78\xc1\xc2\x36\x0e\x39\x91\x48\x80\x81\x4c\x5b\xaa\x86\xf6\xf5\xf5\x96\x43\x23\x9a\x0c\x4c\x34\xe4\xc4\xc4\x29\xd7\xbc\x56\x68\xd3\xba\x13\x3f\xde\xf9\xaa\xaa\xdb\x80\x9b\x5f\xcd\xe5\x8d\xdb\xb3\x93\xb7\xaf\x8e\x8e\x4f\x2e\x7e\x3a\x39\x79\x7b\x7e\xf1\x60\x18\xbf\x10\x70\x76\xf2\xfc\xe4\xd7\xb7\x17\xfe\xd3\xf9\xfb\x27\xe7\xef\x5e\xbe\x7b\xff\xee\xe4\xfc\xe2\xfd\x9b\xa7\x27\xcf\x5e\xbe\x39\x79\x7a\x71\x7c\xf4\xf6\xdd\xfb\xb3\x93\xf8\x27\x2d\x07\x2f\x48\xae\x29\x67\x46\x72\xcd\x8b\x51\x85\x76\x39\x49\x50\x9a\x35\xa0\x0a\xed\xf2\x9e\x20\xe0\x21\x21\x74\xd2\xde\xf9\x6d\xff\x60\xe5\xb5\x6f\x9d\x37\x46\xb7\x32\xe1\x12\x97\x3c\x0c\x8f\xf6\xda\xd1\xe0\x0e\xf2\x65\xb2\x0a\x4c\x68\x8d\x9a\x1e\xc1\xc3\x7d\xd0\xfb\x75\xcf\xa3\x7f\x05\x14\x26\xd4\xd3\x2e\x3c\x21\x21\x62\x12\x3c\x08\x62\x4d\xd6\xdc\xaa\x9e\x56\xed\x35\xda\xba\x71\x12\x11\x23\x56\x65\x26\x27\x8e\x02\xc8\xfa\x3e\xb2\xda\x90\x94\x4d\x98\x9f\x54\x01\x1c\xc7\xce\x3f\xdb\x91\x1a\x81\xed\x42\x80\x3d\x8b\x80\xbe\xe6\x79\xf5\xba\xdc\x89\x6d\xc2\xc3\xd0\xb0\xb5\xbc\x62\x61\x13\xec\x17\xab\x44\x3e\x88\x0c\x70\xb3\xf8\x37\x56\x97\xed\x1d\x0c\xdc\x21\x81\x0d\x9e\x69\x8e\xf1\x6b\x7e\xd7\x0c\xa9\x53\x7b\xc7\xc7\x59\x51\x20\xee\x73\x72\x67\xb4\xb3\x26\xb9\x63\xdf\xc6\xe6\xb2\x7e\xd3\x87\x39\xc9\xbd\x20\x37\xce\x9b\xfc\x5f\xe9\x35\x9d\x4b\xcd\xc2\xb8\xf3\xbf\x1b\xf2\xbb\x40\x39\x2c\x6c\xec\x51\x6b\x44\x7d\x83\x2f\x25\x4d\xae\x75\xca\xd2\xc9\xf2\x18\xfa\x6b\x97\x1a\x34\x8c\xbf\x6f\xa6\x43\xc3\x4e\x37\xdb\xf9\x4d\xa0\x05\xe4\xaa\x99\x86\x61\x8e\x71\xd5\xfc\x1d\xac\x34\x62\xb9\x22\x43\xb8\x24\xc3\xf1\xe5\xa3\xa5\x27\xee\x97\xc6\x67\x8c\x2c\xa7\x97\xb3\xea\x6a\xad\xdb\x56\x5b\x70\x42\x14\x43\x94\xa1\x54\xa1\x1b\x0b\x7e\x0c\x0b\xcf\xef\xc2\x10\xc3\x05\x99\xce\xe0\x94\x8c\xc6\xa7\x8f\x6e\xaa\xe8\x96\x83\x01\xbe\x68\x6a\x25\xb4\x4c\x72\x47\x6e\xa6\xa7\x33\x3c\xb9\x8b\x5d\x03\x77\x0e\xaa\xe7\xe4\xc6\xf1\x75\x1a\x02\x99\x85\xd3\x27\x32\xbd\xad\x3c\xe8\x2f\xe0\x44\x43\xac\x5a\x60\xe7\x61\xf8\xc9\x56\x7f\xee\xc2\xbe\x54\x33\xd5\x36\xbe\xfb\x84\xb1\xf1\xda\xef\x7d\x26\x29\xba\x85\x05\x9c\xc0\x05\x9c\xeb\x95\x72\xf2\x98\x5c\x85\x21\x5a\x0d\xc8\xc2\x31\x18\x57\x70\x82\x07\x9f\xe1\x8a\x9c\x0c\x6e\xfd\x00\xfd\xa1\xf5\x6a\x50\xe5\xc2\xe5\x6c\xdc\xf4\x97\x68\x3a\x8f\x58\xc7\x11\x3e\xf0\xd6\xbd\xb0\xa9\x5d\x66\x72\x22\xd8\xfe\x4e\xd1\xd2\x01\xb9\x36\x61\xfc\x72\xc2\x19\xf6\x71\xf4\x13\x68\xdf\xf5\xe0\x2a\xcf\xc7\xf9\x2d\x53\xe9\x12\x25\x9e\x4b\x1a\x62\xbc\x4d\x93\x9c\xea\x5d\xec\xc8\xd2\x83\x60\x6c\x52\x42\x9f\xd2\x53\x36\xe1\xff\x54\x09\xb2\x11\x4f\xd4\x7e\xfb\x8f\xbd\x6f\xa9\xfb\xf2\x28\x88\x73\xc2\xa6\x89\x4b\x1e\xc1\xc1\x08\xcf\xc6\x76\x6d\xce\xe9\x22\xd9\x64\x2a\xd6\x7d\x5b\x90\x41\xa2\x27\x50\x4f\xf6\xa2\x36\x8a\x61\x0b\xb4\x78\xbc\xb1\xdd\xcf\x88\x64\x68\x71\x38\xaa\x6f\xbe\xb7\x27\xd3\x34\xce\x1e\x91\xcd\xa4\x5a\x2b\x62\x9a\x1d\x8c\x66\x93\x6a\x90\x23\x1c\xdb\xa4\x41\x33\x89\x96\x39\x11\xd3\xc5\xc1\xa8\x8a\xac\x50\x55\x90\x6b\x26\x35\x2f\xad\xe2\xd4\xde\xc5\xc7\xfe\x34\xfa\x73\xe5\xf8\x64\x84\x4d\x1b\xd2\x65\x57\xac\xd2\x42\xe5\x70\xcc\x1f\x79\x46\x7c\xcc\x07\x03\x6c\x82\xeb\xd4\x02\x16\x6f\xc8\x2b\xb5\x27\x4e\x59\x42\xc2\xc8\xae\x33\x41\xe5\x97\xd0\x58\x53\xac\x11\xe6\xc9\xfb\x26\x98\xde\x18\x37\x90\x84\xd5\x66\xdd\xbe\xc8\x86\xed\x7a\x25\x19\x87\x8d\x3a\x43\xce\xbe\xf5\xea\xac\xaa\xc8\xa2\xab\x1b\xde\xcc\xf5\xde\x9e\x64\xac\x32\x31\xf1\xe6\xf7\x5d\x0c\x6f\x23\x5a\x95\x19\x2e\xae\x61\x3f\x04\x5e\x5d\xa2\x32\x96\x8f\xf8\x58\x0e\x06\x98\x36\x2e\xb6\xb4\x57\x83\x81\xb2\x97\x5c\xf4\x5a\x17\xc7\x28\xbc\x07\xe0\xb6\x4d\x73\x75\x2d\x28\xae\x02\x9d\xb8\x4a\xc5\x0c\x04\x28\xab\x47\x5b\x33\xb2\x75\x41\x7d\xe2\x94\x81\x7b\xb4\xf7\xd8\x75\x50\xf9\xf6\x2c\xd9\x6c\xbb\x10\x02\x96\xdf\x5b\xbe\x31\x23\x7d\x33\x95\x61\xe8\x53\x9a\xec\xa3\xfb\xda\x3a\xc3\xea\x74\x86\x69\x65\x89\x7c\xc3\x61\xd8\x9d\xee\x7a\xf7\x4c\xc8\x95\xb1\x63\xec\x18\x5f\xc7\x1d\x29\x3e\x7b\x18\xb6\x8e\x43\x7d\x72\xd9\x06\xda\x07\x46\x6f\xbf\xb1\xe2\x46\xa9\x30\x6c\xbc\x44\x2c\xd7\xb5\x4c\xf6\x93\x90\xc2\xb1\xb1\xff\xbc\xac\xc6\x69\x9f\x9a\x1d\x6b\x14\xd3\x7d\xdb\x75\x06\xfa\x4a\x60\x35\x9d\xdd\xba\xf0\x77\x65\x77\xc1\x29\xda\xd9\xed\x22\x8c\x73\xbd\x74\x2a\x9f\xa9\x78\xa3\x5f\x9f\xb6\x6f\x17\xdf\x5b\x42\xfa\x7b\xc7\xda\x79\xc6\xb2\xaf\x16\xd3\xdf\xbb\x96\x5c\x26\x2e\xbf\x56\x4c\x7f\xef\x6a\xcd\x95\x88\x17\xcc\xc2\x8a\x26\xab\xae\x75\x9b\xdb\xc5\xaa\x51\x45\xb4\x66\x6b\x6a\x0a\xbf\x3f\x7b\x75\x4e\x13\x99\x2e\xdf\x26\x32\x59\x75\x79\x64\x76\x4d\xfb\x4e\xa9\x9d\x65\xb5\xf3\xd5\xce\x60\xc2\xe7\x89\x9c\x3f\x91\xe2\x36\xa7\xf2\x84\xdf\xec\x9f\x4d\xa1\xae\x78\x48\xd5\x95\xd5\x45\x11\x9c\xd1\x24\x55\x6f\x8c\x3d\x9f\x16\x8c\xab\x4f\x1a\x7f\xcc\x37\xa9\x46\x91\xf6\xab\xb5\x57\xbf\x37\xcf\x79\xe7\x17\xcd\xa9\x7d\xed\x7e\xa1\xae\x6f\xde\xae\x52\xf3\xc7\xee\x92\xdb\x8c\xc1\x8a\xca\xab\x7a\xfe\x7b\xaa\x29\xdf\x56\xa9\xd2\x72\xec\x7b\x48\x9d\x4e\xf9\xac\x03\xd7\xcb\x89\xfe\x40\x14\x72\x47\xef\x31\xb5\x37\xcf\x56\xe7\xf3\x64\x08\x62\x3f\x32\x1c\x7f\x24\x0c\xd1\xcb\x18\x6a\x92\xbc\xc6\xd9\x3d\x2d\x61\x4e\xe9\xfa\xf5\xff\x58\x9f\x3b\xb2\x29\xa4\x85\x6f\x1c\xff\xdf\x19\x0e\xfd\xac\x28\x9f\xef\xdd\x1d\xef\x65\x3c\x86\x68\x8b\x59\xe3\x78\x6b\x6f\xf1\xed\x76\x55\x9c\x30\x66\x38\x82\x98\x1a\xcb\xe5\x12\x94\x64\x9d\xdb\x4b\xd5\x0a\xcb\x7f\x7e\xcc\xff\x72\x08\x41\x80\xeb\xa4\x8f\xf9\x5f\x1e\x98\xa4\xe6\x15\x26\xf3\x26\xa1\xa7\x5c\x0b\x25\xef\xcf\x5e\x56\x71\xb9\x90\x6a\x54\xf0\xef\x7f\x1d\x1e\x5e\x31\x08\xfe\xd1\xac\xf5\xdf\xbf\x3b\x32\x89\x71\x2b\xf1\xe1\x5f\x0f\xaf\x20\x78\xd0\x4e\x3b\x36\x19\xa1\x9d\x38\xd4\x19\x07\xad\xb4\xef\x9f\x98\x8c\xd3\x76\xe2\x53\x93\x38\x0b\x2c\xc5\x5d\xb2\x6e\xe3\xcc\xca\x79\xcf\x5a\x63\x6a\x6e\x52\x62\xae\xa5\x3e\x47\xfe\xb5\x1c\xc6\xa2\x3d\xac\x83\x28\xc6\x9c\xd4\xec\x15\x6a\x5c\x89\x25\xb4\x38\xb6\x66\x55\x6c\x09\xba\x6b\x34\xe0\x38\x97\x30\xb4\x55\x57\xc1\xfd\xe8\x80\x04\xd3\x59\x10\x1b\xce\x05\x1a\x35\xec\x9c\x51\x9a\x52\x4f\x6d\xcc\xcc\x89\x09\x91\x2d\x5e\x9e\x9f\xfa\x8e\xc4\xe6\x73\xe5\xf0\x6a\x38\xa1\x1f\xcf\x4f\xdf\x44\x96\xf2\xb0\x85\x71\xbc\x02\x61\x05\x9c\x39\x43\x14\x0f\x02\x12\x0c\xcc\xd4\xda\xc8\xcf\x58\xb3\xa1\xc2\xf8\x5e\xa3\x20\x0c\x70\xa9\xd9\xad\xda\xfd\xbb\x3a\xe8\xf9\xb7\x00\x8f\x0f\x46\x4e\xce\xd0\x1d\xf1\x5c\xbf\x09\xbe\x3e\x20\xf6\xb4\xa8\x51\x60\x12\xe0\x49\x30\x09\x62\x5d\xe9\x80\xd7\x51\x32\xea\x05\x76\xc3\x7c\xb8\x07\x17\xd1\x3e\x27\xd3\x59\x79\xc3\x9a\x91\x58\xf3\x7b\x02\xfd\xb6\x8a\xd9\xe1\x6d\x17\x9b\x6c\xc1\xb2\x8c\xce\x63\xe5\x2c\x8b\xe8\x5c\x6f\x0c\x68\x67\xf6\x71\x09\x4b\x68\x35\x65\xcd\x4f\x5a\xb6\xd5\xcd\x62\x53\x35\xf3\xd1\xba\x1b\x49\x46\x87\x81\x77\x6a\xf2\x57\xff\xee\xcc\x63\x35\xc3\xcd\x3a\xda\xf1\x9d\x1c\xab\x46\xc3\xd0\x5d\xdc\x64\xb5\xf8\x77\x8c\xdc\x30\x58\xed\xaf\x6b\x07\x8c\x46\xe5\xcd\x33\x1d\x89\xb7\x8a\x48\x6f\xe0\xaa\xb1\xc3\x15\xeb\xd0\xe7\xf7\x4d\xf0\xd1\xbe\x8a\x2e\x2e\x8e\x8f\xde\x1c\x9f\xbc\xba\xb8\xc0\x8d\x59\xba\x64\x95\xcb\xa2\x96\x65\x9c\x86\xb7\xf6\x5c\xea\x2d\x13\xeb\xce\x7a\x49\x29\xef\x79\x22\xd4\xe0\xe3\x6f\x3b\x2b\x30\x1e\x49\x7f\x52\x85\x1e\xfb\x09\x23\x97\x0c\x2e\x18\xb9\x65\x75\x9f\x4e\x99\x73\x34\x3c\x61\x5a\x42\xab\xfa\xe2\xb7\x78\xc3\xaf\x4a\xc1\xd0\xe8\x47\x6c\xd6\x4b\x56\x14\xfd\x13\x86\xc3\x70\xbf\xd0\x09\x6b\xd4\x04\xbb\x55\x34\x5c\xa3\x4f\x98\x49\xaa\x7d\xa1\x5b\xdf\x9a\x92\x40\x2b\xd7\x4e\x0e\xe7\xef\x3f\xc4\x65\x59\x76\xa0\xf6\x85\xb9\xb9\xc5\x75\x21\x0c\x51\xab\x77\x9d\x96\x43\x0b\x19\x35\x81\x1a\x86\xe8\x82\x91\x66\x8a\x53\x91\x30\xf8\x64\x8c\x42\x3e\x33\xd2\x1f\xc1\x31\x23\x07\xa3\x46\x04\x53\x3d\x59\x9f\x59\x18\x9e\xeb\x7d\x6e\xb3\x9c\xfb\x13\x9c\xc9\x27\x46\xce\x99\xd7\xa4\x7c\x62\x38\x36\xa5\xe1\x93\xcf\x10\x86\x6f\x19\x6a\x5e\x1f\xa0\x5f\x0d\xf6\xfd\xcc\xfc\xc1\xd6\x29\x43\xef\x18\x1e\xeb\xaa\x87\xe3\xda\xb5\xb2\xaa\x63\x4c\xc7\x56\x7e\x3e\x67\xe4\x93\xeb\xeb\x78\x30\x38\x66\x8f\xe8\x18\x9f\x9b\x9e\x4d\x8f\xd9\x2c\x92\x1b\x8e\xf0\xd8\x76\xa0\x51\xbc\x3c\xb7\x8a\x45\x37\xbc\xe6\x72\x67\x0b\x0d\x11\xd2\x86\x89\x9b\x95\x66\x9a\x8b\xf4\x64\x33\xdf\xea\x15\x73\xa1\x57\x4c\x57\xb1\x1d\x08\xc3\x6e\x35\x7a\x65\x5c\x30\x13\xd6\xa3\x63\xb1\x5c\xb4\x16\xcb\xfe\x52\xb9\x60\x3b\x37\x21\x96\xa8\x75\x1f\xe2\x11\x6b\xf8\xcc\x2f\x36\xdc\x9b\xd8\x25\xc6\x6d\x9c\x96\x47\x4d\xac\x24\x37\x2d\x7b\x3d\x5f\xc6\xa9\x15\x6c\x17\xaa\xc2\x4d\x04\xf0\x4a\xcf\xa1\xd9\x8b\x6f\x18\x79\xc5\xe0\xda\xfc\x3d\x33\x7f\x5f\x9b\xbf\x0f\xcc\xdf\xa7\xe6\xef\x4b\xfd\xd7\x46\x89\x61\x64\x21\xa3\x35\x95\x0b\x21\x57\x9a\xf9\x2e\x8a\x6d\x09\xef\x19\x79\xc6\x22\x2e\x6e\x8b\xe2\x19\x8b\x56\xe2\xcb\x1b\xff\x98\xfb\x27\xe1\x1f\xac\x63\xb3\x79\xdb\xe7\xc7\x35\x2e\xd1\x84\x11\x47\x57\x76\x5f\x20\x87\x2d\x9f\x30\xe2\xbf\xd9\x30\x2d\xcc\xba\x7a\xbf\x63\xe9\x75\x87\x51\xd1\xfd\x0a\x9a\x03\x1b\x2d\x60\x3f\x22\x47\x43\xc5\x30\x1a\xcb\xfd\xf8\x59\x46\xcd\x30\x95\x07\xa3\x9d\x90\xc7\x9f\x9c\x79\x95\x69\xd2\xce\x1d\x06\x4d\x53\xab\xd5\x5b\x14\x9f\x59\x51\x9c\x32\xf4\x96\x99\x33\x30\x95\xd1\x38\xb8\xb4\x62\x49\x00\xee\xc1\x1a\x05\xde\xc4\xdb\x12\x12\x79\x75\x13\x4f\x67\xe0\xee\xf5\x8c\x83\xc0\x3f\xe6\xfa\xb3\xe0\xf1\x1b\x06\xc9\x7c\xee\x5d\x48\xe3\x6b\x06\x82\xa7\x34\x3e\x63\x20\x16\x8b\xf8\x35\x03\xeb\xa9\x5a\x65\x78\xe0\x53\x8e\xb2\xcc\x27\xe6\xf1\x53\x06\x74\xc5\x54\xfc\x92\xc1\x25\xe3\xf3\x5d\x79\x77\x0f\xbb\x3b\xdf\xac\xc8\x65\xf6\x11\x0f\xf2\xcd\x7a\x6d\x43\x4c\xe1\x12\xd2\xdb\x79\x47\x04\x8d\xc3\xa0\x84\x74\x39\x67\xf2\xdb\x1a\x30\x59\x3b\xab\xdf\xac\x92\xfc\xba\xc3\xc6\x70\x58\xc2\x52\x2a\xb6\xea\x32\x30\x8b\x86\xc3\xd1\x5f\xde\xbb\x5d\xf7\x8c\x61\x90\x8d\xc3\x46\x6b\x74\xd6\x7c\xff\xf7\xd1\x5f\x46\xf4\xef\xb5\x5d\x52\x18\x22\x79\x40\xd4\x74\x38\x03\xc4\xf5\xc3\x68\xe6\xee\xfa\x3b\x38\x00\x3e\x20\x3a\x33\x86\xa9\x04\x3e\x2b\x61\x9d\x25\x4a\xef\x8c\xc6\xfc\x4a\x9a\xd1\x24\xa7\x7a\xe6\xac\xbd\xa4\x7e\xda\xac\xdb\x9d\xdd\xdb\x00\x07\x4f\x18\x3e\x1c\xd1\xef\xca\x12\xbe\xec\x6a\x26\xef\x61\x2c\x8d\xa0\xc4\x2d\xa7\xc1\x23\x25\xde\xaf\xd7\x54\x1e\x27\x39\x45\xe6\x4a\xa8\x76\x8a\x66\x7b\xcc\x35\x4d\xe0\xaf\x6d\x9f\xf2\x99\xb5\xb1\xfa\x63\x97\x25\x69\x9d\xe6\x7d\xe5\x93\x72\x97\xcb\x11\x0a\xf6\x62\x49\x2d\x5d\x10\x89\x41\xcb\x29\x7f\x6c\x68\xae\x08\x37\xcf\xf9\x5a\xf0\x9c\x12\x01\x4a\x73\xcf\x9f\x99\xc8\xcd\x02\xb0\xb7\xd9\x29\xa1\x99\xdd\x0e\x9f\x32\xe7\x27\x6d\xe3\x68\xb9\x17\x30\x41\xd9\x4c\x8a\x7e\x82\xb9\x0b\xe5\xa6\xb7\x8d\xbd\x03\xb4\x4e\x00\xab\x8a\x71\xb9\xcd\x33\x2c\x58\x46\xdf\x54\x55\xf8\x37\xc8\x18\xa7\x6f\x1a\xb9\xeb\x77\x48\x45\xb6\x59\xf1\xe6\xc7\x66\x0a\xe4\x2a\x49\xaf\x63\x7f\x0b\x41\x7a\xed\xe7\xdc\xe5\xd4\xcf\xa0\xc1\xe2\x13\xe6\xb4\x2c\x41\x95\xa8\xde\x05\x0a\x57\x80\x2d\xe1\x03\x23\xd3\xc0\x38\x87\x07\xc9\x46\x2d\x85\x64\x5f\xdc\xdd\x98\x41\x6a\xe3\x48\x1e\x58\x1c\xd3\x48\xd0\x84\x21\x80\x80\xaa\xe4\x4a\xff\x7c\x5e\x33\x49\xf3\x00\x82\x85\x14\xab\x00\x82\xa5\xc8\x55\x00\x01\x5b\x1c\xac\xc4\xdc\xd8\xf2\x1f\xe4\x8c\xa7\xd4\xa6\x6d\xf8\x5e\x6a\x96\xe4\xaa\xca\xab\xdf\xbd\x87\x02\x04\xab\xe4\xf3\xc1\x42\xc8\xdb\x44\xce\x75\x0b\x6b\x29\x3e\xdf\x1d\xec\x76\xd4\xc4\x02\x35\xb1\x1e\x25\x55\xf2\xee\xc0\x5c\x5b\x12\x40\xb0\xc9\xa9\x3c\x48\xae\x28\x57\xc1\x0c\x5e\x30\x62\xc4\x9e\x7d\xad\x0d\xc2\x93\x5d\x3b\x1a\xa0\xe4\x10\xad\x72\x46\x0b\x25\xd9\x9c\x72\x85\x7d\x9c\x8c\x5a\xc5\xa2\x6b\x3f\xba\x32\x8e\xa1\x72\xd7\x77\xdb\x45\x95\x43\x41\x12\x34\x02\x60\x55\x28\x83\xd7\x16\x73\xe6\x2e\x23\xcd\xb3\x1d\x29\x25\xd9\xe5\x46\x51\x14\x2c\x25\x5d\x04\xc0\xad\xb1\xaa\x7e\xc1\x70\x6f\x96\xad\x7e\x8a\x6d\x36\xf0\x61\x0b\x62\x59\x47\x30\xa8\x1f\x6b\xd9\x37\xb6\x62\xbb\xc6\xfb\x7a\xb2\x74\x71\x91\x6b\xe6\x55\x8b\xaf\xb1\x6e\x4b\x3f\x4c\xfc\x43\x53\x09\x30\xa9\x4b\x26\xb9\xce\xab\x7f\x26\xf6\xa7\x91\xef\xdf\x5a\x0d\x98\x3d\x64\x1b\x31\x9b\x48\xa3\x5b\xdd\x47\x21\x15\xac\x13\xb5\xb4\x81\x0f\x0f\x03\x42\x88\x8c\x7c\x42\x7d\xbe\x34\xa9\x13\x75\xae\x41\xfd\x5a\x56\x02\x22\xe1\xfe\x32\x65\xbf\x7a\x1c\xe4\x9a\x82\x92\x25\xbe\x6e\x19\x18\x59\x98\xe2\x89\xfe\x12\xd7\x81\xa8\x2b\x70\x19\xb9\xd4\xbf\x84\xa1\xed\xbe\x49\xd4\x0f\x65\x89\xf0\x3e\x76\xed\x0f\x4b\xf8\xf5\x6b\x0b\x6d\x7b\x2b\x59\x4b\xfd\x5a\xc7\x7e\x73\x71\x88\x34\xdf\x9a\xb8\x98\x75\x46\xea\xee\xd0\xa1\x68\x06\xc0\xb4\xe1\x6e\xe8\x96\x38\x0c\x5d\x19\xbf\x1d\x49\x30\xf0\x98\x1e\x49\x1c\x29\xf1\xfc\xf5\x3b\x2f\xff\xbb\xc2\xd5\xd1\x72\x5d\x58\xc3\x55\x97\x6c\xe7\x10\x8d\x1c\xce\x9d\x24\x18\x08\xe7\xd5\xc9\xea\x6f\x39\x4d\x37\x92\x06\x18\xea\xdd\x20\xc4\x35\xa3\x24\x71\x8a\x82\x71\x4f\x93\x58\x49\x93\x79\x07\x15\xdd\x29\x14\xad\x0c\x5b\xdb\xb4\xba\x44\xff\x2c\xc6\x1f\x3f\xe6\x7f\xc1\x28\x18\xa8\x41\x80\x09\x9a\xfe\x73\x3c\xfb\x0b\x0e\x6a\x8b\x6b\x3a\x99\xd3\x7d\x70\x4d\xbf\x9b\xe1\xd8\xd9\xaa\x18\x2e\x25\xde\x13\xd8\xcd\xbc\x20\x05\x41\x00\x1a\x66\x26\x6e\x09\x3e\xf8\xdf\x3f\xfc\x95\x7e\x8f\xcb\x32\xde\x9d\x37\xbc\xdd\x1d\x47\xeb\x28\x65\xbf\x1d\xbc\x2d\x4b\xf8\xa9\x4b\x90\xbe\x27\x9c\x5e\xeb\xaa\xda\x79\xa2\x12\x10\x7a\xe9\xd1\x64\x4e\x65\x3e\x36\xd3\xe3\x8f\x3a\xcc\x14\x3a\x2a\x2b\xa6\x81\x8b\xff\x7b\xf0\x4e\xa3\x69\x7b\x63\x86\xe5\x6d\x7f\x7d\xfd\xea\x85\x52\xeb\x33\x4b\x2a\xcd\x2d\x05\x91\xc6\xa5\x7e\xe5\xd9\x37\x83\xd8\xb8\x0d\x86\x1c\x40\xea\x53\xd7\x49\x9e\xdf\x0a\x39\xd7\xa9\x63\x11\x1d\x35\x71\x30\x09\x9e\x24\x39\x4b\x7b\xc1\xe0\x52\x89\x04\x25\x83\x20\x0e\x06\xa9\x95\xc4\xad\xb3\x31\xda\x10\x15\x5d\x26\x39\x7d\x7f\xf6\x0a\x72\xa2\xa2\x8d\xcc\x60\x13\x86\xfd\xc3\x7f\xa2\x69\x72\xf0\x65\xa6\xff\x7c\x9c\x7f\x1c\x7c\x3c\xf8\x18\xcd\xfe\x12\xe3\xc9\xc7\xc3\x8f\x87\x1e\xe9\xe6\xb8\xdb\x00\x86\x4e\x1a\x0a\xca\x8f\x87\x03\x8b\xd6\x06\x1a\x47\xd0\x26\xd2\x3a\x1c\x58\x74\xa4\x4a\xb4\x81\x1c\xc7\xb9\x8d\xe7\x15\x89\x35\xe5\x48\x45\xd6\xba\xad\xcd\xbe\xc0\x92\xa1\x05\x18\x6f\xcd\x64\x95\x57\x0f\xe7\x54\xda\x88\x9c\x36\x60\x2d\xb0\x48\x59\xb1\x8d\x28\xff\x04\xec\x4f\xe2\xbc\xe8\xa6\xc3\xf0\xaf\x7a\xef\x44\x26\xdf\xb9\x75\xb1\x42\xe6\x3c\xde\x38\x5c\x6d\xf2\xa2\x60\x15\x1f\xf3\xfe\xec\x55\x18\x0e\x5d\xfe\x2a\xa9\xd6\x99\xd9\xc8\x35\x18\xd7\x56\x95\x2e\x9a\x19\x31\x51\x5a\xb3\xec\xcc\x95\x7a\x61\x57\x4f\xc0\x78\x8f\x4d\x8c\xe9\x64\xe7\x77\x84\x61\x63\x6e\x0b\x9d\xa0\x06\x27\x58\x5d\xff\xff\x91\x07\x3b\xb7\x7e\xb1\x05\x4a\x9b\x4a\xbc\x38\xc0\x20\x34\x16\x54\x92\xad\x90\xbd\x4f\x5b\x49\x34\x84\x14\x6b\x54\xf4\x4a\xdc\x56\x60\x4e\xf6\xb3\xa5\x83\x11\xc6\x60\xaf\x1d\xdd\x18\x63\xe1\x0f\xac\xaa\x5b\xe0\xc7\x64\xe8\x6f\x6e\xd1\x5f\x49\x90\x53\x75\x60\x71\x86\x26\x20\x62\x62\x0a\x4d\xf4\x9f\x78\x3a\xc3\x5e\xef\x30\x4d\x66\x38\xae\xbe\x0c\x02\xe8\x05\x83\x24\x4e\x4c\xec\xaf\x0d\x8e\x37\x16\x41\xc0\x82\xd8\x1b\x8e\x6b\x2e\xf2\x9d\xb9\x70\x30\x50\xf4\xb3\x39\x7d\x69\x7f\x98\xd4\x53\x12\xd7\x8f\xef\xe8\x67\x05\x76\x1e\x63\x3f\xa1\xee\x5d\x7f\xaa\xd2\x4c\x3e\xb7\xa5\xe3\xbc\xe2\xe4\xc0\x31\xb3\x31\x2b\x77\x8d\x0e\x1b\xf6\x9c\xf6\x9a\xe5\x9b\x24\x63\xf3\x44\x99\x5b\xaa\x36\xf9\xb8\xcf\x8b\x82\x23\xe9\xea\xc7\x13\x85\x24\x8e\x29\xfa\x83\xa1\xc0\x6d\xfb\xde\x22\x61\x19\x9d\xf7\x6e\x99\x5a\xf6\x6c\x36\x13\x48\xa2\xa7\xe9\xaa\xeb\xaa\xaf\xdd\xd8\xf7\x99\xe8\x21\xa6\x28\x48\x8c\x4b\x63\x45\xb7\xf0\x86\x58\x65\x69\x96\x7b\x72\x29\x64\xeb\x5e\x45\xa6\xd9\x9a\x56\xb3\x26\x8b\xf5\x4c\x0e\x4e\x8e\x4f\xdf\xbc\x39\x7a\x62\x9c\x19\x02\xa3\x0a\x66\x5e\x25\xaa\x6b\x33\x4e\x33\x2d\xfe\xdc\xd4\xf4\x86\xaa\x5b\x21\xaf\x2d\x17\x6b\xdc\xb5\x75\xef\xea\xd2\xb6\xb0\xdf\x8f\x7b\xb6\x93\x81\xfb\xd2\x13\x8b\x5e\x30\xa8\xb6\xeb\x20\x58\xe5\x3d\xfa\x39\xa5\x74\x4e\xe7\xc1\xb8\x4a\x37\xad\xb8\xa8\x51\xc6\xb0\xbf\xf3\x0b\x06\xd3\x37\xfa\xb5\x51\x95\x70\x2f\x3f\xe0\x8d\x52\x7e\x65\xb0\x26\x48\x45\xe6\x0e\x2b\x49\x35\xc7\xc9\x92\x2c\x2f\x8a\x17\x0c\x2d\xb0\x09\x5a\xf4\x39\x97\x8b\x63\xb3\xca\xb5\x00\x31\xc9\x0c\xea\x40\xbb\xe9\xd8\x19\x46\x8f\xd7\x61\x88\xc4\xd4\x7e\xb6\xdb\x5a\x7f\x9e\x91\xb5\x51\xd5\xeb\x3d\xe3\x26\xc6\x7e\x34\x28\x21\x0c\x1b\xdb\x5d\xec\x39\x32\x7a\xab\x0e\x1e\x86\x6d\x51\xc0\x09\x7f\x8d\x6d\x3d\xa9\xa8\x11\x9d\xe9\xd5\xbe\xd3\x1a\x72\x77\xf7\x59\xc0\x54\xe7\xd3\xfb\x00\xc0\xc5\xff\x47\xdb\xb7\x37\xb7\x6d\x2b\x8b\xff\xff\xfb\x14\x32\xa6\xe1\x10\x47\xb0\x2c\xcb\x8e\xeb\x50\x46\x38\xae\xe3\x64\x7c\x4e\xf3\x68\x93\xfe\x7a\x5a\x8d\x26\x03\x4b\xb0\x8d\x44\x22\x55\x10\x92\xe3\x2b\xf1\xbb\xdf\xc1\xe2\x41\xf0\x61\xa7\xf7\xcc\xbd\xff\xd8\x04\x08\x02\x2b\x3c\x76\x17\xfb\xdc\xc5\xa2\x59\x49\xf7\xf6\xda\x0d\x49\xfd\x5c\x62\xf0\x1a\xaf\x55\x35\x4e\x6e\x25\x36\xd3\xf3\xf1\xa5\xc8\xb3\xf6\xe9\xb6\x26\xca\xbc\x4b\xd2\xaa\x06\x79\xf6\x2a\xbf\xcf\x16\x39\x9b\x7f\x90\xf9\xad\xe4\x45\x11\x45\xa2\x23\xfc\xd6\xca\xbe\x45\xa4\xeb\x9b\x4e\xa1\xac\x6e\xf8\xdb\xaa\xd9\xf5\x1a\x6a\xaa\xa7\xef\x8e\x55\xef\x02\x12\x55\xb3\x6c\xc6\x17\x9f\xf2\xaf\x3c\x03\x6b\x8c\xaa\xe8\xdc\xd2\x3a\xbc\xf5\xc0\x46\x6c\x00\x07\x38\xd6\x1b\x5e\x55\xe7\x15\x07\x61\x70\x33\x13\x9f\x1e\xf2\xfa\xeb\x35\xcf\xe6\xb1\x71\x88\x23\xbf\x08\xba\xad\xb3\x25\x09\x62\xab\xd5\x42\x18\x4e\xfd\xe0\xdb\xfe\xfd\xfd\xbd\xbe\xe7\x2d\xf7\xd7\x72\x61\x18\xde\x39\x0a\x84\x89\xff\xb4\x22\xcb\xbd\xe6\x86\xc1\xb0\x67\x6b\x55\x4d\x06\xc8\x48\x22\x1a\x95\xd4\xfa\xab\xfd\x2e\xc8\x1f\x82\x6e\xd9\x9c\xad\x14\x97\x49\xdc\xa9\x2d\xaf\xf3\x4d\x41\xac\xa8\x37\x22\x8a\xbc\x25\x83\x95\x2d\x81\x31\xc3\xa3\x46\x56\x46\x46\xf4\x46\xe8\x33\x1d\xff\x2e\xe8\xbf\x04\x26\xbf\x0b\x4c\x94\x64\x59\xa1\x27\xc0\x0e\x92\x4c\x3a\x19\x9e\xff\xd2\xa8\x06\x9d\xcf\x66\x7c\xa5\x10\x26\xa6\x58\xfb\x65\xf6\x4c\x79\xd6\x50\xe1\xdd\xae\xd2\x21\x7a\x7b\x1b\x5b\xd9\x2c\x1b\x43\x8b\xaa\xfc\x5a\x2c\x78\xd0\x7a\x91\x5f\x83\x42\x31\x69\xf6\x68\x8d\x60\x52\x67\xf7\x92\x74\x6a\x44\x15\x4e\xe3\x7f\x02\xc8\xdf\x5d\xfc\xb1\xbe\xfc\x15\x5c\xd1\xb5\xba\xd9\x3f\x05\xb7\xc4\x4a\x91\xda\x54\x60\x76\xf5\xaa\x0f\x74\xab\x93\xb6\x92\x33\x51\xe5\x34\x9c\x7c\x4b\xca\x27\x0d\xee\xa6\x6d\x93\x03\x08\xc6\xaa\x4d\x57\x7a\x94\x4a\x5a\x1f\x84\x1a\x82\xde\x0d\xd5\x48\x86\xa4\x8e\xaa\x13\xf4\xef\x8f\xbf\xbe\xde\xff\xf4\xfe\x5f\x97\xef\x10\xa9\xe3\xe9\x04\xfd\x7b\x3f\x7c\xbb\x64\xdf\xec\x2a\xff\x6c\x1c\x42\xf6\x21\x30\x57\x40\xf9\x3b\xb5\xf7\x2f\xe9\x68\x38\x8c\x22\x75\x76\x34\x1c\x96\xe5\xf8\x0f\xe1\xee\x0f\x74\x3b\xcb\x97\xcb\x3c\x83\xe4\x02\x7c\xa5\x92\xd6\xdc\x91\x9e\x66\x78\x0e\x56\x0b\x26\x32\xd2\xfb\xc7\xc1\x3f\x50\x59\x86\x0a\xe7\x09\x32\x28\xde\x64\x02\x40\xc4\xa4\xb8\x99\xd6\xf9\xc2\x6a\xc0\x89\x9a\xd2\x6d\x69\x51\x7e\xd5\xc7\xca\x88\x8a\x56\x6b\xf8\xab\x67\xef\xe9\x2e\x56\x62\x00\x86\x28\xf1\x2f\xc6\x2f\x58\x1f\xe1\x3f\x05\xfd\x23\x50\xf2\xc1\x9e\xdf\x3e\x89\xe9\x00\xab\x5f\xdd\xd8\xa3\xc6\xe7\xb1\xc1\x05\x9c\x75\x86\x0c\x60\x90\x7b\xd3\xcf\x9c\x7f\x02\xbd\x84\xb9\x9a\xd1\xa5\xb0\xc1\x44\xab\x86\x7a\xc7\x36\x0e\x75\xd8\x8d\xff\x25\xbe\x6a\x60\x96\xc4\x76\xeb\x7f\xb4\xbd\x9d\x4c\xeb\xf5\xf8\xfb\x6b\x41\xba\x66\x97\x20\x33\x4a\x6d\x9a\xb9\x8f\x02\x5a\x8d\xcb\xc1\x93\x4b\x5f\x10\x0d\x6a\xdc\xed\xfe\x14\xee\x19\xc7\x6d\xa7\x6e\xde\x98\x30\xee\x27\xc6\x3c\x11\xde\x3d\x31\xe6\xc0\x41\xea\xf4\xce\xa4\x45\xb7\x22\xe6\x9a\x0b\xb0\xbd\x46\x11\xf7\x14\x5a\x73\x65\xbe\x10\x0c\x57\xab\x22\x41\xf9\x29\x00\x30\x26\x55\xd8\x7c\xc0\x2b\x36\x72\x8e\x64\x0d\xe1\x38\xa7\xa0\x92\xb2\x8e\x72\xfa\x9a\x44\x27\x68\x2d\x17\x88\x20\xb3\x54\x30\xd9\x1a\xe1\x21\x82\x34\x08\x68\x4a\x72\x3a\x41\x76\x74\x2b\x68\x75\xc2\x4c\x34\x25\x82\x4e\x90\xbd\x1a\x23\x62\x7b\x6a\x6e\x9d\x7a\x95\x81\xd9\x8f\x53\x5d\x4a\x75\x33\x83\x6e\x10\x41\x0d\x16\x49\x0f\x6c\xd6\x0f\x04\xa5\x15\x97\x83\x08\xaa\x63\x26\x5b\x51\xa1\x23\x44\x50\x93\x99\x80\xaa\x26\x2f\x63\x04\xb6\x35\x4c\x85\x08\xaa\x23\x2a\xd3\xe6\x57\x3e\x17\x92\xcf\x94\x2e\xde\x29\xb5\x02\x41\xaa\x7d\x2e\x5c\x21\x38\xb3\x88\xa0\x22\x9f\x7d\xe5\xea\x03\x53\x77\xa8\x66\x3c\x93\x35\x42\x13\xf8\xa0\x8e\xc6\xf6\x42\x6a\xbc\xa1\x9f\x71\x03\xfb\x84\x0c\x6e\x66\x4d\x66\x2c\x49\xe1\x13\x08\xc4\x32\xc9\x00\xe3\x78\x53\xb2\x58\x4d\xb2\x29\xc4\x89\x71\x6c\x36\x0c\x93\x4d\x4d\x53\xfd\x54\xa7\x4c\x4f\x74\x13\xf4\xa0\xc0\xd2\x2c\x86\x76\x4e\x49\x12\x02\x2a\xea\x80\x3e\x36\xf2\x93\xfd\x8d\x8d\x84\x27\x73\xb7\xe1\x1c\x07\xe9\xfb\x67\xb5\x84\x45\xfc\xa9\xb4\xe9\x60\xae\xc3\xfc\x6d\x5c\x85\xd1\x0e\x02\x90\x67\xff\x0b\x20\x13\x19\x30\x80\x19\xf3\x92\x3a\x6b\xf1\x5f\x38\xb5\xb5\xc8\x14\x97\x9a\x88\xe5\x9a\xae\xb9\xab\x73\xc6\xef\x7b\x0f\x82\xf8\xcb\xb9\x29\x97\x65\xc6\x6a\xfe\xfb\x46\x69\x14\xfe\xce\x36\xa9\x4f\x63\x45\xc3\x64\x0a\xfa\xf4\xe3\xc1\x5a\x2e\x82\xda\xe1\x34\x81\x24\x9b\xdb\x92\xc4\x8a\x4a\x16\xd7\x40\x25\x0a\x63\x8b\xc7\x53\x87\xd0\x69\x20\x77\x0a\x6e\x4e\x49\xed\xc3\xf6\x47\x1d\x6f\x9b\x1d\xb8\xb6\x40\x0c\x6c\x08\xa7\x09\x67\x96\x51\x9f\x12\x49\x9b\x09\x42\x14\x06\x93\x8a\xd6\x74\xba\x09\xea\x4e\x13\xcf\x07\xeb\xac\xb8\x13\x37\x2a\x56\x03\x6f\x44\x45\x5c\xb8\x33\x3e\xc7\x3e\x2c\x6a\xa3\x4f\x8b\x8e\x1f\xe9\xd4\x88\xbe\x1f\xed\x71\xec\x52\xc4\x8e\xb1\xa4\xd2\x90\x21\x3e\x30\x70\x68\xb2\x63\x9f\xfc\xae\x94\x25\xa9\xad\xf9\x2d\x57\xbf\xc9\x4e\x39\x6c\xe7\xba\x91\x3b\x4d\xda\xd7\x72\xf1\xa4\x2c\xb0\xad\x21\xf9\x1b\xcc\x12\x41\x36\xb1\x68\x93\xe7\x09\xe1\xd5\xd8\xab\x2e\x13\x0e\x4d\xd9\xec\xfa\xc4\x9e\x9b\x90\xb0\x05\xb7\x66\x07\x24\x8a\xac\xe5\x02\x8c\x3c\xff\x13\xd6\xeb\x29\x30\x82\xf0\x71\xdd\x80\x64\x5d\x80\x10\x10\xad\xc9\xd0\x2b\x26\x67\x34\x63\xd5\x39\x17\xd5\x39\x77\x41\xc0\x55\x29\x58\xc7\x4d\xaa\xad\xbf\x45\x17\x40\x2f\x50\x3f\x0e\xbf\x4f\x51\xd2\x43\xfd\xb0\x26\x81\xe5\xa9\x75\x5a\xd9\xb0\xb9\xb0\x9b\x8c\x51\x11\xc0\x35\x63\xee\x26\xe0\x2f\xeb\x7b\xc1\x5d\xc0\xdb\x19\x04\xde\xcc\xfc\x1b\x9f\xad\x55\x2e\x7b\xcb\x75\x01\x01\xea\x98\x57\x6d\x0f\x6c\x70\x3a\xde\x8e\x53\xdc\x56\x04\xe8\x43\x01\x59\xf3\xc7\x41\x28\x29\xd5\x40\xce\x36\x7c\xe4\x6e\x17\xbb\x47\xe8\x8d\x19\xae\xc9\x57\x9a\xd4\x63\xb3\xda\x7c\x36\x98\xe1\x86\xa4\xda\xae\x2e\x7c\x6c\x7e\x66\x50\x53\x92\x19\xb3\x91\x40\x5a\x41\x13\xec\xf9\xdb\x2a\x4d\xbe\x01\xfd\xce\x58\x9d\x5f\x54\x14\xcc\x8f\x0d\x95\x4f\x94\x4d\xd8\xb5\x66\x74\x16\x4c\x7c\xc1\xea\x36\x37\x39\x33\x31\xa3\x84\x88\xf3\x0e\x54\x4e\x78\x48\x8e\x8c\xd5\x74\x2c\x49\xd8\x94\x70\x38\x09\xfe\x1d\xd7\x94\x06\xdc\xc7\x18\x2d\x58\xfc\xa7\xc0\xe3\x1b\x36\x00\xa3\x01\x9a\x33\x72\xc3\xac\x4e\xb7\x0b\x65\x14\x2c\x96\x2c\xbe\x61\x35\x4c\x5f\xea\x6f\xcc\x5e\xa4\x8c\x55\x05\x60\x64\xe8\x1a\x6a\x44\x61\x1b\xdc\x0a\x5d\x64\x8b\x45\x57\xf7\x0e\x4f\x3b\xbf\x88\x1b\x36\x28\x56\x92\xb3\xf9\xf7\x32\x68\x35\xbc\xbf\x40\x50\xca\x5d\x4a\xb4\x05\xa3\x37\x8c\xac\xf4\xdf\xf1\xc2\x83\x4e\x57\x0c\xde\xce\x19\x5d\x30\x72\xc7\xda\x32\x8c\xba\x1f\x13\xd9\x30\x5a\x4b\x3e\x4e\x1e\x58\x57\x7e\x77\x05\xf1\x54\xe9\x70\xcc\xcf\x46\xcf\x4f\xc6\xfd\x3e\xc7\xca\xea\x0b\x9f\xa1\x7e\x1c\xf3\xb3\xc3\x93\x14\x0d\x4d\x78\xc2\xc0\x5c\xfa\xf0\x04\x74\x05\x81\x4a\x26\x0c\xcd\x87\xc9\xb2\xc9\x97\x57\xd6\x55\x70\x4b\x80\x9b\xab\xf9\x0d\x3e\x23\xa0\x59\x48\x98\x0e\x9c\x00\xe7\x3e\x1c\x67\x67\xde\xd7\xab\xdf\xcf\xf0\xe3\x2c\x49\x40\x50\x6e\x19\xdd\x82\xc1\xdb\xa7\xdc\x3a\xda\x2c\x19\x61\x45\x21\x6e\x9b\x11\x02\xed\x37\x0d\xfe\x4a\xf2\xf9\x7a\x56\x3b\xe3\x21\x62\x9f\x48\xcd\x1e\xc9\x29\x51\x25\x26\xca\x24\xe7\xbb\x16\x19\xef\xec\x3a\x4c\xf2\xcc\x6d\x22\x3f\xd6\x88\x69\x16\x64\xa2\xd8\xe6\xd7\x5f\x92\x6d\x9e\xa8\x12\x92\x3c\x27\x28\x47\xa5\xe6\x08\x26\x53\x3b\x19\x3c\x9c\x8c\x20\xbc\xb0\xe6\x7c\x05\xcd\x07\xf9\xf5\x97\x09\x84\x45\x5c\x4d\x09\xab\xf1\x8d\xc0\x48\x0e\xc7\xb3\x33\x56\x75\x31\xf3\xa1\xc2\x26\xb3\x29\x29\xa8\x98\xac\xa7\xe3\x96\xb3\x44\xe1\xbd\xcd\x0a\xeb\x67\x2d\x3d\x87\x59\x40\x1e\x78\x6b\xaa\xad\x81\x17\x06\xf0\x75\xe9\x32\x57\xc6\x45\x95\x4d\xb1\xf9\xab\xc7\xca\x5b\xdf\x8d\x7d\x38\xb0\xc1\x2a\x5f\xc5\x1a\x87\x70\xf8\x35\xdc\xfc\x1a\x48\xa6\xc3\x62\x89\x83\xf8\x90\x7a\x5a\x72\x3a\x1c\xe7\x95\xb7\x65\xbf\x9f\x57\x7b\x44\x82\x76\x2a\x33\x60\xe8\x82\xe6\x4e\x82\x3e\x69\x56\x96\x25\x44\x82\x2f\x89\xd1\x4b\xb7\x3c\x38\x9c\x86\xb7\x52\x63\xf6\x0f\x6e\x09\xea\x99\xec\x3e\x48\x14\xf9\xfe\xe9\xe9\xf3\x17\xfb\x87\x60\x1c\xe1\x0c\x48\xb3\xc0\x8f\x61\x32\xdc\x7f\xc1\xf6\x6f\xa6\xdb\x51\x79\x70\x2b\xc8\x3a\xe3\xc5\x8c\xad\x78\xcd\xf6\xb8\x43\x29\x1e\x46\xc6\xf6\x51\x3a\x4a\x62\xe4\x6f\x2d\x30\xad\x57\xad\x4f\x1a\x54\x77\x8a\xa0\xa0\x4c\x46\x05\xe4\x2a\x0d\x39\xe7\x8c\x9a\xfc\xa5\x8f\x4a\x42\x15\xf6\x79\xbb\x6a\xae\x99\x59\x15\x12\x0a\x93\xc7\x66\xc1\xfc\xd0\x38\x0b\xbd\x3a\xd6\x7e\x3a\x8e\x61\x3a\x3a\xee\x30\xe8\xd9\xe8\xe4\xd9\xe8\x08\xf5\x41\x6e\x77\x95\x69\xfe\xd5\xb8\x25\x8c\x30\x39\x3c\xc1\x7d\xf4\xec\xe8\x27\xa4\x09\x6e\xb5\xff\x11\x22\x82\x0e\xc7\xe2\x2c\xab\x36\x82\xb7\xd8\xc8\xc2\xa0\x32\x02\x8f\x8f\x9f\xeb\x4b\xd2\x6e\x77\x7c\x62\xfe\xbf\xb0\xe5\xc3\x91\xad\x60\x2f\xe9\xf1\x69\x14\xb1\x33\xfa\xfc\x47\x28\x9d\x3c\x87\xd2\x0b\x13\xe2\xe6\xc5\x8f\x50\x3a\x1c\x8d\xd2\xbc\x6f\x7b\x87\x9e\x13\x76\x76\x38\x3a\xd5\x95\x0f\x6c\xc2\xa6\x09\x3b\x1b\x0d\x8f\x5d\xf9\xf0\xc5\x68\xc7\x5e\xbe\x3c\x99\xf6\x75\x61\x74\xba\x3b\x39\x8a\xa0\x8d\x8d\x87\xc3\x5e\xd2\xe7\x3f\x1e\x1d\x1f\xdb\xe6\xa3\xd1\xb1\x6e\x7e\x38\xf2\xed\xf5\xc7\xd1\xc9\x51\xe3\xfb\x58\xf4\xe9\x21\x61\x14\x02\xdc\xf4\xe3\xf8\x70\x38\x3a\x8a\x18\x3e\x3b\x3b\x1c\xee\xe0\xb9\xf1\xeb\x31\xb1\xfd\x1f\x0f\xa1\xff\xd3\xb0\xff\xc3\x51\x38\x40\xe7\x80\xfe\x2c\xe7\x4f\x7a\xac\x1a\xf7\x83\xb6\x5b\x2f\x8e\xa2\xbd\xbd\xb8\xe1\xb5\xfa\x3f\x76\x47\x05\x37\x42\x63\x76\xf2\x94\xf3\xa2\x69\xf1\x77\x24\xfe\x1a\x8d\x2f\xd9\xc3\x35\x7f\x5b\xcb\xe4\x67\x1d\x95\x37\x0c\x32\x1d\x55\x14\xcc\xa3\x63\x55\x79\x79\xd3\x43\x6c\x11\x9e\x95\x20\x04\x14\xc9\x1d\x08\x33\x4e\xd3\xed\x2d\x88\xb3\x2c\x6b\x6e\xf1\xad\xe9\x93\x0e\x1c\x8e\x5d\x6a\x22\x89\x7d\xca\xb3\x3d\xde\x31\xe3\xce\x41\x6a\xc2\x89\x9c\x8e\x63\x50\x02\xd5\x88\xef\x6e\x97\x69\x06\x26\xbf\xff\xe0\xe6\xa6\xc0\xbb\xdd\xde\x1d\x33\x33\xd3\x4a\x6e\x27\x41\x37\xa2\x09\x20\xdd\x1b\xfa\xdd\xc0\xcb\xef\x03\xe0\x49\xa1\x74\xb1\x9f\xbd\x59\x17\xfc\xa4\x28\xda\x03\x0c\x1f\x45\x71\x4e\x97\x0c\xfc\xe4\x30\xb1\xaf\xe0\x4d\x1a\xcb\x8e\x6b\xa9\xb4\xc6\x08\x0e\x64\xc8\x43\x66\x7d\x9d\xf8\x24\x9f\x8e\x45\x87\xa3\xa0\x88\x22\xf9\x88\xff\x60\x3e\xa5\x2a\x16\xb0\x28\x89\x9f\x65\x13\x25\x02\x5e\x4a\x88\x42\xee\x13\x1d\x03\x75\x95\x1d\x5c\x03\xaf\x32\x6e\x6a\xe2\xe3\x7e\x6b\x08\xa6\x1b\x0d\x02\xbc\x08\x18\x50\x57\x08\x90\xb7\xe6\xb8\x2c\xc9\x35\x7b\x3c\xae\xe1\x3d\xa3\xd6\xa1\xee\x92\xd1\xed\xaf\xaf\x2f\x0e\x7f\x3c\x3a\x4d\x90\x7d\x40\xe4\xd7\xd7\x17\x47\x2f\x4e\x4f\xa0\x46\x3f\xa0\x92\x7c\x66\xf4\x96\x0d\x0c\x2f\x14\x6f\x5d\x74\x86\x4b\x36\xb0\x4d\x08\x98\xf5\x2b\xc5\x65\x91\xf8\x1e\x3b\xb8\xd9\x6b\xe6\x1c\xe5\xef\x19\xb8\xf3\x95\x7e\xb4\x8e\xd6\x9e\x58\x94\x65\x49\x2e\x19\x26\xef\xbf\xcf\xbf\x7e\x64\x74\x7b\x2d\xd9\xec\x2b\x57\xdd\xda\x93\x3e\x9a\x4c\x11\x70\x54\x4b\x96\x80\xdc\x9c\x21\x22\xb2\xb9\x98\xd5\xb2\xbc\x86\xee\x65\x7d\x34\x41\x7d\x0e\xc9\x1b\x89\xe4\x2b\xce\x54\x67\xcf\x65\x49\xbe\x34\xb9\xe7\x6f\xac\x99\x7e\x11\x76\x06\xb9\x68\xf2\xb9\xdf\x98\x0b\xdd\x46\xbe\xe8\xad\x9b\xf2\x04\x32\x63\x93\x4f\x8c\x82\xe9\x5a\x88\x83\xbc\xd7\x1f\xf9\xc0\xe8\x67\xcf\xec\x93\x73\xcd\xc1\xce\xe7\xbf\xac\xb9\x7c\xf8\x20\xf9\x8d\xf8\x96\xec\x1d\x12\x38\xa6\xaf\x72\x55\xe8\x82\x55\x9e\x25\xc8\x68\xcf\x5c\xf9\x23\xcf\x94\xc8\xf8\x42\x37\x99\xf3\x85\x58\x0a\xc5\x65\x82\x22\xe4\x58\x07\x70\x33\xd0\x4f\x32\xb9\x65\x03\xf3\x68\x6b\xfe\x3f\x64\xc8\x7d\x9f\x2d\x1e\xf4\xd7\x66\x27\x24\x1f\x58\xb5\x27\x92\xcf\x6c\x50\x6d\x90\xc9\x07\x36\xf5\x13\xbe\x77\x48\x0a\x27\x70\x79\xc4\x85\xbd\xf7\x89\x55\xd8\xb6\xf8\x2a\x56\xef\xd6\x8b\x85\xf9\x52\x49\x31\x53\xba\x08\x91\xf3\x45\x76\x0b\x91\xd7\x7f\xae\xe6\xd6\xa1\x49\x13\x48\xa5\x9e\x0c\xd2\x1c\xb2\x3b\xb2\xa1\xfc\x91\x38\x6b\xb3\x74\x43\x67\xb1\x24\x1b\x9c\x6c\x42\xaf\x71\x0d\x68\xba\xa1\x37\xf1\x06\xbb\x1d\x64\x14\xe5\x5f\x58\xbc\xd1\x78\x68\xa3\x4f\x8b\x23\x0c\xf1\xa6\x8b\x5d\xe9\xa9\x56\x8f\x37\x10\x70\xa0\xc4\xd8\xda\x55\x12\x84\x31\xf1\xa1\x7c\x34\xaa\xca\x1d\x9e\x67\x51\xb4\xb7\x4a\x59\x2c\xc9\xb9\x5b\x0c\x49\xe6\x04\x7d\xe5\x0f\x08\x27\x72\xbc\xa1\x08\x95\x1d\x1a\xce\xf8\x8e\x6e\xf0\x6e\xd7\x8a\x2e\x70\xb7\xdb\xa1\xeb\x3c\x5f\x70\x96\xd5\x2b\x9b\xcc\x1f\x34\x14\xb7\x22\x53\xb5\xba\x5b\x56\xd1\xd9\x0d\xf6\x50\xa6\x93\x45\xbc\x4a\x65\xf2\x08\xa0\xc6\xff\x74\x11\xb3\x78\xd3\x78\x0d\xc1\x95\x10\xc6\xd3\x64\xb2\x88\xa5\x6b\xe7\x02\x08\x61\x6c\xec\x1f\x1f\xc8\x12\x72\x45\xdf\x54\xd1\x80\x36\x6e\xec\xa5\xae\xfe\xc2\xe2\x19\xc6\x0f\x74\x56\x39\xe9\xde\xd6\x6e\x37\x1b\x3c\x7e\xa0\xeb\xf4\x76\x50\xe4\x52\xc5\x6b\x9c\xdc\x7a\xbf\x6e\x13\xd2\xe8\xa1\x62\x0c\xaf\xcd\x86\xb9\xa7\x0f\x93\xeb\x29\xb9\xa4\x9b\xc9\x3d\x8c\xbd\x27\x4c\xc0\xf7\x3d\x4a\x2f\x4d\x93\xcf\x14\x36\x42\xda\x15\x00\x2a\xd5\x84\xe7\x1e\x27\x32\x91\xfd\xb8\x48\xd1\x00\xf5\xef\x13\x8d\x5f\xee\x35\x7e\xc1\xe3\x0b\x16\x2f\x89\x8a\x2f\xc9\xe7\x47\x76\x2d\xf6\xd6\xd1\xcb\x92\xbc\x63\xb4\x45\x6a\x9b\x18\xb1\x8e\x90\x1a\xd6\x3f\x36\x0b\x87\x22\x79\x33\x6d\xe3\x9e\xf7\x6b\x3b\x67\x63\x1f\x76\x85\x2a\xb7\x4c\x51\x54\x5d\xaa\xab\xba\x2e\x41\x9a\x7b\xdb\x2d\x50\xbb\x34\x2f\xc1\xed\x53\xe5\x8f\x48\xd4\xa8\x1a\x58\x44\xb5\xdb\x9d\x33\xf7\x5c\xcb\x94\xea\x5b\x44\x91\xc5\x6d\x8d\xca\xe0\xba\x11\xbe\xe9\x86\xea\xd3\x1d\xef\xd9\x06\x3d\x23\xcf\xf5\x02\x3f\x2e\x20\x38\x22\x8c\x41\x7a\x55\xaf\xa4\x97\xcb\x5e\x65\x67\xe2\x04\x7b\x15\x7a\x6e\x80\x6b\x30\xa2\x99\xeb\xf7\x16\xc5\xd5\x10\x25\xf1\x6d\xba\x61\xfc\x2d\xfb\x9a\xe5\xf7\x59\xcf\x34\x72\x60\xae\x64\xbe\x11\x73\x3e\xd7\x73\x27\xfd\x30\xa5\xb9\xd1\xd5\x11\xb1\xd4\xf7\xe0\x73\x66\x15\x43\x2e\x39\x54\xa7\xe1\x92\x69\xb2\xdb\x7d\x61\xb1\x2b\x60\xc3\x71\xf9\x22\x69\x92\x9e\x36\x46\x51\x83\x7a\x93\xb4\x59\x91\x9c\xb3\x46\x4d\x40\xbd\xaa\x00\x44\x03\x5f\x99\x9e\xb3\x41\x40\xdf\xf6\x82\x57\x9e\xd4\xf1\x16\x91\xeb\x82\xac\xd1\x26\x6d\xd5\x24\xd5\xc6\x73\x55\x01\xa9\x0c\x80\xf3\x95\x1a\xb8\xaa\x45\xf0\xc2\x11\xd5\x2e\x38\xcc\xab\xd4\x3d\x24\xe7\x0d\x6a\x2b\x93\xce\x05\xb2\x2f\xfd\x77\x32\x09\x30\x6a\x8b\x4e\x3f\x3e\x70\xd5\x28\x6d\x57\x55\x7d\x56\x75\xc4\x2c\x7f\x92\x07\xf4\x3e\x6b\x10\xf5\x4e\x88\x6b\x4d\xd2\x46\x59\x8f\x54\xab\x08\x28\x7f\x17\xf0\xfe\x6d\x1a\x3c\x43\x27\xae\x40\x34\x8a\x7f\x04\x92\x5c\xaa\xd4\xfc\x33\xe6\xc2\x1d\x8c\x45\xe7\xa0\xad\x66\x69\x57\x25\x80\xd1\xaa\x05\x11\xd2\xb8\x03\x9e\xdc\x1e\xa8\x34\xa3\xf1\x90\xb8\x12\x8e\x11\xd2\x8c\xfe\x17\x16\xfb\x2a\x93\x2b\xc9\x95\x8c\x4b\x00\x61\x96\x24\xb6\x83\xc1\xba\xbc\x24\xd4\xa5\x67\x43\x68\x2c\x8c\x58\x15\xc4\x9e\xaf\x0d\x1e\x11\x59\xef\x23\x4b\x6b\x75\x09\xd7\xf8\xd3\xb0\x6c\x48\x64\x3d\x9e\xf2\x81\x2d\xa6\xbe\x3e\x41\x86\x37\x46\x89\xaf\x1a\x9b\xc0\x75\x1f\xd9\x44\x4c\xc7\x72\xb7\x8b\x65\x8d\xfa\x66\x10\x8e\x42\x4f\x7b\x14\x49\x43\x82\x4d\xb1\x92\xd1\xac\xe9\x70\xbc\x0e\xe5\x74\x36\xe2\x5b\x41\xe5\x64\x3d\x1d\xe7\xd5\xfa\x1a\x69\xa3\xfe\x75\x93\x62\xba\xdb\x5d\xb0\x98\x91\x9f\x59\xac\x4b\xa4\x20\x33\x3d\x50\x6b\x0d\x48\xf0\x3d\xc9\xdd\xd1\xcb\xfd\x11\x82\xcd\xe0\x26\xd8\x82\x4a\xf2\x00\xc5\xe4\x8d\x4d\x9a\x57\xe8\xd5\xf7\x17\x1c\x95\xdc\x13\x1d\x63\x9b\x74\xe3\x7c\x68\xf2\x0a\x37\x60\xb2\xa0\xe0\x82\x93\x37\x91\x25\x04\xd0\x40\x55\x16\x82\x06\x32\x8a\xa2\xa6\x60\xd1\x37\x49\x17\x7d\xaa\x89\xe2\x29\x35\x42\xb2\xc3\xe1\x70\x78\xf4\xec\xe8\xa7\x08\x25\xd5\x9b\xcb\xd1\xb3\x17\x17\xcf\x5e\x1c\x45\xa8\x8a\xc4\xf8\x72\x98\x2e\xfa\x37\x09\x42\x25\x26\x5f\x59\x87\x7f\x27\x11\x78\x6b\x22\x91\x04\xca\x6a\x6b\x96\xe0\xaf\xe9\xf5\x35\xf7\x5d\x47\x51\xcc\x28\xef\xa3\x14\xf5\xdf\x31\xd8\x0c\x32\x9d\xb3\x89\x9a\xc6\x8c\x48\x22\x70\x02\x6a\x55\x8d\x52\x7d\xb5\xc0\x89\x7b\x7c\xc7\xe2\x1c\x13\xa1\x6f\x90\xac\x23\x4f\x6c\x2b\x22\x8f\x1e\xcf\x53\xdf\x50\xc5\x9f\xd6\xf4\xfd\xdb\x12\x44\xc8\x3f\x18\x8f\xa8\xd4\x3f\x25\xfa\xf8\xe9\x17\xd6\x86\x3e\xa7\xe8\x80\xad\xc4\xc1\x66\x78\xc0\x66\xb3\x7c\x9d\xa9\xc2\x3f\xec\x2f\x44\xa1\x10\x11\x74\x5b\x12\x16\x84\x0a\xae\x0c\x26\x06\xd7\xf9\xfc\x01\x62\xa7\x98\xc7\xc0\xde\xd6\x54\xa4\x0d\xb3\xa5\xc0\xdb\xf9\xad\x28\x0a\x91\xdd\xf6\x24\xff\x6b\x2d\x24\x9f\xf7\x7a\xa0\xb8\xe6\x1a\xf1\xf6\xf4\xb7\xc8\xa4\xad\xfa\xe1\x2f\xd8\x3b\xee\x5d\x11\x45\x35\x7d\x45\xeb\x3d\xee\x56\xdd\x0b\xb0\xb4\x69\xb5\x9e\x28\x30\x25\xfb\xca\x62\xab\x73\x96\xfd\x9c\x28\xe0\x57\x33\x8c\x4b\xf2\x96\xd1\x6d\xc6\x96\xbc\x58\x31\x93\xa2\xc6\xa6\x74\xb2\xc9\x5f\xcc\xd1\x12\x99\x50\xe6\xf4\x40\x62\x28\x37\x7f\xc9\xb6\x2c\x89\x49\x18\x5a\xf8\x0f\xba\xae\x50\xd6\xa1\xa1\x24\xa2\xb8\x0a\xba\xea\x6c\x1a\x8c\x05\x9d\x9f\xdb\xc1\x3e\x82\x03\x43\xd7\x37\x76\xba\xe0\x2e\x52\xc4\x6a\xe0\xc0\x83\x90\x8b\xd0\xb8\x48\xb6\x8b\x9c\xcd\x2f\x9a\x10\x6a\xd6\x3a\x1e\x12\x05\xc6\x7f\x42\xe1\x18\xfd\xfc\xfe\xfc\xd5\xe7\x8b\xf7\xef\x5e\x5f\xbd\x41\xa0\xd1\xa9\xc0\xe9\x1a\xfa\x2f\x19\xbf\x91\x83\x25\x93\x5f\xab\xc5\xe8\xf1\x2a\x6d\x9e\xdb\x51\x6f\xe4\xe0\x5e\xb2\x55\x5d\x03\x0b\x2a\x92\x31\xb6\x11\x3d\xf9\x60\x25\xf9\x86\x72\xc8\xb8\x6b\x62\x7a\xf6\x86\x3e\x26\x27\x75\x30\x42\x74\x44\x97\x8d\x90\x98\xd6\xf4\x88\x64\x36\xe9\xaa\x9b\x2d\x64\x82\x77\xf6\x8e\x12\x19\xa3\x8f\x97\x9f\x3e\x5f\xbd\xbb\xfa\x74\x75\xfe\xf3\xd5\x9f\x97\xaf\x20\xc8\xb0\x79\x7d\x9c\x40\x88\x4f\x9e\xcd\x7d\xf8\x4f\x0e\x39\xfb\x63\x48\x84\x03\x46\x78\x38\xc6\x25\xa9\x75\xfe\x9f\xcc\x84\xb9\x23\xfd\x5f\xcf\x87\xcb\x5f\x5b\x90\x1f\x18\xf0\xbc\x32\xcf\xd5\x1b\x53\x85\xdd\x6c\x1d\x93\x5f\x59\xbc\x75\xf8\x22\x1f\xf8\x34\x47\x70\x95\xb1\x19\xb3\xf5\x01\xd5\xfb\xdb\x4f\xd4\x68\x08\x99\x35\x04\xe5\x83\x82\x67\x0a\x5b\x6f\x9d\x34\x66\x54\x80\xad\xa3\xdf\x77\xc4\x4e\xf9\xf9\xc5\xc5\xfb\xdf\xde\x7d\xfa\x88\x08\xdb\xed\x26\x53\x8c\x93\x2c\x46\xc5\x5d\x7e\xff\xd6\x65\x04\xdf\xda\x60\x11\xaf\x8d\x53\x90\xca\x7b\x30\xcf\x3d\xd7\xd3\x00\x81\xc7\x7b\xdd\x63\xc9\x7a\x36\xa1\x39\xcb\x6e\xb9\x44\x25\xd9\xea\x1f\x09\xb9\xa9\x0c\xac\x27\x7f\x73\x51\x4b\xb2\xb4\x79\xc2\x8b\x64\x1b\x6c\xfc\xc6\x01\xa9\xdc\xfe\x4b\xd2\xd8\x49\xad\x96\xc1\xe1\x75\xcd\xdd\x2c\xb4\xda\xba\x1f\x49\x79\x19\x46\x30\xfb\x01\x4c\x0e\xe6\xac\xdb\x14\x6a\x5d\xf7\xd2\x0c\x12\x49\x03\x4a\x76\xc6\xbc\x35\xff\xc8\x2a\x56\xff\xba\xe0\x72\x00\x26\x11\x63\x09\x8a\xcd\xce\xf6\x14\xfd\xc4\x99\xe4\xb2\x87\x2a\x89\x76\x20\x09\xb7\x3c\xc1\x2b\x8b\x38\x13\xe4\xcf\x1c\x11\xf3\x04\xb1\xaa\x34\xcb\xb3\x04\x3c\xd7\xf6\x37\x33\x26\xe7\xc8\xc6\x71\xbc\x9c\x0b\x65\xb2\x3b\x83\x15\x44\x61\x13\xeb\x39\xf2\xb3\x65\xab\xd5\x55\x76\x93\x27\xaf\x18\x91\xf9\x5a\xf1\x22\x99\xd8\x91\xaa\xbe\x57\x4c\xdd\x25\xe8\x00\x81\xc6\x19\x54\x8a\x45\xa2\x3f\x4c\xae\x64\x59\x4e\x49\xc6\x36\x57\x8a\x2f\xab\x2f\xcf\x6b\x50\xbd\x65\x0a\xd8\xa1\xe4\x15\x1b\xe8\xb2\x19\x27\x79\x74\x14\x37\x0f\xba\xf9\x9c\xa0\x03\x84\xf5\x20\x85\xca\x25\x4f\xde\x82\x13\xdf\xf8\xff\xfd\x77\x00\x00\x00\xff\xff\x85\xda\x69\x87\xf2\x12\x01\x00") func init() { err := CTX.Err() diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue index d886aa9e70..09397d2ce1 100644 --- a/ui/components/accounts/AccountsList.vue +++ b/ui/components/accounts/AccountsList.vue @@ -4,17 +4,28 @@ - + + + + + - + + + + + + + + From a8922f62c2ba547cefe1fb5a2421ac31a92bc924 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 09:59:01 +0200 Subject: [PATCH 179/407] Change accounts service requests to POST Microweb only supports POST requests. So as long as we're using that, we need to have everything as POST. --- pkg/assets/embed.go | 6 +- pkg/proto/v0/accounts.pb.go | 155 +++++++-------- pkg/proto/v0/accounts.pb.micro.go | 42 ++-- pkg/proto/v0/accounts.pb.web.go | 12 +- pkg/proto/v0/accounts.proto | 14 +- pkg/proto/v0/accounts.swagger.json | 243 +++++++++++++---------- ui/client/accounts/index.js | 302 ++++++++++++++--------------- ui/store/index.js | 2 +- 8 files changed, 407 insertions(+), 369 deletions(-) diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index ac66529e54..6e37b37671 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-07-01 09:16:48.869091 +0200 CEST m=+0.004214578" from config file "embed.yml" DO NOT EDIT. -// modification hash(89528609b2eeee1d43242d0d989b8f0c.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-07-01 09:57:46.117738 +0200 CEST m=+0.008372897" from config file "embed.yml" DO NOT EDIT. +// modification hash(8ae67f4028fda1f183571cab5ea96c64.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,7 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\xfd\xfb\x7a\xdb\x38\x96\x28\x8a\xff\xfd\xdb\x4f\x21\x71\x32\x1c\xa0\xb5\x4c\x4b\xa9\xae\xea\xdd\x54\x10\xb5\xe3\x38\x97\xaa\x24\x4e\xd9\x49\xea\xa2\xa8\xbd\x69\x0a\xb2\x10\x53\x80\x0a\x84\xec\x38\x22\x7f\xef\x73\x5e\xe3\x3c\xd9\xf9\x70\xe3\x45\xa2\x53\xe9\x99\x3d\x93\xef\x8b\x45\x82\xb8\x2e\x00\xeb\x86\xb5\x16\xe6\x74\xc1\x38\x45\x68\xb1\xe1\xa9\x62\x82\x23\xbc\x0d\x36\x39\xed\xe5\x4a\xb2\x54\x05\xe3\x9b\x44\xf6\x14\x09\x36\xdc\x66\x9c\x07\x7d\xa2\xee\xd6\x54\x2c\x7a\x57\x99\xb8\x4c\xb2\x77\x4b\x96\x4f\xea\xc7\xb8\x2b\xe7\x2d\xe3\x73\x71\x3b\xb1\x3f\x9d\x39\x6c\x05\xae\x9e\xce\x1c\x39\xcd\x16\x13\xfd\x27\xde\x96\x63\xdf\xd9\x1e\x45\x0a\x28\xde\x4a\xaa\x36\x92\xf7\x14\xa2\x64\x4b\x3f\xaf\x85\x54\x79\xbc\x2d\x4b\xa0\x91\x7b\xc3\xf5\x63\xa9\x47\x24\x49\x73\xc8\x0a\x6f\x75\x22\x25\xfb\x29\xa7\x97\x9f\x68\xaa\xa2\xb5\x14\x4a\xe8\x9e\x80\x24\x34\x5a\x26\xf9\xe9\x2d\x7f\x2b\xc5\x9a\x4a\x75\x07\x9c\x04\xbe\x60\x40\x7c\x7f\xcf\xef\x56\x97\x22\x9b\xd8\x9f\x78\x5b\x82\x20\x3c\x62\x8a\xca\x44\x09\x59\x14\xc1\x3f\xfe\xe1\x5f\x02\x60\x84\x47\x49\x7e\xc7\xd3\x97\xcd\xef\xad\x94\x00\x12\xc2\x23\x25\xce\x95\x64\xfc\xea\x5d\x72\x65\xb2\x34\xde\x83\x1a\x28\xa9\x06\x0a\x48\xe0\x76\x10\x82\xd0\x30\xa4\xf5\x10\x7a\x8c\xe7\x2a\xe1\xa9\xee\xe5\x62\x42\xe3\x05\x30\x3f\xcc\x54\xd2\x44\x51\x24\xea\xcc\x58\xb7\x4b\x6f\x7b\x17\x88\x17\xc5\x74\x86\xc7\x0e\xd4\x2c\xba\x60\xfc\x46\x5c\x37\x61\xa6\x1b\xb5\x4d\x72\x12\xe4\x9b\x7c\x4d\xf9\x9c\xce\xcf\x55\x22\x55\xe0\xcb\x55\xb9\x05\x30\xbc\x65\x0b\x14\xd0\xcf\x34\xdd\x28\xc6\xaf\x02\x42\x08\xc7\x6a\x29\xc5\x6d\x4f\x37\x79\x22\xa5\x90\x28\x78\x4e\xb9\x05\x41\x8f\xe5\xbd\x24\x93\x34\x99\xdf\xf5\xe4\x86\x73\x5d\x04\x8f\x75\x15\xa9\x58\xad\x33\xaa\xe8\xdc\x56\x61\xaa\x35\xf5\xe8\x77\xe1\xaa\x64\xbe\x0b\xe7\x08\x97\x0b\x21\x91\x8c\x56\x54\x2d\xc5\x9c\x08\x90\x51\x22\xaf\x08\x1b\x8f\x6d\xf7\x13\x22\xa3\x39\xcd\xe8\x55\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x44\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x39\x4e\x05\x57\x8c\x6f\xa8\x6f\x20\x2d\x4b\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x4e\xb9\x22\x32\xba\x70\xbf\x89\xbc\x1a\xd3\x2c\xa7\xbd\x56\x87\xab\xfc\x66\x1c\x3b\x70\x6c\xc2\x88\x34\x06\x6e\x87\x30\x96\xd1\x9c\xe5\xeb\x44\xa5\xcb\x93\xcf\x29\x5d\x1b\x48\x9b\x2f\xb8\xd4\x0d\x05\xb6\x87\xcd\x56\xc2\x50\x46\xc9\xa5\xdc\xac\x15\xf2\x5f\x6d\x5d\x78\xcc\x49\x63\x72\x0c\x22\x58\x90\x8d\x9b\x66\x03\x77\x2e\xe4\x2a\xc9\x74\x6d\x8b\xc8\x2c\x16\xdd\x63\xae\x81\x27\x38\x9d\x34\x7a\x17\xd7\xc3\xf8\x8d\xd1\x6c\x1e\xc0\xc2\x40\xbc\x03\x7a\xdb\x9b\x24\xdb\xd0\xd8\x7c\x07\x5d\x4f\x6c\xab\x2b\xcb\x1a\x42\xb6\xb5\x30\x44\xbb\x20\x70\x13\xea\x72\xba\x69\x5d\xd8\xf1\x97\x25\x52\x20\x21\xc1\xc0\xca\x6a\xab\xf8\xe1\x6c\x95\xbc\x73\x58\x64\xab\xeb\x8e\xfd\xd8\x20\x91\x57\xb1\x8a\xd2\x24\xcb\x90\xce\x58\x96\xa9\x86\xae\x46\x10\xad\xec\xae\x45\x93\xbb\x2c\x4b\x15\xdd\xca\x64\x4d\x52\x03\xb5\x9c\x34\x51\xd6\x02\xe1\x6d\xdd\x81\xac\xf5\xb6\xd6\x6f\xba\xc8\x5c\x17\x99\x4f\xc5\x8c\x34\xf0\xb2\xc7\x72\x4b\x96\x97\xa6\xe2\xa5\xdf\xb7\x57\x54\xbd\xf5\x3b\xf6\x74\x01\x37\x64\x19\x86\x4b\xb4\x44\xa7\x68\x3a\xc3\x18\x8f\x6f\xc2\xf0\xa6\x4f\x34\x1e\x90\x76\x28\x37\x20\x70\x18\xa2\x39\xb9\xc1\xa6\xa6\x3b\xb2\xae\xf7\x3c\x59\x34\x9e\xdb\x98\x61\x8e\xeb\x81\xac\x34\x10\xa6\x76\x99\x83\x07\x80\x5f\x43\xb3\x68\x21\xe4\x49\x92\x2e\x1b\x68\x96\xe2\xad\x9a\xd2\x59\x0b\xcb\x36\xc6\xe4\x31\x0a\xa2\xa0\x70\x59\x62\x5c\xc3\xe5\xca\xa2\x79\x83\x5a\xc6\xcd\xbc\xa4\x8d\x4f\xaa\x02\x49\x0d\x2e\x8d\x4a\x9a\xc8\x9e\x43\x82\xb7\xfd\x2a\xa7\x29\x09\x09\xa4\xb6\xfa\x5c\xaf\xf0\xa9\x98\x81\x02\x66\x17\xb9\x1d\x58\x9f\x90\xdc\xad\x71\xbb\x11\x72\xb3\x40\x33\xb2\x88\xcc\x82\xf5\x7b\x3f\x0b\xc3\x40\x18\x90\xd5\xa4\x20\xab\xc0\x9e\x41\x70\x71\x91\xdc\x26\x4c\x05\x78\x42\x23\x49\x73\x91\xdd\x50\x94\x45\x2e\x15\x47\x6a\x49\x79\x9b\x32\x71\x87\x49\x40\x99\x5e\x96\x18\x76\x3f\x3b\xd0\xfb\xef\x38\x6e\xd4\xdc\x55\xa3\xeb\x32\x51\x90\xa0\xc5\x5e\x85\x1e\x6c\xfb\xf5\x96\x29\xca\xed\x5e\x32\x30\xd3\x80\xd4\xa9\xbe\x00\xe1\x13\x6e\x5b\x4b\x20\xc1\x71\x82\x70\x59\xcf\xe0\x65\x3d\x83\x92\xa8\x8a\x10\x4e\xa9\xdb\xb3\x33\x0d\xeb\x1b\xc1\xe6\xbd\xa1\x46\x4e\x06\x93\xd0\x0a\x09\x13\xbe\xc9\x32\xa8\x11\x00\x6d\xa2\xc8\xba\xb6\xc8\x76\x25\x0c\x11\xad\x50\x81\xc7\x69\xd4\xe0\x02\xdb\x02\xd8\xde\x74\x55\x88\xdd\x68\xf2\x31\xdd\xc5\x26\xb6\x06\xbd\x9c\xde\xdd\xad\xa9\xa3\x4e\xef\x96\xb4\xe7\x9b\xef\xcd\x05\xcd\x7b\x5c\xa8\xde\x5a\x8a\x1b\x36\xa7\xbd\xa4\xf7\x1f\xa6\xf0\x7f\xf4\x6c\x5d\x41\x05\x2d\xcb\x86\x70\xb2\x41\x12\xea\x01\xd8\x36\x9a\xeb\x4e\xe3\x7b\xbb\xee\x5c\xc1\xfb\xba\x65\x96\xe3\x2e\xc4\xf2\xb1\x65\x00\xb8\x25\x0e\xb6\x06\x31\x11\x16\x41\x23\x3a\x55\x7a\xa5\x6c\x32\xf5\x26\x59\xd1\x19\x11\x76\x61\x00\x8d\xf4\x8a\x23\xca\xfc\xbc\x12\x69\xb5\xab\xfb\x35\xa4\x5a\x40\xb6\x0b\xb4\x09\x62\xbc\xdf\x17\x1c\x8b\x18\x7d\x1b\x54\x2b\x88\xda\xde\x69\xca\xaf\xc1\x9a\xf0\x9e\xdb\x5b\x5d\xd5\xd7\x8b\xed\xb6\xe6\xdf\x34\x62\x7f\x25\xd2\x58\x4d\x87\xb3\x72\x3c\xea\x31\xde\x53\xa6\xeb\x06\x8d\xbf\x12\x29\x51\xd3\xd1\x0c\xc3\xc3\xfa\xcb\x82\xf1\x24\xcb\xee\xec\xb7\x87\x33\xdd\xc3\x85\xa2\xd2\xbe\x7f\x37\xc3\x60\x10\x90\x92\x77\x27\x5c\x49\x46\xf3\x68\xbd\xc9\x97\x88\x36\xda\x3f\xa9\xdb\x57\x91\x23\x50\x4c\xf0\xa2\xd8\x96\x63\x6a\x66\x93\x54\xf4\x45\x8f\x42\xd1\x9e\x01\x03\x34\x73\x13\x5a\x57\x78\xa1\x2b\xdc\x69\x96\x4c\xfd\xd8\x02\x29\x84\x0a\xca\x19\xa8\x0a\xe9\xde\x9a\x4e\xba\xae\x4a\x9a\x53\x85\xfa\xc3\x46\x0f\x4f\x75\x85\x7a\xef\x54\xfd\x9c\x0a\xb3\x05\x1b\xeb\xcc\x60\x2c\x65\x17\xe3\x3e\x7f\x6b\x17\x87\xcf\xad\x74\xae\x3e\xcb\xdf\x24\x6f\x90\x8a\x32\xca\xaf\xd4\x12\x7b\x5e\xf0\x60\x04\x8c\x34\x58\x76\xbc\xd5\xec\xd7\x78\x30\xe0\x8f\x7c\xde\x31\x66\x0b\xe4\x90\xa4\x02\x8e\xeb\x5e\x38\x54\x35\xe5\x7a\x22\xf4\xb2\x25\xfd\x11\x54\xe8\xd6\x7f\x77\xfb\xda\xe7\x18\x02\x2d\x6b\x4e\xd5\x2c\x66\x56\xba\xad\xb7\xd5\xaf\xf1\x79\x03\x37\x9d\x57\xc4\xc2\x31\x1f\xae\x36\xc3\x7d\xf4\x87\xbe\x60\x2f\x6b\x90\xc5\xbb\x28\x15\x3c\x57\x72\x93\x2a\x21\xc9\x1a\xd6\xad\xf7\x0c\xd6\xd3\x64\x46\x32\xc3\x8d\x65\xc9\x9d\xde\x5e\xa4\xe6\x64\x9f\x79\x68\xea\xad\x9f\xef\x25\x77\x88\x21\x5d\x13\x10\x86\xaa\xd9\xa8\x1b\x6f\xbf\xaf\x19\x23\x4a\x08\xc9\x8a\xa2\xa3\x49\x42\x88\x46\xac\x75\xbf\x8a\x82\x46\x3c\x59\x51\x8c\x4b\x50\xd1\x2a\x91\xd7\x5d\x04\xda\xb1\x01\x79\x8b\xd1\x98\x74\xa6\x22\x05\x6b\x1c\x23\x15\x5d\x5c\x18\x78\x5d\x5c\x90\x35\x24\x66\x7f\x15\x05\x52\x1a\x30\x1d\xfd\xc2\x18\xd4\xbd\x6c\xc7\x1d\x06\xa5\x7b\x97\x18\xae\x6a\xbf\x7b\x5b\x47\x3f\x35\xef\x05\x2b\x74\xd5\x94\x5f\x1a\x2f\x53\x76\x2f\x3f\x05\x2a\x3a\x6a\xca\x5b\x44\x6f\x46\x23\x81\xd5\x25\x8c\x4c\x05\x86\xd1\xa8\x28\x15\x0b\x43\xc4\xc8\x5b\x29\x56\x2c\xa7\x96\x97\xb2\x02\xd3\x15\x4a\x7d\x01\xac\x59\x09\xdf\x58\xd7\x84\x23\x89\x27\x49\x9c\x98\x85\x8a\xba\x28\x76\x55\xd8\xe0\x6d\x65\x17\x7d\x55\x40\x13\x61\x58\x69\x20\xdd\xb5\x81\x1b\xc0\xdd\x57\x58\x48\xb8\xab\xe4\xc9\xfd\x2c\xc1\xd4\x62\xda\x5e\x55\xd9\x2c\xd0\x40\xba\xa6\x77\x79\xc7\xfa\x9c\xce\xc6\x7a\x4f\x1b\xf2\x6e\x66\x1a\x53\x8b\x16\x25\xae\xb7\xaa\xa4\x37\x54\xe6\x14\x61\xa8\xb6\x9e\xf4\xc8\x80\x56\x88\xc0\x21\x0d\x1a\xad\xc5\x1a\x19\xec\xc3\x6d\x8d\xae\x1e\xe9\xb6\x3c\x07\x59\xe1\x03\x59\x56\x1f\x3d\x02\x90\xa5\xee\xae\xc9\x9a\x93\x53\xb8\x68\xac\xad\x6d\x63\xd7\xc4\x17\x60\xd0\x63\xdc\x1c\x93\x46\x8c\x1a\x71\xae\x25\xbd\x21\x43\x8b\x44\x0d\x12\x71\xcf\x46\x7c\xb3\x6c\xa8\x79\x74\xf8\xc2\xa4\xf8\x2e\xd9\x97\x16\x89\x32\x49\x6d\x92\x69\x92\x1a\x8c\xc9\x2e\x69\xf1\xf8\xfc\x04\x43\x5f\x61\x0f\x62\x6a\x00\xa2\x11\x7c\xa0\x2c\xf7\x92\x2e\x13\x79\xa4\xd0\x10\x57\xac\xa6\xfe\x0c\x14\x87\xa1\xc3\xca\x03\x1a\xe5\x19\x4b\x29\x1a\x61\xcd\xf9\xeb\xcf\x9a\x17\x77\xd4\xba\x84\x5c\x89\x75\xdc\x58\x06\x8d\xc1\x0c\x9d\x12\x68\xa7\x73\xd3\xe1\xac\x41\xae\xda\x3c\x8b\xb2\x3c\x8b\x15\x54\x55\x93\xfb\xb0\x14\xe9\x26\xc9\x4a\xd8\x13\x55\x3b\x27\x41\xf7\xc1\x57\x34\x76\xc4\x6a\xc9\xf2\x71\x83\x83\x37\xaa\x0e\x57\x7f\xe2\xe8\xab\x17\xc8\x0c\x74\x95\x67\x69\x24\xf0\x3f\x65\x5c\xfa\x7d\x5e\x7a\x48\x8b\xdd\x41\xbb\x65\x7a\x30\x1a\x8b\xc7\x64\x38\x3e\x38\x10\x76\xc1\xb2\x3d\xe8\x88\x19\x24\x84\xed\x42\xc8\x90\x6a\x8d\x37\x22\x4b\xbc\x71\xcd\x6e\x53\x3e\xb7\xfa\x0c\xff\xed\x11\xa9\x56\xa1\x57\x40\xb8\xc9\x65\x10\x78\xfe\x25\xc0\xb0\x69\x24\xd7\xcc\x8b\xad\x2b\x0d\xc3\x4d\x7b\x41\x3f\x62\x15\xef\x53\x37\x5e\xa7\x41\x7f\x68\x0a\x36\xf3\xd7\x95\x36\x4b\x34\x52\x4b\xaf\xc5\x48\xff\xe5\xb6\x4c\x51\x5d\xa8\xbf\xd9\xd7\xfd\x28\x79\xd7\xcb\x55\xa2\xe8\x8a\x72\xd5\xbb\x65\x6a\x29\x36\xaa\x67\x8a\xf7\x84\xec\xb9\x1e\x04\xff\x89\x0e\x97\x65\x09\x56\xed\x11\x37\x15\x58\x16\x1b\x59\x0c\x74\xef\xcc\x73\x3b\xf3\x95\x7a\x6d\x77\xe6\xb9\xe1\xa4\xc4\xfe\x2c\x56\x9b\x53\xb4\x27\x2a\x0c\xeb\xce\x8b\x66\x37\xdd\xd2\x12\xe3\x4b\x49\x93\xeb\xb2\xd4\xd4\x26\x30\xcf\x66\x93\x15\x45\xe0\xb5\x27\xe6\x1d\x87\x61\xbd\x76\x68\x18\xd2\x47\xa4\x39\x6a\x43\xaa\x34\x26\xf2\x74\x8a\x4d\x9a\xeb\x33\xde\x56\x3c\x93\xdb\x44\xca\x6d\x1f\x0a\x6c\x82\xee\xc3\x5e\x96\xbb\x6a\x34\xa3\x39\x7d\xf3\xc5\xab\x66\x50\x82\x4b\xf0\x2f\x3b\xe0\xfe\x36\xac\xd1\x18\xb3\xc9\xb2\x3b\x70\x93\x38\xa9\xbb\x63\xca\xc6\x0d\x6d\x97\xcb\x81\x2a\xec\x43\x2a\xcc\xab\x2c\xe7\xdd\x1c\x9d\x97\x19\xeb\x0a\xed\xe6\x8c\x1b\x1a\x2f\xe5\x74\x50\xd4\x21\x53\x9b\x8f\x62\xc8\x4b\x58\x30\xce\xf2\x65\x0b\x9b\x55\xa8\xfb\xfe\x65\x45\xed\xb2\xaa\xa5\xe4\x9d\x65\x45\xcd\xb2\x92\x4d\xf9\x44\xcf\x79\x13\xaf\x56\x10\x97\x8d\x79\x05\x59\x09\x30\x18\x4e\x90\xd4\x5d\x2c\xc1\x6c\xa2\xff\xae\x2e\xda\x35\x68\xba\xe7\xc8\xb9\xbc\x97\x54\xf0\x86\x5a\xc5\x4b\xaa\xba\x97\x9e\xa4\x8b\xb2\xdc\xc3\x0b\x2c\xd3\x74\x35\x73\x98\x20\x51\x8a\xae\xd6\x2a\xc0\x25\x78\x82\x6b\xb4\x8c\xf1\xae\x6a\xba\x09\xaa\x8a\x34\x6f\xbd\xb0\x19\x6b\xa1\x08\x6a\x79\x38\xa6\xe0\xe4\xdf\x58\x96\x50\xa9\x73\x1b\x2b\xc5\x4f\x7d\x93\x7a\x68\xd8\xaa\x12\xa9\xea\xe4\x61\x6c\x55\x8b\x57\x9e\x8f\x3a\xdb\x70\xc5\x56\x94\xd0\x5a\x93\x58\xf1\x81\x81\x34\x1a\xb4\xdd\xbc\x3d\xd2\x93\x01\xd6\x22\x66\x89\x31\xf0\x4e\x05\x9a\x96\x06\x5e\x27\x6a\x49\x88\xfe\x1b\x86\xca\x9c\x38\xa0\x3d\x65\x54\x7d\x54\x13\x86\xf5\x33\x2e\x8a\x8e\xbc\xf6\xc0\x26\x0c\xed\x6f\x77\x9e\x9c\x66\x8b\x30\xd4\x7f\xbb\xbf\xeb\x8e\xe1\xa2\x68\x0c\xb1\x9e\x84\x00\x23\xdc\x10\x0d\x8d\x90\x5b\xe9\x61\xfb\x7d\xcd\xda\xee\x68\x5b\xb5\x34\x06\x09\xe9\xb3\xd6\x81\x95\xab\xf2\x6f\x7d\x2f\x36\xd8\xd3\x23\x7f\x40\x83\xb6\x25\x8c\x60\x7b\xd5\xe4\xf2\xea\x42\x65\x89\xa7\xa3\x99\x06\x6c\x4a\xb6\xa5\x66\x13\x4d\xa1\x97\xf9\x09\xdf\xac\xa8\x4c\x2e\x33\x0a\x9b\x86\xa2\xb5\x71\xf2\xf3\x94\xe6\xa9\x64\x6b\x25\x24\xe4\x64\xbb\x88\x37\x61\xd8\x4f\x2d\x86\xdf\x8e\xe2\x87\x25\x8c\xf0\x64\x9f\x57\xde\x58\xde\x4c\xe1\xa6\xc4\x46\x23\x5a\x35\x57\xc6\x69\x09\x0b\xd2\x46\x94\x4e\xd0\xa9\x73\xc5\x7d\x34\x0a\x15\x86\x54\xf0\x05\xbb\xda\xf8\xb4\x87\x3a\xed\x56\x32\xe5\xde\xff\xaa\xdf\xad\xbc\x40\xcb\x12\x32\x3d\x46\xcf\xf6\x43\x97\x2c\xd5\xcb\xbc\xe4\xef\x18\xc6\xff\x0d\x07\x23\xbd\xb5\x48\x10\x44\xf9\x3a\x63\x0a\x96\xa4\x0b\xfe\x7d\x0b\x23\x14\x7c\x09\x70\x27\x18\xd1\x50\x8b\x2a\x93\xfd\x26\x03\xdb\x9d\x80\x90\x35\x52\x78\x32\xf7\x7a\x80\x20\xc0\xb1\xab\x54\xe1\xd2\x3d\xc2\x0d\xd9\x61\x13\x35\x49\xd3\xa8\xc6\xa2\x89\x86\x1a\xe9\x38\xe1\xff\xa1\xd9\x85\x2c\x73\xfa\xb7\x9e\xe0\xbd\x60\xa0\x6a\x69\xac\x84\xbb\x2e\x10\x2c\xd1\x0d\x52\x46\xaa\xea\xf8\xba\xbf\xc4\x27\xba\x07\x7d\x42\x54\xdc\x25\xa7\x97\x70\x45\xf6\x88\x5e\x7f\xa5\x1b\xa8\xb4\x27\x06\x9d\x82\xc1\x8c\x34\x0c\xf7\x6b\x41\x52\x13\x1c\x37\x6d\x9a\xa9\x5f\x99\x73\x16\x37\x51\x55\x45\xbc\x5b\x59\x63\x4a\x9b\x35\x70\xba\xf8\x93\xc2\xfd\xff\x5a\xf3\xf7\x4d\x81\xe0\x37\x54\x2a\xa7\xbd\xeb\x29\xd1\x5b\x4b\xb6\x62\x8a\xdd\xd0\x9e\xe9\x97\xc6\xdd\x97\x7a\x69\xee\x1c\xad\xde\x76\xee\x82\xde\xa5\x5f\x21\x14\x97\x70\x42\x44\x34\x17\xe9\x46\xf3\x88\x70\x41\x56\xe8\x04\x87\xe1\x0a\x9d\x38\xe5\xc1\x49\x66\xb8\x47\x0c\xa7\x5d\x33\x7d\x31\xd9\xc9\x87\x14\x36\x47\xc7\xe7\xa4\x9f\x68\xe1\xe9\x5f\x42\x34\xa7\x28\x98\xb3\x9b\x00\x43\x90\x04\x5f\x43\x38\x51\xa2\xf1\xcd\xa7\x3f\xc5\x2a\x9f\x35\x56\x49\x26\x9f\xf6\x99\x26\x45\xee\x34\xb5\xa2\xe4\x0a\x51\xcd\x46\xc3\x39\xae\x51\x67\xef\x93\x05\x4d\x85\x3c\x4b\xb6\x40\xb7\x26\xcd\x4f\xd5\x02\xf5\xf3\x68\x51\x83\x11\xd4\x94\xce\x70\x59\xc2\xf1\xee\xee\xb2\x2b\x75\x77\x62\xed\x52\x40\x0a\x0f\x82\x0e\xed\x6c\x63\x7f\xbd\xeb\x06\x15\xbc\xb5\x43\x7b\xb7\x47\xa4\xd9\x02\x1d\xb7\x87\x76\xac\x79\x96\xd6\xf8\xde\xb9\xcc\xed\x11\x06\x57\x54\x05\x8c\xf7\x64\x51\x04\xb9\x7b\xdc\x47\x0a\x47\x69\x4a\xf3\x5c\x48\xdb\xe9\x7c\xb3\xd6\x64\x9a\xce\xab\x4e\x07\x76\x41\xea\xc2\x9a\xbe\x6b\x21\xd9\xa9\x1c\x30\xa8\xb2\x84\x23\x92\x4c\xee\x61\x2c\xde\x46\x0b\x93\xb2\x40\x23\x90\x18\x97\xf7\x32\x20\xa6\x52\x50\x25\xbc\xda\x59\xdf\x7a\x8c\x47\x48\x40\x63\xfa\x24\xde\x8a\xa9\x9a\x11\xea\x19\x22\x5a\xc2\x1b\x22\xa6\xc1\xc5\x45\x2a\x24\x3d\xf8\x94\x5f\xe4\xcb\x44\xd2\xf9\xc5\x45\x30\x2b\x8a\x57\xa8\xeb\x03\x6c\x4b\x0c\xd7\xc4\x53\xe1\x6a\x2f\x8f\xeb\xbd\x5e\x59\x5a\xbc\x89\x18\xcf\xd7\x34\x55\xe7\x62\x23\x53\xcd\xdf\xee\xa4\x74\xed\xa3\x6b\x8f\x0c\x4a\x2b\x5c\x9c\xc1\x6b\x78\x00\x4f\xc9\x4e\x51\x78\x49\x44\xf4\x0b\x4d\xae\x5f\x27\x6b\x78\xd6\xa5\xd6\x7c\x19\x86\x87\x3c\x31\x98\x21\x15\x73\x7a\x18\x29\x9a\x2b\xf4\x14\xbd\xc4\x18\xde\xef\x5a\x6d\xd4\x6c\x56\x37\x9e\x78\x33\x55\xb3\xa2\x40\xfa\xc7\x31\x68\x7d\x42\xe8\x84\xc6\xdb\x12\x97\x18\x05\x37\x54\xe6\x4c\xf0\x3c\x80\xe9\x0c\x5b\x85\xd5\xd6\xa5\xc5\xc1\x77\xd1\x0f\xd1\xf7\x01\xac\xc4\x9c\xc6\x81\x65\x95\x02\x48\xc5\xfa\x4e\xb2\xab\xa5\x8a\x83\xff\xf7\xff\xe9\x3d\x1c\x3e\x1c\xf6\x9e\x52\xce\xf2\xde\xdb\x4d\xbe\xbc\x4e\x24\xbd\xe9\xa1\x2f\x99\x60\x52\xa4\xd7\x91\xdc\xe0\x40\x37\x84\xe1\x09\x19\xc2\x73\xc3\x99\x45\x32\xe1\x73\xb1\x42\x18\xbe\x74\xd1\x16\x6b\x2f\x82\x82\x81\xdb\x60\x95\xa2\x51\x4d\x82\x20\xd6\xdb\x0d\x5f\x04\x03\x34\x18\x3c\x19\x3c\xc7\xd5\x34\xa2\xef\x7e\xc0\x25\xfc\x41\xde\xa3\xe0\x9a\xde\xe5\x01\x86\x0f\x5d\x93\xf4\x87\x05\x87\xfe\x21\x5f\x2c\x81\x7b\x41\xb6\x25\xfc\x5a\x4f\x8a\xa6\x01\xcf\x2c\xa7\xf2\x93\xd1\x63\xfe\x0a\x3f\x93\x9f\x34\x86\x82\x1f\xc9\x4f\x1a\x3d\xc3\x2f\xe4\xa7\x28\xa7\x6a\x7c\xd6\x0d\xf3\x5f\xec\x4a\xf8\xc9\xac\x61\xa0\x25\xbc\xee\xea\xca\xcf\x55\x2e\x5c\x14\x1a\xdf\x3e\xe8\xca\xf5\x63\x9d\xab\xb4\x8a\x02\xdd\xb1\xdf\xc8\x07\x14\x18\xb5\x40\x80\xc7\x2f\xa6\xbf\xcd\x48\x7f\x08\xf7\xf4\xe6\x08\x29\xf8\xed\x6b\x1d\xd1\x68\xf1\x37\x3c\x51\xd3\xdf\x66\xf1\xbd\xfd\xb0\x99\x4a\x73\x66\xf7\x3b\x28\x45\xb6\x39\x55\xf1\x19\x68\x0c\xff\x1a\x96\x49\x1e\x3f\x00\xca\x17\x42\xa6\x34\xee\x28\xfe\x40\x73\x35\xaf\x35\x65\x39\x43\x4a\x6f\xc5\x52\x97\x54\x54\x3e\x13\xb2\x2b\x7f\xf3\xc4\xdc\x70\x06\x63\x8b\x87\x29\x2e\x0a\x24\xc9\x6b\x44\x31\x36\x52\x53\xbf\x93\xed\x79\xc9\xb5\xac\x95\x28\x76\x99\xd1\x9e\xa4\x29\x65\x37\x54\x82\x66\x7c\x06\x41\x4f\xd2\x3f\x36\x4c\x36\xf0\x5d\x4f\x96\x65\x09\x54\x75\x5b\x44\x29\x43\x9d\x40\xea\x07\x37\x42\xe0\xc4\xad\x3a\xc7\x0f\x58\xae\x10\x79\x2e\x0e\x8f\xef\xd9\x96\xc0\xa0\xb2\xa4\xe9\x1b\xea\xda\x4f\xa2\x0d\xcf\x93\x85\xe6\xb0\xab\x94\x9a\xc5\x85\xbc\x4e\xe5\xe2\x5d\x22\xaf\xa8\x7a\x4e\xd5\xb8\x03\x6d\x18\xcd\x48\x6e\x3b\x50\x61\x32\x5a\x14\xb7\x88\x41\xc0\x93\x15\x0d\x70\x51\x1c\x55\x2f\x7a\x45\x48\xc4\x70\x94\x5b\x8c\xc6\xa3\x4f\x82\xf1\xaa\x86\xaa\x5a\x8d\x2b\x02\x73\x36\xd1\x27\x44\x4c\x50\x3a\xe9\xe7\x61\xa8\xf1\x77\x18\xa2\x0d\xe9\x0f\x71\xec\x0e\xf0\x74\x1a\x6c\x26\x06\xb5\xb3\xf8\xc8\x8e\x17\xe3\xb8\x4a\x7a\x85\x74\x42\x89\x51\x85\x84\x6b\xa3\xb2\xc0\x6f\xe4\x00\xf6\xd9\x8d\x2e\x9e\xd2\x88\x6f\xd4\x08\x12\x7e\x0c\x45\xf1\xd4\xbe\x97\xd8\xa0\x1c\xa9\x88\x00\xae\xba\x90\x4c\x47\x85\x13\xe5\x4e\xbd\x4a\x10\xaa\x7b\x2b\x25\xf2\xca\xf0\x58\x5e\x1f\xf0\xe8\xe1\x84\x2b\x24\xd5\x54\xcd\xb4\xe8\xa7\x90\x26\x53\x38\x36\x09\x61\x68\x7e\xa6\x74\x56\x14\xc2\xbc\x0b\xfb\x5a\x02\x53\x16\x0f\xa6\x94\x65\x90\xb8\x97\x45\x26\x84\x84\xb4\xab\xb7\x3d\x77\xaa\x48\x06\x0a\x4f\x86\x31\x52\x8f\x87\x93\x44\xc5\x4c\x61\x4d\x6d\x60\xe3\x6a\x58\x31\x0e\x79\x67\x79\x5d\x60\xa3\x90\x11\x22\xe0\xef\xc3\xe1\xdf\x46\x7f\xff\xfb\xc3\xef\xff\xfa\xb7\xbf\x0e\xff\xfe\xf7\x11\x8e\x87\x25\x2c\x7c\x1d\xc9\x67\xc8\x1a\xf5\xad\x3b\xeb\x6b\x9f\x07\x39\xc5\x05\x30\x72\x87\x8c\xb5\x5c\xae\x10\xf3\x27\xa0\x90\xee\x80\xd2\xaa\x4d\x4c\x57\xaa\xed\xf7\x68\x38\x59\x28\x24\x07\x14\x86\x38\xce\x14\x92\x9a\xf6\x1b\x33\x15\xa3\xd6\x0c\x43\xd9\x27\xd2\x1d\x93\x24\x8f\x53\x73\x54\x8a\x04\x61\xd3\x74\x30\x98\xe1\x3e\x11\xb8\x92\x8d\x8d\x1a\xb6\xca\x98\x0e\x06\x26\xaf\x2a\x8a\xb4\xc7\x78\x8f\xe1\x30\x64\xd3\x74\x66\x0c\x2c\x3c\x70\x8a\x22\x2d\x8a\xa1\x17\x45\x55\x18\x1e\x8c\xca\x12\xe6\x8a\x6c\x19\x4f\xb3\xcd\x9c\xe6\xf1\xda\x1c\x1e\x03\xe3\x73\xfa\xf9\x74\x61\x5e\x47\xb8\x8c\xdc\x3b\x2c\x77\xd7\x8b\x13\x66\x2c\x87\x2a\xc8\x10\x98\x3f\x1f\x32\x67\x43\x1c\xf7\x6f\xd1\x0b\x90\x38\x0c\x6f\x11\x37\xbf\xac\x3a\x2c\x6a\x1d\x06\x3d\x16\x63\x6c\xb2\x10\x3a\x15\x7a\xb0\x61\x88\xfe\xff\x73\x85\x18\x48\x5c\x14\x55\xa1\xda\x28\xb1\x84\x1b\x45\xa6\x41\xe3\x7c\x27\x80\xa0\x2d\x52\x04\x10\xb0\xbc\x71\x5a\x19\x40\xd0\x25\xab\x06\x7a\x4f\xbe\x12\x69\x92\x51\xbf\x33\x1b\x9b\x34\x70\xc2\x54\x30\x83\x3b\x45\x6e\xcc\x39\x6c\x9a\x28\x14\xd8\x7e\xdb\x3a\x6d\x0b\x01\x86\x95\xd2\xbc\x6e\x27\xaf\xff\x26\x59\xd1\xbc\x28\xba\x44\x50\x85\x14\xdc\x69\xba\x07\x57\xf7\x97\xb7\xec\x42\x5e\xc2\xa5\x22\x42\xa1\xe0\x8c\x2e\x32\xcd\x81\x43\x20\x6e\xf9\x4f\x86\x15\x68\xd7\x6e\xb1\xfa\x4a\x45\x96\xcb\xc6\x20\xc9\x95\x8a\x16\xd5\x62\x9c\x50\x3f\x16\xa9\x3f\xc7\xb4\x84\xdb\xdd\xf9\xad\x4e\xfa\xc8\xa5\xd2\x6b\x9e\x93\xb7\xd1\x02\x04\xf9\x1c\x2d\x80\x91\xe1\x98\x3d\x92\xfe\x34\x8f\x0d\x06\x95\x49\xe5\x94\xcd\xc6\x9a\x90\x26\x46\x51\xa4\x20\x01\x81\x28\x24\x58\x0f\xf1\x44\x91\xc3\x7f\x2b\x3e\xd6\x28\xf1\x63\x74\x08\x17\x9d\x0b\x8b\x9c\xab\xe9\xa9\xde\x40\xb3\xaa\xd3\x84\x7c\x56\x45\x21\xfb\xe4\x93\xd2\x64\x60\x1f\xbd\xd1\x09\x43\x14\xc7\xfd\xbe\x96\x17\x4f\x15\xb9\x50\x91\xd5\xe4\xb2\x2f\x9d\xdc\x6c\x25\xdd\x44\x92\xae\xb3\x24\xa5\xe8\x44\x41\x10\x05\x9a\xe3\x7a\x25\x6e\xa9\x3c\x4e\x72\x8a\x70\x09\xe7\xa6\xae\x79\xa2\x12\xcd\x47\x7d\x32\x6f\x6f\x8e\xde\xbd\xfc\x70\x42\x82\x37\x01\x7c\x36\x09\x6f\x4f\x5f\xfd\xf6\xec\xe5\xab\x57\x24\x78\x1b\xc0\xb1\x4e\x82\x77\xca\x40\xeb\xed\x3d\x5b\xc7\x5a\xa4\xc1\x46\x4b\xdd\x86\xea\x41\x4e\x54\x64\x79\x50\x58\x10\x15\x69\xee\xc7\xa8\x5a\x49\x3e\x11\xf1\x62\x22\xa6\x1b\xc3\xfb\x6f\x34\x77\x11\x23\xfb\xba\x2d\x71\xe3\x20\x5c\xcf\x9a\x39\x49\xb5\x02\x64\x42\xe8\x94\xcf\x80\x11\xd5\x24\xad\x13\x94\x92\x77\xca\x1c\xa8\xe1\x30\x4c\xdd\x41\xb3\xd4\x39\xfb\xc7\x0a\xe5\x13\x1e\x6f\x06\x68\x31\x09\xa2\x20\x0e\xfe\x2d\xc0\x03\x6e\x8d\x4e\x52\x3a\xc7\x61\x58\xb1\xd8\xd6\xb4\xd7\x01\x3f\xa9\x89\x74\x6d\xec\x79\xab\x50\xa2\xc9\x21\x52\x51\xbe\x4c\x56\x45\xc1\x34\x16\xd0\x8f\x38\x0c\x8f\x50\x02\x81\x7e\x0e\x8c\xfc\x47\x4d\x87\x20\x31\x5c\x20\x1c\x29\xd2\xef\x7f\x6d\x33\xdc\x23\xb5\xf7\x3d\xd3\x62\x39\x6c\x4b\x24\x5f\x29\x72\xa4\xc2\xb0\x6f\x13\x4d\xfb\x61\x18\xe4\xe6\x6d\xd7\x96\xbb\xb6\xd2\x7a\xa3\xc8\x91\x94\xc9\x5d\xc4\x72\xf3\xdb\xb5\x81\x03\xf3\xc5\xa9\xb4\x4a\xb8\xee\x24\x25\x4e\xb9\xe5\x94\x4d\x67\xca\xcb\xca\x9a\x89\xbf\x1f\x2b\xdc\xe8\x0a\x5f\x2b\x92\x4c\xba\x44\x6b\x46\xf3\x1d\x75\x81\xde\xe8\xf5\xf1\x3c\x70\x72\x66\xb6\xad\x20\xdc\x6d\x53\xb3\x6b\xc5\x63\x36\xc6\x56\x82\x95\x84\x4f\xd9\x60\x30\x03\x3a\x95\xb3\xa6\x30\xff\xc0\x62\x19\xaf\x6d\x09\xa0\x7a\x74\xda\x93\x00\xc3\x53\xa5\xd9\xf3\x97\x27\x17\x6f\xcf\x4e\xdf\x9d\x06\x18\x5e\xaa\xa6\x79\x41\x09\xcf\x3a\x79\x92\x47\x56\xe9\xf1\xd8\x70\xa9\x8f\x3e\x1e\xfa\xd7\x12\xde\xb7\xca\x6b\x09\xf9\x77\xe2\x9b\x8d\xe6\x62\x95\x30\x1e\x86\x5a\x54\x39\x4a\xb5\xd8\xf8\xab\x57\x43\x2e\xd5\x2a\x5b\xb0\x8c\x06\x4d\x35\x81\x39\xc9\x06\x3a\x7e\xaf\xc8\xef\x2d\x4d\xa4\x8a\x6e\x25\x53\x14\x3d\x53\xc8\x32\x7c\x51\x9a\x09\xbd\xc9\xfd\x99\x73\xb4\x4e\x24\xe5\xea\x17\xa3\x0b\x8f\x6c\x23\x15\x68\xec\x01\x3f\x2d\xd1\xef\x38\x46\x88\x92\x53\x14\xb0\x85\x34\x6c\x27\x8e\x72\x75\x97\x55\x26\x37\x24\xe0\x82\xd3\x00\x1e\xa8\x28\x59\xaf\x29\x9f\x1f\x2f\x59\x36\xd7\xf3\x41\xa3\x5c\xa6\x9e\xb5\x0e\x3e\x25\x37\x89\x85\x41\x1c\x60\x40\x8a\x18\xc4\xac\xea\x1e\x78\x10\xe0\x48\xac\x29\x47\xba\xc7\xf5\x08\x2a\xf8\x3c\x73\x4b\xaa\x35\x24\x50\xd1\xb3\xc6\x8a\xd0\x04\xcc\xe1\x6b\x79\x70\x30\xc6\x8e\xa3\x7d\xdf\xb0\xc7\x99\xde\xa8\xa9\x9c\x55\x18\xf7\xbd\x42\xb8\x1c\xbf\x98\x3e\x55\x33\x6f\x1e\xf0\x44\xb5\x6d\x76\x9a\xcb\xb7\xc2\x6c\xbe\xbc\xd7\x97\x4e\xd0\xcb\xa6\xd1\x8f\xd1\xfb\x48\x23\x76\xbe\x54\xd0\xfa\x64\xe0\x2b\x4d\x83\x0a\xc7\x92\xe8\x1e\x40\x25\x1c\xd3\x89\x8c\x5f\x3b\xce\x09\x9e\x2b\x43\xdf\xe0\x8b\x6a\xe9\xba\xff\x50\xe4\x4f\x0e\x38\xc2\xf0\x7e\x1a\x3d\xb9\xff\x13\x72\xc7\x23\xf1\x74\x06\x1f\x0c\xa9\xee\x12\xbd\x55\x18\x56\x36\x35\x76\x06\x67\x01\x21\x5f\x94\xd7\x9b\x4c\xba\x4f\x41\x7a\xcf\x8d\xee\x7b\xe7\x18\xa4\xf7\x87\x72\xca\x79\x5c\x96\x5a\xae\x7c\xae\xd0\x9d\x41\x22\x25\xbc\x50\xe4\x3d\x0a\x6e\xaf\xf3\x00\xc3\xaf\x8a\x88\xc8\x62\x2f\xf8\x49\x91\x57\x6a\xf2\xab\x8a\x7f\x55\x61\xf8\xab\x8a\xdc\x69\xfa\xb9\x11\x44\x8b\xe2\x0b\xfc\xdc\x89\xa2\x6e\xd1\x0b\x65\x84\x74\xa4\x11\xe5\x2d\xfa\x55\xbf\x4d\x5e\x68\xee\x9e\xfc\xaa\xff\xc6\xf6\xf9\x27\x2d\x00\x5a\x3c\x19\x0c\x34\x63\x61\x92\x4b\xf8\xd1\x40\xe4\x67\x55\xc2\x2f\xca\xf0\x09\xbf\xd9\x9f\xdf\x15\xf9\x59\xa1\xa0\xe9\xc1\x82\x41\xed\xbb\x93\x68\xec\x7c\x8b\x14\x91\x13\x15\x37\xfd\x70\x7e\x57\x38\x0c\x7f\xd3\xe8\xf0\x77\x05\xdb\xf6\x21\xc8\xb0\x3a\xf0\xc0\x25\x50\xba\xab\xd1\xec\xd0\x79\xed\x4b\xd1\x5d\x0a\xce\x8a\xf5\x6f\x69\x38\xe5\x7e\xa7\xd9\x02\x51\xaa\x17\x73\xbd\x42\x6b\x5d\x7f\x7e\xcb\x9c\x5e\x2f\x4d\x72\xda\x1b\xc6\xbb\x72\x45\xc3\xde\xcb\xfa\x1d\xe0\x72\x6c\xb2\x8e\xf6\xb2\xca\xbd\xbc\x20\x7d\xee\x87\xfb\xb9\x1b\x76\x32\x75\x7e\xe0\xbe\xc4\x77\x5d\x25\x40\x74\x96\x01\x81\x2b\xc3\xc8\xae\x9e\x27\xeb\x75\x76\xa7\xf9\x3b\x2f\x35\xea\xb5\xc9\xa9\x99\xf4\x7c\x4d\x53\x46\xf5\x02\x15\xb4\x8b\x01\xf2\xc0\x7d\xa3\xd7\x7e\x8b\xa3\xeb\x37\x0f\x24\x1a\x6c\x3e\x36\xec\x9f\xa5\xca\x61\xd8\x7f\xa3\x90\x6c\xb0\x3e\x93\x15\xd2\x52\x86\x3d\x27\x22\x48\x12\x39\xe5\xd4\x48\x13\xd2\x9f\xdb\xc6\xd5\x13\x70\x7a\xdb\xb0\x44\x9f\x98\x3a\x63\x89\x91\x45\x34\xc3\x58\xe3\x18\x46\xc9\x74\x66\xe4\x0f\x48\xba\xdc\xc6\x46\x84\x68\x32\xfa\x50\xff\x70\xf2\x9d\xfe\x11\xe4\xaf\xfa\x87\x91\x1f\xf4\x4f\x42\xbe\x37\x06\x1c\x6c\xcf\x31\x2a\x85\x0d\xe4\xb0\xa8\xd9\xec\x0c\xd6\x30\x27\xd7\x0a\xa5\x18\x6e\xc8\x12\xcd\x31\xdc\x11\x49\x91\xce\xf6\x1d\x86\x95\x96\x38\x6f\x2a\x89\xf3\x8a\x0c\xe1\x92\x2c\x8a\x42\x50\xb8\x25\x74\x72\x89\x52\x58\xe1\x58\x9a\x87\x21\x76\x52\xfe\x78\xf5\xf8\x6a\x7c\xe5\xe4\xc3\xa4\x28\xae\x34\x63\x78\xa3\x21\xb2\x26\x77\x28\x23\x37\xd3\xab\x19\x5c\xc1\x1c\x83\xc2\xd8\x98\x05\xdf\x4e\xaf\x66\x64\x5d\xb9\x2b\xad\xb1\x5b\xc6\xca\x2d\x63\xbf\x76\xfa\x43\xbb\x96\xbe\xf7\x6b\x29\xb3\xef\x3f\xf8\xf7\x2b\xbf\x3a\x99\x33\x31\xbe\x85\xac\x36\x20\xaa\x84\xd9\x51\x25\xd4\x4d\x0e\x46\x31\x2f\x0a\x31\x11\xf1\x6d\x59\x42\x4a\xc9\xd6\x99\xc5\xc5\x09\x45\x43\x0c\xab\x64\xad\x9f\x46\x18\x16\x2c\x53\x54\xea\x97\x87\x18\x72\xb1\xa2\xfa\xf1\x3b\x0c\xf4\x86\xca\x3b\xfd\xfc\x57\x9d\x87\xcf\xf5\xe3\xf7\xf6\xf1\xa5\x96\x62\xf5\xfb\x0f\xb8\x84\x0d\x25\x29\xf5\x46\x77\x90\x53\xcd\xc9\x2c\xd9\x7c\x4e\x79\x80\x61\x41\x1d\xc6\x7a\xeb\xcf\xae\x02\x0c\x99\x51\x91\xe5\x54\xc1\xda\x2b\xcb\xac\x5e\xcf\x63\xc3\x00\xc3\xbc\xc3\x8d\x70\x49\x6b\xcc\x7c\x43\x0d\x57\xf5\xe3\xf9\xe9\x9b\x00\x9c\x0a\x8a\x2d\xee\x02\x0c\x77\xd4\x88\x09\x2b\x6a\x50\xe6\x15\x25\x1f\x34\x61\xbb\xa4\x24\x8f\x16\x70\x4b\x35\xa2\xb7\xbc\xaa\xde\x4b\x27\xe6\x5d\xac\x0f\xea\xa4\x0b\x9b\xc5\xd4\x78\xa0\x84\xfb\x72\x20\xe9\x15\xcb\x95\xd4\x2d\x9c\x36\x2a\x31\x39\x6c\xde\x46\x8e\x73\x5a\xd3\x93\x4f\xba\xd7\x3f\xbb\x73\xd8\xcf\x94\xf4\x3f\xd1\xa2\xe8\x7f\x6a\x38\x17\xee\xbc\x46\x1a\xc4\x86\xc3\x81\x63\x4a\x92\x30\xbc\xef\x3c\xed\x89\x42\x2b\x8a\xb6\xe5\xd7\x4e\xce\x56\x56\xe1\x65\xb3\x58\x0c\xff\x37\x73\x96\x56\x62\x7b\xa2\xb6\x77\x2e\x63\x6d\x4f\xee\x28\x9a\x53\xa0\x78\xcc\xc3\xd0\xf1\x36\x73\x3a\xa5\x33\x58\x51\x97\x11\x78\x18\xaa\x3e\x21\x73\x1a\x86\x2b\x9b\x5b\x63\xc5\x78\x45\xe1\x5d\x27\x86\x22\xb7\x54\x13\xbd\x27\x0a\x2d\x1b\xa3\xad\xa8\x42\x46\x91\x04\xe7\x19\xe6\x96\x01\xa8\xe4\x2a\x56\x30\x77\x87\x7b\x4c\x70\x4d\x9e\x20\x29\x0a\x24\xa3\x46\x2a\xa1\x18\x64\x09\x6f\xa9\xa6\xd6\x1d\x7c\xf2\xae\x6c\xa2\xca\x2e\x76\xa3\x3a\x35\x6f\xf8\x7a\x2e\x69\x09\x47\x1d\x04\x96\xd8\x71\x1f\x51\x74\x42\x2d\x34\x8c\xc0\x60\x61\xe7\xce\xe0\xfc\xc0\xcc\x51\xdc\x2d\xba\xd5\xe0\x99\x20\xd9\xd0\xd5\x4e\xcc\x01\x63\x4e\x71\x18\xaa\x69\x4e\x67\x53\x3e\x33\xc7\x67\xf6\x91\xf4\x47\x9a\xb3\x7b\xa2\x79\xb4\xa6\x0d\xc3\x02\x0d\xa1\x3f\x32\x4e\x4b\xbe\x7c\x51\x98\x69\xc9\xed\x31\xda\x56\x4b\x69\x75\x2d\x43\x0c\xc7\xfa\x2b\x07\x89\x71\xbc\xf2\x8f\x25\xbc\xda\x9d\xa6\x6a\x0c\xd2\x2a\xe6\x8c\xd4\x23\xb1\xd7\x6e\xbc\xa6\x4d\xc5\xd1\x86\x22\x0e\x2d\x47\xb5\x44\x53\x11\x87\xa0\x34\x5b\x59\x14\x47\x6e\xb1\x98\x73\x52\x6c\x0c\xd2\xdf\x74\xa1\xfe\x2b\xa4\x8c\xd4\x2a\xc9\x25\x6d\x99\xe2\x7a\x1d\x9b\x79\x77\x40\x37\xa0\x34\x56\xba\xb7\x06\xfa\xc6\x36\xb7\x8f\x64\x51\x68\xa6\xc7\x96\x33\xcf\x26\x5b\x51\xb8\x44\x0b\xe6\x25\xcb\x0d\x60\xe8\x4c\x93\x3f\x2d\x64\x76\xaf\x55\xa3\x87\xab\xa7\x92\x2d\x90\x34\x6b\xdd\x57\xcc\x4d\xc5\x27\xfa\xc1\x9b\x61\xdd\x51\xc3\x2c\xf8\x2e\x8b\x76\x56\x69\x3b\x20\xdd\xb4\x14\x05\x12\x8d\x95\x60\x66\x49\x94\x25\x9c\x75\x82\x87\x5a\x4e\x15\x24\x99\xce\x1a\xf0\xa7\x6d\x2f\x34\xd3\x9a\x32\xad\xbd\x30\xbf\xd2\x6a\xfb\x94\xd5\x6d\x97\xf0\xba\xab\x72\xbb\x96\x41\xea\x56\xe8\xe4\x84\xc6\xb6\x29\xde\x6e\x4a\xb6\x9b\xea\x57\x6d\x51\x33\x0f\x73\xfb\xc2\x6d\x83\x66\xa3\x9b\x46\x79\x39\x46\x47\xaa\x28\x10\x55\x08\x2d\x69\x53\x28\x75\xe6\xa7\xbd\xd6\x6e\xdb\x3f\x98\xb1\xa8\xa0\x66\x27\x9b\x7a\x4a\xec\x8c\xac\x77\xb5\xec\x0d\xad\x4a\xf5\x69\x3a\x9c\x4d\x1c\x7f\xda\x4c\xf3\xc4\x1d\xa8\x39\xdd\x03\xd9\xb6\xac\xaa\x57\x9d\xb3\xdc\x38\xd1\x03\x85\xe6\x92\xb2\xcf\x7a\x5a\xcd\xa2\x44\x8d\x25\x66\x76\xf0\xb1\xc3\xc0\x76\x6f\x6a\x79\xa3\xb2\x18\x0d\xc3\xcf\x34\x0c\x8f\x1d\xf2\xdc\x63\xc8\x73\xaa\x62\x59\x62\x78\xe7\xdc\x3b\xf1\xb7\x9e\x7e\xf4\xd6\xfe\x98\x43\x25\x57\x7a\x1a\xa8\xc6\xb9\x10\xb4\xc4\x97\xa0\xd3\x85\xf1\x1d\x45\x06\x0e\x76\xcd\xe4\xd1\x82\xbc\xa1\xf0\x36\x5a\x90\x23\x0a\x9f\xa3\x05\xb9\xa6\xa0\x05\x45\x43\x54\xc9\x19\x85\x2b\xfd\xfb\x9a\xc2\x8f\xfa\xb7\xbb\xbe\x9f\x95\xab\x10\x92\x30\xd4\x14\xab\x89\xfe\x21\x68\xe0\xf1\x60\x1f\x06\xdd\x54\xad\x1a\x5f\xa3\x70\x59\x9a\x71\xce\xe9\x7d\xca\xe9\x37\x14\xb6\xf6\xe4\x2c\xee\x0f\x4b\x8c\x31\xbc\x55\x68\xeb\xc2\x27\xf4\x87\x70\x2b\x93\xb5\xfe\xb5\xaa\xb9\xb8\x7f\xa4\x20\x5f\x26\x2b\xfd\x50\xc2\xd6\x05\x25\x58\x6a\x02\xb4\xa1\xe8\x4c\xa1\x73\xba\xe3\x05\xda\xdf\xdf\x5c\x52\x39\x86\x45\x93\x2c\xff\x4c\xb6\x25\x1e\xdf\x22\xbb\x65\x7e\x51\xfa\xc1\xd3\x66\x0d\x46\xb3\x5f\x4b\xb7\x6b\x75\x17\xad\x3a\xb3\xa6\x8a\xb9\x4a\x54\xbb\xa3\x25\x68\xf6\x2e\xde\x6f\xbf\x92\xc8\xc6\xc6\x9a\xe5\x82\x36\xcc\x59\x2e\x34\x3d\x77\xe8\x7e\x49\x51\x4d\x89\xcd\x07\x22\xe1\x94\x4e\xe5\x8c\x50\x8d\x39\xae\xe9\xdd\xee\xb9\x2b\x5b\xa0\xfe\x5b\xda\x65\xe7\xa2\x9a\xe2\x9f\xa3\xbd\xae\x03\xa7\x7a\xd0\xbe\x03\xa7\xd4\x48\xbb\x9b\x9c\xda\x15\xd9\x9c\x68\xcd\x28\x0d\xed\x37\xb6\x5a\x67\x74\xf7\xdb\x48\x4f\x77\x13\x38\x4e\x65\xd3\x01\x1c\x37\x8b\x49\x09\x5b\xab\x66\x89\x3b\x8f\xea\x1a\x8a\x91\x27\xc6\xa2\xe9\x15\x45\xe6\xc1\x28\x48\xda\x96\x38\xf1\x11\x85\x3d\x05\xe2\x2b\x0a\xf7\x19\x25\xc5\xd7\xf4\x9b\xbb\x5b\x1a\x56\x6e\x57\x61\x12\x9f\xed\xd6\xee\x34\xb7\xf1\xeb\x6f\xac\xba\xcd\x45\xea\x7d\x8b\x46\xd6\x0d\x6a\xdb\x5d\x71\xc7\x6e\x36\xa5\xae\x95\xd5\x9a\x60\xb8\xd1\x08\xaf\xd9\xb4\x65\xc7\xf7\xc7\x54\x14\xed\xd6\x2d\xda\x5e\x52\x54\x19\x10\x4d\xb5\xa0\x39\x0b\xfa\xe4\x86\x22\x7b\x38\x1a\x6c\x4b\xfb\xba\x4d\x62\x55\x36\x13\x2a\x46\xcd\x75\xbf\xe2\xfe\xf7\x6c\x87\x2a\xc7\x04\x10\x64\xaa\x66\xc0\xc8\x68\xbc\x4b\x2c\x1e\xb3\x31\x16\x96\x6e\xd5\x84\x81\x0d\x06\x33\xeb\x47\x45\x28\x20\x6b\x45\x50\xd1\x14\x2d\x5f\xbb\xa5\x5f\x0b\xdd\xc6\xce\x60\x97\x97\xe8\x76\x03\x35\xee\x34\x84\x37\x18\x1d\x63\x65\x06\xba\xce\x7a\x7b\xea\x69\x15\xd3\x91\xde\x80\x37\xd4\xa9\x06\x8c\x46\x4f\x68\xd8\x8f\x9b\x48\x74\xba\xa0\xb3\xa2\x38\x6a\x23\xd6\x85\x16\x98\x1a\x52\x85\xb7\x65\x04\x45\x0d\x31\xa8\x44\xad\x17\x9a\x5a\x79\x95\xe4\x03\x0a\x4f\x29\xbc\xb4\xd2\x15\x4f\x6e\xd8\x95\x75\x8a\x0b\x36\x39\x95\x47\x57\x46\x5d\x5d\x14\x41\x00\xcf\xb4\x58\xb3\x96\x22\xa5\x79\x0e\xef\x29\x79\x46\xc3\xf0\x19\x8d\xbc\x75\x10\x3c\xa1\xe4\x3d\x0d\xc3\xf7\x34\xba\xf9\xdf\xe3\x27\x74\xf2\x94\x12\xf4\x80\x92\x27\xd4\x5b\x3e\x44\x01\xc6\xd3\xe1\x6c\xf0\x80\x4e\x47\xb3\xf8\x25\x35\x4c\xdc\x03\x4a\x5e\xd2\x68\x65\x34\x77\x87\x27\xf3\x2b\xfa\xf1\x10\x7d\x9c\x0f\xf0\x21\xc6\x45\x61\x72\x3e\x26\x7f\xfb\xab\x26\xb3\xad\x9c\xc7\x4b\x29\x56\x8d\xbc\x61\x88\x9e\x52\x62\xf2\x5b\x1e\xe1\x39\x25\x4f\x69\x18\x0e\x9e\x52\xf8\xb2\xab\x4f\xf9\xa3\xf3\x38\xeb\x39\x7d\x4c\xbe\x1f\x15\x45\x7f\x7f\xe5\xd2\x9a\x35\x42\xb4\xe5\xc3\xba\x2d\xf1\xf4\x0b\xed\xf0\x1e\xdc\x2e\x84\x88\x47\x65\x09\xa3\x3e\x21\x1a\xed\xa1\x27\x42\x64\x34\xe1\x38\x5a\x08\x61\x96\xf1\x07\x7a\x8f\xd5\xdf\x0b\x6a\xec\x8d\xe8\x0e\x67\x62\xfc\x3d\x4a\xf8\xa9\x63\xcd\xdd\xa2\x17\x4d\x3c\xfb\x42\x37\x38\xa6\x66\x7d\x6e\x4b\xcf\xe1\x4f\x67\x7a\x47\x70\xd2\xef\x6b\x52\x14\x1c\x1d\x1f\x9f\x9c\x9f\x9f\x9e\x9d\x07\x38\x0c\x69\x54\xbd\x82\x20\xfa\xfb\x10\x4f\xe8\x74\x38\x8b\x7f\xa5\x90\x9a\x84\x91\x4e\x18\xcd\xbc\x6e\xa4\xd9\x14\xe9\xf7\xe5\xde\x81\x92\xde\x4b\x61\xd8\x4f\xaa\x83\x77\xc7\xbb\x6d\xed\x2e\x8c\x0f\x46\xe5\x98\x4f\x3e\x68\x81\x61\xd4\x12\x77\x1c\x13\xf0\x2b\x2d\x71\xac\xf4\x7e\x18\x41\xe5\xf4\x2c\x5c\x90\x05\xf8\xd9\x2a\x21\x8c\x2a\x03\x7e\xa4\xe4\x0f\x8a\x02\xfb\x16\x60\xf8\x85\x92\x9f\x1a\xef\xe3\x26\xc6\xb2\x27\x4e\x60\xb6\x49\x13\x67\xfd\xa8\x39\xfd\x5f\xa8\x26\xac\x56\x3f\xd2\x65\x8f\x45\xfd\xee\xdd\xc3\x29\xa3\x49\x8d\x4b\x2a\x20\x99\x7d\x6b\x8c\xb1\xba\x65\x0e\x33\x23\x95\x81\xbb\xdc\x13\xfc\xed\xa8\xed\xa9\x49\xe3\xa8\xc0\x2f\x86\x51\x09\x0e\xa1\xff\xde\x52\xc9\x28\x49\x7e\xd3\xc3\xb7\xaf\x01\x06\x2a\x2d\x3c\xaa\x04\x29\x89\x92\x61\x48\xe5\x64\x5a\xc5\x20\xe9\x1a\xf0\xef\xff\xf2\x80\xbf\x05\xd6\x75\x9b\x7d\x22\xa5\x65\x65\x4c\x0f\xa4\x74\xf0\xe2\xd2\xa8\x74\x84\xdc\xb1\xa1\xe7\xd2\x92\xb0\xf1\xb7\x50\xd6\xa4\x28\x84\x6c\xf0\x02\xf7\xd2\xea\x4e\xee\x80\x4b\x74\xe7\x78\x01\xd7\x29\x26\xef\x09\xe3\x74\xa5\x59\x29\xeb\x7f\x3b\xb1\x67\x83\x1c\xb4\xcc\xae\xa5\x6f\xa5\x25\x72\x59\x7e\xb5\xc3\x7f\xde\xc5\xbc\xdb\x07\x09\x1a\x06\x24\xd6\xae\xe0\x52\x21\x8e\xc1\x9c\xb3\xa7\x64\x38\xf6\x36\x36\x8f\xd3\x31\xae\xa8\x19\x92\x44\x20\x0e\xd4\x1b\xc7\xe0\x30\x64\x12\x25\x36\x62\x91\x97\x54\xbe\x91\xdb\x6a\x4f\xcf\x99\xaa\x38\x8c\x6b\x7a\xd7\xc9\x50\x9c\xa9\x9a\x9d\xa8\x0e\xd7\x34\x70\xf9\xf6\xf8\xfc\xfc\x6c\x93\xd1\x57\x2c\x57\xf1\x10\x8e\xcf\xcf\xcf\xd5\x5d\x46\x9f\xd2\x34\x4b\x64\x62\x74\x41\x26\xf5\x83\x26\x6b\x3e\x53\xc6\x28\x57\x67\x34\x55\x2e\xe1\xe9\xe9\xeb\xf6\x9b\xe5\x87\xeb\xf7\x77\xe2\x9a\x72\xf3\x3a\x82\xa7\x89\x4a\xde\xc9\x84\xe7\x0b\x2a\x5f\x2a\xba\x72\xb9\x9e\xb1\xaa\x13\x2f\xde\xbd\x7e\x75\x94\x65\xc7\x22\xcb\x68\xea\xba\xa0\xd3\xf6\x12\x9e\x09\xb9\x72\xa7\xbb\x2e\xe5\x9c\xea\x1c\x75\xda\x6b\x3a\x67\x89\xab\xf6\x35\x5b\x51\xcd\x3d\x5b\xad\xf9\x10\x34\xc3\x37\x7f\x23\xe6\xf4\x75\xb2\xd6\xaf\x62\x4e\x5d\x17\xdf\x26\x4c\x8f\xef\x8f\x0d\xcd\xfd\xa0\xde\x66\x9b\x2b\xc6\xab\x07\x5f\xc7\xf9\x87\xe7\xaf\xcc\x5c\xbb\x6c\xe7\x1f\x9e\xbf\xd9\xac\x2e\xa9\xac\xdf\xdf\x26\x6a\x79\x4e\xaf\x1a\x09\x82\x71\x55\xbf\xb6\x60\x75\xfe\xe1\xb9\x85\x8d\x90\x1e\x30\xd6\x3a\xf9\xc9\x66\xb1\xa8\x6b\xd5\x53\x74\xbe\xa4\xd4\x57\xf3\x8e\x7e\x56\xef\x64\x92\x5e\x1f\x57\x93\x54\x25\xf9\x77\xb1\x49\x5d\x2f\x4b\x67\xe9\x28\x89\x98\x26\x72\x06\x1b\x49\x52\x19\x86\x69\xe3\x5c\x42\xf3\x64\x1b\x19\x86\x1b\x59\x23\x0d\x22\x25\xb6\x46\xe0\x1b\x09\x15\x5a\x03\xd9\xb4\x75\xaf\xf3\x6b\x1c\x63\x8e\xb4\xf3\xfd\x0d\xec\x59\x2f\xbb\x79\xbb\xfd\x15\x74\x56\x27\xad\x49\x68\xd3\xa9\x5d\xe1\xb5\x76\x29\x1a\x1a\xe2\xe5\x2d\xd8\x17\xf2\x2b\xc1\x01\xbf\x2d\xa0\xdf\x9f\x87\x0c\xdc\xda\x78\x57\x99\x24\xe8\xcf\x33\x57\xd8\x60\x21\x27\x0b\x19\x6f\x4b\x1c\x5d\x5c\x7c\x78\x7f\x72\xf1\xf4\xe4\xc3\xbb\xd3\xd3\x57\xe7\x17\xcf\x5f\x9d\x3e\x39\x7a\x75\xf1\xe2\xf4\xf4\xa7\x8b\x8b\xda\x91\x7c\x2d\x2d\x9a\x6c\x18\x61\x20\x85\x3b\x02\x59\x35\xa0\x8b\xd4\x54\xce\x40\xe2\x56\xb8\xaa\xb9\x6c\x06\x52\x72\x67\xdd\x1d\x81\xa1\x94\x99\xbb\xa5\xdc\x75\x02\x30\x4e\xaa\xde\x4d\xd0\x7a\xa1\x5e\xa4\x4b\x96\xcd\x25\xe5\x3b\x91\x31\x8c\x3b\xaf\xcb\x22\x93\xdb\xd7\x62\xbe\xc9\x28\x71\x0e\x45\xce\x50\x88\xda\x90\x59\xe6\x91\x74\x31\xf1\x72\x22\x11\x8e\xa5\xb3\xc4\xbe\x91\x64\xcb\xb5\x9c\xb6\x4e\x34\x1e\xdc\x55\x63\x94\xe5\xf8\x46\x46\x75\x86\xe8\x8a\xaa\x7d\x26\xb1\xdf\xdf\xe9\x53\xa3\x44\x09\xcb\xc6\x2e\x88\x92\xb9\x3d\x21\xe8\x82\x42\x35\x6c\xeb\x01\xd1\x2e\x28\xe9\x4a\xdc\xd0\xdd\xb2\x78\xeb\x2d\x72\x77\x2b\xd8\x29\x7e\x45\xd5\x7e\x59\x7f\x7e\xf9\x27\x65\x97\x49\x7e\x7f\x59\x1f\x9d\xa1\xae\x60\xa7\xf4\x66\x3d\x4f\xd4\x2e\x0f\x7c\x1f\xb4\x88\x6a\xbc\x80\x8a\x12\x53\x26\xf7\xbe\xa7\x8d\x32\xee\x0b\xa9\xf2\x60\x50\xd1\x6a\xa3\x92\xfb\x0a\x54\xdf\x48\x23\x9f\x2e\x64\x4f\xb1\xba\x8a\xb8\x2f\xa4\xca\x83\x77\xc6\xe6\x76\xcb\x3e\x74\xf4\xee\x6a\x01\xc5\xa8\xd1\xba\xca\x3e\x37\x35\x7f\x15\x3c\x55\x07\xab\x5a\xf7\xbe\xdd\x5b\xfd\x91\xa9\xf5\xab\xd5\x57\x30\xee\xa8\xde\x7d\xbb\xb7\xfa\xd7\x0e\x90\x5f\x6d\xa0\x31\x2b\x1d\x4d\x54\x5f\x4d\x23\xf7\x18\x79\xa1\x66\xe3\x70\x23\x5d\x20\x3f\x09\xab\x0e\xd0\xd9\xf3\x3c\x2a\xd1\x74\x06\xca\x9c\xb8\x8c\x57\x3b\x7b\xa1\x73\x29\x47\x92\xce\x37\x69\xcb\x33\xa0\x19\x6f\xb5\xda\x43\x88\xe2\xd2\x47\x9b\x12\x42\xf7\x7a\xb7\xfa\x37\x7e\x0d\x77\xa9\xed\x7d\xb9\xf1\xd7\xda\x6d\xd8\x3a\x0c\x10\xa2\xa4\xde\xc1\x48\x62\xdc\xd8\x24\x13\x39\x08\x0e\x83\x38\x08\x74\x9f\xf4\xdf\x76\x67\x3a\x76\x5f\x1d\x0e\x50\x79\xab\x6e\xe3\xc7\x6e\xb3\x6a\xbe\x93\x47\x2b\x33\x37\x79\x15\x84\x45\x18\x5b\xe6\x2a\xd9\xe8\x10\x65\xdd\x25\xe1\x45\xd6\xb1\x42\x95\x4d\xad\xc0\xd0\xca\x52\x57\x3b\x15\x33\x5c\x96\x66\x7a\x3c\x30\x60\x0f\x8c\x7e\x16\xef\x61\xd6\x4d\x58\x94\xda\x72\xc1\x98\x37\xf4\x87\xd8\xc7\x80\xa3\xb7\xbd\xa5\x34\x06\x22\x63\xe3\x50\xe4\x18\xe8\x49\xd5\x20\x11\x36\x6e\xc3\x15\x55\xc8\xdb\x17\x0d\xe1\x60\x84\x71\x85\xa3\x91\x9a\xaa\x2a\x1c\xc0\x0c\x04\x1e\x53\x3f\x02\xb3\x92\xab\xb7\xe6\x69\x1a\x08\xbc\xe5\xf5\x12\x54\x0d\x68\x50\x47\x3a\x77\x66\x88\x77\x8c\xb4\xb5\x58\xf6\xbb\x08\x92\xb4\xfb\xc6\xdb\x0b\x64\xcc\xc3\x90\x7b\xaa\x1a\x86\x2d\xea\x81\xe4\x6e\x0f\x58\x7e\xe6\x7a\x40\xe7\xff\xf9\x3e\xd4\xa1\x8f\x3c\xbd\xd0\x2d\x99\xf9\xb8\xba\x6f\x68\xf5\x04\x2a\x8d\x7e\xc9\xb6\xc4\xd0\xbf\x93\x61\x78\x3f\xe3\xe3\xed\xd7\xa2\x0f\x1b\x1a\x86\x3b\x7a\x6d\x5d\x54\x11\x42\xee\xbc\xc9\xff\xb8\xff\xbf\x0e\xff\xd2\xff\x5f\xff\xbf\xde\x5f\x7a\x37\x1b\xfa\xb9\x77\xf3\x5d\xf4\x7d\x34\x32\xef\x28\xc5\xd6\xa5\xed\xe4\x26\xe1\xbd\xdf\xc4\xc6\xa4\xfe\x43\x8f\x90\xe7\xb4\xf7\xfa\xe5\x3b\x9d\x70\xf8\xbf\x76\x9a\xb0\xcc\x38\x52\x5e\x61\xd6\xd0\x8a\x4d\x87\x33\xfc\x98\x3c\xc4\x2a\x5a\xb1\xcf\x8c\xa3\xed\x25\x5d\x08\x49\x8f\xad\xee\x5a\xcb\xc4\x95\x57\x97\x31\xb1\xac\x26\xe0\x82\x71\xa6\xc6\x7b\x29\x6d\xa0\xed\x43\x4a\x45\x26\x97\xfd\x99\x4c\xe5\xcc\xaf\x35\x9b\x82\x35\x9b\xdb\xd4\x55\x36\x43\x54\xca\x4a\x99\x6b\xa6\xf7\x81\x30\x47\x31\xf9\x58\x33\x51\x42\xba\xf0\x22\x0f\xcc\x73\x67\x3c\x36\x9f\xcd\xfe\x22\x1c\xbb\xa7\xd8\x9b\x8e\x86\xa1\x7f\x72\xd5\x78\xfa\xea\x2a\xdd\xf9\xaa\xf1\xc1\x9d\x24\x0a\x97\xa8\x9e\x5f\x5c\x71\x76\x6b\x23\x23\xed\x6d\xf8\xe9\xcc\x1f\xdd\xeb\xe6\x25\x4b\x55\x9d\x83\x9b\x90\xb9\xfd\x91\x67\x18\x53\xb1\x5a\x31\xa5\x18\xbf\xaa\x22\x56\x5d\x78\x26\xe2\x7e\x36\xd3\xe6\x38\xdf\x5c\x6a\x11\xfe\x52\x33\x03\x1e\x6b\x5d\xd4\x0c\xc5\xfd\xc5\x6f\x65\xb2\x5e\xd3\xf9\x73\xc7\x48\xdc\x9f\xd1\x61\x12\x83\xb8\x56\xd2\x9c\xbb\x35\xd3\x2b\x82\xf2\x3a\x59\x7f\xa5\x96\xbc\xab\x9f\xb7\x5a\x94\xa2\xf2\xc3\x6b\x53\xf9\x9d\xf4\x35\x27\xd7\xd4\xf8\x7c\xb8\xce\x1d\x27\xe9\x72\x37\x14\x5d\x1d\x3f\xc7\x06\xfe\x01\x17\xf9\xc9\x07\xb3\x82\x84\xf8\x50\x2c\x2b\xbd\x82\x9b\xdf\xba\xfd\xaa\x98\x8f\x09\x64\xdd\xd9\x1b\xa5\xef\x93\xe9\x92\x46\x09\x63\xfd\xe0\xf8\x7b\x3d\xdb\x84\x8f\xad\x87\x5d\x0b\x58\x06\xbf\x3b\x61\xe0\xd4\x32\x1c\x90\x42\x3d\x6f\x8d\x5c\x18\x2e\x7c\x06\x4d\xad\xf6\xa5\x1f\xd5\x8c\xb7\x6e\x0e\xf6\x50\x7d\x9c\x10\xcd\xe9\x8d\x12\x22\xcb\x27\xf5\x63\x7c\x27\x23\x2b\x44\x54\x49\xb8\x8d\xa7\x32\xe3\x6a\x1d\x5d\xb8\xcf\x2f\x84\xb8\x26\x99\x84\x4c\x46\x74\xa5\x31\x89\x46\x54\xb1\xde\xc0\x01\x28\xac\x93\x05\x77\x89\x4a\x26\x37\xd4\x59\x2e\x25\x8a\x06\x6d\x2b\x0e\xe5\xfd\x37\xce\xf5\x47\xd7\x5b\x15\x55\x6b\x62\x97\xaf\x69\x37\xe8\x57\x73\x60\x67\x06\xc3\x76\x2d\xe9\x9a\xf2\xb9\x91\x81\x9b\xf5\x58\x96\xf2\xeb\xb5\xd9\x6d\xd3\x5d\x17\x2e\x9d\xeb\x1e\x5c\x4a\xb2\x35\x23\xe9\x92\xbb\x2a\x54\x75\x2b\x77\xa5\x7c\xef\x8d\x85\x14\x7e\x34\xd4\x88\x20\x0c\x35\x3d\x33\x4d\x4c\x34\x45\xcd\x97\x6c\x61\x8e\x02\xa9\x37\xa4\xa8\xc3\xf0\x21\xaf\xb5\x6d\x56\x33\x96\x8f\x0f\x46\x9a\x50\x6a\x6c\x9e\x52\x24\x61\xd4\xc4\x96\x27\x4e\x58\x56\x7f\x82\x32\xfe\x14\x29\x7c\x1b\x46\xf8\xe6\x6d\xbf\x23\xf9\xea\xc5\x0e\xd2\xac\xf4\xf6\x32\x37\x36\x3a\x17\xf6\x6b\x33\x76\xeb\x85\xdc\x61\xaa\xa2\x8b\x9b\xd5\xb8\x12\x77\xc8\xb6\x34\x35\xfd\xab\x98\x62\x77\x94\xc0\xc8\xb6\x1c\xaf\x25\x12\x2d\x4e\x49\xe2\x2d\x9b\xca\x59\x37\xa2\xe8\x30\xb3\x35\x31\x81\xcc\xe9\x7b\xa7\x98\x70\x87\xaa\x8e\x83\xbc\xcf\xac\xce\x8c\x70\x2a\x67\x65\x5b\x03\x64\x1c\xd7\x5d\xa0\xb0\x7a\x03\xe7\x2c\xa3\x5c\x8d\x77\x13\x48\x7f\x08\xa6\x1e\x87\x50\xd1\x76\x9e\xa8\x24\xde\x3e\x78\x60\x17\x33\xb5\x01\xc0\x36\x8a\xce\x63\x56\x62\xd8\x2b\x9f\x80\x27\x57\x6d\xcc\x60\x2a\x8d\x1e\x18\x84\xdd\x65\x3a\x68\xf1\x97\x6e\x2c\x72\x6d\xb5\xe2\x59\x63\xcd\x14\x6c\xe7\x94\x1a\x6b\x88\xfc\x8e\xa7\x76\x64\xc6\x22\xca\x6e\x13\x3d\x35\x4c\x2d\x8f\x0d\xc6\x6d\xab\xe4\xdb\x15\x1b\x1f\x04\x8d\x40\xee\xa4\x09\xf6\xf5\x8e\xa5\xd7\x5d\x5d\xe2\xd1\x83\x39\xcd\x95\x14\x77\x26\x34\x67\x33\xea\xae\xf4\x37\x33\x40\x15\x36\xb0\xef\x7d\xe5\x34\xe1\xa8\x97\x68\x53\x62\x42\x36\xdc\x3e\x6f\x88\x38\x16\x5d\x76\x6c\x89\x69\x32\xbb\x67\xb3\x4c\x93\x19\xe1\x18\xfa\x2c\x0c\xfb\xc2\xbb\x61\x9f\x1b\x81\xa0\xcd\xc4\x6e\x88\x9c\xca\x06\x13\x7b\x3f\x80\xee\x64\x94\x53\x65\x2c\x96\xb9\xdd\x6f\x86\x99\xb7\x71\xd4\xb9\xf5\x57\xf9\xbc\x4f\xc5\xdc\x0d\x11\x26\x72\x25\x08\xb2\xf5\xe4\x31\xe6\x9a\x68\xf8\x97\x5d\x1b\x74\x0b\xae\x4f\xd2\xbd\x9b\xe0\x8a\xeb\xe4\x2e\x13\xc9\x1c\x52\xc2\x22\xc7\xae\xc1\x86\x30\xe3\x1b\x5f\xdd\xc6\x10\x86\xa9\xd9\xf1\x45\x81\x36\x84\x0e\x36\x1a\x9b\xf8\x56\xd0\x06\x5c\x70\xba\x15\x53\xa6\x7d\xf7\xf8\x5f\x6e\xbd\xb3\x59\x5b\xb9\x6e\x14\x52\x5c\x56\xc6\x53\xf7\x49\xf8\xc2\x6c\x59\xbd\x7b\x63\xb3\x77\xf9\xa4\x6b\xf7\xba\x2c\x65\xc7\xd6\xde\x3b\x4d\xed\xdf\x87\xbb\xa6\x74\xe6\x89\xc0\xb6\x34\xb2\x93\xf3\x08\x6a\x29\x43\x2b\xa5\x4f\x07\x5b\x20\x4c\x03\xa2\x5a\x4b\x1c\x1b\xb7\x07\x1f\xc2\xd0\xa5\x73\x3c\xee\x46\x54\x12\xd8\xfd\x08\xca\x35\x3b\x15\x1d\x48\xca\x92\xf4\x7b\x47\x45\xaa\xd8\xb0\x5f\xc9\x54\xda\x78\x39\x25\x38\xd2\xdb\xdd\x8f\x73\x2d\xe3\x98\x1c\xe6\x22\x88\x12\x83\x28\x8d\x1f\xab\x96\x2e\x77\xd5\x3f\x68\x07\xad\xf7\xdb\xbb\x00\xb8\x89\x5e\x52\x13\x47\xe3\x2a\xbf\x9b\xa2\xb9\x79\x17\x97\xa4\xc5\xd7\xd4\x91\xb2\x5d\x7f\xec\xc6\xd3\x9d\x19\x48\xa0\x90\x5b\x83\xc5\xb6\xc6\x6b\xb7\x47\x3e\xce\xae\x5e\xa4\x13\x19\xeb\x92\xc2\x5c\x6e\xc3\xe7\x19\x95\x45\x41\xc7\xf7\xf4\xd9\xd1\xfb\xaa\xc7\xf5\xfb\x7d\xfd\xf5\x2e\xf2\x55\xbf\x1b\x7b\xbe\xe6\x9c\xfd\x2e\x74\xdb\x04\xfc\xda\xe7\x15\x0d\xb3\xd3\xe3\x07\xad\x3b\xee\x26\x32\x6e\xd0\x39\x21\x94\x61\xf7\x62\x37\x59\x65\x6d\x7b\x8b\x04\x61\xb8\x2b\xc0\x55\x4f\x98\xa8\xcb\x45\x51\x07\x73\xae\xee\x50\x60\x76\x81\x35\x78\xd3\x89\x0b\x61\xba\x73\xb7\x85\x0b\x5b\xd9\xcc\xd9\x64\x00\xa9\x94\x42\x06\x36\x16\x09\xc6\x9a\x0c\x9a\x19\xe3\x20\x76\xe7\xcb\x0e\xea\x1b\x56\x90\xb9\xfd\x60\x87\xb3\xd0\x3b\xd9\x6b\x9e\x3a\xbe\x75\xa9\xf9\x24\xf2\x20\xad\x41\xed\x57\x7a\x43\xd1\x7b\xef\xfa\xb2\xaa\x8d\xe6\x15\x1b\x0c\x6f\x3d\xb1\xf3\x12\x38\xc3\xd6\x69\xa8\x49\x10\xcf\x65\x8b\xc1\xa1\x7f\xa2\x6e\xd4\x3b\xd5\x58\x5f\x56\x15\x7c\xda\x65\x84\xcd\xd1\x8b\x26\xea\xee\x86\x18\x49\x28\x50\xa2\x40\xf9\xe0\xa2\xce\x2c\x5f\x81\xc3\xde\x31\x05\x87\xbb\x63\x59\x96\x97\xd2\x0e\xbb\xfb\x50\xc3\x71\x1b\x37\xab\x1d\x8e\x03\xaa\x62\xf9\x8e\x1e\xb5\x84\xab\xa6\x5a\xe9\x1e\xb1\xae\x56\xdf\x81\x20\xd5\x90\x40\x63\x4d\xa3\xdc\x4d\x88\x68\x10\x1b\x3b\x00\x56\x0d\x20\x29\x61\x43\x76\xe4\xef\x29\x9b\x8d\x37\x95\xfa\xfe\x1e\xf2\xbd\xe9\x16\xee\x14\x4a\x7c\x0c\x91\x3d\x11\xda\x7b\x1d\xfe\x89\x58\x98\x36\xf9\x01\xbc\x03\x84\x7b\xa4\xe1\x3a\xa2\x28\x70\x07\x04\xeb\xa3\x6c\x40\xc0\x08\xaf\x40\x90\x38\x10\x88\x0a\x04\xac\x04\x2f\xf0\x7a\x64\x64\xaf\x33\x48\xad\x2f\xe5\x3d\x8a\x8b\x7a\x34\xc6\x2e\xe6\x9e\x98\xeb\x56\x65\x55\xe2\x3f\x19\xb4\xcb\x87\x12\x90\x0d\x5e\xa8\xed\x79\xbc\x21\x69\x6d\x64\xe2\xf1\x8c\xc6\x88\x69\xb4\x4a\xd6\xf7\x00\x93\x19\x20\xc6\xe9\x74\x38\x43\x75\x20\x79\xcd\x67\xbb\x1a\x76\xb7\xcb\x66\x37\x82\xbc\x0b\x2c\x26\xbb\x40\xf0\xd5\xa1\x9b\xb8\xb1\x7f\x3e\x72\x93\xed\xde\x81\x5b\x2d\x41\xdb\xbc\xf8\x3f\xd7\x1d\x83\x41\xbb\xbb\xd3\x44\x22\x26\x5b\xdd\x1d\x6b\xff\xdd\xe8\x10\xb5\xf6\xc8\xa5\x71\x97\x6d\x2d\xcd\x6a\xa5\x77\x0b\x60\x46\xec\xde\xdb\x13\x46\x6b\xd3\x5d\xcd\xde\x51\x53\xbb\xb2\xce\x40\x3c\x4e\x45\x1a\xab\x32\x56\xf7\x69\xdc\xf6\x9b\xbc\xdd\xdb\x51\x3b\xe7\x02\x2d\x0c\x56\xe9\xbf\xbe\x26\x59\xed\x13\x05\x3d\x8d\x56\xe1\x74\xd5\x3e\x96\xa8\x75\x2c\xf7\x69\xb5\xbf\x8a\x88\xe8\x3e\x4e\x25\xaa\xdc\x43\x1c\xfe\x50\xc0\x1d\x72\xef\x0d\xb6\xad\x08\xd5\x92\xdf\x5e\x3c\x27\xab\x29\x9e\xaa\x19\xde\xd5\x7c\x55\xa7\x13\x1a\xed\x78\x15\x59\x7d\x6e\x0e\x6a\xa7\x80\xd1\xfe\x63\x30\x4a\x96\x9c\xca\x1b\x3b\xfc\x5a\x79\x56\x17\xdd\x1d\x46\x7d\xba\xb1\x37\x90\x16\xc8\xbe\xbd\xf3\x75\x8d\xb5\x96\xf4\x1e\x50\xbb\x10\x2a\x12\xd1\x8a\xbe\x37\x85\x3f\x2d\xd8\xdb\xe3\x73\x24\xa1\x75\x96\x61\xe8\xc1\x89\xf4\x7a\xaa\xab\x9d\xd3\xf0\x8e\xa1\x78\x87\xb5\x6f\x1d\x45\xf3\xcc\xc5\xc4\xcc\x68\xb7\x21\xd4\xfb\xfb\x8e\xcd\x2b\x38\xd8\xe3\x3a\x55\x75\xd4\x04\x98\x6f\xd7\xd3\x00\xcc\x7d\x07\x3b\x0d\xbd\xf8\x78\x5f\x51\x3e\x04\x85\x3a\x14\xe8\xf4\xfe\x83\xda\x66\xfb\x70\xe9\x0e\x6a\x3f\x4b\xf2\x56\xee\x62\x6e\x2f\x80\xf9\xdd\xfa\x4e\x22\x7a\x0f\xb6\xf3\xdc\xfb\x35\xbd\x33\x6c\xfb\x4d\x92\x8d\x05\x51\x03\x01\x72\xca\x67\x3b\xce\x49\x7d\x55\x14\x47\xb2\x79\xd8\x00\xc1\x2a\x59\x3b\xae\x30\x68\xd8\xd7\x36\xb2\xb4\xa4\x2e\x5d\x69\xa4\xd9\x58\x62\xf4\x95\xa0\xd1\x30\x1c\xff\x37\x8c\x61\xb7\xf7\x75\x54\xf2\xe9\x0c\xe4\x9e\x7b\x94\x8d\x58\x61\x9c\x3b\x6a\xa3\x4d\x39\x1b\x37\x42\xf8\xbb\xd1\x78\xb6\x63\x5c\x5f\x7b\xc4\x48\x07\x50\x2c\xce\x36\x40\xb1\x97\x1a\x79\x6e\x9a\x9b\xdb\x1c\x8c\x4a\xa3\xaa\xcc\xc9\x96\x5d\x02\xc5\x44\x38\x43\x77\xb3\x10\x35\xf8\x1c\x23\x4c\x31\x8e\x79\xe3\x9b\x6f\x7c\x2a\x9a\x59\x4a\x0f\xe5\x5a\xeb\xfb\x4e\x76\x45\x21\xab\x93\x5a\x31\x69\x90\xc2\x45\x61\xb8\xe1\x12\x29\x3c\xd9\xfd\x36\x51\xf7\x71\x1c\xdb\x6b\x7a\x17\x2b\xb8\x49\xb2\x58\xe9\x4e\xc4\x3b\xe6\x50\xed\x62\xb4\x55\x8c\xda\x62\x9a\x4f\xd7\x25\xa7\xb3\x9a\x53\x7f\xdb\xd9\xf9\x06\xeb\xbe\x1f\xbd\x6f\xe2\xb8\xf7\x20\xc0\x71\x70\x68\x2f\x1f\x73\x17\x9d\xd0\x0a\x31\xe1\x30\x44\x74\x40\x82\xc3\x00\x83\x72\x57\x34\x56\x8d\x1e\xed\x8a\x07\xf7\xa8\xc6\x64\xa3\xa3\xaf\x1a\x4a\x3a\x1f\x87\x09\x72\xbc\x0d\x2e\xad\x95\x7b\xdd\xc1\xc4\xc4\x00\x4c\x21\x25\x09\x24\xa4\x3f\xc2\x63\x63\x3f\xdf\x5b\x74\x1d\x0f\xca\x89\x8c\x2a\x41\x63\x9c\x51\xd5\xcb\x5c\x78\x37\x15\x49\xca\xe7\x54\x53\xad\x85\x7b\x24\x3e\x0d\x16\x06\x4d\xb3\xf4\xcc\xbc\x3e\x33\xa6\x3a\x3b\x29\xb0\x30\x88\x68\xcd\x32\x3a\xd7\xe8\x49\x98\x8a\x7c\x0f\x92\x8c\xf4\x87\xd8\x6a\x3b\x17\xd1\x45\x9e\x8a\x35\x7d\x39\x27\x1c\x03\x9b\xa0\xac\x85\x02\x91\x22\xaa\x28\xec\x92\xbc\xe1\x62\x4e\xdd\xbd\x14\xf6\x25\xca\x73\x79\x6c\x97\xbf\xcb\x54\x9d\x6a\xd6\x2f\xed\x82\xad\xb4\x46\x79\x5c\x14\x8d\xd3\xec\x0a\x44\xd6\x4a\xef\xfc\xfc\xec\xe2\xf8\xf4\xcd\xbb\x93\x5f\xdf\x5d\x5c\x14\x05\x52\xa4\x23\x1d\x83\x39\xc3\xaf\x4f\x72\x37\xe6\x40\xc3\x40\xf3\x42\x56\x64\xe4\x58\xac\xd6\x82\x6b\x9c\x70\xef\x87\x28\x99\xcf\x35\x8b\xad\xa1\x98\xe7\xd2\x93\x20\x92\xe1\x58\xcb\x8f\x59\x2b\xda\xaf\x66\x55\xea\x36\x73\xcf\x0d\x3e\x30\xa7\x6b\xfe\xc0\x38\xca\x97\xc9\x5c\xdc\x9e\x09\xa1\xda\x31\x80\xdb\xa5\x53\xeb\xf4\x03\x19\x66\x8b\xd6\x7c\x61\x7b\x3f\x51\x4f\x11\xbf\x1c\xc6\xd5\xba\xe8\xda\x38\x3e\x60\xbb\xac\x37\x80\x39\x54\xaf\x6b\x69\x1e\xba\x8f\xdb\xaf\x44\x4d\xa6\xf5\x21\x39\x64\x38\x9e\x66\xb3\xea\x36\xa5\xd2\xd6\xf1\xc6\x59\x04\xc6\xc1\x51\x9a\x8a\x0d\x57\xf9\x2b\x96\x2b\x63\xfd\xbe\xce\xe3\x6d\xe2\x12\x63\x2b\x96\x19\x14\x03\x3e\xce\xa8\x39\xb9\xb2\x36\x0f\xd7\x92\xec\x70\x22\xf6\xa8\x5d\x0b\xe8\xd1\x83\x56\x14\x6e\xd0\x5b\xe0\x22\xa7\x99\x5e\xdb\x45\x51\x29\x73\xa5\x0d\xb0\x0d\x53\x89\x02\x91\x1e\x28\xeb\x0d\xb9\x4d\x94\x92\x79\xbc\x5d\xb1\xf9\x3c\xa3\x71\x10\xc0\x9c\xdd\xb0\x39\x95\x71\x10\x94\x65\x2b\xf3\xc1\x95\x14\x9b\x75\xbb\x82\x03\x73\x53\x50\x2b\x25\xa5\x59\x56\xd7\x9b\x2f\x25\xe3\xd7\xba\x5e\xeb\xd2\xbf\xa4\xc9\x3c\x28\xcd\x11\xe0\xc5\x0d\x0a\x7a\x01\x86\xfb\x0b\x37\x8b\xc0\x5c\xac\xde\x5a\xa0\xe9\x7d\x70\x6c\x03\x3a\xc5\x7a\xa8\x48\x45\x0f\x0c\xc1\xfd\xac\x50\xf0\x3e\xa7\xd2\x06\x2d\xc5\xff\x9d\xcd\x3c\xb5\x21\xa9\x7a\xff\x03\x4d\x9d\xac\x12\x96\xfd\x0b\x6d\x74\x83\xfc\x9b\xe1\xc7\xe6\x3d\x6e\xac\x52\xfe\xc7\x9a\x7c\xfe\x3f\xdf\xe4\x09\xd7\x55\xce\x6d\x7b\x33\x18\x99\xff\xf7\xb4\xeb\x96\xbd\x8a\x2e\x32\xa4\x22\xbf\x63\xa1\x4b\x80\xde\xdb\x19\x86\xb4\x07\xae\xcc\x41\xc6\x72\xa5\xd3\x0f\x82\x01\x8d\xd8\xbc\xec\xda\x38\x2e\x29\xb9\x49\x54\x22\xeb\xe1\x6e\x72\x2a\xed\xcd\x2a\xbb\x17\x10\xae\x25\x5d\x50\x29\xe9\x5c\x27\xc0\x2d\x9b\xab\x65\xfc\xdd\xf7\x6e\x58\x5f\x07\xe5\x57\x80\xb5\x53\xef\x9f\x4f\xcb\x57\xeb\x6a\x75\x39\x38\x08\xfe\x8b\xd5\xe9\x0d\xf1\x5f\xac\x62\xc3\xe6\xd6\xf6\xea\xff\x46\x7f\xae\xfe\xc5\xca\x2c\x17\x72\x9c\x25\x79\x1e\x07\x9b\xeb\x03\x5d\xe5\x41\x4a\xb9\xa2\x32\x28\x61\x4a\xfd\x22\x73\xab\x74\x62\xab\x60\xa9\x71\x8d\x77\x0b\xc2\x12\x15\x73\xa5\x7b\x00\x37\x89\x64\xd6\x19\x26\xc8\x37\x26\x48\x7f\x00\x81\x4e\x3b\xc8\x92\x4b\x9a\x05\x71\x73\xed\x3b\x42\xd4\x63\x79\x8f\xfa\x6d\x50\x96\x38\xbe\xbf\x95\x39\x5d\x4b\x9a\x26\xe6\xa6\xf0\x46\x53\xf3\x84\x5f\x51\xf9\x6d\x2d\xcd\x59\x5e\x37\xe5\x37\x9c\xe6\xd3\x47\xf5\xdb\xf8\x5a\x5a\x19\xf3\x5c\x49\xb6\x5e\x1b\x96\xac\x66\xe1\xcf\x64\x53\x48\x6a\x73\xd6\x9a\x1d\xfc\x5a\x5c\x4b\x2f\x2f\x7d\x2d\x8f\xae\xc6\x5e\x8c\xce\xf7\x55\x69\x74\xf7\x36\xcf\xfb\x7c\xb2\x4c\x1f\x9b\x17\xd2\x60\x6c\x34\x1d\x9b\x7c\xe9\xe4\x16\x13\x34\xac\xe2\x12\xaa\xe1\xbd\x96\xed\x8b\xa4\x46\x63\xfa\x68\x4f\x62\xa3\x3e\x26\xac\x24\xd6\x37\xa2\x16\xdc\xe8\x6c\xd2\x7c\x89\xb7\xe5\x98\xfe\xfb\xc3\xc9\x99\xf4\x7e\xd2\x12\x6b\x91\xbe\x5b\x9a\xcc\x65\x2b\x40\x4b\x77\xc0\xdc\x86\xe3\xd9\x7d\xd1\x33\x91\x82\x3f\x2b\x8a\x24\xc6\x71\xb3\x57\xf7\x74\xe9\x7e\xaf\x9b\x3f\x9b\x01\x09\x14\x37\x6f\xd7\x56\x8e\x15\x7b\x50\xb3\x62\xeb\x75\x60\x8c\x2a\x2c\x1f\x1b\x6f\x9b\xbc\x59\xfc\x4a\xa2\xad\xe5\x19\xe3\x6b\x09\x3b\x12\x83\x16\xcc\x5c\x68\x3a\x78\x23\xfd\x53\x7f\xb4\xff\xd4\xfa\xc1\x0d\x23\x8e\xd7\x12\xbd\x96\x68\x5b\xc2\x67\x59\x6d\x91\x3c\x80\x69\xc0\xf2\x97\x9c\x29\x96\x64\xec\x8b\xde\x69\xc1\x15\x55\xfe\xf3\xb9\xbd\x68\x63\x86\x31\x6c\x4b\xa8\xd9\xc6\x7b\xce\x59\xf6\x4a\x6a\x94\x64\xef\xf1\xc9\x63\xdb\xf8\xf1\x6e\xe3\x55\xd3\xa6\x15\xcb\x52\xce\xf7\xae\xb5\xac\xb3\x21\xec\x78\xd3\xa7\xf7\xf0\xa6\xbb\x7c\x29\xad\xee\xfd\x74\xac\x69\x65\xb3\x4e\x3d\x6b\xea\x1f\xf6\x30\x64\x2a\xb8\x4a\x18\xa7\xb2\xb7\xb9\x3e\x58\x27\xf3\xb9\x16\x77\x4b\x53\x60\x39\x0a\x60\xea\x4e\x97\x50\xf0\x91\xf7\xcc\x3f\x3f\x34\xfb\x1e\xe0\x4a\x65\xe6\xb0\xb2\x1d\x4c\x13\xe0\x13\x5d\x99\x07\xac\x21\xd5\x35\x1a\xac\xe0\x6d\x8a\xf9\x37\x8d\xc9\x62\x6a\xb0\x66\x26\x92\xb9\x66\x5f\x66\xf0\x10\xcf\x70\x39\x7e\xda\x81\xc9\xec\x2a\x7c\x29\x49\x63\x81\x3d\xfd\xea\x02\x7b\xf0\x2f\x2c\x30\x33\x15\xcf\xa4\x09\x6f\xf6\x5e\x7e\x3d\xf8\x7a\x23\x0e\xb5\x71\x15\x35\xa7\x45\x67\xc6\x49\x94\x11\xe1\x8d\x6a\x52\x32\x84\x0d\x99\xce\xc6\xec\x71\x3a\xc6\x92\x08\xe3\x18\x0a\x49\x18\xf6\x9f\x79\x27\x64\x13\x4d\x7c\xe3\xcc\xe2\x26\x53\x09\x7c\x2a\x67\xb3\x98\x37\x83\xdf\x6e\xca\x12\x9e\x48\xb2\xa5\xf6\xa6\xbb\xf8\xbd\x34\x31\xd1\xed\xfd\xb2\xe6\x6d\x84\x4b\x77\xdd\xec\xd7\x3c\x62\x4b\xe7\x6f\xd7\xe9\x41\xfa\xc4\xa8\x6b\x9c\x4f\xee\x73\x49\x64\x4d\x38\xbe\xec\x68\x25\xec\x11\x8a\xb3\xf4\x9c\xb2\x19\x4a\x30\x6c\x88\x0b\xd8\xbc\x17\x2e\xd4\x80\xd7\x54\x9e\xda\x2b\x84\x29\xda\xe0\x78\xf7\xa0\x7b\xe3\xae\x1e\x36\xc7\xb4\xba\xea\x3f\xbe\x3e\x05\x4d\xa5\x69\x53\x35\xf7\xf5\x23\xaa\x86\x39\x4d\x1d\x25\x52\x36\xd4\x5c\x89\x6e\xeb\x8b\x44\xcc\x8c\x35\x81\x14\xfc\x75\x93\x8d\x83\xdf\x74\x3f\x93\xbb\xf1\x55\xe1\x32\x41\x1e\x61\x99\x23\x9e\x0f\x92\x4c\x67\xe6\x82\x07\x78\x21\xc9\xd2\x5f\xde\x04\xbf\x5a\x67\x72\xfd\x21\x80\x00\xbe\xcd\x9b\xfe\x85\x2c\x8a\xfe\xaf\xb2\x84\xad\x2e\xd7\x35\x8b\x1f\xdc\xba\xb2\xda\xbd\x46\x0c\x50\x35\x09\x20\x88\xeb\x19\xfe\x49\x92\x54\xf3\x81\x6b\xf8\x59\x1a\x2f\xff\x55\xb2\x0e\x30\xfc\x68\x5d\xda\xcd\xcb\x37\xf9\xf7\xff\xac\xbb\xf4\xa3\xee\xd2\x2a\x59\x77\xf5\xe8\x27\xf9\x9f\x74\xee\xff\xc5\x28\x72\x7f\x91\xd3\xbd\x50\xad\x33\x12\x7c\x09\x6c\x00\x00\x49\xaa\xc0\xb6\x5f\x66\x01\x21\x3e\x50\xcf\x2f\x12\xc3\xef\xb2\x2b\xca\x2b\x27\xc1\x91\x6f\xd5\x44\xc8\xde\xa7\x00\x55\xaf\x4a\x84\x31\x50\x4e\x7e\x93\x93\xf5\x7e\x50\x20\xbd\x21\xc6\xbb\x41\x6f\xd4\x24\x78\x5f\x69\x97\x62\x17\xf5\x53\x4d\x82\x37\x9b\x2c\x0b\xe2\xdd\x03\x09\xb4\xe7\x7e\x59\x07\xdf\x35\x9a\xcc\xfa\xe0\xb0\x44\xde\xc6\x13\x29\x3d\x36\x8c\x27\x32\x56\x7c\xb2\x46\x14\x57\x3b\x9d\x10\xc4\x89\x4e\xe9\x36\x34\xb1\x2a\x20\x4a\x27\x0d\x10\xc4\xbc\x04\x69\x86\xd8\x08\x58\xbc\x4f\x16\x2b\x30\x07\x03\xca\xed\xe2\x1a\x04\xb3\xa0\x1c\xff\x26\x8b\x82\x2a\xb4\x17\x64\xb2\x11\x58\x4b\xf2\x56\xc0\x28\xab\x1f\xe7\x44\x44\x6e\x83\x82\xe0\x3b\xa1\x44\x12\x6e\x5c\xed\x6d\xb2\x0f\x7d\x1e\x60\xd8\x70\x17\xfc\xbc\x6e\x27\xdf\xcb\xb4\xe0\x64\xdf\x5a\xa5\x01\x58\x3e\xa1\xe8\x18\x49\x3c\x1d\xce\x40\x4e\x47\x33\x1c\x53\x54\xb9\x38\x57\x97\x81\xaa\xc8\x1b\xb2\x18\xd3\x9a\xca\xca\x5c\x84\xe1\x31\x12\xd5\xf5\x73\x60\x2e\x36\xe4\xdd\x17\xd8\xec\xcc\xad\x3d\x95\x13\x86\x9c\x39\xed\x9d\xbd\xf1\x93\xd0\xf2\x9e\x7b\x6b\xea\x4b\xdf\x13\xd9\x73\xea\x60\x58\x80\x09\xcb\x0a\x4b\x22\xa9\xb5\x09\x9c\x3c\x8c\x47\xf6\xfa\x66\x9c\x10\x35\xf6\xd7\x1a\x77\xc4\xae\x4d\xbb\x2e\x30\xec\x37\xae\x72\x9d\xe6\x7c\x56\x14\x6a\x1a\xfc\xe3\x1f\x15\x4c\x67\x45\x91\xf0\xa9\x9e\x77\x3c\x2b\xcd\xa5\x7b\x7b\xe1\xe5\x6c\x14\x7f\x1f\xae\xca\x94\xbc\xcc\xa8\x0d\x57\x55\x87\x48\x98\x93\x14\x87\x21\x4a\x78\x64\xa6\x91\x10\x32\x2f\x8a\x0d\x9f\xa6\x7c\xa6\x9f\xb1\xa5\xab\x1b\x32\x84\x9c\xe4\x0a\xf9\x23\x40\x3c\xce\x1f\x6f\xc6\x1b\x17\x32\x76\x41\xc4\x64\x89\x8e\xd1\x9a\xa8\xe9\x66\x66\xa6\x71\x6d\xa6\x71\x89\x4c\x02\x0e\xc3\x45\x33\x1a\x5e\x15\xfe\x78\xd1\x24\x0e\xd4\x50\xcd\x84\xa4\xd5\xe5\x61\xba\xe9\x8c\xd8\x8b\xed\xc7\x7d\xb4\x26\x4e\xb7\x99\x60\x6c\x08\x97\xb9\xfc\x64\xd7\x8f\x1a\x2d\xc8\x82\xa3\x04\x96\xb0\xb6\xf4\x0f\x84\xe9\xc0\xbf\xd0\x07\x6c\x16\x45\x17\xb5\x73\x79\x86\xc6\x57\x08\x63\x58\xef\xad\xf5\x39\x27\xfd\xd1\xd8\x93\xe3\x25\x27\x43\xb8\xe1\x64\xab\x87\xb0\xbf\x87\xb7\x7a\x14\x71\xbf\xbf\xe4\x83\x41\x59\x82\x4d\x6c\x66\xd3\xb5\x19\x1f\x6b\x3e\x5d\xf3\xfb\xef\xee\xb7\x5b\x70\x21\xc5\x0a\xdd\xf0\x96\xc1\xb3\x5d\x16\x0f\xf7\x8d\x4f\xee\x38\xac\x38\x5c\x71\xb8\xdc\xdd\xea\xb7\x9c\x1c\x22\xb6\x5e\x0a\x4e\x0b\xb6\x16\xf3\x82\xad\x93\x39\x8e\xfe\xa2\xa9\x33\xbd\xa5\x97\xd7\x4c\x1d\x32\x7b\x11\xdb\x4b\x8a\xe1\x44\xe3\x8d\x4c\xa4\x46\x82\x86\x0b\xfd\x96\x53\xf5\x72\xb5\xa2\x73\x96\x28\x0a\xa7\x3a\x25\xcd\x68\x22\xeb\xb4\x73\xde\x08\xb1\xf4\x49\xbf\xbc\xa6\x79\x9e\x5c\xd1\xe3\x65\xc2\x39\xcd\xe0\xb3\x4e\x7b\xea\x4d\x01\x8f\x35\x14\xdf\x19\x0c\xf4\x96\xef\x6e\x97\x77\x7c\xe7\x9a\x48\xbd\x1d\xdc\x76\x7f\xc7\xa7\x6a\x36\x76\x1e\xe0\xe6\x05\x0c\x93\x0f\x47\x9d\xd7\xe6\x36\xe0\xf6\x96\x1b\xe6\x0b\x5e\xb5\x33\xea\x64\x73\xc1\x07\x2e\xe1\x4d\xfb\x93\x88\xd6\x22\x57\x6e\x1c\x48\x0d\x82\x00\x4e\xdc\xad\x4e\xa9\xc8\x06\xc1\xe1\x61\x30\x38\xe1\xd1\x52\xe4\x0a\x97\xe3\x0b\x1e\x86\xa7\xbc\x28\xd0\x45\xbb\x96\x9d\x03\xce\x8e\xa0\x5e\x72\x8c\xe9\x6e\x50\x2f\x69\x82\x7a\xf9\x23\x56\x3e\x1d\x0c\x8e\xdb\xab\xa5\xdb\xb8\x44\xc5\xcf\xea\xa6\xb1\x63\xbf\x7c\xd4\x48\x5c\xc2\x1d\x47\xc7\x1c\xc3\x31\x2f\xf5\x2c\x36\xbb\xd9\x04\x69\x69\xc2\x12\x1a\x0d\x8d\xa6\xde\xe7\x1c\x4f\xee\xda\xb9\xcf\x79\x6d\x22\x7f\x64\xda\x2a\xe3\xcf\x3c\x0c\x3f\xf3\x88\x8b\xdb\xdd\xdc\x36\xb5\xca\xf8\x89\x87\x61\xff\x96\x4f\xd0\x15\x27\x68\xc5\x8d\x4b\xc1\x27\x8e\x23\x8d\x99\x1f\xc2\x8a\x9b\x87\x51\x24\xf8\xca\x82\x9e\xbc\xe2\x70\xc7\x35\x22\xbe\xe2\xcd\x29\xd1\x6b\x7d\x84\x71\xdc\x17\x51\x32\x9f\x9f\xdc\x50\x1b\x11\x84\x72\xa3\xe3\xda\xc3\xcb\xbd\x46\xd1\xa2\x10\x11\x5b\xe9\x76\xce\x8d\x44\x9e\x17\x05\x43\x6f\x38\xd6\xe5\x58\x46\x63\xcd\xe6\x34\xe6\x5a\x0f\x28\x10\xdc\x28\xb2\x8c\x59\x45\xba\x4c\xf8\x95\xb9\x44\xf2\x14\x05\x56\xa8\x0f\xda\x21\xfe\x77\xee\x7f\x68\x64\xc3\xd1\x7e\x4d\xcd\x99\x7d\xa0\x5a\xbe\xab\x96\xc9\x74\xab\xb7\xc5\x21\xe5\x54\xbd\x63\x2b\x2a\x36\xca\x82\x16\x86\xb8\x8c\xd1\x1d\x27\x6f\x38\xec\x83\x04\x05\x0e\x9c\x01\xbc\xe2\xd0\x1f\x61\xe7\xfd\x71\xcd\xe1\x8c\xc3\x6b\x0e\x0f\x38\x3c\xe5\xf0\x92\xc3\x33\x0e\xef\x39\x3c\xe1\xf6\x16\xbc\x0b\x0e\x66\xaf\xc7\xa7\xbc\x84\xe7\xdc\x44\xeb\xf9\xc2\xc9\x13\x6e\xa2\x62\xff\x61\xb6\xba\x33\x4b\x3c\xbd\x34\x96\x32\x52\x43\xf7\x17\x7a\xf9\x13\x53\xbb\x5f\xe0\x43\x13\x4f\xbc\x68\x32\x28\xbf\x72\xd2\x5a\x75\x1f\x38\x86\x9f\x38\x79\xce\x91\x80\xe0\x8f\x0d\xdd\xd0\xd7\x2c\x95\x42\x25\xf9\x75\x80\xe1\x67\x4e\x7e\xe2\x61\xf8\x13\xb7\x14\x61\xfc\xb3\xde\x79\xd7\x7c\x4f\xc8\x07\x6a\x42\xf5\xfc\xca\x8d\x55\xca\x07\xee\x2e\x14\x31\x26\xa4\xf4\x33\x53\x08\x8f\xcf\xf8\x18\x6f\x29\x39\xe3\xd1\x42\x83\x42\x3f\x18\xf2\xa4\x31\x3e\x6d\x5e\x51\x6d\x31\xef\x19\x9f\x3c\xe0\x08\xc7\xaf\xb9\x8b\x28\x0f\xaa\x2c\x1b\x2f\xa6\x66\xae\xa8\x44\xb8\x84\x5f\x75\xe6\x66\xa7\x3e\x34\x36\xce\x35\xc7\x65\xfc\x87\xdf\x0c\x4f\x35\x61\x80\x97\xbc\xbe\xfb\xc4\x6a\x26\xde\xd1\xcf\xea\x8d\x98\x53\x14\x04\x26\x76\x7d\xef\x0f\xae\x4b\x46\xc2\x82\x14\xbd\xe4\xb0\x4d\x97\x89\x4c\x52\x45\xe5\xd3\x44\x25\xd6\x7b\xad\xdd\xec\x4b\x6e\x2f\x31\xd2\x8d\x3c\xe5\x25\x8e\x5f\xf0\x30\x7c\xc1\xbd\x68\x38\x41\xcf\x38\xa9\x5f\xbd\x78\x05\xef\x39\x79\xc6\x8d\xd0\xb8\x53\xdf\x7b\x17\x11\xf0\x19\x07\x3d\x0a\x1c\xb7\x3f\x7f\xe1\xde\x83\xd1\x7c\x35\xeb\xec\x47\x0e\xbf\x70\xf8\x8d\xc3\xef\x1c\x94\x20\x7a\xc2\xf6\xb9\xb9\xed\x82\xc7\xca\x5c\xcb\xee\xaf\xab\x1b\xbf\xd6\x53\xf7\x9a\x57\xf7\xef\x9f\xe9\x99\x3e\xe3\x84\x82\x9e\x06\x0c\xaf\x39\xa1\x25\x50\xb1\x6f\xed\x03\xd2\x9a\xf7\xac\xed\x0a\x33\x78\x46\xb5\xcc\x59\xac\x89\x75\x7d\x73\x68\x23\x70\x62\xc7\xcd\xb2\x4f\x92\xb9\x97\x77\x77\x42\xfb\x52\x73\x1b\x00\xaf\x4c\x6a\x1d\x1c\x09\xa5\x88\x56\x49\x9a\xa7\xd1\x29\x12\x97\x20\xc5\x3d\xf7\x88\x18\x76\x44\x58\x4a\xc5\xc5\x7e\xb8\x3c\x73\x85\xca\x0a\x51\x13\xf8\xae\x19\xce\x8f\xd4\xfc\x25\x75\x3e\x72\x52\x44\x8b\xfa\x22\x3a\x34\x04\xe9\x3b\x86\x75\xb7\xa4\x07\x4c\x09\xa2\x0d\xbd\x9a\x91\xdf\x1a\x5b\xcb\xb8\x3f\x72\x37\x6e\x28\x4d\x6b\x77\xb4\x0f\x3e\x8f\xbf\x95\x43\x95\x65\x09\x4c\x78\x0c\x91\x88\x1d\x6e\x24\x15\x24\x70\x60\x0c\x60\x23\xfc\x15\x94\xb9\xf0\x91\xf6\x17\xa2\x1d\x69\x3f\x15\x18\x32\x41\x38\x87\xb5\x20\x22\xaa\x66\x04\x96\xa2\x79\x35\xf4\x8d\x68\xa0\x96\x3b\x61\xa2\x42\x2e\xa8\x32\x51\xe3\x56\xc2\x40\x03\xae\x04\x59\x09\xb8\x14\x6d\x54\x73\x23\x30\xdc\x0a\xd2\xef\xa3\xa5\x08\xc3\xa5\xf0\x37\x46\xdf\x18\xf3\x07\x51\x59\x03\x99\x04\x0c\x27\x82\x1c\x2b\x94\x0a\xd8\x89\x19\xd8\x47\x4f\x51\x26\x70\xbf\x92\x90\x33\x81\xb1\xf9\xf2\xc3\x0f\x84\x90\xe7\xb4\x8e\x27\xa8\x73\x5f\x8a\xa6\x00\x59\x51\x29\x07\x9a\x33\xb3\x5e\x98\xe0\xb6\x51\x5f\xb2\x64\x0b\x64\xc3\x3d\x76\xde\xa3\x9b\x55\x61\x29\xfa\x23\x17\xb4\x30\x13\xd5\xb6\x1e\x61\xd8\x31\xaf\x43\x3b\xae\x74\xed\xd7\x2a\xfc\x33\x52\x7b\xa1\x23\x13\x31\x23\x14\xfa\x48\xed\x1a\x23\x9b\x82\x2d\xb6\x5c\x6f\x8b\x0b\x41\x4e\x44\x51\xf4\xf7\x16\x74\x9f\x86\x61\x7f\xce\xdb\xbd\x96\x4d\x8e\x5b\x73\x89\xe3\x7b\xb8\xe5\xaf\x72\xe1\xd2\x70\xda\x65\x09\x0a\xf1\x26\xb3\x5c\x9d\x6b\xb4\xe5\xc9\x4c\x44\xee\x5e\xfc\x5d\xe7\x0f\x0b\x0b\x8c\xe1\xb4\x03\xcb\x54\x61\xdf\xcd\x45\xda\x5d\x8c\x07\xa2\xc4\x42\x49\x4b\x2d\xb4\x84\x73\xd1\x75\xa1\x4c\x9f\x46\x5c\x28\xb6\x60\x74\x8e\xb7\xf5\xb3\x0f\x76\x6a\x3c\x79\xa8\xb3\x7e\x1f\x2b\xd1\xea\x5e\x15\xb3\x84\xb8\xd8\xa9\xc0\xc8\x88\x10\x6f\x03\x9a\x90\xe1\xd8\xdf\x05\xf6\x38\x19\x3b\xe7\x40\x2b\xe7\x12\x3e\x4d\x06\x83\x19\x64\x84\x4d\x16\x91\xb8\x8e\x17\xd1\x22\x61\x19\xac\x8d\x75\x8a\x59\x37\x30\x37\xcf\x46\xa7\xb6\x24\x0b\x47\x42\xcd\xfc\x64\x13\xc4\x8a\x02\x3d\x24\xc4\x74\xcf\x2d\xd9\x30\x7c\x27\xac\xa1\x6d\x23\x91\x8c\x30\xf4\x87\x84\x90\x6c\x92\x12\x11\xa3\x65\x18\x2e\x3d\xa1\x84\x94\x64\x48\x60\x58\x86\x21\x5a\x3a\xba\x0c\xb9\x35\x6c\x4a\x09\x21\x0b\x8f\xaa\x26\x73\xb4\x16\xc8\xa3\x8f\x83\x74\x99\x30\xde\x4b\xef\x52\x2d\x06\xe3\x18\x6d\xc8\xa9\x40\x29\xc6\x93\x8d\xa5\x3f\xa9\x96\xe1\x71\xbc\xd6\x69\xf1\x1c\x89\xc6\x2a\x58\x86\x61\x3f\x37\x5d\xb0\xad\x19\x93\xd4\xb2\x01\x63\xcd\xae\x37\xa7\x61\x04\x32\x0c\xfb\xad\x51\x7e\xb6\xa3\xb4\x5a\xc8\x4f\xfb\xb3\x6a\xc3\xf9\xb2\xf1\xad\x98\x20\xc4\x49\x1b\xb1\xa0\xc0\xfc\x68\x7e\xd0\x13\x28\x0a\x9a\x04\x27\xb9\xe0\x44\x02\x37\xc7\x18\x36\xab\x82\xfe\xc8\x38\x34\xef\xe0\x22\xc4\x31\x8e\x39\xd9\xba\x0a\x62\x0a\xb6\x78\x2c\x4b\x40\x8c\x88\x69\x20\x78\x30\x50\x33\x3c\x61\x88\xe3\x38\xd8\x70\xeb\xfd\x35\xaf\x06\x11\xd8\xf0\x1a\x5d\x26\x9e\xc2\xec\x79\x91\xd1\xb1\x71\x36\x37\x58\x3e\x0c\xd1\x88\x90\x3d\x2b\xcd\x89\xfb\x8c\x14\x8e\xab\x47\x73\xc2\x85\x82\xf7\xbe\xcd\x9e\xeb\x65\xaf\x6e\xdc\xd8\x9a\x7f\xde\x23\x73\xc2\x73\x0f\x7b\x96\xcd\xc6\x73\xd1\x72\x7c\x9a\x18\x0a\x43\x08\x91\x24\xa2\xbd\x1f\x2e\xc5\xe4\x46\x38\xdf\xac\x6a\xcc\x67\x75\xb3\x1c\x14\x8e\x3f\x09\xd4\x05\x10\xd0\x6c\x81\x09\x44\xdf\x58\xbb\x97\xa2\x28\x4c\x6b\x93\x87\xf1\x08\xdc\x10\xbd\x8a\xc6\x5d\x1f\x6f\x0c\xda\x8f\x45\x97\x18\x3a\x32\xa1\x13\x1a\x2b\xa7\xef\x63\x81\x94\xf0\xee\xdb\x86\xdf\x1c\x52\x55\xd1\x0b\xdb\xf9\xc0\x0f\xa7\xfa\xb0\xac\x3e\x80\x83\x97\x0d\xc3\xf3\x76\x77\x91\x36\x6e\x8c\xaa\x3e\x08\x4d\x18\xf4\x37\xa1\x21\x51\xc2\x51\x57\x21\x6a\xf4\x35\x45\x81\xec\x83\xe6\x5d\x5d\xac\x68\xec\x9b\x24\x12\x1c\x06\x22\x0f\xe1\xdc\xec\x15\xbd\x88\x71\x09\xaf\xba\x6a\xb4\x38\x50\x57\xe6\x6b\x6f\x56\x6a\xd0\x0d\x5b\x20\x45\x6a\xde\xac\x81\x0a\x7a\x69\xc2\xff\x43\xf5\x2e\xf5\xea\x32\x48\x6b\xde\x63\x2a\xa7\xd9\x22\xf0\x2e\xfa\xa7\x02\x49\x3c\x16\x93\x1d\xd4\xe9\x28\x8c\x55\xdb\x8c\x4a\xd3\x8c\xf0\xf7\x82\xbc\x15\xe8\x95\xd0\x0b\x42\xe3\xb2\xb7\x02\x1d\xf9\x97\xc6\xe5\xfd\x47\xc2\x5e\x52\x62\xc3\xad\xe2\x18\xed\x8f\x7e\x54\x8d\x7e\xb4\x57\xb2\x6a\xd9\xd5\x50\x8e\x4f\x44\x18\xa2\x4c\x74\x07\xb0\x6a\x12\x0c\xa4\xda\xea\xaf\xee\x9b\xc2\xa5\xb4\x2a\x65\x24\x27\x72\x10\xf4\x4c\xdc\xac\x41\xc0\xf8\x8d\x53\xf0\x04\x2e\x38\x05\x64\x02\x34\xa7\x65\x2f\x36\xfb\xb1\x11\xf2\xdb\x5f\x91\xb8\x11\xee\xd5\xb8\x5c\x21\x07\x1c\x7b\x89\x89\x87\x8e\x7d\x6b\xe0\xd9\x23\xe1\xaf\x94\x30\x3c\x2d\xfa\xb1\xad\x1a\xc8\xdd\x67\x6b\x74\x96\x0a\x70\xe0\x00\x8f\x78\xf5\xb3\xdd\x2a\xfa\xa9\xc2\xce\xf1\x74\x06\xd5\x6a\xd7\x5f\xac\xeb\xa8\xe7\x41\x9d\xf0\xd0\xba\x87\x62\x0f\x3d\x57\x11\xd7\xed\xad\xa9\x54\x99\x89\x34\xd7\xa6\xca\xc6\x05\x70\x28\x13\x0d\x5d\xf8\x56\x13\xf2\xb8\x03\x5f\x5a\x2d\x32\x59\x38\x20\x41\x42\x56\x02\x21\x49\x32\x51\x9f\x10\x21\x41\x8e\xdd\x6d\x10\xed\xcb\xcd\xec\x21\x06\xe2\xe4\x18\x09\x3c\xbd\xe4\x33\x3c\x91\x31\xa5\x1a\xbf\xd7\x81\x6d\x23\x71\x4d\xba\xee\xb6\x2b\x0a\x05\x89\xa1\xda\x5d\x86\xc9\x34\x0c\x29\x24\x8e\x68\x13\x8b\x46\xec\x8b\xbf\x4e\x84\x39\x5c\xa4\xb7\x1b\xab\x09\xa0\x53\x49\x61\x18\xf6\x09\xb3\x2b\x39\x0c\xcf\xdd\x7c\x31\xbd\x96\x21\xa9\x45\x88\xb4\xed\xd4\xbf\x13\x6a\xd1\xf0\x88\x5e\x42\x36\xb6\x47\xbf\xec\xcb\xea\x46\x40\xfb\x91\x83\x5d\x69\xb8\x2d\xbc\xa9\xb6\x64\xe5\x77\xe6\x8e\x78\xe5\xf7\x28\x35\x32\x56\xb4\x20\xab\x4e\x7c\xac\x91\x48\x26\x8a\x42\xff\xfe\xc6\x27\xba\xdd\x5f\xf4\xf7\xf8\xca\x88\x5e\xd0\x15\x08\x5f\x23\xa2\xdf\x39\xe1\x8d\x7b\xdd\xad\x64\x4c\x15\xe2\xed\xcb\xde\x97\x94\xb7\x6e\x2c\x69\xbb\x3f\x36\xb5\xd3\x99\xd8\x75\xaf\xf8\x9d\x7b\xe4\xe3\x58\x0b\x0b\x3b\x1f\x55\xa6\x71\xc6\xd3\xd5\xcb\x3b\x61\x2f\x39\xa8\x6f\x0a\x69\x47\x7d\xf5\x47\x8a\xc3\x12\xb6\x46\x36\xea\x94\x41\x05\xca\x04\xdc\x79\xff\x06\xd1\xb8\xe3\xcf\xa0\xb8\x3f\xb9\x8c\xe4\x44\x94\xb0\x75\x68\x39\xce\x44\x69\xa2\xf8\x1b\xe4\x62\xd6\xcc\xbe\xd0\x2f\xac\xa7\x15\x79\x1b\x2d\xc6\x49\x18\x6a\x81\x80\x4e\x05\x9f\x85\xa1\x44\x14\x04\xff\xd6\x9b\x56\x8c\xe6\xbc\xc4\xa5\x11\x18\x7f\xe3\xba\x5e\xfd\xd4\x38\x62\x4d\xc5\x6e\x14\x68\xd3\x59\xbb\x78\x3a\xae\x24\x59\x79\x8c\xd7\x70\x60\xb6\x21\x60\xf4\x14\x55\xeb\x19\x68\xb5\x0f\xca\x6f\x6b\xcf\x2c\xe2\x7b\x60\x5f\x45\x2e\xfb\x93\xaa\x2e\x74\x55\x49\x96\x75\xf4\xdb\x9d\xd8\xaf\x84\xbd\x19\xab\x92\xfb\x41\x98\x67\xc3\xc9\xb3\x5d\xa6\xc9\x85\x08\xa2\xa8\xb2\x18\xc0\xe6\x66\x77\x2d\x3e\x40\x4a\x46\xe3\x4c\x2f\xc3\xbd\x23\xb8\x0d\x49\x06\x03\xcd\xac\x8f\xc6\xee\xc6\x76\xaf\x3d\x4a\x07\x03\x1f\xfe\x5e\x63\xff\x5d\x41\x51\x63\xff\xa2\x40\xb9\x41\x3b\xd3\xcd\x8c\x28\x38\x38\x48\x8b\x82\x23\x66\x0c\xe7\x8d\x2f\x79\x9d\x54\x36\xee\x81\xf7\xcc\xa8\x40\xcc\x71\x37\x4d\x6d\x86\x4c\x52\xfa\x6d\x40\x31\x80\x10\x5d\x80\x10\x6d\x40\x74\x8c\x5d\xec\x8e\xac\x86\x32\x77\xee\xa7\xbe\xbf\xc2\xf7\x97\x23\xb1\xdf\x5f\xa7\x1f\x7b\x23\xf6\x11\xa2\x23\x16\xc6\x47\xa6\x8e\x9d\x69\x77\x9e\xf3\x8b\x31\x07\xee\x11\xbb\xe2\x42\xd2\xe3\x24\xa7\x2e\x99\x05\x36\x38\x6c\xa6\x58\xc6\xb8\x4f\x5d\x99\xd4\xb9\x50\x47\x99\x2f\x9f\x9b\xa4\x0d\x67\xa9\xf1\xeb\x30\x69\x1b\x93\x96\x2b\x96\x5e\xdf\xb9\xa4\xbb\x00\x03\x6d\x44\xa8\xba\x16\x2d\x67\xd7\x33\x7a\x75\xf2\x79\x6d\xb1\x94\xee\xfa\x99\x80\xd7\x02\x1e\x08\xb2\x7d\xff\xe6\xfc\xfd\xdb\xb7\xa7\x67\xef\x4e\x9e\x5e\xfc\x16\x77\x5d\xad\x72\x2d\x50\x90\x04\xa0\x9b\xa8\xc7\x98\x25\xb9\x32\x57\x37\x92\x87\xe0\x8e\x4f\x23\xfa\x99\xa6\x28\x48\x2e\xd3\x79\x60\x96\xc6\x93\xb3\xd3\x9f\x4e\xde\x5c\x1c\x1f\x9d\x9d\xbc\xbb\xb7\xe6\x7f\xca\x00\x82\xab\x6f\xac\x3b\x57\x32\xb0\x8c\xf2\x53\x41\xec\x98\x1a\xd8\x5e\xe7\x81\x97\xc2\x69\x77\xf6\x1d\x64\xe1\x99\x20\x4f\x05\xbc\x17\x04\x9d\x09\x72\x98\x1c\xc2\x6b\x41\x0e\x2f\xff\x72\x78\x05\x4f\xdd\x6a\x39\x13\x10\x24\x01\xae\xde\x5f\xbb\xf7\x61\x9f\x90\x33\x51\xf7\xac\x28\x74\xca\xeb\x46\x0a\x86\x27\x82\x3c\x10\x51\x0b\x9e\x45\xf1\x40\x44\x4d\x30\xc0\x73\x41\x2a\x15\xe6\x21\xc2\x93\xc9\xa1\x1b\x5a\x80\xa7\xa3\xd9\x18\xbd\x17\x45\xf1\x5c\x14\xc5\x13\xa1\x05\xa7\x67\x9d\x5a\x53\xc7\xc9\x98\xfd\x92\x90\x27\xc2\xdc\xdc\x6e\x16\x03\xa4\xe4\x8d\xeb\x39\xc3\x26\x16\x4e\x6e\x02\xab\x43\x4e\x86\xb0\x20\xaa\x71\x5b\x18\x3a\xd0\x82\x22\x4a\x49\x5a\xdd\xb1\x1f\xdc\x05\x10\x68\x79\xd7\x07\x21\xd3\x8b\x37\x0c\x51\xea\x96\xf1\xa2\xbe\x02\xca\x39\xad\xb2\xe6\xf8\x1b\x2f\x8f\x87\x61\x88\xfa\xac\x5e\xdf\x45\xc1\x9a\x8b\x3d\xf8\xa8\xf9\x23\xa2\xa6\x8d\x32\x07\x23\x73\x23\xec\x86\x04\x68\x12\xf7\x82\xc1\x66\x10\xe0\x00\x16\x24\xe8\x05\x83\x05\xe4\x83\x81\xbf\x9a\xda\xad\xe5\xe0\x9f\x68\x12\xfb\x6c\x29\xc6\xf0\x5c\x18\x51\xb3\x95\xc5\x7c\x7f\x80\x26\xfd\x8f\x1f\x73\x97\xed\xbd\x30\x12\x4b\xab\xeb\x9c\xf8\x09\x4f\x26\x32\x66\xb0\xc0\x90\x4c\xf8\x04\x69\x19\x7f\xbd\x51\xc4\xfd\xba\x51\xe7\x18\xf8\x74\x38\x23\xfa\x4f\x23\xc9\x82\xad\x59\x71\x13\x24\x03\x9b\xdd\x1d\xe6\xc7\x8d\x2f\x64\x18\xeb\x3e\x69\xfe\xa5\x99\xca\x1c\x1e\x99\xb8\x8a\x07\x8d\xf2\x31\xb5\xc3\x35\x31\x55\xbd\x25\x51\x18\xbe\x74\x83\xe0\xc6\xac\x03\x76\x35\x50\x82\x8c\xc6\x62\xcf\x1e\xf8\xe0\xe1\x58\x0c\x06\xb8\xe2\x81\xeb\x33\x4e\x31\x0b\x43\xc4\xa7\x62\x46\x6a\x73\x2e\xe0\x0e\x1d\x7e\x11\xe4\x99\x68\x99\x47\x59\xa0\xef\xdb\x47\x1d\x46\x76\x8d\xf7\x09\xf9\xa2\x49\xa2\x7e\x8e\xbf\x08\x57\xcf\x1f\xbb\xea\xe7\x0f\x82\x74\xdc\x93\xa3\xc8\x61\x74\x58\xa3\x08\x5d\xc7\x3e\x3a\xae\x6f\x19\x54\x91\x71\xb8\xc8\xc9\x36\x89\x83\xbf\x05\x25\xa8\x12\x82\xbf\xe9\x35\x17\x04\xd5\x7a\x57\x10\x3c\x78\x94\x3c\xb6\xc8\xea\x85\x20\xc1\x83\x61\x40\x08\x09\x92\x3a\xcb\x61\x74\x08\x3a\x19\xc3\xaf\xb6\x9f\xee\x43\x80\xe1\x27\x41\xfa\xfd\xc3\xe8\x70\xfa\xab\x86\x93\x89\xa6\xe5\xde\x2c\xba\x34\xa5\x7e\xbe\x6f\x30\x68\x12\xe3\x43\xe3\x78\xa5\x87\x32\xde\x1f\x51\xc5\xd1\x34\x9c\x58\x1b\x77\x39\x3b\x35\x6c\x90\x5c\x06\x2e\xdc\x6b\x75\x90\xd0\x7b\xd8\x27\xc4\x07\x10\x2b\x8a\x20\xd1\xc3\x96\xd3\xe1\xac\x28\x82\x4b\xfb\x3c\x9a\xe9\x21\xff\xd8\xc9\x7b\xd7\x16\x9e\xb5\x8a\x4c\xa3\x1b\xb7\xf7\x6f\x10\xc5\x5a\x78\xb2\xc6\xe0\x29\x61\x95\x23\xb0\x43\x2d\x8f\x86\x45\x91\x3c\x26\xe9\x44\x4d\x82\xc0\x89\x30\x31\x32\xce\xbb\xcb\x44\x1e\x8b\x39\x3d\x52\x28\xc1\xf8\xd1\xf7\xdf\x3f\xfc\xfb\x0f\x45\xc1\x1f\x7f\xff\xc3\x77\xa3\xbf\x17\x45\x32\xd0\x18\x29\x2d\x0a\x24\x76\x32\x0f\x46\x3a\xfb\x0f\xdf\x3d\x1c\x16\x85\x78\xfc\xfd\xdf\xbe\xfb\xeb\x77\x13\x35\x61\xde\x19\x35\xc1\x31\x8f\xf5\xbb\xdd\x8b\x09\x24\x83\x87\x38\x16\x07\xa6\xc4\x00\xf1\x03\xd3\xd2\xa3\x47\xa3\x21\x1e\xfc\xf0\xfd\xf7\xdf\xfd\x50\x96\xf0\x8b\x20\xdb\xd4\x54\x1f\xff\x28\x90\xe6\x7b\x6d\x65\xe6\x6d\x88\x4b\x57\x37\xfc\xb6\xaf\x35\xf4\x33\xa3\x25\xf6\x5f\x2c\x99\xf5\xdb\x72\x84\x4b\xf8\x7d\x57\x5f\xe4\x03\x22\x9a\x89\xee\xbe\xc5\xab\x0a\x15\x51\x05\x68\xa2\xc6\x6a\xc8\x5b\xda\x54\xb2\x24\xdf\xd7\x21\xd8\x6d\xd7\xd3\xb5\xf7\xac\x75\x76\xcf\xf6\x90\xce\x7b\xb9\xd0\x29\x8c\x5f\xf5\x84\x5a\x52\xd9\x53\xcb\x84\xf7\x12\xef\x7f\xd0\x13\xd2\xdc\x8e\x50\xd3\x5e\x5e\xea\x46\xdd\x46\xee\x13\xb2\xee\xba\x92\xcf\x7d\xff\x37\xd3\xa2\x31\xa6\x9b\xf7\x84\x96\xd1\x53\xb1\x5a\x27\x8a\x5d\x66\xb4\x27\x69\x4a\xd9\x8d\xb9\x21\xc9\x55\xfd\x45\xd4\x43\x2b\x41\x31\xf2\x3a\x51\xcb\x68\x95\x7c\x06\xea\x9f\x19\x07\xe9\x9e\x17\x99\x10\x12\x38\x23\x87\x1f\x1f\xa0\xe9\x83\xf0\x3f\xfe\xcf\xac\xf8\x38\xff\x38\x9f\x14\x8f\xa6\xff\x7c\x3c\xfb\xcb\x63\x7c\x78\x05\x62\xff\x33\x3e\xbc\xea\x8a\x9a\x65\x39\x46\x7b\x79\x64\xd2\xb5\x23\x69\xc3\x61\x9e\x6a\x8c\xb7\xbf\x13\xff\x56\xc2\xdf\xfa\x24\x08\xa6\x6a\xe6\x02\x99\xa6\x24\xd9\xbb\x9a\xca\x56\xd6\x1f\x81\xd4\x0c\x86\xbf\x91\xce\xec\x50\xa7\xca\x45\x36\x36\xc6\xce\x81\x8d\x8d\xd3\xe4\x13\xa6\x7f\x74\x76\x41\xea\x6c\x8b\x2c\xb9\xca\x49\x10\x80\xd4\xfd\xd4\x28\x47\xcc\x34\xbb\x7a\x1f\x02\x31\x4a\xba\x4d\x96\x95\xa6\x80\x39\xa5\xee\x53\xcd\xfc\xb2\x05\xea\x27\x45\xd1\x4f\x8b\xa2\x42\x6b\xae\x8b\xfd\x0f\xa2\x28\xfa\x2f\x44\x51\xfc\x24\x70\x51\xb4\xfa\xdf\xff\x59\x78\xc1\xc2\x36\x0e\x39\x91\x48\x80\x81\x4c\x5b\xaa\x86\xf6\xf5\xf5\x96\x43\x23\x9a\x0c\x4c\x34\xe4\xc4\xc4\x29\xd7\xbc\x56\x68\xd3\xba\x13\x3f\xde\xf9\xaa\xaa\xdb\x80\x9b\x5f\xcd\xe5\x8d\xdb\xb3\x93\xb7\xaf\x8e\x8e\x4f\x2e\x7e\x3a\x39\x79\x7b\x7e\xf1\x60\x18\xbf\x10\x70\x76\xf2\xfc\xe4\xd7\xb7\x17\xfe\xd3\xf9\xfb\x27\xe7\xef\x5e\xbe\x7b\xff\xee\xe4\xfc\xe2\xfd\x9b\xa7\x27\xcf\x5e\xbe\x39\x79\x7a\x71\x7c\xf4\xf6\xdd\xfb\xb3\x93\xf8\x27\x2d\x07\x2f\x48\xae\x29\x67\x46\x72\xcd\x8b\x51\x85\x76\x39\x49\x50\x9a\x35\xa0\x0a\xed\xf2\x9e\x20\xe0\x21\x21\x74\xd2\xde\xf9\x6d\xff\x60\xe5\xb5\x6f\x9d\x37\x46\xb7\x32\xe1\x12\x97\x3c\x0c\x8f\xf6\xda\xd1\xe0\x0e\xf2\x65\xb2\x0a\x4c\x68\x8d\x9a\x1e\xc1\xc3\x7d\xd0\xfb\x75\xcf\xa3\x7f\x05\x14\x26\xd4\xd3\x2e\x3c\x21\x21\x62\x12\x3c\x08\x62\x4d\xd6\xdc\xaa\x9e\x56\xed\x35\xda\xba\x71\x12\x11\x23\x56\x65\x26\x27\x8e\x02\xc8\xfa\x3e\xb2\xda\x90\x94\x4d\x98\x9f\x54\x01\x1c\xc7\xce\x3f\xdb\x91\x1a\x81\xed\x42\x80\x3d\x8b\x80\xbe\xe6\x79\xf5\xba\xdc\x89\x6d\xc2\xc3\xd0\xb0\xb5\xbc\x62\x61\x13\xec\x17\xab\x44\x3e\x88\x0c\x70\xb3\xf8\x37\x56\x97\xed\x1d\x0c\xdc\x21\x81\x0d\x9e\x69\x8e\xf1\x6b\x7e\xd7\x0c\xa9\x53\x7b\xc7\xc7\x59\x51\x20\xee\x73\x72\x67\xb4\xb3\x26\xb9\x63\xdf\xc6\xe6\xb2\x7e\xd3\x87\x39\xc9\xbd\x20\x37\xce\x9b\xfc\x5f\xe9\x35\x9d\x4b\xcd\xc2\xb8\xf3\xbf\x1b\xf2\xbb\x40\x39\x2c\x6c\xec\x51\x6b\x44\x7d\x83\x2f\x25\x4d\xae\x75\xca\xd2\xc9\xf2\x18\xfa\x6b\x97\x1a\x34\x8c\xbf\x6f\xa6\x43\xc3\x4e\x37\xdb\xf9\x4d\xa0\x05\xe4\xaa\x99\x86\x61\x8e\x71\xd5\xfc\x1d\xac\x34\x62\xb9\x22\x43\xb8\x24\xc3\xf1\xe5\xa3\xa5\x27\xee\x97\xc6\x67\x8c\x2c\xa7\x97\xb3\xea\x6a\xad\xdb\x56\x5b\x70\x42\x14\x43\x94\xa1\x54\xa1\x1b\x0b\x7e\x0c\x0b\xcf\xef\xc2\x10\xc3\x05\x99\xce\xe0\x94\x8c\xc6\xa7\x8f\x6e\xaa\xe8\x96\x83\x01\xbe\x68\x6a\x25\xb4\x4c\x72\x47\x6e\xa6\xa7\x33\x3c\xb9\x8b\x5d\x03\x77\x0e\xaa\xe7\xe4\xc6\xf1\x75\x1a\x02\x99\x85\xd3\x27\x32\xbd\xad\x3c\xe8\x2f\xe0\x44\x43\xac\x5a\x60\xe7\x61\xf8\xc9\x56\x7f\xee\xc2\xbe\x54\x33\xd5\x36\xbe\xfb\x84\xb1\xf1\xda\xef\x7d\x26\x29\xba\x85\x05\x9c\xc0\x05\x9c\xeb\x95\x72\xf2\x98\x5c\x85\x21\x5a\x0d\xc8\xc2\x31\x18\x57\x70\x82\x07\x9f\xe1\x8a\x9c\x0c\x6e\xfd\x00\xfd\xa1\xf5\x6a\x50\xe5\xc2\xe5\x6c\xdc\xf4\x97\x68\x3a\x8f\x58\xc7\x11\x3e\xf0\xd6\xbd\xb0\xa9\x5d\x66\x72\x22\xd8\xfe\x4e\xd1\xd2\x01\xb9\x36\x61\xfc\x72\xc2\x19\xf6\x71\xf4\x13\x68\xdf\xf5\xe0\x2a\xcf\xc7\xf9\x2d\x53\xe9\x12\x25\x9e\x4b\x1a\x62\xbc\x4d\x93\x9c\xea\x5d\xec\xc8\xd2\x83\x60\x6c\x52\x42\x9f\xd2\x53\x36\xe1\xff\x54\x09\xb2\x11\x4f\xd4\x7e\xfb\x8f\xbd\x6f\xa9\xfb\xf2\x28\x88\x73\xc2\xa6\x89\x4b\x1e\xc1\xc1\x08\xcf\xc6\x76\x6d\xce\xe9\x22\xd9\x64\x2a\xd6\x7d\x5b\x90\x41\xa2\x27\x50\x4f\xf6\xa2\x36\x8a\x61\x0b\xb4\x78\xbc\xb1\xdd\xcf\x88\x64\x68\x71\x38\xaa\x6f\xbe\xb7\x27\xd3\x34\xce\x1e\x91\xcd\xa4\x5a\x2b\x62\x9a\x1d\x8c\x66\x93\x6a\x90\x23\x1c\xdb\xa4\x41\x33\x89\x96\x39\x11\xd3\xc5\xc1\xa8\x8a\xac\x50\x55\x90\x6b\x26\x35\x2f\xad\xe2\xd4\xde\xc5\xc7\xfe\x34\xfa\x73\xe5\xf8\x64\x84\x4d\x1b\xd2\x65\x57\xac\xd2\x42\xe5\x70\xcc\x1f\x79\x46\x7c\xcc\x07\x03\x6c\x82\xeb\xd4\x02\x16\x6f\xc8\x2b\xb5\x27\x4e\x59\x42\xc2\xc8\xae\x33\x41\xe5\x97\xd0\x58\x53\xac\x11\xe6\xc9\xfb\x26\x98\xde\x18\x37\x90\x84\xd5\x66\xdd\xbe\xc8\x86\xed\x7a\x25\x19\x87\x8d\x3a\x43\xce\xbe\xf5\xea\xac\xaa\xc8\xa2\xab\x1b\xde\xcc\xf5\xde\x9e\x64\xac\x32\x31\xf1\xe6\xf7\x5d\x0c\x6f\x23\x5a\x95\x19\x2e\xae\x61\x3f\x04\x5e\x5d\xa2\x32\x96\x8f\xf8\x58\x0e\x06\x98\x36\x2e\xb6\xb4\x57\x83\x81\xb2\x97\x5c\xf4\x5a\x17\xc7\x28\xbc\x07\xe0\xb6\x4d\x73\x75\x2d\x28\xae\x02\x9d\xb8\x4a\xc5\x0c\x04\x28\xab\x47\x5b\x33\xb2\x75\x41\x7d\xe2\x94\x81\x7b\xb4\xf7\xd8\x75\x50\xf9\xf6\x2c\xd9\x6c\xbb\x10\x02\x96\xdf\x5b\xbe\x31\x23\x7d\x33\x95\x61\xe8\x53\x9a\xec\xa3\xfb\xda\x3a\xc3\xea\x74\x86\x69\x65\x89\x7c\xc3\x61\xd8\x9d\xee\x7a\xf7\x4c\xc8\x95\xb1\x63\xec\x18\x5f\xc7\x1d\x29\x3e\x7b\x18\xb6\x8e\x43\x7d\x72\xd9\x06\xda\x07\x46\x6f\xbf\xb1\xe2\x46\xa9\x30\x6c\xbc\x44\x2c\xd7\xb5\x4c\xf6\x93\x90\xc2\xb1\xb1\xff\xbc\xac\xc6\x69\x9f\x9a\x1d\x6b\x14\xd3\x7d\xdb\x75\x06\xfa\x4a\x60\x35\x9d\xdd\xba\xf0\x77\x65\x77\xc1\x29\xda\xd9\xed\x22\x8c\x73\xbd\x74\x2a\x9f\xa9\x78\xa3\x5f\x9f\xb6\x6f\x17\xdf\x5b\x42\xfa\x7b\xc7\xda\x79\xc6\xb2\xaf\x16\xd3\xdf\xbb\x96\x5c\x26\x2e\xbf\x56\x4c\x7f\xef\x6a\xcd\x95\x88\x17\xcc\xc2\x8a\x26\xab\xae\x75\x9b\xdb\xc5\xaa\x51\x45\xb4\x66\x6b\x6a\x0a\xbf\x3f\x7b\x75\x4e\x13\x99\x2e\xdf\x26\x32\x59\x75\x79\x64\x76\x4d\xfb\x4e\xa9\x9d\x65\xb5\xf3\xd5\xce\x60\xc2\xe7\x89\x9c\x3f\x91\xe2\x36\xa7\xf2\x84\xdf\xec\x9f\x4d\xa1\xae\x78\x48\xd5\x95\xd5\x45\x11\x9c\xd1\x24\x55\x6f\x8c\x3d\x9f\x16\x8c\xab\x4f\x1a\x7f\xcc\x37\xa9\x46\x91\xf6\xab\xb5\x57\xbf\x37\xcf\x79\xe7\x17\xcd\xa9\x7d\xed\x7e\xa1\xae\x6f\xde\xae\x52\xf3\xc7\xee\x92\xdb\x8c\xc1\x8a\xca\xab\x7a\xfe\x7b\xaa\x29\xdf\x56\xa9\xd2\x72\xec\x7b\x48\x9d\x4e\xf9\xac\x03\xd7\xcb\x89\xfe\x40\x14\x72\x47\xef\x31\xb5\x37\xcf\x56\xe7\xf3\x64\x08\x62\x3f\x32\x1c\x7f\x24\x0c\xd1\xcb\x18\x6a\x92\xbc\xc6\xd9\x3d\x2d\x61\x4e\xe9\xfa\xf5\xff\x58\x9f\x3b\xb2\x29\xa4\x85\x6f\x1c\xff\xdf\x19\x0e\xfd\xac\x28\x9f\xef\xdd\x1d\xef\x65\x3c\x86\x68\x8b\x59\xe3\x78\x6b\x6f\xf1\xed\x76\x55\x9c\x30\x66\x38\x82\x98\x1a\xcb\xe5\x12\x94\x64\x9d\xdb\x4b\xd5\x0a\xcb\x7f\x7e\xcc\xff\x72\x08\x41\x80\xeb\xa4\x8f\xf9\x5f\x1e\x98\xa4\xe6\x15\x26\xf3\x26\xa1\xa7\x5c\x0b\x25\xef\xcf\x5e\x56\x71\xb9\x90\x6a\x54\xf0\xef\x7f\x1d\x1e\x5e\x31\x08\xfe\xd1\xac\xf5\xdf\xbf\x3b\x32\x89\x71\x2b\xf1\xe1\x5f\x0f\xaf\x20\x78\xd0\x4e\x3b\x36\x19\xa1\x9d\x38\xd4\x19\x07\xad\xb4\xef\x9f\x98\x8c\xd3\x76\xe2\x53\x93\x38\x0b\x2c\xc5\x5d\xb2\x6e\xe3\xcc\xca\x79\xcf\x5a\x63\x6a\x6e\x52\x62\xae\xa5\x3e\x47\xfe\xb5\x1c\xc6\xa2\x3d\xac\x83\x28\xc6\x9c\xd4\xec\x15\x6a\x5c\x89\x25\xb4\x38\xb6\x66\x55\x6c\x09\xba\x6b\x34\xe0\x38\x97\x30\xb4\x55\x57\xc1\xfd\xe8\x80\x04\xd3\x59\x10\x1b\xce\x05\x1a\x35\xec\x9c\x51\x9a\x52\x4f\x6d\xcc\xcc\x89\x09\x91\x2d\x5e\x9e\x9f\xfa\x8e\xc4\xe6\x73\xe5\xf0\x6a\x38\xa1\x1f\xcf\x4f\xdf\x44\x96\xf2\xb0\x85\x71\xbc\x02\x61\x05\x9c\x39\x43\x14\x0f\x02\x12\x0c\xcc\xd4\xda\xc8\xcf\x58\xb3\xa1\xc2\xf8\x5e\xa3\x20\x0c\x70\xa9\xd9\xad\xda\xfd\xbb\x3a\xe8\xf9\xb7\x00\x8f\x0f\x46\x4e\xce\xd0\x1d\xf1\x5c\xbf\x09\xbe\x3e\x20\xf6\xb4\xa8\x51\x60\x12\xe0\x49\x30\x09\x62\x5d\xe9\x80\xd7\x51\x32\xea\x05\x76\xc3\x7c\xb8\x07\x17\xd1\x3e\x27\xd3\x59\x79\xc3\x9a\x91\x58\xf3\x7b\x02\xfd\xb6\x8a\xd9\xe1\x6d\x17\x9b\x6c\xc1\xb2\x8c\xce\x63\xe5\x2c\x8b\xe8\x5c\x6f\x0c\x68\x67\xf6\x71\x09\x4b\x68\x35\x65\xcd\x4f\x5a\xb6\xd5\xcd\x62\x53\x35\xf3\xd1\xba\x1b\x49\x46\x87\x81\x77\x6a\xf2\x57\xff\xee\xcc\x63\x35\xc3\xcd\x3a\xda\xf1\x9d\x1c\xab\x46\xc3\xd0\x5d\xdc\x64\xb5\xf8\x77\x8c\xdc\x30\x58\xed\xaf\x6b\x07\x8c\x46\xe5\xcd\x33\x1d\x89\xb7\x8a\x48\x6f\xe0\xaa\xb1\xc3\x15\xeb\xd0\xe7\xf7\x4d\xf0\xd1\xbe\x8a\x2e\x2e\x8e\x8f\xde\x1c\x9f\xbc\xba\xb8\xc0\x8d\x59\xba\x64\x95\xcb\xa2\x96\x65\x9c\x86\xb7\xf6\x5c\xea\x2d\x13\xeb\xce\x7a\x49\x29\xef\x79\x22\xd4\xe0\xe3\x6f\x3b\x2b\x30\x1e\x49\x7f\x52\x85\x1e\xfb\x09\x23\x97\x0c\x2e\x18\xb9\x65\x75\x9f\x4e\x99\x73\x34\x3c\x61\x5a\x42\xab\xfa\xe2\xb7\x78\xc3\xaf\x4a\xc1\xd0\xe8\x47\x6c\xd6\x4b\x56\x14\xfd\x13\x86\xc3\x70\xbf\xd0\x09\x6b\xd4\x04\xbb\x55\x34\x5c\xa3\x4f\x98\x49\xaa\x7d\xa1\x5b\xdf\x9a\x92\x40\x2b\xd7\x4e\x0e\xe7\xef\x3f\xc4\x65\x59\x76\xa0\xf6\x85\xb9\xb9\xc5\x75\x21\x0c\x51\xab\x77\x9d\x96\x43\x0b\x19\x35\x81\x1a\x86\xe8\x82\x91\x66\x8a\x53\x91\x30\xf8\x64\x8c\x42\x3e\x33\xd2\x1f\xc1\x31\x23\x07\xa3\x46\x04\x53\x3d\x59\x9f\x59\x18\x9e\xeb\x7d\x6e\xb3\x9c\xfb\x13\x9c\xc9\x27\x46\xce\x99\xd7\xa4\x7c\x62\x38\x36\xa5\xe1\x93\xcf\x10\x86\x6f\x19\x6a\x5e\x1f\xa0\x5f\x0d\xf6\xfd\xcc\xfc\xc1\xd6\x29\x43\xef\x18\x1e\xeb\xaa\x87\xe3\xda\xb5\xb2\xaa\x63\x4c\xc7\x56\x7e\x3e\x67\xe4\x93\xeb\xeb\x78\x30\x38\x66\x8f\xe8\x18\x9f\x9b\x9e\x4d\x8f\xd9\x2c\x92\x1b\x8e\xf0\xd8\x76\xa0\x51\xbc\x3c\xb7\x8a\x45\x37\xbc\xe6\x72\x67\x0b\x0d\x11\xd2\x86\x89\x9b\x95\x66\x9a\x8b\xf4\x64\x33\xdf\xea\x15\x73\xa1\x57\x4c\x57\xb1\x1d\x08\xc3\x6e\x35\x7a\x65\x5c\x30\x13\xd6\xa3\x63\xb1\x5c\xb4\x16\xcb\xfe\x52\xb9\x60\x3b\x37\x21\x96\xa8\x75\x1f\xe2\x11\x6b\xf8\xcc\x2f\x36\xdc\x9b\xd8\x25\xc6\x6d\x9c\x96\x47\x4d\xac\x24\x37\x2d\x7b\x3d\x5f\xc6\xa9\x15\x6c\x17\xaa\xc2\x4d\x04\xf0\x4a\xcf\xa1\xd9\x8b\x6f\x18\x79\xc5\xe0\xda\xfc\x3d\x33\x7f\x5f\x9b\xbf\x0f\xcc\xdf\xa7\xe6\xef\x4b\xfd\xd7\x46\x89\x61\x64\x21\xa3\x35\x95\x0b\x21\x57\x9a\xf9\x2e\x8a\x6d\x09\xef\x19\x79\xc6\x22\x2e\x6e\x8b\xe2\x19\x8b\x56\xe2\xcb\x1b\xff\x98\xfb\x27\xe1\x1f\xac\x63\xb3\x79\xdb\xe7\xc7\x35\x2e\xd1\x84\x11\x47\x57\x76\x5f\x20\x87\x2d\x9f\x30\xe2\xbf\xd9\x30\x2d\xcc\xba\x7a\xbf\x63\xe9\x75\x87\x51\xd1\xfd\x0a\x9a\x03\x1b\x2d\x60\x3f\x22\x47\x43\xc5\x30\x1a\xcb\xfd\xf8\x59\x46\xcd\x30\x95\x07\xa3\x9d\x90\xc7\x9f\x9c\x79\x95\x69\xd2\xce\x1d\x06\x4d\x53\xab\xd5\x5b\x14\x9f\x59\x51\x9c\x32\xf4\x96\x99\x33\x30\x95\xd1\x38\xb8\xb4\x62\x49\x00\xee\xc1\x1a\x05\xde\xc4\xdb\x12\x12\x79\x75\x13\x4f\x67\xe0\xee\xf5\x8c\x83\xc0\x3f\xe6\xfa\xb3\xe0\xf1\x1b\x06\xc9\x7c\xee\x5d\x48\xe3\x6b\x06\x82\xa7\x34\x3e\x63\x20\x16\x8b\xf8\x35\x03\xeb\xa9\x5a\x65\x78\xe0\x53\x8e\xb2\xcc\x27\xe6\xf1\x53\x06\x74\xc5\x54\xfc\x92\xc1\x25\xe3\xf3\x5d\x79\x77\x0f\xbb\x3b\xdf\xac\xc8\x65\xf6\x11\x0f\xf2\xcd\x7a\x6d\x43\x4c\xe1\x12\xd2\xdb\x79\x47\x04\x8d\xc3\xa0\x84\x74\x39\x67\xf2\xdb\x1a\x30\x59\x3b\xab\xdf\xac\x92\xfc\xba\xc3\xc6\x70\x58\xc2\x52\x2a\xb6\xea\x32\x30\x8b\x86\xc3\xd1\x5f\xde\xbb\x5d\xf7\x8c\x61\x90\x8d\xc3\x46\x6b\x74\xd6\x7c\xff\xf7\xd1\x5f\x46\xf4\xef\xb5\x5d\x52\x18\x22\x79\x40\xd4\x74\x38\x03\xc4\xf5\xc3\x68\xe6\xee\xfa\x3b\x38\x00\x3e\x20\x3a\x33\x86\xa9\x04\x3e\x2b\x61\x9d\x25\x4a\xef\x8c\xc6\xfc\x4a\x9a\xd1\x24\xa7\x7a\xe6\xac\xbd\xa4\x7e\xda\xac\xdb\x9d\xdd\xdb\x00\x07\x4f\x18\x3e\x1c\xd1\xef\xca\x12\xbe\xec\x6a\x26\xef\x61\x2c\x8d\xa0\xc4\x2d\xa7\xc1\x23\x25\xde\xaf\xd7\x54\x1e\x27\x39\x45\xe6\x4a\xa8\x76\x8a\x66\x7b\xcc\x35\x4d\xe0\xaf\x6d\x9f\xf2\x99\xb5\xb1\xfa\x63\x97\x25\x69\x9d\xe6\x7d\xe5\x93\x72\x97\xcb\x11\x0a\xf6\x62\x49\x2d\x5d\x10\x89\x41\xcb\x29\x7f\x6c\x68\xae\x08\x37\xcf\xf9\x5a\xf0\x9c\x12\x01\x4a\x73\xcf\x9f\x99\xc8\xcd\x02\xb0\xb7\xd9\x29\xa1\x99\xdd\x0e\x9f\x32\xe7\x27\x6d\xe3\x68\xb9\x17\x30\x41\xd9\x4c\x8a\x7e\x82\xb9\x0b\xe5\xa6\xb7\x8d\xbd\x03\xb4\x4e\x00\xab\x8a\x71\xb9\xcd\x33\x2c\x58\x46\xdf\x54\x55\xf8\x37\xc8\x18\xa7\x6f\x1a\xb9\xeb\x77\x48\x45\xb6\x59\xf1\xe6\xc7\x66\x0a\xe4\x2a\x49\xaf\x63\x7f\x0b\x41\x7a\xed\xe7\xdc\xe5\xd4\xcf\xa0\xc1\xe2\x13\xe6\xb4\x2c\x41\x95\xa8\xde\x05\x0a\x57\x80\x2d\xe1\x03\x23\xd3\xc0\x38\x87\x07\xc9\x46\x2d\x85\x64\x5f\xdc\xdd\x98\x41\x6a\xe3\x48\x1e\x58\x1c\xd3\x48\xd0\x84\x21\x80\x80\xaa\xe4\x4a\xff\x7c\x5e\x33\x49\xf3\x00\x82\x85\x14\xab\x00\x82\xa5\xc8\x55\x00\x01\x5b\x1c\xac\xc4\xdc\xd8\xf2\x1f\xe4\x8c\xa7\xd4\xa6\x6d\xf8\x5e\x6a\x96\xe4\xaa\xca\xab\xdf\xbd\x87\x02\x04\xab\xe4\xf3\xc1\x42\xc8\xdb\x44\xce\x75\x0b\x6b\x29\x3e\xdf\x1d\xec\x76\xd4\xc4\x02\x35\xb1\x1e\x25\x55\xf2\xee\xc0\x5c\x5b\x12\x40\xb0\xc9\xa9\x3c\x48\xae\x28\x57\xc1\x0c\x5e\x30\x62\xc4\x9e\x7d\xad\x0d\xc2\x93\x5d\x3b\x1a\xa0\xe4\x10\xad\x72\x46\x0b\x25\xd9\x9c\x72\x85\x7d\x9c\x8c\x5a\xc5\xa2\x6b\x3f\xba\x32\x8e\xa1\x72\xd7\x77\xdb\x45\x95\x43\x41\x12\x34\x02\x60\x55\x28\x83\xd7\x16\x73\xe6\x2e\x23\xcd\xb3\x1d\x29\x25\xd9\xe5\x46\x51\x14\x2c\x25\x5d\x04\xc0\xad\xb1\xaa\x7e\xc1\x70\x6f\x96\xad\x7e\x8a\x6d\x36\xf0\x61\x0b\x62\x59\x47\x30\xa8\x1f\x6b\xd9\x37\xb6\x62\xbb\xc6\xfb\x7a\xb2\x74\x71\x91\x6b\xe6\x55\x8b\xaf\xb1\x6e\x4b\x3f\x4c\xfc\x43\x53\x09\x30\xa9\x4b\x26\xb9\xce\xab\x7f\x26\xf6\xa7\x91\xef\xdf\x5a\x0d\x98\x3d\x64\x1b\x31\x9b\x48\xa3\x5b\xdd\x47\x21\x15\xac\x13\xb5\xb4\x81\x0f\x0f\x03\x42\x88\x8c\x7c\x42\x7d\xbe\x34\xa9\x13\x75\xae\x41\xfd\x5a\x56\x02\x22\xe1\xfe\x32\x65\xbf\x7a\x1c\xe4\x9a\x82\x92\x25\xbe\x6e\x19\x18\x59\x98\xe2\x89\xfe\x12\xd7\x81\xa8\x2b\x70\x19\xb9\xd4\xbf\x84\xa1\xed\xbe\x49\xd4\x0f\x65\x89\xf0\x3e\x76\xed\x0f\x4b\xf8\xf5\x6b\x0b\x6d\x7b\x2b\x59\x4b\xfd\x5a\xc7\x7e\x73\x71\x88\x34\xdf\x9a\xb8\x98\x75\x46\xea\xee\xd0\xa1\x68\x06\xc0\xb4\xe1\x6e\xe8\x96\x38\x0c\x5d\x19\xbf\x1d\x49\x30\xf0\x98\x1e\x49\x1c\x29\xf1\xfc\xf5\x3b\x2f\xff\xbb\xc2\xd5\xd1\x72\x5d\x58\xc3\x55\x97\x6c\xe7\x10\x8d\x1c\xce\x9d\x24\x18\x08\xe7\xd5\xc9\xea\x6f\x39\x4d\x37\x92\x06\x18\xea\xdd\x20\xc4\x35\xa3\x24\x71\x8a\x82\x71\x4f\x93\x58\x49\x93\x79\x07\x15\xdd\x29\x14\xad\x0c\x5b\xdb\xb4\xba\x44\xff\x2c\xc6\x1f\x3f\xe6\x7f\xc1\x28\x18\xa8\x41\x80\x09\x9a\xfe\x73\x3c\xfb\x0b\x0e\x6a\x8b\x6b\x3a\x99\xd3\x7d\x70\x4d\xbf\x9b\xe1\xd8\xd9\xaa\x18\x2e\x25\xde\x13\xd8\xcd\xbc\x20\x05\x41\x00\x1a\x66\x26\x6e\x09\x3e\xf8\xdf\x3f\xfc\x95\x7e\x8f\xcb\x32\xde\x9d\x37\xbc\xdd\x1d\x47\xeb\x28\x65\xbf\x1d\xbc\x2d\x4b\xf8\xa9\x4b\x90\xbe\x27\x9c\x5e\xeb\xaa\xda\x79\xa2\x12\x10\x7a\xe9\xd1\x64\x4e\x65\x3e\x36\xd3\xe3\x8f\x3a\xcc\x14\x3a\x2a\x2b\xa6\x81\x8b\xff\x7b\xf0\x4e\xa3\x69\x7b\x63\x86\xe5\x6d\x7f\x7d\xfd\xea\x85\x52\xeb\x33\x4b\x2a\xcd\x2d\x05\x91\xc6\xa5\x7e\xe5\xd9\x37\x83\xd8\xb8\x0d\x86\x1c\x40\xea\x53\xd7\x49\x9e\xdf\x0a\x39\xd7\xa9\x63\x11\x1d\x35\x71\x30\x09\x9e\x24\x39\x4b\x7b\xc1\xe0\x52\x89\x04\x25\x83\x20\x0e\x06\xa9\x95\xc4\xad\xb3\x31\xda\x10\x15\x5d\x26\x39\x7d\x7f\xf6\x0a\x72\xa2\xa2\x8d\xcc\x60\x13\x86\xfd\xc3\x7f\xa2\x69\x72\xf0\x65\xa6\xff\x7c\x9c\x7f\x1c\x7c\x3c\xf8\x18\xcd\xfe\x12\xe3\xc9\xc7\xc3\x8f\x87\x1e\xe9\xe6\xb8\xdb\x00\x86\x4e\x1a\x0a\xca\x8f\x87\x03\x8b\xd6\x06\x1a\x47\xd0\x26\xd2\x3a\x1c\x58\x74\xa4\x4a\xb4\x81\x1c\xc7\xb9\x8d\xe7\x15\x89\x35\xe5\x48\x45\xd6\xba\xad\xcd\xbe\xc0\x92\xa1\x05\x18\x6f\xcd\x64\x95\x57\x0f\xe7\x54\xda\x88\x9c\x36\x60\x2d\xb0\x48\x59\xb1\x8d\x28\xff\x04\xec\x4f\xe2\xbc\xe8\xa6\xc3\xf0\xaf\x7a\xef\x44\x26\xdf\xb9\x75\xb1\x42\xe6\x3c\xde\x38\x5c\x6d\xf2\xa2\x60\x15\x1f\xf3\xfe\xec\x55\x18\x0e\x5d\xfe\x2a\xa9\xd6\x99\xd9\xc8\x35\x18\xd7\x56\x95\x2e\x9a\x19\x31\x51\x5a\xb3\xec\xcc\x95\x7a\x61\x57\x4f\xc0\x78\x8f\x4d\x8c\xe9\x64\xe7\x77\x84\x61\x63\x6e\x0b\x9d\xa0\x06\x27\x58\x5d\xff\xff\x91\x07\x3b\xb7\x7e\xb1\x05\x4a\x9b\x4a\xbc\x38\xc0\x20\x34\x16\x54\x92\xad\x90\xbd\x4f\x5b\x49\x34\x84\x14\x6b\x54\xf4\x4a\xdc\x56\x60\x4e\xf6\xb3\xa5\x83\x11\xc6\x60\xaf\x1d\xdd\x18\x63\xe1\x0f\xac\xaa\x5b\xe0\xc7\x64\xe8\x6f\x6e\xd1\x5f\x49\x90\x53\x75\x60\x71\x86\x26\x20\x62\x62\x0a\x4d\xf4\x9f\x78\x3a\xc3\x5e\xef\x30\x4d\x66\x38\xae\xbe\x0c\x02\xe8\x05\x83\x24\x4e\x4c\xec\xaf\x0d\x8e\x37\x16\x41\xc0\x82\xd8\x1b\x8e\x6b\x2e\xf2\x9d\xb9\x70\x30\x50\xf4\xb3\x39\x7d\x69\x7f\x98\xd4\x53\x12\xd7\x8f\xef\xe8\x67\x05\x76\x1e\x63\x3f\xa1\xee\x5d\x7f\xaa\xd2\x4c\x3e\xb7\xa5\xe3\xbc\xe2\xe4\xc0\x31\xb3\x31\x2b\x77\x8d\x0e\x1b\xf6\x9c\xf6\x9a\xe5\x9b\x24\x63\xf3\x44\x99\x5b\xaa\x36\xf9\xb8\xcf\x8b\x82\x23\xe9\xea\xc7\x13\x85\x24\x8e\x29\xfa\x83\xa1\xc0\x6d\xfb\xde\x22\x61\x19\x9d\xf7\x6e\x99\x5a\xf6\x6c\x36\x13\x48\xa2\xa7\xe9\xaa\xeb\xaa\xaf\xdd\xd8\xf7\x99\xe8\x21\xa6\x28\x48\x8c\x4b\x63\x45\xb7\xf0\x86\x58\x65\x69\x96\x7b\x72\x29\x64\xeb\x5e\x45\xa6\xd9\x9a\x56\xb3\x26\x8b\xf5\x4c\x0e\x4e\x8e\x4f\xdf\xbc\x39\x7a\x62\x9c\x19\x02\xa3\x0a\x66\x5e\x25\xaa\x6b\x33\x4e\x33\x2d\xfe\xdc\xd4\xf4\x86\xaa\x5b\x21\xaf\x2d\x17\x6b\xdc\xb5\x75\xef\xea\xd2\xb6\xb0\xdf\x8f\x7b\xb6\x93\x81\xfb\xd2\x13\x8b\x5e\x30\xa8\xb6\xeb\x20\x58\xe5\x3d\xfa\x39\xa5\x74\x4e\xe7\xc1\xb8\x4a\x37\xad\xb8\xa8\x51\xc6\xb0\xbf\xf3\x0b\x06\xd3\x37\xfa\xb5\x51\x95\x70\x2f\x3f\xe0\x8d\x52\x7e\x65\xb0\x26\x48\x45\xe6\x0e\x2b\x49\x35\xc7\xc9\x92\x2c\x2f\x8a\x17\x0c\x2d\xb0\x09\x5a\xf4\x39\x97\x8b\x63\xb3\xca\xb5\x00\x31\xc9\x0c\xea\x40\xbb\xe9\xd8\x19\x46\x8f\xd7\x61\x88\xc4\xd4\x7e\xb6\xdb\x5a\x7f\x9e\x91\xb5\x51\xd5\xeb\x3d\xe3\x26\xc6\x7e\x34\x28\x21\x0c\x1b\xdb\x5d\xec\x39\x32\x7a\xab\x0e\x1e\x86\x6d\x51\xc0\x09\x7f\x8d\x6d\x3d\xa9\xa8\x11\x9d\xe9\xd5\xbe\xd3\x1a\x72\x77\xf7\x59\xc0\x54\xe7\xd3\xfb\x00\xc0\xc5\xff\x47\xdb\xb7\x37\xb7\x6d\x2b\x8b\xff\xff\xfb\x14\x32\xa6\xe1\x10\x47\xb0\x2c\xcb\x8e\xeb\x50\x46\x38\xae\xe3\x64\x7c\x4e\xf3\x68\x93\xfe\x7a\x5a\x8d\x26\x03\x4b\xb0\x8d\x44\x22\x55\x10\x92\xe3\x2b\xf1\xbb\xdf\xc1\xe2\x41\xf0\x61\xa7\xf7\xcc\xbd\xff\xd8\x04\x08\x02\x2b\x3c\x76\x17\xfb\xdc\xc5\xa2\x59\x49\xf7\xf6\xda\x0d\x49\xfd\x5c\x62\xf0\x1a\xaf\x55\x35\x4e\x6e\x25\x36\xd3\xf3\xf1\xa5\xc8\xb3\xf6\xe9\xb6\x26\xca\xbc\x4b\xd2\xaa\x06\x79\xf6\x2a\xbf\xcf\x16\x39\x9b\x7f\x90\xf9\xad\xe4\x45\x11\x45\xa2\x23\xfc\xd6\xca\xbe\x45\xa4\xeb\x9b\x4e\xa1\xac\x6e\xf8\xdb\xaa\xd9\xf5\x1a\x6a\xaa\xa7\xef\x8e\x55\xef\x02\x12\x55\xb3\x6c\xc6\x17\x9f\xf2\xaf\x3c\x03\x6b\x8c\xaa\xe8\xdc\xd2\x3a\xbc\xf5\xc0\x46\x6c\x00\x07\x38\xd6\x1b\x5e\x55\xe7\x15\x07\x61\x70\x33\x13\x9f\x1e\xf2\xfa\xeb\x35\xcf\xe6\xb1\x71\x88\x23\xbf\x08\xba\xad\xb3\x25\x09\x62\xab\xd5\x42\x18\x4e\xfd\xe0\xdb\xfe\xfd\xfd\xbd\xbe\xe7\x2d\xf7\xd7\x72\x61\x18\xde\x39\x0a\x84\x89\xff\xb4\x22\xcb\xbd\xe6\x86\xc1\xb0\x67\x6b\x55\x4d\x06\xc8\x48\x22\x1a\x95\xd4\xfa\xab\xfd\x2e\xc8\x1f\x82\x6e\xd9\x9c\xad\x14\x97\x49\xdc\xa9\x2d\xaf\xf3\x4d\x41\xac\xa8\x37\x22\x8a\xbc\x25\x83\x95\x2d\x81\x31\xc3\xa3\x46\x56\x46\x46\xf4\x46\xe8\x33\x1d\xff\x2e\xe8\xbf\x04\x26\xbf\x0b\x4c\x94\x64\x59\xa1\x27\xc0\x0e\x92\x4c\x3a\x19\x9e\xff\xd2\xa8\x06\x9d\xcf\x66\x7c\xa5\x10\x26\xa6\x58\xfb\x65\xf6\x4c\x79\xd6\x50\xe1\xdd\xae\xd2\x21\x7a\x7b\x1b\x5b\xd9\x2c\x1b\x43\x8b\xaa\xfc\x5a\x2c\x78\xd0\x7a\x91\x5f\x83\x42\x31\x69\xf6\x68\x8d\x60\x52\x67\xf7\x92\x74\x6a\x44\x15\x4e\xe3\x7f\x02\xc8\xdf\x5d\xfc\xb1\xbe\xfc\x15\x5c\xd1\xb5\xba\xd9\x3f\x05\xb7\xc4\x4a\x91\xda\x54\x60\x76\xf5\xaa\x0f\x74\xab\x93\xb6\x92\x33\x51\xe5\x34\x9c\x7c\x4b\xca\x27\x0d\xee\xa6\x6d\x93\x03\x08\xc6\xaa\x4d\x57\x7a\x94\x4a\x5a\x1f\x84\x1a\x82\xde\x0d\xd5\x48\x86\xa4\x8e\xaa\x13\xf4\xef\x8f\xbf\xbe\xde\xff\xf4\xfe\x5f\x97\xef\x10\xa9\xe3\xe9\x04\xfd\x7b\x3f\x7c\xbb\x64\xdf\xec\x2a\xff\x6c\x1c\x42\xf6\x21\x30\x57\x40\xf9\x3b\xb5\xf7\x2f\xe9\x68\x38\x8c\x22\x75\x76\x34\x1c\x96\xe5\xf8\x0f\xe1\xee\x0f\x74\x3b\xcb\x97\xcb\x3c\x83\xe4\x02\x7c\xa5\x92\xd6\xdc\x91\x9e\x66\x78\x0e\x56\x0b\x26\x32\xd2\xfb\xc7\xc1\x3f\x50\x59\x86\x0a\xe7\x09\x32\x28\xde\x64\x02\x40\xc4\xa4\xb8\x99\xd6\xf9\xc2\x6a\xc0\x89\x9a\xd2\x6d\x69\x51\x7e\xd5\xc7\xca\x88\x8a\x56\x6b\xf8\xab\x67\xef\xe9\x2e\x56\x62\x00\x86\x28\xf1\x2f\xc6\x2f\x58\x1f\xe1\x3f\x05\xfd\x23\x50\xf2\xc1\x9e\xdf\x3e\x89\xe9\x00\xab\x5f\xdd\xd8\xa3\xc6\xe7\xb1\xc1\x05\x9c\x75\x86\x0c\x60\x90\x7b\xd3\xcf\x9c\x7f\x02\xbd\x84\xb9\x9a\xd1\xa5\xb0\xc1\x44\xab\x86\x7a\xc7\x36\x0e\x75\xd8\x8d\xff\x25\xbe\x6a\x60\x96\xc4\x76\xeb\x7f\xb4\xbd\x9d\x4c\xeb\xf5\xf8\xfb\x6b\x41\xba\x66\x97\x20\x33\x4a\x6d\x9a\xb9\x8f\x02\x5a\x8d\xcb\xc1\x93\x4b\x5f\x10\x0d\x6a\xdc\xed\xfe\x14\xee\x19\xc7\x6d\xa7\x6e\xde\x98\x30\xee\x27\xc6\x3c\x11\xde\x3d\x31\xe6\xc0\x41\xea\xf4\xce\xa4\x45\xb7\x22\xe6\x9a\x0b\xb0\xbd\x46\x11\xf7\x14\x5a\x73\x65\xbe\x10\x0c\x57\xab\x22\x41\xf9\x29\x00\x30\x26\x55\xd8\x7c\xc0\x2b\x36\x72\x8e\x64\x0d\xe1\x38\xa7\xa0\x92\xb2\x8e\x72\xfa\x9a\x44\x27\x68\x2d\x17\x88\x20\xb3\x54\x30\xd9\x1a\xe1\x21\x82\x34\x08\x68\x4a\x72\x3a\x41\x76\x74\x2b\x68\x75\xc2\x4c\x34\x25\x82\x4e\x90\xbd\x1a\x23\x62\x7b\x6a\x6e\x9d\x7a\x95\x81\xd9\x8f\x53\x5d\x4a\x75\x33\x83\x6e\x10\x41\x0d\x16\x49\x0f\x6c\xd6\x0f\x04\xa5\x15\x97\x83\x08\xaa\x63\x26\x5b\x51\xa1\x23\x44\x50\x93\x99\x80\xaa\x26\x2f\x63\x04\xb6\x35\x4c\x85\x08\xaa\x23\x2a\xd3\xe6\x57\x3e\x17\x92\xcf\x94\x2e\xde\x29\xb5\x02\x41\xaa\x7d\x2e\x5c\x21\x38\xb3\x88\xa0\x22\x9f\x7d\xe5\xea\x03\x53\x77\xa8\x66\x3c\x93\x35\x42\x13\xf8\xa0\x8e\xc6\xf6\x42\x6a\xbc\xa1\x9f\x71\x03\xfb\x84\x0c\x6e\x66\x4d\x66\x2c\x49\xe1\x13\x08\xc4\x32\xc9\x00\xe3\x78\x53\xb2\x58\x4d\xb2\x29\xc4\x89\x71\x6c\x36\x0c\x93\x4d\x4d\x53\xfd\x54\xa7\x4c\x4f\x74\x13\xf4\xa0\xc0\xd2\x2c\x86\x76\x4e\x49\x12\x02\x2a\xea\x80\x3e\x36\xf2\x93\xfd\x8d\x8d\x84\x27\x73\xb7\xe1\x1c\x07\xe9\xfb\x67\xb5\x84\x45\xfc\xa9\xb4\xe9\x60\xae\xc3\xfc\x6d\x5c\x85\xd1\x0e\x02\x90\x67\xff\x0b\x20\x13\x19\x30\x80\x19\xf3\x92\x3a\x6b\xf1\x5f\x38\xb5\xb5\xc8\x14\x97\x9a\x88\xe5\x9a\xae\xb9\xab\x73\xc6\xef\x7b\x0f\x82\xf8\xcb\xb9\x29\x97\x65\xc6\x6a\xfe\xfb\x46\x69\x14\xfe\xce\x36\xa9\x4f\x63\x45\xc3\x64\x0a\xfa\xf4\xe3\xc1\x5a\x2e\x82\xda\xe1\x34\x81\x24\x9b\xdb\x92\xc4\x8a\x4a\x16\xd7\x40\x25\x0a\x63\x8b\xc7\x53\x87\xd0\x69\x20\x77\x0a\x6e\x4e\x49\xed\xc3\xf6\x47\x1d\x6f\x9b\x1d\xb8\xb6\x40\x0c\x6c\x08\xa7\x09\x67\x96\x51\x9f\x12\x49\x9b\x09\x42\x14\x06\x93\x8a\xd6\x74\xba\x09\xea\x4e\x13\xcf\x07\xeb\xac\xb8\x13\x37\x2a\x56\x03\x6f\x44\x45\x5c\xb8\x33\x3e\xc7\x3e\x2c\x6a\xa3\x4f\x8b\x8e\x1f\xe9\xd4\x88\xbe\x1f\xed\x71\xec\x52\xc4\x8e\xb1\xa4\xd2\x90\x21\x3e\x30\x70\x68\xb2\x63\x9f\xfc\xae\x94\x25\xa9\xad\xf9\x2d\x57\xbf\xc9\x4e\x39\x6c\xe7\xba\x91\x3b\x4d\xda\xd7\x72\xf1\xa4\x2c\xb0\xad\x21\xf9\x1b\xcc\x12\x41\x36\xb1\x68\x93\xe7\x09\xe1\xd5\xd8\xab\x2e\x13\x0e\x4d\xd9\xec\xfa\xc4\x9e\x9b\x90\xb0\x05\xb7\x66\x07\x24\x8a\xac\xe5\x02\x8c\x3c\xff\x13\xd6\xeb\x29\x30\x82\xf0\x71\xdd\x80\x64\x5d\x80\x10\x10\xad\xc9\xd0\x2b\x26\x67\x34\x63\xd5\x39\x17\xd5\x39\x77\x41\xc0\x55\x29\x58\xc7\x4d\xaa\xad\xbf\x45\x17\x40\x2f\x50\x3f\x0e\xbf\x4f\x51\xd2\x43\xfd\xb0\x26\x81\xe5\xa9\x75\x5a\xd9\xb0\xb9\xb0\x9b\x8c\x51\x11\xc0\x35\x63\xee\x26\xe0\x2f\xeb\x7b\xc1\x5d\xc0\xdb\x19\x04\xde\xcc\xfc\x1b\x9f\xad\x55\x2e\x7b\xcb\x75\x01\x01\xea\x98\x57\x6d\x0f\x6c\x70\x3a\xde\x8e\x53\xdc\x56\x04\xe8\x43\x01\x59\xf3\xc7\x41\x28\x29\xd5\x40\xce\x36\x7c\xe4\x6e\x17\xbb\x47\xe8\x8d\x19\xae\xc9\x57\x9a\xd4\x63\xb3\xda\x7c\x36\x98\xe1\x86\xa4\xda\xae\x2e\x7c\x6c\x7e\x66\x50\x53\x92\x19\xb3\x91\x40\x5a\x41\x13\xec\xf9\xdb\x2a\x4d\xbe\x01\xfd\xce\x58\x9d\x5f\x54\x14\xcc\x8f\x0d\x95\x4f\x94\x4d\xd8\xb5\x66\x74\x16\x4c\x7c\xc1\xea\x36\x37\x39\x33\x31\xa3\x84\x88\xf3\x0e\x54\x4e\x78\x48\x8e\x8c\xd5\x74\x2c\x49\xd8\x94\x70\x38\x09\xfe\x1d\xd7\x94\x06\xdc\xc7\x18\x2d\x58\xfc\xa7\xc0\xe3\x1b\x36\x00\xa3\x01\x9a\x33\x72\xc3\xac\x4e\xb7\x0b\x65\x14\x2c\x96\x2c\xbe\x61\x35\x4c\x5f\xea\x6f\xcc\x5e\xa4\x8c\x55\x05\x60\x64\xe8\x1a\x6a\x44\x61\x1b\xdc\x0a\x5d\x64\x8b\x45\x57\xf7\x0e\x4f\x3b\xbf\x88\x1b\x36\x28\x56\x92\xb3\xf9\xf7\x32\x68\x35\xbc\xbf\x40\x50\xca\x5d\x4a\xb4\x05\xa3\x37\x8c\xac\xf4\xdf\xf1\xc2\x83\x4e\x57\x0c\xde\xce\x19\x5d\x30\x72\xc7\xda\x32\x8c\xba\x1f\x13\xd9\x30\x5a\x4b\x3e\x4e\x1e\x58\x57\x7e\x77\x05\xf1\x54\xe9\x70\xcc\xcf\x46\xcf\x4f\xc6\xfd\x3e\xc7\xca\xea\x0b\x9f\xa1\x7e\x1c\xf3\xb3\xc3\x93\x14\x0d\x4d\x78\xc2\xc0\x5c\xfa\xf0\x04\x74\x05\x81\x4a\x26\x0c\xcd\x87\xc9\xb2\xc9\x97\x57\xd6\x55\x70\x4b\x80\x9b\xab\xf9\x0d\x3e\x23\xa0\x59\x48\x98\x0e\x9c\x00\xe7\x3e\x1c\x67\x67\xde\xd7\xab\xdf\xcf\xf0\xe3\x2c\x49\x40\x50\x6e\x19\xdd\x82\xc1\xdb\xa7\xdc\x3a\xda\x2c\x19\x61\x45\x21\x6e\x9b\x11\x02\xed\x37\x0d\xfe\x4a\xf2\xf9\x7a\x56\x3b\xe3\x21\x62\x9f\x48\xcd\x1e\xc9\x29\x51\x25\x26\xca\x24\xe7\xbb\x16\x19\xef\xec\x3a\x4c\xf2\xcc\x6d\x22\x3f\xd6\x88\x69\x16\x64\xa2\xd8\xe6\xd7\x5f\x92\x6d\x9e\xa8\x12\x92\x3c\x27\x28\x47\xa5\xe6\x08\x26\x53\x3b\x19\x3c\x9c\x8c\x20\xbc\xb0\xe6\x7c\x05\xcd\x07\xf9\xf5\x97\x09\x84\x45\x5c\x4d\x09\xab\xf1\x8d\xc0\x48\x0e\xc7\xb3\x33\x56\x75\x31\xf3\xa1\xc2\x26\xb3\x29\x29\xa8\x98\xac\xa7\xe3\x96\xb3\x44\xe1\xbd\xcd\x0a\xeb\x67\x2d\x3d\x87\x59\x40\x1e\x78\x6b\xaa\xad\x81\x17\x06\xf0\x75\xe9\x32\x57\xc6\x45\x95\x4d\xb1\xf9\xab\xc7\xca\x5b\xdf\x8d\x7d\x38\xb0\xc1\x2a\x5f\xc5\x1a\x87\x70\xf8\x35\xdc\xfc\x1a\x48\xa6\xc3\x62\x89\x83\xf8\x90\x7a\x5a\x72\x3a\x1c\xe7\x95\xb7\x65\xbf\x9f\x57\x7b\x44\x82\x76\x2a\x33\x60\xe8\x82\xe6\x4e\x82\x3e\x69\x56\x96\x25\x44\x82\x2f\x89\xd1\x4b\xb7\x3c\x38\x9c\x86\xb7\x52\x63\xf6\x0f\x6e\x09\xea\x99\xec\x3e\x48\x14\xf9\xfe\xe9\xe9\xf3\x17\xfb\x87\x60\x1c\xe1\x0c\x48\xb3\xc0\x8f\x61\x32\xdc\x7f\xc1\xf6\x6f\xa6\xdb\x51\x79\x70\x2b\xc8\x3a\xe3\xc5\x8c\xad\x78\xcd\xf6\xb8\x43\x29\x1e\x46\xc6\xf6\x51\x3a\x4a\x62\xe4\x6f\x2d\x30\xad\x57\xad\x4f\x1a\x54\x77\x8a\xa0\xa0\x4c\x46\x05\xe4\x2a\x0d\x39\xe7\x8c\x9a\xfc\xa5\x8f\x4a\x42\x15\xf6\x79\xbb\x6a\xae\x99\x59\x15\x12\x0a\x93\xc7\x66\xc1\xfc\xd0\x38\x0b\xbd\x3a\xd6\x7e\x3a\x8e\x61\x3a\x3a\xee\x30\xe8\xd9\xe8\xe4\xd9\xe8\x08\xf5\x41\x6e\x77\x95\x69\xfe\xd5\xb8\x25\x8c\x30\x39\x3c\xc1\x7d\xf4\xec\xe8\x27\xa4\x09\x6e\xb5\xff\x11\x22\x82\x0e\xc7\xe2\x2c\xab\x36\x82\xb7\xd8\xc8\xc2\xa0\x32\x02\x8f\x8f\x9f\xeb\x4b\xd2\x6e\x77\x7c\x62\xfe\xbf\xb0\xe5\xc3\x91\xad\x60\x2f\xe9\xf1\x69\x14\xb1\x33\xfa\xfc\x47\x28\x9d\x3c\x87\xd2\x0b\x13\xe2\xe6\xc5\x8f\x50\x3a\x1c\x8d\xd2\xbc\x6f\x7b\x87\x9e\x13\x76\x76\x38\x3a\xd5\x95\x0f\x6c\xc2\xa6\x09\x3b\x1b\x0d\x8f\x5d\xf9\xf0\xc5\x68\xc7\x5e\xbe\x3c\x99\xf6\x75\x61\x74\xba\x3b\x39\x8a\xa0\x8d\x8d\x87\xc3\x5e\xd2\xe7\x3f\x1e\x1d\x1f\xdb\xe6\xa3\xd1\xb1\x6e\x7e\x38\xf2\xed\xf5\xc7\xd1\xc9\x51\xe3\xfb\x58\xf4\xe9\x21\x61\x14\x02\xdc\xf4\xe3\xf8\x70\x38\x3a\x8a\x18\x3e\x3b\x3b\x1c\xee\xe0\xb9\xf1\xeb\x31\xb1\xfd\x1f\x0f\xa1\xff\xd3\xb0\xff\xc3\x51\x38\x40\xe7\x80\xfe\x2c\xe7\x4f\x7a\xac\x1a\xf7\x83\xb6\x5b\x2f\x8e\xa2\xbd\xbd\xb8\xe1\xb5\xfa\x3f\x76\x47\x05\x37\x42\x63\x76\xf2\x94\xf3\xa2\x69\xf1\x77\x24\xfe\x1a\x8d\x2f\xd9\xc3\x35\x7f\x5b\xcb\xe4\x67\x1d\x95\x37\x0c\x32\x1d\x55\x14\xcc\xa3\x63\x55\x79\x79\xd3\x43\x6c\x11\x9e\x95\x20\x04\x14\xc9\x1d\x08\x33\x4e\xd3\xed\x2d\x88\xb3\x2c\x6b\x6e\xf1\xad\xe9\x93\x0e\x1c\x8e\x5d\x6a\x22\x89\x7d\xca\xb3\x3d\xde\x31\xe3\xce\x41\x6a\xc2\x89\x9c\x8e\x63\x50\x02\xd5\x88\xef\x6e\x97\x69\x06\x26\xbf\xff\xe0\xe6\xa6\xc0\xbb\xdd\xde\x1d\x33\x33\xd3\x4a\x6e\x27\x41\x37\xa2\x09\x20\xdd\x1b\xfa\xdd\xc0\xcb\xef\x03\xe0\x49\xa1\x74\xb1\x9f\xbd\x59\x17\xfc\xa4\x28\xda\x03\x0c\x1f\x45\x71\x4e\x97\x0c\xfc\xe4\x30\xb1\xaf\xe0\x4d\x1a\xcb\x8e\x6b\xa9\xb4\xc6\x08\x0e\x64\xc8\x43\x66\x7d\x9d\xf8\x24\x9f\x8e\x45\x87\xa3\xa0\x88\x22\xf9\x88\xff\x60\x3e\xa5\x2a\x16\xb0\x28\x89\x9f\x65\x13\x25\x02\x5e\x4a\x88\x42\xee\x13\x1d\x03\x75\x95\x1d\x5c\x03\xaf\x32\x6e\x6a\xe2\xe3\x7e\x6b\x08\xa6\x1b\x0d\x02\xbc\x08\x18\x50\x57\x08\x90\xb7\xe6\xb8\x2c\xc9\x35\x7b\x3c\xae\xe1\x3d\xa3\xd6\xa1\xee\x92\xd1\xed\xaf\xaf\x2f\x0e\x7f\x3c\x3a\x4d\x90\x7d\x40\xe4\xd7\xd7\x17\x47\x2f\x4e\x4f\xa0\x46\x3f\xa0\x92\x7c\x66\xf4\x96\x0d\x0c\x2f\x14\x6f\x5d\x74\x86\x4b\x36\xb0\x4d\x08\x98\xf5\x2b\xc5\x65\x91\xf8\x1e\x3b\xb8\xd9\x6b\xe6\x1c\xe5\xef\x19\xb8\xf3\x95\x7e\xb4\x8e\xd6\x9e\x58\x94\x65\x49\x2e\x19\x26\xef\xbf\xcf\xbf\x7e\x64\x74\x7b\x2d\xd9\xec\x2b\x57\xdd\xda\x93\x3e\x9a\x4c\x11\x70\x54\x4b\x96\x80\xdc\x9c\x21\x22\xb2\xb9\x98\xd5\xb2\xbc\x86\xee\x65\x7d\x34\x41\x7d\x0e\xc9\x1b\x89\xe4\x2b\xce\x54\x67\xcf\x65\x49\xbe\x34\xb9\xe7\x6f\xac\x99\x7e\x11\x76\x06\xb9\x68\xf2\xb9\xdf\x98\x0b\xdd\x46\xbe\xe8\xad\x9b\xf2\x04\x32\x63\x93\x4f\x8c\x82\xe9\x5a\x88\x83\xbc\xd7\x1f\xf9\xc0\xe8\x67\xcf\xec\x93\x73\xcd\xc1\xce\xe7\xbf\xac\xb9\x7c\xf8\x20\xf9\x8d\xf8\x96\xec\x1d\x12\x38\xa6\xaf\x72\x55\xe8\x82\x55\x9e\x25\xc8\x68\xcf\x5c\xf9\x23\xcf\x94\xc8\xf8\x42\x37\x99\xf3\x85\x58\x0a\xc5\x65\x82\x22\xe4\x58\x07\x70\x33\xd0\x4f\x32\xb9\x65\x03\xf3\x68\x6b\xfe\x3f\x64\xc8\x7d\x9f\x2d\x1e\xf4\xd7\x66\x27\x24\x1f\x58\xb5\x27\x92\xcf\x6c\x50\x6d\x90\xc9\x07\x36\xf5\x13\xbe\x77\x48\x0a\x27\x70\x79\xc4\x85\xbd\xf7\x89\x55\xd8\xb6\xf8\x2a\x56\xef\xd6\x8b\x85\xf9\x52\x49\x31\x53\xba\x08\x91\xf3\x45\x76\x0b\x91\xd7\x7f\xae\xe6\xd6\xa1\x49\x13\x48\xa5\x9e\x0c\xd2\x1c\xb2\x3b\xb2\xa1\xfc\x91\x38\x6b\xb3\x74\x43\x67\xb1\x24\x1b\x9c\x6c\x42\xaf\x71\x0d\x68\xba\xa1\x37\xf1\x06\xbb\x1d\x64\x14\xe5\x5f\x58\xbc\xd1\x78\x68\xa3\x4f\x8b\x23\x0c\xf1\xa6\x8b\x5d\xe9\xa9\x56\x8f\x37\x10\x70\xa0\xc4\xd8\xda\x55\x12\x84\x31\xf1\xa1\x7c\x34\xaa\xca\x1d\x9e\x67\x51\xb4\xb7\x4a\x59\x2c\xc9\xb9\x5b\x0c\x49\xe6\x04\x7d\xe5\x0f\x08\x27\x72\xbc\xa1\x08\x95\x1d\x1a\xce\xf8\x8e\x6e\xf0\x6e\xd7\x8a\x2e\x70\xb7\xdb\xa1\xeb\x3c\x5f\x70\x96\xd5\x2b\x9b\xcc\x1f\x34\x14\xb7\x22\x53\xb5\xba\x5b\x56\xd1\xd9\x0d\xf6\x50\xa6\x93\x45\xbc\x4a\x65\xf2\x08\xa0\xc6\xff\x74\x11\xb3\x78\xd3\x78\x0d\xc1\x95\x10\xc6\xd3\x64\xb2\x88\xa5\x6b\xe7\x02\x08\x61\x6c\xec\x1f\x1f\xc8\x12\x72\x45\xdf\x54\xd1\x80\x36\x6e\xec\xa5\xae\xfe\xc2\xe2\x19\xc6\x0f\x74\x56\x39\xe9\xde\xd6\x6e\x37\x1b\x3c\x7e\xa0\xeb\xf4\x76\x50\xe4\x52\xc5\x6b\x9c\xdc\x7a\xbf\x6e\x13\xd2\xe8\xa1\x62\x0c\xaf\xcd\x86\xb9\xa7\x0f\x93\xeb\x29\xb9\xa4\x9b\xc9\x3d\x8c\xbd\x27\x4c\xc0\xf7\x3d\x4a\x2f\x4d\x93\xcf\x14\x36\x42\xda\x15\x00\x2a\xd5\x84\xe7\x1e\x27\x32\x91\xfd\xb8\x48\xd1\x00\xf5\xef\x13\x8d\x5f\xee\x35\x7e\xc1\xe3\x0b\x16\x2f\x89\x8a\x2f\xc9\xe7\x47\x76\x2d\xf6\xd6\xd1\xcb\x92\xbc\x63\xb4\x45\x6a\x9b\x18\xb1\x8e\x90\x1a\xd6\x3f\x36\x0b\x87\x22\x79\x33\x6d\xe3\x9e\xf7\x6b\x3b\x67\x63\x1f\x76\x85\x2a\xb7\x4c\x51\x54\x5d\xaa\xab\xba\x2e\x41\x9a\x7b\xdb\x2d\x50\xbb\x34\x2f\xc1\xed\x53\xe5\x8f\x48\xd4\xa8\x1a\x58\x44\xb5\xdb\x9d\x33\xf7\x5c\xcb\x94\xea\x5b\x44\x91\xc5\x6d\x8d\xca\xe0\xba\x11\xbe\xe9\x86\xea\xd3\x1d\xef\xd9\x06\x3d\x23\xcf\xf5\x02\x3f\x2e\x20\x38\x22\x8c\x41\x7a\x55\xaf\xa4\x97\xcb\x5e\x65\x67\xe2\x04\x7b\x15\x7a\x6e\x80\x6b\x30\xa2\x99\xeb\xf7\x16\xc5\xd5\x10\x25\xf1\x6d\xba\x61\xfc\x2d\xfb\x9a\xe5\xf7\x59\xcf\x34\x72\x60\xae\x64\xbe\x11\x73\x3e\xd7\x73\x27\xfd\x30\xa5\xb9\xd1\xd5\x11\xb1\xd4\xf7\xe0\x73\x66\x15\x43\x2e\x39\x54\xa7\xe1\x92\x69\xb2\xdb\x7d\x61\xb1\x2b\x60\xc3\x71\xf9\x22\x69\x92\x9e\x36\x46\x51\x83\x7a\x93\xb4\x59\x91\x9c\xb3\x46\x4d\x40\xbd\xaa\x00\x44\x03\x5f\x99\x9e\xb3\x41\x40\xdf\xf6\x82\x57\x9e\xd4\xf1\x16\x91\xeb\x82\xac\xd1\x26\x6d\xd5\x24\xd5\xc6\x73\x55\x01\xa9\x0c\x80\xf3\x95\x1a\xb8\xaa\x45\xf0\xc2\x11\xd5\x2e\x38\xcc\xab\xd4\x3d\x24\xe7\x0d\x6a\x2b\x93\xce\x05\xb2\x2f\xfd\x77\x32\x09\x30\x6a\x8b\x4e\x3f\x3e\x70\xd5\x28\x6d\x57\x55\x7d\x56\x75\xc4\x2c\x7f\x92\x07\xf4\x3e\x6b\x10\xf5\x4e\x88\x6b\x4d\xd2\x46\x59\x8f\x54\xab\x08\x28\x7f\x17\xf0\xfe\x6d\x1a\x3c\x43\x27\xae\x40\x34\x8a\x7f\x04\x92\x5c\xaa\xd4\xfc\x33\xe6\xc2\x1d\x8c\x45\xe7\xa0\xad\x66\x69\x57\x25\x80\xd1\xaa\x05\x11\xd2\xb8\x03\x9e\xdc\x1e\xa8\x34\xa3\xf1\x90\xb8\x12\x8e\x11\xd2\x8c\xfe\x17\x16\xfb\x2a\x93\x2b\xc9\x95\x8c\x4b\x00\x61\x96\x24\xb6\x83\xc1\xba\xbc\x24\xd4\xa5\x67\x43\x68\x2c\x8c\x58\x15\xc4\x9e\xaf\x0d\x1e\x11\x59\xef\x23\x4b\x6b\x75\x09\xd7\xf8\xd3\xb0\x6c\x48\x64\x3d\x9e\xf2\x81\x2d\xa6\xbe\x3e\x41\x86\x37\x46\x89\xaf\x1a\x9b\xc0\x75\x1f\xd9\x44\x4c\xc7\x72\xb7\x8b\x65\x8d\xfa\x66\x10\x8e\x42\x4f\x7b\x14\x49\x43\x82\x4d\xb1\x92\xd1\xac\xe9\x70\xbc\x0e\xe5\x74\x36\xe2\x5b\x41\xe5\x64\x3d\x1d\xe7\xd5\xfa\x1a\x69\xa3\xfe\x75\x93\x62\xba\xdb\x5d\xb0\x98\x91\x9f\x59\xac\x4b\xa4\x20\x33\x3d\x50\x6b\x0d\x48\xf0\x3d\xc9\xdd\xd1\xcb\xfd\x11\x82\xcd\xe0\x26\xd8\x82\x4a\xf2\x00\xc5\xe4\x8d\x4d\x9a\x57\xe8\xd5\xf7\x17\x1c\x95\xdc\x13\x1d\x63\x9b\x74\xe3\x7c\x68\xf2\x0a\x37\x60\xb2\xa0\xe0\x82\x93\x37\x91\x25\x04\xd0\x40\x55\x16\x82\x06\x32\x8a\xa2\xa6\x60\xd1\x37\x49\x17\x7d\xaa\x89\xe2\x29\x35\x42\xb2\xc3\xe1\x70\x78\xf4\xec\xe8\xa7\x08\x25\xd5\x9b\xcb\xd1\xb3\x17\x17\xcf\x5e\x1c\x45\xa8\x8a\xc4\xf8\x72\x98\x2e\xfa\x37\x09\x42\x25\x26\x5f\x59\x87\x7f\x27\x11\x78\x6b\x22\x91\x04\xca\x6a\x6b\x96\xe0\xaf\xe9\xf5\x35\xf7\x5d\x47\x51\xcc\x28\xef\xa3\x14\xf5\xdf\x31\xd8\x0c\x32\x9d\xb3\x89\x9a\xc6\x8c\x48\x22\x70\x02\x6a\x55\x8d\x52\x7d\xb5\xc0\x89\x7b\x7c\xc7\xe2\x1c\x13\xa1\x6f\x90\xac\x23\x4f\x6c\x2b\x22\x8f\x1e\xcf\x53\xdf\x50\xc5\x9f\xd6\xf4\xfd\xdb\x12\x44\xc8\x3f\x18\x8f\xa8\xd4\x3f\x25\xfa\xf8\xe9\x17\xd6\x86\x3e\xa7\xe8\x80\xad\xc4\xc1\x66\x78\xc0\x66\xb3\x7c\x9d\xa9\xc2\x3f\xec\x2f\x44\xa1\x10\x11\x74\x5b\x12\x16\x84\x0a\xae\x0c\x26\x06\xd7\xf9\xfc\x01\x62\xa7\x98\xc7\xc0\xde\xd6\x54\xa4\x0d\xb3\xa5\xc0\xdb\xf9\xad\x28\x0a\x91\xdd\xf6\x24\xff\x6b\x2d\x24\x9f\xf7\x7a\xa0\xb8\xe6\x1a\xf1\xf6\xf4\xb7\xc8\xa4\xad\xfa\xe1\x2f\xd8\x3b\xee\x5d\x11\x45\x35\x7d\x45\xeb\x3d\xee\x56\xdd\x0b\xb0\xb4\x69\xb5\x9e\x28\x30\x25\xfb\xca\x62\xab\x73\x96\xfd\x9c\x28\xe0\x57\x33\x8c\x4b\xf2\x96\xd1\x6d\xc6\x96\xbc\x58\x31\x93\xa2\xc6\xa6\x74\xb2\xc9\x5f\xcc\xd1\x12\x99\x50\xe6\xf4\x40\x62\x28\x37\x7f\xc9\xb6\x2c\x89\x49\x18\x5a\xf8\x0f\xba\xae\x50\xd6\xa1\xa1\x24\xa2\xb8\x0a\xba\xea\x6c\x1a\x8c\x05\x9d\x9f\xdb\xc1\x3e\x82\x03\x43\xd7\x37\x76\xba\xe0\x2e\x52\xc4\x6a\xe0\xc0\x83\x90\x8b\xd0\xb8\x48\xb6\x8b\x9c\xcd\x2f\x9a\x10\x6a\xd6\x3a\x1e\x12\x05\xc6\x7f\x42\xe1\x18\xfd\xfc\xfe\xfc\xd5\xe7\x8b\xf7\xef\x5e\x5f\xbd\x41\xa0\xd1\xa9\xc0\xe9\x1a\xfa\x2f\x19\xbf\x91\x83\x25\x93\x5f\xab\xc5\xe8\xf1\x2a\x6d\x9e\xdb\x51\x6f\xe4\xe0\x5e\xb2\x55\x5d\x03\x0b\x2a\x92\x31\xb6\x11\x3d\xf9\x60\x25\xf9\x86\x72\xc8\xb8\x6b\x62\x7a\xf6\x86\x3e\x26\x27\x75\x30\x42\x74\x44\x97\x8d\x90\x98\xd6\xf4\x88\x64\x36\xe9\xaa\x9b\x2d\x64\x82\x77\xf6\x8e\x12\x19\xa3\x8f\x97\x9f\x3e\x5f\xbd\xbb\xfa\x74\x75\xfe\xf3\xd5\x9f\x97\xaf\x20\xc8\xb0\x79\x7d\x9c\x40\x88\x4f\x9e\xcd\x7d\xf8\x4f\x0e\x39\xfb\x63\x48\x84\x03\x46\x78\x38\xc6\x25\xa9\x75\xfe\x9f\xcc\x84\xb9\x23\xfd\x5f\xcf\x87\xcb\x5f\x5b\x90\x1f\x18\xf0\xbc\x32\xcf\xd5\x1b\x53\x85\xdd\x6c\x1d\x93\x5f\x59\xbc\x75\xf8\x22\x1f\xf8\x34\x47\x70\x95\xb1\x19\xb3\xf5\x01\xd5\xfb\xdb\x4f\xd4\x68\x08\x99\x35\x04\xe5\x83\x82\x67\x0a\x5b\x6f\x9d\x34\x66\x54\x80\xad\xa3\xdf\x77\xc4\x4e\xf9\xf9\xc5\xc5\xfb\xdf\xde\x7d\xfa\x88\x08\xdb\xed\x26\x53\x8c\x93\x2c\x46\xc5\x5d\x7e\xff\xd6\x65\x04\xdf\xda\x60\x11\xaf\x8d\x53\x90\xca\x7b\x30\xcf\x3d\xd7\xd3\x00\x81\xc7\x7b\xdd\x63\xc9\x7a\x36\xa1\x39\xcb\x6e\xb9\x44\x25\xd9\xea\x1f\x09\xb9\xa9\x0c\xac\x27\x7f\x73\x51\x4b\xb2\xb4\x79\xc2\x8b\x64\x1b\x6c\xfc\xc6\x01\xa9\xdc\xfe\x4b\xd2\xd8\x49\xad\x96\xc1\xe1\x75\xcd\xdd\x2c\xb4\xda\xba\x1f\x49\x79\x19\x46\x30\xfb\x01\x4c\x0e\xe6\xac\xdb\x14\x6a\x5d\xf7\xd2\x0c\x12\x49\x03\x4a\x76\xc6\xbc\x35\xff\xc8\x2a\x56\xff\xba\xe0\x72\x00\x26\x11\x63\x09\x8a\xcd\xce\xf6\x14\xfd\xc4\x99\xe4\xb2\x87\x2a\x89\x76\x20\x09\xb7\x3c\xc1\x2b\x8b\x38\x13\xe4\xcf\x1c\x11\xf3\x04\xb1\xaa\x34\xcb\xb3\x04\x3c\xd7\xf6\x37\x33\x26\xe7\xc8\xc6\x71\xbc\x9c\x0b\x65\xb2\x3b\x83\x15\x44\x61\x13\xeb\x39\xf2\xb3\x65\xab\xd5\x55\x76\x93\x27\xaf\x18\x91\xf9\x5a\xf1\x22\x99\xd8\x91\xaa\xbe\x57\x4c\xdd\x25\xe8\x00\x81\xc6\x19\x54\x8a\x45\xa2\x3f\x4c\xae\x64\x59\x4e\x49\xc6\x36\x57\x8a\x2f\xab\x2f\xcf\x6b\x50\xbd\x65\x0a\xd8\xa1\xe4\x15\x1b\xe8\xb2\x19\x27\x79\x74\x14\x37\x0f\xba\xf9\x9c\xa0\x03\x84\xf5\x20\x85\xca\x25\x4f\xde\x82\x13\xdf\xf8\xff\xfd\x77\x00\x00\x00\xff\xff\x85\xda\x69\x87\xf2\x12\x01\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\xfd\xfb\x7a\xdb\x38\x96\x28\x8a\xff\xfd\xdb\x4f\x21\x71\x32\x1c\xa0\xb5\x4c\x4b\xa9\xae\xea\xdd\x54\x10\xb5\xe3\x38\x97\xaa\x24\x4e\xd9\x49\xea\xa2\xa8\xbd\x69\x0a\xb2\x10\x53\x80\x0a\x84\xec\x38\x22\x7f\xef\x73\x5e\xe3\x3c\xd9\xf9\x70\xe3\x45\xa2\x53\xe9\x99\x3d\x93\xef\x8b\x45\x82\xb8\x2e\x00\xeb\x86\xb5\x16\xe6\x74\xc1\x38\x45\x68\xb1\xe1\xa9\x62\x82\x23\xbc\x0d\x36\x39\xed\xe5\x4a\xb2\x54\x05\xe3\x9b\x44\xf6\x14\x09\x36\xdc\x66\x9c\x07\x7d\xa2\xee\xd6\x54\x2c\x7a\x57\x99\xb8\x4c\xb2\x77\x4b\x96\x4f\xea\xc7\xb8\x2b\xe7\x2d\xe3\x73\x71\x3b\xb1\x3f\x9d\x39\x6c\x05\xae\x9e\xce\x1c\x39\xcd\x16\x13\xfd\x27\xde\x96\x63\xdf\xd9\x1e\x45\x0a\x28\xde\x4a\xaa\x36\x92\xf7\x14\xa2\x64\x4b\x3f\xaf\x85\x54\x79\xbc\x2d\x4b\xa0\x91\x7b\xc3\xf5\x63\xa9\x47\x24\x49\x73\xc8\x0a\x6f\x75\x22\x25\xfb\x29\xa7\x97\x9f\x68\xaa\xa2\xb5\x14\x4a\xe8\x9e\x80\x24\x34\x5a\x26\xf9\xe9\x2d\x7f\x2b\xc5\x9a\x4a\x75\x07\x9c\x04\xbe\x60\x40\x7c\x7f\xcf\xef\x56\x97\x22\x9b\xd8\x9f\x78\x5b\x82\x20\x3c\x62\x8a\xca\x44\x09\x59\x14\xc1\x3f\xfe\xe1\x5f\x02\x60\x84\x47\x49\x7e\xc7\xd3\x97\xcd\xef\xad\x94\x00\x12\xc2\x23\x25\xce\x95\x64\xfc\xea\x5d\x72\x65\xb2\x34\xde\x83\x1a\x28\xa9\x06\x0a\x48\xe0\x76\x10\x82\xd0\x30\xa4\xf5\x10\x7a\x8c\xe7\x2a\xe1\xa9\xee\xe5\x62\x42\xe3\x05\x30\x3f\xcc\x54\xd2\x44\x51\x24\xea\xcc\x58\xb7\x4b\x6f\x7b\x17\x88\x17\xc5\x74\x86\xc7\x0e\xd4\x2c\xba\x60\xfc\x46\x5c\x37\x61\xa6\x1b\xb5\x4d\x72\x12\xe4\x9b\x7c\x4d\xf9\x9c\xce\xcf\x55\x22\x55\xe0\xcb\x55\xb9\x05\x30\xbc\x65\x0b\x14\xd0\xcf\x34\xdd\x28\xc6\xaf\x02\x42\x08\xc7\x6a\x29\xc5\x6d\x4f\x37\x79\x22\xa5\x90\x28\x78\x4e\xb9\x05\x41\x8f\xe5\xbd\x24\x93\x34\x99\xdf\xf5\xe4\x86\x73\x5d\x04\x8f\x75\x15\xa9\x58\xad\x33\xaa\xe8\xdc\x56\x61\xaa\x35\xf5\xe8\x77\xe1\xaa\x64\xbe\x0b\xe7\x08\x97\x0b\x21\x91\x8c\x56\x54\x2d\xc5\x9c\x08\x90\x51\x22\xaf\x08\x1b\x8f\x6d\xf7\x13\x22\xa3\x39\xcd\xe8\x55\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x44\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x39\x4e\x05\x57\x8c\x6f\xa8\x6f\x20\x2d\x4b\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x4e\xb9\x22\x32\xba\x70\xbf\x89\xbc\x1a\xd3\x2c\xa7\xbd\x56\x87\xab\xfc\x66\x1c\x3b\x70\x6c\xc2\x88\x34\x06\x6e\x87\x30\x96\xd1\x9c\xe5\xeb\x44\xa5\xcb\x93\xcf\x29\x5d\x1b\x48\x9b\x2f\xb8\xd4\x0d\x05\xb6\x87\xcd\x56\xc2\x50\x46\xc9\xa5\xdc\xac\x15\xf2\x5f\x6d\x5d\x78\xcc\x49\x63\x72\x0c\x22\x58\x90\x8d\x9b\x66\x03\x77\x2e\xe4\x2a\xc9\x74\x6d\x8b\xc8\x2c\x16\xdd\x63\xae\x81\x27\x38\x9d\x34\x7a\x17\xd7\xc3\xf8\x8d\xd1\x6c\x1e\xc0\xc2\x40\xbc\x03\x7a\xdb\x9b\x24\xdb\xd0\xd8\x7c\x07\x5d\x4f\x6c\xab\x2b\xcb\x1a\x42\xb6\xb5\x30\x44\xbb\x20\x70\x13\xea\x72\xba\x69\x5d\xd8\xf1\x97\x25\x52\x20\x21\xc1\xc0\xca\x6a\xab\xf8\xe1\x6c\x95\xbc\x73\x58\x64\xab\xeb\x8e\xfd\xd8\x20\x91\x57\xb1\x8a\xd2\x24\xcb\x90\xce\x58\x96\xa9\x86\xae\x46\x10\xad\xec\xae\x45\x93\xbb\x2c\x4b\x15\xdd\xca\x64\x4d\x52\x03\xb5\x9c\x34\x51\xd6\x02\xe1\x6d\xdd\x81\xac\xf5\xb6\xd6\x6f\xba\xc8\x5c\x17\x99\x4f\xc5\x8c\x34\xf0\xb2\xc7\x72\x4b\x96\x97\xa6\xe2\xa5\xdf\xb7\x57\x54\xbd\xf5\x3b\xf6\x74\x01\x37\x64\x19\x86\x4b\xb4\x44\xa7\x68\x3a\xc3\x18\x8f\x6f\xc2\xf0\xa6\x4f\x34\x1e\x90\x76\x28\x37\x20\x70\x18\xa2\x39\xb9\xc1\xa6\xa6\x3b\xb2\xae\xf7\x3c\x59\x34\x9e\xdb\x98\x61\x8e\xeb\x81\xac\x34\x10\xa6\x76\x99\x83\x07\x80\x5f\x43\xb3\x68\x21\xe4\x49\x92\x2e\x1b\x68\x96\xe2\xad\x9a\xd2\x59\x0b\xcb\x36\xc6\xe4\x31\x0a\xa2\xa0\x70\x59\x62\x5c\xc3\xe5\xca\xa2\x79\x83\x5a\xc6\xcd\xbc\xa4\x8d\x4f\xaa\x02\x49\x0d\x2e\x8d\x4a\x9a\xc8\x9e\x43\x82\xb7\xfd\x2a\xa7\x29\x09\x09\xa4\xb6\xfa\x5c\xaf\xf0\xa9\x98\x81\x02\x66\x17\xb9\x1d\x58\x9f\x90\xdc\xad\x71\xbb\x11\x72\xb3\x40\x33\xb2\x88\xcc\x82\xf5\x7b\x3f\x0b\xc3\x40\x18\x90\xd5\xa4\x20\xab\xc0\x9e\x41\x70\x71\x91\xdc\x26\x4c\x05\x78\x42\x23\x49\x73\x91\xdd\x50\x94\x45\x2e\x15\x47\x6a\x49\x79\x9b\x32\x71\x87\x49\x40\x99\x5e\x96\x18\x76\x3f\x3b\xd0\xfb\xef\x38\x6e\xd4\xdc\x55\xa3\xeb\x32\x51\x90\xa0\xc5\x5e\x85\x1e\x6c\xfb\xf5\x96\x29\xca\xed\x5e\x32\x30\xd3\x80\xd4\xa9\xbe\x00\xe1\x13\x6e\x5b\x4b\x20\xc1\x71\x82\x70\x59\xcf\xe0\x65\x3d\x83\x92\xa8\x8a\x10\x4e\xa9\xdb\xb3\x33\x0d\xeb\x1b\xc1\xe6\xbd\xa1\x46\x4e\x06\x93\xd0\x0a\x09\x13\xbe\xc9\x32\xa8\x11\x00\x6d\xa2\xc8\xba\xb6\xc8\x76\x25\x0c\x11\xad\x50\x81\xc7\x69\xd4\xe0\x02\xdb\x02\xd8\xde\x74\x55\x88\xdd\x68\xf2\x31\xdd\xc5\x26\xb6\x06\xbd\x9c\xde\xdd\xad\xa9\xa3\x4e\xef\x96\xb4\xe7\x9b\xef\xcd\x05\xcd\x7b\x5c\xa8\xde\x5a\x8a\x1b\x36\xa7\xbd\xa4\xf7\x1f\xa6\xf0\x7f\xf4\x6c\x5d\x41\x05\x2d\xcb\x86\x70\xb2\x41\x12\xea\x01\xd8\x36\x9a\xeb\x4e\xe3\x7b\xbb\xee\x5c\xc1\xfb\xba\x65\x96\xe3\x2e\xc4\xf2\xb1\x65\x00\xb8\x25\x0e\xb6\x06\x31\x11\x16\x41\x23\x3a\x55\x7a\xa5\x6c\x32\xf5\x26\x59\xd1\x19\x11\x76\x61\x00\x8d\xf4\x8a\x23\xca\xfc\xbc\x12\x69\xb5\xab\xfb\x35\xa4\x5a\x40\xb6\x0b\xb4\x09\x62\xbc\xdf\x17\x1c\x8b\x18\x7d\x1b\x54\x2b\x88\xda\xde\x69\xca\xaf\xc1\x9a\xf0\x9e\xdb\x5b\x5d\xd5\xd7\x8b\xed\xb6\xe6\xdf\x34\x62\x7f\x25\xd2\x58\x4d\x87\xb3\x72\x3c\xea\x31\xde\x53\xa6\xeb\x06\x8d\xbf\x12\x29\x51\xd3\xd1\x0c\xc3\xc3\xfa\xcb\x82\xf1\x24\xcb\xee\xec\xb7\x87\x33\xdd\xc3\x85\xa2\xd2\xbe\x7f\x37\xc3\x60\x10\x90\x92\x77\x27\x5c\x49\x46\xf3\x68\xbd\xc9\x97\x88\x36\xda\x3f\xa9\xdb\x57\x91\x23\x50\x4c\xf0\xa2\xd8\x96\x63\x6a\x66\x93\x54\xf4\x45\x8f\x42\xd1\x9e\x01\x03\x34\x73\x13\x5a\x57\x78\xa1\x2b\xdc\x69\x96\x4c\xfd\xd8\x02\x29\x84\x0a\xca\x19\xa8\x0a\xe9\xde\x9a\x4e\xba\xae\x4a\x9a\x53\x85\xfa\xc3\x46\x0f\x4f\x75\x85\x7a\xef\x54\xfd\x9c\x0a\xb3\x05\x1b\xeb\xcc\x60\x2c\x65\x17\xe3\x3e\x7f\x6b\x17\x87\xcf\xad\x74\xae\x3e\xcb\xdf\x24\x6f\x90\x8a\x32\xca\xaf\xd4\x12\x7b\x5e\xf0\x60\x04\x8c\x34\x58\x76\xbc\xd5\xec\xd7\x78\x30\xe0\x8f\x7c\xde\x31\x66\x0b\xe4\x90\xa4\x02\x8e\xeb\x5e\x38\x54\x35\xe5\x7a\x22\xf4\xb2\x25\xfd\x11\x54\xe8\xd6\x7f\x77\xfb\xda\xe7\x18\x02\x2d\x6b\x4e\xd5\x2c\x66\x56\xba\xad\xb7\xd5\xaf\xf1\x79\x03\x37\x9d\x57\xc4\xc2\x31\x1f\xae\x36\xc3\x7d\xf4\x87\xbe\x60\x2f\x6b\x90\xc5\xbb\x28\x15\x3c\x57\x72\x93\x2a\x21\xc9\x1a\xd6\xad\xf7\x0c\xd6\xd3\x64\x46\x32\xc3\x8d\x65\xc9\x9d\xde\x5e\xa4\xe6\x64\x9f\x79\x68\xea\xad\x9f\xef\x25\x77\x88\x21\x5d\x13\x10\x86\xaa\xd9\xa8\x1b\x6f\xbf\xaf\x19\x23\x4a\x08\xc9\x8a\xa2\xa3\x49\x42\x88\x46\xac\x75\xbf\x8a\x82\x46\x3c\x59\x51\x8c\x4b\x50\xd1\x2a\x91\xd7\x5d\x04\xda\xb1\x01\x79\x8b\xd1\x98\x74\xa6\x22\x05\x6b\x1c\x23\x15\x5d\x5c\x18\x78\x5d\x5c\x90\x35\x24\x66\x7f\x15\x05\x52\x1a\x30\x1d\xfd\xc2\x18\xd4\xbd\x6c\xc7\x1d\x06\xa5\x7b\x97\x18\xae\x6a\xbf\x7b\x5b\x47\x3f\x35\xef\x05\x2b\x74\xd5\x94\x5f\x1a\x2f\x53\x76\x2f\x3f\x05\x2a\x3a\x6a\xca\x5b\x44\x6f\x46\x23\x81\xd5\x25\x8c\x4c\x05\x86\xd1\xa8\x28\x15\x0b\x43\xc4\xc8\x5b\x29\x56\x2c\xa7\x96\x97\xb2\x02\xd3\x15\x4a\x7d\x01\xac\x59\x09\xdf\x58\xd7\x84\x23\x89\x27\x49\x9c\x98\x85\x8a\xba\x28\x76\x55\xd8\xe0\x6d\x65\x17\x7d\x55\x40\x13\x61\x58\x69\x20\xdd\xb5\x81\x1b\xc0\xdd\x57\x58\x48\xb8\xab\xe4\xc9\xfd\x2c\xc1\xd4\x62\xda\x5e\x55\xd9\x2c\xd0\x40\xba\xa6\x77\x79\xc7\xfa\x9c\xce\xc6\x7a\x4f\x1b\xf2\x6e\x66\x1a\x53\x8b\x16\x25\xae\xb7\xaa\xa4\x37\x54\xe6\x14\x61\xa8\xb6\x9e\xf4\xc8\x80\x56\x88\xc0\x21\x0d\x1a\xad\xc5\x1a\x19\xec\xc3\x6d\x8d\xae\x1e\xe9\xb6\x3c\x07\x59\xe1\x03\x59\x56\x1f\x3d\x02\x90\xa5\xee\xae\xc9\x9a\x93\x53\xb8\x68\xac\xad\x6d\x63\xd7\xc4\x17\x60\xd0\x63\xdc\x1c\x93\x46\x8c\x1a\x71\xae\x25\xbd\x21\x43\x8b\x44\x0d\x12\x71\xcf\x46\x7c\xb3\x6c\xa8\x79\x74\xf8\xc2\xa4\xf8\x2e\xd9\x97\x16\x89\x32\x49\x6d\x92\x69\x92\x1a\x8c\xc9\x2e\x69\xf1\xf8\xfc\x04\x43\x5f\x61\x0f\x62\x6a\x00\xa2\x11\x7c\xa0\x2c\xf7\x92\x2e\x13\x79\xa4\xd0\x10\x57\xac\xa6\xfe\x0c\x14\x87\xa1\xc3\xca\x03\x1a\xe5\x19\x4b\x29\x1a\x61\xcd\xf9\xeb\xcf\x9a\x17\x77\xd4\xba\x84\x5c\x89\x75\xdc\x58\x06\x8d\xc1\x0c\x9d\x12\x68\xa7\x73\xd3\xe1\xac\x41\xae\xda\x3c\x8b\xb2\x3c\x8b\x15\x54\x55\x93\xfb\xb0\x14\xe9\x26\xc9\x4a\xd8\x13\x55\x3b\x27\x41\xf7\xc1\x57\x34\x76\xc4\x6a\xc9\xf2\x71\x83\x83\x37\xaa\x0e\x57\x7f\xe2\xe8\xab\x17\xc8\x0c\x74\x95\x67\x69\x24\xf0\x3f\x65\x5c\xfa\x7d\x5e\x7a\x48\x8b\xdd\x41\xbb\x65\x7a\x30\x1a\x8b\xc7\x64\x38\x3e\x38\x10\x76\xc1\xb2\x3d\xe8\x88\x19\x24\x84\xed\x42\xc8\x90\x6a\x8d\x37\x22\x4b\xbc\x71\xcd\x6e\x53\x3e\xb7\xfa\x0c\xff\xed\x11\xa9\x56\xa1\x57\x40\xb8\xc9\x65\x10\x78\xfe\x25\xc0\xb0\x69\x24\xd7\xcc\x8b\xad\x2b\x0d\xc3\x4d\x7b\x41\x3f\x62\x15\xef\x53\x37\x5e\xa7\x41\x7f\x68\x0a\x36\xf3\xd7\x95\x36\x4b\x34\x52\x4b\xaf\xc5\x48\xff\xe5\xb6\x4c\x51\x5d\xa8\xbf\xd9\xd7\xfd\x28\x79\xd7\xcb\x55\xa2\xe8\x8a\x72\xd5\xbb\x65\x6a\x29\x36\xaa\x67\x8a\xf7\x84\xec\xb9\x1e\x04\xff\x89\x0e\x97\x65\x09\x56\xed\x11\x37\x15\x58\x16\x1b\x59\x0c\x74\xef\xcc\x73\x3b\xf3\x95\x7a\x6d\x77\xe6\xb9\xe1\xa4\xc4\xfe\x2c\x56\x9b\x53\xb4\x27\x2a\x0c\xeb\xce\x8b\x66\x37\xdd\xd2\x12\xe3\x4b\x49\x93\xeb\xb2\xd4\xd4\x26\x30\xcf\x66\x93\x15\x45\xe0\xb5\x27\xe6\x1d\x87\x61\xbd\x76\x68\x18\xd2\x47\xa4\x39\x6a\x43\xaa\x34\x26\xf2\x74\x8a\x4d\x9a\xeb\x33\xde\x56\x3c\x93\xdb\x44\xca\x6d\x1f\x0a\x6c\x82\xee\xc3\x5e\x96\xbb\x6a\x34\xa3\x39\x7d\xf3\xc5\xab\x66\x50\x82\x4b\xf0\x2f\x3b\xe0\xfe\x36\xac\xd1\x18\xb3\xc9\xb2\x3b\x70\x93\x38\xa9\xbb\x63\xca\xc6\x0d\x6d\x97\xcb\x81\x2a\xec\x43\x2a\xcc\xab\x2c\xe7\xdd\x1c\x9d\x97\x19\xeb\x0a\xed\xe6\x8c\x1b\x1a\x2f\xe5\x74\x50\xd4\x21\x53\x9b\x8f\x62\xc8\x4b\x58\x30\xce\xf2\x65\x0b\x9b\x55\xa8\xfb\xfe\x65\x45\xed\xb2\xaa\xa5\xe4\x9d\x65\x45\xcd\xb2\x92\x4d\xf9\x44\xcf\x79\x13\xaf\x56\x10\x97\x8d\x79\x05\x59\x09\x30\x18\x4e\x90\xd4\x5d\x2c\xc1\x6c\xa2\xff\xae\x2e\xda\x35\x68\xba\xe7\xc8\xb9\xbc\x97\x54\xf0\x86\x5a\xc5\x4b\xaa\xba\x97\x9e\xa4\x8b\xb2\xdc\xc3\x0b\x2c\xd3\x74\x35\x73\x98\x20\x51\x8a\xae\xd6\x2a\xc0\x25\x78\x82\x6b\xb4\x8c\xf1\xae\x6a\xba\x09\xaa\x8a\x34\x6f\xbd\xb0\x19\x6b\xa1\x08\x6a\x79\x38\xa6\xe0\xe4\xdf\x58\x96\x50\xa9\x73\x1b\x2b\xc5\x4f\x7d\x93\x7a\x68\xd8\xaa\x12\xa9\xea\xe4\x61\x6c\x55\x8b\x57\x9e\x8f\x3a\xdb\x70\xc5\x56\x94\xd0\x5a\x93\x58\xf1\x81\x81\x34\x1a\xb4\xdd\xbc\x3d\xd2\x93\x01\xd6\x22\x66\x89\x31\xf0\x4e\x05\x9a\x96\x06\x5e\x27\x6a\x49\x88\xfe\x1b\x86\xca\x9c\x38\xa0\x3d\x65\x54\x7d\x54\x13\x86\xf5\x33\x2e\x8a\x8e\xbc\xf6\xc0\x26\x0c\xed\x6f\x77\x9e\x9c\x66\x8b\x30\xd4\x7f\xbb\xbf\xeb\x8e\xe1\xa2\x68\x0c\xb1\x9e\x84\x00\x23\xdc\x10\x0d\x8d\x90\x5b\xe9\x61\xfb\x7d\xcd\xda\xee\x68\x5b\xb5\x34\x06\x09\xe9\xb3\xd6\x81\x95\xab\xf2\x6f\x7d\x2f\x36\xd8\xd3\x23\x7f\x40\x83\xb6\x25\x8c\x60\x7b\xd5\xe4\xf2\xea\x42\x65\x89\xa7\xa3\x99\x06\x6c\x4a\xb6\xa5\x66\x13\x4d\xa1\x97\xf9\x09\xdf\xac\xa8\x4c\x2e\x33\x0a\x9b\x86\xa2\xb5\x71\xf2\xf3\x94\xe6\xa9\x64\x6b\x25\x24\xe4\x64\xbb\x88\x37\x61\xd8\x4f\x2d\x86\xdf\x8e\xe2\x87\x25\x8c\xf0\x64\x9f\x57\xde\x58\xde\x4c\xe1\xa6\xc4\x46\x23\x5a\x35\x57\xc6\x69\x09\x0b\xd2\x46\x94\x4e\xd0\xa9\x73\xc5\x7d\x34\x0a\x15\x86\x54\xf0\x05\xbb\xda\xf8\xb4\x87\x3a\xed\x56\x32\xe5\xde\xff\xaa\xdf\xad\xbc\x40\xcb\x12\x32\x3d\x46\xcf\xf6\x43\x97\x2c\xd5\xcb\xbc\xe4\xef\x18\xc6\xff\x0d\x07\x23\xbd\xb5\x48\x10\x44\xf9\x3a\x63\x0a\x96\xa4\x0b\xfe\x7d\x0b\x23\x14\x7c\x09\x70\x27\x18\xd1\x50\x8b\x2a\x93\xfd\x26\x03\xdb\x9d\x80\x90\x35\x52\x78\x32\xf7\x7a\x80\x20\xc0\xb1\xab\x54\xe1\xd2\x3d\xc2\x0d\xd9\x61\x13\x35\x49\xd3\xa8\xc6\xa2\x89\x86\x1a\xe9\x38\xe1\xff\xa1\xd9\x85\x2c\x73\xfa\xb7\x9e\xe0\xbd\x60\xa0\x6a\x69\xac\x84\xbb\x2e\x10\x2c\xd1\x0d\x52\x46\xaa\xea\xf8\xba\xbf\xc4\x27\xba\x07\x7d\x42\x54\xdc\x25\xa7\x97\x70\x45\xf6\x88\x5e\x7f\xa5\x1b\xa8\xb4\x27\x06\x9d\x82\xc1\x8c\x34\x0c\xf7\x6b\x41\x52\x13\x1c\x37\x6d\x9a\xa9\x5f\x99\x73\x16\x37\x51\x55\x45\xbc\x5b\x59\x63\x4a\x9b\x35\x70\xba\xf8\x93\xc2\xfd\xff\x5a\xf3\xf7\x4d\x81\xe0\x37\x54\x2a\xa7\xbd\xeb\x29\xd1\x5b\x4b\xb6\x62\x8a\xdd\xd0\x9e\xe9\x97\xc6\xdd\x97\x7a\x69\xee\x1c\xad\xde\x76\xee\x82\xde\xa5\x5f\x21\x14\x97\x70\x42\x44\x34\x17\xe9\x46\xf3\x88\x70\x41\x56\xe8\x04\x87\xe1\x0a\x9d\x38\xe5\xc1\x49\x66\xb8\x47\x0c\xa7\x5d\x33\x7d\x31\xd9\xc9\x87\x14\x36\x47\xc7\xe7\xa4\x9f\x68\xe1\xe9\x5f\x42\x34\xa7\x28\x98\xb3\x9b\x00\x43\x90\x04\x5f\x43\x38\x51\xa2\xf1\xcd\xa7\x3f\xc5\x2a\x9f\x35\x56\x49\x26\x9f\xf6\x99\x26\x45\xee\x34\xb5\xa2\xe4\x0a\x51\xcd\x46\xc3\x39\xae\x51\x67\xef\x93\x05\x4d\x85\x3c\x4b\xb6\x40\xb7\x26\xcd\x4f\xd5\x02\xf5\xf3\x68\x51\x83\x11\xd4\x94\xce\x70\x59\xc2\xf1\xee\xee\xb2\x2b\x75\x77\x62\xed\x52\x40\x0a\x0f\x82\x0e\xed\x6c\x63\x7f\xbd\xeb\x06\x15\xbc\xb5\x43\x7b\xb7\x47\xa4\xd9\x02\x1d\xb7\x87\x76\xac\x79\x96\xd6\xf8\xde\xb9\xcc\xed\x11\x06\x57\x54\x05\x8c\xf7\x64\x51\x04\xb9\x7b\xdc\x47\x0a\x47\x69\x4a\xf3\x5c\x48\xdb\xe9\x7c\xb3\xd6\x64\x9a\xce\xab\x4e\x07\x76\x41\xea\xc2\x9a\xbe\x6b\x21\xd9\xa9\x1c\x30\xa8\xb2\x84\x23\x92\x4c\xee\x61\x2c\xde\x46\x0b\x93\xb2\x40\x23\x90\x18\x97\xf7\x32\x20\xa6\x52\x50\x25\xbc\xda\x59\xdf\x7a\x8c\x47\x48\x40\x63\xfa\x24\xde\x8a\xa9\x9a\x11\xea\x19\x22\x5a\xc2\x1b\x22\xa6\xc1\xc5\x45\x2a\x24\x3d\xf8\x94\x5f\xe4\xcb\x44\xd2\xf9\xc5\x45\x30\x2b\x8a\x57\xa8\xeb\x03\x6c\x4b\x0c\xd7\xc4\x53\xe1\x6a\x2f\x8f\xeb\xbd\x5e\x59\x5a\xbc\x89\x18\xcf\xd7\x34\x55\xe7\x62\x23\x53\xcd\xdf\xee\xa4\x74\xed\xa3\x6b\x8f\x0c\x4a\x2b\x5c\x9c\xc1\x6b\x78\x00\x4f\xc9\x4e\x51\x78\x49\x44\xf4\x0b\x4d\xae\x5f\x27\x6b\x78\xd6\xa5\xd6\x7c\x19\x86\x87\x3c\x31\x98\x21\x15\x73\x7a\x18\x29\x9a\x2b\xf4\x14\xbd\xc4\x18\xde\xef\x5a\x6d\xd4\x6c\x56\x37\x9e\x78\x33\x55\xb3\xa2\x40\xfa\xc7\x31\x68\x7d\x42\xe8\x84\xc6\xdb\x12\x97\x18\x05\x37\x54\xe6\x4c\xf0\x3c\x80\xe9\x0c\x5b\x85\xd5\xd6\xa5\xc5\xc1\x77\xd1\x0f\xd1\xf7\x01\xac\xc4\x9c\xc6\x81\x65\x95\x02\x48\xc5\xfa\x4e\xb2\xab\xa5\x8a\x83\xff\xf7\xff\xe9\x3d\x1c\x3e\x1c\xf6\x9e\x52\xce\xf2\xde\xdb\x4d\xbe\xbc\x4e\x24\xbd\xe9\xa1\x2f\x99\x60\x52\xa4\xd7\x91\xdc\xe0\x40\x37\x84\xe1\x09\x19\xc2\x73\xc3\x99\x45\x32\xe1\x73\xb1\x42\x18\xbe\x74\xd1\x16\x6b\x2f\x82\x82\x81\xdb\x60\x95\xa2\x51\x4d\x82\x20\xd6\xdb\x0d\x5f\x04\x03\x34\x18\x3c\x19\x3c\xc7\xd5\x34\xa2\xef\x7e\xc0\x25\xfc\x41\xde\xa3\xe0\x9a\xde\xe5\x01\x86\x0f\x5d\x93\xf4\x87\x05\x87\xfe\x21\x5f\x2c\x81\x7b\x41\xb6\x25\xfc\x5a\x4f\x8a\xa6\x01\xcf\x2c\xa7\xf2\x93\xd1\x63\xfe\x0a\x3f\x93\x9f\x34\x86\x82\x1f\xc9\x4f\x1a\x3d\xc3\x2f\xe4\xa7\x28\xa7\x6a\x7c\xd6\x0d\xf3\x5f\xec\x4a\xf8\xc9\xac\x61\xa0\x25\xbc\xee\xea\xca\xcf\x55\x2e\x5c\x14\x1a\xdf\x3e\xe8\xca\xf5\x63\x9d\xab\xb4\x8a\x02\xdd\xb1\xdf\xc8\x07\x14\x18\xb5\x40\x80\xc7\x2f\xa6\xbf\xcd\x48\x7f\x08\xf7\xf4\xe6\x08\x29\xf8\xed\x6b\x1d\xd1\x68\xf1\x37\x3c\x51\xd3\xdf\x66\xf1\xbd\xfd\xb0\x99\x4a\x73\x66\xf7\x3b\x28\x45\xb6\x39\x55\xf1\x19\x68\x0c\xff\x1a\x96\x49\x1e\x3f\x00\xca\x17\x42\xa6\x34\xee\x28\xfe\x40\x73\x35\xaf\x35\x65\x39\x43\x4a\x6f\xc5\x52\x97\x54\x54\x3e\x13\xb2\x2b\x7f\xf3\xc4\xdc\x70\x06\x63\x8b\x87\x29\x2e\x0a\x24\xc9\x6b\x44\x31\x36\x52\x53\xbf\x93\xed\x79\xc9\xb5\xac\x95\x28\x76\x99\xd1\x9e\xa4\x29\x65\x37\x54\x82\x66\x7c\x06\x41\x4f\xd2\x3f\x36\x4c\x36\xf0\x5d\x4f\x96\x65\x09\x54\x75\x5b\x44\x29\x43\x9d\x40\xea\x07\x37\x42\xe0\xc4\xad\x3a\xc7\x0f\x58\xae\x10\x79\x2e\x0e\x8f\xef\xd9\x96\xc0\xa0\xb2\xa4\xe9\x1b\xea\xda\x4f\xa2\x0d\xcf\x93\x85\xe6\xb0\xab\x94\x9a\xc5\x85\xbc\x4e\xe5\xe2\x5d\x22\xaf\xa8\x7a\x4e\xd5\xb8\x03\x6d\x18\xcd\x48\x6e\x3b\x50\x61\x32\x5a\x14\xb7\x88\x41\xc0\x93\x15\x0d\x70\x51\x1c\x55\x2f\x7a\x45\x48\xc4\x70\x94\x5b\x8c\xc6\xa3\x4f\x82\xf1\xaa\x86\xaa\x5a\x8d\x2b\x02\x73\x36\xd1\x27\x44\x4c\x50\x3a\xe9\xe7\x61\xa8\xf1\x77\x18\xa2\x0d\xe9\x0f\x71\xec\x0e\xf0\x74\x1a\x6c\x26\x06\xb5\xb3\xf8\xc8\x8e\x17\xe3\xb8\x4a\x7a\x85\x74\x42\x89\x51\x85\x84\x6b\xa3\xb2\xc0\x6f\xe4\x00\xf6\xd9\x8d\x2e\x9e\xd2\x88\x6f\xd4\x08\x12\x7e\x0c\x45\xf1\xd4\xbe\x97\xd8\xa0\x1c\xa9\x88\x00\xae\xba\x90\x4c\x47\x85\x13\xe5\x4e\xbd\x4a\x10\xaa\x7b\x2b\x25\xf2\xca\xf0\x58\x5e\x1f\xf0\xe8\xe1\x84\x2b\x24\xd5\x54\xcd\xb4\xe8\xa7\x90\x26\x53\x38\x36\x09\x61\x68\x7e\xa6\x74\x56\x14\xc2\xbc\x0b\xfb\x5a\x02\x53\x16\x0f\xa6\x94\x65\x90\xb8\x97\x45\x26\x84\x84\xb4\xab\xb7\x3d\x77\xaa\x48\x06\x0a\x4f\x86\x31\x52\x8f\x87\x93\x44\xc5\x4c\x61\x4d\x6d\x60\xe3\x6a\x58\x31\x0e\x79\x67\x79\x5d\x60\xa3\x90\x11\x22\xe0\xef\xc3\xe1\xdf\x46\x7f\xff\xfb\xc3\xef\xff\xfa\xb7\xbf\x0e\xff\xfe\xf7\x11\x8e\x87\x25\x2c\x7c\x1d\xc9\x67\xc8\x1a\xf5\xad\x3b\xeb\x6b\x9f\x07\x39\xc5\x05\x30\x72\x87\x8c\xb5\x5c\xae\x10\xf3\x27\xa0\x90\xee\x80\xd2\xaa\x4d\x4c\x57\xaa\xed\xf7\x68\x38\x59\x28\x24\x07\x14\x86\x38\xce\x14\x92\x9a\xf6\x1b\x33\x15\xa3\xd6\x0c\x43\xd9\x27\xd2\x1d\x93\x24\x8f\x53\x73\x54\x8a\x04\x61\xd3\x74\x30\x98\xe1\x3e\x11\xb8\x92\x8d\x8d\x1a\xb6\xca\x98\x0e\x06\x26\xaf\x2a\x8a\xb4\xc7\x78\x8f\xe1\x30\x64\xd3\x74\x66\x0c\x2c\x3c\x70\x8a\x22\x2d\x8a\xa1\x17\x45\x55\x18\x1e\x8c\xca\x12\xe6\x8a\x6c\x19\x4f\xb3\xcd\x9c\xe6\xf1\xda\x1c\x1e\x03\xe3\x73\xfa\xf9\x74\x61\x5e\x47\xb8\x8c\xdc\x3b\x2c\x77\xd7\x8b\x13\x66\x2c\x87\x2a\xc8\x10\x98\x3f\x1f\x32\x67\x43\x1c\xf7\x6f\xd1\x0b\x90\x38\x0c\x6f\x11\x37\xbf\xac\x3a\x2c\x6a\x1d\x06\x3d\x16\x63\x6c\xb2\x10\x3a\x15\x7a\xb0\x61\x88\xfe\xff\x73\x85\x18\x48\x5c\x14\x55\xa1\xda\x28\xb1\x84\x1b\x45\xa6\x41\xe3\x7c\x27\x80\xa0\x2d\x52\x04\x10\xb0\xbc\x71\x5a\x19\x40\xd0\x25\xab\x06\x7a\x4f\xbe\x12\x69\x92\x51\xbf\x33\x1b\x9b\x34\x70\xc2\x54\x30\x83\x3b\x45\x6e\xcc\x39\x6c\x9a\x28\x14\xd8\x7e\xdb\x3a\x6d\x0b\x01\x86\x95\xd2\xbc\x6e\x27\xaf\xff\x26\x59\xd1\xbc\x28\xba\x44\x50\x85\x14\xdc\x69\xba\x07\x57\xf7\x97\xb7\xec\x42\x5e\xc2\xa5\x22\x42\xa1\xe0\x8c\x2e\x32\xcd\x81\x43\x20\x6e\xf9\x4f\x86\x15\x68\xd7\x6e\xb1\xfa\x4a\x45\x96\xcb\xc6\x20\xc9\x95\x8a\x16\xd5\x62\x9c\x50\x3f\x16\xa9\x3f\xc7\xb4\x84\xdb\xdd\xf9\xad\x4e\xfa\xc8\xa5\xd2\x6b\x9e\x93\xb7\xd1\x02\x04\xf9\x1c\x2d\x80\x91\xe1\x98\x3d\x92\xfe\x34\x8f\x0d\x06\x95\x49\xe5\x94\xcd\xc6\x9a\x90\x26\x46\x51\xa4\x20\x01\x81\x28\x24\x58\x0f\xf1\x44\x91\xc3\x7f\x2b\x3e\xd6\x28\xf1\x63\x74\x08\x17\x9d\x0b\x8b\x9c\xab\xe9\xa9\xde\x40\xb3\xaa\xd3\x84\x7c\x56\x45\x21\xfb\xe4\x93\xd2\x64\x60\x1f\xbd\xd1\x09\x43\x14\xc7\xfd\xbe\x96\x17\x4f\x15\xb9\x50\x91\xd5\xe4\xb2\x2f\x9d\xdc\x6c\x25\xdd\x44\x92\xae\xb3\x24\xa5\xe8\x44\x41\x10\x05\x9a\xe3\x7a\x25\x6e\xa9\x3c\x4e\x72\x8a\x70\x09\xe7\xa6\xae\x79\xa2\x12\xcd\x47\x7d\x32\x6f\x6f\x8e\xde\xbd\xfc\x70\x42\x82\x37\x01\x7c\x36\x09\x6f\x4f\x5f\xfd\xf6\xec\xe5\xab\x57\x24\x78\x1b\xc0\xb1\x4e\x82\x77\xca\x40\xeb\xed\x3d\x5b\xc7\x5a\xa4\xc1\x46\x4b\xdd\x86\xea\x41\x4e\x54\x64\x79\x50\x58\x10\x15\x69\xee\xc7\xa8\x5a\x49\x3e\x11\xf1\x62\x22\xa6\x1b\xc3\xfb\x6f\x34\x77\x11\x23\xfb\xba\x2d\x71\xe3\x20\x5c\xcf\x9a\x39\x49\xb5\x02\x64\x42\xe8\x94\xcf\x80\x11\xd5\x24\xad\x13\x94\x92\x77\xca\x1c\xa8\xe1\x30\x4c\xdd\x41\xb3\xd4\x39\xfb\xc7\x0a\xe5\x13\x1e\x6f\x06\x68\x31\x09\xa2\x20\x0e\xfe\x2d\xc0\x03\x6e\x8d\x4e\x52\x3a\xc7\x61\x58\xb1\xd8\xd6\xb4\xd7\x01\x3f\xa9\x89\x74\x6d\xec\x79\xab\x50\xa2\xc9\x21\x52\x51\xbe\x4c\x56\x45\xc1\x34\x16\xd0\x8f\x38\x0c\x8f\x50\x02\x81\x7e\x0e\x8c\xfc\x47\x4d\x87\x20\x31\x5c\x20\x1c\x29\xd2\xef\x7f\x6d\x33\xdc\x23\xb5\xf7\x3d\xd3\x62\x39\x6c\x4b\x24\x5f\x29\x72\xa4\xc2\xb0\x6f\x13\x4d\xfb\x61\x18\xe4\xe6\x6d\xd7\x96\xbb\xb6\xd2\x7a\xa3\xc8\x91\x94\xc9\x5d\xc4\x72\xf3\xdb\xb5\x81\x03\xf3\xc5\xa9\xb4\x4a\xb8\xee\x24\x25\x4e\xb9\xe5\x94\x4d\x67\xca\xcb\xca\x9a\x89\xbf\x1f\x2b\xdc\xe8\x0a\x5f\x2b\x92\x4c\xba\x44\x6b\x46\xf3\x1d\x75\x81\xde\xe8\xf5\xf1\x3c\x70\x72\x66\xb6\xad\x20\xdc\x6d\x53\xb3\x6b\xc5\x63\x36\xc6\x56\x82\x95\x84\x4f\xd9\x60\x30\x03\x3a\x95\xb3\xa6\x30\xff\xc0\x62\x19\xaf\x6d\x09\xa0\x7a\x74\xda\x93\x00\xc3\x53\xa5\xd9\xf3\x97\x27\x17\x6f\xcf\x4e\xdf\x9d\x06\x18\x5e\xaa\xa6\x79\x41\x09\xcf\x3a\x79\x92\x47\x56\xe9\xf1\xd8\x70\xa9\x8f\x3e\x1e\xfa\xd7\x12\xde\xb7\xca\x6b\x09\xf9\x77\xe2\x9b\x8d\xe6\x62\x95\x30\x1e\x86\x5a\x54\x39\x4a\xb5\xd8\xf8\xab\x57\x43\x2e\xd5\x2a\x5b\xb0\x8c\x06\x4d\x35\x81\x39\xc9\x06\x3a\x7e\xaf\xc8\xef\x2d\x4d\xa4\x8a\x6e\x25\x53\x14\x3d\x53\xc8\x32\x7c\x51\x9a\x09\xbd\xc9\xfd\x99\x73\xb4\x4e\x24\xe5\xea\x17\xa3\x0b\x8f\x6c\x23\x15\x68\xec\x01\x3f\x2d\xd1\xef\x38\x46\x88\x92\x53\x14\xb0\x85\x34\x6c\x27\x8e\x72\x75\x97\x55\x26\x37\x24\xe0\x82\xd3\x00\x1e\xa8\x28\x59\xaf\x29\x9f\x1f\x2f\x59\x36\xd7\xf3\x41\xa3\x5c\xa6\x9e\xb5\x0e\x3e\x25\x37\x89\x85\x41\x1c\x60\x40\x8a\x18\xc4\xac\xea\x1e\x78\x10\xe0\x48\xac\x29\x47\xba\xc7\xf5\x08\x2a\xf8\x3c\x73\x4b\xaa\x35\x24\x50\xd1\xb3\xc6\x8a\xd0\x04\xcc\xe1\x6b\x79\x70\x30\xc6\x8e\xa3\x7d\xdf\xb0\xc7\x99\xde\xa8\xa9\x9c\x55\x18\xf7\xbd\x42\xb8\x1c\xbf\x98\x3e\x55\x33\x6f\x1e\xf0\x44\xb5\x6d\x76\x9a\xcb\xb7\xc2\x6c\xbe\xbc\xd7\x97\x4e\xd0\xcb\xa6\xd1\x8f\xd1\xfb\x48\x23\x76\xbe\x54\xd0\xfa\x64\xe0\x2b\x4d\x83\x0a\xc7\x92\xe8\x1e\x40\x25\x1c\xd3\x89\x8c\x5f\x3b\xce\x09\x9e\x2b\x43\xdf\xe0\x8b\x6a\xe9\xba\xff\x50\xe4\x4f\x0e\x38\xc2\xf0\x7e\x1a\x3d\xb9\xff\x13\x72\xc7\x23\xf1\x74\x06\x1f\x0c\xa9\xee\x12\xbd\x55\x18\x56\x36\x35\x76\x06\x67\x01\x21\x5f\x94\xd7\x9b\x4c\xba\x4f\x41\x7a\xcf\x8d\xee\x7b\xe7\x18\xa4\xf7\x87\x72\xca\x79\x5c\x96\x5a\xae\x7c\xae\xd0\x9d\x41\x22\x25\xbc\x50\xe4\x3d\x0a\x6e\xaf\xf3\x00\xc3\xaf\x8a\x88\xc8\x62\x2f\xf8\x49\x91\x57\x6a\xf2\xab\x8a\x7f\x55\x61\xf8\xab\x8a\xdc\x69\xfa\xb9\x11\x44\x8b\xe2\x0b\xfc\xdc\x89\xa2\x6e\xd1\x0b\x65\x84\x74\xa4\x11\xe5\x2d\xfa\x55\xbf\x4d\x5e\x68\xee\x9e\xfc\xaa\xff\xc6\xf6\xf9\x27\x2d\x00\x5a\x3c\x19\x0c\x34\x63\x61\x92\x4b\xf8\xd1\x40\xe4\x67\x55\xc2\x2f\xca\xf0\x09\xbf\xd9\x9f\xdf\x15\xf9\x59\xa1\xa0\xe9\xc1\x82\x41\xed\xbb\x93\x68\xec\x7c\x8b\x14\x91\x13\x15\x37\xfd\x70\x7e\x57\x38\x0c\x7f\xd3\xe8\xf0\x77\x05\xdb\xf6\x21\xc8\xb0\x3a\xf0\xc0\x25\x50\xba\xab\xd1\xec\xd0\x79\xed\x4b\xd1\x5d\x0a\xce\x8a\xf5\x6f\x69\x38\xe5\x7e\xa7\xd9\x02\x51\xaa\x17\x73\xbd\x42\x6b\x5d\x7f\x7e\xcb\x9c\x5e\x2f\x4d\x72\xda\x1b\xc6\xbb\x72\x45\xc3\xde\xcb\xfa\x1d\xe0\x72\x6c\xb2\x8e\xf6\xb2\xca\xbd\xbc\x20\x7d\xee\x87\xfb\xb9\x1b\x76\x32\x75\x7e\xe0\xbe\xc4\x77\x5d\x25\x40\x74\x96\x01\x81\x2b\xc3\xc8\xae\x9e\x27\xeb\x75\x76\xa7\xf9\x3b\x2f\x35\xea\xb5\xc9\xa9\x99\xf4\x7c\x4d\x53\x46\xf5\x02\x15\xb4\x8b\x01\xf2\xc0\x7d\xa3\xd7\x7e\x8b\xa3\xeb\x37\x0f\x24\x1a\x6c\x3e\x36\xec\x9f\xa5\xca\x61\xd8\x7f\xa3\x90\x6c\xb0\x3e\x93\x15\xd2\x52\x86\x3d\x27\x22\x48\x12\x39\xe5\xd4\x48\x13\xd2\x9f\xdb\xc6\xd5\x13\x70\x7a\xdb\xb0\x44\x9f\x98\x3a\x63\x89\x91\x45\x34\xc3\x58\xe3\x18\x46\xc9\x74\x66\xe4\x0f\x48\xba\xdc\xc6\x46\x84\x68\x32\xfa\x50\xff\x70\xf2\x9d\xfe\x11\xe4\xaf\xfa\x87\x91\x1f\xf4\x4f\x42\xbe\x37\x06\x1c\x6c\xcf\x31\x2a\x85\x0d\xe4\xb0\xa8\xd9\xec\x0c\xd6\x30\x27\xd7\x0a\xa5\x18\x6e\xc8\x12\xcd\x31\xdc\x11\x49\x91\xce\xf6\x1d\x86\x95\x96\x38\x6f\x2a\x89\xf3\x8a\x0c\xe1\x92\x2c\x8a\x42\x50\xb8\x25\x74\x72\x89\x52\x58\xe1\x58\x9a\x87\x21\x76\x52\xfe\x78\xf5\xf8\x6a\x7c\xe5\xe4\xc3\xa4\x28\xae\x34\x63\x78\xa3\x21\xb2\x26\x77\x28\x23\x37\xd3\xab\x19\x5c\xc1\x1c\x83\xc2\xd8\x98\x05\xdf\x4e\xaf\x66\x64\x5d\xb9\x2b\xad\xb1\x5b\xc6\xca\x2d\x63\xbf\x76\xfa\x43\xbb\x96\xbe\xf7\x6b\x29\xb3\xef\x3f\xf8\xf7\x2b\xbf\x3a\x99\x33\x31\xbe\x85\xac\x36\x20\xaa\x84\xd9\x51\x25\xd4\x4d\x0e\x46\x31\x2f\x0a\x31\x11\xf1\x6d\x59\x42\x4a\xc9\xd6\x99\xc5\xc5\x09\x45\x43\x0c\xab\x64\xad\x9f\x46\x18\x16\x2c\x53\x54\xea\x97\x87\x18\x72\xb1\xa2\xfa\xf1\x3b\x0c\xf4\x86\xca\x3b\xfd\xfc\x57\x9d\x87\xcf\xf5\xe3\xf7\xf6\xf1\xa5\x96\x62\xf5\xfb\x0f\xb8\x84\x0d\x25\x29\xf5\x46\x77\x90\x53\xcd\xc9\x2c\xd9\x7c\x4e\x79\x80\x61\x41\x1d\xc6\x7a\xeb\xcf\xae\x02\x0c\x99\x51\x91\xe5\x54\xc1\xda\x2b\xcb\xac\x5e\xcf\x63\xc3\x00\xc3\xbc\xc3\x8d\x70\x49\x6b\xcc\x7c\x43\x0d\x57\xf5\xe3\xf9\xe9\x9b\x00\x9c\x0a\x8a\x2d\xee\x02\x0c\x77\xd4\x88\x09\x2b\x6a\x50\xe6\x15\x25\x1f\x34\x61\xbb\xa4\x24\x8f\x16\x70\x4b\x35\xa2\xb7\xbc\xaa\xde\x4b\x27\xe6\x5d\xac\x0f\xea\xa4\x0b\x9b\xc5\xd4\x78\xa0\x84\xfb\x72\x20\xe9\x15\xcb\x95\xd4\x2d\x9c\x36\x2a\x31\x39\x6c\xde\x46\x8e\x73\x5a\xd3\x93\x4f\xba\xd7\x3f\xbb\x73\xd8\xcf\x94\xf4\x3f\xd1\xa2\xe8\x7f\x6a\x38\x17\xee\xbc\x46\x1a\xc4\x86\xc3\x81\x63\x4a\x92\x30\xbc\xef\x3c\xed\x89\x42\x2b\x8a\xb6\xe5\xd7\x4e\xce\x56\x56\xe1\x65\xb3\x58\x0c\xff\x37\x73\x96\x56\x62\x7b\xa2\xb6\x77\x2e\x63\x6d\x4f\xee\x28\x9a\x53\xa0\x78\xcc\xc3\xd0\xf1\x36\x73\x3a\xa5\x33\x58\x51\x97\x11\x78\x18\xaa\x3e\x21\x73\x1a\x86\x2b\x9b\x5b\x63\xc5\x78\x45\xe1\x5d\x27\x86\x22\xb7\x54\x13\xbd\x27\x0a\x2d\x1b\xa3\xad\xa8\x42\x46\x91\x04\xe7\x19\xe6\x96\x01\xa8\xe4\x2a\x56\x30\x77\x87\x7b\x4c\x70\x4d\x9e\x20\x29\x0a\x24\xa3\x46\x2a\xa1\x18\x64\x09\x6f\xa9\xa6\xd6\x1d\x7c\xf2\xae\x6c\xa2\xca\x2e\x76\xa3\x3a\x35\x6f\xf8\x7a\x2e\x69\x09\x47\x1d\x04\x96\xd8\x71\x1f\x51\x74\x42\x2d\x34\x8c\xc0\x60\x61\xe7\xce\xe0\xfc\xc0\xcc\x51\xdc\x2d\xba\xd5\xe0\x99\x20\xd9\xd0\xd5\x4e\xcc\x01\x63\x4e\x71\x18\xaa\x69\x4e\x67\x53\x3e\x33\xc7\x67\xf6\x91\xf4\x47\x9a\xb3\x7b\xa2\x79\xb4\xa6\x0d\xc3\x02\x0d\xa1\x3f\x32\x4e\x4b\xbe\x7c\x51\x98\x69\xc9\xed\x31\xda\x56\x4b\x69\x75\x2d\x43\x0c\xc7\xfa\x2b\x07\x89\x71\xbc\xf2\x8f\x25\xbc\xda\x9d\xa6\x6a\x0c\xd2\x2a\xe6\x8c\xd4\x23\xb1\xd7\x6e\xbc\xa6\x4d\xc5\xd1\x86\x22\x0e\x2d\x47\xb5\x44\x53\x11\x87\xa0\x34\x5b\x59\x14\x47\x6e\xb1\x98\x73\x52\x6c\x0c\xd2\xdf\x74\xa1\xfe\x2b\xa4\x8c\xd4\x2a\xc9\x25\x6d\x99\xe2\x7a\x1d\x9b\x79\x77\x40\x37\xa0\x34\x56\xba\xb7\x06\xfa\xc6\x36\xb7\x8f\x64\x51\x68\xa6\xc7\x96\x33\xcf\x26\x5b\x51\xb8\x44\x0b\xe6\x25\xcb\x0d\x60\xe8\x4c\x93\x3f\x2d\x64\x76\xaf\x55\xa3\x87\xab\xa7\x92\x2d\x90\x34\x6b\xdd\x57\xcc\x4d\xc5\x27\xfa\xc1\x9b\x61\xdd\x51\xc3\x2c\xf8\x2e\x8b\x76\x56\x69\x3b\x20\xdd\xb4\x14\x05\x12\x8d\x95\x60\x66\x49\x94\x25\x9c\x75\x82\x87\x5a\x4e\x15\x24\x99\xce\x1a\xf0\xa7\x6d\x2f\x34\xd3\x9a\x32\xad\xbd\x30\xbf\xd2\x6a\xfb\x94\xd5\x6d\x97\xf0\xba\xab\x72\xbb\x96\x41\xea\x56\xe8\xe4\x84\xc6\xb6\x29\xde\x6e\x4a\xb6\x9b\xea\x57\x6d\x51\x33\x0f\x73\xfb\xc2\x6d\x83\x66\xa3\x9b\x46\x79\x39\x46\x47\xaa\x28\x10\x55\x08\x2d\x69\x53\x28\x75\xe6\xa7\xbd\xd6\x6e\xdb\x3f\x98\xb1\xa8\xa0\x66\x27\x9b\x7a\x4a\xec\x8c\xac\x77\xb5\xec\x0d\xad\x4a\xf5\x69\x3a\x9c\x4d\x1c\x7f\xda\x4c\xf3\xc4\x1d\xa8\x39\xdd\x03\xd9\xb6\xac\xaa\x57\x9d\xb3\xdc\x38\xd1\x03\x85\xe6\x92\xb2\xcf\x7a\x5a\xcd\xa2\x44\x8d\x25\x66\x76\xf0\xb1\xc3\xc0\x76\x6f\x6a\x79\xa3\xb2\x18\x0d\xc3\xcf\x34\x0c\x8f\x1d\xf2\xdc\x63\xc8\x73\xaa\x62\x59\x62\x78\xe7\xdc\x3b\xf1\xb7\x9e\x7e\xf4\xd6\xfe\x98\x43\x25\x57\x7a\x1a\xa8\xc6\xb9\x10\xb4\xc4\x97\xa0\xd3\x85\xf1\x1d\x45\x06\x0e\x76\xcd\xe4\xd1\x82\xbc\xa1\xf0\x36\x5a\x90\x23\x0a\x9f\xa3\x05\xb9\xa6\xa0\x05\x45\x43\x54\xc9\x19\x85\x2b\xfd\xfb\x9a\xc2\x8f\xfa\xb7\xbb\xbe\x9f\x95\xab\x10\x92\x30\xd4\x14\xab\x89\xfe\x21\x68\xe0\xf1\x60\x1f\x06\xdd\x54\xad\x1a\x5f\xa3\x70\x59\x9a\x71\xce\xe9\x7d\xca\xe9\x37\x14\xb6\xf6\xe4\x2c\xee\x0f\x4b\x8c\x31\xbc\x55\x68\xeb\xc2\x27\xf4\x87\x70\x2b\x93\xb5\xfe\xb5\xaa\xb9\xb8\x7f\xa4\x20\x5f\x26\x2b\xfd\x50\xc2\xd6\x05\x25\x58\x6a\x02\xb4\xa1\xe8\x4c\xa1\x73\xba\xe3\x05\xda\xdf\xdf\x5c\x52\x39\x86\x45\x93\x2c\xff\x4c\xb6\x25\x1e\xdf\x22\xbb\x65\x7e\x51\xfa\xc1\xd3\x66\x0d\x46\xb3\x5f\x4b\xb7\x6b\x75\x17\xad\x3a\xb3\xa6\x8a\xb9\x4a\x54\xbb\xa3\x25\x68\xf6\x2e\xde\x6f\xbf\x92\xc8\xc6\xc6\x9a\xe5\x82\x36\xcc\x59\x2e\x34\x3d\x77\xe8\x7e\x49\x51\x4d\x89\xcd\x07\x22\xe1\x94\x4e\xe5\x8c\x50\x8d\x39\xae\xe9\xdd\xee\xb9\x2b\x5b\xa0\xfe\x5b\xda\x65\xe7\xa2\x9a\xe2\x9f\xa3\xbd\xae\x03\xa7\x7a\xd0\xbe\x03\xa7\xd4\x48\xbb\x9b\x9c\xda\x15\xd9\x9c\x68\xcd\x28\x0d\xed\x37\xb6\x5a\x67\x74\xf7\xdb\x48\x4f\x77\x13\x38\x4e\x65\xd3\x01\x1c\x37\x8b\x49\x09\x5b\xab\x66\x89\x3b\x8f\xea\x1a\x8a\x91\x27\xc6\xa2\xe9\x15\x45\xe6\xc1\x28\x48\xda\x96\x38\xf1\x11\x85\x3d\x05\xe2\x2b\x0a\xf7\x19\x25\xc5\xd7\xf4\x9b\xbb\x5b\x1a\x56\x6e\x57\x61\x12\x9f\xed\xd6\xee\x34\xb7\xf1\xeb\x6f\xac\xba\xcd\x45\xea\x7d\x8b\x46\xd6\x0d\x6a\xdb\x5d\x71\xc7\x6e\x36\xa5\xae\x95\xd5\x9a\x60\xb8\xd1\x08\xaf\xd9\xb4\x65\xc7\xf7\xc7\x54\x14\xed\xd6\x2d\xda\x5e\x52\x54\x19\x10\x4d\xb5\xa0\x39\x0b\xfa\xe4\x86\x22\x7b\x38\x1a\x6c\x4b\xfb\xba\x4d\x62\x55\x36\x13\x2a\x46\xcd\x75\xbf\xe2\xfe\xf7\x6c\x87\x2a\xc7\x04\x10\x64\xaa\x66\xc0\xc8\x68\xbc\x4b\x2c\x1e\xb3\x31\x16\x96\x6e\xd5\x84\x81\x0d\x06\x33\xeb\x47\x45\x28\x20\x6b\x45\x50\xd1\x14\x2d\x5f\xbb\xa5\x5f\x0b\xdd\xc6\xce\x60\x97\x97\xe8\x76\x03\x35\xee\x34\x84\x37\x18\x1d\x63\x65\x06\xba\xce\x7a\x7b\xea\x69\x15\xd3\x91\xde\x80\x37\xd4\xa9\x06\x8c\x46\x4f\x68\xd8\x8f\x9b\x48\x74\xba\xa0\xb3\xa2\x38\x6a\x23\xd6\x85\x16\x98\x1a\x52\x85\xb7\x65\x04\x45\x0d\x31\xa8\x44\xad\x17\x9a\x5a\x79\x95\xe4\x03\x0a\x4f\x29\xbc\xb4\xd2\x15\x4f\x6e\xd8\x95\x75\x8a\x0b\x36\x39\x95\x47\x57\x46\x5d\x5d\x14\x41\x00\xcf\xb4\x58\xb3\x96\x22\xa5\x79\x0e\xef\x29\x79\x46\xc3\xf0\x19\x8d\xbc\x75\x10\x3c\xa1\xe4\x3d\x0d\xc3\xf7\x34\xba\xf9\xdf\xe3\x27\x74\xf2\x94\x12\xf4\x80\x92\x27\xd4\x5b\x3e\x44\x01\xc6\xd3\xe1\x6c\xf0\x80\x4e\x47\xb3\xf8\x25\x35\x4c\xdc\x03\x4a\x5e\xd2\x68\x65\x34\x77\x87\x27\xf3\x2b\xfa\xf1\x10\x7d\x9c\x0f\xf0\x21\xc6\x45\x61\x72\x3e\x26\x7f\xfb\xab\x26\xb3\xad\x9c\xc7\x4b\x29\x56\x8d\xbc\x61\x88\x9e\x52\x62\xf2\x5b\x1e\xe1\x39\x25\x4f\x69\x18\x0e\x9e\x52\xf8\xb2\xab\x4f\xf9\xa3\xf3\x38\xeb\x39\x7d\x4c\xbe\x1f\x15\x45\x7f\x7f\xe5\xd2\x9a\x35\x42\xb4\xe5\xc3\xba\x2d\xf1\xf4\x0b\xed\xf0\x1e\xdc\x2e\x84\x88\x47\x65\x09\xa3\x3e\x21\x1a\xed\xa1\x27\x42\x64\x34\xe1\x38\x5a\x08\x61\x96\xf1\x07\x7a\x8f\xd5\xdf\x0b\x6a\xec\x8d\xe8\x0e\x67\x62\xfc\x3d\x4a\xf8\xa9\x63\xcd\xdd\xa2\x17\x4d\x3c\xfb\x42\x37\x38\xa6\x66\x7d\x6e\x4b\xcf\xe1\x4f\x67\x7a\x47\x70\xd2\xef\x6b\x52\x14\x1c\x1d\x1f\x9f\x9c\x9f\x9f\x9e\x9d\x07\x38\x0c\x69\x54\xbd\x82\x20\xfa\xfb\x10\x4f\xe8\x74\x38\x8b\x7f\xa5\x90\x9a\x84\x91\x4e\x18\xcd\xbc\x6e\xa4\xd9\x14\xe9\xf7\xe5\xde\x81\x92\xde\x4b\x61\xd8\x4f\xaa\x83\x77\xc7\xbb\x6d\xed\x2e\x8c\x0f\x46\xe5\x98\x4f\x3e\x68\x81\x61\xd4\x12\x77\x1c\x13\xf0\x2b\x2d\x71\xac\xf4\x7e\x18\x41\xe5\xf4\x2c\x5c\x90\x05\xf8\xd9\x2a\x21\x8c\x2a\x03\x7e\xa4\xe4\x0f\x8a\x02\xfb\x16\x60\xf8\x85\x92\x9f\x1a\xef\xe3\x26\xc6\xb2\x27\x4e\x60\xb6\x49\x13\x67\xfd\xa8\x39\xfd\x5f\xa8\x26\xac\x56\x3f\xd2\x65\x8f\x45\xfd\xee\xdd\xc3\x29\xa3\x49\x8d\x4b\x2a\x20\x99\x7d\x6b\x8c\xb1\xba\x65\x0e\x33\x23\x95\x81\xbb\xdc\x13\xfc\xed\xa8\xed\xa9\x49\xe3\xa8\xc0\x2f\x86\x51\x09\x0e\xa1\xff\xde\x52\xc9\x28\x49\x7e\xd3\xc3\xb7\xaf\x01\x06\x2a\x2d\x3c\xaa\x04\x29\x89\x92\x61\x48\xe5\x64\x5a\xc5\x20\xe9\x1a\xf0\xef\xff\xf2\x80\xbf\x05\xd6\x75\x9b\x7d\x22\xa5\x65\x65\x4c\x0f\xa4\x74\xf0\xe2\xd2\xa8\x74\x84\xdc\xb1\xa1\xe7\xd2\x92\xb0\xf1\xb7\x50\xd6\xa4\x28\x84\x6c\xf0\x02\xf7\xd2\xea\x4e\xee\x80\x4b\x74\xe7\x78\x01\xd7\x29\x26\xef\x09\xe3\x74\xa5\x59\x29\xeb\x7f\x3b\xb1\x67\x83\x1c\xb4\xcc\xae\xa5\x6f\xa5\x25\x72\x59\x7e\xb5\xc3\x7f\xde\xc5\xbc\xdb\x07\x09\x1a\x06\x24\xd6\xae\xe0\x52\x21\x8e\xc1\x9c\xb3\xa7\x64\x38\xf6\x36\x36\x8f\xd3\x31\xae\xa8\x19\x92\x44\x20\x0e\xd4\x1b\xc7\xe0\x30\x64\x12\x25\x36\x62\x91\x97\x54\xbe\x91\xdb\x6a\x4f\xcf\x99\xaa\x38\x8c\x6b\x7a\xd7\xc9\x50\x9c\xa9\x9a\x9d\xa8\x0e\xd7\x34\x70\xf9\xf6\xf8\xfc\xfc\x6c\x93\xd1\x57\x2c\x57\xf1\x10\x8e\xcf\xcf\xcf\xd5\x5d\x46\x9f\xd2\x34\x4b\x64\x62\x74\x41\x26\xf5\x83\x26\x6b\x3e\x53\xc6\x28\x57\x67\x34\x55\x2e\xe1\xe9\xe9\xeb\xf6\x9b\xe5\x87\xeb\xf7\x77\xe2\x9a\x72\xf3\x3a\x82\xa7\x89\x4a\xde\xc9\x84\xe7\x0b\x2a\x5f\x2a\xba\x72\xb9\x9e\xb1\xaa\x13\x2f\xde\xbd\x7e\x75\x94\x65\xc7\x22\xcb\x68\xea\xba\xa0\xd3\xf6\x12\x9e\x09\xb9\x72\xa7\xbb\x2e\xe5\x9c\xea\x1c\x75\xda\x6b\x3a\x67\x89\xab\xf6\x35\x5b\x51\xcd\x3d\x5b\xad\xf9\x10\x34\xc3\x37\x7f\x23\xe6\xf4\x75\xb2\xd6\xaf\x62\x4e\x5d\x17\xdf\x26\x4c\x8f\xef\x8f\x0d\xcd\xfd\xa0\xde\x66\x9b\x2b\xc6\xab\x07\x5f\xc7\xf9\x87\xe7\xaf\xcc\x5c\xbb\x6c\xe7\x1f\x9e\xbf\xd9\xac\x2e\xa9\xac\xdf\xdf\x26\x6a\x79\x4e\xaf\x1a\x09\x82\x71\x55\xbf\xb6\x60\x75\xfe\xe1\xb9\x85\x8d\x90\x1e\x30\xd6\x3a\xf9\xc9\x66\xb1\xa8\x6b\xd5\x53\x74\xbe\xa4\xd4\x57\xf3\x8e\x7e\x56\xef\x64\x92\x5e\x1f\x57\x93\x54\x25\xf9\x77\xb1\x49\x5d\x2f\x4b\x67\xe9\x28\x89\x98\x26\x72\x06\x1b\x49\x52\x19\x86\x69\xe3\x5c\x42\xf3\x64\x1b\x19\x86\x1b\x59\x23\x0d\x22\x25\xb6\x46\xe0\x1b\x09\x15\x5a\x03\xd9\xb4\x75\xaf\xf3\x6b\x1c\x63\x8e\xb4\xf3\xfd\x0d\xec\x59\x2f\xbb\x79\xbb\xfd\x15\x74\x56\x27\xad\x49\x68\xd3\xa9\x5d\xe1\xb5\x76\x29\x1a\x1a\xe2\xe5\x2d\xd8\x17\xf2\x2b\xc1\x01\xbf\x2d\xa0\xdf\x9f\x87\x0c\xdc\xda\x78\x57\x99\x24\xe8\xcf\x33\x57\xd8\x60\x21\x27\x0b\x19\x6f\x4b\x1c\x5d\x5c\x7c\x78\x7f\x72\xf1\xf4\xe4\xc3\xbb\xd3\xd3\x57\xe7\x17\xcf\x5f\x9d\x3e\x39\x7a\x75\xf1\xe2\xf4\xf4\xa7\x8b\x8b\xda\x91\x7c\x2d\x2d\x9a\x6c\x18\x61\x20\x85\x3b\x02\x59\x35\xa0\x8b\xd4\x54\xce\x40\xe2\x56\xb8\xaa\xb9\x6c\x06\x52\x72\x67\xdd\x1d\x81\xa1\x94\x99\xbb\xa5\xdc\x75\x02\x30\x4e\xaa\xde\x4d\xd0\x7a\xa1\x5e\xa4\x4b\x96\xcd\x25\xe5\x3b\x91\x31\x8c\x3b\xaf\xcb\x22\x93\xdb\xd7\x62\xbe\xc9\x28\x71\x0e\x45\xce\x50\x88\xda\x90\x59\xe6\x91\x74\x31\xf1\x72\x22\x11\x8e\xa5\xb3\xc4\xbe\x91\x64\xcb\xb5\x9c\xb6\x4e\x34\x1e\xdc\x55\x63\x94\xe5\xf8\x46\x46\x75\x86\xe8\x8a\xaa\x7d\x26\xb1\xdf\xdf\xe9\x53\xa3\x44\x09\xcb\xc6\x2e\x88\x92\xb9\x3d\x21\xe8\x82\x42\x35\x6c\xeb\x01\xd1\x2e\x28\xe9\x4a\xdc\xd0\xdd\xb2\x78\xeb\x2d\x72\x77\x2b\xd8\x29\x7e\x45\xd5\x7e\x59\x7f\x7e\xf9\x27\x65\x97\x49\x7e\x7f\x59\x1f\x9d\xa1\xae\x60\xa7\xf4\x66\x3d\x4f\xd4\x2e\x0f\x7c\x1f\xb4\x88\x6a\xbc\x80\x8a\x12\x53\x26\xf7\xbe\xa7\x8d\x32\xee\x0b\xa9\xf2\x60\x50\xd1\x6a\xa3\x92\xfb\x0a\x54\xdf\x48\x23\x9f\x2e\x64\x4f\xb1\xba\x8a\xb8\x2f\xa4\xca\x83\x77\xc6\xe6\x76\xcb\x3e\x74\xf4\xee\x6a\x01\xc5\xa8\xd1\xba\xca\x3e\x37\x35\x7f\x15\x3c\x55\x07\xab\x5a\xf7\xbe\xdd\x5b\xfd\x91\xa9\xf5\xab\xd5\x57\x30\xee\xa8\xde\x7d\xbb\xb7\xfa\xd7\x0e\x90\x5f\x6d\xa0\x31\x2b\x1d\x4d\x54\x5f\x4d\x23\xf7\x18\x79\xa1\x66\xe3\x70\x23\x5d\x20\x3f\x09\xab\x0e\xd0\xd9\xf3\x3c\x2a\xd1\x74\x06\xca\x9c\xb8\x8c\x57\x3b\x7b\xa1\x73\x29\x47\x92\xce\x37\x69\xcb\x33\xa0\x19\x6f\xb5\xda\x43\x88\xe2\xd2\x47\x9b\x12\x42\xf7\x7a\xb7\xfa\x37\x7e\x0d\x77\xa9\xed\x7d\xb9\xf1\xd7\xda\x6d\xd8\x3a\x0c\x10\xa2\xa4\xde\xc1\x48\x62\xdc\xd8\x24\x13\x39\x08\x0e\x83\x38\x08\x74\x9f\xf4\xdf\x76\x67\x3a\x76\x5f\x1d\x0e\x50\x79\xab\x6e\xe3\xc7\x6e\xb3\x6a\xbe\x93\x47\x2b\x33\x37\x79\x15\x84\x45\x18\x5b\xe6\x2a\xd9\xe8\x10\x65\xdd\x25\xe1\x45\xd6\xb1\x42\x95\x4d\xad\xc0\xd0\xca\x52\x57\x3b\x15\x33\x5c\x96\x66\x7a\x3c\x30\x60\x0f\x8c\x7e\x16\xef\x61\xd6\x4d\x58\x94\xda\x72\xc1\x98\x37\xf4\x87\xd8\xc7\x80\xa3\xb7\xbd\xa5\x34\x06\x22\x63\xe3\x50\xe4\x18\xe8\x49\xd5\x20\x11\x36\x6e\xc3\x15\x55\xc8\xdb\x17\x0d\xe1\x60\x84\x71\x85\xa3\x91\x9a\xaa\x2a\x1c\xc0\x0c\x04\x1e\x53\x3f\x02\xb3\x92\xab\xb7\xe6\x69\x1a\x08\xbc\xe5\xf5\x12\x54\x0d\x68\x50\x47\x3a\x77\x66\x88\x77\x8c\xb4\xb5\x58\xf6\xbb\x08\x92\xb4\xfb\xc6\xdb\x0b\x64\xcc\xc3\x90\x7b\xaa\x1a\x86\x2d\xea\x81\xe4\x6e\x0f\x58\x7e\xe6\x7a\x40\xe7\xff\xf9\x3e\xd4\xa1\x8f\x3c\xbd\xd0\x2d\x99\xf9\xb8\xba\x6f\x68\xf5\x04\x2a\x8d\x7e\xc9\xb6\xc4\xd0\xbf\x93\x61\x78\x3f\xe3\xe3\xed\xd7\xa2\x0f\x1b\x1a\x86\x3b\x7a\x6d\x5d\x54\x11\x42\xee\xbc\xc9\xff\xb8\xff\xbf\x0e\xff\xd2\xff\x5f\xff\xbf\xde\x5f\x7a\x37\x1b\xfa\xb9\x77\xf3\x5d\xf4\x7d\x34\x32\xef\x28\xc5\xd6\xa5\xed\xe4\x26\xe1\xbd\xdf\xc4\xc6\xa4\xfe\x43\x8f\x90\xe7\xb4\xf7\xfa\xe5\x3b\x9d\x70\xf8\xbf\x76\x9a\xb0\xcc\x38\x52\x5e\x61\xd6\xd0\x8a\x4d\x87\x33\xfc\x98\x3c\xc4\x2a\x5a\xb1\xcf\x8c\xa3\xed\x25\x5d\x08\x49\x8f\xad\xee\x5a\xcb\xc4\x95\x57\x97\x31\xb1\xac\x26\xe0\x82\x71\xa6\xc6\x7b\x29\x6d\xa0\xed\x43\x4a\x45\x26\x97\xfd\x99\x4c\xe5\xcc\xaf\x35\x9b\x82\x35\x9b\xdb\xd4\x55\x36\x43\x54\xca\x4a\x99\x6b\xa6\xf7\x81\x30\x47\x31\xf9\x58\x33\x51\x42\xba\xf0\x22\x0f\xcc\x73\x67\x3c\x36\x9f\xcd\xfe\x22\x1c\xbb\xa7\xd8\x9b\x8e\x86\xa1\x7f\x72\xd5\x78\xfa\xea\x2a\xdd\xf9\xaa\xf1\xc1\x9d\x24\x0a\x97\xa8\x9e\x5f\x5c\x71\x76\x6b\x23\x23\xed\x6d\xf8\xe9\xcc\x1f\xdd\xeb\xe6\x25\x4b\x55\x9d\x83\x9b\x90\xb9\xfd\x91\x67\x18\x53\xb1\x5a\x31\xa5\x18\xbf\xaa\x22\x56\x5d\x78\x26\xe2\x7e\x36\xd3\xe6\x38\xdf\x5c\x6a\x11\xfe\x52\x33\x03\x1e\x6b\x5d\xd4\x0c\xc5\xfd\xc5\x6f\x65\xb2\x5e\xd3\xf9\x73\xc7\x48\xdc\x9f\xd1\x61\x12\x83\xb8\x56\xd2\x9c\xbb\x35\xd3\x2b\x82\xf2\x3a\x59\x7f\xa5\x96\xbc\xab\x9f\xb7\x5a\x94\xa2\xf2\xc3\x6b\x53\xf9\x9d\xf4\x35\x27\xd7\xd4\xf8\x7c\xb8\xce\x1d\x27\xe9\x72\x37\x14\x5d\x1d\x3f\xc7\x06\xfe\x01\x17\xf9\xc9\x07\xb3\x82\x84\xf8\x50\x2c\x2b\xbd\x82\x9b\xdf\xba\xfd\xaa\x98\x8f\x09\x64\xdd\xd9\x1b\xa5\xef\x93\xe9\x92\x46\x09\x63\xfd\xe0\xf8\x7b\x3d\xdb\x84\x8f\xad\x87\x5d\x0b\x58\x06\xbf\x3b\x61\xe0\xd4\x32\x1c\x90\x42\x3d\x6f\x8d\x5c\x18\x2e\x7c\x06\x4d\xad\xf6\xa5\x1f\xd5\x8c\xb7\x6e\x0e\xf6\x50\x7d\x9c\x10\xcd\xe9\x8d\x12\x22\xcb\x27\xf5\x63\x7c\x27\x23\x2b\x44\x54\x49\xb8\x8d\xa7\x32\xe3\x6a\x1d\x5d\xb8\xcf\x2f\x84\xb8\x26\x99\x84\x4c\x46\x74\xa5\x31\x89\x46\x54\xb1\xde\xc0\x01\x28\xac\x93\x05\x77\x89\x4a\x26\x37\xd4\x59\x2e\x25\x8a\x06\x6d\x2b\x0e\xe5\xfd\x37\xce\xf5\x47\xd7\x5b\x15\x55\x6b\x62\x97\xaf\x69\x37\xe8\x57\x73\x60\x67\x06\xc3\x76\x2d\xe9\x9a\xf2\xb9\x91\x81\x9b\xf5\x58\x96\xf2\xeb\xb5\xd9\x6d\xd3\x5d\x17\x2e\x9d\xeb\x1e\x5c\x4a\xb2\x35\x23\xe9\x92\xbb\x2a\x54\x75\x2b\x77\xa5\x7c\xef\x8d\x85\x14\x7e\x34\xd4\x88\x20\x0c\x35\x3d\x33\x4d\x4c\x34\x45\xcd\x97\x6c\x61\x8e\x02\xa9\x37\xa4\xa8\xc3\xf0\x21\xaf\xb5\x6d\x56\x33\x96\x8f\x0f\x46\x9a\x50\x6a\x6c\x9e\x52\x24\x61\xd4\xc4\x96\x27\x4e\x58\x56\x7f\x82\x32\xfe\x14\x29\x7c\x1b\x46\xf8\xe6\x6d\xbf\x23\xf9\xea\xc5\x0e\xd2\xac\xf4\xf6\x32\x37\x36\x3a\x17\xf6\x6b\x33\x76\xeb\x85\xdc\x61\xaa\xa2\x8b\x9b\xd5\xb8\x12\x77\xc8\xb6\x34\x35\xfd\xab\x98\x62\x77\x94\xc0\xc8\xb6\x1c\xaf\x25\x12\x2d\x4e\x49\xe2\x2d\x9b\xca\x59\x37\xa2\xe8\x30\xb3\x35\x31\x81\xcc\xe9\x7b\xa7\x98\x70\x87\xaa\x8e\x83\xbc\xcf\xac\xce\x8c\x70\x2a\x67\x65\x5b\x03\x64\x1c\xd7\x5d\xa0\xb0\x7a\x03\xe7\x2c\xa3\x5c\x8d\x77\x13\x48\x7f\x08\xa6\x1e\x87\x50\xd1\x76\x9e\xa8\x24\xde\x3e\x78\x60\x17\x33\xb5\x01\xc0\x36\x8a\xce\x63\x56\x62\xd8\x2b\x9f\x80\x27\x57\x6d\xcc\x60\x2a\x8d\x1e\x18\x84\xdd\x65\x3a\x68\xf1\x97\x6e\x2c\x72\x6d\xb5\xe2\x59\x63\xcd\x14\x6c\xe7\x94\x1a\x6b\x88\xfc\x8e\xa7\x76\x64\xc6\x22\xca\x6e\x13\x3d\x35\x4c\x2d\x8f\x0d\xc6\x6d\xab\xe4\xdb\x15\x1b\x1f\x04\x8d\x40\xee\xa4\x09\xf6\xf5\x8e\xa5\xd7\x5d\x5d\xe2\xd1\x83\x39\xcd\x95\x14\x77\x26\x34\x67\x33\xea\xae\xf4\x37\x33\x40\x15\x36\xb0\xef\x7d\xe5\x34\xe1\xa8\x97\x68\x53\x62\x42\x36\xdc\x3e\x6f\x88\x38\x16\x5d\x76\x6c\x89\x69\x32\xbb\x67\xb3\x4c\x93\x19\xe1\x18\xfa\x2c\x0c\xfb\xc2\xbb\x61\x9f\x1b\x81\xa0\xcd\xc4\x6e\x88\x9c\xca\x06\x13\x7b\x3f\x80\xee\x64\x94\x53\x65\x2c\x96\xb9\xdd\x6f\x86\x99\xb7\x71\xd4\xb9\xf5\x57\xf9\xbc\x4f\xc5\xdc\x0d\x11\x26\x72\x25\x08\xb2\xf5\xe4\x31\xe6\x9a\x68\xf8\x97\x5d\x1b\x74\x0b\xae\x4f\xd2\xbd\x9b\xe0\x8a\xeb\xe4\x2e\x13\xc9\x1c\x52\xc2\x22\xc7\xae\xc1\x86\x30\xe3\x1b\x5f\xdd\xc6\x10\x86\xa9\xd9\xf1\x45\x81\x36\x84\x0e\x36\x1a\x9b\xf8\x56\xd0\x06\x5c\x70\xba\x15\x53\xa6\x7d\xf7\xf8\x5f\x6e\xbd\xb3\x59\x5b\xb9\x6e\x14\x52\x5c\x56\xc6\x53\xf7\x49\xf8\xc2\x6c\x59\xbd\x7b\x63\xb3\x77\xf9\xa4\x6b\xf7\xba\x2c\x65\xc7\xd6\xde\x3b\x4d\xed\xdf\x87\xbb\xa6\x74\xe6\x89\xc0\xb6\x34\xb2\x93\xf3\x08\x6a\x29\x43\x2b\xa5\x4f\x07\x5b\x20\x4c\x03\xa2\x5a\x4b\x1c\x1b\xb7\x07\x1f\xc2\xd0\xa5\x73\x3c\xee\x46\x54\x12\xd8\xfd\x08\xca\x35\x3b\x15\x1d\x48\xca\x92\xf4\x7b\x47\x45\xaa\xd8\xb0\x5f\xc9\x54\xda\x78\x39\x25\x38\xd2\xdb\xdd\x8f\x73\x2d\xe3\x98\x1c\xe6\x22\x88\x12\x83\x28\x8d\x1f\xab\x96\x2e\x77\xd5\x3f\x68\x07\xad\xf7\xdb\xbb\x00\xb8\x89\x5e\x52\x13\x47\xe3\x2a\xbf\x9b\xa2\xb9\x79\x17\x97\xa4\xc5\xd7\xd4\x91\xb2\x5d\x7f\xec\xc6\xd3\x9d\x19\x48\xa0\x90\x5b\x83\xc5\xb6\xc6\x6b\xb7\x47\x3e\xce\xae\x5e\xa4\x13\x19\xeb\x92\xc2\x5c\x6e\xc3\xe7\x19\x95\x45\x41\xc7\xf7\xf4\xd9\xd1\xfb\xaa\xc7\xf5\xfb\x7d\xfd\xf5\x2e\xf2\x55\xbf\x1b\x7b\xbe\xe6\x9c\xfd\x2e\x74\xdb\x04\xfc\xda\xe7\x15\x0d\xb3\xd3\xe3\x07\xad\x3b\xee\x26\x32\x6e\xd0\x39\x21\x94\x61\xf7\x62\x37\x59\x65\x6d\x7b\x8b\x04\x61\xb8\x2b\xc0\x55\x4f\x98\xa8\xcb\x45\x51\x07\x73\xae\xee\x50\x60\x76\x81\x35\x78\xd3\x89\x0b\x61\xba\x73\xb7\x85\x0b\x5b\xd9\xcc\xd9\x64\x00\xa9\x94\x42\x06\x36\x16\x09\xc6\x9a\x0c\x9a\x19\xe3\x20\x76\xe7\xcb\x0e\xea\x1b\x56\x90\xb9\xfd\x60\x87\xb3\xd0\x3b\xd9\x6b\x9e\x3a\xbe\x75\xa9\xf9\x24\xf2\x20\xad\x41\xed\x57\x7a\x43\xd1\x7b\xef\xfa\xb2\xaa\x8d\xe6\x15\x1b\x0c\x6f\x3d\xb1\xf3\x12\x38\xc3\xd6\x69\xa8\x49\x10\xcf\x65\x8b\xc1\xa1\x7f\xa2\x6e\xd4\x3b\xd5\x58\x5f\x56\x15\x7c\xda\x65\x84\xcd\xd1\x8b\x26\xea\xee\x86\x18\x49\x28\x50\xa2\x40\xf9\xe0\xa2\xce\x2c\x5f\x81\xc3\xde\x31\x05\x87\xbb\x63\x59\x96\x97\xd2\x0e\xbb\xfb\x50\xc3\x71\x1b\x37\xab\x1d\x8e\x03\xaa\x62\xf9\x8e\x1e\xb5\x84\xab\xa6\x5a\xe9\x1e\xb1\xae\x56\xdf\x81\x20\xd5\x90\x40\x63\x4d\xa3\xdc\x4d\x88\x68\x10\x1b\x3b\x00\x56\x0d\x20\x29\x61\x43\x76\xe4\xef\x29\x9b\x8d\x37\x95\xfa\xfe\x1e\xf2\xbd\xe9\x16\xee\x14\x4a\x7c\x0c\x91\x3d\x11\xda\x7b\x1d\xfe\x89\x58\x98\x36\xf9\x01\xbc\x03\x84\x7b\xa4\xe1\x3a\xa2\x28\x70\x07\x04\xeb\xa3\x6c\x40\xc0\x08\xaf\x40\x90\x38\x10\x88\x0a\x04\xac\x04\x2f\xf0\x7a\x64\x64\xaf\x33\x48\xad\x2f\xe5\x3d\x8a\x8b\x7a\x34\xc6\x2e\xe6\x9e\x98\xeb\x56\x65\x55\xe2\x3f\x19\xb4\xcb\x87\x12\x90\x0d\x5e\xa8\xed\x79\xbc\x21\x69\x6d\x64\xe2\xf1\x8c\xc6\x88\x69\xb4\x4a\xd6\xf7\x00\x93\x19\x20\xc6\xe9\x74\x38\x43\x75\x20\x79\xcd\x67\xbb\x1a\x76\xb7\xcb\x66\x37\x82\xbc\x0b\x2c\x26\xbb\x40\xf0\xd5\xa1\x9b\xb8\xb1\x7f\x3e\x72\x93\xed\xde\x81\x5b\x2d\x41\xdb\xbc\xf8\x3f\xd7\x1d\x83\x41\xbb\xbb\xd3\x44\x22\x26\x5b\xdd\x1d\x6b\xff\xdd\xe8\x10\xb5\xf6\xc8\xa5\x71\x97\x6d\x2d\xcd\x6a\xa5\x77\x0b\x60\x46\xec\xde\xdb\x13\x46\x6b\xd3\x5d\xcd\xde\x51\x53\xbb\xb2\xce\x40\x3c\x4e\x45\x1a\xab\x32\x56\xf7\x69\xdc\xf6\x9b\xbc\xdd\xdb\x51\x3b\xe7\x02\x2d\x0c\x56\xe9\xbf\xbe\x26\x59\xed\x13\x05\x3d\x8d\x56\xe1\x74\xd5\x3e\x96\xa8\x75\x2c\xf7\x69\xb5\xbf\x8a\x88\xe8\x3e\x4e\x25\xaa\xdc\x43\x1c\xfe\x50\xc0\x1d\x72\xef\x0d\xb6\xad\x08\xd5\x92\xdf\x5e\x3c\x27\xab\x29\x9e\xaa\x19\xde\xd5\x7c\x55\xa7\x13\x1a\xed\x78\x15\x59\x7d\x6e\x0e\x6a\xa7\x80\xd1\xfe\x63\x30\x4a\x96\x9c\xca\x1b\x3b\xfc\x5a\x79\x56\x17\xdd\x1d\x46\x7d\xba\xb1\x37\x90\x16\xc8\xbe\xbd\xf3\x75\x8d\xb5\x96\xf4\x1e\x50\xbb\x10\x2a\x12\xd1\x8a\xbe\x37\x85\x3f\x2d\xd8\xdb\xe3\x73\x24\xa1\x75\x96\x61\xe8\xc1\x89\xf4\x7a\xaa\xab\x9d\xd3\xf0\x8e\xa1\x78\x87\xb5\x6f\x1d\x45\xf3\xcc\xc5\xc4\xcc\x68\xb7\x21\xd4\xfb\xfb\x8e\xcd\x2b\x38\xd8\xe3\x3a\x55\x75\xd4\x04\x98\x6f\xd7\xd3\x00\xcc\x7d\x07\x3b\x0d\xbd\xf8\x78\x5f\x51\x3e\x04\x85\x3a\x14\xe8\xf4\xfe\x83\xda\x66\xfb\x70\xe9\x0e\x6a\x3f\x4b\xf2\x56\xee\x62\x6e\x2f\x80\xf9\xdd\xfa\x4e\x22\x7a\x0f\xb6\xf3\xdc\xfb\x35\xbd\x33\x6c\xfb\x4d\x92\x8d\x05\x51\x03\x01\x72\xca\x67\x3b\xce\x49\x7d\x55\x14\x47\xb2\x79\xd8\x00\xc1\x2a\x59\x3b\xae\x30\x68\xd8\xd7\x36\xb2\xb4\xa4\x2e\x5d\x69\xa4\xd9\x58\x62\xf4\x95\xa0\xd1\x30\x1c\xff\x37\x8c\x61\xb7\xf7\x75\x54\xf2\xe9\x0c\xe4\x9e\x7b\x94\x8d\x58\x61\x9c\x3b\x6a\xa3\x4d\x39\x1b\x37\x42\xf8\xbb\xd1\x78\xb6\x63\x5c\x5f\x7b\xc4\x48\x07\x50\x2c\xce\x36\x40\xb1\x97\x1a\x79\x6e\x9a\x9b\xdb\x1c\x8c\x4a\xa3\xaa\xcc\xc9\x96\x5d\x02\xc5\x44\x38\x43\x77\xb3\x10\x35\xf8\x1c\x23\x4c\x31\x8e\x79\xe3\x9b\x6f\x7c\x2a\x9a\x59\x4a\x0f\xe5\x5a\xeb\xfb\x4e\x76\x45\x21\xab\x93\x5a\x31\x69\x90\xc2\x45\x61\xb8\xe1\x12\x29\x3c\xd9\xfd\x36\x51\xf7\x71\x1c\xdb\x6b\x7a\x17\x2b\xb8\x49\xb2\x58\xe9\x4e\xc4\x3b\xe6\x50\xed\x62\xb4\x55\x8c\xda\x62\x9a\x4f\xd7\x25\xa7\xb3\x9a\x53\x7f\xdb\xd9\xf9\x06\xeb\xbe\x1f\xbd\x6f\xe2\xb8\xf7\x20\xc0\x71\x70\x68\x2f\x1f\x73\x17\x9d\xd0\x0a\x31\xe1\x30\x44\x74\x40\x82\xc3\x00\x83\x72\x57\x34\x56\x8d\x1e\xed\x8a\x07\xf7\xa8\xc6\x64\xa3\xa3\xaf\x1a\x4a\x3a\x1f\x87\x09\x72\xbc\x0d\x2e\xad\x95\x7b\xdd\xc1\xc4\xc4\x00\x4c\x21\x25\x09\x24\xa4\x3f\xc2\x63\x63\x3f\xdf\x5b\x74\x1d\x0f\xca\x89\x8c\x2a\x41\x63\x9c\x51\xd5\xcb\x5c\x78\x37\x15\x49\xca\xe7\x54\x53\xad\x85\x7b\x24\x3e\x0d\x16\x06\x4d\xb3\xf4\xcc\xbc\x3e\x33\xa6\x3a\x3b\x29\xb0\x30\x88\x68\xcd\x32\x3a\xd7\xe8\x49\x98\x8a\x7c\x0f\x92\x8c\xf4\x87\xd8\x6a\x3b\x17\xd1\x45\x9e\x8a\x35\x7d\x39\x27\x1c\x03\x9b\xa0\xac\x85\x02\x91\x22\xaa\x28\xec\x92\xbc\xe1\x62\x4e\xdd\xbd\x14\xf6\x25\xca\x73\x79\x6c\x97\xbf\xcb\x54\x9d\x6a\xd6\x2f\xed\x82\xad\xb4\x46\x79\x5c\x14\x8d\xd3\xec\x0a\x44\xd6\x4a\xef\xfc\xfc\xec\xe2\xf8\xf4\xcd\xbb\x93\x5f\xdf\x5d\x5c\x14\x05\x52\xa4\x23\x1d\x83\x39\xc3\xaf\x4f\x72\x37\xe6\x40\xc3\x40\xf3\x42\x56\x64\xe4\x58\xac\xd6\x82\x6b\x9c\x70\xef\x87\x28\x99\xcf\x35\x8b\xad\xa1\x98\xe7\xd2\x93\x20\x92\xe1\x58\xcb\x8f\x59\x2b\xda\xaf\x66\x55\xea\x36\x73\xcf\x0d\x3e\x30\xa7\x6b\xfe\xc0\x38\xca\x97\xc9\x5c\xdc\x9e\x09\xa1\xda\x31\x80\xdb\xa5\x53\xeb\xf4\x03\x19\x66\x8b\xd6\x7c\x61\x7b\x3f\x51\x4f\x11\xbf\x1c\xc6\xd5\xba\xe8\xda\x38\x3e\x60\xbb\xac\x37\x80\x39\x54\xaf\x6b\x69\x1e\xba\x8f\xdb\xaf\x44\x4d\xa6\xf5\x21\x39\x64\x38\x9e\x66\xb3\xea\x36\xa5\xd2\xd6\xf1\xc6\x59\x04\xc6\xc1\x51\x9a\x8a\x0d\x57\xf9\x2b\x96\x2b\x63\xfd\xbe\xce\xe3\x6d\xe2\x12\x63\x2b\x96\x19\x14\x03\x3e\xce\xa8\x39\xb9\xb2\x36\x0f\xd7\x92\xec\x70\x22\xf6\xa8\x5d\x0b\xe8\xd1\x83\x56\x14\x6e\xd0\x5b\xe0\x22\xa7\x99\x5e\xdb\x45\x51\x29\x73\xa5\x0d\xb0\x0d\x53\x89\x02\x91\x1e\x28\xeb\x0d\xb9\x4d\x94\x92\x79\xbc\x5d\xb1\xf9\x3c\xa3\x71\x10\xc0\x9c\xdd\xb0\x39\x95\x71\x10\x94\x65\x2b\xf3\xc1\x95\x14\x9b\x75\xbb\x82\x03\x73\x53\x50\x2b\x25\xa5\x59\x56\xd7\x9b\x2f\x25\xe3\xd7\xba\x5e\xeb\xd2\xbf\xa4\xc9\x3c\x28\xcd\x11\xe0\xc5\x0d\x0a\x7a\x01\x86\xfb\x0b\x37\x8b\xc0\x5c\xac\xde\x5a\xa0\xe9\x7d\x70\x6c\x03\x3a\xc5\x7a\xa8\x48\x45\x0f\x0c\xc1\xfd\xac\x50\xf0\x3e\xa7\xd2\x06\x2d\xc5\xff\x9d\xcd\x3c\xb5\x21\xa9\x7a\xff\x03\x4d\x9d\xac\x12\x96\xfd\x0b\x6d\x74\x83\xfc\x9b\xe1\xc7\xe6\x3d\x6e\xac\x52\xfe\xc7\x9a\x7c\xfe\x3f\xdf\xe4\x09\xd7\x55\xce\x6d\x7b\x33\x18\x99\xff\xf7\xb4\xeb\x96\xbd\x8a\x2e\x32\xa4\x22\xbf\x63\xa1\x4b\x80\xde\xdb\x19\x86\xb4\x07\xae\xcc\x41\xc6\x72\xa5\xd3\x0f\x82\x01\x8d\xd8\xbc\xec\xda\x38\x2e\x29\xb9\x49\x54\x22\xeb\xe1\x6e\x72\x2a\xed\xcd\x2a\xbb\x17\x10\xae\x25\x5d\x50\x29\xe9\x5c\x27\xc0\x2d\x9b\xab\x65\xfc\xdd\xf7\x6e\x58\x5f\x07\xe5\x57\x80\xb5\x53\xef\x9f\x4f\xcb\x57\xeb\x6a\x75\x39\x38\x08\xfe\x8b\xd5\xe9\x0d\xf1\x5f\xac\x62\xc3\xe6\xd6\xf6\xea\xff\x46\x7f\xae\xfe\xc5\xca\x2c\x17\x72\x9c\x25\x79\x1e\x07\x9b\xeb\x03\x5d\xe5\x41\x4a\xb9\xa2\x32\x28\x61\x4a\xfd\x22\x73\xab\x74\x62\xab\x60\xa9\x71\x8d\x77\x0b\xc2\x12\x15\x73\xa5\x7b\x00\x37\x89\x64\xd6\x19\x26\xc8\x37\x26\x48\x7f\x00\x81\x4e\x3b\xc8\x92\x4b\x9a\x05\x71\x73\xed\x3b\x42\xd4\x63\x79\x8f\xfa\x6d\x50\x96\x38\xbe\xbf\x95\x39\x5d\x4b\x9a\x26\xe6\xa6\xf0\x46\x53\xf3\x84\x5f\x51\xf9\x6d\x2d\xcd\x59\x5e\x37\xe5\x37\x9c\xe6\xd3\x47\xf5\xdb\xf8\x5a\x5a\x19\xf3\x5c\x49\xb6\x5e\x1b\x96\xac\x66\xe1\xcf\x64\x53\x48\x6a\x73\xd6\x9a\x1d\xfc\x5a\x5c\x4b\x2f\x2f\x7d\x2d\x8f\xae\xc6\x5e\x8c\xce\xf7\x55\x69\x74\xf7\x36\xcf\xfb\x7c\xb2\x4c\x1f\x9b\x17\xd2\x60\x6c\x34\x1d\x9b\x7c\xe9\xe4\x16\x13\x34\xac\xe2\x12\xaa\xe1\xbd\x96\xed\x8b\xa4\x46\x63\xfa\x68\x4f\x62\xa3\x3e\x26\xac\x24\xd6\x37\xa2\x16\xdc\xe8\x6c\xd2\x7c\x89\xb7\xe5\x98\xfe\xfb\xc3\xc9\x99\xf4\x7e\xd2\x12\x6b\x91\xbe\x5b\x9a\xcc\x65\x2b\x40\x4b\x77\xc0\xdc\x86\xe3\xd9\x7d\xd1\x33\x91\x82\x3f\x2b\x8a\x24\xc6\x71\xb3\x57\xf7\x74\xe9\x7e\xaf\x9b\x3f\x9b\x01\x09\x14\x37\x6f\xd7\x56\x8e\x15\x7b\x50\xb3\x62\xeb\x75\x60\x8c\x2a\x2c\x1f\x1b\x6f\x9b\xbc\x59\xfc\x4a\xa2\xad\xe5\x19\xe3\x6b\x09\x3b\x12\x83\x16\xcc\x5c\x68\x3a\x78\x23\xfd\x53\x7f\xb4\xff\xd4\xfa\xc1\x0d\x23\x8e\xd7\x12\xbd\x96\x68\x5b\xc2\x67\x59\x6d\x91\x3c\x80\x69\xc0\xf2\x97\x9c\x29\x96\x64\xec\x8b\xde\x69\xc1\x15\x55\xfe\xf3\xb9\xbd\x68\x63\x86\x31\x6c\x4b\xa8\xd9\xc6\x7b\xce\x59\xf6\x4a\x6a\x94\x64\xef\xf1\xc9\x63\xdb\xf8\xf1\x6e\xe3\x55\xd3\xa6\x15\xcb\x52\xce\xf7\xae\xb5\xac\xb3\x21\xec\x78\xd3\xa7\xf7\xf0\xa6\xbb\x7c\x29\xad\xee\xfd\x74\xac\x69\x65\xb3\x4e\x3d\x6b\xea\x1f\xf6\x30\x64\x2a\xb8\x4a\x18\xa7\xb2\xb7\xb9\x3e\x58\x27\xf3\xb9\x16\x77\x4b\x53\x60\x39\x0a\x60\xea\x4e\x97\x50\xf0\x91\xf7\xcc\x3f\x3f\x34\xfb\x1e\xe0\x4a\x65\xe6\xb0\xb2\x1d\x4c\x13\xe0\x13\x5d\x99\x07\xac\x21\xd5\x35\x1a\xac\xe0\x6d\x8a\xf9\x37\x8d\xc9\x62\x6a\xb0\x66\x26\x92\xb9\x66\x5f\x66\xf0\x10\xcf\x70\x39\x7e\xda\x81\xc9\xec\x2a\x7c\x29\x49\x63\x81\x3d\xfd\xea\x02\x7b\xf0\x2f\x2c\x30\x33\x15\xcf\xa4\x09\x6f\xf6\x5e\x7e\x3d\xf8\x7a\x23\x0e\xb5\x71\x15\x35\xa7\x45\x67\xc6\x49\x94\x11\xe1\x8d\x6a\x52\x32\x84\x0d\x99\xce\xc6\xec\x71\x3a\xc6\x92\x08\xe3\x18\x0a\x49\x18\xf6\x9f\x79\x27\x64\x13\x4d\x7c\xe3\xcc\xe2\x26\x53\x09\x7c\x2a\x67\xb3\x98\x37\x83\xdf\x6e\xca\x12\x9e\x48\xb2\xa5\xf6\xa6\xbb\xf8\xbd\x34\x31\xd1\xed\xfd\xb2\xe6\x6d\x84\x4b\x77\xdd\xec\xd7\x3c\x62\x4b\xe7\x6f\xd7\xe9\x41\xfa\xc4\xa8\x6b\x9c\x4f\xee\x73\x49\x64\x4d\x38\xbe\xec\x68\x25\xec\x11\x8a\xb3\xf4\x9c\xb2\x19\x4a\x30\x6c\x88\x0b\xd8\xbc\x17\x2e\xd4\x80\xd7\x54\x9e\xda\x2b\x84\x29\xda\xe0\x78\xf7\xa0\x7b\xe3\xae\x1e\x36\xc7\xb4\xba\xea\x3f\xbe\x3e\x05\x4d\xa5\x69\x53\x35\xf7\xf5\x23\xaa\x86\x39\x4d\x1d\x25\x52\x36\xd4\x5c\x89\x6e\xeb\x8b\x44\xcc\x8c\x35\x81\x14\xfc\x75\x93\x8d\x83\xdf\x74\x3f\x93\xbb\xf1\x55\xe1\x32\x41\x1e\x61\x99\x23\x9e\x0f\x92\x4c\x67\xe6\x82\x07\x78\x21\xc9\xd2\x5f\xde\x04\xbf\x5a\x67\x72\xfd\x21\x80\x00\xbe\xcd\x9b\xfe\x85\x2c\x8a\xfe\xaf\xb2\x84\xad\x2e\xd7\x35\x8b\x1f\xdc\xba\xb2\xda\xbd\x46\x0c\x50\x35\x09\x20\x88\xeb\x19\xfe\x49\x92\x54\xf3\x81\x6b\xf8\x59\x1a\x2f\xff\x55\xb2\x0e\x30\xfc\x68\x5d\xda\xcd\xcb\x37\xf9\xf7\xff\xac\xbb\xf4\xa3\xee\xd2\x2a\x59\x77\xf5\xe8\x27\xf9\x9f\x74\xee\xff\xc5\x28\x72\x7f\x91\xd3\xbd\x50\xad\x33\x12\x7c\x09\x6c\x00\x00\x49\xaa\xc0\xb6\x5f\x66\x01\x21\x3e\x50\xcf\x2f\x12\xc3\xef\xb2\x2b\xca\x2b\x27\xc1\x91\x6f\xd5\x44\xc8\xde\xa7\x00\x55\xaf\x4a\x84\x31\x50\x4e\x7e\x93\x93\xf5\x7e\x50\x20\xbd\x21\xc6\xbb\x41\x6f\xd4\x24\x78\x5f\x69\x97\x62\x17\xf5\x53\x4d\x82\x37\x9b\x2c\x0b\xe2\xdd\x03\x09\xb4\xe7\x7e\x59\x07\xdf\x35\x9a\xcc\xfa\xe0\xb0\x44\xde\xc6\x13\x29\x3d\x36\x8c\x27\x32\x56\x7c\xb2\x46\x14\x57\x3b\x9d\x10\xc4\x89\x4e\xe9\x36\x34\xb1\x2a\x20\x4a\x27\x0d\x10\xc4\xbc\x04\x69\x86\xd8\x08\x58\xbc\x4f\x16\x2b\x30\x07\x03\xca\xed\xe2\x1a\x04\xb3\xa0\x1c\xff\x26\x8b\x82\x2a\xb4\x17\x64\xb2\x11\x58\x4b\xf2\x56\xc0\x28\xab\x1f\xe7\x44\x44\x6e\x83\x82\xe0\x3b\xa1\x44\x12\x6e\x5c\xed\x6d\xb2\x0f\x7d\x1e\x60\xd8\x70\x17\xfc\xbc\x6e\x27\xdf\xcb\xb4\xe0\x64\xdf\x5a\xa5\x01\x58\x3e\xa1\xe8\x18\x49\x3c\x1d\xce\x40\x4e\x47\x33\x1c\x53\x54\xb9\x38\x57\x97\x81\xaa\xc8\x1b\xb2\x18\xd3\x9a\xca\xca\x5c\x84\xe1\x31\x12\xd5\xf5\x73\x60\x2e\x36\xe4\xdd\x17\xd8\xec\xcc\xad\x3d\x95\x13\x86\x9c\x39\xed\x9d\xbd\xf1\x93\xd0\xf2\x9e\x7b\x6b\xea\x4b\xdf\x13\xd9\x73\xea\x60\x58\x80\x09\xcb\x0a\x4b\x22\xa9\xb5\x09\x9c\x3c\x8c\x47\xf6\xfa\x66\x9c\x10\x35\xf6\xd7\x1a\x77\xc4\xae\x4d\xbb\x2e\x30\xec\x37\xae\x72\x9d\xe6\x7c\x56\x14\x6a\x1a\xfc\xe3\x1f\x15\x4c\x67\x45\x91\xf0\xa9\x9e\x77\x3c\x2b\xcd\xa5\x7b\x7b\xe1\xe5\x6c\x14\x7f\x1f\xae\xca\x94\xbc\xcc\xa8\x0d\x57\x55\x87\x48\x98\x93\x14\x87\x21\x4a\x78\x64\xa6\x91\x10\x32\x2f\x8a\x0d\x9f\xa6\x7c\xa6\x9f\xb1\xa5\xab\x1b\x32\x84\x9c\xe4\x0a\xf9\x23\x40\x3c\xce\x1f\x6f\xc6\x1b\x17\x32\x76\x41\xc4\x64\x89\x8e\xd1\x9a\xa8\xe9\x66\x66\xa6\x71\x6d\xa6\x71\x89\x4c\x02\x0e\xc3\x45\x33\x1a\x5e\x15\xfe\x78\xd1\x24\x0e\xd4\x50\xcd\x84\xa4\xd5\xe5\x61\xba\xe9\x8c\xd8\x8b\xed\xc7\x7d\xb4\x26\x4e\xb7\x99\x60\x6c\x08\x97\xb9\xfc\x64\xd7\x8f\x1a\x2d\xc8\x82\xa3\x04\x96\xb0\xb6\xf4\x0f\x84\xe9\xc0\xbf\xd0\x07\x6c\x16\x45\x17\xb5\x73\x79\x86\xc6\x57\x08\x63\x58\xef\xad\xf5\x39\x27\xfd\xd1\xd8\x93\xe3\x25\x27\x43\xb8\xe1\x64\xab\x87\xb0\xbf\x87\xb7\x7a\x14\x71\xbf\xbf\xe4\x83\x41\x59\x82\x4d\x6c\x66\xd3\xb5\x19\x1f\x6b\x3e\x5d\xf3\xfb\xef\xee\xb7\x5b\x70\x21\xc5\x0a\xdd\xf0\x96\xc1\xb3\x5d\x16\x0f\xf7\x8d\x4f\xee\x38\xac\x38\x5c\x71\xb8\xdc\xdd\xea\xb7\x9c\x1c\x22\xb6\x5e\x0a\x4e\x0b\xb6\x16\xf3\x82\xad\x93\x39\x8e\xfe\xa2\xa9\x33\xbd\xa5\x97\xd7\x4c\x1d\x32\x7b\x11\xdb\x4b\x8a\xe1\x44\xe3\x8d\x4c\xa4\x46\x82\x86\x0b\xfd\x96\x53\xf5\x72\xb5\xa2\x73\x96\x28\x0a\xa7\x3a\x25\xcd\x68\x22\xeb\xb4\x73\xde\x08\xb1\xf4\x49\xbf\xbc\xa6\x79\x9e\x5c\xd1\xe3\x65\xc2\x39\xcd\xe0\xb3\x4e\x7b\xea\x4d\x01\x8f\x35\x14\xdf\x19\x0c\xf4\x96\xef\x6e\x97\x77\x7c\xe7\x9a\x48\xbd\x1d\xdc\x76\x7f\xc7\xa7\x6a\x36\x76\x1e\xe0\xe6\x05\x0c\x93\x0f\x47\x9d\xd7\xe6\x36\xe0\xf6\x96\x1b\xe6\x0b\x5e\xb5\x33\xea\x64\x73\xc1\x07\x2e\xe1\x4d\xfb\x93\x88\xd6\x22\x57\x6e\x1c\x48\x0d\x82\x00\x4e\xdc\xad\x4e\xa9\xc8\x06\xc1\xe1\x61\x30\x38\xe1\xd1\x52\xe4\x0a\x97\xe3\x0b\x1e\x86\xa7\xbc\x28\xd0\x45\xbb\x96\x9d\x03\xce\x8e\xa0\x5e\x72\x8c\xe9\x6e\x50\x2f\x69\x82\x7a\xf9\x23\x56\x3e\x1d\x0c\x8e\xdb\xab\xa5\xdb\xb8\x44\xc5\xcf\xea\xa6\xb1\x63\xbf\x7c\xd4\x48\x5c\xc2\x1d\x47\xc7\x1c\xc3\x31\x2f\xf5\x2c\x36\xbb\xd9\x04\x69\x69\xc2\x12\x1a\x0d\x8d\xa6\xde\xe7\x1c\x4f\xee\xda\xb9\xcf\x79\x6d\x22\x7f\x64\xda\x2a\xe3\xcf\x3c\x0c\x3f\xf3\x88\x8b\xdb\xdd\xdc\x36\xb5\xca\xf8\x89\x87\x61\xff\x96\x4f\xd0\x15\x27\x68\xc5\x8d\x4b\xc1\x27\x8e\x23\x8d\x99\x1f\xc2\x8a\x9b\x87\x51\x24\xf8\xca\x82\x9e\xbc\xe2\x70\xc7\x35\x22\xbe\xe2\xcd\x29\xd1\x6b\x7d\x84\x71\xdc\x17\x51\x32\x9f\x9f\xdc\x50\x1b\x11\x84\x72\xa3\xe3\xda\xc3\xcb\xbd\x46\xd1\xa2\x10\x11\x5b\xe9\x76\xce\x8d\x44\x9e\x17\x05\x43\x6f\x38\xd6\xe5\x58\x46\x63\xcd\xe6\x34\xe6\x5a\x0f\x28\x10\xdc\x28\xb2\x8c\x59\x45\xba\x4c\xf8\x95\xb9\x44\xf2\x14\x05\x56\xa8\x0f\xda\x21\xfe\x77\xee\x7f\x68\x64\xc3\xd1\x7e\x4d\xcd\x99\x7d\xa0\x5a\xbe\xab\x96\xc9\x74\xab\xb7\xc5\x21\xe5\x54\xbd\x63\x2b\x2a\x36\xca\x82\x16\x86\xb8\x8c\xd1\x1d\x27\x6f\x38\xec\x83\x04\x05\x0e\x9c\x01\xbc\xe2\xd0\x1f\x61\xe7\xfd\x71\xcd\xe1\x8c\xc3\x6b\x0e\x0f\x38\x3c\xe5\xf0\x92\xc3\x33\x0e\xef\x39\x3c\xe1\xf6\x16\xbc\x0b\x0e\x66\xaf\xc7\xa7\xbc\x84\xe7\xdc\x44\xeb\xf9\xc2\xc9\x13\x6e\xa2\x62\xff\x61\xb6\xba\x33\x4b\x3c\xbd\x34\x96\x32\x52\x43\xf7\x17\x7a\xf9\x13\x53\xbb\x5f\xe0\x43\x13\x4f\xbc\x68\x32\x28\xbf\x72\xd2\x5a\x75\x1f\x38\x86\x9f\x38\x79\xce\x91\x80\xe0\x8f\x0d\xdd\xd0\xd7\x2c\x95\x42\x25\xf9\x75\x80\xe1\x67\x4e\x7e\xe2\x61\xf8\x13\xb7\x14\x61\xfc\xb3\xde\x79\xd7\x7c\x4f\xc8\x07\x6a\x42\xf5\xfc\xca\x8d\x55\xca\x07\xee\x2e\x14\x31\x26\xa4\xf4\x33\x53\x08\x8f\xcf\xf8\x18\x6f\x29\x39\xe3\xd1\x42\x83\x42\x3f\x18\xf2\xa4\x31\x3e\x6d\x5e\x51\x6d\x31\xef\x19\x9f\x3c\xe0\x08\xc7\xaf\xb9\x8b\x28\x0f\xaa\x2c\x1b\x2f\xa6\x66\xae\xa8\x44\xb8\x84\x5f\x75\xe6\x66\xa7\x3e\x34\x36\xce\x35\xc7\x65\xfc\x87\xdf\x0c\x4f\x35\x61\x80\x97\xbc\xbe\xfb\xc4\x6a\x26\xde\xd1\xcf\xea\x8d\x98\x53\x14\x04\x26\x76\x7d\xef\x0f\xae\x4b\x46\xc2\x82\x14\xbd\xe4\xb0\x4d\x97\x89\x4c\x52\x45\xe5\xd3\x44\x25\xd6\x7b\xad\xdd\xec\x4b\x6e\x2f\x31\xd2\x8d\x3c\xe5\x25\x8e\x5f\xf0\x30\x7c\xc1\xbd\x68\x38\x41\xcf\x38\xa9\x5f\xbd\x78\x05\xef\x39\x79\xc6\x8d\xd0\xb8\x53\xdf\x7b\x17\x11\xf0\x19\x07\x3d\x0a\x1c\xb7\x3f\x7f\xe1\xde\x83\xd1\x7c\x35\xeb\xec\x47\x0e\xbf\x70\xf8\x8d\xc3\xef\x1c\x94\x20\x7a\xc2\xf6\xb9\xb9\xed\x82\xc7\xca\x5c\xcb\xee\xaf\xab\x1b\xbf\xd6\x53\xf7\x9a\x57\xf7\xef\x9f\xe9\x99\x3e\xe3\x84\x82\x9e\x06\x0c\xaf\x39\xa1\x25\x50\xb1\x6f\xed\x03\xd2\x9a\xf7\xac\xed\x0a\x33\x78\x46\xb5\xcc\x59\xac\x89\x75\x7d\x73\x68\x23\x70\x62\xc7\xcd\xb2\x4f\x92\xb9\x97\x77\x77\x42\xfb\x52\x73\x1b\x00\xaf\x4c\x6a\x1d\x1c\x09\xa5\x88\x56\x49\x9a\xa7\xd1\x29\x12\x97\x20\xc5\x3d\xf7\x88\x18\x76\x44\x58\x4a\xc5\xc5\x7e\xb8\x3c\x73\x85\xca\x0a\x51\x13\xf8\xae\x19\xce\x8f\xd4\xfc\x25\x75\x3e\x72\x52\x44\x8b\xfa\x22\x3a\x34\x04\xe9\x3b\x86\x75\xb7\xa4\x07\x4c\x09\xa2\x0d\xbd\x9a\x91\xdf\x1a\x5b\xcb\xb8\x3f\x72\x37\x6e\x28\x4d\x6b\x77\xb4\x0f\x3e\x8f\xbf\x95\x43\x95\x65\x09\x4c\x78\x0c\x91\x88\x1d\x6e\x24\x15\x24\x70\x60\x0c\x60\x23\xfc\x15\x94\xb9\xf0\x91\xf6\x17\xa2\x1d\x69\x3f\x15\x18\x32\x41\x38\x87\xb5\x20\x22\xaa\x66\x04\x96\xa2\x79\x35\xf4\x8d\x68\xa0\x96\x3b\x61\xa2\x42\x2e\xa8\x32\x51\xe3\x56\xc2\x40\x03\xae\x04\x59\x09\xb8\x14\x6d\x54\x73\x23\x30\xdc\x0a\xd2\xef\xa3\xa5\x08\xc3\xa5\xf0\x37\x46\xdf\x18\xf3\x07\x51\x59\x03\x99\x04\x0c\x27\x82\x1c\x2b\x94\x0a\xd8\x89\x19\xd8\x47\x4f\x51\x26\x70\xbf\x92\x90\x33\x81\xb1\xf9\xf2\xc3\x0f\x84\x90\xe7\xb4\x8e\x27\xa8\x73\x5f\x8a\xa6\x00\x59\x51\x29\x07\x9a\x33\xb3\x5e\x98\xe0\xb6\x51\x5f\xb2\x64\x0b\x64\xc3\x3d\x76\xde\xa3\x9b\x55\x61\x29\xfa\x23\x17\xb4\x30\x13\xd5\xb6\x1e\x61\xd8\x31\xaf\x43\x3b\xae\x74\xed\xd7\x2a\xfc\x33\x52\x7b\xa1\x23\x13\x31\x23\x14\xfa\x48\xed\x1a\x23\x9b\x82\x2d\xb6\x5c\x6f\x8b\x0b\x41\x4e\x44\x51\xf4\xf7\x16\x74\x9f\x86\x61\x7f\xce\xdb\xbd\x96\x4d\x8e\x5b\x73\x89\xe3\x7b\xb8\xe5\xaf\x72\xe1\xd2\x70\xda\x65\x09\x0a\xf1\x26\xb3\x5c\x9d\x6b\xb4\xe5\xc9\x4c\x44\xee\x5e\xfc\x5d\xe7\x0f\x0b\x0b\x8c\xe1\xb4\x03\xcb\x54\x61\xdf\xcd\x45\xda\x5d\x8c\x07\xa2\xc4\x42\x49\x4b\x2d\xb4\x84\x73\xd1\x75\xa1\x4c\x9f\x46\x5c\x28\xb6\x60\x74\x8e\xb7\xf5\xb3\x0f\x76\x6a\x3c\x79\xa8\xb3\x7e\x1f\x2b\xd1\xea\x5e\x15\xb3\x84\xb8\xd8\xa9\xc0\xc8\x88\x10\x6f\x03\x9a\x90\xe1\xd8\xdf\x05\xf6\x38\x19\x3b\xe7\x40\x2b\xe7\x12\x3e\x4d\x06\x83\x19\x64\x84\x4d\x16\x91\xb8\x8e\x17\xd1\x22\x61\x19\xac\x8d\x75\x8a\x59\x37\x30\x37\xcf\x46\xa7\xb6\x24\x0b\x47\x42\xcd\xfc\x64\x13\xc4\x8a\x02\x3d\x24\xc4\x74\xcf\x2d\xd9\x30\x7c\x27\xac\xa1\x6d\x23\x91\x8c\x30\xf4\x87\x84\x90\x6c\x92\x12\x11\xa3\x65\x18\x2e\x3d\xa1\x84\x94\x64\x48\x60\x58\x86\x21\x5a\x3a\xba\x0c\xb9\x35\x6c\x4a\x09\x21\x0b\x8f\xaa\x26\x73\xb4\x16\xc8\xa3\x8f\x83\x74\x99\x30\xde\x4b\xef\x52\x2d\x06\xe3\x18\x6d\xc8\xa9\x40\x29\xc6\x93\x8d\xa5\x3f\xa9\x96\xe1\x71\xbc\xd6\x69\xf1\x1c\x89\xc6\x2a\x58\x86\x61\x3f\x37\x5d\xb0\xad\x19\x93\xd4\xb2\x01\x63\xcd\xae\x37\xa7\x61\x04\x32\x0c\xfb\xad\x51\x7e\xb6\xa3\xb4\x5a\xc8\x4f\xfb\xb3\x6a\xc3\xf9\xb2\xf1\xad\x98\x20\xc4\x49\x1b\xb1\xa0\xc0\xfc\x68\x7e\xd0\x13\x28\x0a\x9a\x04\x27\xb9\xe0\x44\x02\x37\xc7\x18\x36\xab\x82\xfe\xc8\x38\x34\xef\xe0\x22\xc4\x31\x8e\x39\xd9\xba\x0a\x62\x0a\xb6\x78\x2c\x4b\x40\x8c\x88\x69\x20\x78\x30\x50\x33\x3c\x61\x88\xe3\x38\xd8\x70\xeb\xfd\x35\xaf\x06\x11\xd8\xf0\x1a\x5d\x26\x9e\xc2\xec\x79\x91\xd1\xb1\x71\x36\x37\x58\x3e\x0c\xd1\x88\x90\x3d\x2b\xcd\x89\xfb\x8c\x14\x8e\xab\x47\x73\xc2\x85\x82\xf7\xbe\xcd\x9e\xeb\x65\xaf\x6e\xdc\xd8\x9a\x7f\xde\x23\x73\xc2\x73\x0f\x7b\x96\xcd\xc6\x73\xd1\x72\x7c\x9a\x18\x0a\x43\x08\x91\x24\xa2\xbd\x1f\x2e\xc5\xe4\x46\x38\xdf\xac\x6a\xcc\x67\x75\xb3\x1c\x14\x8e\x3f\x09\xd4\x05\x10\xd0\x6c\x81\x09\x44\xdf\x58\xbb\x97\xa2\x28\x4c\x6b\x93\x87\xf1\x08\xdc\x10\xbd\x8a\xc6\x5d\x1f\x6f\x0c\xda\x8f\x45\x97\x18\x3a\x32\xa1\x13\x1a\x2b\xa7\xef\x63\x81\x94\xf0\xee\xdb\x86\xdf\x1c\x52\x55\xd1\x0b\xdb\xf9\xc0\x0f\xa7\xfa\xb0\xac\x3e\x80\x83\x97\x0d\xc3\xf3\x76\x77\x91\x36\x6e\x8c\xaa\x3e\x08\x4d\x18\xf4\x37\xa1\x21\x51\xc2\x51\x57\x21\x6a\xf4\x35\x45\x81\xec\x83\xe6\x5d\x5d\xac\x68\xec\x9b\x24\x12\x1c\x06\x22\x0f\xe1\xdc\xec\x15\xbd\x88\x71\x09\xaf\xba\x6a\xb4\x38\x50\x57\xe6\x6b\x6f\x56\x6a\xd0\x0d\x5b\x20\x45\x6a\xde\xac\x81\x0a\x7a\x69\xc2\xff\x43\xf5\x2e\xf5\xea\x32\x48\x6b\xde\x63\x2a\xa7\xd9\x22\xf0\x2e\xfa\xa7\x02\x49\x3c\x16\x93\x1d\xd4\xe9\x28\x8c\x55\xdb\x8c\x4a\xd3\x8c\xf0\xf7\x82\xbc\x15\xe8\x95\xd0\x0b\x42\xe3\xb2\xb7\x02\x1d\xf9\x97\xc6\xe5\xfd\x47\xc2\x5e\x52\x62\xc3\xad\xe2\x18\xed\x8f\x7e\x54\x8d\x7e\xb4\x57\xb2\x6a\xd9\xd5\x50\x8e\x4f\x44\x18\xa2\x4c\x74\x07\xb0\x6a\x12\x0c\xa4\xda\xea\xaf\xee\x9b\xc2\xa5\xb4\x2a\x65\x24\x27\x72\x10\xf4\x4c\xdc\xac\x41\xc0\xf8\x8d\x53\xf0\x04\x2e\x38\x05\x64\x02\x34\xa7\x65\x2f\x36\xfb\xb1\x11\xf2\xdb\x5f\x91\xb8\x11\xee\xd5\xb8\x5c\x21\x07\x1c\x7b\x89\x89\x87\x8e\x7d\x6b\xe0\xd9\x23\xe1\xaf\x94\x30\x3c\x2d\xfa\xb1\xad\x1a\xc8\xdd\x67\x6b\x74\x96\x0a\x70\xe0\x00\x8f\x78\xf5\xb3\xdd\x2a\xfa\xa9\xc2\xce\xf1\x74\x06\xd5\x6a\xd7\x5f\xac\xeb\xa8\xe7\x41\x9d\xf0\xd0\xba\x87\x62\x0f\x3d\x57\x11\xd7\xed\xad\xa9\x54\x99\x89\x34\xd7\xa6\xca\xc6\x05\x70\x28\x13\x0d\x5d\xf8\x56\x13\xf2\xb8\x03\x5f\x5a\x2d\x32\x59\x38\x20\x41\x42\x56\x02\x21\x49\x32\x51\x9f\x10\x21\x41\x8e\xdd\x6d\x10\xed\xcb\xcd\xec\x21\x06\xe2\xe4\x18\x09\x3c\xbd\xe4\x33\x3c\x91\x31\xa5\x1a\xbf\xd7\x81\x6d\x23\x71\x4d\xba\xee\xb6\x2b\x0a\x05\x89\xa1\xda\x5d\x86\xc9\x34\x0c\x29\x24\x8e\x68\x13\x8b\x46\xec\x8b\xbf\x4e\x84\x39\x5c\xa4\xb7\x1b\xab\x09\xa0\x53\x49\x61\x18\xf6\x09\xb3\x2b\x39\x0c\xcf\xdd\x7c\x31\xbd\x96\x21\xa9\x45\x88\xb4\xed\xd4\xbf\x13\x6a\xd1\xf0\x88\x5e\x42\x36\xb6\x47\xbf\xec\xcb\xea\x46\x40\xfb\x91\x83\x5d\x69\xb8\x2d\xbc\xa9\xb6\x64\xe5\x77\xe6\x8e\x78\xe5\xf7\x28\x35\x32\x56\xb4\x20\xab\x4e\x7c\xac\x91\x48\x26\x8a\x42\xff\xfe\xc6\x27\xba\xdd\x5f\xf4\xf7\xf8\xca\x88\x5e\xd0\x15\x08\x5f\x23\xa2\xdf\x39\xe1\x8d\x7b\xdd\xad\x64\x4c\x15\xe2\xed\xcb\xde\x97\x94\xb7\x6e\x2c\x69\xbb\x3f\x36\xb5\xd3\x99\xd8\x75\xaf\xf8\x9d\x7b\xe4\xe3\x58\x0b\x0b\x3b\x1f\x55\xa6\x71\xc6\xd3\xd5\xcb\x3b\x61\x2f\x39\xa8\x6f\x0a\x69\x47\x7d\xf5\x47\x8a\xc3\x12\xb6\x46\x36\xea\x94\x41\x05\xca\x04\xdc\x79\xff\x06\xd1\xb8\xe3\xcf\xa0\xb8\x3f\xb9\x8c\xe4\x44\x94\xb0\x75\x68\x39\xce\x44\x69\xa2\xf8\x1b\xe4\x62\xd6\xcc\xbe\xd0\x2f\xac\xa7\x15\x79\x1b\x2d\xc6\x49\x18\x6a\x81\x80\x4e\x05\x9f\x85\xa1\x44\x14\x04\xff\xd6\x9b\x56\x8c\xe6\xbc\xc4\xa5\x11\x18\x7f\xe3\xba\x5e\xfd\xd4\x38\x62\x4d\xc5\x6e\x14\x68\xd3\x59\xbb\x78\x3a\xae\x24\x59\x79\x8c\xd7\x70\x60\xb6\x21\x60\xf4\x14\x55\xeb\x19\x68\xb5\x0f\xca\x6f\x6b\xcf\x2c\xe2\x7b\x60\x5f\x45\x2e\xfb\x93\xaa\x2e\x74\x55\x49\x96\x75\xf4\xdb\x9d\xd8\xaf\x84\xbd\x19\xab\x92\xfb\x41\x98\x67\xc3\xc9\xb3\x5d\xa6\xc9\x85\x08\xa2\xa8\xb2\x18\xc0\xe6\x66\x77\x2d\x3e\x40\x4a\x46\xe3\x4c\x2f\xc3\xbd\x23\xb8\x0d\x49\x06\x03\xcd\xac\x8f\xc6\xee\xc6\x76\xaf\x3d\x4a\x07\x03\x1f\xfe\x5e\x63\xff\x5d\x41\x51\x63\xff\xa2\x40\xb9\x41\x3b\xd3\xcd\x8c\x28\x38\x38\x48\x8b\x82\x23\x66\x0c\xe7\x8d\x2f\x79\x9d\x54\x36\xee\x81\xf7\xcc\xa8\x40\xcc\x71\x37\x4d\x6d\x86\x4c\x52\xfa\x6d\x40\x31\x80\x10\x5d\x80\x10\x6d\x40\x74\x8c\x5d\xec\x8e\xac\x86\x32\x77\xee\xa7\xbe\xbf\xc2\xf7\x97\x23\xb1\xdf\x5f\xa7\x1f\x7b\x23\xf6\x11\xa2\x23\x16\xc6\x47\xa6\x8e\x9d\x69\x77\x9e\xf3\x8b\x31\x07\xee\x11\xbb\xe2\x42\xd2\xe3\x24\xa7\x2e\x99\x05\x36\x38\x6c\xa6\x58\xc6\xb8\x4f\x5d\x99\xd4\xb9\x50\x47\x99\x2f\x9f\x9b\xa4\x0d\x67\xa9\xf1\xeb\x30\x69\x1b\x93\x96\x2b\x96\x5e\xdf\xb9\xa4\xbb\x00\x03\x6d\x44\xa8\xba\x16\x2d\x67\xd7\x33\x7a\x75\xf2\x79\x6d\xb1\x94\xee\xfa\x99\x80\xd7\x02\x1e\x08\xb2\x7d\xff\xe6\xfc\xfd\xdb\xb7\xa7\x67\xef\x4e\x9e\x5e\xfc\x16\x77\x5d\xad\x72\x2d\x50\x90\x04\xa0\x9b\xa8\xc7\x98\x25\xb9\x32\x57\x37\x92\x87\xe0\x8e\x4f\x23\xfa\x99\xa6\x28\x48\x2e\xd3\x79\x60\x96\xc6\x93\xb3\xd3\x9f\x4e\xde\x5c\x1c\x1f\x9d\x9d\xbc\xbb\xb7\xe6\x7f\xca\x00\x82\xab\x6f\xac\x3b\x57\x32\xb0\x8c\xf2\x53\x41\xec\x98\x1a\xd8\x5e\xe7\x81\x97\xc2\x69\x77\xf6\x1d\x64\xe1\x99\x20\x4f\x05\xbc\x17\x04\x9d\x09\x72\x98\x1c\xc2\x6b\x41\x0e\x2f\xff\x72\x78\x05\x4f\xdd\x6a\x39\x13\x10\x24\x01\xae\xde\x5f\xbb\xf7\x61\x9f\x90\x33\x51\xf7\xac\x28\x74\xca\xeb\x46\x0a\x86\x27\x82\x3c\x10\x51\x0b\x9e\x45\xf1\x40\x44\x4d\x30\xc0\x73\x41\x2a\x15\xe6\x21\xc2\x93\xc9\xa1\x1b\x5a\x80\xa7\xa3\xd9\x18\xbd\x17\x45\xf1\x5c\x14\xc5\x13\xa1\x05\xa7\x67\x9d\x5a\x53\xc7\xc9\x98\xfd\x92\x90\x27\xc2\xdc\xdc\x6e\x16\x03\xa4\xe4\x8d\xeb\x39\xc3\x26\x16\x4e\x6e\x02\xab\x43\x4e\x86\xb0\x20\xaa\x71\x5b\x18\x3a\xd0\x82\x22\x4a\x49\x5a\xdd\xb1\x1f\xdc\x05\x10\x68\x79\xd7\x07\x21\xd3\x8b\x37\x0c\x51\xea\x96\xf1\xa2\xbe\x02\xca\x39\xad\xb2\xe6\xf8\x1b\x2f\x8f\x87\x61\x88\xfa\xac\x5e\xdf\x45\xc1\x9a\x8b\x3d\xf8\xa8\xf9\x23\xa2\xa6\x8d\x32\x07\x23\x73\x23\xec\x86\x04\x68\x12\xf7\x82\xc1\x66\x10\xe0\x00\x16\x24\xe8\x05\x83\x05\xe4\x83\x81\xbf\x9a\xda\xad\xe5\xe0\x9f\x68\x12\xfb\x6c\x29\xc6\xf0\x5c\x18\x51\xb3\x95\xc5\x7c\x7f\x80\x26\xfd\x8f\x1f\x73\x97\xed\xbd\x30\x12\x4b\xab\xeb\x9c\xf8\x09\x4f\x26\x32\x66\xb0\xc0\x90\x4c\xf8\x04\x69\x19\x7f\xbd\x51\xc4\xfd\xba\x51\xe7\x18\xf8\x74\x38\x23\xfa\x4f\x23\xc9\x82\xad\x59\x71\x13\x24\x03\x9b\xdd\x1d\xe6\xc7\x8d\x2f\x64\x18\xeb\x3e\x69\xfe\xa5\x99\xca\x1c\x1e\x99\xb8\x8a\x07\x8d\xf2\x31\xb5\xc3\x35\x31\x55\xbd\x25\x51\x18\xbe\x74\x83\xe0\xc6\xac\x03\x76\x35\x50\x82\x8c\xc6\x62\xcf\x1e\xf8\xe0\xe1\x58\x0c\x06\xb8\xe2\x81\xeb\x33\x4e\x31\x0b\x43\xc4\xa7\x62\x46\x6a\x73\x2e\xe0\x0e\x1d\x7e\x11\xe4\x99\x68\x99\x47\x59\xa0\xef\xdb\x47\x1d\x46\x76\x8d\xf7\x09\xf9\xa2\x49\xa2\x7e\x8e\xbf\x08\x57\xcf\x1f\xbb\xea\xe7\x0f\x82\x74\xdc\x93\xa3\xc8\x61\x74\x58\xa3\x08\x5d\xc7\x3e\x3a\xae\x6f\x19\x54\x91\x71\xb8\xc8\xc9\x36\x89\x83\xbf\x05\x25\xa8\x12\x82\xbf\xe9\x35\x17\x04\xd5\x7a\x57\x10\x3c\x78\x94\x3c\xb6\xc8\xea\x85\x20\xc1\x83\x61\x40\x08\x09\x92\x3a\xcb\x61\x74\x08\x3a\x19\xc3\xaf\xb6\x9f\xee\x43\x80\xe1\x27\x41\xfa\xfd\xc3\xe8\x70\xfa\xab\x86\x93\x89\xa6\xe5\xde\x2c\xba\x34\xa5\x7e\xbe\x6f\x30\x68\x12\xe3\x43\xe3\x78\xa5\x87\x32\xde\x1f\x51\xc5\xd1\x34\x9c\x58\x1b\x77\x39\x3b\x35\x6c\x90\x5c\x06\x2e\xdc\x6b\x75\x90\xd0\x7b\xd8\x27\xc4\x07\x10\x2b\x8a\x20\xd1\xc3\x96\xd3\xe1\xac\x28\x82\x4b\xfb\x3c\x9a\xe9\x21\xff\xd8\xc9\x7b\xd7\x16\x9e\xb5\x8a\x4c\xa3\x1b\xb7\xf7\x6f\x10\xc5\x5a\x78\xb2\xc6\xe0\x29\x61\x95\x23\xb0\x43\x2d\x8f\x86\x45\x91\x3c\x26\xe9\x44\x4d\x82\xc0\x89\x30\x31\x32\xce\xbb\xcb\x44\x1e\x8b\x39\x3d\x52\x28\xc1\xf8\xd1\xf7\xdf\x3f\xfc\xfb\x0f\x45\xc1\x1f\x7f\xff\xc3\x77\xa3\xbf\x17\x45\x32\xd0\x18\x29\x2d\x0a\x24\x76\x32\x0f\x46\x3a\xfb\x0f\xdf\x3d\x1c\x16\x85\x78\xfc\xfd\xdf\xbe\xfb\xeb\x77\x13\x35\x61\xde\x19\x35\xc1\x31\x8f\xf5\xbb\xdd\x8b\x09\x24\x83\x87\x38\x16\x07\xa6\xc4\x00\xf1\x03\xd3\xd2\xa3\x47\xa3\x21\x1e\xfc\xf0\xfd\xf7\xdf\xfd\x50\x96\xf0\x8b\x20\xdb\xd4\x54\x1f\xff\x28\x90\xe6\x7b\x6d\x65\xe6\x6d\x88\x4b\x57\x37\xfc\xb6\xaf\x35\xf4\x33\xa3\x25\xf6\x5f\x2c\x99\xf5\xdb\x72\x84\x4b\xf8\x7d\x57\x5f\xe4\x03\x22\x9a\x89\xee\xbe\xc5\xab\x0a\x15\x51\x05\x68\xa2\xc6\x6a\xc8\x5b\xda\x54\xb2\x24\xdf\xd7\x21\xd8\x6d\xd7\xd3\xb5\xf7\xac\x75\x76\xcf\xf6\x90\xce\x7b\xb9\xd0\x29\x8c\x5f\xf5\x84\x5a\x52\xd9\x53\xcb\x84\xf7\x12\xef\x7f\xd0\x13\xd2\xdc\x8e\x50\xd3\x5e\x5e\xea\x46\xdd\x46\xee\x13\xb2\xee\xba\x92\xcf\x7d\xff\x37\xd3\xa2\x31\xa6\x9b\xf7\x84\x96\xd1\x53\xb1\x5a\x27\x8a\x5d\x66\xb4\x27\x69\x4a\xd9\x8d\xb9\x21\xc9\x55\xfd\x45\xd4\x43\x2b\x41\x31\xf2\x3a\x51\xcb\x68\x95\x7c\x06\xea\x9f\x19\x07\xe9\x9e\x17\x99\x10\x12\x38\x23\x87\x1f\x1f\xa0\xe9\x83\xf0\x3f\xfe\xcf\xac\xf8\x38\xff\x38\x9f\x14\x8f\xa6\xff\x7c\x3c\xfb\xcb\x63\x7c\x78\x05\x62\xff\x33\x3e\xbc\xea\x8a\x9a\x65\x39\x46\x7b\x79\x64\xd2\xb5\x23\x69\xc3\x61\x9e\x6a\x8c\xb7\xbf\x13\xff\x56\xc2\xdf\xfa\x24\x08\xa6\x6a\xe6\x02\x99\xa6\x24\xd9\xbb\x9a\xca\x56\xd6\x1f\x81\xd4\x0c\x86\xbf\x91\xce\xec\x50\xa7\xca\x45\x36\x36\xc6\xce\x81\x8d\x8d\xd3\xe4\x13\xa6\x7f\x74\x76\x41\xea\x6c\x8b\x2c\xb9\xca\x49\x10\x80\xd4\xfd\xd4\x28\x47\xcc\x34\xbb\x7a\x1f\x02\x31\x4a\xba\x4d\x96\x95\xa6\x80\x39\xa5\xee\x53\xcd\xfc\xb2\x05\xea\x27\x45\xd1\x4f\x8b\xa2\x42\x6b\xae\x8b\xfd\x0f\xa2\x28\xfa\x2f\x44\x51\xfc\x24\x70\x51\xb4\xfa\xdf\xff\x59\x78\xc1\xc2\x36\x0e\x39\x91\x48\x80\x81\x4c\x5b\xaa\x86\xf6\xf5\xf5\x96\x43\x23\x9a\x0c\x4c\x34\xe4\xc4\xc4\x29\xd7\xbc\x56\x68\xd3\xba\x13\x3f\xde\xf9\xaa\xaa\xdb\x80\x9b\x5f\xcd\xe5\x8d\xdb\xb3\x93\xb7\xaf\x8e\x8e\x4f\x2e\x7e\x3a\x39\x79\x7b\x7e\xf1\x60\x18\xbf\x10\x70\x76\xf2\xfc\xe4\xd7\xb7\x17\xfe\xd3\xf9\xfb\x27\xe7\xef\x5e\xbe\x7b\xff\xee\xe4\xfc\xe2\xfd\x9b\xa7\x27\xcf\x5e\xbe\x39\x79\x7a\x71\x7c\xf4\xf6\xdd\xfb\xb3\x93\xf8\x27\x2d\x07\x2f\x48\xae\x29\x67\x46\x72\xcd\x8b\x51\x85\x76\x39\x49\x50\x9a\x35\xa0\x0a\xed\xf2\x9e\x20\xe0\x21\x21\x74\xd2\xde\xf9\x6d\xff\x60\xe5\xb5\x6f\x9d\x37\x46\xb7\x32\xe1\x12\x97\x3c\x0c\x8f\xf6\xda\xd1\xe0\x0e\xf2\x65\xb2\x0a\x4c\x68\x8d\x9a\x1e\xc1\xc3\x7d\xd0\xfb\x75\xcf\xa3\x7f\x05\x14\x26\xd4\xd3\x2e\x3c\x21\x21\x62\x12\x3c\x08\x62\x4d\xd6\xdc\xaa\x9e\x56\xed\x35\xda\xba\x71\x12\x11\x23\x56\x65\x26\x27\x8e\x02\xc8\xfa\x3e\xb2\xda\x90\x94\x4d\x98\x9f\x54\x01\x1c\xc7\xce\x3f\xdb\x91\x1a\x81\xed\x42\x80\x3d\x8b\x80\xbe\xe6\x79\xf5\xba\xdc\x89\x6d\xc2\xc3\xd0\xb0\xb5\xbc\x62\x61\x13\xec\x17\xab\x44\x3e\x88\x0c\x70\xb3\xf8\x37\x56\x97\xed\x1d\x0c\xdc\x21\x81\x0d\x9e\x69\x8e\xf1\x6b\x7e\xd7\x0c\xa9\x53\x7b\xc7\xc7\x59\x51\x20\xee\x73\x72\x67\xb4\xb3\x26\xb9\x63\xdf\xc6\xe6\xb2\x7e\xd3\x87\x39\xc9\xbd\x20\x37\xce\x9b\xfc\x5f\xe9\x35\x9d\x4b\xcd\xc2\xb8\xf3\xbf\x1b\xf2\xbb\x40\x39\x2c\x6c\xec\x51\x6b\x44\x7d\x83\x2f\x25\x4d\xae\x75\xca\xd2\xc9\xf2\x18\xfa\x6b\x97\x1a\x34\x8c\xbf\x6f\xa6\x43\xc3\x4e\x37\xdb\xf9\x4d\xa0\x05\xe4\xaa\x99\x86\x61\x8e\x71\xd5\xfc\x1d\xac\x34\x62\xb9\x22\x43\xb8\x24\xc3\xf1\xe5\xa3\xa5\x27\xee\x97\xc6\x67\x8c\x2c\xa7\x97\xb3\xea\x6a\xad\xdb\x56\x5b\x70\x42\x14\x43\x94\xa1\x54\xa1\x1b\x0b\x7e\x0c\x0b\xcf\xef\xc2\x10\xc3\x05\x99\xce\xe0\x94\x8c\xc6\xa7\x8f\x6e\xaa\xe8\x96\x83\x01\xbe\x68\x6a\x25\xb4\x4c\x72\x47\x6e\xa6\xa7\x33\x3c\xb9\x8b\x5d\x03\x77\x0e\xaa\xe7\xe4\xc6\xf1\x75\x1a\x02\x99\x85\xd3\x27\x32\xbd\xad\x3c\xe8\x2f\xe0\x44\x43\xac\x5a\x60\xe7\x61\xf8\xc9\x56\x7f\xee\xc2\xbe\x54\x33\xd5\x36\xbe\xfb\x84\xb1\xf1\xda\xef\x7d\x26\x29\xba\x85\x05\x9c\xc0\x05\x9c\xeb\x95\x72\xf2\x98\x5c\x85\x21\x5a\x0d\xc8\xc2\x31\x18\x57\x70\x82\x07\x9f\xe1\x8a\x9c\x0c\x6e\xfd\x00\xfd\xa1\xf5\x6a\x50\xe5\xc2\xe5\x6c\xdc\xf4\x97\x68\x3a\x8f\x58\xc7\x11\x3e\xf0\xd6\xbd\xb0\xa9\x5d\x66\x72\x22\xd8\xfe\x4e\xd1\xd2\x01\xb9\x36\x61\xfc\x72\xc2\x19\xf6\x71\xf4\x13\x68\xdf\xf5\xe0\x2a\xcf\xc7\xf9\x2d\x53\xe9\x12\x25\x9e\x4b\x1a\x62\xbc\x4d\x93\x9c\xea\x5d\xec\xc8\xd2\x83\x60\x6c\x52\x42\x9f\xd2\x53\x36\xe1\xff\x54\x09\xb2\x11\x4f\xd4\x7e\xfb\x8f\xbd\x6f\xa9\xfb\xf2\x28\x88\x73\xc2\xa6\x89\x4b\x1e\xc1\xc1\x08\xcf\xc6\x76\x6d\xce\xe9\x22\xd9\x64\x2a\xd6\x7d\x5b\x90\x41\xa2\x27\x50\x4f\xf6\xa2\x36\x8a\x61\x0b\xb4\x78\xbc\xb1\xdd\xcf\x88\x64\x68\x71\x38\xaa\x6f\xbe\xb7\x27\xd3\x34\xce\x1e\x91\xcd\xa4\x5a\x2b\x62\x9a\x1d\x8c\x66\x93\x6a\x90\x23\x1c\xdb\xa4\x41\x33\x89\x96\x39\x11\xd3\xc5\xc1\xa8\x8a\xac\x50\x55\x90\x6b\x26\x35\x2f\xad\xe2\xd4\xde\xc5\xc7\xfe\x34\xfa\x73\xe5\xf8\x64\x84\x4d\x1b\xd2\x65\x57\xac\xd2\x42\xe5\x70\xcc\x1f\x79\x46\x7c\xcc\x07\x03\x6c\x82\xeb\xd4\x02\x16\x6f\xc8\x2b\xb5\x27\x4e\x59\x42\xc2\xc8\xae\x33\x41\xe5\x97\xd0\x58\x53\xac\x11\xe6\xc9\xfb\x26\x98\xde\x18\x37\x90\x84\xd5\x66\xdd\xbe\xc8\x86\xed\x7a\x25\x19\x87\x8d\x3a\x43\xce\xbe\xf5\xea\xac\xaa\xc8\xa2\xab\x1b\xde\xcc\xf5\xde\x9e\x64\xac\x32\x31\xf1\xe6\xf7\x5d\x0c\x6f\x23\x5a\x95\x19\x2e\xae\x61\x3f\x04\x5e\x5d\xa2\x32\x96\x8f\xf8\x58\x0e\x06\x98\x36\x2e\xb6\xb4\x57\x83\x81\xb2\x97\x5c\xf4\x5a\x17\xc7\x28\xbc\x07\xe0\xb6\x4d\x73\x75\x2d\x28\xae\x02\x9d\xb8\x4a\xc5\x0c\x04\x28\xab\x47\x5b\x33\xb2\x75\x41\x7d\xe2\x94\x81\x7b\xb4\xf7\xd8\x75\x50\xf9\xf6\x2c\xd9\x6c\xbb\x10\x02\x96\xdf\x5b\xbe\x31\x23\x7d\x33\x95\x61\xe8\x53\x9a\xec\xa3\xfb\xda\x3a\xc3\xea\x74\x86\x69\x65\x89\x7c\xc3\x61\xd8\x9d\xee\x7a\xf7\x4c\xc8\x95\xb1\x63\xec\x18\x5f\xc7\x1d\x29\x3e\x7b\x18\xb6\x8e\x43\x7d\x72\xd9\x06\xda\x07\x46\x6f\xbf\xb1\xe2\x46\xa9\x30\x6c\xbc\x44\x2c\xd7\xb5\x4c\xf6\x93\x90\xc2\xb1\xb1\xff\xbc\xac\xc6\x69\x9f\x9a\x1d\x6b\x14\xd3\x7d\xdb\x75\x06\xfa\x4a\x60\x35\x9d\xdd\xba\xf0\x77\x65\x77\xc1\x29\xda\xd9\xed\x22\x8c\x73\xbd\x74\x2a\x9f\xa9\x78\xa3\x5f\x9f\xb6\x6f\x17\xdf\x5b\x42\xfa\x7b\xc7\xda\x79\xc6\xb2\xaf\x16\xd3\xdf\xbb\x96\x5c\x26\x2e\xbf\x56\x4c\x7f\xef\x6a\xcd\x95\x88\x17\xcc\xc2\x8a\x26\xab\xae\x75\x9b\xdb\xc5\xaa\x51\x45\xb4\x66\x6b\x6a\x0a\xbf\x3f\x7b\x75\x4e\x13\x99\x2e\xdf\x26\x32\x59\x75\x79\x64\x76\x4d\xfb\x4e\xa9\x9d\x65\xb5\xf3\xd5\xce\x60\xc2\xe7\x89\x9c\x3f\x91\xe2\x36\xa7\xf2\x84\xdf\xec\x9f\x4d\xa1\xae\x78\x48\xd5\x95\xd5\x45\x11\x9c\xd1\x24\x55\x6f\x8c\x3d\x9f\x16\x8c\xab\x4f\x1a\x7f\xcc\x37\xa9\x46\x91\xf6\xab\xb5\x57\xbf\x37\xcf\x79\xe7\x17\xcd\xa9\x7d\xed\x7e\xa1\xae\x6f\xde\xae\x52\xf3\xc7\xee\x92\xdb\x8c\xc1\x8a\xca\xab\x7a\xfe\x7b\xaa\x29\xdf\x56\xa9\xd2\x72\xec\x7b\x48\x9d\x4e\xf9\xac\x03\xd7\xcb\x89\xfe\x40\x14\x72\x47\xef\x31\xb5\x37\xcf\x56\xe7\xf3\x64\x08\x62\x3f\x32\x1c\x7f\x24\x0c\xd1\xcb\x18\x6a\x92\xbc\xc6\xd9\x3d\x2d\x61\x4e\xe9\xfa\xf5\xff\x58\x9f\x3b\xb2\x29\xa4\x85\x6f\x1c\xff\xdf\x19\x0e\xfd\xac\x28\x9f\xef\xdd\x1d\xef\x65\x3c\x86\x68\x8b\x59\xe3\x78\x6b\x6f\xf1\xed\x76\x55\x9c\x30\x66\x38\x82\x98\x1a\xcb\xe5\x12\x94\x64\x9d\xdb\x4b\xd5\x0a\xcb\x7f\x7e\xcc\xff\x72\x08\x41\x80\xeb\xa4\x8f\xf9\x5f\x1e\x98\xa4\xe6\x15\x26\xf3\x26\xa1\xa7\x5c\x0b\x25\xef\xcf\x5e\x56\x71\xb9\x90\x6a\x54\xf0\xef\x7f\x1d\x1e\x5e\x31\x08\xfe\xd1\xac\xf5\xdf\xbf\x3b\x32\x89\x71\x2b\xf1\xe1\x5f\x0f\xaf\x20\x78\xd0\x4e\x3b\x36\x19\xa1\x9d\x38\xd4\x19\x07\xad\xb4\xef\x9f\x98\x8c\xd3\x76\xe2\x53\x93\x38\x0b\x2c\xc5\x5d\xb2\x6e\xe3\xcc\xca\x79\xcf\x5a\x63\x6a\x6e\x52\x62\xae\xa5\x3e\x47\xfe\xb5\x1c\xc6\xa2\x3d\xac\x83\x28\xc6\x9c\xd4\xec\x15\x6a\x5c\x89\x25\xb4\x38\xb6\x66\x55\x6c\x09\xba\x6b\x34\xe0\x38\x97\x30\xb4\x55\x57\xc1\xfd\xe8\x80\x04\xd3\x59\x10\x1b\xce\x05\x1a\x35\xec\x9c\x51\x9a\x52\x4f\x6d\xcc\xcc\x89\x09\x91\x2d\x5e\x9e\x9f\xfa\x8e\xc4\xe6\x73\xe5\xf0\x6a\x38\xa1\x1f\xcf\x4f\xdf\x44\x96\xf2\xb0\x85\x71\xbc\x02\x61\x05\x9c\x39\x43\x14\x0f\x02\x12\x0c\xcc\xd4\xda\xc8\xcf\x58\xb3\xa1\xc2\xf8\x5e\xa3\x20\x0c\x70\xa9\xd9\xad\xda\xfd\xbb\x3a\xe8\xf9\xb7\x00\x8f\x0f\x46\x4e\xce\xd0\x1d\xf1\x5c\xbf\x09\xbe\x3e\x20\xf6\xb4\xa8\x51\x60\x12\xe0\x49\x30\x09\x62\x5d\xe9\x80\xd7\x51\x32\xea\x05\x76\xc3\x7c\xb8\x07\x17\xd1\x3e\x27\xd3\x59\x79\xc3\x9a\x91\x58\xf3\x7b\x02\xfd\xb6\x8a\xd9\xe1\x6d\x17\x9b\x6c\xc1\xb2\x8c\xce\x63\xe5\x2c\x8b\xe8\x5c\x6f\x0c\x68\x67\xf6\x71\x09\x4b\x68\x35\x65\xcd\x4f\x5a\xb6\xd5\xcd\x62\x53\x35\xf3\xd1\xba\x1b\x49\x46\x87\x81\x77\x6a\xf2\x57\xff\xee\xcc\x63\x35\xc3\xcd\x3a\xda\xf1\x9d\x1c\xab\x46\xc3\xd0\x5d\xdc\x64\xb5\xf8\x77\x8c\xdc\x30\x58\xed\xaf\x6b\x07\x8c\x46\xe5\xcd\x33\x1d\x89\xb7\x8a\x48\x6f\xe0\xaa\xb1\xc3\x15\xeb\xd0\xe7\xf7\x4d\xf0\xd1\xbe\x8a\x2e\x2e\x8e\x8f\xde\x1c\x9f\xbc\xba\xb8\xc0\x8d\x59\xba\x64\x95\xcb\xa2\x96\x65\x9c\x86\xb7\xf6\x5c\xea\x2d\x13\xeb\xce\x7a\x49\x29\xef\x79\x22\xd4\xe0\xe3\x6f\x3b\x2b\x30\x1e\x49\x7f\x52\x85\x1e\xfb\x09\x23\x97\x0c\x2e\x18\xb9\x65\x75\x9f\x4e\x99\x73\x34\x3c\x61\x5a\x42\xab\xfa\xe2\xb7\x78\xc3\xaf\x4a\xc1\xd0\xe8\x47\x6c\xd6\x4b\x56\x14\xfd\x13\x86\xc3\x70\xbf\xd0\x09\x6b\xd4\x04\xbb\x55\x34\x5c\xa3\x4f\x98\x49\xaa\x7d\xa1\x5b\xdf\x9a\x92\x40\x2b\xd7\x4e\x0e\xe7\xef\x3f\xc4\x65\x59\x76\xa0\xf6\x85\xb9\xb9\xc5\x75\x21\x0c\x51\xab\x77\x9d\x96\x43\x0b\x19\x35\x81\x1a\x86\xe8\x82\x91\x66\x8a\x53\x91\x30\xf8\x64\x8c\x42\x3e\x33\xd2\x1f\xc1\x31\x23\x07\xa3\x46\x04\x53\x3d\x59\x9f\x59\x18\x9e\xeb\x7d\x6e\xb3\x9c\xfb\x13\x9c\xc9\x27\x46\xce\x99\xd7\xa4\x7c\x62\x38\x36\xa5\xe1\x93\xcf\x10\x86\x6f\x19\x6a\x5e\x1f\xa0\x5f\x0d\xf6\xfd\xcc\xfc\xc1\xd6\x29\x43\xef\x18\x1e\xeb\xaa\x87\xe3\xda\xb5\xb2\xaa\x63\x4c\xc7\x56\x7e\x3e\x67\xe4\x93\xeb\xeb\x78\x30\x38\x66\x8f\xe8\x18\x9f\x9b\x9e\x4d\x8f\xd9\x2c\x92\x1b\x8e\xf0\xd8\x76\xa0\x51\xbc\x3c\xb7\x8a\x45\x37\xbc\xe6\x72\x67\x0b\x0d\x11\xd2\x86\x89\x9b\x95\x66\x9a\x8b\xf4\x64\x33\xdf\xea\x15\x73\xa1\x57\x4c\x57\xb1\x1d\x08\xc3\x6e\x35\x7a\x65\x5c\x30\x13\xd6\xa3\x63\xb1\x5c\xb4\x16\xcb\xfe\x52\xb9\x60\x3b\x37\x21\x96\xa8\x75\x1f\xe2\x11\x6b\xf8\xcc\x2f\x36\xdc\x9b\xd8\x25\xc6\x6d\x9c\x96\x47\x4d\xac\x24\x37\x2d\x7b\x3d\x5f\xc6\xa9\x15\x6c\x17\xaa\xc2\x4d\x04\xf0\x4a\xcf\xa1\xd9\x8b\x6f\x18\x79\xc5\xe0\xda\xfc\x3d\x33\x7f\x5f\x9b\xbf\x0f\xcc\xdf\xa7\xe6\xef\x4b\xfd\xd7\x46\x89\x61\x64\x21\xa3\x35\x95\x0b\x21\x57\x9a\xf9\x2e\x8a\x6d\x09\xef\x19\x79\xc6\x22\x2e\x6e\x8b\xe2\x19\x8b\x56\xe2\xcb\x1b\xff\x98\xfb\x27\xe1\x1f\xac\x63\xb3\x79\xdb\xe7\xc7\x35\x2e\xd1\x84\x11\x47\x57\x76\x5f\x20\x87\x2d\x9f\x30\xe2\xbf\xd9\x30\x2d\xcc\xba\x7a\xbf\x63\xe9\x75\x87\x51\xd1\xfd\x0a\x9a\x03\x1b\x2d\x60\x3f\x22\x47\x43\xc5\x30\x1a\xcb\xfd\xf8\x59\x46\xcd\x30\x95\x07\xa3\x9d\x90\xc7\x9f\x9c\x79\x95\x69\xd2\xce\x1d\x06\x4d\x53\xab\xd5\x5b\x14\x9f\x59\x51\x9c\x32\xf4\x96\x99\x33\x30\x95\xd1\x38\xb8\xb4\x62\x49\x00\xee\xc1\x1a\x05\xde\xc4\xdb\x12\x12\x79\x75\x13\x4f\x67\xe0\xee\xf5\x8c\x83\xc0\x3f\xe6\xfa\xb3\xe0\xf1\x1b\x06\xc9\x7c\xee\x5d\x48\xe3\x6b\x06\x82\xa7\x34\x3e\x63\x20\x16\x8b\xf8\x35\x03\xeb\xa9\x5a\x65\x78\xe0\x53\x8e\xb2\xcc\x27\xe6\xf1\x53\x06\x74\xc5\x54\xfc\x92\xc1\x25\xe3\xf3\x5d\x79\x77\x0f\xbb\x3b\xdf\xac\xc8\x65\xf6\x11\x0f\xf2\xcd\x7a\x6d\x43\x4c\xe1\x12\xd2\xdb\x79\x47\x04\x8d\xc3\xa0\x84\x74\x39\x67\xf2\xdb\x1a\x30\x59\x3b\xab\xdf\xac\x92\xfc\xba\xc3\xc6\x70\x58\xc2\x52\x2a\xb6\xea\x32\x30\x8b\x86\xc3\xd1\x5f\xde\xbb\x5d\xf7\x8c\x61\x90\x8d\xc3\x46\x6b\x74\xd6\x7c\xff\xf7\xd1\x5f\x46\xf4\xef\xb5\x5d\x52\x18\x22\x79\x40\xd4\x74\x38\x03\xc4\xf5\xc3\x68\xe6\xee\xfa\x3b\x38\x00\x3e\x20\x3a\x33\x86\xa9\x04\x3e\x2b\x61\x9d\x25\x4a\xef\x8c\xc6\xfc\x4a\x9a\xd1\x24\xa7\x7a\xe6\xac\xbd\xa4\x7e\xda\xac\xdb\x9d\xdd\xdb\x00\x07\x4f\x18\x3e\x1c\xd1\xef\xca\x12\xbe\xec\x6a\x26\xef\x61\x2c\x8d\xa0\xc4\x2d\xa7\xc1\x23\x25\xde\xaf\xd7\x54\x1e\x27\x39\x45\xe6\x4a\xa8\x76\x8a\x66\x7b\xcc\x35\x4d\xe0\xaf\x6d\x9f\xf2\x99\xb5\xb1\xfa\x63\x97\x25\x69\x9d\xe6\x7d\xe5\x93\x72\x97\xcb\x11\x0a\xf6\x62\x49\x2d\x5d\x10\x89\x41\xcb\x29\x7f\x6c\x68\xae\x08\x37\xcf\xf9\x5a\xf0\x9c\x12\x01\x4a\x73\xcf\x9f\x99\xc8\xcd\x02\xb0\xb7\xd9\x29\xa1\x99\xdd\x0e\x9f\x32\xe7\x27\x6d\xe3\x68\xb9\x17\x30\x41\xd9\x4c\x8a\x7e\x82\xb9\x0b\xe5\xa6\xb7\x8d\xbd\x03\xb4\x4e\x00\xab\x8a\x71\xb9\xcd\x33\x2c\x58\x46\xdf\x54\x55\xf8\x37\xc8\x18\xa7\x6f\x1a\xb9\xeb\x77\x48\x45\xb6\x59\xf1\xe6\xc7\x66\x0a\xe4\x2a\x49\xaf\x63\x7f\x0b\x41\x7a\xed\xe7\xdc\xe5\xd4\xcf\xa0\xc1\xe2\x13\xe6\xb4\x2c\x41\x95\xa8\xde\x05\x0a\x57\x80\x2d\xe1\x03\x23\xd3\xc0\x38\x87\x07\xc9\x46\x2d\x85\x64\x5f\xdc\xdd\x98\x41\x6a\xe3\x48\x1e\x58\x1c\xd3\x48\xd0\x84\x21\x80\x80\xaa\xe4\x4a\xff\x7c\x5e\x33\x49\xf3\x00\x82\x85\x14\xab\x00\x82\xa5\xc8\x55\x00\x01\x5b\x1c\xac\xc4\xdc\xd8\xf2\x1f\xe4\x8c\xa7\xd4\xa6\x6d\xf8\x5e\x6a\x96\xe4\xaa\xca\xab\xdf\xbd\x87\x02\x04\xab\xe4\xf3\xc1\x42\xc8\xdb\x44\xce\x75\x0b\x6b\x29\x3e\xdf\x1d\xec\x76\xd4\xc4\x02\x35\xb1\x1e\x25\x55\xf2\xee\xc0\x5c\x5b\x12\x40\xb0\xc9\xa9\x3c\x48\xae\x28\x57\xc1\x0c\x5e\x30\x62\xc4\x9e\x7d\xad\x0d\xc2\x93\x5d\x3b\x1a\xa0\xe4\x10\xad\x72\x46\x0b\x25\xd9\x9c\x72\x85\x7d\x9c\x8c\x5a\xc5\xa2\x6b\x3f\xba\x32\x8e\xa1\x72\xd7\x77\xdb\x45\x95\x43\x41\x12\x34\x02\x60\x55\x28\x83\xd7\x16\x73\xe6\x2e\x23\xcd\xb3\x1d\x29\x25\xd9\xe5\x46\x51\x14\x2c\x25\x5d\x04\xc0\xad\xb1\xaa\x7e\xc1\x70\x6f\x96\xad\x7e\x8a\x6d\x36\xf0\x61\x0b\x62\x59\x47\x30\xa8\x1f\x6b\xd9\x37\xb6\x62\xbb\xc6\xfb\x7a\xb2\x74\x71\x91\x6b\xe6\x55\x8b\xaf\xb1\x6e\x4b\x3f\x4c\xfc\x43\x53\x09\x30\xa9\x4b\x26\xb9\xce\xab\x7f\x26\xf6\xa7\x91\xef\xdf\x5a\x0d\x98\x3d\x64\x1b\x31\x9b\x48\xa3\x5b\xdd\x47\x21\x15\xac\x13\xb5\xb4\x81\x0f\x0f\x03\x42\x88\x8c\x7c\x42\x7d\xbe\x34\xa9\x13\x75\xae\x41\xfd\x5a\x56\x02\x22\xe1\xfe\x32\x65\xbf\x7a\x1c\xe4\x9a\x82\x92\x25\xbe\x6e\x19\x18\x59\x98\xe2\x89\xfe\x12\xd7\x81\xa8\x2b\x70\x19\xb9\xd4\xbf\x84\xa1\xed\xbe\x49\xd4\x0f\x65\x89\xf0\x3e\x76\xed\x0f\x4b\xf8\xf5\x6b\x0b\x6d\x7b\x2b\x59\x4b\xfd\x5a\xc7\x7e\x73\x71\x88\x34\xdf\x9a\xb8\x98\x75\x46\xea\xee\xd0\xa1\x68\x06\xc0\xb4\xe1\x6e\xe8\x96\x38\x0c\x5d\x19\xbf\x1d\x49\x30\xf0\x98\x1e\x49\x1c\x29\xf1\xfc\xf5\x3b\x2f\xff\xbb\xc2\xd5\xd1\x72\x5d\x58\xc3\x55\x97\x6c\xe7\x10\x8d\x1c\xce\x9d\x24\x18\x08\xe7\xd5\xc9\xea\x6f\x39\x4d\x37\x92\x06\x18\xea\xdd\x20\xc4\x35\xa3\x24\x71\x8a\x82\x71\x4f\x93\x58\x49\x93\x79\x07\x15\xdd\x29\x14\xad\x0c\x5b\xdb\xb4\xba\x44\xff\x2c\xc6\x1f\x3f\xe6\x7f\xc1\x28\x18\xa8\x41\x80\x09\x9a\xfe\x73\x3c\xfb\x0b\x0e\x6a\x8b\x6b\x3a\x99\xd3\x7d\x70\x4d\xbf\x9b\xe1\xd8\xd9\xaa\x18\x2e\x25\xde\x13\xd8\xcd\xbc\x20\x05\x41\x00\x1a\x66\x26\x6e\x09\x3e\xf8\xdf\x3f\xfc\x95\x7e\x8f\xcb\x32\xde\x9d\x37\xbc\xdd\x1d\x47\xeb\x28\x65\xbf\x1d\xbc\x2d\x4b\xf8\xa9\x4b\x90\xbe\x27\x9c\x5e\xeb\xaa\xda\x79\xa2\x12\x10\x7a\xe9\xd1\x64\x4e\x65\x3e\x36\xd3\xe3\x8f\x3a\xcc\x14\x3a\x2a\x2b\xa6\x81\x8b\xff\x7b\xf0\x4e\xa3\x69\x7b\x63\x86\xe5\x6d\x7f\x7d\xfd\xea\x85\x52\xeb\x33\x4b\x2a\xcd\x2d\x05\x91\xc6\xa5\x7e\xe5\xd9\x37\x83\xd8\xb8\x0d\x86\x1c\x40\xea\x53\xd7\x49\x9e\xdf\x0a\x39\xd7\xa9\x63\x11\x1d\x35\x71\x30\x09\x9e\x24\x39\x4b\x7b\xc1\xe0\x52\x89\x04\x25\x83\x20\x0e\x06\xa9\x95\xc4\xad\xb3\x31\xda\x10\x15\x5d\x26\x39\x7d\x7f\xf6\x0a\x72\xa2\xa2\x8d\xcc\x60\x13\x86\xfd\xc3\x7f\xa2\x69\x72\xf0\x65\xa6\xff\x7c\x9c\x7f\x1c\x7c\x3c\xf8\x18\xcd\xfe\x12\xe3\xc9\xc7\xc3\x8f\x87\x1e\xe9\xe6\xb8\xdb\x00\x86\x4e\x1a\x0a\xca\x8f\x87\x03\x8b\xd6\x06\x1a\x47\xd0\x26\xd2\x3a\x1c\x58\x74\xa4\x4a\xb4\x81\x1c\xc7\xb9\x8d\xe7\x15\x89\x35\xe5\x48\x45\xd6\xba\xad\xcd\xbe\xc0\x92\xa1\x05\x18\x6f\xcd\x64\x95\x57\x0f\xe7\x54\xda\x88\x9c\x36\x60\x2d\xb0\x48\x59\xb1\x8d\x28\xff\x04\xec\x4f\xe2\xbc\xe8\xa6\xc3\xf0\xaf\x7a\xef\x44\x26\xdf\xb9\x75\xb1\x42\xe6\x3c\xde\x38\x5c\x6d\xf2\xa2\x60\x15\x1f\xf3\xfe\xec\x55\x18\x0e\x5d\xfe\x2a\xa9\xd6\x99\xd9\xc8\x35\x18\xd7\x56\x95\x2e\x9a\x19\x31\x51\x5a\xb3\xec\xcc\x95\x7a\x61\x57\x4f\xc0\x78\x8f\x4d\x8c\xe9\x64\xe7\x77\x84\x61\x63\x6e\x0b\x9d\xa0\x06\x27\x58\x5d\xff\xff\x91\x07\x3b\xb7\x7e\xb1\x05\x4a\x9b\x4a\xbc\x38\xc0\x20\x34\x16\x54\x92\xad\x90\xbd\x4f\x5b\x49\x34\x84\x14\x6b\x54\xf4\x4a\xdc\x56\x60\x4e\xf6\xb3\xa5\x83\x11\xc6\x60\xaf\x1d\xdd\x18\x63\xe1\x0f\xac\xaa\x5b\xe0\xc7\x64\xe8\x6f\x6e\xd1\x5f\x49\x90\x53\x75\x60\x71\x86\x26\x20\x62\x62\x0a\x4d\xf4\x9f\x78\x3a\xc3\x5e\xef\x30\x4d\x66\x38\xae\xbe\x0c\x02\xe8\x05\x83\x24\x4e\x4c\xec\xaf\x0d\x8e\x37\x16\x41\xc0\x82\xd8\x1b\x8e\x6b\x2e\xf2\x9d\xb9\x70\x30\x50\xf4\xb3\x39\x7d\x69\x7f\x98\xd4\x53\x12\xd7\x8f\xef\xe8\x67\x05\x76\x1e\x63\x3f\xa1\xee\x5d\x7f\xaa\xd2\x4c\x3e\xb7\xa5\xe3\xbc\xe2\xe4\xc0\x31\xb3\x31\x2b\x77\x8d\x0e\x1b\xf6\x9c\xf6\x9a\xe5\x9b\x24\x63\xf3\x44\x99\x5b\xaa\x36\xf9\xb8\xcf\x8b\x82\x23\xe9\xea\xc7\x13\x85\x24\x8e\x29\xfa\x83\xa1\xc0\x6d\xfb\xde\x22\x61\x19\x9d\xf7\x6e\x99\x5a\xf6\x6c\x36\x13\x48\xa2\xa7\xe9\xaa\xeb\xaa\xaf\xdd\xd8\xf7\x99\xe8\x21\xa6\x28\x48\x8c\x4b\x63\x45\xb7\xf0\x86\x58\x65\x69\x96\x7b\x72\x29\x64\xeb\x5e\x45\xa6\xd9\x9a\x56\xb3\x26\x8b\xf5\x4c\x0e\x4e\x8e\x4f\xdf\xbc\x39\x7a\x62\x9c\x19\x02\xa3\x0a\x66\x5e\x25\xaa\x6b\x33\x4e\x33\x2d\xfe\xdc\xd4\xf4\x86\xaa\x5b\x21\xaf\x2d\x17\x6b\xdc\xb5\x75\xef\xea\xd2\xb6\xb0\xdf\x8f\x7b\xb6\x93\x81\xfb\xd2\x13\x8b\x5e\x30\xa8\xb6\xeb\x20\x58\xe5\x3d\xfa\x39\xa5\x74\x4e\xe7\xc1\xb8\x4a\x37\xad\xb8\xa8\x51\xc6\xb0\xbf\xf3\x0b\x06\xd3\x37\xfa\xb5\x51\x95\x70\x2f\x3f\xe0\x8d\x52\x7e\x65\xb0\x26\x48\x45\xe6\x0e\x2b\x49\x35\xc7\xc9\x92\x2c\x2f\x8a\x17\x0c\x2d\xb0\x09\x5a\xf4\x39\x97\x8b\x63\xb3\xca\xb5\x00\x31\xc9\x0c\xea\x40\xbb\xe9\xd8\x19\x46\x8f\xd7\x61\x88\xc4\xd4\x7e\xb6\xdb\x5a\x7f\x9e\x91\xb5\x51\xd5\xeb\x3d\xe3\x26\xc6\x7e\x34\x28\x21\x0c\x1b\xdb\x5d\xec\x39\x32\x7a\xab\x0e\x1e\x86\x6d\x51\xc0\x09\x7f\x8d\x6d\x3d\xa9\xa8\x11\x9d\xe9\xd5\xbe\xd3\x1a\x72\x77\xf7\x59\xc0\x54\xe7\xd3\xfb\x00\xc0\xc5\xff\x47\xdb\xb7\x37\xb7\x6d\x2b\x8b\xff\xff\xfb\x14\x32\xa6\xe1\x10\x47\xb0\x2c\xcb\x8e\xeb\x50\x46\x38\xae\xe3\x64\x7c\x4e\xf3\x68\x93\xfe\x7a\x5a\x8d\x26\x03\x4b\xb0\x8d\x44\x22\x55\x10\x92\xe3\x2b\xf1\xbb\xdf\xc1\xe2\x41\xf0\x61\xa7\xf7\xcc\xbd\xff\xd8\x04\x08\x02\x2b\x3c\x76\x17\xfb\xdc\xc5\xa2\x59\x49\xf7\xf6\xda\x0d\x49\xfd\x5c\x62\xf0\x1a\xaf\x55\x35\x4e\x6e\x25\x36\xd3\xf3\xf1\xa5\xc8\xb3\xf6\xe9\xb6\x26\xca\xbc\x4b\xd2\xaa\x06\x79\xf6\x2a\xbf\xcf\x16\x39\x9b\x7f\x90\xf9\xad\xe4\x45\x11\x45\xa2\x23\xfc\xd6\xca\xbe\x45\xa4\xeb\x9b\x4e\xa1\xac\x6e\xf8\xdb\xaa\xd9\xf5\x1a\x6a\xaa\xa7\xef\x8e\x55\xef\x02\x12\x55\xb3\x6c\xc6\x17\x9f\xf2\xaf\x3c\x03\x6b\x8c\xaa\xe8\xdc\xd2\x3a\xbc\xf5\xc0\x46\x6c\x00\x07\x38\xd6\x1b\x5e\x55\xe7\x15\x07\x61\x70\x33\x13\x9f\x1e\xf2\xfa\xeb\x35\xcf\xe6\xb1\x71\x88\x23\xbf\x08\xba\xad\xb3\x25\x09\x62\xab\xd5\x42\x18\x4e\xfd\xe0\xdb\xfe\xfd\xfd\xbd\xbe\xe7\x2d\xf7\xd7\x72\x61\x18\xde\x39\x0a\x84\x89\xff\xb4\x22\xcb\xbd\xe6\x86\xc1\xb0\x67\x6b\x55\x4d\x06\xc8\x48\x22\x1a\x95\xd4\xfa\xab\xfd\x2e\xc8\x1f\x82\x6e\xd9\x9c\xad\x14\x97\x49\xdc\xa9\x2d\xaf\xf3\x4d\x41\xac\xa8\x37\x22\x8a\xbc\x25\x83\x95\x2d\x81\x31\xc3\xa3\x46\x56\x46\x46\xf4\x46\xe8\x33\x1d\xff\x2e\xe8\xbf\x04\x26\xbf\x0b\x4c\x94\x64\x59\xa1\x27\xc0\x0e\x92\x4c\x3a\x19\x9e\xff\xd2\xa8\x06\x9d\xcf\x66\x7c\xa5\x10\x26\xa6\x58\xfb\x65\xf6\x4c\x79\xd6\x50\xe1\xdd\xae\xd2\x21\x7a\x7b\x1b\x5b\xd9\x2c\x1b\x43\x8b\xaa\xfc\x5a\x2c\x78\xd0\x7a\x91\x5f\x83\x42\x31\x69\xf6\x68\x8d\x60\x52\x67\xf7\x92\x74\x6a\x44\x15\x4e\xe3\x7f\x02\xc8\xdf\x5d\xfc\xb1\xbe\xfc\x15\x5c\xd1\xb5\xba\xd9\x3f\x05\xb7\xc4\x4a\x91\xda\x54\x60\x76\xf5\xaa\x0f\x74\xab\x93\xb6\x92\x33\x51\xe5\x34\x9c\x7c\x4b\xca\x27\x0d\xee\xa6\x6d\x93\x03\x08\xc6\xaa\x4d\x57\x7a\x94\x4a\x5a\x1f\x84\x1a\x82\xde\x0d\xd5\x48\x86\xa4\x8e\xaa\x13\xf4\xef\x8f\xbf\xbe\xde\xff\xf4\xfe\x5f\x97\xef\x10\xa9\xe3\xe9\x04\xfd\x7b\x3f\x7c\xbb\x64\xdf\xec\x2a\xff\x6c\x1c\x42\xf6\x21\x30\x57\x40\xf9\x3b\xb5\xf7\x2f\xe9\x68\x38\x8c\x22\x75\x76\x34\x1c\x96\xe5\xf8\x0f\xe1\xee\x0f\x74\x3b\xcb\x97\xcb\x3c\x83\xe4\x02\x7c\xa5\x92\xd6\xdc\x91\x9e\x66\x78\x0e\x56\x0b\x26\x32\xd2\xfb\xc7\xc1\x3f\x50\x59\x86\x0a\xe7\x09\x32\x28\xde\x64\x02\x40\xc4\xa4\xb8\x99\xd6\xf9\xc2\x6a\xc0\x89\x9a\xd2\x6d\x69\x51\x7e\xd5\xc7\xca\x88\x8a\x56\x6b\xf8\xab\x67\xef\xe9\x2e\x56\x62\x00\x86\x28\xf1\x2f\xc6\x2f\x58\x1f\xe1\x3f\x05\xfd\x23\x50\xf2\xc1\x9e\xdf\x3e\x89\xe9\x00\xab\x5f\xdd\xd8\xa3\xc6\xe7\xb1\xc1\x05\x9c\x75\x86\x0c\x60\x90\x7b\xd3\xcf\x9c\x7f\x02\xbd\x84\xb9\x9a\xd1\xa5\xb0\xc1\x44\xab\x86\x7a\xc7\x36\x0e\x75\xd8\x8d\xff\x25\xbe\x6a\x60\x96\xc4\x76\xeb\x7f\xb4\xbd\x9d\x4c\xeb\xf5\xf8\xfb\x6b\x41\xba\x66\x97\x20\x33\x4a\x6d\x9a\xb9\x8f\x02\x5a\x8d\xcb\xc1\x93\x4b\x5f\x10\x0d\x6a\xdc\xed\xfe\x14\xee\x19\xc7\x6d\xa7\x6e\xde\x98\x30\xee\x27\xc6\x3c\x11\xde\x3d\x31\xe6\xc0\x41\xea\xf4\xce\xa4\x45\xb7\x22\xe6\x9a\x0b\xb0\xbd\x46\x11\xf7\x14\x5a\x73\x65\xbe\x10\x0c\x57\xab\x22\x41\xf9\x29\x00\x30\x26\x55\xd8\x7c\xc0\x2b\x36\x72\x8e\x64\x0d\xe1\x38\xa7\xa0\x92\xb2\x8e\x72\xfa\x9a\x44\x27\x68\x2d\x17\x88\x20\xb3\x54\x30\xd9\x1a\xe1\x21\x82\x34\x08\x68\x4a\x72\x3a\x41\x76\x74\x2b\x68\x75\xc2\x4c\x34\x25\x82\x4e\x90\xbd\x1a\x23\x62\x7b\x6a\x6e\x9d\x7a\x95\x81\xd9\x8f\x53\x5d\x4a\x75\x33\x83\x6e\x10\x41\x0d\x16\x49\x0f\x6c\xd6\x0f\x04\xa5\x15\x97\x83\x08\xaa\x63\x26\x5b\x51\xa1\x23\x44\x50\x93\x99\x80\xaa\x26\x2f\x63\x04\xb6\x35\x4c\x85\x08\xaa\x23\x2a\xd3\xe6\x57\x3e\x17\x92\xcf\x94\x2e\xde\x29\xb5\x02\x41\xaa\x7d\x2e\x5c\x21\x38\xb3\x88\xa0\x22\x9f\x7d\xe5\xea\x03\x53\x77\xa8\x66\x3c\x93\x35\x42\x13\xf8\xa0\x8e\xc6\xf6\x42\x6a\xbc\xa1\x9f\x71\x03\xfb\x84\x0c\x6e\x66\x4d\x66\x2c\x49\xe1\x13\x08\xc4\x32\xc9\x00\xe3\x78\x53\xb2\x58\x4d\xb2\x29\xc4\x89\x71\x6c\x36\x0c\x93\x4d\x4d\x53\xfd\x54\xa7\x4c\x4f\x74\x13\xf4\xa0\xc0\xd2\x2c\x86\x76\x4e\x49\x12\x02\x2a\xea\x80\x3e\x36\xf2\x93\xfd\x8d\x8d\x84\x27\x73\xb7\xe1\x1c\x07\xe9\xfb\x67\xb5\x84\x45\xfc\xa9\xb4\xe9\x60\xae\xc3\xfc\x6d\x5c\x85\xd1\x0e\x02\x90\x67\xff\x0b\x20\x13\x19\x30\x80\x19\xf3\x92\x3a\x6b\xf1\x5f\x38\xb5\xb5\xc8\x14\x97\x9a\x88\xe5\x9a\xae\xb9\xab\x73\xc6\xef\x7b\x0f\x82\xf8\xcb\xb9\x29\x97\x65\xc6\x6a\xfe\xfb\x46\x69\x14\xfe\xce\x36\xa9\x4f\x63\x45\xc3\x64\x0a\xfa\xf4\xe3\xc1\x5a\x2e\x82\xda\xe1\x34\x81\x24\x9b\xdb\x92\xc4\x8a\x4a\x16\xd7\x40\x25\x0a\x63\x8b\xc7\x53\x87\xd0\x69\x20\x77\x0a\x6e\x4e\x49\xed\xc3\xf6\x47\x1d\x6f\x9b\x1d\xb8\xb6\x40\x0c\x6c\x08\xa7\x09\x67\x96\x51\x9f\x12\x49\x9b\x09\x42\x14\x06\x93\x8a\xd6\x74\xba\x09\xea\x4e\x13\xcf\x07\xeb\xac\xb8\x13\x37\x2a\x56\x03\x6f\x44\x45\x5c\xb8\x33\x3e\xc7\x3e\x2c\x6a\xa3\x4f\x8b\x8e\x1f\xe9\xd4\x88\xbe\x1f\xed\x71\xec\x52\xc4\x8e\xb1\xa4\xd2\x90\x21\x3e\x30\x70\x68\xb2\x63\x9f\xfc\xae\x94\x25\xa9\xad\xf9\x2d\x57\xbf\xc9\x4e\x39\x6c\xe7\xba\x91\x3b\x4d\xda\xd7\x72\xf1\xa4\x2c\xb0\xad\x21\xf9\x1b\xcc\x12\x41\x36\xb1\x68\x93\xe7\x09\xe1\xd5\xd8\xab\x2e\x13\x0e\x4d\xd9\xec\xfa\xc4\x9e\x9b\x90\xb0\x05\xb7\x66\x07\x24\x8a\xac\xe5\x02\x8c\x3c\xff\x13\xd6\xeb\x29\x30\x82\xf0\x71\xdd\x80\x64\x5d\x80\x10\x10\xad\xc9\xd0\x2b\x26\x67\x34\x63\xd5\x39\x17\xd5\x39\x77\x41\xc0\x55\x29\x58\xc7\x4d\xaa\xad\xbf\x45\x17\x40\x2f\x50\x3f\x0e\xbf\x4f\x51\xd2\x43\xfd\xb0\x26\x81\xe5\xa9\x75\x5a\xd9\xb0\xb9\xb0\x9b\x8c\x51\x11\xc0\x35\x63\xee\x26\xe0\x2f\xeb\x7b\xc1\x5d\xc0\xdb\x19\x04\xde\xcc\xfc\x1b\x9f\xad\x55\x2e\x7b\xcb\x75\x01\x01\xea\x98\x57\x6d\x0f\x6c\x70\x3a\xde\x8e\x53\xdc\x56\x04\xe8\x43\x01\x59\xf3\xc7\x41\x28\x29\xd5\x40\xce\x36\x7c\xe4\x6e\x17\xbb\x47\xe8\x8d\x19\xae\xc9\x57\x9a\xd4\x63\xb3\xda\x7c\x36\x98\xe1\x86\xa4\xda\xae\x2e\x7c\x6c\x7e\x66\x50\x53\x92\x19\xb3\x91\x40\x5a\x41\x13\xec\xf9\xdb\x2a\x4d\xbe\x01\xfd\xce\x58\x9d\x5f\x54\x14\xcc\x8f\x0d\x95\x4f\x94\x4d\xd8\xb5\x66\x74\x16\x4c\x7c\xc1\xea\x36\x37\x39\x33\x31\xa3\x84\x88\xf3\x0e\x54\x4e\x78\x48\x8e\x8c\xd5\x74\x2c\x49\xd8\x94\x70\x38\x09\xfe\x1d\xd7\x94\x06\xdc\xc7\x18\x2d\x58\xfc\xa7\xc0\xe3\x1b\x36\x00\xa3\x01\x9a\x33\x72\xc3\xac\x4e\xb7\x0b\x65\x14\x2c\x96\x2c\xbe\x61\x35\x4c\x5f\xea\x6f\xcc\x5e\xa4\x8c\x55\x05\x60\x64\xe8\x1a\x6a\x44\x61\x1b\xdc\x0a\x5d\x64\x8b\x45\x57\xf7\x0e\x4f\x3b\xbf\x88\x1b\x36\x28\x56\x92\xb3\xf9\xf7\x32\x68\x35\xbc\xbf\x40\x50\xca\x5d\x4a\xb4\x05\xa3\x37\x8c\xac\xf4\xdf\xf1\xc2\x83\x4e\x57\x0c\xde\xce\x19\x5d\x30\x72\xc7\xda\x32\x8c\xba\x1f\x13\xd9\x30\x5a\x4b\x3e\x4e\x1e\x58\x57\x7e\x77\x05\xf1\x54\xe9\x70\xcc\xcf\x46\xcf\x4f\xc6\xfd\x3e\xc7\xca\xea\x0b\x9f\xa1\x7e\x1c\xf3\xb3\xc3\x93\x14\x0d\x4d\x78\xc2\xc0\x5c\xfa\xf0\x04\x74\x05\x81\x4a\x26\x0c\xcd\x87\xc9\xb2\xc9\x97\x57\xd6\x55\x70\x4b\x80\x9b\xab\xf9\x0d\x3e\x23\xa0\x59\x48\x98\x0e\x9c\x00\xe7\x3e\x1c\x67\x67\xde\xd7\xab\xdf\xcf\xf0\xe3\x2c\x49\x40\x50\x6e\x19\xdd\x82\xc1\xdb\xa7\xdc\x3a\xda\x2c\x19\x61\x45\x21\x6e\x9b\x11\x02\xed\x37\x0d\xfe\x4a\xf2\xf9\x7a\x56\x3b\xe3\x21\x62\x9f\x48\xcd\x1e\xc9\x29\x51\x25\x26\xca\x24\xe7\xbb\x16\x19\xef\xec\x3a\x4c\xf2\xcc\x6d\x22\x3f\xd6\x88\x69\x16\x64\xa2\xd8\xe6\xd7\x5f\x92\x6d\x9e\xa8\x12\x92\x3c\x27\x28\x47\xa5\xe6\x08\x26\x53\x3b\x19\x3c\x9c\x8c\x20\xbc\xb0\xe6\x7c\x05\xcd\x07\xf9\xf5\x97\x09\x84\x45\x5c\x4d\x09\xab\xf1\x8d\xc0\x48\x0e\xc7\xb3\x33\x56\x75\x31\xf3\xa1\xc2\x26\xb3\x29\x29\xa8\x98\xac\xa7\xe3\x96\xb3\x44\xe1\xbd\xcd\x0a\xeb\x67\x2d\x3d\x87\x59\x40\x1e\x78\x6b\xaa\xad\x81\x17\x06\xf0\x75\xe9\x32\x57\xc6\x45\x95\x4d\xb1\xf9\xab\xc7\xca\x5b\xdf\x8d\x7d\x38\xb0\xc1\x2a\x5f\xc5\x1a\x87\x70\xf8\x35\xdc\xfc\x1a\x48\xa6\xc3\x62\x89\x83\xf8\x90\x7a\x5a\x72\x3a\x1c\xe7\x95\xb7\x65\xbf\x9f\x57\x7b\x44\x82\x76\x2a\x33\x60\xe8\x82\xe6\x4e\x82\x3e\x69\x56\x96\x25\x44\x82\x2f\x89\xd1\x4b\xb7\x3c\x38\x9c\x86\xb7\x52\x63\xf6\x0f\x6e\x09\xea\x99\xec\x3e\x48\x14\xf9\xfe\xe9\xe9\xf3\x17\xfb\x87\x60\x1c\xe1\x0c\x48\xb3\xc0\x8f\x61\x32\xdc\x7f\xc1\xf6\x6f\xa6\xdb\x51\x79\x70\x2b\xc8\x3a\xe3\xc5\x8c\xad\x78\xcd\xf6\xb8\x43\x29\x1e\x46\xc6\xf6\x51\x3a\x4a\x62\xe4\x6f\x2d\x30\xad\x57\xad\x4f\x1a\x54\x77\x8a\xa0\xa0\x4c\x46\x05\xe4\x2a\x0d\x39\xe7\x8c\x9a\xfc\xa5\x8f\x4a\x42\x15\xf6\x79\xbb\x6a\xae\x99\x59\x15\x12\x0a\x93\xc7\x66\xc1\xfc\xd0\x38\x0b\xbd\x3a\xd6\x7e\x3a\x8e\x61\x3a\x3a\xee\x30\xe8\xd9\xe8\xe4\xd9\xe8\x08\xf5\x41\x6e\x77\x95\x69\xfe\xd5\xb8\x25\x8c\x30\x39\x3c\xc1\x7d\xf4\xec\xe8\x27\xa4\x09\x6e\xb5\xff\x11\x22\x82\x0e\xc7\xe2\x2c\xab\x36\x82\xb7\xd8\xc8\xc2\xa0\x32\x02\x8f\x8f\x9f\xeb\x4b\xd2\x6e\x77\x7c\x62\xfe\xbf\xb0\xe5\xc3\x91\xad\x60\x2f\xe9\xf1\x69\x14\xb1\x33\xfa\xfc\x47\x28\x9d\x3c\x87\xd2\x0b\x13\xe2\xe6\xc5\x8f\x50\x3a\x1c\x8d\xd2\xbc\x6f\x7b\x87\x9e\x13\x76\x76\x38\x3a\xd5\x95\x0f\x6c\xc2\xa6\x09\x3b\x1b\x0d\x8f\x5d\xf9\xf0\xc5\x68\xc7\x5e\xbe\x3c\x99\xf6\x75\x61\x74\xba\x3b\x39\x8a\xa0\x8d\x8d\x87\xc3\x5e\xd2\xe7\x3f\x1e\x1d\x1f\xdb\xe6\xa3\xd1\xb1\x6e\x7e\x38\xf2\xed\xf5\xc7\xd1\xc9\x51\xe3\xfb\x58\xf4\xe9\x21\x61\x14\x02\xdc\xf4\xe3\xf8\x70\x38\x3a\x8a\x18\x3e\x3b\x3b\x1c\xee\xe0\xb9\xf1\xeb\x31\xb1\xfd\x1f\x0f\xa1\xff\xd3\xb0\xff\xc3\x51\x38\x40\xe7\x80\xfe\x2c\xe7\x4f\x7a\xac\x1a\xf7\x83\xb6\x5b\x2f\x8e\xa2\xbd\xbd\xb8\xe1\xb5\xfa\x3f\x76\x47\x05\x37\x42\x63\x76\xf2\x94\xf3\xa2\x69\xf1\x77\x24\xfe\x1a\x8d\x2f\xd9\xc3\x35\x7f\x5b\xcb\xe4\x67\x1d\x95\x37\x0c\x32\x1d\x55\x14\xcc\xa3\x63\x55\x79\x79\xd3\x43\x6c\x11\x9e\x95\x20\x04\x14\xc9\x1d\x08\x33\x4e\xd3\xed\x2d\x88\xb3\x2c\x6b\x6e\xf1\xad\xe9\x93\x0e\x1c\x8e\x5d\x6a\x22\x89\x7d\xca\xb3\x3d\xde\x31\xe3\xce\x41\x6a\xc2\x89\x9c\x8e\x63\x50\x02\xd5\x88\xef\x6e\x97\x69\x06\x26\xbf\xff\xe0\xe6\xa6\xc0\xbb\xdd\xde\x1d\x33\x33\xd3\x4a\x6e\x27\x41\x37\xa2\x09\x20\xdd\x1b\xfa\xdd\xc0\xcb\xef\x03\xe0\x49\xa1\x74\xb1\x9f\xbd\x59\x17\xfc\xa4\x28\xda\x03\x0c\x1f\x45\x71\x4e\x97\x0c\xfc\xe4\x30\xb1\xaf\xe0\x4d\x1a\xcb\x8e\x6b\xa9\xb4\xc6\x08\x0e\x64\xc8\x43\x66\x7d\x9d\xf8\x24\x9f\x8e\x45\x87\xa3\xa0\x88\x22\xf9\x88\xff\x60\x3e\xa5\x2a\x16\xb0\x28\x89\x9f\x65\x13\x25\x02\x5e\x4a\x88\x42\xee\x13\x1d\x03\x75\x95\x1d\x5c\x03\xaf\x32\x6e\x6a\xe2\xe3\x7e\x6b\x08\xa6\x1b\x0d\x02\xbc\x08\x18\x50\x57\x08\x90\xb7\xe6\xb8\x2c\xc9\x35\x7b\x3c\xae\xe1\x3d\xa3\xd6\xa1\xee\x92\xd1\xed\xaf\xaf\x2f\x0e\x7f\x3c\x3a\x4d\x90\x7d\x40\xe4\xd7\xd7\x17\x47\x2f\x4e\x4f\xa0\x46\x3f\xa0\x92\x7c\x66\xf4\x96\x0d\x0c\x2f\x14\x6f\x5d\x74\x86\x4b\x36\xb0\x4d\x08\x98\xf5\x2b\xc5\x65\x91\xf8\x1e\x3b\xb8\xd9\x6b\xe6\x1c\xe5\xef\x19\xb8\xf3\x95\x7e\xb4\x8e\xd6\x9e\x58\x94\x65\x49\x2e\x19\x26\xef\xbf\xcf\xbf\x7e\x64\x74\x7b\x2d\xd9\xec\x2b\x57\xdd\xda\x93\x3e\x9a\x4c\x11\x70\x54\x4b\x96\x80\xdc\x9c\x21\x22\xb2\xb9\x98\xd5\xb2\xbc\x86\xee\x65\x7d\x34\x41\x7d\x0e\xc9\x1b\x89\xe4\x2b\xce\x54\x67\xcf\x65\x49\xbe\x34\xb9\xe7\x6f\xac\x99\x7e\x11\x76\x06\xb9\x68\xf2\xb9\xdf\x98\x0b\xdd\x46\xbe\xe8\xad\x9b\xf2\x04\x32\x63\x93\x4f\x8c\x82\xe9\x5a\x88\x83\xbc\xd7\x1f\xf9\xc0\xe8\x67\xcf\xec\x93\x73\xcd\xc1\xce\xe7\xbf\xac\xb9\x7c\xf8\x20\xf9\x8d\xf8\x96\xec\x1d\x12\x38\xa6\xaf\x72\x55\xe8\x82\x55\x9e\x25\xc8\x68\xcf\x5c\xf9\x23\xcf\x94\xc8\xf8\x42\x37\x99\xf3\x85\x58\x0a\xc5\x65\x82\x22\xe4\x58\x07\x70\x33\xd0\x4f\x32\xb9\x65\x03\xf3\x68\x6b\xfe\x3f\x64\xc8\x7d\x9f\x2d\x1e\xf4\xd7\x66\x27\x24\x1f\x58\xb5\x27\x92\xcf\x6c\x50\x6d\x90\xc9\x07\x36\xf5\x13\xbe\x77\x48\x0a\x27\x70\x79\xc4\x85\xbd\xf7\x89\x55\xd8\xb6\xf8\x2a\x56\xef\xd6\x8b\x85\xf9\x52\x49\x31\x53\xba\x08\x91\xf3\x45\x76\x0b\x91\xd7\x7f\xae\xe6\xd6\xa1\x49\x13\x48\xa5\x9e\x0c\xd2\x1c\xb2\x3b\xb2\xa1\xfc\x91\x38\x6b\xb3\x74\x43\x67\xb1\x24\x1b\x9c\x6c\x42\xaf\x71\x0d\x68\xba\xa1\x37\xf1\x06\xbb\x1d\x64\x14\xe5\x5f\x58\xbc\xd1\x78\x68\xa3\x4f\x8b\x23\x0c\xf1\xa6\x8b\x5d\xe9\xa9\x56\x8f\x37\x10\x70\xa0\xc4\xd8\xda\x55\x12\x84\x31\xf1\xa1\x7c\x34\xaa\xca\x1d\x9e\x67\x51\xb4\xb7\x4a\x59\x2c\xc9\xb9\x5b\x0c\x49\xe6\x04\x7d\xe5\x0f\x08\x27\x72\xbc\xa1\x08\x95\x1d\x1a\xce\xf8\x8e\x6e\xf0\x6e\xd7\x8a\x2e\x70\xb7\xdb\xa1\xeb\x3c\x5f\x70\x96\xd5\x2b\x9b\xcc\x1f\x34\x14\xb7\x22\x53\xb5\xba\x5b\x56\xd1\xd9\x0d\xf6\x50\xa6\x93\x45\xbc\x4a\x65\xf2\x08\xa0\xc6\xff\x74\x11\xb3\x78\xd3\x78\x0d\xc1\x95\x10\xc6\xd3\x64\xb2\x88\xa5\x6b\xe7\x02\x08\x61\x6c\xec\x1f\x1f\xc8\x12\x72\x45\xdf\x54\xd1\x80\x36\x6e\xec\xa5\xae\xfe\xc2\xe2\x19\xc6\x0f\x74\x56\x39\xe9\xde\xd6\x6e\x37\x1b\x3c\x7e\xa0\xeb\xf4\x76\x50\xe4\x52\xc5\x6b\x9c\xdc\x7a\xbf\x6e\x13\xd2\xe8\xa1\x62\x0c\xaf\xcd\x86\xb9\xa7\x0f\x93\xeb\x29\xb9\xa4\x9b\xc9\x3d\x8c\xbd\x27\x4c\xc0\xf7\x3d\x4a\x2f\x4d\x93\xcf\x14\x36\x42\xda\x15\x00\x2a\xd5\x84\xe7\x1e\x27\x32\x91\xfd\xb8\x48\xd1\x00\xf5\xef\x13\x8d\x5f\xee\x35\x7e\xc1\xe3\x0b\x16\x2f\x89\x8a\x2f\xc9\xe7\x47\x76\x2d\xf6\xd6\xd1\xcb\x92\xbc\x63\xb4\x45\x6a\x9b\x18\xb1\x8e\x90\x1a\xd6\x3f\x36\x0b\x87\x22\x79\x33\x6d\xe3\x9e\xf7\x6b\x3b\x67\x63\x1f\x76\x85\x2a\xb7\x4c\x51\x54\x5d\xaa\xab\xba\x2e\x41\x9a\x7b\xdb\x2d\x50\xbb\x34\x2f\xc1\xed\x53\xe5\x8f\x48\xd4\xa8\x1a\x58\x44\xb5\xdb\x9d\x33\xf7\x5c\xcb\x94\xea\x5b\x44\x91\xc5\x6d\x8d\xca\xe0\xba\x11\xbe\xe9\x86\xea\xd3\x1d\xef\xd9\x06\x3d\x23\xcf\xf5\x02\x3f\x2e\x20\x38\x22\x8c\x41\x7a\x55\xaf\xa4\x97\xcb\x5e\x65\x67\xe2\x04\x7b\x15\x7a\x6e\x80\x6b\x30\xa2\x99\xeb\xf7\x16\xc5\xd5\x10\x25\xf1\x6d\xba\x61\xfc\x2d\xfb\x9a\xe5\xf7\x59\xcf\x34\x72\x60\xae\x64\xbe\x11\x73\x3e\xd7\x73\x27\xfd\x30\xa5\xb9\xd1\xd5\x11\xb1\xd4\xf7\xe0\x73\x66\x15\x43\x2e\x39\x54\xa7\xe1\x92\x69\xb2\xdb\x7d\x61\xb1\x2b\x60\xc3\x71\xf9\x22\x69\x92\x9e\x36\x46\x51\x83\x7a\x93\xb4\x59\x91\x9c\xb3\x46\x4d\x40\xbd\xaa\x00\x44\x03\x5f\x99\x9e\xb3\x41\x40\xdf\xf6\x82\x57\x9e\xd4\xf1\x16\x91\xeb\x82\xac\xd1\x26\x6d\xd5\x24\xd5\xc6\x73\x55\x01\xa9\x0c\x80\xf3\x95\x1a\xb8\xaa\x45\xf0\xc2\x11\xd5\x2e\x38\xcc\xab\xd4\x3d\x24\xe7\x0d\x6a\x2b\x93\xce\x05\xb2\x2f\xfd\x77\x32\x09\x30\x6a\x8b\x4e\x3f\x3e\x70\xd5\x28\x6d\x57\x55\x7d\x56\x75\xc4\x2c\x7f\x92\x07\xf4\x3e\x6b\x10\xf5\x4e\x88\x6b\x4d\xd2\x46\x59\x8f\x54\xab\x08\x28\x7f\x17\xf0\xfe\x6d\x1a\x3c\x43\x27\xae\x40\x34\x8a\x7f\x04\x92\x5c\xaa\xd4\xfc\x33\xe6\xc2\x1d\x8c\x45\xe7\xa0\xad\x66\x69\x57\x25\x80\xd1\xaa\x05\x11\xd2\xb8\x03\x9e\xdc\x1e\xa8\x34\xa3\xf1\x90\xb8\x12\x8e\x11\xd2\x8c\xfe\x17\x16\xfb\x2a\x93\x2b\xc9\x95\x8c\x4b\x00\x61\x96\x24\xb6\x83\xc1\xba\xbc\x24\xd4\xa5\x67\x43\x68\x2c\x8c\x58\x15\xc4\x9e\xaf\x0d\x1e\x11\x59\xef\x23\x4b\x6b\x75\x09\xd7\xf8\xd3\xb0\x6c\x48\x64\x3d\x9e\xf2\x81\x2d\xa6\xbe\x3e\x41\x86\x37\x46\x89\xaf\x1a\x9b\xc0\x75\x1f\xd9\x44\x4c\xc7\x72\xb7\x8b\x65\x8d\xfa\x66\x10\x8e\x42\x4f\x7b\x14\x49\x43\x82\x4d\xb1\x92\xd1\xac\xe9\x70\xbc\x0e\xe5\x74\x36\xe2\x5b\x41\xe5\x64\x3d\x1d\xe7\xd5\xfa\x1a\x69\xa3\xfe\x75\x93\x62\xba\xdb\x5d\xb0\x98\x91\x9f\x59\xac\x4b\xa4\x20\x33\x3d\x50\x6b\x0d\x48\xf0\x3d\xc9\xdd\xd1\xcb\xfd\x11\x82\xcd\xe0\x26\xd8\x82\x4a\xf2\x00\xc5\xe4\x8d\x4d\x9a\x57\xe8\xd5\xf7\x17\x1c\x95\xdc\x13\x1d\x63\x9b\x74\xe3\x7c\x68\xf2\x0a\x37\x60\xb2\xa0\xe0\x82\x93\x37\x91\x25\x04\xd0\x40\x55\x16\x82\x06\x32\x8a\xa2\xa6\x60\xd1\x37\x49\x17\x7d\xaa\x89\xe2\x29\x35\x42\xb2\xc3\xe1\x70\x78\xf4\xec\xe8\xa7\x08\x25\xd5\x9b\xcb\xd1\xb3\x17\x17\xcf\x5e\x1c\x45\xa8\x8a\xc4\xf8\x72\x98\x2e\xfa\x37\x09\x42\x25\x26\x5f\x59\x87\x7f\x27\x11\x78\x6b\x22\x91\x04\xca\x6a\x6b\x96\xe0\xaf\xe9\xf5\x35\xf7\x5d\x47\x51\xcc\x28\xef\xa3\x14\xf5\xdf\x31\xd8\x0c\x32\x9d\xb3\x89\x9a\xc6\x8c\x48\x22\x70\x02\x6a\x55\x8d\x52\x7d\xb5\xc0\x89\x7b\x7c\xc7\xe2\x1c\x13\xa1\x6f\x90\xac\x23\x4f\x6c\x2b\x22\x8f\x1e\xcf\x53\xdf\x50\xc5\x9f\xd6\xf4\xfd\xdb\x12\x44\xc8\x3f\x18\x8f\xa8\xd4\x3f\x25\xfa\xf8\xe9\x17\xd6\x86\x3e\xa7\xe8\x80\xad\xc4\xc1\x66\x78\xc0\x66\xb3\x7c\x9d\xa9\xc2\x3f\xec\x2f\x44\xa1\x10\x11\x74\x5b\x12\x16\x84\x0a\xae\x0c\x26\x06\xd7\xf9\xfc\x01\x62\xa7\x98\xc7\xc0\xde\xd6\x54\xa4\x0d\xb3\xa5\xc0\xdb\xf9\xad\x28\x0a\x91\xdd\xf6\x24\xff\x6b\x2d\x24\x9f\xf7\x7a\xa0\xb8\xe6\x1a\xf1\xf6\xf4\xb7\xc8\xa4\xad\xfa\xe1\x2f\xd8\x3b\xee\x5d\x11\x45\x35\x7d\x45\xeb\x3d\xee\x56\xdd\x0b\xb0\xb4\x69\xb5\x9e\x28\x30\x25\xfb\xca\x62\xab\x73\x96\xfd\x9c\x28\xe0\x57\x33\x8c\x4b\xf2\x96\xd1\x6d\xc6\x96\xbc\x58\x31\x93\xa2\xc6\xa6\x74\xb2\xc9\x5f\xcc\xd1\x12\x99\x50\xe6\xf4\x40\x62\x28\x37\x7f\xc9\xb6\x2c\x89\x49\x18\x5a\xf8\x0f\xba\xae\x50\xd6\xa1\xa1\x24\xa2\xb8\x0a\xba\xea\x6c\x1a\x8c\x05\x9d\x9f\xdb\xc1\x3e\x82\x03\x43\xd7\x37\x76\xba\xe0\x2e\x52\xc4\x6a\xe0\xc0\x83\x90\x8b\xd0\xb8\x48\xb6\x8b\x9c\xcd\x2f\x9a\x10\x6a\xd6\x3a\x1e\x12\x05\xc6\x7f\x42\xe1\x18\xfd\xfc\xfe\xfc\xd5\xe7\x8b\xf7\xef\x5e\x5f\xbd\x41\xa0\xd1\xa9\xc0\xe9\x1a\xfa\x2f\x19\xbf\x91\x83\x25\x93\x5f\xab\xc5\xe8\xf1\x2a\x6d\x9e\xdb\x51\x6f\xe4\xe0\x5e\xb2\x55\x5d\x03\x0b\x2a\x92\x31\xb6\x11\x3d\xf9\x60\x25\xf9\x86\x72\xc8\xb8\x6b\x62\x7a\xf6\x86\x3e\x26\x27\x75\x30\x42\x74\x44\x97\x8d\x90\x98\xd6\xf4\x88\x64\x36\xe9\xaa\x9b\x2d\x64\x82\x77\xf6\x8e\x12\x19\xa3\x8f\x97\x9f\x3e\x5f\xbd\xbb\xfa\x74\x75\xfe\xf3\xd5\x9f\x97\xaf\x20\xc8\xb0\x79\x7d\x9c\x40\x88\x4f\x9e\xcd\x7d\xf8\x4f\x0e\x39\xfb\x63\x48\x84\x03\x46\x78\x38\xc6\x25\xa9\x75\xfe\x9f\xcc\x84\xb9\x23\xfd\x5f\xcf\xc7\x0f\x0c\x38\x5d\x99\xe7\xea\x8d\xd9\x97\xd8\xcd\xd1\x31\xf9\x95\xc5\x5b\x87\x25\xf2\x81\x4f\x6e\x04\x17\x18\x9b\x27\x5b\x1f\x4b\xbd\xab\xfd\xf4\x8c\x86\x90\x4f\x43\x50\x3e\x28\x78\xa6\xb0\xf5\xd1\x49\x63\x46\x05\x58\x38\xfa\xdd\x46\xec\x44\x9f\x5f\x5c\xbc\xff\xed\xdd\xa7\x8f\x88\xb0\xdd\x6e\x32\xc5\x38\xc9\x62\x54\xdc\xe5\xf7\x6f\x5d\x1e\xf0\xad\x0d\x11\xf1\xda\xb8\x02\xa9\xbc\x07\xb3\xdb\x73\x3d\x0d\x10\xf8\xb9\xd7\xfd\x94\xac\x3f\x13\x9a\xb3\xec\x96\x4b\x54\x92\xad\xfe\x91\x90\x91\xca\xc0\x7a\xf2\x37\x97\xb2\x24\x4b\x9b\x1d\xbc\x48\xb6\xc1\x76\x6f\x1c\x8b\xca\xd9\xbf\x24\x8d\xfd\xd3\x6a\x19\x1c\x59\xd7\xdc\xcd\x42\xab\xad\xfb\x91\x94\x97\x61\xdc\xb2\x1f\xc0\xd0\x60\xce\xba\x0d\xa0\xd6\x75\xdf\xcc\x20\x7d\x34\x20\x62\x67\xc2\x5b\xf3\x8a\xac\x22\xf4\xaf\x0b\x2e\x07\x60\x08\x31\x96\xa0\xce\xec\x6c\x4f\xd1\x4f\x9c\x49\x2e\x7b\xa8\x92\x63\x07\xf2\x6f\xcb\x09\xbc\xb2\xe8\x32\x41\xfe\xa4\x11\x31\x4f\x10\xab\x4a\xb3\x3c\x4b\xc0\x5f\x6d\x7f\x33\x63\x72\x8e\x6c\xf4\xc6\xcb\xb9\x50\x26\xa7\x33\xd8\x3e\x14\x36\x9d\x9e\x23\x3a\x5b\xb6\x5a\x5d\x65\x37\x79\xf2\x8a\x11\x99\xaf\x15\x2f\x92\x89\x1d\xa9\xea\x7b\xc5\xd4\x5d\x82\x0e\x10\xe8\x99\x41\x91\x58\x24\xfa\xc3\xe4\x4a\x96\xe5\x94\x64\x6c\x73\xa5\xf8\xb2\xfa\xf2\xbc\x06\xd5\x5b\xa6\x80\x09\x4a\x5e\xb1\x81\x2e\x9b\x71\x92\x47\x47\x71\xf3\xa0\x9b\xcf\x09\x3a\x40\x58\x0f\x52\xa8\x5c\xf2\xe4\x2d\xb8\xee\x8d\xff\xdf\x7f\x07\x00\x00\xff\xff\xdf\x05\x07\xfe\xe8\x12\x01\x00") func init() { err := CTX.Err() diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index bc5eb3a8b0..5020875e8f 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -2157,7 +2157,7 @@ var file_accounts_proto_rawDesc = []byte{ 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x61, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0xa1, 0x04, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0xcb, 0x04, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, @@ -2166,85 +2166,88 @@ var file_accounts_proto_rawDesc = []byte{ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x6c, 0x69, 0x73, - 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x59, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x66, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x30, 0x2f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, - 0x61, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x0c, 0x2f, 0x76, 0x30, - 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x70, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x32, 0x1b, - 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x3a, 0x07, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x64, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x2a, 0x13, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x32, 0xac, 0x06, 0x0a, 0x0d, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0a, - 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, - 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x65, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x57, 0x0a, 0x0b, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x13, 0x22, 0x0a, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3a, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x64, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, + 0x6e, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, + 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x74, + 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, + 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x3a, 0x01, 0x2a, 0x32, 0xac, 0x06, 0x0a, 0x0d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x57, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0a, 0x2f, 0x76, + 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x64, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x26, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x32, 0x17, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x3a, 0x05, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x5e, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x32, 0x17, 0x2f, 0x76, 0x30, - 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x69, - 0x64, 0x3d, 0x2a, 0x7d, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x5e, 0x0a, 0x0b, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x63, 0x0a, 0x09, 0x41, - 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, - 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, - 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, - 0x12, 0x73, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x24, 0x72, 0x65, 0x66, 0x12, 0x72, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x63, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, + 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x12, + 0x72, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, + 0x72, 0x65, 0x66, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index 6f0e8ee6f3..bc03e6b6b5 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -50,29 +50,30 @@ func NewAccountsServiceEndpoints() []*api.Endpoint { }, &api.Endpoint{ Name: "AccountsService.GetAccount", - Path: []string{"/v0/accounts/{id=*}"}, - Method: []string{"GET"}, + Path: []string{"/api/v0/accounts/accounts-get"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "AccountsService.CreateAccount", - Path: []string{"/v0/accounts"}, + Path: []string{"/api/v0/accounts/accounts-create"}, Method: []string{"POST"}, - Body: "account", + Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "AccountsService.UpdateAccount", - Path: []string{"/v0/accounts/{account.id=*}"}, - Method: []string{"PATCH"}, - Body: "account", + Path: []string{"/api/v0/accounts/accounts-update"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "AccountsService.DeleteAccount", - Path: []string{"/v0/accounts/{id=*}"}, - Method: []string{"DELETE"}, - Body: "", + Path: []string{"/api/v0/accounts/accounts-delete"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", }, } @@ -191,29 +192,30 @@ func RegisterAccountsServiceHandler(s server.Server, hdlr AccountsServiceHandler })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "AccountsService.GetAccount", - Path: []string{"/v0/accounts/{id=*}"}, - Method: []string{"GET"}, + Path: []string{"/api/v0/accounts/accounts-get"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "AccountsService.CreateAccount", - Path: []string{"/v0/accounts"}, + Path: []string{"/api/v0/accounts/accounts-create"}, Method: []string{"POST"}, - Body: "account", + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "AccountsService.UpdateAccount", - Path: []string{"/v0/accounts/{account.id=*}"}, - Method: []string{"PATCH"}, - Body: "account", + Path: []string{"/api/v0/accounts/accounts-update"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "AccountsService.DeleteAccount", - Path: []string{"/v0/accounts/{id=*}"}, - Method: []string{"DELETE"}, - Body: "", + Path: []string{"/api/v0/accounts/accounts-delete"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", })) return s.Handle(s.NewHandler(&AccountsService{h}, opts...)) diff --git a/pkg/proto/v0/accounts.pb.web.go b/pkg/proto/v0/accounts.pb.web.go index bc17a24d47..f0fe5f7fe5 100644 --- a/pkg/proto/v0/accounts.pb.web.go +++ b/pkg/proto/v0/accounts.pb.web.go @@ -68,7 +68,7 @@ func (h *webAccountsServiceHandler) GetAccount(w http.ResponseWriter, r *http.Re return } - render.Status(r, http.StatusOK) + render.Status(r, http.StatusCreated) render.JSON(w, r, resp) } @@ -116,7 +116,7 @@ func (h *webAccountsServiceHandler) UpdateAccount(w http.ResponseWriter, r *http return } - render.Status(r, http.StatusOK) + render.Status(r, http.StatusCreated) render.JSON(w, r, resp) } @@ -150,10 +150,10 @@ func RegisterAccountsServiceWeb(r chi.Router, i AccountsServiceHandler, middlewa } r.MethodFunc("POST", "/api/v0/accounts/accounts-list", handler.ListAccounts) - r.MethodFunc("GET", "/v0/accounts/{id=*}", handler.GetAccount) - r.MethodFunc("POST", "/v0/accounts", handler.CreateAccount) - r.MethodFunc("PATCH", "/v0/accounts/{account.id=*}", handler.UpdateAccount) - r.MethodFunc("DELETE", "/v0/accounts/{id=*}", handler.DeleteAccount) + r.MethodFunc("POST", "/api/v0/accounts/accounts-get", handler.GetAccount) + r.MethodFunc("POST", "/api/v0/accounts/accounts-create", handler.CreateAccount) + r.MethodFunc("POST", "/api/v0/accounts/accounts-update", handler.UpdateAccount) + r.MethodFunc("POST", "/api/v0/accounts/accounts-delete", handler.DeleteAccount) } type webGroupsServiceHandler struct { diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index b33c42f6a8..eca6435b72 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -25,7 +25,8 @@ service AccountsService { // Gets an account rpc GetAccount(GetAccountRequest) returns (Account) { option (google.api.http) = { - get: "/v0/accounts/{id=*}" + post: "/api/v0/accounts/accounts-get", + body: "*" }; } // Creates an account @@ -33,8 +34,8 @@ service AccountsService { // Create maps to HTTP POST. URL path as the collection name. // HTTP request body contains the resource option (google.api.http) = { - post: "/v0/accounts" - body: "account" + post: "/api/v0/accounts/accounts-create" + body: "*" }; } // Updates an account @@ -42,8 +43,8 @@ service AccountsService { // Update maps to HTTP PATCH. Resource name is mapped to a URL path. // Resource is contained in the HTTP request body option (google.api.http) = { - patch: "/v0/accounts/{account.id=*}" - body: "account" + post: "/api/v0/accounts/accounts-update" + body: "*" }; }; // Deletes an account @@ -51,7 +52,8 @@ service AccountsService { // Delete maps to HTTP DELETE. Resource name maps to the URL path. // There is no request body option (google.api.http) = { - delete: "/v0/accounts/{id=*}" + post: "/api/v0/accounts/accounts-delete", + body: "*" }; } } diff --git a/pkg/proto/v0/accounts.swagger.json b/pkg/proto/v0/accounts.swagger.json index 810a213fab..1e407c0f6f 100644 --- a/pkg/proto/v0/accounts.swagger.json +++ b/pkg/proto/v0/accounts.swagger.json @@ -11,6 +11,105 @@ "application/json" ], "paths": { + "/api/v0/accounts/accounts-create": { + "post": { + "summary": "Creates an account", + "operationId": "AccountsService_CreateAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsAccount" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsCreateAccountRequest" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/api/v0/accounts/accounts-delete": { + "post": { + "summary": "Deletes an account", + "operationId": "AccountsService_DeleteAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsDeleteAccountRequest" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/api/v0/accounts/accounts-get": { + "post": { + "summary": "Gets an account", + "operationId": "AccountsService_GetAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsAccount" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsGetAccountRequest" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, "/api/v0/accounts/accounts-list": { "post": { "summary": "Lists accounts", @@ -44,42 +143,8 @@ ] } }, - "/v0/accounts": { + "/api/v0/accounts/accounts-update": { "post": { - "summary": "Creates an account", - "operationId": "AccountsService_CreateAccount", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/settingsAccount" - } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "body", - "description": "The account resource to create", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/settingsAccount" - } - } - ], - "tags": [ - "AccountsService" - ] - } - }, - "/v0/accounts/{account.id}": { - "patch": { "summary": "Updates an account", "operationId": "AccountsService_UpdateAccount", "responses": { @@ -97,20 +162,12 @@ } }, "parameters": [ - { - "name": "account.id", - "description": "The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only.", - "in": "path", - "required": true, - "type": "string" - }, { "name": "body", - "description": "The account resource which replaces the resource on the server", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/settingsAccount" + "$ref": "#/definitions/settingsUpdateAccountRequest" } } ], @@ -119,66 +176,6 @@ ] } }, - "/v0/accounts/{id}": { - "get": { - "summary": "Gets an account", - "operationId": "AccountsService_GetAccount", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/settingsAccount" - } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AccountsService" - ] - }, - "delete": { - "summary": "Deletes an account", - "operationId": "AccountsService_DeleteAccount", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "properties": {} - } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "AccountsService" - ] - } - }, "/v0/groups": { "get": { "summary": "Lists groups", @@ -707,6 +704,31 @@ } } }, + "settingsCreateAccountRequest": { + "type": "object", + "properties": { + "account": { + "$ref": "#/definitions/settingsAccount", + "title": "The account resource to create" + } + } + }, + "settingsDeleteAccountRequest": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "settingsGetAccountRequest": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, "settingsGroup": { "type": "object", "properties": { @@ -948,6 +970,19 @@ "description": "If *true*, at next sign-in, the user must perform a multi-factor authentication (MFA) before being forced to change their password. The behavior is identical to forceChangePasswordNextSignIn except that the user is required to first perform a multi-factor authentication before password change. After a password change, this property will be automatically reset to false. If not set, default is false." } } + }, + "settingsUpdateAccountRequest": { + "type": "object", + "properties": { + "account": { + "$ref": "#/definitions/settingsAccount", + "title": "The account resource which replaces the resource on the server" + }, + "update_mask": { + "$ref": "#/definitions/protobufFieldMask", + "title": "The update mask applies to the resource. For the `FieldMask` definition,\nsee https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask" + } + } } } } diff --git a/ui/client/accounts/index.js b/ui/client/accounts/index.js index 3cdec3d464..01e5d99725 100644 --- a/ui/client/accounts/index.js +++ b/ui/client/accounts/index.js @@ -27,6 +27,144 @@ export const request = (method, url, body, queryParameters, form, config) => { /*========================================================== * ==========================================================*/ +/** + * Creates an account + * request: AccountsService_CreateAccount + * url: AccountsService_CreateAccountURL + * method: AccountsService_CreateAccount_TYPE + * raw_url: AccountsService_CreateAccount_RAW_URL + * @param body - + */ +export const AccountsService_CreateAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/accounts/accounts-create' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const AccountsService_CreateAccount_RAW_URL = function() { + return '/api/v0/accounts/accounts-create' +} +export const AccountsService_CreateAccount_TYPE = function() { + return 'post' +} +export const AccountsService_CreateAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/accounts/accounts-create' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Deletes an account + * request: AccountsService_DeleteAccount + * url: AccountsService_DeleteAccountURL + * method: AccountsService_DeleteAccount_TYPE + * raw_url: AccountsService_DeleteAccount_RAW_URL + * @param body - + */ +export const AccountsService_DeleteAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/accounts/accounts-delete' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const AccountsService_DeleteAccount_RAW_URL = function() { + return '/api/v0/accounts/accounts-delete' +} +export const AccountsService_DeleteAccount_TYPE = function() { + return 'post' +} +export const AccountsService_DeleteAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/accounts/accounts-delete' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Gets an account + * request: AccountsService_GetAccount + * url: AccountsService_GetAccountURL + * method: AccountsService_GetAccount_TYPE + * raw_url: AccountsService_GetAccount_RAW_URL + * @param body - + */ +export const AccountsService_GetAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/accounts/accounts-get' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const AccountsService_GetAccount_RAW_URL = function() { + return '/api/v0/accounts/accounts-get' +} +export const AccountsService_GetAccount_TYPE = function() { + return 'post' +} +export const AccountsService_GetAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/accounts/accounts-get' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} /** * Lists accounts * request: AccountsService_ListAccounts @@ -74,17 +212,17 @@ export const AccountsService_ListAccountsURL = function(parameters = {}) { return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') } /** - * Creates an account - * request: AccountsService_CreateAccount - * url: AccountsService_CreateAccountURL - * method: AccountsService_CreateAccount_TYPE - * raw_url: AccountsService_CreateAccount_RAW_URL - * @param body - The account resource to create + * Updates an account + * request: AccountsService_UpdateAccount + * url: AccountsService_UpdateAccountURL + * method: AccountsService_UpdateAccount_TYPE + * raw_url: AccountsService_UpdateAccount_RAW_URL + * @param body - */ -export const AccountsService_CreateAccount = function(parameters = {}) { +export const AccountsService_UpdateAccount = function(parameters = {}) { const domain = parameters.$domain ? parameters.$domain : getDomain() const config = parameters.$config - let path = '/v0/accounts' + let path = '/api/v0/accounts/accounts-update' let body let queryParameters = {} let form = {} @@ -101,158 +239,16 @@ export const AccountsService_CreateAccount = function(parameters = {}) { } return request('post', domain + path, body, queryParameters, form, config) } -export const AccountsService_CreateAccount_RAW_URL = function() { - return '/v0/accounts' -} -export const AccountsService_CreateAccount_TYPE = function() { - return 'post' -} -export const AccountsService_CreateAccountURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/v0/accounts' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Updates an account - * request: AccountsService_UpdateAccount - * url: AccountsService_UpdateAccountURL - * method: AccountsService_UpdateAccount_TYPE - * raw_url: AccountsService_UpdateAccount_RAW_URL - * @param accountId - The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. - * @param body - The account resource which replaces the resource on the server - */ -export const AccountsService_UpdateAccount = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config - let path = '/v0/accounts/{account.id}' - let body - let queryParameters = {} - let form = {} - path = path.replace('{account.id}', `${parameters['accountId']}`) - if (parameters['accountId'] === undefined) { - return Promise.reject(new Error('Missing required parameter: accountId')) - } - if (parameters['body'] !== undefined) { - body = parameters['body'] - } - if (parameters['body'] === undefined) { - return Promise.reject(new Error('Missing required parameter: body')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }); - } - return request('patch', domain + path, body, queryParameters, form, config) -} export const AccountsService_UpdateAccount_RAW_URL = function() { - return '/v0/accounts/{account.id}' + return '/api/v0/accounts/accounts-update' } export const AccountsService_UpdateAccount_TYPE = function() { - return 'patch' + return 'post' } export const AccountsService_UpdateAccountURL = function(parameters = {}) { let queryParameters = {} const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/v0/accounts/{account.id}' - path = path.replace('{account.id}', `${parameters['accountId']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Gets an account - * request: AccountsService_GetAccount - * url: AccountsService_GetAccountURL - * method: AccountsService_GetAccount_TYPE - * raw_url: AccountsService_GetAccount_RAW_URL - * @param id - - */ -export const AccountsService_GetAccount = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config - let path = '/v0/accounts/{id}' - let body - let queryParameters = {} - let form = {} - path = path.replace('{id}', `${parameters['id']}`) - if (parameters['id'] === undefined) { - return Promise.reject(new Error('Missing required parameter: id')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }); - } - return request('get', domain + path, body, queryParameters, form, config) -} -export const AccountsService_GetAccount_RAW_URL = function() { - return '/v0/accounts/{id}' -} -export const AccountsService_GetAccount_TYPE = function() { - return 'get' -} -export const AccountsService_GetAccountURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/v0/accounts/{id}' - path = path.replace('{id}', `${parameters['id']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Deletes an account - * request: AccountsService_DeleteAccount - * url: AccountsService_DeleteAccountURL - * method: AccountsService_DeleteAccount_TYPE - * raw_url: AccountsService_DeleteAccount_RAW_URL - * @param id - - */ -export const AccountsService_DeleteAccount = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config - let path = '/v0/accounts/{id}' - let body - let queryParameters = {} - let form = {} - path = path.replace('{id}', `${parameters['id']}`) - if (parameters['id'] === undefined) { - return Promise.reject(new Error('Missing required parameter: id')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }); - } - return request('delete', domain + path, body, queryParameters, form, config) -} -export const AccountsService_DeleteAccount_RAW_URL = function() { - return '/v0/accounts/{id}' -} -export const AccountsService_DeleteAccount_TYPE = function() { - return 'delete' -} -export const AccountsService_DeleteAccountURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/v0/accounts/{id}' - path = path.replace('{id}', `${parameters['id']}`) + let path = '/api/v0/accounts/accounts-update' if (parameters.$queryParameters) { Object.keys(parameters.$queryParameters).forEach(function(parameterName) { queryParameters[parameterName] = parameters.$queryParameters[parameterName] diff --git a/ui/store/index.js b/ui/store/index.js index 05e7280b0b..a9e8d78fd0 100644 --- a/ui/store/index.js +++ b/ui/store/index.js @@ -41,7 +41,7 @@ const actions = { commit('SET_INITIALIZED', true) }, - async fetchAccounts ({ commit, dispatch, getters, rootGetters }) { + async fetchAccounts ({ commit, dispatch, rootGetters }) { injectAuthToken(rootGetters) const response = await AccountsService_ListAccounts({ $domain: rootGetters.configuration.server, From e23615c76437a14858bc812b79321f7fb76e4770 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 10:31:35 +0200 Subject: [PATCH 180/407] Sort accounts by preferredName field --- pkg/assets/embed.go | 6 +++--- ui/store/index.js | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index 6e37b37671..d9bd3a9793 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-07-01 09:57:46.117738 +0200 CEST m=+0.008372897" from config file "embed.yml" DO NOT EDIT. -// modification hash(8ae67f4028fda1f183571cab5ea96c64.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-07-01 10:31:22.183724 +0200 CEST m=+0.004338656" from config file "embed.yml" DO NOT EDIT. +// modification hash(46272a1cc6804ae4223e07dac999a19a.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,7 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\xfd\xfb\x7a\xdb\x38\x96\x28\x8a\xff\xfd\xdb\x4f\x21\x71\x32\x1c\xa0\xb5\x4c\x4b\xa9\xae\xea\xdd\x54\x10\xb5\xe3\x38\x97\xaa\x24\x4e\xd9\x49\xea\xa2\xa8\xbd\x69\x0a\xb2\x10\x53\x80\x0a\x84\xec\x38\x22\x7f\xef\x73\x5e\xe3\x3c\xd9\xf9\x70\xe3\x45\xa2\x53\xe9\x99\x3d\x93\xef\x8b\x45\x82\xb8\x2e\x00\xeb\x86\xb5\x16\xe6\x74\xc1\x38\x45\x68\xb1\xe1\xa9\x62\x82\x23\xbc\x0d\x36\x39\xed\xe5\x4a\xb2\x54\x05\xe3\x9b\x44\xf6\x14\x09\x36\xdc\x66\x9c\x07\x7d\xa2\xee\xd6\x54\x2c\x7a\x57\x99\xb8\x4c\xb2\x77\x4b\x96\x4f\xea\xc7\xb8\x2b\xe7\x2d\xe3\x73\x71\x3b\xb1\x3f\x9d\x39\x6c\x05\xae\x9e\xce\x1c\x39\xcd\x16\x13\xfd\x27\xde\x96\x63\xdf\xd9\x1e\x45\x0a\x28\xde\x4a\xaa\x36\x92\xf7\x14\xa2\x64\x4b\x3f\xaf\x85\x54\x79\xbc\x2d\x4b\xa0\x91\x7b\xc3\xf5\x63\xa9\x47\x24\x49\x73\xc8\x0a\x6f\x75\x22\x25\xfb\x29\xa7\x97\x9f\x68\xaa\xa2\xb5\x14\x4a\xe8\x9e\x80\x24\x34\x5a\x26\xf9\xe9\x2d\x7f\x2b\xc5\x9a\x4a\x75\x07\x9c\x04\xbe\x60\x40\x7c\x7f\xcf\xef\x56\x97\x22\x9b\xd8\x9f\x78\x5b\x82\x20\x3c\x62\x8a\xca\x44\x09\x59\x14\xc1\x3f\xfe\xe1\x5f\x02\x60\x84\x47\x49\x7e\xc7\xd3\x97\xcd\xef\xad\x94\x00\x12\xc2\x23\x25\xce\x95\x64\xfc\xea\x5d\x72\x65\xb2\x34\xde\x83\x1a\x28\xa9\x06\x0a\x48\xe0\x76\x10\x82\xd0\x30\xa4\xf5\x10\x7a\x8c\xe7\x2a\xe1\xa9\xee\xe5\x62\x42\xe3\x05\x30\x3f\xcc\x54\xd2\x44\x51\x24\xea\xcc\x58\xb7\x4b\x6f\x7b\x17\x88\x17\xc5\x74\x86\xc7\x0e\xd4\x2c\xba\x60\xfc\x46\x5c\x37\x61\xa6\x1b\xb5\x4d\x72\x12\xe4\x9b\x7c\x4d\xf9\x9c\xce\xcf\x55\x22\x55\xe0\xcb\x55\xb9\x05\x30\xbc\x65\x0b\x14\xd0\xcf\x34\xdd\x28\xc6\xaf\x02\x42\x08\xc7\x6a\x29\xc5\x6d\x4f\x37\x79\x22\xa5\x90\x28\x78\x4e\xb9\x05\x41\x8f\xe5\xbd\x24\x93\x34\x99\xdf\xf5\xe4\x86\x73\x5d\x04\x8f\x75\x15\xa9\x58\xad\x33\xaa\xe8\xdc\x56\x61\xaa\x35\xf5\xe8\x77\xe1\xaa\x64\xbe\x0b\xe7\x08\x97\x0b\x21\x91\x8c\x56\x54\x2d\xc5\x9c\x08\x90\x51\x22\xaf\x08\x1b\x8f\x6d\xf7\x13\x22\xa3\x39\xcd\xe8\x55\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x44\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x39\x4e\x05\x57\x8c\x6f\xa8\x6f\x20\x2d\x4b\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x4e\xb9\x22\x32\xba\x70\xbf\x89\xbc\x1a\xd3\x2c\xa7\xbd\x56\x87\xab\xfc\x66\x1c\x3b\x70\x6c\xc2\x88\x34\x06\x6e\x87\x30\x96\xd1\x9c\xe5\xeb\x44\xa5\xcb\x93\xcf\x29\x5d\x1b\x48\x9b\x2f\xb8\xd4\x0d\x05\xb6\x87\xcd\x56\xc2\x50\x46\xc9\xa5\xdc\xac\x15\xf2\x5f\x6d\x5d\x78\xcc\x49\x63\x72\x0c\x22\x58\x90\x8d\x9b\x66\x03\x77\x2e\xe4\x2a\xc9\x74\x6d\x8b\xc8\x2c\x16\xdd\x63\xae\x81\x27\x38\x9d\x34\x7a\x17\xd7\xc3\xf8\x8d\xd1\x6c\x1e\xc0\xc2\x40\xbc\x03\x7a\xdb\x9b\x24\xdb\xd0\xd8\x7c\x07\x5d\x4f\x6c\xab\x2b\xcb\x1a\x42\xb6\xb5\x30\x44\xbb\x20\x70\x13\xea\x72\xba\x69\x5d\xd8\xf1\x97\x25\x52\x20\x21\xc1\xc0\xca\x6a\xab\xf8\xe1\x6c\x95\xbc\x73\x58\x64\xab\xeb\x8e\xfd\xd8\x20\x91\x57\xb1\x8a\xd2\x24\xcb\x90\xce\x58\x96\xa9\x86\xae\x46\x10\xad\xec\xae\x45\x93\xbb\x2c\x4b\x15\xdd\xca\x64\x4d\x52\x03\xb5\x9c\x34\x51\xd6\x02\xe1\x6d\xdd\x81\xac\xf5\xb6\xd6\x6f\xba\xc8\x5c\x17\x99\x4f\xc5\x8c\x34\xf0\xb2\xc7\x72\x4b\x96\x97\xa6\xe2\xa5\xdf\xb7\x57\x54\xbd\xf5\x3b\xf6\x74\x01\x37\x64\x19\x86\x4b\xb4\x44\xa7\x68\x3a\xc3\x18\x8f\x6f\xc2\xf0\xa6\x4f\x34\x1e\x90\x76\x28\x37\x20\x70\x18\xa2\x39\xb9\xc1\xa6\xa6\x3b\xb2\xae\xf7\x3c\x59\x34\x9e\xdb\x98\x61\x8e\xeb\x81\xac\x34\x10\xa6\x76\x99\x83\x07\x80\x5f\x43\xb3\x68\x21\xe4\x49\x92\x2e\x1b\x68\x96\xe2\xad\x9a\xd2\x59\x0b\xcb\x36\xc6\xe4\x31\x0a\xa2\xa0\x70\x59\x62\x5c\xc3\xe5\xca\xa2\x79\x83\x5a\xc6\xcd\xbc\xa4\x8d\x4f\xaa\x02\x49\x0d\x2e\x8d\x4a\x9a\xc8\x9e\x43\x82\xb7\xfd\x2a\xa7\x29\x09\x09\xa4\xb6\xfa\x5c\xaf\xf0\xa9\x98\x81\x02\x66\x17\xb9\x1d\x58\x9f\x90\xdc\xad\x71\xbb\x11\x72\xb3\x40\x33\xb2\x88\xcc\x82\xf5\x7b\x3f\x0b\xc3\x40\x18\x90\xd5\xa4\x20\xab\xc0\x9e\x41\x70\x71\x91\xdc\x26\x4c\x05\x78\x42\x23\x49\x73\x91\xdd\x50\x94\x45\x2e\x15\x47\x6a\x49\x79\x9b\x32\x71\x87\x49\x40\x99\x5e\x96\x18\x76\x3f\x3b\xd0\xfb\xef\x38\x6e\xd4\xdc\x55\xa3\xeb\x32\x51\x90\xa0\xc5\x5e\x85\x1e\x6c\xfb\xf5\x96\x29\xca\xed\x5e\x32\x30\xd3\x80\xd4\xa9\xbe\x00\xe1\x13\x6e\x5b\x4b\x20\xc1\x71\x82\x70\x59\xcf\xe0\x65\x3d\x83\x92\xa8\x8a\x10\x4e\xa9\xdb\xb3\x33\x0d\xeb\x1b\xc1\xe6\xbd\xa1\x46\x4e\x06\x93\xd0\x0a\x09\x13\xbe\xc9\x32\xa8\x11\x00\x6d\xa2\xc8\xba\xb6\xc8\x76\x25\x0c\x11\xad\x50\x81\xc7\x69\xd4\xe0\x02\xdb\x02\xd8\xde\x74\x55\x88\xdd\x68\xf2\x31\xdd\xc5\x26\xb6\x06\xbd\x9c\xde\xdd\xad\xa9\xa3\x4e\xef\x96\xb4\xe7\x9b\xef\xcd\x05\xcd\x7b\x5c\xa8\xde\x5a\x8a\x1b\x36\xa7\xbd\xa4\xf7\x1f\xa6\xf0\x7f\xf4\x6c\x5d\x41\x05\x2d\xcb\x86\x70\xb2\x41\x12\xea\x01\xd8\x36\x9a\xeb\x4e\xe3\x7b\xbb\xee\x5c\xc1\xfb\xba\x65\x96\xe3\x2e\xc4\xf2\xb1\x65\x00\xb8\x25\x0e\xb6\x06\x31\x11\x16\x41\x23\x3a\x55\x7a\xa5\x6c\x32\xf5\x26\x59\xd1\x19\x11\x76\x61\x00\x8d\xf4\x8a\x23\xca\xfc\xbc\x12\x69\xb5\xab\xfb\x35\xa4\x5a\x40\xb6\x0b\xb4\x09\x62\xbc\xdf\x17\x1c\x8b\x18\x7d\x1b\x54\x2b\x88\xda\xde\x69\xca\xaf\xc1\x9a\xf0\x9e\xdb\x5b\x5d\xd5\xd7\x8b\xed\xb6\xe6\xdf\x34\x62\x7f\x25\xd2\x58\x4d\x87\xb3\x72\x3c\xea\x31\xde\x53\xa6\xeb\x06\x8d\xbf\x12\x29\x51\xd3\xd1\x0c\xc3\xc3\xfa\xcb\x82\xf1\x24\xcb\xee\xec\xb7\x87\x33\xdd\xc3\x85\xa2\xd2\xbe\x7f\x37\xc3\x60\x10\x90\x92\x77\x27\x5c\x49\x46\xf3\x68\xbd\xc9\x97\x88\x36\xda\x3f\xa9\xdb\x57\x91\x23\x50\x4c\xf0\xa2\xd8\x96\x63\x6a\x66\x93\x54\xf4\x45\x8f\x42\xd1\x9e\x01\x03\x34\x73\x13\x5a\x57\x78\xa1\x2b\xdc\x69\x96\x4c\xfd\xd8\x02\x29\x84\x0a\xca\x19\xa8\x0a\xe9\xde\x9a\x4e\xba\xae\x4a\x9a\x53\x85\xfa\xc3\x46\x0f\x4f\x75\x85\x7a\xef\x54\xfd\x9c\x0a\xb3\x05\x1b\xeb\xcc\x60\x2c\x65\x17\xe3\x3e\x7f\x6b\x17\x87\xcf\xad\x74\xae\x3e\xcb\xdf\x24\x6f\x90\x8a\x32\xca\xaf\xd4\x12\x7b\x5e\xf0\x60\x04\x8c\x34\x58\x76\xbc\xd5\xec\xd7\x78\x30\xe0\x8f\x7c\xde\x31\x66\x0b\xe4\x90\xa4\x02\x8e\xeb\x5e\x38\x54\x35\xe5\x7a\x22\xf4\xb2\x25\xfd\x11\x54\xe8\xd6\x7f\x77\xfb\xda\xe7\x18\x02\x2d\x6b\x4e\xd5\x2c\x66\x56\xba\xad\xb7\xd5\xaf\xf1\x79\x03\x37\x9d\x57\xc4\xc2\x31\x1f\xae\x36\xc3\x7d\xf4\x87\xbe\x60\x2f\x6b\x90\xc5\xbb\x28\x15\x3c\x57\x72\x93\x2a\x21\xc9\x1a\xd6\xad\xf7\x0c\xd6\xd3\x64\x46\x32\xc3\x8d\x65\xc9\x9d\xde\x5e\xa4\xe6\x64\x9f\x79\x68\xea\xad\x9f\xef\x25\x77\x88\x21\x5d\x13\x10\x86\xaa\xd9\xa8\x1b\x6f\xbf\xaf\x19\x23\x4a\x08\xc9\x8a\xa2\xa3\x49\x42\x88\x46\xac\x75\xbf\x8a\x82\x46\x3c\x59\x51\x8c\x4b\x50\xd1\x2a\x91\xd7\x5d\x04\xda\xb1\x01\x79\x8b\xd1\x98\x74\xa6\x22\x05\x6b\x1c\x23\x15\x5d\x5c\x18\x78\x5d\x5c\x90\x35\x24\x66\x7f\x15\x05\x52\x1a\x30\x1d\xfd\xc2\x18\xd4\xbd\x6c\xc7\x1d\x06\xa5\x7b\x97\x18\xae\x6a\xbf\x7b\x5b\x47\x3f\x35\xef\x05\x2b\x74\xd5\x94\x5f\x1a\x2f\x53\x76\x2f\x3f\x05\x2a\x3a\x6a\xca\x5b\x44\x6f\x46\x23\x81\xd5\x25\x8c\x4c\x05\x86\xd1\xa8\x28\x15\x0b\x43\xc4\xc8\x5b\x29\x56\x2c\xa7\x96\x97\xb2\x02\xd3\x15\x4a\x7d\x01\xac\x59\x09\xdf\x58\xd7\x84\x23\x89\x27\x49\x9c\x98\x85\x8a\xba\x28\x76\x55\xd8\xe0\x6d\x65\x17\x7d\x55\x40\x13\x61\x58\x69\x20\xdd\xb5\x81\x1b\xc0\xdd\x57\x58\x48\xb8\xab\xe4\xc9\xfd\x2c\xc1\xd4\x62\xda\x5e\x55\xd9\x2c\xd0\x40\xba\xa6\x77\x79\xc7\xfa\x9c\xce\xc6\x7a\x4f\x1b\xf2\x6e\x66\x1a\x53\x8b\x16\x25\xae\xb7\xaa\xa4\x37\x54\xe6\x14\x61\xa8\xb6\x9e\xf4\xc8\x80\x56\x88\xc0\x21\x0d\x1a\xad\xc5\x1a\x19\xec\xc3\x6d\x8d\xae\x1e\xe9\xb6\x3c\x07\x59\xe1\x03\x59\x56\x1f\x3d\x02\x90\xa5\xee\xae\xc9\x9a\x93\x53\xb8\x68\xac\xad\x6d\x63\xd7\xc4\x17\x60\xd0\x63\xdc\x1c\x93\x46\x8c\x1a\x71\xae\x25\xbd\x21\x43\x8b\x44\x0d\x12\x71\xcf\x46\x7c\xb3\x6c\xa8\x79\x74\xf8\xc2\xa4\xf8\x2e\xd9\x97\x16\x89\x32\x49\x6d\x92\x69\x92\x1a\x8c\xc9\x2e\x69\xf1\xf8\xfc\x04\x43\x5f\x61\x0f\x62\x6a\x00\xa2\x11\x7c\xa0\x2c\xf7\x92\x2e\x13\x79\xa4\xd0\x10\x57\xac\xa6\xfe\x0c\x14\x87\xa1\xc3\xca\x03\x1a\xe5\x19\x4b\x29\x1a\x61\xcd\xf9\xeb\xcf\x9a\x17\x77\xd4\xba\x84\x5c\x89\x75\xdc\x58\x06\x8d\xc1\x0c\x9d\x12\x68\xa7\x73\xd3\xe1\xac\x41\xae\xda\x3c\x8b\xb2\x3c\x8b\x15\x54\x55\x93\xfb\xb0\x14\xe9\x26\xc9\x4a\xd8\x13\x55\x3b\x27\x41\xf7\xc1\x57\x34\x76\xc4\x6a\xc9\xf2\x71\x83\x83\x37\xaa\x0e\x57\x7f\xe2\xe8\xab\x17\xc8\x0c\x74\x95\x67\x69\x24\xf0\x3f\x65\x5c\xfa\x7d\x5e\x7a\x48\x8b\xdd\x41\xbb\x65\x7a\x30\x1a\x8b\xc7\x64\x38\x3e\x38\x10\x76\xc1\xb2\x3d\xe8\x88\x19\x24\x84\xed\x42\xc8\x90\x6a\x8d\x37\x22\x4b\xbc\x71\xcd\x6e\x53\x3e\xb7\xfa\x0c\xff\xed\x11\xa9\x56\xa1\x57\x40\xb8\xc9\x65\x10\x78\xfe\x25\xc0\xb0\x69\x24\xd7\xcc\x8b\xad\x2b\x0d\xc3\x4d\x7b\x41\x3f\x62\x15\xef\x53\x37\x5e\xa7\x41\x7f\x68\x0a\x36\xf3\xd7\x95\x36\x4b\x34\x52\x4b\xaf\xc5\x48\xff\xe5\xb6\x4c\x51\x5d\xa8\xbf\xd9\xd7\xfd\x28\x79\xd7\xcb\x55\xa2\xe8\x8a\x72\xd5\xbb\x65\x6a\x29\x36\xaa\x67\x8a\xf7\x84\xec\xb9\x1e\x04\xff\x89\x0e\x97\x65\x09\x56\xed\x11\x37\x15\x58\x16\x1b\x59\x0c\x74\xef\xcc\x73\x3b\xf3\x95\x7a\x6d\x77\xe6\xb9\xe1\xa4\xc4\xfe\x2c\x56\x9b\x53\xb4\x27\x2a\x0c\xeb\xce\x8b\x66\x37\xdd\xd2\x12\xe3\x4b\x49\x93\xeb\xb2\xd4\xd4\x26\x30\xcf\x66\x93\x15\x45\xe0\xb5\x27\xe6\x1d\x87\x61\xbd\x76\x68\x18\xd2\x47\xa4\x39\x6a\x43\xaa\x34\x26\xf2\x74\x8a\x4d\x9a\xeb\x33\xde\x56\x3c\x93\xdb\x44\xca\x6d\x1f\x0a\x6c\x82\xee\xc3\x5e\x96\xbb\x6a\x34\xa3\x39\x7d\xf3\xc5\xab\x66\x50\x82\x4b\xf0\x2f\x3b\xe0\xfe\x36\xac\xd1\x18\xb3\xc9\xb2\x3b\x70\x93\x38\xa9\xbb\x63\xca\xc6\x0d\x6d\x97\xcb\x81\x2a\xec\x43\x2a\xcc\xab\x2c\xe7\xdd\x1c\x9d\x97\x19\xeb\x0a\xed\xe6\x8c\x1b\x1a\x2f\xe5\x74\x50\xd4\x21\x53\x9b\x8f\x62\xc8\x4b\x58\x30\xce\xf2\x65\x0b\x9b\x55\xa8\xfb\xfe\x65\x45\xed\xb2\xaa\xa5\xe4\x9d\x65\x45\xcd\xb2\x92\x4d\xf9\x44\xcf\x79\x13\xaf\x56\x10\x97\x8d\x79\x05\x59\x09\x30\x18\x4e\x90\xd4\x5d\x2c\xc1\x6c\xa2\xff\xae\x2e\xda\x35\x68\xba\xe7\xc8\xb9\xbc\x97\x54\xf0\x86\x5a\xc5\x4b\xaa\xba\x97\x9e\xa4\x8b\xb2\xdc\xc3\x0b\x2c\xd3\x74\x35\x73\x98\x20\x51\x8a\xae\xd6\x2a\xc0\x25\x78\x82\x6b\xb4\x8c\xf1\xae\x6a\xba\x09\xaa\x8a\x34\x6f\xbd\xb0\x19\x6b\xa1\x08\x6a\x79\x38\xa6\xe0\xe4\xdf\x58\x96\x50\xa9\x73\x1b\x2b\xc5\x4f\x7d\x93\x7a\x68\xd8\xaa\x12\xa9\xea\xe4\x61\x6c\x55\x8b\x57\x9e\x8f\x3a\xdb\x70\xc5\x56\x94\xd0\x5a\x93\x58\xf1\x81\x81\x34\x1a\xb4\xdd\xbc\x3d\xd2\x93\x01\xd6\x22\x66\x89\x31\xf0\x4e\x05\x9a\x96\x06\x5e\x27\x6a\x49\x88\xfe\x1b\x86\xca\x9c\x38\xa0\x3d\x65\x54\x7d\x54\x13\x86\xf5\x33\x2e\x8a\x8e\xbc\xf6\xc0\x26\x0c\xed\x6f\x77\x9e\x9c\x66\x8b\x30\xd4\x7f\xbb\xbf\xeb\x8e\xe1\xa2\x68\x0c\xb1\x9e\x84\x00\x23\xdc\x10\x0d\x8d\x90\x5b\xe9\x61\xfb\x7d\xcd\xda\xee\x68\x5b\xb5\x34\x06\x09\xe9\xb3\xd6\x81\x95\xab\xf2\x6f\x7d\x2f\x36\xd8\xd3\x23\x7f\x40\x83\xb6\x25\x8c\x60\x7b\xd5\xe4\xf2\xea\x42\x65\x89\xa7\xa3\x99\x06\x6c\x4a\xb6\xa5\x66\x13\x4d\xa1\x97\xf9\x09\xdf\xac\xa8\x4c\x2e\x33\x0a\x9b\x86\xa2\xb5\x71\xf2\xf3\x94\xe6\xa9\x64\x6b\x25\x24\xe4\x64\xbb\x88\x37\x61\xd8\x4f\x2d\x86\xdf\x8e\xe2\x87\x25\x8c\xf0\x64\x9f\x57\xde\x58\xde\x4c\xe1\xa6\xc4\x46\x23\x5a\x35\x57\xc6\x69\x09\x0b\xd2\x46\x94\x4e\xd0\xa9\x73\xc5\x7d\x34\x0a\x15\x86\x54\xf0\x05\xbb\xda\xf8\xb4\x87\x3a\xed\x56\x32\xe5\xde\xff\xaa\xdf\xad\xbc\x40\xcb\x12\x32\x3d\x46\xcf\xf6\x43\x97\x2c\xd5\xcb\xbc\xe4\xef\x18\xc6\xff\x0d\x07\x23\xbd\xb5\x48\x10\x44\xf9\x3a\x63\x0a\x96\xa4\x0b\xfe\x7d\x0b\x23\x14\x7c\x09\x70\x27\x18\xd1\x50\x8b\x2a\x93\xfd\x26\x03\xdb\x9d\x80\x90\x35\x52\x78\x32\xf7\x7a\x80\x20\xc0\xb1\xab\x54\xe1\xd2\x3d\xc2\x0d\xd9\x61\x13\x35\x49\xd3\xa8\xc6\xa2\x89\x86\x1a\xe9\x38\xe1\xff\xa1\xd9\x85\x2c\x73\xfa\xb7\x9e\xe0\xbd\x60\xa0\x6a\x69\xac\x84\xbb\x2e\x10\x2c\xd1\x0d\x52\x46\xaa\xea\xf8\xba\xbf\xc4\x27\xba\x07\x7d\x42\x54\xdc\x25\xa7\x97\x70\x45\xf6\x88\x5e\x7f\xa5\x1b\xa8\xb4\x27\x06\x9d\x82\xc1\x8c\x34\x0c\xf7\x6b\x41\x52\x13\x1c\x37\x6d\x9a\xa9\x5f\x99\x73\x16\x37\x51\x55\x45\xbc\x5b\x59\x63\x4a\x9b\x35\x70\xba\xf8\x93\xc2\xfd\xff\x5a\xf3\xf7\x4d\x81\xe0\x37\x54\x2a\xa7\xbd\xeb\x29\xd1\x5b\x4b\xb6\x62\x8a\xdd\xd0\x9e\xe9\x97\xc6\xdd\x97\x7a\x69\xee\x1c\xad\xde\x76\xee\x82\xde\xa5\x5f\x21\x14\x97\x70\x42\x44\x34\x17\xe9\x46\xf3\x88\x70\x41\x56\xe8\x04\x87\xe1\x0a\x9d\x38\xe5\xc1\x49\x66\xb8\x47\x0c\xa7\x5d\x33\x7d\x31\xd9\xc9\x87\x14\x36\x47\xc7\xe7\xa4\x9f\x68\xe1\xe9\x5f\x42\x34\xa7\x28\x98\xb3\x9b\x00\x43\x90\x04\x5f\x43\x38\x51\xa2\xf1\xcd\xa7\x3f\xc5\x2a\x9f\x35\x56\x49\x26\x9f\xf6\x99\x26\x45\xee\x34\xb5\xa2\xe4\x0a\x51\xcd\x46\xc3\x39\xae\x51\x67\xef\x93\x05\x4d\x85\x3c\x4b\xb6\x40\xb7\x26\xcd\x4f\xd5\x02\xf5\xf3\x68\x51\x83\x11\xd4\x94\xce\x70\x59\xc2\xf1\xee\xee\xb2\x2b\x75\x77\x62\xed\x52\x40\x0a\x0f\x82\x0e\xed\x6c\x63\x7f\xbd\xeb\x06\x15\xbc\xb5\x43\x7b\xb7\x47\xa4\xd9\x02\x1d\xb7\x87\x76\xac\x79\x96\xd6\xf8\xde\xb9\xcc\xed\x11\x06\x57\x54\x05\x8c\xf7\x64\x51\x04\xb9\x7b\xdc\x47\x0a\x47\x69\x4a\xf3\x5c\x48\xdb\xe9\x7c\xb3\xd6\x64\x9a\xce\xab\x4e\x07\x76\x41\xea\xc2\x9a\xbe\x6b\x21\xd9\xa9\x1c\x30\xa8\xb2\x84\x23\x92\x4c\xee\x61\x2c\xde\x46\x0b\x93\xb2\x40\x23\x90\x18\x97\xf7\x32\x20\xa6\x52\x50\x25\xbc\xda\x59\xdf\x7a\x8c\x47\x48\x40\x63\xfa\x24\xde\x8a\xa9\x9a\x11\xea\x19\x22\x5a\xc2\x1b\x22\xa6\xc1\xc5\x45\x2a\x24\x3d\xf8\x94\x5f\xe4\xcb\x44\xd2\xf9\xc5\x45\x30\x2b\x8a\x57\xa8\xeb\x03\x6c\x4b\x0c\xd7\xc4\x53\xe1\x6a\x2f\x8f\xeb\xbd\x5e\x59\x5a\xbc\x89\x18\xcf\xd7\x34\x55\xe7\x62\x23\x53\xcd\xdf\xee\xa4\x74\xed\xa3\x6b\x8f\x0c\x4a\x2b\x5c\x9c\xc1\x6b\x78\x00\x4f\xc9\x4e\x51\x78\x49\x44\xf4\x0b\x4d\xae\x5f\x27\x6b\x78\xd6\xa5\xd6\x7c\x19\x86\x87\x3c\x31\x98\x21\x15\x73\x7a\x18\x29\x9a\x2b\xf4\x14\xbd\xc4\x18\xde\xef\x5a\x6d\xd4\x6c\x56\x37\x9e\x78\x33\x55\xb3\xa2\x40\xfa\xc7\x31\x68\x7d\x42\xe8\x84\xc6\xdb\x12\x97\x18\x05\x37\x54\xe6\x4c\xf0\x3c\x80\xe9\x0c\x5b\x85\xd5\xd6\xa5\xc5\xc1\x77\xd1\x0f\xd1\xf7\x01\xac\xc4\x9c\xc6\x81\x65\x95\x02\x48\xc5\xfa\x4e\xb2\xab\xa5\x8a\x83\xff\xf7\xff\xe9\x3d\x1c\x3e\x1c\xf6\x9e\x52\xce\xf2\xde\xdb\x4d\xbe\xbc\x4e\x24\xbd\xe9\xa1\x2f\x99\x60\x52\xa4\xd7\x91\xdc\xe0\x40\x37\x84\xe1\x09\x19\xc2\x73\xc3\x99\x45\x32\xe1\x73\xb1\x42\x18\xbe\x74\xd1\x16\x6b\x2f\x82\x82\x81\xdb\x60\x95\xa2\x51\x4d\x82\x20\xd6\xdb\x0d\x5f\x04\x03\x34\x18\x3c\x19\x3c\xc7\xd5\x34\xa2\xef\x7e\xc0\x25\xfc\x41\xde\xa3\xe0\x9a\xde\xe5\x01\x86\x0f\x5d\x93\xf4\x87\x05\x87\xfe\x21\x5f\x2c\x81\x7b\x41\xb6\x25\xfc\x5a\x4f\x8a\xa6\x01\xcf\x2c\xa7\xf2\x93\xd1\x63\xfe\x0a\x3f\x93\x9f\x34\x86\x82\x1f\xc9\x4f\x1a\x3d\xc3\x2f\xe4\xa7\x28\xa7\x6a\x7c\xd6\x0d\xf3\x5f\xec\x4a\xf8\xc9\xac\x61\xa0\x25\xbc\xee\xea\xca\xcf\x55\x2e\x5c\x14\x1a\xdf\x3e\xe8\xca\xf5\x63\x9d\xab\xb4\x8a\x02\xdd\xb1\xdf\xc8\x07\x14\x18\xb5\x40\x80\xc7\x2f\xa6\xbf\xcd\x48\x7f\x08\xf7\xf4\xe6\x08\x29\xf8\xed\x6b\x1d\xd1\x68\xf1\x37\x3c\x51\xd3\xdf\x66\xf1\xbd\xfd\xb0\x99\x4a\x73\x66\xf7\x3b\x28\x45\xb6\x39\x55\xf1\x19\x68\x0c\xff\x1a\x96\x49\x1e\x3f\x00\xca\x17\x42\xa6\x34\xee\x28\xfe\x40\x73\x35\xaf\x35\x65\x39\x43\x4a\x6f\xc5\x52\x97\x54\x54\x3e\x13\xb2\x2b\x7f\xf3\xc4\xdc\x70\x06\x63\x8b\x87\x29\x2e\x0a\x24\xc9\x6b\x44\x31\x36\x52\x53\xbf\x93\xed\x79\xc9\xb5\xac\x95\x28\x76\x99\xd1\x9e\xa4\x29\x65\x37\x54\x82\x66\x7c\x06\x41\x4f\xd2\x3f\x36\x4c\x36\xf0\x5d\x4f\x96\x65\x09\x54\x75\x5b\x44\x29\x43\x9d\x40\xea\x07\x37\x42\xe0\xc4\xad\x3a\xc7\x0f\x58\xae\x10\x79\x2e\x0e\x8f\xef\xd9\x96\xc0\xa0\xb2\xa4\xe9\x1b\xea\xda\x4f\xa2\x0d\xcf\x93\x85\xe6\xb0\xab\x94\x9a\xc5\x85\xbc\x4e\xe5\xe2\x5d\x22\xaf\xa8\x7a\x4e\xd5\xb8\x03\x6d\x18\xcd\x48\x6e\x3b\x50\x61\x32\x5a\x14\xb7\x88\x41\xc0\x93\x15\x0d\x70\x51\x1c\x55\x2f\x7a\x45\x48\xc4\x70\x94\x5b\x8c\xc6\xa3\x4f\x82\xf1\xaa\x86\xaa\x5a\x8d\x2b\x02\x73\x36\xd1\x27\x44\x4c\x50\x3a\xe9\xe7\x61\xa8\xf1\x77\x18\xa2\x0d\xe9\x0f\x71\xec\x0e\xf0\x74\x1a\x6c\x26\x06\xb5\xb3\xf8\xc8\x8e\x17\xe3\xb8\x4a\x7a\x85\x74\x42\x89\x51\x85\x84\x6b\xa3\xb2\xc0\x6f\xe4\x00\xf6\xd9\x8d\x2e\x9e\xd2\x88\x6f\xd4\x08\x12\x7e\x0c\x45\xf1\xd4\xbe\x97\xd8\xa0\x1c\xa9\x88\x00\xae\xba\x90\x4c\x47\x85\x13\xe5\x4e\xbd\x4a\x10\xaa\x7b\x2b\x25\xf2\xca\xf0\x58\x5e\x1f\xf0\xe8\xe1\x84\x2b\x24\xd5\x54\xcd\xb4\xe8\xa7\x90\x26\x53\x38\x36\x09\x61\x68\x7e\xa6\x74\x56\x14\xc2\xbc\x0b\xfb\x5a\x02\x53\x16\x0f\xa6\x94\x65\x90\xb8\x97\x45\x26\x84\x84\xb4\xab\xb7\x3d\x77\xaa\x48\x06\x0a\x4f\x86\x31\x52\x8f\x87\x93\x44\xc5\x4c\x61\x4d\x6d\x60\xe3\x6a\x58\x31\x0e\x79\x67\x79\x5d\x60\xa3\x90\x11\x22\xe0\xef\xc3\xe1\xdf\x46\x7f\xff\xfb\xc3\xef\xff\xfa\xb7\xbf\x0e\xff\xfe\xf7\x11\x8e\x87\x25\x2c\x7c\x1d\xc9\x67\xc8\x1a\xf5\xad\x3b\xeb\x6b\x9f\x07\x39\xc5\x05\x30\x72\x87\x8c\xb5\x5c\xae\x10\xf3\x27\xa0\x90\xee\x80\xd2\xaa\x4d\x4c\x57\xaa\xed\xf7\x68\x38\x59\x28\x24\x07\x14\x86\x38\xce\x14\x92\x9a\xf6\x1b\x33\x15\xa3\xd6\x0c\x43\xd9\x27\xd2\x1d\x93\x24\x8f\x53\x73\x54\x8a\x04\x61\xd3\x74\x30\x98\xe1\x3e\x11\xb8\x92\x8d\x8d\x1a\xb6\xca\x98\x0e\x06\x26\xaf\x2a\x8a\xb4\xc7\x78\x8f\xe1\x30\x64\xd3\x74\x66\x0c\x2c\x3c\x70\x8a\x22\x2d\x8a\xa1\x17\x45\x55\x18\x1e\x8c\xca\x12\xe6\x8a\x6c\x19\x4f\xb3\xcd\x9c\xe6\xf1\xda\x1c\x1e\x03\xe3\x73\xfa\xf9\x74\x61\x5e\x47\xb8\x8c\xdc\x3b\x2c\x77\xd7\x8b\x13\x66\x2c\x87\x2a\xc8\x10\x98\x3f\x1f\x32\x67\x43\x1c\xf7\x6f\xd1\x0b\x90\x38\x0c\x6f\x11\x37\xbf\xac\x3a\x2c\x6a\x1d\x06\x3d\x16\x63\x6c\xb2\x10\x3a\x15\x7a\xb0\x61\x88\xfe\xff\x73\x85\x18\x48\x5c\x14\x55\xa1\xda\x28\xb1\x84\x1b\x45\xa6\x41\xe3\x7c\x27\x80\xa0\x2d\x52\x04\x10\xb0\xbc\x71\x5a\x19\x40\xd0\x25\xab\x06\x7a\x4f\xbe\x12\x69\x92\x51\xbf\x33\x1b\x9b\x34\x70\xc2\x54\x30\x83\x3b\x45\x6e\xcc\x39\x6c\x9a\x28\x14\xd8\x7e\xdb\x3a\x6d\x0b\x01\x86\x95\xd2\xbc\x6e\x27\xaf\xff\x26\x59\xd1\xbc\x28\xba\x44\x50\x85\x14\xdc\x69\xba\x07\x57\xf7\x97\xb7\xec\x42\x5e\xc2\xa5\x22\x42\xa1\xe0\x8c\x2e\x32\xcd\x81\x43\x20\x6e\xf9\x4f\x86\x15\x68\xd7\x6e\xb1\xfa\x4a\x45\x96\xcb\xc6\x20\xc9\x95\x8a\x16\xd5\x62\x9c\x50\x3f\x16\xa9\x3f\xc7\xb4\x84\xdb\xdd\xf9\xad\x4e\xfa\xc8\xa5\xd2\x6b\x9e\x93\xb7\xd1\x02\x04\xf9\x1c\x2d\x80\x91\xe1\x98\x3d\x92\xfe\x34\x8f\x0d\x06\x95\x49\xe5\x94\xcd\xc6\x9a\x90\x26\x46\x51\xa4\x20\x01\x81\x28\x24\x58\x0f\xf1\x44\x91\xc3\x7f\x2b\x3e\xd6\x28\xf1\x63\x74\x08\x17\x9d\x0b\x8b\x9c\xab\xe9\xa9\xde\x40\xb3\xaa\xd3\x84\x7c\x56\x45\x21\xfb\xe4\x93\xd2\x64\x60\x1f\xbd\xd1\x09\x43\x14\xc7\xfd\xbe\x96\x17\x4f\x15\xb9\x50\x91\xd5\xe4\xb2\x2f\x9d\xdc\x6c\x25\xdd\x44\x92\xae\xb3\x24\xa5\xe8\x44\x41\x10\x05\x9a\xe3\x7a\x25\x6e\xa9\x3c\x4e\x72\x8a\x70\x09\xe7\xa6\xae\x79\xa2\x12\xcd\x47\x7d\x32\x6f\x6f\x8e\xde\xbd\xfc\x70\x42\x82\x37\x01\x7c\x36\x09\x6f\x4f\x5f\xfd\xf6\xec\xe5\xab\x57\x24\x78\x1b\xc0\xb1\x4e\x82\x77\xca\x40\xeb\xed\x3d\x5b\xc7\x5a\xa4\xc1\x46\x4b\xdd\x86\xea\x41\x4e\x54\x64\x79\x50\x58\x10\x15\x69\xee\xc7\xa8\x5a\x49\x3e\x11\xf1\x62\x22\xa6\x1b\xc3\xfb\x6f\x34\x77\x11\x23\xfb\xba\x2d\x71\xe3\x20\x5c\xcf\x9a\x39\x49\xb5\x02\x64\x42\xe8\x94\xcf\x80\x11\xd5\x24\xad\x13\x94\x92\x77\xca\x1c\xa8\xe1\x30\x4c\xdd\x41\xb3\xd4\x39\xfb\xc7\x0a\xe5\x13\x1e\x6f\x06\x68\x31\x09\xa2\x20\x0e\xfe\x2d\xc0\x03\x6e\x8d\x4e\x52\x3a\xc7\x61\x58\xb1\xd8\xd6\xb4\xd7\x01\x3f\xa9\x89\x74\x6d\xec\x79\xab\x50\xa2\xc9\x21\x52\x51\xbe\x4c\x56\x45\xc1\x34\x16\xd0\x8f\x38\x0c\x8f\x50\x02\x81\x7e\x0e\x8c\xfc\x47\x4d\x87\x20\x31\x5c\x20\x1c\x29\xd2\xef\x7f\x6d\x33\xdc\x23\xb5\xf7\x3d\xd3\x62\x39\x6c\x4b\x24\x5f\x29\x72\xa4\xc2\xb0\x6f\x13\x4d\xfb\x61\x18\xe4\xe6\x6d\xd7\x96\xbb\xb6\xd2\x7a\xa3\xc8\x91\x94\xc9\x5d\xc4\x72\xf3\xdb\xb5\x81\x03\xf3\xc5\xa9\xb4\x4a\xb8\xee\x24\x25\x4e\xb9\xe5\x94\x4d\x67\xca\xcb\xca\x9a\x89\xbf\x1f\x2b\xdc\xe8\x0a\x5f\x2b\x92\x4c\xba\x44\x6b\x46\xf3\x1d\x75\x81\xde\xe8\xf5\xf1\x3c\x70\x72\x66\xb6\xad\x20\xdc\x6d\x53\xb3\x6b\xc5\x63\x36\xc6\x56\x82\x95\x84\x4f\xd9\x60\x30\x03\x3a\x95\xb3\xa6\x30\xff\xc0\x62\x19\xaf\x6d\x09\xa0\x7a\x74\xda\x93\x00\xc3\x53\xa5\xd9\xf3\x97\x27\x17\x6f\xcf\x4e\xdf\x9d\x06\x18\x5e\xaa\xa6\x79\x41\x09\xcf\x3a\x79\x92\x47\x56\xe9\xf1\xd8\x70\xa9\x8f\x3e\x1e\xfa\xd7\x12\xde\xb7\xca\x6b\x09\xf9\x77\xe2\x9b\x8d\xe6\x62\x95\x30\x1e\x86\x5a\x54\x39\x4a\xb5\xd8\xf8\xab\x57\x43\x2e\xd5\x2a\x5b\xb0\x8c\x06\x4d\x35\x81\x39\xc9\x06\x3a\x7e\xaf\xc8\xef\x2d\x4d\xa4\x8a\x6e\x25\x53\x14\x3d\x53\xc8\x32\x7c\x51\x9a\x09\xbd\xc9\xfd\x99\x73\xb4\x4e\x24\xe5\xea\x17\xa3\x0b\x8f\x6c\x23\x15\x68\xec\x01\x3f\x2d\xd1\xef\x38\x46\x88\x92\x53\x14\xb0\x85\x34\x6c\x27\x8e\x72\x75\x97\x55\x26\x37\x24\xe0\x82\xd3\x00\x1e\xa8\x28\x59\xaf\x29\x9f\x1f\x2f\x59\x36\xd7\xf3\x41\xa3\x5c\xa6\x9e\xb5\x0e\x3e\x25\x37\x89\x85\x41\x1c\x60\x40\x8a\x18\xc4\xac\xea\x1e\x78\x10\xe0\x48\xac\x29\x47\xba\xc7\xf5\x08\x2a\xf8\x3c\x73\x4b\xaa\x35\x24\x50\xd1\xb3\xc6\x8a\xd0\x04\xcc\xe1\x6b\x79\x70\x30\xc6\x8e\xa3\x7d\xdf\xb0\xc7\x99\xde\xa8\xa9\x9c\x55\x18\xf7\xbd\x42\xb8\x1c\xbf\x98\x3e\x55\x33\x6f\x1e\xf0\x44\xb5\x6d\x76\x9a\xcb\xb7\xc2\x6c\xbe\xbc\xd7\x97\x4e\xd0\xcb\xa6\xd1\x8f\xd1\xfb\x48\x23\x76\xbe\x54\xd0\xfa\x64\xe0\x2b\x4d\x83\x0a\xc7\x92\xe8\x1e\x40\x25\x1c\xd3\x89\x8c\x5f\x3b\xce\x09\x9e\x2b\x43\xdf\xe0\x8b\x6a\xe9\xba\xff\x50\xe4\x4f\x0e\x38\xc2\xf0\x7e\x1a\x3d\xb9\xff\x13\x72\xc7\x23\xf1\x74\x06\x1f\x0c\xa9\xee\x12\xbd\x55\x18\x56\x36\x35\x76\x06\x67\x01\x21\x5f\x94\xd7\x9b\x4c\xba\x4f\x41\x7a\xcf\x8d\xee\x7b\xe7\x18\xa4\xf7\x87\x72\xca\x79\x5c\x96\x5a\xae\x7c\xae\xd0\x9d\x41\x22\x25\xbc\x50\xe4\x3d\x0a\x6e\xaf\xf3\x00\xc3\xaf\x8a\x88\xc8\x62\x2f\xf8\x49\x91\x57\x6a\xf2\xab\x8a\x7f\x55\x61\xf8\xab\x8a\xdc\x69\xfa\xb9\x11\x44\x8b\xe2\x0b\xfc\xdc\x89\xa2\x6e\xd1\x0b\x65\x84\x74\xa4\x11\xe5\x2d\xfa\x55\xbf\x4d\x5e\x68\xee\x9e\xfc\xaa\xff\xc6\xf6\xf9\x27\x2d\x00\x5a\x3c\x19\x0c\x34\x63\x61\x92\x4b\xf8\xd1\x40\xe4\x67\x55\xc2\x2f\xca\xf0\x09\xbf\xd9\x9f\xdf\x15\xf9\x59\xa1\xa0\xe9\xc1\x82\x41\xed\xbb\x93\x68\xec\x7c\x8b\x14\x91\x13\x15\x37\xfd\x70\x7e\x57\x38\x0c\x7f\xd3\xe8\xf0\x77\x05\xdb\xf6\x21\xc8\xb0\x3a\xf0\xc0\x25\x50\xba\xab\xd1\xec\xd0\x79\xed\x4b\xd1\x5d\x0a\xce\x8a\xf5\x6f\x69\x38\xe5\x7e\xa7\xd9\x02\x51\xaa\x17\x73\xbd\x42\x6b\x5d\x7f\x7e\xcb\x9c\x5e\x2f\x4d\x72\xda\x1b\xc6\xbb\x72\x45\xc3\xde\xcb\xfa\x1d\xe0\x72\x6c\xb2\x8e\xf6\xb2\xca\xbd\xbc\x20\x7d\xee\x87\xfb\xb9\x1b\x76\x32\x75\x7e\xe0\xbe\xc4\x77\x5d\x25\x40\x74\x96\x01\x81\x2b\xc3\xc8\xae\x9e\x27\xeb\x75\x76\xa7\xf9\x3b\x2f\x35\xea\xb5\xc9\xa9\x99\xf4\x7c\x4d\x53\x46\xf5\x02\x15\xb4\x8b\x01\xf2\xc0\x7d\xa3\xd7\x7e\x8b\xa3\xeb\x37\x0f\x24\x1a\x6c\x3e\x36\xec\x9f\xa5\xca\x61\xd8\x7f\xa3\x90\x6c\xb0\x3e\x93\x15\xd2\x52\x86\x3d\x27\x22\x48\x12\x39\xe5\xd4\x48\x13\xd2\x9f\xdb\xc6\xd5\x13\x70\x7a\xdb\xb0\x44\x9f\x98\x3a\x63\x89\x91\x45\x34\xc3\x58\xe3\x18\x46\xc9\x74\x66\xe4\x0f\x48\xba\xdc\xc6\x46\x84\x68\x32\xfa\x50\xff\x70\xf2\x9d\xfe\x11\xe4\xaf\xfa\x87\x91\x1f\xf4\x4f\x42\xbe\x37\x06\x1c\x6c\xcf\x31\x2a\x85\x0d\xe4\xb0\xa8\xd9\xec\x0c\xd6\x30\x27\xd7\x0a\xa5\x18\x6e\xc8\x12\xcd\x31\xdc\x11\x49\x91\xce\xf6\x1d\x86\x95\x96\x38\x6f\x2a\x89\xf3\x8a\x0c\xe1\x92\x2c\x8a\x42\x50\xb8\x25\x74\x72\x89\x52\x58\xe1\x58\x9a\x87\x21\x76\x52\xfe\x78\xf5\xf8\x6a\x7c\xe5\xe4\xc3\xa4\x28\xae\x34\x63\x78\xa3\x21\xb2\x26\x77\x28\x23\x37\xd3\xab\x19\x5c\xc1\x1c\x83\xc2\xd8\x98\x05\xdf\x4e\xaf\x66\x64\x5d\xb9\x2b\xad\xb1\x5b\xc6\xca\x2d\x63\xbf\x76\xfa\x43\xbb\x96\xbe\xf7\x6b\x29\xb3\xef\x3f\xf8\xf7\x2b\xbf\x3a\x99\x33\x31\xbe\x85\xac\x36\x20\xaa\x84\xd9\x51\x25\xd4\x4d\x0e\x46\x31\x2f\x0a\x31\x11\xf1\x6d\x59\x42\x4a\xc9\xd6\x99\xc5\xc5\x09\x45\x43\x0c\xab\x64\xad\x9f\x46\x18\x16\x2c\x53\x54\xea\x97\x87\x18\x72\xb1\xa2\xfa\xf1\x3b\x0c\xf4\x86\xca\x3b\xfd\xfc\x57\x9d\x87\xcf\xf5\xe3\xf7\xf6\xf1\xa5\x96\x62\xf5\xfb\x0f\xb8\x84\x0d\x25\x29\xf5\x46\x77\x90\x53\xcd\xc9\x2c\xd9\x7c\x4e\x79\x80\x61\x41\x1d\xc6\x7a\xeb\xcf\xae\x02\x0c\x99\x51\x91\xe5\x54\xc1\xda\x2b\xcb\xac\x5e\xcf\x63\xc3\x00\xc3\xbc\xc3\x8d\x70\x49\x6b\xcc\x7c\x43\x0d\x57\xf5\xe3\xf9\xe9\x9b\x00\x9c\x0a\x8a\x2d\xee\x02\x0c\x77\xd4\x88\x09\x2b\x6a\x50\xe6\x15\x25\x1f\x34\x61\xbb\xa4\x24\x8f\x16\x70\x4b\x35\xa2\xb7\xbc\xaa\xde\x4b\x27\xe6\x5d\xac\x0f\xea\xa4\x0b\x9b\xc5\xd4\x78\xa0\x84\xfb\x72\x20\xe9\x15\xcb\x95\xd4\x2d\x9c\x36\x2a\x31\x39\x6c\xde\x46\x8e\x73\x5a\xd3\x93\x4f\xba\xd7\x3f\xbb\x73\xd8\xcf\x94\xf4\x3f\xd1\xa2\xe8\x7f\x6a\x38\x17\xee\xbc\x46\x1a\xc4\x86\xc3\x81\x63\x4a\x92\x30\xbc\xef\x3c\xed\x89\x42\x2b\x8a\xb6\xe5\xd7\x4e\xce\x56\x56\xe1\x65\xb3\x58\x0c\xff\x37\x73\x96\x56\x62\x7b\xa2\xb6\x77\x2e\x63\x6d\x4f\xee\x28\x9a\x53\xa0\x78\xcc\xc3\xd0\xf1\x36\x73\x3a\xa5\x33\x58\x51\x97\x11\x78\x18\xaa\x3e\x21\x73\x1a\x86\x2b\x9b\x5b\x63\xc5\x78\x45\xe1\x5d\x27\x86\x22\xb7\x54\x13\xbd\x27\x0a\x2d\x1b\xa3\xad\xa8\x42\x46\x91\x04\xe7\x19\xe6\x96\x01\xa8\xe4\x2a\x56\x30\x77\x87\x7b\x4c\x70\x4d\x9e\x20\x29\x0a\x24\xa3\x46\x2a\xa1\x18\x64\x09\x6f\xa9\xa6\xd6\x1d\x7c\xf2\xae\x6c\xa2\xca\x2e\x76\xa3\x3a\x35\x6f\xf8\x7a\x2e\x69\x09\x47\x1d\x04\x96\xd8\x71\x1f\x51\x74\x42\x2d\x34\x8c\xc0\x60\x61\xe7\xce\xe0\xfc\xc0\xcc\x51\xdc\x2d\xba\xd5\xe0\x99\x20\xd9\xd0\xd5\x4e\xcc\x01\x63\x4e\x71\x18\xaa\x69\x4e\x67\x53\x3e\x33\xc7\x67\xf6\x91\xf4\x47\x9a\xb3\x7b\xa2\x79\xb4\xa6\x0d\xc3\x02\x0d\xa1\x3f\x32\x4e\x4b\xbe\x7c\x51\x98\x69\xc9\xed\x31\xda\x56\x4b\x69\x75\x2d\x43\x0c\xc7\xfa\x2b\x07\x89\x71\xbc\xf2\x8f\x25\xbc\xda\x9d\xa6\x6a\x0c\xd2\x2a\xe6\x8c\xd4\x23\xb1\xd7\x6e\xbc\xa6\x4d\xc5\xd1\x86\x22\x0e\x2d\x47\xb5\x44\x53\x11\x87\xa0\x34\x5b\x59\x14\x47\x6e\xb1\x98\x73\x52\x6c\x0c\xd2\xdf\x74\xa1\xfe\x2b\xa4\x8c\xd4\x2a\xc9\x25\x6d\x99\xe2\x7a\x1d\x9b\x79\x77\x40\x37\xa0\x34\x56\xba\xb7\x06\xfa\xc6\x36\xb7\x8f\x64\x51\x68\xa6\xc7\x96\x33\xcf\x26\x5b\x51\xb8\x44\x0b\xe6\x25\xcb\x0d\x60\xe8\x4c\x93\x3f\x2d\x64\x76\xaf\x55\xa3\x87\xab\xa7\x92\x2d\x90\x34\x6b\xdd\x57\xcc\x4d\xc5\x27\xfa\xc1\x9b\x61\xdd\x51\xc3\x2c\xf8\x2e\x8b\x76\x56\x69\x3b\x20\xdd\xb4\x14\x05\x12\x8d\x95\x60\x66\x49\x94\x25\x9c\x75\x82\x87\x5a\x4e\x15\x24\x99\xce\x1a\xf0\xa7\x6d\x2f\x34\xd3\x9a\x32\xad\xbd\x30\xbf\xd2\x6a\xfb\x94\xd5\x6d\x97\xf0\xba\xab\x72\xbb\x96\x41\xea\x56\xe8\xe4\x84\xc6\xb6\x29\xde\x6e\x4a\xb6\x9b\xea\x57\x6d\x51\x33\x0f\x73\xfb\xc2\x6d\x83\x66\xa3\x9b\x46\x79\x39\x46\x47\xaa\x28\x10\x55\x08\x2d\x69\x53\x28\x75\xe6\xa7\xbd\xd6\x6e\xdb\x3f\x98\xb1\xa8\xa0\x66\x27\x9b\x7a\x4a\xec\x8c\xac\x77\xb5\xec\x0d\xad\x4a\xf5\x69\x3a\x9c\x4d\x1c\x7f\xda\x4c\xf3\xc4\x1d\xa8\x39\xdd\x03\xd9\xb6\xac\xaa\x57\x9d\xb3\xdc\x38\xd1\x03\x85\xe6\x92\xb2\xcf\x7a\x5a\xcd\xa2\x44\x8d\x25\x66\x76\xf0\xb1\xc3\xc0\x76\x6f\x6a\x79\xa3\xb2\x18\x0d\xc3\xcf\x34\x0c\x8f\x1d\xf2\xdc\x63\xc8\x73\xaa\x62\x59\x62\x78\xe7\xdc\x3b\xf1\xb7\x9e\x7e\xf4\xd6\xfe\x98\x43\x25\x57\x7a\x1a\xa8\xc6\xb9\x10\xb4\xc4\x97\xa0\xd3\x85\xf1\x1d\x45\x06\x0e\x76\xcd\xe4\xd1\x82\xbc\xa1\xf0\x36\x5a\x90\x23\x0a\x9f\xa3\x05\xb9\xa6\xa0\x05\x45\x43\x54\xc9\x19\x85\x2b\xfd\xfb\x9a\xc2\x8f\xfa\xb7\xbb\xbe\x9f\x95\xab\x10\x92\x30\xd4\x14\xab\x89\xfe\x21\x68\xe0\xf1\x60\x1f\x06\xdd\x54\xad\x1a\x5f\xa3\x70\x59\x9a\x71\xce\xe9\x7d\xca\xe9\x37\x14\xb6\xf6\xe4\x2c\xee\x0f\x4b\x8c\x31\xbc\x55\x68\xeb\xc2\x27\xf4\x87\x70\x2b\x93\xb5\xfe\xb5\xaa\xb9\xb8\x7f\xa4\x20\x5f\x26\x2b\xfd\x50\xc2\xd6\x05\x25\x58\x6a\x02\xb4\xa1\xe8\x4c\xa1\x73\xba\xe3\x05\xda\xdf\xdf\x5c\x52\x39\x86\x45\x93\x2c\xff\x4c\xb6\x25\x1e\xdf\x22\xbb\x65\x7e\x51\xfa\xc1\xd3\x66\x0d\x46\xb3\x5f\x4b\xb7\x6b\x75\x17\xad\x3a\xb3\xa6\x8a\xb9\x4a\x54\xbb\xa3\x25\x68\xf6\x2e\xde\x6f\xbf\x92\xc8\xc6\xc6\x9a\xe5\x82\x36\xcc\x59\x2e\x34\x3d\x77\xe8\x7e\x49\x51\x4d\x89\xcd\x07\x22\xe1\x94\x4e\xe5\x8c\x50\x8d\x39\xae\xe9\xdd\xee\xb9\x2b\x5b\xa0\xfe\x5b\xda\x65\xe7\xa2\x9a\xe2\x9f\xa3\xbd\xae\x03\xa7\x7a\xd0\xbe\x03\xa7\xd4\x48\xbb\x9b\x9c\xda\x15\xd9\x9c\x68\xcd\x28\x0d\xed\x37\xb6\x5a\x67\x74\xf7\xdb\x48\x4f\x77\x13\x38\x4e\x65\xd3\x01\x1c\x37\x8b\x49\x09\x5b\xab\x66\x89\x3b\x8f\xea\x1a\x8a\x91\x27\xc6\xa2\xe9\x15\x45\xe6\xc1\x28\x48\xda\x96\x38\xf1\x11\x85\x3d\x05\xe2\x2b\x0a\xf7\x19\x25\xc5\xd7\xf4\x9b\xbb\x5b\x1a\x56\x6e\x57\x61\x12\x9f\xed\xd6\xee\x34\xb7\xf1\xeb\x6f\xac\xba\xcd\x45\xea\x7d\x8b\x46\xd6\x0d\x6a\xdb\x5d\x71\xc7\x6e\x36\xa5\xae\x95\xd5\x9a\x60\xb8\xd1\x08\xaf\xd9\xb4\x65\xc7\xf7\xc7\x54\x14\xed\xd6\x2d\xda\x5e\x52\x54\x19\x10\x4d\xb5\xa0\x39\x0b\xfa\xe4\x86\x22\x7b\x38\x1a\x6c\x4b\xfb\xba\x4d\x62\x55\x36\x13\x2a\x46\xcd\x75\xbf\xe2\xfe\xf7\x6c\x87\x2a\xc7\x04\x10\x64\xaa\x66\xc0\xc8\x68\xbc\x4b\x2c\x1e\xb3\x31\x16\x96\x6e\xd5\x84\x81\x0d\x06\x33\xeb\x47\x45\x28\x20\x6b\x45\x50\xd1\x14\x2d\x5f\xbb\xa5\x5f\x0b\xdd\xc6\xce\x60\x97\x97\xe8\x76\x03\x35\xee\x34\x84\x37\x18\x1d\x63\x65\x06\xba\xce\x7a\x7b\xea\x69\x15\xd3\x91\xde\x80\x37\xd4\xa9\x06\x8c\x46\x4f\x68\xd8\x8f\x9b\x48\x74\xba\xa0\xb3\xa2\x38\x6a\x23\xd6\x85\x16\x98\x1a\x52\x85\xb7\x65\x04\x45\x0d\x31\xa8\x44\xad\x17\x9a\x5a\x79\x95\xe4\x03\x0a\x4f\x29\xbc\xb4\xd2\x15\x4f\x6e\xd8\x95\x75\x8a\x0b\x36\x39\x95\x47\x57\x46\x5d\x5d\x14\x41\x00\xcf\xb4\x58\xb3\x96\x22\xa5\x79\x0e\xef\x29\x79\x46\xc3\xf0\x19\x8d\xbc\x75\x10\x3c\xa1\xe4\x3d\x0d\xc3\xf7\x34\xba\xf9\xdf\xe3\x27\x74\xf2\x94\x12\xf4\x80\x92\x27\xd4\x5b\x3e\x44\x01\xc6\xd3\xe1\x6c\xf0\x80\x4e\x47\xb3\xf8\x25\x35\x4c\xdc\x03\x4a\x5e\xd2\x68\x65\x34\x77\x87\x27\xf3\x2b\xfa\xf1\x10\x7d\x9c\x0f\xf0\x21\xc6\x45\x61\x72\x3e\x26\x7f\xfb\xab\x26\xb3\xad\x9c\xc7\x4b\x29\x56\x8d\xbc\x61\x88\x9e\x52\x62\xf2\x5b\x1e\xe1\x39\x25\x4f\x69\x18\x0e\x9e\x52\xf8\xb2\xab\x4f\xf9\xa3\xf3\x38\xeb\x39\x7d\x4c\xbe\x1f\x15\x45\x7f\x7f\xe5\xd2\x9a\x35\x42\xb4\xe5\xc3\xba\x2d\xf1\xf4\x0b\xed\xf0\x1e\xdc\x2e\x84\x88\x47\x65\x09\xa3\x3e\x21\x1a\xed\xa1\x27\x42\x64\x34\xe1\x38\x5a\x08\x61\x96\xf1\x07\x7a\x8f\xd5\xdf\x0b\x6a\xec\x8d\xe8\x0e\x67\x62\xfc\x3d\x4a\xf8\xa9\x63\xcd\xdd\xa2\x17\x4d\x3c\xfb\x42\x37\x38\xa6\x66\x7d\x6e\x4b\xcf\xe1\x4f\x67\x7a\x47\x70\xd2\xef\x6b\x52\x14\x1c\x1d\x1f\x9f\x9c\x9f\x9f\x9e\x9d\x07\x38\x0c\x69\x54\xbd\x82\x20\xfa\xfb\x10\x4f\xe8\x74\x38\x8b\x7f\xa5\x90\x9a\x84\x91\x4e\x18\xcd\xbc\x6e\xa4\xd9\x14\xe9\xf7\xe5\xde\x81\x92\xde\x4b\x61\xd8\x4f\xaa\x83\x77\xc7\xbb\x6d\xed\x2e\x8c\x0f\x46\xe5\x98\x4f\x3e\x68\x81\x61\xd4\x12\x77\x1c\x13\xf0\x2b\x2d\x71\xac\xf4\x7e\x18\x41\xe5\xf4\x2c\x5c\x90\x05\xf8\xd9\x2a\x21\x8c\x2a\x03\x7e\xa4\xe4\x0f\x8a\x02\xfb\x16\x60\xf8\x85\x92\x9f\x1a\xef\xe3\x26\xc6\xb2\x27\x4e\x60\xb6\x49\x13\x67\xfd\xa8\x39\xfd\x5f\xa8\x26\xac\x56\x3f\xd2\x65\x8f\x45\xfd\xee\xdd\xc3\x29\xa3\x49\x8d\x4b\x2a\x20\x99\x7d\x6b\x8c\xb1\xba\x65\x0e\x33\x23\x95\x81\xbb\xdc\x13\xfc\xed\xa8\xed\xa9\x49\xe3\xa8\xc0\x2f\x86\x51\x09\x0e\xa1\xff\xde\x52\xc9\x28\x49\x7e\xd3\xc3\xb7\xaf\x01\x06\x2a\x2d\x3c\xaa\x04\x29\x89\x92\x61\x48\xe5\x64\x5a\xc5\x20\xe9\x1a\xf0\xef\xff\xf2\x80\xbf\x05\xd6\x75\x9b\x7d\x22\xa5\x65\x65\x4c\x0f\xa4\x74\xf0\xe2\xd2\xa8\x74\x84\xdc\xb1\xa1\xe7\xd2\x92\xb0\xf1\xb7\x50\xd6\xa4\x28\x84\x6c\xf0\x02\xf7\xd2\xea\x4e\xee\x80\x4b\x74\xe7\x78\x01\xd7\x29\x26\xef\x09\xe3\x74\xa5\x59\x29\xeb\x7f\x3b\xb1\x67\x83\x1c\xb4\xcc\xae\xa5\x6f\xa5\x25\x72\x59\x7e\xb5\xc3\x7f\xde\xc5\xbc\xdb\x07\x09\x1a\x06\x24\xd6\xae\xe0\x52\x21\x8e\xc1\x9c\xb3\xa7\x64\x38\xf6\x36\x36\x8f\xd3\x31\xae\xa8\x19\x92\x44\x20\x0e\xd4\x1b\xc7\xe0\x30\x64\x12\x25\x36\x62\x91\x97\x54\xbe\x91\xdb\x6a\x4f\xcf\x99\xaa\x38\x8c\x6b\x7a\xd7\xc9\x50\x9c\xa9\x9a\x9d\xa8\x0e\xd7\x34\x70\xf9\xf6\xf8\xfc\xfc\x6c\x93\xd1\x57\x2c\x57\xf1\x10\x8e\xcf\xcf\xcf\xd5\x5d\x46\x9f\xd2\x34\x4b\x64\x62\x74\x41\x26\xf5\x83\x26\x6b\x3e\x53\xc6\x28\x57\x67\x34\x55\x2e\xe1\xe9\xe9\xeb\xf6\x9b\xe5\x87\xeb\xf7\x77\xe2\x9a\x72\xf3\x3a\x82\xa7\x89\x4a\xde\xc9\x84\xe7\x0b\x2a\x5f\x2a\xba\x72\xb9\x9e\xb1\xaa\x13\x2f\xde\xbd\x7e\x75\x94\x65\xc7\x22\xcb\x68\xea\xba\xa0\xd3\xf6\x12\x9e\x09\xb9\x72\xa7\xbb\x2e\xe5\x9c\xea\x1c\x75\xda\x6b\x3a\x67\x89\xab\xf6\x35\x5b\x51\xcd\x3d\x5b\xad\xf9\x10\x34\xc3\x37\x7f\x23\xe6\xf4\x75\xb2\xd6\xaf\x62\x4e\x5d\x17\xdf\x26\x4c\x8f\xef\x8f\x0d\xcd\xfd\xa0\xde\x66\x9b\x2b\xc6\xab\x07\x5f\xc7\xf9\x87\xe7\xaf\xcc\x5c\xbb\x6c\xe7\x1f\x9e\xbf\xd9\xac\x2e\xa9\xac\xdf\xdf\x26\x6a\x79\x4e\xaf\x1a\x09\x82\x71\x55\xbf\xb6\x60\x75\xfe\xe1\xb9\x85\x8d\x90\x1e\x30\xd6\x3a\xf9\xc9\x66\xb1\xa8\x6b\xd5\x53\x74\xbe\xa4\xd4\x57\xf3\x8e\x7e\x56\xef\x64\x92\x5e\x1f\x57\x93\x54\x25\xf9\x77\xb1\x49\x5d\x2f\x4b\x67\xe9\x28\x89\x98\x26\x72\x06\x1b\x49\x52\x19\x86\x69\xe3\x5c\x42\xf3\x64\x1b\x19\x86\x1b\x59\x23\x0d\x22\x25\xb6\x46\xe0\x1b\x09\x15\x5a\x03\xd9\xb4\x75\xaf\xf3\x6b\x1c\x63\x8e\xb4\xf3\xfd\x0d\xec\x59\x2f\xbb\x79\xbb\xfd\x15\x74\x56\x27\xad\x49\x68\xd3\xa9\x5d\xe1\xb5\x76\x29\x1a\x1a\xe2\xe5\x2d\xd8\x17\xf2\x2b\xc1\x01\xbf\x2d\xa0\xdf\x9f\x87\x0c\xdc\xda\x78\x57\x99\x24\xe8\xcf\x33\x57\xd8\x60\x21\x27\x0b\x19\x6f\x4b\x1c\x5d\x5c\x7c\x78\x7f\x72\xf1\xf4\xe4\xc3\xbb\xd3\xd3\x57\xe7\x17\xcf\x5f\x9d\x3e\x39\x7a\x75\xf1\xe2\xf4\xf4\xa7\x8b\x8b\xda\x91\x7c\x2d\x2d\x9a\x6c\x18\x61\x20\x85\x3b\x02\x59\x35\xa0\x8b\xd4\x54\xce\x40\xe2\x56\xb8\xaa\xb9\x6c\x06\x52\x72\x67\xdd\x1d\x81\xa1\x94\x99\xbb\xa5\xdc\x75\x02\x30\x4e\xaa\xde\x4d\xd0\x7a\xa1\x5e\xa4\x4b\x96\xcd\x25\xe5\x3b\x91\x31\x8c\x3b\xaf\xcb\x22\x93\xdb\xd7\x62\xbe\xc9\x28\x71\x0e\x45\xce\x50\x88\xda\x90\x59\xe6\x91\x74\x31\xf1\x72\x22\x11\x8e\xa5\xb3\xc4\xbe\x91\x64\xcb\xb5\x9c\xb6\x4e\x34\x1e\xdc\x55\x63\x94\xe5\xf8\x46\x46\x75\x86\xe8\x8a\xaa\x7d\x26\xb1\xdf\xdf\xe9\x53\xa3\x44\x09\xcb\xc6\x2e\x88\x92\xb9\x3d\x21\xe8\x82\x42\x35\x6c\xeb\x01\xd1\x2e\x28\xe9\x4a\xdc\xd0\xdd\xb2\x78\xeb\x2d\x72\x77\x2b\xd8\x29\x7e\x45\xd5\x7e\x59\x7f\x7e\xf9\x27\x65\x97\x49\x7e\x7f\x59\x1f\x9d\xa1\xae\x60\xa7\xf4\x66\x3d\x4f\xd4\x2e\x0f\x7c\x1f\xb4\x88\x6a\xbc\x80\x8a\x12\x53\x26\xf7\xbe\xa7\x8d\x32\xee\x0b\xa9\xf2\x60\x50\xd1\x6a\xa3\x92\xfb\x0a\x54\xdf\x48\x23\x9f\x2e\x64\x4f\xb1\xba\x8a\xb8\x2f\xa4\xca\x83\x77\xc6\xe6\x76\xcb\x3e\x74\xf4\xee\x6a\x01\xc5\xa8\xd1\xba\xca\x3e\x37\x35\x7f\x15\x3c\x55\x07\xab\x5a\xf7\xbe\xdd\x5b\xfd\x91\xa9\xf5\xab\xd5\x57\x30\xee\xa8\xde\x7d\xbb\xb7\xfa\xd7\x0e\x90\x5f\x6d\xa0\x31\x2b\x1d\x4d\x54\x5f\x4d\x23\xf7\x18\x79\xa1\x66\xe3\x70\x23\x5d\x20\x3f\x09\xab\x0e\xd0\xd9\xf3\x3c\x2a\xd1\x74\x06\xca\x9c\xb8\x8c\x57\x3b\x7b\xa1\x73\x29\x47\x92\xce\x37\x69\xcb\x33\xa0\x19\x6f\xb5\xda\x43\x88\xe2\xd2\x47\x9b\x12\x42\xf7\x7a\xb7\xfa\x37\x7e\x0d\x77\xa9\xed\x7d\xb9\xf1\xd7\xda\x6d\xd8\x3a\x0c\x10\xa2\xa4\xde\xc1\x48\x62\xdc\xd8\x24\x13\x39\x08\x0e\x83\x38\x08\x74\x9f\xf4\xdf\x76\x67\x3a\x76\x5f\x1d\x0e\x50\x79\xab\x6e\xe3\xc7\x6e\xb3\x6a\xbe\x93\x47\x2b\x33\x37\x79\x15\x84\x45\x18\x5b\xe6\x2a\xd9\xe8\x10\x65\xdd\x25\xe1\x45\xd6\xb1\x42\x95\x4d\xad\xc0\xd0\xca\x52\x57\x3b\x15\x33\x5c\x96\x66\x7a\x3c\x30\x60\x0f\x8c\x7e\x16\xef\x61\xd6\x4d\x58\x94\xda\x72\xc1\x98\x37\xf4\x87\xd8\xc7\x80\xa3\xb7\xbd\xa5\x34\x06\x22\x63\xe3\x50\xe4\x18\xe8\x49\xd5\x20\x11\x36\x6e\xc3\x15\x55\xc8\xdb\x17\x0d\xe1\x60\x84\x71\x85\xa3\x91\x9a\xaa\x2a\x1c\xc0\x0c\x04\x1e\x53\x3f\x02\xb3\x92\xab\xb7\xe6\x69\x1a\x08\xbc\xe5\xf5\x12\x54\x0d\x68\x50\x47\x3a\x77\x66\x88\x77\x8c\xb4\xb5\x58\xf6\xbb\x08\x92\xb4\xfb\xc6\xdb\x0b\x64\xcc\xc3\x90\x7b\xaa\x1a\x86\x2d\xea\x81\xe4\x6e\x0f\x58\x7e\xe6\x7a\x40\xe7\xff\xf9\x3e\xd4\xa1\x8f\x3c\xbd\xd0\x2d\x99\xf9\xb8\xba\x6f\x68\xf5\x04\x2a\x8d\x7e\xc9\xb6\xc4\xd0\xbf\x93\x61\x78\x3f\xe3\xe3\xed\xd7\xa2\x0f\x1b\x1a\x86\x3b\x7a\x6d\x5d\x54\x11\x42\xee\xbc\xc9\xff\xb8\xff\xbf\x0e\xff\xd2\xff\x5f\xff\xbf\xde\x5f\x7a\x37\x1b\xfa\xb9\x77\xf3\x5d\xf4\x7d\x34\x32\xef\x28\xc5\xd6\xa5\xed\xe4\x26\xe1\xbd\xdf\xc4\xc6\xa4\xfe\x43\x8f\x90\xe7\xb4\xf7\xfa\xe5\x3b\x9d\x70\xf8\xbf\x76\x9a\xb0\xcc\x38\x52\x5e\x61\xd6\xd0\x8a\x4d\x87\x33\xfc\x98\x3c\xc4\x2a\x5a\xb1\xcf\x8c\xa3\xed\x25\x5d\x08\x49\x8f\xad\xee\x5a\xcb\xc4\x95\x57\x97\x31\xb1\xac\x26\xe0\x82\x71\xa6\xc6\x7b\x29\x6d\xa0\xed\x43\x4a\x45\x26\x97\xfd\x99\x4c\xe5\xcc\xaf\x35\x9b\x82\x35\x9b\xdb\xd4\x55\x36\x43\x54\xca\x4a\x99\x6b\xa6\xf7\x81\x30\x47\x31\xf9\x58\x33\x51\x42\xba\xf0\x22\x0f\xcc\x73\x67\x3c\x36\x9f\xcd\xfe\x22\x1c\xbb\xa7\xd8\x9b\x8e\x86\xa1\x7f\x72\xd5\x78\xfa\xea\x2a\xdd\xf9\xaa\xf1\xc1\x9d\x24\x0a\x97\xa8\x9e\x5f\x5c\x71\x76\x6b\x23\x23\xed\x6d\xf8\xe9\xcc\x1f\xdd\xeb\xe6\x25\x4b\x55\x9d\x83\x9b\x90\xb9\xfd\x91\x67\x18\x53\xb1\x5a\x31\xa5\x18\xbf\xaa\x22\x56\x5d\x78\x26\xe2\x7e\x36\xd3\xe6\x38\xdf\x5c\x6a\x11\xfe\x52\x33\x03\x1e\x6b\x5d\xd4\x0c\xc5\xfd\xc5\x6f\x65\xb2\x5e\xd3\xf9\x73\xc7\x48\xdc\x9f\xd1\x61\x12\x83\xb8\x56\xd2\x9c\xbb\x35\xd3\x2b\x82\xf2\x3a\x59\x7f\xa5\x96\xbc\xab\x9f\xb7\x5a\x94\xa2\xf2\xc3\x6b\x53\xf9\x9d\xf4\x35\x27\xd7\xd4\xf8\x7c\xb8\xce\x1d\x27\xe9\x72\x37\x14\x5d\x1d\x3f\xc7\x06\xfe\x01\x17\xf9\xc9\x07\xb3\x82\x84\xf8\x50\x2c\x2b\xbd\x82\x9b\xdf\xba\xfd\xaa\x98\x8f\x09\x64\xdd\xd9\x1b\xa5\xef\x93\xe9\x92\x46\x09\x63\xfd\xe0\xf8\x7b\x3d\xdb\x84\x8f\xad\x87\x5d\x0b\x58\x06\xbf\x3b\x61\xe0\xd4\x32\x1c\x90\x42\x3d\x6f\x8d\x5c\x18\x2e\x7c\x06\x4d\xad\xf6\xa5\x1f\xd5\x8c\xb7\x6e\x0e\xf6\x50\x7d\x9c\x10\xcd\xe9\x8d\x12\x22\xcb\x27\xf5\x63\x7c\x27\x23\x2b\x44\x54\x49\xb8\x8d\xa7\x32\xe3\x6a\x1d\x5d\xb8\xcf\x2f\x84\xb8\x26\x99\x84\x4c\x46\x74\xa5\x31\x89\x46\x54\xb1\xde\xc0\x01\x28\xac\x93\x05\x77\x89\x4a\x26\x37\xd4\x59\x2e\x25\x8a\x06\x6d\x2b\x0e\xe5\xfd\x37\xce\xf5\x47\xd7\x5b\x15\x55\x6b\x62\x97\xaf\x69\x37\xe8\x57\x73\x60\x67\x06\xc3\x76\x2d\xe9\x9a\xf2\xb9\x91\x81\x9b\xf5\x58\x96\xf2\xeb\xb5\xd9\x6d\xd3\x5d\x17\x2e\x9d\xeb\x1e\x5c\x4a\xb2\x35\x23\xe9\x92\xbb\x2a\x54\x75\x2b\x77\xa5\x7c\xef\x8d\x85\x14\x7e\x34\xd4\x88\x20\x0c\x35\x3d\x33\x4d\x4c\x34\x45\xcd\x97\x6c\x61\x8e\x02\xa9\x37\xa4\xa8\xc3\xf0\x21\xaf\xb5\x6d\x56\x33\x96\x8f\x0f\x46\x9a\x50\x6a\x6c\x9e\x52\x24\x61\xd4\xc4\x96\x27\x4e\x58\x56\x7f\x82\x32\xfe\x14\x29\x7c\x1b\x46\xf8\xe6\x6d\xbf\x23\xf9\xea\xc5\x0e\xd2\xac\xf4\xf6\x32\x37\x36\x3a\x17\xf6\x6b\x33\x76\xeb\x85\xdc\x61\xaa\xa2\x8b\x9b\xd5\xb8\x12\x77\xc8\xb6\x34\x35\xfd\xab\x98\x62\x77\x94\xc0\xc8\xb6\x1c\xaf\x25\x12\x2d\x4e\x49\xe2\x2d\x9b\xca\x59\x37\xa2\xe8\x30\xb3\x35\x31\x81\xcc\xe9\x7b\xa7\x98\x70\x87\xaa\x8e\x83\xbc\xcf\xac\xce\x8c\x70\x2a\x67\x65\x5b\x03\x64\x1c\xd7\x5d\xa0\xb0\x7a\x03\xe7\x2c\xa3\x5c\x8d\x77\x13\x48\x7f\x08\xa6\x1e\x87\x50\xd1\x76\x9e\xa8\x24\xde\x3e\x78\x60\x17\x33\xb5\x01\xc0\x36\x8a\xce\x63\x56\x62\xd8\x2b\x9f\x80\x27\x57\x6d\xcc\x60\x2a\x8d\x1e\x18\x84\xdd\x65\x3a\x68\xf1\x97\x6e\x2c\x72\x6d\xb5\xe2\x59\x63\xcd\x14\x6c\xe7\x94\x1a\x6b\x88\xfc\x8e\xa7\x76\x64\xc6\x22\xca\x6e\x13\x3d\x35\x4c\x2d\x8f\x0d\xc6\x6d\xab\xe4\xdb\x15\x1b\x1f\x04\x8d\x40\xee\xa4\x09\xf6\xf5\x8e\xa5\xd7\x5d\x5d\xe2\xd1\x83\x39\xcd\x95\x14\x77\x26\x34\x67\x33\xea\xae\xf4\x37\x33\x40\x15\x36\xb0\xef\x7d\xe5\x34\xe1\xa8\x97\x68\x53\x62\x42\x36\xdc\x3e\x6f\x88\x38\x16\x5d\x76\x6c\x89\x69\x32\xbb\x67\xb3\x4c\x93\x19\xe1\x18\xfa\x2c\x0c\xfb\xc2\xbb\x61\x9f\x1b\x81\xa0\xcd\xc4\x6e\x88\x9c\xca\x06\x13\x7b\x3f\x80\xee\x64\x94\x53\x65\x2c\x96\xb9\xdd\x6f\x86\x99\xb7\x71\xd4\xb9\xf5\x57\xf9\xbc\x4f\xc5\xdc\x0d\x11\x26\x72\x25\x08\xb2\xf5\xe4\x31\xe6\x9a\x68\xf8\x97\x5d\x1b\x74\x0b\xae\x4f\xd2\xbd\x9b\xe0\x8a\xeb\xe4\x2e\x13\xc9\x1c\x52\xc2\x22\xc7\xae\xc1\x86\x30\xe3\x1b\x5f\xdd\xc6\x10\x86\xa9\xd9\xf1\x45\x81\x36\x84\x0e\x36\x1a\x9b\xf8\x56\xd0\x06\x5c\x70\xba\x15\x53\xa6\x7d\xf7\xf8\x5f\x6e\xbd\xb3\x59\x5b\xb9\x6e\x14\x52\x5c\x56\xc6\x53\xf7\x49\xf8\xc2\x6c\x59\xbd\x7b\x63\xb3\x77\xf9\xa4\x6b\xf7\xba\x2c\x65\xc7\xd6\xde\x3b\x4d\xed\xdf\x87\xbb\xa6\x74\xe6\x89\xc0\xb6\x34\xb2\x93\xf3\x08\x6a\x29\x43\x2b\xa5\x4f\x07\x5b\x20\x4c\x03\xa2\x5a\x4b\x1c\x1b\xb7\x07\x1f\xc2\xd0\xa5\x73\x3c\xee\x46\x54\x12\xd8\xfd\x08\xca\x35\x3b\x15\x1d\x48\xca\x92\xf4\x7b\x47\x45\xaa\xd8\xb0\x5f\xc9\x54\xda\x78\x39\x25\x38\xd2\xdb\xdd\x8f\x73\x2d\xe3\x98\x1c\xe6\x22\x88\x12\x83\x28\x8d\x1f\xab\x96\x2e\x77\xd5\x3f\x68\x07\xad\xf7\xdb\xbb\x00\xb8\x89\x5e\x52\x13\x47\xe3\x2a\xbf\x9b\xa2\xb9\x79\x17\x97\xa4\xc5\xd7\xd4\x91\xb2\x5d\x7f\xec\xc6\xd3\x9d\x19\x48\xa0\x90\x5b\x83\xc5\xb6\xc6\x6b\xb7\x47\x3e\xce\xae\x5e\xa4\x13\x19\xeb\x92\xc2\x5c\x6e\xc3\xe7\x19\x95\x45\x41\xc7\xf7\xf4\xd9\xd1\xfb\xaa\xc7\xf5\xfb\x7d\xfd\xf5\x2e\xf2\x55\xbf\x1b\x7b\xbe\xe6\x9c\xfd\x2e\x74\xdb\x04\xfc\xda\xe7\x15\x0d\xb3\xd3\xe3\x07\xad\x3b\xee\x26\x32\x6e\xd0\x39\x21\x94\x61\xf7\x62\x37\x59\x65\x6d\x7b\x8b\x04\x61\xb8\x2b\xc0\x55\x4f\x98\xa8\xcb\x45\x51\x07\x73\xae\xee\x50\x60\x76\x81\x35\x78\xd3\x89\x0b\x61\xba\x73\xb7\x85\x0b\x5b\xd9\xcc\xd9\x64\x00\xa9\x94\x42\x06\x36\x16\x09\xc6\x9a\x0c\x9a\x19\xe3\x20\x76\xe7\xcb\x0e\xea\x1b\x56\x90\xb9\xfd\x60\x87\xb3\xd0\x3b\xd9\x6b\x9e\x3a\xbe\x75\xa9\xf9\x24\xf2\x20\xad\x41\xed\x57\x7a\x43\xd1\x7b\xef\xfa\xb2\xaa\x8d\xe6\x15\x1b\x0c\x6f\x3d\xb1\xf3\x12\x38\xc3\xd6\x69\xa8\x49\x10\xcf\x65\x8b\xc1\xa1\x7f\xa2\x6e\xd4\x3b\xd5\x58\x5f\x56\x15\x7c\xda\x65\x84\xcd\xd1\x8b\x26\xea\xee\x86\x18\x49\x28\x50\xa2\x40\xf9\xe0\xa2\xce\x2c\x5f\x81\xc3\xde\x31\x05\x87\xbb\x63\x59\x96\x97\xd2\x0e\xbb\xfb\x50\xc3\x71\x1b\x37\xab\x1d\x8e\x03\xaa\x62\xf9\x8e\x1e\xb5\x84\xab\xa6\x5a\xe9\x1e\xb1\xae\x56\xdf\x81\x20\xd5\x90\x40\x63\x4d\xa3\xdc\x4d\x88\x68\x10\x1b\x3b\x00\x56\x0d\x20\x29\x61\x43\x76\xe4\xef\x29\x9b\x8d\x37\x95\xfa\xfe\x1e\xf2\xbd\xe9\x16\xee\x14\x4a\x7c\x0c\x91\x3d\x11\xda\x7b\x1d\xfe\x89\x58\x98\x36\xf9\x01\xbc\x03\x84\x7b\xa4\xe1\x3a\xa2\x28\x70\x07\x04\xeb\xa3\x6c\x40\xc0\x08\xaf\x40\x90\x38\x10\x88\x0a\x04\xac\x04\x2f\xf0\x7a\x64\x64\xaf\x33\x48\xad\x2f\xe5\x3d\x8a\x8b\x7a\x34\xc6\x2e\xe6\x9e\x98\xeb\x56\x65\x55\xe2\x3f\x19\xb4\xcb\x87\x12\x90\x0d\x5e\xa8\xed\x79\xbc\x21\x69\x6d\x64\xe2\xf1\x8c\xc6\x88\x69\xb4\x4a\xd6\xf7\x00\x93\x19\x20\xc6\xe9\x74\x38\x43\x75\x20\x79\xcd\x67\xbb\x1a\x76\xb7\xcb\x66\x37\x82\xbc\x0b\x2c\x26\xbb\x40\xf0\xd5\xa1\x9b\xb8\xb1\x7f\x3e\x72\x93\xed\xde\x81\x5b\x2d\x41\xdb\xbc\xf8\x3f\xd7\x1d\x83\x41\xbb\xbb\xd3\x44\x22\x26\x5b\xdd\x1d\x6b\xff\xdd\xe8\x10\xb5\xf6\xc8\xa5\x71\x97\x6d\x2d\xcd\x6a\xa5\x77\x0b\x60\x46\xec\xde\xdb\x13\x46\x6b\xd3\x5d\xcd\xde\x51\x53\xbb\xb2\xce\x40\x3c\x4e\x45\x1a\xab\x32\x56\xf7\x69\xdc\xf6\x9b\xbc\xdd\xdb\x51\x3b\xe7\x02\x2d\x0c\x56\xe9\xbf\xbe\x26\x59\xed\x13\x05\x3d\x8d\x56\xe1\x74\xd5\x3e\x96\xa8\x75\x2c\xf7\x69\xb5\xbf\x8a\x88\xe8\x3e\x4e\x25\xaa\xdc\x43\x1c\xfe\x50\xc0\x1d\x72\xef\x0d\xb6\xad\x08\xd5\x92\xdf\x5e\x3c\x27\xab\x29\x9e\xaa\x19\xde\xd5\x7c\x55\xa7\x13\x1a\xed\x78\x15\x59\x7d\x6e\x0e\x6a\xa7\x80\xd1\xfe\x63\x30\x4a\x96\x9c\xca\x1b\x3b\xfc\x5a\x79\x56\x17\xdd\x1d\x46\x7d\xba\xb1\x37\x90\x16\xc8\xbe\xbd\xf3\x75\x8d\xb5\x96\xf4\x1e\x50\xbb\x10\x2a\x12\xd1\x8a\xbe\x37\x85\x3f\x2d\xd8\xdb\xe3\x73\x24\xa1\x75\x96\x61\xe8\xc1\x89\xf4\x7a\xaa\xab\x9d\xd3\xf0\x8e\xa1\x78\x87\xb5\x6f\x1d\x45\xf3\xcc\xc5\xc4\xcc\x68\xb7\x21\xd4\xfb\xfb\x8e\xcd\x2b\x38\xd8\xe3\x3a\x55\x75\xd4\x04\x98\x6f\xd7\xd3\x00\xcc\x7d\x07\x3b\x0d\xbd\xf8\x78\x5f\x51\x3e\x04\x85\x3a\x14\xe8\xf4\xfe\x83\xda\x66\xfb\x70\xe9\x0e\x6a\x3f\x4b\xf2\x56\xee\x62\x6e\x2f\x80\xf9\xdd\xfa\x4e\x22\x7a\x0f\xb6\xf3\xdc\xfb\x35\xbd\x33\x6c\xfb\x4d\x92\x8d\x05\x51\x03\x01\x72\xca\x67\x3b\xce\x49\x7d\x55\x14\x47\xb2\x79\xd8\x00\xc1\x2a\x59\x3b\xae\x30\x68\xd8\xd7\x36\xb2\xb4\xa4\x2e\x5d\x69\xa4\xd9\x58\x62\xf4\x95\xa0\xd1\x30\x1c\xff\x37\x8c\x61\xb7\xf7\x75\x54\xf2\xe9\x0c\xe4\x9e\x7b\x94\x8d\x58\x61\x9c\x3b\x6a\xa3\x4d\x39\x1b\x37\x42\xf8\xbb\xd1\x78\xb6\x63\x5c\x5f\x7b\xc4\x48\x07\x50\x2c\xce\x36\x40\xb1\x97\x1a\x79\x6e\x9a\x9b\xdb\x1c\x8c\x4a\xa3\xaa\xcc\xc9\x96\x5d\x02\xc5\x44\x38\x43\x77\xb3\x10\x35\xf8\x1c\x23\x4c\x31\x8e\x79\xe3\x9b\x6f\x7c\x2a\x9a\x59\x4a\x0f\xe5\x5a\xeb\xfb\x4e\x76\x45\x21\xab\x93\x5a\x31\x69\x90\xc2\x45\x61\xb8\xe1\x12\x29\x3c\xd9\xfd\x36\x51\xf7\x71\x1c\xdb\x6b\x7a\x17\x2b\xb8\x49\xb2\x58\xe9\x4e\xc4\x3b\xe6\x50\xed\x62\xb4\x55\x8c\xda\x62\x9a\x4f\xd7\x25\xa7\xb3\x9a\x53\x7f\xdb\xd9\xf9\x06\xeb\xbe\x1f\xbd\x6f\xe2\xb8\xf7\x20\xc0\x71\x70\x68\x2f\x1f\x73\x17\x9d\xd0\x0a\x31\xe1\x30\x44\x74\x40\x82\xc3\x00\x83\x72\x57\x34\x56\x8d\x1e\xed\x8a\x07\xf7\xa8\xc6\x64\xa3\xa3\xaf\x1a\x4a\x3a\x1f\x87\x09\x72\xbc\x0d\x2e\xad\x95\x7b\xdd\xc1\xc4\xc4\x00\x4c\x21\x25\x09\x24\xa4\x3f\xc2\x63\x63\x3f\xdf\x5b\x74\x1d\x0f\xca\x89\x8c\x2a\x41\x63\x9c\x51\xd5\xcb\x5c\x78\x37\x15\x49\xca\xe7\x54\x53\xad\x85\x7b\x24\x3e\x0d\x16\x06\x4d\xb3\xf4\xcc\xbc\x3e\x33\xa6\x3a\x3b\x29\xb0\x30\x88\x68\xcd\x32\x3a\xd7\xe8\x49\x98\x8a\x7c\x0f\x92\x8c\xf4\x87\xd8\x6a\x3b\x17\xd1\x45\x9e\x8a\x35\x7d\x39\x27\x1c\x03\x9b\xa0\xac\x85\x02\x91\x22\xaa\x28\xec\x92\xbc\xe1\x62\x4e\xdd\xbd\x14\xf6\x25\xca\x73\x79\x6c\x97\xbf\xcb\x54\x9d\x6a\xd6\x2f\xed\x82\xad\xb4\x46\x79\x5c\x14\x8d\xd3\xec\x0a\x44\xd6\x4a\xef\xfc\xfc\xec\xe2\xf8\xf4\xcd\xbb\x93\x5f\xdf\x5d\x5c\x14\x05\x52\xa4\x23\x1d\x83\x39\xc3\xaf\x4f\x72\x37\xe6\x40\xc3\x40\xf3\x42\x56\x64\xe4\x58\xac\xd6\x82\x6b\x9c\x70\xef\x87\x28\x99\xcf\x35\x8b\xad\xa1\x98\xe7\xd2\x93\x20\x92\xe1\x58\xcb\x8f\x59\x2b\xda\xaf\x66\x55\xea\x36\x73\xcf\x0d\x3e\x30\xa7\x6b\xfe\xc0\x38\xca\x97\xc9\x5c\xdc\x9e\x09\xa1\xda\x31\x80\xdb\xa5\x53\xeb\xf4\x03\x19\x66\x8b\xd6\x7c\x61\x7b\x3f\x51\x4f\x11\xbf\x1c\xc6\xd5\xba\xe8\xda\x38\x3e\x60\xbb\xac\x37\x80\x39\x54\xaf\x6b\x69\x1e\xba\x8f\xdb\xaf\x44\x4d\xa6\xf5\x21\x39\x64\x38\x9e\x66\xb3\xea\x36\xa5\xd2\xd6\xf1\xc6\x59\x04\xc6\xc1\x51\x9a\x8a\x0d\x57\xf9\x2b\x96\x2b\x63\xfd\xbe\xce\xe3\x6d\xe2\x12\x63\x2b\x96\x19\x14\x03\x3e\xce\xa8\x39\xb9\xb2\x36\x0f\xd7\x92\xec\x70\x22\xf6\xa8\x5d\x0b\xe8\xd1\x83\x56\x14\x6e\xd0\x5b\xe0\x22\xa7\x99\x5e\xdb\x45\x51\x29\x73\xa5\x0d\xb0\x0d\x53\x89\x02\x91\x1e\x28\xeb\x0d\xb9\x4d\x94\x92\x79\xbc\x5d\xb1\xf9\x3c\xa3\x71\x10\xc0\x9c\xdd\xb0\x39\x95\x71\x10\x94\x65\x2b\xf3\xc1\x95\x14\x9b\x75\xbb\x82\x03\x73\x53\x50\x2b\x25\xa5\x59\x56\xd7\x9b\x2f\x25\xe3\xd7\xba\x5e\xeb\xd2\xbf\xa4\xc9\x3c\x28\xcd\x11\xe0\xc5\x0d\x0a\x7a\x01\x86\xfb\x0b\x37\x8b\xc0\x5c\xac\xde\x5a\xa0\xe9\x7d\x70\x6c\x03\x3a\xc5\x7a\xa8\x48\x45\x0f\x0c\xc1\xfd\xac\x50\xf0\x3e\xa7\xd2\x06\x2d\xc5\xff\x9d\xcd\x3c\xb5\x21\xa9\x7a\xff\x03\x4d\x9d\xac\x12\x96\xfd\x0b\x6d\x74\x83\xfc\x9b\xe1\xc7\xe6\x3d\x6e\xac\x52\xfe\xc7\x9a\x7c\xfe\x3f\xdf\xe4\x09\xd7\x55\xce\x6d\x7b\x33\x18\x99\xff\xf7\xb4\xeb\x96\xbd\x8a\x2e\x32\xa4\x22\xbf\x63\xa1\x4b\x80\xde\xdb\x19\x86\xb4\x07\xae\xcc\x41\xc6\x72\xa5\xd3\x0f\x82\x01\x8d\xd8\xbc\xec\xda\x38\x2e\x29\xb9\x49\x54\x22\xeb\xe1\x6e\x72\x2a\xed\xcd\x2a\xbb\x17\x10\xae\x25\x5d\x50\x29\xe9\x5c\x27\xc0\x2d\x9b\xab\x65\xfc\xdd\xf7\x6e\x58\x5f\x07\xe5\x57\x80\xb5\x53\xef\x9f\x4f\xcb\x57\xeb\x6a\x75\x39\x38\x08\xfe\x8b\xd5\xe9\x0d\xf1\x5f\xac\x62\xc3\xe6\xd6\xf6\xea\xff\x46\x7f\xae\xfe\xc5\xca\x2c\x17\x72\x9c\x25\x79\x1e\x07\x9b\xeb\x03\x5d\xe5\x41\x4a\xb9\xa2\x32\x28\x61\x4a\xfd\x22\x73\xab\x74\x62\xab\x60\xa9\x71\x8d\x77\x0b\xc2\x12\x15\x73\xa5\x7b\x00\x37\x89\x64\xd6\x19\x26\xc8\x37\x26\x48\x7f\x00\x81\x4e\x3b\xc8\x92\x4b\x9a\x05\x71\x73\xed\x3b\x42\xd4\x63\x79\x8f\xfa\x6d\x50\x96\x38\xbe\xbf\x95\x39\x5d\x4b\x9a\x26\xe6\xa6\xf0\x46\x53\xf3\x84\x5f\x51\xf9\x6d\x2d\xcd\x59\x5e\x37\xe5\x37\x9c\xe6\xd3\x47\xf5\xdb\xf8\x5a\x5a\x19\xf3\x5c\x49\xb6\x5e\x1b\x96\xac\x66\xe1\xcf\x64\x53\x48\x6a\x73\xd6\x9a\x1d\xfc\x5a\x5c\x4b\x2f\x2f\x7d\x2d\x8f\xae\xc6\x5e\x8c\xce\xf7\x55\x69\x74\xf7\x36\xcf\xfb\x7c\xb2\x4c\x1f\x9b\x17\xd2\x60\x6c\x34\x1d\x9b\x7c\xe9\xe4\x16\x13\x34\xac\xe2\x12\xaa\xe1\xbd\x96\xed\x8b\xa4\x46\x63\xfa\x68\x4f\x62\xa3\x3e\x26\xac\x24\xd6\x37\xa2\x16\xdc\xe8\x6c\xd2\x7c\x89\xb7\xe5\x98\xfe\xfb\xc3\xc9\x99\xf4\x7e\xd2\x12\x6b\x91\xbe\x5b\x9a\xcc\x65\x2b\x40\x4b\x77\xc0\xdc\x86\xe3\xd9\x7d\xd1\x33\x91\x82\x3f\x2b\x8a\x24\xc6\x71\xb3\x57\xf7\x74\xe9\x7e\xaf\x9b\x3f\x9b\x01\x09\x14\x37\x6f\xd7\x56\x8e\x15\x7b\x50\xb3\x62\xeb\x75\x60\x8c\x2a\x2c\x1f\x1b\x6f\x9b\xbc\x59\xfc\x4a\xa2\xad\xe5\x19\xe3\x6b\x09\x3b\x12\x83\x16\xcc\x5c\x68\x3a\x78\x23\xfd\x53\x7f\xb4\xff\xd4\xfa\xc1\x0d\x23\x8e\xd7\x12\xbd\x96\x68\x5b\xc2\x67\x59\x6d\x91\x3c\x80\x69\xc0\xf2\x97\x9c\x29\x96\x64\xec\x8b\xde\x69\xc1\x15\x55\xfe\xf3\xb9\xbd\x68\x63\x86\x31\x6c\x4b\xa8\xd9\xc6\x7b\xce\x59\xf6\x4a\x6a\x94\x64\xef\xf1\xc9\x63\xdb\xf8\xf1\x6e\xe3\x55\xd3\xa6\x15\xcb\x52\xce\xf7\xae\xb5\xac\xb3\x21\xec\x78\xd3\xa7\xf7\xf0\xa6\xbb\x7c\x29\xad\xee\xfd\x74\xac\x69\x65\xb3\x4e\x3d\x6b\xea\x1f\xf6\x30\x64\x2a\xb8\x4a\x18\xa7\xb2\xb7\xb9\x3e\x58\x27\xf3\xb9\x16\x77\x4b\x53\x60\x39\x0a\x60\xea\x4e\x97\x50\xf0\x91\xf7\xcc\x3f\x3f\x34\xfb\x1e\xe0\x4a\x65\xe6\xb0\xb2\x1d\x4c\x13\xe0\x13\x5d\x99\x07\xac\x21\xd5\x35\x1a\xac\xe0\x6d\x8a\xf9\x37\x8d\xc9\x62\x6a\xb0\x66\x26\x92\xb9\x66\x5f\x66\xf0\x10\xcf\x70\x39\x7e\xda\x81\xc9\xec\x2a\x7c\x29\x49\x63\x81\x3d\xfd\xea\x02\x7b\xf0\x2f\x2c\x30\x33\x15\xcf\xa4\x09\x6f\xf6\x5e\x7e\x3d\xf8\x7a\x23\x0e\xb5\x71\x15\x35\xa7\x45\x67\xc6\x49\x94\x11\xe1\x8d\x6a\x52\x32\x84\x0d\x99\xce\xc6\xec\x71\x3a\xc6\x92\x08\xe3\x18\x0a\x49\x18\xf6\x9f\x79\x27\x64\x13\x4d\x7c\xe3\xcc\xe2\x26\x53\x09\x7c\x2a\x67\xb3\x98\x37\x83\xdf\x6e\xca\x12\x9e\x48\xb2\xa5\xf6\xa6\xbb\xf8\xbd\x34\x31\xd1\xed\xfd\xb2\xe6\x6d\x84\x4b\x77\xdd\xec\xd7\x3c\x62\x4b\xe7\x6f\xd7\xe9\x41\xfa\xc4\xa8\x6b\x9c\x4f\xee\x73\x49\x64\x4d\x38\xbe\xec\x68\x25\xec\x11\x8a\xb3\xf4\x9c\xb2\x19\x4a\x30\x6c\x88\x0b\xd8\xbc\x17\x2e\xd4\x80\xd7\x54\x9e\xda\x2b\x84\x29\xda\xe0\x78\xf7\xa0\x7b\xe3\xae\x1e\x36\xc7\xb4\xba\xea\x3f\xbe\x3e\x05\x4d\xa5\x69\x53\x35\xf7\xf5\x23\xaa\x86\x39\x4d\x1d\x25\x52\x36\xd4\x5c\x89\x6e\xeb\x8b\x44\xcc\x8c\x35\x81\x14\xfc\x75\x93\x8d\x83\xdf\x74\x3f\x93\xbb\xf1\x55\xe1\x32\x41\x1e\x61\x99\x23\x9e\x0f\x92\x4c\x67\xe6\x82\x07\x78\x21\xc9\xd2\x5f\xde\x04\xbf\x5a\x67\x72\xfd\x21\x80\x00\xbe\xcd\x9b\xfe\x85\x2c\x8a\xfe\xaf\xb2\x84\xad\x2e\xd7\x35\x8b\x1f\xdc\xba\xb2\xda\xbd\x46\x0c\x50\x35\x09\x20\x88\xeb\x19\xfe\x49\x92\x54\xf3\x81\x6b\xf8\x59\x1a\x2f\xff\x55\xb2\x0e\x30\xfc\x68\x5d\xda\xcd\xcb\x37\xf9\xf7\xff\xac\xbb\xf4\xa3\xee\xd2\x2a\x59\x77\xf5\xe8\x27\xf9\x9f\x74\xee\xff\xc5\x28\x72\x7f\x91\xd3\xbd\x50\xad\x33\x12\x7c\x09\x6c\x00\x00\x49\xaa\xc0\xb6\x5f\x66\x01\x21\x3e\x50\xcf\x2f\x12\xc3\xef\xb2\x2b\xca\x2b\x27\xc1\x91\x6f\xd5\x44\xc8\xde\xa7\x00\x55\xaf\x4a\x84\x31\x50\x4e\x7e\x93\x93\xf5\x7e\x50\x20\xbd\x21\xc6\xbb\x41\x6f\xd4\x24\x78\x5f\x69\x97\x62\x17\xf5\x53\x4d\x82\x37\x9b\x2c\x0b\xe2\xdd\x03\x09\xb4\xe7\x7e\x59\x07\xdf\x35\x9a\xcc\xfa\xe0\xb0\x44\xde\xc6\x13\x29\x3d\x36\x8c\x27\x32\x56\x7c\xb2\x46\x14\x57\x3b\x9d\x10\xc4\x89\x4e\xe9\x36\x34\xb1\x2a\x20\x4a\x27\x0d\x10\xc4\xbc\x04\x69\x86\xd8\x08\x58\xbc\x4f\x16\x2b\x30\x07\x03\xca\xed\xe2\x1a\x04\xb3\xa0\x1c\xff\x26\x8b\x82\x2a\xb4\x17\x64\xb2\x11\x58\x4b\xf2\x56\xc0\x28\xab\x1f\xe7\x44\x44\x6e\x83\x82\xe0\x3b\xa1\x44\x12\x6e\x5c\xed\x6d\xb2\x0f\x7d\x1e\x60\xd8\x70\x17\xfc\xbc\x6e\x27\xdf\xcb\xb4\xe0\x64\xdf\x5a\xa5\x01\x58\x3e\xa1\xe8\x18\x49\x3c\x1d\xce\x40\x4e\x47\x33\x1c\x53\x54\xb9\x38\x57\x97\x81\xaa\xc8\x1b\xb2\x18\xd3\x9a\xca\xca\x5c\x84\xe1\x31\x12\xd5\xf5\x73\x60\x2e\x36\xe4\xdd\x17\xd8\xec\xcc\xad\x3d\x95\x13\x86\x9c\x39\xed\x9d\xbd\xf1\x93\xd0\xf2\x9e\x7b\x6b\xea\x4b\xdf\x13\xd9\x73\xea\x60\x58\x80\x09\xcb\x0a\x4b\x22\xa9\xb5\x09\x9c\x3c\x8c\x47\xf6\xfa\x66\x9c\x10\x35\xf6\xd7\x1a\x77\xc4\xae\x4d\xbb\x2e\x30\xec\x37\xae\x72\x9d\xe6\x7c\x56\x14\x6a\x1a\xfc\xe3\x1f\x15\x4c\x67\x45\x91\xf0\xa9\x9e\x77\x3c\x2b\xcd\xa5\x7b\x7b\xe1\xe5\x6c\x14\x7f\x1f\xae\xca\x94\xbc\xcc\xa8\x0d\x57\x55\x87\x48\x98\x93\x14\x87\x21\x4a\x78\x64\xa6\x91\x10\x32\x2f\x8a\x0d\x9f\xa6\x7c\xa6\x9f\xb1\xa5\xab\x1b\x32\x84\x9c\xe4\x0a\xf9\x23\x40\x3c\xce\x1f\x6f\xc6\x1b\x17\x32\x76\x41\xc4\x64\x89\x8e\xd1\x9a\xa8\xe9\x66\x66\xa6\x71\x6d\xa6\x71\x89\x4c\x02\x0e\xc3\x45\x33\x1a\x5e\x15\xfe\x78\xd1\x24\x0e\xd4\x50\xcd\x84\xa4\xd5\xe5\x61\xba\xe9\x8c\xd8\x8b\xed\xc7\x7d\xb4\x26\x4e\xb7\x99\x60\x6c\x08\x97\xb9\xfc\x64\xd7\x8f\x1a\x2d\xc8\x82\xa3\x04\x96\xb0\xb6\xf4\x0f\x84\xe9\xc0\xbf\xd0\x07\x6c\x16\x45\x17\xb5\x73\x79\x86\xc6\x57\x08\x63\x58\xef\xad\xf5\x39\x27\xfd\xd1\xd8\x93\xe3\x25\x27\x43\xb8\xe1\x64\xab\x87\xb0\xbf\x87\xb7\x7a\x14\x71\xbf\xbf\xe4\x83\x41\x59\x82\x4d\x6c\x66\xd3\xb5\x19\x1f\x6b\x3e\x5d\xf3\xfb\xef\xee\xb7\x5b\x70\x21\xc5\x0a\xdd\xf0\x96\xc1\xb3\x5d\x16\x0f\xf7\x8d\x4f\xee\x38\xac\x38\x5c\x71\xb8\xdc\xdd\xea\xb7\x9c\x1c\x22\xb6\x5e\x0a\x4e\x0b\xb6\x16\xf3\x82\xad\x93\x39\x8e\xfe\xa2\xa9\x33\xbd\xa5\x97\xd7\x4c\x1d\x32\x7b\x11\xdb\x4b\x8a\xe1\x44\xe3\x8d\x4c\xa4\x46\x82\x86\x0b\xfd\x96\x53\xf5\x72\xb5\xa2\x73\x96\x28\x0a\xa7\x3a\x25\xcd\x68\x22\xeb\xb4\x73\xde\x08\xb1\xf4\x49\xbf\xbc\xa6\x79\x9e\x5c\xd1\xe3\x65\xc2\x39\xcd\xe0\xb3\x4e\x7b\xea\x4d\x01\x8f\x35\x14\xdf\x19\x0c\xf4\x96\xef\x6e\x97\x77\x7c\xe7\x9a\x48\xbd\x1d\xdc\x76\x7f\xc7\xa7\x6a\x36\x76\x1e\xe0\xe6\x05\x0c\x93\x0f\x47\x9d\xd7\xe6\x36\xe0\xf6\x96\x1b\xe6\x0b\x5e\xb5\x33\xea\x64\x73\xc1\x07\x2e\xe1\x4d\xfb\x93\x88\xd6\x22\x57\x6e\x1c\x48\x0d\x82\x00\x4e\xdc\xad\x4e\xa9\xc8\x06\xc1\xe1\x61\x30\x38\xe1\xd1\x52\xe4\x0a\x97\xe3\x0b\x1e\x86\xa7\xbc\x28\xd0\x45\xbb\x96\x9d\x03\xce\x8e\xa0\x5e\x72\x8c\xe9\x6e\x50\x2f\x69\x82\x7a\xf9\x23\x56\x3e\x1d\x0c\x8e\xdb\xab\xa5\xdb\xb8\x44\xc5\xcf\xea\xa6\xb1\x63\xbf\x7c\xd4\x48\x5c\xc2\x1d\x47\xc7\x1c\xc3\x31\x2f\xf5\x2c\x36\xbb\xd9\x04\x69\x69\xc2\x12\x1a\x0d\x8d\xa6\xde\xe7\x1c\x4f\xee\xda\xb9\xcf\x79\x6d\x22\x7f\x64\xda\x2a\xe3\xcf\x3c\x0c\x3f\xf3\x88\x8b\xdb\xdd\xdc\x36\xb5\xca\xf8\x89\x87\x61\xff\x96\x4f\xd0\x15\x27\x68\xc5\x8d\x4b\xc1\x27\x8e\x23\x8d\x99\x1f\xc2\x8a\x9b\x87\x51\x24\xf8\xca\x82\x9e\xbc\xe2\x70\xc7\x35\x22\xbe\xe2\xcd\x29\xd1\x6b\x7d\x84\x71\xdc\x17\x51\x32\x9f\x9f\xdc\x50\x1b\x11\x84\x72\xa3\xe3\xda\xc3\xcb\xbd\x46\xd1\xa2\x10\x11\x5b\xe9\x76\xce\x8d\x44\x9e\x17\x05\x43\x6f\x38\xd6\xe5\x58\x46\x63\xcd\xe6\x34\xe6\x5a\x0f\x28\x10\xdc\x28\xb2\x8c\x59\x45\xba\x4c\xf8\x95\xb9\x44\xf2\x14\x05\x56\xa8\x0f\xda\x21\xfe\x77\xee\x7f\x68\x64\xc3\xd1\x7e\x4d\xcd\x99\x7d\xa0\x5a\xbe\xab\x96\xc9\x74\xab\xb7\xc5\x21\xe5\x54\xbd\x63\x2b\x2a\x36\xca\x82\x16\x86\xb8\x8c\xd1\x1d\x27\x6f\x38\xec\x83\x04\x05\x0e\x9c\x01\xbc\xe2\xd0\x1f\x61\xe7\xfd\x71\xcd\xe1\x8c\xc3\x6b\x0e\x0f\x38\x3c\xe5\xf0\x92\xc3\x33\x0e\xef\x39\x3c\xe1\xf6\x16\xbc\x0b\x0e\x66\xaf\xc7\xa7\xbc\x84\xe7\xdc\x44\xeb\xf9\xc2\xc9\x13\x6e\xa2\x62\xff\x61\xb6\xba\x33\x4b\x3c\xbd\x34\x96\x32\x52\x43\xf7\x17\x7a\xf9\x13\x53\xbb\x5f\xe0\x43\x13\x4f\xbc\x68\x32\x28\xbf\x72\xd2\x5a\x75\x1f\x38\x86\x9f\x38\x79\xce\x91\x80\xe0\x8f\x0d\xdd\xd0\xd7\x2c\x95\x42\x25\xf9\x75\x80\xe1\x67\x4e\x7e\xe2\x61\xf8\x13\xb7\x14\x61\xfc\xb3\xde\x79\xd7\x7c\x4f\xc8\x07\x6a\x42\xf5\xfc\xca\x8d\x55\xca\x07\xee\x2e\x14\x31\x26\xa4\xf4\x33\x53\x08\x8f\xcf\xf8\x18\x6f\x29\x39\xe3\xd1\x42\x83\x42\x3f\x18\xf2\xa4\x31\x3e\x6d\x5e\x51\x6d\x31\xef\x19\x9f\x3c\xe0\x08\xc7\xaf\xb9\x8b\x28\x0f\xaa\x2c\x1b\x2f\xa6\x66\xae\xa8\x44\xb8\x84\x5f\x75\xe6\x66\xa7\x3e\x34\x36\xce\x35\xc7\x65\xfc\x87\xdf\x0c\x4f\x35\x61\x80\x97\xbc\xbe\xfb\xc4\x6a\x26\xde\xd1\xcf\xea\x8d\x98\x53\x14\x04\x26\x76\x7d\xef\x0f\xae\x4b\x46\xc2\x82\x14\xbd\xe4\xb0\x4d\x97\x89\x4c\x52\x45\xe5\xd3\x44\x25\xd6\x7b\xad\xdd\xec\x4b\x6e\x2f\x31\xd2\x8d\x3c\xe5\x25\x8e\x5f\xf0\x30\x7c\xc1\xbd\x68\x38\x41\xcf\x38\xa9\x5f\xbd\x78\x05\xef\x39\x79\xc6\x8d\xd0\xb8\x53\xdf\x7b\x17\x11\xf0\x19\x07\x3d\x0a\x1c\xb7\x3f\x7f\xe1\xde\x83\xd1\x7c\x35\xeb\xec\x47\x0e\xbf\x70\xf8\x8d\xc3\xef\x1c\x94\x20\x7a\xc2\xf6\xb9\xb9\xed\x82\xc7\xca\x5c\xcb\xee\xaf\xab\x1b\xbf\xd6\x53\xf7\x9a\x57\xf7\xef\x9f\xe9\x99\x3e\xe3\x84\x82\x9e\x06\x0c\xaf\x39\xa1\x25\x50\xb1\x6f\xed\x03\xd2\x9a\xf7\xac\xed\x0a\x33\x78\x46\xb5\xcc\x59\xac\x89\x75\x7d\x73\x68\x23\x70\x62\xc7\xcd\xb2\x4f\x92\xb9\x97\x77\x77\x42\xfb\x52\x73\x1b\x00\xaf\x4c\x6a\x1d\x1c\x09\xa5\x88\x56\x49\x9a\xa7\xd1\x29\x12\x97\x20\xc5\x3d\xf7\x88\x18\x76\x44\x58\x4a\xc5\xc5\x7e\xb8\x3c\x73\x85\xca\x0a\x51\x13\xf8\xae\x19\xce\x8f\xd4\xfc\x25\x75\x3e\x72\x52\x44\x8b\xfa\x22\x3a\x34\x04\xe9\x3b\x86\x75\xb7\xa4\x07\x4c\x09\xa2\x0d\xbd\x9a\x91\xdf\x1a\x5b\xcb\xb8\x3f\x72\x37\x6e\x28\x4d\x6b\x77\xb4\x0f\x3e\x8f\xbf\x95\x43\x95\x65\x09\x4c\x78\x0c\x91\x88\x1d\x6e\x24\x15\x24\x70\x60\x0c\x60\x23\xfc\x15\x94\xb9\xf0\x91\xf6\x17\xa2\x1d\x69\x3f\x15\x18\x32\x41\x38\x87\xb5\x20\x22\xaa\x66\x04\x96\xa2\x79\x35\xf4\x8d\x68\xa0\x96\x3b\x61\xa2\x42\x2e\xa8\x32\x51\xe3\x56\xc2\x40\x03\xae\x04\x59\x09\xb8\x14\x6d\x54\x73\x23\x30\xdc\x0a\xd2\xef\xa3\xa5\x08\xc3\xa5\xf0\x37\x46\xdf\x18\xf3\x07\x51\x59\x03\x99\x04\x0c\x27\x82\x1c\x2b\x94\x0a\xd8\x89\x19\xd8\x47\x4f\x51\x26\x70\xbf\x92\x90\x33\x81\xb1\xf9\xf2\xc3\x0f\x84\x90\xe7\xb4\x8e\x27\xa8\x73\x5f\x8a\xa6\x00\x59\x51\x29\x07\x9a\x33\xb3\x5e\x98\xe0\xb6\x51\x5f\xb2\x64\x0b\x64\xc3\x3d\x76\xde\xa3\x9b\x55\x61\x29\xfa\x23\x17\xb4\x30\x13\xd5\xb6\x1e\x61\xd8\x31\xaf\x43\x3b\xae\x74\xed\xd7\x2a\xfc\x33\x52\x7b\xa1\x23\x13\x31\x23\x14\xfa\x48\xed\x1a\x23\x9b\x82\x2d\xb6\x5c\x6f\x8b\x0b\x41\x4e\x44\x51\xf4\xf7\x16\x74\x9f\x86\x61\x7f\xce\xdb\xbd\x96\x4d\x8e\x5b\x73\x89\xe3\x7b\xb8\xe5\xaf\x72\xe1\xd2\x70\xda\x65\x09\x0a\xf1\x26\xb3\x5c\x9d\x6b\xb4\xe5\xc9\x4c\x44\xee\x5e\xfc\x5d\xe7\x0f\x0b\x0b\x8c\xe1\xb4\x03\xcb\x54\x61\xdf\xcd\x45\xda\x5d\x8c\x07\xa2\xc4\x42\x49\x4b\x2d\xb4\x84\x73\xd1\x75\xa1\x4c\x9f\x46\x5c\x28\xb6\x60\x74\x8e\xb7\xf5\xb3\x0f\x76\x6a\x3c\x79\xa8\xb3\x7e\x1f\x2b\xd1\xea\x5e\x15\xb3\x84\xb8\xd8\xa9\xc0\xc8\x88\x10\x6f\x03\x9a\x90\xe1\xd8\xdf\x05\xf6\x38\x19\x3b\xe7\x40\x2b\xe7\x12\x3e\x4d\x06\x83\x19\x64\x84\x4d\x16\x91\xb8\x8e\x17\xd1\x22\x61\x19\xac\x8d\x75\x8a\x59\x37\x30\x37\xcf\x46\xa7\xb6\x24\x0b\x47\x42\xcd\xfc\x64\x13\xc4\x8a\x02\x3d\x24\xc4\x74\xcf\x2d\xd9\x30\x7c\x27\xac\xa1\x6d\x23\x91\x8c\x30\xf4\x87\x84\x90\x6c\x92\x12\x11\xa3\x65\x18\x2e\x3d\xa1\x84\x94\x64\x48\x60\x58\x86\x21\x5a\x3a\xba\x0c\xb9\x35\x6c\x4a\x09\x21\x0b\x8f\xaa\x26\x73\xb4\x16\xc8\xa3\x8f\x83\x74\x99\x30\xde\x4b\xef\x52\x2d\x06\xe3\x18\x6d\xc8\xa9\x40\x29\xc6\x93\x8d\xa5\x3f\xa9\x96\xe1\x71\xbc\xd6\x69\xf1\x1c\x89\xc6\x2a\x58\x86\x61\x3f\x37\x5d\xb0\xad\x19\x93\xd4\xb2\x01\x63\xcd\xae\x37\xa7\x61\x04\x32\x0c\xfb\xad\x51\x7e\xb6\xa3\xb4\x5a\xc8\x4f\xfb\xb3\x6a\xc3\xf9\xb2\xf1\xad\x98\x20\xc4\x49\x1b\xb1\xa0\xc0\xfc\x68\x7e\xd0\x13\x28\x0a\x9a\x04\x27\xb9\xe0\x44\x02\x37\xc7\x18\x36\xab\x82\xfe\xc8\x38\x34\xef\xe0\x22\xc4\x31\x8e\x39\xd9\xba\x0a\x62\x0a\xb6\x78\x2c\x4b\x40\x8c\x88\x69\x20\x78\x30\x50\x33\x3c\x61\x88\xe3\x38\xd8\x70\xeb\xfd\x35\xaf\x06\x11\xd8\xf0\x1a\x5d\x26\x9e\xc2\xec\x79\x91\xd1\xb1\x71\x36\x37\x58\x3e\x0c\xd1\x88\x90\x3d\x2b\xcd\x89\xfb\x8c\x14\x8e\xab\x47\x73\xc2\x85\x82\xf7\xbe\xcd\x9e\xeb\x65\xaf\x6e\xdc\xd8\x9a\x7f\xde\x23\x73\xc2\x73\x0f\x7b\x96\xcd\xc6\x73\xd1\x72\x7c\x9a\x18\x0a\x43\x08\x91\x24\xa2\xbd\x1f\x2e\xc5\xe4\x46\x38\xdf\xac\x6a\xcc\x67\x75\xb3\x1c\x14\x8e\x3f\x09\xd4\x05\x10\xd0\x6c\x81\x09\x44\xdf\x58\xbb\x97\xa2\x28\x4c\x6b\x93\x87\xf1\x08\xdc\x10\xbd\x8a\xc6\x5d\x1f\x6f\x0c\xda\x8f\x45\x97\x18\x3a\x32\xa1\x13\x1a\x2b\xa7\xef\x63\x81\x94\xf0\xee\xdb\x86\xdf\x1c\x52\x55\xd1\x0b\xdb\xf9\xc0\x0f\xa7\xfa\xb0\xac\x3e\x80\x83\x97\x0d\xc3\xf3\x76\x77\x91\x36\x6e\x8c\xaa\x3e\x08\x4d\x18\xf4\x37\xa1\x21\x51\xc2\x51\x57\x21\x6a\xf4\x35\x45\x81\xec\x83\xe6\x5d\x5d\xac\x68\xec\x9b\x24\x12\x1c\x06\x22\x0f\xe1\xdc\xec\x15\xbd\x88\x71\x09\xaf\xba\x6a\xb4\x38\x50\x57\xe6\x6b\x6f\x56\x6a\xd0\x0d\x5b\x20\x45\x6a\xde\xac\x81\x0a\x7a\x69\xc2\xff\x43\xf5\x2e\xf5\xea\x32\x48\x6b\xde\x63\x2a\xa7\xd9\x22\xf0\x2e\xfa\xa7\x02\x49\x3c\x16\x93\x1d\xd4\xe9\x28\x8c\x55\xdb\x8c\x4a\xd3\x8c\xf0\xf7\x82\xbc\x15\xe8\x95\xd0\x0b\x42\xe3\xb2\xb7\x02\x1d\xf9\x97\xc6\xe5\xfd\x47\xc2\x5e\x52\x62\xc3\xad\xe2\x18\xed\x8f\x7e\x54\x8d\x7e\xb4\x57\xb2\x6a\xd9\xd5\x50\x8e\x4f\x44\x18\xa2\x4c\x74\x07\xb0\x6a\x12\x0c\xa4\xda\xea\xaf\xee\x9b\xc2\xa5\xb4\x2a\x65\x24\x27\x72\x10\xf4\x4c\xdc\xac\x41\xc0\xf8\x8d\x53\xf0\x04\x2e\x38\x05\x64\x02\x34\xa7\x65\x2f\x36\xfb\xb1\x11\xf2\xdb\x5f\x91\xb8\x11\xee\xd5\xb8\x5c\x21\x07\x1c\x7b\x89\x89\x87\x8e\x7d\x6b\xe0\xd9\x23\xe1\xaf\x94\x30\x3c\x2d\xfa\xb1\xad\x1a\xc8\xdd\x67\x6b\x74\x96\x0a\x70\xe0\x00\x8f\x78\xf5\xb3\xdd\x2a\xfa\xa9\xc2\xce\xf1\x74\x06\xd5\x6a\xd7\x5f\xac\xeb\xa8\xe7\x41\x9d\xf0\xd0\xba\x87\x62\x0f\x3d\x57\x11\xd7\xed\xad\xa9\x54\x99\x89\x34\xd7\xa6\xca\xc6\x05\x70\x28\x13\x0d\x5d\xf8\x56\x13\xf2\xb8\x03\x5f\x5a\x2d\x32\x59\x38\x20\x41\x42\x56\x02\x21\x49\x32\x51\x9f\x10\x21\x41\x8e\xdd\x6d\x10\xed\xcb\xcd\xec\x21\x06\xe2\xe4\x18\x09\x3c\xbd\xe4\x33\x3c\x91\x31\xa5\x1a\xbf\xd7\x81\x6d\x23\x71\x4d\xba\xee\xb6\x2b\x0a\x05\x89\xa1\xda\x5d\x86\xc9\x34\x0c\x29\x24\x8e\x68\x13\x8b\x46\xec\x8b\xbf\x4e\x84\x39\x5c\xa4\xb7\x1b\xab\x09\xa0\x53\x49\x61\x18\xf6\x09\xb3\x2b\x39\x0c\xcf\xdd\x7c\x31\xbd\x96\x21\xa9\x45\x88\xb4\xed\xd4\xbf\x13\x6a\xd1\xf0\x88\x5e\x42\x36\xb6\x47\xbf\xec\xcb\xea\x46\x40\xfb\x91\x83\x5d\x69\xb8\x2d\xbc\xa9\xb6\x64\xe5\x77\xe6\x8e\x78\xe5\xf7\x28\x35\x32\x56\xb4\x20\xab\x4e\x7c\xac\x91\x48\x26\x8a\x42\xff\xfe\xc6\x27\xba\xdd\x5f\xf4\xf7\xf8\xca\x88\x5e\xd0\x15\x08\x5f\x23\xa2\xdf\x39\xe1\x8d\x7b\xdd\xad\x64\x4c\x15\xe2\xed\xcb\xde\x97\x94\xb7\x6e\x2c\x69\xbb\x3f\x36\xb5\xd3\x99\xd8\x75\xaf\xf8\x9d\x7b\xe4\xe3\x58\x0b\x0b\x3b\x1f\x55\xa6\x71\xc6\xd3\xd5\xcb\x3b\x61\x2f\x39\xa8\x6f\x0a\x69\x47\x7d\xf5\x47\x8a\xc3\x12\xb6\x46\x36\xea\x94\x41\x05\xca\x04\xdc\x79\xff\x06\xd1\xb8\xe3\xcf\xa0\xb8\x3f\xb9\x8c\xe4\x44\x94\xb0\x75\x68\x39\xce\x44\x69\xa2\xf8\x1b\xe4\x62\xd6\xcc\xbe\xd0\x2f\xac\xa7\x15\x79\x1b\x2d\xc6\x49\x18\x6a\x81\x80\x4e\x05\x9f\x85\xa1\x44\x14\x04\xff\xd6\x9b\x56\x8c\xe6\xbc\xc4\xa5\x11\x18\x7f\xe3\xba\x5e\xfd\xd4\x38\x62\x4d\xc5\x6e\x14\x68\xd3\x59\xbb\x78\x3a\xae\x24\x59\x79\x8c\xd7\x70\x60\xb6\x21\x60\xf4\x14\x55\xeb\x19\x68\xb5\x0f\xca\x6f\x6b\xcf\x2c\xe2\x7b\x60\x5f\x45\x2e\xfb\x93\xaa\x2e\x74\x55\x49\x96\x75\xf4\xdb\x9d\xd8\xaf\x84\xbd\x19\xab\x92\xfb\x41\x98\x67\xc3\xc9\xb3\x5d\xa6\xc9\x85\x08\xa2\xa8\xb2\x18\xc0\xe6\x66\x77\x2d\x3e\x40\x4a\x46\xe3\x4c\x2f\xc3\xbd\x23\xb8\x0d\x49\x06\x03\xcd\xac\x8f\xc6\xee\xc6\x76\xaf\x3d\x4a\x07\x03\x1f\xfe\x5e\x63\xff\x5d\x41\x51\x63\xff\xa2\x40\xb9\x41\x3b\xd3\xcd\x8c\x28\x38\x38\x48\x8b\x82\x23\x66\x0c\xe7\x8d\x2f\x79\x9d\x54\x36\xee\x81\xf7\xcc\xa8\x40\xcc\x71\x37\x4d\x6d\x86\x4c\x52\xfa\x6d\x40\x31\x80\x10\x5d\x80\x10\x6d\x40\x74\x8c\x5d\xec\x8e\xac\x86\x32\x77\xee\xa7\xbe\xbf\xc2\xf7\x97\x23\xb1\xdf\x5f\xa7\x1f\x7b\x23\xf6\x11\xa2\x23\x16\xc6\x47\xa6\x8e\x9d\x69\x77\x9e\xf3\x8b\x31\x07\xee\x11\xbb\xe2\x42\xd2\xe3\x24\xa7\x2e\x99\x05\x36\x38\x6c\xa6\x58\xc6\xb8\x4f\x5d\x99\xd4\xb9\x50\x47\x99\x2f\x9f\x9b\xa4\x0d\x67\xa9\xf1\xeb\x30\x69\x1b\x93\x96\x2b\x96\x5e\xdf\xb9\xa4\xbb\x00\x03\x6d\x44\xa8\xba\x16\x2d\x67\xd7\x33\x7a\x75\xf2\x79\x6d\xb1\x94\xee\xfa\x99\x80\xd7\x02\x1e\x08\xb2\x7d\xff\xe6\xfc\xfd\xdb\xb7\xa7\x67\xef\x4e\x9e\x5e\xfc\x16\x77\x5d\xad\x72\x2d\x50\x90\x04\xa0\x9b\xa8\xc7\x98\x25\xb9\x32\x57\x37\x92\x87\xe0\x8e\x4f\x23\xfa\x99\xa6\x28\x48\x2e\xd3\x79\x60\x96\xc6\x93\xb3\xd3\x9f\x4e\xde\x5c\x1c\x1f\x9d\x9d\xbc\xbb\xb7\xe6\x7f\xca\x00\x82\xab\x6f\xac\x3b\x57\x32\xb0\x8c\xf2\x53\x41\xec\x98\x1a\xd8\x5e\xe7\x81\x97\xc2\x69\x77\xf6\x1d\x64\xe1\x99\x20\x4f\x05\xbc\x17\x04\x9d\x09\x72\x98\x1c\xc2\x6b\x41\x0e\x2f\xff\x72\x78\x05\x4f\xdd\x6a\x39\x13\x10\x24\x01\xae\xde\x5f\xbb\xf7\x61\x9f\x90\x33\x51\xf7\xac\x28\x74\xca\xeb\x46\x0a\x86\x27\x82\x3c\x10\x51\x0b\x9e\x45\xf1\x40\x44\x4d\x30\xc0\x73\x41\x2a\x15\xe6\x21\xc2\x93\xc9\xa1\x1b\x5a\x80\xa7\xa3\xd9\x18\xbd\x17\x45\xf1\x5c\x14\xc5\x13\xa1\x05\xa7\x67\x9d\x5a\x53\xc7\xc9\x98\xfd\x92\x90\x27\xc2\xdc\xdc\x6e\x16\x03\xa4\xe4\x8d\xeb\x39\xc3\x26\x16\x4e\x6e\x02\xab\x43\x4e\x86\xb0\x20\xaa\x71\x5b\x18\x3a\xd0\x82\x22\x4a\x49\x5a\xdd\xb1\x1f\xdc\x05\x10\x68\x79\xd7\x07\x21\xd3\x8b\x37\x0c\x51\xea\x96\xf1\xa2\xbe\x02\xca\x39\xad\xb2\xe6\xf8\x1b\x2f\x8f\x87\x61\x88\xfa\xac\x5e\xdf\x45\xc1\x9a\x8b\x3d\xf8\xa8\xf9\x23\xa2\xa6\x8d\x32\x07\x23\x73\x23\xec\x86\x04\x68\x12\xf7\x82\xc1\x66\x10\xe0\x00\x16\x24\xe8\x05\x83\x05\xe4\x83\x81\xbf\x9a\xda\xad\xe5\xe0\x9f\x68\x12\xfb\x6c\x29\xc6\xf0\x5c\x18\x51\xb3\x95\xc5\x7c\x7f\x80\x26\xfd\x8f\x1f\x73\x97\xed\xbd\x30\x12\x4b\xab\xeb\x9c\xf8\x09\x4f\x26\x32\x66\xb0\xc0\x90\x4c\xf8\x04\x69\x19\x7f\xbd\x51\xc4\xfd\xba\x51\xe7\x18\xf8\x74\x38\x23\xfa\x4f\x23\xc9\x82\xad\x59\x71\x13\x24\x03\x9b\xdd\x1d\xe6\xc7\x8d\x2f\x64\x18\xeb\x3e\x69\xfe\xa5\x99\xca\x1c\x1e\x99\xb8\x8a\x07\x8d\xf2\x31\xb5\xc3\x35\x31\x55\xbd\x25\x51\x18\xbe\x74\x83\xe0\xc6\xac\x03\x76\x35\x50\x82\x8c\xc6\x62\xcf\x1e\xf8\xe0\xe1\x58\x0c\x06\xb8\xe2\x81\xeb\x33\x4e\x31\x0b\x43\xc4\xa7\x62\x46\x6a\x73\x2e\xe0\x0e\x1d\x7e\x11\xe4\x99\x68\x99\x47\x59\xa0\xef\xdb\x47\x1d\x46\x76\x8d\xf7\x09\xf9\xa2\x49\xa2\x7e\x8e\xbf\x08\x57\xcf\x1f\xbb\xea\xe7\x0f\x82\x74\xdc\x93\xa3\xc8\x61\x74\x58\xa3\x08\x5d\xc7\x3e\x3a\xae\x6f\x19\x54\x91\x71\xb8\xc8\xc9\x36\x89\x83\xbf\x05\x25\xa8\x12\x82\xbf\xe9\x35\x17\x04\xd5\x7a\x57\x10\x3c\x78\x94\x3c\xb6\xc8\xea\x85\x20\xc1\x83\x61\x40\x08\x09\x92\x3a\xcb\x61\x74\x08\x3a\x19\xc3\xaf\xb6\x9f\xee\x43\x80\xe1\x27\x41\xfa\xfd\xc3\xe8\x70\xfa\xab\x86\x93\x89\xa6\xe5\xde\x2c\xba\x34\xa5\x7e\xbe\x6f\x30\x68\x12\xe3\x43\xe3\x78\xa5\x87\x32\xde\x1f\x51\xc5\xd1\x34\x9c\x58\x1b\x77\x39\x3b\x35\x6c\x90\x5c\x06\x2e\xdc\x6b\x75\x90\xd0\x7b\xd8\x27\xc4\x07\x10\x2b\x8a\x20\xd1\xc3\x96\xd3\xe1\xac\x28\x82\x4b\xfb\x3c\x9a\xe9\x21\xff\xd8\xc9\x7b\xd7\x16\x9e\xb5\x8a\x4c\xa3\x1b\xb7\xf7\x6f\x10\xc5\x5a\x78\xb2\xc6\xe0\x29\x61\x95\x23\xb0\x43\x2d\x8f\x86\x45\x91\x3c\x26\xe9\x44\x4d\x82\xc0\x89\x30\x31\x32\xce\xbb\xcb\x44\x1e\x8b\x39\x3d\x52\x28\xc1\xf8\xd1\xf7\xdf\x3f\xfc\xfb\x0f\x45\xc1\x1f\x7f\xff\xc3\x77\xa3\xbf\x17\x45\x32\xd0\x18\x29\x2d\x0a\x24\x76\x32\x0f\x46\x3a\xfb\x0f\xdf\x3d\x1c\x16\x85\x78\xfc\xfd\xdf\xbe\xfb\xeb\x77\x13\x35\x61\xde\x19\x35\xc1\x31\x8f\xf5\xbb\xdd\x8b\x09\x24\x83\x87\x38\x16\x07\xa6\xc4\x00\xf1\x03\xd3\xd2\xa3\x47\xa3\x21\x1e\xfc\xf0\xfd\xf7\xdf\xfd\x50\x96\xf0\x8b\x20\xdb\xd4\x54\x1f\xff\x28\x90\xe6\x7b\x6d\x65\xe6\x6d\x88\x4b\x57\x37\xfc\xb6\xaf\x35\xf4\x33\xa3\x25\xf6\x5f\x2c\x99\xf5\xdb\x72\x84\x4b\xf8\x7d\x57\x5f\xe4\x03\x22\x9a\x89\xee\xbe\xc5\xab\x0a\x15\x51\x05\x68\xa2\xc6\x6a\xc8\x5b\xda\x54\xb2\x24\xdf\xd7\x21\xd8\x6d\xd7\xd3\xb5\xf7\xac\x75\x76\xcf\xf6\x90\xce\x7b\xb9\xd0\x29\x8c\x5f\xf5\x84\x5a\x52\xd9\x53\xcb\x84\xf7\x12\xef\x7f\xd0\x13\xd2\xdc\x8e\x50\xd3\x5e\x5e\xea\x46\xdd\x46\xee\x13\xb2\xee\xba\x92\xcf\x7d\xff\x37\xd3\xa2\x31\xa6\x9b\xf7\x84\x96\xd1\x53\xb1\x5a\x27\x8a\x5d\x66\xb4\x27\x69\x4a\xd9\x8d\xb9\x21\xc9\x55\xfd\x45\xd4\x43\x2b\x41\x31\xf2\x3a\x51\xcb\x68\x95\x7c\x06\xea\x9f\x19\x07\xe9\x9e\x17\x99\x10\x12\x38\x23\x87\x1f\x1f\xa0\xe9\x83\xf0\x3f\xfe\xcf\xac\xf8\x38\xff\x38\x9f\x14\x8f\xa6\xff\x7c\x3c\xfb\xcb\x63\x7c\x78\x05\x62\xff\x33\x3e\xbc\xea\x8a\x9a\x65\x39\x46\x7b\x79\x64\xd2\xb5\x23\x69\xc3\x61\x9e\x6a\x8c\xb7\xbf\x13\xff\x56\xc2\xdf\xfa\x24\x08\xa6\x6a\xe6\x02\x99\xa6\x24\xd9\xbb\x9a\xca\x56\xd6\x1f\x81\xd4\x0c\x86\xbf\x91\xce\xec\x50\xa7\xca\x45\x36\x36\xc6\xce\x81\x8d\x8d\xd3\xe4\x13\xa6\x7f\x74\x76\x41\xea\x6c\x8b\x2c\xb9\xca\x49\x10\x80\xd4\xfd\xd4\x28\x47\xcc\x34\xbb\x7a\x1f\x02\x31\x4a\xba\x4d\x96\x95\xa6\x80\x39\xa5\xee\x53\xcd\xfc\xb2\x05\xea\x27\x45\xd1\x4f\x8b\xa2\x42\x6b\xae\x8b\xfd\x0f\xa2\x28\xfa\x2f\x44\x51\xfc\x24\x70\x51\xb4\xfa\xdf\xff\x59\x78\xc1\xc2\x36\x0e\x39\x91\x48\x80\x81\x4c\x5b\xaa\x86\xf6\xf5\xf5\x96\x43\x23\x9a\x0c\x4c\x34\xe4\xc4\xc4\x29\xd7\xbc\x56\x68\xd3\xba\x13\x3f\xde\xf9\xaa\xaa\xdb\x80\x9b\x5f\xcd\xe5\x8d\xdb\xb3\x93\xb7\xaf\x8e\x8e\x4f\x2e\x7e\x3a\x39\x79\x7b\x7e\xf1\x60\x18\xbf\x10\x70\x76\xf2\xfc\xe4\xd7\xb7\x17\xfe\xd3\xf9\xfb\x27\xe7\xef\x5e\xbe\x7b\xff\xee\xe4\xfc\xe2\xfd\x9b\xa7\x27\xcf\x5e\xbe\x39\x79\x7a\x71\x7c\xf4\xf6\xdd\xfb\xb3\x93\xf8\x27\x2d\x07\x2f\x48\xae\x29\x67\x46\x72\xcd\x8b\x51\x85\x76\x39\x49\x50\x9a\x35\xa0\x0a\xed\xf2\x9e\x20\xe0\x21\x21\x74\xd2\xde\xf9\x6d\xff\x60\xe5\xb5\x6f\x9d\x37\x46\xb7\x32\xe1\x12\x97\x3c\x0c\x8f\xf6\xda\xd1\xe0\x0e\xf2\x65\xb2\x0a\x4c\x68\x8d\x9a\x1e\xc1\xc3\x7d\xd0\xfb\x75\xcf\xa3\x7f\x05\x14\x26\xd4\xd3\x2e\x3c\x21\x21\x62\x12\x3c\x08\x62\x4d\xd6\xdc\xaa\x9e\x56\xed\x35\xda\xba\x71\x12\x11\x23\x56\x65\x26\x27\x8e\x02\xc8\xfa\x3e\xb2\xda\x90\x94\x4d\x98\x9f\x54\x01\x1c\xc7\xce\x3f\xdb\x91\x1a\x81\xed\x42\x80\x3d\x8b\x80\xbe\xe6\x79\xf5\xba\xdc\x89\x6d\xc2\xc3\xd0\xb0\xb5\xbc\x62\x61\x13\xec\x17\xab\x44\x3e\x88\x0c\x70\xb3\xf8\x37\x56\x97\xed\x1d\x0c\xdc\x21\x81\x0d\x9e\x69\x8e\xf1\x6b\x7e\xd7\x0c\xa9\x53\x7b\xc7\xc7\x59\x51\x20\xee\x73\x72\x67\xb4\xb3\x26\xb9\x63\xdf\xc6\xe6\xb2\x7e\xd3\x87\x39\xc9\xbd\x20\x37\xce\x9b\xfc\x5f\xe9\x35\x9d\x4b\xcd\xc2\xb8\xf3\xbf\x1b\xf2\xbb\x40\x39\x2c\x6c\xec\x51\x6b\x44\x7d\x83\x2f\x25\x4d\xae\x75\xca\xd2\xc9\xf2\x18\xfa\x6b\x97\x1a\x34\x8c\xbf\x6f\xa6\x43\xc3\x4e\x37\xdb\xf9\x4d\xa0\x05\xe4\xaa\x99\x86\x61\x8e\x71\xd5\xfc\x1d\xac\x34\x62\xb9\x22\x43\xb8\x24\xc3\xf1\xe5\xa3\xa5\x27\xee\x97\xc6\x67\x8c\x2c\xa7\x97\xb3\xea\x6a\xad\xdb\x56\x5b\x70\x42\x14\x43\x94\xa1\x54\xa1\x1b\x0b\x7e\x0c\x0b\xcf\xef\xc2\x10\xc3\x05\x99\xce\xe0\x94\x8c\xc6\xa7\x8f\x6e\xaa\xe8\x96\x83\x01\xbe\x68\x6a\x25\xb4\x4c\x72\x47\x6e\xa6\xa7\x33\x3c\xb9\x8b\x5d\x03\x77\x0e\xaa\xe7\xe4\xc6\xf1\x75\x1a\x02\x99\x85\xd3\x27\x32\xbd\xad\x3c\xe8\x2f\xe0\x44\x43\xac\x5a\x60\xe7\x61\xf8\xc9\x56\x7f\xee\xc2\xbe\x54\x33\xd5\x36\xbe\xfb\x84\xb1\xf1\xda\xef\x7d\x26\x29\xba\x85\x05\x9c\xc0\x05\x9c\xeb\x95\x72\xf2\x98\x5c\x85\x21\x5a\x0d\xc8\xc2\x31\x18\x57\x70\x82\x07\x9f\xe1\x8a\x9c\x0c\x6e\xfd\x00\xfd\xa1\xf5\x6a\x50\xe5\xc2\xe5\x6c\xdc\xf4\x97\x68\x3a\x8f\x58\xc7\x11\x3e\xf0\xd6\xbd\xb0\xa9\x5d\x66\x72\x22\xd8\xfe\x4e\xd1\xd2\x01\xb9\x36\x61\xfc\x72\xc2\x19\xf6\x71\xf4\x13\x68\xdf\xf5\xe0\x2a\xcf\xc7\xf9\x2d\x53\xe9\x12\x25\x9e\x4b\x1a\x62\xbc\x4d\x93\x9c\xea\x5d\xec\xc8\xd2\x83\x60\x6c\x52\x42\x9f\xd2\x53\x36\xe1\xff\x54\x09\xb2\x11\x4f\xd4\x7e\xfb\x8f\xbd\x6f\xa9\xfb\xf2\x28\x88\x73\xc2\xa6\x89\x4b\x1e\xc1\xc1\x08\xcf\xc6\x76\x6d\xce\xe9\x22\xd9\x64\x2a\xd6\x7d\x5b\x90\x41\xa2\x27\x50\x4f\xf6\xa2\x36\x8a\x61\x0b\xb4\x78\xbc\xb1\xdd\xcf\x88\x64\x68\x71\x38\xaa\x6f\xbe\xb7\x27\xd3\x34\xce\x1e\x91\xcd\xa4\x5a\x2b\x62\x9a\x1d\x8c\x66\x93\x6a\x90\x23\x1c\xdb\xa4\x41\x33\x89\x96\x39\x11\xd3\xc5\xc1\xa8\x8a\xac\x50\x55\x90\x6b\x26\x35\x2f\xad\xe2\xd4\xde\xc5\xc7\xfe\x34\xfa\x73\xe5\xf8\x64\x84\x4d\x1b\xd2\x65\x57\xac\xd2\x42\xe5\x70\xcc\x1f\x79\x46\x7c\xcc\x07\x03\x6c\x82\xeb\xd4\x02\x16\x6f\xc8\x2b\xb5\x27\x4e\x59\x42\xc2\xc8\xae\x33\x41\xe5\x97\xd0\x58\x53\xac\x11\xe6\xc9\xfb\x26\x98\xde\x18\x37\x90\x84\xd5\x66\xdd\xbe\xc8\x86\xed\x7a\x25\x19\x87\x8d\x3a\x43\xce\xbe\xf5\xea\xac\xaa\xc8\xa2\xab\x1b\xde\xcc\xf5\xde\x9e\x64\xac\x32\x31\xf1\xe6\xf7\x5d\x0c\x6f\x23\x5a\x95\x19\x2e\xae\x61\x3f\x04\x5e\x5d\xa2\x32\x96\x8f\xf8\x58\x0e\x06\x98\x36\x2e\xb6\xb4\x57\x83\x81\xb2\x97\x5c\xf4\x5a\x17\xc7\x28\xbc\x07\xe0\xb6\x4d\x73\x75\x2d\x28\xae\x02\x9d\xb8\x4a\xc5\x0c\x04\x28\xab\x47\x5b\x33\xb2\x75\x41\x7d\xe2\x94\x81\x7b\xb4\xf7\xd8\x75\x50\xf9\xf6\x2c\xd9\x6c\xbb\x10\x02\x96\xdf\x5b\xbe\x31\x23\x7d\x33\x95\x61\xe8\x53\x9a\xec\xa3\xfb\xda\x3a\xc3\xea\x74\x86\x69\x65\x89\x7c\xc3\x61\xd8\x9d\xee\x7a\xf7\x4c\xc8\x95\xb1\x63\xec\x18\x5f\xc7\x1d\x29\x3e\x7b\x18\xb6\x8e\x43\x7d\x72\xd9\x06\xda\x07\x46\x6f\xbf\xb1\xe2\x46\xa9\x30\x6c\xbc\x44\x2c\xd7\xb5\x4c\xf6\x93\x90\xc2\xb1\xb1\xff\xbc\xac\xc6\x69\x9f\x9a\x1d\x6b\x14\xd3\x7d\xdb\x75\x06\xfa\x4a\x60\x35\x9d\xdd\xba\xf0\x77\x65\x77\xc1\x29\xda\xd9\xed\x22\x8c\x73\xbd\x74\x2a\x9f\xa9\x78\xa3\x5f\x9f\xb6\x6f\x17\xdf\x5b\x42\xfa\x7b\xc7\xda\x79\xc6\xb2\xaf\x16\xd3\xdf\xbb\x96\x5c\x26\x2e\xbf\x56\x4c\x7f\xef\x6a\xcd\x95\x88\x17\xcc\xc2\x8a\x26\xab\xae\x75\x9b\xdb\xc5\xaa\x51\x45\xb4\x66\x6b\x6a\x0a\xbf\x3f\x7b\x75\x4e\x13\x99\x2e\xdf\x26\x32\x59\x75\x79\x64\x76\x4d\xfb\x4e\xa9\x9d\x65\xb5\xf3\xd5\xce\x60\xc2\xe7\x89\x9c\x3f\x91\xe2\x36\xa7\xf2\x84\xdf\xec\x9f\x4d\xa1\xae\x78\x48\xd5\x95\xd5\x45\x11\x9c\xd1\x24\x55\x6f\x8c\x3d\x9f\x16\x8c\xab\x4f\x1a\x7f\xcc\x37\xa9\x46\x91\xf6\xab\xb5\x57\xbf\x37\xcf\x79\xe7\x17\xcd\xa9\x7d\xed\x7e\xa1\xae\x6f\xde\xae\x52\xf3\xc7\xee\x92\xdb\x8c\xc1\x8a\xca\xab\x7a\xfe\x7b\xaa\x29\xdf\x56\xa9\xd2\x72\xec\x7b\x48\x9d\x4e\xf9\xac\x03\xd7\xcb\x89\xfe\x40\x14\x72\x47\xef\x31\xb5\x37\xcf\x56\xe7\xf3\x64\x08\x62\x3f\x32\x1c\x7f\x24\x0c\xd1\xcb\x18\x6a\x92\xbc\xc6\xd9\x3d\x2d\x61\x4e\xe9\xfa\xf5\xff\x58\x9f\x3b\xb2\x29\xa4\x85\x6f\x1c\xff\xdf\x19\x0e\xfd\xac\x28\x9f\xef\xdd\x1d\xef\x65\x3c\x86\x68\x8b\x59\xe3\x78\x6b\x6f\xf1\xed\x76\x55\x9c\x30\x66\x38\x82\x98\x1a\xcb\xe5\x12\x94\x64\x9d\xdb\x4b\xd5\x0a\xcb\x7f\x7e\xcc\xff\x72\x08\x41\x80\xeb\xa4\x8f\xf9\x5f\x1e\x98\xa4\xe6\x15\x26\xf3\x26\xa1\xa7\x5c\x0b\x25\xef\xcf\x5e\x56\x71\xb9\x90\x6a\x54\xf0\xef\x7f\x1d\x1e\x5e\x31\x08\xfe\xd1\xac\xf5\xdf\xbf\x3b\x32\x89\x71\x2b\xf1\xe1\x5f\x0f\xaf\x20\x78\xd0\x4e\x3b\x36\x19\xa1\x9d\x38\xd4\x19\x07\xad\xb4\xef\x9f\x98\x8c\xd3\x76\xe2\x53\x93\x38\x0b\x2c\xc5\x5d\xb2\x6e\xe3\xcc\xca\x79\xcf\x5a\x63\x6a\x6e\x52\x62\xae\xa5\x3e\x47\xfe\xb5\x1c\xc6\xa2\x3d\xac\x83\x28\xc6\x9c\xd4\xec\x15\x6a\x5c\x89\x25\xb4\x38\xb6\x66\x55\x6c\x09\xba\x6b\x34\xe0\x38\x97\x30\xb4\x55\x57\xc1\xfd\xe8\x80\x04\xd3\x59\x10\x1b\xce\x05\x1a\x35\xec\x9c\x51\x9a\x52\x4f\x6d\xcc\xcc\x89\x09\x91\x2d\x5e\x9e\x9f\xfa\x8e\xc4\xe6\x73\xe5\xf0\x6a\x38\xa1\x1f\xcf\x4f\xdf\x44\x96\xf2\xb0\x85\x71\xbc\x02\x61\x05\x9c\x39\x43\x14\x0f\x02\x12\x0c\xcc\xd4\xda\xc8\xcf\x58\xb3\xa1\xc2\xf8\x5e\xa3\x20\x0c\x70\xa9\xd9\xad\xda\xfd\xbb\x3a\xe8\xf9\xb7\x00\x8f\x0f\x46\x4e\xce\xd0\x1d\xf1\x5c\xbf\x09\xbe\x3e\x20\xf6\xb4\xa8\x51\x60\x12\xe0\x49\x30\x09\x62\x5d\xe9\x80\xd7\x51\x32\xea\x05\x76\xc3\x7c\xb8\x07\x17\xd1\x3e\x27\xd3\x59\x79\xc3\x9a\x91\x58\xf3\x7b\x02\xfd\xb6\x8a\xd9\xe1\x6d\x17\x9b\x6c\xc1\xb2\x8c\xce\x63\xe5\x2c\x8b\xe8\x5c\x6f\x0c\x68\x67\xf6\x71\x09\x4b\x68\x35\x65\xcd\x4f\x5a\xb6\xd5\xcd\x62\x53\x35\xf3\xd1\xba\x1b\x49\x46\x87\x81\x77\x6a\xf2\x57\xff\xee\xcc\x63\x35\xc3\xcd\x3a\xda\xf1\x9d\x1c\xab\x46\xc3\xd0\x5d\xdc\x64\xb5\xf8\x77\x8c\xdc\x30\x58\xed\xaf\x6b\x07\x8c\x46\xe5\xcd\x33\x1d\x89\xb7\x8a\x48\x6f\xe0\xaa\xb1\xc3\x15\xeb\xd0\xe7\xf7\x4d\xf0\xd1\xbe\x8a\x2e\x2e\x8e\x8f\xde\x1c\x9f\xbc\xba\xb8\xc0\x8d\x59\xba\x64\x95\xcb\xa2\x96\x65\x9c\x86\xb7\xf6\x5c\xea\x2d\x13\xeb\xce\x7a\x49\x29\xef\x79\x22\xd4\xe0\xe3\x6f\x3b\x2b\x30\x1e\x49\x7f\x52\x85\x1e\xfb\x09\x23\x97\x0c\x2e\x18\xb9\x65\x75\x9f\x4e\x99\x73\x34\x3c\x61\x5a\x42\xab\xfa\xe2\xb7\x78\xc3\xaf\x4a\xc1\xd0\xe8\x47\x6c\xd6\x4b\x56\x14\xfd\x13\x86\xc3\x70\xbf\xd0\x09\x6b\xd4\x04\xbb\x55\x34\x5c\xa3\x4f\x98\x49\xaa\x7d\xa1\x5b\xdf\x9a\x92\x40\x2b\xd7\x4e\x0e\xe7\xef\x3f\xc4\x65\x59\x76\xa0\xf6\x85\xb9\xb9\xc5\x75\x21\x0c\x51\xab\x77\x9d\x96\x43\x0b\x19\x35\x81\x1a\x86\xe8\x82\x91\x66\x8a\x53\x91\x30\xf8\x64\x8c\x42\x3e\x33\xd2\x1f\xc1\x31\x23\x07\xa3\x46\x04\x53\x3d\x59\x9f\x59\x18\x9e\xeb\x7d\x6e\xb3\x9c\xfb\x13\x9c\xc9\x27\x46\xce\x99\xd7\xa4\x7c\x62\x38\x36\xa5\xe1\x93\xcf\x10\x86\x6f\x19\x6a\x5e\x1f\xa0\x5f\x0d\xf6\xfd\xcc\xfc\xc1\xd6\x29\x43\xef\x18\x1e\xeb\xaa\x87\xe3\xda\xb5\xb2\xaa\x63\x4c\xc7\x56\x7e\x3e\x67\xe4\x93\xeb\xeb\x78\x30\x38\x66\x8f\xe8\x18\x9f\x9b\x9e\x4d\x8f\xd9\x2c\x92\x1b\x8e\xf0\xd8\x76\xa0\x51\xbc\x3c\xb7\x8a\x45\x37\xbc\xe6\x72\x67\x0b\x0d\x11\xd2\x86\x89\x9b\x95\x66\x9a\x8b\xf4\x64\x33\xdf\xea\x15\x73\xa1\x57\x4c\x57\xb1\x1d\x08\xc3\x6e\x35\x7a\x65\x5c\x30\x13\xd6\xa3\x63\xb1\x5c\xb4\x16\xcb\xfe\x52\xb9\x60\x3b\x37\x21\x96\xa8\x75\x1f\xe2\x11\x6b\xf8\xcc\x2f\x36\xdc\x9b\xd8\x25\xc6\x6d\x9c\x96\x47\x4d\xac\x24\x37\x2d\x7b\x3d\x5f\xc6\xa9\x15\x6c\x17\xaa\xc2\x4d\x04\xf0\x4a\xcf\xa1\xd9\x8b\x6f\x18\x79\xc5\xe0\xda\xfc\x3d\x33\x7f\x5f\x9b\xbf\x0f\xcc\xdf\xa7\xe6\xef\x4b\xfd\xd7\x46\x89\x61\x64\x21\xa3\x35\x95\x0b\x21\x57\x9a\xf9\x2e\x8a\x6d\x09\xef\x19\x79\xc6\x22\x2e\x6e\x8b\xe2\x19\x8b\x56\xe2\xcb\x1b\xff\x98\xfb\x27\xe1\x1f\xac\x63\xb3\x79\xdb\xe7\xc7\x35\x2e\xd1\x84\x11\x47\x57\x76\x5f\x20\x87\x2d\x9f\x30\xe2\xbf\xd9\x30\x2d\xcc\xba\x7a\xbf\x63\xe9\x75\x87\x51\xd1\xfd\x0a\x9a\x03\x1b\x2d\x60\x3f\x22\x47\x43\xc5\x30\x1a\xcb\xfd\xf8\x59\x46\xcd\x30\x95\x07\xa3\x9d\x90\xc7\x9f\x9c\x79\x95\x69\xd2\xce\x1d\x06\x4d\x53\xab\xd5\x5b\x14\x9f\x59\x51\x9c\x32\xf4\x96\x99\x33\x30\x95\xd1\x38\xb8\xb4\x62\x49\x00\xee\xc1\x1a\x05\xde\xc4\xdb\x12\x12\x79\x75\x13\x4f\x67\xe0\xee\xf5\x8c\x83\xc0\x3f\xe6\xfa\xb3\xe0\xf1\x1b\x06\xc9\x7c\xee\x5d\x48\xe3\x6b\x06\x82\xa7\x34\x3e\x63\x20\x16\x8b\xf8\x35\x03\xeb\xa9\x5a\x65\x78\xe0\x53\x8e\xb2\xcc\x27\xe6\xf1\x53\x06\x74\xc5\x54\xfc\x92\xc1\x25\xe3\xf3\x5d\x79\x77\x0f\xbb\x3b\xdf\xac\xc8\x65\xf6\x11\x0f\xf2\xcd\x7a\x6d\x43\x4c\xe1\x12\xd2\xdb\x79\x47\x04\x8d\xc3\xa0\x84\x74\x39\x67\xf2\xdb\x1a\x30\x59\x3b\xab\xdf\xac\x92\xfc\xba\xc3\xc6\x70\x58\xc2\x52\x2a\xb6\xea\x32\x30\x8b\x86\xc3\xd1\x5f\xde\xbb\x5d\xf7\x8c\x61\x90\x8d\xc3\x46\x6b\x74\xd6\x7c\xff\xf7\xd1\x5f\x46\xf4\xef\xb5\x5d\x52\x18\x22\x79\x40\xd4\x74\x38\x03\xc4\xf5\xc3\x68\xe6\xee\xfa\x3b\x38\x00\x3e\x20\x3a\x33\x86\xa9\x04\x3e\x2b\x61\x9d\x25\x4a\xef\x8c\xc6\xfc\x4a\x9a\xd1\x24\xa7\x7a\xe6\xac\xbd\xa4\x7e\xda\xac\xdb\x9d\xdd\xdb\x00\x07\x4f\x18\x3e\x1c\xd1\xef\xca\x12\xbe\xec\x6a\x26\xef\x61\x2c\x8d\xa0\xc4\x2d\xa7\xc1\x23\x25\xde\xaf\xd7\x54\x1e\x27\x39\x45\xe6\x4a\xa8\x76\x8a\x66\x7b\xcc\x35\x4d\xe0\xaf\x6d\x9f\xf2\x99\xb5\xb1\xfa\x63\x97\x25\x69\x9d\xe6\x7d\xe5\x93\x72\x97\xcb\x11\x0a\xf6\x62\x49\x2d\x5d\x10\x89\x41\xcb\x29\x7f\x6c\x68\xae\x08\x37\xcf\xf9\x5a\xf0\x9c\x12\x01\x4a\x73\xcf\x9f\x99\xc8\xcd\x02\xb0\xb7\xd9\x29\xa1\x99\xdd\x0e\x9f\x32\xe7\x27\x6d\xe3\x68\xb9\x17\x30\x41\xd9\x4c\x8a\x7e\x82\xb9\x0b\xe5\xa6\xb7\x8d\xbd\x03\xb4\x4e\x00\xab\x8a\x71\xb9\xcd\x33\x2c\x58\x46\xdf\x54\x55\xf8\x37\xc8\x18\xa7\x6f\x1a\xb9\xeb\x77\x48\x45\xb6\x59\xf1\xe6\xc7\x66\x0a\xe4\x2a\x49\xaf\x63\x7f\x0b\x41\x7a\xed\xe7\xdc\xe5\xd4\xcf\xa0\xc1\xe2\x13\xe6\xb4\x2c\x41\x95\xa8\xde\x05\x0a\x57\x80\x2d\xe1\x03\x23\xd3\xc0\x38\x87\x07\xc9\x46\x2d\x85\x64\x5f\xdc\xdd\x98\x41\x6a\xe3\x48\x1e\x58\x1c\xd3\x48\xd0\x84\x21\x80\x80\xaa\xe4\x4a\xff\x7c\x5e\x33\x49\xf3\x00\x82\x85\x14\xab\x00\x82\xa5\xc8\x55\x00\x01\x5b\x1c\xac\xc4\xdc\xd8\xf2\x1f\xe4\x8c\xa7\xd4\xa6\x6d\xf8\x5e\x6a\x96\xe4\xaa\xca\xab\xdf\xbd\x87\x02\x04\xab\xe4\xf3\xc1\x42\xc8\xdb\x44\xce\x75\x0b\x6b\x29\x3e\xdf\x1d\xec\x76\xd4\xc4\x02\x35\xb1\x1e\x25\x55\xf2\xee\xc0\x5c\x5b\x12\x40\xb0\xc9\xa9\x3c\x48\xae\x28\x57\xc1\x0c\x5e\x30\x62\xc4\x9e\x7d\xad\x0d\xc2\x93\x5d\x3b\x1a\xa0\xe4\x10\xad\x72\x46\x0b\x25\xd9\x9c\x72\x85\x7d\x9c\x8c\x5a\xc5\xa2\x6b\x3f\xba\x32\x8e\xa1\x72\xd7\x77\xdb\x45\x95\x43\x41\x12\x34\x02\x60\x55\x28\x83\xd7\x16\x73\xe6\x2e\x23\xcd\xb3\x1d\x29\x25\xd9\xe5\x46\x51\x14\x2c\x25\x5d\x04\xc0\xad\xb1\xaa\x7e\xc1\x70\x6f\x96\xad\x7e\x8a\x6d\x36\xf0\x61\x0b\x62\x59\x47\x30\xa8\x1f\x6b\xd9\x37\xb6\x62\xbb\xc6\xfb\x7a\xb2\x74\x71\x91\x6b\xe6\x55\x8b\xaf\xb1\x6e\x4b\x3f\x4c\xfc\x43\x53\x09\x30\xa9\x4b\x26\xb9\xce\xab\x7f\x26\xf6\xa7\x91\xef\xdf\x5a\x0d\x98\x3d\x64\x1b\x31\x9b\x48\xa3\x5b\xdd\x47\x21\x15\xac\x13\xb5\xb4\x81\x0f\x0f\x03\x42\x88\x8c\x7c\x42\x7d\xbe\x34\xa9\x13\x75\xae\x41\xfd\x5a\x56\x02\x22\xe1\xfe\x32\x65\xbf\x7a\x1c\xe4\x9a\x82\x92\x25\xbe\x6e\x19\x18\x59\x98\xe2\x89\xfe\x12\xd7\x81\xa8\x2b\x70\x19\xb9\xd4\xbf\x84\xa1\xed\xbe\x49\xd4\x0f\x65\x89\xf0\x3e\x76\xed\x0f\x4b\xf8\xf5\x6b\x0b\x6d\x7b\x2b\x59\x4b\xfd\x5a\xc7\x7e\x73\x71\x88\x34\xdf\x9a\xb8\x98\x75\x46\xea\xee\xd0\xa1\x68\x06\xc0\xb4\xe1\x6e\xe8\x96\x38\x0c\x5d\x19\xbf\x1d\x49\x30\xf0\x98\x1e\x49\x1c\x29\xf1\xfc\xf5\x3b\x2f\xff\xbb\xc2\xd5\xd1\x72\x5d\x58\xc3\x55\x97\x6c\xe7\x10\x8d\x1c\xce\x9d\x24\x18\x08\xe7\xd5\xc9\xea\x6f\x39\x4d\x37\x92\x06\x18\xea\xdd\x20\xc4\x35\xa3\x24\x71\x8a\x82\x71\x4f\x93\x58\x49\x93\x79\x07\x15\xdd\x29\x14\xad\x0c\x5b\xdb\xb4\xba\x44\xff\x2c\xc6\x1f\x3f\xe6\x7f\xc1\x28\x18\xa8\x41\x80\x09\x9a\xfe\x73\x3c\xfb\x0b\x0e\x6a\x8b\x6b\x3a\x99\xd3\x7d\x70\x4d\xbf\x9b\xe1\xd8\xd9\xaa\x18\x2e\x25\xde\x13\xd8\xcd\xbc\x20\x05\x41\x00\x1a\x66\x26\x6e\x09\x3e\xf8\xdf\x3f\xfc\x95\x7e\x8f\xcb\x32\xde\x9d\x37\xbc\xdd\x1d\x47\xeb\x28\x65\xbf\x1d\xbc\x2d\x4b\xf8\xa9\x4b\x90\xbe\x27\x9c\x5e\xeb\xaa\xda\x79\xa2\x12\x10\x7a\xe9\xd1\x64\x4e\x65\x3e\x36\xd3\xe3\x8f\x3a\xcc\x14\x3a\x2a\x2b\xa6\x81\x8b\xff\x7b\xf0\x4e\xa3\x69\x7b\x63\x86\xe5\x6d\x7f\x7d\xfd\xea\x85\x52\xeb\x33\x4b\x2a\xcd\x2d\x05\x91\xc6\xa5\x7e\xe5\xd9\x37\x83\xd8\xb8\x0d\x86\x1c\x40\xea\x53\xd7\x49\x9e\xdf\x0a\x39\xd7\xa9\x63\x11\x1d\x35\x71\x30\x09\x9e\x24\x39\x4b\x7b\xc1\xe0\x52\x89\x04\x25\x83\x20\x0e\x06\xa9\x95\xc4\xad\xb3\x31\xda\x10\x15\x5d\x26\x39\x7d\x7f\xf6\x0a\x72\xa2\xa2\x8d\xcc\x60\x13\x86\xfd\xc3\x7f\xa2\x69\x72\xf0\x65\xa6\xff\x7c\x9c\x7f\x1c\x7c\x3c\xf8\x18\xcd\xfe\x12\xe3\xc9\xc7\xc3\x8f\x87\x1e\xe9\xe6\xb8\xdb\x00\x86\x4e\x1a\x0a\xca\x8f\x87\x03\x8b\xd6\x06\x1a\x47\xd0\x26\xd2\x3a\x1c\x58\x74\xa4\x4a\xb4\x81\x1c\xc7\xb9\x8d\xe7\x15\x89\x35\xe5\x48\x45\xd6\xba\xad\xcd\xbe\xc0\x92\xa1\x05\x18\x6f\xcd\x64\x95\x57\x0f\xe7\x54\xda\x88\x9c\x36\x60\x2d\xb0\x48\x59\xb1\x8d\x28\xff\x04\xec\x4f\xe2\xbc\xe8\xa6\xc3\xf0\xaf\x7a\xef\x44\x26\xdf\xb9\x75\xb1\x42\xe6\x3c\xde\x38\x5c\x6d\xf2\xa2\x60\x15\x1f\xf3\xfe\xec\x55\x18\x0e\x5d\xfe\x2a\xa9\xd6\x99\xd9\xc8\x35\x18\xd7\x56\x95\x2e\x9a\x19\x31\x51\x5a\xb3\xec\xcc\x95\x7a\x61\x57\x4f\xc0\x78\x8f\x4d\x8c\xe9\x64\xe7\x77\x84\x61\x63\x6e\x0b\x9d\xa0\x06\x27\x58\x5d\xff\xff\x91\x07\x3b\xb7\x7e\xb1\x05\x4a\x9b\x4a\xbc\x38\xc0\x20\x34\x16\x54\x92\xad\x90\xbd\x4f\x5b\x49\x34\x84\x14\x6b\x54\xf4\x4a\xdc\x56\x60\x4e\xf6\xb3\xa5\x83\x11\xc6\x60\xaf\x1d\xdd\x18\x63\xe1\x0f\xac\xaa\x5b\xe0\xc7\x64\xe8\x6f\x6e\xd1\x5f\x49\x90\x53\x75\x60\x71\x86\x26\x20\x62\x62\x0a\x4d\xf4\x9f\x78\x3a\xc3\x5e\xef\x30\x4d\x66\x38\xae\xbe\x0c\x02\xe8\x05\x83\x24\x4e\x4c\xec\xaf\x0d\x8e\x37\x16\x41\xc0\x82\xd8\x1b\x8e\x6b\x2e\xf2\x9d\xb9\x70\x30\x50\xf4\xb3\x39\x7d\x69\x7f\x98\xd4\x53\x12\xd7\x8f\xef\xe8\x67\x05\x76\x1e\x63\x3f\xa1\xee\x5d\x7f\xaa\xd2\x4c\x3e\xb7\xa5\xe3\xbc\xe2\xe4\xc0\x31\xb3\x31\x2b\x77\x8d\x0e\x1b\xf6\x9c\xf6\x9a\xe5\x9b\x24\x63\xf3\x44\x99\x5b\xaa\x36\xf9\xb8\xcf\x8b\x82\x23\xe9\xea\xc7\x13\x85\x24\x8e\x29\xfa\x83\xa1\xc0\x6d\xfb\xde\x22\x61\x19\x9d\xf7\x6e\x99\x5a\xf6\x6c\x36\x13\x48\xa2\xa7\xe9\xaa\xeb\xaa\xaf\xdd\xd8\xf7\x99\xe8\x21\xa6\x28\x48\x8c\x4b\x63\x45\xb7\xf0\x86\x58\x65\x69\x96\x7b\x72\x29\x64\xeb\x5e\x45\xa6\xd9\x9a\x56\xb3\x26\x8b\xf5\x4c\x0e\x4e\x8e\x4f\xdf\xbc\x39\x7a\x62\x9c\x19\x02\xa3\x0a\x66\x5e\x25\xaa\x6b\x33\x4e\x33\x2d\xfe\xdc\xd4\xf4\x86\xaa\x5b\x21\xaf\x2d\x17\x6b\xdc\xb5\x75\xef\xea\xd2\xb6\xb0\xdf\x8f\x7b\xb6\x93\x81\xfb\xd2\x13\x8b\x5e\x30\xa8\xb6\xeb\x20\x58\xe5\x3d\xfa\x39\xa5\x74\x4e\xe7\xc1\xb8\x4a\x37\xad\xb8\xa8\x51\xc6\xb0\xbf\xf3\x0b\x06\xd3\x37\xfa\xb5\x51\x95\x70\x2f\x3f\xe0\x8d\x52\x7e\x65\xb0\x26\x48\x45\xe6\x0e\x2b\x49\x35\xc7\xc9\x92\x2c\x2f\x8a\x17\x0c\x2d\xb0\x09\x5a\xf4\x39\x97\x8b\x63\xb3\xca\xb5\x00\x31\xc9\x0c\xea\x40\xbb\xe9\xd8\x19\x46\x8f\xd7\x61\x88\xc4\xd4\x7e\xb6\xdb\x5a\x7f\x9e\x91\xb5\x51\xd5\xeb\x3d\xe3\x26\xc6\x7e\x34\x28\x21\x0c\x1b\xdb\x5d\xec\x39\x32\x7a\xab\x0e\x1e\x86\x6d\x51\xc0\x09\x7f\x8d\x6d\x3d\xa9\xa8\x11\x9d\xe9\xd5\xbe\xd3\x1a\x72\x77\xf7\x59\xc0\x54\xe7\xd3\xfb\x00\xc0\xc5\xff\x47\xdb\xb7\x37\xb7\x6d\x2b\x8b\xff\xff\xfb\x14\x32\xa6\xe1\x10\x47\xb0\x2c\xcb\x8e\xeb\x50\x46\x38\xae\xe3\x64\x7c\x4e\xf3\x68\x93\xfe\x7a\x5a\x8d\x26\x03\x4b\xb0\x8d\x44\x22\x55\x10\x92\xe3\x2b\xf1\xbb\xdf\xc1\xe2\x41\xf0\x61\xa7\xf7\xcc\xbd\xff\xd8\x04\x08\x02\x2b\x3c\x76\x17\xfb\xdc\xc5\xa2\x59\x49\xf7\xf6\xda\x0d\x49\xfd\x5c\x62\xf0\x1a\xaf\x55\x35\x4e\x6e\x25\x36\xd3\xf3\xf1\xa5\xc8\xb3\xf6\xe9\xb6\x26\xca\xbc\x4b\xd2\xaa\x06\x79\xf6\x2a\xbf\xcf\x16\x39\x9b\x7f\x90\xf9\xad\xe4\x45\x11\x45\xa2\x23\xfc\xd6\xca\xbe\x45\xa4\xeb\x9b\x4e\xa1\xac\x6e\xf8\xdb\xaa\xd9\xf5\x1a\x6a\xaa\xa7\xef\x8e\x55\xef\x02\x12\x55\xb3\x6c\xc6\x17\x9f\xf2\xaf\x3c\x03\x6b\x8c\xaa\xe8\xdc\xd2\x3a\xbc\xf5\xc0\x46\x6c\x00\x07\x38\xd6\x1b\x5e\x55\xe7\x15\x07\x61\x70\x33\x13\x9f\x1e\xf2\xfa\xeb\x35\xcf\xe6\xb1\x71\x88\x23\xbf\x08\xba\xad\xb3\x25\x09\x62\xab\xd5\x42\x18\x4e\xfd\xe0\xdb\xfe\xfd\xfd\xbd\xbe\xe7\x2d\xf7\xd7\x72\x61\x18\xde\x39\x0a\x84\x89\xff\xb4\x22\xcb\xbd\xe6\x86\xc1\xb0\x67\x6b\x55\x4d\x06\xc8\x48\x22\x1a\x95\xd4\xfa\xab\xfd\x2e\xc8\x1f\x82\x6e\xd9\x9c\xad\x14\x97\x49\xdc\xa9\x2d\xaf\xf3\x4d\x41\xac\xa8\x37\x22\x8a\xbc\x25\x83\x95\x2d\x81\x31\xc3\xa3\x46\x56\x46\x46\xf4\x46\xe8\x33\x1d\xff\x2e\xe8\xbf\x04\x26\xbf\x0b\x4c\x94\x64\x59\xa1\x27\xc0\x0e\x92\x4c\x3a\x19\x9e\xff\xd2\xa8\x06\x9d\xcf\x66\x7c\xa5\x10\x26\xa6\x58\xfb\x65\xf6\x4c\x79\xd6\x50\xe1\xdd\xae\xd2\x21\x7a\x7b\x1b\x5b\xd9\x2c\x1b\x43\x8b\xaa\xfc\x5a\x2c\x78\xd0\x7a\x91\x5f\x83\x42\x31\x69\xf6\x68\x8d\x60\x52\x67\xf7\x92\x74\x6a\x44\x15\x4e\xe3\x7f\x02\xc8\xdf\x5d\xfc\xb1\xbe\xfc\x15\x5c\xd1\xb5\xba\xd9\x3f\x05\xb7\xc4\x4a\x91\xda\x54\x60\x76\xf5\xaa\x0f\x74\xab\x93\xb6\x92\x33\x51\xe5\x34\x9c\x7c\x4b\xca\x27\x0d\xee\xa6\x6d\x93\x03\x08\xc6\xaa\x4d\x57\x7a\x94\x4a\x5a\x1f\x84\x1a\x82\xde\x0d\xd5\x48\x86\xa4\x8e\xaa\x13\xf4\xef\x8f\xbf\xbe\xde\xff\xf4\xfe\x5f\x97\xef\x10\xa9\xe3\xe9\x04\xfd\x7b\x3f\x7c\xbb\x64\xdf\xec\x2a\xff\x6c\x1c\x42\xf6\x21\x30\x57\x40\xf9\x3b\xb5\xf7\x2f\xe9\x68\x38\x8c\x22\x75\x76\x34\x1c\x96\xe5\xf8\x0f\xe1\xee\x0f\x74\x3b\xcb\x97\xcb\x3c\x83\xe4\x02\x7c\xa5\x92\xd6\xdc\x91\x9e\x66\x78\x0e\x56\x0b\x26\x32\xd2\xfb\xc7\xc1\x3f\x50\x59\x86\x0a\xe7\x09\x32\x28\xde\x64\x02\x40\xc4\xa4\xb8\x99\xd6\xf9\xc2\x6a\xc0\x89\x9a\xd2\x6d\x69\x51\x7e\xd5\xc7\xca\x88\x8a\x56\x6b\xf8\xab\x67\xef\xe9\x2e\x56\x62\x00\x86\x28\xf1\x2f\xc6\x2f\x58\x1f\xe1\x3f\x05\xfd\x23\x50\xf2\xc1\x9e\xdf\x3e\x89\xe9\x00\xab\x5f\xdd\xd8\xa3\xc6\xe7\xb1\xc1\x05\x9c\x75\x86\x0c\x60\x90\x7b\xd3\xcf\x9c\x7f\x02\xbd\x84\xb9\x9a\xd1\xa5\xb0\xc1\x44\xab\x86\x7a\xc7\x36\x0e\x75\xd8\x8d\xff\x25\xbe\x6a\x60\x96\xc4\x76\xeb\x7f\xb4\xbd\x9d\x4c\xeb\xf5\xf8\xfb\x6b\x41\xba\x66\x97\x20\x33\x4a\x6d\x9a\xb9\x8f\x02\x5a\x8d\xcb\xc1\x93\x4b\x5f\x10\x0d\x6a\xdc\xed\xfe\x14\xee\x19\xc7\x6d\xa7\x6e\xde\x98\x30\xee\x27\xc6\x3c\x11\xde\x3d\x31\xe6\xc0\x41\xea\xf4\xce\xa4\x45\xb7\x22\xe6\x9a\x0b\xb0\xbd\x46\x11\xf7\x14\x5a\x73\x65\xbe\x10\x0c\x57\xab\x22\x41\xf9\x29\x00\x30\x26\x55\xd8\x7c\xc0\x2b\x36\x72\x8e\x64\x0d\xe1\x38\xa7\xa0\x92\xb2\x8e\x72\xfa\x9a\x44\x27\x68\x2d\x17\x88\x20\xb3\x54\x30\xd9\x1a\xe1\x21\x82\x34\x08\x68\x4a\x72\x3a\x41\x76\x74\x2b\x68\x75\xc2\x4c\x34\x25\x82\x4e\x90\xbd\x1a\x23\x62\x7b\x6a\x6e\x9d\x7a\x95\x81\xd9\x8f\x53\x5d\x4a\x75\x33\x83\x6e\x10\x41\x0d\x16\x49\x0f\x6c\xd6\x0f\x04\xa5\x15\x97\x83\x08\xaa\x63\x26\x5b\x51\xa1\x23\x44\x50\x93\x99\x80\xaa\x26\x2f\x63\x04\xb6\x35\x4c\x85\x08\xaa\x23\x2a\xd3\xe6\x57\x3e\x17\x92\xcf\x94\x2e\xde\x29\xb5\x02\x41\xaa\x7d\x2e\x5c\x21\x38\xb3\x88\xa0\x22\x9f\x7d\xe5\xea\x03\x53\x77\xa8\x66\x3c\x93\x35\x42\x13\xf8\xa0\x8e\xc6\xf6\x42\x6a\xbc\xa1\x9f\x71\x03\xfb\x84\x0c\x6e\x66\x4d\x66\x2c\x49\xe1\x13\x08\xc4\x32\xc9\x00\xe3\x78\x53\xb2\x58\x4d\xb2\x29\xc4\x89\x71\x6c\x36\x0c\x93\x4d\x4d\x53\xfd\x54\xa7\x4c\x4f\x74\x13\xf4\xa0\xc0\xd2\x2c\x86\x76\x4e\x49\x12\x02\x2a\xea\x80\x3e\x36\xf2\x93\xfd\x8d\x8d\x84\x27\x73\xb7\xe1\x1c\x07\xe9\xfb\x67\xb5\x84\x45\xfc\xa9\xb4\xe9\x60\xae\xc3\xfc\x6d\x5c\x85\xd1\x0e\x02\x90\x67\xff\x0b\x20\x13\x19\x30\x80\x19\xf3\x92\x3a\x6b\xf1\x5f\x38\xb5\xb5\xc8\x14\x97\x9a\x88\xe5\x9a\xae\xb9\xab\x73\xc6\xef\x7b\x0f\x82\xf8\xcb\xb9\x29\x97\x65\xc6\x6a\xfe\xfb\x46\x69\x14\xfe\xce\x36\xa9\x4f\x63\x45\xc3\x64\x0a\xfa\xf4\xe3\xc1\x5a\x2e\x82\xda\xe1\x34\x81\x24\x9b\xdb\x92\xc4\x8a\x4a\x16\xd7\x40\x25\x0a\x63\x8b\xc7\x53\x87\xd0\x69\x20\x77\x0a\x6e\x4e\x49\xed\xc3\xf6\x47\x1d\x6f\x9b\x1d\xb8\xb6\x40\x0c\x6c\x08\xa7\x09\x67\x96\x51\x9f\x12\x49\x9b\x09\x42\x14\x06\x93\x8a\xd6\x74\xba\x09\xea\x4e\x13\xcf\x07\xeb\xac\xb8\x13\x37\x2a\x56\x03\x6f\x44\x45\x5c\xb8\x33\x3e\xc7\x3e\x2c\x6a\xa3\x4f\x8b\x8e\x1f\xe9\xd4\x88\xbe\x1f\xed\x71\xec\x52\xc4\x8e\xb1\xa4\xd2\x90\x21\x3e\x30\x70\x68\xb2\x63\x9f\xfc\xae\x94\x25\xa9\xad\xf9\x2d\x57\xbf\xc9\x4e\x39\x6c\xe7\xba\x91\x3b\x4d\xda\xd7\x72\xf1\xa4\x2c\xb0\xad\x21\xf9\x1b\xcc\x12\x41\x36\xb1\x68\x93\xe7\x09\xe1\xd5\xd8\xab\x2e\x13\x0e\x4d\xd9\xec\xfa\xc4\x9e\x9b\x90\xb0\x05\xb7\x66\x07\x24\x8a\xac\xe5\x02\x8c\x3c\xff\x13\xd6\xeb\x29\x30\x82\xf0\x71\xdd\x80\x64\x5d\x80\x10\x10\xad\xc9\xd0\x2b\x26\x67\x34\x63\xd5\x39\x17\xd5\x39\x77\x41\xc0\x55\x29\x58\xc7\x4d\xaa\xad\xbf\x45\x17\x40\x2f\x50\x3f\x0e\xbf\x4f\x51\xd2\x43\xfd\xb0\x26\x81\xe5\xa9\x75\x5a\xd9\xb0\xb9\xb0\x9b\x8c\x51\x11\xc0\x35\x63\xee\x26\xe0\x2f\xeb\x7b\xc1\x5d\xc0\xdb\x19\x04\xde\xcc\xfc\x1b\x9f\xad\x55\x2e\x7b\xcb\x75\x01\x01\xea\x98\x57\x6d\x0f\x6c\x70\x3a\xde\x8e\x53\xdc\x56\x04\xe8\x43\x01\x59\xf3\xc7\x41\x28\x29\xd5\x40\xce\x36\x7c\xe4\x6e\x17\xbb\x47\xe8\x8d\x19\xae\xc9\x57\x9a\xd4\x63\xb3\xda\x7c\x36\x98\xe1\x86\xa4\xda\xae\x2e\x7c\x6c\x7e\x66\x50\x53\x92\x19\xb3\x91\x40\x5a\x41\x13\xec\xf9\xdb\x2a\x4d\xbe\x01\xfd\xce\x58\x9d\x5f\x54\x14\xcc\x8f\x0d\x95\x4f\x94\x4d\xd8\xb5\x66\x74\x16\x4c\x7c\xc1\xea\x36\x37\x39\x33\x31\xa3\x84\x88\xf3\x0e\x54\x4e\x78\x48\x8e\x8c\xd5\x74\x2c\x49\xd8\x94\x70\x38\x09\xfe\x1d\xd7\x94\x06\xdc\xc7\x18\x2d\x58\xfc\xa7\xc0\xe3\x1b\x36\x00\xa3\x01\x9a\x33\x72\xc3\xac\x4e\xb7\x0b\x65\x14\x2c\x96\x2c\xbe\x61\x35\x4c\x5f\xea\x6f\xcc\x5e\xa4\x8c\x55\x05\x60\x64\xe8\x1a\x6a\x44\x61\x1b\xdc\x0a\x5d\x64\x8b\x45\x57\xf7\x0e\x4f\x3b\xbf\x88\x1b\x36\x28\x56\x92\xb3\xf9\xf7\x32\x68\x35\xbc\xbf\x40\x50\xca\x5d\x4a\xb4\x05\xa3\x37\x8c\xac\xf4\xdf\xf1\xc2\x83\x4e\x57\x0c\xde\xce\x19\x5d\x30\x72\xc7\xda\x32\x8c\xba\x1f\x13\xd9\x30\x5a\x4b\x3e\x4e\x1e\x58\x57\x7e\x77\x05\xf1\x54\xe9\x70\xcc\xcf\x46\xcf\x4f\xc6\xfd\x3e\xc7\xca\xea\x0b\x9f\xa1\x7e\x1c\xf3\xb3\xc3\x93\x14\x0d\x4d\x78\xc2\xc0\x5c\xfa\xf0\x04\x74\x05\x81\x4a\x26\x0c\xcd\x87\xc9\xb2\xc9\x97\x57\xd6\x55\x70\x4b\x80\x9b\xab\xf9\x0d\x3e\x23\xa0\x59\x48\x98\x0e\x9c\x00\xe7\x3e\x1c\x67\x67\xde\xd7\xab\xdf\xcf\xf0\xe3\x2c\x49\x40\x50\x6e\x19\xdd\x82\xc1\xdb\xa7\xdc\x3a\xda\x2c\x19\x61\x45\x21\x6e\x9b\x11\x02\xed\x37\x0d\xfe\x4a\xf2\xf9\x7a\x56\x3b\xe3\x21\x62\x9f\x48\xcd\x1e\xc9\x29\x51\x25\x26\xca\x24\xe7\xbb\x16\x19\xef\xec\x3a\x4c\xf2\xcc\x6d\x22\x3f\xd6\x88\x69\x16\x64\xa2\xd8\xe6\xd7\x5f\x92\x6d\x9e\xa8\x12\x92\x3c\x27\x28\x47\xa5\xe6\x08\x26\x53\x3b\x19\x3c\x9c\x8c\x20\xbc\xb0\xe6\x7c\x05\xcd\x07\xf9\xf5\x97\x09\x84\x45\x5c\x4d\x09\xab\xf1\x8d\xc0\x48\x0e\xc7\xb3\x33\x56\x75\x31\xf3\xa1\xc2\x26\xb3\x29\x29\xa8\x98\xac\xa7\xe3\x96\xb3\x44\xe1\xbd\xcd\x0a\xeb\x67\x2d\x3d\x87\x59\x40\x1e\x78\x6b\xaa\xad\x81\x17\x06\xf0\x75\xe9\x32\x57\xc6\x45\x95\x4d\xb1\xf9\xab\xc7\xca\x5b\xdf\x8d\x7d\x38\xb0\xc1\x2a\x5f\xc5\x1a\x87\x70\xf8\x35\xdc\xfc\x1a\x48\xa6\xc3\x62\x89\x83\xf8\x90\x7a\x5a\x72\x3a\x1c\xe7\x95\xb7\x65\xbf\x9f\x57\x7b\x44\x82\x76\x2a\x33\x60\xe8\x82\xe6\x4e\x82\x3e\x69\x56\x96\x25\x44\x82\x2f\x89\xd1\x4b\xb7\x3c\x38\x9c\x86\xb7\x52\x63\xf6\x0f\x6e\x09\xea\x99\xec\x3e\x48\x14\xf9\xfe\xe9\xe9\xf3\x17\xfb\x87\x60\x1c\xe1\x0c\x48\xb3\xc0\x8f\x61\x32\xdc\x7f\xc1\xf6\x6f\xa6\xdb\x51\x79\x70\x2b\xc8\x3a\xe3\xc5\x8c\xad\x78\xcd\xf6\xb8\x43\x29\x1e\x46\xc6\xf6\x51\x3a\x4a\x62\xe4\x6f\x2d\x30\xad\x57\xad\x4f\x1a\x54\x77\x8a\xa0\xa0\x4c\x46\x05\xe4\x2a\x0d\x39\xe7\x8c\x9a\xfc\xa5\x8f\x4a\x42\x15\xf6\x79\xbb\x6a\xae\x99\x59\x15\x12\x0a\x93\xc7\x66\xc1\xfc\xd0\x38\x0b\xbd\x3a\xd6\x7e\x3a\x8e\x61\x3a\x3a\xee\x30\xe8\xd9\xe8\xe4\xd9\xe8\x08\xf5\x41\x6e\x77\x95\x69\xfe\xd5\xb8\x25\x8c\x30\x39\x3c\xc1\x7d\xf4\xec\xe8\x27\xa4\x09\x6e\xb5\xff\x11\x22\x82\x0e\xc7\xe2\x2c\xab\x36\x82\xb7\xd8\xc8\xc2\xa0\x32\x02\x8f\x8f\x9f\xeb\x4b\xd2\x6e\x77\x7c\x62\xfe\xbf\xb0\xe5\xc3\x91\xad\x60\x2f\xe9\xf1\x69\x14\xb1\x33\xfa\xfc\x47\x28\x9d\x3c\x87\xd2\x0b\x13\xe2\xe6\xc5\x8f\x50\x3a\x1c\x8d\xd2\xbc\x6f\x7b\x87\x9e\x13\x76\x76\x38\x3a\xd5\x95\x0f\x6c\xc2\xa6\x09\x3b\x1b\x0d\x8f\x5d\xf9\xf0\xc5\x68\xc7\x5e\xbe\x3c\x99\xf6\x75\x61\x74\xba\x3b\x39\x8a\xa0\x8d\x8d\x87\xc3\x5e\xd2\xe7\x3f\x1e\x1d\x1f\xdb\xe6\xa3\xd1\xb1\x6e\x7e\x38\xf2\xed\xf5\xc7\xd1\xc9\x51\xe3\xfb\x58\xf4\xe9\x21\x61\x14\x02\xdc\xf4\xe3\xf8\x70\x38\x3a\x8a\x18\x3e\x3b\x3b\x1c\xee\xe0\xb9\xf1\xeb\x31\xb1\xfd\x1f\x0f\xa1\xff\xd3\xb0\xff\xc3\x51\x38\x40\xe7\x80\xfe\x2c\xe7\x4f\x7a\xac\x1a\xf7\x83\xb6\x5b\x2f\x8e\xa2\xbd\xbd\xb8\xe1\xb5\xfa\x3f\x76\x47\x05\x37\x42\x63\x76\xf2\x94\xf3\xa2\x69\xf1\x77\x24\xfe\x1a\x8d\x2f\xd9\xc3\x35\x7f\x5b\xcb\xe4\x67\x1d\x95\x37\x0c\x32\x1d\x55\x14\xcc\xa3\x63\x55\x79\x79\xd3\x43\x6c\x11\x9e\x95\x20\x04\x14\xc9\x1d\x08\x33\x4e\xd3\xed\x2d\x88\xb3\x2c\x6b\x6e\xf1\xad\xe9\x93\x0e\x1c\x8e\x5d\x6a\x22\x89\x7d\xca\xb3\x3d\xde\x31\xe3\xce\x41\x6a\xc2\x89\x9c\x8e\x63\x50\x02\xd5\x88\xef\x6e\x97\x69\x06\x26\xbf\xff\xe0\xe6\xa6\xc0\xbb\xdd\xde\x1d\x33\x33\xd3\x4a\x6e\x27\x41\x37\xa2\x09\x20\xdd\x1b\xfa\xdd\xc0\xcb\xef\x03\xe0\x49\xa1\x74\xb1\x9f\xbd\x59\x17\xfc\xa4\x28\xda\x03\x0c\x1f\x45\x71\x4e\x97\x0c\xfc\xe4\x30\xb1\xaf\xe0\x4d\x1a\xcb\x8e\x6b\xa9\xb4\xc6\x08\x0e\x64\xc8\x43\x66\x7d\x9d\xf8\x24\x9f\x8e\x45\x87\xa3\xa0\x88\x22\xf9\x88\xff\x60\x3e\xa5\x2a\x16\xb0\x28\x89\x9f\x65\x13\x25\x02\x5e\x4a\x88\x42\xee\x13\x1d\x03\x75\x95\x1d\x5c\x03\xaf\x32\x6e\x6a\xe2\xe3\x7e\x6b\x08\xa6\x1b\x0d\x02\xbc\x08\x18\x50\x57\x08\x90\xb7\xe6\xb8\x2c\xc9\x35\x7b\x3c\xae\xe1\x3d\xa3\xd6\xa1\xee\x92\xd1\xed\xaf\xaf\x2f\x0e\x7f\x3c\x3a\x4d\x90\x7d\x40\xe4\xd7\xd7\x17\x47\x2f\x4e\x4f\xa0\x46\x3f\xa0\x92\x7c\x66\xf4\x96\x0d\x0c\x2f\x14\x6f\x5d\x74\x86\x4b\x36\xb0\x4d\x08\x98\xf5\x2b\xc5\x65\x91\xf8\x1e\x3b\xb8\xd9\x6b\xe6\x1c\xe5\xef\x19\xb8\xf3\x95\x7e\xb4\x8e\xd6\x9e\x58\x94\x65\x49\x2e\x19\x26\xef\xbf\xcf\xbf\x7e\x64\x74\x7b\x2d\xd9\xec\x2b\x57\xdd\xda\x93\x3e\x9a\x4c\x11\x70\x54\x4b\x96\x80\xdc\x9c\x21\x22\xb2\xb9\x98\xd5\xb2\xbc\x86\xee\x65\x7d\x34\x41\x7d\x0e\xc9\x1b\x89\xe4\x2b\xce\x54\x67\xcf\x65\x49\xbe\x34\xb9\xe7\x6f\xac\x99\x7e\x11\x76\x06\xb9\x68\xf2\xb9\xdf\x98\x0b\xdd\x46\xbe\xe8\xad\x9b\xf2\x04\x32\x63\x93\x4f\x8c\x82\xe9\x5a\x88\x83\xbc\xd7\x1f\xf9\xc0\xe8\x67\xcf\xec\x93\x73\xcd\xc1\xce\xe7\xbf\xac\xb9\x7c\xf8\x20\xf9\x8d\xf8\x96\xec\x1d\x12\x38\xa6\xaf\x72\x55\xe8\x82\x55\x9e\x25\xc8\x68\xcf\x5c\xf9\x23\xcf\x94\xc8\xf8\x42\x37\x99\xf3\x85\x58\x0a\xc5\x65\x82\x22\xe4\x58\x07\x70\x33\xd0\x4f\x32\xb9\x65\x03\xf3\x68\x6b\xfe\x3f\x64\xc8\x7d\x9f\x2d\x1e\xf4\xd7\x66\x27\x24\x1f\x58\xb5\x27\x92\xcf\x6c\x50\x6d\x90\xc9\x07\x36\xf5\x13\xbe\x77\x48\x0a\x27\x70\x79\xc4\x85\xbd\xf7\x89\x55\xd8\xb6\xf8\x2a\x56\xef\xd6\x8b\x85\xf9\x52\x49\x31\x53\xba\x08\x91\xf3\x45\x76\x0b\x91\xd7\x7f\xae\xe6\xd6\xa1\x49\x13\x48\xa5\x9e\x0c\xd2\x1c\xb2\x3b\xb2\xa1\xfc\x91\x38\x6b\xb3\x74\x43\x67\xb1\x24\x1b\x9c\x6c\x42\xaf\x71\x0d\x68\xba\xa1\x37\xf1\x06\xbb\x1d\x64\x14\xe5\x5f\x58\xbc\xd1\x78\x68\xa3\x4f\x8b\x23\x0c\xf1\xa6\x8b\x5d\xe9\xa9\x56\x8f\x37\x10\x70\xa0\xc4\xd8\xda\x55\x12\x84\x31\xf1\xa1\x7c\x34\xaa\xca\x1d\x9e\x67\x51\xb4\xb7\x4a\x59\x2c\xc9\xb9\x5b\x0c\x49\xe6\x04\x7d\xe5\x0f\x08\x27\x72\xbc\xa1\x08\x95\x1d\x1a\xce\xf8\x8e\x6e\xf0\x6e\xd7\x8a\x2e\x70\xb7\xdb\xa1\xeb\x3c\x5f\x70\x96\xd5\x2b\x9b\xcc\x1f\x34\x14\xb7\x22\x53\xb5\xba\x5b\x56\xd1\xd9\x0d\xf6\x50\xa6\x93\x45\xbc\x4a\x65\xf2\x08\xa0\xc6\xff\x74\x11\xb3\x78\xd3\x78\x0d\xc1\x95\x10\xc6\xd3\x64\xb2\x88\xa5\x6b\xe7\x02\x08\x61\x6c\xec\x1f\x1f\xc8\x12\x72\x45\xdf\x54\xd1\x80\x36\x6e\xec\xa5\xae\xfe\xc2\xe2\x19\xc6\x0f\x74\x56\x39\xe9\xde\xd6\x6e\x37\x1b\x3c\x7e\xa0\xeb\xf4\x76\x50\xe4\x52\xc5\x6b\x9c\xdc\x7a\xbf\x6e\x13\xd2\xe8\xa1\x62\x0c\xaf\xcd\x86\xb9\xa7\x0f\x93\xeb\x29\xb9\xa4\x9b\xc9\x3d\x8c\xbd\x27\x4c\xc0\xf7\x3d\x4a\x2f\x4d\x93\xcf\x14\x36\x42\xda\x15\x00\x2a\xd5\x84\xe7\x1e\x27\x32\x91\xfd\xb8\x48\xd1\x00\xf5\xef\x13\x8d\x5f\xee\x35\x7e\xc1\xe3\x0b\x16\x2f\x89\x8a\x2f\xc9\xe7\x47\x76\x2d\xf6\xd6\xd1\xcb\x92\xbc\x63\xb4\x45\x6a\x9b\x18\xb1\x8e\x90\x1a\xd6\x3f\x36\x0b\x87\x22\x79\x33\x6d\xe3\x9e\xf7\x6b\x3b\x67\x63\x1f\x76\x85\x2a\xb7\x4c\x51\x54\x5d\xaa\xab\xba\x2e\x41\x9a\x7b\xdb\x2d\x50\xbb\x34\x2f\xc1\xed\x53\xe5\x8f\x48\xd4\xa8\x1a\x58\x44\xb5\xdb\x9d\x33\xf7\x5c\xcb\x94\xea\x5b\x44\x91\xc5\x6d\x8d\xca\xe0\xba\x11\xbe\xe9\x86\xea\xd3\x1d\xef\xd9\x06\x3d\x23\xcf\xf5\x02\x3f\x2e\x20\x38\x22\x8c\x41\x7a\x55\xaf\xa4\x97\xcb\x5e\x65\x67\xe2\x04\x7b\x15\x7a\x6e\x80\x6b\x30\xa2\x99\xeb\xf7\x16\xc5\xd5\x10\x25\xf1\x6d\xba\x61\xfc\x2d\xfb\x9a\xe5\xf7\x59\xcf\x34\x72\x60\xae\x64\xbe\x11\x73\x3e\xd7\x73\x27\xfd\x30\xa5\xb9\xd1\xd5\x11\xb1\xd4\xf7\xe0\x73\x66\x15\x43\x2e\x39\x54\xa7\xe1\x92\x69\xb2\xdb\x7d\x61\xb1\x2b\x60\xc3\x71\xf9\x22\x69\x92\x9e\x36\x46\x51\x83\x7a\x93\xb4\x59\x91\x9c\xb3\x46\x4d\x40\xbd\xaa\x00\x44\x03\x5f\x99\x9e\xb3\x41\x40\xdf\xf6\x82\x57\x9e\xd4\xf1\x16\x91\xeb\x82\xac\xd1\x26\x6d\xd5\x24\xd5\xc6\x73\x55\x01\xa9\x0c\x80\xf3\x95\x1a\xb8\xaa\x45\xf0\xc2\x11\xd5\x2e\x38\xcc\xab\xd4\x3d\x24\xe7\x0d\x6a\x2b\x93\xce\x05\xb2\x2f\xfd\x77\x32\x09\x30\x6a\x8b\x4e\x3f\x3e\x70\xd5\x28\x6d\x57\x55\x7d\x56\x75\xc4\x2c\x7f\x92\x07\xf4\x3e\x6b\x10\xf5\x4e\x88\x6b\x4d\xd2\x46\x59\x8f\x54\xab\x08\x28\x7f\x17\xf0\xfe\x6d\x1a\x3c\x43\x27\xae\x40\x34\x8a\x7f\x04\x92\x5c\xaa\xd4\xfc\x33\xe6\xc2\x1d\x8c\x45\xe7\xa0\xad\x66\x69\x57\x25\x80\xd1\xaa\x05\x11\xd2\xb8\x03\x9e\xdc\x1e\xa8\x34\xa3\xf1\x90\xb8\x12\x8e\x11\xd2\x8c\xfe\x17\x16\xfb\x2a\x93\x2b\xc9\x95\x8c\x4b\x00\x61\x96\x24\xb6\x83\xc1\xba\xbc\x24\xd4\xa5\x67\x43\x68\x2c\x8c\x58\x15\xc4\x9e\xaf\x0d\x1e\x11\x59\xef\x23\x4b\x6b\x75\x09\xd7\xf8\xd3\xb0\x6c\x48\x64\x3d\x9e\xf2\x81\x2d\xa6\xbe\x3e\x41\x86\x37\x46\x89\xaf\x1a\x9b\xc0\x75\x1f\xd9\x44\x4c\xc7\x72\xb7\x8b\x65\x8d\xfa\x66\x10\x8e\x42\x4f\x7b\x14\x49\x43\x82\x4d\xb1\x92\xd1\xac\xe9\x70\xbc\x0e\xe5\x74\x36\xe2\x5b\x41\xe5\x64\x3d\x1d\xe7\xd5\xfa\x1a\x69\xa3\xfe\x75\x93\x62\xba\xdb\x5d\xb0\x98\x91\x9f\x59\xac\x4b\xa4\x20\x33\x3d\x50\x6b\x0d\x48\xf0\x3d\xc9\xdd\xd1\xcb\xfd\x11\x82\xcd\xe0\x26\xd8\x82\x4a\xf2\x00\xc5\xe4\x8d\x4d\x9a\x57\xe8\xd5\xf7\x17\x1c\x95\xdc\x13\x1d\x63\x9b\x74\xe3\x7c\x68\xf2\x0a\x37\x60\xb2\xa0\xe0\x82\x93\x37\x91\x25\x04\xd0\x40\x55\x16\x82\x06\x32\x8a\xa2\xa6\x60\xd1\x37\x49\x17\x7d\xaa\x89\xe2\x29\x35\x42\xb2\xc3\xe1\x70\x78\xf4\xec\xe8\xa7\x08\x25\xd5\x9b\xcb\xd1\xb3\x17\x17\xcf\x5e\x1c\x45\xa8\x8a\xc4\xf8\x72\x98\x2e\xfa\x37\x09\x42\x25\x26\x5f\x59\x87\x7f\x27\x11\x78\x6b\x22\x91\x04\xca\x6a\x6b\x96\xe0\xaf\xe9\xf5\x35\xf7\x5d\x47\x51\xcc\x28\xef\xa3\x14\xf5\xdf\x31\xd8\x0c\x32\x9d\xb3\x89\x9a\xc6\x8c\x48\x22\x70\x02\x6a\x55\x8d\x52\x7d\xb5\xc0\x89\x7b\x7c\xc7\xe2\x1c\x13\xa1\x6f\x90\xac\x23\x4f\x6c\x2b\x22\x8f\x1e\xcf\x53\xdf\x50\xc5\x9f\xd6\xf4\xfd\xdb\x12\x44\xc8\x3f\x18\x8f\xa8\xd4\x3f\x25\xfa\xf8\xe9\x17\xd6\x86\x3e\xa7\xe8\x80\xad\xc4\xc1\x66\x78\xc0\x66\xb3\x7c\x9d\xa9\xc2\x3f\xec\x2f\x44\xa1\x10\x11\x74\x5b\x12\x16\x84\x0a\xae\x0c\x26\x06\xd7\xf9\xfc\x01\x62\xa7\x98\xc7\xc0\xde\xd6\x54\xa4\x0d\xb3\xa5\xc0\xdb\xf9\xad\x28\x0a\x91\xdd\xf6\x24\xff\x6b\x2d\x24\x9f\xf7\x7a\xa0\xb8\xe6\x1a\xf1\xf6\xf4\xb7\xc8\xa4\xad\xfa\xe1\x2f\xd8\x3b\xee\x5d\x11\x45\x35\x7d\x45\xeb\x3d\xee\x56\xdd\x0b\xb0\xb4\x69\xb5\x9e\x28\x30\x25\xfb\xca\x62\xab\x73\x96\xfd\x9c\x28\xe0\x57\x33\x8c\x4b\xf2\x96\xd1\x6d\xc6\x96\xbc\x58\x31\x93\xa2\xc6\xa6\x74\xb2\xc9\x5f\xcc\xd1\x12\x99\x50\xe6\xf4\x40\x62\x28\x37\x7f\xc9\xb6\x2c\x89\x49\x18\x5a\xf8\x0f\xba\xae\x50\xd6\xa1\xa1\x24\xa2\xb8\x0a\xba\xea\x6c\x1a\x8c\x05\x9d\x9f\xdb\xc1\x3e\x82\x03\x43\xd7\x37\x76\xba\xe0\x2e\x52\xc4\x6a\xe0\xc0\x83\x90\x8b\xd0\xb8\x48\xb6\x8b\x9c\xcd\x2f\x9a\x10\x6a\xd6\x3a\x1e\x12\x05\xc6\x7f\x42\xe1\x18\xfd\xfc\xfe\xfc\xd5\xe7\x8b\xf7\xef\x5e\x5f\xbd\x41\xa0\xd1\xa9\xc0\xe9\x1a\xfa\x2f\x19\xbf\x91\x83\x25\x93\x5f\xab\xc5\xe8\xf1\x2a\x6d\x9e\xdb\x51\x6f\xe4\xe0\x5e\xb2\x55\x5d\x03\x0b\x2a\x92\x31\xb6\x11\x3d\xf9\x60\x25\xf9\x86\x72\xc8\xb8\x6b\x62\x7a\xf6\x86\x3e\x26\x27\x75\x30\x42\x74\x44\x97\x8d\x90\x98\xd6\xf4\x88\x64\x36\xe9\xaa\x9b\x2d\x64\x82\x77\xf6\x8e\x12\x19\xa3\x8f\x97\x9f\x3e\x5f\xbd\xbb\xfa\x74\x75\xfe\xf3\xd5\x9f\x97\xaf\x20\xc8\xb0\x79\x7d\x9c\x40\x88\x4f\x9e\xcd\x7d\xf8\x4f\x0e\x39\xfb\x63\x48\x84\x03\x46\x78\x38\xc6\x25\xa9\x75\xfe\x9f\xcc\x84\xb9\x23\xfd\x5f\xcf\xc7\x0f\x0c\x38\x5d\x99\xe7\xea\x8d\xd9\x97\xd8\xcd\xd1\x31\xf9\x95\xc5\x5b\x87\x25\xf2\x81\x4f\x6e\x04\x17\x18\x9b\x27\x5b\x1f\x4b\xbd\xab\xfd\xf4\x8c\x86\x90\x4f\x43\x50\x3e\x28\x78\xa6\xb0\xf5\xd1\x49\x63\x46\x05\x58\x38\xfa\xdd\x46\xec\x44\x9f\x5f\x5c\xbc\xff\xed\xdd\xa7\x8f\x88\xb0\xdd\x6e\x32\xc5\x38\xc9\x62\x54\xdc\xe5\xf7\x6f\x5d\x1e\xf0\xad\x0d\x11\xf1\xda\xb8\x02\xa9\xbc\x07\xb3\xdb\x73\x3d\x0d\x10\xf8\xb9\xd7\xfd\x94\xac\x3f\x13\x9a\xb3\xec\x96\x4b\x54\x92\xad\xfe\x91\x90\x91\xca\xc0\x7a\xf2\x37\x97\xb2\x24\x4b\x9b\x1d\xbc\x48\xb6\xc1\x76\x6f\x1c\x8b\xca\xd9\xbf\x24\x8d\xfd\xd3\x6a\x19\x1c\x59\xd7\xdc\xcd\x42\xab\xad\xfb\x91\x94\x97\x61\xdc\xb2\x1f\xc0\xd0\x60\xce\xba\x0d\xa0\xd6\x75\xdf\xcc\x20\x7d\x34\x20\x62\x67\xc2\x5b\xf3\x8a\xac\x22\xf4\xaf\x0b\x2e\x07\x60\x08\x31\x96\xa0\xce\xec\x6c\x4f\xd1\x4f\x9c\x49\x2e\x7b\xa8\x92\x63\x07\xf2\x6f\xcb\x09\xbc\xb2\xe8\x32\x41\xfe\xa4\x11\x31\x4f\x10\xab\x4a\xb3\x3c\x4b\xc0\x5f\x6d\x7f\x33\x63\x72\x8e\x6c\xf4\xc6\xcb\xb9\x50\x26\xa7\x33\xd8\x3e\x14\x36\x9d\x9e\x23\x3a\x5b\xb6\x5a\x5d\x65\x37\x79\xf2\x8a\x11\x99\xaf\x15\x2f\x92\x89\x1d\xa9\xea\x7b\xc5\xd4\x5d\x82\x0e\x10\xe8\x99\x41\x91\x58\x24\xfa\xc3\xe4\x4a\x96\xe5\x94\x64\x6c\x73\xa5\xf8\xb2\xfa\xf2\xbc\x06\xd5\x5b\xa6\x80\x09\x4a\x5e\xb1\x81\x2e\x9b\x71\x92\x47\x47\x71\xf3\xa0\x9b\xcf\x09\x3a\x40\x58\x0f\x52\xa8\x5c\xf2\xe4\x2d\xb8\xee\x8d\xff\xdf\x7f\x07\x00\x00\xff\xff\xdf\x05\x07\xfe\xe8\x12\x01\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\xfd\xfb\x7a\xdb\x38\x96\x28\x8a\xff\xfd\xdb\x4f\x21\x71\x32\x1c\xa0\xb5\x4c\x4b\xa9\xae\xea\xdd\x54\x10\xb5\xe3\x38\x97\xaa\x24\x4e\xd9\x49\xea\xa2\xa8\xbd\x69\x0a\xb2\x10\x53\x80\x0a\x84\xec\x38\x22\x7f\xef\x73\x5e\xe3\x3c\xd9\xf9\x70\xe3\x45\xa2\x53\xe9\x99\x3d\x93\xef\x8b\x45\x82\xb8\x2e\x00\xeb\x86\xb5\x16\xe6\x74\xc1\x38\x45\x68\xb1\xe1\xa9\x62\x82\x23\xbc\x0d\x36\x39\xed\xe5\x4a\xb2\x54\x05\xe3\x9b\x44\xf6\x14\x09\x36\xdc\x66\x9c\x07\x7d\xa2\xee\xd6\x54\x2c\x7a\x57\x99\xb8\x4c\xb2\x77\x4b\x96\x4f\xea\xc7\xb8\x2b\xe7\x2d\xe3\x73\x71\x3b\xb1\x3f\x9d\x39\x6c\x05\xae\x9e\xce\x1c\x39\xcd\x16\x13\xfd\x27\xde\x96\x63\xdf\xd9\x1e\x45\x0a\x28\xde\x4a\xaa\x36\x92\xf7\x14\xa2\x64\x4b\x3f\xaf\x85\x54\x79\xbc\x2d\x4b\xa0\x91\x7b\xc3\xf5\x63\xa9\x47\x24\x49\x73\xc8\x0a\x6f\x75\x22\x25\xfb\x29\xa7\x97\x9f\x68\xaa\xa2\xb5\x14\x4a\xe8\x9e\x80\x24\x34\x5a\x26\xf9\xe9\x2d\x7f\x2b\xc5\x9a\x4a\x75\x07\x9c\x04\xbe\x60\x40\x7c\x7f\xcf\xef\x56\x97\x22\x9b\xd8\x9f\x78\x5b\x82\x20\x3c\x62\x8a\xca\x44\x09\x59\x14\xc1\x3f\xfe\xe1\x5f\x02\x60\x84\x47\x49\x7e\xc7\xd3\x97\xcd\xef\xad\x94\x00\x12\xc2\x23\x25\xce\x95\x64\xfc\xea\x5d\x72\x65\xb2\x34\xde\x83\x1a\x28\xa9\x06\x0a\x48\xe0\x76\x10\x82\xd0\x30\xa4\xf5\x10\x7a\x8c\xe7\x2a\xe1\xa9\xee\xe5\x62\x42\xe3\x05\x30\x3f\xcc\x54\xd2\x44\x51\x24\xea\xcc\x58\xb7\x4b\x6f\x7b\x17\x88\x17\xc5\x74\x86\xc7\x0e\xd4\x2c\xba\x60\xfc\x46\x5c\x37\x61\xa6\x1b\xb5\x4d\x72\x12\xe4\x9b\x7c\x4d\xf9\x9c\xce\xcf\x55\x22\x55\xe0\xcb\x55\xb9\x05\x30\xbc\x65\x0b\x14\xd0\xcf\x34\xdd\x28\xc6\xaf\x02\x42\x08\xc7\x6a\x29\xc5\x6d\x4f\x37\x79\x22\xa5\x90\x28\x78\x4e\xb9\x05\x41\x8f\xe5\xbd\x24\x93\x34\x99\xdf\xf5\xe4\x86\x73\x5d\x04\x8f\x75\x15\xa9\x58\xad\x33\xaa\xe8\xdc\x56\x61\xaa\x35\xf5\xe8\x77\xe1\xaa\x64\xbe\x0b\xe7\x08\x97\x0b\x21\x91\x8c\x56\x54\x2d\xc5\x9c\x08\x90\x51\x22\xaf\x08\x1b\x8f\x6d\xf7\x13\x22\xa3\x39\xcd\xe8\x55\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x44\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x39\x4e\x05\x57\x8c\x6f\xa8\x6f\x20\x2d\x4b\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x4e\xb9\x22\x32\xba\x70\xbf\x89\xbc\x1a\xd3\x2c\xa7\xbd\x56\x87\xab\xfc\x66\x1c\x3b\x70\x6c\xc2\x88\x34\x06\x6e\x87\x30\x96\xd1\x9c\xe5\xeb\x44\xa5\xcb\x93\xcf\x29\x5d\x1b\x48\x9b\x2f\xb8\xd4\x0d\x05\xb6\x87\xcd\x56\xc2\x50\x46\xc9\xa5\xdc\xac\x15\xf2\x5f\x6d\x5d\x78\xcc\x49\x63\x72\x0c\x22\x58\x90\x8d\x9b\x66\x03\x77\x2e\xe4\x2a\xc9\x74\x6d\x8b\xc8\x2c\x16\xdd\x63\xae\x81\x27\x38\x9d\x34\x7a\x17\xd7\xc3\xf8\x8d\xd1\x6c\x1e\xc0\xc2\x40\xbc\x03\x7a\xdb\x9b\x24\xdb\xd0\xd8\x7c\x07\x5d\x4f\x6c\xab\x2b\xcb\x1a\x42\xb6\xb5\x30\x44\xbb\x20\x70\x13\xea\x72\xba\x69\x5d\xd8\xf1\x97\x25\x52\x20\x21\xc1\xc0\xca\x6a\xab\xf8\xe1\x6c\x95\xbc\x73\x58\x64\xab\xeb\x8e\xfd\xd8\x20\x91\x57\xb1\x8a\xd2\x24\xcb\x90\xce\x58\x96\xa9\x86\xae\x46\x10\xad\xec\xae\x45\x93\xbb\x2c\x4b\x15\xdd\xca\x64\x4d\x52\x03\xb5\x9c\x34\x51\xd6\x02\xe1\x6d\xdd\x81\xac\xf5\xb6\xd6\x6f\xba\xc8\x5c\x17\x99\x4f\xc5\x8c\x34\xf0\xb2\xc7\x72\x4b\x96\x97\xa6\xe2\xa5\xdf\xb7\x57\x54\xbd\xf5\x3b\xf6\x74\x01\x37\x64\x19\x86\x4b\xb4\x44\xa7\x68\x3a\xc3\x18\x8f\x6f\xc2\xf0\xa6\x4f\x34\x1e\x90\x76\x28\x37\x20\x70\x18\xa2\x39\xb9\xc1\xa6\xa6\x3b\xb2\xae\xf7\x3c\x59\x34\x9e\xdb\x98\x61\x8e\xeb\x81\xac\x34\x10\xa6\x76\x99\x83\x07\x80\x5f\x43\xb3\x68\x21\xe4\x49\x92\x2e\x1b\x68\x96\xe2\xad\x9a\xd2\x59\x0b\xcb\x36\xc6\xe4\x31\x0a\xa2\xa0\x70\x59\x62\x5c\xc3\xe5\xca\xa2\x79\x83\x5a\xc6\xcd\xbc\xa4\x8d\x4f\xaa\x02\x49\x0d\x2e\x8d\x4a\x9a\xc8\x9e\x43\x82\xb7\xfd\x2a\xa7\x29\x09\x09\xa4\xb6\xfa\x5c\xaf\xf0\xa9\x98\x81\x02\x66\x17\xb9\x1d\x58\x9f\x90\xdc\xad\x71\xbb\x11\x72\xb3\x40\x33\xb2\x88\xcc\x82\xf5\x7b\x3f\x0b\xc3\x40\x18\x90\xd5\xa4\x20\xab\xc0\x9e\x41\x70\x71\x91\xdc\x26\x4c\x05\x78\x42\x23\x49\x73\x91\xdd\x50\x94\x45\x2e\x15\x47\x6a\x49\x79\x9b\x32\x71\x87\x49\x40\x99\x5e\x96\x18\x76\x3f\x3b\xd0\xfb\xef\x38\x6e\xd4\xdc\x55\xa3\xeb\x32\x51\x90\xa0\xc5\x5e\x85\x1e\x6c\xfb\xf5\x96\x29\xca\xed\x5e\x32\x30\xd3\x80\xd4\xa9\xbe\x00\xe1\x13\x6e\x5b\x4b\x20\xc1\x71\x82\x70\x59\xcf\xe0\x65\x3d\x83\x92\xa8\x8a\x10\x4e\xa9\xdb\xb3\x33\x0d\xeb\x1b\xc1\xe6\xbd\xa1\x46\x4e\x06\x93\xd0\x0a\x09\x13\xbe\xc9\x32\xa8\x11\x00\x6d\xa2\xc8\xba\xb6\xc8\x76\x25\x0c\x11\xad\x50\x81\xc7\x69\xd4\xe0\x02\xdb\x02\xd8\xde\x74\x55\x88\xdd\x68\xf2\x31\xdd\xc5\x26\xb6\x06\xbd\x9c\xde\xdd\xad\xa9\xa3\x4e\xef\x96\xb4\xe7\x9b\xef\xcd\x05\xcd\x7b\x5c\xa8\xde\x5a\x8a\x1b\x36\xa7\xbd\xa4\xf7\x1f\xa6\xf0\x7f\xf4\x6c\x5d\x41\x05\x2d\xcb\x86\x70\xb2\x41\x12\xea\x01\xd8\x36\x9a\xeb\x4e\xe3\x7b\xbb\xee\x5c\xc1\xfb\xba\x65\x96\xe3\x2e\xc4\xf2\xb1\x65\x00\xb8\x25\x0e\xb6\x06\x31\x11\x16\x41\x23\x3a\x55\x7a\xa5\x6c\x32\xf5\x26\x59\xd1\x19\x11\x76\x61\x00\x8d\xf4\x8a\x23\xca\xfc\xbc\x12\x69\xb5\xab\xfb\x35\xa4\x5a\x40\xb6\x0b\xb4\x09\x62\xbc\xdf\x17\x1c\x8b\x18\x7d\x1b\x54\x2b\x88\xda\xde\x69\xca\xaf\xc1\x9a\xf0\x9e\xdb\x5b\x5d\xd5\xd7\x8b\xed\xb6\xe6\xdf\x34\x62\x7f\x25\xd2\x58\x4d\x87\xb3\x72\x3c\xea\x31\xde\x53\xa6\xeb\x06\x8d\xbf\x12\x29\x51\xd3\xd1\x0c\xc3\xc3\xfa\xcb\x82\xf1\x24\xcb\xee\xec\xb7\x87\x33\xdd\xc3\x85\xa2\xd2\xbe\x7f\x37\xc3\x60\x10\x90\x92\x77\x27\x5c\x49\x46\xf3\x68\xbd\xc9\x97\x88\x36\xda\x3f\xa9\xdb\x57\x91\x23\x50\x4c\xf0\xa2\xd8\x96\x63\x6a\x66\x93\x54\xf4\x45\x8f\x42\xd1\x9e\x01\x03\x34\x73\x13\x5a\x57\x78\xa1\x2b\xdc\x69\x96\x4c\xfd\xd8\x02\x29\x84\x0a\xca\x19\xa8\x0a\xe9\xde\x9a\x4e\xba\xae\x4a\x9a\x53\x85\xfa\xc3\x46\x0f\x4f\x75\x85\x7a\xef\x54\xfd\x9c\x0a\xb3\x05\x1b\xeb\xcc\x60\x2c\x65\x17\xe3\x3e\x7f\x6b\x17\x87\xcf\xad\x74\xae\x3e\xcb\xdf\x24\x6f\x90\x8a\x32\xca\xaf\xd4\x12\x7b\x5e\xf0\x60\x04\x8c\x34\x58\x76\xbc\xd5\xec\xd7\x78\x30\xe0\x8f\x7c\xde\x31\x66\x0b\xe4\x90\xa4\x02\x8e\xeb\x5e\x38\x54\x35\xe5\x7a\x22\xf4\xb2\x25\xfd\x11\x54\xe8\xd6\x7f\x77\xfb\xda\xe7\x18\x02\x2d\x6b\x4e\xd5\x2c\x66\x56\xba\xad\xb7\xd5\xaf\xf1\x79\x03\x37\x9d\x57\xc4\xc2\x31\x1f\xae\x36\xc3\x7d\xf4\x87\xbe\x60\x2f\x6b\x90\xc5\xbb\x28\x15\x3c\x57\x72\x93\x2a\x21\xc9\x1a\xd6\xad\xf7\x0c\xd6\xd3\x64\x46\x32\xc3\x8d\x65\xc9\x9d\xde\x5e\xa4\xe6\x64\x9f\x79\x68\xea\xad\x9f\xef\x25\x77\x88\x21\x5d\x13\x10\x86\xaa\xd9\xa8\x1b\x6f\xbf\xaf\x19\x23\x4a\x08\xc9\x8a\xa2\xa3\x49\x42\x88\x46\xac\x75\xbf\x8a\x82\x46\x3c\x59\x51\x8c\x4b\x50\xd1\x2a\x91\xd7\x5d\x04\xda\xb1\x01\x79\x8b\xd1\x98\x74\xa6\x22\x05\x6b\x1c\x23\x15\x5d\x5c\x18\x78\x5d\x5c\x90\x35\x24\x66\x7f\x15\x05\x52\x1a\x30\x1d\xfd\xc2\x18\xd4\xbd\x6c\xc7\x1d\x06\xa5\x7b\x97\x18\xae\x6a\xbf\x7b\x5b\x47\x3f\x35\xef\x05\x2b\x74\xd5\x94\x5f\x1a\x2f\x53\x76\x2f\x3f\x05\x2a\x3a\x6a\xca\x5b\x44\x6f\x46\x23\x81\xd5\x25\x8c\x4c\x05\x86\xd1\xa8\x28\x15\x0b\x43\xc4\xc8\x5b\x29\x56\x2c\xa7\x96\x97\xb2\x02\xd3\x15\x4a\x7d\x01\xac\x59\x09\xdf\x58\xd7\x84\x23\x89\x27\x49\x9c\x98\x85\x8a\xba\x28\x76\x55\xd8\xe0\x6d\x65\x17\x7d\x55\x40\x13\x61\x58\x69\x20\xdd\xb5\x81\x1b\xc0\xdd\x57\x58\x48\xb8\xab\xe4\xc9\xfd\x2c\xc1\xd4\x62\xda\x5e\x55\xd9\x2c\xd0\x40\xba\xa6\x77\x79\xc7\xfa\x9c\xce\xc6\x7a\x4f\x1b\xf2\x6e\x66\x1a\x53\x8b\x16\x25\xae\xb7\xaa\xa4\x37\x54\xe6\x14\x61\xa8\xb6\x9e\xf4\xc8\x80\x56\x88\xc0\x21\x0d\x1a\xad\xc5\x1a\x19\xec\xc3\x6d\x8d\xae\x1e\xe9\xb6\x3c\x07\x59\xe1\x03\x59\x56\x1f\x3d\x02\x90\xa5\xee\xae\xc9\x9a\x93\x53\xb8\x68\xac\xad\x6d\x63\xd7\xc4\x17\x60\xd0\x63\xdc\x1c\x93\x46\x8c\x1a\x71\xae\x25\xbd\x21\x43\x8b\x44\x0d\x12\x71\xcf\x46\x7c\xb3\x6c\xa8\x79\x74\xf8\xc2\xa4\xf8\x2e\xd9\x97\x16\x89\x32\x49\x6d\x92\x69\x92\x1a\x8c\xc9\x2e\x69\xf1\xf8\xfc\x04\x43\x5f\x61\x0f\x62\x6a\x00\xa2\x11\x7c\xa0\x2c\xf7\x92\x2e\x13\x79\xa4\xd0\x10\x57\xac\xa6\xfe\x0c\x14\x87\xa1\xc3\xca\x03\x1a\xe5\x19\x4b\x29\x1a\x61\xcd\xf9\xeb\xcf\x9a\x17\x77\xd4\xba\x84\x5c\x89\x75\xdc\x58\x06\x8d\xc1\x0c\x9d\x12\x68\xa7\x73\xd3\xe1\xac\x41\xae\xda\x3c\x8b\xb2\x3c\x8b\x15\x54\x55\x93\xfb\xb0\x14\xe9\x26\xc9\x4a\xd8\x13\x55\x3b\x27\x41\xf7\xc1\x57\x34\x76\xc4\x6a\xc9\xf2\x71\x83\x83\x37\xaa\x0e\x57\x7f\xe2\xe8\xab\x17\xc8\x0c\x74\x95\x67\x69\x24\xf0\x3f\x65\x5c\xfa\x7d\x5e\x7a\x48\x8b\xdd\x41\xbb\x65\x7a\x30\x1a\x8b\xc7\x64\x38\x3e\x38\x10\x76\xc1\xb2\x3d\xe8\x88\x19\x24\x84\xed\x42\xc8\x90\x6a\x8d\x37\x22\x4b\xbc\x71\xcd\x6e\x53\x3e\xb7\xfa\x0c\xff\xed\x11\xa9\x56\xa1\x57\x40\xb8\xc9\x65\x10\x78\xfe\x25\xc0\xb0\x69\x24\xd7\xcc\x8b\xad\x2b\x0d\xc3\x4d\x7b\x41\x3f\x62\x15\xef\x53\x37\x5e\xa7\x41\x7f\x68\x0a\x36\xf3\xd7\x95\x36\x4b\x34\x52\x4b\xaf\xc5\x48\xff\xe5\xb6\x4c\x51\x5d\xa8\xbf\xd9\xd7\xfd\x28\x79\xd7\xcb\x55\xa2\xe8\x8a\x72\xd5\xbb\x65\x6a\x29\x36\xaa\x67\x8a\xf7\x84\xec\xb9\x1e\x04\xff\x89\x0e\x97\x65\x09\x56\xed\x11\x37\x15\x58\x16\x1b\x59\x0c\x74\xef\xcc\x73\x3b\xf3\x95\x7a\x6d\x77\xe6\xb9\xe1\xa4\xc4\xfe\x2c\x56\x9b\x53\xb4\x27\x2a\x0c\xeb\xce\x8b\x66\x37\xdd\xd2\x12\xe3\x4b\x49\x93\xeb\xb2\xd4\xd4\x26\x30\xcf\x66\x93\x15\x45\xe0\xb5\x27\xe6\x1d\x87\x61\xbd\x76\x68\x18\xd2\x47\xa4\x39\x6a\x43\xaa\x34\x26\xf2\x74\x8a\x4d\x9a\xeb\x33\xde\x56\x3c\x93\xdb\x44\xca\x6d\x1f\x0a\x6c\x82\xee\xc3\x5e\x96\xbb\x6a\x34\xa3\x39\x7d\xf3\xc5\xab\x66\x50\x82\x4b\xf0\x2f\x3b\xe0\xfe\x36\xac\xd1\x18\xb3\xc9\xb2\x3b\x70\x93\x38\xa9\xbb\x63\xca\xc6\x0d\x6d\x97\xcb\x81\x2a\xec\x43\x2a\xcc\xab\x2c\xe7\xdd\x1c\x9d\x97\x19\xeb\x0a\xed\xe6\x8c\x1b\x1a\x2f\xe5\x74\x50\xd4\x21\x53\x9b\x8f\x62\xc8\x4b\x58\x30\xce\xf2\x65\x0b\x9b\x55\xa8\xfb\xfe\x65\x45\xed\xb2\xaa\xa5\xe4\x9d\x65\x45\xcd\xb2\x92\x4d\xf9\x44\xcf\x79\x13\xaf\x56\x10\x97\x8d\x79\x05\x59\x09\x30\x18\x4e\x90\xd4\x5d\x2c\xc1\x6c\xa2\xff\xae\x2e\xda\x35\x68\xba\xe7\xc8\xb9\xbc\x97\x54\xf0\x86\x5a\xc5\x4b\xaa\xba\x97\x9e\xa4\x8b\xb2\xdc\xc3\x0b\x2c\xd3\x74\x35\x73\x98\x20\x51\x8a\xae\xd6\x2a\xc0\x25\x78\x82\x6b\xb4\x8c\xf1\xae\x6a\xba\x09\xaa\x8a\x34\x6f\xbd\xb0\x19\x6b\xa1\x08\x6a\x79\x38\xa6\xe0\xe4\xdf\x58\x96\x50\xa9\x73\x1b\x2b\xc5\x4f\x7d\x93\x7a\x68\xd8\xaa\x12\xa9\xea\xe4\x61\x6c\x55\x8b\x57\x9e\x8f\x3a\xdb\x70\xc5\x56\x94\xd0\x5a\x93\x58\xf1\x81\x81\x34\x1a\xb4\xdd\xbc\x3d\xd2\x93\x01\xd6\x22\x66\x89\x31\xf0\x4e\x05\x9a\x96\x06\x5e\x27\x6a\x49\x88\xfe\x1b\x86\xca\x9c\x38\xa0\x3d\x65\x54\x7d\x54\x13\x86\xf5\x33\x2e\x8a\x8e\xbc\xf6\xc0\x26\x0c\xed\x6f\x77\x9e\x9c\x66\x8b\x30\xd4\x7f\xbb\xbf\xeb\x8e\xe1\xa2\x68\x0c\xb1\x9e\x84\x00\x23\xdc\x10\x0d\x8d\x90\x5b\xe9\x61\xfb\x7d\xcd\xda\xee\x68\x5b\xb5\x34\x06\x09\xe9\xb3\xd6\x81\x95\xab\xf2\x6f\x7d\x2f\x36\xd8\xd3\x23\x7f\x40\x83\xb6\x25\x8c\x60\x7b\xd5\xe4\xf2\xea\x42\x65\x89\xa7\xa3\x99\x06\x6c\x4a\xb6\xa5\x66\x13\x4d\xa1\x97\xf9\x09\xdf\xac\xa8\x4c\x2e\x33\x0a\x9b\x86\xa2\xb5\x71\xf2\xf3\x94\xe6\xa9\x64\x6b\x25\x24\xe4\x64\xbb\x88\x37\x61\xd8\x4f\x2d\x86\xdf\x8e\xe2\x87\x25\x8c\xf0\x64\x9f\x57\xde\x58\xde\x4c\xe1\xa6\xc4\x46\x23\x5a\x35\x57\xc6\x69\x09\x0b\xd2\x46\x94\x4e\xd0\xa9\x73\xc5\x7d\x34\x0a\x15\x86\x54\xf0\x05\xbb\xda\xf8\xb4\x87\x3a\xed\x56\x32\xe5\xde\xff\xaa\xdf\xad\xbc\x40\xcb\x12\x32\x3d\x46\xcf\xf6\x43\x97\x2c\xd5\xcb\xbc\xe4\xef\x18\xc6\xff\x0d\x07\x23\xbd\xb5\x48\x10\x44\xf9\x3a\x63\x0a\x96\xa4\x0b\xfe\x7d\x0b\x23\x14\x7c\x09\x70\x27\x18\xd1\x50\x8b\x2a\x93\xfd\x26\x03\xdb\x9d\x80\x90\x35\x52\x78\x32\xf7\x7a\x80\x20\xc0\xb1\xab\x54\xe1\xd2\x3d\xc2\x0d\xd9\x61\x13\x35\x49\xd3\xa8\xc6\xa2\x89\x86\x1a\xe9\x38\xe1\xff\xa1\xd9\x85\x2c\x73\xfa\xb7\x9e\xe0\xbd\x60\xa0\x6a\x69\xac\x84\xbb\x2e\x10\x2c\xd1\x0d\x52\x46\xaa\xea\xf8\xba\xbf\xc4\x27\xba\x07\x7d\x42\x54\xdc\x25\xa7\x97\x70\x45\xf6\x88\x5e\x7f\xa5\x1b\xa8\xb4\x27\x06\x9d\x82\xc1\x8c\x34\x0c\xf7\x6b\x41\x52\x13\x1c\x37\x6d\x9a\xa9\x5f\x99\x73\x16\x37\x51\x55\x45\xbc\x5b\x59\x63\x4a\x9b\x35\x70\xba\xf8\x93\xc2\xfd\xff\x5a\xf3\xf7\x4d\x81\xe0\x37\x54\x2a\xa7\xbd\xeb\x29\xd1\x5b\x4b\xb6\x62\x8a\xdd\xd0\x9e\xe9\x97\xc6\xdd\x97\x7a\x69\xee\x1c\xad\xde\x76\xee\x82\xde\xa5\x5f\x21\x14\x97\x70\x42\x44\x34\x17\xe9\x46\xf3\x88\x70\x41\x56\xe8\x04\x87\xe1\x0a\x9d\x38\xe5\xc1\x49\x66\xb8\x47\x0c\xa7\x5d\x33\x7d\x31\xd9\xc9\x87\x14\x36\x47\xc7\xe7\xa4\x9f\x68\xe1\xe9\x5f\x42\x34\xa7\x28\x98\xb3\x9b\x00\x43\x90\x04\x5f\x43\x38\x51\xa2\xf1\xcd\xa7\x3f\xc5\x2a\x9f\x35\x56\x49\x26\x9f\xf6\x99\x26\x45\xee\x34\xb5\xa2\xe4\x0a\x51\xcd\x46\xc3\x39\xae\x51\x67\xef\x93\x05\x4d\x85\x3c\x4b\xb6\x40\xb7\x26\xcd\x4f\xd5\x02\xf5\xf3\x68\x51\x83\x11\xd4\x94\xce\x70\x59\xc2\xf1\xee\xee\xb2\x2b\x75\x77\x62\xed\x52\x40\x0a\x0f\x82\x0e\xed\x6c\x63\x7f\xbd\xeb\x06\x15\xbc\xb5\x43\x7b\xb7\x47\xa4\xd9\x02\x1d\xb7\x87\x76\xac\x79\x96\xd6\xf8\xde\xb9\xcc\xed\x11\x06\x57\x54\x05\x8c\xf7\x64\x51\x04\xb9\x7b\xdc\x47\x0a\x47\x69\x4a\xf3\x5c\x48\xdb\xe9\x7c\xb3\xd6\x64\x9a\xce\xab\x4e\x07\x76\x41\xea\xc2\x9a\xbe\x6b\x21\xd9\xa9\x1c\x30\xa8\xb2\x84\x23\x92\x4c\xee\x61\x2c\xde\x46\x0b\x93\xb2\x40\x23\x90\x18\x97\xf7\x32\x20\xa6\x52\x50\x25\xbc\xd9\x59\xdf\x7a\x8c\x47\x48\x40\x63\xfa\x24\xde\x8a\xa9\x9a\x11\xea\x19\x22\x5a\xc2\x2b\x22\xa6\xc1\xc5\x45\x2a\x24\x3d\xf8\x94\x5f\xe4\xcb\x44\xd2\xf9\xc5\x45\x30\x2b\x8a\x37\xa8\xeb\x03\x6c\x4b\x0c\xd7\xc4\x53\xe1\x6a\x2f\x8f\xeb\xbd\x5e\x59\x5a\xbc\x8a\x18\xcf\xd7\x34\x55\xe7\x62\x23\x53\xcd\xdf\xee\xa4\x74\xed\xa3\x6b\x8f\x0c\x4a\x2b\x5c\x9c\xc1\x6b\x78\x00\x4f\xc9\x4e\x51\x78\x49\x44\xf4\x0b\x4d\xae\x5f\x27\x6b\x78\xd6\xa5\xd6\x7c\x19\x86\x87\x3c\x31\x98\x21\x15\x73\x7a\x18\x29\x9a\x2b\xf4\x14\xbd\xc4\x18\xde\xef\x5a\x6d\xd4\x6c\x56\x37\x9e\x78\x35\x55\xb3\xa2\x40\xfa\xc7\x31\x68\x7d\x42\xe8\x84\xc6\xdb\x12\x97\x18\x05\x37\x54\xe6\x4c\xf0\x3c\x80\xe9\x0c\x5b\x85\xd5\xd6\xa5\xc5\xc1\x77\xd1\x0f\xd1\xf7\x01\xac\xc4\x9c\xc6\x81\x65\x95\x02\x48\xc5\xfa\x4e\xb2\xab\xa5\x8a\x83\xff\xf7\xff\xe9\x3d\x1c\x3e\x1c\xf6\x9e\x52\xce\xf2\xde\xdb\x4d\xbe\xbc\x4e\x24\xbd\xe9\xa1\x2f\x99\x60\x52\xa4\xd7\x91\xdc\xe0\x40\x37\x84\xe1\x09\x19\xc2\x73\xc3\x99\x45\x32\xe1\x73\xb1\x42\x18\xbe\x74\xd1\x16\x6b\x2f\x82\x82\x81\xdb\x60\x95\xa2\x51\x4d\x82\x20\xd6\xdb\x0d\x5f\x04\x03\x34\x18\x3c\x19\x3c\xc7\xd5\x34\xa2\xef\x7e\xc0\x25\xfc\x41\xde\xa3\xe0\x9a\xde\xe5\x01\x86\x0f\x5d\x93\xf4\x87\x05\x87\xfe\x21\x5f\x2c\x81\x7b\x41\xb6\x25\xfc\x5a\x4f\x8a\xa6\x01\xcf\x2c\xa7\xf2\x93\xd1\x63\xfe\x0a\x3f\x93\x9f\x34\x86\x82\x1f\xc9\x4f\x1a\x3d\xc3\x2f\xe4\xa7\x28\xa7\x6a\x7c\xd6\x0d\xf3\x5f\xec\x4a\xf8\xc9\xac\x61\xa0\x25\xbc\xee\xea\xca\xcf\x55\x2e\x5c\x14\x1a\xdf\x3e\xe8\xca\xf5\x63\x9d\xab\xb4\x8a\x02\xdd\xb1\xdf\xc8\x07\x14\x18\xb5\x40\x80\xc7\x2f\xa6\xbf\xcd\x48\x7f\x08\xf7\xf4\xe6\x08\x29\xf8\xed\x6b\x1d\xd1\x68\xf1\x37\x3c\x51\xd3\xdf\x66\xf1\xbd\xfd\xb0\x99\x4a\x73\x66\xf7\x3b\x28\x45\xb6\x39\x55\xf1\x19\x68\x0c\xff\x1a\x96\x49\x1e\x3f\x00\xca\x17\x42\xa6\x34\xee\x28\xfe\x40\x73\x35\xaf\x35\x65\x39\x43\x4a\x6f\xc5\x52\x97\x54\x54\x3e\x13\xb2\x2b\x7f\xf3\xc4\xdc\x70\x06\x63\x8b\x87\x29\x2e\x0a\x24\xc9\x6b\x44\x31\x36\x52\x53\xbf\x93\xed\x79\xc9\xb5\xac\x95\x28\x76\x99\xd1\x9e\xa4\x29\x65\x37\x54\x82\x66\x7c\x06\x41\x4f\xd2\x3f\x36\x4c\x36\xf0\x5d\x4f\x96\x65\x09\x54\x75\x5b\x44\x29\x43\x9d\x40\xea\x07\x37\x42\xe0\xc4\xad\x3a\xc7\x0f\x58\xae\x10\x79\x2e\x0e\x8f\xef\xd9\x96\xc0\xa0\xb2\xa4\xe9\x1b\xea\xda\x4f\xa2\x0d\xcf\x93\x85\xe6\xb0\xab\x94\x9a\xc5\x85\xbc\x4e\xe5\xe2\x5d\x22\xaf\xa8\x7a\x4e\xd5\xb8\x03\x6d\x18\xcd\x48\x6e\x3b\x50\x61\x32\x5a\x14\xb7\x88\x41\xc0\x93\x15\x0d\x70\x51\x1c\x55\x2f\x7a\x45\x48\xc4\x70\x94\x5b\x8c\xc6\xa3\x4f\x82\xf1\xaa\x86\xaa\x5a\x8d\x2b\x02\x73\x36\xd1\x27\x44\x4c\x50\x3a\xe9\xe7\x61\xa8\xf1\x77\x18\xa2\x0d\xe9\x0f\x71\xec\x0e\xf0\x74\x1a\x6c\x26\x06\xb5\xb3\xf8\xc8\x8e\x17\xe3\xb8\x4a\x7a\x83\x74\x42\x89\x51\x85\x84\x6b\xa3\xb2\xc0\x6f\xe4\x00\xf6\xd9\x8d\x2e\x9e\xd2\x88\x6f\xd4\x08\x12\x7e\x0c\x45\xf1\xd4\xbe\x97\xd8\xa0\x1c\xa9\x88\x00\xae\xba\x90\x4c\x47\x85\x13\xe5\x4e\xbd\x4a\x10\xaa\x7b\x2b\x25\xf2\xca\xf0\x58\x5e\x1f\xf0\xe8\xe1\x84\x2b\x24\xd5\x54\xcd\xb4\xe8\xa7\x90\x26\x53\x38\x36\x09\x61\x68\x7e\xa6\x74\x56\x14\xc2\xbc\x0b\xfb\x5a\x02\x53\x16\x0f\xa6\x94\x65\x90\xb8\x97\x45\x26\x84\x84\xb4\xab\xb7\x3d\x77\xaa\x48\x06\x0a\x4f\x86\x31\x52\x8f\x87\x93\x44\xc5\x4c\x61\x4d\x6d\x60\xe3\x6a\x58\x31\x0e\x79\x67\x79\x5d\x60\xa3\x90\x11\x22\xe0\xef\xc3\xe1\xdf\x46\x7f\xff\xfb\xc3\xef\xff\xfa\xb7\xbf\x0e\xff\xfe\xf7\x11\x8e\x87\x25\x2c\x7c\x1d\xc9\x67\xc8\x1a\xf5\xad\x3b\xeb\x6b\x9f\x07\x39\xc5\x05\x30\x72\x87\x8c\xb5\x5c\xae\x10\xf3\x27\xa0\x90\xee\x80\xd2\xaa\x4d\x4c\x57\xaa\xed\xf7\x68\x38\x59\x28\x24\x07\x14\x86\x38\xce\x14\x92\x9a\xf6\x1b\x33\x15\xa3\xd6\x0c\x43\xd9\x27\xd2\x1d\x93\x24\x8f\x53\x73\x54\x8a\x04\x61\xd3\x74\x30\x98\xe1\x3e\x11\xb8\x92\x8d\x8d\x1a\xb6\xca\x98\x0e\x06\x26\xaf\x2a\x8a\xb4\xc7\x78\x8f\xe1\x30\x64\xd3\x74\x66\x0c\x2c\x3c\x70\x8a\x22\x2d\x8a\xa1\x17\x45\x55\x18\x1e\x8c\xca\x12\xe6\x8a\x6c\x19\x4f\xb3\xcd\x9c\xe6\xf1\xda\x1c\x1e\x03\xe3\x73\xfa\xf9\x74\x61\x5e\x47\xb8\x8c\xdc\x3b\x2c\x77\xd7\x8b\x13\x66\x2c\x87\x2a\xc8\x10\x98\x3f\x1f\x32\x67\x43\x1c\xf7\x6f\xd1\x0b\x90\x38\x0c\x6f\x11\x37\xbf\xac\x3a\x2c\x6a\x1d\x06\x3d\x16\x63\x6c\xb2\x10\x3a\x15\x7a\xb0\x61\x88\xfe\xff\x73\x85\x18\x48\x5c\x14\x55\xa1\xda\x28\xb1\x84\x1b\x45\xa6\x41\xe3\x7c\x27\x80\xa0\x2d\x52\x04\x10\xb0\xbc\x71\x5a\x19\x40\xd0\x25\xab\x06\x7a\x4f\xbe\x12\x69\x92\x51\xbf\x33\x1b\x9b\x34\x70\xc2\x54\x30\x83\x3b\x45\x6e\xcc\x39\x6c\x9a\x28\x14\xd8\x7e\xdb\x3a\x6d\x0b\x01\x86\x95\xd2\xbc\x6e\x27\xaf\xff\x26\x59\xd1\xbc\x28\xba\x44\x50\x85\x14\xdc\x69\xba\x07\x57\xf7\x97\xb7\xec\x42\x5e\xc2\xa5\x22\x42\xa1\xe0\x8c\x2e\x32\xcd\x81\x43\x20\x6e\xf9\x4f\x86\x15\x68\xd7\x6e\xb1\xfa\x4a\x45\x96\xcb\xc6\x20\xc9\x95\x8a\x16\xd5\x62\x9c\x50\x3f\x16\xa9\x3f\xc7\xb4\x84\xdb\xdd\xf9\xad\x4e\xfa\xc8\xa5\xd2\x6b\x9e\x93\xb7\xd1\x02\x04\xf9\x1c\x2d\x80\x91\xe1\x98\x3d\x92\xfe\x34\x8f\x0d\x06\x95\x49\xe5\x94\xcd\xc6\x9a\x90\x26\x46\x51\xa4\x20\x01\x81\x28\x24\x58\x0f\xf1\x44\x91\xc3\x7f\x2b\x3e\xd6\x28\xf1\x63\x74\x08\x17\x9d\x0b\x8b\x9c\xab\xe9\xa9\xde\x40\xb3\xaa\xd3\x84\x7c\x56\x45\x21\xfb\xe4\x93\xd2\x64\x60\x1f\xbd\xd1\x09\x43\x14\xc7\xfd\xbe\x96\x17\x4f\x15\xb9\x50\x91\xd5\xe4\xb2\x2f\x9d\xdc\x6c\x25\xdd\x44\x92\xae\xb3\x24\xa5\xe8\x44\x41\x10\x05\x9a\xe3\x7a\x25\x6e\xa9\x3c\x4e\x72\x8a\x70\x09\xe7\xa6\xae\x79\xa2\x12\xcd\x47\x7d\x32\x6f\x6f\x8e\xde\xbd\xfc\x70\x42\x82\x37\x01\x7c\x36\x09\x6f\x4f\x5f\xfd\xf6\xec\xe5\xab\x57\x24\x78\x1b\xc0\xb1\x4e\x82\x77\xca\x40\xeb\xed\x3d\x5b\xc7\x5a\xa4\xc1\x46\x4b\xdd\x86\xea\x41\x4e\x54\x64\x79\x50\x58\x10\x15\x69\xee\xc7\xa8\x5a\x49\x3e\x11\xf1\x62\x22\xa6\x1b\xc3\xfb\x6f\x34\x77\x11\x23\xfb\xba\x2d\x71\xe3\x20\x5c\xcf\x9a\x39\x49\xb5\x02\x64\x42\xe8\x94\xcf\x80\x11\xd5\x24\xad\x13\x94\x92\x77\xca\x1c\xa8\xe1\x30\x4c\xdd\x41\xb3\xd4\x39\xfb\xc7\x0a\xe5\x13\x1e\x6f\x06\x68\x31\x09\xa2\x20\x0e\xfe\x2d\xc0\x03\x6e\x8d\x4e\x52\x3a\xc7\x61\x58\xb1\xd8\xd6\xb4\xd7\x01\x3f\xa9\x89\x74\x6d\xec\x79\xab\x50\xa2\xc9\x21\x52\x51\xbe\x4c\x56\x45\xc1\x34\x16\xd0\x8f\x38\x0c\x8f\x50\x02\x81\x7e\x0e\x8c\xfc\x47\x4d\x87\x20\x31\x5c\x20\x1c\x29\xd2\xef\x7f\x6d\x33\xdc\x23\xb5\xf7\x3d\xd3\x62\x39\x6c\x4b\x24\xdf\x28\x72\xa4\xc2\xb0\x6f\x13\x4d\xfb\x61\x18\xe4\xe6\x6d\xd7\x96\xbb\xb6\xd2\x7a\xa5\xc8\x91\x94\xc9\x5d\xc4\x72\xf3\xdb\xb5\x81\x03\xf3\xc5\xa9\xb4\x4a\xb8\xee\x24\x25\x4e\xb9\xe5\x94\x4d\x67\xca\xcb\xca\x9a\x89\xbf\x1f\x2b\xdc\xe8\x0a\x5f\x2b\x92\x4c\xba\x44\x6b\x46\xf3\x1d\x75\x81\xde\xe8\xf5\xf1\x3c\x70\x72\x66\xb6\xad\x20\xdc\x6d\x53\xb3\x6b\xc5\x63\x36\xc6\x56\x82\x95\x84\x4f\xd9\x60\x30\x03\x3a\x95\xb3\xa6\x30\xff\xc0\x62\x19\xaf\x6d\x09\xa0\x7a\x74\xda\x93\x00\xc3\x53\xa5\xd9\xf3\x97\x27\x17\x6f\xcf\x4e\xdf\x9d\x06\x18\x5e\xaa\xa6\x79\x41\x09\xcf\x3a\x79\x92\x47\x56\xe9\xf1\xd8\x70\xa9\x8f\x3e\x1e\xfa\xd7\x12\xde\xb7\xca\x6b\x09\xf9\x77\xe2\x9b\x8d\xe6\x62\x95\x30\x1e\x86\x5a\x54\x39\x4a\xb5\xd8\xf8\xab\x57\x43\x2e\xd5\x2a\x5b\xb0\x8c\x06\x4d\x35\x81\x39\xc9\x06\x3a\x7e\xaf\xc8\xef\x2d\x4d\xa4\x8a\x6e\x25\x53\x14\x3d\x53\xc8\x32\x7c\x51\x9a\x09\xbd\xc9\xfd\x99\x73\xb4\x4e\x24\xe5\xea\x17\xa3\x0b\x8f\x6c\x23\x15\x68\xec\x01\x3f\x2d\xd1\xef\x38\x46\x88\x92\x53\x14\xb0\x85\x34\x6c\x27\x8e\x72\x75\x97\x55\x26\x37\x24\xe0\x82\xd3\x00\x1e\xa8\x28\x59\xaf\x29\x9f\x1f\x2f\x59\x36\xd7\xf3\x41\xa3\x5c\xa6\x9e\xb5\x0e\x3e\x25\x37\x89\x85\x41\x1c\x60\x40\x8a\x18\xc4\xac\xea\x1e\x78\x10\xe0\x48\xac\x29\x47\xba\xc7\xf5\x08\x2a\xf8\x3c\x73\x4b\xaa\x35\x24\x50\xd1\xb3\xc6\x8a\xd0\x04\xcc\xe1\x6b\x79\x70\x30\xc6\x8e\xa3\x7d\xdf\xb0\xc7\x99\xde\xa8\xa9\x9c\x55\x18\xf7\xbd\x42\xb8\x1c\xbf\x98\x3e\x55\x33\x6f\x1e\xf0\x44\xb5\x6d\x76\x9a\xcb\xb7\xc2\x6c\xbe\xbc\xd7\x97\x4e\xd0\xcb\xa6\xd1\x8f\xd1\xfb\x48\x23\x76\xbe\x54\xd0\xfa\x64\xe0\x2b\x4d\x83\x0a\xc7\x92\xe8\x1e\x40\x25\x1c\xd3\x89\x8c\x5f\x3b\xce\x09\x9e\x2b\x43\xdf\xe0\x8b\x6a\xe9\xba\xff\x50\xe4\x4f\x0e\x38\xc2\xf0\x7e\x1a\x3d\xb9\xff\x13\x72\xc7\x23\xf1\x74\x06\x1f\x0c\xa9\xee\x12\xbd\x55\x18\x56\x36\x35\x76\x06\x67\x01\x21\x5f\x94\xd7\x9b\x4c\xba\x4f\x41\x7a\xcf\x8d\xee\x7b\xe7\x18\xa4\xf7\x87\x72\xca\x79\x5c\x96\x5a\xae\x7c\xae\xd0\x9d\x41\x22\x25\xbc\x50\xe4\x3d\x0a\x6e\xaf\xf3\x00\xc3\xaf\x8a\x88\xc8\x62\x2f\xf8\x49\x91\x37\x6a\xf2\xab\x8a\x7f\x55\x61\xf8\xab\x8a\xdc\x69\xfa\xb9\x11\x44\x8b\xe2\x0b\xfc\xdc\x89\xa2\x6e\xd1\x0b\x65\x84\x74\xa4\x11\xe5\x2d\xfa\x55\xbf\x4d\x5e\x68\xee\x9e\xfc\xaa\xff\xc6\xf6\xf9\x27\x2d\x00\x5a\x3c\x19\x0c\x34\x63\x61\x92\x4b\xf8\xd1\x40\xe4\x67\x55\xc2\x2f\xca\xf0\x09\xbf\xd9\x9f\xdf\x15\xf9\x59\xa1\xa0\xe9\xc1\x82\x41\xed\xbb\x93\x68\xec\x7c\x8b\x14\x91\x13\x15\x37\xfd\x70\x7e\x57\x38\x0c\x7f\xd3\xe8\xf0\x77\x05\xdb\xf6\x21\xc8\xb0\x3a\xf0\xc0\x25\x50\xba\xab\xd1\xec\xd0\x79\xed\x4b\xd1\x5d\x0a\xce\x8a\xf5\x6f\x69\x38\xe5\x7e\xa7\xd9\x02\x51\xaa\x17\x73\xbd\x42\x6b\x5d\x7f\x7e\xcb\x9c\x5e\x2f\x4d\x72\xda\x1b\xc6\xbb\x72\x45\xc3\xde\xcb\xfa\x1d\xe0\x72\x6c\xb2\x8e\xf6\xb2\xca\xbd\xbc\x20\x7d\xee\x87\xfb\xb9\x1b\x76\x32\x75\x7e\xe0\xbe\xc4\x77\x5d\x25\x40\x74\x96\x01\x81\x2b\xc3\xc8\xae\x9e\x27\xeb\x75\x76\xa7\xf9\x3b\x2f\x35\xea\xb5\xc9\xa9\x99\xf4\x7c\x4d\x53\x46\xf5\x02\x15\xb4\x8b\x01\xf2\xc0\x7d\xa5\xd7\x7e\x8b\xa3\xeb\x37\x0f\x24\x1a\x6c\x3e\x36\xec\x9f\xa5\xca\x61\xd8\x7f\xa5\x90\x6c\xb0\x3e\x93\x15\xd2\x52\x86\x3d\x27\x22\x48\x12\x39\xe5\xd4\x48\x13\xd2\x9f\xdb\xc6\xd5\x13\x70\x7a\xdb\xb0\x44\x9f\x98\x3a\x63\x89\x91\x45\x34\xc3\x58\xe3\x18\x46\xc9\x74\x66\xe4\x0f\x48\xba\xdc\xc6\x46\x84\x68\x32\xfa\x50\xff\x70\xf2\x9d\xfe\x11\xe4\xaf\xfa\x87\x91\x1f\xf4\x4f\x42\xbe\x37\x06\x1c\x6c\xcf\x31\x2a\x85\x0d\xe4\xb0\xa8\xd9\xec\x0c\xd6\x30\x27\xd7\x0a\xa5\x18\x6e\xc8\x12\xcd\x31\xdc\x11\x49\x91\xce\xf6\x1d\x86\x95\x96\x38\x6f\x2a\x89\xf3\x8a\x0c\xe1\x92\x2c\x8a\x42\x50\xb8\x25\x74\x72\x89\x52\x58\xe1\x58\x9a\x87\x21\x76\x52\xfe\x78\xf5\xf8\x6a\x7c\xe5\xe4\xc3\xa4\x28\xae\x34\x63\x78\xa3\x21\xb2\x26\x77\x28\x23\x37\xd3\xab\x19\x5c\xc1\x1c\x83\xc2\xd8\x98\x05\xdf\x4e\xaf\x66\x64\x5d\xb9\x2b\xad\xb1\x5b\xc6\xca\x2d\x63\xbf\x76\xfa\x43\xbb\x96\xbe\xf7\x6b\x29\xb3\xef\x3f\xf8\xf7\x2b\xbf\x3a\x99\x33\x31\xbe\x85\xac\x36\x20\xaa\x84\xd9\x51\x25\xd4\x4d\x0e\x46\x31\x2f\x0a\x31\x11\xf1\x6d\x59\x42\x4a\xc9\xd6\x99\xc5\xc5\x09\x45\x43\x0c\xab\x64\xad\x9f\x46\x18\x16\x2c\x53\x54\xea\x97\x87\x18\x72\xb1\xa2\xfa\xf1\x3b\x0c\xf4\x86\xca\x3b\xfd\xfc\x57\x9d\x87\xcf\xf5\xe3\xf7\xf6\xf1\xa5\x96\x62\xf5\xfb\x0f\xb8\x84\x0d\x25\x29\xf5\x46\x77\x90\x53\xcd\xc9\x2c\xd9\x7c\x4e\x79\x80\x61\x41\x1d\xc6\x7a\xeb\xcf\xae\x02\x0c\x99\x51\x91\xe5\x54\xc1\xda\x2b\xcb\xac\x5e\xcf\x63\xc3\x00\xc3\xbc\xc3\x8d\x70\x49\x6b\xcc\x7c\x43\x0d\x57\xf5\xe3\xf9\xe9\x9b\x00\x9c\x0a\x8a\x2d\xee\x02\x0c\x77\xd4\x88\x09\x2b\x6a\x50\xe6\x15\x25\x1f\x34\x61\xbb\xa4\x24\x8f\x16\x70\x4b\x35\xa2\xb7\xbc\xaa\xde\x4b\x27\xe6\x5d\xac\x0f\xea\xa4\x0b\x9b\xc5\xd4\x78\xa0\x84\xfb\x72\x20\xe9\x15\xcb\x95\xd4\x2d\x9c\x36\x2a\x31\x39\x6c\xde\x46\x8e\x73\x5a\xd3\x93\x4f\xba\xd7\x3f\xbb\x73\xd8\xcf\x94\xf4\x3f\xd1\xa2\xe8\x7f\x6a\x38\x17\xee\xbc\x46\x1a\xc4\x86\xc3\x81\x63\x4a\x92\x30\xbc\xef\x3c\xed\x89\x42\x2b\x8a\xb6\xe5\xd7\x4e\xce\x56\x56\xe1\x65\xb3\x58\x0c\xff\x37\x73\x96\x56\x62\x7b\xa2\xb6\x77\x2e\x63\x6d\x4f\xee\x28\x9a\x53\xa0\x78\xcc\xc3\xd0\xf1\x36\x73\x3a\xa5\x33\x58\x51\x97\x11\x78\x18\xaa\x3e\x21\x73\x1a\x86\x2b\x9b\x5b\x63\xc5\x78\x45\xe1\x5d\x27\x86\x22\xb7\x54\x13\xbd\x27\x0a\x2d\x1b\xa3\xad\xa8\x42\x46\x91\x04\xe7\x19\xe6\x96\x01\xa8\xe4\x2a\x56\x30\x77\x87\x7b\x4c\x70\x4d\x9e\x20\x29\x0a\x24\xa3\x46\x2a\xa1\x18\x64\x09\x6f\xa9\xa6\xd6\x1d\x7c\xf2\xae\x6c\xa2\xca\x2e\x76\xa3\x3a\x35\x6f\xf8\x7a\x2e\x69\x09\x47\x1d\x04\x96\xd8\x71\x1f\x51\x74\x42\x2d\x34\x8c\xc0\x60\x61\xe7\xce\xe0\xfc\xc0\xcc\x51\xdc\x2d\xba\xd5\xe0\x99\x20\xd9\xd0\xd5\x4e\xcc\x01\x63\x4e\x71\x18\xaa\x69\x4e\x67\x53\x3e\x33\xc7\x67\xf6\x91\xf4\x47\x9a\xb3\x7b\xa2\x79\xb4\xa6\x0d\xc3\x02\x0d\xa1\x3f\x32\x4e\x4b\xbe\x7c\x51\x98\x69\xc9\xed\x31\xda\x56\x4b\x69\x75\x2d\x43\x0c\xc7\xfa\x2b\x07\x89\x71\xbc\xf2\x8f\x25\xbc\xd9\x9d\xa6\x6a\x0c\xd2\x2a\xe6\x8c\xd4\x23\xb1\xd7\x6e\xbc\xa6\x4d\xc5\xd1\x86\x22\x0e\x2d\x47\xb5\x44\x53\x11\x87\xa0\x34\x5b\x59\x14\x47\x6e\xb1\x98\x73\x52\x6c\x0c\xd2\x5f\x75\xa1\xfe\x2b\xa4\x8c\xd4\x2a\xc9\x25\x6d\x99\xe2\x7a\x1d\x9b\x79\x77\x40\x37\xa0\x34\x56\xba\xb7\x06\xfa\xc6\x36\xb7\x8f\x64\x51\x68\xa6\xc7\x96\x33\xcf\x26\x5b\x51\xb8\x44\x0b\xe6\x25\xcb\x0d\x60\xe8\x4c\x93\x3f\x2d\x64\x76\xaf\x55\xa3\x87\xab\xa7\x92\x2d\x90\x34\x6b\xdd\x57\xcc\x4d\xc5\x27\xfa\xc1\x9b\x61\xdd\x51\xc3\x2c\xf8\x2e\x8b\x76\x56\x69\x3b\x20\xdd\xb4\x14\x05\x12\x8d\x95\x60\x66\x49\x94\x25\x9c\x75\x82\x87\x5a\x4e\x15\x24\x99\xce\x1a\xf0\xa7\x6d\x2f\x34\xd3\x9a\x32\xad\xbd\x30\xbf\xd2\x6a\xfb\x94\xd5\x6d\x97\xf0\xba\xab\x72\xbb\x96\x41\xea\x56\xe8\xe4\x84\xc6\xb6\x29\xde\x6e\x4a\xb6\x9b\xea\x57\x6d\x51\x33\x0f\x73\xfb\xc2\x6d\x83\x66\xa3\x9b\x46\x79\x39\x46\x47\xaa\x28\x10\x55\x08\x2d\x69\x53\x28\x75\xe6\xa7\xbd\xd6\x6e\xdb\x3f\x98\xb1\xa8\xa0\x66\x27\x9b\x7a\x4a\xec\x8c\xac\x77\xb5\xec\x0d\xad\x4a\xf5\x69\x3a\x9c\x4d\x1c\x7f\xda\x4c\xf3\xc4\x1d\xa8\x39\xdd\x03\xd9\xb6\xac\xaa\x57\x9d\xb3\xdc\x38\xd1\x03\x85\xe6\x92\xb2\xcf\x7a\x5a\xcd\xa2\x44\x8d\x25\x66\x76\xf0\xb1\xc3\xc0\x76\x6f\x6a\x79\xa3\xb2\x18\x0d\xc3\xcf\x34\x0c\x8f\x1d\xf2\xdc\x63\xc8\x73\xaa\x62\x59\x62\x78\xe7\xdc\x3b\xf1\xb7\x9e\x7e\xf4\xd6\xfe\x98\x43\x25\x57\x7a\x1a\xa8\xc6\xb9\x10\xb4\xc4\x97\xa0\xd3\x85\xf1\x1d\x45\x06\x0e\x76\xcd\xe4\xd1\x82\xbc\xa2\xf0\x36\x5a\x90\x23\x0a\x9f\xa3\x05\xb9\xa6\xa0\x05\x45\x43\x54\xc9\x19\x85\x2b\xfd\xfb\x9a\xc2\x8f\xfa\xb7\xbb\xbe\x9f\x95\xab\x10\x92\x30\xd4\x14\xab\x89\xfe\x21\x68\xe0\xf1\x60\x1f\x06\xdd\x54\xad\x1a\x5f\xa3\x70\x59\x9a\x71\xce\xe9\x7d\xca\xe9\x57\x14\xb6\xf6\xe4\x2c\xee\x0f\x4b\x8c\x31\xbc\x55\x68\xeb\xc2\x27\xf4\x87\x70\x2b\x93\xb5\xfe\xb5\xaa\xb9\xb8\x7f\xa4\x20\x5f\x26\x2b\xfd\x50\xc2\xd6\x05\x25\x58\x6a\x02\xb4\xa1\xe8\x4c\xa1\x73\xba\xe3\x05\xda\xdf\xdf\x5c\x52\x39\x86\x45\x93\x2c\xff\x4c\xb6\x25\x1e\xdf\x22\xbb\x65\x7e\x51\xfa\xc1\xd3\x66\x0d\x46\xb3\x5f\x4b\xb7\x6b\x75\x17\xad\x3a\xb3\xa6\x8a\xb9\x4a\x54\xbb\xa3\x25\x68\xf6\x2e\xde\x6f\xbf\x92\xc8\xc6\xc6\x9a\xe5\x82\x36\xcc\x59\x2e\x34\x3d\x77\xe8\x7e\x49\x51\x4d\x89\xcd\x07\x22\xe1\x94\x4e\xe5\x8c\x50\x8d\x39\xae\xe9\xdd\xee\xb9\x2b\x5b\xa0\xfe\x5b\xda\x65\xe7\xa2\x9a\xe2\x9f\xa3\xbd\xae\x03\xa7\x7a\xd0\xbe\x03\xa7\xd4\x48\xbb\x9b\x9c\xda\x15\xd9\x9c\x68\xcd\x28\x0d\xed\x37\xb6\x5a\x67\x74\xf7\xdb\x48\x4f\x77\x13\x38\x4e\x65\xd3\x01\x1c\x37\x8b\x49\x09\x5b\xab\x66\x89\x3b\x8f\xea\x1a\x8a\x91\x27\xc6\xa2\xe9\x0d\x45\xe6\xc1\x28\x48\xda\x96\x38\xf1\x11\x85\x3d\x05\xe2\x1b\x0a\xf7\x19\x25\xc5\xd7\xf4\x9b\xbb\x5b\x1a\x56\x6e\x57\x61\x12\x9f\xed\xd6\xee\x34\xb7\xf1\xeb\x6f\xac\xba\xcd\x45\xea\x7d\x8b\x46\xd6\x0d\x6a\xdb\x5d\x71\xc7\x6e\x36\xa5\xae\x95\xd5\x9a\x60\xb8\xd1\x08\xaf\xd9\xb4\x65\xc7\xf7\xc7\x54\x14\xed\xd6\x2d\xda\x5e\x52\x54\x19\x10\x4d\xb5\xa0\x39\x0b\xfa\xe4\x86\x22\x7b\x38\x1a\x6c\x4b\xfb\xba\x4d\x62\x55\x36\x13\x2a\x46\xcd\x75\xbf\xe2\xfe\xf7\x6c\x87\x2a\xc7\x04\x10\x64\xaa\x66\xc0\xc8\x68\xbc\x4b\x2c\x1e\xb3\x31\x16\x96\x6e\xd5\x84\x81\x0d\x06\x33\xeb\x47\x45\x28\x20\x6b\x45\x50\xd1\x14\x2d\x5f\xbb\xa5\x5f\x0b\xdd\xc6\xce\x60\x97\x97\xe8\x76\x03\x35\xee\x34\x84\x37\x18\x1d\x63\x65\x06\xba\xce\x7a\x7b\xea\x69\x15\xd3\x91\xde\x80\x37\xd4\xa9\x06\x8c\x46\x4f\x68\xd8\x8f\x9b\x48\x74\xba\xa0\xb3\xa2\x38\x6a\x23\xd6\x85\x16\x98\x1a\x52\x85\xb7\x65\x04\x45\x0d\x31\xa8\x44\xad\x17\x9a\x5a\x79\x95\xe4\x03\x0a\x4f\x29\xbc\xb4\xd2\x15\x4f\x6e\xd8\x95\x75\x8a\x0b\x36\x39\x95\x47\x57\x46\x5d\x5d\x14\x41\x00\xcf\xb4\x58\xb3\x96\x22\xa5\x79\x0e\xef\x29\x79\x46\xc3\xf0\x19\x8d\xbc\x75\x10\x3c\xa1\xe4\x3d\x0d\xc3\xf7\x34\xba\xf9\xdf\xe3\x27\x74\xf2\x94\x12\xf4\x80\x92\x27\xd4\x5b\x3e\x44\x01\xc6\xd3\xe1\x6c\xf0\x80\x4e\x47\xb3\xf8\x25\x35\x4c\xdc\x03\x4a\x5e\xd2\x68\x65\x34\x77\x87\x27\xf3\x2b\xfa\xf1\x10\x7d\x9c\x0f\xf0\x21\xc6\x45\x61\x72\x3e\x26\x7f\xfb\xab\x26\xb3\xad\x9c\xc7\x4b\x29\x56\x8d\xbc\x61\x88\x9e\x52\x62\xf2\x5b\x1e\xe1\x39\x25\x4f\x69\x18\x0e\x9e\x52\xf8\xb2\xab\x4f\xf9\xa3\xf3\x38\xeb\x39\x7d\x4c\xbe\x1f\x15\x45\x7f\x7f\xe5\xd2\x9a\x35\x42\xb4\xe5\xc3\xba\x2d\xf1\xf4\x0b\xed\xf0\x1e\xdc\x2e\x84\x88\x47\x65\x09\xa3\x3e\x21\x1a\xed\xa1\x27\x42\x64\x34\xe1\x38\x5a\x08\x61\x96\xf1\x07\x7a\x8f\xd5\xdf\x0b\x6a\xec\x8d\xe8\x0e\x67\x62\xfc\x3d\x4a\xf8\xa9\x63\xcd\xdd\xa2\x17\x4d\x3c\xfb\x42\x37\x38\xa6\x66\x7d\x6e\x4b\xcf\xe1\x4f\x67\x7a\x47\x70\xd2\xef\x6b\x52\x14\x1c\x1d\x1f\x9f\x9c\x9f\x9f\x9e\x9d\x07\x38\x0c\x69\x54\xbd\x82\x20\xfa\xfb\x10\x4f\xe8\x74\x38\x8b\x7f\xa5\x90\x9a\x84\x91\x4e\x18\xcd\xbc\x6e\xa4\xd9\x14\xe9\xf7\xe5\xde\x81\x92\xde\x4b\x61\xd8\x4f\xaa\x83\x77\xc7\xbb\x6d\xed\x2e\x8c\x0f\x46\xe5\x98\x4f\x3e\x68\x81\x61\xd4\x12\x77\x1c\x13\xf0\x2b\x2d\x71\xac\xf4\x7e\x18\x41\xe5\xf4\x2c\x5c\x90\x05\xf8\xd9\x2a\x21\x8c\x2a\x03\x7e\xa4\xe4\x0f\x8a\x02\xfb\x16\x60\xf8\x85\x92\x9f\x1a\xef\xe3\x26\xc6\xb2\x27\x4e\x60\xb6\x49\x13\x67\xfd\xa8\x39\xfd\x5f\xa8\x26\xac\x56\x3f\xd2\x65\x8f\x45\xfd\xee\xdd\xc3\x29\xa3\x49\x8d\x4b\x2a\x20\x99\x7d\x6b\x8c\xb1\xba\x65\x0e\x33\x23\x95\x81\xbb\xdc\x13\xfc\xed\xa8\xed\xa9\x49\xe3\xa8\xc0\x2f\x86\x51\x09\x0e\xa1\xff\xde\x52\xc9\x28\x49\x7e\xd3\xc3\xb7\xaf\x01\x06\x2a\x2d\x3c\xaa\x04\x29\x89\x92\x61\x48\xe5\x64\x5a\xc5\x20\xe9\x1a\xf0\xef\xff\xf2\x80\xbf\x05\xd6\x75\x9b\x7d\x22\xa5\x65\x65\x4c\x0f\xa4\x74\xf0\xe2\xd2\xa8\x74\x84\xdc\xb1\xa1\xe7\xd2\x92\xb0\xf1\xb7\x50\xd6\xa4\x28\x84\x6c\xf0\x02\xf7\xd2\xea\x4e\xee\x80\x4b\x74\xe7\x78\x01\xd7\x29\x26\xef\x09\xe3\x74\xa5\x59\x29\xeb\x7f\x3b\xb1\x67\x83\x1c\xb4\xcc\xae\xa5\x6f\xa5\x25\x72\x59\x7e\xb5\xc3\x7f\xde\xc5\xbc\xdb\x07\x09\x1a\x06\x24\xd6\xae\xe0\x52\x21\x8e\xc1\x9c\xb3\xa7\x64\x38\xf6\x36\x36\x8f\xd3\x31\xae\xa8\x19\x92\x44\x20\x0e\xd4\x1b\xc7\xe0\x30\x64\x12\x25\x36\x62\x91\x97\x54\xbe\x91\xdb\x6a\x4f\xcf\x99\xaa\x38\x8c\x6b\x7a\xd7\xc9\x50\x9c\xa9\x9a\x9d\xa8\x0e\xd7\x34\x70\xf9\xf6\xf8\xfc\xfc\x6c\x93\xd1\x57\x2c\x57\xf1\x10\x8e\xcf\xcf\xcf\xd5\x5d\x46\x9f\xd2\x34\x4b\x64\x62\x74\x41\x26\xf5\x83\x26\x6b\x3e\x53\xc6\x28\x57\x67\x34\x55\x2e\xe1\xe9\xe9\xeb\xf6\x9b\xe5\x87\xeb\xf7\x77\xe2\x9a\x72\xf3\x3a\x82\xa7\x89\x4a\xde\xc9\x84\xe7\x0b\x2a\x5f\x2a\xba\x72\xb9\x9e\xb1\xaa\x13\x2f\xde\xbd\x7e\x75\x94\x65\xc7\x22\xcb\x68\xea\xba\xa0\xd3\xf6\x12\x9e\x09\xb9\x72\xa7\xbb\x2e\xe5\x9c\xea\x1c\x75\xda\x6b\x3a\x67\x89\xab\xf6\x35\x5b\x51\xcd\x3d\x5b\xad\xf9\x10\x34\xc3\x37\x7f\x23\xe6\xf4\x75\xb2\xd6\xaf\x62\x4e\x5d\x17\xdf\x26\x4c\x8f\xef\x8f\x0d\xcd\xfd\xa0\xde\x66\x9b\x2b\xc6\xab\x07\x5f\xc7\xf9\x87\xe7\xaf\xcc\x5c\xbb\x6c\xe7\x1f\x9e\xbf\xd9\xac\x2e\xa9\xac\xdf\xdf\x26\x6a\x79\x4e\xaf\x1a\x09\x82\x71\x55\xbf\xb6\x60\x75\xfe\xe1\xb9\x85\x8d\x90\x1e\x30\xd6\x3a\xf9\xc9\x66\xb1\xa8\x6b\xd5\x53\x74\xbe\xa4\xd4\x57\xf3\x8e\x7e\x56\xef\x64\x92\x5e\x1f\x57\x93\x54\x25\xf9\x77\xb1\x49\x5d\x2f\x4b\x67\xe9\x28\x89\x98\x26\x72\x06\x1b\x49\x52\x19\x86\x69\xe3\x5c\x42\xf3\x64\x1b\x19\x86\x1b\x59\x23\x0d\x22\x25\xb6\x46\xe0\x1b\x09\x15\x5a\x03\xd9\xb4\x75\xaf\xf3\x6b\x1c\x63\x8e\xb4\xf3\xfd\x0d\xec\x59\x2f\xbb\x79\xbb\xfd\x15\x74\x56\x27\xad\x49\x68\xd3\xa9\x5d\xe1\xb5\x76\x29\x1a\x1a\xe2\xe5\x2d\xd8\x17\xf2\x2b\xc1\x01\xbf\x2d\xa0\xdf\x9f\x87\x0c\xdc\xda\x78\x57\x99\x24\xe8\xcf\x33\x57\xd8\x60\x21\x27\x0b\x19\x6f\x4b\x1c\x5d\x5c\x7c\x78\x7f\x72\xf1\xf4\xe4\xc3\xbb\xd3\xd3\x57\xe7\x17\xcf\x5f\x9d\x3e\x39\x7a\x75\xf1\xe2\xf4\xf4\xa7\x8b\x8b\xda\x91\x7c\x2d\x2d\x9a\x6c\x18\x61\x20\x85\x3b\x02\x59\x35\xa0\x8b\xd4\x54\xce\x40\xe2\x56\xb8\xaa\xb9\x6c\x06\x52\x72\x67\xdd\x1d\x81\xa1\x94\x99\xbb\xa5\xdc\x75\x02\x30\x4e\xaa\xde\x4d\xd0\x7a\xa1\x5e\xa4\x4b\x96\xcd\x25\xe5\x3b\x91\x31\x8c\x3b\xaf\xcb\x22\x93\xdb\xd7\x62\xbe\xc9\x28\x71\x0e\x45\xce\x50\x88\xda\x90\x59\xe6\x91\x74\x31\xf1\x72\x22\x11\x8e\xa5\xb3\xc4\xbe\x91\x64\xcb\xb5\x9c\xb6\x4e\x34\x1e\xdc\x55\x63\x94\xe5\xf8\x46\x46\x75\x86\xe8\x8a\xaa\x7d\x26\xb1\xdf\xdf\xe9\x53\xa3\x44\x09\xcb\xc6\x2e\x88\x92\xb9\x3d\x21\xe8\x82\x42\x35\x6c\xeb\x01\xd1\x2e\x28\xe9\x4a\xdc\xd0\xdd\xb2\x78\xeb\x2d\x72\x77\x2b\xd8\x29\x7e\x45\xd5\x7e\x59\x7f\x7e\xf9\x27\x65\x97\x49\x7e\x7f\x59\x1f\x9d\xa1\xae\x60\xa7\xf4\x66\x3d\x4f\xd4\x2e\x0f\x7c\x1f\xb4\x88\x6a\xbc\x80\x8a\x12\x53\x26\xf7\xbe\xa7\x8d\x32\xee\x0b\xa9\xf2\x60\x50\xd1\x6a\xa3\x92\xfb\x0a\x54\xdf\x48\x23\x9f\x2e\x64\x4f\xb1\xba\x8a\xb8\x2f\xa4\xca\x83\x77\xc6\xe6\x76\xcb\x3e\x74\xf4\xee\x6a\x01\xc5\xa8\xd1\xba\xca\x3e\x37\x35\x7f\x15\x3c\x55\x07\xab\x5a\xf7\xbe\xdd\x5b\xfd\x91\xa9\xf5\xab\xd5\x57\x30\xee\xa8\xde\x7d\xbb\xb7\xfa\xd7\x0e\x90\x5f\x6d\xa0\x31\x2b\x1d\x4d\x54\x5f\x4d\x23\xf7\x18\x79\xa1\x66\xe3\x70\x23\x5d\x20\x3f\x09\xab\x0e\xd0\xd9\xf3\x3c\x2a\xd1\x74\x06\xca\x9c\xb8\x8c\x57\x3b\x7b\xa1\x73\x29\x47\x92\xce\x37\x69\xcb\x33\xa0\x19\x6f\xb5\xda\x43\x88\xe2\xd2\x47\x9b\x12\x42\xf7\x7a\xb7\xfa\x37\x7e\x0d\x77\xa9\xed\x7d\xb9\xf1\xd7\xda\x6d\xd8\x3a\x0c\x10\xa2\xa4\xde\xc1\x48\x62\xdc\xd8\x24\x13\x39\x08\x0e\x83\x38\x08\x74\x9f\xf4\xdf\x76\x67\x3a\x76\x5f\x1d\x0e\x50\x79\xab\x6e\xe3\xc7\x6e\xb3\x6a\xbe\x93\x47\x2b\x33\x37\x79\x15\x84\x45\x18\x5b\xe6\x2a\xd9\xe8\x10\x65\xdd\x25\xe1\x45\xd6\xb1\x42\x95\x4d\xad\xc0\xd0\xca\x52\x57\x3b\x15\x33\x5c\x96\x66\x7a\x3c\x30\x60\x0f\x8c\x7e\x16\xef\x61\xd6\x4d\x58\x94\xda\x72\xc1\x98\x37\xf4\x87\xd8\xc7\x80\xa3\xb7\xbd\xa5\x34\x06\x22\x63\xe3\x50\xe4\x18\xe8\x49\xd5\x20\x11\x36\x6e\xc3\x15\x55\xc8\xdb\x17\x0d\xe1\x60\x84\x71\x85\xa3\x91\x9a\xaa\x2a\x1c\xc0\x0c\x04\x1e\x53\x3f\x02\xb3\x92\xab\xb7\xe6\x69\x1a\x08\xbc\xe5\xf5\x12\x54\x0d\x68\x50\x47\x3a\x77\x66\x88\x77\x8c\xb4\xb5\x58\xf6\xbb\x08\x92\xb4\xfb\xc6\xdb\x0b\x64\xcc\xc3\x90\x7b\xaa\x1a\x86\x2d\xea\x81\xe4\x6e\x0f\x58\x7e\xe6\x7a\x40\xe7\xff\xf9\x3e\xd4\xa1\x8f\x3c\xbd\xd0\x2d\x99\xf9\xb8\xba\x6f\x68\xf5\x04\x2a\x8d\x7e\xc9\xb6\xc4\xd0\xbf\x93\x61\x78\x3f\xe3\xe3\xed\xd7\xa2\x0f\x1b\x1a\x86\x3b\x7a\x6d\x5d\x54\x11\x42\xee\xbc\xc9\xff\xb8\xff\xbf\x0e\xff\xd2\xff\x5f\xff\xbf\xde\x5f\x7a\x37\x1b\xfa\xb9\x77\xf3\x5d\xf4\x7d\x34\x32\xef\x28\xc5\xd6\xa5\xed\xe4\x26\xe1\xbd\xdf\xc4\xc6\xa4\xfe\x43\x8f\x90\xe7\xb4\xf7\xfa\xe5\x3b\x9d\x70\xf8\xbf\x76\x9a\xb0\xcc\x38\x52\x5e\x61\xd6\xd0\x8a\x4d\x87\x33\xfc\x98\x3c\xc4\x2a\x5a\xb1\xcf\x8c\xa3\xed\x25\x5d\x08\x49\x8f\xad\xee\x5a\xcb\xc4\x95\x57\x97\x31\xb1\xac\x26\xe0\x82\x71\xa6\xc6\x7b\x29\x6d\xa0\xed\x43\x4a\x45\x26\x97\xfd\x99\x4c\xe5\xcc\xaf\x35\x9b\x82\x35\x9b\xdb\xd4\x55\x36\x43\x54\xca\x4a\x99\x6b\xa6\xf7\x81\x30\x47\x31\xf9\x58\x33\x51\x42\xba\xf0\x22\x0f\xcc\x73\x67\x3c\x36\x9f\xcd\xfe\x22\x1c\xbb\xa7\xd8\x9b\x8e\x86\xa1\x7f\x72\xd5\x78\xfa\xea\x2a\xdd\xf9\xaa\xf1\xc1\x9d\x24\x0a\x97\xa8\x9e\x5f\x5c\x71\x76\x6b\x23\x23\xed\x6d\xf8\xe9\xcc\x1f\xdd\xeb\xe6\x25\x4b\x55\x9d\x83\x9b\x90\xb9\xfd\x91\x67\x18\x53\xb1\x5a\x31\xa5\x18\xbf\xaa\x22\x56\x5d\x78\x26\xe2\x7e\x36\xd3\xe6\x38\xdf\x5c\x6a\x11\xfe\x52\x33\x03\x1e\x6b\x5d\xd4\x0c\xc5\xfd\xc5\x6f\x65\xb2\x5e\xd3\xf9\x73\xc7\x48\xdc\x9f\xd1\x61\x12\x83\xb8\x56\xd2\x9c\xbb\x35\xd3\x2b\x82\xf2\x3a\x59\x7f\xa5\x96\xbc\xab\x9f\xb7\x5a\x94\xa2\xf2\xc3\x6b\x53\xf9\x9d\xf4\x35\x27\xd7\xd4\xf8\x7c\xb8\xce\x1d\x27\xe9\x72\x37\x14\x5d\x1d\x3f\xc7\x06\xfe\x01\x17\xf9\xc9\x07\xb3\x82\x84\xf8\x50\x2c\x2b\xbd\x82\x9b\xdf\xba\xfd\xaa\x98\x8f\x09\x64\xdd\xd9\x1b\xa5\xef\x93\xe9\x92\x46\x09\x63\xfd\xe0\xf8\x7b\x3d\xdb\x84\x8f\xad\x87\x5d\x0b\x58\x06\xbf\x3b\x61\xe0\xd4\x32\x1c\x90\x42\x3d\x6f\x8d\x5c\x18\x2e\x7c\x06\x4d\xad\xf6\xa5\x1f\xd5\x8c\xb7\x6e\x0e\xf6\x50\x7d\x9c\x10\xcd\xe9\x8d\x12\x22\xcb\x27\xf5\x63\x7c\x27\x23\x2b\x44\x54\x49\xb8\x8d\xa7\x32\xe3\x6a\x1d\x5d\xb8\xcf\x2f\x84\xb8\x26\x99\x84\x4c\x46\x74\xa5\x31\x89\x46\x54\xb1\xde\xc0\x01\x28\xac\x93\x05\x77\x89\x4a\x26\x37\xd4\x59\x2e\x25\x8a\x06\x6d\x2b\x0e\xe5\xfd\x37\xce\xf5\x47\xd7\x5b\x15\x55\x6b\x62\x97\xaf\x69\x37\xe8\x57\x73\x60\x67\x06\xc3\x76\x2d\xe9\x9a\xf2\xb9\x91\x81\x9b\xf5\x58\x96\xf2\xeb\xb5\xd9\x6d\xd3\x5d\x17\x2e\x9d\xeb\x1e\x5c\x4a\xb2\x35\x23\xe9\x92\xbb\x2a\x54\x75\x2b\x77\xa5\x7c\xef\x8d\x85\x14\x7e\x34\xd4\x88\x20\x0c\x35\x3d\x33\x4d\x4c\x34\x45\xcd\x97\x6c\x61\x8e\x02\xa9\x37\xa4\xa8\xc3\xf0\x21\xaf\xb5\x6d\x56\x33\x96\x8f\x0f\x46\x9a\x50\x6a\x6c\x9e\x52\x24\x61\xd4\xc4\x96\x27\x4e\x58\x56\x7f\x82\x32\xfe\x14\x29\x7c\x1b\x46\xf8\xe6\x6d\xbf\x23\xf9\xea\xc5\x0e\xd2\xac\xf4\xf6\x32\x37\x36\x3a\x17\xf6\x6b\x33\x76\xeb\x85\xdc\x61\xaa\xa2\x8b\x9b\xd5\xb8\x12\x77\xc8\xb6\x34\x35\xfd\xab\x98\x62\x77\x94\xc0\xc8\xb6\x1c\xaf\x25\x12\x2d\x4e\x49\xe2\x2d\x9b\xca\x59\x37\xa2\xe8\x30\xb3\x35\x31\x81\xcc\xe9\x7b\xa7\x98\x70\x87\xaa\x8e\x83\xbc\xcf\xac\xce\x8c\x70\x2a\x67\x65\x5b\x03\x64\x1c\xd7\x5d\xa0\xb0\x7a\x03\xe7\x2c\xa3\x5c\x8d\x77\x13\x48\x7f\x08\xa6\x1e\x87\x50\xd1\x76\x9e\xa8\x24\xde\x3e\x78\x60\x17\x33\xb5\x01\xc0\x36\x8a\xce\x63\x56\x62\xd8\x2b\x9f\x80\x27\x57\x6d\xcc\x60\x2a\x8d\x1e\x18\x84\xdd\x65\x3a\x68\xf1\x97\x6e\x2c\x72\x6d\xb5\xe2\x59\x63\xcd\x14\x6c\xe7\x94\x1a\x6b\x88\xfc\x8e\xa7\x76\x64\xc6\x22\xca\x6e\x13\x3d\x35\x4c\x2d\x8f\x0d\xc6\x6d\xab\xe4\xdb\x15\x1b\x1f\x04\x8d\x40\xee\xa4\x09\xf6\xf5\x8e\xa5\xd7\x5d\x5d\xe2\xd1\x83\x39\xcd\x95\x14\x77\x26\x34\x67\x33\xea\xae\xf4\x37\x33\x40\x15\x36\xb0\xef\x7d\xe5\x34\xe1\xa8\x97\x68\x53\x62\x42\x36\xdc\x3e\x6f\x88\x38\x16\x5d\x76\x6c\x89\x69\x32\xbb\x67\xb3\x4c\x93\x19\xe1\x18\xfa\x2c\x0c\xfb\xc2\xbb\x61\x9f\x1b\x81\xa0\xcd\xc4\x6e\x88\x9c\xca\x06\x13\x7b\x3f\x80\xee\x64\x94\x53\x65\x2c\x96\xb9\xdd\x6f\x86\x99\xb7\x71\xd4\xb9\xf5\x57\xf9\xbc\x4f\xc5\xdc\x0d\x11\x26\x72\x25\x08\xb2\xf5\xe4\x31\xe6\x9a\x68\xf8\x97\x5d\x1b\x74\x0b\xae\x4f\xd2\xbd\x9b\xe0\x8a\xeb\xe4\x2e\x13\xc9\x1c\x52\xc2\x22\xc7\xae\xc1\x86\x30\xe3\x1b\x5f\xdd\xc6\x10\x86\xa9\xd9\xf1\x45\x81\x36\x84\x0e\x36\x1a\x9b\xf8\x56\xd0\x06\x5c\x70\xba\x15\x53\xa6\x7d\xf7\xf8\x5f\x6e\xbd\xb3\x59\x5b\xb9\x6e\x14\x52\x5c\x56\xc6\x53\xf7\x49\xf8\xc2\x6c\x59\xbd\x7b\x63\xb3\x77\xf9\xa4\x6b\xf7\xba\x2c\x65\xc7\xd6\xde\x3b\x4d\xed\xdf\x87\xbb\xa6\x74\xe6\x89\xc0\xb6\x34\xb2\x93\xf3\x08\x6a\x29\x43\x2b\xa5\x4f\x07\x5b\x20\x4c\x03\xa2\x5a\x4b\x1c\x1b\xb7\x07\x1f\xc2\xd0\xa5\x73\x3c\xee\x46\x54\x12\xd8\xfd\x08\xca\x35\x3b\x15\x1d\x48\xca\x92\xf4\x7b\x47\x45\xaa\xd8\xb0\x5f\xc9\x54\xda\x78\x39\x25\x38\xd2\xdb\xdd\x8f\x73\x2d\xe3\x98\x1c\xe6\x22\x88\x12\x83\x28\x8d\x1f\xab\x96\x2e\x77\xd5\x3f\x68\x07\xad\xf7\xdb\xbb\x00\xb8\x89\x5e\x52\x13\x47\xe3\x2a\xbf\x9b\xa2\xb9\x79\x17\x97\xa4\xc5\xd7\xd4\x91\xb2\x5d\x7f\xec\xc6\xd3\x9d\x19\x48\xa0\x90\x5b\x83\xc5\xb6\xc6\x6b\xb7\x47\x3e\xce\xae\x5e\xa4\x13\x19\xeb\x92\xc2\x5c\x6e\xc3\xe7\x19\x95\x45\x41\xc7\xf7\xf4\xd9\xd1\xfb\xaa\xc7\xf5\xfb\x7d\xfd\xf5\x2e\xf2\x55\xbf\x1b\x7b\xbe\xe6\x9c\xfd\x2e\x74\xdb\x04\xfc\xda\xe7\x15\x0d\xb3\xd3\xe3\x07\xad\x3b\xee\x26\x32\x6e\xd0\x39\x21\x94\x61\xf7\x62\x37\x59\x65\x6d\x7b\x8b\x04\x61\xb8\x2b\xc0\x55\x4f\x98\xa8\xcb\x45\x51\x07\x73\xae\xee\x50\x60\x76\x81\x35\x78\xd3\x89\x0b\x61\xba\x73\xb7\x85\x0b\x5b\xd9\xcc\xd9\x64\x00\xa9\x94\x42\x06\x36\x16\x09\xc6\x9a\x0c\x9a\x19\xe3\x20\x76\xe7\xcb\x0e\xea\x1b\x56\x90\xb9\xfd\x60\x87\xb3\xd0\x3b\xd9\x6b\x9e\x3a\xbe\x75\xa9\xf9\x24\xf2\x20\xad\x41\xed\x57\x7a\x43\xd1\x7b\xef\xfa\xb2\xaa\x8d\xe6\x15\x1b\x0c\x6f\x3d\xb1\xf3\x12\x38\xc3\xd6\x69\xa8\x49\x10\xcf\x65\x8b\xc1\xa1\x7f\xa2\x6e\xd4\x3b\xd5\x58\x5f\x56\x15\x7c\xda\x65\x84\xcd\xd1\x8b\x26\xea\xee\x86\x18\x49\x28\x50\xa2\x40\xf9\xe0\xa2\xce\x2c\x5f\x81\xc3\xde\x31\x05\x87\xbb\x63\x59\x96\x97\xd2\x0e\xbb\xfb\x50\xc3\x71\x1b\x37\xab\x1d\x8e\x03\xaa\x62\xf9\x8e\x1e\xb5\x84\xab\xa6\x5a\xe9\x1e\xb1\xae\x56\xdf\x81\x20\xd5\x90\x40\x63\x4d\xa3\xdc\x4d\x88\x68\x10\x1b\x3b\x00\x56\x0d\x20\x29\x61\x43\x76\xe4\xef\x29\x9b\x8d\x37\x95\xfa\xfe\x1e\xf2\xbd\xe9\x16\xee\x14\x4a\x7c\x0c\x91\x3d\x11\xda\x7b\x1d\xfe\x89\x58\x98\x36\xf9\x01\xbc\x03\x84\x7b\xa4\xe1\x3a\xa2\x28\x70\x07\x04\xeb\xa3\x6c\x40\xc0\x08\xaf\x40\x90\x38\x10\x88\x0a\x04\xac\x04\x2f\xf0\x7a\x64\x64\xaf\x33\x48\xad\x2f\xe5\x3d\x8a\x8b\x7a\x34\xc6\x2e\xe6\x9e\x98\xeb\x56\x65\x55\xe2\x3f\x19\xb4\xcb\x87\x12\x90\x0d\x5e\xa8\xed\x79\xbc\x21\x69\x6d\x64\xe2\xf1\x8c\xc6\x88\x69\xb4\x4a\xd6\xf7\x00\x93\x19\x20\xc6\xe9\x74\x38\x43\x75\x20\x79\xcd\x67\xbb\x1a\x76\xb7\xcb\x66\x37\x82\xbc\x0b\x2c\x26\xbb\x40\xf0\xd5\xa1\x9b\xb8\xb1\x7f\x3e\x72\x93\xed\xde\x81\x5b\x2d\x41\xdb\xbc\xf8\x3f\xd7\x1d\x83\x41\xbb\xbb\xd3\x44\x22\x26\x5b\xdd\x1d\x6b\xff\xdd\xe8\x10\xb5\xf6\xc8\xa5\x71\x97\x6d\x2d\xcd\x6a\xa5\x77\x0b\x60\x46\xec\xde\xdb\x13\x46\x6b\xd3\x5d\xcd\xde\x51\x53\xbb\xb2\xce\x40\x3c\x4e\x45\x1a\xab\x32\x56\xf7\x69\xdc\xf6\x9b\xbc\xdd\xdb\x51\x3b\xe7\x02\x2d\x0c\x56\xe9\xbf\xbe\x26\x59\xed\x13\x05\x3d\x8d\x56\xe1\x74\xd5\x3e\x96\xa8\x75\x2c\xf7\x69\xb5\xbf\x8a\x88\xe8\x3e\x4e\x25\xaa\xdc\x43\x1c\xfe\x50\xc0\x1d\x72\xef\x0d\xb6\xad\x08\xd5\x92\xdf\x5e\x3c\x27\xab\x29\x9e\xaa\x19\xde\xd5\x7c\x55\xa7\x13\x1a\xed\x78\x15\x59\x7d\x6e\x0e\x6a\xa7\x80\xd1\xfe\x63\x30\x4a\x96\x9c\xca\x1b\x3b\xfc\x5a\x79\x56\x17\xdd\x1d\x46\x7d\xba\xb1\x37\x90\x16\xc8\xbe\xbd\xf3\x75\x8d\xb5\x96\xf4\x1e\x50\xbb\x10\x2a\x12\xd1\x8a\xbe\x37\x85\x3f\x2d\xd8\xdb\xe3\x73\x24\xa1\x75\x96\x61\xe8\xc1\x89\xf4\x7a\xaa\xab\x9d\xd3\xf0\x8e\xa1\x78\x87\xb5\x6f\x1d\x45\xf3\xcc\xc5\xc4\xcc\x68\xb7\x21\xd4\xfb\xfb\x8e\xcd\x2b\x38\xd8\xe3\x3a\x55\x75\xd4\x04\x98\x6f\xd7\xd3\x00\xcc\x7d\x07\x3b\x0d\xbd\xf8\x78\x5f\x51\x3e\x04\x85\x3a\x14\xe8\xf4\xfe\x83\xda\x66\xfb\x70\xe9\x0e\x6a\x3f\x4b\xf2\x56\xee\x62\x6e\x2f\x80\xf9\xdd\xfa\x4e\x22\x7a\x0f\xb6\xf3\xdc\xfb\x35\xbd\x33\x6c\xfb\x4d\x92\x8d\x05\x51\x03\x01\x72\xca\x67\x3b\xce\x49\x7d\x55\x14\x47\xb2\x79\xd8\x00\xc1\x2a\x59\x3b\xae\x30\x68\xd8\xd7\x36\xb2\xb4\xa4\x2e\x5d\x69\xa4\xd9\x58\x62\xf4\x95\xa0\xd1\x30\x1c\xff\x37\x8c\x61\xb7\xf7\x75\x54\xf2\xe9\x0c\xe4\x9e\x7b\x94\x8d\x58\x61\x9c\x3b\x6a\xa3\x4d\x39\x1b\x37\x42\xf8\xbb\xd1\x78\xb6\x63\x5c\x5f\x7b\xc4\x48\x07\x50\x2c\xce\x36\x40\xb1\x97\x1a\x79\x6e\x9a\x9b\xdb\x1c\x8c\x4a\xa3\xaa\xcc\xc9\x96\x5d\x02\xc5\x44\x38\x43\x77\xb3\x10\x35\xf8\x1c\x23\x4c\x31\x8e\x79\xe3\x9b\x6f\x7c\x2a\x9a\x59\x4a\x0f\xe5\x5a\xeb\xfb\x4e\x76\x45\x21\xab\x93\x5a\x31\x69\x90\xc2\x45\x61\xb8\xe1\x12\x29\x3c\xd9\xfd\x36\x51\xf7\x71\x1c\xdb\x6b\x7a\x17\x2b\xb8\x49\xb2\x58\xe9\x4e\xc4\x3b\xe6\x50\xed\x62\xb4\x55\x8c\xda\x62\x9a\x4f\xd7\x25\xa7\xb3\x9a\x53\x7f\xdb\xd9\xf9\x06\xeb\xbe\x1f\xbd\x6f\xe2\xb8\xf7\x20\xc0\x71\x70\x68\x2f\x1f\x73\x17\x9d\xd0\x0a\x31\xe1\x30\x44\x74\x40\x82\xc3\x00\x83\x72\x57\x34\x56\x8d\x1e\xed\x8a\x07\xf7\xa8\xc6\x64\xa3\xa3\x6f\x1a\x4a\x3a\x1f\x87\x09\x72\xbc\x0d\x2e\xad\x95\x7b\xdd\xc1\xc4\xc4\x00\x4c\x21\x25\x09\x24\xa4\x3f\xc2\x63\x63\x3f\xdf\x5b\x74\x1d\x0f\xca\x89\x8c\x2a\x41\x63\x9c\x51\xd5\xcb\x5c\x78\x37\x15\x49\xca\xe7\x54\x53\xad\x85\x7b\x24\x3e\x0d\x16\x06\x4d\xb3\xf4\xcc\xbc\x3e\x33\xa6\x3a\x3b\x29\xb0\x30\x88\x68\xcd\x32\x3a\xd7\xe8\x49\x98\x8a\x7c\x0f\x92\x8c\xf4\x87\xd8\x6a\x3b\x17\xd1\x45\x9e\x8a\x35\x7d\x39\x27\x1c\x03\x9b\xa0\xac\x85\x02\x91\x22\xaa\x28\xec\x92\xbc\xe1\x62\x4e\xdd\xbd\x14\xf6\x25\xca\x73\x79\x6c\x97\xbf\xcb\x54\x9d\x6a\xd6\x2f\xed\x82\xad\xb4\x46\x79\x5c\x14\x8d\xd3\xec\x0a\x44\xd6\x4a\xef\xfc\xfc\xec\xe2\xf8\xf4\xcd\xbb\x93\x5f\xdf\x5d\x5c\x14\x05\x52\xa4\x23\x1d\x83\x39\xc3\xaf\x4f\x72\x37\xe6\x40\xc3\x40\xf3\x42\x56\x64\xe4\x58\xac\xd6\x82\x6b\x9c\x70\xef\x87\x28\x99\xcf\x35\x8b\xad\xa1\x98\xe7\xd2\x93\x20\x92\xe1\x58\xcb\x8f\x59\x2b\xda\xaf\x66\x55\xea\x36\x73\xcf\x0d\x3e\x30\xa7\x6b\xfe\xc0\x38\xca\x97\xc9\x5c\xdc\x9e\x09\xa1\xda\x31\x80\xdb\xa5\x53\xeb\xf4\x03\x19\x66\x8b\xd6\x7c\x61\x7b\x3f\x51\x4f\x11\xbf\x1c\xc6\xd5\xba\xe8\xda\x38\x3e\x60\xbb\xac\x37\x80\x39\x54\xaf\x6b\x69\x1e\xba\x8f\xdb\xaf\x44\x4d\xa6\xf5\x21\x39\x64\x38\x9e\x66\xb3\xea\x36\xa5\xd2\xd6\xf1\xca\x59\x04\xc6\xc1\x51\x9a\x8a\x0d\x57\xf9\x2b\x96\x2b\x63\xfd\xbe\xce\xe3\x6d\xe2\x12\x63\x2b\x96\x19\x14\x03\x3e\xce\xa8\x39\xb9\xb2\x36\x0f\xd7\x92\xec\x70\x22\xf6\xa8\x5d\x0b\xe8\xd1\x83\x56\x14\x6e\xd0\x5b\xe0\x22\xa7\x99\x5e\xdb\x45\x51\x29\x73\xa5\x0d\xb0\x0d\x53\x89\x02\x91\x1e\x28\xeb\x0d\xb9\x4d\x94\x92\x79\xbc\x5d\xb1\xf9\x3c\xa3\x71\x10\xc0\x9c\xdd\xb0\x39\x95\x71\x10\x94\x65\x2b\xf3\xc1\x95\x14\x9b\x75\xbb\x82\x03\x73\x53\x50\x2b\x25\xa5\x59\x56\xd7\x9b\x2f\x25\xe3\xd7\xba\x5e\xeb\xd2\xbf\xa4\xc9\x3c\x28\xcd\x11\xe0\xc5\x0d\x0a\x7a\x01\x86\xfb\x0b\x37\x8b\xc0\x5c\xac\xde\x5a\xa0\xe9\x7d\x70\x6c\x03\x3a\xc5\x7a\xa8\x48\x45\x0f\x0c\xc1\xfd\xac\x50\xf0\x3e\xa7\xd2\x06\x2d\xc5\xff\x9d\xcd\x3c\xb5\x21\xa9\x7a\xff\x03\x4d\x9d\xac\x12\x96\xfd\x0b\x6d\x74\x83\xfc\x9b\xe1\xc7\xe6\x3d\x6e\xac\x52\xfe\xc7\x9a\x7c\xfe\x3f\xdf\xe4\x09\xd7\x55\xce\x6d\x7b\x33\x18\x99\xff\xf7\xb4\xeb\x96\xbd\x8a\x2e\x32\xa4\x22\xbf\x63\xa1\x4b\x80\xde\xdb\x19\x86\xb4\x07\xae\xcc\x41\xc6\x72\xa5\xd3\x0f\x82\x01\x8d\xd8\xbc\xec\xda\x38\x2e\x29\xb9\x49\x54\x22\xeb\xe1\x6e\x72\x2a\xed\xcd\x2a\xbb\x17\x10\xae\x25\x5d\x50\x29\xe9\x5c\x27\xc0\x2d\x9b\xab\x65\xfc\xdd\xf7\x6e\x58\x5f\x07\xe5\x57\x80\xb5\x53\xef\x9f\x4f\xcb\x57\xeb\x6a\x75\x39\x38\x08\xfe\x8b\xd5\xe9\x0d\xf1\x5f\xac\x62\xc3\xe6\xd6\xf6\xea\xff\x46\x7f\xae\xfe\xc5\xca\x2c\x17\x72\x9c\x25\x79\x1e\x07\x9b\xeb\x03\x5d\xe5\x41\x4a\xb9\xa2\x32\x28\x61\x4a\xfd\x22\x73\xab\x74\x62\xab\x60\xa9\x71\x8d\x77\x0b\xc2\x12\x15\x73\xa5\x7b\x00\x37\x89\x64\xd6\x19\x26\xc8\x37\x26\x48\x7f\x00\x81\x4e\x3b\xc8\x92\x4b\x9a\x05\x71\x73\xed\x3b\x42\xd4\x63\x79\x8f\xfa\x6d\x50\x96\x38\xbe\xbf\x95\x39\x5d\x4b\x9a\x26\xe6\xa6\xf0\x46\x53\xf3\x84\x5f\x51\xf9\x6d\x2d\xcd\x59\x5e\x37\xe5\x37\x9c\xe6\xd3\x47\xf5\xdb\xf8\x5a\x5a\x19\xf3\x5c\x49\xb6\x5e\x1b\x96\xac\x66\xe1\xcf\x64\x53\x48\x6a\x73\xd6\x9a\x1d\xfc\x5a\x5c\x4b\x2f\x2f\x7d\x2d\x8f\xae\xc6\x5e\x8c\xce\xf7\x55\x69\x74\xf7\x36\xcf\xfb\x7c\xb2\x4c\x1f\x9b\x17\xd2\x60\x6c\x34\x1d\x9b\x7c\xe9\xe4\x16\x13\x34\xac\xe2\x12\xaa\xe1\xbd\x96\xed\x8b\xa4\x46\x63\xfa\x68\x4f\x62\xa3\x3e\x26\xac\x24\xd6\x37\xa2\x16\xdc\xe8\x6c\xd2\x7c\x89\xb7\xe5\x98\xfe\xfb\xc3\xc9\x99\xf4\x7e\xd2\x12\x6b\x91\xbe\x5b\x9a\xcc\x65\x2b\x40\x4b\x77\xc0\xdc\x86\xe3\xd9\x7d\xd1\x33\x91\x82\x3f\x2b\x8a\x24\xc6\x71\xb3\x57\xf7\x74\xe9\x7e\xaf\x9b\x3f\x9b\x01\x09\x14\x37\x6f\xd7\x56\x8e\x15\x7b\x50\xb3\x62\xeb\x75\x60\x8c\x2a\x2c\x1f\x1b\x6f\x9b\xbc\x59\xfc\x46\xa2\xad\xe5\x19\xe3\x6b\x09\x3b\x12\x83\x16\xcc\x5c\x68\x3a\x78\x25\xfd\x53\x7f\xb4\xff\xd4\xfa\xc1\x0d\x23\x8e\xd7\x12\xbd\x96\x68\x5b\xc2\x67\x59\x6d\x91\x3c\x80\x69\xc0\xf2\x97\x9c\x29\x96\x64\xec\x8b\xde\x69\xc1\x15\x55\xfe\xf3\xb9\xbd\x68\x63\x86\x31\x6c\x4b\xa8\xd9\xc6\x7b\xce\x59\xf6\x4a\x6a\x94\x64\xef\xf1\xc9\x63\xdb\xf8\xf1\x6e\xe3\x55\xd3\xa6\x15\xcb\x52\xce\xf7\xae\xb5\xac\xb3\x21\xec\x78\xd3\xa7\xf7\xf0\xa6\xbb\x7c\x29\xad\xee\xfd\x74\xac\x69\x65\xb3\x4e\x3d\x6b\xea\x1f\xf6\x30\x64\x2a\xb8\x4a\x18\xa7\xb2\xb7\xb9\x3e\x58\x27\xf3\xb9\x16\x77\x4b\x53\x60\x39\x0a\x60\xea\x4e\x97\x50\xf0\x91\xf7\xcc\x3f\x3f\x34\xfb\x1e\xe0\x4a\x65\xe6\xb0\xb2\x1d\x4c\x13\xe0\x13\x5d\x99\x07\xac\x21\xd5\x35\x1a\xac\xe0\x6d\x8a\xf9\x37\x8d\xc9\x62\x6a\xb0\x66\x26\x92\xb9\x66\x5f\x66\xf0\x10\xcf\x70\x39\x7e\xda\x81\xc9\xec\x2a\x7c\x29\x49\x63\x81\x3d\xfd\xea\x02\x7b\xf0\x2f\x2c\x30\x33\x15\xcf\xa4\x09\x6f\xf6\x5e\x7e\x3d\xf8\x7a\x23\x0e\xb5\x71\x15\x35\xa7\x45\x67\xc6\x49\x94\x11\xe1\x8d\x6a\x52\x32\x84\x0d\x99\xce\xc6\xec\x71\x3a\xc6\x92\x08\xe3\x18\x0a\x49\x18\xf6\x9f\x79\x27\x64\x13\x4d\x7c\xe3\xcc\xe2\x26\x53\x09\x7c\x2a\x67\xb3\x98\x37\x83\xdf\x6e\xca\x12\x9e\x48\xb2\xa5\xf6\xa6\xbb\xf8\xbd\x34\x31\xd1\xed\xfd\xb2\xe6\x6d\x84\x4b\x77\xdd\xec\xd7\x3c\x62\x4b\xe7\x6f\xd7\xe9\x41\xfa\xc4\xa8\x6b\x9c\x4f\xee\x73\x49\x64\x4d\x38\xbe\xec\x68\x25\xec\x11\x8a\xb3\xf4\x9c\xb2\x19\x4a\x30\x6c\x88\x0b\xd8\xbc\x17\x2e\xd4\x80\xd7\x54\x9e\xda\x2b\x84\x29\xda\xe0\x78\xf7\xa0\x7b\xe3\xae\x1e\x36\xc7\xb4\xba\xea\x3f\xbe\x3e\x05\x4d\xa5\x69\x53\x35\xf7\xf5\x23\xaa\x86\x39\x4d\x1d\x25\x52\x36\xd4\x5c\x89\x6e\xeb\x8b\x44\xcc\x8c\x35\x81\x14\xfc\x75\x93\x8d\x83\xdf\x74\x3f\x93\xbb\xf1\x55\xe1\x32\x41\x1e\x61\x99\x23\x9e\x0f\x92\x4c\x67\xe6\x82\x07\x78\x21\xc9\xd2\x5f\xde\x04\xbf\x5a\x67\x72\xfd\x21\x80\x00\xbe\xcd\x9b\xfe\x85\x2c\x8a\xfe\xaf\xb2\x84\xad\x2e\xd7\x35\x8b\x1f\xdc\xba\xb2\xda\xbd\x46\x0c\x50\x35\x09\x20\x88\xeb\x19\xfe\x49\x92\x54\xf3\x81\x6b\xf8\x59\x1a\x2f\xff\x55\xb2\x0e\x30\xfc\x68\x5d\xda\xcd\xcb\x37\xf9\xf7\xff\xac\xbb\xf4\xa3\xee\xd2\x2a\x59\x77\xf5\xe8\x27\xf9\x9f\x74\xee\xff\xc5\x28\x72\x7f\x91\xd3\xbd\x50\xad\x33\x12\x7c\x09\x6c\x00\x00\x49\xaa\xc0\xb6\x5f\x66\x01\x21\x3e\x50\xcf\x2f\x12\xc3\xef\xb2\x2b\xca\x2b\x27\xc1\x91\x6f\xd5\x44\xc8\xde\xa7\x00\x55\xaf\x4a\x84\x31\x50\x4e\x7e\x93\x93\xf5\x7e\x50\x20\xbd\x21\xc6\xbb\x41\x6f\xd4\x24\x78\x5f\x69\x97\x62\x17\xf5\x53\x4d\x82\x37\x9b\x2c\x0b\xe2\xdd\x03\x09\xb4\xe7\x7e\x59\x07\xdf\x35\x9a\xcc\xfa\xe0\xb0\x44\xde\xc6\x13\x29\x3d\x36\x8c\x27\x32\x56\x7c\xb2\x46\x14\x57\x3b\x9d\x10\xc4\x89\x4e\xe9\x36\x34\xb1\x2a\x20\x4a\x27\x0d\x10\xc4\xbc\x04\x69\x86\xd8\x08\x58\xbc\x4f\x16\x2b\x30\x07\x03\xca\xed\xe2\x1a\x04\xb3\xa0\x1c\xff\x26\x8b\x82\x2a\xb4\x17\x64\xb2\x11\x58\x4b\xf2\x56\xc0\x28\xab\x1f\xe7\x44\x44\x6e\x83\x82\xe0\x3b\xa1\x44\x12\x6e\x5c\xed\x6d\xb2\x0f\x7d\x1e\x60\xd8\x70\x17\xfc\xbc\x6e\x27\xdf\xcb\xb4\xe0\x64\xdf\x5a\xa5\x01\x58\x3e\xa1\xe8\x18\x49\x3c\x1d\xce\x40\x4e\x47\x33\x1c\x53\x54\xb9\x38\x57\x97\x81\xaa\xc8\x1b\xb2\x18\xd3\x9a\xca\xca\x5c\x84\xe1\x31\x12\xd5\xf5\x73\x60\x2e\x36\xe4\xdd\x17\xd8\xec\xcc\xad\x3d\x95\x13\x86\x9c\x39\xed\x9d\xbd\xf1\x93\xd0\xf2\x9e\x7b\x6b\xea\x4b\xdf\x13\xd9\x73\xea\x60\x58\x80\x09\xcb\x0a\x4b\x22\xa9\xb5\x09\x9c\x3c\x8c\x47\xf6\xfa\x66\x9c\x10\x35\xf6\xd7\x1a\x77\xc4\xae\x4d\xbb\x2e\x30\xec\x37\xae\x72\x9d\xe6\x7c\x56\x14\x6a\x1a\xfc\xe3\x1f\x15\x4c\x67\x45\x91\xf0\xa9\x9e\x77\x3c\x2b\xcd\xa5\x7b\x7b\xe1\xe5\x6c\x14\x7f\x1f\xae\xca\x94\xbc\xcc\xa8\x0d\x57\x55\x87\x48\x98\x93\x14\x87\x21\x4a\x78\x64\xa6\x91\x10\x32\x2f\x8a\x0d\x9f\xa6\x7c\xa6\x9f\xb1\xa5\xab\x1b\x32\x84\x9c\xe4\x0a\xf9\x23\x40\x3c\xce\x1f\x6f\xc6\x1b\x17\x32\x76\x41\xc4\x64\x89\x8e\xd1\x9a\xa8\xe9\x66\x66\xa6\x71\x6d\xa6\x71\x89\x4c\x02\x0e\xc3\x45\x33\x1a\x5e\x15\xfe\x78\xd1\x24\x0e\xd4\x50\xcd\x84\xa4\xd5\xe5\x61\xba\xe9\x8c\xd8\x8b\xed\xc7\x7d\xb4\x26\x4e\xb7\x99\x60\x6c\x08\x97\xb9\xfc\x64\xd7\x8f\x1a\x2d\xc8\x82\xa3\x04\x96\xb0\xb6\xf4\x0f\x84\xe9\xc0\xbf\xd0\x07\x6c\x16\x45\x17\xb5\x73\x79\x86\xc6\x57\x08\x63\x58\xef\xad\xf5\x39\x27\xfd\xd1\xd8\x93\xe3\x25\x27\x43\xb8\xe1\x64\xab\x87\xb0\xbf\x87\xb7\x7a\x14\x71\xbf\xbf\xe4\x83\x41\x59\x82\x4d\x6c\x66\xd3\xb5\x19\x1f\x6b\x3e\x5d\xf3\xfb\xef\xee\xb7\x5b\x70\x21\xc5\x0a\xdd\xf0\x96\xc1\xb3\x5d\x16\x0f\xf7\x8d\x4f\xee\x38\xac\x38\x5c\x71\xb8\xdc\xdd\xea\xb7\x9c\x1c\x22\xb6\x5e\x0a\x4e\x0b\xb6\x16\xf3\x82\xad\x93\x39\x8e\xfe\xa2\xa9\x33\xbd\xa5\x97\xd7\x4c\x1d\x32\x7b\x11\xdb\x4b\x8a\xe1\x44\xe3\x8d\x4c\xa4\x46\x82\x86\x0b\xfd\x96\x53\xf5\x72\xb5\xa2\x73\x96\x28\x0a\xa7\x3a\x25\xcd\x68\x22\xeb\xb4\x73\xde\x08\xb1\xf4\x49\xbf\xbc\xa6\x79\x9e\x5c\xd1\xe3\x65\xc2\x39\xcd\xe0\xb3\x4e\x7b\xea\x4d\x01\x8f\x35\x14\xdf\x19\x0c\xf4\x96\xef\x6e\x97\x77\x7c\xe7\x9a\x48\xbd\x1d\xdc\x76\x7f\xc7\xa7\x6a\x36\x76\x1e\xe0\xe6\x05\x0c\x93\x0f\x47\x9d\xd7\xe6\x36\xe0\xf6\x96\x1b\xe6\x0b\xde\xb4\x33\xea\x64\x73\xc1\x07\x2e\xe1\x55\xfb\x93\x88\xd6\x22\x57\x6e\x1c\x48\x0d\x82\x00\x4e\xdc\xad\x4e\xa9\xc8\x06\xc1\xe1\x61\x30\x38\xe1\xd1\x52\xe4\x0a\x97\xe3\x0b\x1e\x86\xa7\xbc\x28\xd0\x45\xbb\x96\x9d\x03\xce\x8e\xa0\x5e\x72\x8c\xe9\x6e\x50\x2f\x69\x82\x7a\xf9\x23\x56\x3e\x1d\x0c\x8e\xdb\xab\xa5\xdb\xb8\x44\xc5\xcf\xea\xa6\xb1\x63\xbf\x7c\xd4\x48\x5c\xc2\x1d\x47\xc7\x1c\xc3\x31\x2f\xf5\x2c\x36\xbb\xd9\x04\x69\x69\xc2\x12\x1a\x0d\x8d\xa6\xde\xe7\x1c\x4f\xee\xda\xb9\xcf\x79\x6d\x22\x7f\x64\xda\x2a\xe3\xcf\x3c\x0c\x3f\xf3\x88\x8b\xdb\xdd\xdc\x36\xb5\xca\xf8\x89\x87\x61\xff\x96\x4f\xd0\x15\x27\x68\xc5\x8d\x4b\xc1\x27\x8e\x23\x8d\x99\x1f\xc2\x8a\x9b\x87\x51\x24\xf8\xca\x82\x9e\xbc\xe1\x70\xc7\x35\x22\xbe\xe2\xcd\x29\xd1\x6b\x7d\x84\x71\xdc\x17\x51\x32\x9f\x9f\xdc\x50\x1b\x11\x84\x72\xa3\xe3\xda\xc3\xcb\xbd\x46\xd1\xa2\x10\x11\x5b\xe9\x76\xce\x8d\x44\x9e\x17\x05\x43\xaf\x38\xd6\xe5\x58\x46\x63\xcd\xe6\x34\xe6\x5a\x0f\x28\x10\xdc\x28\xb2\x8c\x59\x45\xba\x4c\xf8\x95\xb9\x44\xf2\x14\x05\x56\xa8\x0f\xda\x21\xfe\x77\xee\x7f\x68\x64\xc3\xd1\x7e\x4d\xcd\x99\x7d\xa0\x5a\xbe\xab\x96\xc9\x74\xab\xb7\xc5\x21\xe5\x54\xbd\x63\x2b\x2a\x36\xca\x82\x16\x86\xb8\x8c\xd1\x1d\x27\xaf\x38\xec\x83\x04\x05\x0e\x9c\x01\xbc\xe1\xd0\x1f\x61\xe7\xfd\x71\xcd\xe1\x8c\xc3\x6b\x0e\x0f\x38\x3c\xe5\xf0\x92\xc3\x33\x0e\xef\x39\x3c\xe1\xf6\x16\xbc\x0b\x0e\x66\xaf\xc7\xa7\xbc\x84\xe7\xdc\x44\xeb\xf9\xc2\xc9\x13\x6e\xa2\x62\xff\x61\xb6\xba\x33\x4b\x3c\xbd\x34\x96\x32\x52\x43\xf7\x17\x7a\xf9\x13\x53\xbb\x5f\xe0\x43\x13\x4f\xbc\x68\x32\x28\xbf\x72\xd2\x5a\x75\x1f\x38\x86\x9f\x38\x79\xce\x91\x80\xe0\x8f\x0d\xdd\xd0\xd7\x2c\x95\x42\x25\xf9\x75\x80\xe1\x67\x4e\x7e\xe2\x61\xf8\x13\xb7\x14\x61\xfc\xb3\xde\x79\xd7\x7c\x4f\xc8\x07\x6a\x42\xf5\xfc\xca\x8d\x55\xca\x07\xee\x2e\x14\x31\x26\xa4\xf4\x33\x53\x08\x8f\xcf\xf8\x18\x6f\x29\x39\xe3\xd1\x42\x83\x42\x3f\x18\xf2\xa4\x31\x3e\x6d\x5e\x51\x6d\x31\xef\x19\x9f\x3c\xe0\x08\xc7\xaf\xb9\x8b\x28\x0f\xaa\x2c\x1b\x2f\xa6\x66\xae\xa8\x44\xb8\x84\x5f\x75\xe6\x66\xa7\x3e\x34\x36\xce\x35\xc7\x65\xfc\x87\xdf\x0c\x4f\x35\x61\x80\x97\xbc\xbe\xfb\xc4\x6a\x26\xde\xd1\xcf\xea\x8d\x98\x53\x14\x04\x26\x76\x7d\xef\x0f\xae\x4b\x46\xc2\x82\x14\xbd\xe4\xb0\x4d\x97\x89\x4c\x52\x45\xe5\xd3\x44\x25\xd6\x7b\xad\xdd\xec\x4b\x6e\x2f\x31\xd2\x8d\x3c\xe5\x25\x8e\x5f\xf0\x30\x7c\xc1\xbd\x68\x38\x41\xcf\x38\xa9\x5f\xbd\x78\x05\xef\x39\x79\xc6\x8d\xd0\xb8\x53\xdf\x7b\x17\x11\xf0\x19\x07\x3d\x0a\x1c\xb7\x3f\x7f\xe1\xde\x83\xd1\x7c\x35\xeb\xec\x47\x0e\xbf\x70\xf8\x8d\xc3\xef\x1c\x94\x20\x7a\xc2\xf6\xb9\xb9\xed\x82\xc7\xca\x5c\xcb\xee\xaf\xab\x1b\xbf\xd6\x53\xf7\x9a\x57\xf7\xef\x9f\xe9\x99\x3e\xe3\x84\x82\x9e\x06\x0c\xaf\x39\xa1\x25\x50\xb1\x6f\xed\x03\xd2\x9a\xf7\xac\xed\x0a\x33\x78\x46\xb5\xcc\x59\xac\x89\x75\x7d\x73\x68\x23\x70\x62\xc7\xcd\xb2\x4f\x92\xb9\x97\x77\x77\x42\xfb\x52\x73\x1b\x00\xaf\x4c\x6a\x1d\x1c\x09\xa5\x88\x56\x49\x9a\xa7\xd1\x29\x12\x97\x20\xc5\x3d\xf7\x88\x18\x76\x44\x58\x4a\xc5\xc5\x7e\xb8\x3c\x73\x85\xca\x0a\x51\x13\xf8\xae\x19\xce\x8f\xd4\xfc\x25\x75\x3e\x72\x52\x44\x8b\xfa\x22\x3a\x34\x04\xe9\x3b\x86\x75\xb7\xa4\x07\x4c\x09\xa2\x0d\xbd\x9a\x91\xdf\x1a\x5b\xcb\xb8\x3f\x72\x37\x6e\x28\x4d\x6b\x77\xb4\x0f\x3e\x8f\xbf\x95\x43\x95\x65\x09\x4c\x78\x0c\x91\x88\x1d\x6e\x24\x15\x24\x70\x60\x0c\x60\x23\xfc\x15\x94\xb9\xf0\x91\xf6\x17\xa2\x1d\x69\x3f\x15\x18\x32\x41\x38\x87\xb5\x20\x22\xaa\x66\x04\x96\xa2\x79\x35\xf4\x8d\x68\xa0\x96\x3b\x61\xa2\x42\x2e\xa8\x32\x51\xe3\x56\xc2\x40\x03\xae\x04\x59\x09\xb8\x14\x6d\x54\x73\x23\x30\xdc\x0a\xd2\xef\xa3\xa5\x08\xc3\xa5\xf0\x37\x46\xdf\x18\xf3\x07\x51\x59\x03\x99\x04\x0c\x27\x82\x1c\x2b\x94\x0a\xd8\x89\x19\xd8\x47\x4f\x51\x26\x70\xbf\x92\x90\x33\x81\xb1\xf9\xf2\xc3\x0f\x84\x90\xe7\xb4\x8e\x27\xa8\x73\x5f\x8a\xa6\x00\x59\x51\x29\x07\x9a\x33\xb3\x5e\x98\xe0\xb6\x51\x5f\xb2\x64\x0b\x64\xc3\x3d\x76\xde\xa3\x9b\x55\x61\x29\xfa\x23\x17\xb4\x30\x13\xd5\xb6\x1e\x61\xd8\x31\xaf\x43\x3b\xae\x74\xed\xd7\x2a\xfc\x33\x52\x7b\xa1\x23\x13\x31\x23\x14\xfa\x48\xed\x1a\x23\x9b\x82\x2d\xb6\x5c\x6f\x8b\x0b\x41\x4e\x44\x51\xf4\xf7\x16\x74\x9f\x86\x61\x7f\xce\xdb\xbd\x96\x4d\x8e\x5b\x73\x89\xe3\x7b\xb8\xe5\xaf\x72\xe1\xd2\x70\xda\x65\x09\x0a\xf1\x26\xb3\x5c\x9d\x6b\xb4\xe5\xc9\x4c\x44\xee\x5e\xfc\x5d\xe7\x0f\x0b\x0b\x8c\xe1\xb4\x03\xcb\x54\x61\xdf\xcd\x45\xda\x5d\x8c\x07\xa2\xc4\x42\x49\x4b\x2d\xb4\x84\x73\xd1\x75\xa1\x4c\x9f\x46\x5c\x28\xb6\x60\x74\x8e\xb7\xf5\xb3\x0f\x76\x6a\x3c\x79\xa8\xb3\x7e\x1f\x2b\xd1\xea\x5e\x15\xb3\x84\xb8\xd8\xa9\xc0\xc8\x88\x10\x6f\x03\x9a\x90\xe1\xd8\xdf\x05\xf6\x38\x19\x3b\xe7\x40\x2b\xe7\x12\x3e\x4d\x06\x83\x19\x64\x84\x4d\x16\x91\xb8\x8e\x17\xd1\x22\x61\x19\xac\x8d\x75\x8a\x59\x37\x30\x37\xcf\x46\xa7\xb6\x24\x0b\x47\x42\xcd\xfc\x64\x13\xc4\x8a\x02\x3d\x24\xc4\x74\xcf\x2d\xd9\x30\x7c\x27\xac\xa1\x6d\x23\x91\x8c\x30\xf4\x87\x84\x90\x6c\x92\x12\x11\xa3\x65\x18\x2e\x3d\xa1\x84\x94\x64\x48\x60\x58\x86\x21\x5a\x3a\xba\x0c\xb9\x35\x6c\x4a\x09\x21\x0b\x8f\xaa\x26\x73\xb4\x16\xc8\xa3\x8f\x83\x74\x99\x30\xde\x4b\xef\x52\x2d\x06\xe3\x18\x6d\xc8\xa9\x40\x29\xc6\x93\x8d\xa5\x3f\xa9\x96\xe1\x71\xbc\xd6\x69\xf1\x1c\x89\xc6\x2a\x58\x86\x61\x3f\x37\x5d\xb0\xad\x19\x93\xd4\xb2\x01\x63\xcd\xae\x37\xa7\x61\x04\x32\x0c\xfb\xad\x51\x7e\xb6\xa3\xb4\x5a\xc8\x4f\xfb\xb3\x6a\xc3\xf9\xb2\xf1\xad\x98\x20\xc4\x49\x1b\xb1\xa0\xc0\xfc\x68\x7e\xd0\x13\x28\x0a\x9a\x04\x27\xb9\xe0\x44\x02\x37\xc7\x18\x36\xab\x82\xfe\xc8\x38\x34\xef\xe0\x22\xc4\x31\x8e\x39\xd9\xba\x0a\x62\x0a\xb6\x78\x2c\x4b\x40\x8c\x88\x69\x20\x78\x30\x50\x33\x3c\x61\x88\xe3\x38\xd8\x70\xeb\xfd\x35\xaf\x06\x11\xd8\xf0\x1a\x5d\x26\x9e\xc2\xec\x79\x91\xd1\xb1\x71\x36\x37\x58\x3e\x0c\xd1\x88\x90\x3d\x2b\xcd\x89\xfb\x8c\x14\x8e\xab\x47\x73\xc2\x85\x82\xf7\xbe\xcd\x9e\xeb\x65\xaf\x6e\xdc\xd8\x9a\x7f\xde\x23\x73\xc2\x73\x0f\x7b\x96\xcd\xc6\x73\xd1\x72\x7c\x9a\x18\x0a\x43\x08\x91\x24\xa2\xbd\x1f\x2e\xc5\xe4\x46\x38\xdf\xac\x6a\xcc\x67\x75\xb3\x1c\x14\x8e\x3f\x09\xd4\x05\x10\xd0\x6c\x81\x09\x44\xdf\x58\xbb\x97\xa2\x28\x4c\x6b\x93\x87\xf1\x08\xdc\x10\xbd\x8a\xc6\x5d\x1f\x6f\x0c\xda\x8f\x45\x97\x18\x3a\x32\xa1\x13\x1a\x2b\xa7\xef\x63\x81\x94\xf0\xee\xdb\x86\xdf\x1c\x52\x55\xd1\x0b\xdb\xf9\xc0\x0f\xa7\xfa\xb0\xac\x3e\x80\x83\x97\x0d\xc3\xf3\x76\x77\x91\x36\x6e\x8c\xaa\x3e\x08\x4d\x18\xf4\x37\xa1\x21\x51\xc2\x51\x57\x21\x6a\xf4\x35\x45\x81\xec\x83\xe6\x5d\x5d\xac\x68\xec\x9b\x24\x12\x1c\x06\x22\x0f\xe1\xdc\xec\x15\xbd\x88\x71\x09\x6f\xba\x6a\xb4\x38\x50\x57\xe6\x6b\x6f\x56\x6a\xd0\x0d\x5b\x20\x45\x6a\xde\xac\x81\x0a\x7a\x69\xc2\xff\x43\xf5\x2e\xf5\xea\x32\x48\x6b\xde\x63\x2a\xa7\xd9\x22\xf0\x2e\xfa\xa7\x02\x49\x3c\x16\x93\x1d\xd4\xe9\x28\x8c\x55\xdb\x8c\x4a\xd3\x8c\xf0\xf7\x82\xbc\x15\xe8\x8d\xd0\x0b\x42\xe3\xb2\xb7\x02\x1d\xf9\x97\xc6\xe5\xfd\x47\xc2\x5e\x52\x62\xc3\xad\xe2\x18\xed\x8f\x7e\x54\x8d\x7e\xb4\x57\xb2\x6a\xd9\xd5\x50\x8e\x4f\x44\x18\xa2\x4c\x74\x07\xb0\x6a\x12\x0c\xa4\xda\xea\xaf\xee\x9b\xc2\xa5\xb4\x2a\x65\x24\x27\x72\x10\xf4\x4c\xdc\xac\x41\xc0\xf8\x8d\x53\xf0\x04\x2e\x38\x05\x64\x02\x34\xa7\x65\x2f\x36\xfb\xb1\x11\xf2\xdb\x5f\x91\xb8\x11\xee\xd5\xb8\x5c\x21\x07\x1c\x7b\x89\x89\x87\x8e\x7d\x6b\xe0\xd9\x23\xe1\xaf\x94\x30\x3c\x2d\xfa\xb1\xad\x1a\xc8\xdd\x67\x6b\x74\x96\x0a\x70\xe0\x00\x8f\x78\xf5\xb3\xdd\x2a\xfa\xa9\xc2\xce\xf1\x74\x06\xd5\x6a\xd7\x5f\xac\xeb\xa8\xe7\x41\x9d\xf0\xd0\xba\x87\x62\x0f\x3d\x57\x11\xd7\xed\xad\xa9\x54\x99\x89\x34\xd7\xa6\xca\xc6\x05\x70\x28\x13\x0d\x5d\xf8\x56\x13\xf2\xb8\x03\x5f\x5a\x2d\x32\x59\x38\x20\x41\x42\x56\x02\x21\x49\x32\x51\x9f\x10\x21\x41\x8e\xdd\x6d\x10\xed\xcb\xcd\xec\x21\x06\xe2\xe4\x18\x09\x3c\xbd\xe4\x33\x3c\x91\x31\xa5\x1a\xbf\xd7\x81\x6d\x23\x71\x4d\xba\xee\xb6\x2b\x0a\x05\x89\xa1\xda\x5d\x86\xc9\x34\x0c\x29\x24\x8e\x68\x13\x8b\x46\xec\x8b\xbf\x4e\x84\x39\x5c\xa4\xb7\x1b\xab\x09\xa0\x53\x49\x61\x18\xf6\x09\xb3\x2b\x39\x0c\xcf\xdd\x7c\x31\xbd\x96\x21\xa9\x45\x88\xb4\xed\xd4\xbf\x13\x6a\xd1\xf0\x88\x5e\x42\x36\xb6\x47\xbf\xec\xcb\xea\x46\x40\xfb\x91\x83\x5d\x69\xb8\x2d\xbc\xa9\xb6\x64\xe5\x77\xe6\x8e\x78\xe5\xf7\x28\x35\x32\x56\xb4\x20\xab\x4e\x7c\xac\x91\x48\x26\x8a\x42\xff\xfe\xc6\x27\xba\xdd\x5f\xf4\xf7\xf8\xca\x88\x5e\xd0\x15\x08\x5f\x23\xa2\xdf\x39\xe1\x8d\x7b\xdd\xad\x64\x4c\x15\xe2\xed\xcb\xde\x97\x94\xb7\x6e\x2c\x69\xbb\x3f\x36\xb5\xd3\x99\xd8\x75\xaf\xf8\x9d\x7b\xe4\xe3\x58\x0b\x0b\x3b\x1f\x55\xa6\x71\xc6\xd3\xd5\xcb\x3b\x61\x2f\x39\xa8\x6f\x0a\x69\x47\x7d\xf5\x47\x8a\xc3\x12\xb6\x46\x36\xea\x94\x41\x05\xca\x04\xdc\x79\xff\x06\xd1\xb8\xe3\xcf\xa0\xb8\x3f\xb9\x8c\xe4\x44\x94\xb0\x75\x68\x39\xce\x44\x69\xa2\xf8\x1b\xe4\x62\xd6\xcc\xbe\xd0\x2f\xac\xa7\x15\x79\x1b\x2d\xc6\x49\x18\x6a\x81\x80\x4e\x05\x9f\x85\xa1\x44\x14\x04\xff\xd6\x9b\x56\x8c\xe6\xbc\xc4\xa5\x11\x18\x7f\xe3\xba\x5e\xfd\xd4\x38\x62\x4d\xc5\x6e\x14\x68\xd3\x59\xbb\x78\x3a\xae\x24\x59\x79\x8c\xd7\x70\x60\xb6\x21\x60\xf4\x14\x55\xeb\x19\x68\xb5\x0f\xca\x6f\x6b\xcf\x2c\xe2\x7b\x60\x5f\x45\x2e\xfb\x93\xaa\x2e\x74\x55\x49\x96\x75\xf4\xdb\x9d\xd8\xaf\x84\xbd\x19\xab\x92\xfb\x41\x98\x67\xc3\xc9\xb3\x5d\xa6\xc9\x85\x08\xa2\xa8\xb2\x18\xc0\xe6\x66\x77\x2d\x3e\x40\x4a\x46\xe3\x4c\x2f\xc3\xbd\x23\xb8\x0d\x49\x06\x03\xcd\xac\x8f\xc6\xee\xc6\x76\xaf\x3d\x4a\x07\x03\x1f\xfe\x5e\x63\xff\x5d\x41\x51\x63\xff\xa2\x40\xb9\x41\x3b\xd3\xcd\x8c\x28\x38\x38\x48\x8b\x82\x23\x66\x0c\xe7\x8d\x2f\x79\x9d\x54\x36\xee\x81\xf7\xcc\xa8\x40\xcc\x71\x37\x4d\x6d\x86\x4c\x52\xfa\x6d\x40\x31\x80\x10\x5d\x80\x10\x6d\x40\x74\x8c\x5d\xec\x8e\xac\x86\x32\x77\xee\xa7\xbe\xbf\xc2\xf7\x97\x23\xb1\xdf\x5f\xa7\x1f\x7b\x25\xf6\x11\xa2\x23\x16\xc6\x47\xa6\x8e\x9d\x69\x77\x9e\xf3\x8b\x31\x07\xee\x11\xbb\xe2\x42\xd2\xe3\x24\xa7\x2e\x99\x05\x36\x38\x6c\xa6\x58\xc6\xb8\x4f\x5d\x99\xd4\xb9\x50\x47\x99\x2f\x9f\x9b\xa4\x0d\x67\xa9\xf1\xeb\x30\x69\x1b\x93\x96\x2b\x96\x5e\xdf\xb9\xa4\xbb\x00\x03\x6d\x44\xa8\xba\x16\x2d\x67\xd7\x33\x7a\x75\xf2\x79\x6d\xb1\x94\xee\xfa\x99\x80\xd7\x02\x1e\x08\xb2\x7d\xff\xe6\xfc\xfd\xdb\xb7\xa7\x67\xef\x4e\x9e\x5e\xfc\x16\x77\x5d\xad\x72\x2d\x50\x90\x04\xa0\x9b\xa8\xc7\x98\x25\xb9\x32\x57\x37\x92\x87\xe0\x8e\x4f\x23\xfa\x99\xa6\x28\x48\x2e\xd3\x79\x60\x96\xc6\x93\xb3\xd3\x9f\x4e\xde\x5c\x1c\x1f\x9d\x9d\xbc\xbb\xb7\xe6\x7f\xca\x00\x82\xab\x6f\xac\x3b\x57\x32\xb0\x8c\xf2\x53\x41\xec\x98\x1a\xd8\x5e\xe7\x81\x97\xc2\x69\x77\xf6\x1d\x64\xe1\x99\x20\x4f\x05\xbc\x17\x04\x9d\x09\x72\x98\x1c\xc2\x6b\x41\x0e\x2f\xff\x72\x78\x05\x4f\xdd\x6a\x39\x13\x10\x24\x01\xae\xde\x5f\xbb\xf7\x61\x9f\x90\x33\x51\xf7\xac\x28\x74\xca\xeb\x46\x0a\x86\x27\x82\x3c\x10\x51\x0b\x9e\x45\xf1\x40\x44\x4d\x30\xc0\x73\x41\x2a\x15\xe6\x21\xc2\x93\xc9\xa1\x1b\x5a\x80\xa7\xa3\xd9\x18\xbd\x17\x45\xf1\x5c\x14\xc5\x13\xa1\x05\xa7\x67\x9d\x5a\x53\xc7\xc9\x98\xfd\x92\x90\x27\xc2\xdc\xdc\x6e\x16\x03\xa4\xe4\x95\xeb\x39\xc3\x26\x16\x4e\x6e\x02\xab\x43\x4e\x86\xb0\x20\xaa\x71\x5b\x18\x3a\xd0\x82\x22\x4a\x49\x5a\xdd\xb1\x1f\xdc\x05\x10\x68\x79\xd7\x07\x21\xd3\x8b\x37\x0c\x51\xea\x96\xf1\xa2\xbe\x02\xca\x39\xad\xb2\xe6\xf8\x1b\x2f\x8f\x87\x61\x88\xfa\xac\x5e\xdf\x45\xc1\x9a\x8b\x3d\xf8\xa8\xf9\x23\xa2\xa6\x8d\x32\x07\x23\x73\x23\xec\x86\x04\x68\x12\xf7\x82\xc1\x66\x10\xe0\x00\x16\x24\xe8\x05\x83\x05\xe4\x83\x81\xbf\x9a\xda\xad\xe5\xe0\x9f\x68\x12\xfb\x6c\x29\xc6\xf0\x5c\x18\x51\xb3\x95\xc5\x7c\x7f\x80\x26\xfd\x8f\x1f\x73\x97\xed\xbd\x30\x12\x4b\xab\xeb\x9c\xf8\x09\x4f\x26\x32\x66\xb0\xc0\x90\x4c\xf8\x04\x69\x19\x7f\xbd\x51\xc4\xfd\xba\x51\xe7\x18\xf8\x74\x38\x23\xfa\x4f\x23\xc9\x82\xad\x59\x71\x13\x24\x03\x9b\xdd\x1d\xe6\xc7\x8d\x2f\x64\x18\xeb\x3e\x69\xfe\xa5\x99\xca\x1c\x1e\x99\xb8\x8a\x07\x8d\xf2\x31\xb5\xc3\x35\x31\x55\xbd\x25\x51\x18\xbe\x74\x83\xe0\xc6\xac\x03\x76\x35\x50\x82\x8c\xc6\x62\xcf\x1e\xf8\xe0\xe1\x58\x0c\x06\xb8\xe2\x81\xeb\x33\x4e\x31\x0b\x43\xc4\xa7\x62\x46\x6a\x73\x2e\xe0\x0e\x1d\x7e\x11\xe4\x99\x68\x99\x47\x59\xa0\xef\xdb\x47\x1d\x46\x76\x8d\xf7\x09\xf9\xa2\x49\xa2\x7e\x8e\xbf\x08\x57\xcf\x1f\xbb\xea\xe7\x0f\x82\x74\xdc\x93\xa3\xc8\x61\x74\x58\xa3\x08\x5d\xc7\x3e\x3a\xae\x6f\x19\x54\x91\x71\xb8\xc8\xc9\x36\x89\x83\xbf\x05\x25\xa8\x12\x82\xbf\xe9\x35\x17\x04\xd5\x7a\x57\x10\x3c\x78\x94\x3c\xb6\xc8\xea\x85\x20\xc1\x83\x61\x40\x08\x09\x92\x3a\xcb\x61\x74\x08\x3a\x19\xc3\xaf\xb6\x9f\xee\x43\x80\xe1\x27\x41\xfa\xfd\xc3\xe8\x70\xfa\xab\x86\x93\x89\xa6\xe5\xde\x2c\xba\x34\xa5\x7e\xbe\x6f\x30\x68\x12\xe3\x43\xe3\x78\xa5\x87\x32\xde\x1f\x51\xc5\xd1\x34\x9c\x58\x1b\x77\x39\x3b\x35\x6c\x90\x5c\x06\x2e\xdc\x6b\x75\x90\xd0\x7b\xd8\x27\xc4\x07\x10\x2b\x8a\x20\xd1\xc3\x96\xd3\xe1\xac\x28\x82\x4b\xfb\x3c\x9a\xe9\x21\xff\xd8\xc9\x7b\xd7\x16\x9e\xb5\x8a\x4c\xa3\x1b\xb7\xf7\x6f\x10\xc5\x5a\x78\xb2\xc6\xe0\x29\x61\x95\x23\xb0\x43\x2d\x8f\x86\x45\x91\x3c\x26\xe9\x44\x4d\x82\xc0\x89\x30\x31\x32\xce\xbb\xcb\x44\x1e\x8b\x39\x3d\x52\x28\xc1\xf8\xd1\xf7\xdf\x3f\xfc\xfb\x0f\x45\xc1\x1f\x7f\xff\xc3\x77\xa3\xbf\x17\x45\x32\xd0\x18\x29\x2d\x0a\x24\x76\x32\x0f\x46\x3a\xfb\x0f\xdf\x3d\x1c\x16\x85\x78\xfc\xfd\xdf\xbe\xfb\xeb\x77\x13\x35\x61\xde\x19\x35\xc1\x31\x8f\xf5\xbb\xdd\x8b\x09\x24\x83\x87\x38\x16\x07\xa6\xc4\x00\xf1\x03\xd3\xd2\xa3\x47\xa3\x21\x1e\xfc\xf0\xfd\xf7\xdf\xfd\x50\x96\xf0\x8b\x20\xdb\xd4\x54\x1f\xff\x28\x90\xe6\x7b\x6d\x65\xe6\x6d\x88\x4b\x57\x37\xfc\xb6\xaf\x35\xf4\x33\xa3\x25\xf6\x5f\x2c\x99\xf5\xdb\x72\x84\x4b\xf8\x7d\x57\x5f\xe4\x03\x22\x9a\x89\xee\xbe\xc5\xab\x0a\x15\x51\x05\x68\xa2\xc6\x6a\xc8\x5b\xda\x54\xb2\x24\xdf\xd7\x21\xd8\x6d\xd7\xd3\xb5\xf7\xac\x75\x76\xcf\xf6\x90\xce\x7b\xb9\xd0\x29\x8c\x5f\xf5\x84\x5a\x52\xd9\x53\xcb\x84\xf7\x12\xef\x7f\xd0\x13\xd2\xdc\x8e\x50\xd3\x5e\x5e\xea\x46\xdd\x46\xee\x13\xb2\xee\xba\x92\xcf\x7d\xff\x37\xd3\xa2\x31\xa6\x9b\xf7\x84\x96\xd1\x53\xb1\x5a\x27\x8a\x5d\x66\xb4\x27\x69\x4a\xd9\x8d\xb9\x21\xc9\x55\xfd\x45\xd4\x43\x2b\x41\x31\xf2\x3a\x51\xcb\x68\x95\x7c\x06\xea\x9f\x19\x07\xe9\x9e\x17\x99\x10\x12\x38\x23\x87\x1f\x1f\xa0\xe9\x83\xf0\x3f\xfe\xcf\xac\xf8\x38\xff\x38\x9f\x14\x8f\xa6\xff\x7c\x3c\xfb\xcb\x63\x7c\x78\x05\x62\xff\x33\x3e\xbc\xea\x8a\x9a\x65\x39\x46\x7b\x79\x64\xd2\xb5\x23\x69\xc3\x61\x9e\x6a\x8c\xb7\xbf\x13\xff\x56\xc2\xdf\xfa\x24\x08\xa6\x6a\xe6\x02\x99\xa6\x24\xd9\xbb\x9a\xca\x56\xd6\x1f\x81\xd4\x0c\x86\xbf\x91\xce\xec\x50\xa7\xca\x45\x36\x36\xc6\xce\x81\x8d\x8d\xd3\xe4\x13\xa6\x7f\x74\x76\x41\xea\x6c\x8b\x2c\xb9\xca\x49\x10\x80\xd4\xfd\xd4\x28\x47\xcc\x34\xbb\x7a\x1f\x02\x31\x4a\xba\x4d\x96\x95\xa6\x80\x39\xa5\xee\x53\xcd\xfc\xb2\x05\xea\x27\x45\xd1\x4f\x8b\xa2\x42\x6b\xae\x8b\xfd\x0f\xa2\x28\xfa\x2f\x44\x51\xfc\x24\x70\x51\xb4\xfa\xdf\xff\x59\x78\xc1\xc2\x36\x0e\x39\x91\x48\x80\x81\x4c\x5b\xaa\x86\xf6\xf5\xf5\x96\x43\x23\x9a\x0c\x4c\x34\xe4\xc4\xc4\x29\xd7\xbc\x56\x68\xd3\xba\x13\x3f\xde\xf9\xaa\xaa\xdb\x80\x9b\x5f\xcd\xe5\x8d\xdb\xb3\x93\xb7\xaf\x8e\x8e\x4f\x2e\x7e\x3a\x39\x79\x7b\x7e\xf1\x60\x18\xbf\x10\x70\x76\xf2\xfc\xe4\xd7\xb7\x17\xfe\xd3\xf9\xfb\x27\xe7\xef\x5e\xbe\x7b\xff\xee\xe4\xfc\xe2\xfd\x9b\xa7\x27\xcf\x5e\xbe\x39\x79\x7a\x71\x7c\xf4\xf6\xdd\xfb\xb3\x93\xf8\x27\x2d\x07\x2f\x48\xae\x29\x67\x46\x72\xcd\x8b\x51\x85\x76\x39\x49\x50\x9a\x35\xa0\x0a\xed\xf2\x9e\x20\xe0\x21\x21\x74\xd2\xde\xf9\x6d\xff\x60\xe5\xb5\x6f\x9d\x37\x46\xb7\x32\xe1\x12\x97\x3c\x0c\x8f\xf6\xda\xd1\xe0\x0e\xf2\x65\xb2\x0a\x4c\x68\x8d\x9a\x1e\xc1\xc3\x7d\xd0\xfb\x75\xcf\xa3\x7f\x05\x14\x26\xd4\xd3\x2e\x3c\x21\x21\x62\x12\x3c\x08\x62\x4d\xd6\xdc\xaa\x9e\x56\xed\x35\xda\xba\x71\x12\x11\x23\x56\x65\x26\x27\x8e\x02\xc8\xfa\x3e\xb2\xda\x90\x94\x4d\x98\x9f\x54\x01\x1c\xc7\xce\x3f\xdb\x91\x1a\x81\xed\x42\x80\x3d\x8b\x80\xbe\xe6\x79\xf5\xba\xdc\x89\x6d\xc2\xc3\xd0\xb0\xb5\xbc\x62\x61\x13\xec\x17\xab\x44\x3e\x88\x0c\x70\xb3\xf8\x37\x56\x97\xed\x1d\x0c\xdc\x21\x81\x0d\x9e\x69\x8e\xf1\x6b\x7e\xd7\x0c\xa9\x53\x7b\xc7\xc7\x59\x51\x20\xee\x73\x72\x67\xb4\xb3\x26\xb9\x63\xdf\xc6\xe6\xb2\x7e\xd3\x87\x39\xc9\xbd\x20\x37\xce\x9b\xfc\x5f\xe9\x35\x9d\x4b\xcd\xc2\xb8\xf3\xbf\x1b\xf2\xbb\x40\x39\x2c\x6c\xec\x51\x6b\x44\x7d\x83\x2f\x25\x4d\xae\x75\xca\xd2\xc9\xf2\x18\xfa\x6b\x97\x1a\x34\x8c\xbf\x6f\xa6\x43\xc3\x4e\x37\xdb\xf9\x4d\xa0\x05\xe4\xaa\x99\x86\x61\x8e\x71\xd5\xfc\x1d\xac\x34\x62\xb9\x22\x43\xb8\x24\xc3\xf1\xe5\xa3\xa5\x27\xee\x97\xc6\x67\x8c\x2c\xa7\x97\xb3\xea\x6a\xad\xdb\x56\x5b\x70\x42\x14\x43\x94\xa1\x54\xa1\x1b\x0b\x7e\x0c\x0b\xcf\xef\xc2\x10\xc3\x05\x99\xce\xe0\x94\x8c\xc6\xa7\x8f\x6e\xaa\xe8\x96\x83\x01\xbe\x68\x6a\x25\xb4\x4c\x72\x47\x6e\xa6\xa7\x33\x3c\xb9\x8b\x5d\x03\x77\x0e\xaa\xe7\xe4\xc6\xf1\x75\x1a\x02\x99\x85\xd3\x27\x32\xbd\xad\x3c\xe8\x2f\xe0\x44\x43\xac\x5a\x60\xe7\x61\xf8\xc9\x56\x7f\xee\xc2\xbe\x54\x33\xd5\x36\xbe\xfb\x84\xb1\xf1\xda\xef\x7d\x26\x29\xba\x85\x05\x9c\xc0\x05\x9c\xeb\x95\x72\xf2\x98\x5c\x85\x21\x5a\x0d\xc8\xc2\x31\x18\x57\x70\x82\x07\x9f\xe1\x8a\x9c\x0c\x6e\xfd\x00\xfd\xa1\xf5\x6a\x50\xe5\xc2\xe5\x6c\xdc\xf4\x97\x68\x3a\x8f\x58\xc7\x11\x3e\xf0\xd6\xbd\xb0\xa9\x5d\x66\x72\x22\xd8\xfe\x4e\xd1\xd2\x01\xb9\x36\x61\xfc\x72\xc2\x19\xf6\x71\xf4\x13\x68\xdf\xf5\xe0\x2a\xcf\xc7\xf9\x2d\x53\xe9\x12\x25\x9e\x4b\x1a\x62\xbc\x4d\x93\x9c\xea\x5d\xec\xc8\xd2\x83\x60\x6c\x52\x42\x9f\xd2\x53\x36\xe1\xff\x54\x09\xb2\x11\x4f\xd4\x7e\xfb\x8f\xbd\x6f\xa9\xfb\xf2\x28\x88\x73\xc2\xa6\x89\x4b\x1e\xc1\xc1\x08\xcf\xc6\x76\x6d\xce\xe9\x22\xd9\x64\x2a\xd6\x7d\x5b\x90\x41\xa2\x27\x50\x4f\xf6\xa2\x36\x8a\x61\x0b\xb4\x78\xbc\xb1\xdd\xcf\x88\x64\x68\x71\x38\xaa\x6f\xbe\xb7\x27\xd3\x34\xce\x1e\x91\xcd\xa4\x5a\x2b\x62\x9a\x1d\x8c\x66\x93\x6a\x90\x23\x1c\xdb\xa4\x41\x33\x89\x96\x39\x11\xd3\xc5\xc1\xa8\x8a\xac\x50\x55\x90\x6b\x26\x35\x2f\xad\xe2\xd4\xde\xc5\xc7\xfe\x34\xfa\x73\xe5\xf8\x64\x84\x4d\x1b\xd2\x65\x57\xac\xd2\x42\xe5\x70\xcc\x1f\x79\x46\x7c\xcc\x07\x03\x6c\x82\xeb\xd4\x02\x16\x6f\xc8\x2b\xb5\x27\x4e\x59\x42\xc2\xc8\xae\x33\x41\xe5\x97\xd0\x58\x53\xac\x11\xe6\xc9\xfb\x26\x98\xde\x18\x37\x90\x84\xd5\x66\xdd\xbe\xc8\x86\xed\x7a\x25\x19\x87\x8d\x3a\x43\xce\xbe\xf5\xea\xac\xaa\xc8\xa2\xab\x1b\xde\xcc\xf5\xde\x9e\x64\xac\x32\x31\xf1\xe6\xf7\x5d\x0c\x6f\x23\x5a\x95\x19\x2e\xae\x61\x3f\x04\x5e\x5d\xa2\x32\x96\x8f\xf8\x58\x0e\x06\x98\x36\x2e\xb6\xb4\x57\x83\x81\xb2\x97\x5c\xf4\x5a\x17\xc7\x28\xbc\x07\xe0\xb6\x4d\x73\x75\x2d\x28\xae\x02\x9d\xb8\x4a\xc5\x0c\x04\x28\xab\x47\x5b\x33\xb2\x75\x41\x7d\xe2\x94\x81\x7b\xb4\xf7\xd8\x75\x50\xf9\xf6\x2c\xd9\x6c\xbb\x10\x02\x96\xdf\x5b\xbe\x31\x23\x7d\x33\x95\x61\xe8\x53\x9a\xec\xa3\xfb\xda\x3a\xc3\xea\x74\x86\x69\x65\x89\x7c\xc3\x61\xd8\x9d\xee\x7a\xf7\x4c\xc8\x95\xb1\x63\xec\x18\x5f\xc7\x1d\x29\x3e\x7b\x18\xb6\x8e\x43\x7d\x72\xd9\x06\xda\x07\x46\x6f\xbf\xb1\xe2\x46\xa9\x30\x6c\xbc\x44\x2c\xd7\xb5\x4c\xf6\x93\x90\xc2\xb1\xb1\xff\xbc\xac\xc6\x69\x9f\x9a\x1d\x6b\x14\xd3\x7d\xdb\x75\x06\xfa\x4a\x60\x35\x9d\xdd\xba\xf0\x77\x65\x77\xc1\x29\xda\xd9\xed\x22\x8c\x73\xbd\x74\x2a\x9f\xa9\x78\xa3\x5f\x9f\xb6\x6f\x17\xdf\x5b\x42\xfa\x7b\xc7\xda\x79\xc6\xb2\xaf\x16\xd3\xdf\xbb\x96\x5c\x26\x2e\xbf\x56\x4c\x7f\xef\x6a\xcd\x95\x88\x17\xcc\xc2\x8a\x26\xab\xae\x75\x9b\xdb\xc5\xaa\x51\x45\xb4\x66\x6b\x6a\x0a\xbf\x3f\x7b\x75\x4e\x13\x99\x2e\xdf\x26\x32\x59\x75\x79\x64\x76\x4d\xfb\x4e\xa9\x9d\x65\xb5\xf3\xd5\xce\x60\xc2\xe7\x89\x9c\x3f\x91\xe2\x36\xa7\xf2\x84\xdf\xec\x9f\x4d\xa1\xae\x78\x48\xd5\x95\xd5\x45\x11\x9c\xd1\x24\x55\x6f\x8c\x3d\x9f\x16\x8c\xab\x4f\x1a\x7f\xcc\x37\xa9\x46\x91\xf6\xab\xb5\x57\xbf\x37\xcf\x79\xe7\x17\xcd\xa9\x7d\xed\x7e\xa1\xae\x6f\xde\xae\x52\xf3\xc7\xee\x92\xdb\x8c\xc1\x8a\xca\xab\x7a\xfe\x7b\xaa\x29\xdf\x56\xa9\xd2\x72\xec\x7b\x48\x9d\x4e\xf9\xac\x03\xd7\xcb\x89\xfe\x40\x14\x72\x47\xef\x31\xb5\x37\xcf\x56\xe7\xf3\x64\x08\x62\x3f\x32\x1c\x7f\x24\x0c\xd1\xcb\x18\x6a\x92\xbc\xc6\xd9\x3d\x2d\x61\x4e\xe9\xfa\xf5\xff\x58\x9f\x3b\xb2\x29\xa4\x85\x6f\x1c\xff\xdf\x19\x0e\xfd\xac\x28\x9f\xef\xdd\x1d\xef\x65\x3c\x86\x68\x8b\x59\xe3\x78\x6b\x6f\xf1\xed\x76\x55\x9c\x30\x66\x38\x82\x98\x1a\xcb\xe5\x12\x94\x64\x9d\xdb\x4b\xd5\x0a\xcb\x7f\x7e\xcc\xff\x72\x08\x41\x80\xeb\xa4\x8f\xf9\x5f\x1e\x98\xa4\xe6\x15\x26\xf3\x26\xa1\xa7\x5c\x0b\x25\xef\xcf\x5e\x56\x71\xb9\x90\x6a\x54\xf0\xef\x7f\x1d\x1e\x5e\x31\x08\xfe\xd1\xac\xf5\xdf\xbf\x3b\x32\x89\x71\x2b\xf1\xe1\x5f\x0f\xaf\x20\x78\xd0\x4e\x3b\x36\x19\xa1\x9d\x38\xd4\x19\x07\xad\xb4\xef\x9f\x98\x8c\xd3\x76\xe2\x53\x93\x38\x0b\x2c\xc5\x5d\xb2\x6e\xe3\xcc\xca\x79\xcf\x5a\x63\x6a\x6e\x52\x62\xae\xa5\x3e\x47\xfe\xb5\x1c\xc6\xa2\x3d\xac\x83\x28\xc6\x9c\xd4\xec\x15\x6a\x5c\x89\x25\xb4\x38\xb6\x66\x55\x6c\x09\xba\x6b\x34\xe0\x38\x97\x30\xb4\x55\x57\xc1\xfd\xe8\x80\x04\xd3\x59\x10\x1b\xce\x05\x1a\x35\xec\x9c\x51\x9a\x52\x4f\x6d\xcc\xcc\x89\x09\x91\x2d\x5e\x9e\x9f\xfa\x8e\xc4\xe6\x73\xe5\xf0\x6a\x38\xa1\x1f\xcf\x4f\xdf\x44\x96\xf2\xb0\x85\x71\xbc\x02\x61\x05\x9c\x39\x43\x14\x0f\x02\x12\x0c\xcc\xd4\xda\xc8\xcf\x58\xb3\xa1\xc2\xf8\x5e\xa3\x20\x0c\x70\xa9\xd9\xad\xda\xfd\xbb\x3a\xe8\xf9\xb7\x00\x8f\x0f\x46\x4e\xce\xd0\x1d\xf1\x5c\xbf\x09\xbe\x3e\x20\xf6\xb4\xa8\x51\x60\x12\xe0\x49\x30\x09\x62\x5d\xe9\x80\xd7\x51\x32\xea\x05\x76\xc3\x7c\xb8\x07\x17\xd1\x3e\x27\xd3\x59\x79\xc3\x9a\x91\x58\xf3\x7b\x02\xfd\xb6\x8a\xd9\xe1\x6d\x17\x9b\x6c\xc1\xb2\x8c\xce\x63\xe5\x2c\x8b\xe8\x5c\x6f\x0c\x68\x67\xf6\x71\x09\x4b\x68\x35\x65\xcd\x4f\x5a\xb6\xd5\xcd\x62\x53\x35\xf3\xd1\xba\x1b\x49\x46\x87\x81\x77\x6a\xf2\x57\xff\xee\xcc\x63\x35\xc3\xcd\x3a\xda\xf1\x9d\x1c\xab\x46\xc3\xd0\x5d\xdc\x64\xb5\xf8\x77\x8c\xdc\x30\x58\xed\xaf\x6b\x07\x8c\x46\xe5\xcd\x33\x1d\x89\xb7\x8a\x48\x6f\xe0\xaa\xb1\xc3\x15\xeb\xd0\xe7\xf7\x4d\xf0\xd1\xbe\x8a\x2e\x2e\x8e\x8f\xde\x1c\x9f\xbc\xba\xb8\xc0\x8d\x59\xba\x64\x95\xcb\xa2\x96\x65\x9c\x86\xb7\xf6\x5c\xea\x2d\x13\xeb\xce\x7a\x49\x29\xef\x79\x22\xd4\xe0\xe3\x6f\x3b\x2b\x30\x1e\x49\x7f\x52\x85\x1e\xfb\x09\x23\x97\x0c\x2e\x18\xb9\x65\x75\x9f\x4e\x99\x73\x34\x3c\x61\x5a\x42\xab\xfa\xe2\xb7\x78\xc3\xaf\x4a\xc1\xd0\xe8\x47\x6c\xd6\x4b\x56\x14\xfd\x13\x86\xc3\x70\xbf\xd0\x09\x6b\xd4\x04\xbb\x55\x34\x5c\xa3\x4f\x98\x49\xaa\x7d\xa1\x5b\xdf\x9a\x92\x40\x2b\xd7\x4e\x0e\xe7\xef\x3f\xc4\x65\x59\x76\xa0\xf6\x85\xb9\xb9\xc5\x75\x21\x0c\x51\xab\x77\x9d\x96\x43\x0b\x19\x35\x81\x1a\x86\xe8\x82\x91\x66\x8a\x53\x91\x30\xf8\x64\x8c\x42\x3e\x33\xd2\x1f\xc1\x31\x23\x07\xa3\x46\x04\x53\x3d\x59\x9f\x59\x18\x9e\xeb\x7d\x6e\xb3\x9c\xfb\x13\x9c\xc9\x27\x46\xce\x99\xd7\xa4\x7c\x62\x38\x36\xa5\xe1\x93\xcf\x10\x86\x6f\x19\x6a\x5e\x1f\xa0\x5f\x0d\xf6\xfd\xcc\xfc\xc1\xd6\x29\x43\xef\x18\x1e\xeb\xaa\x87\xe3\xda\xb5\xb2\xaa\x63\x4c\xc7\x56\x7e\x3e\x67\xe4\x93\xeb\xeb\x78\x30\x38\x66\x8f\xe8\x18\x9f\x9b\x9e\x4d\x8f\xd9\x2c\x92\x1b\x8e\xf0\xd8\x76\xa0\x51\xbc\x3c\xb7\x8a\x45\x37\xbc\xe6\x72\x67\x0b\x0d\x11\xd2\x86\x89\x9b\x95\x66\x9a\x8b\xf4\x64\x33\xdf\xea\x15\x73\xa1\x57\x4c\x57\xb1\x1d\x08\xc3\x6e\x35\x7a\x65\x5c\x30\x13\xd6\xa3\x63\xb1\x5c\xb4\x16\xcb\xfe\x52\xb9\x60\x3b\x37\x21\x96\xa8\x75\x1f\xe2\x11\x6b\xf8\xcc\x2f\x36\xdc\x9b\xd8\x25\xc6\x6d\x9c\x96\x47\x4d\xac\x24\x37\x2d\x7b\x3d\x5f\xc6\xa9\x15\x6c\x17\xaa\xc2\x4d\x04\xf0\x46\xcf\xa1\xd9\x8b\xaf\x18\x79\xc3\xe0\xda\xfc\x3d\x33\x7f\x5f\x9b\xbf\x0f\xcc\xdf\xa7\xe6\xef\x4b\xfd\xd7\x46\x89\x61\x64\x21\xa3\x35\x95\x0b\x21\x57\x9a\xf9\x2e\x8a\x6d\x09\xef\x19\x79\xc6\x22\x2e\x6e\x8b\xe2\x19\x8b\x56\xe2\xcb\x1b\xff\x98\xfb\x27\xe1\x1f\xac\x63\xb3\x79\xdb\xe7\xc7\x35\x2e\xd1\x84\x11\x47\x57\x76\x5f\x20\x87\x2d\x9f\x30\xe2\xbf\xd9\x30\x2d\xcc\xba\x7a\xbf\x63\xe9\x75\x87\x51\xd1\xfd\x0a\x9a\x03\x1b\x2d\x60\x3f\x22\x47\x43\xc5\x30\x1a\xcb\xfd\xf8\x59\x46\xcd\x30\x95\x07\xa3\x9d\x90\xc7\x9f\x9c\x79\x95\x69\xd2\xce\x1d\x06\x4d\x53\xab\xd5\x5b\x14\x9f\x59\x51\x9c\x32\xf4\x96\x99\x33\x30\x95\xd1\x38\xb8\xb4\x62\x49\x00\xee\xc1\x1a\x05\xde\xc4\xdb\x12\x12\x79\x75\x13\x4f\x67\xe0\xee\xf5\x8c\x83\xc0\x3f\xe6\xfa\xb3\xe0\xf1\x2b\x06\xc9\x7c\xee\x5d\x48\xe3\x6b\x06\x82\xa7\x34\x3e\x63\x20\x16\x8b\xf8\x35\x03\xeb\xa9\x5a\x65\x78\xe0\x53\x8e\xb2\xcc\x27\xe6\xf1\x53\x06\x74\xc5\x54\xfc\x92\xc1\x25\xe3\xf3\x5d\x79\x77\x0f\xbb\x3b\xdf\xac\xc8\x65\xf6\x11\x0f\xf2\xcd\x7a\x6d\x43\x4c\xe1\x12\xd2\xdb\x79\x47\x04\x8d\xc3\xa0\x84\x74\x39\x67\xf2\xdb\x1a\x30\x59\x3b\xab\xdf\xac\x92\xfc\xba\xc3\xc6\x70\x58\xc2\x52\x2a\xb6\xea\x32\x30\x8b\x86\xc3\xd1\x5f\xde\xbb\x5d\xf7\x8c\x61\x90\x8d\xc3\x46\x6b\x74\xd6\x7c\xff\xf7\xd1\x5f\x46\xf4\xef\xb5\x5d\x52\x18\x22\x79\x40\xd4\x74\x38\x03\xc4\xf5\xc3\x68\xe6\xee\xfa\x3b\x38\x00\x3e\x20\x3a\x33\x86\xa9\x04\x3e\x2b\x61\x9d\x25\x4a\xef\x8c\xc6\xfc\x4a\x9a\xd1\x24\xa7\x7a\xe6\xac\xbd\xa4\x7e\xda\xac\xdb\x9d\xdd\xdb\x00\x07\x4f\x18\x3e\x1c\xd1\xef\xca\x12\xbe\xec\x6a\x26\xef\x61\x2c\x8d\xa0\xc4\x2d\xa7\xc1\x23\x25\xde\xaf\xd7\x54\x1e\x27\x39\x45\xe6\x4a\xa8\x76\x8a\x66\x7b\xcc\x35\x4d\xe0\xaf\x6d\x9f\xf2\x99\xb5\xb1\xfa\x63\x97\x25\x69\x9d\xe6\x7d\xe5\x93\x72\x97\xcb\x11\x0a\xf6\x62\x49\x2d\x5d\x10\x89\x41\xcb\x29\x7f\x6c\x68\xae\x08\x37\xcf\xf9\x5a\xf0\x9c\x12\x01\x4a\x73\xcf\x9f\x99\xc8\xcd\x02\xb0\xb7\xd9\x29\xa1\x99\xdd\x0e\x9f\x32\xe7\x27\x6d\xe3\x68\xb9\x17\x30\x41\xd9\x4c\x8a\x7e\x82\xb9\x0b\xe5\xa6\xb7\x8d\xbd\x03\xb4\x4e\x00\xab\x8a\x71\xb9\xcd\x33\x2c\x58\x46\xdf\x54\x55\xf8\x37\xc8\x18\xa7\x6f\x1a\xb9\xeb\x77\x48\x45\xb6\x59\xf1\xe6\xc7\x66\x0a\xe4\x2a\x49\xaf\x63\x7f\x0b\x41\x7a\xed\xe7\xdc\xe5\xd4\xcf\xa0\xc1\xe2\x13\xe6\xb4\x2c\x41\x95\xa8\xde\x05\x0a\x57\x80\x2d\xe1\x03\x23\xd3\xc0\x38\x87\x07\xc9\x46\x2d\x85\x64\x5f\xdc\xdd\x98\x41\x6a\xe3\x48\x1e\x58\x1c\xd3\x48\xd0\x84\x21\x80\x80\xaa\xe4\x4a\xff\x7c\x5e\x33\x49\xf3\x00\x82\x85\x14\xab\x00\x82\xa5\xc8\x55\x00\x01\x5b\x1c\xac\xc4\xdc\xd8\xf2\x1f\xe4\x8c\xa7\xd4\xa6\x6d\xf8\x5e\x6a\x96\xe4\xaa\xca\xab\xdf\xbd\x87\x02\x04\xab\xe4\xf3\xc1\x42\xc8\xdb\x44\xce\x75\x0b\x6b\x29\x3e\xdf\x1d\xec\x76\xd4\xc4\x02\x35\xb1\x1e\x25\x55\xf2\xee\xc0\x5c\x5b\x12\x40\xb0\xc9\xa9\x3c\x48\xae\x28\x57\xc1\x0c\x5e\x30\x62\xc4\x9e\x7d\xad\x0d\xc2\x93\x5d\x3b\x1a\xa0\xe4\x10\xad\x72\x46\x0b\x25\xd9\x9c\x72\x85\x7d\x9c\x8c\x5a\xc5\xa2\x6b\x3f\xba\x32\x8e\xa1\x72\xd7\x77\xdb\x45\x95\x43\x41\x12\x34\x02\x60\x55\x28\x83\xd7\x16\x73\xe6\x2e\x23\xcd\xb3\x1d\x29\x25\xd9\xe5\x46\x51\x14\x2c\x25\x5d\x04\xc0\xad\xb1\xaa\x7e\xc1\x70\x6f\x96\xad\x7e\x8a\x6d\x36\xf0\x61\x0b\x62\x59\x47\x30\xa8\x1f\x6b\xd9\x37\xb6\x62\xbb\xc6\xfb\x7a\xb2\x74\x71\x91\x6b\xe6\x55\x8b\xaf\xb1\x6e\x4b\x3f\x4c\xfc\x43\x53\x09\x30\xa9\x4b\x26\xb9\xce\xab\x7f\x26\xf6\xa7\x91\xef\xdf\x5a\x0d\x98\x3d\x64\x1b\x31\x9b\x48\xa3\x5b\xdd\x47\x21\x15\xac\x13\xb5\xb4\x81\x0f\x0f\x03\x42\x88\x8c\x7c\x42\x7d\xbe\x34\xa9\x13\x75\xae\x41\xfd\x5a\x56\x02\x22\xe1\xfe\x32\x65\xbf\x7a\x1c\xe4\x9a\x82\x92\x25\xbe\x6e\x19\x18\x59\x98\xe2\x89\xfe\x12\xd7\x81\xa8\x2b\x70\x19\xb9\xd4\xbf\x84\xa1\xed\xbe\x49\xd4\x0f\x65\x89\xf0\x3e\x76\xed\x0f\x4b\xf8\xf5\x6b\x0b\x6d\x7b\x2b\x59\x4b\xfd\x5a\xc7\x7e\x73\x71\x88\x34\xdf\x9a\xb8\x98\x75\x46\xea\xee\xd0\xa1\x68\x06\xc0\xb4\xe1\x6e\xe8\x96\x38\x0c\x5d\x19\xbf\x1d\x49\x30\xf0\x98\x1e\x49\x1c\x29\xf1\xfc\xf5\x3b\x2f\xff\xbb\xc2\xd5\xd1\x72\x5d\x58\xc3\x55\x97\x6c\xe7\x10\x8d\x1c\xce\x9d\x24\x18\x08\xe7\xd5\xc9\xea\x6f\x39\x4d\x37\x92\x06\x18\xea\xdd\x20\xc4\x35\xa3\x24\x71\x8a\x82\x71\x4f\x93\x58\x49\x93\x79\x07\x15\xdd\x29\x14\xad\x0c\x5b\xdb\xb4\xba\x44\xff\x2c\xc6\x1f\x3f\xe6\x7f\xc1\x28\x18\xa8\x41\x80\x09\x9a\xfe\x73\x3c\xfb\x0b\x0e\x6a\x8b\x6b\x3a\x99\xd3\x7d\x70\x4d\xbf\x9b\xe1\xd8\xd9\xaa\x18\x2e\x25\xde\x13\xd8\xcd\xbc\x20\x05\x41\x00\x1a\x66\x26\x6e\x09\x3e\xf8\xdf\x3f\xfc\x95\x7e\x8f\xcb\x32\xde\x9d\x37\xbc\xdd\x1d\x47\xeb\x28\x65\xbf\x1d\xbc\x2d\x4b\xf8\xa9\x4b\x90\xbe\x27\x9c\x5e\xeb\xaa\xda\x79\xa2\x12\x10\x7a\xe9\xd1\x64\x4e\x65\x3e\x36\xd3\xe3\x8f\x3a\xcc\x14\x3a\x2a\x2b\xa6\x81\x8b\xff\x7b\xf0\x4e\xa3\x69\x7b\x63\x86\xe5\x6d\x7f\x7d\xfd\xea\x85\x52\xeb\x33\x4b\x2a\xcd\x2d\x05\x91\xc6\xa5\x7e\xe5\xd9\x37\x83\xd8\xb8\x0d\x86\x1c\x40\xea\x53\xd7\x49\x9e\xdf\x0a\x39\xd7\xa9\x63\x11\x1d\x35\x71\x30\x09\x9e\x24\x39\x4b\x7b\xc1\xe0\x52\x89\x04\x25\x83\x20\x0e\x06\xa9\x95\xc4\xad\xb3\x31\xda\x10\x15\x5d\x26\x39\x7d\x7f\xf6\x0a\x72\xa2\xa2\x8d\xcc\x60\x13\x86\xfd\xc3\x7f\xa2\x69\x72\xf0\x65\xa6\xff\x7c\x9c\x7f\x1c\x7c\x3c\xf8\x18\xcd\xfe\x12\xe3\xc9\xc7\xc3\x8f\x87\x1e\xe9\xe6\xb8\xdb\x00\x86\x4e\x1a\x0a\xca\x8f\x87\x03\x8b\xd6\x06\x1a\x47\xd0\x26\xd2\x3a\x1c\x58\x74\xa4\x4a\xb4\x81\x1c\xc7\xb9\x8d\xe7\x15\x89\x35\xe5\x48\x45\xd6\xba\xad\xcd\xbe\xc0\x92\xa1\x05\x18\x6f\xcd\x64\x95\x57\x0f\xe7\x54\xda\x88\x9c\x36\x60\x2d\xb0\x48\x59\xb1\x8d\x28\xff\x04\xec\x4f\xe2\xbc\xe8\xa6\xc3\xf0\xaf\x7a\xef\x44\x26\xdf\xb9\x75\xb1\x42\xe6\x3c\xde\x38\x5c\x6d\xf2\xa2\x60\x15\x1f\xf3\xfe\xec\x55\x18\x0e\x5d\xfe\x2a\xa9\xd6\x99\xd9\xc8\x35\x18\xd7\x56\x95\x2e\x9a\x19\x31\x51\x5a\xb3\xec\xcc\x95\x7a\x61\x57\x4f\xc0\x78\x8f\x4d\x8c\xe9\x64\xe7\x77\x84\x61\x63\x6e\x0b\x9d\xa0\x06\x27\x58\x5d\xff\xff\x91\x07\x3b\xb7\x7e\xb1\x05\x4a\x9b\x4a\xbc\x38\xc0\x20\x34\x16\x54\x92\xad\x90\xbd\x4f\x5b\x49\x34\x84\x14\x6b\x54\xf4\x4a\xdc\x56\x60\x4e\xf6\xb3\xa5\x83\x11\xc6\x60\xaf\x1d\xdd\x18\x63\xe1\x0f\xac\xaa\x5b\xe0\xc7\x64\xe8\x6f\x6e\xd1\x5f\x49\x90\x53\x75\x60\x71\x86\x26\x20\x62\x62\x0a\x4d\xf4\x9f\x78\x3a\xc3\x5e\xef\x30\x4d\x66\x38\xae\xbe\x0c\x02\xe8\x05\x83\x24\x4e\x4c\xec\xaf\x0d\x8e\x37\x16\x41\xc0\x82\xd8\x1b\x8e\x6b\x2e\xf2\x9d\xb9\x70\x30\x50\xf4\xb3\x39\x7d\x69\x7f\x98\xd4\x53\x12\xd7\x8f\xef\xe8\x67\x05\x76\x1e\x63\x3f\xa1\xee\x5d\x7f\xaa\xd2\x4c\x3e\xb7\xa5\xe3\xbc\xe2\xe4\xc0\x31\xb3\x31\x2b\x77\x8d\x0e\x1b\xf6\x9c\xf6\x9a\xe5\x9b\x24\x63\xf3\x44\x99\x5b\xaa\x36\xf9\xb8\xcf\x8b\x82\x23\xe9\xea\xc7\x13\x85\x24\x8e\x29\xfa\x83\xa1\xc0\x6d\xfb\xde\x22\x61\x19\x9d\xf7\x6e\x99\x5a\xf6\x6c\x36\x13\x48\xa2\xa7\xe9\xaa\xeb\xaa\xaf\xdd\xd8\xf7\x99\xe8\x21\xa6\x28\x48\x8c\x4b\x63\x45\xb7\xf0\x86\x58\x65\x69\x96\x7b\x72\x29\x64\xeb\x5e\x45\xa6\xd9\x9a\x56\xb3\x26\x8b\xf5\x4c\x0e\x4e\x8e\x4f\xdf\xbc\x39\x7a\x62\x9c\x19\x02\xa3\x0a\x66\x5e\x25\xaa\x6b\x33\x4e\x33\x2d\xfe\xdc\xd4\xf4\x86\xaa\x5b\x21\xaf\x2d\x17\x6b\xdc\xb5\x75\xef\xea\xd2\xb6\xb0\xdf\x8f\x7b\xb6\x93\x81\xfb\xd2\x13\x8b\x5e\x30\xa8\xb6\xeb\x20\x58\xe5\x3d\xfa\x39\xa5\x74\x4e\xe7\xc1\xb8\x4a\x37\xad\xb8\xa8\x51\xc6\xb0\xbf\xf3\x0b\x06\xd3\x37\xfa\xb5\x51\x95\x70\x2f\x3f\xe0\x8d\x52\x7e\x65\xb0\x26\x48\x45\xe6\x0e\x2b\x49\x35\xc7\xc9\x92\x2c\x2f\x8a\x17\x0c\x2d\xb0\x09\x5a\xf4\x39\x97\x8b\x63\xb3\xca\xb5\x00\x31\xc9\x0c\xea\x40\xbb\xe9\xd8\x19\x46\x8f\xd7\x61\x88\xc4\xd4\x7e\xb6\xdb\x5a\x7f\x9e\x91\xb5\x51\xd5\xeb\x3d\xe3\x26\xc6\x7e\x34\x28\x21\x0c\x1b\xdb\x5d\xec\x39\x32\x7a\xab\x0e\x1e\x86\x6d\x51\xc0\x09\x7f\x8d\x6d\x3d\xa9\xa8\x11\x9d\xe9\xd5\xbe\xd3\x1a\x72\x77\xf7\x59\xc0\x54\xe7\xd3\xfb\x00\xc0\xc5\xff\x47\xdb\xb7\x2e\xb7\x8d\x2b\x09\xff\xff\x9e\x42\x46\x4d\x58\xc4\x11\xac\xc8\xb2\xe3\x71\x28\x23\x2c\x8f\xe3\xa4\x7c\x4e\x6e\x93\x64\xbe\x39\x33\x2a\x55\x0a\x96\x60\x1b\x89\x44\x6a\x40\x48\x8e\x57\xe2\xbb\x6f\xa1\x71\x21\x78\xb1\x33\x7b\x6a\xf7\x8f\x4d\x80\x20\x00\x35\x80\xee\x46\x5f\x77\xb1\x68\x56\xd2\xbd\xbd\x76\x43\x52\x3f\x97\x18\xbc\xc6\x6b\x55\x8d\x93\x5b\x89\xcd\x34\x3c\xbe\x16\x79\xd6\x3e\xdd\xd6\x44\x99\x77\x49\x5a\xd5\x20\xcf\x5e\xe6\x77\xd9\x22\x67\xf3\x0f\x32\xbf\x91\xbc\x28\xa2\x48\x74\x84\xdf\x5a\xd9\xb7\x88\x74\x7d\xd3\x29\x94\xd5\x0d\x7f\x5b\x35\xbb\x5e\x43\x4d\xf5\xf4\xc3\xb1\xea\x5d\x40\xa2\x6a\x96\xcd\xf8\xe2\x73\xfe\x8d\x67\x60\x8d\x51\x15\x9d\x5b\x5a\x87\xb7\x1e\xd8\x88\x0d\xe0\x00\xc7\x7a\xc3\xab\xea\xbc\xe2\x20\x0c\x6e\x66\xe2\xd3\x43\x5e\x7f\xbd\xe6\xd9\x3c\x36\x0e\x71\xe4\x57\x41\xb7\x75\xb6\x24\x41\x6c\xb5\x5a\x08\xc3\xa9\x3f\xfd\xbe\x7f\x77\x77\xa7\xef\x79\xcb\xfd\xb5\x5c\x18\x86\x77\x8e\x02\x61\xe2\x3f\xad\xc8\x72\xaf\xb9\x61\x30\xec\xd9\x5a\x55\x93\x01\x32\x92\x88\x46\x25\xb5\xfe\x6a\xbf\x0b\xf2\x87\xa0\x5b\x36\x67\x2b\xc5\x65\x12\x77\x6a\xcb\xeb\x7c\x53\x10\x2b\xea\xb5\x88\x22\x6f\xc9\x60\x65\x4b\x60\xcc\xf0\xa0\x91\x95\x91\x11\xbd\x16\xfa\x4c\xc7\xbf\x0b\xfa\x2f\x81\xc9\xef\x02\x13\x25\x59\x56\x68\x00\xd8\x41\x92\x49\x27\xc3\xf3\x5f\x1a\xd5\xa0\xb3\xd9\x8c\xaf\x14\xc2\xc4\x14\x6b\xbf\xcc\x9e\x29\xcf\x1a\x2a\xbc\xdb\x55\x3a\x44\x6f\x6f\x63\x2b\x9b\x65\x63\x68\x51\x95\x5f\x89\x05\x0f\x5a\x2f\xf2\x2b\x50\x28\x26\xcd\x1e\xad\x11\x4c\xea\xec\x5e\x92\x4e\x8d\xa8\xc2\x69\xfc\x4f\x98\xf2\x0f\x17\x7f\xac\x2f\x7f\x05\x57\x74\xad\xae\xf7\x4f\xc0\x2d\xb1\x52\xa4\x36\x15\x98\x5d\xbd\xea\x03\xdd\xea\xa4\xad\xe4\x4c\x54\x39\x0d\x81\x6f\x49\xf9\xa4\xc1\xdd\xb4\x6d\x72\x00\xc1\x58\xb5\xe9\x4a\x8f\x52\x49\xeb\x83\x50\x43\xd0\xbb\xa1\x1a\xc9\x90\xd4\x51\x75\x82\xfe\xfd\xe9\xe3\xab\xfd\xcf\xef\xff\x75\xf1\x0e\x91\x3a\x9e\x4e\xd0\xbf\xf7\xc3\xb7\x4b\xf6\xdd\xae\xf2\x1b\xe3\x10\xb2\x0f\x81\xb9\x02\xca\xdf\xa9\xbd\x7f\x41\x47\xc3\x61\x14\xa9\xd3\xc3\xe1\xb0\x2c\xc7\x7f\x08\x77\x7f\xa0\xdb\x59\xbe\x5c\xe6\x19\x24\x17\xe0\x2b\x95\xb4\x60\x47\x7a\x9a\xe1\x79\xba\x5a\x30\x91\x91\xde\x3f\x9e\xfe\x03\x95\x65\xa8\x70\x9e\x20\x83\xe2\x4d\x26\x00\x44\x4c\x8a\x9b\x69\x9d\x2f\xac\x06\x9c\xa8\x29\xdd\x96\x16\xe5\x57\x7d\xac\x8c\xa8\x68\xb5\x86\xbf\x1a\x7a\x8f\x77\xb1\x12\x03\x30\x44\x89\x7f\x35\x7e\xc1\xfa\x08\xff\x29\xe8\x1f\x81\x92\x0f\xf6\xfc\xf6\x51\x4c\x07\x58\xfd\xf2\xda\x1e\x35\x3e\x8f\x0d\x2e\xe0\xac\x33\x64\x00\x83\xdc\x9b\x1e\x72\xfe\x09\xf4\x12\xe6\x6a\x46\x97\xc2\x06\x13\xad\x1a\xea\x1d\xdb\x38\xd4\x61\x37\xfe\x97\xf8\xaa\x81\x59\x12\xdb\xad\xff\xd1\xf6\x76\x32\xad\xd7\xe3\x1f\xaf\x05\xe9\x82\x2e\x41\x66\x94\x1a\x98\xb9\x8f\x02\x5a\x8d\xcb\xc1\x93\x4b\x5f\x10\x0d\x6a\xdc\xed\xfe\x14\xee\x19\xc7\x6d\xa7\x6e\xde\x00\x18\xf7\x80\x31\x4f\x84\x77\x03\xc6\x1c\x38\x48\x9d\xde\x99\xb4\xe8\x46\xc4\x5c\x73\x01\xb6\xd7\x28\xe2\x9e\x42\x6b\xae\xcc\x17\x82\xe1\x6a\x55\x24\x28\x3f\x36\x01\x8c\x49\x15\x36\x1f\xf0\x8a\x8d\x9c\x23\x59\x43\x38\xce\x29\xa8\xa4\xac\xa3\x9c\xbe\x26\xd1\x09\x5a\xcb\x05\x22\xc8\x2c\x15\x00\x5b\x23\x3c\x44\x90\x9e\x02\x9a\x92\x9c\x4e\x90\x1d\xdd\x0a\x5a\x9d\x30\x13\x4d\x89\xa0\x13\x64\xaf\xc6\x88\xd8\x9e\x9a\x5b\xa7\x5e\x65\xe6\xec\xc7\xa9\x2e\xa5\xba\x99\x41\x37\x88\xa0\x06\x8b\xa4\x07\x36\xeb\x07\x82\xd2\x8a\xcb\x41\x04\xd5\x31\x93\xad\xa8\xd0\x11\x22\xa8\xc9\x4c\x40\x55\x93\x97\x31\x02\xdb\x1a\xa6\x42\x04\xd5\x11\x95\x69\xf3\x91\xcf\x85\xe4\x33\xa5\x8b\xb7\x4a\xad\x40\x90\x6a\x9f\x0b\x57\x08\xce\x2c\x22\xa8\xc8\x67\xdf\xb8\xfa\xc0\xd4\x2d\xaa\x19\xcf\x64\x8d\xd0\x04\x3e\xa8\xa3\xb1\xbd\x90\x1a\x6f\xe8\x67\xdc\xc0\x3e\x21\x83\x9b\x59\x93\x19\x4b\x52\xf8\x04\x02\xb1\x4c\x32\xc0\x38\xde\x94\x2c\x56\x93\x6c\x0a\x71\x62\x1c\x9b\x0d\xc3\x64\x53\xd3\x54\x3f\xd5\x29\xd3\x23\xdd\x04\x3d\x28\xb0\x34\x8b\xa1\x9d\x53\x92\x84\x13\x15\xf5\x89\x3e\x34\xf2\xa3\xfd\x8d\x8d\x84\x27\x73\xb7\xe1\x1c\x07\xe9\xfb\x67\xb5\x84\x45\xfc\xb1\xb4\xe9\x60\xae\xc3\xfc\x6d\x5c\x85\xd1\x0e\x82\x29\xcf\xfe\x17\xa6\x4c\x64\xc0\x00\x66\xcc\x4b\xea\xac\xc5\x7f\xe1\xd4\xd6\x22\x53\x5c\x6a\x22\x96\x6b\xba\xe6\xae\xce\x19\xbf\xeb\xdd\x0b\xe2\x2f\xe7\xa6\x5c\x96\x19\xab\xf9\xef\x1b\xa5\x51\xf8\x3b\xdb\xa4\x3e\x8d\x15\x0d\x93\x29\xe8\xd3\x8f\x07\x6b\xb9\x08\x6a\x87\xd3\x04\x92\x6c\x6e\x4b\x12\x2b\x2a\x59\x5c\x9b\x2a\x51\x18\x5b\x3c\x9e\x3a\x84\x4e\x03\xb9\x53\x70\x73\x4a\x6a\x1f\xb6\x3f\xea\x78\xdb\xec\xc0\xb5\x05\x62\x60\x43\x38\x4d\x38\xb3\x8c\xfa\x94\x48\xda\x4c\x10\xa2\x30\x98\x54\xb4\xc0\xe9\x00\xd4\x9d\x26\x9e\x0f\xd6\x59\x71\x2b\xae\x55\xac\x06\xde\x88\x8a\xb8\x70\x67\x7c\x8e\x7d\x58\xd4\x46\x9f\x16\x1d\x3f\xd0\xa9\x11\x7d\x3f\xd8\xe3\xd8\xa5\x88\x1d\x63\x49\xa5\x21\x43\x7c\x60\xe6\xa1\xc9\x8e\x7d\xf2\xbb\x52\x96\xa4\xb6\xe6\x37\x5c\xfd\x26\x3b\xe5\xb0\x9d\xeb\x46\x6e\x35\x69\x5f\xcb\xc5\xa3\xb2\xc0\xb6\x86\xe4\x6f\x30\x4b\x04\xd9\xc4\xa2\x4d\x9e\x27\x9c\xaf\xc6\x5e\x75\x99\x70\x68\xca\x66\xd7\x27\xf6\xdc\x84\x84\x2d\xb8\x35\x3b\x20\x51\x64\x2d\x17\x60\xe4\xf9\x9f\xb0\x5e\x8f\x4d\x23\x08\x1f\xd7\x3d\x91\xac\x6b\x22\x04\x44\x6b\x32\xf4\x8a\xc9\x19\xcd\x58\x75\xce\x45\x75\xce\x5d\x10\x70\x55\x0a\xd6\x71\x93\x6a\xeb\x6f\xd1\x39\xd0\x0b\xd4\x8f\xc3\xef\x53\x94\xf4\x50\x3f\xac\x49\x60\x79\x6a\x9d\x56\x36\x6c\x2e\xec\x26\x63\x54\x04\xf3\x9a\x31\x77\x13\xf0\x97\xf5\xbd\xe0\x2e\xe0\xed\x0c\x02\x6f\x66\xfe\x9d\xcf\xd6\x2a\x97\xbd\xe5\xba\x80\x00\x75\xcc\xab\xb6\x07\x36\x38\x1d\x6f\xc7\x29\x6e\x2b\x02\xf4\xa1\x80\xac\xf9\xe3\x20\x94\x94\x6a\x20\x67\x1b\x3e\x72\xb7\x8b\xdd\x23\xf4\xc6\x0c\xd7\xe4\x2b\x4d\xea\xb1\x59\x0d\x9e\x0d\x66\xb8\x21\xa9\xb6\xab\x0b\x1f\x9b\x9f\x19\xd4\x94\x64\xc6\x6c\x24\x90\x56\xd0\x04\x7b\xfe\xb6\x4a\x93\x6f\x40\xbf\x33\x56\xe7\x17\x15\x05\xf3\x63\x43\xe5\x13\x65\x13\x76\xad\x19\x9d\x05\x80\x2f\x58\xdd\xe6\x26\x67\x26\x66\x94\x10\x71\xde\x81\xca\x09\x0f\xc9\x91\xb1\x9a\x8e\x25\x09\x9b\x12\x0e\x27\xc1\xbf\xe3\x9a\xd2\x80\xfb\x18\xa3\x05\x8b\xff\x14\x78\x7c\xcd\x06\x60\x34\x40\x73\x46\xae\x99\xd5\xe9\x76\xa1\x8c\x82\xc5\x92\xc5\xd7\xac\x86\xe9\x4b\xfd\x8d\xd9\x8b\x94\xb1\xaa\x00\x8c\x0c\x5d\x43\x8d\x28\x6c\x83\x1b\xa1\x8b\x6c\xb1\xe8\xea\xde\xe1\x69\xe7\x17\x71\xcd\x06\xc5\x4a\x72\x36\xff\x51\x06\xad\x86\xf7\x17\x08\x4a\xb9\x4b\x89\xb6\x60\xf4\x9a\x91\x95\xfe\x3b\x5e\xf8\xa9\xd3\x15\x83\xb7\x73\x46\x17\x8c\xdc\xb2\xb6\x0c\xa3\xee\xc7\x44\x36\x8c\xd6\x92\x8f\x93\x7b\xd6\x95\xdf\x5d\x41\x3c\x55\x3a\x1c\xf3\xd3\xd1\xb3\xe3\x71\xbf\xcf\xb1\xb2\xfa\xc2\x27\xa8\x1f\xc7\xfc\xf4\xe0\x38\x45\x43\x13\x9e\x30\x30\x97\x3e\x38\x06\x5d\x41\xa0\x92\x09\x43\xf3\x61\xb2\x6c\xf2\xe5\x95\x75\x15\xdc\x12\xe0\xe6\x6a\x7e\x83\xcf\x08\x68\x16\x12\xc0\x81\x13\xe0\xdc\x87\xe3\xec\xd4\xfb\x7a\xf5\xfb\x19\x7e\x98\x25\x09\x08\xca\x0d\xa3\x5b\x30\x78\xfb\x9c\x5b\x47\x9b\x25\x23\xac\x28\xc4\x4d\x33\x42\xa0\xfd\xa6\xc1\x5f\x49\x3e\x5f\xcf\x6a\x67\x3c\x44\xec\x13\xa9\xd9\x23\x39\x25\xaa\xc4\x44\x99\xe4\x7c\x57\x22\xe3\x9d\x5d\x87\x49\x9e\xb9\x4d\xe4\xc7\x1a\x31\xcd\x82\x4c\x14\xdb\xfc\xea\x6b\xb2\xcd\x13\x55\x42\x92\xe7\x04\xe5\xa8\xd4\x1c\xc1\x64\x6a\x81\xc1\x43\x60\x04\xe1\x85\x35\xe7\x2b\x68\x3e\xc8\xaf\xbe\x4e\x20\x2c\xe2\x6a\x4a\x58\x8d\x6f\x04\x46\x72\x38\x9e\x9d\xb2\xaa\x8b\x99\x0f\x15\x36\x99\x4d\x49\x41\xc5\x64\x3d\x1d\xb7\x9c\x25\x0a\xef\x6d\x56\x58\x3f\x6b\xe9\x39\xcc\x02\xf2\xc0\x5b\x53\x6d\x3d\x79\x61\x26\xbe\x2e\x5d\xe6\xca\xb8\xa8\xb2\x29\x36\x7f\xf5\x58\x79\xeb\xbb\xb1\x0f\x07\x36\x58\xe5\xab\x58\xe3\x10\x0e\xbf\x86\x9b\x5f\x03\xc9\x74\x58\x2c\x71\x10\x1f\x52\x83\x25\xa7\xc3\x71\x5e\x79\x5b\xf6\xfb\x79\xb5\x47\x24\x68\xa7\x32\x33\x0d\x5d\xd0\xdc\x49\xd0\x27\xcd\xca\xb2\x84\x48\xf0\x25\x31\x7a\xe9\x96\x07\x87\xd3\xf0\x56\x6a\xcc\xfe\xd3\x1b\x82\x7a\x26\xbb\x0f\x12\x45\xbe\x7f\x72\xf2\xec\xf9\xfe\x01\x18\x47\x38\x03\xd2\x2c\xf0\x63\x98\x0c\xf7\x9f\xb3\xfd\xeb\xe9\x76\x54\x3e\xbd\x11\x64\x9d\xf1\x62\xc6\x56\xbc\x66\x7b\xdc\xa1\x14\x0f\x23\x63\xfb\x28\x1d\x25\x31\xf2\xb7\xd6\x34\xad\x57\xad\x4f\x1a\x54\x77\x8a\xa0\xa0\x4c\x46\x05\xe4\x2a\x0d\x39\xe7\x8c\x9a\xfc\xa5\x0f\x4a\x42\x15\xf6\x79\xbb\x6a\xae\x99\x59\x15\x12\x0a\x93\x87\xa0\x60\x7e\x68\x9c\x85\x5e\x1d\x6b\x0f\x8e\x23\x00\x47\xc7\x1d\x06\x3d\x19\x1d\x3f\x19\x1d\xa2\x3e\xc8\xed\x2e\x33\xcd\xbf\x1a\xb7\x84\x11\x26\x07\xc7\xb8\x8f\x9e\x1c\xfe\x82\x34\xc1\xad\xf6\x3f\x42\x44\xd0\xe1\x58\x9c\x66\xd5\x46\xf0\x16\x1b\x59\x18\x54\x46\xe0\xf1\xd1\x33\x7d\x49\xda\xed\x8e\x8e\xcd\xff\xe7\xb6\x7c\x30\xb2\x15\xec\x05\x3d\x3a\x89\x22\x76\x4a\x9f\xfd\x0c\xa5\xe3\x67\x50\x7a\x6e\x42\xdc\x3c\xff\x19\x4a\x07\xa3\x51\x9a\xf7\x6d\xef\xd0\x73\xc2\x4e\x0f\x46\x27\xba\xf2\x9e\x4d\xd8\x34\x61\xa7\xa3\xe1\x91\x2b\x1f\x3c\x1f\xed\xd8\x8b\x17\xc7\xd3\xbe\x2e\x8c\x4e\x76\xc7\x87\x11\xb4\xb1\xf1\x70\xd8\x0b\xfa\xec\xe7\xc3\xa3\x23\xdb\x7c\x34\x3a\xd2\xcd\x0f\x46\xbe\xbd\xfe\x38\x3a\x3e\x6c\x7c\x1f\x8b\x3e\x3d\x20\x8c\x42\x80\x9b\x7e\x1c\x1f\x0c\x47\x87\x11\xc3\xa7\xa7\x07\xc3\x1d\x3c\x37\x7e\x3d\x26\xb6\xff\xa3\x21\xf4\x7f\x12\xf6\x7f\x30\x0a\x07\xe8\x1c\xd0\x9f\xe5\xfc\x51\x8f\x55\xe3\x7e\xd0\x76\xeb\xc5\x51\xb4\xb7\x17\x37\xbc\x56\xff\xc7\xee\xa8\xe0\x46\x68\xcc\x4e\x1e\x73\x5e\x34\x2d\xfe\x8e\xc4\x5f\xa3\xf1\x25\xbb\xbf\xe2\x6f\x6b\x99\xfc\xac\xa3\xf2\x86\x41\xa6\xa3\x8a\x82\x79\x74\xac\x2a\x2f\x6f\x7a\x80\x2d\xc2\xb3\x12\x84\x80\x22\xb9\x03\x61\xc6\x69\xba\xbd\x05\x71\x96\x65\xcd\x2d\xbe\x05\x3e\xe9\xa6\xc3\xb1\x4b\x4d\x24\xb1\x4f\x79\xb6\xc7\x3b\x20\xee\x1c\xa4\x26\x9c\xc8\xe9\x38\x06\x25\x50\x8d\xf8\xee\x76\x99\x66\x60\xf2\xbb\x0f\x0e\x36\x05\xde\xed\xf6\x6e\x99\x81\x4c\x2b\xb9\x9d\x04\xdd\x88\x26\x80\x74\x6f\xe8\x77\x03\x2f\x7f\x3c\x01\x4f\x0a\xa5\x8b\xfd\xec\xcd\xba\xe0\x27\x45\xd1\x1e\x60\xf8\x28\x8a\x73\xba\x64\xe0\x27\x87\x89\x7d\x05\x6f\xd2\x58\x76\x5c\x4b\xa5\x35\x46\x70\x53\x86\x3c\x64\xd6\xd7\x89\x4f\xf2\xe9\x58\x74\x38\x0a\x8a\x28\x92\x0f\xf8\x0f\xe6\x53\xaa\x62\x01\x8b\x92\x78\x28\x9b\x28\x11\xf0\x52\x42\x14\x72\x9f\xe8\x18\xa8\xab\xec\xe0\x1a\x78\x95\x71\x53\x13\x1f\xf7\x5b\xc3\x69\xba\xd1\x20\xc0\x8b\x80\x01\x75\x85\x00\x79\x6b\x8e\xcb\x92\x5c\xb1\x87\xe3\x1a\xde\x31\x6a\x1d\xea\x2e\x18\xdd\x7e\x7c\x75\x7e\xf0\xf3\xe1\x49\x82\xec\x03\x22\x1f\x5f\x9d\x1f\x3e\x3f\x39\x86\x1a\xfd\x80\x4a\xf2\x85\xd1\x1b\x36\x30\xbc\x50\xbc\x75\xd1\x19\x2e\xd8\xc0\x36\x21\x60\xd6\xaf\x14\x97\x45\xe2\x7b\xec\xe0\x66\xaf\x98\x73\x94\xbf\x63\xe0\xce\x57\xfa\xd1\x3a\x5a\x7b\x62\x51\x96\x25\xb9\x60\x98\xbc\xff\x31\xff\xfa\x89\xd1\xed\x95\x64\xb3\x6f\x5c\x75\x6b\x4f\xfa\x68\x32\x45\xc0\x51\x2d\x59\x02\x72\x73\x86\x88\xc8\xe6\x62\x56\xcb\xf2\x1a\xba\x97\xf5\xd1\x04\xf5\x39\x24\x6f\x24\x92\xaf\x38\x53\x9d\x3d\x97\x25\xf9\xda\xe4\x9e\xbf\xb3\x66\xfa\x45\xd8\x19\xe4\xbc\xc9\xe7\x7e\x67\x2e\x74\x1b\xf9\xaa\xb7\x6e\xca\x13\xc8\x8c\x4d\x3e\x33\x0a\xa6\x6b\x21\x0e\xf2\x5e\x7f\xe4\x03\xa3\x5f\x3c\xb3\x4f\xce\x34\x07\x3b\x9f\xff\xba\xe6\xf2\xfe\x83\xe4\xd7\xe2\x7b\xb2\x77\x40\xe0\x98\xbe\xcc\x55\xa1\x0b\x56\x79\x96\x20\xa3\x3d\x73\xe5\x4f\x3c\x53\x22\xe3\x0b\xdd\x64\xce\x17\x62\x29\x14\x97\x09\x8a\x90\x63\x1d\xc0\xcd\x40\x3f\xc9\xe4\x86\x0d\xcc\xa3\xad\xf9\xff\x90\x21\xf7\x7d\xb6\xb8\xd7\x5f\x9b\x9d\x90\x7c\x60\xd5\x9e\x48\xbe\xb0\x41\xb5\x41\x26\x1f\xd8\xd4\x03\x7c\xef\x80\x14\x4e\xe0\xf2\x80\x0b\x7b\xef\x33\xab\xb0\x6d\xf1\x4d\xac\xde\xad\x17\x0b\xf3\xa5\x92\x62\xa6\x74\x11\x22\xe7\x8b\xec\x06\x22\xaf\xbf\xab\x60\xeb\xd0\xa4\x09\xa4\x52\x4f\x06\x69\x0e\xd9\x2d\xd9\x50\xfe\x40\x9c\xb5\x59\xba\xa1\xb3\x58\x92\x0d\x4e\x36\xa1\xd7\xb8\x9e\x68\xba\xa1\xd7\xf1\x06\xbb\x1d\x64\x14\xe5\x5f\x59\xbc\xd1\x78\x68\xa3\x4f\x8b\x23\x0c\xf1\xa6\x8b\x5d\xe9\xa9\x56\x8f\xd7\x10\x70\xa0\xc4\xd8\xda\x55\x12\x84\x31\xf1\xa1\x7c\x34\xaa\xca\x1d\x9e\x67\x51\xb4\xb7\x4a\x59\x2c\xc9\x99\x5b\x0c\x49\xe6\x04\x7d\xe3\xf7\x08\x27\x72\xbc\xa1\x08\x95\x1d\x1a\xce\xf8\x96\x6e\xf0\x6e\xd7\x8a\x2e\x70\xbb\xdb\xa1\xab\x3c\x5f\x70\x96\xd5\x2b\x9b\xcc\x1f\x34\x14\x37\x22\x53\xb5\xba\x1b\x56\xd1\xd9\x0d\xf6\xb3\x4c\x27\x8b\x78\x95\xca\xe4\x81\x89\x1a\xff\xd3\x45\xcc\xe2\x4d\xe3\x35\x04\x57\x42\x18\x4f\x93\xc9\x22\x96\xae\x9d\x0b\x20\x84\xb1\xb1\x7f\xbc\x27\x4b\xc8\x15\x7d\x5d\x45\x03\xda\xb8\xb1\x97\xba\xfa\x2b\x8b\x67\x18\xdf\xd3\x59\xe5\xa4\x7b\x53\xbb\xdd\x6c\xf0\xf8\x9e\xae\xd3\x9b\x41\x91\x4b\x15\xaf\x71\x72\xe3\xfd\xba\x4d\x48\xa3\xfb\x8a\x31\xbc\x32\x1b\xe6\x8e\xde\x4f\xae\xa6\xe4\x82\x6e\x26\x77\x30\xf6\x9e\x30\x01\xdf\xf7\x28\xbd\x30\x4d\xbe\x50\xd8\x08\x69\x57\x00\xa8\x54\x13\x9e\x3b\x9c\xc8\x44\xf6\xe3\x22\x45\x03\xd4\xbf\x4b\x34\x7e\xb9\xd3\xf8\x05\x8f\xcf\x59\xbc\x24\x2a\xbe\x20\x5f\x1e\xd8\xb5\xd8\x5b\x47\x2f\x4b\xf2\x86\xd1\x16\xa9\x6d\x62\xc4\x3a\x42\x6a\x58\xff\xd8\x2c\x1c\x8a\xe4\xcd\xb4\x8d\x7b\xde\xaf\xed\x8c\x8d\x7d\xd8\x15\xaa\xdc\x32\x45\x51\x75\xa9\xae\xea\xba\x04\x69\xee\x6d\xb7\x40\xed\xc2\xbc\x04\xb7\x4f\x95\x3f\x20\x51\xa3\x6a\x60\x11\xd5\x6e\x77\xc6\xdc\x73\x2d\x53\xaa\x6f\x11\x45\x16\xb7\x35\x2a\x83\xeb\x46\xf8\xa6\x7b\x56\x9f\x6f\x79\xcf\x36\xe8\x19\x79\xae\x17\xf8\x71\x01\xc1\x11\x61\x0c\xd2\xab\x7a\x25\xbd\x5c\xf6\x2a\x3b\x13\x27\xd8\xab\xd0\x73\x63\xba\x06\x23\x1a\x58\xbf\xb7\x28\xae\x86\x28\x89\x6f\xd3\x3d\xc7\xdf\xb2\x6f\x59\x7e\x97\xf5\x4c\x23\x37\xcd\x95\xcc\x37\x62\xce\xe7\x1a\x76\xd2\x0f\x53\x9a\x1b\x5d\x1d\x11\x4b\x7d\x0f\x3e\x63\x56\x31\xe4\x92\x43\x75\x1a\x2e\x99\x26\xbb\xdd\x57\x16\xbb\x02\x36\x1c\x97\x2f\x92\x26\xe9\x69\x63\x14\x35\xa8\x37\x49\x9b\x15\xc9\x19\x6b\xd4\x04\xd4\xab\x0a\x40\x34\xf0\x95\xe9\x19\x1b\x04\xf4\x6d\x2f\x78\xe5\x49\x1d\x6f\x11\xb9\xae\x99\x35\xda\xa4\xad\x9a\xa4\xda\x78\xae\x2a\x20\x95\xc1\xe4\x7c\xa5\x9e\x5c\xd5\x22\x78\xe1\x88\x6a\xd7\x3c\xcc\xab\xd4\x3d\x24\x67\x0d\x6a\x2b\x93\xce\x05\xb2\x2f\xfd\x77\x32\x09\x30\x6a\x8b\x4e\x3f\x3c\x70\xd5\x28\x6d\x57\x55\x7d\x56\x75\xc4\x2c\x7f\x92\x07\xf4\x3e\x6b\x10\xf5\xce\x19\xd7\x9a\xa4\x8d\xb2\x1e\xa9\x56\x11\x50\xfe\xae\xc9\xfb\xb7\x69\xf0\x0c\x9d\xb8\x02\xd1\x28\xfe\x81\x99\xe4\x52\xa5\xe6\x9f\x31\x17\xee\x60\x2c\x3a\x07\x6d\x35\x4b\xbb\x2a\x61\x1a\xad\x5a\x10\x21\x8d\x3b\xe6\x93\xdb\x03\x95\x66\x34\x1e\x12\x57\xc2\x31\x42\x9a\xd1\xff\xca\x62\x5f\x65\x72\x25\xb9\x92\x71\x09\x20\xcc\x92\xc4\x76\x30\x58\x97\x97\x84\xba\xf4\x6c\x08\x8d\x85\x11\xab\x82\xd8\xf3\x95\xc1\x23\x22\xeb\x7d\x62\x69\xad\x2e\xe1\x1a\x7f\x1a\x96\x0d\x89\xac\xc7\x53\x3e\xb0\xc5\xd4\xd7\x27\xc8\xf0\xc6\x28\xf1\x55\x63\x13\xb8\xee\x13\x9b\x88\xe9\x58\xee\x76\xb1\xac\x51\xdf\x0c\xc2\x51\x68\xb0\x47\x91\x34\x24\xd8\x14\x2b\x19\xcd\x9a\x0e\xc7\xeb\x50\x4e\x67\x23\xbe\x15\x54\x4e\xd6\xd3\x71\x5e\xad\xaf\x91\x36\xea\x5f\x37\x29\xa6\xbb\xdd\x39\x8b\x19\x79\xc7\x62\x5d\x22\x05\x99\xe9\x81\x5a\x6b\x40\x82\xef\x49\xee\x8e\x5e\xee\x8f\x10\x6c\x06\x07\x60\x3b\x55\x92\x07\x28\x26\x6f\x6c\xd2\xbc\x42\xaf\xbe\xbf\xe0\xa8\xe4\x9e\xe8\x18\xdb\xa4\x6b\xe7\x43\x93\x57\xb8\x01\x93\x05\x05\x17\x9c\xbc\x89\x2c\x21\x80\x06\xaa\xb2\x10\x34\x90\x51\x14\x35\x05\x8b\xbe\x49\xba\xe8\x53\x4d\x14\x4f\xa8\x11\x92\x1d\x0c\x87\xc3\xc3\x27\x87\xbf\x44\x28\xa9\xde\x5c\x8c\x9e\x3c\x3f\x7f\xf2\xfc\x30\x42\x55\x24\xc6\x17\xc3\x74\xd1\xbf\x4e\x10\x2a\x31\xf9\xc6\x3a\xfc\x3b\x89\xc0\x5b\x13\x89\x24\x50\x56\x5b\xb3\x04\x7f\x4d\xaf\xaf\xb9\xef\x3a\x8a\x62\x46\x79\x1f\xa5\xa8\xff\x86\xc1\x66\x90\xe9\x9c\x4d\xd4\x34\x66\x44\x12\x81\x13\x50\xab\x6a\x94\xea\xab\x05\x4e\xdc\xe3\x1b\x16\xe7\x98\x08\x7d\x83\x64\x1d\x79\x62\x5b\x11\x79\xf4\x78\x9e\xfa\x86\x2a\xfe\xb4\xa6\xef\xdf\x96\x20\x42\xfe\xc9\x78\x44\xa5\xfe\x29\xd1\xc7\x4f\xbf\xb0\x36\xf4\x39\x45\x4f\xd9\x4a\x3c\xdd\x0c\x9f\xb2\xd9\x2c\x5f\x67\xaa\xf0\x0f\xfb\x0b\x51\x28\x44\x04\xdd\x96\x84\x05\xa1\x82\x2b\x83\x89\xc1\x55\x3e\xbf\x87\xd8\x29\xe6\x31\xb0\xb7\x35\x15\x69\xc3\x6c\x29\xf0\x76\x7e\x2b\x8a\x42\x64\x37\x3d\xc9\xff\x5a\x0b\xc9\xe7\xbd\x1e\x28\xae\xb9\x46\xbc\x3d\xfd\x2d\x32\x69\xab\x7e\xfa\x0b\xf6\x8e\x7b\x57\x44\x51\x4d\x5f\xd1\x7a\x8f\xbb\x55\xf7\x02\x2c\x6d\x5a\xad\x27\x0a\x4c\xc9\xbe\xb1\xd8\xea\x9c\x65\x3f\x27\x0a\xf8\xd5\x0c\xe3\x92\xbc\x65\x74\x9b\xb1\x25\x2f\x56\xcc\xa4\xa8\xb1\x29\x9d\x6c\xf2\x17\x73\xb4\x44\x26\x94\x39\x3d\x90\x18\xca\xc1\x2f\xd9\x96\x25\x31\x09\x43\x0b\xff\x41\xd7\x15\xca\x3a\x34\x94\x44\x14\x97\x41\x57\x9d\x4d\x83\xb1\xa0\xf3\x33\x3b\xd8\x27\x70\x60\xe8\xfa\xc6\x82\x0b\xee\x22\x45\xac\x06\x6e\x7a\xd8\xa0\xaa\xb8\x5b\x58\x30\x58\x81\xe3\xaa\xe4\xf3\x77\x6c\xc9\x61\x41\x6b\x35\xa9\x1a\x88\x39\xb8\x33\x2e\xf8\x79\xbe\x5c\x31\xc9\x63\x3e\x10\x73\x9c\x34\x3e\x6d\xb5\xa9\xbd\xb5\x69\x0a\x5d\xfe\xac\xed\x22\x67\xf3\xf3\x26\xa4\xf4\xbc\xe2\x21\x51\x60\x84\x28\x14\x8e\xd1\x9b\xf7\x67\x2f\xbf\x9c\xbf\x7f\xf7\xea\xf2\x35\x02\xcd\x52\x05\x96\x2e\x10\xfc\x25\xe3\xd7\x72\xb0\x64\xf2\x5b\xf5\x73\x7b\xbc\x4a\xdf\xe7\x76\xf6\x6b\x39\xb8\x93\x6c\x55\xd7\x04\x83\xaa\x66\x8c\x6d\x64\x51\x98\xff\x86\x72\xc8\xfc\x6b\x62\x8b\xf6\x86\x3e\x36\x28\x75\x73\x84\x28\x8d\x2e\x2b\x22\x31\xad\xe9\x21\xc9\x6c\xf2\x57\xb7\x6a\xc8\x04\x11\xed\x1d\x26\x32\x46\x9f\x2e\x3e\x7f\xb9\x7c\x77\xf9\xf9\xf2\xec\xcd\xe5\x9f\x17\x2f\x21\xd8\xb1\x79\x7d\x94\x40\xa8\x51\x9e\xcd\x7d\x18\x52\x3e\x28\x54\xbe\x8a\x21\x21\x0f\x40\x11\xc7\xb8\x24\xb5\xce\xff\x13\x48\x98\xbb\xda\xff\x35\x3c\x7e\x62\xc0\x71\xcb\x3c\x57\xaf\xcd\xf9\xc0\x0e\x46\x47\xe4\x23\x8b\xb7\x0e\x5b\xe5\x03\x9f\x64\x09\x2e\x52\x36\x5f\xb7\x46\x0f\xfa\x74\x79\xf0\x8c\x86\x90\xd7\x43\x50\x3e\x28\x78\xa6\xb0\xf5\x15\x4a\x63\x46\x05\x58\x5a\xfa\x5d\x4f\x2c\xa0\xcf\xce\xcf\xdf\xff\xf6\xee\xf3\x27\x44\xd8\x6e\x37\x99\x62\x9c\x64\x31\x2a\x6e\xf3\xbb\xb7\x2e\x1f\xf9\xd6\x86\xaa\x78\x65\x5c\x92\x54\xde\x03\xe8\xf6\x5c\x4f\x03\x04\xfe\xf6\x75\x7f\x29\xeb\x57\x85\xe6\x2c\xbb\xe1\x12\x95\x64\xab\x7f\x24\x64\xc6\x32\x73\x3d\xfe\x9b\x4b\x59\x92\xa5\xcd\x52\x5e\x24\xdb\x60\xbb\x37\x8e\x45\x15\x74\xa0\x24\x8d\xfd\xd3\x6a\x19\xa0\x0e\xd7\xdc\x41\xa1\xd5\xd6\xfd\x48\xca\xcb\x30\x7e\xda\x4f\x60\xf0\x30\x67\xdd\x86\x58\xeb\xba\x8f\x68\x90\xc6\x1a\xf0\x87\x33\x25\xae\x79\x67\x56\x99\x02\xd6\x05\x97\x03\x30\xc8\x18\x4b\x50\xab\x76\xb6\xa7\xe8\x17\xce\x24\x97\x3d\x54\xc9\xd3\x03\x39\xbc\xe5\x48\x5e\x5a\xb4\x9d\x20\x7f\xd2\x88\x98\x27\x88\x55\xa5\x59\x9e\x25\xe0\x37\xb7\xbf\x99\x31\x39\x47\x36\x8a\xe4\xc5\x5c\x28\x93\x5b\x1a\x6c\x30\x0a\x9b\xd6\xcf\x11\xbf\x2d\x5b\xad\x2e\xb3\xeb\x3c\x79\xc9\x88\xcc\xd7\x8a\x17\xc9\xc4\x8e\x54\xf5\xbd\x62\xea\x36\x41\x4f\x11\xe8\xbb\x41\xa1\x59\x24\xfa\xc3\xe4\x52\x96\xe5\x94\x64\x6c\x73\xa9\xf8\xb2\xfa\xf2\xac\x36\xab\xb7\x4c\x01\x33\x96\xbc\x64\x03\x5d\x36\xe3\x24\x0f\x8e\xe2\xe0\xa0\x9b\xcf\x09\x7a\x8a\xb0\x1e\xa4\x50\xb9\xe4\xc9\x5b\x70\x21\x1c\xff\xbf\xff\x0e\x00\x00\xff\xff\xd0\x0a\x71\x25\x70\x13\x01\x00") func init() { err := CTX.Err() diff --git a/ui/store/index.js b/ui/store/index.js index a9e8d78fd0..86917928b4 100644 --- a/ui/store/index.js +++ b/ui/store/index.js @@ -14,8 +14,12 @@ const getters = { config: state => state.config, isInitialized: state => state.initialized, getAccountsSorted: state => { - // FIXME: look at data fields for available sorting options - return Object.values(state.accounts) + return Object.values(state.accounts).sort((a1, a2) => { + if (a1.preferredName === a2.preferredName) { + return a1.id.localeCompare(a2.id) + } + return a1.preferredName.localeCompare(a2.preferredName) + }) } } From 907d6cf58bf7d049eef39e43c1aeed98997497a2 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 10:33:42 +0200 Subject: [PATCH 181/407] Prevent text wrapping in list headers --- pkg/assets/embed.go | 6 +++--- ui/components/accounts/AccountsList.vue | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index d9bd3a9793..05681b36f9 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-07-01 10:31:22.183724 +0200 CEST m=+0.004338656" from config file "embed.yml" DO NOT EDIT. -// modification hash(46272a1cc6804ae4223e07dac999a19a.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-07-01 10:33:08.357879 +0200 CEST m=+0.004710909" from config file "embed.yml" DO NOT EDIT. +// modification hash(09507ae962d6602e619241c120807f8e.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,7 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\xfd\xfb\x7a\xdb\x38\x96\x28\x8a\xff\xfd\xdb\x4f\x21\x71\x32\x1c\xa0\xb5\x4c\x4b\xa9\xae\xea\xdd\x54\x10\xb5\xe3\x38\x97\xaa\x24\x4e\xd9\x49\xea\xa2\xa8\xbd\x69\x0a\xb2\x10\x53\x80\x0a\x84\xec\x38\x22\x7f\xef\x73\x5e\xe3\x3c\xd9\xf9\x70\xe3\x45\xa2\x53\xe9\x99\x3d\x93\xef\x8b\x45\x82\xb8\x2e\x00\xeb\x86\xb5\x16\xe6\x74\xc1\x38\x45\x68\xb1\xe1\xa9\x62\x82\x23\xbc\x0d\x36\x39\xed\xe5\x4a\xb2\x54\x05\xe3\x9b\x44\xf6\x14\x09\x36\xdc\x66\x9c\x07\x7d\xa2\xee\xd6\x54\x2c\x7a\x57\x99\xb8\x4c\xb2\x77\x4b\x96\x4f\xea\xc7\xb8\x2b\xe7\x2d\xe3\x73\x71\x3b\xb1\x3f\x9d\x39\x6c\x05\xae\x9e\xce\x1c\x39\xcd\x16\x13\xfd\x27\xde\x96\x63\xdf\xd9\x1e\x45\x0a\x28\xde\x4a\xaa\x36\x92\xf7\x14\xa2\x64\x4b\x3f\xaf\x85\x54\x79\xbc\x2d\x4b\xa0\x91\x7b\xc3\xf5\x63\xa9\x47\x24\x49\x73\xc8\x0a\x6f\x75\x22\x25\xfb\x29\xa7\x97\x9f\x68\xaa\xa2\xb5\x14\x4a\xe8\x9e\x80\x24\x34\x5a\x26\xf9\xe9\x2d\x7f\x2b\xc5\x9a\x4a\x75\x07\x9c\x04\xbe\x60\x40\x7c\x7f\xcf\xef\x56\x97\x22\x9b\xd8\x9f\x78\x5b\x82\x20\x3c\x62\x8a\xca\x44\x09\x59\x14\xc1\x3f\xfe\xe1\x5f\x02\x60\x84\x47\x49\x7e\xc7\xd3\x97\xcd\xef\xad\x94\x00\x12\xc2\x23\x25\xce\x95\x64\xfc\xea\x5d\x72\x65\xb2\x34\xde\x83\x1a\x28\xa9\x06\x0a\x48\xe0\x76\x10\x82\xd0\x30\xa4\xf5\x10\x7a\x8c\xe7\x2a\xe1\xa9\xee\xe5\x62\x42\xe3\x05\x30\x3f\xcc\x54\xd2\x44\x51\x24\xea\xcc\x58\xb7\x4b\x6f\x7b\x17\x88\x17\xc5\x74\x86\xc7\x0e\xd4\x2c\xba\x60\xfc\x46\x5c\x37\x61\xa6\x1b\xb5\x4d\x72\x12\xe4\x9b\x7c\x4d\xf9\x9c\xce\xcf\x55\x22\x55\xe0\xcb\x55\xb9\x05\x30\xbc\x65\x0b\x14\xd0\xcf\x34\xdd\x28\xc6\xaf\x02\x42\x08\xc7\x6a\x29\xc5\x6d\x4f\x37\x79\x22\xa5\x90\x28\x78\x4e\xb9\x05\x41\x8f\xe5\xbd\x24\x93\x34\x99\xdf\xf5\xe4\x86\x73\x5d\x04\x8f\x75\x15\xa9\x58\xad\x33\xaa\xe8\xdc\x56\x61\xaa\x35\xf5\xe8\x77\xe1\xaa\x64\xbe\x0b\xe7\x08\x97\x0b\x21\x91\x8c\x56\x54\x2d\xc5\x9c\x08\x90\x51\x22\xaf\x08\x1b\x8f\x6d\xf7\x13\x22\xa3\x39\xcd\xe8\x55\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x44\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x39\x4e\x05\x57\x8c\x6f\xa8\x6f\x20\x2d\x4b\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x4e\xb9\x22\x32\xba\x70\xbf\x89\xbc\x1a\xd3\x2c\xa7\xbd\x56\x87\xab\xfc\x66\x1c\x3b\x70\x6c\xc2\x88\x34\x06\x6e\x87\x30\x96\xd1\x9c\xe5\xeb\x44\xa5\xcb\x93\xcf\x29\x5d\x1b\x48\x9b\x2f\xb8\xd4\x0d\x05\xb6\x87\xcd\x56\xc2\x50\x46\xc9\xa5\xdc\xac\x15\xf2\x5f\x6d\x5d\x78\xcc\x49\x63\x72\x0c\x22\x58\x90\x8d\x9b\x66\x03\x77\x2e\xe4\x2a\xc9\x74\x6d\x8b\xc8\x2c\x16\xdd\x63\xae\x81\x27\x38\x9d\x34\x7a\x17\xd7\xc3\xf8\x8d\xd1\x6c\x1e\xc0\xc2\x40\xbc\x03\x7a\xdb\x9b\x24\xdb\xd0\xd8\x7c\x07\x5d\x4f\x6c\xab\x2b\xcb\x1a\x42\xb6\xb5\x30\x44\xbb\x20\x70\x13\xea\x72\xba\x69\x5d\xd8\xf1\x97\x25\x52\x20\x21\xc1\xc0\xca\x6a\xab\xf8\xe1\x6c\x95\xbc\x73\x58\x64\xab\xeb\x8e\xfd\xd8\x20\x91\x57\xb1\x8a\xd2\x24\xcb\x90\xce\x58\x96\xa9\x86\xae\x46\x10\xad\xec\xae\x45\x93\xbb\x2c\x4b\x15\xdd\xca\x64\x4d\x52\x03\xb5\x9c\x34\x51\xd6\x02\xe1\x6d\xdd\x81\xac\xf5\xb6\xd6\x6f\xba\xc8\x5c\x17\x99\x4f\xc5\x8c\x34\xf0\xb2\xc7\x72\x4b\x96\x97\xa6\xe2\xa5\xdf\xb7\x57\x54\xbd\xf5\x3b\xf6\x74\x01\x37\x64\x19\x86\x4b\xb4\x44\xa7\x68\x3a\xc3\x18\x8f\x6f\xc2\xf0\xa6\x4f\x34\x1e\x90\x76\x28\x37\x20\x70\x18\xa2\x39\xb9\xc1\xa6\xa6\x3b\xb2\xae\xf7\x3c\x59\x34\x9e\xdb\x98\x61\x8e\xeb\x81\xac\x34\x10\xa6\x76\x99\x83\x07\x80\x5f\x43\xb3\x68\x21\xe4\x49\x92\x2e\x1b\x68\x96\xe2\xad\x9a\xd2\x59\x0b\xcb\x36\xc6\xe4\x31\x0a\xa2\xa0\x70\x59\x62\x5c\xc3\xe5\xca\xa2\x79\x83\x5a\xc6\xcd\xbc\xa4\x8d\x4f\xaa\x02\x49\x0d\x2e\x8d\x4a\x9a\xc8\x9e\x43\x82\xb7\xfd\x2a\xa7\x29\x09\x09\xa4\xb6\xfa\x5c\xaf\xf0\xa9\x98\x81\x02\x66\x17\xb9\x1d\x58\x9f\x90\xdc\xad\x71\xbb\x11\x72\xb3\x40\x33\xb2\x88\xcc\x82\xf5\x7b\x3f\x0b\xc3\x40\x18\x90\xd5\xa4\x20\xab\xc0\x9e\x41\x70\x71\x91\xdc\x26\x4c\x05\x78\x42\x23\x49\x73\x91\xdd\x50\x94\x45\x2e\x15\x47\x6a\x49\x79\x9b\x32\x71\x87\x49\x40\x99\x5e\x96\x18\x76\x3f\x3b\xd0\xfb\xef\x38\x6e\xd4\xdc\x55\xa3\xeb\x32\x51\x90\xa0\xc5\x5e\x85\x1e\x6c\xfb\xf5\x96\x29\xca\xed\x5e\x32\x30\xd3\x80\xd4\xa9\xbe\x00\xe1\x13\x6e\x5b\x4b\x20\xc1\x71\x82\x70\x59\xcf\xe0\x65\x3d\x83\x92\xa8\x8a\x10\x4e\xa9\xdb\xb3\x33\x0d\xeb\x1b\xc1\xe6\xbd\xa1\x46\x4e\x06\x93\xd0\x0a\x09\x13\xbe\xc9\x32\xa8\x11\x00\x6d\xa2\xc8\xba\xb6\xc8\x76\x25\x0c\x11\xad\x50\x81\xc7\x69\xd4\xe0\x02\xdb\x02\xd8\xde\x74\x55\x88\xdd\x68\xf2\x31\xdd\xc5\x26\xb6\x06\xbd\x9c\xde\xdd\xad\xa9\xa3\x4e\xef\x96\xb4\xe7\x9b\xef\xcd\x05\xcd\x7b\x5c\xa8\xde\x5a\x8a\x1b\x36\xa7\xbd\xa4\xf7\x1f\xa6\xf0\x7f\xf4\x6c\x5d\x41\x05\x2d\xcb\x86\x70\xb2\x41\x12\xea\x01\xd8\x36\x9a\xeb\x4e\xe3\x7b\xbb\xee\x5c\xc1\xfb\xba\x65\x96\xe3\x2e\xc4\xf2\xb1\x65\x00\xb8\x25\x0e\xb6\x06\x31\x11\x16\x41\x23\x3a\x55\x7a\xa5\x6c\x32\xf5\x26\x59\xd1\x19\x11\x76\x61\x00\x8d\xf4\x8a\x23\xca\xfc\xbc\x12\x69\xb5\xab\xfb\x35\xa4\x5a\x40\xb6\x0b\xb4\x09\x62\xbc\xdf\x17\x1c\x8b\x18\x7d\x1b\x54\x2b\x88\xda\xde\x69\xca\xaf\xc1\x9a\xf0\x9e\xdb\x5b\x5d\xd5\xd7\x8b\xed\xb6\xe6\xdf\x34\x62\x7f\x25\xd2\x58\x4d\x87\xb3\x72\x3c\xea\x31\xde\x53\xa6\xeb\x06\x8d\xbf\x12\x29\x51\xd3\xd1\x0c\xc3\xc3\xfa\xcb\x82\xf1\x24\xcb\xee\xec\xb7\x87\x33\xdd\xc3\x85\xa2\xd2\xbe\x7f\x37\xc3\x60\x10\x90\x92\x77\x27\x5c\x49\x46\xf3\x68\xbd\xc9\x97\x88\x36\xda\x3f\xa9\xdb\x57\x91\x23\x50\x4c\xf0\xa2\xd8\x96\x63\x6a\x66\x93\x54\xf4\x45\x8f\x42\xd1\x9e\x01\x03\x34\x73\x13\x5a\x57\x78\xa1\x2b\xdc\x69\x96\x4c\xfd\xd8\x02\x29\x84\x0a\xca\x19\xa8\x0a\xe9\xde\x9a\x4e\xba\xae\x4a\x9a\x53\x85\xfa\xc3\x46\x0f\x4f\x75\x85\x7a\xef\x54\xfd\x9c\x0a\xb3\x05\x1b\xeb\xcc\x60\x2c\x65\x17\xe3\x3e\x7f\x6b\x17\x87\xcf\xad\x74\xae\x3e\xcb\xdf\x24\x6f\x90\x8a\x32\xca\xaf\xd4\x12\x7b\x5e\xf0\x60\x04\x8c\x34\x58\x76\xbc\xd5\xec\xd7\x78\x30\xe0\x8f\x7c\xde\x31\x66\x0b\xe4\x90\xa4\x02\x8e\xeb\x5e\x38\x54\x35\xe5\x7a\x22\xf4\xb2\x25\xfd\x11\x54\xe8\xd6\x7f\x77\xfb\xda\xe7\x18\x02\x2d\x6b\x4e\xd5\x2c\x66\x56\xba\xad\xb7\xd5\xaf\xf1\x79\x03\x37\x9d\x57\xc4\xc2\x31\x1f\xae\x36\xc3\x7d\xf4\x87\xbe\x60\x2f\x6b\x90\xc5\xbb\x28\x15\x3c\x57\x72\x93\x2a\x21\xc9\x1a\xd6\xad\xf7\x0c\xd6\xd3\x64\x46\x32\xc3\x8d\x65\xc9\x9d\xde\x5e\xa4\xe6\x64\x9f\x79\x68\xea\xad\x9f\xef\x25\x77\x88\x21\x5d\x13\x10\x86\xaa\xd9\xa8\x1b\x6f\xbf\xaf\x19\x23\x4a\x08\xc9\x8a\xa2\xa3\x49\x42\x88\x46\xac\x75\xbf\x8a\x82\x46\x3c\x59\x51\x8c\x4b\x50\xd1\x2a\x91\xd7\x5d\x04\xda\xb1\x01\x79\x8b\xd1\x98\x74\xa6\x22\x05\x6b\x1c\x23\x15\x5d\x5c\x18\x78\x5d\x5c\x90\x35\x24\x66\x7f\x15\x05\x52\x1a\x30\x1d\xfd\xc2\x18\xd4\xbd\x6c\xc7\x1d\x06\xa5\x7b\x97\x18\xae\x6a\xbf\x7b\x5b\x47\x3f\x35\xef\x05\x2b\x74\xd5\x94\x5f\x1a\x2f\x53\x76\x2f\x3f\x05\x2a\x3a\x6a\xca\x5b\x44\x6f\x46\x23\x81\xd5\x25\x8c\x4c\x05\x86\xd1\xa8\x28\x15\x0b\x43\xc4\xc8\x5b\x29\x56\x2c\xa7\x96\x97\xb2\x02\xd3\x15\x4a\x7d\x01\xac\x59\x09\xdf\x58\xd7\x84\x23\x89\x27\x49\x9c\x98\x85\x8a\xba\x28\x76\x55\xd8\xe0\x6d\x65\x17\x7d\x55\x40\x13\x61\x58\x69\x20\xdd\xb5\x81\x1b\xc0\xdd\x57\x58\x48\xb8\xab\xe4\xc9\xfd\x2c\xc1\xd4\x62\xda\x5e\x55\xd9\x2c\xd0\x40\xba\xa6\x77\x79\xc7\xfa\x9c\xce\xc6\x7a\x4f\x1b\xf2\x6e\x66\x1a\x53\x8b\x16\x25\xae\xb7\xaa\xa4\x37\x54\xe6\x14\x61\xa8\xb6\x9e\xf4\xc8\x80\x56\x88\xc0\x21\x0d\x1a\xad\xc5\x1a\x19\xec\xc3\x6d\x8d\xae\x1e\xe9\xb6\x3c\x07\x59\xe1\x03\x59\x56\x1f\x3d\x02\x90\xa5\xee\xae\xc9\x9a\x93\x53\xb8\x68\xac\xad\x6d\x63\xd7\xc4\x17\x60\xd0\x63\xdc\x1c\x93\x46\x8c\x1a\x71\xae\x25\xbd\x21\x43\x8b\x44\x0d\x12\x71\xcf\x46\x7c\xb3\x6c\xa8\x79\x74\xf8\xc2\xa4\xf8\x2e\xd9\x97\x16\x89\x32\x49\x6d\x92\x69\x92\x1a\x8c\xc9\x2e\x69\xf1\xf8\xfc\x04\x43\x5f\x61\x0f\x62\x6a\x00\xa2\x11\x7c\xa0\x2c\xf7\x92\x2e\x13\x79\xa4\xd0\x10\x57\xac\xa6\xfe\x0c\x14\x87\xa1\xc3\xca\x03\x1a\xe5\x19\x4b\x29\x1a\x61\xcd\xf9\xeb\xcf\x9a\x17\x77\xd4\xba\x84\x5c\x89\x75\xdc\x58\x06\x8d\xc1\x0c\x9d\x12\x68\xa7\x73\xd3\xe1\xac\x41\xae\xda\x3c\x8b\xb2\x3c\x8b\x15\x54\x55\x93\xfb\xb0\x14\xe9\x26\xc9\x4a\xd8\x13\x55\x3b\x27\x41\xf7\xc1\x57\x34\x76\xc4\x6a\xc9\xf2\x71\x83\x83\x37\xaa\x0e\x57\x7f\xe2\xe8\xab\x17\xc8\x0c\x74\x95\x67\x69\x24\xf0\x3f\x65\x5c\xfa\x7d\x5e\x7a\x48\x8b\xdd\x41\xbb\x65\x7a\x30\x1a\x8b\xc7\x64\x38\x3e\x38\x10\x76\xc1\xb2\x3d\xe8\x88\x19\x24\x84\xed\x42\xc8\x90\x6a\x8d\x37\x22\x4b\xbc\x71\xcd\x6e\x53\x3e\xb7\xfa\x0c\xff\xed\x11\xa9\x56\xa1\x57\x40\xb8\xc9\x65\x10\x78\xfe\x25\xc0\xb0\x69\x24\xd7\xcc\x8b\xad\x2b\x0d\xc3\x4d\x7b\x41\x3f\x62\x15\xef\x53\x37\x5e\xa7\x41\x7f\x68\x0a\x36\xf3\xd7\x95\x36\x4b\x34\x52\x4b\xaf\xc5\x48\xff\xe5\xb6\x4c\x51\x5d\xa8\xbf\xd9\xd7\xfd\x28\x79\xd7\xcb\x55\xa2\xe8\x8a\x72\xd5\xbb\x65\x6a\x29\x36\xaa\x67\x8a\xf7\x84\xec\xb9\x1e\x04\xff\x89\x0e\x97\x65\x09\x56\xed\x11\x37\x15\x58\x16\x1b\x59\x0c\x74\xef\xcc\x73\x3b\xf3\x95\x7a\x6d\x77\xe6\xb9\xe1\xa4\xc4\xfe\x2c\x56\x9b\x53\xb4\x27\x2a\x0c\xeb\xce\x8b\x66\x37\xdd\xd2\x12\xe3\x4b\x49\x93\xeb\xb2\xd4\xd4\x26\x30\xcf\x66\x93\x15\x45\xe0\xb5\x27\xe6\x1d\x87\x61\xbd\x76\x68\x18\xd2\x47\xa4\x39\x6a\x43\xaa\x34\x26\xf2\x74\x8a\x4d\x9a\xeb\x33\xde\x56\x3c\x93\xdb\x44\xca\x6d\x1f\x0a\x6c\x82\xee\xc3\x5e\x96\xbb\x6a\x34\xa3\x39\x7d\xf3\xc5\xab\x66\x50\x82\x4b\xf0\x2f\x3b\xe0\xfe\x36\xac\xd1\x18\xb3\xc9\xb2\x3b\x70\x93\x38\xa9\xbb\x63\xca\xc6\x0d\x6d\x97\xcb\x81\x2a\xec\x43\x2a\xcc\xab\x2c\xe7\xdd\x1c\x9d\x97\x19\xeb\x0a\xed\xe6\x8c\x1b\x1a\x2f\xe5\x74\x50\xd4\x21\x53\x9b\x8f\x62\xc8\x4b\x58\x30\xce\xf2\x65\x0b\x9b\x55\xa8\xfb\xfe\x65\x45\xed\xb2\xaa\xa5\xe4\x9d\x65\x45\xcd\xb2\x92\x4d\xf9\x44\xcf\x79\x13\xaf\x56\x10\x97\x8d\x79\x05\x59\x09\x30\x18\x4e\x90\xd4\x5d\x2c\xc1\x6c\xa2\xff\xae\x2e\xda\x35\x68\xba\xe7\xc8\xb9\xbc\x97\x54\xf0\x86\x5a\xc5\x4b\xaa\xba\x97\x9e\xa4\x8b\xb2\xdc\xc3\x0b\x2c\xd3\x74\x35\x73\x98\x20\x51\x8a\xae\xd6\x2a\xc0\x25\x78\x82\x6b\xb4\x8c\xf1\xae\x6a\xba\x09\xaa\x8a\x34\x6f\xbd\xb0\x19\x6b\xa1\x08\x6a\x79\x38\xa6\xe0\xe4\xdf\x58\x96\x50\xa9\x73\x1b\x2b\xc5\x4f\x7d\x93\x7a\x68\xd8\xaa\x12\xa9\xea\xe4\x61\x6c\x55\x8b\x57\x9e\x8f\x3a\xdb\x70\xc5\x56\x94\xd0\x5a\x93\x58\xf1\x81\x81\x34\x1a\xb4\xdd\xbc\x3d\xd2\x93\x01\xd6\x22\x66\x89\x31\xf0\x4e\x05\x9a\x96\x06\x5e\x27\x6a\x49\x88\xfe\x1b\x86\xca\x9c\x38\xa0\x3d\x65\x54\x7d\x54\x13\x86\xf5\x33\x2e\x8a\x8e\xbc\xf6\xc0\x26\x0c\xed\x6f\x77\x9e\x9c\x66\x8b\x30\xd4\x7f\xbb\xbf\xeb\x8e\xe1\xa2\x68\x0c\xb1\x9e\x84\x00\x23\xdc\x10\x0d\x8d\x90\x5b\xe9\x61\xfb\x7d\xcd\xda\xee\x68\x5b\xb5\x34\x06\x09\xe9\xb3\xd6\x81\x95\xab\xf2\x6f\x7d\x2f\x36\xd8\xd3\x23\x7f\x40\x83\xb6\x25\x8c\x60\x7b\xd5\xe4\xf2\xea\x42\x65\x89\xa7\xa3\x99\x06\x6c\x4a\xb6\xa5\x66\x13\x4d\xa1\x97\xf9\x09\xdf\xac\xa8\x4c\x2e\x33\x0a\x9b\x86\xa2\xb5\x71\xf2\xf3\x94\xe6\xa9\x64\x6b\x25\x24\xe4\x64\xbb\x88\x37\x61\xd8\x4f\x2d\x86\xdf\x8e\xe2\x87\x25\x8c\xf0\x64\x9f\x57\xde\x58\xde\x4c\xe1\xa6\xc4\x46\x23\x5a\x35\x57\xc6\x69\x09\x0b\xd2\x46\x94\x4e\xd0\xa9\x73\xc5\x7d\x34\x0a\x15\x86\x54\xf0\x05\xbb\xda\xf8\xb4\x87\x3a\xed\x56\x32\xe5\xde\xff\xaa\xdf\xad\xbc\x40\xcb\x12\x32\x3d\x46\xcf\xf6\x43\x97\x2c\xd5\xcb\xbc\xe4\xef\x18\xc6\xff\x0d\x07\x23\xbd\xb5\x48\x10\x44\xf9\x3a\x63\x0a\x96\xa4\x0b\xfe\x7d\x0b\x23\x14\x7c\x09\x70\x27\x18\xd1\x50\x8b\x2a\x93\xfd\x26\x03\xdb\x9d\x80\x90\x35\x52\x78\x32\xf7\x7a\x80\x20\xc0\xb1\xab\x54\xe1\xd2\x3d\xc2\x0d\xd9\x61\x13\x35\x49\xd3\xa8\xc6\xa2\x89\x86\x1a\xe9\x38\xe1\xff\xa1\xd9\x85\x2c\x73\xfa\xb7\x9e\xe0\xbd\x60\xa0\x6a\x69\xac\x84\xbb\x2e\x10\x2c\xd1\x0d\x52\x46\xaa\xea\xf8\xba\xbf\xc4\x27\xba\x07\x7d\x42\x54\xdc\x25\xa7\x97\x70\x45\xf6\x88\x5e\x7f\xa5\x1b\xa8\xb4\x27\x06\x9d\x82\xc1\x8c\x34\x0c\xf7\x6b\x41\x52\x13\x1c\x37\x6d\x9a\xa9\x5f\x99\x73\x16\x37\x51\x55\x45\xbc\x5b\x59\x63\x4a\x9b\x35\x70\xba\xf8\x93\xc2\xfd\xff\x5a\xf3\xf7\x4d\x81\xe0\x37\x54\x2a\xa7\xbd\xeb\x29\xd1\x5b\x4b\xb6\x62\x8a\xdd\xd0\x9e\xe9\x97\xc6\xdd\x97\x7a\x69\xee\x1c\xad\xde\x76\xee\x82\xde\xa5\x5f\x21\x14\x97\x70\x42\x44\x34\x17\xe9\x46\xf3\x88\x70\x41\x56\xe8\x04\x87\xe1\x0a\x9d\x38\xe5\xc1\x49\x66\xb8\x47\x0c\xa7\x5d\x33\x7d\x31\xd9\xc9\x87\x14\x36\x47\xc7\xe7\xa4\x9f\x68\xe1\xe9\x5f\x42\x34\xa7\x28\x98\xb3\x9b\x00\x43\x90\x04\x5f\x43\x38\x51\xa2\xf1\xcd\xa7\x3f\xc5\x2a\x9f\x35\x56\x49\x26\x9f\xf6\x99\x26\x45\xee\x34\xb5\xa2\xe4\x0a\x51\xcd\x46\xc3\x39\xae\x51\x67\xef\x93\x05\x4d\x85\x3c\x4b\xb6\x40\xb7\x26\xcd\x4f\xd5\x02\xf5\xf3\x68\x51\x83\x11\xd4\x94\xce\x70\x59\xc2\xf1\xee\xee\xb2\x2b\x75\x77\x62\xed\x52\x40\x0a\x0f\x82\x0e\xed\x6c\x63\x7f\xbd\xeb\x06\x15\xbc\xb5\x43\x7b\xb7\x47\xa4\xd9\x02\x1d\xb7\x87\x76\xac\x79\x96\xd6\xf8\xde\xb9\xcc\xed\x11\x06\x57\x54\x05\x8c\xf7\x64\x51\x04\xb9\x7b\xdc\x47\x0a\x47\x69\x4a\xf3\x5c\x48\xdb\xe9\x7c\xb3\xd6\x64\x9a\xce\xab\x4e\x07\x76\x41\xea\xc2\x9a\xbe\x6b\x21\xd9\xa9\x1c\x30\xa8\xb2\x84\x23\x92\x4c\xee\x61\x2c\xde\x46\x0b\x93\xb2\x40\x23\x90\x18\x97\xf7\x32\x20\xa6\x52\x50\x25\xbc\xd9\x59\xdf\x7a\x8c\x47\x48\x40\x63\xfa\x24\xde\x8a\xa9\x9a\x11\xea\x19\x22\x5a\xc2\x2b\x22\xa6\xc1\xc5\x45\x2a\x24\x3d\xf8\x94\x5f\xe4\xcb\x44\xd2\xf9\xc5\x45\x30\x2b\x8a\x37\xa8\xeb\x03\x6c\x4b\x0c\xd7\xc4\x53\xe1\x6a\x2f\x8f\xeb\xbd\x5e\x59\x5a\xbc\x8a\x18\xcf\xd7\x34\x55\xe7\x62\x23\x53\xcd\xdf\xee\xa4\x74\xed\xa3\x6b\x8f\x0c\x4a\x2b\x5c\x9c\xc1\x6b\x78\x00\x4f\xc9\x4e\x51\x78\x49\x44\xf4\x0b\x4d\xae\x5f\x27\x6b\x78\xd6\xa5\xd6\x7c\x19\x86\x87\x3c\x31\x98\x21\x15\x73\x7a\x18\x29\x9a\x2b\xf4\x14\xbd\xc4\x18\xde\xef\x5a\x6d\xd4\x6c\x56\x37\x9e\x78\x35\x55\xb3\xa2\x40\xfa\xc7\x31\x68\x7d\x42\xe8\x84\xc6\xdb\x12\x97\x18\x05\x37\x54\xe6\x4c\xf0\x3c\x80\xe9\x0c\x5b\x85\xd5\xd6\xa5\xc5\xc1\x77\xd1\x0f\xd1\xf7\x01\xac\xc4\x9c\xc6\x81\x65\x95\x02\x48\xc5\xfa\x4e\xb2\xab\xa5\x8a\x83\xff\xf7\xff\xe9\x3d\x1c\x3e\x1c\xf6\x9e\x52\xce\xf2\xde\xdb\x4d\xbe\xbc\x4e\x24\xbd\xe9\xa1\x2f\x99\x60\x52\xa4\xd7\x91\xdc\xe0\x40\x37\x84\xe1\x09\x19\xc2\x73\xc3\x99\x45\x32\xe1\x73\xb1\x42\x18\xbe\x74\xd1\x16\x6b\x2f\x82\x82\x81\xdb\x60\x95\xa2\x51\x4d\x82\x20\xd6\xdb\x0d\x5f\x04\x03\x34\x18\x3c\x19\x3c\xc7\xd5\x34\xa2\xef\x7e\xc0\x25\xfc\x41\xde\xa3\xe0\x9a\xde\xe5\x01\x86\x0f\x5d\x93\xf4\x87\x05\x87\xfe\x21\x5f\x2c\x81\x7b\x41\xb6\x25\xfc\x5a\x4f\x8a\xa6\x01\xcf\x2c\xa7\xf2\x93\xd1\x63\xfe\x0a\x3f\x93\x9f\x34\x86\x82\x1f\xc9\x4f\x1a\x3d\xc3\x2f\xe4\xa7\x28\xa7\x6a\x7c\xd6\x0d\xf3\x5f\xec\x4a\xf8\xc9\xac\x61\xa0\x25\xbc\xee\xea\xca\xcf\x55\x2e\x5c\x14\x1a\xdf\x3e\xe8\xca\xf5\x63\x9d\xab\xb4\x8a\x02\xdd\xb1\xdf\xc8\x07\x14\x18\xb5\x40\x80\xc7\x2f\xa6\xbf\xcd\x48\x7f\x08\xf7\xf4\xe6\x08\x29\xf8\xed\x6b\x1d\xd1\x68\xf1\x37\x3c\x51\xd3\xdf\x66\xf1\xbd\xfd\xb0\x99\x4a\x73\x66\xf7\x3b\x28\x45\xb6\x39\x55\xf1\x19\x68\x0c\xff\x1a\x96\x49\x1e\x3f\x00\xca\x17\x42\xa6\x34\xee\x28\xfe\x40\x73\x35\xaf\x35\x65\x39\x43\x4a\x6f\xc5\x52\x97\x54\x54\x3e\x13\xb2\x2b\x7f\xf3\xc4\xdc\x70\x06\x63\x8b\x87\x29\x2e\x0a\x24\xc9\x6b\x44\x31\x36\x52\x53\xbf\x93\xed\x79\xc9\xb5\xac\x95\x28\x76\x99\xd1\x9e\xa4\x29\x65\x37\x54\x82\x66\x7c\x06\x41\x4f\xd2\x3f\x36\x4c\x36\xf0\x5d\x4f\x96\x65\x09\x54\x75\x5b\x44\x29\x43\x9d\x40\xea\x07\x37\x42\xe0\xc4\xad\x3a\xc7\x0f\x58\xae\x10\x79\x2e\x0e\x8f\xef\xd9\x96\xc0\xa0\xb2\xa4\xe9\x1b\xea\xda\x4f\xa2\x0d\xcf\x93\x85\xe6\xb0\xab\x94\x9a\xc5\x85\xbc\x4e\xe5\xe2\x5d\x22\xaf\xa8\x7a\x4e\xd5\xb8\x03\x6d\x18\xcd\x48\x6e\x3b\x50\x61\x32\x5a\x14\xb7\x88\x41\xc0\x93\x15\x0d\x70\x51\x1c\x55\x2f\x7a\x45\x48\xc4\x70\x94\x5b\x8c\xc6\xa3\x4f\x82\xf1\xaa\x86\xaa\x5a\x8d\x2b\x02\x73\x36\xd1\x27\x44\x4c\x50\x3a\xe9\xe7\x61\xa8\xf1\x77\x18\xa2\x0d\xe9\x0f\x71\xec\x0e\xf0\x74\x1a\x6c\x26\x06\xb5\xb3\xf8\xc8\x8e\x17\xe3\xb8\x4a\x7a\x83\x74\x42\x89\x51\x85\x84\x6b\xa3\xb2\xc0\x6f\xe4\x00\xf6\xd9\x8d\x2e\x9e\xd2\x88\x6f\xd4\x08\x12\x7e\x0c\x45\xf1\xd4\xbe\x97\xd8\xa0\x1c\xa9\x88\x00\xae\xba\x90\x4c\x47\x85\x13\xe5\x4e\xbd\x4a\x10\xaa\x7b\x2b\x25\xf2\xca\xf0\x58\x5e\x1f\xf0\xe8\xe1\x84\x2b\x24\xd5\x54\xcd\xb4\xe8\xa7\x90\x26\x53\x38\x36\x09\x61\x68\x7e\xa6\x74\x56\x14\xc2\xbc\x0b\xfb\x5a\x02\x53\x16\x0f\xa6\x94\x65\x90\xb8\x97\x45\x26\x84\x84\xb4\xab\xb7\x3d\x77\xaa\x48\x06\x0a\x4f\x86\x31\x52\x8f\x87\x93\x44\xc5\x4c\x61\x4d\x6d\x60\xe3\x6a\x58\x31\x0e\x79\x67\x79\x5d\x60\xa3\x90\x11\x22\xe0\xef\xc3\xe1\xdf\x46\x7f\xff\xfb\xc3\xef\xff\xfa\xb7\xbf\x0e\xff\xfe\xf7\x11\x8e\x87\x25\x2c\x7c\x1d\xc9\x67\xc8\x1a\xf5\xad\x3b\xeb\x6b\x9f\x07\x39\xc5\x05\x30\x72\x87\x8c\xb5\x5c\xae\x10\xf3\x27\xa0\x90\xee\x80\xd2\xaa\x4d\x4c\x57\xaa\xed\xf7\x68\x38\x59\x28\x24\x07\x14\x86\x38\xce\x14\x92\x9a\xf6\x1b\x33\x15\xa3\xd6\x0c\x43\xd9\x27\xd2\x1d\x93\x24\x8f\x53\x73\x54\x8a\x04\x61\xd3\x74\x30\x98\xe1\x3e\x11\xb8\x92\x8d\x8d\x1a\xb6\xca\x98\x0e\x06\x26\xaf\x2a\x8a\xb4\xc7\x78\x8f\xe1\x30\x64\xd3\x74\x66\x0c\x2c\x3c\x70\x8a\x22\x2d\x8a\xa1\x17\x45\x55\x18\x1e\x8c\xca\x12\xe6\x8a\x6c\x19\x4f\xb3\xcd\x9c\xe6\xf1\xda\x1c\x1e\x03\xe3\x73\xfa\xf9\x74\x61\x5e\x47\xb8\x8c\xdc\x3b\x2c\x77\xd7\x8b\x13\x66\x2c\x87\x2a\xc8\x10\x98\x3f\x1f\x32\x67\x43\x1c\xf7\x6f\xd1\x0b\x90\x38\x0c\x6f\x11\x37\xbf\xac\x3a\x2c\x6a\x1d\x06\x3d\x16\x63\x6c\xb2\x10\x3a\x15\x7a\xb0\x61\x88\xfe\xff\x73\x85\x18\x48\x5c\x14\x55\xa1\xda\x28\xb1\x84\x1b\x45\xa6\x41\xe3\x7c\x27\x80\xa0\x2d\x52\x04\x10\xb0\xbc\x71\x5a\x19\x40\xd0\x25\xab\x06\x7a\x4f\xbe\x12\x69\x92\x51\xbf\x33\x1b\x9b\x34\x70\xc2\x54\x30\x83\x3b\x45\x6e\xcc\x39\x6c\x9a\x28\x14\xd8\x7e\xdb\x3a\x6d\x0b\x01\x86\x95\xd2\xbc\x6e\x27\xaf\xff\x26\x59\xd1\xbc\x28\xba\x44\x50\x85\x14\xdc\x69\xba\x07\x57\xf7\x97\xb7\xec\x42\x5e\xc2\xa5\x22\x42\xa1\xe0\x8c\x2e\x32\xcd\x81\x43\x20\x6e\xf9\x4f\x86\x15\x68\xd7\x6e\xb1\xfa\x4a\x45\x96\xcb\xc6\x20\xc9\x95\x8a\x16\xd5\x62\x9c\x50\x3f\x16\xa9\x3f\xc7\xb4\x84\xdb\xdd\xf9\xad\x4e\xfa\xc8\xa5\xd2\x6b\x9e\x93\xb7\xd1\x02\x04\xf9\x1c\x2d\x80\x91\xe1\x98\x3d\x92\xfe\x34\x8f\x0d\x06\x95\x49\xe5\x94\xcd\xc6\x9a\x90\x26\x46\x51\xa4\x20\x01\x81\x28\x24\x58\x0f\xf1\x44\x91\xc3\x7f\x2b\x3e\xd6\x28\xf1\x63\x74\x08\x17\x9d\x0b\x8b\x9c\xab\xe9\xa9\xde\x40\xb3\xaa\xd3\x84\x7c\x56\x45\x21\xfb\xe4\x93\xd2\x64\x60\x1f\xbd\xd1\x09\x43\x14\xc7\xfd\xbe\x96\x17\x4f\x15\xb9\x50\x91\xd5\xe4\xb2\x2f\x9d\xdc\x6c\x25\xdd\x44\x92\xae\xb3\x24\xa5\xe8\x44\x41\x10\x05\x9a\xe3\x7a\x25\x6e\xa9\x3c\x4e\x72\x8a\x70\x09\xe7\xa6\xae\x79\xa2\x12\xcd\x47\x7d\x32\x6f\x6f\x8e\xde\xbd\xfc\x70\x42\x82\x37\x01\x7c\x36\x09\x6f\x4f\x5f\xfd\xf6\xec\xe5\xab\x57\x24\x78\x1b\xc0\xb1\x4e\x82\x77\xca\x40\xeb\xed\x3d\x5b\xc7\x5a\xa4\xc1\x46\x4b\xdd\x86\xea\x41\x4e\x54\x64\x79\x50\x58\x10\x15\x69\xee\xc7\xa8\x5a\x49\x3e\x11\xf1\x62\x22\xa6\x1b\xc3\xfb\x6f\x34\x77\x11\x23\xfb\xba\x2d\x71\xe3\x20\x5c\xcf\x9a\x39\x49\xb5\x02\x64\x42\xe8\x94\xcf\x80\x11\xd5\x24\xad\x13\x94\x92\x77\xca\x1c\xa8\xe1\x30\x4c\xdd\x41\xb3\xd4\x39\xfb\xc7\x0a\xe5\x13\x1e\x6f\x06\x68\x31\x09\xa2\x20\x0e\xfe\x2d\xc0\x03\x6e\x8d\x4e\x52\x3a\xc7\x61\x58\xb1\xd8\xd6\xb4\xd7\x01\x3f\xa9\x89\x74\x6d\xec\x79\xab\x50\xa2\xc9\x21\x52\x51\xbe\x4c\x56\x45\xc1\x34\x16\xd0\x8f\x38\x0c\x8f\x50\x02\x81\x7e\x0e\x8c\xfc\x47\x4d\x87\x20\x31\x5c\x20\x1c\x29\xd2\xef\x7f\x6d\x33\xdc\x23\xb5\xf7\x3d\xd3\x62\x39\x6c\x4b\x24\xdf\x28\x72\xa4\xc2\xb0\x6f\x13\x4d\xfb\x61\x18\xe4\xe6\x6d\xd7\x96\xbb\xb6\xd2\x7a\xa5\xc8\x91\x94\xc9\x5d\xc4\x72\xf3\xdb\xb5\x81\x03\xf3\xc5\xa9\xb4\x4a\xb8\xee\x24\x25\x4e\xb9\xe5\x94\x4d\x67\xca\xcb\xca\x9a\x89\xbf\x1f\x2b\xdc\xe8\x0a\x5f\x2b\x92\x4c\xba\x44\x6b\x46\xf3\x1d\x75\x81\xde\xe8\xf5\xf1\x3c\x70\x72\x66\xb6\xad\x20\xdc\x6d\x53\xb3\x6b\xc5\x63\x36\xc6\x56\x82\x95\x84\x4f\xd9\x60\x30\x03\x3a\x95\xb3\xa6\x30\xff\xc0\x62\x19\xaf\x6d\x09\xa0\x7a\x74\xda\x93\x00\xc3\x53\xa5\xd9\xf3\x97\x27\x17\x6f\xcf\x4e\xdf\x9d\x06\x18\x5e\xaa\xa6\x79\x41\x09\xcf\x3a\x79\x92\x47\x56\xe9\xf1\xd8\x70\xa9\x8f\x3e\x1e\xfa\xd7\x12\xde\xb7\xca\x6b\x09\xf9\x77\xe2\x9b\x8d\xe6\x62\x95\x30\x1e\x86\x5a\x54\x39\x4a\xb5\xd8\xf8\xab\x57\x43\x2e\xd5\x2a\x5b\xb0\x8c\x06\x4d\x35\x81\x39\xc9\x06\x3a\x7e\xaf\xc8\xef\x2d\x4d\xa4\x8a\x6e\x25\x53\x14\x3d\x53\xc8\x32\x7c\x51\x9a\x09\xbd\xc9\xfd\x99\x73\xb4\x4e\x24\xe5\xea\x17\xa3\x0b\x8f\x6c\x23\x15\x68\xec\x01\x3f\x2d\xd1\xef\x38\x46\x88\x92\x53\x14\xb0\x85\x34\x6c\x27\x8e\x72\x75\x97\x55\x26\x37\x24\xe0\x82\xd3\x00\x1e\xa8\x28\x59\xaf\x29\x9f\x1f\x2f\x59\x36\xd7\xf3\x41\xa3\x5c\xa6\x9e\xb5\x0e\x3e\x25\x37\x89\x85\x41\x1c\x60\x40\x8a\x18\xc4\xac\xea\x1e\x78\x10\xe0\x48\xac\x29\x47\xba\xc7\xf5\x08\x2a\xf8\x3c\x73\x4b\xaa\x35\x24\x50\xd1\xb3\xc6\x8a\xd0\x04\xcc\xe1\x6b\x79\x70\x30\xc6\x8e\xa3\x7d\xdf\xb0\xc7\x99\xde\xa8\xa9\x9c\x55\x18\xf7\xbd\x42\xb8\x1c\xbf\x98\x3e\x55\x33\x6f\x1e\xf0\x44\xb5\x6d\x76\x9a\xcb\xb7\xc2\x6c\xbe\xbc\xd7\x97\x4e\xd0\xcb\xa6\xd1\x8f\xd1\xfb\x48\x23\x76\xbe\x54\xd0\xfa\x64\xe0\x2b\x4d\x83\x0a\xc7\x92\xe8\x1e\x40\x25\x1c\xd3\x89\x8c\x5f\x3b\xce\x09\x9e\x2b\x43\xdf\xe0\x8b\x6a\xe9\xba\xff\x50\xe4\x4f\x0e\x38\xc2\xf0\x7e\x1a\x3d\xb9\xff\x13\x72\xc7\x23\xf1\x74\x06\x1f\x0c\xa9\xee\x12\xbd\x55\x18\x56\x36\x35\x76\x06\x67\x01\x21\x5f\x94\xd7\x9b\x4c\xba\x4f\x41\x7a\xcf\x8d\xee\x7b\xe7\x18\xa4\xf7\x87\x72\xca\x79\x5c\x96\x5a\xae\x7c\xae\xd0\x9d\x41\x22\x25\xbc\x50\xe4\x3d\x0a\x6e\xaf\xf3\x00\xc3\xaf\x8a\x88\xc8\x62\x2f\xf8\x49\x91\x37\x6a\xf2\xab\x8a\x7f\x55\x61\xf8\xab\x8a\xdc\x69\xfa\xb9\x11\x44\x8b\xe2\x0b\xfc\xdc\x89\xa2\x6e\xd1\x0b\x65\x84\x74\xa4\x11\xe5\x2d\xfa\x55\xbf\x4d\x5e\x68\xee\x9e\xfc\xaa\xff\xc6\xf6\xf9\x27\x2d\x00\x5a\x3c\x19\x0c\x34\x63\x61\x92\x4b\xf8\xd1\x40\xe4\x67\x55\xc2\x2f\xca\xf0\x09\xbf\xd9\x9f\xdf\x15\xf9\x59\xa1\xa0\xe9\xc1\x82\x41\xed\xbb\x93\x68\xec\x7c\x8b\x14\x91\x13\x15\x37\xfd\x70\x7e\x57\x38\x0c\x7f\xd3\xe8\xf0\x77\x05\xdb\xf6\x21\xc8\xb0\x3a\xf0\xc0\x25\x50\xba\xab\xd1\xec\xd0\x79\xed\x4b\xd1\x5d\x0a\xce\x8a\xf5\x6f\x69\x38\xe5\x7e\xa7\xd9\x02\x51\xaa\x17\x73\xbd\x42\x6b\x5d\x7f\x7e\xcb\x9c\x5e\x2f\x4d\x72\xda\x1b\xc6\xbb\x72\x45\xc3\xde\xcb\xfa\x1d\xe0\x72\x6c\xb2\x8e\xf6\xb2\xca\xbd\xbc\x20\x7d\xee\x87\xfb\xb9\x1b\x76\x32\x75\x7e\xe0\xbe\xc4\x77\x5d\x25\x40\x74\x96\x01\x81\x2b\xc3\xc8\xae\x9e\x27\xeb\x75\x76\xa7\xf9\x3b\x2f\x35\xea\xb5\xc9\xa9\x99\xf4\x7c\x4d\x53\x46\xf5\x02\x15\xb4\x8b\x01\xf2\xc0\x7d\xa5\xd7\x7e\x8b\xa3\xeb\x37\x0f\x24\x1a\x6c\x3e\x36\xec\x9f\xa5\xca\x61\xd8\x7f\xa5\x90\x6c\xb0\x3e\x93\x15\xd2\x52\x86\x3d\x27\x22\x48\x12\x39\xe5\xd4\x48\x13\xd2\x9f\xdb\xc6\xd5\x13\x70\x7a\xdb\xb0\x44\x9f\x98\x3a\x63\x89\x91\x45\x34\xc3\x58\xe3\x18\x46\xc9\x74\x66\xe4\x0f\x48\xba\xdc\xc6\x46\x84\x68\x32\xfa\x50\xff\x70\xf2\x9d\xfe\x11\xe4\xaf\xfa\x87\x91\x1f\xf4\x4f\x42\xbe\x37\x06\x1c\x6c\xcf\x31\x2a\x85\x0d\xe4\xb0\xa8\xd9\xec\x0c\xd6\x30\x27\xd7\x0a\xa5\x18\x6e\xc8\x12\xcd\x31\xdc\x11\x49\x91\xce\xf6\x1d\x86\x95\x96\x38\x6f\x2a\x89\xf3\x8a\x0c\xe1\x92\x2c\x8a\x42\x50\xb8\x25\x74\x72\x89\x52\x58\xe1\x58\x9a\x87\x21\x76\x52\xfe\x78\xf5\xf8\x6a\x7c\xe5\xe4\xc3\xa4\x28\xae\x34\x63\x78\xa3\x21\xb2\x26\x77\x28\x23\x37\xd3\xab\x19\x5c\xc1\x1c\x83\xc2\xd8\x98\x05\xdf\x4e\xaf\x66\x64\x5d\xb9\x2b\xad\xb1\x5b\xc6\xca\x2d\x63\xbf\x76\xfa\x43\xbb\x96\xbe\xf7\x6b\x29\xb3\xef\x3f\xf8\xf7\x2b\xbf\x3a\x99\x33\x31\xbe\x85\xac\x36\x20\xaa\x84\xd9\x51\x25\xd4\x4d\x0e\x46\x31\x2f\x0a\x31\x11\xf1\x6d\x59\x42\x4a\xc9\xd6\x99\xc5\xc5\x09\x45\x43\x0c\xab\x64\xad\x9f\x46\x18\x16\x2c\x53\x54\xea\x97\x87\x18\x72\xb1\xa2\xfa\xf1\x3b\x0c\xf4\x86\xca\x3b\xfd\xfc\x57\x9d\x87\xcf\xf5\xe3\xf7\xf6\xf1\xa5\x96\x62\xf5\xfb\x0f\xb8\x84\x0d\x25\x29\xf5\x46\x77\x90\x53\xcd\xc9\x2c\xd9\x7c\x4e\x79\x80\x61\x41\x1d\xc6\x7a\xeb\xcf\xae\x02\x0c\x99\x51\x91\xe5\x54\xc1\xda\x2b\xcb\xac\x5e\xcf\x63\xc3\x00\xc3\xbc\xc3\x8d\x70\x49\x6b\xcc\x7c\x43\x0d\x57\xf5\xe3\xf9\xe9\x9b\x00\x9c\x0a\x8a\x2d\xee\x02\x0c\x77\xd4\x88\x09\x2b\x6a\x50\xe6\x15\x25\x1f\x34\x61\xbb\xa4\x24\x8f\x16\x70\x4b\x35\xa2\xb7\xbc\xaa\xde\x4b\x27\xe6\x5d\xac\x0f\xea\xa4\x0b\x9b\xc5\xd4\x78\xa0\x84\xfb\x72\x20\xe9\x15\xcb\x95\xd4\x2d\x9c\x36\x2a\x31\x39\x6c\xde\x46\x8e\x73\x5a\xd3\x93\x4f\xba\xd7\x3f\xbb\x73\xd8\xcf\x94\xf4\x3f\xd1\xa2\xe8\x7f\x6a\x38\x17\xee\xbc\x46\x1a\xc4\x86\xc3\x81\x63\x4a\x92\x30\xbc\xef\x3c\xed\x89\x42\x2b\x8a\xb6\xe5\xd7\x4e\xce\x56\x56\xe1\x65\xb3\x58\x0c\xff\x37\x73\x96\x56\x62\x7b\xa2\xb6\x77\x2e\x63\x6d\x4f\xee\x28\x9a\x53\xa0\x78\xcc\xc3\xd0\xf1\x36\x73\x3a\xa5\x33\x58\x51\x97\x11\x78\x18\xaa\x3e\x21\x73\x1a\x86\x2b\x9b\x5b\x63\xc5\x78\x45\xe1\x5d\x27\x86\x22\xb7\x54\x13\xbd\x27\x0a\x2d\x1b\xa3\xad\xa8\x42\x46\x91\x04\xe7\x19\xe6\x96\x01\xa8\xe4\x2a\x56\x30\x77\x87\x7b\x4c\x70\x4d\x9e\x20\x29\x0a\x24\xa3\x46\x2a\xa1\x18\x64\x09\x6f\xa9\xa6\xd6\x1d\x7c\xf2\xae\x6c\xa2\xca\x2e\x76\xa3\x3a\x35\x6f\xf8\x7a\x2e\x69\x09\x47\x1d\x04\x96\xd8\x71\x1f\x51\x74\x42\x2d\x34\x8c\xc0\x60\x61\xe7\xce\xe0\xfc\xc0\xcc\x51\xdc\x2d\xba\xd5\xe0\x99\x20\xd9\xd0\xd5\x4e\xcc\x01\x63\x4e\x71\x18\xaa\x69\x4e\x67\x53\x3e\x33\xc7\x67\xf6\x91\xf4\x47\x9a\xb3\x7b\xa2\x79\xb4\xa6\x0d\xc3\x02\x0d\xa1\x3f\x32\x4e\x4b\xbe\x7c\x51\x98\x69\xc9\xed\x31\xda\x56\x4b\x69\x75\x2d\x43\x0c\xc7\xfa\x2b\x07\x89\x71\xbc\xf2\x8f\x25\xbc\xd9\x9d\xa6\x6a\x0c\xd2\x2a\xe6\x8c\xd4\x23\xb1\xd7\x6e\xbc\xa6\x4d\xc5\xd1\x86\x22\x0e\x2d\x47\xb5\x44\x53\x11\x87\xa0\x34\x5b\x59\x14\x47\x6e\xb1\x98\x73\x52\x6c\x0c\xd2\x5f\x75\xa1\xfe\x2b\xa4\x8c\xd4\x2a\xc9\x25\x6d\x99\xe2\x7a\x1d\x9b\x79\x77\x40\x37\xa0\x34\x56\xba\xb7\x06\xfa\xc6\x36\xb7\x8f\x64\x51\x68\xa6\xc7\x96\x33\xcf\x26\x5b\x51\xb8\x44\x0b\xe6\x25\xcb\x0d\x60\xe8\x4c\x93\x3f\x2d\x64\x76\xaf\x55\xa3\x87\xab\xa7\x92\x2d\x90\x34\x6b\xdd\x57\xcc\x4d\xc5\x27\xfa\xc1\x9b\x61\xdd\x51\xc3\x2c\xf8\x2e\x8b\x76\x56\x69\x3b\x20\xdd\xb4\x14\x05\x12\x8d\x95\x60\x66\x49\x94\x25\x9c\x75\x82\x87\x5a\x4e\x15\x24\x99\xce\x1a\xf0\xa7\x6d\x2f\x34\xd3\x9a\x32\xad\xbd\x30\xbf\xd2\x6a\xfb\x94\xd5\x6d\x97\xf0\xba\xab\x72\xbb\x96\x41\xea\x56\xe8\xe4\x84\xc6\xb6\x29\xde\x6e\x4a\xb6\x9b\xea\x57\x6d\x51\x33\x0f\x73\xfb\xc2\x6d\x83\x66\xa3\x9b\x46\x79\x39\x46\x47\xaa\x28\x10\x55\x08\x2d\x69\x53\x28\x75\xe6\xa7\xbd\xd6\x6e\xdb\x3f\x98\xb1\xa8\xa0\x66\x27\x9b\x7a\x4a\xec\x8c\xac\x77\xb5\xec\x0d\xad\x4a\xf5\x69\x3a\x9c\x4d\x1c\x7f\xda\x4c\xf3\xc4\x1d\xa8\x39\xdd\x03\xd9\xb6\xac\xaa\x57\x9d\xb3\xdc\x38\xd1\x03\x85\xe6\x92\xb2\xcf\x7a\x5a\xcd\xa2\x44\x8d\x25\x66\x76\xf0\xb1\xc3\xc0\x76\x6f\x6a\x79\xa3\xb2\x18\x0d\xc3\xcf\x34\x0c\x8f\x1d\xf2\xdc\x63\xc8\x73\xaa\x62\x59\x62\x78\xe7\xdc\x3b\xf1\xb7\x9e\x7e\xf4\xd6\xfe\x98\x43\x25\x57\x7a\x1a\xa8\xc6\xb9\x10\xb4\xc4\x97\xa0\xd3\x85\xf1\x1d\x45\x06\x0e\x76\xcd\xe4\xd1\x82\xbc\xa2\xf0\x36\x5a\x90\x23\x0a\x9f\xa3\x05\xb9\xa6\xa0\x05\x45\x43\x54\xc9\x19\x85\x2b\xfd\xfb\x9a\xc2\x8f\xfa\xb7\xbb\xbe\x9f\x95\xab\x10\x92\x30\xd4\x14\xab\x89\xfe\x21\x68\xe0\xf1\x60\x1f\x06\xdd\x54\xad\x1a\x5f\xa3\x70\x59\x9a\x71\xce\xe9\x7d\xca\xe9\x57\x14\xb6\xf6\xe4\x2c\xee\x0f\x4b\x8c\x31\xbc\x55\x68\xeb\xc2\x27\xf4\x87\x70\x2b\x93\xb5\xfe\xb5\xaa\xb9\xb8\x7f\xa4\x20\x5f\x26\x2b\xfd\x50\xc2\xd6\x05\x25\x58\x6a\x02\xb4\xa1\xe8\x4c\xa1\x73\xba\xe3\x05\xda\xdf\xdf\x5c\x52\x39\x86\x45\x93\x2c\xff\x4c\xb6\x25\x1e\xdf\x22\xbb\x65\x7e\x51\xfa\xc1\xd3\x66\x0d\x46\xb3\x5f\x4b\xb7\x6b\x75\x17\xad\x3a\xb3\xa6\x8a\xb9\x4a\x54\xbb\xa3\x25\x68\xf6\x2e\xde\x6f\xbf\x92\xc8\xc6\xc6\x9a\xe5\x82\x36\xcc\x59\x2e\x34\x3d\x77\xe8\x7e\x49\x51\x4d\x89\xcd\x07\x22\xe1\x94\x4e\xe5\x8c\x50\x8d\x39\xae\xe9\xdd\xee\xb9\x2b\x5b\xa0\xfe\x5b\xda\x65\xe7\xa2\x9a\xe2\x9f\xa3\xbd\xae\x03\xa7\x7a\xd0\xbe\x03\xa7\xd4\x48\xbb\x9b\x9c\xda\x15\xd9\x9c\x68\xcd\x28\x0d\xed\x37\xb6\x5a\x67\x74\xf7\xdb\x48\x4f\x77\x13\x38\x4e\x65\xd3\x01\x1c\x37\x8b\x49\x09\x5b\xab\x66\x89\x3b\x8f\xea\x1a\x8a\x91\x27\xc6\xa2\xe9\x0d\x45\xe6\xc1\x28\x48\xda\x96\x38\xf1\x11\x85\x3d\x05\xe2\x1b\x0a\xf7\x19\x25\xc5\xd7\xf4\x9b\xbb\x5b\x1a\x56\x6e\x57\x61\x12\x9f\xed\xd6\xee\x34\xb7\xf1\xeb\x6f\xac\xba\xcd\x45\xea\x7d\x8b\x46\xd6\x0d\x6a\xdb\x5d\x71\xc7\x6e\x36\xa5\xae\x95\xd5\x9a\x60\xb8\xd1\x08\xaf\xd9\xb4\x65\xc7\xf7\xc7\x54\x14\xed\xd6\x2d\xda\x5e\x52\x54\x19\x10\x4d\xb5\xa0\x39\x0b\xfa\xe4\x86\x22\x7b\x38\x1a\x6c\x4b\xfb\xba\x4d\x62\x55\x36\x13\x2a\x46\xcd\x75\xbf\xe2\xfe\xf7\x6c\x87\x2a\xc7\x04\x10\x64\xaa\x66\xc0\xc8\x68\xbc\x4b\x2c\x1e\xb3\x31\x16\x96\x6e\xd5\x84\x81\x0d\x06\x33\xeb\x47\x45\x28\x20\x6b\x45\x50\xd1\x14\x2d\x5f\xbb\xa5\x5f\x0b\xdd\xc6\xce\x60\x97\x97\xe8\x76\x03\x35\xee\x34\x84\x37\x18\x1d\x63\x65\x06\xba\xce\x7a\x7b\xea\x69\x15\xd3\x91\xde\x80\x37\xd4\xa9\x06\x8c\x46\x4f\x68\xd8\x8f\x9b\x48\x74\xba\xa0\xb3\xa2\x38\x6a\x23\xd6\x85\x16\x98\x1a\x52\x85\xb7\x65\x04\x45\x0d\x31\xa8\x44\xad\x17\x9a\x5a\x79\x95\xe4\x03\x0a\x4f\x29\xbc\xb4\xd2\x15\x4f\x6e\xd8\x95\x75\x8a\x0b\x36\x39\x95\x47\x57\x46\x5d\x5d\x14\x41\x00\xcf\xb4\x58\xb3\x96\x22\xa5\x79\x0e\xef\x29\x79\x46\xc3\xf0\x19\x8d\xbc\x75\x10\x3c\xa1\xe4\x3d\x0d\xc3\xf7\x34\xba\xf9\xdf\xe3\x27\x74\xf2\x94\x12\xf4\x80\x92\x27\xd4\x5b\x3e\x44\x01\xc6\xd3\xe1\x6c\xf0\x80\x4e\x47\xb3\xf8\x25\x35\x4c\xdc\x03\x4a\x5e\xd2\x68\x65\x34\x77\x87\x27\xf3\x2b\xfa\xf1\x10\x7d\x9c\x0f\xf0\x21\xc6\x45\x61\x72\x3e\x26\x7f\xfb\xab\x26\xb3\xad\x9c\xc7\x4b\x29\x56\x8d\xbc\x61\x88\x9e\x52\x62\xf2\x5b\x1e\xe1\x39\x25\x4f\x69\x18\x0e\x9e\x52\xf8\xb2\xab\x4f\xf9\xa3\xf3\x38\xeb\x39\x7d\x4c\xbe\x1f\x15\x45\x7f\x7f\xe5\xd2\x9a\x35\x42\xb4\xe5\xc3\xba\x2d\xf1\xf4\x0b\xed\xf0\x1e\xdc\x2e\x84\x88\x47\x65\x09\xa3\x3e\x21\x1a\xed\xa1\x27\x42\x64\x34\xe1\x38\x5a\x08\x61\x96\xf1\x07\x7a\x8f\xd5\xdf\x0b\x6a\xec\x8d\xe8\x0e\x67\x62\xfc\x3d\x4a\xf8\xa9\x63\xcd\xdd\xa2\x17\x4d\x3c\xfb\x42\x37\x38\xa6\x66\x7d\x6e\x4b\xcf\xe1\x4f\x67\x7a\x47\x70\xd2\xef\x6b\x52\x14\x1c\x1d\x1f\x9f\x9c\x9f\x9f\x9e\x9d\x07\x38\x0c\x69\x54\xbd\x82\x20\xfa\xfb\x10\x4f\xe8\x74\x38\x8b\x7f\xa5\x90\x9a\x84\x91\x4e\x18\xcd\xbc\x6e\xa4\xd9\x14\xe9\xf7\xe5\xde\x81\x92\xde\x4b\x61\xd8\x4f\xaa\x83\x77\xc7\xbb\x6d\xed\x2e\x8c\x0f\x46\xe5\x98\x4f\x3e\x68\x81\x61\xd4\x12\x77\x1c\x13\xf0\x2b\x2d\x71\xac\xf4\x7e\x18\x41\xe5\xf4\x2c\x5c\x90\x05\xf8\xd9\x2a\x21\x8c\x2a\x03\x7e\xa4\xe4\x0f\x8a\x02\xfb\x16\x60\xf8\x85\x92\x9f\x1a\xef\xe3\x26\xc6\xb2\x27\x4e\x60\xb6\x49\x13\x67\xfd\xa8\x39\xfd\x5f\xa8\x26\xac\x56\x3f\xd2\x65\x8f\x45\xfd\xee\xdd\xc3\x29\xa3\x49\x8d\x4b\x2a\x20\x99\x7d\x6b\x8c\xb1\xba\x65\x0e\x33\x23\x95\x81\xbb\xdc\x13\xfc\xed\xa8\xed\xa9\x49\xe3\xa8\xc0\x2f\x86\x51\x09\x0e\xa1\xff\xde\x52\xc9\x28\x49\x7e\xd3\xc3\xb7\xaf\x01\x06\x2a\x2d\x3c\xaa\x04\x29\x89\x92\x61\x48\xe5\x64\x5a\xc5\x20\xe9\x1a\xf0\xef\xff\xf2\x80\xbf\x05\xd6\x75\x9b\x7d\x22\xa5\x65\x65\x4c\x0f\xa4\x74\xf0\xe2\xd2\xa8\x74\x84\xdc\xb1\xa1\xe7\xd2\x92\xb0\xf1\xb7\x50\xd6\xa4\x28\x84\x6c\xf0\x02\xf7\xd2\xea\x4e\xee\x80\x4b\x74\xe7\x78\x01\xd7\x29\x26\xef\x09\xe3\x74\xa5\x59\x29\xeb\x7f\x3b\xb1\x67\x83\x1c\xb4\xcc\xae\xa5\x6f\xa5\x25\x72\x59\x7e\xb5\xc3\x7f\xde\xc5\xbc\xdb\x07\x09\x1a\x06\x24\xd6\xae\xe0\x52\x21\x8e\xc1\x9c\xb3\xa7\x64\x38\xf6\x36\x36\x8f\xd3\x31\xae\xa8\x19\x92\x44\x20\x0e\xd4\x1b\xc7\xe0\x30\x64\x12\x25\x36\x62\x91\x97\x54\xbe\x91\xdb\x6a\x4f\xcf\x99\xaa\x38\x8c\x6b\x7a\xd7\xc9\x50\x9c\xa9\x9a\x9d\xa8\x0e\xd7\x34\x70\xf9\xf6\xf8\xfc\xfc\x6c\x93\xd1\x57\x2c\x57\xf1\x10\x8e\xcf\xcf\xcf\xd5\x5d\x46\x9f\xd2\x34\x4b\x64\x62\x74\x41\x26\xf5\x83\x26\x6b\x3e\x53\xc6\x28\x57\x67\x34\x55\x2e\xe1\xe9\xe9\xeb\xf6\x9b\xe5\x87\xeb\xf7\x77\xe2\x9a\x72\xf3\x3a\x82\xa7\x89\x4a\xde\xc9\x84\xe7\x0b\x2a\x5f\x2a\xba\x72\xb9\x9e\xb1\xaa\x13\x2f\xde\xbd\x7e\x75\x94\x65\xc7\x22\xcb\x68\xea\xba\xa0\xd3\xf6\x12\x9e\x09\xb9\x72\xa7\xbb\x2e\xe5\x9c\xea\x1c\x75\xda\x6b\x3a\x67\x89\xab\xf6\x35\x5b\x51\xcd\x3d\x5b\xad\xf9\x10\x34\xc3\x37\x7f\x23\xe6\xf4\x75\xb2\xd6\xaf\x62\x4e\x5d\x17\xdf\x26\x4c\x8f\xef\x8f\x0d\xcd\xfd\xa0\xde\x66\x9b\x2b\xc6\xab\x07\x5f\xc7\xf9\x87\xe7\xaf\xcc\x5c\xbb\x6c\xe7\x1f\x9e\xbf\xd9\xac\x2e\xa9\xac\xdf\xdf\x26\x6a\x79\x4e\xaf\x1a\x09\x82\x71\x55\xbf\xb6\x60\x75\xfe\xe1\xb9\x85\x8d\x90\x1e\x30\xd6\x3a\xf9\xc9\x66\xb1\xa8\x6b\xd5\x53\x74\xbe\xa4\xd4\x57\xf3\x8e\x7e\x56\xef\x64\x92\x5e\x1f\x57\x93\x54\x25\xf9\x77\xb1\x49\x5d\x2f\x4b\x67\xe9\x28\x89\x98\x26\x72\x06\x1b\x49\x52\x19\x86\x69\xe3\x5c\x42\xf3\x64\x1b\x19\x86\x1b\x59\x23\x0d\x22\x25\xb6\x46\xe0\x1b\x09\x15\x5a\x03\xd9\xb4\x75\xaf\xf3\x6b\x1c\x63\x8e\xb4\xf3\xfd\x0d\xec\x59\x2f\xbb\x79\xbb\xfd\x15\x74\x56\x27\xad\x49\x68\xd3\xa9\x5d\xe1\xb5\x76\x29\x1a\x1a\xe2\xe5\x2d\xd8\x17\xf2\x2b\xc1\x01\xbf\x2d\xa0\xdf\x9f\x87\x0c\xdc\xda\x78\x57\x99\x24\xe8\xcf\x33\x57\xd8\x60\x21\x27\x0b\x19\x6f\x4b\x1c\x5d\x5c\x7c\x78\x7f\x72\xf1\xf4\xe4\xc3\xbb\xd3\xd3\x57\xe7\x17\xcf\x5f\x9d\x3e\x39\x7a\x75\xf1\xe2\xf4\xf4\xa7\x8b\x8b\xda\x91\x7c\x2d\x2d\x9a\x6c\x18\x61\x20\x85\x3b\x02\x59\x35\xa0\x8b\xd4\x54\xce\x40\xe2\x56\xb8\xaa\xb9\x6c\x06\x52\x72\x67\xdd\x1d\x81\xa1\x94\x99\xbb\xa5\xdc\x75\x02\x30\x4e\xaa\xde\x4d\xd0\x7a\xa1\x5e\xa4\x4b\x96\xcd\x25\xe5\x3b\x91\x31\x8c\x3b\xaf\xcb\x22\x93\xdb\xd7\x62\xbe\xc9\x28\x71\x0e\x45\xce\x50\x88\xda\x90\x59\xe6\x91\x74\x31\xf1\x72\x22\x11\x8e\xa5\xb3\xc4\xbe\x91\x64\xcb\xb5\x9c\xb6\x4e\x34\x1e\xdc\x55\x63\x94\xe5\xf8\x46\x46\x75\x86\xe8\x8a\xaa\x7d\x26\xb1\xdf\xdf\xe9\x53\xa3\x44\x09\xcb\xc6\x2e\x88\x92\xb9\x3d\x21\xe8\x82\x42\x35\x6c\xeb\x01\xd1\x2e\x28\xe9\x4a\xdc\xd0\xdd\xb2\x78\xeb\x2d\x72\x77\x2b\xd8\x29\x7e\x45\xd5\x7e\x59\x7f\x7e\xf9\x27\x65\x97\x49\x7e\x7f\x59\x1f\x9d\xa1\xae\x60\xa7\xf4\x66\x3d\x4f\xd4\x2e\x0f\x7c\x1f\xb4\x88\x6a\xbc\x80\x8a\x12\x53\x26\xf7\xbe\xa7\x8d\x32\xee\x0b\xa9\xf2\x60\x50\xd1\x6a\xa3\x92\xfb\x0a\x54\xdf\x48\x23\x9f\x2e\x64\x4f\xb1\xba\x8a\xb8\x2f\xa4\xca\x83\x77\xc6\xe6\x76\xcb\x3e\x74\xf4\xee\x6a\x01\xc5\xa8\xd1\xba\xca\x3e\x37\x35\x7f\x15\x3c\x55\x07\xab\x5a\xf7\xbe\xdd\x5b\xfd\x91\xa9\xf5\xab\xd5\x57\x30\xee\xa8\xde\x7d\xbb\xb7\xfa\xd7\x0e\x90\x5f\x6d\xa0\x31\x2b\x1d\x4d\x54\x5f\x4d\x23\xf7\x18\x79\xa1\x66\xe3\x70\x23\x5d\x20\x3f\x09\xab\x0e\xd0\xd9\xf3\x3c\x2a\xd1\x74\x06\xca\x9c\xb8\x8c\x57\x3b\x7b\xa1\x73\x29\x47\x92\xce\x37\x69\xcb\x33\xa0\x19\x6f\xb5\xda\x43\x88\xe2\xd2\x47\x9b\x12\x42\xf7\x7a\xb7\xfa\x37\x7e\x0d\x77\xa9\xed\x7d\xb9\xf1\xd7\xda\x6d\xd8\x3a\x0c\x10\xa2\xa4\xde\xc1\x48\x62\xdc\xd8\x24\x13\x39\x08\x0e\x83\x38\x08\x74\x9f\xf4\xdf\x76\x67\x3a\x76\x5f\x1d\x0e\x50\x79\xab\x6e\xe3\xc7\x6e\xb3\x6a\xbe\x93\x47\x2b\x33\x37\x79\x15\x84\x45\x18\x5b\xe6\x2a\xd9\xe8\x10\x65\xdd\x25\xe1\x45\xd6\xb1\x42\x95\x4d\xad\xc0\xd0\xca\x52\x57\x3b\x15\x33\x5c\x96\x66\x7a\x3c\x30\x60\x0f\x8c\x7e\x16\xef\x61\xd6\x4d\x58\x94\xda\x72\xc1\x98\x37\xf4\x87\xd8\xc7\x80\xa3\xb7\xbd\xa5\x34\x06\x22\x63\xe3\x50\xe4\x18\xe8\x49\xd5\x20\x11\x36\x6e\xc3\x15\x55\xc8\xdb\x17\x0d\xe1\x60\x84\x71\x85\xa3\x91\x9a\xaa\x2a\x1c\xc0\x0c\x04\x1e\x53\x3f\x02\xb3\x92\xab\xb7\xe6\x69\x1a\x08\xbc\xe5\xf5\x12\x54\x0d\x68\x50\x47\x3a\x77\x66\x88\x77\x8c\xb4\xb5\x58\xf6\xbb\x08\x92\xb4\xfb\xc6\xdb\x0b\x64\xcc\xc3\x90\x7b\xaa\x1a\x86\x2d\xea\x81\xe4\x6e\x0f\x58\x7e\xe6\x7a\x40\xe7\xff\xf9\x3e\xd4\xa1\x8f\x3c\xbd\xd0\x2d\x99\xf9\xb8\xba\x6f\x68\xf5\x04\x2a\x8d\x7e\xc9\xb6\xc4\xd0\xbf\x93\x61\x78\x3f\xe3\xe3\xed\xd7\xa2\x0f\x1b\x1a\x86\x3b\x7a\x6d\x5d\x54\x11\x42\xee\xbc\xc9\xff\xb8\xff\xbf\x0e\xff\xd2\xff\x5f\xff\xbf\xde\x5f\x7a\x37\x1b\xfa\xb9\x77\xf3\x5d\xf4\x7d\x34\x32\xef\x28\xc5\xd6\xa5\xed\xe4\x26\xe1\xbd\xdf\xc4\xc6\xa4\xfe\x43\x8f\x90\xe7\xb4\xf7\xfa\xe5\x3b\x9d\x70\xf8\xbf\x76\x9a\xb0\xcc\x38\x52\x5e\x61\xd6\xd0\x8a\x4d\x87\x33\xfc\x98\x3c\xc4\x2a\x5a\xb1\xcf\x8c\xa3\xed\x25\x5d\x08\x49\x8f\xad\xee\x5a\xcb\xc4\x95\x57\x97\x31\xb1\xac\x26\xe0\x82\x71\xa6\xc6\x7b\x29\x6d\xa0\xed\x43\x4a\x45\x26\x97\xfd\x99\x4c\xe5\xcc\xaf\x35\x9b\x82\x35\x9b\xdb\xd4\x55\x36\x43\x54\xca\x4a\x99\x6b\xa6\xf7\x81\x30\x47\x31\xf9\x58\x33\x51\x42\xba\xf0\x22\x0f\xcc\x73\x67\x3c\x36\x9f\xcd\xfe\x22\x1c\xbb\xa7\xd8\x9b\x8e\x86\xa1\x7f\x72\xd5\x78\xfa\xea\x2a\xdd\xf9\xaa\xf1\xc1\x9d\x24\x0a\x97\xa8\x9e\x5f\x5c\x71\x76\x6b\x23\x23\xed\x6d\xf8\xe9\xcc\x1f\xdd\xeb\xe6\x25\x4b\x55\x9d\x83\x9b\x90\xb9\xfd\x91\x67\x18\x53\xb1\x5a\x31\xa5\x18\xbf\xaa\x22\x56\x5d\x78\x26\xe2\x7e\x36\xd3\xe6\x38\xdf\x5c\x6a\x11\xfe\x52\x33\x03\x1e\x6b\x5d\xd4\x0c\xc5\xfd\xc5\x6f\x65\xb2\x5e\xd3\xf9\x73\xc7\x48\xdc\x9f\xd1\x61\x12\x83\xb8\x56\xd2\x9c\xbb\x35\xd3\x2b\x82\xf2\x3a\x59\x7f\xa5\x96\xbc\xab\x9f\xb7\x5a\x94\xa2\xf2\xc3\x6b\x53\xf9\x9d\xf4\x35\x27\xd7\xd4\xf8\x7c\xb8\xce\x1d\x27\xe9\x72\x37\x14\x5d\x1d\x3f\xc7\x06\xfe\x01\x17\xf9\xc9\x07\xb3\x82\x84\xf8\x50\x2c\x2b\xbd\x82\x9b\xdf\xba\xfd\xaa\x98\x8f\x09\x64\xdd\xd9\x1b\xa5\xef\x93\xe9\x92\x46\x09\x63\xfd\xe0\xf8\x7b\x3d\xdb\x84\x8f\xad\x87\x5d\x0b\x58\x06\xbf\x3b\x61\xe0\xd4\x32\x1c\x90\x42\x3d\x6f\x8d\x5c\x18\x2e\x7c\x06\x4d\xad\xf6\xa5\x1f\xd5\x8c\xb7\x6e\x0e\xf6\x50\x7d\x9c\x10\xcd\xe9\x8d\x12\x22\xcb\x27\xf5\x63\x7c\x27\x23\x2b\x44\x54\x49\xb8\x8d\xa7\x32\xe3\x6a\x1d\x5d\xb8\xcf\x2f\x84\xb8\x26\x99\x84\x4c\x46\x74\xa5\x31\x89\x46\x54\xb1\xde\xc0\x01\x28\xac\x93\x05\x77\x89\x4a\x26\x37\xd4\x59\x2e\x25\x8a\x06\x6d\x2b\x0e\xe5\xfd\x37\xce\xf5\x47\xd7\x5b\x15\x55\x6b\x62\x97\xaf\x69\x37\xe8\x57\x73\x60\x67\x06\xc3\x76\x2d\xe9\x9a\xf2\xb9\x91\x81\x9b\xf5\x58\x96\xf2\xeb\xb5\xd9\x6d\xd3\x5d\x17\x2e\x9d\xeb\x1e\x5c\x4a\xb2\x35\x23\xe9\x92\xbb\x2a\x54\x75\x2b\x77\xa5\x7c\xef\x8d\x85\x14\x7e\x34\xd4\x88\x20\x0c\x35\x3d\x33\x4d\x4c\x34\x45\xcd\x97\x6c\x61\x8e\x02\xa9\x37\xa4\xa8\xc3\xf0\x21\xaf\xb5\x6d\x56\x33\x96\x8f\x0f\x46\x9a\x50\x6a\x6c\x9e\x52\x24\x61\xd4\xc4\x96\x27\x4e\x58\x56\x7f\x82\x32\xfe\x14\x29\x7c\x1b\x46\xf8\xe6\x6d\xbf\x23\xf9\xea\xc5\x0e\xd2\xac\xf4\xf6\x32\x37\x36\x3a\x17\xf6\x6b\x33\x76\xeb\x85\xdc\x61\xaa\xa2\x8b\x9b\xd5\xb8\x12\x77\xc8\xb6\x34\x35\xfd\xab\x98\x62\x77\x94\xc0\xc8\xb6\x1c\xaf\x25\x12\x2d\x4e\x49\xe2\x2d\x9b\xca\x59\x37\xa2\xe8\x30\xb3\x35\x31\x81\xcc\xe9\x7b\xa7\x98\x70\x87\xaa\x8e\x83\xbc\xcf\xac\xce\x8c\x70\x2a\x67\x65\x5b\x03\x64\x1c\xd7\x5d\xa0\xb0\x7a\x03\xe7\x2c\xa3\x5c\x8d\x77\x13\x48\x7f\x08\xa6\x1e\x87\x50\xd1\x76\x9e\xa8\x24\xde\x3e\x78\x60\x17\x33\xb5\x01\xc0\x36\x8a\xce\x63\x56\x62\xd8\x2b\x9f\x80\x27\x57\x6d\xcc\x60\x2a\x8d\x1e\x18\x84\xdd\x65\x3a\x68\xf1\x97\x6e\x2c\x72\x6d\xb5\xe2\x59\x63\xcd\x14\x6c\xe7\x94\x1a\x6b\x88\xfc\x8e\xa7\x76\x64\xc6\x22\xca\x6e\x13\x3d\x35\x4c\x2d\x8f\x0d\xc6\x6d\xab\xe4\xdb\x15\x1b\x1f\x04\x8d\x40\xee\xa4\x09\xf6\xf5\x8e\xa5\xd7\x5d\x5d\xe2\xd1\x83\x39\xcd\x95\x14\x77\x26\x34\x67\x33\xea\xae\xf4\x37\x33\x40\x15\x36\xb0\xef\x7d\xe5\x34\xe1\xa8\x97\x68\x53\x62\x42\x36\xdc\x3e\x6f\x88\x38\x16\x5d\x76\x6c\x89\x69\x32\xbb\x67\xb3\x4c\x93\x19\xe1\x18\xfa\x2c\x0c\xfb\xc2\xbb\x61\x9f\x1b\x81\xa0\xcd\xc4\x6e\x88\x9c\xca\x06\x13\x7b\x3f\x80\xee\x64\x94\x53\x65\x2c\x96\xb9\xdd\x6f\x86\x99\xb7\x71\xd4\xb9\xf5\x57\xf9\xbc\x4f\xc5\xdc\x0d\x11\x26\x72\x25\x08\xb2\xf5\xe4\x31\xe6\x9a\x68\xf8\x97\x5d\x1b\x74\x0b\xae\x4f\xd2\xbd\x9b\xe0\x8a\xeb\xe4\x2e\x13\xc9\x1c\x52\xc2\x22\xc7\xae\xc1\x86\x30\xe3\x1b\x5f\xdd\xc6\x10\x86\xa9\xd9\xf1\x45\x81\x36\x84\x0e\x36\x1a\x9b\xf8\x56\xd0\x06\x5c\x70\xba\x15\x53\xa6\x7d\xf7\xf8\x5f\x6e\xbd\xb3\x59\x5b\xb9\x6e\x14\x52\x5c\x56\xc6\x53\xf7\x49\xf8\xc2\x6c\x59\xbd\x7b\x63\xb3\x77\xf9\xa4\x6b\xf7\xba\x2c\x65\xc7\xd6\xde\x3b\x4d\xed\xdf\x87\xbb\xa6\x74\xe6\x89\xc0\xb6\x34\xb2\x93\xf3\x08\x6a\x29\x43\x2b\xa5\x4f\x07\x5b\x20\x4c\x03\xa2\x5a\x4b\x1c\x1b\xb7\x07\x1f\xc2\xd0\xa5\x73\x3c\xee\x46\x54\x12\xd8\xfd\x08\xca\x35\x3b\x15\x1d\x48\xca\x92\xf4\x7b\x47\x45\xaa\xd8\xb0\x5f\xc9\x54\xda\x78\x39\x25\x38\xd2\xdb\xdd\x8f\x73\x2d\xe3\x98\x1c\xe6\x22\x88\x12\x83\x28\x8d\x1f\xab\x96\x2e\x77\xd5\x3f\x68\x07\xad\xf7\xdb\xbb\x00\xb8\x89\x5e\x52\x13\x47\xe3\x2a\xbf\x9b\xa2\xb9\x79\x17\x97\xa4\xc5\xd7\xd4\x91\xb2\x5d\x7f\xec\xc6\xd3\x9d\x19\x48\xa0\x90\x5b\x83\xc5\xb6\xc6\x6b\xb7\x47\x3e\xce\xae\x5e\xa4\x13\x19\xeb\x92\xc2\x5c\x6e\xc3\xe7\x19\x95\x45\x41\xc7\xf7\xf4\xd9\xd1\xfb\xaa\xc7\xf5\xfb\x7d\xfd\xf5\x2e\xf2\x55\xbf\x1b\x7b\xbe\xe6\x9c\xfd\x2e\x74\xdb\x04\xfc\xda\xe7\x15\x0d\xb3\xd3\xe3\x07\xad\x3b\xee\x26\x32\x6e\xd0\x39\x21\x94\x61\xf7\x62\x37\x59\x65\x6d\x7b\x8b\x04\x61\xb8\x2b\xc0\x55\x4f\x98\xa8\xcb\x45\x51\x07\x73\xae\xee\x50\x60\x76\x81\x35\x78\xd3\x89\x0b\x61\xba\x73\xb7\x85\x0b\x5b\xd9\xcc\xd9\x64\x00\xa9\x94\x42\x06\x36\x16\x09\xc6\x9a\x0c\x9a\x19\xe3\x20\x76\xe7\xcb\x0e\xea\x1b\x56\x90\xb9\xfd\x60\x87\xb3\xd0\x3b\xd9\x6b\x9e\x3a\xbe\x75\xa9\xf9\x24\xf2\x20\xad\x41\xed\x57\x7a\x43\xd1\x7b\xef\xfa\xb2\xaa\x8d\xe6\x15\x1b\x0c\x6f\x3d\xb1\xf3\x12\x38\xc3\xd6\x69\xa8\x49\x10\xcf\x65\x8b\xc1\xa1\x7f\xa2\x6e\xd4\x3b\xd5\x58\x5f\x56\x15\x7c\xda\x65\x84\xcd\xd1\x8b\x26\xea\xee\x86\x18\x49\x28\x50\xa2\x40\xf9\xe0\xa2\xce\x2c\x5f\x81\xc3\xde\x31\x05\x87\xbb\x63\x59\x96\x97\xd2\x0e\xbb\xfb\x50\xc3\x71\x1b\x37\xab\x1d\x8e\x03\xaa\x62\xf9\x8e\x1e\xb5\x84\xab\xa6\x5a\xe9\x1e\xb1\xae\x56\xdf\x81\x20\xd5\x90\x40\x63\x4d\xa3\xdc\x4d\x88\x68\x10\x1b\x3b\x00\x56\x0d\x20\x29\x61\x43\x76\xe4\xef\x29\x9b\x8d\x37\x95\xfa\xfe\x1e\xf2\xbd\xe9\x16\xee\x14\x4a\x7c\x0c\x91\x3d\x11\xda\x7b\x1d\xfe\x89\x58\x98\x36\xf9\x01\xbc\x03\x84\x7b\xa4\xe1\x3a\xa2\x28\x70\x07\x04\xeb\xa3\x6c\x40\xc0\x08\xaf\x40\x90\x38\x10\x88\x0a\x04\xac\x04\x2f\xf0\x7a\x64\x64\xaf\x33\x48\xad\x2f\xe5\x3d\x8a\x8b\x7a\x34\xc6\x2e\xe6\x9e\x98\xeb\x56\x65\x55\xe2\x3f\x19\xb4\xcb\x87\x12\x90\x0d\x5e\xa8\xed\x79\xbc\x21\x69\x6d\x64\xe2\xf1\x8c\xc6\x88\x69\xb4\x4a\xd6\xf7\x00\x93\x19\x20\xc6\xe9\x74\x38\x43\x75\x20\x79\xcd\x67\xbb\x1a\x76\xb7\xcb\x66\x37\x82\xbc\x0b\x2c\x26\xbb\x40\xf0\xd5\xa1\x9b\xb8\xb1\x7f\x3e\x72\x93\xed\xde\x81\x5b\x2d\x41\xdb\xbc\xf8\x3f\xd7\x1d\x83\x41\xbb\xbb\xd3\x44\x22\x26\x5b\xdd\x1d\x6b\xff\xdd\xe8\x10\xb5\xf6\xc8\xa5\x71\x97\x6d\x2d\xcd\x6a\xa5\x77\x0b\x60\x46\xec\xde\xdb\x13\x46\x6b\xd3\x5d\xcd\xde\x51\x53\xbb\xb2\xce\x40\x3c\x4e\x45\x1a\xab\x32\x56\xf7\x69\xdc\xf6\x9b\xbc\xdd\xdb\x51\x3b\xe7\x02\x2d\x0c\x56\xe9\xbf\xbe\x26\x59\xed\x13\x05\x3d\x8d\x56\xe1\x74\xd5\x3e\x96\xa8\x75\x2c\xf7\x69\xb5\xbf\x8a\x88\xe8\x3e\x4e\x25\xaa\xdc\x43\x1c\xfe\x50\xc0\x1d\x72\xef\x0d\xb6\xad\x08\xd5\x92\xdf\x5e\x3c\x27\xab\x29\x9e\xaa\x19\xde\xd5\x7c\x55\xa7\x13\x1a\xed\x78\x15\x59\x7d\x6e\x0e\x6a\xa7\x80\xd1\xfe\x63\x30\x4a\x96\x9c\xca\x1b\x3b\xfc\x5a\x79\x56\x17\xdd\x1d\x46\x7d\xba\xb1\x37\x90\x16\xc8\xbe\xbd\xf3\x75\x8d\xb5\x96\xf4\x1e\x50\xbb\x10\x2a\x12\xd1\x8a\xbe\x37\x85\x3f\x2d\xd8\xdb\xe3\x73\x24\xa1\x75\x96\x61\xe8\xc1\x89\xf4\x7a\xaa\xab\x9d\xd3\xf0\x8e\xa1\x78\x87\xb5\x6f\x1d\x45\xf3\xcc\xc5\xc4\xcc\x68\xb7\x21\xd4\xfb\xfb\x8e\xcd\x2b\x38\xd8\xe3\x3a\x55\x75\xd4\x04\x98\x6f\xd7\xd3\x00\xcc\x7d\x07\x3b\x0d\xbd\xf8\x78\x5f\x51\x3e\x04\x85\x3a\x14\xe8\xf4\xfe\x83\xda\x66\xfb\x70\xe9\x0e\x6a\x3f\x4b\xf2\x56\xee\x62\x6e\x2f\x80\xf9\xdd\xfa\x4e\x22\x7a\x0f\xb6\xf3\xdc\xfb\x35\xbd\x33\x6c\xfb\x4d\x92\x8d\x05\x51\x03\x01\x72\xca\x67\x3b\xce\x49\x7d\x55\x14\x47\xb2\x79\xd8\x00\xc1\x2a\x59\x3b\xae\x30\x68\xd8\xd7\x36\xb2\xb4\xa4\x2e\x5d\x69\xa4\xd9\x58\x62\xf4\x95\xa0\xd1\x30\x1c\xff\x37\x8c\x61\xb7\xf7\x75\x54\xf2\xe9\x0c\xe4\x9e\x7b\x94\x8d\x58\x61\x9c\x3b\x6a\xa3\x4d\x39\x1b\x37\x42\xf8\xbb\xd1\x78\xb6\x63\x5c\x5f\x7b\xc4\x48\x07\x50\x2c\xce\x36\x40\xb1\x97\x1a\x79\x6e\x9a\x9b\xdb\x1c\x8c\x4a\xa3\xaa\xcc\xc9\x96\x5d\x02\xc5\x44\x38\x43\x77\xb3\x10\x35\xf8\x1c\x23\x4c\x31\x8e\x79\xe3\x9b\x6f\x7c\x2a\x9a\x59\x4a\x0f\xe5\x5a\xeb\xfb\x4e\x76\x45\x21\xab\x93\x5a\x31\x69\x90\xc2\x45\x61\xb8\xe1\x12\x29\x3c\xd9\xfd\x36\x51\xf7\x71\x1c\xdb\x6b\x7a\x17\x2b\xb8\x49\xb2\x58\xe9\x4e\xc4\x3b\xe6\x50\xed\x62\xb4\x55\x8c\xda\x62\x9a\x4f\xd7\x25\xa7\xb3\x9a\x53\x7f\xdb\xd9\xf9\x06\xeb\xbe\x1f\xbd\x6f\xe2\xb8\xf7\x20\xc0\x71\x70\x68\x2f\x1f\x73\x17\x9d\xd0\x0a\x31\xe1\x30\x44\x74\x40\x82\xc3\x00\x83\x72\x57\x34\x56\x8d\x1e\xed\x8a\x07\xf7\xa8\xc6\x64\xa3\xa3\x6f\x1a\x4a\x3a\x1f\x87\x09\x72\xbc\x0d\x2e\xad\x95\x7b\xdd\xc1\xc4\xc4\x00\x4c\x21\x25\x09\x24\xa4\x3f\xc2\x63\x63\x3f\xdf\x5b\x74\x1d\x0f\xca\x89\x8c\x2a\x41\x63\x9c\x51\xd5\xcb\x5c\x78\x37\x15\x49\xca\xe7\x54\x53\xad\x85\x7b\x24\x3e\x0d\x16\x06\x4d\xb3\xf4\xcc\xbc\x3e\x33\xa6\x3a\x3b\x29\xb0\x30\x88\x68\xcd\x32\x3a\xd7\xe8\x49\x98\x8a\x7c\x0f\x92\x8c\xf4\x87\xd8\x6a\x3b\x17\xd1\x45\x9e\x8a\x35\x7d\x39\x27\x1c\x03\x9b\xa0\xac\x85\x02\x91\x22\xaa\x28\xec\x92\xbc\xe1\x62\x4e\xdd\xbd\x14\xf6\x25\xca\x73\x79\x6c\x97\xbf\xcb\x54\x9d\x6a\xd6\x2f\xed\x82\xad\xb4\x46\x79\x5c\x14\x8d\xd3\xec\x0a\x44\xd6\x4a\xef\xfc\xfc\xec\xe2\xf8\xf4\xcd\xbb\x93\x5f\xdf\x5d\x5c\x14\x05\x52\xa4\x23\x1d\x83\x39\xc3\xaf\x4f\x72\x37\xe6\x40\xc3\x40\xf3\x42\x56\x64\xe4\x58\xac\xd6\x82\x6b\x9c\x70\xef\x87\x28\x99\xcf\x35\x8b\xad\xa1\x98\xe7\xd2\x93\x20\x92\xe1\x58\xcb\x8f\x59\x2b\xda\xaf\x66\x55\xea\x36\x73\xcf\x0d\x3e\x30\xa7\x6b\xfe\xc0\x38\xca\x97\xc9\x5c\xdc\x9e\x09\xa1\xda\x31\x80\xdb\xa5\x53\xeb\xf4\x03\x19\x66\x8b\xd6\x7c\x61\x7b\x3f\x51\x4f\x11\xbf\x1c\xc6\xd5\xba\xe8\xda\x38\x3e\x60\xbb\xac\x37\x80\x39\x54\xaf\x6b\x69\x1e\xba\x8f\xdb\xaf\x44\x4d\xa6\xf5\x21\x39\x64\x38\x9e\x66\xb3\xea\x36\xa5\xd2\xd6\xf1\xca\x59\x04\xc6\xc1\x51\x9a\x8a\x0d\x57\xf9\x2b\x96\x2b\x63\xfd\xbe\xce\xe3\x6d\xe2\x12\x63\x2b\x96\x19\x14\x03\x3e\xce\xa8\x39\xb9\xb2\x36\x0f\xd7\x92\xec\x70\x22\xf6\xa8\x5d\x0b\xe8\xd1\x83\x56\x14\x6e\xd0\x5b\xe0\x22\xa7\x99\x5e\xdb\x45\x51\x29\x73\xa5\x0d\xb0\x0d\x53\x89\x02\x91\x1e\x28\xeb\x0d\xb9\x4d\x94\x92\x79\xbc\x5d\xb1\xf9\x3c\xa3\x71\x10\xc0\x9c\xdd\xb0\x39\x95\x71\x10\x94\x65\x2b\xf3\xc1\x95\x14\x9b\x75\xbb\x82\x03\x73\x53\x50\x2b\x25\xa5\x59\x56\xd7\x9b\x2f\x25\xe3\xd7\xba\x5e\xeb\xd2\xbf\xa4\xc9\x3c\x28\xcd\x11\xe0\xc5\x0d\x0a\x7a\x01\x86\xfb\x0b\x37\x8b\xc0\x5c\xac\xde\x5a\xa0\xe9\x7d\x70\x6c\x03\x3a\xc5\x7a\xa8\x48\x45\x0f\x0c\xc1\xfd\xac\x50\xf0\x3e\xa7\xd2\x06\x2d\xc5\xff\x9d\xcd\x3c\xb5\x21\xa9\x7a\xff\x03\x4d\x9d\xac\x12\x96\xfd\x0b\x6d\x74\x83\xfc\x9b\xe1\xc7\xe6\x3d\x6e\xac\x52\xfe\xc7\x9a\x7c\xfe\x3f\xdf\xe4\x09\xd7\x55\xce\x6d\x7b\x33\x18\x99\xff\xf7\xb4\xeb\x96\xbd\x8a\x2e\x32\xa4\x22\xbf\x63\xa1\x4b\x80\xde\xdb\x19\x86\xb4\x07\xae\xcc\x41\xc6\x72\xa5\xd3\x0f\x82\x01\x8d\xd8\xbc\xec\xda\x38\x2e\x29\xb9\x49\x54\x22\xeb\xe1\x6e\x72\x2a\xed\xcd\x2a\xbb\x17\x10\xae\x25\x5d\x50\x29\xe9\x5c\x27\xc0\x2d\x9b\xab\x65\xfc\xdd\xf7\x6e\x58\x5f\x07\xe5\x57\x80\xb5\x53\xef\x9f\x4f\xcb\x57\xeb\x6a\x75\x39\x38\x08\xfe\x8b\xd5\xe9\x0d\xf1\x5f\xac\x62\xc3\xe6\xd6\xf6\xea\xff\x46\x7f\xae\xfe\xc5\xca\x2c\x17\x72\x9c\x25\x79\x1e\x07\x9b\xeb\x03\x5d\xe5\x41\x4a\xb9\xa2\x32\x28\x61\x4a\xfd\x22\x73\xab\x74\x62\xab\x60\xa9\x71\x8d\x77\x0b\xc2\x12\x15\x73\xa5\x7b\x00\x37\x89\x64\xd6\x19\x26\xc8\x37\x26\x48\x7f\x00\x81\x4e\x3b\xc8\x92\x4b\x9a\x05\x71\x73\xed\x3b\x42\xd4\x63\x79\x8f\xfa\x6d\x50\x96\x38\xbe\xbf\x95\x39\x5d\x4b\x9a\x26\xe6\xa6\xf0\x46\x53\xf3\x84\x5f\x51\xf9\x6d\x2d\xcd\x59\x5e\x37\xe5\x37\x9c\xe6\xd3\x47\xf5\xdb\xf8\x5a\x5a\x19\xf3\x5c\x49\xb6\x5e\x1b\x96\xac\x66\xe1\xcf\x64\x53\x48\x6a\x73\xd6\x9a\x1d\xfc\x5a\x5c\x4b\x2f\x2f\x7d\x2d\x8f\xae\xc6\x5e\x8c\xce\xf7\x55\x69\x74\xf7\x36\xcf\xfb\x7c\xb2\x4c\x1f\x9b\x17\xd2\x60\x6c\x34\x1d\x9b\x7c\xe9\xe4\x16\x13\x34\xac\xe2\x12\xaa\xe1\xbd\x96\xed\x8b\xa4\x46\x63\xfa\x68\x4f\x62\xa3\x3e\x26\xac\x24\xd6\x37\xa2\x16\xdc\xe8\x6c\xd2\x7c\x89\xb7\xe5\x98\xfe\xfb\xc3\xc9\x99\xf4\x7e\xd2\x12\x6b\x91\xbe\x5b\x9a\xcc\x65\x2b\x40\x4b\x77\xc0\xdc\x86\xe3\xd9\x7d\xd1\x33\x91\x82\x3f\x2b\x8a\x24\xc6\x71\xb3\x57\xf7\x74\xe9\x7e\xaf\x9b\x3f\x9b\x01\x09\x14\x37\x6f\xd7\x56\x8e\x15\x7b\x50\xb3\x62\xeb\x75\x60\x8c\x2a\x2c\x1f\x1b\x6f\x9b\xbc\x59\xfc\x46\xa2\xad\xe5\x19\xe3\x6b\x09\x3b\x12\x83\x16\xcc\x5c\x68\x3a\x78\x25\xfd\x53\x7f\xb4\xff\xd4\xfa\xc1\x0d\x23\x8e\xd7\x12\xbd\x96\x68\x5b\xc2\x67\x59\x6d\x91\x3c\x80\x69\xc0\xf2\x97\x9c\x29\x96\x64\xec\x8b\xde\x69\xc1\x15\x55\xfe\xf3\xb9\xbd\x68\x63\x86\x31\x6c\x4b\xa8\xd9\xc6\x7b\xce\x59\xf6\x4a\x6a\x94\x64\xef\xf1\xc9\x63\xdb\xf8\xf1\x6e\xe3\x55\xd3\xa6\x15\xcb\x52\xce\xf7\xae\xb5\xac\xb3\x21\xec\x78\xd3\xa7\xf7\xf0\xa6\xbb\x7c\x29\xad\xee\xfd\x74\xac\x69\x65\xb3\x4e\x3d\x6b\xea\x1f\xf6\x30\x64\x2a\xb8\x4a\x18\xa7\xb2\xb7\xb9\x3e\x58\x27\xf3\xb9\x16\x77\x4b\x53\x60\x39\x0a\x60\xea\x4e\x97\x50\xf0\x91\xf7\xcc\x3f\x3f\x34\xfb\x1e\xe0\x4a\x65\xe6\xb0\xb2\x1d\x4c\x13\xe0\x13\x5d\x99\x07\xac\x21\xd5\x35\x1a\xac\xe0\x6d\x8a\xf9\x37\x8d\xc9\x62\x6a\xb0\x66\x26\x92\xb9\x66\x5f\x66\xf0\x10\xcf\x70\x39\x7e\xda\x81\xc9\xec\x2a\x7c\x29\x49\x63\x81\x3d\xfd\xea\x02\x7b\xf0\x2f\x2c\x30\x33\x15\xcf\xa4\x09\x6f\xf6\x5e\x7e\x3d\xf8\x7a\x23\x0e\xb5\x71\x15\x35\xa7\x45\x67\xc6\x49\x94\x11\xe1\x8d\x6a\x52\x32\x84\x0d\x99\xce\xc6\xec\x71\x3a\xc6\x92\x08\xe3\x18\x0a\x49\x18\xf6\x9f\x79\x27\x64\x13\x4d\x7c\xe3\xcc\xe2\x26\x53\x09\x7c\x2a\x67\xb3\x98\x37\x83\xdf\x6e\xca\x12\x9e\x48\xb2\xa5\xf6\xa6\xbb\xf8\xbd\x34\x31\xd1\xed\xfd\xb2\xe6\x6d\x84\x4b\x77\xdd\xec\xd7\x3c\x62\x4b\xe7\x6f\xd7\xe9\x41\xfa\xc4\xa8\x6b\x9c\x4f\xee\x73\x49\x64\x4d\x38\xbe\xec\x68\x25\xec\x11\x8a\xb3\xf4\x9c\xb2\x19\x4a\x30\x6c\x88\x0b\xd8\xbc\x17\x2e\xd4\x80\xd7\x54\x9e\xda\x2b\x84\x29\xda\xe0\x78\xf7\xa0\x7b\xe3\xae\x1e\x36\xc7\xb4\xba\xea\x3f\xbe\x3e\x05\x4d\xa5\x69\x53\x35\xf7\xf5\x23\xaa\x86\x39\x4d\x1d\x25\x52\x36\xd4\x5c\x89\x6e\xeb\x8b\x44\xcc\x8c\x35\x81\x14\xfc\x75\x93\x8d\x83\xdf\x74\x3f\x93\xbb\xf1\x55\xe1\x32\x41\x1e\x61\x99\x23\x9e\x0f\x92\x4c\x67\xe6\x82\x07\x78\x21\xc9\xd2\x5f\xde\x04\xbf\x5a\x67\x72\xfd\x21\x80\x00\xbe\xcd\x9b\xfe\x85\x2c\x8a\xfe\xaf\xb2\x84\xad\x2e\xd7\x35\x8b\x1f\xdc\xba\xb2\xda\xbd\x46\x0c\x50\x35\x09\x20\x88\xeb\x19\xfe\x49\x92\x54\xf3\x81\x6b\xf8\x59\x1a\x2f\xff\x55\xb2\x0e\x30\xfc\x68\x5d\xda\xcd\xcb\x37\xf9\xf7\xff\xac\xbb\xf4\xa3\xee\xd2\x2a\x59\x77\xf5\xe8\x27\xf9\x9f\x74\xee\xff\xc5\x28\x72\x7f\x91\xd3\xbd\x50\xad\x33\x12\x7c\x09\x6c\x00\x00\x49\xaa\xc0\xb6\x5f\x66\x01\x21\x3e\x50\xcf\x2f\x12\xc3\xef\xb2\x2b\xca\x2b\x27\xc1\x91\x6f\xd5\x44\xc8\xde\xa7\x00\x55\xaf\x4a\x84\x31\x50\x4e\x7e\x93\x93\xf5\x7e\x50\x20\xbd\x21\xc6\xbb\x41\x6f\xd4\x24\x78\x5f\x69\x97\x62\x17\xf5\x53\x4d\x82\x37\x9b\x2c\x0b\xe2\xdd\x03\x09\xb4\xe7\x7e\x59\x07\xdf\x35\x9a\xcc\xfa\xe0\xb0\x44\xde\xc6\x13\x29\x3d\x36\x8c\x27\x32\x56\x7c\xb2\x46\x14\x57\x3b\x9d\x10\xc4\x89\x4e\xe9\x36\x34\xb1\x2a\x20\x4a\x27\x0d\x10\xc4\xbc\x04\x69\x86\xd8\x08\x58\xbc\x4f\x16\x2b\x30\x07\x03\xca\xed\xe2\x1a\x04\xb3\xa0\x1c\xff\x26\x8b\x82\x2a\xb4\x17\x64\xb2\x11\x58\x4b\xf2\x56\xc0\x28\xab\x1f\xe7\x44\x44\x6e\x83\x82\xe0\x3b\xa1\x44\x12\x6e\x5c\xed\x6d\xb2\x0f\x7d\x1e\x60\xd8\x70\x17\xfc\xbc\x6e\x27\xdf\xcb\xb4\xe0\x64\xdf\x5a\xa5\x01\x58\x3e\xa1\xe8\x18\x49\x3c\x1d\xce\x40\x4e\x47\x33\x1c\x53\x54\xb9\x38\x57\x97\x81\xaa\xc8\x1b\xb2\x18\xd3\x9a\xca\xca\x5c\x84\xe1\x31\x12\xd5\xf5\x73\x60\x2e\x36\xe4\xdd\x17\xd8\xec\xcc\xad\x3d\x95\x13\x86\x9c\x39\xed\x9d\xbd\xf1\x93\xd0\xf2\x9e\x7b\x6b\xea\x4b\xdf\x13\xd9\x73\xea\x60\x58\x80\x09\xcb\x0a\x4b\x22\xa9\xb5\x09\x9c\x3c\x8c\x47\xf6\xfa\x66\x9c\x10\x35\xf6\xd7\x1a\x77\xc4\xae\x4d\xbb\x2e\x30\xec\x37\xae\x72\x9d\xe6\x7c\x56\x14\x6a\x1a\xfc\xe3\x1f\x15\x4c\x67\x45\x91\xf0\xa9\x9e\x77\x3c\x2b\xcd\xa5\x7b\x7b\xe1\xe5\x6c\x14\x7f\x1f\xae\xca\x94\xbc\xcc\xa8\x0d\x57\x55\x87\x48\x98\x93\x14\x87\x21\x4a\x78\x64\xa6\x91\x10\x32\x2f\x8a\x0d\x9f\xa6\x7c\xa6\x9f\xb1\xa5\xab\x1b\x32\x84\x9c\xe4\x0a\xf9\x23\x40\x3c\xce\x1f\x6f\xc6\x1b\x17\x32\x76\x41\xc4\x64\x89\x8e\xd1\x9a\xa8\xe9\x66\x66\xa6\x71\x6d\xa6\x71\x89\x4c\x02\x0e\xc3\x45\x33\x1a\x5e\x15\xfe\x78\xd1\x24\x0e\xd4\x50\xcd\x84\xa4\xd5\xe5\x61\xba\xe9\x8c\xd8\x8b\xed\xc7\x7d\xb4\x26\x4e\xb7\x99\x60\x6c\x08\x97\xb9\xfc\x64\xd7\x8f\x1a\x2d\xc8\x82\xa3\x04\x96\xb0\xb6\xf4\x0f\x84\xe9\xc0\xbf\xd0\x07\x6c\x16\x45\x17\xb5\x73\x79\x86\xc6\x57\x08\x63\x58\xef\xad\xf5\x39\x27\xfd\xd1\xd8\x93\xe3\x25\x27\x43\xb8\xe1\x64\xab\x87\xb0\xbf\x87\xb7\x7a\x14\x71\xbf\xbf\xe4\x83\x41\x59\x82\x4d\x6c\x66\xd3\xb5\x19\x1f\x6b\x3e\x5d\xf3\xfb\xef\xee\xb7\x5b\x70\x21\xc5\x0a\xdd\xf0\x96\xc1\xb3\x5d\x16\x0f\xf7\x8d\x4f\xee\x38\xac\x38\x5c\x71\xb8\xdc\xdd\xea\xb7\x9c\x1c\x22\xb6\x5e\x0a\x4e\x0b\xb6\x16\xf3\x82\xad\x93\x39\x8e\xfe\xa2\xa9\x33\xbd\xa5\x97\xd7\x4c\x1d\x32\x7b\x11\xdb\x4b\x8a\xe1\x44\xe3\x8d\x4c\xa4\x46\x82\x86\x0b\xfd\x96\x53\xf5\x72\xb5\xa2\x73\x96\x28\x0a\xa7\x3a\x25\xcd\x68\x22\xeb\xb4\x73\xde\x08\xb1\xf4\x49\xbf\xbc\xa6\x79\x9e\x5c\xd1\xe3\x65\xc2\x39\xcd\xe0\xb3\x4e\x7b\xea\x4d\x01\x8f\x35\x14\xdf\x19\x0c\xf4\x96\xef\x6e\x97\x77\x7c\xe7\x9a\x48\xbd\x1d\xdc\x76\x7f\xc7\xa7\x6a\x36\x76\x1e\xe0\xe6\x05\x0c\x93\x0f\x47\x9d\xd7\xe6\x36\xe0\xf6\x96\x1b\xe6\x0b\xde\xb4\x33\xea\x64\x73\xc1\x07\x2e\xe1\x55\xfb\x93\x88\xd6\x22\x57\x6e\x1c\x48\x0d\x82\x00\x4e\xdc\xad\x4e\xa9\xc8\x06\xc1\xe1\x61\x30\x38\xe1\xd1\x52\xe4\x0a\x97\xe3\x0b\x1e\x86\xa7\xbc\x28\xd0\x45\xbb\x96\x9d\x03\xce\x8e\xa0\x5e\x72\x8c\xe9\x6e\x50\x2f\x69\x82\x7a\xf9\x23\x56\x3e\x1d\x0c\x8e\xdb\xab\xa5\xdb\xb8\x44\xc5\xcf\xea\xa6\xb1\x63\xbf\x7c\xd4\x48\x5c\xc2\x1d\x47\xc7\x1c\xc3\x31\x2f\xf5\x2c\x36\xbb\xd9\x04\x69\x69\xc2\x12\x1a\x0d\x8d\xa6\xde\xe7\x1c\x4f\xee\xda\xb9\xcf\x79\x6d\x22\x7f\x64\xda\x2a\xe3\xcf\x3c\x0c\x3f\xf3\x88\x8b\xdb\xdd\xdc\x36\xb5\xca\xf8\x89\x87\x61\xff\x96\x4f\xd0\x15\x27\x68\xc5\x8d\x4b\xc1\x27\x8e\x23\x8d\x99\x1f\xc2\x8a\x9b\x87\x51\x24\xf8\xca\x82\x9e\xbc\xe1\x70\xc7\x35\x22\xbe\xe2\xcd\x29\xd1\x6b\x7d\x84\x71\xdc\x17\x51\x32\x9f\x9f\xdc\x50\x1b\x11\x84\x72\xa3\xe3\xda\xc3\xcb\xbd\x46\xd1\xa2\x10\x11\x5b\xe9\x76\xce\x8d\x44\x9e\x17\x05\x43\xaf\x38\xd6\xe5\x58\x46\x63\xcd\xe6\x34\xe6\x5a\x0f\x28\x10\xdc\x28\xb2\x8c\x59\x45\xba\x4c\xf8\x95\xb9\x44\xf2\x14\x05\x56\xa8\x0f\xda\x21\xfe\x77\xee\x7f\x68\x64\xc3\xd1\x7e\x4d\xcd\x99\x7d\xa0\x5a\xbe\xab\x96\xc9\x74\xab\xb7\xc5\x21\xe5\x54\xbd\x63\x2b\x2a\x36\xca\x82\x16\x86\xb8\x8c\xd1\x1d\x27\xaf\x38\xec\x83\x04\x05\x0e\x9c\x01\xbc\xe1\xd0\x1f\x61\xe7\xfd\x71\xcd\xe1\x8c\xc3\x6b\x0e\x0f\x38\x3c\xe5\xf0\x92\xc3\x33\x0e\xef\x39\x3c\xe1\xf6\x16\xbc\x0b\x0e\x66\xaf\xc7\xa7\xbc\x84\xe7\xdc\x44\xeb\xf9\xc2\xc9\x13\x6e\xa2\x62\xff\x61\xb6\xba\x33\x4b\x3c\xbd\x34\x96\x32\x52\x43\xf7\x17\x7a\xf9\x13\x53\xbb\x5f\xe0\x43\x13\x4f\xbc\x68\x32\x28\xbf\x72\xd2\x5a\x75\x1f\x38\x86\x9f\x38\x79\xce\x91\x80\xe0\x8f\x0d\xdd\xd0\xd7\x2c\x95\x42\x25\xf9\x75\x80\xe1\x67\x4e\x7e\xe2\x61\xf8\x13\xb7\x14\x61\xfc\xb3\xde\x79\xd7\x7c\x4f\xc8\x07\x6a\x42\xf5\xfc\xca\x8d\x55\xca\x07\xee\x2e\x14\x31\x26\xa4\xf4\x33\x53\x08\x8f\xcf\xf8\x18\x6f\x29\x39\xe3\xd1\x42\x83\x42\x3f\x18\xf2\xa4\x31\x3e\x6d\x5e\x51\x6d\x31\xef\x19\x9f\x3c\xe0\x08\xc7\xaf\xb9\x8b\x28\x0f\xaa\x2c\x1b\x2f\xa6\x66\xae\xa8\x44\xb8\x84\x5f\x75\xe6\x66\xa7\x3e\x34\x36\xce\x35\xc7\x65\xfc\x87\xdf\x0c\x4f\x35\x61\x80\x97\xbc\xbe\xfb\xc4\x6a\x26\xde\xd1\xcf\xea\x8d\x98\x53\x14\x04\x26\x76\x7d\xef\x0f\xae\x4b\x46\xc2\x82\x14\xbd\xe4\xb0\x4d\x97\x89\x4c\x52\x45\xe5\xd3\x44\x25\xd6\x7b\xad\xdd\xec\x4b\x6e\x2f\x31\xd2\x8d\x3c\xe5\x25\x8e\x5f\xf0\x30\x7c\xc1\xbd\x68\x38\x41\xcf\x38\xa9\x5f\xbd\x78\x05\xef\x39\x79\xc6\x8d\xd0\xb8\x53\xdf\x7b\x17\x11\xf0\x19\x07\x3d\x0a\x1c\xb7\x3f\x7f\xe1\xde\x83\xd1\x7c\x35\xeb\xec\x47\x0e\xbf\x70\xf8\x8d\xc3\xef\x1c\x94\x20\x7a\xc2\xf6\xb9\xb9\xed\x82\xc7\xca\x5c\xcb\xee\xaf\xab\x1b\xbf\xd6\x53\xf7\x9a\x57\xf7\xef\x9f\xe9\x99\x3e\xe3\x84\x82\x9e\x06\x0c\xaf\x39\xa1\x25\x50\xb1\x6f\xed\x03\xd2\x9a\xf7\xac\xed\x0a\x33\x78\x46\xb5\xcc\x59\xac\x89\x75\x7d\x73\x68\x23\x70\x62\xc7\xcd\xb2\x4f\x92\xb9\x97\x77\x77\x42\xfb\x52\x73\x1b\x00\xaf\x4c\x6a\x1d\x1c\x09\xa5\x88\x56\x49\x9a\xa7\xd1\x29\x12\x97\x20\xc5\x3d\xf7\x88\x18\x76\x44\x58\x4a\xc5\xc5\x7e\xb8\x3c\x73\x85\xca\x0a\x51\x13\xf8\xae\x19\xce\x8f\xd4\xfc\x25\x75\x3e\x72\x52\x44\x8b\xfa\x22\x3a\x34\x04\xe9\x3b\x86\x75\xb7\xa4\x07\x4c\x09\xa2\x0d\xbd\x9a\x91\xdf\x1a\x5b\xcb\xb8\x3f\x72\x37\x6e\x28\x4d\x6b\x77\xb4\x0f\x3e\x8f\xbf\x95\x43\x95\x65\x09\x4c\x78\x0c\x91\x88\x1d\x6e\x24\x15\x24\x70\x60\x0c\x60\x23\xfc\x15\x94\xb9\xf0\x91\xf6\x17\xa2\x1d\x69\x3f\x15\x18\x32\x41\x38\x87\xb5\x20\x22\xaa\x66\x04\x96\xa2\x79\x35\xf4\x8d\x68\xa0\x96\x3b\x61\xa2\x42\x2e\xa8\x32\x51\xe3\x56\xc2\x40\x03\xae\x04\x59\x09\xb8\x14\x6d\x54\x73\x23\x30\xdc\x0a\xd2\xef\xa3\xa5\x08\xc3\xa5\xf0\x37\x46\xdf\x18\xf3\x07\x51\x59\x03\x99\x04\x0c\x27\x82\x1c\x2b\x94\x0a\xd8\x89\x19\xd8\x47\x4f\x51\x26\x70\xbf\x92\x90\x33\x81\xb1\xf9\xf2\xc3\x0f\x84\x90\xe7\xb4\x8e\x27\xa8\x73\x5f\x8a\xa6\x00\x59\x51\x29\x07\x9a\x33\xb3\x5e\x98\xe0\xb6\x51\x5f\xb2\x64\x0b\x64\xc3\x3d\x76\xde\xa3\x9b\x55\x61\x29\xfa\x23\x17\xb4\x30\x13\xd5\xb6\x1e\x61\xd8\x31\xaf\x43\x3b\xae\x74\xed\xd7\x2a\xfc\x33\x52\x7b\xa1\x23\x13\x31\x23\x14\xfa\x48\xed\x1a\x23\x9b\x82\x2d\xb6\x5c\x6f\x8b\x0b\x41\x4e\x44\x51\xf4\xf7\x16\x74\x9f\x86\x61\x7f\xce\xdb\xbd\x96\x4d\x8e\x5b\x73\x89\xe3\x7b\xb8\xe5\xaf\x72\xe1\xd2\x70\xda\x65\x09\x0a\xf1\x26\xb3\x5c\x9d\x6b\xb4\xe5\xc9\x4c\x44\xee\x5e\xfc\x5d\xe7\x0f\x0b\x0b\x8c\xe1\xb4\x03\xcb\x54\x61\xdf\xcd\x45\xda\x5d\x8c\x07\xa2\xc4\x42\x49\x4b\x2d\xb4\x84\x73\xd1\x75\xa1\x4c\x9f\x46\x5c\x28\xb6\x60\x74\x8e\xb7\xf5\xb3\x0f\x76\x6a\x3c\x79\xa8\xb3\x7e\x1f\x2b\xd1\xea\x5e\x15\xb3\x84\xb8\xd8\xa9\xc0\xc8\x88\x10\x6f\x03\x9a\x90\xe1\xd8\xdf\x05\xf6\x38\x19\x3b\xe7\x40\x2b\xe7\x12\x3e\x4d\x06\x83\x19\x64\x84\x4d\x16\x91\xb8\x8e\x17\xd1\x22\x61\x19\xac\x8d\x75\x8a\x59\x37\x30\x37\xcf\x46\xa7\xb6\x24\x0b\x47\x42\xcd\xfc\x64\x13\xc4\x8a\x02\x3d\x24\xc4\x74\xcf\x2d\xd9\x30\x7c\x27\xac\xa1\x6d\x23\x91\x8c\x30\xf4\x87\x84\x90\x6c\x92\x12\x11\xa3\x65\x18\x2e\x3d\xa1\x84\x94\x64\x48\x60\x58\x86\x21\x5a\x3a\xba\x0c\xb9\x35\x6c\x4a\x09\x21\x0b\x8f\xaa\x26\x73\xb4\x16\xc8\xa3\x8f\x83\x74\x99\x30\xde\x4b\xef\x52\x2d\x06\xe3\x18\x6d\xc8\xa9\x40\x29\xc6\x93\x8d\xa5\x3f\xa9\x96\xe1\x71\xbc\xd6\x69\xf1\x1c\x89\xc6\x2a\x58\x86\x61\x3f\x37\x5d\xb0\xad\x19\x93\xd4\xb2\x01\x63\xcd\xae\x37\xa7\x61\x04\x32\x0c\xfb\xad\x51\x7e\xb6\xa3\xb4\x5a\xc8\x4f\xfb\xb3\x6a\xc3\xf9\xb2\xf1\xad\x98\x20\xc4\x49\x1b\xb1\xa0\xc0\xfc\x68\x7e\xd0\x13\x28\x0a\x9a\x04\x27\xb9\xe0\x44\x02\x37\xc7\x18\x36\xab\x82\xfe\xc8\x38\x34\xef\xe0\x22\xc4\x31\x8e\x39\xd9\xba\x0a\x62\x0a\xb6\x78\x2c\x4b\x40\x8c\x88\x69\x20\x78\x30\x50\x33\x3c\x61\x88\xe3\x38\xd8\x70\xeb\xfd\x35\xaf\x06\x11\xd8\xf0\x1a\x5d\x26\x9e\xc2\xec\x79\x91\xd1\xb1\x71\x36\x37\x58\x3e\x0c\xd1\x88\x90\x3d\x2b\xcd\x89\xfb\x8c\x14\x8e\xab\x47\x73\xc2\x85\x82\xf7\xbe\xcd\x9e\xeb\x65\xaf\x6e\xdc\xd8\x9a\x7f\xde\x23\x73\xc2\x73\x0f\x7b\x96\xcd\xc6\x73\xd1\x72\x7c\x9a\x18\x0a\x43\x08\x91\x24\xa2\xbd\x1f\x2e\xc5\xe4\x46\x38\xdf\xac\x6a\xcc\x67\x75\xb3\x1c\x14\x8e\x3f\x09\xd4\x05\x10\xd0\x6c\x81\x09\x44\xdf\x58\xbb\x97\xa2\x28\x4c\x6b\x93\x87\xf1\x08\xdc\x10\xbd\x8a\xc6\x5d\x1f\x6f\x0c\xda\x8f\x45\x97\x18\x3a\x32\xa1\x13\x1a\x2b\xa7\xef\x63\x81\x94\xf0\xee\xdb\x86\xdf\x1c\x52\x55\xd1\x0b\xdb\xf9\xc0\x0f\xa7\xfa\xb0\xac\x3e\x80\x83\x97\x0d\xc3\xf3\x76\x77\x91\x36\x6e\x8c\xaa\x3e\x08\x4d\x18\xf4\x37\xa1\x21\x51\xc2\x51\x57\x21\x6a\xf4\x35\x45\x81\xec\x83\xe6\x5d\x5d\xac\x68\xec\x9b\x24\x12\x1c\x06\x22\x0f\xe1\xdc\xec\x15\xbd\x88\x71\x09\x6f\xba\x6a\xb4\x38\x50\x57\xe6\x6b\x6f\x56\x6a\xd0\x0d\x5b\x20\x45\x6a\xde\xac\x81\x0a\x7a\x69\xc2\xff\x43\xf5\x2e\xf5\xea\x32\x48\x6b\xde\x63\x2a\xa7\xd9\x22\xf0\x2e\xfa\xa7\x02\x49\x3c\x16\x93\x1d\xd4\xe9\x28\x8c\x55\xdb\x8c\x4a\xd3\x8c\xf0\xf7\x82\xbc\x15\xe8\x8d\xd0\x0b\x42\xe3\xb2\xb7\x02\x1d\xf9\x97\xc6\xe5\xfd\x47\xc2\x5e\x52\x62\xc3\xad\xe2\x18\xed\x8f\x7e\x54\x8d\x7e\xb4\x57\xb2\x6a\xd9\xd5\x50\x8e\x4f\x44\x18\xa2\x4c\x74\x07\xb0\x6a\x12\x0c\xa4\xda\xea\xaf\xee\x9b\xc2\xa5\xb4\x2a\x65\x24\x27\x72\x10\xf4\x4c\xdc\xac\x41\xc0\xf8\x8d\x53\xf0\x04\x2e\x38\x05\x64\x02\x34\xa7\x65\x2f\x36\xfb\xb1\x11\xf2\xdb\x5f\x91\xb8\x11\xee\xd5\xb8\x5c\x21\x07\x1c\x7b\x89\x89\x87\x8e\x7d\x6b\xe0\xd9\x23\xe1\xaf\x94\x30\x3c\x2d\xfa\xb1\xad\x1a\xc8\xdd\x67\x6b\x74\x96\x0a\x70\xe0\x00\x8f\x78\xf5\xb3\xdd\x2a\xfa\xa9\xc2\xce\xf1\x74\x06\xd5\x6a\xd7\x5f\xac\xeb\xa8\xe7\x41\x9d\xf0\xd0\xba\x87\x62\x0f\x3d\x57\x11\xd7\xed\xad\xa9\x54\x99\x89\x34\xd7\xa6\xca\xc6\x05\x70\x28\x13\x0d\x5d\xf8\x56\x13\xf2\xb8\x03\x5f\x5a\x2d\x32\x59\x38\x20\x41\x42\x56\x02\x21\x49\x32\x51\x9f\x10\x21\x41\x8e\xdd\x6d\x10\xed\xcb\xcd\xec\x21\x06\xe2\xe4\x18\x09\x3c\xbd\xe4\x33\x3c\x91\x31\xa5\x1a\xbf\xd7\x81\x6d\x23\x71\x4d\xba\xee\xb6\x2b\x0a\x05\x89\xa1\xda\x5d\x86\xc9\x34\x0c\x29\x24\x8e\x68\x13\x8b\x46\xec\x8b\xbf\x4e\x84\x39\x5c\xa4\xb7\x1b\xab\x09\xa0\x53\x49\x61\x18\xf6\x09\xb3\x2b\x39\x0c\xcf\xdd\x7c\x31\xbd\x96\x21\xa9\x45\x88\xb4\xed\xd4\xbf\x13\x6a\xd1\xf0\x88\x5e\x42\x36\xb6\x47\xbf\xec\xcb\xea\x46\x40\xfb\x91\x83\x5d\x69\xb8\x2d\xbc\xa9\xb6\x64\xe5\x77\xe6\x8e\x78\xe5\xf7\x28\x35\x32\x56\xb4\x20\xab\x4e\x7c\xac\x91\x48\x26\x8a\x42\xff\xfe\xc6\x27\xba\xdd\x5f\xf4\xf7\xf8\xca\x88\x5e\xd0\x15\x08\x5f\x23\xa2\xdf\x39\xe1\x8d\x7b\xdd\xad\x64\x4c\x15\xe2\xed\xcb\xde\x97\x94\xb7\x6e\x2c\x69\xbb\x3f\x36\xb5\xd3\x99\xd8\x75\xaf\xf8\x9d\x7b\xe4\xe3\x58\x0b\x0b\x3b\x1f\x55\xa6\x71\xc6\xd3\xd5\xcb\x3b\x61\x2f\x39\xa8\x6f\x0a\x69\x47\x7d\xf5\x47\x8a\xc3\x12\xb6\x46\x36\xea\x94\x41\x05\xca\x04\xdc\x79\xff\x06\xd1\xb8\xe3\xcf\xa0\xb8\x3f\xb9\x8c\xe4\x44\x94\xb0\x75\x68\x39\xce\x44\x69\xa2\xf8\x1b\xe4\x62\xd6\xcc\xbe\xd0\x2f\xac\xa7\x15\x79\x1b\x2d\xc6\x49\x18\x6a\x81\x80\x4e\x05\x9f\x85\xa1\x44\x14\x04\xff\xd6\x9b\x56\x8c\xe6\xbc\xc4\xa5\x11\x18\x7f\xe3\xba\x5e\xfd\xd4\x38\x62\x4d\xc5\x6e\x14\x68\xd3\x59\xbb\x78\x3a\xae\x24\x59\x79\x8c\xd7\x70\x60\xb6\x21\x60\xf4\x14\x55\xeb\x19\x68\xb5\x0f\xca\x6f\x6b\xcf\x2c\xe2\x7b\x60\x5f\x45\x2e\xfb\x93\xaa\x2e\x74\x55\x49\x96\x75\xf4\xdb\x9d\xd8\xaf\x84\xbd\x19\xab\x92\xfb\x41\x98\x67\xc3\xc9\xb3\x5d\xa6\xc9\x85\x08\xa2\xa8\xb2\x18\xc0\xe6\x66\x77\x2d\x3e\x40\x4a\x46\xe3\x4c\x2f\xc3\xbd\x23\xb8\x0d\x49\x06\x03\xcd\xac\x8f\xc6\xee\xc6\x76\xaf\x3d\x4a\x07\x03\x1f\xfe\x5e\x63\xff\x5d\x41\x51\x63\xff\xa2\x40\xb9\x41\x3b\xd3\xcd\x8c\x28\x38\x38\x48\x8b\x82\x23\x66\x0c\xe7\x8d\x2f\x79\x9d\x54\x36\xee\x81\xf7\xcc\xa8\x40\xcc\x71\x37\x4d\x6d\x86\x4c\x52\xfa\x6d\x40\x31\x80\x10\x5d\x80\x10\x6d\x40\x74\x8c\x5d\xec\x8e\xac\x86\x32\x77\xee\xa7\xbe\xbf\xc2\xf7\x97\x23\xb1\xdf\x5f\xa7\x1f\x7b\x25\xf6\x11\xa2\x23\x16\xc6\x47\xa6\x8e\x9d\x69\x77\x9e\xf3\x8b\x31\x07\xee\x11\xbb\xe2\x42\xd2\xe3\x24\xa7\x2e\x99\x05\x36\x38\x6c\xa6\x58\xc6\xb8\x4f\x5d\x99\xd4\xb9\x50\x47\x99\x2f\x9f\x9b\xa4\x0d\x67\xa9\xf1\xeb\x30\x69\x1b\x93\x96\x2b\x96\x5e\xdf\xb9\xa4\xbb\x00\x03\x6d\x44\xa8\xba\x16\x2d\x67\xd7\x33\x7a\x75\xf2\x79\x6d\xb1\x94\xee\xfa\x99\x80\xd7\x02\x1e\x08\xb2\x7d\xff\xe6\xfc\xfd\xdb\xb7\xa7\x67\xef\x4e\x9e\x5e\xfc\x16\x77\x5d\xad\x72\x2d\x50\x90\x04\xa0\x9b\xa8\xc7\x98\x25\xb9\x32\x57\x37\x92\x87\xe0\x8e\x4f\x23\xfa\x99\xa6\x28\x48\x2e\xd3\x79\x60\x96\xc6\x93\xb3\xd3\x9f\x4e\xde\x5c\x1c\x1f\x9d\x9d\xbc\xbb\xb7\xe6\x7f\xca\x00\x82\xab\x6f\xac\x3b\x57\x32\xb0\x8c\xf2\x53\x41\xec\x98\x1a\xd8\x5e\xe7\x81\x97\xc2\x69\x77\xf6\x1d\x64\xe1\x99\x20\x4f\x05\xbc\x17\x04\x9d\x09\x72\x98\x1c\xc2\x6b\x41\x0e\x2f\xff\x72\x78\x05\x4f\xdd\x6a\x39\x13\x10\x24\x01\xae\xde\x5f\xbb\xf7\x61\x9f\x90\x33\x51\xf7\xac\x28\x74\xca\xeb\x46\x0a\x86\x27\x82\x3c\x10\x51\x0b\x9e\x45\xf1\x40\x44\x4d\x30\xc0\x73\x41\x2a\x15\xe6\x21\xc2\x93\xc9\xa1\x1b\x5a\x80\xa7\xa3\xd9\x18\xbd\x17\x45\xf1\x5c\x14\xc5\x13\xa1\x05\xa7\x67\x9d\x5a\x53\xc7\xc9\x98\xfd\x92\x90\x27\xc2\xdc\xdc\x6e\x16\x03\xa4\xe4\x95\xeb\x39\xc3\x26\x16\x4e\x6e\x02\xab\x43\x4e\x86\xb0\x20\xaa\x71\x5b\x18\x3a\xd0\x82\x22\x4a\x49\x5a\xdd\xb1\x1f\xdc\x05\x10\x68\x79\xd7\x07\x21\xd3\x8b\x37\x0c\x51\xea\x96\xf1\xa2\xbe\x02\xca\x39\xad\xb2\xe6\xf8\x1b\x2f\x8f\x87\x61\x88\xfa\xac\x5e\xdf\x45\xc1\x9a\x8b\x3d\xf8\xa8\xf9\x23\xa2\xa6\x8d\x32\x07\x23\x73\x23\xec\x86\x04\x68\x12\xf7\x82\xc1\x66\x10\xe0\x00\x16\x24\xe8\x05\x83\x05\xe4\x83\x81\xbf\x9a\xda\xad\xe5\xe0\x9f\x68\x12\xfb\x6c\x29\xc6\xf0\x5c\x18\x51\xb3\x95\xc5\x7c\x7f\x80\x26\xfd\x8f\x1f\x73\x97\xed\xbd\x30\x12\x4b\xab\xeb\x9c\xf8\x09\x4f\x26\x32\x66\xb0\xc0\x90\x4c\xf8\x04\x69\x19\x7f\xbd\x51\xc4\xfd\xba\x51\xe7\x18\xf8\x74\x38\x23\xfa\x4f\x23\xc9\x82\xad\x59\x71\x13\x24\x03\x9b\xdd\x1d\xe6\xc7\x8d\x2f\x64\x18\xeb\x3e\x69\xfe\xa5\x99\xca\x1c\x1e\x99\xb8\x8a\x07\x8d\xf2\x31\xb5\xc3\x35\x31\x55\xbd\x25\x51\x18\xbe\x74\x83\xe0\xc6\xac\x03\x76\x35\x50\x82\x8c\xc6\x62\xcf\x1e\xf8\xe0\xe1\x58\x0c\x06\xb8\xe2\x81\xeb\x33\x4e\x31\x0b\x43\xc4\xa7\x62\x46\x6a\x73\x2e\xe0\x0e\x1d\x7e\x11\xe4\x99\x68\x99\x47\x59\xa0\xef\xdb\x47\x1d\x46\x76\x8d\xf7\x09\xf9\xa2\x49\xa2\x7e\x8e\xbf\x08\x57\xcf\x1f\xbb\xea\xe7\x0f\x82\x74\xdc\x93\xa3\xc8\x61\x74\x58\xa3\x08\x5d\xc7\x3e\x3a\xae\x6f\x19\x54\x91\x71\xb8\xc8\xc9\x36\x89\x83\xbf\x05\x25\xa8\x12\x82\xbf\xe9\x35\x17\x04\xd5\x7a\x57\x10\x3c\x78\x94\x3c\xb6\xc8\xea\x85\x20\xc1\x83\x61\x40\x08\x09\x92\x3a\xcb\x61\x74\x08\x3a\x19\xc3\xaf\xb6\x9f\xee\x43\x80\xe1\x27\x41\xfa\xfd\xc3\xe8\x70\xfa\xab\x86\x93\x89\xa6\xe5\xde\x2c\xba\x34\xa5\x7e\xbe\x6f\x30\x68\x12\xe3\x43\xe3\x78\xa5\x87\x32\xde\x1f\x51\xc5\xd1\x34\x9c\x58\x1b\x77\x39\x3b\x35\x6c\x90\x5c\x06\x2e\xdc\x6b\x75\x90\xd0\x7b\xd8\x27\xc4\x07\x10\x2b\x8a\x20\xd1\xc3\x96\xd3\xe1\xac\x28\x82\x4b\xfb\x3c\x9a\xe9\x21\xff\xd8\xc9\x7b\xd7\x16\x9e\xb5\x8a\x4c\xa3\x1b\xb7\xf7\x6f\x10\xc5\x5a\x78\xb2\xc6\xe0\x29\x61\x95\x23\xb0\x43\x2d\x8f\x86\x45\x91\x3c\x26\xe9\x44\x4d\x82\xc0\x89\x30\x31\x32\xce\xbb\xcb\x44\x1e\x8b\x39\x3d\x52\x28\xc1\xf8\xd1\xf7\xdf\x3f\xfc\xfb\x0f\x45\xc1\x1f\x7f\xff\xc3\x77\xa3\xbf\x17\x45\x32\xd0\x18\x29\x2d\x0a\x24\x76\x32\x0f\x46\x3a\xfb\x0f\xdf\x3d\x1c\x16\x85\x78\xfc\xfd\xdf\xbe\xfb\xeb\x77\x13\x35\x61\xde\x19\x35\xc1\x31\x8f\xf5\xbb\xdd\x8b\x09\x24\x83\x87\x38\x16\x07\xa6\xc4\x00\xf1\x03\xd3\xd2\xa3\x47\xa3\x21\x1e\xfc\xf0\xfd\xf7\xdf\xfd\x50\x96\xf0\x8b\x20\xdb\xd4\x54\x1f\xff\x28\x90\xe6\x7b\x6d\x65\xe6\x6d\x88\x4b\x57\x37\xfc\xb6\xaf\x35\xf4\x33\xa3\x25\xf6\x5f\x2c\x99\xf5\xdb\x72\x84\x4b\xf8\x7d\x57\x5f\xe4\x03\x22\x9a\x89\xee\xbe\xc5\xab\x0a\x15\x51\x05\x68\xa2\xc6\x6a\xc8\x5b\xda\x54\xb2\x24\xdf\xd7\x21\xd8\x6d\xd7\xd3\xb5\xf7\xac\x75\x76\xcf\xf6\x90\xce\x7b\xb9\xd0\x29\x8c\x5f\xf5\x84\x5a\x52\xd9\x53\xcb\x84\xf7\x12\xef\x7f\xd0\x13\xd2\xdc\x8e\x50\xd3\x5e\x5e\xea\x46\xdd\x46\xee\x13\xb2\xee\xba\x92\xcf\x7d\xff\x37\xd3\xa2\x31\xa6\x9b\xf7\x84\x96\xd1\x53\xb1\x5a\x27\x8a\x5d\x66\xb4\x27\x69\x4a\xd9\x8d\xb9\x21\xc9\x55\xfd\x45\xd4\x43\x2b\x41\x31\xf2\x3a\x51\xcb\x68\x95\x7c\x06\xea\x9f\x19\x07\xe9\x9e\x17\x99\x10\x12\x38\x23\x87\x1f\x1f\xa0\xe9\x83\xf0\x3f\xfe\xcf\xac\xf8\x38\xff\x38\x9f\x14\x8f\xa6\xff\x7c\x3c\xfb\xcb\x63\x7c\x78\x05\x62\xff\x33\x3e\xbc\xea\x8a\x9a\x65\x39\x46\x7b\x79\x64\xd2\xb5\x23\x69\xc3\x61\x9e\x6a\x8c\xb7\xbf\x13\xff\x56\xc2\xdf\xfa\x24\x08\xa6\x6a\xe6\x02\x99\xa6\x24\xd9\xbb\x9a\xca\x56\xd6\x1f\x81\xd4\x0c\x86\xbf\x91\xce\xec\x50\xa7\xca\x45\x36\x36\xc6\xce\x81\x8d\x8d\xd3\xe4\x13\xa6\x7f\x74\x76\x41\xea\x6c\x8b\x2c\xb9\xca\x49\x10\x80\xd4\xfd\xd4\x28\x47\xcc\x34\xbb\x7a\x1f\x02\x31\x4a\xba\x4d\x96\x95\xa6\x80\x39\xa5\xee\x53\xcd\xfc\xb2\x05\xea\x27\x45\xd1\x4f\x8b\xa2\x42\x6b\xae\x8b\xfd\x0f\xa2\x28\xfa\x2f\x44\x51\xfc\x24\x70\x51\xb4\xfa\xdf\xff\x59\x78\xc1\xc2\x36\x0e\x39\x91\x48\x80\x81\x4c\x5b\xaa\x86\xf6\xf5\xf5\x96\x43\x23\x9a\x0c\x4c\x34\xe4\xc4\xc4\x29\xd7\xbc\x56\x68\xd3\xba\x13\x3f\xde\xf9\xaa\xaa\xdb\x80\x9b\x5f\xcd\xe5\x8d\xdb\xb3\x93\xb7\xaf\x8e\x8e\x4f\x2e\x7e\x3a\x39\x79\x7b\x7e\xf1\x60\x18\xbf\x10\x70\x76\xf2\xfc\xe4\xd7\xb7\x17\xfe\xd3\xf9\xfb\x27\xe7\xef\x5e\xbe\x7b\xff\xee\xe4\xfc\xe2\xfd\x9b\xa7\x27\xcf\x5e\xbe\x39\x79\x7a\x71\x7c\xf4\xf6\xdd\xfb\xb3\x93\xf8\x27\x2d\x07\x2f\x48\xae\x29\x67\x46\x72\xcd\x8b\x51\x85\x76\x39\x49\x50\x9a\x35\xa0\x0a\xed\xf2\x9e\x20\xe0\x21\x21\x74\xd2\xde\xf9\x6d\xff\x60\xe5\xb5\x6f\x9d\x37\x46\xb7\x32\xe1\x12\x97\x3c\x0c\x8f\xf6\xda\xd1\xe0\x0e\xf2\x65\xb2\x0a\x4c\x68\x8d\x9a\x1e\xc1\xc3\x7d\xd0\xfb\x75\xcf\xa3\x7f\x05\x14\x26\xd4\xd3\x2e\x3c\x21\x21\x62\x12\x3c\x08\x62\x4d\xd6\xdc\xaa\x9e\x56\xed\x35\xda\xba\x71\x12\x11\x23\x56\x65\x26\x27\x8e\x02\xc8\xfa\x3e\xb2\xda\x90\x94\x4d\x98\x9f\x54\x01\x1c\xc7\xce\x3f\xdb\x91\x1a\x81\xed\x42\x80\x3d\x8b\x80\xbe\xe6\x79\xf5\xba\xdc\x89\x6d\xc2\xc3\xd0\xb0\xb5\xbc\x62\x61\x13\xec\x17\xab\x44\x3e\x88\x0c\x70\xb3\xf8\x37\x56\x97\xed\x1d\x0c\xdc\x21\x81\x0d\x9e\x69\x8e\xf1\x6b\x7e\xd7\x0c\xa9\x53\x7b\xc7\xc7\x59\x51\x20\xee\x73\x72\x67\xb4\xb3\x26\xb9\x63\xdf\xc6\xe6\xb2\x7e\xd3\x87\x39\xc9\xbd\x20\x37\xce\x9b\xfc\x5f\xe9\x35\x9d\x4b\xcd\xc2\xb8\xf3\xbf\x1b\xf2\xbb\x40\x39\x2c\x6c\xec\x51\x6b\x44\x7d\x83\x2f\x25\x4d\xae\x75\xca\xd2\xc9\xf2\x18\xfa\x6b\x97\x1a\x34\x8c\xbf\x6f\xa6\x43\xc3\x4e\x37\xdb\xf9\x4d\xa0\x05\xe4\xaa\x99\x86\x61\x8e\x71\xd5\xfc\x1d\xac\x34\x62\xb9\x22\x43\xb8\x24\xc3\xf1\xe5\xa3\xa5\x27\xee\x97\xc6\x67\x8c\x2c\xa7\x97\xb3\xea\x6a\xad\xdb\x56\x5b\x70\x42\x14\x43\x94\xa1\x54\xa1\x1b\x0b\x7e\x0c\x0b\xcf\xef\xc2\x10\xc3\x05\x99\xce\xe0\x94\x8c\xc6\xa7\x8f\x6e\xaa\xe8\x96\x83\x01\xbe\x68\x6a\x25\xb4\x4c\x72\x47\x6e\xa6\xa7\x33\x3c\xb9\x8b\x5d\x03\x77\x0e\xaa\xe7\xe4\xc6\xf1\x75\x1a\x02\x99\x85\xd3\x27\x32\xbd\xad\x3c\xe8\x2f\xe0\x44\x43\xac\x5a\x60\xe7\x61\xf8\xc9\x56\x7f\xee\xc2\xbe\x54\x33\xd5\x36\xbe\xfb\x84\xb1\xf1\xda\xef\x7d\x26\x29\xba\x85\x05\x9c\xc0\x05\x9c\xeb\x95\x72\xf2\x98\x5c\x85\x21\x5a\x0d\xc8\xc2\x31\x18\x57\x70\x82\x07\x9f\xe1\x8a\x9c\x0c\x6e\xfd\x00\xfd\xa1\xf5\x6a\x50\xe5\xc2\xe5\x6c\xdc\xf4\x97\x68\x3a\x8f\x58\xc7\x11\x3e\xf0\xd6\xbd\xb0\xa9\x5d\x66\x72\x22\xd8\xfe\x4e\xd1\xd2\x01\xb9\x36\x61\xfc\x72\xc2\x19\xf6\x71\xf4\x13\x68\xdf\xf5\xe0\x2a\xcf\xc7\xf9\x2d\x53\xe9\x12\x25\x9e\x4b\x1a\x62\xbc\x4d\x93\x9c\xea\x5d\xec\xc8\xd2\x83\x60\x6c\x52\x42\x9f\xd2\x53\x36\xe1\xff\x54\x09\xb2\x11\x4f\xd4\x7e\xfb\x8f\xbd\x6f\xa9\xfb\xf2\x28\x88\x73\xc2\xa6\x89\x4b\x1e\xc1\xc1\x08\xcf\xc6\x76\x6d\xce\xe9\x22\xd9\x64\x2a\xd6\x7d\x5b\x90\x41\xa2\x27\x50\x4f\xf6\xa2\x36\x8a\x61\x0b\xb4\x78\xbc\xb1\xdd\xcf\x88\x64\x68\x71\x38\xaa\x6f\xbe\xb7\x27\xd3\x34\xce\x1e\x91\xcd\xa4\x5a\x2b\x62\x9a\x1d\x8c\x66\x93\x6a\x90\x23\x1c\xdb\xa4\x41\x33\x89\x96\x39\x11\xd3\xc5\xc1\xa8\x8a\xac\x50\x55\x90\x6b\x26\x35\x2f\xad\xe2\xd4\xde\xc5\xc7\xfe\x34\xfa\x73\xe5\xf8\x64\x84\x4d\x1b\xd2\x65\x57\xac\xd2\x42\xe5\x70\xcc\x1f\x79\x46\x7c\xcc\x07\x03\x6c\x82\xeb\xd4\x02\x16\x6f\xc8\x2b\xb5\x27\x4e\x59\x42\xc2\xc8\xae\x33\x41\xe5\x97\xd0\x58\x53\xac\x11\xe6\xc9\xfb\x26\x98\xde\x18\x37\x90\x84\xd5\x66\xdd\xbe\xc8\x86\xed\x7a\x25\x19\x87\x8d\x3a\x43\xce\xbe\xf5\xea\xac\xaa\xc8\xa2\xab\x1b\xde\xcc\xf5\xde\x9e\x64\xac\x32\x31\xf1\xe6\xf7\x5d\x0c\x6f\x23\x5a\x95\x19\x2e\xae\x61\x3f\x04\x5e\x5d\xa2\x32\x96\x8f\xf8\x58\x0e\x06\x98\x36\x2e\xb6\xb4\x57\x83\x81\xb2\x97\x5c\xf4\x5a\x17\xc7\x28\xbc\x07\xe0\xb6\x4d\x73\x75\x2d\x28\xae\x02\x9d\xb8\x4a\xc5\x0c\x04\x28\xab\x47\x5b\x33\xb2\x75\x41\x7d\xe2\x94\x81\x7b\xb4\xf7\xd8\x75\x50\xf9\xf6\x2c\xd9\x6c\xbb\x10\x02\x96\xdf\x5b\xbe\x31\x23\x7d\x33\x95\x61\xe8\x53\x9a\xec\xa3\xfb\xda\x3a\xc3\xea\x74\x86\x69\x65\x89\x7c\xc3\x61\xd8\x9d\xee\x7a\xf7\x4c\xc8\x95\xb1\x63\xec\x18\x5f\xc7\x1d\x29\x3e\x7b\x18\xb6\x8e\x43\x7d\x72\xd9\x06\xda\x07\x46\x6f\xbf\xb1\xe2\x46\xa9\x30\x6c\xbc\x44\x2c\xd7\xb5\x4c\xf6\x93\x90\xc2\xb1\xb1\xff\xbc\xac\xc6\x69\x9f\x9a\x1d\x6b\x14\xd3\x7d\xdb\x75\x06\xfa\x4a\x60\x35\x9d\xdd\xba\xf0\x77\x65\x77\xc1\x29\xda\xd9\xed\x22\x8c\x73\xbd\x74\x2a\x9f\xa9\x78\xa3\x5f\x9f\xb6\x6f\x17\xdf\x5b\x42\xfa\x7b\xc7\xda\x79\xc6\xb2\xaf\x16\xd3\xdf\xbb\x96\x5c\x26\x2e\xbf\x56\x4c\x7f\xef\x6a\xcd\x95\x88\x17\xcc\xc2\x8a\x26\xab\xae\x75\x9b\xdb\xc5\xaa\x51\x45\xb4\x66\x6b\x6a\x0a\xbf\x3f\x7b\x75\x4e\x13\x99\x2e\xdf\x26\x32\x59\x75\x79\x64\x76\x4d\xfb\x4e\xa9\x9d\x65\xb5\xf3\xd5\xce\x60\xc2\xe7\x89\x9c\x3f\x91\xe2\x36\xa7\xf2\x84\xdf\xec\x9f\x4d\xa1\xae\x78\x48\xd5\x95\xd5\x45\x11\x9c\xd1\x24\x55\x6f\x8c\x3d\x9f\x16\x8c\xab\x4f\x1a\x7f\xcc\x37\xa9\x46\x91\xf6\xab\xb5\x57\xbf\x37\xcf\x79\xe7\x17\xcd\xa9\x7d\xed\x7e\xa1\xae\x6f\xde\xae\x52\xf3\xc7\xee\x92\xdb\x8c\xc1\x8a\xca\xab\x7a\xfe\x7b\xaa\x29\xdf\x56\xa9\xd2\x72\xec\x7b\x48\x9d\x4e\xf9\xac\x03\xd7\xcb\x89\xfe\x40\x14\x72\x47\xef\x31\xb5\x37\xcf\x56\xe7\xf3\x64\x08\x62\x3f\x32\x1c\x7f\x24\x0c\xd1\xcb\x18\x6a\x92\xbc\xc6\xd9\x3d\x2d\x61\x4e\xe9\xfa\xf5\xff\x58\x9f\x3b\xb2\x29\xa4\x85\x6f\x1c\xff\xdf\x19\x0e\xfd\xac\x28\x9f\xef\xdd\x1d\xef\x65\x3c\x86\x68\x8b\x59\xe3\x78\x6b\x6f\xf1\xed\x76\x55\x9c\x30\x66\x38\x82\x98\x1a\xcb\xe5\x12\x94\x64\x9d\xdb\x4b\xd5\x0a\xcb\x7f\x7e\xcc\xff\x72\x08\x41\x80\xeb\xa4\x8f\xf9\x5f\x1e\x98\xa4\xe6\x15\x26\xf3\x26\xa1\xa7\x5c\x0b\x25\xef\xcf\x5e\x56\x71\xb9\x90\x6a\x54\xf0\xef\x7f\x1d\x1e\x5e\x31\x08\xfe\xd1\xac\xf5\xdf\xbf\x3b\x32\x89\x71\x2b\xf1\xe1\x5f\x0f\xaf\x20\x78\xd0\x4e\x3b\x36\x19\xa1\x9d\x38\xd4\x19\x07\xad\xb4\xef\x9f\x98\x8c\xd3\x76\xe2\x53\x93\x38\x0b\x2c\xc5\x5d\xb2\x6e\xe3\xcc\xca\x79\xcf\x5a\x63\x6a\x6e\x52\x62\xae\xa5\x3e\x47\xfe\xb5\x1c\xc6\xa2\x3d\xac\x83\x28\xc6\x9c\xd4\xec\x15\x6a\x5c\x89\x25\xb4\x38\xb6\x66\x55\x6c\x09\xba\x6b\x34\xe0\x38\x97\x30\xb4\x55\x57\xc1\xfd\xe8\x80\x04\xd3\x59\x10\x1b\xce\x05\x1a\x35\xec\x9c\x51\x9a\x52\x4f\x6d\xcc\xcc\x89\x09\x91\x2d\x5e\x9e\x9f\xfa\x8e\xc4\xe6\x73\xe5\xf0\x6a\x38\xa1\x1f\xcf\x4f\xdf\x44\x96\xf2\xb0\x85\x71\xbc\x02\x61\x05\x9c\x39\x43\x14\x0f\x02\x12\x0c\xcc\xd4\xda\xc8\xcf\x58\xb3\xa1\xc2\xf8\x5e\xa3\x20\x0c\x70\xa9\xd9\xad\xda\xfd\xbb\x3a\xe8\xf9\xb7\x00\x8f\x0f\x46\x4e\xce\xd0\x1d\xf1\x5c\xbf\x09\xbe\x3e\x20\xf6\xb4\xa8\x51\x60\x12\xe0\x49\x30\x09\x62\x5d\xe9\x80\xd7\x51\x32\xea\x05\x76\xc3\x7c\xb8\x07\x17\xd1\x3e\x27\xd3\x59\x79\xc3\x9a\x91\x58\xf3\x7b\x02\xfd\xb6\x8a\xd9\xe1\x6d\x17\x9b\x6c\xc1\xb2\x8c\xce\x63\xe5\x2c\x8b\xe8\x5c\x6f\x0c\x68\x67\xf6\x71\x09\x4b\x68\x35\x65\xcd\x4f\x5a\xb6\xd5\xcd\x62\x53\x35\xf3\xd1\xba\x1b\x49\x46\x87\x81\x77\x6a\xf2\x57\xff\xee\xcc\x63\x35\xc3\xcd\x3a\xda\xf1\x9d\x1c\xab\x46\xc3\xd0\x5d\xdc\x64\xb5\xf8\x77\x8c\xdc\x30\x58\xed\xaf\x6b\x07\x8c\x46\xe5\xcd\x33\x1d\x89\xb7\x8a\x48\x6f\xe0\xaa\xb1\xc3\x15\xeb\xd0\xe7\xf7\x4d\xf0\xd1\xbe\x8a\x2e\x2e\x8e\x8f\xde\x1c\x9f\xbc\xba\xb8\xc0\x8d\x59\xba\x64\x95\xcb\xa2\x96\x65\x9c\x86\xb7\xf6\x5c\xea\x2d\x13\xeb\xce\x7a\x49\x29\xef\x79\x22\xd4\xe0\xe3\x6f\x3b\x2b\x30\x1e\x49\x7f\x52\x85\x1e\xfb\x09\x23\x97\x0c\x2e\x18\xb9\x65\x75\x9f\x4e\x99\x73\x34\x3c\x61\x5a\x42\xab\xfa\xe2\xb7\x78\xc3\xaf\x4a\xc1\xd0\xe8\x47\x6c\xd6\x4b\x56\x14\xfd\x13\x86\xc3\x70\xbf\xd0\x09\x6b\xd4\x04\xbb\x55\x34\x5c\xa3\x4f\x98\x49\xaa\x7d\xa1\x5b\xdf\x9a\x92\x40\x2b\xd7\x4e\x0e\xe7\xef\x3f\xc4\x65\x59\x76\xa0\xf6\x85\xb9\xb9\xc5\x75\x21\x0c\x51\xab\x77\x9d\x96\x43\x0b\x19\x35\x81\x1a\x86\xe8\x82\x91\x66\x8a\x53\x91\x30\xf8\x64\x8c\x42\x3e\x33\xd2\x1f\xc1\x31\x23\x07\xa3\x46\x04\x53\x3d\x59\x9f\x59\x18\x9e\xeb\x7d\x6e\xb3\x9c\xfb\x13\x9c\xc9\x27\x46\xce\x99\xd7\xa4\x7c\x62\x38\x36\xa5\xe1\x93\xcf\x10\x86\x6f\x19\x6a\x5e\x1f\xa0\x5f\x0d\xf6\xfd\xcc\xfc\xc1\xd6\x29\x43\xef\x18\x1e\xeb\xaa\x87\xe3\xda\xb5\xb2\xaa\x63\x4c\xc7\x56\x7e\x3e\x67\xe4\x93\xeb\xeb\x78\x30\x38\x66\x8f\xe8\x18\x9f\x9b\x9e\x4d\x8f\xd9\x2c\x92\x1b\x8e\xf0\xd8\x76\xa0\x51\xbc\x3c\xb7\x8a\x45\x37\xbc\xe6\x72\x67\x0b\x0d\x11\xd2\x86\x89\x9b\x95\x66\x9a\x8b\xf4\x64\x33\xdf\xea\x15\x73\xa1\x57\x4c\x57\xb1\x1d\x08\xc3\x6e\x35\x7a\x65\x5c\x30\x13\xd6\xa3\x63\xb1\x5c\xb4\x16\xcb\xfe\x52\xb9\x60\x3b\x37\x21\x96\xa8\x75\x1f\xe2\x11\x6b\xf8\xcc\x2f\x36\xdc\x9b\xd8\x25\xc6\x6d\x9c\x96\x47\x4d\xac\x24\x37\x2d\x7b\x3d\x5f\xc6\xa9\x15\x6c\x17\xaa\xc2\x4d\x04\xf0\x46\xcf\xa1\xd9\x8b\xaf\x18\x79\xc3\xe0\xda\xfc\x3d\x33\x7f\x5f\x9b\xbf\x0f\xcc\xdf\xa7\xe6\xef\x4b\xfd\xd7\x46\x89\x61\x64\x21\xa3\x35\x95\x0b\x21\x57\x9a\xf9\x2e\x8a\x6d\x09\xef\x19\x79\xc6\x22\x2e\x6e\x8b\xe2\x19\x8b\x56\xe2\xcb\x1b\xff\x98\xfb\x27\xe1\x1f\xac\x63\xb3\x79\xdb\xe7\xc7\x35\x2e\xd1\x84\x11\x47\x57\x76\x5f\x20\x87\x2d\x9f\x30\xe2\xbf\xd9\x30\x2d\xcc\xba\x7a\xbf\x63\xe9\x75\x87\x51\xd1\xfd\x0a\x9a\x03\x1b\x2d\x60\x3f\x22\x47\x43\xc5\x30\x1a\xcb\xfd\xf8\x59\x46\xcd\x30\x95\x07\xa3\x9d\x90\xc7\x9f\x9c\x79\x95\x69\xd2\xce\x1d\x06\x4d\x53\xab\xd5\x5b\x14\x9f\x59\x51\x9c\x32\xf4\x96\x99\x33\x30\x95\xd1\x38\xb8\xb4\x62\x49\x00\xee\xc1\x1a\x05\xde\xc4\xdb\x12\x12\x79\x75\x13\x4f\x67\xe0\xee\xf5\x8c\x83\xc0\x3f\xe6\xfa\xb3\xe0\xf1\x2b\x06\xc9\x7c\xee\x5d\x48\xe3\x6b\x06\x82\xa7\x34\x3e\x63\x20\x16\x8b\xf8\x35\x03\xeb\xa9\x5a\x65\x78\xe0\x53\x8e\xb2\xcc\x27\xe6\xf1\x53\x06\x74\xc5\x54\xfc\x92\xc1\x25\xe3\xf3\x5d\x79\x77\x0f\xbb\x3b\xdf\xac\xc8\x65\xf6\x11\x0f\xf2\xcd\x7a\x6d\x43\x4c\xe1\x12\xd2\xdb\x79\x47\x04\x8d\xc3\xa0\x84\x74\x39\x67\xf2\xdb\x1a\x30\x59\x3b\xab\xdf\xac\x92\xfc\xba\xc3\xc6\x70\x58\xc2\x52\x2a\xb6\xea\x32\x30\x8b\x86\xc3\xd1\x5f\xde\xbb\x5d\xf7\x8c\x61\x90\x8d\xc3\x46\x6b\x74\xd6\x7c\xff\xf7\xd1\x5f\x46\xf4\xef\xb5\x5d\x52\x18\x22\x79\x40\xd4\x74\x38\x03\xc4\xf5\xc3\x68\xe6\xee\xfa\x3b\x38\x00\x3e\x20\x3a\x33\x86\xa9\x04\x3e\x2b\x61\x9d\x25\x4a\xef\x8c\xc6\xfc\x4a\x9a\xd1\x24\xa7\x7a\xe6\xac\xbd\xa4\x7e\xda\xac\xdb\x9d\xdd\xdb\x00\x07\x4f\x18\x3e\x1c\xd1\xef\xca\x12\xbe\xec\x6a\x26\xef\x61\x2c\x8d\xa0\xc4\x2d\xa7\xc1\x23\x25\xde\xaf\xd7\x54\x1e\x27\x39\x45\xe6\x4a\xa8\x76\x8a\x66\x7b\xcc\x35\x4d\xe0\xaf\x6d\x9f\xf2\x99\xb5\xb1\xfa\x63\x97\x25\x69\x9d\xe6\x7d\xe5\x93\x72\x97\xcb\x11\x0a\xf6\x62\x49\x2d\x5d\x10\x89\x41\xcb\x29\x7f\x6c\x68\xae\x08\x37\xcf\xf9\x5a\xf0\x9c\x12\x01\x4a\x73\xcf\x9f\x99\xc8\xcd\x02\xb0\xb7\xd9\x29\xa1\x99\xdd\x0e\x9f\x32\xe7\x27\x6d\xe3\x68\xb9\x17\x30\x41\xd9\x4c\x8a\x7e\x82\xb9\x0b\xe5\xa6\xb7\x8d\xbd\x03\xb4\x4e\x00\xab\x8a\x71\xb9\xcd\x33\x2c\x58\x46\xdf\x54\x55\xf8\x37\xc8\x18\xa7\x6f\x1a\xb9\xeb\x77\x48\x45\xb6\x59\xf1\xe6\xc7\x66\x0a\xe4\x2a\x49\xaf\x63\x7f\x0b\x41\x7a\xed\xe7\xdc\xe5\xd4\xcf\xa0\xc1\xe2\x13\xe6\xb4\x2c\x41\x95\xa8\xde\x05\x0a\x57\x80\x2d\xe1\x03\x23\xd3\xc0\x38\x87\x07\xc9\x46\x2d\x85\x64\x5f\xdc\xdd\x98\x41\x6a\xe3\x48\x1e\x58\x1c\xd3\x48\xd0\x84\x21\x80\x80\xaa\xe4\x4a\xff\x7c\x5e\x33\x49\xf3\x00\x82\x85\x14\xab\x00\x82\xa5\xc8\x55\x00\x01\x5b\x1c\xac\xc4\xdc\xd8\xf2\x1f\xe4\x8c\xa7\xd4\xa6\x6d\xf8\x5e\x6a\x96\xe4\xaa\xca\xab\xdf\xbd\x87\x02\x04\xab\xe4\xf3\xc1\x42\xc8\xdb\x44\xce\x75\x0b\x6b\x29\x3e\xdf\x1d\xec\x76\xd4\xc4\x02\x35\xb1\x1e\x25\x55\xf2\xee\xc0\x5c\x5b\x12\x40\xb0\xc9\xa9\x3c\x48\xae\x28\x57\xc1\x0c\x5e\x30\x62\xc4\x9e\x7d\xad\x0d\xc2\x93\x5d\x3b\x1a\xa0\xe4\x10\xad\x72\x46\x0b\x25\xd9\x9c\x72\x85\x7d\x9c\x8c\x5a\xc5\xa2\x6b\x3f\xba\x32\x8e\xa1\x72\xd7\x77\xdb\x45\x95\x43\x41\x12\x34\x02\x60\x55\x28\x83\xd7\x16\x73\xe6\x2e\x23\xcd\xb3\x1d\x29\x25\xd9\xe5\x46\x51\x14\x2c\x25\x5d\x04\xc0\xad\xb1\xaa\x7e\xc1\x70\x6f\x96\xad\x7e\x8a\x6d\x36\xf0\x61\x0b\x62\x59\x47\x30\xa8\x1f\x6b\xd9\x37\xb6\x62\xbb\xc6\xfb\x7a\xb2\x74\x71\x91\x6b\xe6\x55\x8b\xaf\xb1\x6e\x4b\x3f\x4c\xfc\x43\x53\x09\x30\xa9\x4b\x26\xb9\xce\xab\x7f\x26\xf6\xa7\x91\xef\xdf\x5a\x0d\x98\x3d\x64\x1b\x31\x9b\x48\xa3\x5b\xdd\x47\x21\x15\xac\x13\xb5\xb4\x81\x0f\x0f\x03\x42\x88\x8c\x7c\x42\x7d\xbe\x34\xa9\x13\x75\xae\x41\xfd\x5a\x56\x02\x22\xe1\xfe\x32\x65\xbf\x7a\x1c\xe4\x9a\x82\x92\x25\xbe\x6e\x19\x18\x59\x98\xe2\x89\xfe\x12\xd7\x81\xa8\x2b\x70\x19\xb9\xd4\xbf\x84\xa1\xed\xbe\x49\xd4\x0f\x65\x89\xf0\x3e\x76\xed\x0f\x4b\xf8\xf5\x6b\x0b\x6d\x7b\x2b\x59\x4b\xfd\x5a\xc7\x7e\x73\x71\x88\x34\xdf\x9a\xb8\x98\x75\x46\xea\xee\xd0\xa1\x68\x06\xc0\xb4\xe1\x6e\xe8\x96\x38\x0c\x5d\x19\xbf\x1d\x49\x30\xf0\x98\x1e\x49\x1c\x29\xf1\xfc\xf5\x3b\x2f\xff\xbb\xc2\xd5\xd1\x72\x5d\x58\xc3\x55\x97\x6c\xe7\x10\x8d\x1c\xce\x9d\x24\x18\x08\xe7\xd5\xc9\xea\x6f\x39\x4d\x37\x92\x06\x18\xea\xdd\x20\xc4\x35\xa3\x24\x71\x8a\x82\x71\x4f\x93\x58\x49\x93\x79\x07\x15\xdd\x29\x14\xad\x0c\x5b\xdb\xb4\xba\x44\xff\x2c\xc6\x1f\x3f\xe6\x7f\xc1\x28\x18\xa8\x41\x80\x09\x9a\xfe\x73\x3c\xfb\x0b\x0e\x6a\x8b\x6b\x3a\x99\xd3\x7d\x70\x4d\xbf\x9b\xe1\xd8\xd9\xaa\x18\x2e\x25\xde\x13\xd8\xcd\xbc\x20\x05\x41\x00\x1a\x66\x26\x6e\x09\x3e\xf8\xdf\x3f\xfc\x95\x7e\x8f\xcb\x32\xde\x9d\x37\xbc\xdd\x1d\x47\xeb\x28\x65\xbf\x1d\xbc\x2d\x4b\xf8\xa9\x4b\x90\xbe\x27\x9c\x5e\xeb\xaa\xda\x79\xa2\x12\x10\x7a\xe9\xd1\x64\x4e\x65\x3e\x36\xd3\xe3\x8f\x3a\xcc\x14\x3a\x2a\x2b\xa6\x81\x8b\xff\x7b\xf0\x4e\xa3\x69\x7b\x63\x86\xe5\x6d\x7f\x7d\xfd\xea\x85\x52\xeb\x33\x4b\x2a\xcd\x2d\x05\x91\xc6\xa5\x7e\xe5\xd9\x37\x83\xd8\xb8\x0d\x86\x1c\x40\xea\x53\xd7\x49\x9e\xdf\x0a\x39\xd7\xa9\x63\x11\x1d\x35\x71\x30\x09\x9e\x24\x39\x4b\x7b\xc1\xe0\x52\x89\x04\x25\x83\x20\x0e\x06\xa9\x95\xc4\xad\xb3\x31\xda\x10\x15\x5d\x26\x39\x7d\x7f\xf6\x0a\x72\xa2\xa2\x8d\xcc\x60\x13\x86\xfd\xc3\x7f\xa2\x69\x72\xf0\x65\xa6\xff\x7c\x9c\x7f\x1c\x7c\x3c\xf8\x18\xcd\xfe\x12\xe3\xc9\xc7\xc3\x8f\x87\x1e\xe9\xe6\xb8\xdb\x00\x86\x4e\x1a\x0a\xca\x8f\x87\x03\x8b\xd6\x06\x1a\x47\xd0\x26\xd2\x3a\x1c\x58\x74\xa4\x4a\xb4\x81\x1c\xc7\xb9\x8d\xe7\x15\x89\x35\xe5\x48\x45\xd6\xba\xad\xcd\xbe\xc0\x92\xa1\x05\x18\x6f\xcd\x64\x95\x57\x0f\xe7\x54\xda\x88\x9c\x36\x60\x2d\xb0\x48\x59\xb1\x8d\x28\xff\x04\xec\x4f\xe2\xbc\xe8\xa6\xc3\xf0\xaf\x7a\xef\x44\x26\xdf\xb9\x75\xb1\x42\xe6\x3c\xde\x38\x5c\x6d\xf2\xa2\x60\x15\x1f\xf3\xfe\xec\x55\x18\x0e\x5d\xfe\x2a\xa9\xd6\x99\xd9\xc8\x35\x18\xd7\x56\x95\x2e\x9a\x19\x31\x51\x5a\xb3\xec\xcc\x95\x7a\x61\x57\x4f\xc0\x78\x8f\x4d\x8c\xe9\x64\xe7\x77\x84\x61\x63\x6e\x0b\x9d\xa0\x06\x27\x58\x5d\xff\xff\x91\x07\x3b\xb7\x7e\xb1\x05\x4a\x9b\x4a\xbc\x38\xc0\x20\x34\x16\x54\x92\xad\x90\xbd\x4f\x5b\x49\x34\x84\x14\x6b\x54\xf4\x4a\xdc\x56\x60\x4e\xf6\xb3\xa5\x83\x11\xc6\x60\xaf\x1d\xdd\x18\x63\xe1\x0f\xac\xaa\x5b\xe0\xc7\x64\xe8\x6f\x6e\xd1\x5f\x49\x90\x53\x75\x60\x71\x86\x26\x20\x62\x62\x0a\x4d\xf4\x9f\x78\x3a\xc3\x5e\xef\x30\x4d\x66\x38\xae\xbe\x0c\x02\xe8\x05\x83\x24\x4e\x4c\xec\xaf\x0d\x8e\x37\x16\x41\xc0\x82\xd8\x1b\x8e\x6b\x2e\xf2\x9d\xb9\x70\x30\x50\xf4\xb3\x39\x7d\x69\x7f\x98\xd4\x53\x12\xd7\x8f\xef\xe8\x67\x05\x76\x1e\x63\x3f\xa1\xee\x5d\x7f\xaa\xd2\x4c\x3e\xb7\xa5\xe3\xbc\xe2\xe4\xc0\x31\xb3\x31\x2b\x77\x8d\x0e\x1b\xf6\x9c\xf6\x9a\xe5\x9b\x24\x63\xf3\x44\x99\x5b\xaa\x36\xf9\xb8\xcf\x8b\x82\x23\xe9\xea\xc7\x13\x85\x24\x8e\x29\xfa\x83\xa1\xc0\x6d\xfb\xde\x22\x61\x19\x9d\xf7\x6e\x99\x5a\xf6\x6c\x36\x13\x48\xa2\xa7\xe9\xaa\xeb\xaa\xaf\xdd\xd8\xf7\x99\xe8\x21\xa6\x28\x48\x8c\x4b\x63\x45\xb7\xf0\x86\x58\x65\x69\x96\x7b\x72\x29\x64\xeb\x5e\x45\xa6\xd9\x9a\x56\xb3\x26\x8b\xf5\x4c\x0e\x4e\x8e\x4f\xdf\xbc\x39\x7a\x62\x9c\x19\x02\xa3\x0a\x66\x5e\x25\xaa\x6b\x33\x4e\x33\x2d\xfe\xdc\xd4\xf4\x86\xaa\x5b\x21\xaf\x2d\x17\x6b\xdc\xb5\x75\xef\xea\xd2\xb6\xb0\xdf\x8f\x7b\xb6\x93\x81\xfb\xd2\x13\x8b\x5e\x30\xa8\xb6\xeb\x20\x58\xe5\x3d\xfa\x39\xa5\x74\x4e\xe7\xc1\xb8\x4a\x37\xad\xb8\xa8\x51\xc6\xb0\xbf\xf3\x0b\x06\xd3\x37\xfa\xb5\x51\x95\x70\x2f\x3f\xe0\x8d\x52\x7e\x65\xb0\x26\x48\x45\xe6\x0e\x2b\x49\x35\xc7\xc9\x92\x2c\x2f\x8a\x17\x0c\x2d\xb0\x09\x5a\xf4\x39\x97\x8b\x63\xb3\xca\xb5\x00\x31\xc9\x0c\xea\x40\xbb\xe9\xd8\x19\x46\x8f\xd7\x61\x88\xc4\xd4\x7e\xb6\xdb\x5a\x7f\x9e\x91\xb5\x51\xd5\xeb\x3d\xe3\x26\xc6\x7e\x34\x28\x21\x0c\x1b\xdb\x5d\xec\x39\x32\x7a\xab\x0e\x1e\x86\x6d\x51\xc0\x09\x7f\x8d\x6d\x3d\xa9\xa8\x11\x9d\xe9\xd5\xbe\xd3\x1a\x72\x77\xf7\x59\xc0\x54\xe7\xd3\xfb\x00\xc0\xc5\xff\x47\xdb\xb7\x2e\xb7\x8d\x2b\x09\xff\xff\x9e\x42\x46\x4d\x58\xc4\x11\xac\xc8\xb2\xe3\x71\x28\x23\x2c\x8f\xe3\xa4\x7c\x4e\x6e\x93\x64\xbe\x39\x33\x2a\x55\x0a\x96\x60\x1b\x89\x44\x6a\x40\x48\x8e\x57\xe2\xbb\x6f\xa1\x71\x21\x78\xb1\x33\x7b\x6a\xf7\x8f\x4d\x80\x20\x00\x35\x80\xee\x46\x5f\x77\xb1\x68\x56\xd2\xbd\xbd\x76\x43\x52\x3f\x97\x18\xbc\xc6\x6b\x55\x8d\x93\x5b\x89\xcd\x34\x3c\xbe\x16\x79\xd6\x3e\xdd\xd6\x44\x99\x77\x49\x5a\xd5\x20\xcf\x5e\xe6\x77\xd9\x22\x67\xf3\x0f\x32\xbf\x91\xbc\x28\xa2\x48\x74\x84\xdf\x5a\xd9\xb7\x88\x74\x7d\xd3\x29\x94\xd5\x0d\x7f\x5b\x35\xbb\x5e\x43\x4d\xf5\xf4\xc3\xb1\xea\x5d\x40\xa2\x6a\x96\xcd\xf8\xe2\x73\xfe\x8d\x67\x60\x8d\x51\x15\x9d\x5b\x5a\x87\xb7\x1e\xd8\x88\x0d\xe0\x00\xc7\x7a\xc3\xab\xea\xbc\xe2\x20\x0c\x6e\x66\xe2\xd3\x43\x5e\x7f\xbd\xe6\xd9\x3c\x36\x0e\x71\xe4\x57\x41\xb7\x75\xb6\x24\x41\x6c\xb5\x5a\x08\xc3\xa9\x3f\xfd\xbe\x7f\x77\x77\xa7\xef\x79\xcb\xfd\xb5\x5c\x18\x86\x77\x8e\x02\x61\xe2\x3f\xad\xc8\x72\xaf\xb9\x61\x30\xec\xd9\x5a\x55\x93\x01\x32\x92\x88\x46\x25\xb5\xfe\x6a\xbf\x0b\xf2\x87\xa0\x5b\x36\x67\x2b\xc5\x65\x12\x77\x6a\xcb\xeb\x7c\x53\x10\x2b\xea\xb5\x88\x22\x6f\xc9\x60\x65\x4b\x60\xcc\xf0\xa0\x91\x95\x91\x11\xbd\x16\xfa\x4c\xc7\xbf\x0b\xfa\x2f\x81\xc9\xef\x02\x13\x25\x59\x56\x68\x00\xd8\x41\x92\x49\x27\xc3\xf3\x5f\x1a\xd5\xa0\xb3\xd9\x8c\xaf\x14\xc2\xc4\x14\x6b\xbf\xcc\x9e\x29\xcf\x1a\x2a\xbc\xdb\x55\x3a\x44\x6f\x6f\x63\x2b\x9b\x65\x63\x68\x51\x95\x5f\x89\x05\x0f\x5a\x2f\xf2\x2b\x50\x28\x26\xcd\x1e\xad\x11\x4c\xea\xec\x5e\x92\x4e\x8d\xa8\xc2\x69\xfc\x4f\x98\xf2\x0f\x17\x7f\xac\x2f\x7f\x05\x57\x74\xad\xae\xf7\x4f\xc0\x2d\xb1\x52\xa4\x36\x15\x98\x5d\xbd\xea\x03\xdd\xea\xa4\xad\xe4\x4c\x54\x39\x0d\x81\x6f\x49\xf9\xa4\xc1\xdd\xb4\x6d\x72\x00\xc1\x58\xb5\xe9\x4a\x8f\x52\x49\xeb\x83\x50\x43\xd0\xbb\xa1\x1a\xc9\x90\xd4\x51\x75\x82\xfe\xfd\xe9\xe3\xab\xfd\xcf\xef\xff\x75\xf1\x0e\x91\x3a\x9e\x4e\xd0\xbf\xf7\xc3\xb7\x4b\xf6\xdd\xae\xf2\x1b\xe3\x10\xb2\x0f\x81\xb9\x02\xca\xdf\xa9\xbd\x7f\x41\x47\xc3\x61\x14\xa9\xd3\xc3\xe1\xb0\x2c\xc7\x7f\x08\x77\x7f\xa0\xdb\x59\xbe\x5c\xe6\x19\x24\x17\xe0\x2b\x95\xb4\x60\x47\x7a\x9a\xe1\x79\xba\x5a\x30\x91\x91\xde\x3f\x9e\xfe\x03\x95\x65\xa8\x70\x9e\x20\x83\xe2\x4d\x26\x00\x44\x4c\x8a\x9b\x69\x9d\x2f\xac\x06\x9c\xa8\x29\xdd\x96\x16\xe5\x57\x7d\xac\x8c\xa8\x68\xb5\x86\xbf\x1a\x7a\x8f\x77\xb1\x12\x03\x30\x44\x89\x7f\x35\x7e\xc1\xfa\x08\xff\x29\xe8\x1f\x81\x92\x0f\xf6\xfc\xf6\x51\x4c\x07\x58\xfd\xf2\xda\x1e\x35\x3e\x8f\x0d\x2e\xe0\xac\x33\x64\x00\x83\xdc\x9b\x1e\x72\xfe\x09\xf4\x12\xe6\x6a\x46\x97\xc2\x06\x13\xad\x1a\xea\x1d\xdb\x38\xd4\x61\x37\xfe\x97\xf8\xaa\x81\x59\x12\xdb\xad\xff\xd1\xf6\x76\x32\xad\xd7\xe3\x1f\xaf\x05\xe9\x82\x2e\x41\x66\x94\x1a\x98\xb9\x8f\x02\x5a\x8d\xcb\xc1\x93\x4b\x5f\x10\x0d\x6a\xdc\xed\xfe\x14\xee\x19\xc7\x6d\xa7\x6e\xde\x00\x18\xf7\x80\x31\x4f\x84\x77\x03\xc6\x1c\x38\x48\x9d\xde\x99\xb4\xe8\x46\xc4\x5c\x73\x01\xb6\xd7\x28\xe2\x9e\x42\x6b\xae\xcc\x17\x82\xe1\x6a\x55\x24\x28\x3f\x36\x01\x8c\x49\x15\x36\x1f\xf0\x8a\x8d\x9c\x23\x59\x43\x38\xce\x29\xa8\xa4\xac\xa3\x9c\xbe\x26\xd1\x09\x5a\xcb\x05\x22\xc8\x2c\x15\x00\x5b\x23\x3c\x44\x90\x9e\x02\x9a\x92\x9c\x4e\x90\x1d\xdd\x0a\x5a\x9d\x30\x13\x4d\x89\xa0\x13\x64\xaf\xc6\x88\xd8\x9e\x9a\x5b\xa7\x5e\x65\xe6\xec\xc7\xa9\x2e\xa5\xba\x99\x41\x37\x88\xa0\x06\x8b\xa4\x07\x36\xeb\x07\x82\xd2\x8a\xcb\x41\x04\xd5\x31\x93\xad\xa8\xd0\x11\x22\xa8\xc9\x4c\x40\x55\x93\x97\x31\x02\xdb\x1a\xa6\x42\x04\xd5\x11\x95\x69\xf3\x91\xcf\x85\xe4\x33\xa5\x8b\xb7\x4a\xad\x40\x90\x6a\x9f\x0b\x57\x08\xce\x2c\x22\xa8\xc8\x67\xdf\xb8\xfa\xc0\xd4\x2d\xaa\x19\xcf\x64\x8d\xd0\x04\x3e\xa8\xa3\xb1\xbd\x90\x1a\x6f\xe8\x67\xdc\xc0\x3e\x21\x83\x9b\x59\x93\x19\x4b\x52\xf8\x04\x02\xb1\x4c\x32\xc0\x38\xde\x94\x2c\x56\x93\x6c\x0a\x71\x62\x1c\x9b\x0d\xc3\x64\x53\xd3\x54\x3f\xd5\x29\xd3\x23\xdd\x04\x3d\x28\xb0\x34\x8b\xa1\x9d\x53\x92\x84\x13\x15\xf5\x89\x3e\x34\xf2\xa3\xfd\x8d\x8d\x84\x27\x73\xb7\xe1\x1c\x07\xe9\xfb\x67\xb5\x84\x45\xfc\xb1\xb4\xe9\x60\xae\xc3\xfc\x6d\x5c\x85\xd1\x0e\x82\x29\xcf\xfe\x17\xa6\x4c\x64\xc0\x00\x66\xcc\x4b\xea\xac\xc5\x7f\xe1\xd4\xd6\x22\x53\x5c\x6a\x22\x96\x6b\xba\xe6\xae\xce\x19\xbf\xeb\xdd\x0b\xe2\x2f\xe7\xa6\x5c\x96\x19\xab\xf9\xef\x1b\xa5\x51\xf8\x3b\xdb\xa4\x3e\x8d\x15\x0d\x93\x29\xe8\xd3\x8f\x07\x6b\xb9\x08\x6a\x87\xd3\x04\x92\x6c\x6e\x4b\x12\x2b\x2a\x59\x5c\x9b\x2a\x51\x18\x5b\x3c\x9e\x3a\x84\x4e\x03\xb9\x53\x70\x73\x4a\x6a\x1f\xb6\x3f\xea\x78\xdb\xec\xc0\xb5\x05\x62\x60\x43\x38\x4d\x38\xb3\x8c\xfa\x94\x48\xda\x4c\x10\xa2\x30\x98\x54\xb4\xc0\xe9\x00\xd4\x9d\x26\x9e\x0f\xd6\x59\x71\x2b\xae\x55\xac\x06\xde\x88\x8a\xb8\x70\x67\x7c\x8e\x7d\x58\xd4\x46\x9f\x16\x1d\x3f\xd0\xa9\x11\x7d\x3f\xd8\xe3\xd8\xa5\x88\x1d\x63\x49\xa5\x21\x43\x7c\x60\xe6\xa1\xc9\x8e\x7d\xf2\xbb\x52\x96\xa4\xb6\xe6\x37\x5c\xfd\x26\x3b\xe5\xb0\x9d\xeb\x46\x6e\x35\x69\x5f\xcb\xc5\xa3\xb2\xc0\xb6\x86\xe4\x6f\x30\x4b\x04\xd9\xc4\xa2\x4d\x9e\x27\x9c\xaf\xc6\x5e\x75\x99\x70\x68\xca\x66\xd7\x27\xf6\xdc\x84\x84\x2d\xb8\x35\x3b\x20\x51\x64\x2d\x17\x60\xe4\xf9\x9f\xb0\x5e\x8f\x4d\x23\x08\x1f\xd7\x3d\x91\xac\x6b\x22\x04\x44\x6b\x32\xf4\x8a\xc9\x19\xcd\x58\x75\xce\x45\x75\xce\x5d\x10\x70\x55\x0a\xd6\x71\x93\x6a\xeb\x6f\xd1\x39\xd0\x0b\xd4\x8f\xc3\xef\x53\x94\xf4\x50\x3f\xac\x49\x60\x79\x6a\x9d\x56\x36\x6c\x2e\xec\x26\x63\x54\x04\xf3\x9a\x31\x77\x13\xf0\x97\xf5\xbd\xe0\x2e\xe0\xed\x0c\x02\x6f\x66\xfe\x9d\xcf\xd6\x2a\x97\xbd\xe5\xba\x80\x00\x75\xcc\xab\xb6\x07\x36\x38\x1d\x6f\xc7\x29\x6e\x2b\x02\xf4\xa1\x80\xac\xf9\xe3\x20\x94\x94\x6a\x20\x67\x1b\x3e\x72\xb7\x8b\xdd\x23\xf4\xc6\x0c\xd7\xe4\x2b\x4d\xea\xb1\x59\x0d\x9e\x0d\x66\xb8\x21\xa9\xb6\xab\x0b\x1f\x9b\x9f\x19\xd4\x94\x64\xc6\x6c\x24\x90\x56\xd0\x04\x7b\xfe\xb6\x4a\x93\x6f\x40\xbf\x33\x56\xe7\x17\x15\x05\xf3\x63\x43\xe5\x13\x65\x13\x76\xad\x19\x9d\x05\x80\x2f\x58\xdd\xe6\x26\x67\x26\x66\x94\x10\x71\xde\x81\xca\x09\x0f\xc9\x91\xb1\x9a\x8e\x25\x09\x9b\x12\x0e\x27\xc1\xbf\xe3\x9a\xd2\x80\xfb\x18\xa3\x05\x8b\xff\x14\x78\x7c\xcd\x06\x60\x34\x40\x73\x46\xae\x99\xd5\xe9\x76\xa1\x8c\x82\xc5\x92\xc5\xd7\xac\x86\xe9\x4b\xfd\x8d\xd9\x8b\x94\xb1\xaa\x00\x8c\x0c\x5d\x43\x8d\x28\x6c\x83\x1b\xa1\x8b\x6c\xb1\xe8\xea\xde\xe1\x69\xe7\x17\x71\xcd\x06\xc5\x4a\x72\x36\xff\x51\x06\xad\x86\xf7\x17\x08\x4a\xb9\x4b\x89\xb6\x60\xf4\x9a\x91\x95\xfe\x3b\x5e\xf8\xa9\xd3\x15\x83\xb7\x73\x46\x17\x8c\xdc\xb2\xb6\x0c\xa3\xee\xc7\x44\x36\x8c\xd6\x92\x8f\x93\x7b\xd6\x95\xdf\x5d\x41\x3c\x55\x3a\x1c\xf3\xd3\xd1\xb3\xe3\x71\xbf\xcf\xb1\xb2\xfa\xc2\x27\xa8\x1f\xc7\xfc\xf4\xe0\x38\x45\x43\x13\x9e\x30\x30\x97\x3e\x38\x06\x5d\x41\xa0\x92\x09\x43\xf3\x61\xb2\x6c\xf2\xe5\x95\x75\x15\xdc\x12\xe0\xe6\x6a\x7e\x83\xcf\x08\x68\x16\x12\xc0\x81\x13\xe0\xdc\x87\xe3\xec\xd4\xfb\x7a\xf5\xfb\x19\x7e\x98\x25\x09\x08\xca\x0d\xa3\x5b\x30\x78\xfb\x9c\x5b\x47\x9b\x25\x23\xac\x28\xc4\x4d\x33\x42\xa0\xfd\xa6\xc1\x5f\x49\x3e\x5f\xcf\x6a\x67\x3c\x44\xec\x13\xa9\xd9\x23\x39\x25\xaa\xc4\x44\x99\xe4\x7c\x57\x22\xe3\x9d\x5d\x87\x49\x9e\xb9\x4d\xe4\xc7\x1a\x31\xcd\x82\x4c\x14\xdb\xfc\xea\x6b\xb2\xcd\x13\x55\x42\x92\xe7\x04\xe5\xa8\xd4\x1c\xc1\x64\x6a\x81\xc1\x43\x60\x04\xe1\x85\x35\xe7\x2b\x68\x3e\xc8\xaf\xbe\x4e\x20\x2c\xe2\x6a\x4a\x58\x8d\x6f\x04\x46\x72\x38\x9e\x9d\xb2\xaa\x8b\x99\x0f\x15\x36\x99\x4d\x49\x41\xc5\x64\x3d\x1d\xb7\x9c\x25\x0a\xef\x6d\x56\x58\x3f\x6b\xe9\x39\xcc\x02\xf2\xc0\x5b\x53\x6d\x3d\x79\x61\x26\xbe\x2e\x5d\xe6\xca\xb8\xa8\xb2\x29\x36\x7f\xf5\x58\x79\xeb\xbb\xb1\x0f\x07\x36\x58\xe5\xab\x58\xe3\x10\x0e\xbf\x86\x9b\x5f\x03\xc9\x74\x58\x2c\x71\x10\x1f\x52\x83\x25\xa7\xc3\x71\x5e\x79\x5b\xf6\xfb\x79\xb5\x47\x24\x68\xa7\x32\x33\x0d\x5d\xd0\xdc\x49\xd0\x27\xcd\xca\xb2\x84\x48\xf0\x25\x31\x7a\xe9\x96\x07\x87\xd3\xf0\x56\x6a\xcc\xfe\xd3\x1b\x82\x7a\x26\xbb\x0f\x12\x45\xbe\x7f\x72\xf2\xec\xf9\xfe\x01\x18\x47\x38\x03\xd2\x2c\xf0\x63\x98\x0c\xf7\x9f\xb3\xfd\xeb\xe9\x76\x54\x3e\xbd\x11\x64\x9d\xf1\x62\xc6\x56\xbc\x66\x7b\xdc\xa1\x14\x0f\x23\x63\xfb\x28\x1d\x25\x31\xf2\xb7\xd6\x34\xad\x57\xad\x4f\x1a\x54\x77\x8a\xa0\xa0\x4c\x46\x05\xe4\x2a\x0d\x39\xe7\x8c\x9a\xfc\xa5\x0f\x4a\x42\x15\xf6\x79\xbb\x6a\xae\x99\x59\x15\x12\x0a\x93\x87\xa0\x60\x7e\x68\x9c\x85\x5e\x1d\x6b\x0f\x8e\x23\x00\x47\xc7\x1d\x06\x3d\x19\x1d\x3f\x19\x1d\xa2\x3e\xc8\xed\x2e\x33\xcd\xbf\x1a\xb7\x84\x11\x26\x07\xc7\xb8\x8f\x9e\x1c\xfe\x82\x34\xc1\xad\xf6\x3f\x42\x44\xd0\xe1\x58\x9c\x66\xd5\x46\xf0\x16\x1b\x59\x18\x54\x46\xe0\xf1\xd1\x33\x7d\x49\xda\xed\x8e\x8e\xcd\xff\xe7\xb6\x7c\x30\xb2\x15\xec\x05\x3d\x3a\x89\x22\x76\x4a\x9f\xfd\x0c\xa5\xe3\x67\x50\x7a\x6e\x42\xdc\x3c\xff\x19\x4a\x07\xa3\x51\x9a\xf7\x6d\xef\xd0\x73\xc2\x4e\x0f\x46\x27\xba\xf2\x9e\x4d\xd8\x34\x61\xa7\xa3\xe1\x91\x2b\x1f\x3c\x1f\xed\xd8\x8b\x17\xc7\xd3\xbe\x2e\x8c\x4e\x76\xc7\x87\x11\xb4\xb1\xf1\x70\xd8\x0b\xfa\xec\xe7\xc3\xa3\x23\xdb\x7c\x34\x3a\xd2\xcd\x0f\x46\xbe\xbd\xfe\x38\x3a\x3e\x6c\x7c\x1f\x8b\x3e\x3d\x20\x8c\x42\x80\x9b\x7e\x1c\x1f\x0c\x47\x87\x11\xc3\xa7\xa7\x07\xc3\x1d\x3c\x37\x7e\x3d\x26\xb6\xff\xa3\x21\xf4\x7f\x12\xf6\x7f\x30\x0a\x07\xe8\x1c\xd0\x9f\xe5\xfc\x51\x8f\x55\xe3\x7e\xd0\x76\xeb\xc5\x51\xb4\xb7\x17\x37\xbc\x56\xff\xc7\xee\xa8\xe0\x46\x68\xcc\x4e\x1e\x73\x5e\x34\x2d\xfe\x8e\xc4\x5f\xa3\xf1\x25\xbb\xbf\xe2\x6f\x6b\x99\xfc\xac\xa3\xf2\x86\x41\xa6\xa3\x8a\x82\x79\x74\xac\x2a\x2f\x6f\x7a\x80\x2d\xc2\xb3\x12\x84\x80\x22\xb9\x03\x61\xc6\x69\xba\xbd\x05\x71\x96\x65\xcd\x2d\xbe\x05\x3e\xe9\xa6\xc3\xb1\x4b\x4d\x24\xb1\x4f\x79\xb6\xc7\x3b\x20\xee\x1c\xa4\x26\x9c\xc8\xe9\x38\x06\x25\x50\x8d\xf8\xee\x76\x99\x66\x60\xf2\xbb\x0f\x0e\x36\x05\xde\xed\xf6\x6e\x99\x81\x4c\x2b\xb9\x9d\x04\xdd\x88\x26\x80\x74\x6f\xe8\x77\x03\x2f\x7f\x3c\x01\x4f\x0a\xa5\x8b\xfd\xec\xcd\xba\xe0\x27\x45\xd1\x1e\x60\xf8\x28\x8a\x73\xba\x64\xe0\x27\x87\x89\x7d\x05\x6f\xd2\x58\x76\x5c\x4b\xa5\x35\x46\x70\x53\x86\x3c\x64\xd6\xd7\x89\x4f\xf2\xe9\x58\x74\x38\x0a\x8a\x28\x92\x0f\xf8\x0f\xe6\x53\xaa\x62\x01\x8b\x92\x78\x28\x9b\x28\x11\xf0\x52\x42\x14\x72\x9f\xe8\x18\xa8\xab\xec\xe0\x1a\x78\x95\x71\x53\x13\x1f\xf7\x5b\xc3\x69\xba\xd1\x20\xc0\x8b\x80\x01\x75\x85\x00\x79\x6b\x8e\xcb\x92\x5c\xb1\x87\xe3\x1a\xde\x31\x6a\x1d\xea\x2e\x18\xdd\x7e\x7c\x75\x7e\xf0\xf3\xe1\x49\x82\xec\x03\x22\x1f\x5f\x9d\x1f\x3e\x3f\x39\x86\x1a\xfd\x80\x4a\xf2\x85\xd1\x1b\x36\x30\xbc\x50\xbc\x75\xd1\x19\x2e\xd8\xc0\x36\x21\x60\xd6\xaf\x14\x97\x45\xe2\x7b\xec\xe0\x66\xaf\x98\x73\x94\xbf\x63\xe0\xce\x57\xfa\xd1\x3a\x5a\x7b\x62\x51\x96\x25\xb9\x60\x98\xbc\xff\x31\xff\xfa\x89\xd1\xed\x95\x64\xb3\x6f\x5c\x75\x6b\x4f\xfa\x68\x32\x45\xc0\x51\x2d\x59\x02\x72\x73\x86\x88\xc8\xe6\x62\x56\xcb\xf2\x1a\xba\x97\xf5\xd1\x04\xf5\x39\x24\x6f\x24\x92\xaf\x38\x53\x9d\x3d\x97\x25\xf9\xda\xe4\x9e\xbf\xb3\x66\xfa\x45\xd8\x19\xe4\xbc\xc9\xe7\x7e\x67\x2e\x74\x1b\xf9\xaa\xb7\x6e\xca\x13\xc8\x8c\x4d\x3e\x33\x0a\xa6\x6b\x21\x0e\xf2\x5e\x7f\xe4\x03\xa3\x5f\x3c\xb3\x4f\xce\x34\x07\x3b\x9f\xff\xba\xe6\xf2\xfe\x83\xe4\xd7\xe2\x7b\xb2\x77\x40\xe0\x98\xbe\xcc\x55\xa1\x0b\x56\x79\x96\x20\xa3\x3d\x73\xe5\x4f\x3c\x53\x22\xe3\x0b\xdd\x64\xce\x17\x62\x29\x14\x97\x09\x8a\x90\x63\x1d\xc0\xcd\x40\x3f\xc9\xe4\x86\x0d\xcc\xa3\xad\xf9\xff\x90\x21\xf7\x7d\xb6\xb8\xd7\x5f\x9b\x9d\x90\x7c\x60\xd5\x9e\x48\xbe\xb0\x41\xb5\x41\x26\x1f\xd8\xd4\x03\x7c\xef\x80\x14\x4e\xe0\xf2\x80\x0b\x7b\xef\x33\xab\xb0\x6d\xf1\x4d\xac\xde\xad\x17\x0b\xf3\xa5\x92\x62\xa6\x74\x11\x22\xe7\x8b\xec\x06\x22\xaf\xbf\xab\x60\xeb\xd0\xa4\x09\xa4\x52\x4f\x06\x69\x0e\xd9\x2d\xd9\x50\xfe\x40\x9c\xb5\x59\xba\xa1\xb3\x58\x92\x0d\x4e\x36\xa1\xd7\xb8\x9e\x68\xba\xa1\xd7\xf1\x06\xbb\x1d\x64\x14\xe5\x5f\x59\xbc\xd1\x78\x68\xa3\x4f\x8b\x23\x0c\xf1\xa6\x8b\x5d\xe9\xa9\x56\x8f\xd7\x10\x70\xa0\xc4\xd8\xda\x55\x12\x84\x31\xf1\xa1\x7c\x34\xaa\xca\x1d\x9e\x67\x51\xb4\xb7\x4a\x59\x2c\xc9\x99\x5b\x0c\x49\xe6\x04\x7d\xe3\xf7\x08\x27\x72\xbc\xa1\x08\x95\x1d\x1a\xce\xf8\x96\x6e\xf0\x6e\xd7\x8a\x2e\x70\xbb\xdb\xa1\xab\x3c\x5f\x70\x96\xd5\x2b\x9b\xcc\x1f\x34\x14\x37\x22\x53\xb5\xba\x1b\x56\xd1\xd9\x0d\xf6\xb3\x4c\x27\x8b\x78\x95\xca\xe4\x81\x89\x1a\xff\xd3\x45\xcc\xe2\x4d\xe3\x35\x04\x57\x42\x18\x4f\x93\xc9\x22\x96\xae\x9d\x0b\x20\x84\xb1\xb1\x7f\xbc\x27\x4b\xc8\x15\x7d\x5d\x45\x03\xda\xb8\xb1\x97\xba\xfa\x2b\x8b\x67\x18\xdf\xd3\x59\xe5\xa4\x7b\x53\xbb\xdd\x6c\xf0\xf8\x9e\xae\xd3\x9b\x41\x91\x4b\x15\xaf\x71\x72\xe3\xfd\xba\x4d\x48\xa3\xfb\x8a\x31\xbc\x32\x1b\xe6\x8e\xde\x4f\xae\xa6\xe4\x82\x6e\x26\x77\x30\xf6\x9e\x30\x01\xdf\xf7\x28\xbd\x30\x4d\xbe\x50\xd8\x08\x69\x57\x00\xa8\x54\x13\x9e\x3b\x9c\xc8\x44\xf6\xe3\x22\x45\x03\xd4\xbf\x4b\x34\x7e\xb9\xd3\xf8\x05\x8f\xcf\x59\xbc\x24\x2a\xbe\x20\x5f\x1e\xd8\xb5\xd8\x5b\x47\x2f\x4b\xf2\x86\xd1\x16\xa9\x6d\x62\xc4\x3a\x42\x6a\x58\xff\xd8\x2c\x1c\x8a\xe4\xcd\xb4\x8d\x7b\xde\xaf\xed\x8c\x8d\x7d\xd8\x15\xaa\xdc\x32\x45\x51\x75\xa9\xae\xea\xba\x04\x69\xee\x6d\xb7\x40\xed\xc2\xbc\x04\xb7\x4f\x95\x3f\x20\x51\xa3\x6a\x60\x11\xd5\x6e\x77\xc6\xdc\x73\x2d\x53\xaa\x6f\x11\x45\x16\xb7\x35\x2a\x83\xeb\x46\xf8\xa6\x7b\x56\x9f\x6f\x79\xcf\x36\xe8\x19\x79\xae\x17\xf8\x71\x01\xc1\x11\x61\x0c\xd2\xab\x7a\x25\xbd\x5c\xf6\x2a\x3b\x13\x27\xd8\xab\xd0\x73\x63\xba\x06\x23\x1a\x58\xbf\xb7\x28\xae\x86\x28\x89\x6f\xd3\x3d\xc7\xdf\xb2\x6f\x59\x7e\x97\xf5\x4c\x23\x37\xcd\x95\xcc\x37\x62\xce\xe7\x1a\x76\xd2\x0f\x53\x9a\x1b\x5d\x1d\x11\x4b\x7d\x0f\x3e\x63\x56\x31\xe4\x92\x43\x75\x1a\x2e\x99\x26\xbb\xdd\x57\x16\xbb\x02\x36\x1c\x97\x2f\x92\x26\xe9\x69\x63\x14\x35\xa8\x37\x49\x9b\x15\xc9\x19\x6b\xd4\x04\xd4\xab\x0a\x40\x34\xf0\x95\xe9\x19\x1b\x04\xf4\x6d\x2f\x78\xe5\x49\x1d\x6f\x11\xb9\xae\x99\x35\xda\xa4\xad\x9a\xa4\xda\x78\xae\x2a\x20\x95\xc1\xe4\x7c\xa5\x9e\x5c\xd5\x22\x78\xe1\x88\x6a\xd7\x3c\xcc\xab\xd4\x3d\x24\x67\x0d\x6a\x2b\x93\xce\x05\xb2\x2f\xfd\x77\x32\x09\x30\x6a\x8b\x4e\x3f\x3c\x70\xd5\x28\x6d\x57\x55\x7d\x56\x75\xc4\x2c\x7f\x92\x07\xf4\x3e\x6b\x10\xf5\xce\x19\xd7\x9a\xa4\x8d\xb2\x1e\xa9\x56\x11\x50\xfe\xae\xc9\xfb\xb7\x69\xf0\x0c\x9d\xb8\x02\xd1\x28\xfe\x81\x99\xe4\x52\xa5\xe6\x9f\x31\x17\xee\x60\x2c\x3a\x07\x6d\x35\x4b\xbb\x2a\x61\x1a\xad\x5a\x10\x21\x8d\x3b\xe6\x93\xdb\x03\x95\x66\x34\x1e\x12\x57\xc2\x31\x42\x9a\xd1\xff\xca\x62\x5f\x65\x72\x25\xb9\x92\x71\x09\x20\xcc\x92\xc4\x76\x30\x58\x97\x97\x84\xba\xf4\x6c\x08\x8d\x85\x11\xab\x82\xd8\xf3\x95\xc1\x23\x22\xeb\x7d\x62\x69\xad\x2e\xe1\x1a\x7f\x1a\x96\x0d\x89\xac\xc7\x53\x3e\xb0\xc5\xd4\xd7\x27\xc8\xf0\xc6\x28\xf1\x55\x63\x13\xb8\xee\x13\x9b\x88\xe9\x58\xee\x76\xb1\xac\x51\xdf\x0c\xc2\x51\x68\xb0\x47\x91\x34\x24\xd8\x14\x2b\x19\xcd\x9a\x0e\xc7\xeb\x50\x4e\x67\x23\xbe\x15\x54\x4e\xd6\xd3\x71\x5e\xad\xaf\x91\x36\xea\x5f\x37\x29\xa6\xbb\xdd\x39\x8b\x19\x79\xc7\x62\x5d\x22\x05\x99\xe9\x81\x5a\x6b\x40\x82\xef\x49\xee\x8e\x5e\xee\x8f\x10\x6c\x06\x07\x60\x3b\x55\x92\x07\x28\x26\x6f\x6c\xd2\xbc\x42\xaf\xbe\xbf\xe0\xa8\xe4\x9e\xe8\x18\xdb\xa4\x6b\xe7\x43\x93\x57\xb8\x01\x93\x05\x05\x17\x9c\xbc\x89\x2c\x21\x80\x06\xaa\xb2\x10\x34\x90\x51\x14\x35\x05\x8b\xbe\x49\xba\xe8\x53\x4d\x14\x4f\xa8\x11\x92\x1d\x0c\x87\xc3\xc3\x27\x87\xbf\x44\x28\xa9\xde\x5c\x8c\x9e\x3c\x3f\x7f\xf2\xfc\x30\x42\x55\x24\xc6\x17\xc3\x74\xd1\xbf\x4e\x10\x2a\x31\xf9\xc6\x3a\xfc\x3b\x89\xc0\x5b\x13\x89\x24\x50\x56\x5b\xb3\x04\x7f\x4d\xaf\xaf\xb9\xef\x3a\x8a\x62\x46\x79\x1f\xa5\xa8\xff\x86\xc1\x66\x90\xe9\x9c\x4d\xd4\x34\x66\x44\x12\x81\x13\x50\xab\x6a\x94\xea\xab\x05\x4e\xdc\xe3\x1b\x16\xe7\x98\x08\x7d\x83\x64\x1d\x79\x62\x5b\x11\x79\xf4\x78\x9e\xfa\x86\x2a\xfe\xb4\xa6\xef\xdf\x96\x20\x42\xfe\xc9\x78\x44\xa5\xfe\x29\xd1\xc7\x4f\xbf\xb0\x36\xf4\x39\x45\x4f\xd9\x4a\x3c\xdd\x0c\x9f\xb2\xd9\x2c\x5f\x67\xaa\xf0\x0f\xfb\x0b\x51\x28\x44\x04\xdd\x96\x84\x05\xa1\x82\x2b\x83\x89\xc1\x55\x3e\xbf\x87\xd8\x29\xe6\x31\xb0\xb7\x35\x15\x69\xc3\x6c\x29\xf0\x76\x7e\x2b\x8a\x42\x64\x37\x3d\xc9\xff\x5a\x0b\xc9\xe7\xbd\x1e\x28\xae\xb9\x46\xbc\x3d\xfd\x2d\x32\x69\xab\x7e\xfa\x0b\xf6\x8e\x7b\x57\x44\x51\x4d\x5f\xd1\x7a\x8f\xbb\x55\xf7\x02\x2c\x6d\x5a\xad\x27\x0a\x4c\xc9\xbe\xb1\xd8\xea\x9c\x65\x3f\x27\x0a\xf8\xd5\x0c\xe3\x92\xbc\x65\x74\x9b\xb1\x25\x2f\x56\xcc\xa4\xa8\xb1\x29\x9d\x6c\xf2\x17\x73\xb4\x44\x26\x94\x39\x3d\x90\x18\xca\xc1\x2f\xd9\x96\x25\x31\x09\x43\x0b\xff\x41\xd7\x15\xca\x3a\x34\x94\x44\x14\x97\x41\x57\x9d\x4d\x83\xb1\xa0\xf3\x33\x3b\xd8\x27\x70\x60\xe8\xfa\xc6\x82\x0b\xee\x22\x45\xac\x06\x6e\x7a\xd8\xa0\xaa\xb8\x5b\x58\x30\x58\x81\xe3\xaa\xe4\xf3\x77\x6c\xc9\x61\x41\x6b\x35\xa9\x1a\x88\x39\xb8\x33\x2e\xf8\x79\xbe\x5c\x31\xc9\x63\x3e\x10\x73\x9c\x34\x3e\x6d\xb5\xa9\xbd\xb5\x69\x0a\x5d\xfe\xac\xed\x22\x67\xf3\xf3\x26\xa4\xf4\xbc\xe2\x21\x51\x60\x84\x28\x14\x8e\xd1\x9b\xf7\x67\x2f\xbf\x9c\xbf\x7f\xf7\xea\xf2\x35\x02\xcd\x52\x05\x96\x2e\x10\xfc\x25\xe3\xd7\x72\xb0\x64\xf2\x5b\xf5\x73\x7b\xbc\x4a\xdf\xe7\x76\xf6\x6b\x39\xb8\x93\x6c\x55\xd7\x04\x83\xaa\x66\x8c\x6d\x64\x51\x98\xff\x86\x72\xc8\xfc\x6b\x62\x8b\xf6\x86\x3e\x36\x28\x75\x73\x84\x28\x8d\x2e\x2b\x22\x31\xad\xe9\x21\xc9\x6c\xf2\x57\xb7\x6a\xc8\x04\x11\xed\x1d\x26\x32\x46\x9f\x2e\x3e\x7f\xb9\x7c\x77\xf9\xf9\xf2\xec\xcd\xe5\x9f\x17\x2f\x21\xd8\xb1\x79\x7d\x94\x40\xa8\x51\x9e\xcd\x7d\x18\x52\x3e\x28\x54\xbe\x8a\x21\x21\x0f\x40\x11\xc7\xb8\x24\xb5\xce\xff\x13\x48\x98\xbb\xda\xff\x35\x3c\x7e\x62\xc0\x71\xcb\x3c\x57\xaf\xcd\xf9\xc0\x0e\x46\x47\xe4\x23\x8b\xb7\x0e\x5b\xe5\x03\x9f\x64\x09\x2e\x52\x36\x5f\xb7\x46\x0f\xfa\x74\x79\xf0\x8c\x86\x90\xd7\x43\x50\x3e\x28\x78\xa6\xb0\xf5\x15\x4a\x63\x46\x05\x58\x5a\xfa\x5d\x4f\x2c\xa0\xcf\xce\xcf\xdf\xff\xf6\xee\xf3\x27\x44\xd8\x6e\x37\x99\x62\x9c\x64\x31\x2a\x6e\xf3\xbb\xb7\x2e\x1f\xf9\xd6\x86\xaa\x78\x65\x5c\x92\x54\xde\x03\xe8\xf6\x5c\x4f\x03\x04\xfe\xf6\x75\x7f\x29\xeb\x57\x85\xe6\x2c\xbb\xe1\x12\x95\x64\xab\x7f\x24\x64\xc6\x32\x73\x3d\xfe\x9b\x4b\x59\x92\xa5\xcd\x52\x5e\x24\xdb\x60\xbb\x37\x8e\x45\x15\x74\xa0\x24\x8d\xfd\xd3\x6a\x19\xa0\x0e\xd7\xdc\x41\xa1\xd5\xd6\xfd\x48\xca\xcb\x30\x7e\xda\x4f\x60\xf0\x30\x67\xdd\x86\x58\xeb\xba\x8f\x68\x90\xc6\x1a\xf0\x87\x33\x25\xae\x79\x67\x56\x99\x02\xd6\x05\x97\x03\x30\xc8\x18\x4b\x50\xab\x76\xb6\xa7\xe8\x17\xce\x24\x97\x3d\x54\xc9\xd3\x03\x39\xbc\xe5\x48\x5e\x5a\xb4\x9d\x20\x7f\xd2\x88\x98\x27\x88\x55\xa5\x59\x9e\x25\xe0\x37\xb7\xbf\x99\x31\x39\x47\x36\x8a\xe4\xc5\x5c\x28\x93\x5b\x1a\x6c\x30\x0a\x9b\xd6\xcf\x11\xbf\x2d\x5b\xad\x2e\xb3\xeb\x3c\x79\xc9\x88\xcc\xd7\x8a\x17\xc9\xc4\x8e\x54\xf5\xbd\x62\xea\x36\x41\x4f\x11\xe8\xbb\x41\xa1\x59\x24\xfa\xc3\xe4\x52\x96\xe5\x94\x64\x6c\x73\xa9\xf8\xb2\xfa\xf2\xac\x36\xab\xb7\x4c\x01\x33\x96\xbc\x64\x03\x5d\x36\xe3\x24\x0f\x8e\xe2\xe0\xa0\x9b\xcf\x09\x7a\x8a\xb0\x1e\xa4\x50\xb9\xe4\xc9\x5b\x70\x21\x1c\xff\xbf\xff\x0e\x00\x00\xff\xff\xd0\x0a\x71\x25\x70\x13\x01\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\xbd\xe9\x76\xdb\x38\xb6\x30\xfa\xfb\x7e\x4f\x21\xf1\xe4\xb0\x81\xd2\x36\x2d\xa5\xba\xaa\x4f\x53\x41\xd4\x8e\xe3\x0c\x55\x49\x9c\xb2\x9d\x54\xaa\x14\xb5\x3f\x9a\x82\x2c\xc4\x12\xa0\x02\x21\x3b\x8e\xc8\xfb\x3e\xf7\x35\xee\x93\xdd\x85\x89\x83\x44\xa5\xd2\x67\xf8\xd6\xcd\x5a\xb1\x48\x10\xe3\xc6\xc6\x9e\xb0\xb1\x31\xa5\x33\xc6\x29\x42\xb3\x35\x4f\x15\x13\x1c\xe1\x4d\xb0\xce\x68\x27\x53\x92\xa5\x2a\x18\xde\x26\xb2\xa3\x48\xb0\xe6\x36\xe3\x34\xe8\x12\x75\xbf\xa2\x62\xd6\xb9\x5e\x88\xab\x64\x71\x31\x67\xd9\xa8\x7a\x8c\xdb\x72\xde\x31\x3e\x15\x77\x23\xfb\xd3\x9a\xc3\x56\xe0\xea\x69\xcd\x91\xd1\xc5\x6c\xa4\xff\xc4\x9b\x62\xe8\x3b\xdb\xa1\x48\x01\xc5\x1b\x49\xd5\x5a\xf2\x8e\x42\x94\x6c\xe8\xe7\x95\x90\x2a\x8b\x37\x45\x01\x34\x72\x6f\xb8\x7a\x2c\xf4\x88\x24\xa9\x0f\x59\xe1\x8d\x4e\xa4\x64\x37\xe5\xf4\xea\x13\x4d\x55\xb4\x92\x42\x09\xdd\x13\x90\x84\x46\xf3\x24\x3b\xbd\xe3\x6f\xa5\x58\x51\xa9\xee\x81\x93\xc0\x17\x0c\x88\xef\xef\xf9\xfd\xf2\x4a\x2c\x46\xf6\x27\xde\x14\x20\x08\x8f\x98\xa2\x32\x51\x42\xe6\x79\xf0\x8f\x7f\xf8\x97\x00\x18\xe1\x51\x92\xdd\xf3\xf4\x65\xfd\x7b\x23\x25\x80\x84\xf0\x48\x89\x73\x25\x19\xbf\xbe\x48\xae\x4d\x96\xda\x7b\x50\x01\x25\xd5\x40\x01\x09\xdc\x0e\x42\x10\x1a\x86\xb4\x1a\x42\x87\xf1\x4c\x25\x3c\xd5\xbd\x9c\x8d\x68\x3c\x03\xe6\x87\x99\x4a\x9a\x28\x8a\x44\x95\x19\xeb\x76\xe9\x5d\xe7\x12\xf1\x3c\x1f\x4f\xf0\xd0\x81\x9a\x45\x97\x8c\xdf\x8a\x9b\x3a\xcc\x74\xa3\xb6\x49\x4e\x82\x6c\x9d\xad\x28\x9f\xd2\xe9\xb9\x4a\xa4\x0a\x7c\xb9\x32\xb7\x00\x86\x37\x6c\x86\x02\xfa\x99\xa6\x6b\xc5\xf8\x75\x40\x08\xe1\x58\xcd\xa5\xb8\xeb\xe8\x26\x4f\xa4\x14\x12\x05\xcf\x29\xb7\x20\xe8\xb0\xac\x93\x2c\x24\x4d\xa6\xf7\x1d\xb9\xe6\x5c\x17\xc1\x43\x5d\x45\x2a\x96\xab\x05\x55\x74\x6a\xab\x30\xd5\x9a\x7a\xf4\xbb\x70\x55\x32\xdf\x85\x73\x84\x8b\x99\x90\x48\x46\x4b\xaa\xe6\x62\x4a\x04\xc8\x28\x91\xd7\x84\x0d\x87\xb6\xfb\x09\x91\xd1\x94\x2e\xe8\x75\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x42\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x19\x4e\x05\x57\x8c\xaf\xa9\x6f\x20\x2d\x0a\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x46\xb9\x22\x32\xba\x74\xbf\x89\xbc\x1e\xd2\x45\x46\x3b\x8d\x0e\x97\xf9\xcd\x38\xb6\xe0\x58\x87\x11\xa9\x0d\xdc\x0e\x61\x28\xa3\x29\xcb\x56\x89\x4a\xe7\x27\x9f\x53\xba\x32\x90\x36\x5f\x70\xa1\x1b\x0a\x6c\x0f\xeb\xad\x84\xa1\x8c\x92\x2b\xb9\x5e\x29\xe4\xbf\xda\xba\xf0\x90\x93\xda\xe4\x18\x42\x30\x23\x6b\x37\xcd\x06\xee\x5c\xc8\x65\xb2\xd0\xb5\xcd\x22\x83\x2c\xba\xc7\x5c\x03\x4f\x70\x3a\xaa\xf5\x2e\xae\x86\xf1\x1b\xa3\x8b\x69\x00\x33\x03\xf1\x16\xe8\x6d\x6e\x93\xc5\x9a\xc6\xe6\x3b\xe8\x7a\x62\x5b\x5d\x51\x54\x10\xb2\xad\x85\x21\xda\x06\x81\x9b\x50\x97\xd3\x4d\xeb\xcc\x8e\xbf\x28\x90\x02\x09\x09\x06\x56\x94\x4b\xc5\x0f\x67\xa3\xe4\xbd\xa3\x22\x1b\x5d\x77\xec\xc7\x06\x89\xbc\x8e\x55\x94\x26\x8b\x05\xd2\x19\x8b\x22\xd5\xd0\xd5\x04\xa2\x91\xdd\xb5\x68\x72\x17\x45\xa1\xa2\x3b\x99\xac\x48\x6a\xa0\x96\x91\x3a\xc9\x9a\x21\xbc\xa9\x3a\xb0\x68\xbc\xad\xf4\x9b\x2e\x32\xd5\x45\xa6\x63\x31\x21\x35\xba\xec\xa9\xdc\x9c\x65\x85\xa9\x78\xee\xd7\xed\x35\x55\x6f\xfd\x8a\x3d\x9d\xc1\x2d\x99\x87\xe1\x1c\xcd\xd1\x29\x1a\x4f\x30\xc6\xc3\xdb\x30\xbc\xed\x12\x4d\x07\xa4\x1d\xca\x2d\x08\x1c\x86\x68\x4a\x6e\xb1\xa9\xe9\x9e\xac\xaa\x35\x4f\x66\xb5\xe7\x26\x65\x98\xe2\x6a\x20\x4b\x0d\x84\xb1\x45\x73\xf0\x00\xf0\x38\x34\x89\x66\x42\x9e\x24\xe9\xbc\x46\x66\x29\xde\xa8\x31\x9d\x34\xa8\x6c\x6d\x4c\x9e\xa2\x20\x0a\x0a\x17\x05\xc6\x15\x5c\xae\x2d\x99\x37\xa4\x65\x58\xcf\x4b\x9a\xf4\xa4\x2c\x90\x54\xe0\xd2\xa4\xa4\x4e\xec\x39\x24\x78\xd3\x2d\x73\x9a\x92\x90\x40\x6a\xab\xcf\x34\x86\x8f\xc5\x04\x14\x30\x8b\xe4\x76\x60\x5d\x42\x32\x87\xe3\x76\x21\x64\x06\x41\x17\x64\x16\x19\x84\xf5\x6b\x7f\x11\x86\x81\x30\x20\xab\x58\xc1\xa2\x04\xfb\x02\x82\xcb\xcb\xe4\x2e\x61\x2a\xc0\x23\x1a\x49\x9a\x89\xc5\x2d\x45\x8b\xc8\xa5\xe2\x48\xcd\x29\x6f\x72\x26\xee\x28\x09\x28\xd3\xcb\x02\xc3\xf6\x67\x07\x7a\xff\x1d\xc7\xb5\x9a\xdb\x6a\x74\x5d\x26\x0a\x12\x34\xdb\xa9\xd0\x83\x6d\xb7\xde\x22\x45\x99\x5d\x4b\x06\x66\x1a\x90\x3a\xd5\x17\x20\x7c\xc4\x6d\x6b\x09\x24\x38\x4e\x10\x2e\xaa\x19\xbc\xaa\x66\x50\x12\x55\x32\xc2\x31\x75\x6b\x76\xa2\x61\x7d\x2b\xd8\xb4\xd3\xd7\xc4\xc9\x50\x12\x5a\x12\x61\xc2\xd7\x8b\x05\x54\x04\x80\xd6\x49\x64\x55\x5b\x64\xbb\x12\x86\x88\x96\xa4\xc0\xd3\x34\x6a\x68\x81\x6d\x01\x6c\x6f\xda\x2a\xc4\x6e\x34\xd9\x90\x6e\x53\x13\x5b\x83\x46\xa7\x8b\xfb\x15\x75\xdc\xe9\x62\x4e\x3b\xbe\xf9\xce\x54\xd0\xac\xc3\x85\xea\xac\xa4\xb8\x65\x53\xda\x49\x3a\x7f\x31\x85\xff\xd2\xb1\x75\x05\x25\xb4\xac\x18\xc2\xc9\x1a\x49\xa8\x06\x60\xdb\xa8\xe3\x9d\xa6\xf7\x16\xef\x5c\xc1\x7d\xdd\x32\xe8\xb8\x0d\xb1\x6c\x68\x05\x00\x6e\x99\x83\xad\x41\x8c\x84\x25\xd0\x88\x8e\x95\xc6\x94\xf5\x42\xbd\x49\x96\x74\x42\x84\x45\x0c\xa0\x91\xc6\x38\xa2\xcc\xcf\x2b\x91\x96\xab\xba\x5b\x41\xaa\x01\x64\x8b\xa0\x75\x10\xe3\xdd\xbe\xe0\x58\xc4\xe8\xdb\xa0\x5a\x42\xd4\xf6\x4e\x73\x7e\x0d\xd6\x84\x77\xdc\xda\x6a\xab\xbe\x42\xb6\xbb\x4a\x7e\xd3\x84\xfd\x95\x48\x63\x35\xee\x4f\x8a\xe1\xa0\xc3\x78\x47\x99\xae\x1b\x32\xfe\x4a\xa4\x44\x8d\x07\x13\x0c\x0f\xab\x2f\x33\xc6\x93\xc5\xe2\xde\x7e\x7b\x38\xd1\x3d\x9c\x29\x2a\xed\xfb\xf7\x13\x0c\x86\x00\x29\x79\x7f\xc2\x95\x64\x34\x8b\x56\xeb\x6c\x8e\x68\xad\xfd\x93\xaa\x7d\x15\x39\x06\xc5\x04\xcf\xf3\x4d\x31\xa4\x66\x36\x49\xc9\x5f\xf4\x28\x14\xed\x18\x30\x40\x3d\x37\xa1\x55\x85\x97\xba\xc2\xad\x66\xc9\xd8\x8f\x2d\x90\x42\xa8\xa0\x98\x80\x2a\x89\xee\x9d\xe9\xa4\xeb\xaa\xa4\x19\x55\xa8\xdb\xaf\xf5\xf0\x54\x57\xa8\xd7\x4e\xd9\xcf\xb1\x30\x4b\xb0\x86\x67\x86\x62\x29\x8b\x8c\xbb\xf2\xad\x45\x0e\x9f\x5b\xe9\x5c\x5d\x96\xbd\x49\xde\x20\x15\x2d\x28\xbf\x56\x73\xec\x65\xc1\x83\x01\x30\x52\x13\xd9\xf1\x46\x8b\x5f\xc3\x5e\x8f\x3f\xf2\x79\x87\x98\xcd\x90\x23\x92\x0a\x38\xae\x7a\xe1\x48\xd5\x98\xeb\x89\xd0\x68\x4b\xba\x03\x28\xc9\xad\xff\xee\xd6\xb5\xcf\xd1\x07\x5a\x54\x92\xaa\x41\x66\x56\xb8\xa5\xb7\xd1\xaf\xf1\x79\x8d\x36\x9d\x97\xcc\xc2\x09\x1f\xae\x36\x23\x7d\x74\xfb\xbe\x60\x67\x51\x63\x8b\xf7\x51\x2a\x78\xa6\xe4\x3a\x55\x42\x92\x15\xac\x1a\xef\x0b\x58\x8d\x93\x09\x59\x18\x69\x6c\x91\xdc\xeb\xe5\x45\x2a\x49\xf6\x99\x87\xa6\x5e\xfa\xd9\x4e\x72\x8b\x1a\xd2\x36\x01\x61\xa8\xea\x8d\xba\xf1\x76\xbb\x5a\x30\xa2\x84\x90\x45\x9e\xb7\x34\x49\x08\xd1\x84\xb5\xea\x57\x9e\xd3\x88\x27\x4b\x8a\x71\x01\x2a\x5a\x26\xf2\xa6\x8d\x41\x3b\x31\x20\x6b\x08\x1a\xa3\xd6\x54\xa4\x60\x85\x63\xa4\xa2\xcb\x4b\x03\xaf\xcb\x4b\xb2\x82\xc4\xac\xaf\x3c\x47\x4a\x03\xa6\xa5\x5f\x18\x83\xda\x2b\x76\xdc\x63\x50\xba\x77\x89\x91\xaa\x76\xbb\xb7\x71\xfc\x53\xcb\x5e\xb0\x44\xd7\x75\xfd\xa5\xf6\x32\x66\x7b\xe5\x29\x50\xd1\x51\x5d\xdf\x22\x7a\x31\x1a\x0d\xac\x2a\x61\x74\x2a\x30\x82\x46\xc9\xa9\x58\x18\x22\x46\xde\x4a\xb1\x64\x19\xb5\xb2\x94\x55\x98\xae\x51\xea\x0b\x60\x2d\x4a\xf8\xc6\xda\x26\x1c\x49\x3c\x4a\xe2\xc4\x20\x2a\x6a\xe3\xd8\x65\x61\x43\xb7\x95\x45\xfa\xb2\x80\x66\xc2\xb0\xd4\x40\xba\x6f\x02\x37\x80\xfb\xaf\x88\x90\x70\x5f\xea\x93\xbb\x59\x82\xb1\xa5\xb4\x9d\xb2\xb2\x49\xa0\x81\x74\x43\xef\xb3\x16\xfc\x1c\x4f\x86\x7a\x4d\x1b\xf6\x6e\x66\x1a\x53\x4b\x16\x25\xae\x96\xaa\xa4\xb7\x54\x66\x14\x61\x28\x97\x9e\xf4\xc4\x80\x96\x84\xc0\x11\x0d\x1a\xad\xc4\x0a\x19\xea\xc3\x6d\x8d\xae\x1e\xe9\x96\x3c\x07\x59\xd2\x03\x59\x94\x1f\x3d\x01\x90\x85\xee\xae\xc9\x9a\x91\x53\xb8\xac\xe1\xd6\xa6\xb6\x6a\xe2\x4b\x30\xe4\x31\xae\x8f\x49\x13\x46\x4d\x38\x57\x92\xde\x92\xbe\x25\xa2\x86\x88\xb8\x67\xa3\xbe\x59\x31\xd4\x3c\x3a\x7a\x61\x52\x7c\x97\xec\x4b\x83\x45\x99\xa4\x26\xcb\x34\x49\x35\xc1\x64\x9b\xb5\x78\x7a\x7e\x82\xa1\xab\xb0\x07\x31\x35\x00\xd1\x04\x3e\x50\x56\x7a\x49\xe7\x89\x3c\x52\xa8\x8f\x4b\x51\x53\x7f\x06\x8a\xc3\xd0\x51\xe5\x1e\x8d\xb2\x05\x4b\x29\x1a\x60\x2d\xf9\xeb\xcf\x5a\x16\x77\xdc\xba\x80\x4c\x89\x55\x5c\x43\x83\xda\x60\xfa\xce\x08\xb4\xd5\xb9\x71\x7f\x52\x63\x57\x4d\x99\x45\x59\x99\xc5\x2a\xaa\xaa\x2e\x7d\x58\x8e\x74\x9b\x2c\x0a\xd8\x51\x55\x5b\x27\x41\xf7\xc1\x57\x34\x74\xcc\x6a\xce\xb2\x61\x4d\x82\x37\xa6\x0e\x57\x7f\xe2\xf8\xab\x57\xc8\x0c\x74\x95\x17\x69\x24\xf0\x3f\x15\x5c\xba\x5d\x5e\x78\x48\x8b\xed\x41\x3b\x34\x3d\x18\x0c\xc5\x63\xd2\x1f\x1e\x1c\x08\x8b\xb0\x6c\x07\x3a\x62\x02\x09\x61\xdb\x10\x32\xac\x5a\xd3\x8d\xc8\x32\x6f\x5c\x89\xdb\x94\x4f\xad\x3d\xc3\x7f\x7b\x44\x4a\x2c\xf4\x06\x08\x37\xb9\x0c\x02\x2f\xbf\x04\x18\xd6\xb5\xe4\x4a\x78\xb1\x75\xa5\x61\xb8\x6e\x22\xf4\x23\x56\xca\x3e\x55\xe3\x55\x1a\x74\xfb\xa6\x60\x3d\x7f\x55\x69\xbd\x44\x2d\xb5\xf0\x56\x8c\xf4\x5f\x6e\xcb\x14\xd5\x85\xba\xeb\x5d\xdb\x8f\x92\xf7\x9d\x4c\x25\x8a\x2e\x29\x57\x9d\x3b\xa6\xe6\x62\xad\x3a\xa6\x78\x47\xc8\x8e\xeb\x41\xf0\x9f\xe8\x70\x51\x14\x60\xcd\x1e\x71\xdd\x80\x65\xa9\x91\xa5\x40\x7b\x67\x9e\xdb\x99\x2f\xcd\x6b\xdb\x33\xcf\x8d\x24\x25\x76\x67\xb1\x5c\x9c\xa2\x39\x51\x61\x58\x75\x5e\xd4\xbb\xe9\x50\x4b\x0c\xaf\x24\x4d\x6e\x8a\x42\x73\x9b\xc0\x3c\x9b\x45\x96\xe7\x81\xb7\x9e\x98\x77\x1c\x86\x15\xee\xd0\x30\xa4\x8f\x48\x7d\xd4\x86\x55\x69\x4a\xe4\xf9\x14\x1b\xd5\xf1\x33\xde\x94\x32\x93\x5b\x44\xca\x2d\x1f\x0a\x6c\x84\xf6\x51\x2f\x2b\x5d\xd5\x9a\xd1\x92\xbe\xf9\xe2\x4d\x33\x28\xc1\x05\xf8\x97\x2d\x70\x7f\x1b\xd5\xa8\x8d\xd9\x64\xd9\x1e\xb8\x49\x1c\x55\xdd\x31\x65\xe3\x9a\xb5\xcb\xe5\x40\x25\xf5\x21\x25\xe5\x55\x56\xf2\xae\x8f\xce\xeb\x8c\x55\x85\x76\x71\xc6\x35\x8b\x97\x72\x36\x28\xea\x88\xa9\xcd\x47\x31\x64\x05\xcc\x18\x67\xd9\xbc\x41\xcd\x4a\xd2\xbd\x1f\xad\xa8\x45\xab\x4a\x4b\xde\x42\x2b\x6a\xd0\x4a\xd6\xf5\x13\x3d\xe7\x75\xba\x5a\x42\x5c\xd6\xe6\x15\x64\xa9\xc0\x60\x38\x41\x52\x77\xb1\x00\xb3\x88\xfe\xa7\xba\x68\x71\xd0\x74\xcf\xb1\x73\xb9\x97\x55\xf0\x9a\x59\xc5\x6b\xaa\xba\x97\x9e\xa5\x8b\xa2\xd8\xa1\x0b\x6c\xa1\xf9\xea\xc2\x51\x82\x44\x29\xba\x5c\xa9\x00\x17\xe0\x19\xae\xb1\x32\xc6\xdb\xa6\xe9\x3a\xa8\x4a\xd6\xbc\xf1\xca\x66\xac\x95\x22\xa8\xf4\xe1\x98\x82\xd3\x7f\x63\x59\x40\x69\xce\xad\x61\x8a\x9f\xfa\x3a\xf7\xd0\xb0\x55\x05\x52\xe5\xce\xc3\xd0\x9a\x16\xaf\xbd\x1c\x75\xb6\xe6\x8a\x2d\x29\xa1\x95\x25\xb1\x94\x03\x03\x69\x2c\x68\xdb\x79\x3b\xa4\x23\x03\xac\x55\xcc\x02\x63\xe0\xad\x06\x34\xad\x0d\xbc\x4e\xd4\x9c\x10\xfd\x37\x0c\x95\xd9\x71\x40\x3b\xc6\xa8\x6a\xab\x26\x0c\xab\x67\x9c\xe7\x2d\x79\xed\x86\x4d\x18\xda\xdf\xf6\x3c\x19\x5d\xcc\xc2\x50\xff\x6d\xff\xae\x3b\x86\xf3\xbc\x36\xc4\x6a\x12\x02\x8c\x70\x4d\x35\x34\x4a\x6e\x69\x87\xed\x76\xb5\x68\xbb\x65\x6d\xd5\xda\x18\x24\xa4\xcb\x1a\x1b\x56\xae\xca\xbf\x75\xbd\xda\x60\x77\x8f\xfc\x06\x0d\xda\x14\x30\x80\xcd\x75\x5d\xca\xab\x0a\x15\x05\x1e\x0f\x26\x1a\xb0\x29\xd9\x14\x5a\x4c\x34\x85\x5e\x66\x27\x7c\xbd\xa4\x32\xb9\x5a\x50\x58\xd7\x0c\xad\xb5\x9d\x9f\xa7\x34\x4b\x25\x5b\x29\x21\x21\x23\x9b\x59\xbc\x0e\xc3\x6e\x6a\x29\xfc\x66\x10\x3f\x2c\x60\x80\x47\xbb\xb2\xf2\xda\xca\x66\x0a\xd7\x35\x36\x1a\xd1\xb2\xb9\x22\x4e\x0b\x98\x91\x26\xa1\x74\x8a\x4e\x95\x2b\xee\xa2\x41\xa8\x30\xa4\x82\xcf\xd8\xf5\xda\xa7\x3d\xd4\x69\x77\x92\x29\xf7\xfe\x57\xfd\x6e\xf5\x05\x5a\x14\xb0\xd0\x63\xf4\x62\x3f\xb4\xe9\x52\x9d\x85\xd7\xfc\x9d\xc0\xf8\x1f\x70\x30\xd0\x4b\x8b\x04\x41\x94\xad\x16\x4c\xc1\x9c\xb4\xc1\xbf\x6b\x61\x84\x82\x2f\x01\x6e\x05\x23\xea\x6b\x55\x65\xb4\xdb\x64\x60\xbb\x13\x10\xb2\x42\x0a\x8f\xa6\xde\x0e\x10\x04\x38\x76\x95\x2a\x5c\xb8\x47\xb8\x25\x5b\x62\xa2\x66\x69\x9a\xd4\x58\x32\x51\x33\x23\x1d\x27\xfc\x2f\x5a\x5c\x58\x2c\x9c\xfd\xad\x23\x78\x27\xe8\xa9\x4a\x1b\x2b\xe0\xbe\x0d\x04\x73\x74\x8b\x94\xd1\xaa\x5a\xbe\xee\xa2\xf8\x48\xf7\xa0\x4b\x88\x8a\xdb\xf4\xf4\x02\xae\xc9\x0e\xd3\xeb\x2e\x75\x03\xa5\xf5\xc4\x90\x53\x30\x94\x91\x86\xe1\x6e\x2d\x48\x6a\x86\xe3\xa6\x4d\x0b\xf5\x4b\xb3\xcf\xe2\x26\xaa\xac\x88\xb7\x1b\x6b\x4c\x69\x83\x03\xa7\xb3\x3f\x29\xdc\xfd\xaf\x35\xbf\x6f\x0a\x04\xbf\xa5\x52\x39\xeb\x5d\x47\x89\xce\x4a\xb2\x25\x53\xec\x96\x76\x4c\xbf\x34\xed\xbe\xd2\xa8\xb9\xb5\xb5\x7a\xd7\xba\x0a\x3a\x57\x1e\x43\x28\x2e\xe0\x84\x88\x68\x2a\xd2\xb5\x96\x11\xe1\x92\x2c\xd1\x09\x0e\xc3\x25\x3a\x71\xc6\x83\x93\x85\x91\x1e\x31\x9c\xb6\xcd\xf4\xe5\x68\x2b\x1f\x52\xd8\x6c\x1d\x9f\x93\x6e\xa2\x95\xa7\x7f\x89\xd0\x9c\xa2\x60\xca\x6e\x03\x0c\x41\x12\x7c\x8d\xe0\x44\x89\xa6\x37\x9f\xfe\x94\xaa\x7c\xd6\x54\x25\x19\x7d\xda\x15\x9a\x14\xb9\xd7\xdc\x8a\x92\x6b\x44\xb5\x18\x0d\xe7\xb8\x22\x9d\x9d\x4f\x16\x34\x25\xf1\x2c\xd8\x0c\xdd\x99\x34\x3f\x55\x33\xd4\xcd\xa2\x59\x05\x46\x50\x63\x3a\xc1\x45\x01\xc7\xdb\xab\xcb\x62\xea\xf6\xc4\x5a\x54\x40\x0a\xf7\x82\x16\xeb\x6c\x6d\x7d\x5d\xb4\x83\x0a\xde\xda\xa1\x5d\xec\x30\x69\x36\x43\xc7\xcd\xa1\x1d\x6b\x99\xa5\x31\xbe\x0b\x97\xb9\x39\xc2\xe0\x9a\xaa\x80\xf1\x8e\xcc\xf3\x20\x73\x8f\xbb\x44\xe1\x28\x4d\x69\x96\x09\x69\x3b\x9d\xad\x57\x9a\x4d\xd3\x69\xd9\xe9\xc0\x22\xa4\x2e\xac\xf9\xbb\x56\x92\x9d\xc9\x01\x83\x2a\x0a\x38\x22\xc9\x68\x8f\x60\xf1\x36\x9a\x99\x94\x19\x1a\x80\xc4\xb8\xd8\x2b\x80\x98\x4a\x41\x15\xf0\x66\x0b\xbf\xf5\x18\x8f\x90\x80\xda\xf4\x49\xbc\x11\x63\x35\x21\xd4\x0b\x44\xb4\x80\x57\x44\x8c\x83\xcb\xcb\x54\x48\x7a\xf0\x29\xbb\xcc\xe6\x89\xa4\xd3\xcb\xcb\x60\x92\xe7\x6f\x50\xdb\x07\xd8\x14\x18\x6e\x88\xe7\xc2\xe5\x5a\x1e\x56\x6b\xbd\xf4\xb4\x78\x15\x31\x9e\xad\x68\xaa\xce\xc5\x5a\xa6\x5a\xbe\xdd\x4a\x69\x5b\x47\x37\x9e\x18\x14\x56\xb9\x38\x83\xd7\xf0\x00\x9e\x92\xad\xa2\xf0\x92\x88\xe8\x57\x9a\xdc\xbc\x4e\x56\xf0\xac\xcd\xac\xf9\x32\x0c\x0f\x79\x62\x28\x43\x2a\xa6\xf4\x30\x52\x34\x53\xe8\x29\x7a\x89\x31\xbc\xdb\xf6\xda\xa8\xc4\xac\x76\x3a\xf1\x6a\xac\x26\x79\x8e\xf4\x8f\x13\xd0\xba\x84\xd0\x11\x8d\x37\x05\x2e\x30\x0a\x6e\xa9\xcc\x98\xe0\x59\x00\xe3\x09\xb6\x06\xab\x8d\x4b\x8b\x83\xef\xa3\x1f\xa3\x1f\x02\x58\x8a\x29\x8d\x03\x2b\x2a\x05\x90\x8a\xd5\xbd\x64\xd7\x73\x15\x07\xff\xef\xff\xd3\x79\xd8\x7f\xd8\xef\x3c\xa5\x9c\x65\x9d\xb7\xeb\x6c\x7e\x93\x48\x7a\xdb\x41\x5f\x16\x82\x49\x91\xde\x44\x72\x8d\x03\xdd\x10\x86\x27\xa4\x0f\xcf\x8d\x64\x16\xc9\x84\x4f\xc5\x12\x61\xf8\xd2\xc6\x5b\xac\xbf\x08\x0a\x7a\x6e\x81\x95\x86\x46\x35\x0a\x82\x58\x2f\x37\x7c\x19\xf4\x50\xaf\xf7\xa4\xf7\x1c\x97\xd3\x88\xbe\xff\x11\x17\xf0\x07\x79\x87\x82\x1b\x7a\x9f\x05\x18\xde\xb7\x4d\xd2\x1f\x16\x1c\xfa\x87\x7c\xb1\x0c\xee\x05\xd9\x14\xf0\xa1\x9a\x14\xcd\x03\x9e\x59\x49\xe5\x67\x63\xc7\xfc\x00\xbf\x90\x9f\x35\x85\x82\x9f\xc8\xcf\x9a\x3c\xc3\xaf\xe4\xe7\x28\xa3\x6a\x78\xd6\x0e\xf3\x5f\x2d\x26\xfc\x6c\x70\x18\x68\x01\xaf\xdb\xba\xf2\x4b\x99\x0b\xe7\xb9\xa6\xb7\x0f\xda\x72\xfd\x54\xe5\x2a\xac\xa1\x40\x77\xec\x37\xf2\x1e\x05\xc6\x2c\x10\xe0\xe1\x8b\xf1\x6f\x13\xd2\xed\xc3\x9e\xde\x1c\x21\x05\xbf\x7d\xad\x23\x9a\x2c\xfe\x86\x47\x6a\xfc\xdb\x24\xde\xdb\x0f\x9b\xa9\x30\x7b\x76\xbf\x83\x52\x64\x93\x51\x15\x9f\x81\xa6\xf0\xaf\x61\x9e\x64\xf1\x03\xa0\x7c\x26\x64\x4a\xe3\x96\xe2\x0f\xb4\x54\xf3\x5a\x73\x96\x33\xa4\xf4\x52\x2c\x74\x49\x45\xe5\x33\x21\xdb\xf2\xd7\x77\xcc\x8d\x64\x30\xb4\x74\x98\xe2\x3c\x47\x92\xbc\x46\x14\x63\xa3\x35\x75\x5b\xc5\x9e\x97\x5c\xeb\x5a\x89\x62\x57\x0b\xda\x91\x34\xa5\xec\x96\x4a\xd0\x82\x4f\x2f\xe8\x48\xfa\xc7\x9a\xc9\x1a\xbd\xeb\xc8\xa2\x28\x80\xaa\x76\x8f\x28\x65\xb8\x13\x48\xfd\xe0\x46\x08\x9c\x38\xac\x73\xf2\x80\x95\x0a\x91\x97\xe2\xf0\x70\xcf\xb2\x04\x06\xa5\x27\x4d\xd7\x70\xd7\x6e\x12\xad\x79\x96\xcc\xb4\x84\x5d\xa6\x54\x22\x2e\x64\x55\x2a\x17\x17\x89\xbc\xa6\xea\x39\x55\xc3\x16\xb2\x61\x2c\x23\x99\xed\x40\x49\xc9\x68\x9e\xdf\x21\x06\x01\x4f\x96\x34\xc0\x79\x7e\x54\xbe\x68\x8c\x90\x88\xe1\x28\xb3\x14\x8d\x47\x9f\x04\xe3\x65\x0d\x65\xb5\x9a\x56\x04\x66\x6f\xa2\x4b\x88\x18\xa1\x74\xd4\xcd\xc2\x50\xd3\xef\x30\x44\x6b\xd2\xed\xe3\xd8\x6d\xe0\xe9\x34\x58\x8f\x0c\x69\x67\xf1\x91\x1d\x2f\xc6\x71\x99\xf4\x06\xe9\x84\x02\xa3\x92\x08\x57\x4e\x65\x81\x5f\xc8\x01\xec\x8a\x1b\x6d\x32\xa5\x51\xdf\xa8\x51\x24\xfc\x18\xf2\xfc\xa9\x7d\x2f\xb0\x21\x39\x52\x11\x01\x5c\xb5\x11\x99\x96\x0a\x47\xca\xed\x7a\x15\x20\x54\xfb\x52\x4a\xe4\xb5\x91\xb1\xbc\x3d\xe0\xd1\xc3\x11\x57\x48\xaa\xb1\x9a\x68\xd5\x4f\x21\xcd\xa6\x70\x6c\x12\xc2\xd0\xfc\x8c\xe9\x24\xcf\x85\x79\x17\xf6\xb5\x00\xa6\x2c\x1d\x4c\x29\x5b\x40\xe2\x5e\x66\x0b\x21\x24\xa4\x6d\xbd\xed\xb8\x5d\x45\xd2\x53\x78\xd4\x8f\x91\x7a\xdc\x1f\x25\x2a\x66\x0a\x6b\x6e\x03\x6b\x57\xc3\x92\x71\xc8\x5a\xcb\xeb\x02\x6b\x85\x8c\x12\x01\x7f\xef\xf7\xff\x36\xf8\xfb\xdf\x1f\xfe\xf0\xd7\xbf\xfd\xb5\xff\xf7\xbf\x0f\x70\xdc\x2f\x60\xe6\xeb\x48\x3e\xc3\xa2\x56\xdf\xaa\xb5\xbe\xe6\x7e\x90\x33\x5c\x00\x23\xf7\xc8\x78\xcb\x65\x0a\x31\xbf\x03\x0a\xe9\x16\x28\xad\xd9\xc4\x74\xa5\x5c\x7e\x8f\xfa\xa3\x99\x42\xb2\x47\xa1\x8f\xe3\x85\x42\x52\xf3\x7e\xe3\xa6\x62\xcc\x9a\x61\x28\xbb\x44\xba\x6d\x92\xe4\x71\x6a\xb6\x4a\x91\x20\x6c\x9c\xf6\x7a\x13\xdc\x25\x02\x97\xba\xb1\x31\xc3\x96\x19\xd3\x5e\xcf\xe4\x55\x79\x9e\x76\x18\xef\x30\x1c\x86\x6c\x9c\x4e\x8c\x83\x85\x07\x4e\x9e\xa7\x79\xde\xf7\xaa\xa8\x0a\xc3\x83\x41\x51\xc0\x54\x91\x0d\xe3\xe9\x62\x3d\xa5\x59\xbc\x32\x9b\xc7\xc0\xf8\x94\x7e\x3e\x9d\x99\xd7\x01\x2e\x22\xf7\x0e\xf3\x6d\x7c\x71\xca\x8c\x95\x50\x05\xe9\x03\xf3\xfb\x43\x66\x6f\x88\xe3\xee\x1d\x7a\x01\x12\x87\xe1\x1d\xe2\xe6\x97\x95\x9b\x45\x8d\xcd\xa0\xc7\x62\x88\x4d\x16\x42\xc7\x42\x0f\x36\x0c\xd1\xff\x3d\x55\x88\x81\xc4\x79\x5e\x16\xaa\x9c\x12\x0b\xb8\x55\x64\x1c\xd4\xf6\x77\x02\x08\x9a\x2a\x45\x00\x01\xcb\x6a\xbb\x95\x01\x04\x6d\xba\x6a\xa0\xd7\xe4\x2b\x91\x26\x0b\xea\x57\x66\x6d\x91\x06\x4e\x99\x0a\x26\x70\xaf\xc8\xad\xd9\x87\x4d\x13\x85\x02\xdb\x6f\x5b\xa7\x6d\x21\xc0\xb0\x54\x5a\xd6\x6d\x95\xf5\xdf\x24\x4b\x9a\xe5\x79\x9b\x0a\xaa\x90\x82\x7b\xcd\xf7\xe0\x7a\x7f\x79\x2b\x2e\x64\x05\x5c\x29\x22\x14\x0a\xce\xe8\x6c\xa1\x25\x70\x08\xc4\x1d\xff\xd9\x88\x02\xcd\xda\x2d\x55\x5f\xaa\xc8\x4a\xd9\x18\x24\xb9\x56\xd1\xac\x44\xc6\x11\xf5\x63\x91\xfa\x73\x4c\x0b\xb8\xdb\x9e\xdf\x72\xa7\x8f\x5c\x29\x8d\xf3\x9c\xbc\x8d\x66\x20\xc8\xe7\x68\x06\x8c\xf4\x87\xec\x91\xf4\xbb\x79\xac\xd7\x2b\x5d\x2a\xc7\x6c\x32\xd4\x8c\x34\x31\x86\x22\x05\x09\x08\x44\x21\xc1\x7a\x88\x27\x8a\x1c\xfe\x5b\xfe\xb1\x22\x89\x1f\xa3\x43\xb8\x6c\x45\x2c\x72\xae\xc6\xa7\x7a\x01\x4d\xca\x4e\x13\xf2\x59\xe5\xb9\xec\x92\x4f\x4a\xb3\x81\x5d\xf2\x46\x47\x0c\x51\x1c\x77\xbb\x5a\x5f\x3c\x55\xe4\x52\x45\xd6\x92\xcb\xbe\xb4\x4a\xb3\xa5\x76\x13\x49\xba\x5a\x24\x29\x45\x27\x0a\x82\x28\xd0\x12\xd7\x2b\x71\x47\xe5\x71\x92\x51\x84\x0b\x38\x37\x75\x4d\x13\x95\x68\x39\xea\x93\x79\x7b\x73\x74\xf1\xf2\xfd\x09\x09\xde\x04\xf0\xd9\x24\xbc\x3d\x7d\xf5\xdb\xb3\x97\xaf\x5e\x91\xe0\x6d\x00\xc7\x3a\x09\x2e\x94\x81\xd6\xdb\x3d\x4b\xc7\x7a\xa4\xc1\x5a\x6b\xdd\x86\xeb\x41\x46\x54\x64\x65\x50\x98\x11\x15\x69\xe9\xc7\x98\x5a\x49\x36\x12\xf1\x6c\x24\xc6\x6b\x23\xfb\xaf\xb5\x74\x11\x23\xfb\xba\x29\x70\x6d\x23\x5c\xcf\x9a\xd9\x49\xb5\x0a\x64\x42\xe8\x98\x4f\x80\x11\x55\x67\xad\x23\x94\x92\x0b\x65\x36\xd4\x70\x18\xa6\x6e\xa3\x59\xea\x9c\xdd\x63\x85\xb2\x11\x8f\xd7\x3d\x34\x1b\x05\x51\x10\x07\xff\x16\xe0\x1e\xb7\x4e\x27\x29\x9d\xe2\x30\x2c\x45\x6c\xeb\xda\xeb\x80\x9f\x54\x4c\xba\x72\xf6\xbc\x53\x28\xd1\xec\x10\xa9\x28\x9b\x27\xcb\x3c\x67\x9a\x0a\xe8\x47\x1c\x86\x47\x28\x81\x40\x3f\x07\x46\xff\xa3\xa6\x43\x90\x18\x29\x10\x8e\x14\xe9\x76\xbf\xb6\x18\xf6\x68\xed\x5d\x2f\xb4\x58\x09\xdb\x32\xc9\x37\x8a\x1c\xa9\x30\xec\xda\x44\xd3\x7e\x18\x06\x99\x79\xdb\xf6\xe5\xae\xbc\xb4\x5e\x29\x72\x24\x65\x72\x1f\xb1\xcc\xfc\xb6\x2d\xe0\xc0\x7c\x71\x26\xad\x02\x6e\x5a\x59\x89\x33\x6e\x39\x63\xd3\x99\xf2\xba\xb2\x16\xe2\xf7\x53\x85\x5b\x5d\xe1\x6b\x45\x92\x51\x9b\x6a\xcd\x68\xb6\x65\x2e\xd0\x0b\xbd\xda\x9e\x07\x4e\xce\xcc\xb2\x15\x84\xbb\x65\x6a\x56\xad\x78\xcc\x86\xd8\x6a\xb0\x92\xf0\x31\xeb\xf5\x26\x40\xc7\x72\x52\x57\xe6\x1f\x58\x2a\xe3\xad\x2d\x01\x94\x8f\xce\x7a\x12\x60\x78\xaa\xb4\x78\xfe\xf2\xe4\xf2\xed\xd9\xe9\xc5\x69\x80\xe1\xa5\xaa\xbb\x17\x14\xf0\xac\x55\x26\x79\x64\x8d\x1e\x8f\x8d\x94\xfa\xe8\xe3\xa1\x7f\x2d\xe0\x5d\xa3\xbc\xd6\x90\x7f\x27\xbe\xd9\x68\x2a\x96\x09\xe3\x61\xa8\x55\x95\xa3\x54\xab\x8d\x1f\xbc\x19\x72\xae\x96\x8b\x19\x5b\xd0\xa0\x6e\x26\x30\x3b\xd9\x40\x87\xef\x14\xf9\xbd\x61\x89\x54\xd1\x9d\x64\x8a\xa2\x67\x0a\x59\x81\x2f\x4a\x17\x42\x2f\x72\xbf\xe7\x1c\xad\x12\x49\xb9\xfa\xd5\xd8\xc2\x23\xdb\x48\x09\x1a\xbb\xc1\x4f\x0b\xf4\x3b\x8e\x11\xa2\xe4\x14\x05\x6c\x26\x8d\xd8\x89\xa3\x4c\xdd\x2f\x4a\x97\x1b\x12\x70\xc1\x69\x00\x0f\x54\x94\xac\x56\x94\x4f\x8f\xe7\x6c\x31\xd5\xf3\x41\xa3\x4c\xa6\x5e\xb4\x0e\x3e\x25\xb7\x89\x85\x41\x1c\x60\x40\x8a\x18\xc2\xac\xaa\x1e\x78\x10\xe0\x48\xac\x28\x47\xba\xc7\xd5\x08\x4a\xf8\x3c\x73\x28\xd5\x18\x12\xa8\xe8\x59\x0d\x23\x34\x03\x73\xf4\x5a\x1e\x1c\x0c\xb1\x93\x68\xdf\xd5\xfc\x71\xc6\xb7\x6a\x2c\x27\x25\xc5\x7d\xa7\x10\x2e\x86\x2f\xc6\x4f\xd5\xc4\xbb\x07\x3c\x51\x4d\x9f\x9d\x3a\xfa\x96\x94\xcd\x97\xf7\xf6\xd2\x11\x7a\x59\x77\xfa\x31\x76\x1f\x69\xd4\xce\x97\x0a\x1a\x9f\x0c\x7c\xa5\x69\x50\xe1\x58\x12\xdd\x03\x28\x95\x63\x3a\x92\xf1\x6b\x27\x39\xc1\x73\x65\xf8\x1b\x7c\x51\x0d\x5b\xf7\x1f\x8a\xfc\xc9\x06\x47\x18\xee\xe7\xd1\xa3\xfd\x9f\x90\xdb\x1e\x89\xc7\x13\x78\x6f\x58\x75\x9b\xea\xad\xc2\xb0\xf4\xa9\xb1\x33\x38\x09\x08\xf9\xa2\xbc\xdd\x64\xd4\xbe\x0b\xd2\x79\x6e\x6c\xdf\x5b\xdb\x20\x9d\x3f\x94\x33\xce\xe3\xa2\xd0\x7a\xe5\x73\x85\xee\x0d\x11\x29\xe0\x85\x22\xef\x50\x70\x77\x93\x05\x18\x3e\x28\x22\x22\x4b\xbd\xe0\x67\x45\xde\xa8\xd1\x07\x15\x7f\x50\x61\xf8\x41\x45\x6e\x37\xfd\xdc\x28\xa2\x79\xfe\x05\x7e\x69\x25\x51\x77\xe8\x85\x32\x4a\x3a\xd2\x84\xf2\x0e\x7d\xd0\x6f\xa3\x17\x5a\xba\x27\x1f\xf4\xdf\xd8\x3e\xff\xac\x15\x40\x4b\x27\x83\x9e\x16\x2c\x4c\x72\x01\x3f\x19\x88\xfc\xa2\x0a\xf8\x55\x19\x39\xe1\x37\xfb\xf3\xbb\x22\xbf\x28\x14\xd4\x4f\xb0\x60\x50\xbb\xc7\x49\x34\x75\xbe\x43\x8a\xc8\x91\x8a\xeb\xe7\x70\x7e\x57\x38\x0c\x7f\xd3\xe4\xf0\x77\x05\x9b\xe6\x26\x48\xbf\xdc\xf0\xc0\x05\x50\xba\x6d\xd1\x6c\xb1\x79\xed\x6a\xd1\x6d\x06\xce\x52\xf4\x6f\x58\x38\xe5\x6e\xa7\xd9\x0c\x51\xaa\x91\xb9\xc2\xd0\xca\xd6\x9f\xdd\x31\x67\xd7\x4b\x93\x8c\x76\xfa\xf1\xb6\x5e\x51\xf3\xf7\xb2\xe7\x0e\x70\x31\x34\x59\x07\x3b\x59\xe5\x4e\x5e\x90\x3e\xf7\xc3\xdd\xdc\x35\x3f\x99\x2a\x3f\x70\x5f\xe2\xfb\xb6\x12\x20\x5a\xcb\x80\xc0\xa5\x63\x64\x5b\xcf\x93\xd5\x6a\x71\xaf\xe5\x3b\xaf\x35\x6a\xdc\xe4\xd4\x4c\x7a\xb6\xa2\x29\xa3\x1a\x41\x05\x6d\x13\x80\x3c\x70\x5f\x69\xdc\x6f\x48\x74\xdd\xfa\x86\x44\x4d\xcc\xc7\x46\xfc\xb3\x5c\x39\x0c\xbb\xaf\x14\x92\x35\xd1\x67\xb4\x44\x5a\xcb\xb0\xfb\x44\x04\x49\x22\xc7\x9c\x1a\x6d\x42\xfa\x7d\xdb\xb8\x7c\x02\x4e\xef\x6a\x9e\xe8\x23\x53\x67\x2c\x31\xb2\x84\xa6\x1f\x6b\x1a\xc3\x28\x19\x4f\x8c\xfe\x01\x49\xdb\xb1\xb1\x01\x21\x9a\x8d\x3e\xd4\x3f\x9c\x7c\xaf\x7f\x04\xf9\xab\xfe\x61\xe4\x47\xfd\x93\x90\x1f\x8c\x03\x07\xdb\x39\x18\x95\xc2\x1a\x32\x98\x55\x62\xf6\x02\x56\x30\x25\x37\x0a\xa5\x18\x6e\xc9\x1c\x4d\x31\xdc\x13\x49\x91\xce\xf6\x3d\x86\xa5\xd6\x38\x6f\x4b\x8d\xf3\x9a\xf4\xe1\x8a\xcc\xf2\x5c\x50\xb8\x23\x74\x74\x85\x52\x58\xe2\x58\x9a\x87\x3e\x76\x5a\xfe\x70\xf9\xf8\x7a\x78\xed\xf4\xc3\x24\xcf\xaf\xb5\x60\x78\xab\x21\xb2\x22\xf7\x68\x41\x6e\xc7\xd7\x13\xb8\x86\x29\x06\x85\xb1\x71\x0b\xbe\x1b\x5f\x4f\xc8\xaa\x3c\xae\xb4\xc2\x0e\x8d\x95\x43\x63\x8f\x3b\xdd\xbe\xc5\xa5\x1f\x3c\x2e\x2d\xec\xfb\x8f\xfe\xfd\xda\x63\x27\x73\x2e\xc6\x77\xb0\xa8\x1c\x88\x4a\x65\x76\x50\x2a\x75\xa3\x83\x41\xcc\xf3\x5c\x8c\x44\x7c\x57\x14\x90\x52\xb2\x71\x6e\x71\x71\x42\x51\x1f\xc3\x32\x59\xe9\xa7\x01\x86\x19\x5b\x28\x2a\xf5\xcb\x43\x0c\x99\x58\x52\xfd\xf8\x3d\x06\x7a\x4b\xe5\xbd\x7e\xfe\xab\xce\xc3\xa7\xfa\xf1\x07\xfb\xf8\x52\x6b\xb1\xfa\xfd\x47\x5c\xc0\x9a\x92\x94\x7a\xa7\x3b\xc8\xa8\x96\x64\xe6\x6c\x3a\xa5\x3c\xc0\x30\xa3\x8e\x62\xbd\xf5\x7b\x57\x01\x86\x85\x31\x91\x65\x54\xc1\xca\x1b\xcb\xac\x5d\xcf\x53\xc3\x00\xc3\xb4\xe5\x18\xe1\x9c\x56\x94\xf9\x96\x1a\xa9\xea\xa7\xf3\xd3\x37\x01\x38\x13\x14\x9b\xdd\x07\x18\xee\xa9\x51\x13\x96\xd4\x90\xcc\x6b\x4a\xde\x6b\xc6\x76\x45\x49\x16\xcd\xe0\x8e\x6a\x42\x6f\x65\x55\xbd\x96\x4e\xcc\xbb\x58\x1d\x54\x49\x97\x36\x8b\xa9\xf1\x40\x09\xf7\xe5\x40\xd2\x6b\x96\x29\xa9\x5b\x38\xad\x55\x62\x72\xd8\xbc\xb5\x1c\xe7\xb4\xe2\x27\x9f\x74\xaf\x7f\x71\xfb\xb0\x9f\x29\xe9\x7e\xa2\x79\xde\xfd\x54\x3b\x5c\xb8\xf5\x1a\x69\x10\x1b\x09\x07\x8e\x29\x49\xc2\x70\xdf\x7e\xda\x13\x85\x96\x14\x6d\x8a\xaf\xed\x9c\x2d\xad\xc1\xcb\x66\xb1\x14\xfe\x6f\x66\x2f\xad\xc0\x76\x47\x6d\x67\x5f\xc6\xfa\x9e\xdc\x53\x34\xa5\x40\xf1\x90\x87\xa1\x93\x6d\xa6\x74\x4c\x27\xb0\xa4\x2e\x23\xf0\x30\x54\x5d\x42\xa6\x34\x0c\x97\x36\xb7\xa6\x8a\xf1\x92\xc2\x45\x2b\x85\x22\x77\x54\x33\xbd\x27\x0a\xcd\x6b\xa3\x2d\xb9\xc2\x82\x22\x09\xee\x64\x98\x43\x03\x50\xc9\x75\xac\x60\xea\x36\xf7\x98\xe0\x9a\x3d\x41\x92\xe7\x48\x46\xb5\x54\x42\x31\xc8\x02\xde\x52\xcd\xad\x5b\xe4\xe4\x6d\xdd\x44\x15\x6d\xe2\x46\xb9\x6b\x5e\x3b\xeb\x39\xa7\x05\x1c\xb5\x30\x58\x62\xc7\x7d\x44\xd1\x09\xb5\xd0\x30\x0a\x83\x85\x9d\xdb\x83\xf3\x03\x33\x5b\x71\x77\xe8\x4e\x83\x67\x84\x64\xcd\x56\x3b\x32\x1b\x8c\x19\xc5\x61\xa8\xc6\x19\x9d\x8c\xf9\xc4\x6c\x9f\xd9\x47\xd2\x1d\x68\xc9\xee\x89\x96\xd1\xea\x3e\x0c\x33\xd4\x87\xee\xc0\x1c\x5a\xf2\xe5\xf3\xdc\x4c\x4b\x66\xb7\xd1\x36\x5a\x4b\xab\x6a\xe9\x63\x38\xd6\x5f\x39\x48\x8c\xe3\xa5\x7f\x2c\xe0\xcd\xf6\x34\x95\x63\x90\xd6\x30\x67\xb4\x1e\x89\xbd\x75\xe3\x35\xad\x1b\x8e\xd6\x14\x71\x68\x1c\x54\x4b\x34\x17\x71\x04\x4a\x8b\x95\x79\x7e\xe4\x90\xc5\xec\x93\x62\xe3\x90\xfe\xaa\x8d\xf4\x5f\x23\x65\xb4\x56\x49\xae\x68\xc3\x15\xd7\xdb\xd8\xcc\xbb\x03\xba\x01\xa5\xf1\xd2\xbd\x33\xd0\x37\xbe\xb9\x5d\x24\xf3\x5c\x0b\x3d\xb6\x9c\x79\x36\xd9\xf2\xdc\x25\x5a\x30\xcf\x59\x66\x00\x43\x27\x9a\xfd\x69\x25\xb3\x1d\x57\x8d\x1d\xae\x9a\x4a\x36\x43\xd2\xe0\xba\xaf\x98\x9b\x8a\x4f\xf4\x83\x77\xc3\xba\xa7\x46\x58\xf0\x5d\x16\xcd\xac\xd2\x76\x40\xba\x69\xc9\x73\x24\x6a\x98\x60\x66\x49\x14\x05\x9c\xb5\x82\x87\x5a\x49\x15\x24\x19\x4f\x6a\xf0\xa7\xcd\x53\x68\xa6\x35\x65\x5a\x7b\x61\x7e\xa5\xb5\xf6\x29\x6b\xdb\x2e\xe0\x75\x5b\xe5\x16\x97\x41\xea\x56\xe8\xe8\x84\xc6\xb6\x29\xde\x6c\x4a\x36\x9b\xea\x96\x6d\x51\x33\x0f\x53\xfb\xc2\x6d\x83\x66\xa1\x9b\x46\x79\x31\x44\x47\x2a\xcf\x11\x55\x08\xcd\x69\x5d\x29\x75\xee\xa7\x9d\xc6\x6a\xdb\xdd\x98\xb1\xa4\xa0\x12\x27\xeb\x76\x4a\xec\x9c\xac\xb7\xad\xec\x35\xab\x4a\xf9\x69\xdc\x9f\x8c\x9c\x7c\x5a\x4f\xf3\xcc\x1d\xa8\xd9\xdd\x03\xd9\xf4\xac\xaa\xb0\xce\x79\x6e\x9c\xe8\x81\x42\x1d\xa5\xec\xb3\x9e\x56\x83\x94\xa8\x86\x62\x66\x05\x1f\x3b\x0a\x6c\xd7\xa6\xd6\x37\x4a\x8f\xd1\x30\xfc\x4c\xc3\xf0\xd8\x11\xcf\x1d\x81\x3c\xa3\x2a\x96\x05\x86\x0b\x77\xbc\x13\x7f\xeb\xee\x47\x67\xe5\xb7\x39\x54\x72\xad\xa7\x81\x6a\x9a\x0b\x41\x43\x7d\x09\x5a\x8f\x30\x5e\x50\x64\xe0\x60\x71\x26\x8b\x66\xe4\x15\x85\xb7\xd1\x8c\x1c\x51\xf8\x1c\xcd\xc8\x0d\x05\xad\x28\x1a\xa6\x4a\xce\x28\x5c\xeb\xdf\xd7\x14\x7e\xd2\xbf\xed\xf5\xfd\xa2\x5c\x85\x90\x84\xa1\xe6\x58\x75\xf2\x0f\x41\x8d\x8e\x07\xbb\x30\x68\xe7\x6a\xe5\xf8\x6a\x85\x8b\xc2\x8c\x73\x4a\xf7\x19\xa7\x5f\x51\xd8\xd8\x9d\xb3\xb8\xdb\x2f\x30\xc6\xf0\x56\xa1\x8d\x0b\x9f\xd0\xed\xc3\x9d\x4c\x56\xfa\xd7\x9a\xe6\xe2\xee\x91\x82\x6c\x9e\x2c\xf5\x43\x01\x1b\x17\x94\x60\xae\x19\xd0\x9a\xa2\x33\x85\xce\xe9\xd6\x29\xd0\xee\xee\xe2\x92\xca\x09\x2c\x9a\x65\xf9\x67\xb2\x29\xf0\xf0\x0e\xd9\x25\xf3\xab\xd2\x0f\x9e\x37\x6b\x30\x9a\xf5\x5a\xb8\x55\xab\xbb\x68\xcd\x99\x15\x57\xcc\x54\xa2\x9a\x1d\x2d\x40\x8b\x77\xf1\x6e\xfb\xa5\x46\x36\x34\xde\x2c\x97\xb4\xe6\xce\x72\xa9\xf9\xb9\x23\xf7\x73\x8a\x2a\x4e\x6c\x3e\x10\x09\xa7\x74\x2c\x27\x84\x6a\xca\x71\x43\xef\xb7\xf7\x5d\xd9\x0c\x75\xdf\xd2\x36\x3f\x17\x55\x57\xff\x1c\xef\x75\x1d\x38\xd5\x83\xf6\x1d\x38\xa5\x46\xdb\x5d\x67\xd4\x62\x64\x7d\xa2\xb5\xa0\xd4\xb7\xdf\xd8\x72\xb5\xa0\xdb\xdf\x06\x7a\xba\xeb\xc0\x71\x26\x9b\x16\xe0\xb8\x59\x4c\x0a\xd8\x58\x33\x4b\xdc\xba\x55\x57\x33\x8c\x3c\x31\x1e\x4d\x6f\x28\x32\x0f\xc6\x40\xd2\xf4\xc4\x89\x8f\x28\xec\x18\x10\xdf\x50\xd8\xe7\x94\x14\xdf\xd0\x6f\xee\x6e\x61\x44\xb9\x6d\x83\x49\x7c\xb6\x5d\xbb\xb3\xdc\xc6\xaf\xbf\xb1\xea\xa6\x14\xa9\xd7\x2d\x1a\xd8\x63\x50\x9b\xf6\x8a\x5b\x56\xb3\x29\x75\xa3\xac\xd5\x04\xc3\xad\x26\x78\xf5\xa6\xad\x38\xbe\x3b\xa6\x3c\x6f\xb6\x6e\xc9\xf6\x9c\xa2\xd2\x81\x68\xac\x15\xcd\x49\xd0\x25\xb7\x14\xd9\xcd\xd1\x60\x53\xd8\xd7\x4d\x12\xab\xa2\x9e\x50\x0a\x6a\xae\xfb\xa5\xf4\xbf\xe3\x3b\x54\x1e\x4c\x00\x41\xc6\x6a\x02\x8c\x0c\x86\xdb\xcc\xe2\x31\x1b\x62\x61\xf9\x56\xc5\x18\x58\xaf\x37\xb1\xe7\xa8\x08\x05\x64\xbd\x08\x4a\x9e\xa2\xf5\x6b\x87\xfa\x95\xd2\x6d\xfc\x0c\xb6\x65\x89\xf6\x63\xa0\xe6\x38\x0d\xe1\x35\x41\xc7\x78\x99\x81\xae\xb3\x5a\x9e\x7a\x5a\xc5\x78\xa0\x17\xe0\x2d\x75\xa6\x01\x63\xd1\x13\x1a\xf6\xc3\x3a\x11\x1d\xcf\xe8\x24\xcf\x8f\x9a\x84\x75\xa6\x15\xa6\x9a\x56\xe1\x7d\x19\x41\x51\xc3\x0c\x4a\x55\xeb\x85\xe6\x56\xde\x24\xf9\x80\xc2\x53\x0a\x2f\xad\x76\xc5\x93\x5b\x76\x6d\x0f\xc5\x05\xeb\x8c\xca\xa3\x6b\x63\xae\xce\xf3\x20\x80\x67\x5a\xad\x59\x49\x91\xd2\x2c\x83\x77\x94\x3c\xa3\x61\xf8\x8c\x46\xde\x3b\x08\x9e\x50\xf2\x8e\x86\xe1\x3b\x1a\xdd\xfe\xc7\xf0\x09\x1d\x3d\xa5\x04\x3d\xa0\xe4\x09\xf5\x9e\x0f\x51\x80\xf1\xb8\x3f\xe9\x3d\xa0\xe3\xc1\x24\x7e\x49\x8d\x10\xf7\x80\x92\x97\x34\x5a\x1a\xcb\xdd\xe1\xc9\xf4\x9a\x7e\x3c\x44\x1f\xa7\x3d\x7c\x88\x71\x9e\x9b\x9c\x8f\xc9\xdf\xfe\xaa\xd9\x6c\x23\xe7\xf1\x5c\x8a\x65\x2d\x6f\x18\xa2\xa7\x94\x98\xfc\x56\x46\x78\x4e\xc9\x53\x1a\x86\xbd\xa7\x14\xbe\x6c\xdb\x53\xfe\x68\xdd\xce\x7a\x4e\x1f\x93\x1f\x06\x79\xde\xdd\xc5\x5c\x5a\x89\x46\x88\x36\xce\xb0\x6e\x0a\x3c\xfe\x42\x5b\x4e\x0f\x6e\x66\x42\xc4\x83\xa2\x80\x41\x97\x10\x4d\xf6\xd0\x13\x21\x16\x34\xe1\x38\x9a\x09\x61\xd0\xf8\x3d\xdd\xe3\xf5\xf7\x82\x1a\x7f\x23\xba\x25\x99\x98\xf3\x1e\x05\xfc\xdc\x82\x73\x77\xe8\x45\x9d\xce\xbe\xd0\x0d\x0e\xa9\xc1\xcf\x4d\xe1\x25\xfc\xf1\x44\xaf\x08\x4e\xba\x5d\xcd\x8a\x82\xa3\xe3\xe3\x93\xf3\xf3\xd3\xb3\xf3\x00\x87\x21\x8d\xca\x57\x10\x44\x7f\xef\xe3\x11\x1d\xf7\x27\xf1\x07\x0a\xa9\x49\x18\xe8\x84\xc1\xc4\xdb\x46\xea\x4d\x91\x6e\x57\xee\x6c\x28\xe9\xb5\x14\x86\xdd\xa4\xdc\x78\x77\xb2\xdb\xc6\xae\xc2\xf8\x60\x50\x0c\xf9\xe8\xbd\x56\x18\x06\x0d\x75\xc7\x09\x01\x1f\x68\x81\x63\xa5\xd7\xc3\x00\xca\x43\xcf\xc2\x05\x59\x80\x5f\xac\x11\xc2\x98\x32\xe0\x27\x4a\xfe\xa0\x28\xb0\x6f\x01\x86\x5f\x29\xf9\xb9\xf6\x3e\xac\x53\x2c\xbb\xe3\x04\x66\x99\xd4\x69\xd6\x4f\x5a\xd2\xff\x95\x6a\xc6\x6a\xed\x23\x6d\xfe\x58\xd4\xaf\xde\x1d\x9a\x32\x18\x55\xb4\xa4\x04\x92\x59\xb7\xc6\x19\xab\x5d\xe7\x30\x33\x52\x3a\xb8\xcb\x1d\xc5\xdf\x8e\xda\xee\x9a\xd4\xb6\x0a\x3c\x32\x0c\x0a\x70\x04\xfd\xf7\x86\x49\x46\x49\xf2\x9b\x1e\xbe\x7d\x0d\x30\x50\x69\xe1\x51\x26\x48\x49\x94\x0c\x43\x2a\x47\xe3\x32\x06\x49\xdb\x80\x7f\xff\x97\x07\xfc\x2d\xb0\xae\xda\xec\x12\x29\xad\x28\x63\x7a\x20\xa5\x83\x17\x97\xc6\xa4\x23\xe4\x96\x0f\x3d\x97\x96\x85\x0d\xbf\x85\xb3\x26\x79\x2e\x64\x4d\x16\xd8\xcb\xab\x5b\xa5\x03\x2e\xd1\xbd\x93\x05\x5c\xa7\x98\xdc\x13\xc6\xe9\x5a\x8b\x52\xf6\xfc\xed\xc8\xee\x0d\x72\xd0\x3a\xbb\xd6\xbe\x95\xd6\xc8\x65\xf1\xd5\x0e\xff\x79\x17\xb3\xf6\x33\x48\x50\x73\x20\xb1\x7e\x05\x57\x0a\x71\x0c\x66\x9f\x3d\x25\xfd\xa1\xf7\xb1\x79\x9c\x0e\x71\xc9\xcd\x90\x24\x02\x71\xa0\xde\x39\x06\x87\x21\x93\x28\xb1\x11\x8b\xbc\xa6\xf2\x8d\xd2\x56\x73\x7a\xce\x54\x29\x61\xdc\xd0\xfb\x56\x81\xe2\x4c\x55\xe2\x44\xb9\xb9\xa6\x81\xcb\x37\xc7\xe7\xe7\x67\xeb\x05\x7d\xc5\x32\x15\xf7\xe1\xf8\xfc\xfc\x5c\xdd\x2f\xe8\x53\x9a\x2e\x12\x99\x18\x5b\x90\x49\x7d\xaf\xd9\x9a\xcf\xb4\x60\x94\xab\x33\x9a\x2a\x97\xf0\xf4\xf4\x75\xf3\xcd\xca\xc3\xd5\xfb\x85\xb8\xa1\xdc\xbc\x0e\xe0\x69\xa2\x92\x0b\x99\xf0\x6c\x46\xe5\x4b\x45\x97\x2e\xd7\x33\x56\x76\xe2\xc5\xc5\xeb\x57\x47\x8b\xc5\xb1\x58\x2c\x68\xea\xba\xa0\xd3\x76\x12\x9e\x09\xb9\x74\xbb\xbb\x2e\xe5\x9c\xea\x1c\x55\xda\x6b\x3a\x65\x89\xab\xf6\x35\x5b\x52\x2d\x3d\x5b\xab\x79\x1f\xb4\xc0\x37\x7d\x23\xa6\xf4\x75\xb2\xd2\xaf\x62\x4a\x5d\x17\xdf\x26\x4c\x8f\xef\x8f\x35\xcd\xfc\xa0\xde\x2e\xd6\xd7\x8c\x97\x0f\xbe\x8e\xf3\xf7\xcf\x5f\x99\xb9\x76\xd9\xce\xdf\x3f\x7f\xb3\x5e\x5e\x51\x59\xbd\xbf\x4d\xd4\xfc\x9c\x5e\xd7\x12\x04\xe3\xaa\x7a\x6d\xc0\xea\xfc\xfd\x73\x0b\x1b\x21\x3d\x60\xac\x77\xf2\x93\xf5\x6c\x56\xd5\xaa\xa7\xe8\x7c\x4e\xa9\xaf\xe6\x82\x7e\x56\x17\x32\x49\x6f\x8e\xcb\x49\x2a\x93\xfc\xbb\x58\xa7\xae\x97\x85\xf3\x74\x94\x44\x8c\x13\x39\x81\xb5\x24\xa9\x0c\xc3\xb4\xb6\x2f\xa1\x65\xb2\xb5\x0c\xc3\xb5\xac\x88\x06\x91\x12\x5b\x27\xf0\xb5\x84\x92\xac\x81\xac\xfb\xba\x57\xf9\x35\x8d\x31\x5b\xda\xd9\xee\x02\xf6\xa2\x97\x5d\xbc\xed\xe7\x15\x74\x56\xa7\xad\x49\x68\xf2\xa9\x6d\xe5\xb5\x3a\x52\xd4\x37\xcc\xcb\x7b\xb0\xcf\xe4\x57\x82\x03\x7e\x5b\x40\xbf\x3f\x0f\x19\xb8\xb1\xf1\xae\x16\x92\xa0\x3f\xcf\x5c\x52\x83\x99\x1c\xcd\x64\xbc\x29\x70\x74\x79\xf9\xfe\xdd\xc9\xe5\xd3\x93\xf7\x17\xa7\xa7\xaf\xce\x2f\x9f\xbf\x3a\x7d\x72\xf4\xea\xf2\xc5\xe9\xe9\xcf\x97\x97\xd5\x41\xf2\x95\xb4\x64\xb2\xe6\x84\x81\x14\x6e\x09\x64\x55\x83\x2e\x52\x63\x39\x01\x89\x1b\xe1\xaa\xa6\xb2\x1e\x48\xc9\xed\x75\xb7\x04\x86\x52\x66\xee\xe6\x72\xfb\x10\x80\x39\xa4\xea\x8f\x09\xda\x53\xa8\x97\xe9\x9c\x2d\xa6\x92\xf2\xad\xc8\x18\xe6\x38\xaf\xcb\x22\x93\xbb\xd7\x62\xba\x5e\x50\xe2\x0e\x14\x39\x47\x21\x6a\x43\x66\x99\x47\xd2\x26\xc4\xcb\x91\x44\x38\x96\xce\x13\xfb\x56\x92\x0d\xd7\x7a\xda\x2a\xd1\x74\x70\xdb\x8c\x51\x14\xc3\x5b\x19\x55\x19\xa2\x6b\xaa\x76\x85\xc4\x6e\x77\xab\x4f\xb5\x12\x05\xcc\x6b\xab\x20\x4a\xa6\x76\x87\xa0\x0d\x0a\xe5\xb0\xed\x09\x88\x66\x41\x49\x97\xe2\x96\x6e\x97\xc5\x1b\xef\x91\xbb\x5d\xc1\x56\xf1\x6b\xaa\x76\xcb\xfa\xfd\xcb\x3f\x29\x3b\x4f\xb2\xfd\x65\x7d\x74\x86\xaa\x82\xad\xd2\xeb\xd5\x34\x51\xdb\x32\xf0\x3e\x68\x11\x55\x7b\x01\x15\x25\xa6\x4c\xe6\xcf\x9e\xd6\xca\xb8\x2f\xa4\xcc\x83\x41\x45\xcb\xb5\x4a\xf6\x15\x28\xbf\x91\x5a\x3e\x5d\xc8\xee\x62\xb5\x15\x71\x5f\x48\x99\x07\x6f\x8d\xcd\xad\x96\x5d\xe8\xe8\xd5\xd5\x00\x8a\x31\xa3\xb5\x95\x7d\x6e\x6a\xfe\x2a\x78\xca\x0e\x96\xb5\xee\x7c\xdb\x5b\xfd\x91\xa9\xf5\xab\xd5\x97\x30\x6e\xa9\xde\x7d\xdb\x5b\xfd\x6b\x07\xc8\xaf\x36\x50\x9b\x95\x96\x26\xca\xaf\xa6\x91\x3d\x4e\x5e\xa8\xde\x38\xdc\x4a\x17\xc8\x4f\xc2\xb2\x05\x74\x76\x3f\x8f\x4a\x34\x9e\x80\x32\x3b\x2e\xc3\xe5\xd6\x5a\x68\x45\xe5\x48\xd2\xe9\x3a\x6d\x9c\x0c\xa8\xc7\x5b\x2d\xd7\x10\xa2\xb8\xf0\xd1\xa6\x84\xd0\xbd\xde\xae\xfe\x8d\xc7\xe1\x36\xb3\xbd\x2f\x37\xfc\x5a\xbb\x35\x5f\x87\x1e\x42\x94\x54\x2b\x18\x49\x8c\x6b\x8b\x64\x24\x7b\xc1\x61\x10\x07\x81\xee\x93\xfe\xdb\xec\x4c\xcb\xea\xab\xc2\x01\x2a\xef\xd5\x6d\xce\xb1\xdb\xac\x5a\xee\xe4\xd1\xd2\xcc\x4d\x56\x06\x61\x11\xc6\x97\xb9\x4c\x36\x36\x44\x59\x75\x49\x78\x95\x75\xa8\x50\xe9\x53\x2b\x30\x34\xb2\x54\xd5\x8e\xc5\x04\x17\x85\x99\x1e\x0f\x0c\xd8\x01\xa3\x9f\xc5\x3d\xc2\xba\x09\x8b\x52\x79\x2e\x18\xf7\x86\x6e\x1f\xfb\x18\x70\xf4\xae\x33\x97\xc6\x41\x64\x68\x0e\x14\x39\x01\x7a\x54\x36\x48\x84\x8d\xdb\x70\x4d\x15\xf2\xfe\x45\x7d\x38\x18\x60\x5c\xd2\x68\xa4\xc6\xaa\x0c\x07\x30\x01\x81\x87\xd4\x8f\xc0\x60\x72\xf9\x56\xdf\x4d\x03\x81\x37\xbc\x42\x41\x55\x83\x06\x75\xac\x73\x6b\x86\x78\xcb\x48\x1b\xc8\xb2\xdb\x45\x90\xa4\xd9\x37\xde\x44\x90\x21\x0f\x43\xee\xb9\x6a\x18\x36\xb8\x07\x92\xdb\x3d\x60\xd9\x99\xeb\x01\x9d\xfe\xe7\xfb\x50\x85\x3e\xf2\xfc\x42\xb7\x64\xe6\xe3\x7a\xdf\xd0\xaa\x09\x54\x9a\xfc\x92\x4d\x81\xa1\x7b\x2f\xc3\x70\xbf\xe0\xe3\xfd\xd7\xa2\xf7\x6b\x1a\x86\x5b\x76\x6d\x5d\x54\x11\x42\xee\xbd\xcb\xff\xb0\xfb\xbf\x0e\xbf\xeb\xfe\xaf\xff\xab\xf3\x5d\xe7\x76\x4d\x3f\x77\x6e\xbf\x8f\x7e\x88\x06\xe6\x1d\xa5\xd8\x1e\x69\x3b\xb9\x4d\x78\xe7\x37\xb1\x36\xa9\xff\xd0\x23\xe4\x19\xed\xbc\x7e\x79\xa1\x13\x0e\xff\xd7\x56\x13\x56\x18\x47\xca\x1b\xcc\x6a\x56\xb1\x71\x7f\x82\x1f\x93\x87\x58\x45\x4b\xf6\x99\x71\xb4\xb9\xa2\x33\x21\xe9\xb1\xb5\x5d\x6b\x9d\xb8\x3c\xd5\x65\x5c\x2c\xcb\x09\xb8\x64\x9c\xa9\xe1\x4e\x4a\x13\x68\xbb\x90\x52\x91\xc9\x65\x7f\x46\x63\x39\xf1\xb8\x66\x53\xb0\x16\x73\xeb\xb6\xca\x7a\x88\x4a\x59\x1a\x73\xcd\xf4\x3e\x10\x66\x2b\x26\x1b\x6a\x21\x4a\x48\x17\x5e\xe4\x81\x79\x6e\x8d\xc7\xe6\xb3\xd9\x5f\x84\x63\xf7\x14\x7b\xd7\xd1\x30\xf4\x4f\xae\x1a\xcf\x5f\x5d\xa5\x5b\x5f\x35\x3d\xb8\x97\x44\xe1\x02\x55\xf3\x8b\x4b\xc9\x6e\x65\x74\xa4\x9d\x05\x3f\x9e\xf8\xad\x7b\xdd\xbc\x64\xa9\xaa\x72\x70\x13\x32\xb7\x3b\xf0\x02\x63\x2a\x96\x4b\xa6\x14\xe3\xd7\x65\xc4\xaa\x4b\x2f\x44\xec\x17\x33\x6d\x8e\xf3\xf5\x95\x56\xe1\xaf\xb4\x30\xe0\xa9\xd6\x65\x25\x50\xec\x2f\x7e\x27\x93\xd5\x8a\x4e\x9f\x3b\x41\x62\x7f\x46\x47\x49\x0c\xe1\x5a\x4a\xb3\xef\x56\x4f\x2f\x19\xca\xeb\x64\xf5\x95\x5a\xb2\xb6\x7e\xde\x69\x55\x8a\xca\xf7\xaf\x4d\xe5\xf7\xd2\xd7\x9c\xdc\x50\x73\xe6\xc3\x75\xee\x38\x49\xe7\xdb\xa1\xe8\xaa\xf8\x39\x36\xf0\x0f\xb8\xc8\x4f\x3e\x98\x15\x24\xc4\x87\x62\x59\x6a\x0c\xae\x7f\x6b\x3f\x57\xc5\x7c\x4c\x20\x7b\x9c\xbd\x56\x7a\x9f\x4e\x97\xd4\x4a\x18\xef\x07\x27\xdf\xeb\xd9\x26\x7c\x68\x4f\xd8\x35\x80\x65\xe8\xbb\x53\x06\x4e\xad\xc0\x01\x29\x54\xf3\x56\xcb\x85\xe1\xd2\x67\xd0\xdc\x6a\x57\xfb\x51\xf5\x78\xeb\x66\x63\x0f\x55\xdb\x09\xd1\x94\xde\x2a\x21\x16\xd9\xa8\x7a\x8c\xef\x65\x64\x95\x88\x32\x09\x37\xe9\xd4\xc2\x1c\xb5\x8e\x2e\xdd\xe7\x17\x42\xdc\x90\x85\x84\x85\x8c\xe8\x52\x53\x12\x4d\xa8\x62\xbd\x80\x03\x50\x58\x27\x0b\xee\x12\x95\x4c\x6e\xa9\xf3\x5c\x4a\x14\x0d\x9a\x5e\x1c\xca\x9f\xdf\x38\xd7\x1f\x5d\x6f\x55\x54\xe2\xc4\xb6\x5c\xd3\x6c\xd0\x63\x73\x60\x67\x06\xc3\x66\x25\xe9\x8a\xf2\xa9\xd1\x81\xeb\xf5\x58\x91\xf2\xeb\xb5\xd9\x65\xd3\x5e\x17\x2e\xdc\xd1\x3d\xb8\x92\x64\x63\x46\xd2\xa6\x77\x95\xa4\xea\x4e\x6e\x6b\xf9\xfe\x34\x16\x52\xf8\x51\x5f\x13\x82\x30\xd4\xfc\xcc\x34\x31\xd2\x1c\x35\x9b\xb3\x99\xd9\x0a\xa4\xde\x91\xa2\x0a\xc3\x87\xbc\xd5\xb6\x5e\xcd\x50\x3e\x3e\x18\x68\x46\xa9\xa9\x79\x4a\x91\x84\x41\x9d\x5a\x9e\x38\x65\x59\xfd\x09\xc9\xf8\x53\xa2\xf0\x6d\x14\xe1\x9b\x97\xfd\x96\xe6\xab\x91\x1d\xa4\xc1\xf4\x26\x9a\x1b\x1f\x9d\x4b\xfb\xb5\x1e\xbb\xf5\x52\x6e\x09\x55\xd1\xe5\xed\x72\x58\xaa\x3b\x64\x53\x98\x9a\xfe\x55\x4a\xb1\x3d\x4a\x60\x64\x53\x0c\x57\x12\x89\x86\xa4\x24\xf1\x86\x8d\xe5\xa4\x9d\x50\xb4\xb8\xd9\x9a\x98\x40\x66\xf7\xbd\x55\x4d\xb8\x47\x65\xc7\x41\xee\x73\xab\x33\x23\x1c\xcb\x49\xd1\xb4\x00\x99\x83\xeb\x2e\x50\x58\xb5\x80\x33\xb6\xa0\x5c\x0d\xb7\x13\x48\xb7\x0f\xa6\x1e\x47\x50\xd1\x66\x9a\xa8\x24\xde\x3c\x78\x60\x91\x99\xda\x00\x60\x6b\x45\xa7\x31\x2b\x30\xec\x94\x4f\xc0\xb3\xab\x26\x65\x30\x95\x46\x0f\x0c\xc1\x6e\x73\x1d\xb4\xf4\x4b\x37\x16\xb9\xb6\x1a\xf1\xac\xb1\x16\x0a\x36\x53\x4a\x8d\x37\x44\x76\xcf\x53\x3b\x32\xe3\x11\x65\x97\x89\x9e\x1a\xa6\xe6\xc7\x86\xe2\x36\x4d\xf2\xcd\x8a\xcd\x19\x04\x4d\x40\xee\xa5\x09\xf6\x75\xc1\xd2\x9b\xb6\x2e\xf1\xe8\xc1\x94\x66\x4a\x8a\x7b\x13\x9a\xb3\x1e\x75\x57\xfa\x9b\x19\xa0\x0c\x1b\xd8\xf5\x67\xe5\x34\xe3\xa8\x50\xb4\xae\x31\x21\x1b\x6e\x9f\xd7\x54\x1c\x4b\x2e\x5b\x96\xc4\x38\x99\xec\x59\x2c\xe3\x64\x42\x38\x86\x2e\x0b\xc3\xae\xf0\xc7\xb0\xcf\x8d\x42\xd0\x14\x62\xd7\x44\x8e\x65\x4d\x88\xdd\x0f\xa0\x7b\x19\x65\x54\x19\x8f\x65\x6e\xd7\x9b\x11\xe6\x6d\x1c\x75\x6e\xcf\xab\x7c\xde\xe5\x62\xee\x86\x08\x13\xb9\x12\x04\xd9\x78\xf6\x18\x73\xcd\x34\xfc\xcb\xb6\x0f\xba\x05\xd7\x27\xe9\xde\x4d\x70\xc5\x55\x72\xbf\x10\xc9\x14\x52\xc2\x22\x27\xae\xc1\x9a\x30\x73\x36\xbe\xbc\x8d\x21\x0c\x53\xb3\xe2\xf3\x1c\xad\x09\xed\xad\x35\x35\xf1\xad\xa0\x35\xb8\xe0\x74\x4b\xa6\x4c\xfb\xee\xf1\xbf\xdc\x7a\x6b\xb3\xb6\x72\xdd\x28\xa4\xb8\x28\x9d\xa7\xf6\x69\xf8\xc2\x2c\x59\xbd\x7a\x63\xb3\x76\xf9\xa8\x6d\xf5\xba\x2c\x45\xcb\xd2\xde\xd9\x4d\xed\xee\xa3\x5d\x63\x3a\xf1\x4c\x60\x53\x18\xdd\xc9\x9d\x08\x6a\x18\x43\x4b\xa3\x4f\x8b\x58\x20\x4c\x03\xa2\xc4\x25\x8e\xcd\xb1\x07\x1f\xc2\xd0\xa5\x73\x3c\x6c\x27\x54\x12\xd8\x7e\x02\xe5\x9a\x1d\x8b\x16\x22\x65\x59\xfa\xde\x51\x91\x32\x36\xec\x57\x32\x15\x36\x5e\x4e\x01\x8e\xf5\xb6\xf7\xe3\x5c\xeb\x38\x26\x87\xb9\x08\xa2\xc0\x20\x0a\x73\x8e\x55\x6b\x97\xdb\xe6\x1f\xb4\x45\xd6\xbb\xcd\x55\x00\xdc\x44\x2f\xa9\x98\xa3\x39\x2a\xbf\x9d\xa2\xa5\x79\x17\x97\xa4\x21\xd7\x54\x91\xb2\x5d\x7f\xec\xc2\xd3\x9d\xe9\x49\xa0\x90\x59\x87\xc5\xa6\xc5\x6b\xbb\x47\x3e\xce\xae\x46\xd2\x91\x8c\x75\x49\x61\x2e\xb7\xe1\xd3\x05\x95\x79\x4e\x87\x7b\xfa\xec\xf8\x7d\xd9\xe3\xea\x7d\x5f\x7f\xfd\x11\xf9\xb2\xdf\xb5\x35\x5f\x49\xce\x7e\x15\xba\x65\x02\x1e\xf7\x79\xc9\xc3\xec\xf4\xf8\x41\xeb\x8e\xbb\x89\x8c\x6b\x7c\x4e\x08\x65\xc4\xbd\xd8\x4d\x56\x51\xf9\xde\x22\x41\x18\x6e\x0b\x70\xd5\x11\x26\xea\x72\x9e\x57\xc1\x9c\xcb\x3b\x14\x98\x45\xb0\x9a\x6c\x3a\x72\x21\x4c\xb7\xee\xb6\x70\x61\x2b\xeb\x39\xeb\x02\x20\x95\x52\xc8\xc0\xc6\x22\xc1\x58\xb3\x41\x33\x63\x1c\xc4\xf6\x7c\xd9\x41\x7d\x03\x06\x99\xdb\x0f\xb6\x24\x0b\xbd\x92\xbd\xe5\xa9\xe5\x5b\x9b\x99\x4f\x22\x0f\xd2\x0a\xd4\x1e\xd3\x6b\x86\xde\xbd\xf8\x65\x4d\x1b\xf5\x2b\x36\x18\xde\x78\x66\xe7\x35\x70\x86\xed\xa1\xa1\x3a\x43\x3c\x97\x0d\x01\x87\xfe\x89\xb9\x51\xaf\x54\xe3\x7d\x59\x56\xf0\x69\x5b\x10\x36\x5b\x2f\x9a\xa9\xbb\x1b\x62\x24\xa1\x40\x89\x02\xe5\x83\x8b\x3a\xb7\x7c\x05\x8e\x7a\xc7\x14\x1c\xed\x8e\x65\x51\x5c\x49\x3b\xec\xf6\x4d\x0d\x27\x6d\xdc\x2e\xb7\x24\x0e\x28\x8b\x65\x5b\x76\xd4\x02\xae\xeb\x66\xa5\x3d\x6a\x5d\x65\xbe\x03\x41\xca\x21\x81\xa6\x9a\xc6\xb8\x9b\x10\x51\x63\x36\x76\x00\xac\x1c\x40\x52\xc0\x9a\x6c\xe9\xdf\x63\x36\x19\xae\x4b\xf3\xfd\x1e\xf6\xbd\x6e\x57\xee\x14\x4a\x7c\x0c\x91\x1d\x15\xda\x9f\x3a\xfc\x13\xb5\x30\xad\xcb\x03\x78\x0b\x08\x7b\xb4\xe1\x2a\xa2\x28\x70\x07\x04\x7b\x46\xd9\x80\x80\x11\x5e\x82\x20\x71\x20\x10\x25\x08\x58\x01\x5e\xe1\xf5\xc4\xc8\x5e\x67\x90\xda\xb3\x94\x7b\x0c\x17\xd5\x68\x8c\x5f\xcc\x9e\x98\xeb\xd6\x64\x55\xe0\x3f\x19\xb4\xcb\x87\x12\x90\x35\x59\xa8\x79\xf2\x78\x4d\xd2\xca\xc9\xc4\xd3\x19\x4d\x11\xd3\x68\x99\xac\xf6\x00\x93\x19\x20\xc6\xe9\xb8\x3f\x41\x55\x20\x79\x2d\x67\xbb\x1a\xb6\x97\xcb\x7a\x3b\x82\xbc\x0b\x2c\x26\xdb\x40\xf0\xd5\xa1\x9b\xb8\xb1\x7f\x3e\x72\x93\x6d\xef\xc0\xad\x95\xa0\xe9\x5e\xfc\x9f\xeb\x8e\xa1\xa0\xed\xdd\xa9\x13\x11\x93\xad\xea\x8e\xf5\xff\xae\x75\x88\x5a\x7f\xe4\xc2\x1c\x97\x6d\xa0\x66\x89\xe9\xed\x0a\x98\x51\xbb\x77\xd6\x84\xb1\xda\xb4\x57\xb3\xb3\xd5\xd4\xac\xac\x35\x10\x8f\x33\x91\xc6\xaa\x88\xd5\x3e\x8b\xdb\x6e\x93\x77\x3b\x2b\x6a\x6b\x5f\xa0\x41\xc1\x4a\xfb\xd7\xd7\x34\xab\x5d\xa6\xa0\xa7\xd1\x1a\x9c\xae\x9b\xdb\x12\x95\x8d\x65\x9f\x55\xfb\xab\x84\x88\xee\xd2\x54\xa2\x8a\x1d\xc2\xe1\x37\x05\xdc\x26\xf7\xce\x60\x9b\x86\x50\xad\xf9\xed\xc4\x73\xb2\x96\xe2\xb1\x9a\xe0\x6d\xcb\x57\xb9\x3b\xa1\xc9\x8e\x37\x91\x55\xfb\xe6\xa0\xb6\x0a\x18\xeb\x3f\x06\x63\x64\xc9\xa8\xbc\xb5\xc3\xaf\x8c\x67\x55\xd1\xed\x61\x54\xbb\x1b\x3b\x03\x69\x80\xec\xdb\x3b\x5f\xd5\x58\x59\x49\xf7\x80\xda\x85\x50\x91\x88\x96\xfc\xbd\xae\xfc\x69\xc5\xde\x6e\x9f\x23\x09\x8d\xbd\x0c\xc3\x0f\x4e\xa4\xb7\x53\x5d\x6f\xed\x86\xb7\x0c\xc5\x1f\x58\xfb\xd6\x51\xd4\xf7\x5c\x4c\xcc\x8c\x66\x1b\x42\xbd\xdb\xb7\x6d\x5e\xc2\xc1\x6e\xd7\xa9\xb2\xa3\x26\xc0\x7c\xb3\x9e\x1a\x60\xf6\x6d\xec\xd4\xec\xe2\xc3\x5d\x43\x79\x1f\x14\x6a\x31\xa0\xd3\xfd\x1b\xb5\xf5\xf6\xe1\xca\x6d\xd4\x7e\x96\xe4\xad\xdc\xa6\xdc\x5e\x01\xf3\xab\xf5\x42\x22\xba\x87\xda\x79\xe9\xfd\x86\xde\x1b\xb1\xfd\x36\x59\x0c\x05\x51\x3d\x01\x72\xcc\x27\x5b\x87\x93\xba\x2a\xcf\x8f\x64\x7d\xb3\x01\x82\x65\xb2\x72\x52\x61\x50\xf3\xaf\xad\x65\x69\x68\x5d\xba\xd2\x48\x8b\xb1\xc4\xd8\x2b\x41\x93\x61\x38\xfe\x1f\x18\xc3\x76\xef\xab\xa8\xe4\xe3\x09\xc8\x9d\xe3\x51\x36\x62\x85\x39\xdc\x51\x39\x6d\xca\xc9\xb0\x16\xc2\xdf\x8d\xc6\x8b\x1d\xc3\xea\xda\x23\x46\x5a\x80\x62\x69\xb6\x01\x8a\xbd\xd4\xc8\x4b\xd3\xdc\xdc\xe6\x60\x4c\x1a\x65\x65\x4e\xb7\x6c\x53\x28\x46\xc2\x39\xba\x1b\x44\xd4\xe0\x73\x82\x30\xc5\x38\xe6\xb5\x6f\xbe\xf1\xb1\xa8\x67\x29\x3c\x94\x2b\xab\xef\x85\x6c\x8b\x42\x56\x25\x35\x62\xd2\x20\x85\xf3\xdc\x48\xc3\x05\x52\x78\xb4\xfd\x6d\xa4\xf6\x49\x1c\x9b\x1b\x7a\x1f\x2b\xb8\x4d\x16\xb1\xd2\x9d\x88\xb7\xdc\xa1\x9a\xc5\x68\xa3\x18\xb5\xc5\xb4\x9c\xae\x4b\x8e\x27\x95\xa4\xfe\xb6\xb5\xf3\x35\xd1\x7d\x37\x7a\xdf\xc8\x49\xef\x41\x80\xe3\xe0\xd0\x5e\x3e\xe6\x2e\x3a\xa1\x25\x61\xc2\x61\x88\x68\x8f\x04\x87\x01\x06\xe5\xae\x68\x2c\x1b\x3d\xda\x56\x0f\xf6\x98\xc6\x64\xad\xa3\x6f\x6a\x46\x3a\x1f\x87\x09\x32\xbc\x09\xae\xac\x97\x7b\xd5\xc1\xc4\xc4\x00\x4c\x21\x25\x09\x24\xa4\x3b\xc0\x43\xe3\x3f\xdf\x99\xb5\x6d\x0f\xca\x91\x8c\x4a\x45\x63\xb8\xa0\xaa\xb3\x70\xe1\xdd\x54\x24\x29\x9f\x52\xcd\xb5\x66\xee\x91\xf8\x34\x98\x19\x32\xcd\xd2\x33\xf3\xfa\xcc\xb8\xea\x6c\xa5\xc0\xcc\x10\xa2\x15\x5b\xd0\xa9\x26\x4f\xc2\x54\xe4\x7b\x90\x2c\x48\xb7\x8f\xad\xb5\x73\x16\x5d\x66\xa9\x58\xd1\x97\x53\xc2\x31\xb0\x11\x5a\x34\x48\x20\x52\x44\xe5\xb9\x45\xc9\x5b\x2e\xa6\xd4\xdd\x4b\x61\x5f\xa2\x2c\x93\xc7\x16\xfd\x5d\xa6\x72\x57\xb3\x7a\x69\x16\x6c\xa4\xd5\xca\xe3\x3c\xaf\xed\x66\x97\x20\xb2\x5e\x7a\xe7\xe7\x67\x97\xc7\xa7\x6f\x2e\x4e\x3e\x5c\x5c\x5e\xe6\x39\x52\xa4\x25\x1d\x83\xd9\xc3\xaf\x76\x72\xd7\x66\x43\xc3\x40\xf3\x52\x96\x6c\xe4\x58\x2c\x57\x82\x6b\x9a\xb0\xf7\x43\x94\x4c\xa7\x5a\xc4\xd6\x50\xcc\x32\xe9\x59\x10\x59\xe0\x58\xeb\x8f\x8b\x46\xb4\x5f\x2d\xaa\x54\x6d\x66\x5e\x1a\x7c\x60\x76\xd7\xfc\x86\x71\x94\xcd\x93\xa9\xb8\x3b\x13\x42\x35\x63\x00\x37\x4b\xa7\xf6\xd0\x0f\x2c\x30\x9b\x35\xe6\x0b\xdb\xfb\x89\x3a\x8a\x78\x74\x18\x96\x78\xd1\xb6\x70\x7c\xc0\x76\x59\x2d\x00\xb3\xa9\x5e\xd5\x52\xdf\x74\x1f\x36\x5f\x89\x1a\x8d\xab\x4d\x72\x58\xe0\x78\xbc\x98\x94\xb7\x29\x15\xb6\x8e\x57\xce\x23\x30\x0e\x8e\xd2\x54\xac\xb9\xca\x5e\xb1\x4c\x19\xef\xf7\x55\x16\x6f\x12\x97\x18\x5b\xb5\xcc\x90\x18\xf0\x71\x46\xcd\xce\x95\xf5\x79\xb8\x91\x64\x4b\x12\xb1\x5b\xed\x5a\x41\x8f\x1e\x34\xa2\x70\x83\x5e\x02\x97\x19\x5d\x68\xdc\xce\xf3\xd2\x98\x2b\x6d\x80\x6d\x18\x4b\x14\x88\xf4\x40\xd9\xd3\x90\x9b\x44\x29\x99\xc5\x9b\x25\x9b\x4e\x17\x34\x0e\x02\x98\xb2\x5b\x36\xa5\x32\x0e\x82\xa2\x68\x64\x3e\xb8\x96\x62\xbd\x6a\x56\x70\x60\x6e\x0a\x6a\xa4\xa4\x74\xb1\xa8\xea\xcd\xe6\x92\xf1\x1b\x5d\xaf\x3d\xd2\x3f\xa7\xc9\x34\x28\xcc\x16\xe0\xe5\x2d\x0a\x3a\x01\x86\xfd\x85\xeb\x45\x60\x2a\x96\x6f\x2d\xd0\xf4\x3a\x38\xb6\x01\x9d\x62\x3d\x54\xa4\xa2\x07\x86\xe1\x7e\x56\x28\x78\x97\x51\x69\x83\x96\xe2\xff\xc9\x66\x9e\xda\x90\x54\x9d\xff\x03\x4d\x9d\x2c\x13\xb6\xf8\x96\x36\x2c\x71\x3b\x5e\x24\x59\x16\x07\xeb\x9b\x03\x5d\xfc\x80\x8b\x3b\x99\xac\x02\xf8\xea\x7c\x7c\x33\x70\xd9\xb4\xc3\x8d\xcb\xca\xff\x3f\xfa\xf3\xfc\x5f\xea\xcf\x7f\x4b\x93\x27\x5c\x57\x39\xb5\xed\x4d\x60\x60\xfe\xef\x69\xd7\x2d\x18\x15\x5d\x2e\x90\x8a\xfc\x5a\x87\x36\xd5\x7b\x67\x4d\x19\xa1\x20\x70\x65\x0e\x16\x2c\x53\x3a\xfd\x20\xe8\xd1\x88\x4d\x8b\xb6\x25\xe7\x92\x92\xdb\x44\x25\xb2\x1a\xee\x3a\xa3\xd2\xde\xc9\xb2\x7d\x75\xe1\x4a\xd2\x19\x95\x92\x4e\x75\x02\xdc\xb1\xa9\x9a\xc7\xdf\xff\xe0\x86\xf5\x75\x50\x7e\x05\x58\x5b\xf5\xfe\xf9\xb4\x7c\xb5\xae\x46\x97\x83\x83\xe0\xbf\x58\x9d\x5e\x4a\xff\xc5\x2a\xd6\x6c\x6a\xbd\xb6\xfe\x3b\xfa\x73\xfd\x2f\x56\xd6\xba\xa4\x52\xca\x15\x95\x41\x01\x63\xea\x91\xcc\x61\xe9\xc8\x56\xc1\x52\x73\xa8\xde\x21\x84\x65\x47\xe6\x32\xf8\x00\x6e\x13\xc9\xec\x31\x9a\x20\x5b\x9b\xf0\xfe\x01\x04\x3a\xed\x60\x91\x5c\xd1\x45\x10\xd7\x71\xdf\xb1\xb0\x0e\xcb\x3a\xd4\x2f\x83\xa2\xc0\xf1\xfe\x56\xa6\x74\x25\x69\x9a\x98\x3b\xc6\x6b\x4d\x4d\x13\x7e\x4d\xe5\xb7\xb5\x34\x65\x59\xd5\x94\x5f\x70\x5a\xc2\x1f\x54\x6f\xc3\x1b\x69\xb5\xd3\x73\x25\xd9\x6a\x65\x84\xb9\x4a\xf8\x3f\x93\x75\xf5\xaa\x29\x93\x6b\x41\xf2\x6b\x11\x31\xbd\xa6\xf5\xb5\x3c\xba\x1a\x7b\xa5\x3a\xdf\x35\xc2\xd1\xed\x7b\x40\xf7\x9d\xe6\x32\x7d\xac\x5f\x65\x83\xb1\xb1\x91\xac\xb3\xb9\xd3\x78\x4c\xb8\xb1\x52\xbe\x28\x87\xf7\x5a\x36\xaf\xa0\x1a\x0c\xe9\xa3\x1d\x5d\x8f\xfa\x68\xb2\x92\xd8\x53\x15\x95\xca\x47\x27\xa3\xfa\x4b\xbc\x29\x86\xf4\xdf\x1f\x8e\xce\xa4\x3f\x61\x2d\x31\x74\xfb\x7b\xf4\xd0\x4c\x36\x42\xbb\xb4\x87\xda\xad\x1d\x59\xdb\x17\x77\x13\x29\xf8\xb3\xa2\x48\x62\x1c\xd7\x7b\xb5\xa7\x4b\xfb\xcf\xeb\xfc\xd9\x0c\x48\xa0\xb8\x7e\x2f\xb7\x72\x42\xdc\x83\x4a\x88\x5b\xad\x02\xe3\x8e\x61\x25\xe0\x78\x53\x97\xea\xe2\x37\x12\x6d\xac\xb4\x19\xdf\x48\xd8\xd2\x35\xb4\x4a\xe7\x82\xda\xc1\x2b\xe9\x9f\xba\x83\xdd\xa7\xc6\x0f\xae\xb9\x7f\xbc\x96\xe8\xb5\x44\x9b\x02\x3e\xcb\x72\x89\x64\x01\x8c\x03\x96\xbd\xe4\x4c\xb1\x64\xc1\xbe\xe8\x95\x16\x5c\x53\xe5\x3f\x9f\xdb\x2b\x3a\x26\x18\xc3\xa6\x80\x4a\xe0\xdc\xb3\x43\xb3\x53\x52\x93\x24\x7b\x03\x50\x16\xdb\xc6\x8f\xb7\x1b\x2f\x9b\x36\xad\x58\x61\x74\xba\x73\x21\x66\x95\x0d\x61\x27\xd5\x3e\xdd\x23\xd5\x6e\x4b\xb4\xb4\xbc\x31\xd4\x09\xb5\xa5\xb7\x3b\xf5\x42\xad\x7f\xd8\xa1\x90\xa9\xe0\x2a\x61\x9c\xca\xce\xfa\xe6\x60\x95\x4c\xa7\x5a\x51\x2e\x4c\x81\xf9\x20\x80\xb1\xdb\x97\x42\xc1\x47\xde\x31\xff\xfc\xd0\xec\x7b\x80\x4b\x63\x9b\xa3\xca\x76\x30\x75\x80\x8f\x74\x65\x1e\xb0\x86\x55\x57\x64\xb0\x84\xb7\x29\xe6\xdf\x34\x25\x8b\xa9\xa1\x9a\x0b\x91\x4c\xb5\xf8\x32\x81\x87\x78\x82\x8b\xe1\xd3\x16\x4a\x66\xb1\xf0\xa5\x24\x35\x04\x7b\xfa\x55\x04\x7b\xf0\x2f\x20\x98\x99\x8a\x67\xd2\x04\x46\x7b\x27\xbf\x1e\xb6\xbd\x16\xc1\xda\x1c\x32\x35\xfb\x4c\x67\xe6\x78\x29\x23\xc2\xbb\xe3\xa4\xa4\x0f\x6b\x32\x9e\x0c\xd9\xe3\x74\x88\x25\x11\xe6\x48\x29\x24\x61\xd8\x7d\xe6\x8f\x2f\x9b\x38\xe4\x6b\xe7\x50\x37\x1a\x4b\xe0\x63\x39\x99\xc4\xbc\x1e\x36\x77\x5d\x14\xf0\x44\x92\x0d\xb5\x77\xe4\xc5\xef\xa4\x89\xa6\x6e\x6f\xa6\x35\x6f\x03\x5c\xb8\x8b\x6a\xbf\x76\x96\xb6\x70\x27\xf5\x5a\xcf\x9e\x3e\x31\x86\x1e\x77\x9a\xf7\xb9\x24\xb2\x62\x1c\x5f\xb6\xec\x19\x76\xf3\xc5\xf9\x88\x8e\xd9\x04\x25\x18\xd6\xc4\x85\x7a\xde\x09\x34\x6a\xc0\x6b\x2a\x4f\xed\xe5\xc3\x14\xad\x71\xbc\xbd\x45\xbe\x76\x97\x16\x9b\x0d\x5e\x5d\xf5\x1f\x5f\x9f\x82\xba\xb9\xb5\x6e\xd4\xfb\xfa\xe6\x56\xcd\x11\xa7\x8a\x2f\x29\x6b\x06\xb2\x44\xb7\xf5\x45\x22\x66\xc6\x9a\x40\x0a\xfe\xa2\xca\xda\x96\x71\xba\x9b\xc9\xdd\x15\xab\x70\x91\x20\x4f\xb0\xcc\xe6\xd0\x7b\x49\xc6\x13\x73\x35\x04\xbc\x90\x64\xee\xaf\x7d\x82\x0f\xf6\x18\xba\xfe\x10\x40\x00\xdf\x76\x0e\xff\x85\xcc\xf3\xee\x07\x59\xc0\x46\x97\x6b\x9b\xc5\xf7\x0e\xaf\xac\x5d\xb0\x16\x3d\x54\x8d\x02\x08\xe2\x6a\x86\x7f\x96\x24\xd5\x72\xe0\x0a\x7e\x91\x26\x3e\xc0\x32\x59\x05\x18\x7e\xb2\x87\xe1\xcd\xcb\x37\x45\x06\xf8\x45\x77\xe9\x27\xdd\xa5\x65\xb2\x6a\xeb\xd1\xcf\xf2\x3f\x19\x16\xe0\x57\x63\x02\xfe\x55\x8e\x77\x82\xbc\x4e\x48\xf0\x25\xb0\xa1\x03\x24\x29\x43\xe2\x7e\x99\x04\x84\xf8\x10\x3f\xbf\x4a\x0c\xbf\xcb\xb6\xf8\xb0\x9c\x04\x47\xbe\x55\x13\x5b\x7b\x97\x03\x94\xbd\x2a\x10\xc6\x40\x39\xf9\x4d\x8e\x56\xbb\xe1\x84\xf4\x82\x18\x6e\x87\xcb\x51\xa3\xe0\x5d\x69\x97\x8a\x5d\xbc\x50\x35\x0a\xde\xac\x17\x8b\x20\xde\xde\xca\x40\x3b\x07\x37\xab\xb0\xbd\xc6\x06\x5a\x6d\x39\x16\xc8\x7b\x87\x22\xa5\xc7\x86\xf1\x48\xc6\x8a\x8f\x56\x88\xe2\x72\xa5\x13\x82\x38\xd1\x29\xed\x2e\x2a\xd6\x78\x44\xe9\xa8\x06\x82\x98\x17\x20\xcd\x10\x6b\xa1\x8e\x77\xd9\x62\x09\xe6\xa0\x47\xb9\x45\xae\x5e\x30\x09\x8a\xe1\x6f\x32\xcf\xa9\x42\x3b\xe1\x29\x6b\x21\xb9\x24\x6f\x84\x9a\xb2\x96\x75\x4e\x44\xe4\x16\x28\x08\xbe\x15\x84\x24\xe1\xe6\x90\xbe\x4d\xf6\x41\xd3\x03\x0c\x6b\xee\xc2\xa6\x57\xed\x64\x3b\x99\x66\x9c\xec\xfa\xb9\xd4\x00\xcb\x47\x14\x1d\x23\x89\xc7\xfd\x09\xc8\xf1\x60\x82\x63\x8a\xca\xc3\xd1\xe5\x35\xa2\x2a\xf2\x2e\x30\xc6\x29\xa7\xf4\x4f\x17\x61\x78\x8c\x44\x79\x71\x1d\x98\x2b\x11\x79\xfb\xd5\x37\x5b\x73\x6b\xf7\xf3\x84\x61\x67\xce\xee\x67\xef\x0a\x25\xb4\xd8\x73\xe3\x4d\x75\x5d\x7c\x22\x3b\xce\x90\x0c\x33\x30\x01\x5d\x61\x4e\x24\xb5\xde\x84\xa3\x87\xf1\xc0\x5e\xfc\x8c\x13\xa2\x86\xfe\x42\xe4\x96\xa8\xb7\x69\xdb\xd5\x87\xdd\xda\x25\xb0\xe3\x8c\x4f\xf2\x5c\x8d\x83\x7f\xfc\xa3\x84\xe9\x24\xcf\x13\x3e\xd6\xf3\x8e\x27\x85\xb9\xae\x6f\x27\x30\x9d\x8d\xff\xef\x03\x5d\x99\x92\x57\x0b\x6a\x03\x5d\x55\xc1\x15\xa6\x24\xc5\x61\x88\x12\x1e\x99\x69\x24\x84\x4c\xf3\x7c\xcd\xc7\x29\x9f\xe8\x67\x6c\xf9\xea\x9a\xf4\x21\x23\x99\x42\x7e\xf3\x10\x0f\xb3\xc7\xeb\xe1\xda\x05\x9b\x9d\x11\x31\x9a\xa3\x63\xb4\x22\x6a\xbc\x9e\x98\x69\x5c\x99\x69\x9c\x23\x93\x80\xc3\x70\x56\x8f\xa3\x57\x06\x4e\x9e\xd5\x99\x03\x35\x5c\x33\x21\x69\x79\xed\x98\x6e\x7a\x41\xec\x95\xf8\xc3\x2e\x5a\x11\x67\x15\x4d\x30\x36\x8c\xcb\x5c\x9b\xb2\x7d\x02\x1b\xcd\xc8\x8c\xa3\x04\xe6\xb0\xb2\xfc\x0f\x84\xe9\xc0\xbf\xd0\x07\x6c\x90\xa2\x8d\xdb\xb9\x3c\x7d\x73\xca\x08\x63\x58\xed\xe0\xfa\x94\x93\xee\x60\xe8\xd9\xf1\x9c\x93\x3e\xdc\x72\xb2\xd1\x43\xd8\x5d\xc3\x1b\x3d\x8a\xb8\xdb\x9d\xf3\x5e\xaf\x28\xc0\x26\xd6\xb3\xe9\xda\xcc\xe9\x6c\x3e\x5e\xf1\xfd\xb7\xfe\xdb\x25\x38\x93\x62\x89\x6e\x79\xc3\x55\xda\xa2\xc5\xc3\x5d\xb7\x95\x7b\x0e\x4b\x0e\xd7\x1c\xae\xb6\x97\xfa\x1d\x27\x87\x88\xad\xe6\x82\xd3\x9c\xad\xc4\x34\x67\xab\x64\x8a\xa3\xef\x34\x77\xa6\x77\xf4\xea\x86\xa9\x43\x66\xaf\x70\x7b\x49\x31\x9c\x68\xba\xb1\x10\xa9\xd1\xa0\xe1\x52\xbf\x65\x54\xbd\x5c\x2e\xe9\x94\x25\x8a\xc2\xa9\x4e\x49\x17\x34\x91\x55\xda\x39\xaf\x05\x67\xfa\xa4\x5f\x5e\xd3\x2c\x4b\xae\xe9\xf1\x3c\xe1\x9c\x2e\xe0\xb3\x4e\x7b\xea\x9d\x08\x8f\x35\x14\x2f\x0c\x05\x7a\xcb\xb7\x97\xcb\x05\xdf\xba\x60\x52\x2f\x07\xb7\xdc\x2f\xf8\x58\x4d\x86\xee\xec\xb8\x79\x01\x23\xe4\xc3\x51\xeb\x85\xbb\x35\xb8\xbd\xe5\x46\xf8\x82\x37\xcd\x8c\x3a\xd9\x5c\x0d\x82\x0b\x78\xd5\xfc\x24\xa2\x95\xc8\x94\x1b\x07\x52\xbd\x20\x80\x13\x77\x1f\x54\x2a\x16\xbd\xe0\xf0\x30\xe8\x9d\xf0\x68\x2e\x32\x85\x8b\xe1\x25\x0f\xc3\x53\x9e\xe7\xe8\xb2\x59\xcb\xd6\xd6\x68\x4b\x38\x30\x39\xc4\x74\x3b\x1c\x98\x34\xe1\xc0\xfc\xe6\x2c\x1f\xf7\x7a\xc7\x4d\x6c\x69\x77\x4b\x51\xf1\xb3\xaa\x69\xec\xc4\x2f\x1f\x6f\x12\x17\x70\xcf\xd1\x31\xc7\x70\xcc\x0b\x3d\x8b\xf5\x6e\xd6\x41\x5a\x98\x80\x86\xc6\x42\xa3\xb9\xf7\x39\xc7\xa3\xfb\x66\xee\x73\x5e\x39\xd7\x1f\x99\xb6\x8a\xf8\x33\x0f\xc3\xcf\x3c\xe2\xe2\x6e\x3b\xb7\x4d\x2d\x33\x7e\xe2\x61\xd8\xbd\xe3\x23\x74\xcd\x09\x5a\x72\x73\x18\xe1\x13\xc7\x91\xa6\xcc\x0f\x61\xc9\xcd\xc3\x20\x12\x7c\x69\x41\x4f\xde\x70\xb8\xe7\x9a\x10\x5f\xf3\xfa\x94\x68\x5c\x1f\x60\x1c\x77\x45\x94\x4c\xa7\x27\xb7\xd4\xc6\x12\xa1\xdc\xd8\xb8\x76\xe8\x72\xa7\x56\x34\xcf\x45\xc4\x96\xba\x9d\x73\xa3\x91\x67\x79\xce\xd0\x2b\x8e\x75\x39\xb6\xa0\xb1\x16\x73\x6a\x73\xad\x07\x14\x08\x6e\x0c\x59\xc6\x21\x23\x9d\x27\xfc\xda\x5c\x3f\x79\x8a\x02\xab\xd4\x07\xcd\xcb\x01\xb6\x6e\x8e\xa8\x65\xc3\xd1\x6e\x4d\xf5\x99\x7d\xa0\x1a\xa7\x5e\xad\x90\xe9\xb0\xb7\x21\x21\x65\x54\x5d\xb0\x25\x15\x6b\x65\x41\x0b\x7d\x5c\xc4\xe8\x9e\x93\x57\x1c\x76\x41\x82\x02\x07\xce\x00\xde\x70\xe8\x0e\xb0\x3b\x37\x72\xc3\xe1\x8c\xc3\x6b\x0e\x0f\x38\x3c\xe5\xf0\x92\xc3\x33\x0e\xef\x38\x3c\xe1\xf6\xfe\xbc\x4b\x0e\x66\xad\xc7\xa7\xbc\x80\xe7\xdc\xc4\xf9\xf9\xc2\xc9\x13\x6e\xe2\x69\xff\x61\x96\xba\x73\x68\x3c\xbd\x32\x3e\x36\x52\x43\xf7\x57\x7a\xf5\x33\x53\xdb\x5f\xe0\x7d\x9d\x4e\xbc\xa8\x0b\x28\x1f\x38\x69\x60\xdd\x7b\x8e\xe1\x67\x4e\x9e\x73\x24\x20\xf8\x63\x4d\xd7\xf4\x35\x4b\xa5\x50\x49\x76\x13\x60\xf8\x85\x93\x9f\x79\x18\xfe\xcc\x2d\x47\x18\xfe\xa2\x57\xde\x0d\xdf\x51\xf2\x81\x9a\x20\x3f\x1f\xb8\xf1\x67\x79\xcf\xdd\x55\x24\xc6\xf9\x94\x7e\x66\x0a\xe1\xe1\x19\x1f\xe2\x0d\x25\x67\x3c\x9a\x69\x50\xe8\x07\xc3\x9e\x34\xc5\xa7\xf5\xcb\xad\x2d\xe5\x3d\xe3\xa3\x07\x1c\xe1\xf8\x35\x77\xb1\xe8\x41\x15\x45\xed\xc5\xd4\xcc\x15\x95\x08\x17\xf0\x41\x67\xae\x77\xea\x7d\x6d\xe1\xdc\x70\x5c\xc4\x7f\xf8\xc5\xf0\x54\x33\x06\x78\xc9\xab\x5b\x53\xac\x65\xe2\x82\x7e\x56\x6f\xc4\x94\xa2\x20\x30\x51\xef\x3b\x7f\x70\x5d\x32\x12\x16\xa4\xe8\x25\x87\x4d\x3a\x4f\x64\x92\x2a\x2a\x9f\x26\x2a\xb1\xe7\xde\x9a\xcd\xbe\xe4\xf6\xfa\x23\xdd\xc8\x53\x5e\xe0\xf8\x05\x0f\xc3\x17\xdc\xab\x86\x23\xf4\x8c\x93\xea\xd5\xab\x57\xf0\x8e\x93\x67\xdc\x28\x8d\x5b\xf5\xbd\x73\xb1\x04\x9f\x71\xd0\xa3\xc0\x71\xf3\xf3\x17\xee\xcf\x3e\x9a\xaf\x06\xcf\x7e\xe2\xf0\x2b\x87\xdf\x38\xfc\xce\x41\x09\xa2\x27\x6c\x57\x9a\xdb\xcc\x78\xac\xcc\x85\xee\xfe\xa2\xbb\xe1\x6b\x3d\x75\xaf\x79\x79\x73\xff\x99\x9e\xe9\x33\x4e\x28\xe8\x69\xc0\xf0\x9a\x13\x5a\x00\x15\xbb\x7e\x42\x20\xad\x63\xd0\xca\x62\x98\xa1\x33\xaa\xe1\x08\x63\x9d\xb3\xab\x3b\x47\x6b\x21\x17\x5b\xee\xa4\x7d\x92\x4c\xbd\xbe\xbb\x15\x14\x98\x9a\x7b\x04\x78\xe9\x8c\xeb\xe0\x48\x28\x45\xb4\x4c\xd2\x32\x8d\x4e\x91\xb8\x00\x29\xf6\xdc\x40\x62\xc4\x11\x61\x39\x15\x17\xbb\x81\xf6\xcc\xe5\x2b\x4b\x44\x4d\xc8\xbc\x7a\x20\x40\x52\xc9\x97\xd4\x9d\xae\x93\x22\x9a\x55\x57\xd8\xa1\x3e\x48\xdf\x31\xac\xbb\x25\x3d\x60\x0a\x10\x4d\xe8\x55\x82\xfc\xc6\x78\x69\xc6\xdd\x81\xbb\xab\x43\x69\x5e\xbb\x65\x7d\xf0\x79\xfc\x7d\x1e\xaa\x28\x0a\x60\xc2\x53\x88\x44\x6c\x49\x23\xa9\x20\x81\x03\x63\x00\x6b\xe1\x2f\xaf\xcc\x84\x8f\xd1\x3f\x13\xcd\x18\xfd\xa9\xc0\xb0\x10\x84\x73\x58\x09\x22\xa2\x72\x46\x60\x2e\xea\x97\x4a\xdf\x8a\x1a\x69\xb9\x17\x26\x9e\xe4\x8c\x2a\x13\x6f\x6e\x29\x0c\x34\xe0\x5a\x90\xa5\x80\x2b\xd1\x24\x35\xb7\x02\xc3\x9d\x20\xdd\x2e\x9a\x8b\x30\x9c\x0b\x7f\xd7\xf4\xad\x71\x9c\x10\xa5\x1f\x91\x49\xc0\x70\x22\xc8\xb1\x42\xa9\x80\xad\x68\x83\x5d\xf4\x14\x2d\x04\xee\x96\x1a\xf2\x42\x60\x6c\xbe\xfc\xf8\x23\x21\xe4\x39\xad\x22\x11\xea\xdc\x57\xa2\xae\x40\x96\x5c\xca\x81\xe6\xcc\xe0\x0b\x13\xdc\x36\xea\x4b\x16\x6c\x86\x6c\xa0\xc8\xd6\x1b\x78\x17\x65\x40\x8b\xee\xc0\x85\x3b\x5c\x88\x72\x59\x0f\x30\x6c\x39\xe6\xa1\xad\x43\x78\xcd\xd7\x32\x70\x34\x52\x3b\x41\x27\x13\x31\x21\x14\xba\x48\x6d\xbb\x31\x9b\x82\x0d\xb1\x5c\x2f\x8b\x4b\x41\x4e\x44\x9e\x77\x77\x10\xba\x4b\xc3\xb0\x3b\xe5\xcd\x5e\xcb\xba\xc4\xad\xa5\xc4\xe1\x1e\x69\xf9\xab\x52\xb8\x34\x92\x76\x51\x80\x42\xbc\x2e\x2c\x97\xfb\x1a\x4d\x7d\x72\x21\x22\x77\xa3\xfe\xf6\xb1\x11\x0b\x0b\x8c\xe1\xb4\x85\xca\x94\x01\xe3\xcd\x15\xdc\x6d\x82\x07\xa2\xc4\x42\x49\x6b\x2d\xb4\x80\x73\xd1\x76\x15\x4d\x97\x46\x5c\x28\x36\x63\x74\x8a\x37\xd5\xb3\x0f\x93\x6a\xce\x00\x51\xe7\x37\x3f\x54\xa2\xd1\xbd\x32\xda\x09\x71\x51\x57\x81\x91\x01\x21\xde\x7b\x34\x21\xfd\xa1\xbf\x45\xec\x71\x32\x74\xc7\x0a\xad\x9e\x4b\xf8\x38\xe9\xf5\x26\xb0\x20\x6c\x34\x8b\xc4\x4d\x3c\x8b\x66\x09\x5b\xc0\xca\xf8\xb5\x18\xbc\x81\xa9\x79\x36\x36\xb5\x39\x99\x39\x16\x6a\xe6\x67\x31\x42\x2c\xcf\xd1\x43\x42\x4c\xf7\x1c\xca\x86\xe1\x85\xb0\x2e\xba\xb5\x44\x32\xc0\xd0\xed\x13\x42\x16\xa3\x94\x88\x18\xcd\xc3\x70\xee\x19\x25\xa4\x64\x81\x04\x86\x79\x18\xa2\xb9\xe3\xcb\x90\x59\x97\xa8\x94\x10\x32\xf3\xa4\x6a\x34\x45\x2b\x81\x3c\xf9\x38\x48\xe7\x09\xe3\x9d\xf4\x3e\xd5\x6a\x30\x8e\xd1\x9a\x9c\x0a\x94\x62\x3c\x5a\x5b\xfe\x93\x6a\x1d\x1e\xc7\x2b\x9d\x16\x4f\x91\xa8\x61\xc1\x3c\x0c\xbb\x99\xe9\x82\x6d\xcd\x38\xb3\x16\x35\x18\x6b\x71\xbd\x3e\x0d\x03\x90\x61\xd8\x6d\x8c\xf2\xb3\x1d\xa5\xb5\x42\x7e\xda\x9d\x55\x1b\x08\x98\x0d\xef\xc4\x08\x21\x4e\x9a\x84\x05\x05\xe6\x47\xcb\x83\x9e\x41\x51\xd0\x2c\x38\xc9\x04\x27\x12\xb8\xd9\xc6\xb0\x59\x15\x74\x07\xe6\x28\xf4\x16\x2d\x42\x1c\xe3\x98\x93\x8d\xab\x20\xa6\x60\x8b\xc7\xb2\x00\xc4\x88\x18\x07\x82\x07\x3d\x35\xc1\x23\x86\x38\x8e\x83\x35\xb7\xe7\xc6\xa6\xe5\x20\x02\x1b\x98\xa3\xcd\x39\x54\x98\x35\x2f\x16\x74\x68\x8e\xa9\x1b\x2a\x1f\x86\x68\x40\xc8\x8e\x7f\xe7\xc8\x7d\x46\x0a\xc7\xe5\xa3\xd9\xe1\x42\xc1\x3b\xdf\x66\xc7\xf5\xb2\x53\x35\x6e\xbc\xd4\x3f\xef\xb0\x39\xe1\xa5\x87\x1d\x9f\x68\x73\xe6\xd1\x4a\x7c\x9a\x19\x0a\xc3\x08\x91\x24\xa2\xb9\x1e\xae\xc4\xe8\x56\xb8\x53\x5d\xe5\x98\xcf\xaa\x66\x39\x28\x1c\x7f\x12\xa8\x0d\x20\xa0\xc5\x02\x13\xc2\xbe\x86\xbb\x57\x22\xcf\x4d\x6b\xa3\x87\xf1\x00\xdc\x10\xbd\x89\xc6\x5d\x3c\x6f\x5c\xe1\x8f\x45\x9b\x1a\x3a\x30\x41\x17\x6a\x98\xd3\xf5\x51\x44\x0a\xb8\xf8\xb6\xe1\xd7\x87\x54\x56\xf4\xc2\x76\x3e\xf0\xc3\x29\x3f\xcc\xcb\x0f\xe0\xe0\x65\x03\xf8\xbc\xdd\x46\xd2\xda\x5d\x53\xe5\x07\xa1\x19\x83\xfe\x26\x34\x24\x0a\x38\x6a\x2b\x44\x8d\xbd\x26\xcf\x91\x7d\xd0\xb2\xab\x8b\x32\x8d\x7d\x93\x44\x82\xa3\x40\xe4\x21\x9c\x9b\xb5\xa2\x91\x18\x17\xf0\xa6\xad\x46\x4b\x03\x75\x65\xbe\xf6\x7a\xa5\x86\xdc\xb0\x19\x52\xa4\x92\xcd\x6a\xa4\xa0\x93\x26\xfc\x2f\xaa\x73\xa5\xb1\xcb\x10\xad\x69\x87\xa9\x8c\x2e\x66\x81\x3f\xdc\x7f\x2a\x90\xc4\x43\x31\xda\x22\x9d\x8e\xc3\x58\xb3\xcd\xa0\x30\xcd\x08\x7f\xa3\xc8\x5b\x81\xde\x08\x8d\x10\x9a\x96\xbd\x15\xe8\xc8\xbf\xd4\xae\xfd\x3f\x12\xf6\x7a\x13\x1b\xa8\x15\xc7\x68\x77\xf4\x83\x72\xf4\x83\x9d\x92\x65\xcb\xae\x86\x62\x78\x22\xc2\x10\x2d\x44\x7b\xe8\xab\x3a\xc3\x40\xaa\x69\xfe\x6a\xbf\x63\x5c\x4a\x6b\x52\x46\x72\x24\x7b\x41\xc7\x44\xdc\xea\x05\x8c\xdf\x3a\x03\x4f\xe0\xc2\x5a\xc0\x42\x80\x96\xb4\xec\x95\x68\x3f\xd5\x82\x85\xfb\xcb\x15\xd7\xc2\xbd\x9a\xc3\x5a\xc8\x01\xc7\x5e\x7f\xe2\xa1\x63\xdf\x6a\x74\xf6\x48\xf8\xcb\x28\x8c\x4c\x8b\x7e\x6a\x9a\x06\x32\xf7\xd9\xba\xab\xa5\x02\x1c\x38\xc0\x13\x5e\xfd\x6c\x97\x8a\x7e\x2a\xa9\x73\x3c\x9e\x40\x89\xed\xfa\x8b\x3d\x74\xea\x65\x50\xa7\x3c\x34\x6e\xb0\xd8\x21\xcf\x65\xac\x76\x7b\xdf\x2a\x55\x66\x22\xcd\x85\xab\xb2\x76\x75\x1c\x5a\x88\x9a\x2d\x7c\xa3\x19\x79\xdc\x42\x2f\xad\x15\x99\xcc\x1c\x90\x20\x21\x4b\x81\x90\x24\x0b\x51\xed\x10\x21\x41\x8e\xdd\x3d\x12\xcd\x6b\xd1\xec\x26\x06\xe2\xe4\x18\x09\x3c\xbe\xe2\x13\x3c\x92\x31\xa5\x9a\xbe\x57\x21\x71\x23\x71\x43\xda\x6e\xc5\xcb\x73\x05\x89\xe1\xda\x6d\x2e\xcd\x34\x0c\x29\x24\x8e\x69\x13\x4b\x46\xec\x8b\xbf\x88\x84\x39\x5a\xa4\x97\x1b\xab\x18\xa0\x33\x49\x61\xe8\x77\x09\xb3\x98\x1c\x86\xe7\x6e\xbe\x98\xc6\x65\x48\x2a\x15\x22\x6d\x86\x03\xd8\x0a\xd2\x68\x64\x44\xaf\x21\x1b\xdf\xa3\x5f\x77\x75\x75\xa3\xa0\xfd\xc4\xc1\x62\x1a\x6e\x2a\x6f\xaa\xa9\x59\xf9\x95\xb9\xa5\x5e\xf9\x35\x4a\x8d\x8e\x15\xcd\xc8\xb2\x95\x1e\x6b\x22\xb2\x10\x79\xae\x7f\x7f\xe3\x23\xdd\xee\xaf\xfa\x7b\x7c\x6d\x54\x2f\x68\x0b\xa1\xaf\x09\xd1\xef\x9c\xf0\xda\x8d\xf0\x56\x33\xa6\x0a\xf1\xe6\x35\xf1\x73\xca\x1b\x77\x9d\x34\x0f\x4e\xd6\xad\xd3\x0b\xb1\x7d\x30\xe3\x77\xee\x89\x8f\x13\x2d\x2c\xec\x7c\x3c\x9a\xda\x1e\x4f\x5b\x2f\xef\x85\xbd\x1e\xa1\xba\x63\xa4\x19\x2f\xd6\x6f\x29\xf6\x0b\xd8\x18\xdd\xa8\x55\x07\x15\x68\x21\xe0\xde\x9f\x8c\x10\xb5\xdb\x01\x0d\x89\xfb\x93\x6b\x4c\x4e\x44\x01\x1b\x47\x96\xe3\x85\x28\x4c\xfc\x7f\x43\x5c\x0c\xce\xec\x2a\xfd\xc2\x9e\xd1\x22\x6f\xa3\xd9\x30\x09\x43\xad\x10\xd0\xb1\xe0\x93\x30\x94\x88\x82\xe0\xdf\x7a\x47\x8b\xb1\x9c\x17\xb8\x30\x0a\xe3\x6f\x5c\xd7\xab\x9f\x6a\x5b\xac\xa9\xd8\x8e\x1f\x6d\x3a\x6b\x91\xa7\xe5\x32\x93\xa5\xa7\x78\xb5\xa3\xcf\x36\x78\x8c\x9e\xa2\x12\x9f\x81\x96\xeb\xa0\xf8\xb6\xf6\x0c\x12\xef\x81\x7d\x19\xf3\xec\x4f\xaa\xba\xd4\x55\x25\x8b\x45\x4b\xbf\xdd\x8e\xfd\x52\xd8\x3b\xb5\x4a\xbd\x1f\x84\x79\x36\x92\x3c\xdb\x16\x9a\x5c\x70\x21\x8a\x4a\x8f\x01\x6c\xee\x84\xd7\xea\x03\xa4\x64\x30\x5c\x68\x34\xdc\xd9\x82\x5b\x93\xa4\xd7\xd3\xc2\xfa\x60\xe8\xee\x7a\xf7\xd6\xa3\xb4\xd7\xf3\x81\xf3\x35\xf5\xdf\x56\x14\x35\xf5\xcf\x73\x94\x19\xb2\x33\x5e\x4f\x88\x82\x83\x83\x34\xcf\x39\x62\xc6\xe5\xde\x9c\x42\xaf\x92\x8a\xda\x0d\xf2\x5e\x18\x15\x88\x39\xe9\xa6\x6e\xcd\x90\x49\x4a\xbf\x0d\x28\x06\x10\xa2\x0d\x10\xa2\x09\x88\x96\xb1\x8b\xed\x91\x55\x50\xe6\xee\xe0\xaa\xef\xaf\xf0\xfd\xe5\x48\xec\xf6\xd7\xd9\xc7\x5e\x89\x5d\x82\xe8\x98\x85\x39\x5d\x53\x45\xdd\xb4\x2b\xcf\x9d\xa8\x31\x1b\xee\x11\xbb\xe6\x42\xd2\xe3\x24\xa3\x2e\x99\x05\x36\xac\xec\x42\xb1\x05\xe3\x3e\x75\x69\x52\xa7\x42\x1d\x2d\x7c\xf9\xcc\x24\xad\x39\x4b\xcd\x89\x10\x93\xb6\x36\x69\x99\x62\xe9\xcd\xbd\x4b\xba\x0f\x30\xd0\x5a\x6c\xab\x1b\xd1\x38\x26\x7b\x46\xaf\x4f\x3e\xaf\x2c\x95\xd2\x5d\x3f\x13\xf0\x5a\xc0\x03\x41\x36\xef\xde\x9c\xbf\x7b\xfb\xf6\xf4\xec\xe2\xe4\xe9\xe5\x6f\x71\xdb\xa5\x2c\x37\x02\x05\x49\x00\xba\x89\x6a\x8c\x8b\x24\x53\xe6\xd2\x47\xf2\x10\xdc\xf6\x69\x44\x3f\xd3\x14\x05\xc9\x55\x3a\x0d\x0c\x6a\x3c\x39\x3b\xfd\xf9\xe4\xcd\xe5\xf1\xd1\xd9\xc9\xc5\xde\x9a\xff\x29\x03\x08\xae\xbf\xb1\xee\x4c\xc9\xc0\x0a\xca\x4f\x05\xb1\x63\xaa\x51\x7b\x9d\x07\x5e\x0a\x67\xdd\xd9\x3d\x5a\x0b\xcf\x04\x79\x2a\xe0\x9d\x20\xe8\x4c\x90\xc3\xe4\x10\x5e\x0b\x72\x78\xf5\xdd\xe1\x35\x3c\x75\xd8\x72\x26\x20\x48\x02\x5c\xbe\xbf\x76\xef\xfd\x2e\x21\x67\xa2\xea\x59\x9e\xeb\x94\xd7\xb5\x14\x0c\x4f\x04\x79\x20\xa2\x06\x3c\xf3\xfc\x81\x88\xea\x60\x80\xe7\x82\x94\x26\xcc\x43\x84\x47\xa3\x43\x37\xb4\x00\x8f\x07\x93\x21\x7a\x27\xf2\xfc\xb9\xc8\xf3\x27\x42\x2b\x4e\xcf\x5a\xad\xa6\x4e\x92\x31\xeb\x25\x21\x4f\x84\xb9\xf3\xdd\x20\x03\xa4\xe4\x95\xeb\x39\xc3\x26\x8a\x4e\x66\x42\xb2\x43\x46\xfa\x30\x23\xaa\x76\xcf\x18\x3a\xd0\x8a\x22\x4a\x49\x5a\xde\xce\x1f\xdc\x07\x10\x68\x7d\xd7\x87\x2f\xd3\xc8\x1b\x86\x28\x75\x68\x3c\xab\x2e\x8f\x72\xc7\x5d\x59\x7d\xfc\xb5\x97\xc7\xfd\x30\x44\x5d\x56\xe1\x77\x9e\xb3\x3a\xb2\x07\x1f\xb5\x7c\x44\xd4\xb8\x56\xe6\x60\x60\xee\x92\x5d\x93\x00\x8d\xe2\x4e\xd0\x5b\xf7\x02\x1c\xc0\x8c\x04\x9d\xa0\x37\x83\xac\xd7\xf3\x97\x5a\x3b\x5c\x0e\xfe\x89\x46\xb1\xcf\x96\x62\x0c\xcf\x85\x51\x35\x1b\x59\xcc\xf7\x07\x68\xd4\xfd\xf8\x31\x73\xd9\xde\x09\xa3\xb1\x34\xba\xce\x89\x9f\xf0\x64\x24\x63\x06\x33\x0c\xc9\x88\x8f\x90\xd6\xf1\x57\x6b\x45\xdc\xaf\x1b\x75\x86\x81\x8f\xfb\x13\xa2\xff\xd4\x92\x2c\xd8\xea\x15\xd7\x41\xd2\xb3\xd9\xdd\x66\x7e\x5c\xfb\x42\xfa\xb1\xee\x93\x96\x5f\xea\xa9\xcc\xd1\x91\x91\xab\xb8\x57\x2b\x1f\x53\x3b\x5c\x13\x8d\xd5\x7b\x12\x85\xe1\x4b\x37\x08\x6e\xdc\x3a\x60\xdb\x02\x25\xc8\x60\x28\x76\xfc\x81\x0f\x1e\x0e\x45\xaf\x87\x4b\x19\xb8\xda\xe3\x14\x93\x30\x44\x7c\x2c\x26\xa4\x72\xe7\x02\xee\xc8\xe1\x17\x41\x9e\x89\x86\x7b\x94\x05\xfa\xae\x7f\xd4\x61\x64\x71\xbc\x4b\xc8\x17\xcd\x12\xf5\x73\xfc\x45\xb8\x7a\xfe\xd8\x36\x3f\xbf\x17\xa4\xe5\x86\x1d\x45\x0e\xa3\xc3\x8a\x44\xe8\x3a\x76\xc9\x71\x75\x3f\xa1\x8a\xcc\x81\x8b\x8c\x6c\x92\x38\xf8\x5b\x50\x80\x2a\x20\xf8\x9b\xc6\xb9\x20\x28\xf1\x5d\x41\xf0\xe0\x51\xf2\xd8\x12\xab\x17\x82\x04\x0f\xfa\x01\x21\x24\x48\xaa\x2c\x87\xd1\x21\xe8\x64\x0c\x1f\x6c\x3f\xdd\x87\x00\xc3\xcf\x82\x74\xbb\x87\xd1\xe1\xf8\x83\x86\x93\x89\xc3\xe5\xde\x2c\xb9\x34\xa5\x7e\xd9\x37\x18\x34\x8a\xf1\xa1\x39\xb2\xa5\x87\x32\xdc\x1d\x51\x29\xd1\xd4\x8e\xbf\xd6\x6e\x81\x76\x66\xd8\x20\xb9\x0a\x5c\xa0\xd8\x72\x23\xa1\xf3\xb0\x4b\x88\x0f\x3d\x96\xe7\x41\xa2\x87\x2d\xc7\xfd\x49\x9e\x07\x57\xf6\x79\x30\xd1\x43\xfe\xa9\x55\xf6\xae\x3c\x3c\x2b\x13\x99\x26\x37\x6e\xed\xdf\x22\x8a\xb5\xf2\x64\x9d\xc1\x53\xc2\xca\x23\xc4\x8e\xb4\x3c\xea\xe7\x79\xf2\x98\xa4\x23\x35\x0a\x02\xa7\xc2\xc4\xc8\x1c\xfb\x9d\x27\xf2\x58\x4c\xe9\x91\x42\x09\xc6\x8f\x7e\xf8\xe1\xe1\xdf\x7f\xcc\x73\xfe\xf8\x87\x1f\xbf\x1f\xfc\x3d\xcf\x93\x9e\xa6\x48\x69\x9e\x23\xb1\x95\xb9\x37\xd0\xd9\x7f\xfc\xfe\x61\x3f\xcf\xc5\xe3\x1f\xfe\xf6\xfd\x5f\xbf\x1f\xa9\x11\xf3\xc7\x58\x13\x1c\xf3\x58\xbf\xdb\xb5\x98\x40\xd2\x7b\x88\x63\x71\x60\x4a\xf4\x10\x3f\x30\x2d\x3d\x7a\x34\xe8\xe3\xde\x8f\x3f\xfc\xf0\xfd\x8f\x45\x01\xbf\x0a\xb2\x49\x4d\xf5\xf1\x4f\x02\x69\xb9\xd7\x56\x66\xde\xfa\xb8\x70\x75\xc3\x6f\xbb\x56\x43\x3f\x33\x5a\x63\xff\xd5\xb2\x59\xbf\x2c\x07\xb8\x80\xdf\xb7\xed\x45\x3e\x94\xa2\x99\xe8\xf6\xfb\xbf\xca\x20\x13\x65\x68\x27\x6a\xbc\x86\xbc\xa7\x4d\xa9\x4b\xf2\x5d\x1b\x82\x5d\x76\x1d\x5d\x7b\xc7\x7a\x67\x77\x6c\x0f\xe9\xb4\x93\x09\x9d\xc2\xf8\x75\x47\xa8\x39\x95\x1d\x35\x4f\x78\x27\xf1\xe7\x0f\x3a\x42\x9a\x7b\x15\x2a\xde\xcb\x0b\xdd\xa8\x5b\xc8\x5d\x42\x56\x6d\x97\xf9\xb9\xef\xff\x66\x5a\x34\xce\x74\xd3\x8e\xd0\x3a\x7a\x2a\x96\xab\x44\xb1\xab\x05\xed\x48\x9a\x52\x76\x6b\xee\x56\x72\x55\x7f\x11\xd5\xd0\x0a\x50\x8c\xbc\x4e\xd4\x3c\x5a\x26\x9f\x81\xfa\x67\xc6\x41\xba\xe7\xd9\x42\x08\x09\x9c\x91\xc3\x8f\x0f\xd0\xf8\x41\xf8\x97\xff\x3d\xc9\x3f\x4e\x3f\x4e\x47\xf9\xa3\xf1\x3f\x1f\x4f\xbe\x7b\x8c\x0f\xaf\x41\xec\x7e\xc6\x87\xd7\x6d\xf1\xb6\xac\xc4\x68\xaf\x9d\x4c\xda\x56\x24\xad\x1d\xb5\xa7\x9a\xe2\xed\xae\xc4\xbf\x15\xf0\xb7\x2e\x09\x82\xb1\x9a\xb8\x10\xa8\x29\x49\x76\x2e\xb5\xb2\x95\x75\x07\x20\xb5\x80\xe1\xef\xb2\x33\x2b\xd4\x99\x72\x91\x8d\xaa\xb1\xb5\x61\x63\x23\x3c\xf9\x84\xf1\x1f\xad\x5d\x90\x3a\xdb\x6c\x91\x5c\x67\x24\x08\x40\xea\x7e\x6a\x92\x23\x26\x5a\x5c\xdd\x47\x40\x8c\x91\x6e\xbd\x58\x14\xa6\x80\xd9\xa5\xee\x52\x2d\xfc\xb2\x19\xea\x26\x79\xde\x4d\xf3\xbc\x24\x6b\xae\x8b\xdd\xf7\x22\xcf\xbb\x2f\x44\x9e\xff\x2c\x70\x9e\x37\xfa\xdf\xfd\x45\x78\xc5\xc2\x36\x0e\x19\x91\x48\x80\x81\x4c\x53\xab\x86\xe6\xc5\xf7\x56\x42\x23\x9a\x0d\x8c\x34\xe4\xc4\xc8\x19\xd7\xbc\x55\x68\xdd\xb8\x4d\x3f\xde\xfa\xaa\xca\x7b\x84\xeb\x5f\xcd\xb5\x8f\x9b\xb3\x93\xb7\xaf\x8e\x8e\x4f\x2e\x7f\x3e\x39\x79\x7b\x7e\xf9\xa0\x1f\xbf\x10\x70\x76\xf2\xfc\xe4\xc3\xdb\x4b\xff\xe9\xfc\xdd\x93\xf3\x8b\x97\x17\xef\x2e\x4e\xce\x2f\xdf\xbd\x79\x7a\xf2\xec\xe5\x9b\x93\xa7\x97\xc7\x47\x6f\x2f\xde\x9d\x9d\xc4\x3f\x6b\x3d\x78\x46\x32\xcd\x39\x17\x24\xd3\xb2\x18\x55\x68\x5b\x92\x04\xa5\x45\x03\xaa\xd0\xb6\xec\x09\x02\x1e\x12\x42\x47\xcd\x95\xdf\x3c\x59\xac\xbc\xf5\xad\xf5\xae\xe9\x46\x26\x5c\xe0\x82\x87\xe1\xd1\x4e\x3b\x1a\xdc\x41\x36\x4f\x96\x81\x09\xca\x51\xf1\x23\x78\xb8\x0b\x7a\x8f\xf7\x3c\xfa\x57\x40\x61\x82\x44\x6d\xc3\x13\x12\x22\x46\xc1\x83\x20\xd6\x6c\xcd\x61\xf5\xb8\x6c\xaf\xd6\xd6\xad\xd3\x88\x18\xb1\x26\x33\x39\x72\x1c\x40\x56\x37\x99\x55\x8e\xa4\x6c\xc4\xfc\xa4\x0a\xe0\x38\x76\x27\xbb\x1d\xab\x11\xd8\x22\x02\xec\x78\x04\x74\xb5\xcc\xab\xf1\x72\x2b\x2a\x0a\x0f\x43\x23\xd6\xf2\x52\x84\x4d\xb0\x47\x56\x89\x7c\xf8\x19\xe0\x06\xf9\xd7\xd6\x96\xed\x0f\x18\xb8\x4d\x02\x1b\x76\xd3\x6c\xe3\x57\xf2\xae\x19\x52\xab\xf5\x8e\x0f\x17\x79\x8e\xb8\xcf\xc9\x9d\xd3\xce\x8a\x64\x4e\x7c\x1b\x9a\x6b\xfe\x4d\x1f\xa6\x24\xf3\x8a\xdc\x30\xab\xcb\x7f\x85\xb7\x74\xce\xb5\x08\xe3\xf6\xff\x6e\xc9\xef\x02\x65\x30\xb3\x51\x4b\xad\x13\xf5\x2d\xbe\x92\x34\xb9\xd1\x29\x73\xa7\xcb\x63\xe8\xae\x5c\x6a\x50\x73\xfe\xbe\x1d\xf7\x8d\x38\x5d\x6f\xe7\x37\x81\x66\x90\xa9\x7a\x1a\x86\x29\xc6\x65\xf3\xf7\xb0\xd4\x84\xe5\x9a\xf4\xe1\x8a\xf4\x87\x57\x8f\xe6\x9e\xb9\x5f\x99\x33\x63\x64\x3e\xbe\x9a\x94\x97\x72\xdd\x35\xda\x82\x13\xa2\x18\xa2\x0c\xa5\x0a\xdd\x5a\xf0\x63\x98\x79\x79\x17\xfa\x18\x2e\xc9\x78\x02\xa7\x64\x30\x3c\x7d\x74\x5b\xc6\xc5\xec\xf5\xf0\x65\xdd\x2a\xa1\x75\x92\x7b\x72\x3b\x3e\x9d\xe0\xd1\x7d\xec\x1a\xb8\x77\x50\x3d\x27\xb7\x4e\xae\xd3\x10\x58\x58\x38\x7d\x22\xe3\xbb\xf2\xec\xfd\x25\x9c\x68\x88\x95\x08\x76\x1e\x86\x9f\x6c\xf5\xe7\x2e\x60\x4c\x39\x53\x4d\xe7\xbb\x4f\x18\x9b\xf3\xfe\x9d\xcf\x24\x45\x77\x30\x83\x13\xb8\x84\x73\x8d\x29\x27\x8f\xc9\x75\x18\xa2\x65\x8f\xcc\x9c\x80\x71\x0d\x27\xb8\xf7\x19\xae\xc9\x49\xef\xce\x0f\xd0\x6f\x5a\x2f\x7b\x65\x2e\x5c\x4c\x86\xf5\xf3\x12\xf5\xc3\x23\xf6\xe0\x08\xef\x79\xef\x5e\x58\x57\x47\x66\x32\x22\xd8\xee\x4a\xd1\xda\x01\xb9\x31\x01\x00\x33\xc2\x19\xf6\x11\xf8\x13\x68\xde\x12\xe1\x2a\xcf\x86\xd9\x1d\x53\xe9\x1c\x25\x5e\x4a\xea\x63\xbc\x49\x93\x8c\xea\x55\xec\xd8\xd2\x83\x60\x68\x52\x42\x9f\xd2\x51\x36\xe1\x7f\x97\x09\xb2\x16\x89\xd4\x7e\xfb\xcb\xce\xb7\xd4\x7d\x79\x14\xc4\x19\x61\xe3\xc4\x25\x0f\xe0\x60\x80\x27\x43\x8b\x9b\x53\x3a\x4b\xd6\x0b\x15\xeb\xbe\xcd\x48\x2f\xd1\x13\xa8\x27\x7b\x56\x39\xc5\xb0\x19\x9a\x3d\x5e\xdb\xee\x2f\x88\x64\x68\x76\x38\xa8\xee\xcc\xb7\x3b\xd3\x34\x5e\x3c\x22\xeb\x51\x89\x2b\x62\xbc\x38\x18\x4c\x46\xe5\x20\x07\x38\xb6\x49\xbd\x7a\x12\x2d\x32\x22\xc6\xb3\x83\x41\x19\x93\xa1\xac\x20\xd3\x42\x6a\x56\x58\xc3\xa9\xbd\xc5\x8f\xfd\x69\xdc\xe8\xf2\xe0\x93\x51\x36\x6d\x30\x98\x6d\xb5\x4a\x2b\x95\xfd\x21\x7f\xe4\x05\xf1\x21\xef\xf5\xb0\x09\xcb\x53\x29\x58\xbc\xa6\xaf\x54\x27\x71\x8a\x02\x12\x46\xb6\x0f\x13\x94\xe7\x12\x6a\x38\xc5\x6a\x01\xa2\xfc\xd9\x04\xd3\x1b\x73\x0c\x24\x61\x95\x5b\xb7\x2f\xb2\x66\xdb\xa7\x92\xcc\x81\x8d\x2a\x43\xc6\xbe\xf5\xd2\xad\xb2\xc8\xac\xad\x1b\xde\xcd\x75\x6f\x4f\x16\xac\x74\x31\xf1\xee\xf7\x6d\x02\x6f\x2d\xce\x95\x19\x2e\xae\x60\xdf\x07\x5e\x5e\xbf\x32\x94\x8f\xf8\x50\xf6\x7a\x98\xd6\xae\xc4\xb4\x97\x8a\x81\xb2\xd7\x63\x74\x1a\x57\xce\x28\xbc\x03\xe0\xa6\x4f\x73\x79\xa1\x28\x2e\x43\xa4\xb8\x4a\xc5\x04\x04\x28\x6b\x47\x5b\x31\xb2\x71\xe1\x80\xe2\x94\x81\x7b\xb4\x37\xe0\xb5\x70\xf9\xe6\x2c\xd9\x6c\xdb\x10\x02\x96\xed\x2d\x5f\x9b\x91\xae\x99\xca\x30\xf4\x29\x75\xf1\xd1\x7d\x6d\xec\x61\xb5\x1e\x86\x69\x64\x89\x7c\xc3\x61\xd8\x9e\xee\x7a\xf7\x4c\xc8\xa5\xf1\x63\x6c\x19\x5f\xcb\xed\x2a\x3e\x7b\x18\x36\xb6\x43\x7d\x72\xd1\x04\xda\x7b\x46\xef\xbe\xb1\xe2\x5a\xa9\x30\xac\xbd\x44\x2c\xd3\xb5\x8c\x76\x93\x90\xc2\xb1\xf1\xff\xbc\x2a\xc7\x69\x9f\xea\x1d\xab\x15\xd3\x7d\xdb\x3e\x0c\xf4\x95\x90\x6c\x3a\xbb\x3d\xc2\xdf\x96\xdd\x05\xa7\x68\x66\xb7\x48\x18\x67\x1a\x75\xca\x33\x53\xf1\x5a\xbf\x3e\x6d\xde\x4b\xbe\x83\x42\xfa\x7b\x0b\xee\x3c\x63\x8b\xaf\x16\xd3\xdf\xdb\x50\x6e\x21\xae\xbe\x56\x4c\x7f\x6f\x6b\xcd\x95\x88\x67\xcc\xc2\x8a\x26\xcb\x36\xbc\xcd\x2c\xb2\x6a\x52\x11\xad\xd8\x8a\x9a\xc2\xef\xce\x5e\x9d\xd3\x44\xa6\xf3\xb7\x89\x4c\x96\x6d\x27\x32\xdb\xa6\x7d\xab\xd4\x16\x5a\x6d\x7d\xb5\x33\x98\xf0\x69\x22\xa7\x4f\xa4\xb8\xcb\xa8\x3c\xe1\xb7\xbb\x7b\x53\xa8\x2d\x92\x52\x79\xd9\x75\x9e\x07\x67\x34\x49\xd5\x1b\xe3\xcf\xa7\x15\xe3\xf2\x93\xa6\x1f\xd3\x75\xaa\x49\xa4\xfd\x6a\xfd\xd5\xf7\xe6\x39\x6f\xfd\xa2\x25\xb5\xaf\xdd\x4c\xd4\xf6\xcd\xfb\x55\x6a\xf9\xd8\x5d\x8f\xbb\x60\xb0\xa4\xf2\xba\x9a\xff\x8e\xaa\xeb\xb7\x65\xaa\xb4\x12\xfb\x0e\x51\xa7\x63\x3e\x69\xa1\xf5\x72\xa4\x3f\x10\x85\xdc\xd6\x7b\x4c\xed\x9d\xb5\xe5\xfe\x3c\xe9\x83\xd8\x8d\x29\xc7\x1f\x09\xc3\xf4\x16\x0c\xd5\x59\x5e\x6d\xef\x9e\x16\x30\xa5\x74\xf5\xfa\xff\x58\x9f\x5b\xb2\x29\xa4\x95\x6f\x1c\xff\xf7\x0c\x87\x7e\x56\x94\x4f\x77\x6e\x9d\xf7\x3a\x1e\x43\xb4\x21\xac\x71\xbc\xb1\xf7\xff\xb6\x1f\x55\x1c\x31\x66\x24\x82\x98\x1a\xcf\xe5\x02\x94\x64\xad\xcb\x4b\x55\x06\xcb\x7f\x7e\xcc\xbe\x3b\x84\x20\xc0\x55\xd2\xc7\xec\xbb\x07\x26\xa9\x7e\xf9\xc9\xb4\xce\xe8\x29\xd7\x4a\xc9\xbb\xb3\x97\x65\x44\x2f\xa4\x6a\x15\xfc\xfb\x5f\xfb\x87\xd7\x0c\x82\x7f\xd4\x6b\xfd\xf7\xef\x8f\x4c\x62\xdc\x48\x7c\xf8\xd7\xc3\x6b\x08\x1e\x34\xd3\x8e\x4d\x46\x68\x26\xf6\x75\xc6\x5e\x23\xed\x87\x27\x26\xe3\xb8\x99\xf8\xd4\x24\x4e\x02\xcb\x71\xe7\xac\xdd\x39\xb3\x3c\xbc\x67\xbd\x31\xb5\x34\x29\x31\xd7\x5a\x9f\x63\xff\x5a\x0f\x63\xd1\x0e\xd5\x41\x14\x63\x4e\x2a\xf1\x0a\xd5\x2e\xd3\x12\x5a\x1d\x5b\xb1\x32\xb6\x04\xdd\x76\x1a\x70\x92\x4b\x18\xda\xaa\xcb\xb0\x80\xb4\x47\x82\xf1\x24\x88\x8d\xe4\x02\xb5\x1a\xb6\xf6\x28\x4d\xa9\xa7\x36\xda\xe6\xc8\x04\xd7\x16\x2f\xcf\x4f\x7d\x47\x62\xf3\xb9\x3c\xf0\x6a\x24\xa1\x9f\xce\x4f\xdf\x44\x96\xf3\xb0\x99\x39\x78\x05\xc2\x2a\x38\x53\x86\x28\xee\x05\x24\xe8\x99\xa9\xb5\x31\xa3\xb1\x16\x43\x85\x39\x7b\x8d\x82\x30\xc0\x85\x16\xb7\xaa\xe3\xdf\xe5\x46\xcf\xbf\x05\x78\x78\x30\x70\x7a\x86\xee\x88\x97\xfa\x4d\xd8\xf6\x1e\xb1\xbb\x45\xb5\x02\xa3\x00\x8f\x82\x51\x10\xeb\x4a\x7b\xbc\x8a\x92\x51\x21\xd8\x2d\xf3\xe1\x1e\x5c\x2c\xfc\x8c\x8c\x27\xc5\x2d\xab\xc7\x70\xcd\xf6\x84\x08\x6e\x14\xb3\xc3\xdb\xcc\xd6\x8b\x19\x5b\x2c\xe8\x34\x56\xce\xb3\x88\x4e\xf5\xc2\x80\x66\x66\x1f\xd1\xb0\x80\x46\x53\xd6\xfd\xa4\xe1\x5b\x5d\x2f\x36\x56\x13\x1f\xe7\xbb\x96\x64\x6c\x18\x78\xab\x26\x7f\x69\xf0\xd6\x3c\x96\x33\x5c\xaf\xa3\x19\xdf\xc9\x89\x6a\x34\x0c\xdd\x95\x4f\xd6\x8a\x7f\xcf\xc8\x2d\x83\xe5\x2e\x5e\x3b\x60\xd4\x2a\xaf\xef\xe9\x48\xbc\x51\x44\x7a\x07\x57\x4d\x1d\xae\x59\x8b\x3d\xbf\x6b\xc2\x96\x76\x55\x74\x79\x79\x7c\xf4\xe6\xf8\xe4\xd5\xe5\x25\xae\xcd\xd2\x15\x2b\x8f\x2c\x6a\x5d\xc6\x59\x78\xab\x93\x4b\x9d\x79\x62\x8f\xb3\x5e\x51\xca\x3b\x9e\x09\xd5\xe4\xf8\xbb\xd6\x0a\xcc\x89\xa4\x3f\xa9\x42\x8f\xfd\x84\x91\x2b\x06\x97\x8c\xdc\xb1\xaa\x4f\xa7\xcc\x1d\x34\x3c\x61\x5a\x43\x2b\xfb\xe2\x97\x78\xed\x5c\x95\x82\xbe\xb1\x8f\xd8\xac\x57\x2c\xcf\xbb\x27\x0c\x87\xe1\x6e\xa1\x13\x56\xab\x09\xb6\xab\xa8\x1d\x8d\x3e\x61\x26\xa9\x3a\x0b\xdd\xf8\x56\xd7\x04\x1a\xb9\xb6\x72\xb8\xf3\xfe\x7d\x5c\x14\x45\x0b\x69\x9f\x99\x3b\x5f\x5c\x17\xc2\x10\x35\x7a\xd7\xea\x39\x34\x93\x51\x1d\xa8\x61\x88\x2e\x19\xa9\xa7\x38\x13\x09\x83\x4f\xc6\x29\xe4\x33\x23\xdd\x01\x1c\x33\x72\x30\xa8\xc5\x3e\xd5\x93\xf5\x99\x85\xe1\xb9\x5e\xe7\x36\xcb\xb9\xdf\xc1\x19\x7d\x62\xe4\x9c\x79\x4b\xca\x27\x86\x63\x53\x1a\x3e\xf9\x0c\x61\xf8\x96\xa1\xfa\xc5\x03\xfa\xd5\x50\xdf\xcf\xcc\x6f\x6c\x9d\x32\x74\xc1\xf0\x50\x57\xdd\x1f\x56\x47\x2b\xcb\x3a\x86\x74\x68\xf5\xe7\x73\x46\x3e\xb9\xbe\x0e\x7b\xbd\x63\xf6\x88\x0e\xf1\xb9\xe9\xd9\xf8\x98\x4d\x22\xb9\xe6\x08\x0f\x6d\x07\x6a\xc5\x8b\x73\x6b\x58\x74\xc3\xab\xa3\x3b\x9b\x69\x88\x90\x26\x4c\xdc\xac\xd4\xd3\x5c\xa4\x27\x9b\xf9\x4e\x63\xcc\xa5\xc6\x98\xb6\x62\x5b\x10\x86\xed\x6a\x34\x66\x5c\x32\x13\xd6\xa3\x05\x59\x2e\x1b\xc8\xb2\x8b\x2a\x97\x6c\xeb\x0e\xc5\x02\x35\x6e\x52\x3c\x62\xb5\x33\xf3\xb3\x35\xf7\x2e\x76\x89\x39\x36\x4e\x8b\xa3\x3a\x55\x92\xeb\x86\xbf\x9e\x2f\xe3\xcc\x0a\xb6\x0b\x65\xe1\x3a\x01\x78\xa3\xe7\xd0\xac\xc5\x57\x8c\xbc\x61\x70\x63\xfe\x9e\x99\xbf\xaf\xcd\xdf\x07\xe6\xef\x53\xf3\xf7\xa5\xfe\x6b\xa3\xc4\x30\x32\x93\xd1\x8a\xca\x99\x90\x4b\x2d\x7c\xe7\xf9\xa6\x80\x77\x8c\x3c\x63\x11\x17\x77\x79\xfe\x8c\x45\x4b\xf1\xe5\x8d\x7f\xcc\xfc\x93\xf0\x0f\xf6\x60\xb3\x79\xdb\x95\xc7\x35\x2d\xd1\x8c\x11\x47\xd7\x76\x5d\x20\x47\x2d\x9f\x30\xe2\xbf\xd9\x30\x2d\xcc\x1e\xf5\xbe\x60\xe9\x4d\x8b\x53\xd1\x7e\x03\xcd\x81\x8d\x16\xb0\x1b\x91\xa3\x66\x62\x18\x0c\xe5\x6e\xfc\x2c\x63\x66\x18\xcb\x83\xc1\x56\xb0\xe4\x4f\xce\xbd\xca\x34\x69\xe7\x0e\x83\xe6\xa9\x25\xf6\xe6\xf9\x67\x96\xe7\xa7\x0c\xbd\x65\x66\x0f\x4c\x2d\x68\x1c\x5c\x59\xb5\x24\x00\xf7\x60\x9d\x02\x6f\xe3\x4d\x01\x89\xbc\xbe\x8d\xc7\x13\x70\x37\x82\xc6\x41\xe0\x1f\x33\xfd\x59\xf0\xf8\x15\x83\x64\x3a\xf5\x47\x48\xe3\x1b\x06\x82\xa7\x34\x3e\x63\x20\x66\xb3\xf8\x35\x03\x7b\x52\xb5\xcc\xf0\xc0\xa7\x1c\x2d\x16\x3e\x31\x8b\x9f\x32\xa0\x4b\xa6\xe2\x97\x0c\xae\x18\x9f\x6e\xeb\xbb\x3b\xd4\xdd\x9d\xcd\x8a\x5c\x66\x1f\xf1\x20\x5b\xaf\x56\x36\xc4\x14\x2e\x20\xbd\x9b\xb6\x44\xd0\x38\x0c\x0a\x48\xe7\x53\x26\xbf\xad\x01\x93\xb5\xb5\xfa\xf5\x32\xc9\x6e\x5a\x7c\x0c\xfb\x05\xcc\xa5\x62\xcb\x36\x07\xb3\xa8\xdf\x1f\x7c\xf7\xce\xad\xba\x67\x0c\x83\xac\x6d\x36\x5a\xa7\xb3\xfa\xfb\xbf\x0f\xbe\x1b\xd0\xbf\x57\x7e\x49\x61\x88\xe4\x01\x51\xe3\xfe\x04\x10\xd7\x0f\x83\x89\xbb\x25\xf0\xe0\x00\x78\x8f\xe8\xcc\x18\xc6\x12\xf8\xa4\x80\xd5\x22\x51\x7a\x65\xd4\xe6\x57\xd2\x05\x4d\x32\xaa\x67\xce\xfa\x4b\xea\xa7\xf5\xaa\xd9\xd9\x9d\x05\x70\xf0\x84\xe1\xc3\x01\xfd\xbe\x28\xe0\xcb\xb6\x65\x72\x8f\x60\x69\x14\x25\x6e\x25\x0d\x1e\x29\xf1\x6e\xb5\xa2\xf2\x38\xc9\x28\x32\x97\x49\x35\x53\xb4\xd8\x63\x2e\x78\x02\x7f\xe1\xfb\x98\x4f\xac\x8f\xd5\x1f\xdb\x22\x49\x63\x37\xef\x2b\x9f\x94\xbb\x96\x8e\x50\xb0\x57\x52\x6a\xed\x82\x48\x0c\x5a\x4f\xf9\x63\x4d\x33\x45\xb8\x79\xce\x56\x82\x67\x94\x08\x50\x5a\x7a\xfe\xcc\x44\x66\x10\xc0\xde\x83\xa7\x84\x16\x76\x5b\xce\x94\xb9\x73\xd2\x36\x8e\x96\x7b\x01\x13\x94\xcd\xa4\xe8\x27\x98\xba\x50\x6e\x7a\xd9\xd8\xdb\x43\xab\x04\xb0\xa6\x18\x97\xdb\x3c\xc3\x8c\x2d\xe8\x9b\xb2\x0a\xff\x06\x0b\xc6\xe9\x9b\x5a\xee\xea\x1d\x52\xb1\x58\x2f\x79\xfd\x63\x3d\x05\x32\x95\xa4\x37\xb1\xbf\xbf\x20\xbd\xf1\x73\xee\x72\xea\x67\xd0\x60\xf1\x09\x53\x5a\x14\xa0\x0a\x54\xad\x02\x85\x4b\xc0\x16\xf0\x9e\x91\x71\x60\x0e\x87\x07\xc9\x5a\xcd\x85\x64\x5f\xdc\xad\x9a\x41\x6a\xe3\x48\x1e\x58\x1a\x53\x4b\xd0\x8c\x21\x80\x80\xaa\xe4\x5a\xff\x7c\x5e\x31\x49\xb3\x00\x82\x99\x14\xcb\x00\x82\xb9\xc8\x54\x00\x01\x9b\x1d\x2c\xc5\xd4\xf8\xf2\x1f\x64\x8c\xa7\xd4\xa6\xad\xf9\x4e\xea\x22\xc9\x54\x99\x57\xbf\xfb\x13\x0a\x10\x2c\x93\xcf\x07\x33\x21\xef\x12\x39\xd5\x2d\xac\xa4\xf8\x7c\x7f\xb0\xdd\x51\x13\x0b\xd4\xc4\x7a\x94\x54\xc9\xfb\x03\x73\xe1\x49\x00\xc1\x3a\xa3\xf2\x20\xb9\xa6\x5c\x05\x13\x78\xc1\x88\x51\x7b\x76\xad\x36\x08\x8f\xb6\xfd\x68\x80\x92\x43\xb4\xcc\x18\xcd\x95\x64\x53\xca\x15\xf6\x71\x32\x2a\x13\x8b\xae\xfd\xe8\xda\x1c\x0c\x95\xdb\x67\xb7\x5d\x54\x39\x14\x24\x41\x2d\x00\x56\x49\x32\x78\xe5\x31\x67\x6e\x41\xd2\x32\xdb\x91\x52\x92\x5d\xad\x15\x45\xc1\x5c\xd2\x59\x00\xdc\x3a\xab\xea\x17\x0c\x7b\xb3\x6c\xf4\x53\x6c\xb3\x81\x0f\x5b\x10\xcb\x2a\x82\x41\xf5\x58\xe9\xbe\xb1\x55\xdb\x35\xdd\xd7\x93\xa5\x8b\x8b\x4c\x0b\xaf\x5a\x7d\x8d\x75\x5b\xfa\x61\xe4\x1f\xea\x46\x80\x51\x55\x32\xc9\x74\x5e\xfd\x33\xb2\x3f\xb5\x7c\xff\xd6\x68\xc0\xac\x21\xdb\x88\x59\x44\x9a\xdc\xea\x3e\x0a\xa9\x60\x95\xa8\xb9\x0d\x7c\x78\x18\x10\x42\x64\xe4\x13\xaa\xfd\xa5\x51\x95\xa8\x73\xf5\xaa\xd7\xa2\x54\x10\x09\xf7\xd7\x30\x7b\xec\x71\x90\xab\x2b\x4a\x96\xf9\x3a\x34\x30\xba\x30\xc5\x23\xfd\x25\xae\x42\x58\x97\xe0\x32\x7a\xa9\x7f\x09\x43\xdb\x7d\x93\xa8\x1f\x8a\x02\xe1\x5d\xea\xda\xed\x17\xf0\xe1\x6b\x88\xb6\xb9\x93\xac\x61\x7e\xad\x62\xbf\xb9\x38\x44\x5a\x6e\x4d\x5c\xcc\x3a\xa3\x75\xb7\xd8\x50\xb4\x00\x60\xda\x70\x77\x7b\x4b\x1c\x86\xae\x8c\x5f\x8e\x24\xe8\x79\x4a\x8f\x24\x8e\x94\x78\xfe\xfa\xc2\xeb\xff\xae\x70\xb9\xb5\x5c\x15\xd6\x70\xd5\x25\x9b\x39\x44\x2d\x87\x3b\x4e\x12\xf4\x84\x3b\xd5\xc9\xaa\x6f\x19\x4d\xd7\x92\x06\x18\xaa\xd5\x20\xc4\x0d\xa3\x24\x71\x86\x82\x61\x47\xb3\x58\x49\x93\x69\x0b\x17\xdd\x2a\x14\x2d\x8d\x58\x5b\xf7\xba\x44\xff\xcc\x87\x1f\x3f\x66\xdf\x61\x14\xf4\x54\x2f\xc0\x04\x8d\xff\x39\x9c\x7c\x87\x83\xca\xe3\x9a\x8e\xa6\x74\x17\x5c\xe3\xef\x27\x38\x76\xbe\x2a\x46\x4a\x89\x77\x14\x76\x33\x2f\x48\x41\x10\x80\x86\x99\x89\x5b\x82\x0f\xfe\xe3\xc7\xbf\xd2\x1f\x70\x51\xc4\xdb\xf3\x86\x37\xdb\xe3\x68\x6c\xa5\xec\xb6\x83\x37\x45\x01\x3f\xb7\x29\xd2\x7b\xc2\xe9\x35\x2e\xb9\x9d\x26\x2a\x01\xa1\x51\x8f\x26\x53\x2a\xb3\xa1\x99\x1e\xbf\xd5\x61\xa6\xd0\x71\x59\x31\x0e\x5c\xfc\xdf\x83\x0b\x4d\xa6\xed\x5d\x1b\x56\xb6\xfd\xf0\xfa\xd5\x0b\xa5\x56\x67\x96\x55\x9a\xfb\x0d\x22\x4d\x4b\x3d\xe6\xd9\x37\x43\xd8\xb8\x0d\x86\x1c\x40\xea\x53\x57\x49\x96\xdd\x09\x39\xd5\xa9\x43\x11\x1d\xd5\x69\x30\x09\x9e\x24\x19\x4b\x3b\x41\xef\x4a\x89\x04\x25\xbd\x20\x0e\x7a\xa9\xd5\xc4\xed\x61\x63\xb4\x26\x2a\xba\x4a\x32\xfa\xee\xec\x15\x64\x44\x45\x6b\xb9\x80\x75\x18\x76\x0f\xff\x89\xc6\xc9\xc1\x97\x89\xfe\xf3\x71\xfa\xb1\xf7\xf1\xe0\x63\x34\xf9\x2e\xc6\xa3\x8f\x87\x1f\x0f\x3d\xd1\xcd\x70\xbb\x03\x0c\x1d\xd5\x0c\x94\x1f\x0f\x7b\x96\xac\xf5\x34\x8d\xa0\x75\xa2\x75\xd8\xb3\xe4\x48\x15\x68\x0d\x19\x8e\x33\x1b\xcf\x2b\x12\x2b\xca\x91\x8a\xac\x77\x5b\x53\x7c\x81\x39\x43\x33\x30\xa7\x35\x93\x65\x56\x3e\x9c\x53\x69\x23\x72\xda\x80\xb5\xc0\x22\x65\xd5\x36\xa2\xfc\x13\xb0\x3f\x89\xf3\xa2\x9b\x0e\xc3\xbf\xea\xb5\x13\x99\x7c\xe7\xf6\x88\x15\x32\xfb\xf1\xe6\xc0\xd5\x3a\xcb\x73\x56\xca\x31\xef\xce\x5e\x85\x61\xdf\xe5\x2f\x93\x2a\x9b\x99\x8d\x5c\x83\x71\xe5\x55\xe9\xa2\x99\x11\x13\xa5\x75\xb1\x38\x73\xa5\x5e\x58\xec\x09\x18\xef\xb0\x91\x71\x9d\x6c\xfd\x8e\x30\xac\xcd\x3d\xa3\x23\x54\x93\x04\xb9\xf3\x07\x0d\x3e\xf2\x60\xeb\xbe\x30\x36\x43\x69\xdd\x88\x17\x07\x18\x84\xa6\x82\x4a\xb2\x25\xb2\x37\x71\x2b\x89\xfa\x90\x62\x4d\x8a\x5e\x89\xbb\x12\xcc\xc9\x6e\xb6\xb4\x37\xc0\x18\xec\x85\xa5\x6b\xe3\x2c\xfc\x9e\x95\x75\x0b\xfc\x98\xf4\xfd\x9d\x2f\xfa\x2b\x09\x32\xaa\x0e\x2c\xcd\xd0\x0c\x44\x8c\x4c\xa1\x91\xfe\x13\x8f\x27\xd8\xdb\x1d\xc6\xc9\x04\xc7\xe5\x97\x5e\x00\x9d\xa0\x97\xc4\x89\x89\xfd\xb5\xc6\xf1\xda\x12\x08\x98\x11\x7b\x37\x72\x25\x45\x5e\x98\xab\x0a\x03\x45\x3f\x9b\xdd\x97\xe6\x87\x51\x35\x25\x71\xf5\x78\x41\x3f\x2b\xb0\xf3\x18\xfb\x09\x75\xef\xfa\x53\x99\x66\xf2\xb9\x25\x1d\x67\xa5\x24\x07\x4e\x98\x8d\x59\xb1\xed\x74\x58\xf3\xe7\xb4\x17\x34\xdf\x26\x0b\x36\x4d\x94\xb9\xdf\x6a\x9d\x0d\xbb\x3c\xcf\x39\x92\xae\x7e\x3c\x52\x48\xe2\x98\xa2\x3f\x18\x0a\xdc\xb2\xef\xcc\x12\xb6\xa0\xd3\xce\x1d\x53\xf3\x8e\xcd\x66\x02\x49\x74\x34\x5f\x75\x5d\xf5\xb5\x1b\xff\x3e\x13\x3d\xc4\x14\x05\x89\x71\x61\xbc\xe8\x66\xde\x11\xab\x28\x0c\xba\x27\x57\x42\x36\x6e\x64\x64\x5a\xac\x69\x34\x6b\xb2\xd8\x93\xc9\xc1\xc9\xf1\xe9\x9b\x37\x47\x4f\xcc\x61\x86\xc0\x98\x82\x99\x37\x89\xea\xda\xcc\xa1\x99\x86\x7c\x6e\x6a\x7a\x43\xd5\x9d\x90\x37\x56\x8a\x35\xc7\xb5\x75\xef\xaa\xd2\xb6\xb0\x5f\x8f\x3b\xbe\x93\x81\xfb\xd2\x11\xb3\x4e\xd0\x2b\x97\x6b\x2f\x58\x66\x1d\xfa\x39\xa5\x74\x4a\xa7\xc1\xb0\x4c\x37\xad\xb8\xa8\x51\xc6\xb1\xbf\xf5\x0b\x06\xd3\x37\xfa\xb5\x51\x15\xb0\x57\x1e\xf0\x4e\x29\x1f\x18\xac\x08\x52\x91\xb9\xfd\x4a\x52\x2d\x71\xb2\x64\x91\xe5\xf9\x0b\x86\x66\xd8\x04\x2d\xfa\x9c\xc9\xd9\xb1\xc1\x72\xad\x40\x8c\x16\x86\x74\xa0\xed\x74\xec\x1c\xa3\x87\xab\x30\x44\x62\x6c\x3f\xdb\x65\xad\x3f\x4f\xc8\xca\x98\xea\xf5\x9a\x71\x13\x63\x3f\x1a\x92\x10\x86\xb5\xe5\x2e\x76\x0e\x32\x7a\xaf\x0e\x1e\x86\x4d\x55\xc0\x29\x7f\xff\x1f\x6d\xdf\xde\xdc\x46\xaa\x2c\xfe\xff\xef\x53\xc8\xd4\x46\x05\x47\x58\x91\x1f\xf1\x26\x23\x93\x29\xaf\xe3\xa4\x7c\x4e\x5e\x9b\x64\x7f\x7b\x76\x55\xaa\x14\x96\xb0\x4d\x22\xcd\x68\x19\x24\xc7\x57\x9a\xef\x7e\x8b\xe6\x31\xcc\xc3\xc9\xde\x53\xf7\xfe\x63\x0f\x0c\x03\xa8\x81\xee\xa6\x9f\xd1\xb1\x4e\x03\x35\x12\x53\xb3\xdb\x1b\xa3\x61\x97\xf5\xcf\x02\x26\xe8\xa7\xdb\x00\x20\xbb\x1d\x96\xcd\x4a\xb6\xb7\xd7\x6e\x48\xeb\xe7\x92\x80\xd7\x78\xad\xaa\x71\x72\x2b\xb1\x99\x81\xc7\x97\x22\xcf\xda\xa7\xdb\x99\x28\x8b\x2e\x49\xab\x1e\xe6\xd9\x8b\xfc\x2e\x5b\xe4\x7c\xfe\x5e\xe5\x37\x4a\x14\x45\xbf\x2f\x3b\xc2\x6f\xad\xdc\x5b\x44\xbb\xbe\xe9\x14\xca\x9a\x86\xbf\xad\x9a\x5d\xaf\xa1\xa6\x7a\xfa\xe1\x58\xf5\x2e\x20\xc5\x35\xcf\x66\x62\xf1\x29\xff\x2a\x32\xb0\xc6\xa8\x8a\xde\x2d\xad\xc3\x5b\x0f\x6c\xc4\x86\x70\x80\xb1\xd9\xf0\xba\x3a\xaf\x24\x0a\x83\x9b\xd9\xf8\xf4\xa6\x9e\x9a\x35\xcf\xe6\xd8\x3a\xc4\xd1\x5f\x25\xdb\xd6\xd9\x92\x04\xf1\xd5\x6a\x21\x2d\xa7\xfe\xf8\xdb\xfe\xdd\xdd\x9d\xb9\xe7\x2d\xf7\xd7\x6a\x61\x19\xde\x39\x8a\x84\x89\xff\x74\x22\xcb\xbd\xe6\x86\x21\xb0\x67\x6b\x55\x4d\x06\xc8\x4a\x22\x1a\x95\xcc\xf9\xab\xfd\x2e\xe9\x1f\x92\x6d\xf9\x9c\xaf\xb4\x50\x09\xee\xd4\x96\xd7\xf9\xa6\x28\x56\xd4\x2b\xd9\xef\x07\x4b\x06\x27\x5b\x02\x63\x86\x07\x8d\xac\xac\x8c\xe8\x95\x34\x67\x1a\xff\x2e\xd9\xbf\x24\xa1\xbf\x4b\x42\xb5\xe2\x59\x61\x00\xe0\x06\x49\x26\x9d\x0c\xcf\x7f\x19\x54\x83\xce\x66\x33\xb1\xd2\x88\x50\x5b\xac\xfd\x32\x77\xa6\x02\x6b\xa8\xc9\x6e\x57\xe9\x10\x83\xbd\x8d\xab\x6c\x96\xad\xa1\x45\x55\x7e\x29\x17\x22\x6a\xbd\xc8\xaf\x40\xa1\x98\x34\x7b\x74\x46\x30\xa9\xb7\x7b\x49\x3a\x35\xa2\x9a\xa4\xf8\x9f\x30\xe5\x1f\x2e\xfe\xd8\x5c\xfe\x0a\xa1\xd9\x5a\x5f\xef\x3f\x05\xb7\xc4\x4a\x91\xda\x54\x60\x76\xf5\x6a\x0e\x74\xab\x93\xb6\x92\x33\xd1\xe5\x34\x06\xbe\x23\xe5\x93\x06\x77\xd3\xb6\xc9\x01\x04\xe3\xd4\xa6\x2b\x33\x4a\x25\xad\x8f\x42\x0d\x41\xef\x96\x6a\x24\x23\x5a\x47\xd5\x09\xfa\xf7\xc7\x0f\x2f\xf7\x3f\xbd\xfb\xd7\xc5\x5b\x44\xeb\x78\x3a\x41\xff\xde\x8f\xdf\x2e\xf9\x37\xb7\xca\xaf\xad\x43\xc8\x3e\x04\xe6\x8a\x28\x7f\xa7\xf6\xfe\x39\x3b\x1c\x8d\xfa\x7d\x7d\x7a\x34\x1a\x95\xe5\xf8\x0f\xe9\xef\x0f\x6c\x3b\xcb\x97\xcb\x3c\x83\xe4\x02\x62\xa5\x93\x16\xec\x68\xcf\x30\x3c\x8f\x57\x0b\x2e\x33\xda\xfb\xc7\xe3\x7f\xa0\xb2\x8c\x15\xce\x13\x64\x51\xbc\xcd\x04\x80\xa8\x4d\x71\x33\xad\xf3\x85\xd5\x80\x13\x3d\x65\xdb\xd2\xa1\xfc\xaa\x8f\x95\x15\x15\xad\xd6\xf0\xd7\x40\xef\xfb\x5d\xac\xe4\x10\x0c\x51\xf0\xaf\xd6\x2f\xd8\x1c\xe1\x3f\x25\xfb\x23\x52\xf2\xc1\x9e\xdf\x7e\x17\xd3\x01\x56\xbf\xbc\x76\x47\x4d\xcc\xb1\xc5\x05\x82\x77\x86\x0c\xe0\x90\xb5\x33\x40\x2e\x3c\x81\x5e\xc2\x5e\xcd\xd8\x52\xba\x60\xa2\x55\x43\xb3\x63\x1b\x87\x3a\xee\x26\xfc\x92\x50\x35\xb4\x4b\xe2\xba\x0d\x3f\xda\xdd\x4e\xa6\xf5\x7a\xf2\xe3\xb5\xa0\x5d\xd0\xa5\xc8\x8e\x52\x03\xb3\x08\x51\x40\xab\x71\x05\x78\x72\x99\x0b\xa2\x45\x8d\xbb\xdd\x9f\xd2\x3f\x13\xdc\x76\xea\x16\x0d\x80\x89\x00\x18\xfb\x44\x45\x37\x60\xec\x81\x83\xa4\xeb\x9d\x49\x8b\x6e\x24\x16\x86\x0b\x70\xbd\xf6\xfb\x22\x50\x68\xc3\x95\x85\x42\x34\x5c\xad\x8a\x46\xe5\xef\x4d\x80\x10\x5a\x85\xcd\x07\xbc\xe2\x22\xe7\x28\xde\x10\x8e\x0b\x06\x2a\x29\xe7\x28\x67\xae\x49\x6c\x82\xd6\x6a\x81\x28\xb2\x4b\x05\xc0\x36\x08\x0f\x51\x64\xa6\x80\xa6\x34\x67\x13\xe4\x46\x77\x82\x56\x2f\xcc\x44\x53\x2a\xd9\x04\xb9\xab\x31\xa2\xae\xa7\xe6\xd6\xa9\x57\xd9\x39\x87\x71\xaa\x4b\xa9\x69\x66\xd1\x0d\xa2\xa8\xc1\x22\x99\x81\xed\xfa\x81\xa0\xb4\xe2\x72\x10\x45\x75\xcc\xe4\x2a\x2a\x74\x84\x28\x6a\x32\x13\x50\xd5\xe4\x65\xac\xc0\xb6\x86\xa9\x10\x45\x75\x44\x65\xdb\x7c\x10\x73\xa9\xc4\x4c\x9b\xe2\xad\xd6\x2b\x10\xa4\xba\xe7\xc2\x17\xa2\x33\x8b\x28\x2a\xf2\xd9\x57\xa1\xdf\x73\x7d\x8b\x6a\xc6\x33\x59\x23\x34\x41\x08\xea\x68\x6d\x2f\x94\xc1\x1b\xe6\x99\x34\xb0\x4f\xcc\xe0\x66\xce\x64\xc6\x91\x14\x31\x81\x40\x2c\x93\x0c\x30\x4e\x30\x25\xc3\x7a\x92\x4d\x21\x4e\x8c\x67\xb3\x61\x98\x6c\x6a\x9b\x9a\xa7\x3a\x65\xfa\x4e\x37\x51\x0f\x1a\x2c\xcd\x30\xb4\xf3\x4a\x92\x78\xa2\xb2\x3e\xd1\x87\x46\xfe\x6e\x7f\x63\x2b\xe1\xc9\xfc\x6d\x38\x27\x51\xe2\xff\x59\x2d\x61\x91\xf8\x5e\xc2\x75\x30\xd7\xe1\xe1\x36\xae\xe3\x68\x07\xd1\x94\x67\xff\x0b\x53\xa6\x2a\x62\x00\x33\x1e\x24\x75\xce\xe2\xbf\xf0\x6a\x6b\x99\x69\xa1\x0c\x11\xcb\x0d\x5d\xf3\x57\xe7\x4c\xdc\xf5\xee\x25\x0d\x97\x73\x5b\x2e\xcb\x8c\xd7\xfc\xf7\xad\xd2\x28\xfe\x9d\x6d\x52\x9f\x62\xcd\xe2\x64\x0a\xe6\xf4\x93\xe1\x5a\x2d\xa2\xda\xd1\x34\x81\xf4\x9c\xdb\x92\x62\xcd\x14\xc7\xb5\xa9\x52\x4d\x88\xc3\xe3\xa9\x47\xe8\x2c\x92\x3b\x45\x37\xa7\xa4\xf6\x61\xfb\xa3\x8e\xb7\xcd\x0e\x7c\x5b\x20\x06\x2e\x84\xd3\x44\x70\xc7\xa8\x4f\xa9\x62\xcd\x04\x21\x9a\x80\x49\x45\x0b\x9c\x1e\x40\xdd\x09\xe6\xc5\x70\x9d\x15\xb7\xf2\x5a\x63\x3d\x0c\x46\x54\xd4\x87\x3b\x13\x73\x12\xc2\xa2\x36\xfa\x74\xe8\xf8\x81\x4e\xad\xe8\xfb\xc1\x1e\xc7\x3e\xb9\xec\x98\x28\xa6\x2c\x19\x12\x43\x3b\x0f\x43\x76\xdc\x53\xd8\x95\xaa\xa4\xb5\x35\xbf\x11\xfa\x37\xd5\x29\x87\xed\x5c\x37\x7a\x6b\x48\xfb\x5a\x2d\xbe\x2b\x0b\x6c\x6b\x48\xfe\x06\xb3\x44\x91\x4b\x49\xda\xe4\x79\xe2\xf9\x1a\xec\x55\x97\x09\xc7\xa6\x6c\x6e\x7d\x70\xe0\x26\x14\x6c\xc1\xad\xdd\x01\x89\xa6\x6b\xb5\x00\x23\xcf\xff\x84\xf5\xfa\xde\x34\xa2\xf0\x71\xdd\x13\xc9\xba\x26\x42\x41\xb4\xa6\x62\xaf\x98\x9c\xb3\x8c\x57\xe7\x5c\x56\xe7\xdc\x07\x01\xd7\xa5\xe4\x1d\x37\xa9\xb6\xfe\x16\x9d\x03\xbd\x40\x03\x1c\x7f\x9f\xa2\xa4\x87\x06\x71\x4d\x02\xcb\x53\xeb\xb4\xb2\x61\xf3\x61\x37\x39\x67\x32\x9a\xd7\x8c\xfb\x9b\x40\xb8\xac\xef\x45\x77\x81\x60\x67\x10\x79\x33\x8b\x6f\x62\xb6\xd6\xb9\xea\x2d\xd7\x05\x04\xa8\xe3\x41\xb5\x3d\x74\xc1\xe9\x44\x3b\x4e\x71\x5b\x11\x60\x0e\x05\xe4\xdb\x1f\x47\xa1\xa4\x74\x03\x39\xbb\xf0\x91\xbb\x1d\xf6\x8f\xd0\x1b\xb7\x5c\x53\xa8\xb4\xa9\xc7\x66\x35\x78\x36\x98\xe1\x86\xa4\xda\xad\x2e\x7c\x6c\x7f\x66\x54\x53\xd2\x19\x77\x91\x40\x5a\x41\x13\xdc\xf9\xdb\x6a\x43\xbe\x01\xfd\xce\x78\x9d\x5f\xd4\x0c\xcc\x8f\x2d\x95\x4f\xb4\x4b\xd8\xb5\xe6\x6c\x16\x01\xbe\xe0\x75\x9b\x9b\x9c\xdb\x98\x51\x52\xe2\xbc\x03\x95\x53\x11\x93\x23\x6b\x35\x8d\x15\x8d\x9b\x52\x01\x27\x21\xbc\x13\x86\xd2\x80\xfb\x18\x67\x05\xc7\x7f\x4a\x32\xbe\xe6\x43\x30\x1a\x60\x39\xa7\xd7\xdc\xe9\x74\xbb\x50\x46\xc1\xb1\xe2\xf8\x9a\xd7\x30\x7d\x69\xbe\xb1\x7b\x91\x71\x5e\x15\x80\x91\x61\x6b\xa8\x91\x85\x6b\x70\x23\x4d\x91\x2f\x16\x5d\xdd\x7b\x3c\xed\xfd\x22\xae\xf9\xb0\x58\x29\xc1\xe7\x3f\xca\xa0\xd5\xf0\xfe\x02\x41\xa9\xf0\x29\xd1\x16\x9c\x5d\x73\xba\x32\x7f\xc7\x8b\x30\x75\xb6\xe2\xf0\x76\xce\xd9\x82\xd3\x5b\xde\x96\x61\xd4\xfd\x98\xe8\x86\xb3\x5a\xda\x72\x7a\xcf\xbb\x32\xc3\x6b\x88\xa7\xca\x46\x63\x71\x7a\xf8\xe4\x64\x3c\x18\x08\xa2\x9d\xbe\xf0\x11\x1a\x60\x2c\x4e\x0f\x4e\x52\x34\xb2\xe1\x09\x23\x73\xe9\x83\x13\xd0\x15\x44\x2a\x99\x38\x34\x1f\xa1\xcb\x26\x5f\x5e\x59\x57\xc1\x2d\x01\x6e\xae\xf6\x37\x84\x8c\x80\x76\x21\x01\x1c\x24\x01\xce\x7d\x34\xce\x4e\x83\xaf\xd7\x60\x90\x91\x87\x59\x92\x88\xa0\xdc\x70\xb6\x05\x83\xb7\x4f\xb9\x73\xb4\x59\x72\xca\x8b\x42\xde\x34\x23\x04\xba\x6f\x1a\xfc\x95\x12\xf3\xf5\xac\x76\xc6\x63\xc4\x3e\x51\x86\x3d\x52\x53\xaa\x4b\x42\xb5\x4d\xce\x77\x25\x33\xd1\xd9\x75\x9c\x1e\x5a\xb8\x44\x7e\xbc\x11\xd3\x2c\xca\x44\xb1\xcd\xaf\xbe\x24\xdb\x3c\xd1\x25\xa4\x87\x4e\x50\x8e\x4a\xc3\x11\x4c\xa6\x0e\x18\x22\x06\x46\x14\x5e\xd8\x70\xbe\x92\xe5\xc3\xfc\xea\xcb\x04\xc2\x22\xae\xa6\x94\xd7\xf8\x46\x60\x24\x47\xe3\xd9\x29\xaf\xba\x98\x85\x50\x61\x93\xd9\x94\x16\x4c\x4e\xd6\xd3\x71\xcb\x59\xa2\x08\xde\x66\x85\xf3\xb3\x56\x81\xc3\x2c\x20\x83\xbc\x33\xd5\x36\x93\x97\x76\xe2\xeb\xd2\x67\xae\xc4\x45\x95\x4d\xb1\xf9\xab\xc7\x3a\x58\xdf\x8d\x43\x38\xb0\xe1\x2a\x5f\x61\x83\x43\x04\xfc\x1a\x61\x7f\x0d\x24\xd3\xe1\x58\x91\x28\x3e\xa4\x01\x4b\xce\x46\xe3\xbc\xf2\xb6\x1c\x0c\xf2\x6a\x8f\x28\xd0\x4e\x65\x76\x1a\xa6\x60\xb8\x93\xa8\x4f\x96\x95\x65\x09\x91\xe0\x4b\x6a\xf5\xd2\x2d\x0f\x0e\xaf\xe1\xad\xd4\x98\x83\xc7\x37\x14\xf5\x6c\x76\x1f\x24\x8b\x7c\xff\xe9\xd3\x27\xcf\xf6\x0f\xc0\x38\xc2\x1b\x90\x66\x91\x1f\xc3\x64\xb4\xff\x8c\xef\x5f\x4f\xb7\x87\xe5\xe3\x1b\x49\xd7\x99\x28\x66\x7c\x25\x6a\xb6\xc7\x1d\x4a\xf1\x38\x32\x76\x88\xd2\x51\x52\x2b\x7f\x6b\x4d\xd3\x79\xd5\x86\xa4\x41\x75\xa7\x08\x06\xca\x64\x54\x40\xae\xd2\x98\x73\xce\x98\xcd\x5f\xfa\xa0\x24\x54\x93\x90\xb7\xab\xe6\x9a\x99\x55\x21\xa1\x08\x7d\x08\x0a\xf6\x87\xe2\x2c\xf6\xea\x58\x07\x70\x1c\x03\x38\x3a\xee\x30\xe8\xd1\xe1\xc9\xa3\xc3\x23\x34\x00\xb9\xdd\x65\x66\xf8\x57\xeb\x96\x70\x48\xe8\xc1\x09\x19\xa0\x47\x47\xbf\x20\x43\x70\xab\xfd\x8f\x10\x95\x6c\x34\x96\xa7\x59\xb5\x11\x82\xc5\x46\x16\x07\x95\x91\x64\x7c\xfc\xc4\x5c\x92\x76\xbb\xe3\x13\xfb\xff\x99\x2b\x1f\x1c\xba\x0a\xfe\x9c\x1d\x3f\xed\xf7\xf9\x29\x7b\xf2\x33\x94\x4e\x9e\x40\xe9\x99\x0d\x71\xf3\xec\x67\x28\x1d\x1c\x1e\xa6\xf9\xc0\xf5\x0e\x3d\x27\xfc\xf4\xe0\xf0\xa9\xa9\xbc\xe7\x13\x3e\x4d\xf8\xe9\xe1\xe8\xd8\x97\x0f\x9e\x1d\xee\xf8\xf3\xe7\x27\xd3\x81\x29\x1c\x3e\xdd\x9d\x1c\xf5\xa1\x8d\x8b\x87\xc3\x9f\xb3\x27\x3f\x1f\x1d\x1f\xbb\xe6\x87\x87\xc7\xa6\xf9\xc1\x61\x68\x6f\x3e\xee\x9f\x1c\x35\xbe\xc7\x72\xc0\x0e\x28\x67\x10\xe0\x66\x80\xf1\xc1\xe8\xf0\xa8\xcf\xc9\xe9\xe9\xc1\x68\x07\xcf\x8d\x5f\x4f\xa8\xeb\xff\x78\x04\xfd\x3f\x8d\xfb\x3f\x38\x8c\x07\xe8\x1c\x30\x9c\xe5\xfc\xbb\x1e\xab\xd6\xfd\xa0\xed\xd6\x4b\xfa\xfd\xbd\x3d\xdc\xf0\x5a\xfd\x1f\xbb\xa3\x82\x1b\xa1\x35\x3b\xf9\x9e\xf3\xa2\x6d\xf1\x77\x24\xfe\x06\x8d\x2f\xf9\xfd\x95\x78\x53\xcb\xe4\xe7\x1c\x95\x37\x1c\x32\x1d\x55\x14\x2c\xa0\x63\x5d\x79\x79\xb3\x03\xe2\x10\x9e\x93\x20\x44\x14\xc9\x1f\x08\x3b\x4e\xd3\xed\x2d\x8a\xb3\xac\x6a\x6e\xf1\x2d\xf0\x29\x3f\x1d\x41\x7c\x6a\x22\x45\x42\xca\xb3\x3d\xd1\x01\x71\xef\x20\x35\x11\x54\x4d\xc7\x18\x94\x40\x35\xe2\xbb\xdb\x65\x86\x81\xc9\xef\xde\x7b\xd8\x14\x64\xb7\xdb\xbb\xe5\x16\x32\xad\xe4\x76\x0a\x74\x23\x86\x00\xb2\xbd\x51\xd8\x0d\xa2\xfc\xf1\x04\x02\x29\x54\x3e\xf6\x73\x30\xeb\x82\x9f\xd4\xef\xef\x01\x86\xef\xf7\x71\xce\x96\x1c\xfc\xe4\x08\x75\xaf\xe0\x4d\x8a\x55\xc7\xb5\x54\x39\x63\x04\x3f\x65\xc8\x43\xe6\x7c\x9d\xc4\x24\x9f\x8e\x65\x87\xa3\xa0\xec\xf7\xd5\x03\xfe\x83\xf9\x94\x69\x2c\x61\x51\x92\x00\x65\x1b\x25\x02\x5e\x2a\x88\x42\x1e\x12\x1d\x03\x75\x55\x1d\x5c\x83\xa8\x32\x6e\x1a\xe2\xe3\x7f\x6b\x3c\x4d\x3f\x1a\x04\x78\x91\x30\xa0\xa9\x90\x20\x6f\xcd\x49\x59\xd2\x2b\xfe\x70\x5c\xc3\x3b\xce\x9c\x43\xdd\x05\x67\xdb\x0f\x2f\xcf\x0f\x7e\x3e\x7a\x9a\x20\xf7\x80\xe8\x87\x97\xe7\x47\xcf\x9e\x9e\x40\x8d\x79\x40\x25\xfd\xcc\xd9\x0d\x1f\x5a\x5e\x08\x6f\x7d\x74\x86\x0b\x3e\x74\x4d\x28\x98\xf5\x6b\x2d\x54\x91\x84\x1e\x3b\xb8\xd9\x2b\xee\x1d\xe5\xef\x38\xb8\xf3\x95\x61\xb4\x8e\xd6\x81\x58\x94\x65\x49\x2f\x38\xa1\xef\x7e\xcc\xbf\x7e\xe4\x6c\x7b\xa5\xf8\xec\xab\xd0\xdd\xda\x93\x01\x9a\x4c\x11\x70\x54\x4b\x9e\x80\xdc\x9c\x23\x2a\xb3\xb9\x9c\xd5\xb2\xbc\xc6\xee\x65\x03\x34\x41\x03\x01\xc9\x1b\xa9\x12\x2b\xc1\x75\x67\xcf\x65\x49\xbf\x34\xb9\xe7\x6f\xbc\x99\x7e\x11\x76\x06\x3d\x6f\xf2\xb9\xdf\xb8\x0f\xdd\x46\xbf\x98\xad\x9b\x8a\x04\x32\x63\xd3\x4f\x9c\x81\xe9\x5a\x8c\x83\x82\xd7\x1f\x7d\xcf\xd9\xe7\xc0\xec\xd3\x33\xc3\xc1\xce\xe7\xbf\xae\x85\xba\x7f\xaf\xc4\xb5\xfc\x96\xec\x1d\x50\x38\xa6\x2f\x72\x5d\x98\x82\x53\x9e\x25\xc8\x6a\xcf\x7c\xf9\xa3\xc8\xb4\xcc\xc4\xc2\x34\x99\x8b\x85\x5c\x4a\x2d\x54\x82\xfa\xc8\xb3\x0e\xe0\x66\x60\x9e\x54\x72\xc3\x87\xf6\xd1\xd5\xfc\x7f\xc8\x90\xfb\x2e\x5b\xdc\x9b\xaf\xed\x4e\x48\xde\xf3\x6a\x4f\x24\x9f\xf9\xb0\xda\x20\x93\xf7\x7c\x1a\x00\xbe\x77\x40\x0b\x2f\x70\x79\xc0\x85\xbd\xf7\x89\x57\xd8\xb6\xf8\x2a\x57\x6f\xd7\x8b\x85\xfd\x52\x2b\x39\xd3\xa6\x08\x91\xf3\x65\x76\x03\x91\xd7\xdf\x56\xb0\xf5\x68\xd2\x06\x52\xa9\x27\x83\xb4\x87\xec\x96\x6e\x98\x78\x20\xce\xda\x2c\xdd\xb0\x19\x56\x74\x43\x92\x4d\xec\x35\x6e\x26\x9a\x6e\xd8\x35\xde\x10\xbf\x83\xac\xa2\xfc\x0b\xc7\x1b\x83\x87\x36\xe6\xb4\x78\xc2\x80\x37\x5d\xec\x4a\x4f\xb7\x7a\xbc\x86\x80\x03\x25\x21\xce\xae\x92\x22\x42\x68\x08\xe5\x63\x50\x55\xee\xf1\x3c\xef\xf7\xf7\x56\x29\xc7\x8a\x9e\xf9\xc5\x50\x74\x4e\xd1\x57\x71\x8f\x48\xa2\xc6\x1b\x86\x50\xd9\xa1\xe1\xc4\xb7\x6c\x43\x76\xbb\x56\x74\x81\xdb\xdd\x0e\x5d\xe5\xf9\x42\xf0\xac\x5e\xd9\x64\xfe\xa0\xa1\xbc\x91\x99\xae\xd5\xdd\xf0\x8a\xce\x6e\x48\x98\x65\x3a\x59\xe0\x55\xaa\x92\x07\x26\x6a\xfd\x4f\x17\x98\xe3\x4d\xe3\x35\x04\x57\x42\x84\x4c\x93\xc9\x02\x2b\xdf\xce\x07\x10\x22\xc4\xda\x3f\xde\xd3\x25\xe4\x8a\xbe\xae\xa2\x01\x6d\xfc\xd8\x4b\x53\xfd\x85\xe3\x19\x21\xf7\x6c\x56\x39\xe9\xde\xd4\x6e\x37\x1b\x32\xbe\x67\xeb\xf4\x66\x58\xe4\x4a\xe3\x35\x49\x6e\x82\x5f\xb7\x0d\x69\x74\x5f\x31\x86\x57\x76\xc3\xdc\xb1\xfb\xc9\xd5\x94\x5e\xb0\xcd\xe4\x0e\xc6\xde\x93\x36\xe0\xfb\x1e\x63\x17\xb6\xc9\x67\x06\x1b\x21\xed\x0a\x00\x95\x1a\xc2\x73\x47\x12\x95\xa8\x01\x2e\x52\x34\x44\x83\xbb\xc4\xe0\x97\x3b\x83\x5f\xc8\xf8\x9c\xe3\x25\xd5\xf8\x82\x7e\x7e\x60\xd7\x92\x60\x1d\xbd\x2c\xe9\x6b\xce\x5a\xa4\xb6\x89\x11\xeb\x08\xa9\x61\xfd\xe3\xb2\x70\x68\x9a\x37\xd3\x36\xee\x05\xbf\xb6\x33\x3e\x0e\x61\x57\x98\xf6\xcb\xd4\xef\x57\x97\xea\xaa\xae\x4b\x90\xe6\xdf\x76\x0b\xd4\x2e\xec\x4b\x70\xfb\xd4\xf9\x03\x12\x35\xa6\x87\x0e\x51\xed\x76\x67\xdc\x3f\xd7\x32\xa5\x86\x16\xfd\xbe\xc3\x6d\x8d\xca\xe8\xba\x11\xbf\xe9\x9e\xd5\xa7\x5b\xd1\x73\x0d\x7a\x56\x9e\x1b\x04\x7e\x42\x42\x70\x44\x18\x83\xf6\xaa\x5e\x69\x2f\x57\xbd\xca\xce\xc4\x0b\xf6\x2a\xf4\xdc\x98\xae\xc5\x88\x16\xd6\xef\x1c\x8a\xab\x21\x4a\x1a\xda\x74\xcf\xf1\xb7\xec\x6b\x96\xdf\x65\x3d\xdb\xc8\x4f\x73\xa5\xf2\x8d\x9c\x8b\xb9\x81\x9d\x0a\xc3\x94\xf6\x46\x57\x47\xc4\xca\xdc\x83\xcf\xb8\x53\x0c\xf9\xe4\x50\x9d\x86\x4b\xb6\xc9\x6e\xf7\x85\x63\x5f\x20\x96\xe3\x0a\x45\xda\x24\x3d\x6d\x8c\xa2\x87\xf5\x26\x69\xb3\x22\x39\xe3\x8d\x9a\x88\x7a\x55\x01\x88\x86\xa1\x32\x3d\xe3\xc3\x88\xbe\xed\x45\xaf\x02\xa9\x13\x2d\x22\xd7\x35\xb3\x46\x9b\xb4\x55\x93\x54\x1b\xcf\x57\x45\xa4\x32\x9a\x5c\xa8\x34\x93\xab\x5a\x44\x2f\x3c\x51\xed\x9a\x87\x7d\x95\xfa\x87\xe4\xac\x41\x6d\x55\xd2\xb9\x40\xee\x65\xf8\x4e\x25\x11\x46\x6d\xd1\xe9\x87\x07\xae\x1a\xa5\xed\xaa\xaa\xcf\xaa\x8e\xda\xe5\x4f\xf2\x88\xde\x67\x0d\xa2\xde\x39\xe3\x5a\x93\xb4\x51\x36\x23\xd5\x2a\x22\xca\xdf\x35\xf9\xf0\x36\x8d\x9e\xa1\x13\x5f\xa0\x06\xc5\x3f\x30\x93\x5c\xe9\xd4\xfe\xb3\xe6\xc2\x1d\x8c\x45\xe7\xa0\xad\x66\x69\x57\x25\x4c\xa3\x55\x0b\x22\xa4\x71\xc7\x7c\x72\x77\xa0\xd2\x8c\xe1\x11\xf5\x25\x82\x11\x32\x8c\xfe\x17\x8e\x43\x95\xcd\x95\xe4\x4b\xd6\x25\x80\x72\x47\x12\xdb\xc1\x60\x7d\x5e\x12\xe6\xd3\xb3\x21\x34\x96\x56\xac\x0a\x62\xcf\x97\x16\x8f\xc8\xac\xf7\x91\xa7\xb5\xba\x44\x18\xfc\x69\x59\x36\x24\xb3\x9e\x48\xc5\xd0\x15\xd3\x50\x9f\x20\xcb\x1b\xa3\x24\x54\x8d\x6d\xe0\xba\x8f\x7c\x22\xa7\x63\xb5\xdb\x61\x55\xa3\xbe\x19\x84\xa3\x30\x60\xef\xf7\x95\x25\xc1\xb6\x58\xc9\x68\xd6\x6c\x34\x5e\xc7\x72\x3a\x17\xf1\xad\x60\x6a\xb2\x9e\x8e\xf3\x6a\x7d\xad\xb4\xd1\xfc\xba\x49\x31\xdd\xed\xce\x39\xe6\xf4\x2d\xc7\xa6\x44\x0b\x3a\x33\x03\xb5\xd6\x80\x46\xdf\xd3\xdc\x1f\xbd\x3c\x1c\x21\xd8\x0c\x1e\xc0\x6e\xaa\x34\x8f\x50\x4c\xde\xd8\xa4\x79\x85\x5e\x43\x7f\xd1\x51\xc9\x03\xd1\xb1\xb6\x49\xd7\xde\x87\x26\xaf\x70\x03\xa1\x0b\x06\x2e\x38\x79\x13\x59\x42\x00\x0d\x54\x65\x21\x68\x20\xa3\x7e\xbf\x29\x58\x0c\x4d\xd2\xc5\x80\x19\xa2\xf8\x94\x59\x21\xd9\xc1\x68\x34\x3a\x7a\x74\xf4\x4b\x1f\x25\xd5\x9b\x8b\xc3\x47\xcf\xce\x1f\x3d\x3b\xea\xa3\x2a\x12\xe3\xf3\x51\xba\x18\x5c\x27\x08\x95\x84\x7e\xe5\x1d\xfe\x9d\x54\x92\xad\x8d\x44\x12\x29\xab\x9d\x59\x42\xb8\xa6\xd7\xd7\x3c\x74\xdd\xef\x63\xce\xc4\x00\xa5\x68\xf0\x9a\xc3\x66\x50\xe9\x9c\x4f\xf4\x14\x73\xaa\xa8\x24\x09\xa8\x55\x0d\x4a\x0d\xd5\x92\x24\xfe\xf1\x35\xc7\x39\xa1\xd2\xdc\x20\x79\x47\x9e\xd8\x56\x44\x1e\x33\x5e\xa0\xbe\xb1\x8a\x3f\xad\xe9\xfb\xb7\x25\x88\x90\x7f\xb2\x1e\x51\x69\x78\x4a\xcc\xf1\x33\x2f\x9c\x0d\x7d\xce\xd0\x63\xbe\x92\x8f\x37\xa3\xc7\x7c\x36\xcb\xd7\x99\x2e\xc2\xc3\xfe\x42\x16\x1a\x51\xc9\xb6\x25\xe5\x51\xa8\xe0\xca\x60\x62\x78\x95\xcf\xef\x21\x76\x8a\x7d\x8c\xec\x6d\x6d\x45\xda\x30\x5b\x8a\xbc\x9d\xdf\xc8\xa2\x90\xd9\x4d\x4f\x89\xbf\xd6\x52\x89\x79\xaf\x07\x8a\x6b\x61\x10\x6f\xcf\x7c\x8b\x6c\xda\xaa\x9f\xfe\x82\xbd\xe3\xdf\x15\xfd\x7e\x4d\x5f\xd1\x7a\x4f\xba\x55\xf7\x12\x2c\x6d\x5a\xad\x27\x1a\x4c\xc9\xbe\x72\xec\x74\xce\x6a\x90\x53\x0d\xfc\x6a\x46\x48\x49\xdf\x70\xb6\xcd\xf8\x52\x14\x2b\x6e\x53\xd4\xb8\x94\x4e\x2e\xf9\x8b\x3d\x5a\x32\x93\xda\x9e\x1e\x48\x0c\xe5\xe1\x97\x6c\xcb\x92\xda\x84\xa1\x45\xf8\xa0\xeb\x0a\xe5\x1c\x1a\x4a\x2a\x8b\xcb\xa8\xab\xce\xa6\xd1\x58\xd0\xf9\x99\x1b\xec\x23\x38\x30\x74\x7d\xe3\xc0\x05\x77\x91\x02\xeb\xa1\x9f\x1e\xb1\xa8\x0a\x77\x0b\x0b\x86\x2b\x70\x5c\x55\x62\xfe\x96\x2f\x05\x2c\x68\xad\x26\xd5\x43\x39\x07\x77\xc6\x85\x38\xcf\x97\x2b\xae\x04\x16\x43\x39\x27\x49\xe3\xd3\x56\x9b\xda\x5b\x97\xa6\xd0\xe7\xcf\xda\x2e\x72\x3e\x3f\x6f\x42\xca\xcc\x0b\x8f\xa8\x06\x23\x44\xa9\x09\x46\xaf\xdf\x9d\xbd\xf8\x7c\xfe\xee\xed\xcb\xcb\x57\x08\x34\x4b\x15\x58\xba\x40\xf0\x97\xc2\xaf\xd4\x70\xc9\xd5\xd7\xea\xe7\xf6\x44\x95\xbe\xcf\xef\xec\x57\x6a\x78\xa7\xf8\xaa\xae\x09\x06\x55\xcd\x98\xb8\xc8\xa2\x30\xff\x0d\x13\x90\xf9\xd7\xc6\x16\xed\x8d\x42\x6c\x50\xe6\xe7\x08\x51\x1a\x7d\x56\x44\x6a\x5b\xb3\x23\x9a\xb9\xe4\xaf\x7e\xd5\x90\x0d\x22\xda\x3b\x4a\x14\x46\x1f\x2f\x3e\x7d\xbe\x7c\x7b\xf9\xe9\xf2\xec\xf5\xe5\x9f\x17\x2f\x20\xd8\xb1\x7d\x7d\x9c\x40\xa8\x51\x91\xcd\x43\x18\x52\x31\x2c\x74\xbe\xc2\x90\x90\x07\xa0\x48\x30\x29\x69\xad\xf3\xff\x04\x12\xf6\xae\xf6\x7f\x0d\x8f\x9f\x38\x70\xdc\x2a\xcf\xf5\x2b\x7b\x3e\x88\x87\xd1\x31\xfd\xc0\xf1\xd6\x63\xab\x7c\x18\x92\x2c\xc1\x45\xca\xe5\xeb\x36\xe8\xc1\x9c\xae\x00\x9e\xc3\x11\xe4\xf5\x90\x4c\x0c\x0b\x91\x69\xe2\x7c\x85\x52\xcc\x99\x04\x4b\xcb\xb0\xeb\xa9\x03\xf4\xd9\xf9\xf9\xbb\xdf\xde\x7e\xfa\x88\x28\xdf\xed\x26\x53\x42\x92\x0c\xa3\xe2\x36\xbf\x7b\xe3\xf3\x91\x6f\x5d\xa8\x8a\x97\xd6\x25\x49\xe7\x3d\x80\x6e\xcf\xf7\x34\x44\xe0\x6f\x5f\xf7\x97\x72\x7e\x55\x68\xce\xb3\x1b\xa1\x50\x49\xb7\xe6\x47\x42\x66\x2c\x3b\xd7\x93\xbf\xb9\x94\x25\x5d\xba\x2c\xe5\x45\xb2\x8d\xb6\x7b\xe3\x58\x54\x41\x07\x4a\xda\xd8\x3f\xad\x96\x11\xea\xf0\xcd\x3d\x14\x5a\x6d\xfd\x8f\x64\xa2\x8c\xe3\xa7\xfd\x04\x06\x0f\x73\xde\x6d\x88\xb5\xae\xfb\x88\x46\x69\xac\x01\x7f\x78\x53\xe2\x9a\x77\x66\x95\x29\x60\x5d\x08\x35\x04\x83\x8c\xb1\x02\xb5\x6a\x67\x7b\x86\x7e\x11\x5c\x09\xd5\x43\x95\x3c\x3d\x92\xc3\x3b\x8e\xe4\x85\x43\xdb\x09\x0a\x27\x8d\xca\x79\x82\x78\x55\x9a\xe5\x59\x02\x7e\x73\xfb\x9b\x19\x57\x73\xe4\xa2\x48\x5e\xcc\xa5\xb6\xb9\xa5\xc1\x06\xa3\x70\x69\xfd\x3c\xf1\xdb\xf2\xd5\xea\x32\xbb\xce\x93\x17\x9c\xaa\x7c\xad\x45\x91\x4c\xdc\x48\x55\xdf\x2b\xae\x6f\x13\xf4\x18\x81\xbe\x1b\x14\x9a\x45\x62\x3e\x4c\x2e\x55\x59\x4e\x69\xc6\x37\x97\x5a\x2c\xab\x2f\xcf\x6a\xb3\x7a\xc3\x35\x30\x63\xc9\x0b\x3e\x34\x65\x3b\x4e\xf2\xe0\x28\x1e\x0e\xa6\xf9\x9c\xa2\xc7\x88\x98\x41\x0a\x9d\x2b\x91\xbc\x01\x17\xc2\xf1\xff\xfb\xef\x00\x00\x00\xff\xff\x8c\x08\x13\xb2\xaa\x13\x01\x00") func init() { err := CTX.Err() diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue index 09397d2ce1..9a98b2317e 100644 --- a/ui/components/accounts/AccountsList.vue +++ b/ui/components/accounts/AccountsList.vue @@ -7,8 +7,8 @@ - - + + From 5b3ef18903d4fe1a2d87ef3c1188cce37f39085e Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 10:48:05 +0200 Subject: [PATCH 182/407] Copy over Avatar component from phoenix This component should move to ODS soon, so that we can just use it. At the moment we have to copy it here to get proper avatars loaded. --- pkg/assets/embed.go | 6 +- ui/components/accounts/AccountsList.vue | 4 +- ui/components/accounts/Avatar.vue | 130 ++++++++++++++++++++++++ 3 files changed, 136 insertions(+), 4 deletions(-) create mode 100644 ui/components/accounts/Avatar.vue diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index 05681b36f9..0b2bc6a0a1 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-07-01 10:33:08.357879 +0200 CEST m=+0.004710909" from config file "embed.yml" DO NOT EDIT. -// modification hash(09507ae962d6602e619241c120807f8e.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-07-01 10:47:43.466579 +0200 CEST m=+0.004917707" from config file "embed.yml" DO NOT EDIT. +// modification hash(7584f18725298c447104e0f01f48babf.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,7 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\xbd\xe9\x76\xdb\x38\xb6\x30\xfa\xfb\x7e\x4f\x21\xf1\xe4\xb0\x81\xd2\x36\x2d\xa5\xba\xaa\x4f\x53\x41\xd4\x8e\xe3\x0c\x55\x49\x9c\xb2\x9d\x54\xaa\x14\xb5\x3f\x9a\x82\x2c\xc4\x12\xa0\x02\x21\x3b\x8e\xc8\xfb\x3e\xf7\x35\xee\x93\xdd\x85\x89\x83\x44\xa5\xd2\x67\xf8\xd6\xcd\x5a\xb1\x48\x10\xe3\xc6\xc6\x9e\xb0\xb1\x31\xa5\x33\xc6\x29\x42\xb3\x35\x4f\x15\x13\x1c\xe1\x4d\xb0\xce\x68\x27\x53\x92\xa5\x2a\x18\xde\x26\xb2\xa3\x48\xb0\xe6\x36\xe3\x34\xe8\x12\x75\xbf\xa2\x62\xd6\xb9\x5e\x88\xab\x64\x71\x31\x67\xd9\xa8\x7a\x8c\xdb\x72\xde\x31\x3e\x15\x77\x23\xfb\xd3\x9a\xc3\x56\xe0\xea\x69\xcd\x91\xd1\xc5\x6c\xa4\xff\xc4\x9b\x62\xe8\x3b\xdb\xa1\x48\x01\xc5\x1b\x49\xd5\x5a\xf2\x8e\x42\x94\x6c\xe8\xe7\x95\x90\x2a\x8b\x37\x45\x01\x34\x72\x6f\xb8\x7a\x2c\xf4\x88\x24\xa9\x0f\x59\xe1\x8d\x4e\xa4\x64\x37\xe5\xf4\xea\x13\x4d\x55\xb4\x92\x42\x09\xdd\x13\x90\x84\x46\xf3\x24\x3b\xbd\xe3\x6f\xa5\x58\x51\xa9\xee\x81\x93\xc0\x17\x0c\x88\xef\xef\xf9\xfd\xf2\x4a\x2c\x46\xf6\x27\xde\x14\x20\x08\x8f\x98\xa2\x32\x51\x42\xe6\x79\xf0\x8f\x7f\xf8\x97\x00\x18\xe1\x51\x92\xdd\xf3\xf4\x65\xfd\x7b\x23\x25\x80\x84\xf0\x48\x89\x73\x25\x19\xbf\xbe\x48\xae\x4d\x96\xda\x7b\x50\x01\x25\xd5\x40\x01\x09\xdc\x0e\x42\x10\x1a\x86\xb4\x1a\x42\x87\xf1\x4c\x25\x3c\xd5\xbd\x9c\x8d\x68\x3c\x03\xe6\x87\x99\x4a\x9a\x28\x8a\x44\x95\x19\xeb\x76\xe9\x5d\xe7\x12\xf1\x3c\x1f\x4f\xf0\xd0\x81\x9a\x45\x97\x8c\xdf\x8a\x9b\x3a\xcc\x74\xa3\xb6\x49\x4e\x82\x6c\x9d\xad\x28\x9f\xd2\xe9\xb9\x4a\xa4\x0a\x7c\xb9\x32\xb7\x00\x86\x37\x6c\x86\x02\xfa\x99\xa6\x6b\xc5\xf8\x75\x40\x08\xe1\x58\xcd\xa5\xb8\xeb\xe8\x26\x4f\xa4\x14\x12\x05\xcf\x29\xb7\x20\xe8\xb0\xac\x93\x2c\x24\x4d\xa6\xf7\x1d\xb9\xe6\x5c\x17\xc1\x43\x5d\x45\x2a\x96\xab\x05\x55\x74\x6a\xab\x30\xd5\x9a\x7a\xf4\xbb\x70\x55\x32\xdf\x85\x73\x84\x8b\x99\x90\x48\x46\x4b\xaa\xe6\x62\x4a\x04\xc8\x28\x91\xd7\x84\x0d\x87\xb6\xfb\x09\x91\xd1\x94\x2e\xe8\x75\xa2\xa8\x6e\x20\xb1\xc9\x29\xb9\x42\x09\x48\xd3\x66\x6a\x5a\x49\x09\x21\x19\x4e\x05\x57\x8c\xaf\xa9\x6f\x20\x2d\x0a\xdd\x03\x4e\x3f\x2b\xdd\x01\xdf\x0e\x96\x51\x46\xb9\x22\x32\xba\x74\xbf\x89\xbc\x1e\xd2\x45\x46\x3b\x8d\x0e\x97\xf9\xcd\x38\xb6\xe0\x58\x87\x11\xa9\x0d\xdc\x0e\x61\x28\xa3\x29\xcb\x56\x89\x4a\xe7\x27\x9f\x53\xba\x32\x90\x36\x5f\x70\xa1\x1b\x0a\x6c\x0f\xeb\xad\x84\xa1\x8c\x92\x2b\xb9\x5e\x29\xe4\xbf\xda\xba\xf0\x90\x93\xda\xe4\x18\x42\x30\x23\x6b\x37\xcd\x06\xee\x5c\xc8\x65\xb2\xd0\xb5\xcd\x22\x83\x2c\xba\xc7\x5c\x03\x4f\x70\x3a\xaa\xf5\x2e\xae\x86\xf1\x1b\xa3\x8b\x69\x00\x33\x03\xf1\x16\xe8\x6d\x6e\x93\xc5\x9a\xc6\xe6\x3b\xe8\x7a\x62\x5b\x5d\x51\x54\x10\xb2\xad\x85\x21\xda\x06\x81\x9b\x50\x97\xd3\x4d\xeb\xcc\x8e\xbf\x28\x90\x02\x09\x09\x06\x56\x94\x4b\xc5\x0f\x67\xa3\xe4\xbd\xa3\x22\x1b\x5d\x77\xec\xc7\x06\x89\xbc\x8e\x55\x94\x26\x8b\x05\xd2\x19\x8b\x22\xd5\xd0\xd5\x04\xa2\x91\xdd\xb5\x68\x72\x17\x45\xa1\xa2\x3b\x99\xac\x48\x6a\xa0\x96\x91\x3a\xc9\x9a\x21\xbc\xa9\x3a\xb0\x68\xbc\xad\xf4\x9b\x2e\x32\xd5\x45\xa6\x63\x31\x21\x35\xba\xec\xa9\xdc\x9c\x65\x85\xa9\x78\xee\xd7\xed\x35\x55\x6f\xfd\x8a\x3d\x9d\xc1\x2d\x99\x87\xe1\x1c\xcd\xd1\x29\x1a\x4f\x30\xc6\xc3\xdb\x30\xbc\xed\x12\x4d\x07\xa4\x1d\xca\x2d\x08\x1c\x86\x68\x4a\x6e\xb1\xa9\xe9\x9e\xac\xaa\x35\x4f\x66\xb5\xe7\x26\x65\x98\xe2\x6a\x20\x4b\x0d\x84\xb1\x45\x73\xf0\x00\xf0\x38\x34\x89\x66\x42\x9e\x24\xe9\xbc\x46\x66\x29\xde\xa8\x31\x9d\x34\xa8\x6c\x6d\x4c\x9e\xa2\x20\x0a\x0a\x17\x05\xc6\x15\x5c\xae\x2d\x99\x37\xa4\x65\x58\xcf\x4b\x9a\xf4\xa4\x2c\x90\x54\xe0\xd2\xa4\xa4\x4e\xec\x39\x24\x78\xd3\x2d\x73\x9a\x92\x90\x40\x6a\xab\xcf\x34\x86\x8f\xc5\x04\x14\x30\x8b\xe4\x76\x60\x5d\x42\x32\x87\xe3\x76\x21\x64\x06\x41\x17\x64\x16\x19\x84\xf5\x6b\x7f\x11\x86\x81\x30\x20\xab\x58\xc1\xa2\x04\xfb\x02\x82\xcb\xcb\xe4\x2e\x61\x2a\xc0\x23\x1a\x49\x9a\x89\xc5\x2d\x45\x8b\xc8\xa5\xe2\x48\xcd\x29\x6f\x72\x26\xee\x28\x09\x28\xd3\xcb\x02\xc3\xf6\x67\x07\x7a\xff\x1d\xc7\xb5\x9a\xdb\x6a\x74\x5d\x26\x0a\x12\x34\xdb\xa9\xd0\x83\x6d\xb7\xde\x22\x45\x99\x5d\x4b\x06\x66\x1a\x90\x3a\xd5\x17\x20\x7c\xc4\x6d\x6b\x09\x24\x38\x4e\x10\x2e\xaa\x19\xbc\xaa\x66\x50\x12\x55\x32\xc2\x31\x75\x6b\x76\xa2\x61\x7d\x2b\xd8\xb4\xd3\xd7\xc4\xc9\x50\x12\x5a\x12\x61\xc2\xd7\x8b\x05\x54\x04\x80\xd6\x49\x64\x55\x5b\x64\xbb\x12\x86\x88\x96\xa4\xc0\xd3\x34\x6a\x68\x81\x6d\x01\x6c\x6f\xda\x2a\xc4\x6e\x34\xd9\x90\x6e\x53\x13\x5b\x83\x46\xa7\x8b\xfb\x15\x75\xdc\xe9\x62\x4e\x3b\xbe\xf9\xce\x54\xd0\xac\xc3\x85\xea\xac\xa4\xb8\x65\x53\xda\x49\x3a\x7f\x31\x85\xff\xd2\xb1\x75\x05\x25\xb4\xac\x18\xc2\xc9\x1a\x49\xa8\x06\x60\xdb\xa8\xe3\x9d\xa6\xf7\x16\xef\x5c\xc1\x7d\xdd\x32\xe8\xb8\x0d\xb1\x6c\x68\x05\x00\x6e\x99\x83\xad\x41\x8c\x84\x25\xd0\x88\x8e\x95\xc6\x94\xf5\x42\xbd\x49\x96\x74\x42\x84\x45\x0c\xa0\x91\xc6\x38\xa2\xcc\xcf\x2b\x91\x96\xab\xba\x5b\x41\xaa\x01\x64\x8b\xa0\x75\x10\xe3\xdd\xbe\xe0\x58\xc4\xe8\xdb\xa0\x5a\x42\xd4\xf6\x4e\x73\x7e\x0d\xd6\x84\x77\xdc\xda\x6a\xab\xbe\x42\xb6\xbb\x4a\x7e\xd3\x84\xfd\x95\x48\x63\x35\xee\x4f\x8a\xe1\xa0\xc3\x78\x47\x99\xae\x1b\x32\xfe\x4a\xa4\x44\x8d\x07\x13\x0c\x0f\xab\x2f\x33\xc6\x93\xc5\xe2\xde\x7e\x7b\x38\xd1\x3d\x9c\x29\x2a\xed\xfb\xf7\x13\x0c\x86\x00\x29\x79\x7f\xc2\x95\x64\x34\x8b\x56\xeb\x6c\x8e\x68\xad\xfd\x93\xaa\x7d\x15\x39\x06\xc5\x04\xcf\xf3\x4d\x31\xa4\x66\x36\x49\xc9\x5f\xf4\x28\x14\xed\x18\x30\x40\x3d\x37\xa1\x55\x85\x97\xba\xc2\xad\x66\xc9\xd8\x8f\x2d\x90\x42\xa8\xa0\x98\x80\x2a\x89\xee\x9d\xe9\xa4\xeb\xaa\xa4\x19\x55\xa8\xdb\xaf\xf5\xf0\x54\x57\xa8\xd7\x4e\xd9\xcf\xb1\x30\x4b\xb0\x86\x67\x86\x62\x29\x8b\x8c\xbb\xf2\xad\x45\x0e\x9f\x5b\xe9\x5c\x5d\x96\xbd\x49\xde\x20\x15\x2d\x28\xbf\x56\x73\xec\x65\xc1\x83\x01\x30\x52\x13\xd9\xf1\x46\x8b\x5f\xc3\x5e\x8f\x3f\xf2\x79\x87\x98\xcd\x90\x23\x92\x0a\x38\xae\x7a\xe1\x48\xd5\x98\xeb\x89\xd0\x68\x4b\xba\x03\x28\xc9\xad\xff\xee\xd6\xb5\xcf\xd1\x07\x5a\x54\x92\xaa\x41\x66\x56\xb8\xa5\xb7\xd1\xaf\xf1\x79\x8d\x36\x9d\x97\xcc\xc2\x09\x1f\xae\x36\x23\x7d\x74\xfb\xbe\x60\x67\x51\x63\x8b\xf7\x51\x2a\x78\xa6\xe4\x3a\x55\x42\x92\x15\xac\x1a\xef\x0b\x58\x8d\x93\x09\x59\x18\x69\x6c\x91\xdc\xeb\xe5\x45\x2a\x49\xf6\x99\x87\xa6\x5e\xfa\xd9\x4e\x72\x8b\x1a\xd2\x36\x01\x61\xa8\xea\x8d\xba\xf1\x76\xbb\x5a\x30\xa2\x84\x90\x45\x9e\xb7\x34\x49\x08\xd1\x84\xb5\xea\x57\x9e\xd3\x88\x27\x4b\x8a\x71\x01\x2a\x5a\x26\xf2\xa6\x8d\x41\x3b\x31\x20\x6b\x08\x1a\xa3\xd6\x54\xa4\x60\x85\x63\xa4\xa2\xcb\x4b\x03\xaf\xcb\x4b\xb2\x82\xc4\xac\xaf\x3c\x47\x4a\x03\xa6\xa5\x5f\x18\x83\xda\x2b\x76\xdc\x63\x50\xba\x77\x89\x91\xaa\x76\xbb\xb7\x71\xfc\x53\xcb\x5e\xb0\x44\xd7\x75\xfd\xa5\xf6\x32\x66\x7b\xe5\x29\x50\xd1\x51\x5d\xdf\x22\x7a\x31\x1a\x0d\xac\x2a\x61\x74\x2a\x30\x82\x46\xc9\xa9\x58\x18\x22\x46\xde\x4a\xb1\x64\x19\xb5\xb2\x94\x55\x98\xae\x51\xea\x0b\x60\x2d\x4a\xf8\xc6\xda\x26\x1c\x49\x3c\x4a\xe2\xc4\x20\x2a\x6a\xe3\xd8\x65\x61\x43\xb7\x95\x45\xfa\xb2\x80\x66\xc2\xb0\xd4\x40\xba\x6f\x02\x37\x80\xfb\xaf\x88\x90\x70\x5f\xea\x93\xbb\x59\x82\xb1\xa5\xb4\x9d\xb2\xb2\x49\xa0\x81\x74\x43\xef\xb3\x16\xfc\x1c\x4f\x86\x7a\x4d\x1b\xf6\x6e\x66\x1a\x53\x4b\x16\x25\xae\x96\xaa\xa4\xb7\x54\x66\x14\x61\x28\x97\x9e\xf4\xc4\x80\x96\x84\xc0\x11\x0d\x1a\xad\xc4\x0a\x19\xea\xc3\x6d\x8d\xae\x1e\xe9\x96\x3c\x07\x59\xd2\x03\x59\x94\x1f\x3d\x01\x90\x85\xee\xae\xc9\x9a\x91\x53\xb8\xac\xe1\xd6\xa6\xb6\x6a\xe2\x4b\x30\xe4\x31\xae\x8f\x49\x13\x46\x4d\x38\x57\x92\xde\x92\xbe\x25\xa2\x86\x88\xb8\x67\xa3\xbe\x59\x31\xd4\x3c\x3a\x7a\x61\x52\x7c\x97\xec\x4b\x83\x45\x99\xa4\x26\xcb\x34\x49\x35\xc1\x64\x9b\xb5\x78\x7a\x7e\x82\xa1\xab\xb0\x07\x31\x35\x00\xd1\x04\x3e\x50\x56\x7a\x49\xe7\x89\x3c\x52\xa8\x8f\x4b\x51\x53\x7f\x06\x8a\xc3\xd0\x51\xe5\x1e\x8d\xb2\x05\x4b\x29\x1a\x60\x2d\xf9\xeb\xcf\x5a\x16\x77\xdc\xba\x80\x4c\x89\x55\x5c\x43\x83\xda\x60\xfa\xce\x08\xb4\xd5\xb9\x71\x7f\x52\x63\x57\x4d\x99\x45\x59\x99\xc5\x2a\xaa\xaa\x2e\x7d\x58\x8e\x74\x9b\x2c\x0a\xd8\x51\x55\x5b\x27\x41\xf7\xc1\x57\x34\x74\xcc\x6a\xce\xb2\x61\x4d\x82\x37\xa6\x0e\x57\x7f\xe2\xf8\xab\x57\xc8\x0c\x74\x95\x17\x69\x24\xf0\x3f\x15\x5c\xba\x5d\x5e\x78\x48\x8b\xed\x41\x3b\x34\x3d\x18\x0c\xc5\x63\xd2\x1f\x1e\x1c\x08\x8b\xb0\x6c\x07\x3a\x62\x02\x09\x61\xdb\x10\x32\xac\x5a\xd3\x8d\xc8\x32\x6f\x5c\x89\xdb\x94\x4f\xad\x3d\xc3\x7f\x7b\x44\x4a\x2c\xf4\x06\x08\x37\xb9\x0c\x02\x2f\xbf\x04\x18\xd6\xb5\xe4\x4a\x78\xb1\x75\xa5\x61\xb8\x6e\x22\xf4\x23\x56\xca\x3e\x55\xe3\x55\x1a\x74\xfb\xa6\x60\x3d\x7f\x55\x69\xbd\x44\x2d\xb5\xf0\x56\x8c\xf4\x5f\x6e\xcb\x14\xd5\x85\xba\xeb\x5d\xdb\x8f\x92\xf7\x9d\x4c\x25\x8a\x2e\x29\x57\x9d\x3b\xa6\xe6\x62\xad\x3a\xa6\x78\x47\xc8\x8e\xeb\x41\xf0\x9f\xe8\x70\x51\x14\x60\xcd\x1e\x71\xdd\x80\x65\xa9\x91\xa5\x40\x7b\x67\x9e\xdb\x99\x2f\xcd\x6b\xdb\x33\xcf\x8d\x24\x25\x76\x67\xb1\x5c\x9c\xa2\x39\x51\x61\x58\x75\x5e\xd4\xbb\xe9\x50\x4b\x0c\xaf\x24\x4d\x6e\x8a\x42\x73\x9b\xc0\x3c\x9b\x45\x96\xe7\x81\xb7\x9e\x98\x77\x1c\x86\x15\xee\xd0\x30\xa4\x8f\x48\x7d\xd4\x86\x55\x69\x4a\xe4\xf9\x14\x1b\xd5\xf1\x33\xde\x94\x32\x93\x5b\x44\xca\x2d\x1f\x0a\x6c\x84\xf6\x51\x2f\x2b\x5d\xd5\x9a\xd1\x92\xbe\xf9\xe2\x4d\x33\x28\xc1\x05\xf8\x97\x2d\x70\x7f\x1b\xd5\xa8\x8d\xd9\x64\xd9\x1e\xb8\x49\x1c\x55\xdd\x31\x65\xe3\x9a\xb5\xcb\xe5\x40\x25\xf5\x21\x25\xe5\x55\x56\xf2\xae\x8f\xce\xeb\x8c\x55\x85\x76\x71\xc6\x35\x8b\x97\x72\x36\x28\xea\x88\xa9\xcd\x47\x31\x64\x05\xcc\x18\x67\xd9\xbc\x41\xcd\x4a\xd2\xbd\x1f\xad\xa8\x45\xab\x4a\x4b\xde\x42\x2b\x6a\xd0\x4a\xd6\xf5\x13\x3d\xe7\x75\xba\x5a\x42\x5c\xd6\xe6\x15\x64\xa9\xc0\x60\x38\x41\x52\x77\xb1\x00\xb3\x88\xfe\xa7\xba\x68\x71\xd0\x74\xcf\xb1\x73\xb9\x97\x55\xf0\x9a\x59\xc5\x6b\xaa\xba\x97\x9e\xa5\x8b\xa2\xd8\xa1\x0b\x6c\xa1\xf9\xea\xc2\x51\x82\x44\x29\xba\x5c\xa9\x00\x17\xe0\x19\xae\xb1\x32\xc6\xdb\xa6\xe9\x3a\xa8\x4a\xd6\xbc\xf1\xca\x66\xac\x95\x22\xa8\xf4\xe1\x98\x82\xd3\x7f\x63\x59\x40\x69\xce\xad\x61\x8a\x9f\xfa\x3a\xf7\xd0\xb0\x55\x05\x52\xe5\xce\xc3\xd0\x9a\x16\xaf\xbd\x1c\x75\xb6\xe6\x8a\x2d\x29\xa1\x95\x25\xb1\x94\x03\x03\x69\x2c\x68\xdb\x79\x3b\xa4\x23\x03\xac\x55\xcc\x02\x63\xe0\xad\x06\x34\xad\x0d\xbc\x4e\xd4\x9c\x10\xfd\x37\x0c\x95\xd9\x71\x40\x3b\xc6\xa8\x6a\xab\x26\x0c\xab\x67\x9c\xe7\x2d\x79\xed\x86\x4d\x18\xda\xdf\xf6\x3c\x19\x5d\xcc\xc2\x50\xff\x6d\xff\xae\x3b\x86\xf3\xbc\x36\xc4\x6a\x12\x02\x8c\x70\x4d\x35\x34\x4a\x6e\x69\x87\xed\x76\xb5\x68\xbb\x65\x6d\xd5\xda\x18\x24\xa4\xcb\x1a\x1b\x56\xae\xca\xbf\x75\xbd\xda\x60\x77\x8f\xfc\x06\x0d\xda\x14\x30\x80\xcd\x75\x5d\xca\xab\x0a\x15\x05\x1e\x0f\x26\x1a\xb0\x29\xd9\x14\x5a\x4c\x34\x85\x5e\x66\x27\x7c\xbd\xa4\x32\xb9\x5a\x50\x58\xd7\x0c\xad\xb5\x9d\x9f\xa7\x34\x4b\x25\x5b\x29\x21\x21\x23\x9b\x59\xbc\x0e\xc3\x6e\x6a\x29\xfc\x66\x10\x3f\x2c\x60\x80\x47\xbb\xb2\xf2\xda\xca\x66\x0a\xd7\x35\x36\x1a\xd1\xb2\xb9\x22\x4e\x0b\x98\x91\x26\xa1\x74\x8a\x4e\x95\x2b\xee\xa2\x41\xa8\x30\xa4\x82\xcf\xd8\xf5\xda\xa7\x3d\xd4\x69\x77\x92\x29\xf7\xfe\x57\xfd\x6e\xf5\x05\x5a\x14\xb0\xd0\x63\xf4\x62\x3f\xb4\xe9\x52\x9d\x85\xd7\xfc\x9d\xc0\xf8\x1f\x70\x30\xd0\x4b\x8b\x04\x41\x94\xad\x16\x4c\xc1\x9c\xb4\xc1\xbf\x6b\x61\x84\x82\x2f\x01\x6e\x05\x23\xea\x6b\x55\x65\xb4\xdb\x64\x60\xbb\x13\x10\xb2\x42\x0a\x8f\xa6\xde\x0e\x10\x04\x38\x76\x95\x2a\x5c\xb8\x47\xb8\x25\x5b\x62\xa2\x66\x69\x9a\xd4\x58\x32\x51\x33\x23\x1d\x27\xfc\x2f\x5a\x5c\x58\x2c\x9c\xfd\xad\x23\x78\x27\xe8\xa9\x4a\x1b\x2b\xe0\xbe\x0d\x04\x73\x74\x8b\x94\xd1\xaa\x5a\xbe\xee\xa2\xf8\x48\xf7\xa0\x4b\x88\x8a\xdb\xf4\xf4\x02\xae\xc9\x0e\xd3\xeb\x2e\x75\x03\xa5\xf5\xc4\x90\x53\x30\x94\x91\x86\xe1\x6e\x2d\x48\x6a\x86\xe3\xa6\x4d\x0b\xf5\x4b\xb3\xcf\xe2\x26\xaa\xac\x88\xb7\x1b\x6b\x4c\x69\x83\x03\xa7\xb3\x3f\x29\xdc\xfd\xaf\x35\xbf\x6f\x0a\x04\xbf\xa5\x52\x39\xeb\x5d\x47\x89\xce\x4a\xb2\x25\x53\xec\x96\x76\x4c\xbf\x34\xed\xbe\xd2\xa8\xb9\xb5\xb5\x7a\xd7\xba\x0a\x3a\x57\x1e\x43\x28\x2e\xe0\x84\x88\x68\x2a\xd2\xb5\x96\x11\xe1\x92\x2c\xd1\x09\x0e\xc3\x25\x3a\x71\xc6\x83\x93\x85\x91\x1e\x31\x9c\xb6\xcd\xf4\xe5\x68\x2b\x1f\x52\xd8\x6c\x1d\x9f\x93\x6e\xa2\x95\xa7\x7f\x89\xd0\x9c\xa2\x60\xca\x6e\x03\x0c\x41\x12\x7c\x8d\xe0\x44\x89\xa6\x37\x9f\xfe\x94\xaa\x7c\xd6\x54\x25\x19\x7d\xda\x15\x9a\x14\xb9\xd7\xdc\x8a\x92\x6b\x44\xb5\x18\x0d\xe7\xb8\x22\x9d\x9d\x4f\x16\x34\x25\xf1\x2c\xd8\x0c\xdd\x99\x34\x3f\x55\x33\xd4\xcd\xa2\x59\x05\x46\x50\x63\x3a\xc1\x45\x01\xc7\xdb\xab\xcb\x62\xea\xf6\xc4\x5a\x54\x40\x0a\xf7\x82\x16\xeb\x6c\x6d\x7d\x5d\xb4\x83\x0a\xde\xda\xa1\x5d\xec\x30\x69\x36\x43\xc7\xcd\xa1\x1d\x6b\x99\xa5\x31\xbe\x0b\x97\xb9\x39\xc2\xe0\x9a\xaa\x80\xf1\x8e\xcc\xf3\x20\x73\x8f\xbb\x44\xe1\x28\x4d\x69\x96\x09\x69\x3b\x9d\xad\x57\x9a\x4d\xd3\x69\xd9\xe9\xc0\x22\xa4\x2e\xac\xf9\xbb\x56\x92\x9d\xc9\x01\x83\x2a\x0a\x38\x22\xc9\x68\x8f\x60\xf1\x36\x9a\x99\x94\x19\x1a\x80\xc4\xb8\xd8\x2b\x80\x98\x4a\x41\x15\xf0\x66\x0b\xbf\xf5\x18\x8f\x90\x80\xda\xf4\x49\xbc\x11\x63\x35\x21\xd4\x0b\x44\xb4\x80\x57\x44\x8c\x83\xcb\xcb\x54\x48\x7a\xf0\x29\xbb\xcc\xe6\x89\xa4\xd3\xcb\xcb\x60\x92\xe7\x6f\x50\xdb\x07\xd8\x14\x18\x6e\x88\xe7\xc2\xe5\x5a\x1e\x56\x6b\xbd\xf4\xb4\x78\x15\x31\x9e\xad\x68\xaa\xce\xc5\x5a\xa6\x5a\xbe\xdd\x4a\x69\x5b\x47\x37\x9e\x18\x14\x56\xb9\x38\x83\xd7\xf0\x00\x9e\x92\xad\xa2\xf0\x92\x88\xe8\x57\x9a\xdc\xbc\x4e\x56\xf0\xac\xcd\xac\xf9\x32\x0c\x0f\x79\x62\x28\x43\x2a\xa6\xf4\x30\x52\x34\x53\xe8\x29\x7a\x89\x31\xbc\xdb\xf6\xda\xa8\xc4\xac\x76\x3a\xf1\x6a\xac\x26\x79\x8e\xf4\x8f\x13\xd0\xba\x84\xd0\x11\x8d\x37\x05\x2e\x30\x0a\x6e\xa9\xcc\x98\xe0\x59\x00\xe3\x09\xb6\x06\xab\x8d\x4b\x8b\x83\xef\xa3\x1f\xa3\x1f\x02\x58\x8a\x29\x8d\x03\x2b\x2a\x05\x90\x8a\xd5\xbd\x64\xd7\x73\x15\x07\xff\xef\xff\xd3\x79\xd8\x7f\xd8\xef\x3c\xa5\x9c\x65\x9d\xb7\xeb\x6c\x7e\x93\x48\x7a\xdb\x41\x5f\x16\x82\x49\x91\xde\x44\x72\x8d\x03\xdd\x10\x86\x27\xa4\x0f\xcf\x8d\x64\x16\xc9\x84\x4f\xc5\x12\x61\xf8\xd2\xc6\x5b\xac\xbf\x08\x0a\x7a\x6e\x81\x95\x86\x46\x35\x0a\x82\x58\x2f\x37\x7c\x19\xf4\x50\xaf\xf7\xa4\xf7\x1c\x97\xd3\x88\xbe\xff\x11\x17\xf0\x07\x79\x87\x82\x1b\x7a\x9f\x05\x18\xde\xb7\x4d\xd2\x1f\x16\x1c\xfa\x87\x7c\xb1\x0c\xee\x05\xd9\x14\xf0\xa1\x9a\x14\xcd\x03\x9e\x59\x49\xe5\x67\x63\xc7\xfc\x00\xbf\x90\x9f\x35\x85\x82\x9f\xc8\xcf\x9a\x3c\xc3\xaf\xe4\xe7\x28\xa3\x6a\x78\xd6\x0e\xf3\x5f\x2d\x26\xfc\x6c\x70\x18\x68\x01\xaf\xdb\xba\xf2\x4b\x99\x0b\xe7\xb9\xa6\xb7\x0f\xda\x72\xfd\x54\xe5\x2a\xac\xa1\x40\x77\xec\x37\xf2\x1e\x05\xc6\x2c\x10\xe0\xe1\x8b\xf1\x6f\x13\xd2\xed\xc3\x9e\xde\x1c\x21\x05\xbf\x7d\xad\x23\x9a\x2c\xfe\x86\x47\x6a\xfc\xdb\x24\xde\xdb\x0f\x9b\xa9\x30\x7b\x76\xbf\x83\x52\x64\x93\x51\x15\x9f\x81\xa6\xf0\xaf\x61\x9e\x64\xf1\x03\xa0\x7c\x26\x64\x4a\xe3\x96\xe2\x0f\xb4\x54\xf3\x5a\x73\x96\x33\xa4\xf4\x52\x2c\x74\x49\x45\xe5\x33\x21\xdb\xf2\xd7\x77\xcc\x8d\x64\x30\xb4\x74\x98\xe2\x3c\x47\x92\xbc\x46\x14\x63\xa3\x35\x75\x5b\xc5\x9e\x97\x5c\xeb\x5a\x89\x62\x57\x0b\xda\x91\x34\xa5\xec\x96\x4a\xd0\x82\x4f\x2f\xe8\x48\xfa\xc7\x9a\xc9\x1a\xbd\xeb\xc8\xa2\x28\x80\xaa\x76\x8f\x28\x65\xb8\x13\x48\xfd\xe0\x46\x08\x9c\x38\xac\x73\xf2\x80\x95\x0a\x91\x97\xe2\xf0\x70\xcf\xb2\x04\x06\xa5\x27\x4d\xd7\x70\xd7\x6e\x12\xad\x79\x96\xcc\xb4\x84\x5d\xa6\x54\x22\x2e\x64\x55\x2a\x17\x17\x89\xbc\xa6\xea\x39\x55\xc3\x16\xb2\x61\x2c\x23\x99\xed\x40\x49\xc9\x68\x9e\xdf\x21\x06\x01\x4f\x96\x34\xc0\x79\x7e\x54\xbe\x68\x8c\x90\x88\xe1\x28\xb3\x14\x8d\x47\x9f\x04\xe3\x65\x0d\x65\xb5\x9a\x56\x04\x66\x6f\xa2\x4b\x88\x18\xa1\x74\xd4\xcd\xc2\x50\xd3\xef\x30\x44\x6b\xd2\xed\xe3\xd8\x6d\xe0\xe9\x34\x58\x8f\x0c\x69\x67\xf1\x91\x1d\x2f\xc6\x71\x99\xf4\x06\xe9\x84\x02\xa3\x92\x08\x57\x4e\x65\x81\x5f\xc8\x01\xec\x8a\x1b\x6d\x32\xa5\x51\xdf\xa8\x51\x24\xfc\x18\xf2\xfc\xa9\x7d\x2f\xb0\x21\x39\x52\x11\x01\x5c\xb5\x11\x99\x96\x0a\x47\xca\xed\x7a\x15\x20\x54\xfb\x52\x4a\xe4\xb5\x91\xb1\xbc\x3d\xe0\xd1\xc3\x11\x57\x48\xaa\xb1\x9a\x68\xd5\x4f\x21\xcd\xa6\x70\x6c\x12\xc2\xd0\xfc\x8c\xe9\x24\xcf\x85\x79\x17\xf6\xb5\x00\xa6\x2c\x1d\x4c\x29\x5b\x40\xe2\x5e\x66\x0b\x21\x24\xa4\x6d\xbd\xed\xb8\x5d\x45\xd2\x53\x78\xd4\x8f\x91\x7a\xdc\x1f\x25\x2a\x66\x0a\x6b\x6e\x03\x6b\x57\xc3\x92\x71\xc8\x5a\xcb\xeb\x02\x6b\x85\x8c\x12\x01\x7f\xef\xf7\xff\x36\xf8\xfb\xdf\x1f\xfe\xf0\xd7\xbf\xfd\xb5\xff\xf7\xbf\x0f\x70\xdc\x2f\x60\xe6\xeb\x48\x3e\xc3\xa2\x56\xdf\xaa\xb5\xbe\xe6\x7e\x90\x33\x5c\x00\x23\xf7\xc8\x78\xcb\x65\x0a\x31\xbf\x03\x0a\xe9\x16\x28\xad\xd9\xc4\x74\xa5\x5c\x7e\x8f\xfa\xa3\x99\x42\xb2\x47\xa1\x8f\xe3\x85\x42\x52\xf3\x7e\xe3\xa6\x62\xcc\x9a\x61\x28\xbb\x44\xba\x6d\x92\xe4\x71\x6a\xb6\x4a\x91\x20\x6c\x9c\xf6\x7a\x13\xdc\x25\x02\x97\xba\xb1\x31\xc3\x96\x19\xd3\x5e\xcf\xe4\x55\x79\x9e\x76\x18\xef\x30\x1c\x86\x6c\x9c\x4e\x8c\x83\x85\x07\x4e\x9e\xa7\x79\xde\xf7\xaa\xa8\x0a\xc3\x83\x41\x51\xc0\x54\x91\x0d\xe3\xe9\x62\x3d\xa5\x59\xbc\x32\x9b\xc7\xc0\xf8\x94\x7e\x3e\x9d\x99\xd7\x01\x2e\x22\xf7\x0e\xf3\x6d\x7c\x71\xca\x8c\x95\x50\x05\xe9\x03\xf3\xfb\x43\x66\x6f\x88\xe3\xee\x1d\x7a\x01\x12\x87\xe1\x1d\xe2\xe6\x97\x95\x9b\x45\x8d\xcd\xa0\xc7\x62\x88\x4d\x16\x42\xc7\x42\x0f\x36\x0c\xd1\xff\x3d\x55\x88\x81\xc4\x79\x5e\x16\xaa\x9c\x12\x0b\xb8\x55\x64\x1c\xd4\xf6\x77\x02\x08\x9a\x2a\x45\x00\x01\xcb\x6a\xbb\x95\x01\x04\x6d\xba\x6a\xa0\xd7\xe4\x2b\x91\x26\x0b\xea\x57\x66\x6d\x91\x06\x4e\x99\x0a\x26\x70\xaf\xc8\xad\xd9\x87\x4d\x13\x85\x02\xdb\x6f\x5b\xa7\x6d\x21\xc0\xb0\x54\x5a\xd6\x6d\x95\xf5\xdf\x24\x4b\x9a\xe5\x79\x9b\x0a\xaa\x90\x82\x7b\xcd\xf7\xe0\x7a\x7f\x79\x2b\x2e\x64\x05\x5c\x29\x22\x14\x0a\xce\xe8\x6c\xa1\x25\x70\x08\xc4\x1d\xff\xd9\x88\x02\xcd\xda\x2d\x55\x5f\xaa\xc8\x4a\xd9\x18\x24\xb9\x56\xd1\xac\x44\xc6\x11\xf5\x63\x91\xfa\x73\x4c\x0b\xb8\xdb\x9e\xdf\x72\xa7\x8f\x5c\x29\x8d\xf3\x9c\xbc\x8d\x66\x20\xc8\xe7\x68\x06\x8c\xf4\x87\xec\x91\xf4\xbb\x79\xac\xd7\x2b\x5d\x2a\xc7\x6c\x32\xd4\x8c\x34\x31\x86\x22\x05\x09\x08\x44\x21\xc1\x7a\x88\x27\x8a\x1c\xfe\x5b\xfe\xb1\x22\x89\x1f\xa3\x43\xb8\x6c\x45\x2c\x72\xae\xc6\xa7\x7a\x01\x4d\xca\x4e\x13\xf2\x59\xe5\xb9\xec\x92\x4f\x4a\xb3\x81\x5d\xf2\x46\x47\x0c\x51\x1c\x77\xbb\x5a\x5f\x3c\x55\xe4\x52\x45\xd6\x92\xcb\xbe\xb4\x4a\xb3\xa5\x76\x13\x49\xba\x5a\x24\x29\x45\x27\x0a\x82\x28\xd0\x12\xd7\x2b\x71\x47\xe5\x71\x92\x51\x84\x0b\x38\x37\x75\x4d\x13\x95\x68\x39\xea\x93\x79\x7b\x73\x74\xf1\xf2\xfd\x09\x09\xde\x04\xf0\xd9\x24\xbc\x3d\x7d\xf5\xdb\xb3\x97\xaf\x5e\x91\xe0\x6d\x00\xc7\x3a\x09\x2e\x94\x81\xd6\xdb\x3d\x4b\xc7\x7a\xa4\xc1\x5a\x6b\xdd\x86\xeb\x41\x46\x54\x64\x65\x50\x98\x11\x15\x69\xe9\xc7\x98\x5a\x49\x36\x12\xf1\x6c\x24\xc6\x6b\x23\xfb\xaf\xb5\x74\x11\x23\xfb\xba\x29\x70\x6d\x23\x5c\xcf\x9a\xd9\x49\xb5\x0a\x64\x42\xe8\x98\x4f\x80\x11\x55\x67\xad\x23\x94\x92\x0b\x65\x36\xd4\x70\x18\xa6\x6e\xa3\x59\xea\x9c\xdd\x63\x85\xb2\x11\x8f\xd7\x3d\x34\x1b\x05\x51\x10\x07\xff\x16\xe0\x1e\xb7\x4e\x27\x29\x9d\xe2\x30\x2c\x45\x6c\xeb\xda\xeb\x80\x9f\x54\x4c\xba\x72\xf6\xbc\x53\x28\xd1\xec\x10\xa9\x28\x9b\x27\xcb\x3c\x67\x9a\x0a\xe8\x47\x1c\x86\x47\x28\x81\x40\x3f\x07\x46\xff\xa3\xa6\x43\x90\x18\x29\x10\x8e\x14\xe9\x76\xbf\xb6\x18\xf6\x68\xed\x5d\x2f\xb4\x58\x09\xdb\x32\xc9\x37\x8a\x1c\xa9\x30\xec\xda\x44\xd3\x7e\x18\x06\x99\x79\xdb\xf6\xe5\xae\xbc\xb4\x5e\x29\x72\x24\x65\x72\x1f\xb1\xcc\xfc\xb6\x2d\xe0\xc0\x7c\x71\x26\xad\x02\x6e\x5a\x59\x89\x33\x6e\x39\x63\xd3\x99\xf2\xba\xb2\x16\xe2\xf7\x53\x85\x5b\x5d\xe1\x6b\x45\x92\x51\x9b\x6a\xcd\x68\xb6\x65\x2e\xd0\x0b\xbd\xda\x9e\x07\x4e\xce\xcc\xb2\x15\x84\xbb\x65\x6a\x56\xad\x78\xcc\x86\xd8\x6a\xb0\x92\xf0\x31\xeb\xf5\x26\x40\xc7\x72\x52\x57\xe6\x1f\x58\x2a\xe3\xad\x2d\x01\x94\x8f\xce\x7a\x12\x60\x78\xaa\xb4\x78\xfe\xf2\xe4\xf2\xed\xd9\xe9\xc5\x69\x80\xe1\xa5\xaa\xbb\x17\x14\xf0\xac\x55\x26\x79\x64\x8d\x1e\x8f\x8d\x94\xfa\xe8\xe3\xa1\x7f\x2d\xe0\x5d\xa3\xbc\xd6\x90\x7f\x27\xbe\xd9\x68\x2a\x96\x09\xe3\x61\xa8\x55\x95\xa3\x54\xab\x8d\x1f\xbc\x19\x72\xae\x96\x8b\x19\x5b\xd0\xa0\x6e\x26\x30\x3b\xd9\x40\x87\xef\x14\xf9\xbd\x61\x89\x54\xd1\x9d\x64\x8a\xa2\x67\x0a\x59\x81\x2f\x4a\x17\x42\x2f\x72\xbf\xe7\x1c\xad\x12\x49\xb9\xfa\xd5\xd8\xc2\x23\xdb\x48\x09\x1a\xbb\xc1\x4f\x0b\xf4\x3b\x8e\x11\xa2\xe4\x14\x05\x6c\x26\x8d\xd8\x89\xa3\x4c\xdd\x2f\x4a\x97\x1b\x12\x70\xc1\x69\x00\x0f\x54\x94\xac\x56\x94\x4f\x8f\xe7\x6c\x31\xd5\xf3\x41\xa3\x4c\xa6\x5e\xb4\x0e\x3e\x25\xb7\x89\x85\x41\x1c\x60\x40\x8a\x18\xc2\xac\xaa\x1e\x78\x10\xe0\x48\xac\x28\x47\xba\xc7\xd5\x08\x4a\xf8\x3c\x73\x28\xd5\x18\x12\xa8\xe8\x59\x0d\x23\x34\x03\x73\xf4\x5a\x1e\x1c\x0c\xb1\x93\x68\xdf\xd5\xfc\x71\xc6\xb7\x6a\x2c\x27\x25\xc5\x7d\xa7\x10\x2e\x86\x2f\xc6\x4f\xd5\xc4\xbb\x07\x3c\x51\x4d\x9f\x9d\x3a\xfa\x96\x94\xcd\x97\xf7\xf6\xd2\x11\x7a\x59\x77\xfa\x31\x76\x1f\x69\xd4\xce\x97\x0a\x1a\x9f\x0c\x7c\xa5\x69\x50\xe1\x58\x12\xdd\x03\x28\x95\x63\x3a\x92\xf1\x6b\x27\x39\xc1\x73\x65\xf8\x1b\x7c\x51\x0d\x5b\xf7\x1f\x8a\xfc\xc9\x06\x47\x18\xee\xe7\xd1\xa3\xfd\x9f\x90\xdb\x1e\x89\xc7\x13\x78\x6f\x58\x75\x9b\xea\xad\xc2\xb0\xf4\xa9\xb1\x33\x38\x09\x08\xf9\xa2\xbc\xdd\x64\xd4\xbe\x0b\xd2\x79\x6e\x6c\xdf\x5b\xdb\x20\x9d\x3f\x94\x33\xce\xe3\xa2\xd0\x7a\xe5\x73\x85\xee\x0d\x11\x29\xe0\x85\x22\xef\x50\x70\x77\x93\x05\x18\x3e\x28\x22\x22\x4b\xbd\xe0\x67\x45\xde\xa8\xd1\x07\x15\x7f\x50\x61\xf8\x41\x45\x6e\x37\xfd\xdc\x28\xa2\x79\xfe\x05\x7e\x69\x25\x51\x77\xe8\x85\x32\x4a\x3a\xd2\x84\xf2\x0e\x7d\xd0\x6f\xa3\x17\x5a\xba\x27\x1f\xf4\xdf\xd8\x3e\xff\xac\x15\x40\x4b\x27\x83\x9e\x16\x2c\x4c\x72\x01\x3f\x19\x88\xfc\xa2\x0a\xf8\x55\x19\x39\xe1\x37\xfb\xf3\xbb\x22\xbf\x28\x14\xd4\x4f\xb0\x60\x50\xbb\xc7\x49\x34\x75\xbe\x43\x8a\xc8\x91\x8a\xeb\xe7\x70\x7e\x57\x38\x0c\x7f\xd3\xe4\xf0\x77\x05\x9b\xe6\x26\x48\xbf\xdc\xf0\xc0\x05\x50\xba\x6d\xd1\x6c\xb1\x79\xed\x6a\xd1\x6d\x06\xce\x52\xf4\x6f\x58\x38\xe5\x6e\xa7\xd9\x0c\x51\xaa\x91\xb9\xc2\xd0\xca\xd6\x9f\xdd\x31\x67\xd7\x4b\x93\x8c\x76\xfa\xf1\xb6\x5e\x51\xf3\xf7\xb2\xe7\x0e\x70\x31\x34\x59\x07\x3b\x59\xe5\x4e\x5e\x90\x3e\xf7\xc3\xdd\xdc\x35\x3f\x99\x2a\x3f\x70\x5f\xe2\xfb\xb6\x12\x20\x5a\xcb\x80\xc0\xa5\x63\x64\x5b\xcf\x93\xd5\x6a\x71\xaf\xe5\x3b\xaf\x35\x6a\xdc\xe4\xd4\x4c\x7a\xb6\xa2\x29\xa3\x1a\x41\x05\x6d\x13\x80\x3c\x70\x5f\x69\xdc\x6f\x48\x74\xdd\xfa\x86\x44\x4d\xcc\xc7\x46\xfc\xb3\x5c\x39\x0c\xbb\xaf\x14\x92\x35\xd1\x67\xb4\x44\x5a\xcb\xb0\xfb\x44\x04\x49\x22\xc7\x9c\x1a\x6d\x42\xfa\x7d\xdb\xb8\x7c\x02\x4e\xef\x6a\x9e\xe8\x23\x53\x67\x2c\x31\xb2\x84\xa6\x1f\x6b\x1a\xc3\x28\x19\x4f\x8c\xfe\x01\x49\xdb\xb1\xb1\x01\x21\x9a\x8d\x3e\xd4\x3f\x9c\x7c\xaf\x7f\x04\xf9\xab\xfe\x61\xe4\x47\xfd\x93\x90\x1f\x8c\x03\x07\xdb\x39\x18\x95\xc2\x1a\x32\x98\x55\x62\xf6\x02\x56\x30\x25\x37\x0a\xa5\x18\x6e\xc9\x1c\x4d\x31\xdc\x13\x49\x91\xce\xf6\x3d\x86\xa5\xd6\x38\x6f\x4b\x8d\xf3\x9a\xf4\xe1\x8a\xcc\xf2\x5c\x50\xb8\x23\x74\x74\x85\x52\x58\xe2\x58\x9a\x87\x3e\x76\x5a\xfe\x70\xf9\xf8\x7a\x78\xed\xf4\xc3\x24\xcf\xaf\xb5\x60\x78\xab\x21\xb2\x22\xf7\x68\x41\x6e\xc7\xd7\x13\xb8\x86\x29\x06\x85\xb1\x71\x0b\xbe\x1b\x5f\x4f\xc8\xaa\x3c\xae\xb4\xc2\x0e\x8d\x95\x43\x63\x8f\x3b\xdd\xbe\xc5\xa5\x1f\x3c\x2e\x2d\xec\xfb\x8f\xfe\xfd\xda\x63\x27\x73\x2e\xc6\x77\xb0\xa8\x1c\x88\x4a\x65\x76\x50\x2a\x75\xa3\x83\x41\xcc\xf3\x5c\x8c\x44\x7c\x57\x14\x90\x52\xb2\x71\x6e\x71\x71\x42\x51\x1f\xc3\x32\x59\xe9\xa7\x01\x86\x19\x5b\x28\x2a\xf5\xcb\x43\x0c\x99\x58\x52\xfd\xf8\x3d\x06\x7a\x4b\xe5\xbd\x7e\xfe\xab\xce\xc3\xa7\xfa\xf1\x07\xfb\xf8\x52\x6b\xb1\xfa\xfd\x47\x5c\xc0\x9a\x92\x94\x7a\xa7\x3b\xc8\xa8\x96\x64\xe6\x6c\x3a\xa5\x3c\xc0\x30\xa3\x8e\x62\xbd\xf5\x7b\x57\x01\x86\x85\x31\x91\x65\x54\xc1\xca\x1b\xcb\xac\x5d\xcf\x53\xc3\x00\xc3\xb4\xe5\x18\xe1\x9c\x56\x94\xf9\x96\x1a\xa9\xea\xa7\xf3\xd3\x37\x01\x38\x13\x14\x9b\xdd\x07\x18\xee\xa9\x51\x13\x96\xd4\x90\xcc\x6b\x4a\xde\x6b\xc6\x76\x45\x49\x16\xcd\xe0\x8e\x6a\x42\x6f\x65\x55\xbd\x96\x4e\xcc\xbb\x58\x1d\x54\x49\x97\x36\x8b\xa9\xf1\x40\x09\xf7\xe5\x40\xd2\x6b\x96\x29\xa9\x5b\x38\xad\x55\x62\x72\xd8\xbc\xb5\x1c\xe7\xb4\xe2\x27\x9f\x74\xaf\x7f\x71\xfb\xb0\x9f\x29\xe9\x7e\xa2\x79\xde\xfd\x54\x3b\x5c\xb8\xf5\x1a\x69\x10\x1b\x09\x07\x8e\x29\x49\xc2\x70\xdf\x7e\xda\x13\x85\x96\x14\x6d\x8a\xaf\xed\x9c\x2d\xad\xc1\xcb\x66\xb1\x14\xfe\x6f\x66\x2f\xad\xc0\x76\x47\x6d\x67\x5f\xc6\xfa\x9e\xdc\x53\x34\xa5\x40\xf1\x90\x87\xa1\x93\x6d\xa6\x74\x4c\x27\xb0\xa4\x2e\x23\xf0\x30\x54\x5d\x42\xa6\x34\x0c\x97\x36\xb7\xa6\x8a\xf1\x92\xc2\x45\x2b\x85\x22\x77\x54\x33\xbd\x27\x0a\xcd\x6b\xa3\x2d\xb9\xc2\x82\x22\x09\xee\x64\x98\x43\x03\x50\xc9\x75\xac\x60\xea\x36\xf7\x98\xe0\x9a\x3d\x41\x92\xe7\x48\x46\xb5\x54\x42\x31\xc8\x02\xde\x52\xcd\xad\x5b\xe4\xe4\x6d\xdd\x44\x15\x6d\xe2\x46\xb9\x6b\x5e\x3b\xeb\x39\xa7\x05\x1c\xb5\x30\x58\x62\xc7\x7d\x44\xd1\x09\xb5\xd0\x30\x0a\x83\x85\x9d\xdb\x83\xf3\x03\x33\x5b\x71\x77\xe8\x4e\x83\x67\x84\x64\xcd\x56\x3b\x32\x1b\x8c\x19\xc5\x61\xa8\xc6\x19\x9d\x8c\xf9\xc4\x6c\x9f\xd9\x47\xd2\x1d\x68\xc9\xee\x89\x96\xd1\xea\x3e\x0c\x33\xd4\x87\xee\xc0\x1c\x5a\xf2\xe5\xf3\xdc\x4c\x4b\x66\xb7\xd1\x36\x5a\x4b\xab\x6a\xe9\x63\x38\xd6\x5f\x39\x48\x8c\xe3\xa5\x7f\x2c\xe0\xcd\xf6\x34\x95\x63\x90\xd6\x30\x67\xb4\x1e\x89\xbd\x75\xe3\x35\xad\x1b\x8e\xd6\x14\x71\x68\x1c\x54\x4b\x34\x17\x71\x04\x4a\x8b\x95\x79\x7e\xe4\x90\xc5\xec\x93\x62\xe3\x90\xfe\xaa\x8d\xf4\x5f\x23\x65\xb4\x56\x49\xae\x68\xc3\x15\xd7\xdb\xd8\xcc\xbb\x03\xba\x01\xa5\xf1\xd2\xbd\x33\xd0\x37\xbe\xb9\x5d\x24\xf3\x5c\x0b\x3d\xb6\x9c\x79\x36\xd9\xf2\xdc\x25\x5a\x30\xcf\x59\x66\x00\x43\x27\x9a\xfd\x69\x25\xb3\x1d\x57\x8d\x1d\xae\x9a\x4a\x36\x43\xd2\xe0\xba\xaf\x98\x9b\x8a\x4f\xf4\x83\x77\xc3\xba\xa7\x46\x58\xf0\x5d\x16\xcd\xac\xd2\x76\x40\xba\x69\xc9\x73\x24\x6a\x98\x60\x66\x49\x14\x05\x9c\xb5\x82\x87\x5a\x49\x15\x24\x19\x4f\x6a\xf0\xa7\xcd\x53\x68\xa6\x35\x65\x5a\x7b\x61\x7e\xa5\xb5\xf6\x29\x6b\xdb\x2e\xe0\x75\x5b\xe5\x16\x97\x41\xea\x56\xe8\xe8\x84\xc6\xb6\x29\xde\x6c\x4a\x36\x9b\xea\x96\x6d\x51\x33\x0f\x53\xfb\xc2\x6d\x83\x66\xa1\x9b\x46\x79\x31\x44\x47\x2a\xcf\x11\x55\x08\xcd\x69\x5d\x29\x75\xee\xa7\x9d\xc6\x6a\xdb\xdd\x98\xb1\xa4\xa0\x12\x27\xeb\x76\x4a\xec\x9c\xac\xb7\xad\xec\x35\xab\x4a\xf9\x69\xdc\x9f\x8c\x9c\x7c\x5a\x4f\xf3\xcc\x1d\xa8\xd9\xdd\x03\xd9\xf4\xac\xaa\xb0\xce\x79\x6e\x9c\xe8\x81\x42\x1d\xa5\xec\xb3\x9e\x56\x83\x94\xa8\x86\x62\x66\x05\x1f\x3b\x0a\x6c\xd7\xa6\xd6\x37\x4a\x8f\xd1\x30\xfc\x4c\xc3\xf0\xd8\x11\xcf\x1d\x81\x3c\xa3\x2a\x96\x05\x86\x0b\x77\xbc\x13\x7f\xeb\xee\x47\x67\xe5\xb7\x39\x54\x72\xad\xa7\x81\x6a\x9a\x0b\x41\x43\x7d\x09\x5a\x8f\x30\x5e\x50\x64\xe0\x60\x71\x26\x8b\x66\xe4\x15\x85\xb7\xd1\x8c\x1c\x51\xf8\x1c\xcd\xc8\x0d\x05\xad\x28\x1a\xa6\x4a\xce\x28\x5c\xeb\xdf\xd7\x14\x7e\xd2\xbf\xed\xf5\xfd\xa2\x5c\x85\x90\x84\xa1\xe6\x58\x75\xf2\x0f\x41\x8d\x8e\x07\xbb\x30\x68\xe7\x6a\xe5\xf8\x6a\x85\x8b\xc2\x8c\x73\x4a\xf7\x19\xa7\x5f\x51\xd8\xd8\x9d\xb3\xb8\xdb\x2f\x30\xc6\xf0\x56\xa1\x8d\x0b\x9f\xd0\xed\xc3\x9d\x4c\x56\xfa\xd7\x9a\xe6\xe2\xee\x91\x82\x6c\x9e\x2c\xf5\x43\x01\x1b\x17\x94\x60\xae\x19\xd0\x9a\xa2\x33\x85\xce\xe9\xd6\x29\xd0\xee\xee\xe2\x92\xca\x09\x2c\x9a\x65\xf9\x67\xb2\x29\xf0\xf0\x0e\xd9\x25\xf3\xab\xd2\x0f\x9e\x37\x6b\x30\x9a\xf5\x5a\xb8\x55\xab\xbb\x68\xcd\x99\x15\x57\xcc\x54\xa2\x9a\x1d\x2d\x40\x8b\x77\xf1\x6e\xfb\xa5\x46\x36\x34\xde\x2c\x97\xb4\xe6\xce\x72\xa9\xf9\xb9\x23\xf7\x73\x8a\x2a\x4e\x6c\x3e\x10\x09\xa7\x74\x2c\x27\x84\x6a\xca\x71\x43\xef\xb7\xf7\x5d\xd9\x0c\x75\xdf\xd2\x36\x3f\x17\x55\x57\xff\x1c\xef\x75\x1d\x38\xd5\x83\xf6\x1d\x38\xa5\x46\xdb\x5d\x67\xd4\x62\x64\x7d\xa2\xb5\xa0\xd4\xb7\xdf\xd8\x72\xb5\xa0\xdb\xdf\x06\x7a\xba\xeb\xc0\x71\x26\x9b\x16\xe0\xb8\x59\x4c\x0a\xd8\x58\x33\x4b\xdc\xba\x55\x57\x33\x8c\x3c\x31\x1e\x4d\x6f\x28\x32\x0f\xc6\x40\xd2\xf4\xc4\x89\x8f\x28\xec\x18\x10\xdf\x50\xd8\xe7\x94\x14\xdf\xd0\x6f\xee\x6e\x61\x44\xb9\x6d\x83\x49\x7c\xb6\x5d\xbb\xb3\xdc\xc6\xaf\xbf\xb1\xea\xa6\x14\xa9\xd7\x2d\x1a\xd8\x63\x50\x9b\xf6\x8a\x5b\x56\xb3\x29\x75\xa3\xac\xd5\x04\xc3\xad\x26\x78\xf5\xa6\xad\x38\xbe\x3b\xa6\x3c\x6f\xb6\x6e\xc9\xf6\x9c\xa2\xd2\x81\x68\xac\x15\xcd\x49\xd0\x25\xb7\x14\xd9\xcd\xd1\x60\x53\xd8\xd7\x4d\x12\xab\xa2\x9e\x50\x0a\x6a\xae\xfb\xa5\xf4\xbf\xe3\x3b\x54\x1e\x4c\x00\x41\xc6\x6a\x02\x8c\x0c\x86\xdb\xcc\xe2\x31\x1b\x62\x61\xf9\x56\xc5\x18\x58\xaf\x37\xb1\xe7\xa8\x08\x05\x64\xbd\x08\x4a\x9e\xa2\xf5\x6b\x87\xfa\x95\xd2\x6d\xfc\x0c\xb6\x65\x89\xf6\x63\xa0\xe6\x38\x0d\xe1\x35\x41\xc7\x78\x99\x81\xae\xb3\x5a\x9e\x7a\x5a\xc5\x78\xa0\x17\xe0\x2d\x75\xa6\x01\x63\xd1\x13\x1a\xf6\xc3\x3a\x11\x1d\xcf\xe8\x24\xcf\x8f\x9a\x84\x75\xa6\x15\xa6\x9a\x56\xe1\x7d\x19\x41\x51\xc3\x0c\x4a\x55\xeb\x85\xe6\x56\xde\x24\xf9\x80\xc2\x53\x0a\x2f\xad\x76\xc5\x93\x5b\x76\x6d\x0f\xc5\x05\xeb\x8c\xca\xa3\x6b\x63\xae\xce\xf3\x20\x80\x67\x5a\xad\x59\x49\x91\xd2\x2c\x83\x77\x94\x3c\xa3\x61\xf8\x8c\x46\xde\x3b\x08\x9e\x50\xf2\x8e\x86\xe1\x3b\x1a\xdd\xfe\xc7\xf0\x09\x1d\x3d\xa5\x04\x3d\xa0\xe4\x09\xf5\x9e\x0f\x51\x80\xf1\xb8\x3f\xe9\x3d\xa0\xe3\xc1\x24\x7e\x49\x8d\x10\xf7\x80\x92\x97\x34\x5a\x1a\xcb\xdd\xe1\xc9\xf4\x9a\x7e\x3c\x44\x1f\xa7\x3d\x7c\x88\x71\x9e\x9b\x9c\x8f\xc9\xdf\xfe\xaa\xd9\x6c\x23\xe7\xf1\x5c\x8a\x65\x2d\x6f\x18\xa2\xa7\x94\x98\xfc\x56\x46\x78\x4e\xc9\x53\x1a\x86\xbd\xa7\x14\xbe\x6c\xdb\x53\xfe\x68\xdd\xce\x7a\x4e\x1f\x93\x1f\x06\x79\xde\xdd\xc5\x5c\x5a\x89\x46\x88\x36\xce\xb0\x6e\x0a\x3c\xfe\x42\x5b\x4e\x0f\x6e\x66\x42\xc4\x83\xa2\x80\x41\x97\x10\x4d\xf6\xd0\x13\x21\x16\x34\xe1\x38\x9a\x09\x61\xd0\xf8\x3d\xdd\xe3\xf5\xf7\x82\x1a\x7f\x23\xba\x25\x99\x98\xf3\x1e\x05\xfc\xdc\x82\x73\x77\xe8\x45\x9d\xce\xbe\xd0\x0d\x0e\xa9\xc1\xcf\x4d\xe1\x25\xfc\xf1\x44\xaf\x08\x4e\xba\x5d\xcd\x8a\x82\xa3\xe3\xe3\x93\xf3\xf3\xd3\xb3\xf3\x00\x87\x21\x8d\xca\x57\x10\x44\x7f\xef\xe3\x11\x1d\xf7\x27\xf1\x07\x0a\xa9\x49\x18\xe8\x84\xc1\xc4\xdb\x46\xea\x4d\x91\x6e\x57\xee\x6c\x28\xe9\xb5\x14\x86\xdd\xa4\xdc\x78\x77\xb2\xdb\xc6\xae\xc2\xf8\x60\x50\x0c\xf9\xe8\xbd\x56\x18\x06\x0d\x75\xc7\x09\x01\x1f\x68\x81\x63\xa5\xd7\xc3\x00\xca\x43\xcf\xc2\x05\x59\x80\x5f\xac\x11\xc2\x98\x32\xe0\x27\x4a\xfe\xa0\x28\xb0\x6f\x01\x86\x5f\x29\xf9\xb9\xf6\x3e\xac\x53\x2c\xbb\xe3\x04\x66\x99\xd4\x69\xd6\x4f\x5a\xd2\xff\x95\x6a\xc6\x6a\xed\x23\x6d\xfe\x58\xd4\xaf\xde\x1d\x9a\x32\x18\x55\xb4\xa4\x04\x92\x59\xb7\xc6\x19\xab\x5d\xe7\x30\x33\x52\x3a\xb8\xcb\x1d\xc5\xdf\x8e\xda\xee\x9a\xd4\xb6\x0a\x3c\x32\x0c\x0a\x70\x04\xfd\xf7\x86\x49\x46\x49\xf2\x9b\x1e\xbe\x7d\x0d\x30\x50\x69\xe1\x51\x26\x48\x49\x94\x0c\x43\x2a\x47\xe3\x32\x06\x49\xdb\x80\x7f\xff\x97\x07\xfc\x2d\xb0\xae\xda\xec\x12\x29\xad\x28\x63\x7a\x20\xa5\x83\x17\x97\xc6\xa4\x23\xe4\x96\x0f\x3d\x97\x96\x85\x0d\xbf\x85\xb3\x26\x79\x2e\x64\x4d\x16\xd8\xcb\xab\x5b\xa5\x03\x2e\xd1\xbd\x93\x05\x5c\xa7\x98\xdc\x13\xc6\xe9\x5a\x8b\x52\xf6\xfc\xed\xc8\xee\x0d\x72\xd0\x3a\xbb\xd6\xbe\x95\xd6\xc8\x65\xf1\xd5\x0e\xff\x79\x17\xb3\xf6\x33\x48\x50\x73\x20\xb1\x7e\x05\x57\x0a\x71\x0c\x66\x9f\x3d\x25\xfd\xa1\xf7\xb1\x79\x9c\x0e\x71\xc9\xcd\x90\x24\x02\x71\xa0\xde\x39\x06\x87\x21\x93\x28\xb1\x11\x8b\xbc\xa6\xf2\x8d\xd2\x56\x73\x7a\xce\x54\x29\x61\xdc\xd0\xfb\x56\x81\xe2\x4c\x55\xe2\x44\xb9\xb9\xa6\x81\xcb\x37\xc7\xe7\xe7\x67\xeb\x05\x7d\xc5\x32\x15\xf7\xe1\xf8\xfc\xfc\x5c\xdd\x2f\xe8\x53\x9a\x2e\x12\x99\x18\x5b\x90\x49\x7d\xaf\xd9\x9a\xcf\xb4\x60\x94\xab\x33\x9a\x2a\x97\xf0\xf4\xf4\x75\xf3\xcd\xca\xc3\xd5\xfb\x85\xb8\xa1\xdc\xbc\x0e\xe0\x69\xa2\x92\x0b\x99\xf0\x6c\x46\xe5\x4b\x45\x97\x2e\xd7\x33\x56\x76\xe2\xc5\xc5\xeb\x57\x47\x8b\xc5\xb1\x58\x2c\x68\xea\xba\xa0\xd3\x76\x12\x9e\x09\xb9\x74\xbb\xbb\x2e\xe5\x9c\xea\x1c\x55\xda\x6b\x3a\x65\x89\xab\xf6\x35\x5b\x52\x2d\x3d\x5b\xab\x79\x1f\xb4\xc0\x37\x7d\x23\xa6\xf4\x75\xb2\xd2\xaf\x62\x4a\x5d\x17\xdf\x26\x4c\x8f\xef\x8f\x35\xcd\xfc\xa0\xde\x2e\xd6\xd7\x8c\x97\x0f\xbe\x8e\xf3\xf7\xcf\x5f\x99\xb9\x76\xd9\xce\xdf\x3f\x7f\xb3\x5e\x5e\x51\x59\xbd\xbf\x4d\xd4\xfc\x9c\x5e\xd7\x12\x04\xe3\xaa\x7a\x6d\xc0\xea\xfc\xfd\x73\x0b\x1b\x21\x3d\x60\xac\x77\xf2\x93\xf5\x6c\x56\xd5\xaa\xa7\xe8\x7c\x4e\xa9\xaf\xe6\x82\x7e\x56\x17\x32\x49\x6f\x8e\xcb\x49\x2a\x93\xfc\xbb\x58\xa7\xae\x97\x85\xf3\x74\x94\x44\x8c\x13\x39\x81\xb5\x24\xa9\x0c\xc3\xb4\xb6\x2f\xa1\x65\xb2\xb5\x0c\xc3\xb5\xac\x88\x06\x91\x12\x5b\x27\xf0\xb5\x84\x92\xac\x81\xac\xfb\xba\x57\xf9\x35\x8d\x31\x5b\xda\xd9\xee\x02\xf6\xa2\x97\x5d\xbc\xed\xe7\x15\x74\x56\xa7\xad\x49\x68\xf2\xa9\x6d\xe5\xb5\x3a\x52\xd4\x37\xcc\xcb\x7b\xb0\xcf\xe4\x57\x82\x03\x7e\x5b\x40\xbf\x3f\x0f\x19\xb8\xb1\xf1\xae\x16\x92\xa0\x3f\xcf\x5c\x52\x83\x99\x1c\xcd\x64\xbc\x29\x70\x74\x79\xf9\xfe\xdd\xc9\xe5\xd3\x93\xf7\x17\xa7\xa7\xaf\xce\x2f\x9f\xbf\x3a\x7d\x72\xf4\xea\xf2\xc5\xe9\xe9\xcf\x97\x97\xd5\x41\xf2\x95\xb4\x64\xb2\xe6\x84\x81\x14\x6e\x09\x64\x55\x83\x2e\x52\x63\x39\x01\x89\x1b\xe1\xaa\xa6\xb2\x1e\x48\xc9\xed\x75\xb7\x04\x86\x52\x66\xee\xe6\x72\xfb\x10\x80\x39\xa4\xea\x8f\x09\xda\x53\xa8\x97\xe9\x9c\x2d\xa6\x92\xf2\xad\xc8\x18\xe6\x38\xaf\xcb\x22\x93\xbb\xd7\x62\xba\x5e\x50\xe2\x0e\x14\x39\x47\x21\x6a\x43\x66\x99\x47\xd2\x26\xc4\xcb\x91\x44\x38\x96\xce\x13\xfb\x56\x92\x0d\xd7\x7a\xda\x2a\xd1\x74\x70\xdb\x8c\x51\x14\xc3\x5b\x19\x55\x19\xa2\x6b\xaa\x76\x85\xc4\x6e\x77\xab\x4f\xb5\x12\x05\xcc\x6b\xab\x20\x4a\xa6\x76\x87\xa0\x0d\x0a\xe5\xb0\xed\x09\x88\x66\x41\x49\x97\xe2\x96\x6e\x97\xc5\x1b\xef\x91\xbb\x5d\xc1\x56\xf1\x6b\xaa\x76\xcb\xfa\xfd\xcb\x3f\x29\x3b\x4f\xb2\xfd\x65\x7d\x74\x86\xaa\x82\xad\xd2\xeb\xd5\x34\x51\xdb\x32\xf0\x3e\x68\x11\x55\x7b\x01\x15\x25\xa6\x4c\xe6\xcf\x9e\xd6\xca\xb8\x2f\xa4\xcc\x83\x41\x45\xcb\xb5\x4a\xf6\x15\x28\xbf\x91\x5a\x3e\x5d\xc8\xee\x62\xb5\x15\x71\x5f\x48\x99\x07\x6f\x8d\xcd\xad\x96\x5d\xe8\xe8\xd5\xd5\x00\x8a\x31\xa3\xb5\x95\x7d\x6e\x6a\xfe\x2a\x78\xca\x0e\x96\xb5\xee\x7c\xdb\x5b\xfd\x91\xa9\xf5\xab\xd5\x97\x30\x6e\xa9\xde\x7d\xdb\x5b\xfd\x6b\x07\xc8\xaf\x36\x50\x9b\x95\x96\x26\xca\xaf\xa6\x91\x3d\x4e\x5e\xa8\xde\x38\xdc\x4a\x17\xc8\x4f\xc2\xb2\x05\x74\x76\x3f\x8f\x4a\x34\x9e\x80\x32\x3b\x2e\xc3\xe5\xd6\x5a\x68\x45\xe5\x48\xd2\xe9\x3a\x6d\x9c\x0c\xa8\xc7\x5b\x2d\xd7\x10\xa2\xb8\xf0\xd1\xa6\x84\xd0\xbd\xde\xae\xfe\x8d\xc7\xe1\x36\xb3\xbd\x2f\x37\xfc\x5a\xbb\x35\x5f\x87\x1e\x42\x94\x54\x2b\x18\x49\x8c\x6b\x8b\x64\x24\x7b\xc1\x61\x10\x07\x81\xee\x93\xfe\xdb\xec\x4c\xcb\xea\xab\xc2\x01\x2a\xef\xd5\x6d\xce\xb1\xdb\xac\x5a\xee\xe4\xd1\xd2\xcc\x4d\x56\x06\x61\x11\xc6\x97\xb9\x4c\x36\x36\x44\x59\x75\x49\x78\x95\x75\xa8\x50\xe9\x53\x2b\x30\x34\xb2\x54\xd5\x8e\xc5\x04\x17\x85\x99\x1e\x0f\x0c\xd8\x01\xa3\x9f\xc5\x3d\xc2\xba\x09\x8b\x52\x79\x2e\x18\xf7\x86\x6e\x1f\xfb\x18\x70\xf4\xae\x33\x97\xc6\x41\x64\x68\x0e\x14\x39\x01\x7a\x54\x36\x48\x84\x8d\xdb\x70\x4d\x15\xf2\xfe\x45\x7d\x38\x18\x60\x5c\xd2\x68\xa4\xc6\xaa\x0c\x07\x30\x01\x81\x87\xd4\x8f\xc0\x60\x72\xf9\x56\xdf\x4d\x03\x81\x37\xbc\x42\x41\x55\x83\x06\x75\xac\x73\x6b\x86\x78\xcb\x48\x1b\xc8\xb2\xdb\x45\x90\xa4\xd9\x37\xde\x44\x90\x21\x0f\x43\xee\xb9\x6a\x18\x36\xb8\x07\x92\xdb\x3d\x60\xd9\x99\xeb\x01\x9d\xfe\xe7\xfb\x50\x85\x3e\xf2\xfc\x42\xb7\x64\xe6\xe3\x7a\xdf\xd0\xaa\x09\x54\x9a\xfc\x92\x4d\x81\xa1\x7b\x2f\xc3\x70\xbf\xe0\xe3\xfd\xd7\xa2\xf7\x6b\x1a\x86\x5b\x76\x6d\x5d\x54\x11\x42\xee\xbd\xcb\xff\xb0\xfb\xbf\x0e\xbf\xeb\xfe\xaf\xff\xab\xf3\x5d\xe7\x76\x4d\x3f\x77\x6e\xbf\x8f\x7e\x88\x06\xe6\x1d\xa5\xd8\x1e\x69\x3b\xb9\x4d\x78\xe7\x37\xb1\x36\xa9\xff\xd0\x23\xe4\x19\xed\xbc\x7e\x79\xa1\x13\x0e\xff\xd7\x56\x13\x56\x18\x47\xca\x1b\xcc\x6a\x56\xb1\x71\x7f\x82\x1f\x93\x87\x58\x45\x4b\xf6\x99\x71\xb4\xb9\xa2\x33\x21\xe9\xb1\xb5\x5d\x6b\x9d\xb8\x3c\xd5\x65\x5c\x2c\xcb\x09\xb8\x64\x9c\xa9\xe1\x4e\x4a\x13\x68\xbb\x90\x52\x91\xc9\x65\x7f\x46\x63\x39\xf1\xb8\x66\x53\xb0\x16\x73\xeb\xb6\xca\x7a\x88\x4a\x59\x1a\x73\xcd\xf4\x3e\x10\x66\x2b\x26\x1b\x6a\x21\x4a\x48\x17\x5e\xe4\x81\x79\x6e\x8d\xc7\xe6\xb3\xd9\x5f\x84\x63\xf7\x14\x7b\xd7\xd1\x30\xf4\x4f\xae\x1a\xcf\x5f\x5d\xa5\x5b\x5f\x35\x3d\xb8\x97\x44\xe1\x02\x55\xf3\x8b\x4b\xc9\x6e\x65\x74\xa4\x9d\x05\x3f\x9e\xf8\xad\x7b\xdd\xbc\x64\xa9\xaa\x72\x70\x13\x32\xb7\x3b\xf0\x02\x63\x2a\x96\x4b\xa6\x14\xe3\xd7\x65\xc4\xaa\x4b\x2f\x44\xec\x17\x33\x6d\x8e\xf3\xf5\x95\x56\xe1\xaf\xb4\x30\xe0\xa9\xd6\x65\x25\x50\xec\x2f\x7e\x27\x93\xd5\x8a\x4e\x9f\x3b\x41\x62\x7f\x46\x47\x49\x0c\xe1\x5a\x4a\xb3\xef\x56\x4f\x2f\x19\xca\xeb\x64\xf5\x95\x5a\xb2\xb6\x7e\xde\x69\x55\x8a\xca\xf7\xaf\x4d\xe5\xf7\xd2\xd7\x9c\xdc\x50\x73\xe6\xc3\x75\xee\x38\x49\xe7\xdb\xa1\xe8\xaa\xf8\x39\x36\xf0\x0f\xb8\xc8\x4f\x3e\x98\x15\x24\xc4\x87\x62\x59\x6a\x0c\xae\x7f\x6b\x3f\x57\xc5\x7c\x4c\x20\x7b\x9c\xbd\x56\x7a\x9f\x4e\x97\xd4\x4a\x18\xef\x07\x27\xdf\xeb\xd9\x26\x7c\x68\x4f\xd8\x35\x80\x65\xe8\xbb\x53\x06\x4e\xad\xc0\x01\x29\x54\xf3\x56\xcb\x85\xe1\xd2\x67\xd0\xdc\x6a\x57\xfb\x51\xf5\x78\xeb\x66\x63\x0f\x55\xdb\x09\xd1\x94\xde\x2a\x21\x16\xd9\xa8\x7a\x8c\xef\x65\x64\x95\x88\x32\x09\x37\xe9\xd4\xc2\x1c\xb5\x8e\x2e\xdd\xe7\x17\x42\xdc\x90\x85\x84\x85\x8c\xe8\x52\x53\x12\x4d\xa8\x62\xbd\x80\x03\x50\x58\x27\x0b\xee\x12\x95\x4c\x6e\xa9\xf3\x5c\x4a\x14\x0d\x9a\x5e\x1c\xca\x9f\xdf\x38\xd7\x1f\x5d\x6f\x55\x54\xe2\xc4\xb6\x5c\xd3\x6c\xd0\x63\x73\x60\x67\x06\xc3\x66\x25\xe9\x8a\xf2\xa9\xd1\x81\xeb\xf5\x58\x91\xf2\xeb\xb5\xd9\x65\xd3\x5e\x17\x2e\xdc\xd1\x3d\xb8\x92\x64\x63\x46\xd2\xa6\x77\x95\xa4\xea\x4e\x6e\x6b\xf9\xfe\x34\x16\x52\xf8\x51\x5f\x13\x82\x30\xd4\xfc\xcc\x34\x31\xd2\x1c\x35\x9b\xb3\x99\xd9\x0a\xa4\xde\x91\xa2\x0a\xc3\x87\xbc\xd5\xb6\x5e\xcd\x50\x3e\x3e\x18\x68\x46\xa9\xa9\x79\x4a\x91\x84\x41\x9d\x5a\x9e\x38\x65\x59\xfd\x09\xc9\xf8\x53\xa2\xf0\x6d\x14\xe1\x9b\x97\xfd\x96\xe6\xab\x91\x1d\xa4\xc1\xf4\x26\x9a\x1b\x1f\x9d\x4b\xfb\xb5\x1e\xbb\xf5\x52\x6e\x09\x55\xd1\xe5\xed\x72\x58\xaa\x3b\x64\x53\x98\x9a\xfe\x55\x4a\xb1\x3d\x4a\x60\x64\x53\x0c\x57\x12\x89\x86\xa4\x24\xf1\x86\x8d\xe5\xa4\x9d\x50\xb4\xb8\xd9\x9a\x98\x40\x66\xf7\xbd\x55\x4d\xb8\x47\x65\xc7\x41\xee\x73\xab\x33\x23\x1c\xcb\x49\xd1\xb4\x00\x99\x83\xeb\x2e\x50\x58\xb5\x80\x33\xb6\xa0\x5c\x0d\xb7\x13\x48\xb7\x0f\xa6\x1e\x47\x50\xd1\x66\x9a\xa8\x24\xde\x3c\x78\x60\x91\x99\xda\x00\x60\x6b\x45\xa7\x31\x2b\x30\xec\x94\x4f\xc0\xb3\xab\x26\x65\x30\x95\x46\x0f\x0c\xc1\x6e\x73\x1d\xb4\xf4\x4b\x37\x16\xb9\xb6\x1a\xf1\xac\xb1\x16\x0a\x36\x53\x4a\x8d\x37\x44\x76\xcf\x53\x3b\x32\xe3\x11\x65\x97\x89\x9e\x1a\xa6\xe6\xc7\x86\xe2\x36\x4d\xf2\xcd\x8a\xcd\x19\x04\x4d\x40\xee\xa5\x09\xf6\x75\xc1\xd2\x9b\xb6\x2e\xf1\xe8\xc1\x94\x66\x4a\x8a\x7b\x13\x9a\xb3\x1e\x75\x57\xfa\x9b\x19\xa0\x0c\x1b\xd8\xf5\x67\xe5\x34\xe3\xa8\x50\xb4\xae\x31\x21\x1b\x6e\x9f\xd7\x54\x1c\x4b\x2e\x5b\x96\xc4\x38\x99\xec\x59\x2c\xe3\x64\x42\x38\x86\x2e\x0b\xc3\xae\xf0\xc7\xb0\xcf\x8d\x42\xd0\x14\x62\xd7\x44\x8e\x65\x4d\x88\xdd\x0f\xa0\x7b\x19\x65\x54\x19\x8f\x65\x6e\xd7\x9b\x11\xe6\x6d\x1c\x75\x6e\xcf\xab\x7c\xde\xe5\x62\xee\x86\x08\x13\xb9\x12\x04\xd9\x78\xf6\x18\x73\xcd\x34\xfc\xcb\xb6\x0f\xba\x05\xd7\x27\xe9\xde\x4d\x70\xc5\x55\x72\xbf\x10\xc9\x14\x52\xc2\x22\x27\xae\xc1\x9a\x30\x73\x36\xbe\xbc\x8d\x21\x0c\x53\xb3\xe2\xf3\x1c\xad\x09\xed\xad\x35\x35\xf1\xad\xa0\x35\xb8\xe0\x74\x4b\xa6\x4c\xfb\xee\xf1\xbf\xdc\x7a\x6b\xb3\xb6\x72\xdd\x28\xa4\xb8\x28\x9d\xa7\xf6\x69\xf8\xc2\x2c\x59\xbd\x7a\x63\xb3\x76\xf9\xa8\x6d\xf5\xba\x2c\x45\xcb\xd2\xde\xd9\x4d\xed\xee\xa3\x5d\x63\x3a\xf1\x4c\x60\x53\x18\xdd\xc9\x9d\x08\x6a\x18\x43\x4b\xa3\x4f\x8b\x58\x20\x4c\x03\xa2\xc4\x25\x8e\xcd\xb1\x07\x1f\xc2\xd0\xa5\x73\x3c\x6c\x27\x54\x12\xd8\x7e\x02\xe5\x9a\x1d\x8b\x16\x22\x65\x59\xfa\xde\x51\x91\x32\x36\xec\x57\x32\x15\x36\x5e\x4e\x01\x8e\xf5\xb6\xf7\xe3\x5c\xeb\x38\x26\x87\xb9\x08\xa2\xc0\x20\x0a\x73\x8e\x55\x6b\x97\xdb\xe6\x1f\xb4\x45\xd6\xbb\xcd\x55\x00\xdc\x44\x2f\xa9\x98\xa3\x39\x2a\xbf\x9d\xa2\xa5\x79\x17\x97\xa4\x21\xd7\x54\x91\xb2\x5d\x7f\xec\xc2\xd3\x9d\xe9\x49\xa0\x90\x59\x87\xc5\xa6\xc5\x6b\xbb\x47\x3e\xce\xae\x46\xd2\x91\x8c\x75\x49\x61\x2e\xb7\xe1\xd3\x05\x95\x79\x4e\x87\x7b\xfa\xec\xf8\x7d\xd9\xe3\xea\x7d\x5f\x7f\xfd\x11\xf9\xb2\xdf\xb5\x35\x5f\x49\xce\x7e\x15\xba\x65\x02\x1e\xf7\x79\xc9\xc3\xec\xf4\xf8\x41\xeb\x8e\xbb\x89\x8c\x6b\x7c\x4e\x08\x65\xc4\xbd\xd8\x4d\x56\x51\xf9\xde\x22\x41\x18\x6e\x0b\x70\xd5\x11\x26\xea\x72\x9e\x57\xc1\x9c\xcb\x3b\x14\x98\x45\xb0\x9a\x6c\x3a\x72\x21\x4c\xb7\xee\xb6\x70\x61\x2b\xeb\x39\xeb\x02\x20\x95\x52\xc8\xc0\xc6\x22\xc1\x58\xb3\x41\x33\x63\x1c\xc4\xf6\x7c\xd9\x41\x7d\x03\x06\x99\xdb\x0f\xb6\x24\x0b\xbd\x92\xbd\xe5\xa9\xe5\x5b\x9b\x99\x4f\x22\x0f\xd2\x0a\xd4\x1e\xd3\x6b\x86\xde\xbd\xf8\x65\x4d\x1b\xf5\x2b\x36\x18\xde\x78\x66\xe7\x35\x70\x86\xed\xa1\xa1\x3a\x43\x3c\x97\x0d\x01\x87\xfe\x89\xb9\x51\xaf\x54\xe3\x7d\x59\x56\xf0\x69\x5b\x10\x36\x5b\x2f\x9a\xa9\xbb\x1b\x62\x24\xa1\x40\x89\x02\xe5\x83\x8b\x3a\xb7\x7c\x05\x8e\x7a\xc7\x14\x1c\xed\x8e\x65\x51\x5c\x49\x3b\xec\xf6\x4d\x0d\x27\x6d\xdc\x2e\xb7\x24\x0e\x28\x8b\x65\x5b\x76\xd4\x02\xae\xeb\x66\xa5\x3d\x6a\x5d\x65\xbe\x03\x41\xca\x21\x81\xa6\x9a\xc6\xb8\x9b\x10\x51\x63\x36\x76\x00\xac\x1c\x40\x52\xc0\x9a\x6c\xe9\xdf\x63\x36\x19\xae\x4b\xf3\xfd\x1e\xf6\xbd\x6e\x57\xee\x14\x4a\x7c\x0c\x91\x1d\x15\xda\x9f\x3a\xfc\x13\xb5\x30\xad\xcb\x03\x78\x0b\x08\x7b\xb4\xe1\x2a\xa2\x28\x70\x07\x04\x7b\x46\xd9\x80\x80\x11\x5e\x82\x20\x71\x20\x10\x25\x08\x58\x01\x5e\xe1\xf5\xc4\xc8\x5e\x67\x90\xda\xb3\x94\x7b\x0c\x17\xd5\x68\x8c\x5f\xcc\x9e\x98\xeb\xd6\x64\x55\xe0\x3f\x19\xb4\xcb\x87\x12\x90\x35\x59\xa8\x79\xf2\x78\x4d\xd2\xca\xc9\xc4\xd3\x19\x4d\x11\xd3\x68\x99\xac\xf6\x00\x93\x19\x20\xc6\xe9\xb8\x3f\x41\x55\x20\x79\x2d\x67\xbb\x1a\xb6\x97\xcb\x7a\x3b\x82\xbc\x0b\x2c\x26\xdb\x40\xf0\xd5\xa1\x9b\xb8\xb1\x7f\x3e\x72\x93\x6d\xef\xc0\xad\x95\xa0\xe9\x5e\xfc\x9f\xeb\x8e\xa1\xa0\xed\xdd\xa9\x13\x11\x93\xad\xea\x8e\xf5\xff\xae\x75\x88\x5a\x7f\xe4\xc2\x1c\x97\x6d\xa0\x66\x89\xe9\xed\x0a\x98\x51\xbb\x77\xd6\x84\xb1\xda\xb4\x57\xb3\xb3\xd5\xd4\xac\xac\x35\x10\x8f\x33\x91\xc6\xaa\x88\xd5\x3e\x8b\xdb\x6e\x93\x77\x3b\x2b\x6a\x6b\x5f\xa0\x41\xc1\x4a\xfb\xd7\xd7\x34\xab\x5d\xa6\xa0\xa7\xd1\x1a\x9c\xae\x9b\xdb\x12\x95\x8d\x65\x9f\x55\xfb\xab\x84\x88\xee\xd2\x54\xa2\x8a\x1d\xc2\xe1\x37\x05\xdc\x26\xf7\xce\x60\x9b\x86\x50\xad\xf9\xed\xc4\x73\xb2\x96\xe2\xb1\x9a\xe0\x6d\xcb\x57\xb9\x3b\xa1\xc9\x8e\x37\x91\x55\xfb\xe6\xa0\xb6\x0a\x18\xeb\x3f\x06\x63\x64\xc9\xa8\xbc\xb5\xc3\xaf\x8c\x67\x55\xd1\xed\x61\x54\xbb\x1b\x3b\x03\x69\x80\xec\xdb\x3b\x5f\xd5\x58\x59\x49\xf7\x80\xda\x85\x50\x91\x88\x96\xfc\xbd\xae\xfc\x69\xc5\xde\x6e\x9f\x23\x09\x8d\xbd\x0c\xc3\x0f\x4e\xa4\xb7\x53\x5d\x6f\xed\x86\xb7\x0c\xc5\x1f\x58\xfb\xd6\x51\xd4\xf7\x5c\x4c\xcc\x8c\x66\x1b\x42\xbd\xdb\xb7\x6d\x5e\xc2\xc1\x6e\xd7\xa9\xb2\xa3\x26\xc0\x7c\xb3\x9e\x1a\x60\xf6\x6d\xec\xd4\xec\xe2\xc3\x5d\x43\x79\x1f\x14\x6a\x31\xa0\xd3\xfd\x1b\xb5\xf5\xf6\xe1\xca\x6d\xd4\x7e\x96\xe4\xad\xdc\xa6\xdc\x5e\x01\xf3\xab\xf5\x42\x22\xba\x87\xda\x79\xe9\xfd\x86\xde\x1b\xb1\xfd\x36\x59\x0c\x05\x51\x3d\x01\x72\xcc\x27\x5b\x87\x93\xba\x2a\xcf\x8f\x64\x7d\xb3\x01\x82\x65\xb2\x72\x52\x61\x50\xf3\xaf\xad\x65\x69\x68\x5d\xba\xd2\x48\x8b\xb1\xc4\xd8\x2b\x41\x93\x61\x38\xfe\x1f\x18\xc3\x76\xef\xab\xa8\xe4\xe3\x09\xc8\x9d\xe3\x51\x36\x62\x85\x39\xdc\x51\x39\x6d\xca\xc9\xb0\x16\xc2\xdf\x8d\xc6\x8b\x1d\xc3\xea\xda\x23\x46\x5a\x80\x62\x69\xb6\x01\x8a\xbd\xd4\xc8\x4b\xd3\xdc\xdc\xe6\x60\x4c\x1a\x65\x65\x4e\xb7\x6c\x53\x28\x46\xc2\x39\xba\x1b\x44\xd4\xe0\x73\x82\x30\xc5\x38\xe6\xb5\x6f\xbe\xf1\xb1\xa8\x67\x29\x3c\x94\x2b\xab\xef\x85\x6c\x8b\x42\x56\x25\x35\x62\xd2\x20\x85\xf3\xdc\x48\xc3\x05\x52\x78\xb4\xfd\x6d\xa4\xf6\x49\x1c\x9b\x1b\x7a\x1f\x2b\xb8\x4d\x16\xb1\xd2\x9d\x88\xb7\xdc\xa1\x9a\xc5\x68\xa3\x18\xb5\xc5\xb4\x9c\xae\x4b\x8e\x27\x95\xa4\xfe\xb6\xb5\xf3\x35\xd1\x7d\x37\x7a\xdf\xc8\x49\xef\x41\x80\xe3\xe0\xd0\x5e\x3e\xe6\x2e\x3a\xa1\x25\x61\xc2\x61\x88\x68\x8f\x04\x87\x01\x06\xe5\xae\x68\x2c\x1b\x3d\xda\x56\x0f\xf6\x98\xc6\x64\xad\xa3\x6f\x6a\x46\x3a\x1f\x87\x09\x32\xbc\x09\xae\xac\x97\x7b\xd5\xc1\xc4\xc4\x00\x4c\x21\x25\x09\x24\xa4\x3b\xc0\x43\xe3\x3f\xdf\x99\xb5\x6d\x0f\xca\x91\x8c\x4a\x45\x63\xb8\xa0\xaa\xb3\x70\xe1\xdd\x54\x24\x29\x9f\x52\xcd\xb5\x66\xee\x91\xf8\x34\x98\x19\x32\xcd\xd2\x33\xf3\xfa\xcc\xb8\xea\x6c\xa5\xc0\xcc\x10\xa2\x15\x5b\xd0\xa9\x26\x4f\xc2\x54\xe4\x7b\x90\x2c\x48\xb7\x8f\xad\xb5\x73\x16\x5d\x66\xa9\x58\xd1\x97\x53\xc2\x31\xb0\x11\x5a\x34\x48\x20\x52\x44\xe5\xb9\x45\xc9\x5b\x2e\xa6\xd4\xdd\x4b\x61\x5f\xa2\x2c\x93\xc7\x16\xfd\x5d\xa6\x72\x57\xb3\x7a\x69\x16\x6c\xa4\xd5\xca\xe3\x3c\xaf\xed\x66\x97\x20\xb2\x5e\x7a\xe7\xe7\x67\x97\xc7\xa7\x6f\x2e\x4e\x3e\x5c\x5c\x5e\xe6\x39\x52\xa4\x25\x1d\x83\xd9\xc3\xaf\x76\x72\xd7\x66\x43\xc3\x40\xf3\x52\x96\x6c\xe4\x58\x2c\x57\x82\x6b\x9a\xb0\xf7\x43\x94\x4c\xa7\x5a\xc4\xd6\x50\xcc\x32\xe9\x59\x10\x59\xe0\x58\xeb\x8f\x8b\x46\xb4\x5f\x2d\xaa\x54\x6d\x66\x5e\x1a\x7c\x60\x76\xd7\xfc\x86\x71\x94\xcd\x93\xa9\xb8\x3b\x13\x42\x35\x63\x00\x37\x4b\xa7\xf6\xd0\x0f\x2c\x30\x9b\x35\xe6\x0b\xdb\xfb\x89\x3a\x8a\x78\x74\x18\x96\x78\xd1\xb6\x70\x7c\xc0\x76\x59\x2d\x00\xb3\xa9\x5e\xd5\x52\xdf\x74\x1f\x36\x5f\x89\x1a\x8d\xab\x4d\x72\x58\xe0\x78\xbc\x98\x94\xb7\x29\x15\xb6\x8e\x57\xce\x23\x30\x0e\x8e\xd2\x54\xac\xb9\xca\x5e\xb1\x4c\x19\xef\xf7\x55\x16\x6f\x12\x97\x18\x5b\xb5\xcc\x90\x18\xf0\x71\x46\xcd\xce\x95\xf5\x79\xb8\x91\x64\x4b\x12\xb1\x5b\xed\x5a\x41\x8f\x1e\x34\xa2\x70\x83\x5e\x02\x97\x19\x5d\x68\xdc\xce\xf3\xd2\x98\x2b\x6d\x80\x6d\x18\x4b\x14\x88\xf4\x40\xd9\xd3\x90\x9b\x44\x29\x99\xc5\x9b\x25\x9b\x4e\x17\x34\x0e\x02\x98\xb2\x5b\x36\xa5\x32\x0e\x82\xa2\x68\x64\x3e\xb8\x96\x62\xbd\x6a\x56\x70\x60\x6e\x0a\x6a\xa4\xa4\x74\xb1\xa8\xea\xcd\xe6\x92\xf1\x1b\x5d\xaf\x3d\xd2\x3f\xa7\xc9\x34\x28\xcc\x16\xe0\xe5\x2d\x0a\x3a\x01\x86\xfd\x85\xeb\x45\x60\x2a\x96\x6f\x2d\xd0\xf4\x3a\x38\xb6\x01\x9d\x62\x3d\x54\xa4\xa2\x07\x86\xe1\x7e\x56\x28\x78\x97\x51\x69\x83\x96\xe2\xff\xc9\x66\x9e\xda\x90\x54\x9d\xff\x03\x4d\x9d\x2c\x13\xb6\xf8\x96\x36\x2c\x71\x3b\x5e\x24\x59\x16\x07\xeb\x9b\x03\x5d\xfc\x80\x8b\x3b\x99\xac\x02\xf8\xea\x7c\x7c\x33\x70\xd9\xb4\xc3\x8d\xcb\xca\xff\x3f\xfa\xf3\xfc\x5f\xea\xcf\x7f\x4b\x93\x27\x5c\x57\x39\xb5\xed\x4d\x60\x60\xfe\xef\x69\xd7\x2d\x18\x15\x5d\x2e\x90\x8a\xfc\x5a\x87\x36\xd5\x7b\x67\x4d\x19\xa1\x20\x70\x65\x0e\x16\x2c\x53\x3a\xfd\x20\xe8\xd1\x88\x4d\x8b\xb6\x25\xe7\x92\x92\xdb\x44\x25\xb2\x1a\xee\x3a\xa3\xd2\xde\xc9\xb2\x7d\x75\xe1\x4a\xd2\x19\x95\x92\x4e\x75\x02\xdc\xb1\xa9\x9a\xc7\xdf\xff\xe0\x86\xf5\x75\x50\x7e\x05\x58\x5b\xf5\xfe\xf9\xb4\x7c\xb5\xae\x46\x97\x83\x83\xe0\xbf\x58\x9d\x5e\x4a\xff\xc5\x2a\xd6\x6c\x6a\xbd\xb6\xfe\x3b\xfa\x73\xfd\x2f\x56\xd6\xba\xa4\x52\xca\x15\x95\x41\x01\x63\xea\x91\xcc\x61\xe9\xc8\x56\xc1\x52\x73\xa8\xde\x21\x84\x65\x47\xe6\x32\xf8\x00\x6e\x13\xc9\xec\x31\x9a\x20\x5b\x9b\xf0\xfe\x01\x04\x3a\xed\x60\x91\x5c\xd1\x45\x10\xd7\x71\xdf\xb1\xb0\x0e\xcb\x3a\xd4\x2f\x83\xa2\xc0\xf1\xfe\x56\xa6\x74\x25\x69\x9a\x98\x3b\xc6\x6b\x4d\x4d\x13\x7e\x4d\xe5\xb7\xb5\x34\x65\x59\xd5\x94\x5f\x70\x5a\xc2\x1f\x54\x6f\xc3\x1b\x69\xb5\xd3\x73\x25\xd9\x6a\x65\x84\xb9\x4a\xf8\x3f\x93\x75\xf5\xaa\x29\x93\x6b\x41\xf2\x6b\x11\x31\xbd\xa6\xf5\xb5\x3c\xba\x1a\x7b\xa5\x3a\xdf\x35\xc2\xd1\xed\x7b\x40\xf7\x9d\xe6\x32\x7d\xac\x5f\x65\x83\xb1\xb1\x91\xac\xb3\xb9\xd3\x78\x4c\xb8\xb1\x52\xbe\x28\x87\xf7\x5a\x36\xaf\xa0\x1a\x0c\xe9\xa3\x1d\x5d\x8f\xfa\x68\xb2\x92\xd8\x53\x15\x95\xca\x47\x27\xa3\xfa\x4b\xbc\x29\x86\xf4\xdf\x1f\x8e\xce\xa4\x3f\x61\x2d\x31\x74\xfb\x7b\xf4\xd0\x4c\x36\x42\xbb\xb4\x87\xda\xad\x1d\x59\xdb\x17\x77\x13\x29\xf8\xb3\xa2\x48\x62\x1c\xd7\x7b\xb5\xa7\x4b\xfb\xcf\xeb\xfc\xd9\x0c\x48\xa0\xb8\x7e\x2f\xb7\x72\x42\xdc\x83\x4a\x88\x5b\xad\x02\xe3\x8e\x61\x25\xe0\x78\x53\x97\xea\xe2\x37\x12\x6d\xac\xb4\x19\xdf\x48\xd8\xd2\x35\xb4\x4a\xe7\x82\xda\xc1\x2b\xe9\x9f\xba\x83\xdd\xa7\xc6\x0f\xae\xb9\x7f\xbc\x96\xe8\xb5\x44\x9b\x02\x3e\xcb\x72\x89\x64\x01\x8c\x03\x96\xbd\xe4\x4c\xb1\x64\xc1\xbe\xe8\x95\x16\x5c\x53\xe5\x3f\x9f\xdb\x2b\x3a\x26\x18\xc3\xa6\x80\x4a\xe0\xdc\xb3\x43\xb3\x53\x52\x93\x24\x7b\x03\x50\x16\xdb\xc6\x8f\xb7\x1b\x2f\x9b\x36\xad\x58\x61\x74\xba\x73\x21\x66\x95\x0d\x61\x27\xd5\x3e\xdd\x23\xd5\x6e\x4b\xb4\xb4\xbc\x31\xd4\x09\xb5\xa5\xb7\x3b\xf5\x42\xad\x7f\xd8\xa1\x90\xa9\xe0\x2a\x61\x9c\xca\xce\xfa\xe6\x60\x95\x4c\xa7\x5a\x51\x2e\x4c\x81\xf9\x20\x80\xb1\xdb\x97\x42\xc1\x47\xde\x31\xff\xfc\xd0\xec\x7b\x80\x4b\x63\x9b\xa3\xca\x76\x30\x75\x80\x8f\x74\x65\x1e\xb0\x86\x55\x57\x64\xb0\x84\xb7\x29\xe6\xdf\x34\x25\x8b\xa9\xa1\x9a\x0b\x91\x4c\xb5\xf8\x32\x81\x87\x78\x82\x8b\xe1\xd3\x16\x4a\x66\xb1\xf0\xa5\x24\x35\x04\x7b\xfa\x55\x04\x7b\xf0\x2f\x20\x98\x99\x8a\x67\xd2\x04\x46\x7b\x27\xbf\x1e\xb6\xbd\x16\xc1\xda\x1c\x32\x35\xfb\x4c\x67\xe6\x78\x29\x23\xc2\xbb\xe3\xa4\xa4\x0f\x6b\x32\x9e\x0c\xd9\xe3\x74\x88\x25\x11\xe6\x48\x29\x24\x61\xd8\x7d\xe6\x8f\x2f\x9b\x38\xe4\x6b\xe7\x50\x37\x1a\x4b\xe0\x63\x39\x99\xc4\xbc\x1e\x36\x77\x5d\x14\xf0\x44\x92\x0d\xb5\x77\xe4\xc5\xef\xa4\x89\xa6\x6e\x6f\xa6\x35\x6f\x03\x5c\xb8\x8b\x6a\xbf\x76\x96\xb6\x70\x27\xf5\x5a\xcf\x9e\x3e\x31\x86\x1e\x77\x9a\xf7\xb9\x24\xb2\x62\x1c\x5f\xb6\xec\x19\x76\xf3\xc5\xf9\x88\x8e\xd9\x04\x25\x18\xd6\xc4\x85\x7a\xde\x09\x34\x6a\xc0\x6b\x2a\x4f\xed\xe5\xc3\x14\xad\x71\xbc\xbd\x45\xbe\x76\x97\x16\x9b\x0d\x5e\x5d\xf5\x1f\x5f\x9f\x82\xba\xb9\xb5\x6e\xd4\xfb\xfa\xe6\x56\xcd\x11\xa7\x8a\x2f\x29\x6b\x06\xb2\x44\xb7\xf5\x45\x22\x66\xc6\x9a\x40\x0a\xfe\xa2\xca\xda\x96\x71\xba\x9b\xc9\xdd\x15\xab\x70\x91\x20\x4f\xb0\xcc\xe6\xd0\x7b\x49\xc6\x13\x73\x35\x04\xbc\x90\x64\xee\xaf\x7d\x82\x0f\xf6\x18\xba\xfe\x10\x40\x00\xdf\x76\x0e\xff\x85\xcc\xf3\xee\x07\x59\xc0\x46\x97\x6b\x9b\xc5\xf7\x0e\xaf\xac\x5d\xb0\x16\x3d\x54\x8d\x02\x08\xe2\x6a\x86\x7f\x96\x24\xd5\x72\xe0\x0a\x7e\x91\x26\x3e\xc0\x32\x59\x05\x18\x7e\xb2\x87\xe1\xcd\xcb\x37\x45\x06\xf8\x45\x77\xe9\x27\xdd\xa5\x65\xb2\x6a\xeb\xd1\xcf\xf2\x3f\x19\x16\xe0\x57\x63\x02\xfe\x55\x8e\x77\x82\xbc\x4e\x48\xf0\x25\xb0\xa1\x03\x24\x29\x43\xe2\x7e\x99\x04\x84\xf8\x10\x3f\xbf\x4a\x0c\xbf\xcb\xb6\xf8\xb0\x9c\x04\x47\xbe\x55\x13\x5b\x7b\x97\x03\x94\xbd\x2a\x10\xc6\x40\x39\xf9\x4d\x8e\x56\xbb\xe1\x84\xf4\x82\x18\x6e\x87\xcb\x51\xa3\xe0\x5d\x69\x97\x8a\x5d\xbc\x50\x35\x0a\xde\xac\x17\x8b\x20\xde\xde\xca\x40\x3b\x07\x37\xab\xb0\xbd\xc6\x06\x5a\x6d\x39\x16\xc8\x7b\x87\x22\xa5\xc7\x86\xf1\x48\xc6\x8a\x8f\x56\x88\xe2\x72\xa5\x13\x82\x38\xd1\x29\xed\x2e\x2a\xd6\x78\x44\xe9\xa8\x06\x82\x98\x17\x20\xcd\x10\x6b\xa1\x8e\x77\xd9\x62\x09\xe6\xa0\x47\xb9\x45\xae\x5e\x30\x09\x8a\xe1\x6f\x32\xcf\xa9\x42\x3b\xe1\x29\x6b\x21\xb9\x24\x6f\x84\x9a\xb2\x96\x75\x4e\x44\xe4\x16\x28\x08\xbe\x15\x84\x24\xe1\xe6\x90\xbe\x4d\xf6\x41\xd3\x03\x0c\x6b\xee\xc2\xa6\x57\xed\x64\x3b\x99\x66\x9c\xec\xfa\xb9\xd4\x00\xcb\x47\x14\x1d\x23\x89\xc7\xfd\x09\xc8\xf1\x60\x82\x63\x8a\xca\xc3\xd1\xe5\x35\xa2\x2a\xf2\x2e\x30\xc6\x29\xa7\xf4\x4f\x17\x61\x78\x8c\x44\x79\x71\x1d\x98\x2b\x11\x79\xfb\xd5\x37\x5b\x73\x6b\xf7\xf3\x84\x61\x67\xce\xee\x67\xef\x0a\x25\xb4\xd8\x73\xe3\x4d\x75\x5d\x7c\x22\x3b\xce\x90\x0c\x33\x30\x01\x5d\x61\x4e\x24\xb5\xde\x84\xa3\x87\xf1\xc0\x5e\xfc\x8c\x13\xa2\x86\xfe\x42\xe4\x96\xa8\xb7\x69\xdb\xd5\x87\xdd\xda\x25\xb0\xe3\x8c\x4f\xf2\x5c\x8d\x83\x7f\xfc\xa3\x84\xe9\x24\xcf\x13\x3e\xd6\xf3\x8e\x27\x85\xb9\xae\x6f\x27\x30\x9d\x8d\xff\xef\x03\x5d\x99\x92\x57\x0b\x6a\x03\x5d\x55\xc1\x15\xa6\x24\xc5\x61\x88\x12\x1e\x99\x69\x24\x84\x4c\xf3\x7c\xcd\xc7\x29\x9f\xe8\x67\x6c\xf9\xea\x9a\xf4\x21\x23\x99\x42\x7e\xf3\x10\x0f\xb3\xc7\xeb\xe1\xda\x05\x9b\x9d\x11\x31\x9a\xa3\x63\xb4\x22\x6a\xbc\x9e\x98\x69\x5c\x99\x69\x9c\x23\x93\x80\xc3\x70\x56\x8f\xa3\x57\x06\x4e\x9e\xd5\x99\x03\x35\x5c\x33\x21\x69\x79\xed\x98\x6e\x7a\x41\xec\x95\xf8\xc3\x2e\x5a\x11\x67\x15\x4d\x30\x36\x8c\xcb\x5c\x9b\xb2\x7d\x02\x1b\xcd\xc8\x8c\xa3\x04\xe6\xb0\xb2\xfc\x0f\x84\xe9\xc0\xbf\xd0\x07\x6c\x90\xa2\x8d\xdb\xb9\x3c\x7d\x73\xca\x08\x63\x58\xed\xe0\xfa\x94\x93\xee\x60\xe8\xd9\xf1\x9c\x93\x3e\xdc\x72\xb2\xd1\x43\xd8\x5d\xc3\x1b\x3d\x8a\xb8\xdb\x9d\xf3\x5e\xaf\x28\xc0\x26\xd6\xb3\xe9\xda\xcc\xe9\x6c\x3e\x5e\xf1\xfd\xb7\xfe\xdb\x25\x38\x93\x62\x89\x6e\x79\xc3\x55\xda\xa2\xc5\xc3\x5d\xb7\x95\x7b\x0e\x4b\x0e\xd7\x1c\xae\xb6\x97\xfa\x1d\x27\x87\x88\xad\xe6\x82\xd3\x9c\xad\xc4\x34\x67\xab\x64\x8a\xa3\xef\x34\x77\xa6\x77\xf4\xea\x86\xa9\x43\x66\xaf\x70\x7b\x49\x31\x9c\x68\xba\xb1\x10\xa9\xd1\xa0\xe1\x52\xbf\x65\x54\xbd\x5c\x2e\xe9\x94\x25\x8a\xc2\xa9\x4e\x49\x17\x34\x91\x55\xda\x39\xaf\x05\x67\xfa\xa4\x5f\x5e\xd3\x2c\x4b\xae\xe9\xf1\x3c\xe1\x9c\x2e\xe0\xb3\x4e\x7b\xea\x9d\x08\x8f\x35\x14\x2f\x0c\x05\x7a\xcb\xb7\x97\xcb\x05\xdf\xba\x60\x52\x2f\x07\xb7\xdc\x2f\xf8\x58\x4d\x86\xee\xec\xb8\x79\x01\x23\xe4\xc3\x51\xeb\x85\xbb\x35\xb8\xbd\xe5\x46\xf8\x82\x37\xcd\x8c\x3a\xd9\x5c\x0d\x82\x0b\x78\xd5\xfc\x24\xa2\x95\xc8\x94\x1b\x07\x52\xbd\x20\x80\x13\x77\x1f\x54\x2a\x16\xbd\xe0\xf0\x30\xe8\x9d\xf0\x68\x2e\x32\x85\x8b\xe1\x25\x0f\xc3\x53\x9e\xe7\xe8\xb2\x59\xcb\xd6\xd6\x68\x4b\x38\x30\x39\xc4\x74\x3b\x1c\x98\x34\xe1\xc0\xfc\xe6\x2c\x1f\xf7\x7a\xc7\x4d\x6c\x69\x77\x4b\x51\xf1\xb3\xaa\x69\xec\xc4\x2f\x1f\x6f\x12\x17\x70\xcf\xd1\x31\xc7\x70\xcc\x0b\x3d\x8b\xf5\x6e\xd6\x41\x5a\x98\x80\x86\xc6\x42\xa3\xb9\xf7\x39\xc7\xa3\xfb\x66\xee\x73\x5e\x39\xd7\x1f\x99\xb6\x8a\xf8\x33\x0f\xc3\xcf\x3c\xe2\xe2\x6e\x3b\xb7\x4d\x2d\x33\x7e\xe2\x61\xd8\xbd\xe3\x23\x74\xcd\x09\x5a\x72\x73\x18\xe1\x13\xc7\x91\xa6\xcc\x0f\x61\xc9\xcd\xc3\x20\x12\x7c\x69\x41\x4f\xde\x70\xb8\xe7\x9a\x10\x5f\xf3\xfa\x94\x68\x5c\x1f\x60\x1c\x77\x45\x94\x4c\xa7\x27\xb7\xd4\xc6\x12\xa1\xdc\xd8\xb8\x76\xe8\x72\xa7\x56\x34\xcf\x45\xc4\x96\xba\x9d\x73\xa3\x91\x67\x79\xce\xd0\x2b\x8e\x75\x39\xb6\xa0\xb1\x16\x73\x6a\x73\xad\x07\x14\x08\x6e\x0c\x59\xc6\x21\x23\x9d\x27\xfc\xda\x5c\x3f\x79\x8a\x02\xab\xd4\x07\xcd\xcb\x01\xb6\x6e\x8e\xa8\x65\xc3\xd1\x6e\x4d\xf5\x99\x7d\xa0\x1a\xa7\x5e\xad\x90\xe9\xb0\xb7\x21\x21\x65\x54\x5d\xb0\x25\x15\x6b\x65\x41\x0b\x7d\x5c\xc4\xe8\x9e\x93\x57\x1c\x76\x41\x82\x02\x07\xce\x00\xde\x70\xe8\x0e\xb0\x3b\x37\x72\xc3\xe1\x8c\xc3\x6b\x0e\x0f\x38\x3c\xe5\xf0\x92\xc3\x33\x0e\xef\x38\x3c\xe1\xf6\xfe\xbc\x4b\x0e\x66\xad\xc7\xa7\xbc\x80\xe7\xdc\xc4\xf9\xf9\xc2\xc9\x13\x6e\xe2\x69\xff\x61\x96\xba\x73\x68\x3c\xbd\x32\x3e\x36\x52\x43\xf7\x57\x7a\xf5\x33\x53\xdb\x5f\xe0\x7d\x9d\x4e\xbc\xa8\x0b\x28\x1f\x38\x69\x60\xdd\x7b\x8e\xe1\x67\x4e\x9e\x73\x24\x20\xf8\x63\x4d\xd7\xf4\x35\x4b\xa5\x50\x49\x76\x13\x60\xf8\x85\x93\x9f\x79\x18\xfe\xcc\x2d\x47\x18\xfe\xa2\x57\xde\x0d\xdf\x51\xf2\x81\x9a\x20\x3f\x1f\xb8\xf1\x67\x79\xcf\xdd\x55\x24\xc6\xf9\x94\x7e\x66\x0a\xe1\xe1\x19\x1f\xe2\x0d\x25\x67\x3c\x9a\x69\x50\xe8\x07\xc3\x9e\x34\xc5\xa7\xf5\xcb\xad\x2d\xe5\x3d\xe3\xa3\x07\x1c\xe1\xf8\x35\x77\xb1\xe8\x41\x15\x45\xed\xc5\xd4\xcc\x15\x95\x08\x17\xf0\x41\x67\xae\x77\xea\x7d\x6d\xe1\xdc\x70\x5c\xc4\x7f\xf8\xc5\xf0\x54\x33\x06\x78\xc9\xab\x5b\x53\xac\x65\xe2\x82\x7e\x56\x6f\xc4\x94\xa2\x20\x30\x51\xef\x3b\x7f\x70\x5d\x32\x12\x16\xa4\xe8\x25\x87\x4d\x3a\x4f\x64\x92\x2a\x2a\x9f\x26\x2a\xb1\xe7\xde\x9a\xcd\xbe\xe4\xf6\xfa\x23\xdd\xc8\x53\x5e\xe0\xf8\x05\x0f\xc3\x17\xdc\xab\x86\x23\xf4\x8c\x93\xea\xd5\xab\x57\xf0\x8e\x93\x67\xdc\x28\x8d\x5b\xf5\xbd\x73\xb1\x04\x9f\x71\xd0\xa3\xc0\x71\xf3\xf3\x17\xee\xcf\x3e\x9a\xaf\x06\xcf\x7e\xe2\xf0\x2b\x87\xdf\x38\xfc\xce\x41\x09\xa2\x27\x6c\x57\x9a\xdb\xcc\x78\xac\xcc\x85\xee\xfe\xa2\xbb\xe1\x6b\x3d\x75\xaf\x79\x79\x73\xff\x99\x9e\xe9\x33\x4e\x28\xe8\x69\xc0\xf0\x9a\x13\x5a\x00\x15\xbb\x7e\x42\x20\xad\x63\xd0\xca\x62\x98\xa1\x33\xaa\xe1\x08\x63\x9d\xb3\xab\x3b\x47\x6b\x21\x17\x5b\xee\xa4\x7d\x92\x4c\xbd\xbe\xbb\x15\x14\x98\x9a\x7b\x04\x78\xe9\x8c\xeb\xe0\x48\x28\x45\xb4\x4c\xd2\x32\x8d\x4e\x91\xb8\x00\x29\xf6\xdc\x40\x62\xc4\x11\x61\x39\x15\x17\xbb\x81\xf6\xcc\xe5\x2b\x4b\x44\x4d\xc8\xbc\x7a\x20\x40\x52\xc9\x97\xd4\x9d\xae\x93\x22\x9a\x55\x57\xd8\xa1\x3e\x48\xdf\x31\xac\xbb\x25\x3d\x60\x0a\x10\x4d\xe8\x55\x82\xfc\xc6\x78\x69\xc6\xdd\x81\xbb\xab\x43\x69\x5e\xbb\x65\x7d\xf0\x79\xfc\x7d\x1e\xaa\x28\x0a\x60\xc2\x53\x88\x44\x6c\x49\x23\xa9\x20\x81\x03\x63\x00\x6b\xe1\x2f\xaf\xcc\x84\x8f\xd1\x3f\x13\xcd\x18\xfd\xa9\xc0\xb0\x10\x84\x73\x58\x09\x22\xa2\x72\x46\x60\x2e\xea\x97\x4a\xdf\x8a\x1a\x69\xb9\x17\x26\x9e\xe4\x8c\x2a\x13\x6f\x6e\x29\x0c\x34\xe0\x5a\x90\xa5\x80\x2b\xd1\x24\x35\xb7\x02\xc3\x9d\x20\xdd\x2e\x9a\x8b\x30\x9c\x0b\x7f\xd7\xf4\xad\x71\x9c\x10\xa5\x1f\x91\x49\xc0\x70\x22\xc8\xb1\x42\xa9\x80\xad\x68\x83\x5d\xf4\x14\x2d\x04\xee\x96\x1a\xf2\x42\x60\x6c\xbe\xfc\xf8\x23\x21\xe4\x39\xad\x22\x11\xea\xdc\x57\xa2\xae\x40\x96\x5c\xca\x81\xe6\xcc\xe0\x0b\x13\xdc\x36\xea\x4b\x16\x6c\x86\x6c\xa0\xc8\xd6\x1b\x78\x17\x65\x40\x8b\xee\xc0\x85\x3b\x5c\x88\x72\x59\x0f\x30\x6c\x39\xe6\xa1\xad\x43\x78\xcd\xd7\x32\x70\x34\x52\x3b\x41\x27\x13\x31\x21\x14\xba\x48\x6d\xbb\x31\x9b\x82\x0d\xb1\x5c\x2f\x8b\x4b\x41\x4e\x44\x9e\x77\x77\x10\xba\x4b\xc3\xb0\x3b\xe5\xcd\x5e\xcb\xba\xc4\xad\xa5\xc4\xe1\x1e\x69\xf9\xab\x52\xb8\x34\x92\x76\x51\x80\x42\xbc\x2e\x2c\x97\xfb\x1a\x4d\x7d\x72\x21\x22\x77\xa3\xfe\xf6\xb1\x11\x0b\x0b\x8c\xe1\xb4\x85\xca\x94\x01\xe3\xcd\x15\xdc\x6d\x82\x07\xa2\xc4\x42\x49\x6b\x2d\xb4\x80\x73\xd1\x76\x15\x4d\x97\x46\x5c\x28\x36\x63\x74\x8a\x37\xd5\xb3\x0f\x93\x6a\xce\x00\x51\xe7\x37\x3f\x54\xa2\xd1\xbd\x32\xda\x09\x71\x51\x57\x81\x91\x01\x21\xde\x7b\x34\x21\xfd\xa1\xbf\x45\xec\x71\x32\x74\xc7\x0a\xad\x9e\x4b\xf8\x38\xe9\xf5\x26\xb0\x20\x6c\x34\x8b\xc4\x4d\x3c\x8b\x66\x09\x5b\xc0\xca\xf8\xb5\x18\xbc\x81\xa9\x79\x36\x36\xb5\x39\x99\x39\x16\x6a\xe6\x67\x31\x42\x2c\xcf\xd1\x43\x42\x4c\xf7\x1c\xca\x86\xe1\x85\xb0\x2e\xba\xb5\x44\x32\xc0\xd0\xed\x13\x42\x16\xa3\x94\x88\x18\xcd\xc3\x70\xee\x19\x25\xa4\x64\x81\x04\x86\x79\x18\xa2\xb9\xe3\xcb\x90\x59\x97\xa8\x94\x10\x32\xf3\xa4\x6a\x34\x45\x2b\x81\x3c\xf9\x38\x48\xe7\x09\xe3\x9d\xf4\x3e\xd5\x6a\x30\x8e\xd1\x9a\x9c\x0a\x94\x62\x3c\x5a\x5b\xfe\x93\x6a\x1d\x1e\xc7\x2b\x9d\x16\x4f\x91\xa8\x61\xc1\x3c\x0c\xbb\x99\xe9\x82\x6d\xcd\x38\xb3\x16\x35\x18\x6b\x71\xbd\x3e\x0d\x03\x90\x61\xd8\x6d\x8c\xf2\xb3\x1d\xa5\xb5\x42\x7e\xda\x9d\x55\x1b\x08\x98\x0d\xef\xc4\x08\x21\x4e\x9a\x84\x05\x05\xe6\x47\xcb\x83\x9e\x41\x51\xd0\x2c\x38\xc9\x04\x27\x12\xb8\xd9\xc6\xb0\x59\x15\x74\x07\xe6\x28\xf4\x16\x2d\x42\x1c\xe3\x98\x93\x8d\xab\x20\xa6\x60\x8b\xc7\xb2\x00\xc4\x88\x18\x07\x82\x07\x3d\x35\xc1\x23\x86\x38\x8e\x83\x35\xb7\xe7\xc6\xa6\xe5\x20\x02\x1b\x98\xa3\xcd\x39\x54\x98\x35\x2f\x16\x74\x68\x8e\xa9\x1b\x2a\x1f\x86\x68\x40\xc8\x8e\x7f\xe7\xc8\x7d\x46\x0a\xc7\xe5\xa3\xd9\xe1\x42\xc1\x3b\xdf\x66\xc7\xf5\xb2\x53\x35\x6e\xbc\xd4\x3f\xef\xb0\x39\xe1\xa5\x87\x1d\x9f\x68\x73\xe6\xd1\x4a\x7c\x9a\x19\x0a\xc3\x08\x91\x24\xa2\xb9\x1e\xae\xc4\xe8\x56\xb8\x53\x5d\xe5\x98\xcf\xaa\x66\x39\x28\x1c\x7f\x12\xa8\x0d\x20\xa0\xc5\x02\x13\xc2\xbe\x86\xbb\x57\x22\xcf\x4d\x6b\xa3\x87\xf1\x00\xdc\x10\xbd\x89\xc6\x5d\x3c\x6f\x5c\xe1\x8f\x45\x9b\x1a\x3a\x30\x41\x17\x6a\x98\xd3\xf5\x51\x44\x0a\xb8\xf8\xb6\xe1\xd7\x87\x54\x56\xf4\xc2\x76\x3e\xf0\xc3\x29\x3f\xcc\xcb\x0f\xe0\xe0\x65\x03\xf8\xbc\xdd\x46\xd2\xda\x5d\x53\xe5\x07\xa1\x19\x83\xfe\x26\x34\x24\x0a\x38\x6a\x2b\x44\x8d\xbd\x26\xcf\x91\x7d\xd0\xb2\xab\x8b\x32\x8d\x7d\x93\x44\x82\xa3\x40\xe4\x21\x9c\x9b\xb5\xa2\x91\x18\x17\xf0\xa6\xad\x46\x4b\x03\x75\x65\xbe\xf6\x7a\xa5\x86\xdc\xb0\x19\x52\xa4\x92\xcd\x6a\xa4\xa0\x93\x26\xfc\x2f\xaa\x73\xa5\xb1\xcb\x10\xad\x69\x87\xa9\x8c\x2e\x66\x81\x3f\xdc\x7f\x2a\x90\xc4\x43\x31\xda\x22\x9d\x8e\xc3\x58\xb3\xcd\xa0\x30\xcd\x08\x7f\xa3\xc8\x5b\x81\xde\x08\x8d\x10\x9a\x96\xbd\x15\xe8\xc8\xbf\xd4\xae\xfd\x3f\x12\xf6\x7a\x13\x1b\xa8\x15\xc7\x68\x77\xf4\x83\x72\xf4\x83\x9d\x92\x65\xcb\xae\x86\x62\x78\x22\xc2\x10\x2d\x44\x7b\xe8\xab\x3a\xc3\x40\xaa\x69\xfe\x6a\xbf\x63\x5c\x4a\x6b\x52\x46\x72\x24\x7b\x41\xc7\x44\xdc\xea\x05\x8c\xdf\x3a\x03\x4f\xe0\xc2\x5a\xc0\x42\x80\x96\xb4\xec\x95\x68\x3f\xd5\x82\x85\xfb\xcb\x15\xd7\xc2\xbd\x9a\xc3\x5a\xc8\x01\xc7\x5e\x7f\xe2\xa1\x63\xdf\x6a\x74\xf6\x48\xf8\xcb\x28\x8c\x4c\x8b\x7e\x6a\x9a\x06\x32\xf7\xd9\xba\xab\xa5\x02\x1c\x38\xc0\x13\x5e\xfd\x6c\x97\x8a\x7e\x2a\xa9\x73\x3c\x9e\x40\x89\xed\xfa\x8b\x3d\x74\xea\x65\x50\xa7\x3c\x34\x6e\xb0\xd8\x21\xcf\x65\xac\x76\x7b\xdf\x2a\x55\x66\x22\xcd\x85\xab\xb2\x76\x75\x1c\x5a\x88\x9a\x2d\x7c\xa3\x19\x79\xdc\x42\x2f\xad\x15\x99\xcc\x1c\x90\x20\x21\x4b\x81\x90\x24\x0b\x51\xed\x10\x21\x41\x8e\xdd\x3d\x12\xcd\x6b\xd1\xec\x26\x06\xe2\xe4\x18\x09\x3c\xbe\xe2\x13\x3c\x92\x31\xa5\x9a\xbe\x57\x21\x71\x23\x71\x43\xda\x6e\xc5\xcb\x73\x05\x89\xe1\xda\x6d\x2e\xcd\x34\x0c\x29\x24\x8e\x69\x13\x4b\x46\xec\x8b\xbf\x88\x84\x39\x5a\xa4\x97\x1b\xab\x18\xa0\x33\x49\x61\xe8\x77\x09\xb3\x98\x1c\x86\xe7\x6e\xbe\x98\xc6\x65\x48\x2a\x15\x22\x6d\x86\x03\xd8\x0a\xd2\x68\x64\x44\xaf\x21\x1b\xdf\xa3\x5f\x77\x75\x75\xa3\xa0\xfd\xc4\xc1\x62\x1a\x6e\x2a\x6f\xaa\xa9\x59\xf9\x95\xb9\xa5\x5e\xf9\x35\x4a\x8d\x8e\x15\xcd\xc8\xb2\x95\x1e\x6b\x22\xb2\x10\x79\xae\x7f\x7f\xe3\x23\xdd\xee\xaf\xfa\x7b\x7c\x6d\x54\x2f\x68\x0b\xa1\xaf\x09\xd1\xef\x9c\xf0\xda\x8d\xf0\x56\x33\xa6\x0a\xf1\xe6\x35\xf1\x73\xca\x1b\x77\x9d\x34\x0f\x4e\xd6\xad\xd3\x0b\xb1\x7d\x30\xe3\x77\xee\x89\x8f\x13\x2d\x2c\xec\x7c\x3c\x9a\xda\x1e\x4f\x5b\x2f\xef\x85\xbd\x1e\xa1\xba\x63\xa4\x19\x2f\xd6\x6f\x29\xf6\x0b\xd8\x18\xdd\xa8\x55\x07\x15\x68\x21\xe0\xde\x9f\x8c\x10\xb5\xdb\x01\x0d\x89\xfb\x93\x6b\x4c\x4e\x44\x01\x1b\x47\x96\xe3\x85\x28\x4c\xfc\x7f\x43\x5c\x0c\xce\xec\x2a\xfd\xc2\x9e\xd1\x22\x6f\xa3\xd9\x30\x09\x43\xad\x10\xd0\xb1\xe0\x93\x30\x94\x88\x82\xe0\xdf\x7a\x47\x8b\xb1\x9c\x17\xb8\x30\x0a\xe3\x6f\x5c\xd7\xab\x9f\x6a\x5b\xac\xa9\xd8\x8e\x1f\x6d\x3a\x6b\x91\xa7\xe5\x32\x93\xa5\xa7\x78\xb5\xa3\xcf\x36\x78\x8c\x9e\xa2\x12\x9f\x81\x96\xeb\xa0\xf8\xb6\xf6\x0c\x12\xef\x81\x7d\x19\xf3\xec\x4f\xaa\xba\xd4\x55\x25\x8b\x45\x4b\xbf\xdd\x8e\xfd\x52\xd8\x3b\xb5\x4a\xbd\x1f\x84\x79\x36\x92\x3c\xdb\x16\x9a\x5c\x70\x21\x8a\x4a\x8f\x01\x6c\xee\x84\xd7\xea\x03\xa4\x64\x30\x5c\x68\x34\xdc\xd9\x82\x5b\x93\xa4\xd7\xd3\xc2\xfa\x60\xe8\xee\x7a\xf7\xd6\xa3\xb4\xd7\xf3\x81\xf3\x35\xf5\xdf\x56\x14\x35\xf5\xcf\x73\x94\x19\xb2\x33\x5e\x4f\x88\x82\x83\x83\x34\xcf\x39\x62\xc6\xe5\xde\x9c\x42\xaf\x92\x8a\xda\x0d\xf2\x5e\x18\x15\x88\x39\xe9\xa6\x6e\xcd\x90\x49\x4a\xbf\x0d\x28\x06\x10\xa2\x0d\x10\xa2\x09\x88\x96\xb1\x8b\xed\x91\x55\x50\xe6\xee\xe0\xaa\xef\xaf\xf0\xfd\xe5\x48\xec\xf6\xd7\xd9\xc7\x5e\x89\x5d\x82\xe8\x98\x85\x39\x5d\x53\x45\xdd\xb4\x2b\xcf\x9d\xa8\x31\x1b\xee\x11\xbb\xe6\x42\xd2\xe3\x24\xa3\x2e\x99\x05\x36\xac\xec\x42\xb1\x05\xe3\x3e\x75\x69\x52\xa7\x42\x1d\x2d\x7c\xf9\xcc\x24\xad\x39\x4b\xcd\x89\x10\x93\xb6\x36\x69\x99\x62\xe9\xcd\xbd\x4b\xba\x0f\x30\xd0\x5a\x6c\xab\x1b\xd1\x38\x26\x7b\x46\xaf\x4f\x3e\xaf\x2c\x95\xd2\x5d\x3f\x13\xf0\x5a\xc0\x03\x41\x36\xef\xde\x9c\xbf\x7b\xfb\xf6\xf4\xec\xe2\xe4\xe9\xe5\x6f\x71\xdb\xa5\x2c\x37\x02\x05\x49\x00\xba\x89\x6a\x8c\x8b\x24\x53\xe6\xd2\x47\xf2\x10\xdc\xf6\x69\x44\x3f\xd3\x14\x05\xc9\x55\x3a\x0d\x0c\x6a\x3c\x39\x3b\xfd\xf9\xe4\xcd\xe5\xf1\xd1\xd9\xc9\xc5\xde\x9a\xff\x29\x03\x08\xae\xbf\xb1\xee\x4c\xc9\xc0\x0a\xca\x4f\x05\xb1\x63\xaa\x51\x7b\x9d\x07\x5e\x0a\x67\xdd\xd9\x3d\x5a\x0b\xcf\x04\x79\x2a\xe0\x9d\x20\xe8\x4c\x90\xc3\xe4\x10\x5e\x0b\x72\x78\xf5\xdd\xe1\x35\x3c\x75\xd8\x72\x26\x20\x48\x02\x5c\xbe\xbf\x76\xef\xfd\x2e\x21\x67\xa2\xea\x59\x9e\xeb\x94\xd7\xb5\x14\x0c\x4f\x04\x79\x20\xa2\x06\x3c\xf3\xfc\x81\x88\xea\x60\x80\xe7\x82\x94\x26\xcc\x43\x84\x47\xa3\x43\x37\xb4\x00\x8f\x07\x93\x21\x7a\x27\xf2\xfc\xb9\xc8\xf3\x27\x42\x2b\x4e\xcf\x5a\xad\xa6\x4e\x92\x31\xeb\x25\x21\x4f\x84\xb9\xf3\xdd\x20\x03\xa4\xe4\x95\xeb\x39\xc3\x26\x8a\x4e\x66\x42\xb2\x43\x46\xfa\x30\x23\xaa\x76\xcf\x18\x3a\xd0\x8a\x22\x4a\x49\x5a\xde\xce\x1f\xdc\x07\x10\x68\x7d\xd7\x87\x2f\xd3\xc8\x1b\x86\x28\x75\x68\x3c\xab\x2e\x8f\x72\xc7\x5d\x59\x7d\xfc\xb5\x97\xc7\xfd\x30\x44\x5d\x56\xe1\x77\x9e\xb3\x3a\xb2\x07\x1f\xb5\x7c\x44\xd4\xb8\x56\xe6\x60\x60\xee\x92\x5d\x93\x00\x8d\xe2\x4e\xd0\x5b\xf7\x02\x1c\xc0\x8c\x04\x9d\xa0\x37\x83\xac\xd7\xf3\x97\x5a\x3b\x5c\x0e\xfe\x89\x46\xb1\xcf\x96\x62\x0c\xcf\x85\x51\x35\x1b\x59\xcc\xf7\x07\x68\xd4\xfd\xf8\x31\x73\xd9\xde\x09\xa3\xb1\x34\xba\xce\x89\x9f\xf0\x64\x24\x63\x06\x33\x0c\xc9\x88\x8f\x90\xd6\xf1\x57\x6b\x45\xdc\xaf\x1b\x75\x86\x81\x8f\xfb\x13\xa2\xff\xd4\x92\x2c\xd8\xea\x15\xd7\x41\xd2\xb3\xd9\xdd\x66\x7e\x5c\xfb\x42\xfa\xb1\xee\x93\x96\x5f\xea\xa9\xcc\xd1\x91\x91\xab\xb8\x57\x2b\x1f\x53\x3b\x5c\x13\x8d\xd5\x7b\x12\x85\xe1\x4b\x37\x08\x6e\xdc\x3a\x60\xdb\x02\x25\xc8\x60\x28\x76\xfc\x81\x0f\x1e\x0e\x45\xaf\x87\x4b\x19\xb8\xda\xe3\x14\x93\x30\x44\x7c\x2c\x26\xa4\x72\xe7\x02\xee\xc8\xe1\x17\x41\x9e\x89\x86\x7b\x94\x05\xfa\xae\x7f\xd4\x61\x64\x71\xbc\x4b\xc8\x17\xcd\x12\xf5\x73\xfc\x45\xb8\x7a\xfe\xd8\x36\x3f\xbf\x17\xa4\xe5\x86\x1d\x45\x0e\xa3\xc3\x8a\x44\xe8\x3a\x76\xc9\x71\x75\x3f\xa1\x8a\xcc\x81\x8b\x8c\x6c\x92\x38\xf8\x5b\x50\x80\x2a\x20\xf8\x9b\xc6\xb9\x20\x28\xf1\x5d\x41\xf0\xe0\x51\xf2\xd8\x12\xab\x17\x82\x04\x0f\xfa\x01\x21\x24\x48\xaa\x2c\x87\xd1\x21\xe8\x64\x0c\x1f\x6c\x3f\xdd\x87\x00\xc3\xcf\x82\x74\xbb\x87\xd1\xe1\xf8\x83\x86\x93\x89\xc3\xe5\xde\x2c\xb9\x34\xa5\x7e\xd9\x37\x18\x34\x8a\xf1\xa1\x39\xb2\xa5\x87\x32\xdc\x1d\x51\x29\xd1\xd4\x8e\xbf\xd6\x6e\x81\x76\x66\xd8\x20\xb9\x0a\x5c\xa0\xd8\x72\x23\xa1\xf3\xb0\x4b\x88\x0f\x3d\x96\xe7\x41\xa2\x87\x2d\xc7\xfd\x49\x9e\x07\x57\xf6\x79\x30\xd1\x43\xfe\xa9\x55\xf6\xae\x3c\x3c\x2b\x13\x99\x26\x37\x6e\xed\xdf\x22\x8a\xb5\xf2\x64\x9d\xc1\x53\xc2\xca\x23\xc4\x8e\xb4\x3c\xea\xe7\x79\xf2\x98\xa4\x23\x35\x0a\x02\xa7\xc2\xc4\xc8\x1c\xfb\x9d\x27\xf2\x58\x4c\xe9\x91\x42\x09\xc6\x8f\x7e\xf8\xe1\xe1\xdf\x7f\xcc\x73\xfe\xf8\x87\x1f\xbf\x1f\xfc\x3d\xcf\x93\x9e\xa6\x48\x69\x9e\x23\xb1\x95\xb9\x37\xd0\xd9\x7f\xfc\xfe\x61\x3f\xcf\xc5\xe3\x1f\xfe\xf6\xfd\x5f\xbf\x1f\xa9\x11\xf3\xc7\x58\x13\x1c\xf3\x58\xbf\xdb\xb5\x98\x40\xd2\x7b\x88\x63\x71\x60\x4a\xf4\x10\x3f\x30\x2d\x3d\x7a\x34\xe8\xe3\xde\x8f\x3f\xfc\xf0\xfd\x8f\x45\x01\xbf\x0a\xb2\x49\x4d\xf5\xf1\x4f\x02\x69\xb9\xd7\x56\x66\xde\xfa\xb8\x70\x75\xc3\x6f\xbb\x56\x43\x3f\x33\x5a\x63\xff\xd5\xb2\x59\xbf\x2c\x07\xb8\x80\xdf\xb7\xed\x45\x3e\x94\xa2\x99\xe8\xf6\xfb\xbf\xca\x20\x13\x65\x68\x27\x6a\xbc\x86\xbc\xa7\x4d\xa9\x4b\xf2\x5d\x1b\x82\x5d\x76\x1d\x5d\x7b\xc7\x7a\x67\x77\x6c\x0f\xe9\xb4\x93\x09\x9d\xc2\xf8\x75\x47\xa8\x39\x95\x1d\x35\x4f\x78\x27\xf1\xe7\x0f\x3a\x42\x9a\x7b\x15\x2a\xde\xcb\x0b\xdd\xa8\x5b\xc8\x5d\x42\x56\x6d\x97\xf9\xb9\xef\xff\x66\x5a\x34\xce\x74\xd3\x8e\xd0\x3a\x7a\x2a\x96\xab\x44\xb1\xab\x05\xed\x48\x9a\x52\x76\x6b\xee\x56\x72\x55\x7f\x11\xd5\xd0\x0a\x50\x8c\xbc\x4e\xd4\x3c\x5a\x26\x9f\x81\xfa\x67\xc6\x41\xba\xe7\xd9\x42\x08\x09\x9c\x91\xc3\x8f\x0f\xd0\xf8\x41\xf8\x97\xff\x3d\xc9\x3f\x4e\x3f\x4e\x47\xf9\xa3\xf1\x3f\x1f\x4f\xbe\x7b\x8c\x0f\xaf\x41\xec\x7e\xc6\x87\xd7\x6d\xf1\xb6\xac\xc4\x68\xaf\x9d\x4c\xda\x56\x24\xad\x1d\xb5\xa7\x9a\xe2\xed\xae\xc4\xbf\x15\xf0\xb7\x2e\x09\x82\xb1\x9a\xb8\x10\xa8\x29\x49\x76\x2e\xb5\xb2\x95\x75\x07\x20\xb5\x80\xe1\xef\xb2\x33\x2b\xd4\x99\x72\x91\x8d\xaa\xb1\xb5\x61\x63\x23\x3c\xf9\x84\xf1\x1f\xad\x5d\x90\x3a\xdb\x6c\x91\x5c\x67\x24\x08\x40\xea\x7e\x6a\x92\x23\x26\x5a\x5c\xdd\x47\x40\x8c\x91\x6e\xbd\x58\x14\xa6\x80\xd9\xa5\xee\x52\x2d\xfc\xb2\x19\xea\x26\x79\xde\x4d\xf3\xbc\x24\x6b\xae\x8b\xdd\xf7\x22\xcf\xbb\x2f\x44\x9e\xff\x2c\x70\x9e\x37\xfa\xdf\xfd\x45\x78\xc5\xc2\x36\x0e\x19\x91\x48\x80\x81\x4c\x53\xab\x86\xe6\xc5\xf7\x56\x42\x23\x9a\x0d\x8c\x34\xe4\xc4\xc8\x19\xd7\xbc\x55\x68\xdd\xb8\x4d\x3f\xde\xfa\xaa\xca\x7b\x84\xeb\x5f\xcd\xb5\x8f\x9b\xb3\x93\xb7\xaf\x8e\x8e\x4f\x2e\x7f\x3e\x39\x79\x7b\x7e\xf9\xa0\x1f\xbf\x10\x70\x76\xf2\xfc\xe4\xc3\xdb\x4b\xff\xe9\xfc\xdd\x93\xf3\x8b\x97\x17\xef\x2e\x4e\xce\x2f\xdf\xbd\x79\x7a\xf2\xec\xe5\x9b\x93\xa7\x97\xc7\x47\x6f\x2f\xde\x9d\x9d\xc4\x3f\x6b\x3d\x78\x46\x32\xcd\x39\x17\x24\xd3\xb2\x18\x55\x68\x5b\x92\x04\xa5\x45\x03\xaa\xd0\xb6\xec\x09\x02\x1e\x12\x42\x47\xcd\x95\xdf\x3c\x59\xac\xbc\xf5\xad\xf5\xae\xe9\x46\x26\x5c\xe0\x82\x87\xe1\xd1\x4e\x3b\x1a\xdc\x41\x36\x4f\x96\x81\x09\xca\x51\xf1\x23\x78\xb8\x0b\x7a\x8f\xf7\x3c\xfa\x57\x40\x61\x82\x44\x6d\xc3\x13\x12\x22\x46\xc1\x83\x20\xd6\x6c\xcd\x61\xf5\xb8\x6c\xaf\xd6\xd6\xad\xd3\x88\x18\xb1\x26\x33\x39\x72\x1c\x40\x56\x37\x99\x55\x8e\xa4\x6c\xc4\xfc\xa4\x0a\xe0\x38\x76\x27\xbb\x1d\xab\x11\xd8\x22\x02\xec\x78\x04\x74\xb5\xcc\xab\xf1\x72\x2b\x2a\x0a\x0f\x43\x23\xd6\xf2\x52\x84\x4d\xb0\x47\x56\x89\x7c\xf8\x19\xe0\x06\xf9\xd7\xd6\x96\xed\x0f\x18\xb8\x4d\x02\x1b\x76\xd3\x6c\xe3\x57\xf2\xae\x19\x52\xab\xf5\x8e\x0f\x17\x79\x8e\xb8\xcf\xc9\x9d\xd3\xce\x8a\x64\x4e\x7c\x1b\x9a\x6b\xfe\x4d\x1f\xa6\x24\xf3\x8a\xdc\x30\xab\xcb\x7f\x85\xb7\x74\xce\xb5\x08\xe3\xf6\xff\x6e\xc9\xef\x02\x65\x30\xb3\x51\x4b\xad\x13\xf5\x2d\xbe\x92\x34\xb9\xd1\x29\x73\xa7\xcb\x63\xe8\xae\x5c\x6a\x50\x73\xfe\xbe\x1d\xf7\x8d\x38\x5d\x6f\xe7\x37\x81\x66\x90\xa9\x7a\x1a\x86\x29\xc6\x65\xf3\xf7\xb0\xd4\x84\xe5\x9a\xf4\xe1\x8a\xf4\x87\x57\x8f\xe6\x9e\xb9\x5f\x99\x33\x63\x64\x3e\xbe\x9a\x94\x97\x72\xdd\x35\xda\x82\x13\xa2\x18\xa2\x0c\xa5\x0a\xdd\x5a\xf0\x63\x98\x79\x79\x17\xfa\x18\x2e\xc9\x78\x02\xa7\x64\x30\x3c\x7d\x74\x5b\xc6\xc5\xec\xf5\xf0\x65\xdd\x2a\xa1\x75\x92\x7b\x72\x3b\x3e\x9d\xe0\xd1\x7d\xec\x1a\xb8\x77\x50\x3d\x27\xb7\x4e\xae\xd3\x10\x58\x58\x38\x7d\x22\xe3\xbb\xf2\xec\xfd\x25\x9c\x68\x88\x95\x08\x76\x1e\x86\x9f\x6c\xf5\xe7\x2e\x60\x4c\x39\x53\x4d\xe7\xbb\x4f\x18\x9b\xf3\xfe\x9d\xcf\x24\x45\x77\x30\x83\x13\xb8\x84\x73\x8d\x29\x27\x8f\xc9\x75\x18\xa2\x65\x8f\xcc\x9c\x80\x71\x0d\x27\xb8\xf7\x19\xae\xc9\x49\xef\xce\x0f\xd0\x6f\x5a\x2f\x7b\x65\x2e\x5c\x4c\x86\xf5\xf3\x12\xf5\xc3\x23\xf6\xe0\x08\xef\x79\xef\x5e\x58\x57\x47\x66\x32\x22\xd8\xee\x4a\xd1\xda\x01\xb9\x31\x01\x00\x33\xc2\x19\xf6\x11\xf8\x13\x68\xde\x12\xe1\x2a\xcf\x86\xd9\x1d\x53\xe9\x1c\x25\x5e\x4a\xea\x63\xbc\x49\x93\x8c\xea\x55\xec\xd8\xd2\x83\x60\x68\x52\x42\x9f\xd2\x51\x36\xe1\x7f\x97\x09\xb2\x16\x89\xd4\x7e\xfb\xcb\xce\xb7\xd4\x7d\x79\x14\xc4\x19\x61\xe3\xc4\x25\x0f\xe0\x60\x80\x27\x43\x8b\x9b\x53\x3a\x4b\xd6\x0b\x15\xeb\xbe\xcd\x48\x2f\xd1\x13\xa8\x27\x7b\x56\x39\xc5\xb0\x19\x9a\x3d\x5e\xdb\xee\x2f\x88\x64\x68\x76\x38\xa8\xee\xcc\xb7\x3b\xd3\x34\x5e\x3c\x22\xeb\x51\x89\x2b\x62\xbc\x38\x18\x4c\x46\xe5\x20\x07\x38\xb6\x49\xbd\x7a\x12\x2d\x32\x22\xc6\xb3\x83\x41\x19\x93\xa1\xac\x20\xd3\x42\x6a\x56\x58\xc3\xa9\xbd\xc5\x8f\xfd\x69\xdc\xe8\xf2\xe0\x93\x51\x36\x6d\x30\x98\x6d\xb5\x4a\x2b\x95\xfd\x21\x7f\xe4\x05\xf1\x21\xef\xf5\xb0\x09\xcb\x53\x29\x58\xbc\xa6\xaf\x54\x27\x71\x8a\x02\x12\x46\xb6\x0f\x13\x94\xe7\x12\x6a\x38\xc5\x6a\x01\xa2\xfc\xd9\x04\xd3\x1b\x73\x0c\x24\x61\x95\x5b\xb7\x2f\xb2\x66\xdb\xa7\x92\xcc\x81\x8d\x2a\x43\xc6\xbe\xf5\xd2\xad\xb2\xc8\xac\xad\x1b\xde\xcd\x75\x6f\x4f\x16\xac\x74\x31\xf1\xee\xf7\x6d\x02\x6f\x2d\xce\x95\x19\x2e\xae\x60\xdf\x07\x5e\x5e\xbf\x32\x94\x8f\xf8\x50\xf6\x7a\x98\xd6\xae\xc4\xb4\x97\x8a\x81\xb2\xd7\x63\x74\x1a\x57\xce\x28\xbc\x03\xe0\xa6\x4f\x73\x79\xa1\x28\x2e\x43\xa4\xb8\x4a\xc5\x04\x04\x28\x6b\x47\x5b\x31\xb2\x71\xe1\x80\xe2\x94\x81\x7b\xb4\x37\xe0\xb5\x70\xf9\xe6\x2c\xd9\x6c\xdb\x10\x02\x96\xed\x2d\x5f\x9b\x91\xae\x99\xca\x30\xf4\x29\x75\xf1\xd1\x7d\x6d\xec\x61\xb5\x1e\x86\x69\x64\x89\x7c\xc3\x61\xd8\x9e\xee\x7a\xf7\x4c\xc8\xa5\xf1\x63\x6c\x19\x5f\xcb\xed\x2a\x3e\x7b\x18\x36\xb6\x43\x7d\x72\xd1\x04\xda\x7b\x46\xef\xbe\xb1\xe2\x5a\xa9\x30\xac\xbd\x44\x2c\xd3\xb5\x8c\x76\x93\x90\xc2\xb1\xf1\xff\xbc\x2a\xc7\x69\x9f\xea\x1d\xab\x15\xd3\x7d\xdb\x3e\x0c\xf4\x95\x90\x6c\x3a\xbb\x3d\xc2\xdf\x96\xdd\x05\xa7\x68\x66\xb7\x48\x18\x67\x1a\x75\xca\x33\x53\xf1\x5a\xbf\x3e\x6d\xde\x4b\xbe\x83\x42\xfa\x7b\x0b\xee\x3c\x63\x8b\xaf\x16\xd3\xdf\xdb\x50\x6e\x21\xae\xbe\x56\x4c\x7f\x6f\x6b\xcd\x95\x88\x67\xcc\xc2\x8a\x26\xcb\x36\xbc\xcd\x2c\xb2\x6a\x52\x11\xad\xd8\x8a\x9a\xc2\xef\xce\x5e\x9d\xd3\x44\xa6\xf3\xb7\x89\x4c\x96\x6d\x27\x32\xdb\xa6\x7d\xab\xd4\x16\x5a\x6d\x7d\xb5\x33\x98\xf0\x69\x22\xa7\x4f\xa4\xb8\xcb\xa8\x3c\xe1\xb7\xbb\x7b\x53\xa8\x2d\x92\x52\x79\xd9\x75\x9e\x07\x67\x34\x49\xd5\x1b\xe3\xcf\xa7\x15\xe3\xf2\x93\xa6\x1f\xd3\x75\xaa\x49\xa4\xfd\x6a\xfd\xd5\xf7\xe6\x39\x6f\xfd\xa2\x25\xb5\xaf\xdd\x4c\xd4\xf6\xcd\xfb\x55\x6a\xf9\xd8\x5d\x8f\xbb\x60\xb0\xa4\xf2\xba\x9a\xff\x8e\xaa\xeb\xb7\x65\xaa\xb4\x12\xfb\x0e\x51\xa7\x63\x3e\x69\xa1\xf5\x72\xa4\x3f\x10\x85\xdc\xd6\x7b\x4c\xed\x9d\xb5\xe5\xfe\x3c\xe9\x83\xd8\x8d\x29\xc7\x1f\x09\xc3\xf4\x16\x0c\xd5\x59\x5e\x6d\xef\x9e\x16\x30\xa5\x74\xf5\xfa\xff\x58\x9f\x5b\xb2\x29\xa4\x95\x6f\x1c\xff\xf7\x0c\x87\x7e\x56\x94\x4f\x77\x6e\x9d\xf7\x3a\x1e\x43\xb4\x21\xac\x71\xbc\xb1\xf7\xff\xb6\x1f\x55\x1c\x31\x66\x24\x82\x98\x1a\xcf\xe5\x02\x94\x64\xad\xcb\x4b\x55\x06\xcb\x7f\x7e\xcc\xbe\x3b\x84\x20\xc0\x55\xd2\xc7\xec\xbb\x07\x26\xa9\x7e\xf9\xc9\xb4\xce\xe8\x29\xd7\x4a\xc9\xbb\xb3\x97\x65\x44\x2f\xa4\x6a\x15\xfc\xfb\x5f\xfb\x87\xd7\x0c\x82\x7f\xd4\x6b\xfd\xf7\xef\x8f\x4c\x62\xdc\x48\x7c\xf8\xd7\xc3\x6b\x08\x1e\x34\xd3\x8e\x4d\x46\x68\x26\xf6\x75\xc6\x5e\x23\xed\x87\x27\x26\xe3\xb8\x99\xf8\xd4\x24\x4e\x02\xcb\x71\xe7\xac\xdd\x39\xb3\x3c\xbc\x67\xbd\x31\xb5\x34\x29\x31\xd7\x5a\x9f\x63\xff\x5a\x0f\x63\xd1\x0e\xd5\x41\x14\x63\x4e\x2a\xf1\x0a\xd5\x2e\xd3\x12\x5a\x1d\x5b\xb1\x32\xb6\x04\xdd\x76\x1a\x70\x92\x4b\x18\xda\xaa\xcb\xb0\x80\xb4\x47\x82\xf1\x24\x88\x8d\xe4\x02\xb5\x1a\xb6\xf6\x28\x4d\xa9\xa7\x36\xda\xe6\xc8\x04\xd7\x16\x2f\xcf\x4f\x7d\x47\x62\xf3\xb9\x3c\xf0\x6a\x24\xa1\x9f\xce\x4f\xdf\x44\x96\xf3\xb0\x99\x39\x78\x05\xc2\x2a\x38\x53\x86\x28\xee\x05\x24\xe8\x99\xa9\xb5\x31\xa3\xb1\x16\x43\x85\x39\x7b\x8d\x82\x30\xc0\x85\x16\xb7\xaa\xe3\xdf\xe5\x46\xcf\xbf\x05\x78\x78\x30\x70\x7a\x86\xee\x88\x97\xfa\x4d\xd8\xf6\x1e\xb1\xbb\x45\xb5\x02\xa3\x00\x8f\x82\x51\x10\xeb\x4a\x7b\xbc\x8a\x92\x51\x21\xd8\x2d\xf3\xe1\x1e\x5c\x2c\xfc\x8c\x8c\x27\xc5\x2d\xab\xc7\x70\xcd\xf6\x84\x08\x6e\x14\xb3\xc3\xdb\xcc\xd6\x8b\x19\x5b\x2c\xe8\x34\x56\xce\xb3\x88\x4e\xf5\xc2\x80\x66\x66\x1f\xd1\xb0\x80\x46\x53\xd6\xfd\xa4\xe1\x5b\x5d\x2f\x36\x56\x13\x1f\xe7\xbb\x96\x64\x6c\x18\x78\xab\x26\x7f\x69\xf0\xd6\x3c\x96\x33\x5c\xaf\xa3\x19\xdf\xc9\x89\x6a\x34\x0c\xdd\x95\x4f\xd6\x8a\x7f\xcf\xc8\x2d\x83\xe5\x2e\x5e\x3b\x60\xd4\x2a\xaf\xef\xe9\x48\xbc\x51\x44\x7a\x07\x57\x4d\x1d\xae\x59\x8b\x3d\xbf\x6b\xc2\x96\x76\x55\x74\x79\x79\x7c\xf4\xe6\xf8\xe4\xd5\xe5\x25\xae\xcd\xd2\x15\x2b\x8f\x2c\x6a\x5d\xc6\x59\x78\xab\x93\x4b\x9d\x79\x62\x8f\xb3\x5e\x51\xca\x3b\x9e\x09\xd5\xe4\xf8\xbb\xd6\x0a\xcc\x89\xa4\x3f\xa9\x42\x8f\xfd\x84\x91\x2b\x06\x97\x8c\xdc\xb1\xaa\x4f\xa7\xcc\x1d\x34\x3c\x61\x5a\x43\x2b\xfb\xe2\x97\x78\xed\x5c\x95\x82\xbe\xb1\x8f\xd8\xac\x57\x2c\xcf\xbb\x27\x0c\x87\xe1\x6e\xa1\x13\x56\xab\x09\xb6\xab\xa8\x1d\x8d\x3e\x61\x26\xa9\x3a\x0b\xdd\xf8\x56\xd7\x04\x1a\xb9\xb6\x72\xb8\xf3\xfe\x7d\x5c\x14\x45\x0b\x69\x9f\x99\x3b\x5f\x5c\x17\xc2\x10\x35\x7a\xd7\xea\x39\x34\x93\x51\x1d\xa8\x61\x88\x2e\x19\xa9\xa7\x38\x13\x09\x83\x4f\xc6\x29\xe4\x33\x23\xdd\x01\x1c\x33\x72\x30\xa8\xc5\x3e\xd5\x93\xf5\x99\x85\xe1\xb9\x5e\xe7\x36\xcb\xb9\xdf\xc1\x19\x7d\x62\xe4\x9c\x79\x4b\xca\x27\x86\x63\x53\x1a\x3e\xf9\x0c\x61\xf8\x96\xa1\xfa\xc5\x03\xfa\xd5\x50\xdf\xcf\xcc\x6f\x6c\x9d\x32\x74\xc1\xf0\x50\x57\xdd\x1f\x56\x47\x2b\xcb\x3a\x86\x74\x68\xf5\xe7\x73\x46\x3e\xb9\xbe\x0e\x7b\xbd\x63\xf6\x88\x0e\xf1\xb9\xe9\xd9\xf8\x98\x4d\x22\xb9\xe6\x08\x0f\x6d\x07\x6a\xc5\x8b\x73\x6b\x58\x74\xc3\xab\xa3\x3b\x9b\x69\x88\x90\x26\x4c\xdc\xac\xd4\xd3\x5c\xa4\x27\x9b\xf9\x4e\x63\xcc\xa5\xc6\x98\xb6\x62\x5b\x10\x86\xed\x6a\x34\x66\x5c\x32\x13\xd6\xa3\x05\x59\x2e\x1b\xc8\xb2\x8b\x2a\x97\x6c\xeb\x0e\xc5\x02\x35\x6e\x52\x3c\x62\xb5\x33\xf3\xb3\x35\xf7\x2e\x76\x89\x39\x36\x4e\x8b\xa3\x3a\x55\x92\xeb\x86\xbf\x9e\x2f\xe3\xcc\x0a\xb6\x0b\x65\xe1\x3a\x01\x78\xa3\xe7\xd0\xac\xc5\x57\x8c\xbc\x61\x70\x63\xfe\x9e\x99\xbf\xaf\xcd\xdf\x07\xe6\xef\x53\xf3\xf7\xa5\xfe\x6b\xa3\xc4\x30\x32\x93\xd1\x8a\xca\x99\x90\x4b\x2d\x7c\xe7\xf9\xa6\x80\x77\x8c\x3c\x63\x11\x17\x77\x79\xfe\x8c\x45\x4b\xf1\xe5\x8d\x7f\xcc\xfc\x93\xf0\x0f\xf6\x60\xb3\x79\xdb\x95\xc7\x35\x2d\xd1\x8c\x11\x47\xd7\x76\x5d\x20\x47\x2d\x9f\x30\xe2\xbf\xd9\x30\x2d\xcc\x1e\xf5\xbe\x60\xe9\x4d\x8b\x53\xd1\x7e\x03\xcd\x81\x8d\x16\xb0\x1b\x91\xa3\x66\x62\x18\x0c\xe5\x6e\xfc\x2c\x63\x66\x18\xcb\x83\xc1\x56\xb0\xe4\x4f\xce\xbd\xca\x34\x69\xe7\x0e\x83\xe6\xa9\x25\xf6\xe6\xf9\x67\x96\xe7\xa7\x0c\xbd\x65\x66\x0f\x4c\x2d\x68\x1c\x5c\x59\xb5\x24\x00\xf7\x60\x9d\x02\x6f\xe3\x4d\x01\x89\xbc\xbe\x8d\xc7\x13\x70\x37\x82\xc6\x41\xe0\x1f\x33\xfd\x59\xf0\xf8\x15\x83\x64\x3a\xf5\x47\x48\xe3\x1b\x06\x82\xa7\x34\x3e\x63\x20\x66\xb3\xf8\x35\x03\x7b\x52\xb5\xcc\xf0\xc0\xa7\x1c\x2d\x16\x3e\x31\x8b\x9f\x32\xa0\x4b\xa6\xe2\x97\x0c\xae\x18\x9f\x6e\xeb\xbb\x3b\xd4\xdd\x9d\xcd\x8a\x5c\x66\x1f\xf1\x20\x5b\xaf\x56\x36\xc4\x14\x2e\x20\xbd\x9b\xb6\x44\xd0\x38\x0c\x0a\x48\xe7\x53\x26\xbf\xad\x01\x93\xb5\xb5\xfa\xf5\x32\xc9\x6e\x5a\x7c\x0c\xfb\x05\xcc\xa5\x62\xcb\x36\x07\xb3\xa8\xdf\x1f\x7c\xf7\xce\xad\xba\x67\x0c\x83\xac\x6d\x36\x5a\xa7\xb3\xfa\xfb\xbf\x0f\xbe\x1b\xd0\xbf\x57\x7e\x49\x61\x88\xe4\x01\x51\xe3\xfe\x04\x10\xd7\x0f\x83\x89\xbb\x25\xf0\xe0\x00\x78\x8f\xe8\xcc\x18\xc6\x12\xf8\xa4\x80\xd5\x22\x51\x7a\x65\xd4\xe6\x57\xd2\x05\x4d\x32\xaa\x67\xce\xfa\x4b\xea\xa7\xf5\xaa\xd9\xd9\x9d\x05\x70\xf0\x84\xe1\xc3\x01\xfd\xbe\x28\xe0\xcb\xb6\x65\x72\x8f\x60\x69\x14\x25\x6e\x25\x0d\x1e\x29\xf1\x6e\xb5\xa2\xf2\x38\xc9\x28\x32\x97\x49\x35\x53\xb4\xd8\x63\x2e\x78\x02\x7f\xe1\xfb\x98\x4f\xac\x8f\xd5\x1f\xdb\x22\x49\x63\x37\xef\x2b\x9f\x94\xbb\x96\x8e\x50\xb0\x57\x52\x6a\xed\x82\x48\x0c\x5a\x4f\xf9\x63\x4d\x33\x45\xb8\x79\xce\x56\x82\x67\x94\x08\x50\x5a\x7a\xfe\xcc\x44\x66\x10\xc0\xde\x83\xa7\x84\x16\x76\x5b\xce\x94\xb9\x73\xd2\x36\x8e\x96\x7b\x01\x13\x94\xcd\xa4\xe8\x27\x98\xba\x50\x6e\x7a\xd9\xd8\xdb\x43\xab\x04\xb0\xa6\x18\x97\xdb\x3c\xc3\x8c\x2d\xe8\x9b\xb2\x0a\xff\x06\x0b\xc6\xe9\x9b\x5a\xee\xea\x1d\x52\xb1\x58\x2f\x79\xfd\x63\x3d\x05\x32\x95\xa4\x37\xb1\xbf\xbf\x20\xbd\xf1\x73\xee\x72\xea\x67\xd0\x60\xf1\x09\x53\x5a\x14\xa0\x0a\x54\xad\x02\x85\x4b\xc0\x16\xf0\x9e\x91\x71\x60\x0e\x87\x07\xc9\x5a\xcd\x85\x64\x5f\xdc\xad\x9a\x41\x6a\xe3\x48\x1e\x58\x1a\x53\x4b\xd0\x8c\x21\x80\x80\xaa\xe4\x5a\xff\x7c\x5e\x31\x49\xb3\x00\x82\x99\x14\xcb\x00\x82\xb9\xc8\x54\x00\x01\x9b\x1d\x2c\xc5\xd4\xf8\xf2\x1f\x64\x8c\xa7\xd4\xa6\xad\xf9\x4e\xea\x22\xc9\x54\x99\x57\xbf\xfb\x13\x0a\x10\x2c\x93\xcf\x07\x33\x21\xef\x12\x39\xd5\x2d\xac\xa4\xf8\x7c\x7f\xb0\xdd\x51\x13\x0b\xd4\xc4\x7a\x94\x54\xc9\xfb\x03\x73\xe1\x49\x00\xc1\x3a\xa3\xf2\x20\xb9\xa6\x5c\x05\x13\x78\xc1\x88\x51\x7b\x76\xad\x36\x08\x8f\xb6\xfd\x68\x80\x92\x43\xb4\xcc\x18\xcd\x95\x64\x53\xca\x15\xf6\x71\x32\x2a\x13\x8b\xae\xfd\xe8\xda\x1c\x0c\x95\xdb\x67\xb7\x5d\x54\x39\x14\x24\x41\x2d\x00\x56\x49\x32\x78\xe5\x31\x67\x6e\x41\xd2\x32\xdb\x91\x52\x92\x5d\xad\x15\x45\xc1\x5c\xd2\x59\x00\xdc\x3a\xab\xea\x17\x0c\x7b\xb3\x6c\xf4\x53\x6c\xb3\x81\x0f\x5b\x10\xcb\x2a\x82\x41\xf5\x58\xe9\xbe\xb1\x55\xdb\x35\xdd\xd7\x93\xa5\x8b\x8b\x4c\x0b\xaf\x5a\x7d\x8d\x75\x5b\xfa\x61\xe4\x1f\xea\x46\x80\x51\x55\x32\xc9\x74\x5e\xfd\x33\xb2\x3f\xb5\x7c\xff\xd6\x68\xc0\xac\x21\xdb\x88\x59\x44\x9a\xdc\xea\x3e\x0a\xa9\x60\x95\xa8\xb9\x0d\x7c\x78\x18\x10\x42\x64\xe4\x13\xaa\xfd\xa5\x51\x95\xa8\x73\xf5\xaa\xd7\xa2\x54\x10\x09\xf7\xd7\x30\x7b\xec\x71\x90\xab\x2b\x4a\x96\xf9\x3a\x34\x30\xba\x30\xc5\x23\xfd\x25\xae\x42\x58\x97\xe0\x32\x7a\xa9\x7f\x09\x43\xdb\x7d\x93\xa8\x1f\x8a\x02\xe1\x5d\xea\xda\xed\x17\xf0\xe1\x6b\x88\xb6\xb9\x93\xac\x61\x7e\xad\x62\xbf\xb9\x38\x44\x5a\x6e\x4d\x5c\xcc\x3a\xa3\x75\xb7\xd8\x50\xb4\x00\x60\xda\x70\x77\x7b\x4b\x1c\x86\xae\x8c\x5f\x8e\x24\xe8\x79\x4a\x8f\x24\x8e\x94\x78\xfe\xfa\xc2\xeb\xff\xae\x70\xb9\xb5\x5c\x15\xd6\x70\xd5\x25\x9b\x39\x44\x2d\x87\x3b\x4e\x12\xf4\x84\x3b\xd5\xc9\xaa\x6f\x19\x4d\xd7\x92\x06\x18\xaa\xd5\x20\xc4\x0d\xa3\x24\x71\x86\x82\x61\x47\xb3\x58\x49\x93\x69\x0b\x17\xdd\x2a\x14\x2d\x8d\x58\x5b\xf7\xba\x44\xff\xcc\x87\x1f\x3f\x66\xdf\x61\x14\xf4\x54\x2f\xc0\x04\x8d\xff\x39\x9c\x7c\x87\x83\xca\xe3\x9a\x8e\xa6\x74\x17\x5c\xe3\xef\x27\x38\x76\xbe\x2a\x46\x4a\x89\x77\x14\x76\x33\x2f\x48\x41\x10\x80\x86\x99\x89\x5b\x82\x0f\xfe\xe3\xc7\xbf\xd2\x1f\x70\x51\xc4\xdb\xf3\x86\x37\xdb\xe3\x68\x6c\xa5\xec\xb6\x83\x37\x45\x01\x3f\xb7\x29\xd2\x7b\xc2\xe9\x35\x2e\xb9\x9d\x26\x2a\x01\xa1\x51\x8f\x26\x53\x2a\xb3\xa1\x99\x1e\xbf\xd5\x61\xa6\xd0\x71\x59\x31\x0e\x5c\xfc\xdf\x83\x0b\x4d\xa6\xed\x5d\x1b\x56\xb6\xfd\xf0\xfa\xd5\x0b\xa5\x56\x67\x96\x55\x9a\xfb\x0d\x22\x4d\x4b\x3d\xe6\xd9\x37\x43\xd8\xb8\x0d\x86\x1c\x40\xea\x53\x57\x49\x96\xdd\x09\x39\xd5\xa9\x43\x11\x1d\xd5\x69\x30\x09\x9e\x24\x19\x4b\x3b\x41\xef\x4a\x89\x04\x25\xbd\x20\x0e\x7a\xa9\xd5\xc4\xed\x61\x63\xb4\x26\x2a\xba\x4a\x32\xfa\xee\xec\x15\x64\x44\x45\x6b\xb9\x80\x75\x18\x76\x0f\xff\x89\xc6\xc9\xc1\x97\x89\xfe\xf3\x71\xfa\xb1\xf7\xf1\xe0\x63\x34\xf9\x2e\xc6\xa3\x8f\x87\x1f\x0f\x3d\xd1\xcd\x70\xbb\x03\x0c\x1d\xd5\x0c\x94\x1f\x0f\x7b\x96\xac\xf5\x34\x8d\xa0\x75\xa2\x75\xd8\xb3\xe4\x48\x15\x68\x0d\x19\x8e\x33\x1b\xcf\x2b\x12\x2b\xca\x91\x8a\xac\x77\x5b\x53\x7c\x81\x39\x43\x33\x30\xa7\x35\x93\x65\x56\x3e\x9c\x53\x69\x23\x72\xda\x80\xb5\xc0\x22\x65\xd5\x36\xa2\xfc\x13\xb0\x3f\x89\xf3\xa2\x9b\x0e\xc3\xbf\xea\xb5\x13\x99\x7c\xe7\xf6\x88\x15\x32\xfb\xf1\xe6\xc0\xd5\x3a\xcb\x73\x56\xca\x31\xef\xce\x5e\x85\x61\xdf\xe5\x2f\x93\x2a\x9b\x99\x8d\x5c\x83\x71\xe5\x55\xe9\xa2\x99\x11\x13\xa5\x75\xb1\x38\x73\xa5\x5e\x58\xec\x09\x18\xef\xb0\x91\x71\x9d\x6c\xfd\x8e\x30\xac\xcd\x3d\xa3\x23\x54\x93\x04\xb9\xf3\x07\x0d\x3e\xf2\x60\xeb\xbe\x30\x36\x43\x69\xdd\x88\x17\x07\x18\x84\xa6\x82\x4a\xb2\x25\xb2\x37\x71\x2b\x89\xfa\x90\x62\x4d\x8a\x5e\x89\xbb\x12\xcc\xc9\x6e\xb6\xb4\x37\xc0\x18\xec\x85\xa5\x6b\xe3\x2c\xfc\x9e\x95\x75\x0b\xfc\x98\xf4\xfd\x9d\x2f\xfa\x2b\x09\x32\xaa\x0e\x2c\xcd\xd0\x0c\x44\x8c\x4c\xa1\x91\xfe\x13\x8f\x27\xd8\xdb\x1d\xc6\xc9\x04\xc7\xe5\x97\x5e\x00\x9d\xa0\x97\xc4\x89\x89\xfd\xb5\xc6\xf1\xda\x12\x08\x98\x11\x7b\x37\x72\x25\x45\x5e\x98\xab\x0a\x03\x45\x3f\x9b\xdd\x97\xe6\x87\x51\x35\x25\x71\xf5\x78\x41\x3f\x2b\xb0\xf3\x18\xfb\x09\x75\xef\xfa\x53\x99\x66\xf2\xb9\x25\x1d\x67\xa5\x24\x07\x4e\x98\x8d\x59\xb1\xed\x74\x58\xf3\xe7\xb4\x17\x34\xdf\x26\x0b\x36\x4d\x94\xb9\xdf\x6a\x9d\x0d\xbb\x3c\xcf\x39\x92\xae\x7e\x3c\x52\x48\xe2\x98\xa2\x3f\x18\x0a\xdc\xb2\xef\xcc\x12\xb6\xa0\xd3\xce\x1d\x53\xf3\x8e\xcd\x66\x02\x49\x74\x34\x5f\x75\x5d\xf5\xb5\x1b\xff\x3e\x13\x3d\xc4\x14\x05\x89\x71\x61\xbc\xe8\x66\xde\x11\xab\x28\x0c\xba\x27\x57\x42\x36\x6e\x64\x64\x5a\xac\x69\x34\x6b\xb2\xd8\x93\xc9\xc1\xc9\xf1\xe9\x9b\x37\x47\x4f\xcc\x61\x86\xc0\x98\x82\x99\x37\x89\xea\xda\xcc\xa1\x99\x86\x7c\x6e\x6a\x7a\x43\xd5\x9d\x90\x37\x56\x8a\x35\xc7\xb5\x75\xef\xaa\xd2\xb6\xb0\x5f\x8f\x3b\xbe\x93\x81\xfb\xd2\x11\xb3\x4e\xd0\x2b\x97\x6b\x2f\x58\x66\x1d\xfa\x39\xa5\x74\x4a\xa7\xc1\xb0\x4c\x37\xad\xb8\xa8\x51\xc6\xb1\xbf\xf5\x0b\x06\xd3\x37\xfa\xb5\x51\x15\xb0\x57\x1e\xf0\x4e\x29\x1f\x18\xac\x08\x52\x91\xb9\xfd\x4a\x52\x2d\x71\xb2\x64\x91\xe5\xf9\x0b\x86\x66\xd8\x04\x2d\xfa\x9c\xc9\xd9\xb1\xc1\x72\xad\x40\x8c\x16\x86\x74\xa0\xed\x74\xec\x1c\xa3\x87\xab\x30\x44\x62\x6c\x3f\xdb\x65\xad\x3f\x4f\xc8\xca\x98\xea\xf5\x9a\x71\x13\x63\x3f\x1a\x92\x10\x86\xb5\xe5\x2e\x76\x0e\x32\x7a\xaf\x0e\x1e\x86\x4d\x55\xc0\x29\x7f\xff\x1f\x6d\xdf\xde\xdc\x46\xaa\x2c\xfe\xff\xef\x53\xc8\xd4\x46\x05\x47\x58\x91\x1f\xf1\x26\x23\x93\x29\xaf\xe3\xa4\x7c\x4e\x5e\x9b\x64\x7f\x7b\x76\x55\xaa\x14\x96\xb0\x4d\x22\xcd\x68\x19\x24\xc7\x57\x9a\xef\x7e\x8b\xe6\x31\xcc\xc3\xc9\xde\x53\xf7\xfe\x63\x0f\x0c\x03\xa8\x81\xee\xa6\x9f\xd1\xb1\x4e\x03\x35\x12\x53\xb3\xdb\x1b\xa3\x61\x97\xf5\xcf\x02\x26\xe8\xa7\xdb\x00\x20\xbb\x1d\x96\xcd\x4a\xb6\xb7\xd7\x6e\x48\xeb\xe7\x92\x80\xd7\x78\xad\xaa\x71\x72\x2b\xb1\x99\x81\xc7\x97\x22\xcf\xda\xa7\xdb\x99\x28\x8b\x2e\x49\xab\x1e\xe6\xd9\x8b\xfc\x2e\x5b\xe4\x7c\xfe\x5e\xe5\x37\x4a\x14\x45\xbf\x2f\x3b\xc2\x6f\xad\xdc\x5b\x44\xbb\xbe\xe9\x14\xca\x9a\x86\xbf\xad\x9a\x5d\xaf\xa1\xa6\x7a\xfa\xe1\x58\xf5\x2e\x20\xc5\x35\xcf\x66\x62\xf1\x29\xff\x2a\x32\xb0\xc6\xa8\x8a\xde\x2d\xad\xc3\x5b\x0f\x6c\xc4\x86\x70\x80\xb1\xd9\xf0\xba\x3a\xaf\x24\x0a\x83\x9b\xd9\xf8\xf4\xa6\x9e\x9a\x35\xcf\xe6\xd8\x3a\xc4\xd1\x5f\x25\xdb\xd6\xd9\x92\x04\xf1\xd5\x6a\x21\x2d\xa7\xfe\xf8\xdb\xfe\xdd\xdd\x9d\xb9\xe7\x2d\xf7\xd7\x6a\x61\x19\xde\x39\x8a\x84\x89\xff\x74\x22\xcb\xbd\xe6\x86\x21\xb0\x67\x6b\x55\x4d\x06\xc8\x4a\x22\x1a\x95\xcc\xf9\xab\xfd\x2e\xe9\x1f\x92\x6d\xf9\x9c\xaf\xb4\x50\x09\xee\xd4\x96\xd7\xf9\xa6\x28\x56\xd4\x2b\xd9\xef\x07\x4b\x06\x27\x5b\x02\x63\x86\x07\x8d\xac\xac\x8c\xe8\x95\x34\x67\x1a\xff\x2e\xd9\xbf\x24\xa1\xbf\x4b\x42\xb5\xe2\x59\x61\x00\xe0\x06\x49\x26\x9d\x0c\xcf\x7f\x19\x54\x83\xce\x66\x33\xb1\xd2\x88\x50\x5b\xac\xfd\x32\x77\xa6\x02\x6b\xa8\xc9\x6e\x57\xe9\x10\x83\xbd\x8d\xab\x6c\x96\xad\xa1\x45\x55\x7e\x29\x17\x22\x6a\xbd\xc8\xaf\x40\xa1\x98\x34\x7b\x74\x46\x30\xa9\xb7\x7b\x49\x3a\x35\xa2\x9a\xa4\xf8\x9f\x30\xe5\x1f\x2e\xfe\xd8\x5c\xfe\x0a\xa1\xd9\x5a\x5f\xef\x3f\x05\xb7\xc4\x4a\x91\xda\x54\x60\x76\xf5\x6a\x0e\x74\xab\x93\xb6\x92\x33\xd1\xe5\x34\x06\xbe\x23\xe5\x93\x06\x77\xd3\xb6\xc9\x01\x04\xe3\xd4\xa6\x2b\x33\x4a\x25\xad\x8f\x42\x0d\x41\xef\x96\x6a\x24\x23\x5a\x47\xd5\x09\xfa\xf7\xc7\x0f\x2f\xf7\x3f\xbd\xfb\xd7\xc5\x5b\x44\xeb\x78\x3a\x41\xff\xde\x8f\xdf\x2e\xf9\x37\xb7\xca\xaf\xad\x43\xc8\x3e\x04\xe6\x8a\x28\x7f\xa7\xf6\xfe\x39\x3b\x1c\x8d\xfa\x7d\x7d\x7a\x34\x1a\x95\xe5\xf8\x0f\xe9\xef\x0f\x6c\x3b\xcb\x97\xcb\x3c\x83\xe4\x02\x62\xa5\x93\x16\xec\x68\xcf\x30\x3c\x8f\x57\x0b\x2e\x33\xda\xfb\xc7\xe3\x7f\xa0\xb2\x8c\x15\xce\x13\x64\x51\xbc\xcd\x04\x80\xa8\x4d\x71\x33\xad\xf3\x85\xd5\x80\x13\x3d\x65\xdb\xd2\xa1\xfc\xaa\x8f\x95\x15\x15\xad\xd6\xf0\xd7\x40\xef\xfb\x5d\xac\xe4\x10\x0c\x51\xf0\xaf\xd6\x2f\xd8\x1c\xe1\x3f\x25\xfb\x23\x52\xf2\xc1\x9e\xdf\x7e\x17\xd3\x01\x56\xbf\xbc\x76\x47\x4d\xcc\xb1\xc5\x05\x82\x77\x86\x0c\xe0\x90\xb5\x33\x40\x2e\x3c\x81\x5e\xc2\x5e\xcd\xd8\x52\xba\x60\xa2\x55\x43\xb3\x63\x1b\x87\x3a\xee\x26\xfc\x92\x50\x35\xb4\x4b\xe2\xba\x0d\x3f\xda\xdd\x4e\xa6\xf5\x7a\xf2\xe3\xb5\xa0\x5d\xd0\xa5\xc8\x8e\x52\x03\xb3\x08\x51\x40\xab\x71\x05\x78\x72\x99\x0b\xa2\x45\x8d\xbb\xdd\x9f\xd2\x3f\x13\xdc\x76\xea\x16\x0d\x80\x89\x00\x18\xfb\x44\x45\x37\x60\xec\x81\x83\xa4\xeb\x9d\x49\x8b\x6e\x24\x16\x86\x0b\x70\xbd\xf6\xfb\x22\x50\x68\xc3\x95\x85\x42\x34\x5c\xad\x8a\x46\xe5\xef\x4d\x80\x10\x5a\x85\xcd\x07\xbc\xe2\x22\xe7\x28\xde\x10\x8e\x0b\x06\x2a\x29\xe7\x28\x67\xae\x49\x6c\x82\xd6\x6a\x81\x28\xb2\x4b\x05\xc0\x36\x08\x0f\x51\x64\xa6\x80\xa6\x34\x67\x13\xe4\x46\x77\x82\x56\x2f\xcc\x44\x53\x2a\xd9\x04\xb9\xab\x31\xa2\xae\xa7\xe6\xd6\xa9\x57\xd9\x39\x87\x71\xaa\x4b\xa9\x69\x66\xd1\x0d\xa2\xa8\xc1\x22\x99\x81\xed\xfa\x81\xa0\xb4\xe2\x72\x10\x45\x75\xcc\xe4\x2a\x2a\x74\x84\x28\x6a\x32\x13\x50\xd5\xe4\x65\xac\xc0\xb6\x86\xa9\x10\x45\x75\x44\x65\xdb\x7c\x10\x73\xa9\xc4\x4c\x9b\xe2\xad\xd6\x2b\x10\xa4\xba\xe7\xc2\x17\xa2\x33\x8b\x28\x2a\xf2\xd9\x57\xa1\xdf\x73\x7d\x8b\x6a\xc6\x33\x59\x23\x34\x41\x08\xea\x68\x6d\x2f\x94\xc1\x1b\xe6\x99\x34\xb0\x4f\xcc\xe0\x66\xce\x64\xc6\x91\x14\x31\x81\x40\x2c\x93\x0c\x30\x4e\x30\x25\xc3\x7a\x92\x4d\x21\x4e\x8c\x67\xb3\x61\x98\x6c\x6a\x9b\x9a\xa7\x3a\x65\xfa\x4e\x37\x51\x0f\x1a\x2c\xcd\x30\xb4\xf3\x4a\x92\x78\xa2\xb2\x3e\xd1\x87\x46\xfe\x6e\x7f\x63\x2b\xe1\xc9\xfc\x6d\x38\x27\x51\xe2\xff\x59\x2d\x61\x91\xf8\x5e\xc2\x75\x30\xd7\xe1\xe1\x36\xae\xe3\x68\x07\xd1\x94\x67\xff\x0b\x53\xa6\x2a\x62\x00\x33\x1e\x24\x75\xce\xe2\xbf\xf0\x6a\x6b\x99\x69\xa1\x0c\x11\xcb\x0d\x5d\xf3\x57\xe7\x4c\xdc\xf5\xee\x25\x0d\x97\x73\x5b\x2e\xcb\x8c\xd7\xfc\xf7\xad\xd2\x28\xfe\x9d\x6d\x52\x9f\x62\xcd\xe2\x64\x0a\xe6\xf4\x93\xe1\x5a\x2d\xa2\xda\xd1\x34\x81\xf4\x9c\xdb\x92\x62\xcd\x14\xc7\xb5\xa9\x52\x4d\x88\xc3\xe3\xa9\x47\xe8\x2c\x92\x3b\x45\x37\xa7\xa4\xf6\x61\xfb\xa3\x8e\xb7\xcd\x0e\x7c\x5b\x20\x06\x2e\x84\xd3\x44\x70\xc7\xa8\x4f\xa9\x62\xcd\x04\x21\x9a\x80\x49\x45\x0b\x9c\x1e\x40\xdd\x09\xe6\xc5\x70\x9d\x15\xb7\xf2\x5a\x63\x3d\x0c\x46\x54\xd4\x87\x3b\x13\x73\x12\xc2\xa2\x36\xfa\x74\xe8\xf8\x81\x4e\xad\xe8\xfb\xc1\x1e\xc7\x3e\xb9\xec\x98\x28\xa6\x2c\x19\x12\x43\x3b\x0f\x43\x76\xdc\x53\xd8\x95\xaa\xa4\xb5\x35\xbf\x11\xfa\x37\xd5\x29\x87\xed\x5c\x37\x7a\x6b\x48\xfb\x5a\x2d\xbe\x2b\x0b\x6c\x6b\x48\xfe\x06\xb3\x44\x91\x4b\x49\xda\xe4\x79\xe2\xf9\x1a\xec\x55\x97\x09\xc7\xa6\x6c\x6e\x7d\x70\xe0\x26\x14\x6c\xc1\xad\xdd\x01\x89\xa6\x6b\xb5\x00\x23\xcf\xff\x84\xf5\xfa\xde\x34\xa2\xf0\x71\xdd\x13\xc9\xba\x26\x42\x41\xb4\xa6\x62\xaf\x98\x9c\xb3\x8c\x57\xe7\x5c\x56\xe7\xdc\x07\x01\xd7\xa5\xe4\x1d\x37\xa9\xb6\xfe\x16\x9d\x03\xbd\x40\x03\x1c\x7f\x9f\xa2\xa4\x87\x06\x71\x4d\x02\xcb\x53\xeb\xb4\xb2\x61\xf3\x61\x37\x39\x67\x32\x9a\xd7\x8c\xfb\x9b\x40\xb8\xac\xef\x45\x77\x81\x60\x67\x10\x79\x33\x8b\x6f\x62\xb6\xd6\xb9\xea\x2d\xd7\x05\x04\xa8\xe3\x41\xb5\x3d\x74\xc1\xe9\x44\x3b\x4e\x71\x5b\x11\x60\x0e\x05\xe4\xdb\x1f\x47\xa1\xa4\x74\x03\x39\xbb\xf0\x91\xbb\x1d\xf6\x8f\xd0\x1b\xb7\x5c\x53\xa8\xb4\xa9\xc7\x66\x35\x78\x36\x98\xe1\x86\xa4\xda\xad\x2e\x7c\x6c\x7f\x66\x54\x53\xd2\x19\x77\x91\x40\x5a\x41\x13\xdc\xf9\xdb\x6a\x43\xbe\x01\xfd\xce\x78\x9d\x5f\xd4\x0c\xcc\x8f\x2d\x95\x4f\xb4\x4b\xd8\xb5\xe6\x6c\x16\x01\xbe\xe0\x75\x9b\x9b\x9c\xdb\x98\x51\x52\xe2\xbc\x03\x95\x53\x11\x93\x23\x6b\x35\x8d\x15\x8d\x9b\x52\x01\x27\x21\xbc\x13\x86\xd2\x80\xfb\x18\x67\x05\xc7\x7f\x4a\x32\xbe\xe6\x43\x30\x1a\x60\x39\xa7\xd7\xdc\xe9\x74\xbb\x50\x46\xc1\xb1\xe2\xf8\x9a\xd7\x30\x7d\x69\xbe\xb1\x7b\x91\x71\x5e\x15\x80\x91\x61\x6b\xa8\x91\x85\x6b\x70\x23\x4d\x91\x2f\x16\x5d\xdd\x7b\x3c\xed\xfd\x22\xae\xf9\xb0\x58\x29\xc1\xe7\x3f\xca\xa0\xd5\xf0\xfe\x02\x41\xa9\xf0\x29\xd1\x16\x9c\x5d\x73\xba\x32\x7f\xc7\x8b\x30\x75\xb6\xe2\xf0\x76\xce\xd9\x82\xd3\x5b\xde\x96\x61\xd4\xfd\x98\xe8\x86\xb3\x5a\xda\x72\x7a\xcf\xbb\x32\xc3\x6b\x88\xa7\xca\x46\x63\x71\x7a\xf8\xe4\x64\x3c\x18\x08\xa2\x9d\xbe\xf0\x11\x1a\x60\x2c\x4e\x0f\x4e\x52\x34\xb2\xe1\x09\x23\x73\xe9\x83\x13\xd0\x15\x44\x2a\x99\x38\x34\x1f\xa1\xcb\x26\x5f\x5e\x59\x57\xc1\x2d\x01\x6e\xae\xf6\x37\x84\x8c\x80\x76\x21\x01\x1c\x24\x01\xce\x7d\x34\xce\x4e\x83\xaf\xd7\x60\x90\x91\x87\x59\x92\x88\xa0\xdc\x70\xb6\x05\x83\xb7\x4f\xb9\x73\xb4\x59\x72\xca\x8b\x42\xde\x34\x23\x04\xba\x6f\x1a\xfc\x95\x12\xf3\xf5\xac\x76\xc6\x63\xc4\x3e\x51\x86\x3d\x52\x53\xaa\x4b\x42\xb5\x4d\xce\x77\x25\x33\xd1\xd9\x75\x9c\x1e\x5a\xb8\x44\x7e\xbc\x11\xd3\x2c\xca\x44\xb1\xcd\xaf\xbe\x24\xdb\x3c\xd1\x25\xa4\x87\x4e\x50\x8e\x4a\xc3\x11\x4c\xa6\x0e\x18\x22\x06\x46\x14\x5e\xd8\x70\xbe\x92\xe5\xc3\xfc\xea\xcb\x04\xc2\x22\xae\xa6\x94\xd7\xf8\x46\x60\x24\x47\xe3\xd9\x29\xaf\xba\x98\x85\x50\x61\x93\xd9\x94\x16\x4c\x4e\xd6\xd3\x71\xcb\x59\xa2\x08\xde\x66\x85\xf3\xb3\x56\x81\xc3\x2c\x20\x83\xbc\x33\xd5\x36\x93\x97\x76\xe2\xeb\xd2\x67\xae\xc4\x45\x95\x4d\xb1\xf9\xab\xc7\x3a\x58\xdf\x8d\x43\x38\xb0\xe1\x2a\x5f\x61\x83\x43\x04\xfc\x1a\x61\x7f\x0d\x24\xd3\xe1\x58\x91\x28\x3e\xa4\x01\x4b\xce\x46\xe3\xbc\xf2\xb6\x1c\x0c\xf2\x6a\x8f\x28\xd0\x4e\x65\x76\x1a\xa6\x60\xb8\x93\xa8\x4f\x96\x95\x65\x09\x91\xe0\x4b\x6a\xf5\xd2\x2d\x0f\x0e\xaf\xe1\xad\xd4\x98\x83\xc7\x37\x14\xf5\x6c\x76\x1f\x24\x8b\x7c\xff\xe9\xd3\x27\xcf\xf6\x0f\xc0\x38\xc2\x1b\x90\x66\x91\x1f\xc3\x64\xb4\xff\x8c\xef\x5f\x4f\xb7\x87\xe5\xe3\x1b\x49\xd7\x99\x28\x66\x7c\x25\x6a\xb6\xc7\x1d\x4a\xf1\x38\x32\x76\x88\xd2\x51\x52\x2b\x7f\x6b\x4d\xd3\x79\xd5\x86\xa4\x41\x75\xa7\x08\x06\xca\x64\x54\x40\xae\xd2\x98\x73\xce\x98\xcd\x5f\xfa\xa0\x24\x54\x93\x90\xb7\xab\xe6\x9a\x99\x55\x21\xa1\x08\x7d\x08\x0a\xf6\x87\xe2\x2c\xf6\xea\x58\x07\x70\x1c\x03\x38\x3a\xee\x30\xe8\xd1\xe1\xc9\xa3\xc3\x23\x34\x00\xb9\xdd\x65\x66\xf8\x57\xeb\x96\x70\x48\xe8\xc1\x09\x19\xa0\x47\x47\xbf\x20\x43\x70\xab\xfd\x8f\x10\x95\x6c\x34\x96\xa7\x59\xb5\x11\x82\xc5\x46\x16\x07\x95\x91\x64\x7c\xfc\xc4\x5c\x92\x76\xbb\xe3\x13\xfb\xff\x99\x2b\x1f\x1c\xba\x0a\xfe\x9c\x1d\x3f\xed\xf7\xf9\x29\x7b\xf2\x33\x94\x4e\x9e\x40\xe9\x99\x0d\x71\xf3\xec\x67\x28\x1d\x1c\x1e\xa6\xf9\xc0\xf5\x0e\x3d\x27\xfc\xf4\xe0\xf0\xa9\xa9\xbc\xe7\x13\x3e\x4d\xf8\xe9\xe1\xe8\xd8\x97\x0f\x9e\x1d\xee\xf8\xf3\xe7\x27\xd3\x81\x29\x1c\x3e\xdd\x9d\x1c\xf5\xa1\x8d\x8b\x87\xc3\x9f\xb3\x27\x3f\x1f\x1d\x1f\xbb\xe6\x87\x87\xc7\xa6\xf9\xc1\x61\x68\x6f\x3e\xee\x9f\x1c\x35\xbe\xc7\x72\xc0\x0e\x28\x67\x10\xe0\x66\x80\xf1\xc1\xe8\xf0\xa8\xcf\xc9\xe9\xe9\xc1\x68\x07\xcf\x8d\x5f\x4f\xa8\xeb\xff\x78\x04\xfd\x3f\x8d\xfb\x3f\x38\x8c\x07\xe8\x1c\x30\x9c\xe5\xfc\xbb\x1e\xab\xd6\xfd\xa0\xed\xd6\x4b\xfa\xfd\xbd\x3d\xdc\xf0\x5a\xfd\x1f\xbb\xa3\x82\x1b\xa1\x35\x3b\xf9\x9e\xf3\xa2\x6d\xf1\x77\x24\xfe\x06\x8d\x2f\xf9\xfd\x95\x78\x53\xcb\xe4\xe7\x1c\x95\x37\x1c\x32\x1d\x55\x14\x2c\xa0\x63\x5d\x79\x79\xb3\x03\xe2\x10\x9e\x93\x20\x44\x14\xc9\x1f\x08\x3b\x4e\xd3\xed\x2d\x8a\xb3\xac\x6a\x6e\xf1\x2d\xf0\x29\x3f\x1d\x41\x7c\x6a\x22\x45\x42\xca\xb3\x3d\xd1\x01\x71\xef\x20\x35\x11\x54\x4d\xc7\x18\x94\x40\x35\xe2\xbb\xdb\x65\x86\x81\xc9\xef\xde\x7b\xd8\x14\x64\xb7\xdb\xbb\xe5\x16\x32\xad\xe4\x76\x0a\x74\x23\x86\x00\xb2\xbd\x51\xd8\x0d\xa2\xfc\xf1\x04\x02\x29\x54\x3e\xf6\x73\x30\xeb\x82\x9f\xd4\xef\xef\x01\x86\xef\xf7\x71\xce\x96\x1c\xfc\xe4\x08\x75\xaf\xe0\x4d\x8a\x55\xc7\xb5\x54\x39\x63\x04\x3f\x65\xc8\x43\xe6\x7c\x9d\xc4\x24\x9f\x8e\x65\x87\xa3\xa0\xec\xf7\xd5\x03\xfe\x83\xf9\x94\x69\x2c\x61\x51\x92\x00\x65\x1b\x25\x02\x5e\x2a\x88\x42\x1e\x12\x1d\x03\x75\x55\x1d\x5c\x83\xa8\x32\x6e\x1a\xe2\xe3\x7f\x6b\x3c\x4d\x3f\x1a\x04\x78\x91\x30\xa0\xa9\x90\x20\x6f\xcd\x49\x59\xd2\x2b\xfe\x70\x5c\xc3\x3b\xce\x9c\x43\xdd\x05\x67\xdb\x0f\x2f\xcf\x0f\x7e\x3e\x7a\x9a\x20\xf7\x80\xe8\x87\x97\xe7\x47\xcf\x9e\x9e\x40\x8d\x79\x40\x25\xfd\xcc\xd9\x0d\x1f\x5a\x5e\x08\x6f\x7d\x74\x86\x0b\x3e\x74\x4d\x28\x98\xf5\x6b\x2d\x54\x91\x84\x1e\x3b\xb8\xd9\x2b\xee\x1d\xe5\xef\x38\xb8\xf3\x95\x61\xb4\x8e\xd6\x81\x58\x94\x65\x49\x2f\x38\xa1\xef\x7e\xcc\xbf\x7e\xe4\x6c\x7b\xa5\xf8\xec\xab\xd0\xdd\xda\x93\x01\x9a\x4c\x11\x70\x54\x4b\x9e\x80\xdc\x9c\x23\x2a\xb3\xb9\x9c\xd5\xb2\xbc\xc6\xee\x65\x03\x34\x41\x03\x01\xc9\x1b\xa9\x12\x2b\xc1\x75\x67\xcf\x65\x49\xbf\x34\xb9\xe7\x6f\xbc\x99\x7e\x11\x76\x06\x3d\x6f\xf2\xb9\xdf\xb8\x0f\xdd\x46\xbf\x98\xad\x9b\x8a\x04\x32\x63\xd3\x4f\x9c\x81\xe9\x5a\x8c\x83\x82\xd7\x1f\x7d\xcf\xd9\xe7\xc0\xec\xd3\x33\xc3\xc1\xce\xe7\xbf\xae\x85\xba\x7f\xaf\xc4\xb5\xfc\x96\xec\x1d\x50\x38\xa6\x2f\x72\x5d\x98\x82\x53\x9e\x25\xc8\x6a\xcf\x7c\xf9\xa3\xc8\xb4\xcc\xc4\xc2\x34\x99\x8b\x85\x5c\x4a\x2d\x54\x82\xfa\xc8\xb3\x0e\xe0\x66\x60\x9e\x54\x72\xc3\x87\xf6\xd1\xd5\xfc\x7f\xc8\x90\xfb\x2e\x5b\xdc\x9b\xaf\xed\x4e\x48\xde\xf3\x6a\x4f\x24\x9f\xf9\xb0\xda\x20\x93\xf7\x7c\x1a\x00\xbe\x77\x40\x0b\x2f\x70\x79\xc0\x85\xbd\xf7\x89\x57\xd8\xb6\xf8\x2a\x57\x6f\xd7\x8b\x85\xfd\x52\x2b\x39\xd3\xa6\x08\x91\xf3\x65\x76\x03\x91\xd7\xdf\x56\xb0\xf5\x68\xd2\x06\x52\xa9\x27\x83\xb4\x87\xec\x96\x6e\x98\x78\x20\xce\xda\x2c\xdd\xb0\x19\x56\x74\x43\x92\x4d\xec\x35\x6e\x26\x9a\x6e\xd8\x35\xde\x10\xbf\x83\xac\xa2\xfc\x0b\xc7\x1b\x83\x87\x36\xe6\xb4\x78\xc2\x80\x37\x5d\xec\x4a\x4f\xb7\x7a\xbc\x86\x80\x03\x25\x21\xce\xae\x92\x22\x42\x68\x08\xe5\x63\x50\x55\xee\xf1\x3c\xef\xf7\xf7\x56\x29\xc7\x8a\x9e\xf9\xc5\x50\x74\x4e\xd1\x57\x71\x8f\x48\xa2\xc6\x1b\x86\x50\xd9\xa1\xe1\xc4\xb7\x6c\x43\x76\xbb\x56\x74\x81\xdb\xdd\x0e\x5d\xe5\xf9\x42\xf0\xac\x5e\xd9\x64\xfe\xa0\xa1\xbc\x91\x99\xae\xd5\xdd\xf0\x8a\xce\x6e\x48\x98\x65\x3a\x59\xe0\x55\xaa\x92\x07\x26\x6a\xfd\x4f\x17\x98\xe3\x4d\xe3\x35\x04\x57\x42\x84\x4c\x93\xc9\x02\x2b\xdf\xce\x07\x10\x22\xc4\xda\x3f\xde\xd3\x25\xe4\x8a\xbe\xae\xa2\x01\x6d\xfc\xd8\x4b\x53\xfd\x85\xe3\x19\x21\xf7\x6c\x56\x39\xe9\xde\xd4\x6e\x37\x1b\x32\xbe\x67\xeb\xf4\x66\x58\xe4\x4a\xe3\x35\x49\x6e\x82\x5f\xb7\x0d\x69\x74\x5f\x31\x86\x57\x76\xc3\xdc\xb1\xfb\xc9\xd5\x94\x5e\xb0\xcd\xe4\x0e\xc6\xde\x93\x36\xe0\xfb\x1e\x63\x17\xb6\xc9\x67\x06\x1b\x21\xed\x0a\x00\x95\x1a\xc2\x73\x47\x12\x95\xa8\x01\x2e\x52\x34\x44\x83\xbb\xc4\xe0\x97\x3b\x83\x5f\xc8\xf8\x9c\xe3\x25\xd5\xf8\x82\x7e\x7e\x60\xd7\x92\x60\x1d\xbd\x2c\xe9\x6b\xce\x5a\xa4\xb6\x89\x11\xeb\x08\xa9\x61\xfd\xe3\xb2\x70\x68\x9a\x37\xd3\x36\xee\x05\xbf\xb6\x33\x3e\x0e\x61\x57\x98\xf6\xcb\xd4\xef\x57\x97\xea\xaa\xae\x4b\x90\xe6\xdf\x76\x0b\xd4\x2e\xec\x4b\x70\xfb\xd4\xf9\x03\x12\x35\xa6\x87\x0e\x51\xed\x76\x67\xdc\x3f\xd7\x32\xa5\x86\x16\xfd\xbe\xc3\x6d\x8d\xca\xe8\xba\x11\xbf\xe9\x9e\xd5\xa7\x5b\xd1\x73\x0d\x7a\x56\x9e\x1b\x04\x7e\x42\x42\x70\x44\x18\x83\xf6\xaa\x5e\x69\x2f\x57\xbd\xca\xce\xc4\x0b\xf6\x2a\xf4\xdc\x98\xae\xc5\x88\x16\xd6\xef\x1c\x8a\xab\x21\x4a\x1a\xda\x74\xcf\xf1\xb7\xec\x6b\x96\xdf\x65\x3d\xdb\xc8\x4f\x73\xa5\xf2\x8d\x9c\x8b\xb9\x81\x9d\x0a\xc3\x94\xf6\x46\x57\x47\xc4\xca\xdc\x83\xcf\xb8\x53\x0c\xf9\xe4\x50\x9d\x86\x4b\xb6\xc9\x6e\xf7\x85\x63\x5f\x20\x96\xe3\x0a\x45\xda\x24\x3d\x6d\x8c\xa2\x87\xf5\x26\x69\xb3\x22\x39\xe3\x8d\x9a\x88\x7a\x55\x01\x88\x86\xa1\x32\x3d\xe3\xc3\x88\xbe\xed\x45\xaf\x02\xa9\x13\x2d\x22\xd7\x35\xb3\x46\x9b\xb4\x55\x93\x54\x1b\xcf\x57\x45\xa4\x32\x9a\x5c\xa8\x34\x93\xab\x5a\x44\x2f\x3c\x51\xed\x9a\x87\x7d\x95\xfa\x87\xe4\xac\x41\x6d\x55\xd2\xb9\x40\xee\x65\xf8\x4e\x25\x11\x46\x6d\xd1\xe9\x87\x07\xae\x1a\xa5\xed\xaa\xaa\xcf\xaa\x8e\xda\xe5\x4f\xf2\x88\xde\x67\x0d\xa2\xde\x39\xe3\x5a\x93\xb4\x51\x36\x23\xd5\x2a\x22\xca\xdf\x35\xf9\xf0\x36\x8d\x9e\xa1\x13\x5f\xa0\x06\xc5\x3f\x30\x93\x5c\xe9\xd4\xfe\xb3\xe6\xc2\x1d\x8c\x45\xe7\xa0\xad\x66\x69\x57\x25\x4c\xa3\x55\x0b\x22\xa4\x71\xc7\x7c\x72\x77\xa0\xd2\x8c\xe1\x11\xf5\x25\x82\x11\x32\x8c\xfe\x17\x8e\x43\x95\xcd\x95\xe4\x4b\xd6\x25\x80\x72\x47\x12\xdb\xc1\x60\x7d\x5e\x12\xe6\xd3\xb3\x21\x34\x96\x56\xac\x0a\x62\xcf\x97\x16\x8f\xc8\xac\xf7\x91\xa7\xb5\xba\x44\x18\xfc\x69\x59\x36\x24\xb3\x9e\x48\xc5\xd0\x15\xd3\x50\x9f\x20\xcb\x1b\xa3\x24\x54\x8d\x6d\xe0\xba\x8f\x7c\x22\xa7\x63\xb5\xdb\x61\x55\xa3\xbe\x19\x84\xa3\x30\x60\xef\xf7\x95\x25\xc1\xb6\x58\xc9\x68\xd6\x6c\x34\x5e\xc7\x72\x3a\x17\xf1\xad\x60\x6a\xb2\x9e\x8e\xf3\x6a\x7d\xad\xb4\xd1\xfc\xba\x49\x31\xdd\xed\xce\x39\xe6\xf4\x2d\xc7\xa6\x44\x0b\x3a\x33\x03\xb5\xd6\x80\x46\xdf\xd3\xdc\x1f\xbd\x3c\x1c\x21\xd8\x0c\x1e\xc0\x6e\xaa\x34\x8f\x50\x4c\xde\xd8\xa4\x79\x85\x5e\x43\x7f\xd1\x51\xc9\x03\xd1\xb1\xb6\x49\xd7\xde\x87\x26\xaf\x70\x03\xa1\x0b\x06\x2e\x38\x79\x13\x59\x42\x00\x0d\x54\x65\x21\x68\x20\xa3\x7e\xbf\x29\x58\x0c\x4d\xd2\xc5\x80\x19\xa2\xf8\x94\x59\x21\xd9\xc1\x68\x34\x3a\x7a\x74\xf4\x4b\x1f\x25\xd5\x9b\x8b\xc3\x47\xcf\xce\x1f\x3d\x3b\xea\xa3\x2a\x12\xe3\xf3\x51\xba\x18\x5c\x27\x08\x95\x84\x7e\xe5\x1d\xfe\x9d\x54\x92\xad\x8d\x44\x12\x29\xab\x9d\x59\x42\xb8\xa6\xd7\xd7\x3c\x74\xdd\xef\x63\xce\xc4\x00\xa5\x68\xf0\x9a\xc3\x66\x50\xe9\x9c\x4f\xf4\x14\x73\xaa\xa8\x24\x09\xa8\x55\x0d\x4a\x0d\xd5\x92\x24\xfe\xf1\x35\xc7\x39\xa1\xd2\xdc\x20\x79\x47\x9e\xd8\x56\x44\x1e\x33\x5e\xa0\xbe\xb1\x8a\x3f\xad\xe9\xfb\xb7\x25\x88\x90\x7f\xb2\x1e\x51\x69\x78\x4a\xcc\xf1\x33\x2f\x9c\x0d\x7d\xce\xd0\x63\xbe\x92\x8f\x37\xa3\xc7\x7c\x36\xcb\xd7\x99\x2e\xc2\xc3\xfe\x42\x16\x1a\x51\xc9\xb6\x25\xe5\x51\xa8\xe0\xca\x60\x62\x78\x95\xcf\xef\x21\x76\x8a\x7d\x8c\xec\x6d\x6d\x45\xda\x30\x5b\x8a\xbc\x9d\xdf\xc8\xa2\x90\xd9\x4d\x4f\x89\xbf\xd6\x52\x89\x79\xaf\x07\x8a\x6b\x61\x10\x6f\xcf\x7c\x8b\x6c\xda\xaa\x9f\xfe\x82\xbd\xe3\xdf\x15\xfd\x7e\x4d\x5f\xd1\x7a\x4f\xba\x55\xf7\x12\x2c\x6d\x5a\xad\x27\x1a\x4c\xc9\xbe\x72\xec\x74\xce\x6a\x90\x53\x0d\xfc\x6a\x46\x48\x49\xdf\x70\xb6\xcd\xf8\x52\x14\x2b\x6e\x53\xd4\xb8\x94\x4e\x2e\xf9\x8b\x3d\x5a\x32\x93\xda\x9e\x1e\x48\x0c\xe5\xe1\x97\x6c\xcb\x92\xda\x84\xa1\x45\xf8\xa0\xeb\x0a\xe5\x1c\x1a\x4a\x2a\x8b\xcb\xa8\xab\xce\xa6\xd1\x58\xd0\xf9\x99\x1b\xec\x23\x38\x30\x74\x7d\xe3\xc0\x05\x77\x91\x02\xeb\xa1\x9f\x1e\xb1\xa8\x0a\x77\x0b\x0b\x86\x2b\x70\x5c\x55\x62\xfe\x96\x2f\x05\x2c\x68\xad\x26\xd5\x43\x39\x07\x77\xc6\x85\x38\xcf\x97\x2b\xae\x04\x16\x43\x39\x27\x49\xe3\xd3\x56\x9b\xda\x5b\x97\xa6\xd0\xe7\xcf\xda\x2e\x72\x3e\x3f\x6f\x42\xca\xcc\x0b\x8f\xa8\x06\x23\x44\xa9\x09\x46\xaf\xdf\x9d\xbd\xf8\x7c\xfe\xee\xed\xcb\xcb\x57\x08\x34\x4b\x15\x58\xba\x40\xf0\x97\xc2\xaf\xd4\x70\xc9\xd5\xd7\xea\xe7\xf6\x44\x95\xbe\xcf\xef\xec\x57\x6a\x78\xa7\xf8\xaa\xae\x09\x06\x55\xcd\x98\xb8\xc8\xa2\x30\xff\x0d\x13\x90\xf9\xd7\xc6\x16\xed\x8d\x42\x6c\x50\xe6\xe7\x08\x51\x1a\x7d\x56\x44\x6a\x5b\xb3\x23\x9a\xb9\xe4\xaf\x7e\xd5\x90\x0d\x22\xda\x3b\x4a\x14\x46\x1f\x2f\x3e\x7d\xbe\x7c\x7b\xf9\xe9\xf2\xec\xf5\xe5\x9f\x17\x2f\x20\xd8\xb1\x7d\x7d\x9c\x40\xa8\x51\x91\xcd\x43\x18\x52\x31\x2c\x74\xbe\xc2\x90\x90\x07\xa0\x48\x30\x29\x69\xad\xf3\xff\x04\x12\xf6\xae\xf6\x7f\x0d\x8f\x9f\x38\x70\xdc\x2a\xcf\xf5\x2b\x7b\x3e\x88\x87\xd1\x31\xfd\xc0\xf1\xd6\x63\xab\x7c\x18\x92\x2c\xc1\x45\xca\xe5\xeb\x36\xe8\xc1\x9c\xae\x00\x9e\xc3\x11\xe4\xf5\x90\x4c\x0c\x0b\x91\x69\xe2\x7c\x85\x52\xcc\x99\x04\x4b\xcb\xb0\xeb\xa9\x03\xf4\xd9\xf9\xf9\xbb\xdf\xde\x7e\xfa\x88\x28\xdf\xed\x26\x53\x42\x92\x0c\xa3\xe2\x36\xbf\x7b\xe3\xf3\x91\x6f\x5d\xa8\x8a\x97\xd6\x25\x49\xe7\x3d\x80\x6e\xcf\xf7\x34\x44\xe0\x6f\x5f\xf7\x97\x72\x7e\x55\x68\xce\xb3\x1b\xa1\x50\x49\xb7\xe6\x47\x42\x66\x2c\x3b\xd7\x93\xbf\xb9\x94\x25\x5d\xba\x2c\xe5\x45\xb2\x8d\xb6\x7b\xe3\x58\x54\x41\x07\x4a\xda\xd8\x3f\xad\x96\x11\xea\xf0\xcd\x3d\x14\x5a\x6d\xfd\x8f\x64\xa2\x8c\xe3\xa7\xfd\x04\x06\x0f\x73\xde\x6d\x88\xb5\xae\xfb\x88\x46\x69\xac\x01\x7f\x78\x53\xe2\x9a\x77\x66\x95\x29\x60\x5d\x08\x35\x04\x83\x8c\xb1\x02\xb5\x6a\x67\x7b\x86\x7e\x11\x5c\x09\xd5\x43\x95\x3c\x3d\x92\xc3\x3b\x8e\xe4\x85\x43\xdb\x09\x0a\x27\x8d\xca\x79\x82\x78\x55\x9a\xe5\x59\x02\x7e\x73\xfb\x9b\x19\x57\x73\xe4\xa2\x48\x5e\xcc\xa5\xb6\xb9\xa5\xc1\x06\xa3\x70\x69\xfd\x3c\xf1\xdb\xf2\xd5\xea\x32\xbb\xce\x93\x17\x9c\xaa\x7c\xad\x45\x91\x4c\xdc\x48\x55\xdf\x2b\xae\x6f\x13\xf4\x18\x81\xbe\x1b\x14\x9a\x45\x62\x3e\x4c\x2e\x55\x59\x4e\x69\xc6\x37\x97\x5a\x2c\xab\x2f\xcf\x6a\xb3\x7a\xc3\x35\x30\x63\xc9\x0b\x3e\x34\x65\x3b\x4e\xf2\xe0\x28\x1e\x0e\xa6\xf9\x9c\xa2\xc7\x88\x98\x41\x0a\x9d\x2b\x91\xbc\x01\x17\xc2\xf1\xff\xfb\xef\x00\x00\x00\xff\xff\x8c\x08\x13\xb2\xaa\x13\x01\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\xfd\xdb\x72\x1b\xb9\x96\x30\x08\x5f\xff\xdf\x53\x90\xb9\xbd\xb3\x81\xcd\x25\x8a\x94\xab\x5c\x55\x49\xc3\x6c\xd9\x96\x0f\x65\x59\xb2\x2d\xdb\x65\x17\xcd\x56\xa4\x48\x50\x84\x4d\x02\x34\x12\x94\x2c\x33\xb3\xa3\xba\xff\x39\x3f\xc2\xdc\xcc\xdc\xce\xd5\xc4\x5c\xcc\x0b\x7c\x4f\xf0\xf5\x23\x4c\xcd\x8b\x4c\xe0\x94\x27\x26\x5d\xb5\xbb\xa3\x23\x14\x62\x26\x12\xc7\x85\x85\x75\xc2\xc2\xc2\x94\xce\x18\xa7\x08\xcd\xd6\x7c\xa2\x98\xe0\x08\x6f\x82\x75\x42\x5b\x89\x92\x6c\xa2\x82\xc1\x55\x2c\x5b\x8a\x04\x6b\x6e\x33\x4e\x83\x36\x51\x37\x2b\x2a\x66\xad\xcb\x85\xb8\x88\x17\xaf\xe7\x2c\x19\x16\x8f\x51\x53\xce\x6b\xc6\xa7\xe2\x7a\x68\x7f\x1a\x73\xd8\x0a\x5c\x3d\x8d\x39\x12\xba\x98\x0d\xf5\xbf\x68\x93\x0d\x7c\x67\x5b\x14\x29\xa0\x78\x23\xa9\x5a\x4b\xde\x52\x88\x92\x0d\xfd\xb2\x12\x52\x25\xd1\x26\xcb\x80\x76\xdd\x1b\x2e\x1e\x33\x3d\x22\x49\xca\x43\x56\x78\xa3\x13\x29\xd9\x4e\x39\xbd\xf8\x48\x27\xaa\xbb\x92\x42\x09\xdd\x13\x90\x84\x76\xe7\x71\x72\x7a\xcd\x5f\x48\xb1\xa2\x52\xdd\x00\x27\x81\x2f\x18\x10\xdf\xdf\xb3\x9b\xe5\x85\x58\x0c\xed\x4f\xb4\xc9\x40\x10\xde\x65\x8a\xca\x58\x09\x99\xa6\xc1\x3f\xfe\xa3\x7f\x09\x80\x11\xde\x8d\x93\x1b\x3e\x79\x5a\xfe\x5e\x49\x09\x20\x26\xbc\xab\xc4\x99\x92\x8c\x5f\xbe\x8e\x2f\x4d\x96\xd2\x7b\x50\x00\x65\xa2\x81\x02\x12\xb8\x1d\x84\x20\x34\x0c\x69\x31\x84\x16\xe3\x89\x8a\xf9\x44\xf7\x72\x36\xa4\xd1\x0c\x98\x1f\xe6\x44\xd2\x58\x51\x24\x8a\xcc\x58\xb7\x4b\xaf\x5b\x47\x88\xa7\xe9\x68\x8c\x07\x0e\xd4\xac\x7b\xce\xf8\x95\xf8\x54\x86\x99\x6e\xd4\x36\xc9\x49\x90\xac\x93\x15\xe5\x53\x3a\x3d\x53\xb1\x54\x81\x2f\x97\xe7\x16\xc0\xf0\x86\xcd\x50\x40\xbf\xd0\xc9\x5a\x31\x7e\x19\x10\x42\x38\x56\x73\x29\xae\x5b\xa6\x49\x29\x85\x44\xc1\x63\xca\x2d\x08\x5a\x2c\x69\xc5\x0b\x49\xe3\xe9\x4d\x4b\xae\x39\xd7\x45\xf0\x40\x57\x31\x11\xcb\xd5\x82\x2a\x3a\xb5\x55\x98\x6a\x4d\x3d\xfa\x5d\xb8\x2a\x99\xef\xc2\x39\xc2\xd9\x4c\x48\x24\xbb\x4b\xaa\xe6\x62\x4a\x04\xc8\x6e\x2c\x2f\x09\x1b\x0c\x6c\xf7\x63\x22\xbb\x53\xba\xa0\x97\xb1\xa2\xba\x81\xd8\x26\x4f\xc8\x05\x8a\x41\x9a\x36\x27\xa6\x95\x09\x21\x24\xc1\x13\xc1\x15\xe3\x6b\xea\x1b\x98\x64\x99\xee\x01\xa7\x5f\x94\xee\x80\x6f\x07\xcb\x6e\x42\xb9\x22\xb2\x7b\xee\x7e\x63\x79\x39\xa0\x8b\x84\xb6\x2a\x1d\xce\xf3\x9b\x71\xd4\xe0\x58\x86\x11\x29\x0d\xdc\x0e\x61\x20\xbb\x53\x96\xac\x62\x35\x99\x1f\x7d\x99\xd0\x95\x81\xb4\xf9\x82\x33\xdd\x50\x60\x7b\x58\x6e\x25\x0c\x65\x37\xbe\x90\xeb\x95\x42\xfe\xab\xad\x0b\x0f\x38\x29\x4d\x8e\x21\x04\x33\xb2\x76\xd3\x6c\xe0\xce\x85\x5c\xc6\x0b\x5d\xdb\xac\x6b\x90\x45\xf7\x98\x6b\xe0\x09\x4e\x87\xa5\xde\x45\xc5\x30\xde\x33\xba\x98\x06\x30\x33\x10\x6f\x80\xde\xe6\x2a\x5e\xac\x69\x64\xbe\x83\xae\x27\xb2\xd5\x65\x59\x01\x21\xdb\x5a\x18\xa2\x3a\x08\xdc\x84\xba\x9c\x6e\x5a\x67\x76\xfc\x59\x86\x14\x48\x88\x31\xb0\x2c\x5f\x2a\x7e\x38\x1b\x25\x6f\x1c\x15\xd9\xe8\xba\x23\x3f\x36\x88\xe5\x65\xa4\xba\x93\x78\xb1\x40\x3a\x63\x96\x4d\x34\x74\x35\x81\xa8\x64\x77\x2d\x9a\xdc\x59\x96\xa9\xee\xb5\x8c\x57\x64\x62\xa0\x96\x90\x32\xc9\x9a\x21\xbc\x29\x3a\xb0\xa8\xbc\xad\xf4\x9b\x2e\x32\xd7\x45\xe6\x23\x31\x26\x25\xba\xec\xa9\xdc\x9c\x25\x99\xa9\x78\xea\xd7\xed\x25\x55\x2f\xfc\x8a\x3d\x9d\xc1\x15\x99\x86\xe1\x14\x4d\xd1\x29\x1a\x8d\x31\xc6\x83\xab\x30\xbc\x6a\x13\x4d\x07\xa4\x1d\xca\x15\x08\x1c\x86\x68\x4e\xae\xb0\xa9\xe9\x86\xac\x8a\x35\x4f\x66\xa5\xe7\x2a\x65\x98\xe3\x62\x20\x4b\x0d\x84\x91\x45\x73\xf0\x00\xf0\x38\x34\xee\xce\x84\x3c\x8a\x27\xf3\x12\x99\xa5\x78\xa3\x46\x74\x5c\xa1\xb2\xa5\x31\x79\x8a\x82\x28\x28\x9c\x65\x18\x17\x70\xb9\xb4\x64\xde\x90\x96\x41\x39\x2f\xa9\xd2\x93\xbc\x40\x5c\x80\x4b\x93\x92\x32\xb1\xe7\x10\xe3\x4d\x3b\xcf\x69\x4a\x42\x0c\x13\x5b\x7d\xa2\x31\x7c\x24\xc6\xa0\x80\x59\x24\xb7\x03\x6b\x13\x92\x38\x1c\xb7\x0b\x21\x31\x08\xba\x20\xb3\xae\x41\x58\xbf\xf6\x17\x61\x18\x08\x03\xb2\x82\x15\x2c\x72\xb0\x2f\x20\x38\x3f\x8f\xaf\x63\xa6\x02\x3c\xa4\x5d\x49\x13\xb1\xb8\xa2\x68\xd1\x75\xa9\xb8\xab\xe6\x94\x57\x39\x13\x77\x94\x04\x94\xe9\x65\x86\xa1\xfe\xd9\x81\xde\x7f\xc7\x51\xa9\xe6\xa6\x1a\x5d\x97\x89\x82\x18\xcd\xb6\x2a\xf4\x60\xdb\xae\x37\x9b\xa0\xc4\xae\x25\x03\x33\x0d\x48\x9d\xea\x0b\x10\x3e\xe4\xb6\xb5\x18\x62\x1c\xc5\x08\x67\xc5\x0c\x5e\x14\x33\x28\x89\xca\x19\xe1\x88\xba\x35\x3b\xd6\xb0\xbe\x12\x6c\xda\xea\x69\xe2\x64\x28\x09\xcd\x89\x30\xe1\xeb\xc5\x02\x0a\x02\x40\xcb\x24\xb2\xa8\xad\x6b\xbb\x12\x86\x88\xe6\xa4\xc0\xd3\x34\x6a\x68\x81\x6d\x01\x6c\x6f\x9a\x2a\xc4\x6e\x34\xc9\x80\xd6\xa9\x89\xad\x41\xa3\xd3\xeb\x9b\x15\x75\xdc\xe9\xf5\x9c\xb6\x7c\xf3\xad\xa9\xa0\x49\x8b\x0b\xd5\x5a\x49\x71\xc5\xa6\xb4\x15\xb7\xfe\xc1\x14\xfe\x87\x96\xad\x2b\xc8\xa1\x65\xc5\x10\x4e\xd6\x48\x42\x31\x00\xdb\x46\x19\xef\x34\xbd\xb7\x78\xe7\x0a\xee\xea\x96\x41\xc7\x3a\xc4\x92\x81\x15\x00\xb8\x65\x0e\xb6\x06\x31\x14\x96\x40\x23\x3a\x52\x1a\x53\xd6\x0b\x75\x12\x2f\xe9\x98\x08\x8b\x18\x40\xbb\x1a\xe3\x88\x32\x3f\xc7\x62\x92\xaf\xea\x76\x01\xa9\x0a\x90\x2d\x82\x96\x41\x8c\xb7\xfb\x82\x23\x11\xa1\x3f\x07\xd5\x1c\xa2\xb6\x77\x9a\xf3\x6b\xb0\xc6\xbc\xe5\xd6\x56\x53\xf5\x05\xb2\x5d\x17\xf2\x9b\x26\xec\xc7\x62\x12\xa9\x51\x6f\x9c\x0d\xfa\x2d\xc6\x5b\xca\x74\xdd\x90\xf1\x63\x31\x21\x6a\xd4\x1f\x63\x38\x28\xbe\xcc\x18\x8f\x17\x8b\x1b\xfb\xed\x60\xac\x7b\x38\x53\x54\xda\xf7\xdb\x63\x0c\x86\x00\x29\x79\x73\xc4\x95\x64\x34\xe9\xae\xd6\xc9\x1c\xd1\x52\xfb\x67\x45\xfb\xaa\xeb\x18\x14\x13\x3c\x4d\x37\xd9\x80\x9a\xd9\x24\x39\x7f\xd1\xa3\x50\xb4\x65\xc0\x00\xe5\xdc\x84\x16\x15\x1e\xe9\x0a\x6b\xcd\x92\x91\x1f\x5b\x20\x85\x50\x41\x36\x06\x95\x13\xdd\x6b\xd3\x49\xd7\x55\x49\x13\xaa\x50\xbb\x57\xea\xe1\xa9\xae\x50\xaf\x9d\xbc\x9f\x23\x61\x96\x60\x09\xcf\x0c\xc5\x52\x16\x19\xb7\xe5\x5b\x8b\x1c\x3e\xb7\xd2\xb9\xda\x2c\x39\x89\x4f\x90\xea\x2e\x28\xbf\x54\x73\xec\x65\xc1\xbd\x3e\x30\x52\x12\xd9\xf1\x46\x8b\x5f\x83\x4e\x87\xdf\xf5\x79\x07\x98\xcd\x90\x23\x92\x0a\x38\x2e\x7a\xe1\x48\xd5\x88\xeb\x89\xd0\x68\x4b\xda\x7d\xc8\xc9\xad\xff\xee\xd6\xb5\xcf\xd1\x03\x9a\x15\x92\xaa\x41\x66\x96\xb9\xa5\xb7\xd1\xaf\xd1\x79\x89\x36\x9d\xe7\xcc\xc2\x09\x1f\xae\x36\x23\x7d\xb4\x7b\xbe\x60\x6b\x51\x62\x8b\x37\xdd\x89\xe0\x89\x92\xeb\x89\x12\x92\xac\x60\x55\x79\x5f\xc0\x6a\x14\x8f\xc9\xc2\x48\x63\x8b\xf8\x46\x2f\x2f\x52\x48\xb2\x8f\x3c\x34\xf5\xd2\x4f\xb6\x92\x1b\xd4\x90\xa6\x09\x08\x43\x55\x6e\xd4\x8d\xb7\xdd\xd6\x82\x11\x25\x84\x2c\xd2\xb4\xa1\x49\x42\x88\x26\xac\x45\xbf\xd2\x94\x76\x79\xbc\xa4\x18\x67\xa0\xba\xcb\x58\x7e\x6a\x62\xd0\x4e\x0c\x48\x2a\x82\xc6\xb0\x31\x15\x29\x58\xe1\x08\xa9\xee\xf9\xb9\x81\xd7\xf9\x39\x59\x41\x6c\xd6\x57\x9a\x22\xa5\x01\xd3\xd0\x2f\x8c\x41\xed\x14\x3b\x6e\x30\x28\xdd\xbb\xd8\x48\x55\xdb\xdd\xdb\x38\xfe\xa9\x65\x2f\x58\xa2\xcb\xb2\xfe\x52\x7a\x19\xb1\x9d\xf2\x14\xa8\xee\x61\x59\xdf\x22\x7a\x31\x1a\x0d\xac\x28\x61\x74\x2a\x30\x82\x46\xce\xa9\x58\x18\x22\x46\x5e\x48\xb1\x64\x09\xb5\xb2\x94\x55\x98\x2e\xd1\xc4\x17\xc0\x5a\x94\xf0\x8d\x35\x4d\x38\x92\x78\x18\x47\xb1\x41\x54\xd4\xc4\xb1\xf3\xc2\x86\x6e\x2b\x8b\xf4\x79\x01\xcd\x84\x61\xa9\x81\x74\x53\x05\x6e\x00\x37\xdf\x10\x21\xe1\x26\xd7\x27\xb7\xb3\x04\x23\x4b\x69\x5b\x79\x65\xe3\x40\x03\xe9\x13\xbd\x49\x1a\xf0\x73\x34\x1e\xe8\x35\x6d\xd8\xbb\x99\x69\x4c\x2d\x59\x94\xb8\x58\xaa\x92\x5e\x51\x99\x50\x84\x21\x5f\x7a\xd2\x13\x03\x9a\x13\x02\x47\x34\x68\x77\x25\x56\xc8\x50\x1f\x6e\x6b\x74\xf5\x48\xb7\xe4\x39\xc8\x9c\x1e\xc8\x2c\xff\xe8\x09\x80\xcc\x74\x77\x4d\xd6\x84\x9c\xc2\x51\x09\xb7\x36\xa5\x55\x13\x1d\x81\x21\x8f\x51\x79\x4c\x9a\x30\x6a\xc2\xb9\x92\xf4\x8a\xf4\x2c\x11\x35\x44\xc4\x3d\x1b\xf5\xcd\x8a\xa1\xe6\xd1\xd1\x0b\x93\xe2\xbb\x64\x5f\x2a\x2c\xca\x24\x55\x59\xa6\x49\x2a\x09\x26\x75\xd6\xe2\xe9\xf9\x19\x86\xb6\xc2\x1e\xc4\xd4\x00\x44\x13\xf8\x40\x59\xe9\x65\x32\x8f\xe5\xa1\x42\x3d\x9c\x8b\x9a\xfa\x33\x50\x1c\x86\x8e\x2a\x77\x68\x37\x59\xb0\x09\x45\x7d\xac\x25\x7f\xfd\x59\xcb\xe2\x8e\x5b\x67\x90\x28\xb1\x8a\x4a\x68\x50\x1a\x4c\xcf\x19\x81\x6a\x9d\x1b\xf5\xc6\x25\x76\x55\x95\x59\x94\x95\x59\xac\xa2\xaa\xca\xd2\x87\xe5\x48\x57\xf1\x22\x83\x2d\x55\xb5\x71\x12\x74\x1f\x7c\x45\x03\xc7\xac\xe6\x2c\x19\x94\x24\x78\x63\xea\x70\xf5\xc7\x8e\xbf\x7a\x85\xcc\x40\x57\x79\x91\x46\x02\xff\x43\xc1\xa5\xdd\xe6\x99\x87\xb4\xa8\x0f\xda\xa1\xe9\x5e\x7f\x20\xee\x91\xde\x60\x6f\x4f\x58\x84\x65\x5b\xd0\x11\x63\x88\x09\xab\x43\xc8\xb0\x6a\x4d\x37\xba\x96\x79\xe3\x42\xdc\xa6\x7c\x6a\xed\x19\xfe\xdb\x5d\x92\x63\xa1\x37\x40\xb8\xc9\x65\x10\x78\xf9\x25\xc0\xb0\x2e\x25\x17\xc2\x8b\xad\x6b\x12\x86\xeb\x2a\x42\xdf\x65\xb9\xec\x53\x34\x5e\xa4\x41\xbb\x67\x0a\x96\xf3\x17\x95\x96\x4b\x94\x52\x33\x6f\xc5\x98\xfc\xdd\x6d\x99\xa2\xba\x50\x7b\xbd\x6d\xfb\x51\xf2\xa6\x95\xa8\x58\xd1\x25\xe5\xaa\x75\xcd\xd4\x5c\xac\x55\xcb\x14\x6f\x09\xd9\x72\x3d\x08\xfe\x1d\x1d\xce\xb2\x0c\xac\xd9\x23\x2a\x1b\xb0\x2c\x35\xb2\x14\x68\xe7\xcc\x73\x3b\xf3\xb9\x79\xad\x3e\xf3\xdc\x48\x52\x62\x7b\x16\xf3\xc5\x29\xaa\x13\x15\x86\x45\xe7\x45\xb9\x9b\x0e\xb5\xc4\xe0\x42\xd2\xf8\x53\x96\x69\x6e\x13\x98\x67\xb3\xc8\xd2\x34\xf0\xd6\x13\xf3\x8e\xc3\xb0\xc0\x1d\x1a\x86\xf4\x2e\x29\x8f\xda\xb0\x2a\x4d\x89\x3c\x9f\x62\xc3\x32\x7e\x46\x9b\x5c\x66\x72\x8b\x48\xb9\xe5\x43\x81\x0d\xd1\x2e\xea\x65\xa5\xab\x52\x33\x5a\xd2\x37\x5f\xbc\x69\x06\xc5\x38\x03\xff\x52\x03\xf7\x9f\xa3\x1a\xa5\x31\x9b\x2c\xf5\x81\x9b\xc4\x61\xd1\x1d\x53\x36\x2a\x59\xbb\x5c\x0e\x94\x53\x1f\x92\x53\x5e\x65\x25\xef\xf2\xe8\xbc\xce\x58\x54\x68\x17\x67\x54\xb2\x78\x29\x67\x83\xa2\x8e\x98\xda\x7c\x14\x43\x92\xc1\x8c\x71\x96\xcc\x2b\xd4\x2c\x27\xdd\xbb\xd1\x8a\x5a\xb4\x2a\xb4\xe4\x1a\x5a\x51\x83\x56\xb2\xac\x9f\xe8\x39\x2f\xd3\xd5\x1c\xe2\xb2\x34\xaf\x20\x73\x05\x06\xc3\x19\x92\xba\x8b\x19\x98\x45\xf4\x9f\xd5\x45\x8b\x83\xa6\x7b\x8e\x9d\xcb\x9d\xac\x82\x97\xcc\x2a\x5e\x53\xd5\xbd\xf4\x2c\x5d\x64\xd9\x16\x5d\x60\x0b\xcd\x57\x17\x8e\x12\xc4\x4a\xd1\xe5\x4a\x05\x38\x03\xcf\x70\x8d\x95\x31\xaa\x9b\xa6\xcb\xa0\xca\x59\xf3\xc6\x2b\x9b\x91\x56\x8a\xa0\xd0\x87\x23\x0a\x4e\xff\x8d\x64\x06\xb9\x39\xb7\x84\x29\x7e\xea\xcb\xdc\x43\xc3\x56\x65\x48\xe5\x3b\x0f\x03\x6b\x5a\xbc\xf4\x72\xd4\xab\x35\x57\x6c\x49\x09\x2d\x2c\x89\xb9\x1c\x18\x48\x63\x41\xab\xe7\x6d\x91\x96\x0c\xb0\x56\x31\x33\x8c\x81\x37\x1a\xd0\xb4\x36\xf0\x3c\x56\x73\x42\xf4\xff\x30\x54\x66\xc7\x01\x6d\x19\xa3\x8a\xad\x9a\x30\x2c\x9e\x71\x9a\x36\xe4\xb5\x1b\x36\x61\x68\x7f\x9b\xf3\x24\x74\x31\x0b\x43\xfd\xbf\xf9\xbb\xee\x18\x4e\xd3\xd2\x10\x8b\x49\x08\x30\xc2\x25\xd5\xd0\x28\xb9\xb9\x1d\xb6\xdd\xd6\xa2\x6d\xcd\xda\xaa\xb5\x31\x88\x49\x9b\x55\x36\xac\x5c\x95\x3f\xb4\xbd\xda\x60\x77\x8f\xfc\x06\x0d\xda\x64\xd0\x87\xcd\x65\x59\xca\x2b\x0a\x65\x19\x1e\xf5\xc7\x1a\xb0\x13\xb2\xc9\xb4\x98\x68\x0a\x3d\x4d\x8e\xf8\x7a\x49\x65\x7c\xb1\xa0\xb0\x2e\x19\x5a\x4b\x3b\x3f\x0f\x69\x32\x91\x6c\xa5\x84\x84\x84\x6c\x66\xd1\x3a\x0c\xdb\x13\x4b\xe1\x37\xfd\xe8\x20\x83\x3e\x1e\x6e\xcb\xca\x6b\x2b\x9b\x29\x5c\xd6\xd8\x68\x97\xe6\xcd\x65\xd1\x24\x83\x19\xa9\x12\x4a\xa7\xe8\x14\xb9\xa2\x36\xea\x87\x0a\xc3\x44\xf0\x19\xbb\x5c\xfb\xb4\x03\x9d\x76\x2d\x99\x72\xef\xdf\xe9\x77\xab\x2f\xd0\x2c\x83\x85\x1e\xa3\x17\xfb\xa1\x49\x97\x6a\x2d\xbc\xe6\xef\x04\xc6\x1f\x61\xaf\x8f\x33\x98\x93\x20\xe8\x26\xab\x05\x53\x30\x25\x4d\xf0\x6f\x5b\x18\xa1\xe0\x6b\x80\x1b\xc1\x88\x7a\x5a\x55\x19\x6e\x37\x19\xd8\xee\x04\x84\xac\x90\xc2\xc3\xb9\xb7\x03\x04\x01\x8e\x5c\xa5\x0a\x67\xee\x11\xae\x48\x4d\x4c\xd4\x2c\x4d\x93\x1a\x4b\x26\x4a\x66\xa4\x07\x31\xff\x07\x2d\x2e\x2c\x16\xce\xfe\xd6\x12\xbc\x15\x74\x54\xa1\x8d\x65\x70\xd3\x04\x82\x29\xba\x42\xca\x68\x55\x0d\x5f\xb7\x51\x7c\xa8\x7b\xd0\x26\x44\x45\x4d\x7a\x7a\x06\x97\x64\x8b\xe9\xb5\x97\xba\x81\xdc\x7a\x62\xc8\x29\x18\xca\x48\xc3\x70\xbb\x16\x24\x35\xc3\x71\xd3\xa6\x85\xfa\xa5\xd9\x67\x71\x13\x95\x57\xc4\x9b\x8d\x35\xa6\xb4\xc1\x81\xd3\xd9\x1f\x14\x6e\xff\xc7\x9a\xdf\x35\x05\x82\x5f\x51\xa9\x9c\xf5\xae\xa5\x44\x6b\x25\xd9\x92\x29\x76\x45\x5b\xa6\x5f\x9a\x76\x5f\x68\xd4\xac\x6d\xad\x5e\x37\xae\x82\xd6\x85\xc7\x10\x8a\x33\x38\x23\xa2\x3b\x15\x93\xb5\x96\x11\xe1\x88\x2c\xd1\x19\x0e\xc3\x25\x3a\x73\xc6\x83\xa3\x85\x91\x1e\x31\x9c\x36\xcd\xf4\xd1\xb0\x96\x0f\x29\x6c\xb6\x8e\xcf\x49\x3b\xd6\xca\xd3\xdf\x45\x68\x4e\x51\x30\x65\x57\x01\x86\x20\x0e\xbe\x45\x70\xba\xb1\xa6\x37\x1f\xff\x90\xaa\x7c\xd1\x54\x25\x1e\x7e\xdc\x16\x9a\x14\xb9\xd1\xdc\x8a\x92\x4b\x44\xb5\x18\x0d\xe7\xb8\x20\x9d\xad\x8f\x16\x34\x39\xf1\xcc\xd8\x0c\x5d\x9b\x34\x3f\x55\x33\xd4\x4e\xba\xb3\x02\x8c\xa0\x46\x74\x8c\xb3\x0c\x0e\xeb\xab\xcb\x62\x6a\x7d\x62\x2d\x2a\x20\x85\x3b\x41\x83\x75\xb6\xb4\xbe\x3e\x35\x83\x0a\x5e\xd8\xa1\x7d\xda\x62\xd2\x6c\x86\x0e\xab\x43\x3b\xd4\x32\x4b\x65\x7c\x9f\x5c\xe6\xea\x08\x83\x4b\xaa\x02\xc6\x5b\x32\x4d\x83\xc4\x3d\x6e\x13\x85\xc3\xc9\x84\x26\x89\x90\xb6\xd3\xc9\x7a\xa5\xd9\x34\x9d\xe6\x9d\x0e\x2c\x42\xea\xc2\x9a\xbf\x6b\x25\xd9\x99\x1c\x30\xa8\x2c\x83\x63\x12\x0f\x77\x08\x16\x2f\xba\x33\x93\x32\x43\x7d\x90\x18\x67\x3b\x05\x10\x53\x29\xa8\x0c\x5e\xd5\xf0\x5b\x8f\xf1\x18\x09\x28\x4d\x9f\xc4\x1b\x31\x52\x63\x42\xbd\x40\x44\x33\x78\x40\xc4\x28\x38\x3f\x9f\x08\x49\xf7\x3e\x26\xe7\xc9\x3c\x96\x74\x7a\x7e\x1e\x8c\xd3\xf4\x15\x6a\xfa\x00\x9b\x0c\xc3\x6b\xe2\xb9\x70\xbe\x96\x07\xc5\x5a\xcf\x3d\x2d\x1e\x74\x19\x4f\x56\x74\xa2\xce\xc4\x5a\x4e\xb4\x7c\x5b\x4b\x69\x5a\x47\xaf\x3d\x31\xc8\xac\x72\x71\x02\x4f\xe1\x0d\x3c\x27\xb5\xa2\x70\x8b\x88\xee\x2f\x34\xfe\xf4\x3c\x5e\xc1\xc3\x26\xb3\xe6\xad\x30\xdc\xe7\xb1\xa1\x0c\x13\x31\xa5\xfb\x5d\x45\x13\x85\x9e\xa3\x5b\x18\xc3\xa3\xba\xd7\x46\x21\x66\x35\xd3\x89\x07\x23\x35\x4e\x53\xa4\x7f\x9c\x80\xd6\x26\x84\x0e\x69\xb4\xc9\x70\x86\x51\x70\x45\x65\xc2\x04\x4f\x02\x18\x8d\xb1\x35\x58\x6d\x5c\x5a\x14\xdc\xee\xde\xe9\x7e\x1f\xc0\x52\x4c\x69\x14\x58\x51\x29\x80\x89\x58\xdd\x48\x76\x39\x57\x51\xf0\x5f\xff\x8f\xd6\x41\xef\xa0\xd7\x7a\x48\x39\x4b\x5a\x2f\xd6\xc9\xfc\x53\x2c\xe9\x55\x0b\x7d\x5d\x08\x26\xc5\xe4\x53\x57\xae\x71\xa0\x1b\xc2\x70\x9f\xf4\xe0\xb3\x91\xcc\xba\x32\xe6\x53\xb1\x44\x18\x1e\x37\xf1\x16\xeb\x2f\x82\x82\x8e\x5b\x60\xb9\xa1\x51\x0d\x83\x20\xd2\xcb\x0d\x9f\x07\x1d\xd4\xe9\xdc\xef\x7c\xc6\xf9\x34\xa2\xdb\x77\x70\x06\x5f\xc9\x23\x14\x7c\xa2\x37\x49\x80\xe1\x6d\xd3\x24\x7d\xb5\xe0\xd0\x3f\xe4\xb1\x65\x70\x4f\xc8\x26\x83\x77\xc5\xa4\x68\x1e\xf0\xd0\x4a\x2a\xcf\x8c\x1d\xf3\x1d\xbc\x27\xcf\x34\x85\x82\x9f\xc9\x33\x4d\x9e\xe1\x25\x79\xd6\x4d\xa8\x1a\x9c\x34\xc3\xfc\xa5\xc5\x84\x67\x06\x87\x81\x66\xf0\xb4\xa9\x2b\xef\xf3\x5c\x38\x4d\x35\xbd\x7d\xd3\x94\xeb\xe7\x22\x57\x66\x0d\x05\xba\x63\xbf\x90\xb7\x28\x30\x66\x81\x00\x0f\x9e\x8c\x7e\x19\x93\x76\x0f\x76\xf4\xe6\x18\x29\xf8\xe5\x5b\x1d\xd1\x64\xf1\x17\x3c\x54\xa3\x5f\xc6\xd1\xce\x7e\xd8\x4c\x99\xd9\xb3\xfb\x15\x94\x22\x9b\x84\xaa\xe8\x04\x34\x85\x7f\x0a\xf3\x38\x89\xde\x00\xe5\x33\x21\x27\x34\x6a\x28\xfe\x46\x4b\x35\x4f\x35\x67\x39\x41\x4a\x2f\xc5\x4c\x97\x54\x54\x3e\x12\xb2\x29\x7f\x79\xc7\xdc\x48\x06\x03\x4b\x87\x29\x4e\x53\x24\xc9\x53\x44\x31\x36\x5a\x53\xbb\x51\xec\x79\xca\xb5\xae\x15\x2b\x76\xb1\xa0\x2d\x49\x27\x94\x5d\x51\x09\x5a\xf0\xe9\x04\x2d\x49\x3f\xaf\x99\x2c\xd1\xbb\x96\xcc\xb2\x0c\xa8\x6a\xf6\x88\x52\x86\x3b\x81\xd4\x0f\x6e\x84\xc0\x89\xc3\x3a\x27\x0f\x58\xa9\x10\x79\x29\x0e\x0f\x76\x2c\x4b\x60\x90\x7b\xd2\xb4\x0d\x77\x6d\xc7\xdd\x35\x4f\xe2\x99\x96\xb0\xf3\x94\x42\xc4\x85\xa4\x48\xe5\xe2\x75\x2c\x2f\xa9\x7a\x4c\xd5\xa0\x81\x6c\x18\xcb\x48\x62\x3b\x90\x53\x32\x9a\xa6\xd7\x88\x41\xc0\xe3\x25\x0d\x70\x9a\x1e\xe7\x2f\x1a\x23\x24\x62\xb8\x9b\x58\x8a\xc6\xbb\x1f\x05\xe3\x79\x0d\x79\xb5\x9a\x56\x04\x66\x6f\xa2\x4d\x88\x18\xa2\xc9\xb0\x9d\x84\xa1\xa6\xdf\x61\x88\xd6\xa4\xdd\xc3\x91\xdb\xc0\xd3\x69\xb0\x1e\x1a\xd2\xce\xa2\x63\x3b\x5e\x8c\xa3\x3c\xe9\x15\xd2\x09\x19\x46\x39\x11\x2e\x9c\xca\x02\xbf\x90\x03\xd8\x16\x37\x9a\x64\x4a\xa3\xbe\x51\xa3\x48\xf8\x31\xa4\xe9\x73\xfb\x9e\x61\x43\x72\xa4\x22\x02\xb8\x6a\x22\x32\x0d\x15\x0e\x95\xdb\xf5\xca\x40\xa8\xe6\xa5\x14\xcb\x4b\x23\x63\x79\x7b\xc0\xdd\x83\x21\x57\x48\xaa\x91\x1a\x6b\xd5\x4f\x21\xcd\xa6\x70\x64\x12\xc2\xd0\xfc\x8c\xe8\x38\x4d\x85\x79\x17\xf6\x35\x03\xa6\x2c\x1d\x9c\x50\xb6\x80\xd8\xbd\xcc\x16\x42\x48\x98\x34\xf5\xb6\xe5\x76\x15\x49\x47\xe1\x61\x2f\x42\xea\x5e\x6f\x18\xab\x88\x29\xac\xb9\x0d\xac\x5d\x0d\x4b\xc6\x21\x69\x2c\xaf\x0b\xac\x15\x32\x4a\x04\xfc\xd4\xeb\xfd\xd0\xff\xe9\xa7\x83\xef\xbf\xfb\xe1\xbb\xde\x4f\x3f\xf5\x71\xd4\xcb\x60\xe6\xeb\x88\xbf\xc0\xa2\x54\xdf\xaa\xb1\xbe\xea\x7e\x90\x33\x5c\x00\x23\x37\xc8\x78\xcb\x25\x0a\x31\xbf\x03\x0a\x93\x1a\x28\xad\xd9\xc4\x74\x25\x5f\x7e\x77\x7b\xc3\x99\x42\xb2\x43\xa1\x87\xa3\x85\x42\x52\xf3\x7e\xe3\xa6\x62\xcc\x9a\x61\x28\xdb\x44\xba\x6d\x92\xf8\xde\xc4\x6c\x95\x22\x41\xd8\x68\xd2\xe9\x8c\x71\x9b\x08\x9c\xeb\xc6\xc6\x0c\x9b\x67\x9c\x74\x3a\x26\xaf\x4a\xd3\x49\x8b\xf1\x16\xc3\x61\xc8\x46\x93\xb1\x71\xb0\xf0\xc0\x49\xd3\x49\x9a\xf6\xbc\x2a\xaa\xc2\x70\xaf\x9f\x65\x30\x57\x64\xc3\xf8\x64\xb1\x9e\xd2\x24\x5a\x99\xcd\x63\x60\x7c\x4a\xbf\x9c\xce\xcc\x6b\x1f\x67\x5d\xf7\x0e\xd3\x3a\xbe\x38\x65\xc6\x4a\xa8\x82\xf4\x80\xf9\xfd\x21\xb3\x37\xc4\x71\xfb\x1a\x3d\x01\x89\xc3\xf0\x1a\x71\xf3\xcb\xf2\xcd\xa2\xca\x66\xd0\x3d\x31\xc0\x26\x0b\xa1\x23\xa1\x07\x1b\x86\xe8\x9f\xe7\x0a\x31\x90\x38\x4d\xf3\x42\x85\x53\x62\x06\x57\x8a\x8c\x82\xd2\xfe\x4e\x00\x41\x55\xa5\x08\x20\x60\x49\x69\xb7\x32\x80\xa0\x49\x57\x0d\xf4\x9a\x3c\x16\x93\x78\x41\xfd\xca\x2c\x2d\xd2\xc0\x29\x53\xc1\x18\x6e\x14\xb9\x32\xfb\xb0\x93\x58\xa1\xc0\xf6\xdb\xd6\x69\x5b\x08\x30\x2c\x95\x96\x75\x1b\x65\xfd\x93\x78\x49\x93\x34\x6d\x52\x41\x15\x52\x70\xa3\xf9\x1e\x5c\xee\x2e\x6f\xc5\x85\x24\x83\x0b\x45\x84\x42\xc1\x2b\x3a\x5b\x68\x09\x1c\x02\x71\xcd\x9f\x19\x51\xa0\x5a\xbb\xa5\xea\x4b\xd5\xb5\x52\x36\x06\x49\x2e\x55\x77\x96\x23\xe3\x90\xfa\xb1\x48\xfd\x39\xa2\x19\x5c\xd7\xe7\x37\xdf\xe9\x23\x17\x4a\xe3\x3c\x27\x2f\xba\x33\x10\xe4\x4b\x77\x06\x8c\xf4\x06\xec\xae\xf4\xbb\x79\xac\xd3\xc9\x5d\x2a\x47\x6c\x3c\xd0\x8c\x34\x36\x86\x22\x05\x31\x08\x44\x21\xc6\x7a\x88\x67\x8a\xec\xff\x25\xfd\x50\x90\xc4\x0f\xdd\x7d\x38\x6a\x44\x2c\x72\xae\x46\xa7\x7a\x01\x8d\xf3\x4e\x13\xf2\x45\xa5\xa9\x6c\x93\x8f\x4a\xb3\x81\x6d\xf2\x46\x87\x0c\x51\x1c\xb5\xdb\x5a\x5f\x3c\x55\xe4\x48\x75\xad\x25\x97\x7d\x6d\x94\x66\x73\xed\xa6\x2b\xe9\x6a\x11\x4f\x28\x3a\x53\x10\x74\x03\x2d\x71\x1d\x8b\x6b\x2a\x1f\xc4\x09\x45\x38\x83\x73\x53\xd7\x34\x56\xb1\x96\xa3\x3e\x9a\xb7\x93\xc3\xd7\x4f\xdf\x1e\x91\xe0\x24\x80\x2f\x26\xe1\xc5\xe9\xf1\xfb\x47\x4f\x8f\x8f\x49\xf0\x22\x80\x43\x9d\x04\x9f\x94\x81\xd6\x8b\x1d\x4b\xc7\x7a\xa4\xc1\x5a\x6b\xdd\x86\xeb\x41\x42\x54\xd7\xca\xa0\x30\x23\xaa\xab\xa5\x1f\x63\x6a\x25\xc9\x50\x44\xb3\xa1\x18\xad\x8d\xec\xbf\xd6\xd2\x45\x84\xec\xeb\x26\xc3\xa5\x8d\x70\x3d\x6b\x66\x27\xd5\x2a\x90\x31\xa1\x23\x3e\x06\x46\x54\x99\xb5\x0e\xd1\x84\x7c\x52\x66\x43\x0d\x87\xe1\xc4\x6d\x34\x4b\x9d\xb3\x7d\xa8\x50\x32\xe4\xd1\xba\x83\x66\xc3\xa0\x1b\x44\xc1\x5f\x02\xdc\xe1\xd6\xe9\x64\x42\xa7\x38\x0c\x73\x11\xdb\xba\xf6\x3a\xe0\xc7\x05\x93\x2e\x9c\x3d\xaf\x15\x8a\x35\x3b\x44\xaa\x9b\xcc\xe3\x65\x9a\x32\x4d\x05\xf4\x23\x0e\xc3\x63\x14\x43\xa0\x9f\x03\xa3\xff\x51\xd3\x21\x88\x8d\x14\x08\xc7\x8a\xb4\xdb\xdf\x5a\x0c\x3b\xb4\xf6\xb6\x17\x5a\xac\x84\x6d\x99\xe4\x2b\x45\x8e\x55\x18\xb6\x6d\xa2\x69\x3f\x0c\x83\xc4\xbc\xd5\x7d\xb9\x0b\x2f\xad\x07\x8a\x1c\x4a\x19\xdf\x74\x59\x62\x7e\x9b\x16\x70\x60\xbe\x38\x93\x56\x06\xaf\x1b\x59\x89\x33\x6e\x39\x63\xd3\x89\xf2\xba\xb2\x16\xe2\x77\x53\x85\x2b\x5d\xe1\x53\x45\xe2\x61\x93\x6a\xcd\x68\x52\x33\x17\xe8\x85\x5e\x6c\xcf\x03\x27\x27\x66\xd9\x0a\xc2\xdd\x32\x35\xab\x56\xdc\x63\x03\x6c\x35\x58\x49\xf8\x88\x75\x3a\x63\xa0\x23\x39\x2e\x2b\xf3\x6f\x2c\x95\xf1\xd6\x96\x00\xf2\x47\x67\x3d\x09\x30\x3c\x57\x5a\x3c\x7f\x7a\x74\xfe\xe2\xd5\xe9\xeb\xd3\x00\xc3\x2d\x55\x76\x2f\xc8\xe0\x61\xa3\x4c\x72\xd7\x1a\x3d\xee\x19\x29\xf5\xee\x87\x7d\xff\x9a\xc1\xa3\x4a\x79\xad\x21\xff\x4a\x7c\xb3\xdd\xa9\x58\xc6\x8c\x87\xa1\x56\x55\x0e\x27\x5a\x6d\x7c\xe7\xcd\x90\x73\xb5\x5c\xcc\xd8\x82\x06\x65\x33\x81\xd9\xc9\x06\x3a\x78\xa4\xc8\xaf\x15\x4b\xa4\xea\x5e\x4b\xa6\x28\x7a\xa8\x90\x15\xf8\xba\x93\x85\xd0\x8b\xdc\xef\x39\x77\x57\xb1\xa4\x5c\xfd\x62\x6c\xe1\x5d\xdb\x48\x0e\x1a\xbb\xc1\x4f\x33\xf4\x2b\x8e\x10\xa2\xe4\x14\x05\x6c\x26\x8d\xd8\x89\xbb\x89\xba\x59\xe4\x2e\x37\x24\xe0\x82\xd3\x00\xde\xa8\x6e\xbc\x5a\x51\x3e\x7d\x30\x67\x8b\xa9\x9e\x0f\xda\x4d\xe4\xc4\x8b\xd6\xc1\xc7\xf8\x2a\xb6\x30\x88\x02\x0c\x48\x11\x43\x98\x55\xd1\x03\x0f\x02\xdc\x15\x2b\xca\x91\xee\x71\x31\x82\x1c\x3e\x8f\x1c\x4a\x55\x86\x04\xaa\xfb\xa8\x84\x11\x9a\x81\x39\x7a\x2d\xf7\xf6\x06\xd8\x49\xb4\x8f\x4a\xfe\x38\xa3\x2b\x35\x92\xe3\x9c\xe2\x3e\x52\x08\x67\x83\x27\xa3\xe7\x6a\xec\xdd\x03\xee\xab\xaa\xcf\x4e\x19\x7d\x73\xca\xe6\xcb\x7b\x7b\xe9\x10\xdd\x2a\x3b\xfd\x18\xbb\x8f\x34\x6a\xe7\x2d\x05\x95\x4f\x06\xbe\xd2\x34\xa8\x70\x24\x89\xee\x01\xe4\xca\x31\x1d\xca\xe8\xa9\x93\x9c\xe0\xb3\x32\xfc\x0d\x1e\xab\x8a\xad\xfb\xab\x22\x7f\xb0\xc1\x11\x86\xbb\x79\xf4\x70\xf7\x27\xe4\xb6\x47\xa2\xd1\x18\xde\x1a\x56\xdd\xa4\x7a\xab\x30\xcc\x7d\x6a\xec\x0c\x8e\x03\x42\x1e\x2b\x6f\x37\x19\x36\xef\x82\xb4\x3e\x1b\xdb\x77\x6d\x1b\xa4\xf5\x55\x39\xe3\x3c\xce\x32\xad\x57\x7e\x56\xe8\xc6\x10\x91\x0c\x9e\x28\xf2\x08\x05\xd7\x9f\x92\x00\xc3\x3b\x45\x44\xd7\x52\x2f\x78\xa6\xc8\x2b\x35\x7c\xa7\xa2\x77\x2a\x0c\xdf\xa9\xae\xdb\x4d\x3f\x33\x8a\x68\x9a\x3e\x86\xf7\x8d\x24\xea\x1a\x3d\x51\x46\x49\x47\x9a\x50\x5e\xa3\x77\xfa\x6d\xf8\x44\x4b\xf7\xe4\x9d\xfe\x1f\xd9\xe7\x67\x5a\x01\xb4\x74\x32\xe8\x68\xc1\xc2\x24\x67\xf0\xb3\x81\xc8\x7b\x95\xc1\x4b\x65\xe4\x84\x5f\xec\xcf\xaf\x8a\xbc\x57\x28\x28\x9f\x60\xc1\xa0\xb6\x8f\x93\x68\xea\x7c\x8d\x14\x91\x43\x15\x95\xcf\xe1\xfc\xaa\x70\x18\xfe\xa2\xc9\xe1\xaf\x0a\x36\xd5\x4d\x90\x5e\xbe\xe1\x81\x33\xa0\xb4\x6e\xd1\x6c\xb0\x79\x6d\x6b\xd1\x4d\x06\xce\x5c\xf4\xaf\x58\x38\xe5\x76\xa7\xd9\x0c\x51\xaa\x91\xb9\xc0\xd0\xc2\xd6\x9f\x5c\x33\x67\xd7\x9b\xc4\x09\x6d\xf5\xa2\xba\x5e\x51\xf2\xf7\xb2\xe7\x0e\x70\x36\x30\x59\xfb\x5b\x59\xe5\x56\x5e\x90\x3e\xf7\xc1\x76\xee\x92\x9f\x4c\x91\x1f\xb8\x2f\x71\xbb\xa9\x04\x88\xc6\x32\x20\x70\xee\x18\xd9\xd4\xf3\x78\xb5\x5a\xdc\x68\xf9\xce\x6b\x8d\x1a\x37\x39\x35\x93\x9e\xac\xe8\x84\x51\x8d\xa0\x82\x36\x09\x40\x1e\xb8\x0f\x34\xee\x57\x24\xba\x76\x79\x43\xa2\x24\xe6\x63\x23\xfe\x59\xae\x1c\x86\xed\x07\x0a\xc9\x92\xe8\x33\x5c\x22\xad\x65\xd8\x7d\x22\x82\x24\x91\x23\x4e\x8d\x36\x21\xfd\xbe\x6d\x94\x3f\x01\xa7\xd7\x25\x4f\xf4\xa1\xa9\x33\x92\x18\x59\x42\xd3\x8b\x34\x8d\x61\x94\x8c\xc6\x46\xff\x80\xb8\xe9\xd8\x58\x9f\x10\xcd\x46\x0f\xf4\x0f\x27\xb7\xf5\x8f\x20\xdf\xe9\x1f\x46\xee\xe8\x9f\x98\x7c\x6f\x1c\x38\xd8\xd6\xc1\xa8\x09\xac\x21\x81\x59\x21\x66\x2f\x60\x05\x73\xf2\x5a\xa1\x09\x86\x2b\x32\x45\x73\x0c\x37\x44\x52\xa4\xb3\xdd\xc6\xb0\xd4\x1a\xe7\x55\xae\x71\x5e\x92\x1e\x5c\x90\x59\x9a\x0a\x0a\xd7\x84\x0e\x2f\xd0\x04\x96\x38\x92\xe6\xa1\x87\x9d\x96\x3f\x58\xde\xbb\x1c\x5c\x3a\xfd\x30\x4e\xd3\x4b\x2d\x18\x5e\x69\x88\xac\xc8\x0d\x5a\x90\xab\xd1\xe5\x18\x2e\x61\x8e\x41\x61\x6c\xdc\x82\xaf\x47\x97\x63\xb2\xca\x8f\x2b\xad\xb0\x43\x63\xe5\xd0\xd8\xe3\x4e\xbb\x67\x71\xe9\x7b\x8f\x4b\x0b\xfb\x7e\xc7\xbf\x5f\x7a\xec\x64\xce\xc5\xf8\x1a\x16\x85\x03\x51\xae\xcc\xf6\x73\xa5\x6e\xb8\xd7\x8f\x78\x9a\x8a\xa1\x88\xae\xb3\x0c\x26\x94\x6c\x9c\x5b\x5c\x14\x53\xd4\xc3\xb0\x8c\x57\xfa\xa9\x8f\x61\xc6\x16\x8a\x4a\xfd\x72\x80\x21\x11\x4b\xaa\x1f\x6f\x63\xa0\x57\x54\xde\xe8\xe7\xef\x74\x1e\x3e\xd5\x8f\xdf\xdb\xc7\xa7\x5a\x8b\xd5\xef\x77\x70\x06\x6b\x4a\x26\xd4\x3b\xdd\x41\x42\xb5\x24\x33\x67\xd3\x29\xe5\x01\x86\x19\x75\x14\xeb\x85\xdf\xbb\x0a\x30\x2c\x8c\x89\x2c\xa1\x0a\x56\xde\x58\x66\xed\x7a\x9e\x1a\x06\x18\xe6\x0d\xc7\x08\xa7\xb4\xa0\xcc\x57\xd4\x48\x55\x3f\x9f\x9d\x9e\x04\xe0\x4c\x50\x6c\x76\x13\x60\xb8\xa1\x46\x4d\x58\x52\x43\x32\x2f\x29\x79\xab\x19\xdb\x05\x25\x49\x77\x06\xd7\x54\x13\x7a\x2b\xab\xea\xb5\x74\x66\xde\xc5\x6a\xaf\x48\x3a\xb2\x59\x4c\x8d\x7b\x4a\xb8\x2f\x7b\x92\x5e\xb2\x44\x49\xdd\xc2\x69\xa9\x12\x93\xc3\xe6\x2d\xe5\x38\xa7\x05\x3f\xf9\xa8\x7b\xfd\xd2\xed\xc3\x7e\xa1\xa4\xfd\x91\xa6\x69\xfb\x63\xe9\x70\x61\xed\xb5\xab\x41\x6c\x24\x1c\x38\xa4\x24\x0e\xc3\x5d\xfb\x69\xf7\x15\x5a\x52\xb4\xc9\xbe\xb5\x73\xb6\xb4\x06\x2f\x9b\xc5\x52\xf8\x1f\xcc\x5e\x5a\x86\xed\x8e\xda\xd6\xbe\x8c\xf5\x3d\xb9\xa1\x68\x4e\x81\xe2\x01\x0f\x43\x27\xdb\xcc\xe9\x88\x8e\x61\x49\x5d\x46\xe0\x61\xa8\xda\x84\xcc\x69\x18\x2e\x6d\x6e\x4d\x15\xa3\x25\x85\x4f\x8d\x14\x8a\x5c\x53\xcd\xf4\xee\x2b\x34\x2d\x8d\x36\xe7\x0a\x0b\x8a\x24\xb8\x93\x61\x0e\x0d\x40\xc5\x97\x91\x82\xa9\xdb\xdc\x63\x82\x6b\xf6\x04\x71\x9a\x22\xd9\x2d\xa5\x12\x8a\x41\x66\xf0\x82\x6a\x6e\xdd\x20\x27\xd7\x75\x13\x95\x35\x89\x1b\xf9\xae\x79\xe9\xac\xe7\x94\x66\x70\xdc\xc0\x60\x89\x1d\xf7\x31\x45\x67\xd4\x42\xc3\x28\x0c\x16\x76\x6e\x0f\xce\x0f\xcc\x6c\xc5\x5d\xa3\x6b\x0d\x9e\x21\x92\x25\x5b\xed\xd0\x6c\x30\x26\x14\x87\xa1\x1a\x25\x74\x3c\xe2\x63\xb3\x7d\x66\x1f\x49\xbb\xaf\x25\xbb\xfb\x5a\x46\x2b\xfb\x30\xcc\x50\x0f\xda\x7d\x73\x68\xc9\x97\x4f\x53\x33\x2d\x89\xdd\x46\xdb\x68\x2d\xad\xa8\xa5\x87\xe1\x50\x7f\xe5\x20\x31\x8e\x96\xfe\x31\x83\x57\xf5\x69\xca\xc7\x20\xad\x61\xce\x68\x3d\x12\x7b\xeb\xc6\x53\x5a\x36\x1c\xad\x29\xe2\x50\x39\xa8\x16\x6b\x2e\xe2\x08\x94\x16\x2b\xd3\xf4\xd8\x21\x8b\xd9\x27\xc5\xc6\x21\xfd\x41\x13\xe9\xbf\x44\xca\x68\xad\x92\x5c\xd0\x8a\x2b\xae\xb7\xb1\x99\x77\x07\x74\x03\x4a\xe3\xa5\x7b\x6d\xa0\x6f\x7c\x73\xdb\x48\xa6\xa9\x16\x7a\x6c\x39\xf3\x6c\xb2\xa5\xa9\x4b\xb4\x60\x9e\xb3\xc4\x00\x86\x8e\x35\xfb\xd3\x4a\x66\x33\xae\x1a\x3b\x5c\x31\x95\x6c\x86\xa4\xc1\x75\x5f\x31\x37\x15\x9f\xe9\x07\xef\x86\x75\x43\x8d\xb0\xe0\xbb\x2c\xaa\x59\xa5\xed\x80\x74\xd3\x92\xa6\x48\x94\x30\xc1\xcc\x92\xc8\x32\x38\x69\x04\x0f\xb5\x92\x2a\x48\x32\x1a\x97\xe0\x4f\xab\xa7\xd0\x4c\x6b\xca\xb4\xf6\xc4\xfc\x4a\x6b\xed\x53\xd6\xb6\x9d\xc1\xd3\xa6\xca\x2d\x2e\x83\xd4\xad\xd0\xe1\x19\x8d\x6c\x53\xbc\xda\x94\xac\x36\xd5\xce\xdb\xa2\x66\x1e\xe6\xf6\x85\xdb\x06\xcd\x42\x37\x8d\xf2\x4c\x83\xee\x58\xa5\x29\xa2\x0a\xa1\x29\x2d\xab\xa5\xce\x01\xb5\x55\x59\x6f\xdb\x5b\x33\x96\x18\x14\x02\x65\xd9\x52\x89\x9d\x9b\x75\xdd\xce\x5e\xb2\xab\xe4\x9f\x46\xbd\xf1\xd0\x49\xa8\xe5\x34\xcf\xde\x81\x9a\xfd\x3d\x90\x55\xdf\xaa\x02\xef\x9c\xef\xc6\x99\x1e\x2a\x94\x91\xca\x3e\xeb\x89\x35\x68\x89\x4a\x48\x66\xd6\xf0\xa1\xa3\xc1\x76\x75\x6a\x8d\x23\xf7\x19\x0d\xc3\x2f\x34\x0c\x0f\x1d\xf9\xdc\x12\xc9\x13\xaa\x22\x99\x61\xf0\x07\x3c\xf1\x9f\xdd\xff\x68\xad\xfc\x46\x87\x8a\x2f\xf5\x44\x50\x4d\x75\x21\xa8\x28\x30\x41\xe3\x21\xc6\x4f\x14\x19\x38\x58\xac\x49\xba\x33\xf2\x80\xc2\x8b\xee\x8c\x1c\x53\xf8\xd2\x9d\x91\xd7\x14\xb4\xaa\x68\xd8\x2a\x39\xa1\x70\xa9\x7f\x9f\x52\xf8\x59\xff\x36\xd7\xf7\x5e\xb9\x0a\x21\x0e\x43\xcd\xb3\xca\x0c\x00\x82\x12\x25\x0f\xb6\x61\xd0\xcc\xd7\xf2\xf1\x95\x0a\x67\x99\x19\xe7\x9c\xee\x32\x4f\x3f\xa0\xb0\xb1\x7b\x67\x51\xbb\x97\x61\x8c\xe1\x85\x42\x1b\x17\x40\xa1\xdd\x83\x6b\x19\xaf\xf4\xaf\x35\xce\x45\xed\x63\x05\xc9\x3c\x5e\xea\x87\x0c\x36\x2e\x2c\xc1\x54\xb3\xa0\x35\x45\x27\x0a\x9d\xd3\xda\x39\xd0\xf6\xf6\xf2\x92\xca\x89\x2c\x9a\x69\xf9\x67\xb2\xc9\xf0\xe0\x1a\xd9\x45\xf3\x52\xe9\x07\xcf\x9d\x35\x18\xcd\x8a\xcd\xdc\xba\xd5\x5d\xb4\x06\xcd\x82\x2f\x26\x2a\x56\xd5\x8e\x66\xa0\x05\xbc\x68\xbb\xfd\x5c\x27\x1b\x18\x7f\x96\x23\x5a\x72\x68\x39\xd2\x1c\xdd\x11\xfc\x29\x45\x05\x2f\x36\x1f\x88\x84\x53\x3a\x92\x63\x42\x35\xed\xf8\x44\x6f\xea\x3b\xaf\x6c\x86\xda\x2f\x68\x93\xa7\x8b\x2a\x2b\x80\x8e\xfb\xba\x0e\x9c\xea\x41\xfb\x0e\x9c\x52\xa3\xef\xae\x13\x6a\x31\xb2\x3c\xd1\x5a\x54\xea\xd9\x6f\x6c\xb9\x5a\xd0\xfa\xb7\xbe\x9e\xee\x32\x70\x9c\xd1\xa6\x01\x38\x6e\x16\xe3\x0c\x36\xd6\xd0\x12\x35\x6e\xd6\x95\x4c\x23\xf7\x8d\x4f\xd3\x2b\x8a\xcc\x83\x31\x91\x54\x7d\x71\xa2\x63\x0a\x5b\x26\xc4\x57\x14\x76\xb9\x25\x45\xaf\xe9\x9f\xee\x6e\x66\x84\xb9\xba\xc9\x24\x3a\xa9\xd7\xee\x6c\xb7\xd1\xd3\x3f\x59\x75\x55\x8e\xd4\xeb\x16\xf5\xed\x41\xa8\x4d\x73\xc5\x0d\xab\xd9\x94\x7a\xad\xac\xdd\x04\xc3\x95\x63\x98\x6f\x28\x69\x6b\x2a\x5f\x6d\xc2\xd2\xe6\x29\x45\xb9\x9f\xd0\x48\xeb\x93\xe3\xa0\x4d\xae\x28\xb2\x7b\xa0\xc1\x26\xb3\xaf\x9b\x38\x52\x59\x39\x21\x97\xc7\x74\x1f\x07\xe5\xf1\x59\xa9\xbf\x36\xba\x37\x34\x83\x4d\xae\x08\x6c\xb9\x11\xe5\x67\x14\x40\x90\x91\x1a\x03\x23\xfd\x41\x9d\x6b\xdc\x63\x03\x2c\x2c\x0b\x2b\x38\x04\xeb\x74\xc6\xf6\x48\x15\xa1\x80\xac\x43\x41\xce\x5c\xb4\xaa\xed\xd6\x40\xa1\x7f\x1b\x97\x83\xba\x58\xd1\x7c\x22\xd4\x9c\xac\x21\xbc\x24\xf3\x18\x87\x33\xd0\x75\x16\xeb\x54\xcf\xaf\x18\xf5\xf5\x4a\xbc\xa2\xce\x4a\x60\x8c\x7b\x42\x4f\x42\x56\xa6\xa6\xa3\x19\x1d\xa7\xe9\x71\x95\xc2\xce\x34\xae\x96\x14\x0c\xef\xd6\x08\x8a\x1a\xae\x90\x6b\x5d\x4f\x34\xdb\xf2\xd6\xc9\xe7\x14\x6e\x51\x78\x68\x15\x2d\x1e\x5f\xb1\x4b\x7b\x3e\x2e\x58\x27\x54\x1e\x5e\x1a\xcb\x75\x9a\x06\x01\x3c\xd2\x1a\xce\x4a\x8a\x09\x4d\x12\xb8\x4f\xc9\x23\x1a\x86\x8f\x68\xd7\x3b\x0a\xc1\x67\x4a\xee\xd3\x30\xbc\x4f\xbb\x57\x3f\x0e\x3e\xd3\xe1\x2d\x4a\xd0\x73\x4a\x3e\x53\xef\x04\xd1\x0d\x30\x1e\xf5\xc6\x9d\xe7\x74\xd4\x1f\x47\x0f\xa9\x91\xe7\x9e\x53\xf2\x90\x76\x97\xc6\x88\xb7\x7f\x34\xbd\xa4\x1f\xf6\xd1\x87\x69\x07\xef\x63\x9c\xa6\x26\xe7\x3d\xf2\xc3\x77\x9a\xdf\x56\x72\x3e\x98\x4b\xb1\x2c\xe5\x0d\x43\x74\x8b\x12\x93\xdf\x0a\x0b\x8f\x29\xb9\x45\xc3\xb0\x73\x8b\xc2\xd7\xba\x69\xe5\x6d\xe3\xce\xd6\x63\x7a\x8f\x7c\xdf\x4f\xd3\xf6\x36\x76\xd3\x42\x4a\x42\xb4\x72\x9c\x75\x93\xe1\xd1\x57\xda\x70\x90\x70\x33\x13\x22\xea\x67\x19\xf4\xdb\x84\x68\xfa\x87\xee\x0b\xb1\xa0\x31\xc7\xdd\x99\x10\x66\x39\x3e\xa1\x3b\x1c\x00\xdf\x51\xb2\xc9\xe0\x19\xad\x89\x28\xe6\xe8\x47\x06\xef\x1b\x70\xee\x1a\xbd\x2b\x13\xdc\x77\xba\xc1\x01\x35\xf8\xb9\xc9\xbc\xb0\x3f\x1a\xeb\x15\xc1\x49\xbb\xad\x79\x52\x70\xf8\xe0\xc1\xd1\xd9\xd9\xe9\xab\xb3\x00\x87\x21\xed\xe6\xaf\x20\x88\xfe\xde\xc3\x43\x3a\xea\x8d\xa3\x67\x14\x26\x26\xa1\xaf\x13\xfa\x63\x6f\x26\x29\x37\x45\xda\x6d\xb9\xb5\xb7\xa4\xd7\x52\x18\xb6\xe3\x7c\x0f\xde\x09\x71\x1b\xbb\x0a\xa3\xbd\x7e\x36\xe0\xc3\x27\x5a\x77\xe8\x57\x34\x1f\x27\x0d\x3c\xa3\x19\x8e\x94\x5e\x0f\x7d\xc8\xcf\x3f\x0b\x17\x6f\x01\x7e\xb6\xf6\x08\x63\xd5\x80\x97\x94\xbc\xa5\x28\xb0\x6f\x01\x86\x5f\x28\x79\x5f\x7a\xaf\x50\x15\xbb\xf9\x04\x66\x99\x94\x09\xf2\x4b\x2d\xf4\xff\xa2\xa9\x8b\x33\x95\x34\x39\x5d\x51\xbf\x7a\xb7\x68\x4a\x7f\x58\xd0\x92\x1c\x48\x7a\xdd\x9a\x51\xff\xda\xac\x7e\x98\x19\xc9\x7d\xdd\xe5\x96\x0d\xc0\x8e\xda\x6e\xa0\x94\x76\x0d\x3c\x32\xf4\x33\x70\x94\x5d\xc9\xb2\x75\x86\x4a\xf2\xab\x1e\xbe\x7d\x0d\x30\x48\x69\xe1\x91\x27\x70\x49\xa8\x0c\x43\x29\x87\xa3\x3c\x1c\x49\xd3\x80\x95\xfc\x7b\x07\xfc\x67\x60\x5d\xb4\xd9\x26\x5c\x5a\x99\xc6\xf4\x80\x4b\x07\x2f\x21\xed\x96\xb9\xac\xb9\xd3\x0b\x69\x79\xd9\xe0\xcf\xb0\xd8\x38\x4d\x99\x2c\x09\x05\x3b\x99\x76\xa3\x98\x20\x24\xba\x71\x42\x81\xeb\x54\x2c\x77\x44\x74\xba\xd4\x32\x95\x3d\x8a\x3b\xb4\xdb\x84\x1c\xb4\xfa\xae\x15\x71\xa5\x95\x73\x99\x7d\xb3\xc3\x7f\xdc\xc5\xa4\xf9\x38\x12\x94\x7c\x49\xac\x8b\xc1\x85\x42\x1c\x83\xd9\x72\x9f\x90\xde\xc0\xbb\xdb\xdc\x9b\x0c\x70\xce\xcd\x90\x24\x02\x71\xa0\xde\x4f\x06\x87\x61\x2c\x51\x6c\x83\x17\x79\x95\xc5\x0f\x7a\x52\x9f\x82\x13\xf5\xe7\xa7\x60\xa2\x27\xf7\x13\xbd\x69\x94\x31\x4e\x54\x21\x61\x98\xa6\xd6\x92\x6c\x1e\x9c\x9d\xbd\x5a\x2f\xe8\x31\x4b\x54\xd4\x83\x07\x67\x67\x67\xea\x66\x41\x1f\xd2\xc9\x22\x96\xb1\x31\x0d\x99\xd4\xb7\x9a\xb5\xf9\x4c\x0b\x46\xb9\x7a\x45\x27\xca\x25\x3c\x3c\x7d\x5e\x7d\xb3\xc2\x71\xf1\xfe\x5a\x7c\xa2\xdc\xbc\xf6\xe1\x61\xac\xe2\xd7\x32\xe6\xc9\x8c\xca\xa7\x8a\x2e\x5d\xae\x47\x2c\xef\xc4\x93\xd7\xcf\x8f\x0f\x17\x8b\x07\x62\xb1\xa0\x13\xd7\x05\x9d\xb6\x95\xf0\x48\xc8\xa5\xdb\xec\x75\x29\x67\x54\xe7\x28\xd2\x9e\xd3\x29\x8b\x5d\xb5\xcf\xd9\x92\x6a\x51\xda\x1a\xd1\x7b\xa0\xa5\xbf\xe9\x89\x98\xd2\xe7\xf1\x4a\xbf\x8a\x29\x75\x5d\x7c\x11\x33\x3d\xbe\xcf\x6b\x9a\xf8\x41\xbd\x58\xac\x2f\x19\xcf\x1f\x7c\x1d\x67\x6f\x1f\x1f\x9b\xf9\x76\xd9\xce\xde\x3e\x3e\x59\x2f\x2f\xa8\x2c\xde\x5f\xc4\x6a\x7e\x46\x2f\x4b\x09\x82\x71\x55\xbc\x56\x60\x75\xf6\xf6\xb1\x85\x8d\x90\x1e\x30\xd6\x59\xf9\xfe\x7a\x36\x2b\x6a\xd5\x53\x74\x36\xa7\xd4\x57\xf3\x9a\x7e\x51\xaf\x65\x3c\xf9\xf4\x20\x9f\xa4\x3c\xc9\xbf\x8b\xf5\xc4\xf5\x32\xcb\xb7\x5b\x13\xe3\x04\xb5\x76\xeb\x6a\x26\x89\x18\x25\x72\x0c\x0b\x49\x66\x32\x0c\x67\xa5\x7d\x0b\x2d\xa8\x2d\x64\x18\x2e\x64\x41\x49\x08\x97\xd8\x3a\x89\x2f\x24\xe4\xb4\x0e\x78\xd9\x17\xbe\xc8\xaf\x09\x8f\xd9\xf2\x5e\x6d\xaf\x6a\x2f\x8f\xd9\x15\xdd\x7c\x9e\x41\x67\x75\xba\x9c\x84\x2a\xf3\xaa\xab\xb6\xc5\x91\xa3\x9e\xe1\x68\xde\xc3\x7d\x2e\xbf\x11\x3c\xf0\xcf\x05\xfc\xfb\xe3\x90\x82\x1b\x17\x0f\x4b\x12\xf4\xc7\x99\x73\x12\x31\x97\xc3\xb9\x8c\x36\x19\xee\x9e\x9f\xbf\x7d\x73\x74\xfe\xf0\xe8\xed\xeb\xd3\xd3\xe3\xb3\xf3\xc7\xc7\xa7\xf7\x0f\x8f\xcf\x9f\x9c\x9e\x3e\x3b\x3f\x2f\x0e\x9a\x5f\x49\x4b\x3b\x4b\x4e\x1a\x48\xe1\x86\x40\x57\x25\xe8\x22\x35\x92\x63\x90\xb8\x12\xce\xea\x46\x96\x03\x2d\xb9\xbd\xf0\x86\xc0\x51\xca\xcc\xdd\x52\xd6\x0f\x09\x98\x43\xac\xfe\x18\xa1\x3d\xa5\x7a\x3e\x99\xb3\xc5\x54\x52\x5e\x8b\x9c\x61\x8e\xfb\xba\x2c\x32\xbe\x7e\x2e\xa6\xeb\x05\x25\xee\xc0\x91\x73\x24\xa2\x36\xa4\x96\x79\x24\x4d\x92\xbd\x1c\x4a\x84\x23\xe9\x3c\xb5\x2f\x25\xd9\x70\xad\xc5\xad\x62\x4d\xfe\xea\x46\x8e\x2c\x1b\x5c\xca\x6e\x91\xa1\x7b\x49\xd5\xb6\xe4\xd8\x6e\xd7\xfa\x54\x2a\x91\xc1\xb2\xb4\x0a\xba\xf1\xd4\xee\x20\x34\x41\x21\x1f\xb6\x3d\x21\x51\x2d\x28\xe9\x52\x5c\xd1\x7a\x59\xbc\xf1\x1e\xbb\xf5\x0a\x6a\xc5\x2f\xa9\xda\x2e\xeb\x45\x86\x3f\x28\x3b\x8f\x93\xdd\x65\x7d\xf4\x86\xa2\x82\x5a\xe9\xf5\x6a\x1a\xab\xba\x60\xbc\x0b\x5a\x44\x95\x5e\x40\x75\x63\x53\x26\xf1\x67\x53\x4b\x65\xdc\x17\x92\xe7\xc1\xa0\xba\xcb\xb5\x8a\x77\x15\xc8\xbf\x91\x52\x3e\x5d\xc8\xee\x72\x35\x15\x71\x5f\x48\x9e\x07\xd7\xc6\xe6\x56\xcb\x36\x74\xae\x24\xaa\x02\xc5\x18\xd9\x9a\xca\x3e\x36\x35\x7f\x13\x3c\x79\x07\xf3\x5a\xb7\xbe\xed\xac\xfe\xd0\xd4\xfa\xcd\xea\x73\x18\x37\x54\xef\xbe\xed\xac\xfe\xb9\x03\xe4\x37\x1b\x28\xcd\x4a\x43\x13\xf9\x57\xd3\xc8\x0e\x27\x30\x54\x6e\x1c\x2e\xa5\x15\x3f\x2e\x24\x5c\x37\x80\xce\xee\xf7\x51\x89\x46\x63\x50\x66\x47\x66\x70\x5d\x5b\x0b\x8d\xa8\xdc\x95\x74\xba\x9e\x54\x4e\x0e\x94\xe3\xb1\xe6\x6b\x08\x51\x9c\xf9\x68\x54\x42\xe8\x5e\xd7\xab\x3f\xf1\x38\xdc\x64\xd6\xf7\xe5\x06\xdf\x6a\xb7\xe4\x0b\xd1\x41\x88\x92\x62\x05\x23\x89\x71\x69\x91\x0c\x65\x27\xd8\x0f\xa2\x20\xd0\x7d\xd2\xff\xab\x9d\x69\x58\x7d\x45\xb8\x40\xe5\xbd\xbe\xcd\x39\x77\x9b\x55\x0b\xa3\xbc\xbb\x34\x73\x93\xe4\x41\x5a\x84\xf1\x75\xce\x93\x8d\x85\x51\x16\x5d\x12\x5e\x8f\x1d\x28\x94\xfb\xdc\x0a\x0c\x95\x2c\x45\xb5\x23\x31\xc6\x59\x66\xa6\xc7\x03\x03\xb6\xc0\xe8\x67\x71\x87\x04\x6f\xc2\xa6\x14\x9e\x0d\xc6\xfd\xa1\xdd\xc3\x3e\x46\x1c\xbd\x6e\x2d\xa5\x71\x20\x19\x98\x03\x47\x4e\xaa\x1e\xe6\x0d\x12\x61\xe3\x3a\x5c\x52\x85\xbc\xff\x51\x0f\xf6\xfa\x18\xe7\x34\x1a\xa9\x91\xca\xc3\x05\x8c\x41\xe0\x01\xf5\x23\x30\x98\x9c\xbf\x95\x77\xdb\x40\xe0\x0d\x2f\x50\x50\x95\xa0\x41\x1d\xeb\xac\xcd\x10\x6f\x18\x69\x05\x59\xb6\xbb\x08\x92\x54\xfb\xc6\xab\x08\x32\xe0\x61\xc8\x3d\x57\x0d\xc3\x0a\xf7\x40\xb2\xde\x03\x96\xbc\x72\x3d\xa0\xd3\x7f\x7f\x1f\x8a\xd0\x48\x9e\x5f\xe8\x96\xcc\x7c\x9c\xed\x1a\x5a\x31\x81\x4a\x93\x5f\xb2\xc9\x30\xb4\x2f\x64\x18\xee\x16\x7c\xbc\x7f\x5b\xf7\xed\x9a\x86\x61\xcd\xea\xad\x8b\x2a\x42\xc8\x85\x3f\x12\x30\x68\xff\x97\xfd\xbf\xb5\xff\xcb\xff\xaf\xf5\xb7\xd6\xd5\x9a\x7e\x69\x5d\xdd\xee\x7e\xdf\xed\x9b\x77\x34\xc1\xf6\xc8\xdb\xd1\x55\xcc\x5b\xef\xc5\xda\xa4\xfe\xa3\x1e\x21\x4f\x68\xeb\xf9\xd3\xd7\x3a\x61\xff\xbf\xd4\x9a\xb0\xd2\x39\x52\xde\x8a\x56\x32\x95\x8d\x7a\x63\x7c\x8f\x1c\x60\xd5\x5d\xb2\x2f\x8c\xa3\xcd\x05\x9d\x09\x49\x1f\x58\xcb\xb6\x56\x94\xf3\x53\x5f\xc6\x05\x33\x9f\x80\x73\xc6\x99\x1a\x6c\xa5\x54\x81\xb6\x0d\x29\xd5\x35\xb9\xec\xcf\x70\x24\xc7\x1e\xd7\x6c\x0a\xd6\x62\x6e\xd9\x80\x59\x0e\x61\x29\x73\x2b\xb0\x99\xde\x5b\xc2\x6c\xd4\x24\x03\x2d\x44\x09\xe9\xc2\x8f\xdc\x32\xcf\x8d\xf1\xda\x7c\x36\xfb\x8b\x70\xe4\x9e\x22\xef\x5a\x1a\x86\xfe\xc9\x55\xe3\xf9\xab\xab\xb4\xf6\x55\xd3\x83\x0b\x49\x14\xce\x50\x31\xbf\x38\x97\xec\x56\x46\x69\xda\x5a\xf0\xa3\xb1\xdf\xda\xd7\xcd\x4b\x36\x51\x45\x0e\x6e\x42\xea\xb6\xfb\x5e\x60\x9c\x88\xe5\x92\x29\xc5\xf8\x65\x1e\xd1\xea\xdc\x0b\x11\xbb\xc5\x4c\x9b\xe3\x6c\x7d\xa1\xf5\xfa\x0b\x2d\x0c\x78\xaa\x75\x5e\x08\x14\xbb\x8b\x5f\xcb\x78\xb5\xa2\xd3\xc7\x4e\x90\xd8\x9d\xd1\x51\x12\x43\xb8\xae\xa5\xd9\x95\x2b\xa7\xe7\x0c\xe5\x79\xbc\xfa\x46\x2d\x49\x53\x3f\xaf\xb5\x2a\x45\xe5\xdb\xe7\xa6\xf2\x0b\xe9\x6b\x8e\x3f\x51\x73\x26\xc4\x75\xee\x41\x3c\x99\xd7\x43\xd5\x15\xf1\x75\x6c\x60\x20\x70\x91\xa1\x7c\xb0\x2b\x88\x89\x0f\xd5\xb2\xd4\x18\x5c\xfe\xd6\x7c\xee\x8a\xf9\x98\x41\xf6\xb8\x7b\xa9\xf4\x2e\x9d\x2e\x2e\x95\x30\xde\x11\x4e\xbe\xd7\xb3\x4d\xb8\xb5\x78\x90\x0a\xb0\x0c\x7d\x77\xca\xc0\x17\x67\x0e\x9b\x40\x31\x6f\xa5\x5c\x18\x3e\xfa\x0c\x9a\x5b\x6d\x6b\x3f\xaa\x1c\x8f\xdd\x6c\xfb\xa1\x62\x8f\xa1\x3b\xa5\x57\x4a\x88\x45\x32\x2c\x1e\xa3\x0b\xd9\xb5\x4a\x44\x9e\x84\xab\x74\x6a\x6a\x8e\x62\x77\xcf\xdd\xe7\x27\x42\x7c\x22\x53\x09\x53\xd9\xa5\x4b\x4d\x49\x34\xa1\x8a\xf4\x02\x0e\x40\x61\x9d\x2c\xb8\x4b\x54\x32\xbe\xa2\xce\xb3\x29\x56\x34\xa8\x7a\x79\x28\x7f\xbe\xe3\x4c\x7f\x74\xbd\x55\xdd\x1c\x27\xea\x72\x4d\xb5\x41\x8f\xcd\x81\x9d\x19\x0c\x9b\x95\xa4\x2b\xca\xa7\x46\x07\x2e\xd7\x63\x45\xca\x6f\xd7\x66\x97\x4d\x73\x5d\x38\x73\x47\xfb\xe0\x48\x92\x8d\x19\x49\x93\xde\x95\x93\xaa\x53\x59\xd7\xf2\xfd\x69\x2d\xa4\xf0\xdd\x9e\x26\x04\x61\xa8\xf9\x99\x69\x62\xa8\x39\x6a\x32\x67\x33\xb3\x51\x48\xbd\xa3\x45\x11\xa6\x0f\x79\x53\x6e\xb9\x9a\x81\xbc\xb7\xd7\xd7\x8c\x52\x53\xf3\x09\x45\x12\xfa\x65\x6a\x79\xee\x94\x65\xf5\x07\x24\xe3\x0f\x89\xc2\x9f\xa3\x08\x7f\x7a\xd9\xd7\x34\x5f\x8d\xec\x20\x0d\xa6\x57\xd1\xdc\xf8\xf0\x7c\xb4\x5f\xcb\xb1\x5d\x3f\xca\x9a\x50\xd5\x3d\xbf\x5a\x0e\x72\x75\x87\x6c\x32\x53\xd3\xdf\x4b\x29\xea\xa3\x04\x46\x36\xd9\xe0\x4a\x22\x51\x91\x94\x24\xde\xb0\x91\x1c\x37\x13\x8a\x06\x37\x5c\x13\x33\xc8\xec\xcd\x37\xaa\x09\x37\x28\xef\x38\xc8\x5d\x6e\x77\x66\x84\x23\x39\xce\xaa\x16\x20\x73\xb0\xdd\x05\x12\x2b\x16\x70\xc2\x16\x94\xab\x41\x3d\x81\xb4\x7b\x60\xea\x71\x04\x15\x6d\xa6\xb1\x8a\xa3\xcd\xad\x5b\x16\x99\xa9\x0d\x10\xb6\x56\x74\x1a\xb1\x0c\xc3\x56\xf9\x18\x3c\xbb\xaa\x52\x06\x53\x69\xf7\x96\x21\xd8\x4d\xae\x85\x96\x7e\xe9\xc6\xba\xae\xad\x4a\xbc\x6b\xac\x85\x82\xcd\x94\x52\xe3\x2b\x91\xdc\xf0\x89\x1d\x99\xf1\x98\xb2\xcb\x44\x4f\x0d\x53\xf3\x07\x86\xe2\x56\x9a\xe0\xd5\x8a\xcd\x19\x05\x4d\x40\x2e\xa4\x09\x06\xf6\x9a\x4d\x3e\x35\x75\x89\x77\x6f\x4d\x69\xa2\xa4\xb8\x31\xa1\x3b\x4b\xb8\xf5\x45\xfa\x9b\x1b\x20\x0f\x2b\xd8\xf6\x67\xe9\x34\xe3\x28\x50\xb4\xac\x31\x21\x1b\x8e\x9f\x97\x54\x1c\x4b\x2e\x1b\x96\xc4\x28\x1e\xef\x58\x2c\xa3\x78\x4c\x38\x86\x36\x0b\xc3\xb6\xf0\xc7\xb4\x0f\x8d\x42\x50\x15\x62\xd7\x44\x8e\x64\x49\x88\xdd\x0d\xa0\x0b\xd9\x4d\xa8\x32\x1e\xcd\xdc\xae\x37\x23\xcc\xdb\x38\xeb\xdc\x9e\x67\xf9\xb2\xcd\xc5\xdc\x0d\x12\x26\xb2\x25\x08\xb2\xf1\xec\x31\xe2\x9a\x69\xf8\x97\xba\x8f\xba\x05\xd7\x27\xe9\xde\x4d\xf0\xc5\x55\x7c\xb3\x10\xf1\x14\x26\x84\x75\x9d\xb8\x06\x6b\xc2\xcc\xd9\xf9\xfc\xb6\x86\x30\x9c\x98\x15\x9f\xa6\x68\x4d\x68\x67\xad\xa9\x89\x6f\x05\xad\xc1\x05\xaf\x5b\x32\x65\xda\x77\x8f\xff\xe1\xd6\x1b\x9b\xb5\x95\xeb\x46\x61\x82\xb3\xdc\xb5\x6a\x97\x86\x2f\xcc\x92\xd5\xab\x37\x32\x6b\x97\x0f\x9b\x56\xaf\xcb\x92\x35\x2c\xed\xad\x2d\xd6\xf6\x2e\xda\x35\xa2\x63\xcf\x04\x36\x99\xd1\x9d\xdc\x89\xa1\x8a\x31\x34\x37\xfa\x34\x88\x05\xc2\x34\x20\x72\x5c\xe2\xd8\x1c\x8b\xf0\x21\x0e\x5d\x3a\xc7\x83\x66\x42\x25\x81\xed\x26\x50\xae\xd9\x91\x68\x20\x52\x96\xa5\xef\x1c\x15\xc9\x63\xc7\x7e\x23\x53\x66\xe3\xe9\x64\xe0\x58\x6f\x73\x3f\x0e\xb5\x8e\x63\x72\x98\x8b\x22\x32\x0c\x22\x33\xe7\x5c\xb5\x76\x59\x37\xff\xa0\x1a\x59\x6f\x57\x57\x01\x70\x13\xdd\xa4\x60\x8e\xe6\x28\x7d\x3d\x45\x4b\xf3\x2e\x6e\x49\x45\xae\x29\x22\x69\xbb\xfe\xd8\x85\xa7\x3b\xd3\x91\x40\x21\xb1\x0e\x8d\x55\x8b\x57\xbd\x47\x3e\x0e\xaf\x46\xd2\xa1\x8c\x74\x49\x61\x2e\xbf\xe1\xd3\x05\x95\x69\x4a\x07\x3b\xfa\xec\xf8\x7d\xde\xe3\xe2\x7d\x57\x7f\xfd\x11\xfa\xbc\xdf\xa5\x35\x5f\x48\xce\x7e\x15\xba\x65\x02\x1e\xf7\x79\xce\xc3\xec\xf4\xf8\x41\xeb\x8e\xbb\x89\x8c\x4a\x7c\x4e\x08\x65\xc4\xbd\xc8\x4d\x56\x56\xf8\xe6\x22\x41\x18\x6e\x0a\x80\xd5\x12\x26\x2a\x73\x9a\x16\xc1\x9e\xf3\x3b\x16\x98\x45\xb0\x92\x6c\x3a\x74\x21\x4e\x6b\x77\x5f\xb8\xb0\x96\xe5\x9c\x65\x01\x90\x4a\x29\x64\x60\x63\x95\x60\xac\xd9\xa0\x99\x31\x0e\xa2\x3e\x5f\x76\x50\x7f\x02\x83\xcc\xed\x08\x35\xc9\x42\xaf\x64\x6f\x79\x6a\xf8\xd6\x64\xe6\x93\xc8\x83\xb4\x00\xb5\xc7\xf4\x92\xa1\x77\x27\x7e\x59\xd3\x46\xf9\x0a\x0e\x86\x37\x9e\xd9\x79\x0d\x9c\x61\x7b\xa8\xa8\xcc\x10\x0f\x65\x45\xc0\xa1\x7f\x60\x6e\xd4\x2b\xd5\xf8\x66\xe6\x15\x7c\xaa\x0b\xc2\x66\xeb\x45\x33\x75\x77\x83\x8c\x24\x14\x28\x51\xa0\x7c\xf0\x51\xe7\xb6\xaf\xc0\x51\xef\x88\x82\xa3\xdd\x91\xcc\xb2\x23\x69\x87\xdd\xbc\xa9\xe1\xa4\x8d\xab\x65\x4d\xe2\x80\xbc\x58\x52\xb3\xa3\x66\x70\x56\x36\x2b\xed\x50\xeb\x0a\xf3\x1d\x08\x92\x0f\x09\x34\xd5\x34\xc6\xdd\x98\x88\x12\xb3\xb1\x03\x60\xf9\x00\xe2\x0c\xd6\xa4\xa6\x7f\x8f\xd8\x78\xb0\xce\xcd\xf7\x3b\xd8\xf7\xba\x59\xb9\x53\x28\xf6\x31\x46\xb6\x54\x68\x7f\x2a\xf1\x0f\xd4\xc2\x49\x59\x1e\xc0\x35\x20\xec\xd0\x86\x8b\x88\xa3\xc0\x1d\x10\xec\x19\x66\x03\x02\x46\x78\x0e\x82\xd8\x81\x40\xe4\x20\x60\x19\x78\x85\xd7\x13\x23\x7b\xdd\xc1\xc4\x9e\xb5\xdc\x61\xb8\x28\x46\x63\x9c\x65\x76\xc4\x64\xb7\x26\xab\x0c\xff\xc1\xa0\x5d\x3e\x14\x83\x2c\xc9\x42\xd5\x93\xc9\x6b\x32\x29\x3c\x4f\x3c\x9d\xd1\x14\x71\xd2\x5d\xc6\xab\x1d\xc0\x64\x06\x88\xd1\x64\xd4\x1b\xa3\x22\xd0\xbc\x96\xb3\x5d\x0d\xf5\xe5\xb2\xae\x47\x98\x77\x81\xc7\x64\x13\x08\xbe\x39\x74\x13\x57\xf6\x8f\x47\x6e\xb2\xed\x1c\xb8\xb5\x12\x54\x9d\x8f\xff\x7d\xdd\x31\x14\xb4\xb9\x3b\x65\x22\x62\xb2\x15\xdd\xb1\xde\xe1\xa5\x0e\x51\xeb\xad\x9c\xd9\xc8\x14\x65\xd4\xcc\x31\xbd\x59\x01\x33\x6a\xf7\xd6\x9a\xb0\x41\x0a\x1b\xab\xd9\xda\x6a\xaa\x56\xd6\x18\xa8\xc7\x99\x48\x23\x95\x45\x6a\x97\xc5\x6d\xbb\xc9\xeb\xad\x15\x55\xdb\x17\xa8\x50\xb0\xdc\xfe\xf5\x2d\xcd\x6a\x9b\x29\xe8\x69\xb4\x06\xa7\xb3\xea\xb6\x44\x61\x63\xd9\x65\xd5\xfe\x26\x21\xa2\xdb\x34\x95\xa8\x6c\x8b\x70\xf8\x4d\x01\xb7\xc9\xbd\x35\xd8\xaa\x21\x54\x6b\x7e\x5b\xf1\x9e\xac\xa5\x78\xa4\xc6\xb8\x6e\xf9\xca\x77\x27\x34\xd9\xf1\x26\xb2\x62\xdf\x1c\x54\xad\x80\xb1\xfe\x63\x30\x46\x96\x84\xca\x2b\x3b\xfc\xc2\x78\x56\x14\xad\x0f\xa3\xd8\xdd\xd8\x1a\x48\x05\x64\x7f\xbe\xf3\x45\x8d\x85\x95\x74\x07\xa8\x2d\x95\xd5\x6a\x5f\xce\xdf\xcb\xca\x9f\x56\xec\xed\xf6\x39\x92\x50\xd9\xcb\x30\xfc\xe0\x5c\x7a\x3b\xd5\x59\x6d\x37\xbc\x61\x28\xfe\x40\xdb\x9f\x1d\x45\x79\xcf\xc5\xc4\xd4\xa8\xb6\x21\xd4\x9b\x5d\xdb\xe6\x39\x1c\xec\x76\x9d\xca\x3b\x6a\x02\xd0\x57\xeb\x29\x01\x66\xd7\xc6\x4e\xc9\x2e\x3e\xd8\x36\x94\xf7\x40\xa1\x06\x03\x3a\xdd\xbd\x51\x5b\x6e\x1f\x8e\xdc\x46\xed\x0b\x49\x1e\xc8\x3a\xe5\xf6\x0a\x98\x5f\xad\xaf\x24\xa2\x3b\xa8\x9d\x97\xde\x3f\xd1\x1b\x23\xb6\x5f\xc5\x8b\x81\x20\xaa\x23\x40\x8e\xf8\xb8\x76\x74\xa9\xad\xd2\xf4\xb5\x2c\x6f\x36\x40\xb0\x8c\x57\x4e\x2a\x0c\x4a\x4e\xb7\xa5\x2c\x15\xad\x4b\x57\xda\xd5\x62\x2c\x31\xf6\x4a\xd0\x64\x18\x8e\xff\x13\xc6\x50\xef\x7d\x11\xb5\x7c\x34\x06\xb9\x75\x78\xca\x46\xb4\x30\x47\x3f\x0a\x4f\x4e\x39\x1e\x94\x42\xfc\xbb\xd1\x78\xb1\x63\x50\x5c\x8b\xc4\x48\x03\x50\x2c\xcd\x36\x40\xb1\x97\x1e\x79\x69\x9a\x9b\xdb\x1e\x8c\x49\x23\xaf\xcc\xe9\x96\x4d\x0a\xc5\x50\x38\xef\x77\x83\x88\x1a\x7c\x4e\x10\xa6\x18\x47\xbc\xf4\xcd\x37\x3e\x12\xe5\x2c\x99\x87\x72\x61\xf5\x7d\x25\x9b\xa2\x94\xa9\x92\x7e\x5a\x8a\x59\x83\x14\x4e\x53\x23\x0d\x67\x48\xe1\x61\xfd\xdb\x50\xed\x92\x38\x36\x9f\xe8\x4d\xa4\xe0\x2a\x5e\x44\x4a\x77\x22\xaa\xb9\x43\x55\x8b\xd1\x4a\x31\x6a\x8b\x69\x39\x5d\x97\x1c\x8d\x0b\x49\xfd\x41\x63\xe7\x4b\xa2\xfb\x76\x74\xbf\xa1\x93\xde\x83\x00\x47\xc1\xbe\xbd\x9c\xcc\x5d\x84\x42\x73\xc2\x84\xc3\x10\xd1\x0e\x09\xf6\x03\x0c\xca\x5d\xe1\x98\x37\xfa\xba\xae\x1e\xec\x30\x8d\xc9\xb1\x11\xcf\x4e\xa4\xf1\xb1\x5f\xf3\x64\x22\x56\xf1\xc5\xc2\xf8\xd9\x3f\x95\x2e\x18\x50\xe1\xb7\x67\x03\x0d\x3c\x95\xa3\x13\x39\x0e\xc3\x17\xdd\x19\x7a\x2a\xe1\x44\xee\x0a\x53\x71\x5f\x59\x5b\xb0\xf3\x10\x7d\x23\xe1\xb9\x84\x5b\x12\x1e\x56\xf7\x80\x6d\x7d\xc6\x11\xbd\x97\xc1\x23\x63\x88\xb9\x2f\xeb\xb1\xd0\x4b\x9e\x0a\x78\x53\x98\x36\xca\x3a\x46\xe1\xd8\x6f\x9c\xae\x1b\xef\x90\x44\x5a\x7e\x54\xd8\x6c\xd9\xe4\x65\x35\xca\x7d\x96\xb5\xf0\x3e\x8f\xe5\xf6\xe9\xf6\xaf\x92\xdc\x97\xc3\xc6\x8a\x1b\x1d\xb0\x89\xf1\x91\x85\x6b\xa4\xe0\xb3\xc4\x43\x35\xfa\x2c\xc7\x8d\xb1\xb4\xcb\xbd\x0f\x43\x55\x3e\x6e\x59\xf9\x36\xac\xbc\x15\x3d\x8b\x2a\x45\x6c\x07\x87\x8f\x65\x64\x4c\xb7\xf0\xd6\xce\x6f\x7e\x31\x2f\x86\x27\x92\xb4\xfb\x83\xd1\xd8\x60\x77\x18\xba\xab\x18\x19\x47\xb7\x24\x71\xa9\x08\xe3\x21\x7a\x2e\xc9\x57\x89\xbe\x4a\x74\x4b\x62\xac\xa1\x56\x07\x49\x18\xa2\x37\x92\x3c\x97\x38\x7a\x62\x9c\x2e\xc0\xe2\xc8\x1b\x69\x3f\x68\x61\xe4\x1a\xbd\x91\xf0\x56\x9a\x38\x95\xe6\xa9\xe9\x2c\xa4\x26\x08\xde\xee\xfe\x4e\x92\x8d\xbf\xaf\x2a\x87\x70\xf4\x46\xc2\xfd\x37\x8f\x1f\xbf\x3f\x3f\x3b\x7c\x74\xf8\xea\xe9\xf9\xd3\xd7\x47\xaf\x0e\x5f\x9f\xbe\x3a\x8b\x9e\xc8\x0c\x9e\x49\xf2\x4e\x76\xb7\x4a\xc1\x7b\xb9\xf3\x9a\xa8\x9f\x77\xf9\x93\xd0\x4e\xd0\xca\xef\x27\x1e\x6c\xa3\x1a\xb9\xaf\xd0\x33\x09\xf6\xc2\x35\x1b\x13\x39\x33\xe7\x74\x14\x70\x68\xf7\x31\x3c\x32\xc4\xfc\xbd\xf1\x13\x7d\x99\xa3\x51\xf5\x36\xb1\x34\x45\x41\x7e\x91\x58\xc0\xf8\x26\x1b\xd6\xc4\x15\x05\xf6\x0e\x28\xcd\x53\xb4\xde\x80\xd4\x1f\xc5\xd5\x46\x5b\x08\x5b\x6a\x02\xeb\x0e\x60\x7f\xf2\x7b\x34\xc6\x40\x89\x2c\x63\x8d\x59\xed\x25\x75\xe1\x5b\x51\x56\xcc\x79\xf9\x9a\x3b\x84\x09\xa8\x6d\xa3\x91\x34\xc7\x6f\xb5\x31\xd3\x13\xaa\x5a\x79\x18\x60\x13\x86\x26\x4e\x5a\x71\xab\x14\x58\x30\x43\x1c\x03\x1d\x2a\xdf\x57\x8e\x23\x59\xba\x74\x8d\x83\xcc\x32\xe4\x8f\x04\x63\xf8\x65\xc7\xd4\xff\x6a\xd2\x9b\x71\x06\x14\xaf\x2f\x09\xca\x77\x62\x8a\xe4\xa4\x6e\x83\x02\x61\xa3\xbe\xfe\x2c\x91\x34\x41\x15\xec\xee\xb3\x8d\x71\x52\x0f\xcc\xa3\x08\x21\x22\x0c\xaf\xbc\xb0\x71\x65\x18\xec\xaf\x6e\xa5\xb7\xe6\x3e\x7d\x3e\x52\xe3\x41\x35\xfe\x88\x8d\x7b\x1c\x99\x47\x7b\xe9\x97\x7b\xa1\xf6\x6a\x92\x60\x77\x94\x1d\x4d\xe9\x64\xe1\xef\xf1\x27\xf2\x61\x73\x91\x42\x05\xfd\x61\xa5\x71\x70\x4e\x2a\x31\x3e\xc8\x7c\xa4\xf8\x38\x4d\xe7\xa3\xf2\x75\xdf\xe3\x34\x15\x61\x38\x1f\x89\x31\x5c\x11\x33\xba\x69\x9a\xce\x90\xc0\x70\x43\xf2\xa8\x71\x34\x0c\xe7\x5d\xd7\xf7\x34\x9d\x6a\x40\xdc\x84\x21\x9a\x68\x32\x73\xe3\x4e\xcc\x18\x0a\xad\xe7\xb5\x91\xde\x4c\xcc\x26\x54\x18\x6a\xaa\x34\xd1\x24\xe9\x17\x4d\x6b\x5e\xca\xe1\x4b\x89\x26\xf0\x8b\xc4\x51\x43\x1c\xa4\x89\xee\x70\x18\x1e\xa3\x09\x28\x0e\x94\x63\xb3\x5e\x27\xb0\xd0\x92\x32\xc6\xe0\x61\x6b\xe6\x69\x1a\x86\xfe\xbd\x4d\xc8\xd4\x6c\x3f\x99\x08\x32\x9a\xb3\x35\x20\xc9\xb4\xf0\xac\xd1\x84\xc0\x00\xa7\x4d\xc8\x95\x6e\x6f\xae\xdb\xbb\x32\x24\x81\x8e\xc9\x15\x08\xcc\x66\x68\x4d\xac\xf3\x79\x12\xcd\x90\x6f\x09\x83\x39\x6a\xc1\x86\x57\x3a\xd1\x45\xbb\x76\x80\xd2\x29\x7e\xbe\x71\x06\xb1\xf1\xc5\x4b\x8c\xbb\x3d\x46\xbf\xca\x34\x5d\xa5\x69\xdb\x26\xcc\x31\x0e\x43\xaa\xd0\x1c\x12\x58\x8f\x92\xb1\x75\x34\x6a\x95\x8e\x7b\xd0\xad\x13\x3d\xa6\x86\x0c\xd6\x45\xd8\x88\x0c\x38\xf7\xf1\x5f\x04\xaf\xc5\x7f\x31\x53\x59\x60\x08\x86\x98\x13\xc9\x91\x49\x06\x7f\x6a\xa8\x26\x1c\x73\x6e\x11\xd1\xc5\x0e\xa9\x55\x01\xae\x6b\xe6\x30\x8c\xd9\x89\x8f\x7a\xf0\x89\xf1\xa9\x89\x74\x55\xdd\xd7\xb4\x9e\x4a\xc2\xd6\xa7\x69\x58\x1e\x4a\x52\x12\xd5\xd5\x85\x80\x1b\x3f\xa8\x29\xfd\xd2\xe9\xf8\xe3\x59\x34\x4d\xf9\xbd\x7c\x73\x67\x88\x7c\x21\x7f\x3f\x5d\xf3\x05\x99\x38\xb2\x13\x41\x88\x1c\xba\x1c\xdc\x7d\xec\x67\x51\x81\x33\xf9\x57\x13\x7a\x32\xcf\xe0\x12\x47\x1c\x74\x7a\xf1\x21\x2b\xf0\x0d\x0f\x1e\xc9\xee\xa1\x17\xe0\x89\x79\xd1\x60\x7c\x28\x73\x1c\xd0\x8f\x39\x8e\xe8\x97\x1c\x13\x2c\xc9\xa9\xd3\x26\xc7\xc5\x40\xf8\xd9\x7c\x29\x1b\xaf\xbe\xe0\xa4\x22\x33\x69\xca\xdd\x36\x36\x84\x25\x12\xa4\x14\xc4\x19\x87\xa1\xd0\x1f\xca\x6b\xf0\xa5\x96\x2f\x85\x89\x15\xb2\xe6\x24\x18\x7d\x50\x1f\xf8\x87\xab\x0f\xb3\x0f\xb2\xf5\x5f\xff\xf7\xff\xe7\x7f\xfd\xed\xf7\xdf\x7e\xfb\xfd\xb7\x7f\xf9\xfd\xb7\x7f\xfd\xfd\xb7\xff\xff\xef\xbf\xfd\x77\xbf\xff\xf6\xdf\xff\xfe\xdb\xff\xf0\xfb\x6f\xff\xe3\xef\xbf\xfd\x4f\xbf\xff\xf6\x3f\xff\xfe\xdb\xff\xf2\xfb\x6f\xff\xe7\xef\xff\xf2\xbf\xfd\xbf\xbf\xfd\xf6\x61\x7d\xd0\x3b\xf8\xd1\xfc\xff\xe9\xc3\x7a\x46\x67\xb3\x71\x00\x09\x27\xaf\xe8\xe5\xd1\x97\x15\x0a\xfe\x29\xe8\xac\xb9\xfe\x0b\xfe\x16\x60\x98\xe5\x1f\x7c\xe2\xad\x00\xc3\xa2\xf1\xe6\xa0\xba\xc2\x25\xfd\x31\xfb\x2b\xad\x66\x78\xe0\xf4\x43\x65\xac\x26\x32\x8f\x88\x9a\x70\x30\x81\x12\x0f\xb6\xbe\xcc\xdc\x17\x99\x65\xb0\xe2\xc6\x5f\x45\xaa\x68\xc1\x51\x5f\xaf\xd4\xa9\x7e\x3a\xc0\xa0\x24\x5b\xea\xc7\xdb\x38\x83\x39\xb7\x21\xfb\xa6\xdc\x9c\xf0\xba\xb2\x11\x65\x6f\x38\x59\xf1\xae\xce\x07\x4b\x4e\x44\xd7\xfa\x11\xc2\x25\x27\xcb\x72\xf0\xec\x0b\x4e\x02\xfb\xc9\x44\xdb\xbc\xaf\xd0\xa5\xa6\x5b\xd7\x0d\xf7\xa8\x16\x1c\x09\x0c\x0b\xb2\xc1\x5a\xfa\xf6\x8e\xdb\xba\x21\x22\x09\xc3\xfc\x1c\xe0\x81\x26\x47\xdf\xdd\x36\x97\xa7\x12\x94\x90\x1b\x8e\x12\x8c\x8d\xb6\xf1\x40\x4c\xa9\xb9\x7a\x11\xa7\xe9\x77\xdf\xdb\x3d\x4d\x36\x43\x3f\xfe\x68\x43\x8d\x25\xe5\x4c\x07\x3a\x53\xff\xa0\x57\x8e\xc0\x7c\x12\x9f\xe4\xd1\xaf\xbe\xfb\xd1\x96\x77\xbc\xad\x52\xb6\x8f\x5d\xa4\xad\x3b\x77\x0c\x67\x6b\xfd\xf4\x63\xc4\xc9\x01\x08\xf2\xdd\x4f\xf6\x7e\x38\x1b\x58\xeb\x87\x9f\xec\xe7\x7e\xbf\x1f\x71\xf2\x23\x08\xf2\xfd\xf7\xee\xfb\x94\xce\xe2\xf5\x42\x39\x56\xd8\x49\xcc\x35\x87\x31\x41\x8c\x78\x53\xf7\x01\xc6\xde\xdd\x60\x42\x7a\x83\xc9\xdd\x38\x8f\x22\xbd\xd6\xea\x6d\xd1\x9d\x09\xc6\x77\xbf\xfb\x31\x4d\xd7\xf7\x44\x69\x24\x1e\x5d\x56\xb1\x4c\xe8\x53\xae\x10\x03\xee\x6f\xf2\xea\x24\x26\x80\xca\xa1\x42\x7e\xba\xa0\xbd\xe4\x28\x68\xf5\x44\x3f\xc0\x69\x6a\x5e\x7a\x17\xe6\x59\x3f\x76\x7a\x5f\xfa\x01\xc6\x85\x8a\x7f\xc6\xe1\xa8\xe9\x72\xdc\xad\xc0\xe4\xfd\x61\x2f\x32\x74\xae\x64\xd8\xac\x88\x70\x47\x3c\x0c\xd1\x05\x1f\xd6\xa2\x08\x70\x7f\x9a\xdc\x49\x54\x26\x2e\x91\xef\x6c\x9b\xac\x90\xc4\x78\x38\xe1\x86\xf3\x2e\x39\xba\xd6\x6b\x06\x83\x84\x23\x8e\x23\xf3\x92\xc1\x29\x27\xf1\x70\xce\xd1\x92\xe3\x28\x78\x7e\xf8\xee\xfc\xed\xe1\xf1\x9b\x23\x78\xfe\xf4\xc4\x3d\x9d\xc4\x27\x70\x72\xf4\xd8\xc4\x08\x3e\x7f\x7a\xf2\xe8\xe9\xc9\xd3\xd7\xef\xe1\xc5\xe9\xd9\xd3\x6a\xca\xd1\x8b\xb3\xa7\xc7\xa7\x27\xc0\x92\x47\x8c\x33\x45\x81\x25\x4f\xb9\xa2\x97\x54\x82\x09\x88\x0e\x2c\x39\x8b\x67\xd4\xa7\xe9\xa6\xce\x0e\x1f\xe9\x0a\x5e\x1f\x3d\x3e\x7a\x65\x5a\xac\x24\x98\x29\x79\xb4\x10\xb1\x02\x3f\x3b\x45\x9d\x81\xf7\xc9\x85\x00\xc3\x39\x27\xbd\xc1\xa9\x0f\x0e\x7b\xef\x9c\x0f\xce\x79\xa7\x83\xaf\xd1\x92\xc3\x19\x27\xa7\x7c\x74\xce\xc7\x36\x66\xd1\x91\x4e\xc1\x61\x78\xc5\xed\x23\x4c\xb9\xcd\x85\xf1\xe0\xa8\xb4\x48\xc9\x25\x87\x4b\x5e\xd1\x3d\x8f\x38\x50\x85\x04\xe4\xc8\x70\xc4\xad\x6b\xc8\x47\xae\x25\xf9\x8f\x7c\xb4\x15\x1f\x72\x4c\x82\xaf\x81\xa1\xe6\x5f\x34\x35\x75\xd1\x34\xbf\x8e\x03\x42\x3c\xd1\xfa\xc8\x31\x1c\xf2\x86\xd0\x92\x9f\xb8\x16\xae\x1c\xa2\x18\x42\xb1\x2d\xa0\xe4\x88\x94\x21\x8c\xe1\x05\x27\x5f\xf8\x70\xb5\x1d\x87\x44\x53\x91\x41\x3d\xce\x86\x1a\x06\x6f\x72\x07\xec\xc8\x85\x1a\x54\xc3\xe0\x64\xbd\x58\x04\x51\x9d\xb8\xa0\xad\x33\x5d\x45\xc4\x4f\x63\x1e\x29\xd4\x8b\x0c\x79\xc7\x31\xcd\xf5\x0f\x39\xc6\x43\x19\x7d\xe2\xc3\x15\xa2\x38\x3f\x93\x4a\x08\xe2\x44\xa7\x34\xef\x5e\x5b\x9f\x66\x4a\x87\x25\x10\x44\x3c\x83\x63\x33\xc4\x52\x94\xd4\x6d\xaf\x86\x1c\xcc\x41\xe7\x85\x13\x26\x3a\xc1\x38\xc8\x06\x5f\x78\x9a\x52\xd5\xa0\x4a\x15\xb1\x7c\x8e\x79\x25\x46\x8d\x99\xb9\x57\x9a\x92\xbb\x8d\x29\x78\xb0\xcd\x94\xf3\xd8\x16\x36\x54\x35\x55\x46\x5b\x34\x02\x83\x2c\x47\xdd\x7c\xcd\x6b\xf1\x0e\x4e\xb6\xeb\xd2\xda\x03\xaa\x68\xfc\x74\x3b\xbe\x8b\xb9\x2e\x43\x4a\x3b\x44\x24\x87\xb2\x13\xb4\xcc\xe1\x90\x4e\xc0\xf8\x95\x98\x58\x17\xcf\x72\xd3\x4f\xb7\x74\xa2\x37\xbc\x6e\x03\x82\xe7\x8d\xcc\xb6\x70\x84\x0d\x43\xe4\xa5\x18\x7b\x95\xe7\x1b\x3e\x7a\xca\xc7\xe6\xce\xc4\x0c\x6e\x6d\x35\xf1\x90\x37\x5d\x7b\xd6\x2e\x5d\x00\x39\xba\xa5\x75\x0d\x55\xd7\x35\x1e\xc9\x91\x9e\x38\x3c\xce\xe0\xd1\xb6\x7e\x56\xc1\x3c\x3e\xa4\x48\x6b\xac\xa3\xde\x18\xe4\xa8\x3f\xc6\x11\x45\xf9\xc1\xd2\xfc\x8a\x46\xd5\xf5\xee\x03\x06\x92\xf9\x90\x44\x18\x1e\x22\x91\x5f\x0a\x06\x34\xcb\xe0\x3e\x6f\xbe\x56\xa4\x86\xfc\x76\x2f\x44\xac\x56\x74\x4a\x54\x7e\x69\xfd\x7a\xa1\x08\xcd\x76\xdc\x26\x52\x5c\xc5\x1d\xcb\x96\x63\xe7\x30\x03\x1b\x2c\x53\x52\xeb\x87\x35\x3c\x88\x2c\x73\x67\x38\x26\x6a\xe0\xaf\x9a\x6d\x88\x27\x3a\x21\x0f\xb9\xb9\xca\x6c\x0b\x3d\x6c\x6c\x74\x1f\x02\xc8\x40\xf6\x62\x41\x6d\x08\xa0\xe7\x5c\xf3\x41\x83\xb3\x6b\xd2\x83\x84\x24\xaa\xb8\xfe\x7e\x90\xdc\x5b\x0f\xd6\x8e\x7b\xce\x88\x18\xce\xd1\x21\x5a\x11\x35\x5a\x8f\x0d\x84\x57\x06\xc2\x73\x64\x12\x70\x18\xce\xaa\x88\xea\xc5\xb3\xf2\x86\x2e\x35\x37\x2f\xc4\x64\x92\xdf\xb6\xa4\x9b\x5e\x10\x7b\x13\xf8\xa0\x8d\x56\xc4\xdd\xde\x17\x63\x6c\x6e\x4e\x36\xb7\x45\xd4\x0f\x96\xa2\x19\x79\xc4\x51\x0c\x73\x58\x59\x8e\x07\xc2\x74\xe0\xef\xe8\x03\x36\xf3\xd5\x84\xe2\x2e\x4f\xcf\x28\xd3\x18\xc3\xe7\x2d\x54\x7e\xcc\x49\xbb\x6f\x4c\x35\x7a\xee\xbe\x72\xd2\x83\xb7\x9c\x38\x33\x51\x9d\xfe\x6c\xac\x36\xd0\xfe\xca\x3b\x9d\x2c\x03\x9b\x58\xce\xa6\x6b\xeb\x65\xd9\xe0\x2d\x1f\x7d\xe6\xbb\x2f\x3b\xb7\xeb\x73\x26\xc5\x12\xbd\xe5\x15\x4d\xc9\xce\xf8\xc1\xf6\x6e\xfc\x13\x0e\xef\x38\x3c\xe3\xf0\xbe\x4e\x6b\x7e\xe6\x64\x1f\xb1\xd5\x5c\x70\x9a\xb2\x95\x98\xa6\x6c\x15\x4f\x71\xf7\x6f\xf1\x6a\xb5\xa0\xd7\xf4\xe2\x13\x53\xfb\xcc\xde\x5c\xf5\x90\x62\x78\xa9\x69\xde\xc2\x91\x12\xf8\x45\xbf\x25\x54\x3d\x5d\x2e\xe9\x94\xc5\x8a\xc2\xaf\x3a\x65\xb2\xa0\xb1\x2c\xd2\x94\x28\x05\xa2\xa1\xfa\xe5\x39\x4d\x92\xf8\x92\x3e\x98\xc7\x9c\xd3\x05\x48\x9d\xf6\xd0\xfb\x46\x71\x41\x7a\x20\x04\xd9\x64\xc0\x44\x9d\x52\x08\x51\xbb\x57\x4f\x63\xba\x5b\x89\x42\x8c\xd4\x78\xe0\x8e\xc4\x9a\x17\x30\x51\xa5\x21\x16\xdf\xd4\x16\xf0\x86\x09\x64\x02\xf2\x4f\x6a\xed\x09\x64\x6f\x44\xc0\x19\xac\xab\x9f\x44\x77\x25\x12\xe5\xc6\x81\x54\x27\x08\xe0\xa5\x13\x12\x26\x62\xd1\x09\xf6\xf7\x83\xce\x4b\xde\x9d\x8b\x44\xe1\x6c\xf0\x0b\x0f\xc3\x5f\x79\x9a\xa2\x5f\xaa\xa4\xaf\xb6\xe3\xd3\x10\xfa\x48\x0e\xfc\xf5\xf3\xa5\x3d\x1f\x13\xfa\xc8\x87\xbd\x10\xa3\x4e\x87\x57\xaf\xc6\x6f\xde\x6d\x57\xd1\xa3\xa2\x69\xec\x76\x65\x7c\x90\x3d\x9c\xc1\x13\x8e\xb8\xc0\xc0\x45\xa6\x67\xb1\xdc\xcd\x32\x48\x33\x13\xc5\x4d\x4f\xa5\xbd\x10\x40\xe0\xe1\x93\xda\x01\x50\x51\xf8\x0c\xc7\xc2\x04\x8c\x88\xa4\x08\x43\x29\xba\x5c\x5c\xd7\x73\xdb\xd4\x3c\x23\x15\x61\xd8\xfe\x99\x0f\xd1\x33\x4e\xd0\x3b\x6e\x7c\xac\xa9\xc0\x5d\x4d\x34\x0f\xe0\x1d\x37\x0f\xfd\xae\xe0\x4b\x0b\x7a\x32\x11\xf0\x84\x6b\x2a\xf9\x8c\x97\xa7\x44\xe3\x7a\x1f\xe3\xa8\x2d\xba\xf1\x74\x7a\x74\x45\x6d\xcc\x04\xca\xa9\x4c\xd3\x06\x6b\x51\xa9\x68\x9a\x8a\x2e\x5b\xea\x76\xce\x8c\x91\x35\x49\x53\x86\xd6\x02\xeb\x72\x6c\x41\x23\x2d\xa2\x95\xe6\x5a\x0f\x28\x10\x5c\xd2\x78\x7a\x63\xf6\x99\x27\xf3\x98\x5f\x9a\x5b\xf7\x4e\x51\x60\xed\xb4\x41\x35\x26\x7a\x2d\x60\x7e\x29\x1b\xee\x6e\xd7\x54\x9e\xd9\x37\xaa\x72\x98\xcf\x1a\x44\x1c\xf6\x56\xa4\xbb\x84\xaa\xd7\x6c\x49\xc5\x5a\x59\xd0\x42\x0f\x67\x11\x7a\xc2\xc9\x5a\xc0\x36\x48\x50\xe0\xc0\x19\xc0\x44\x68\x2d\xd2\x99\xe5\x13\x01\x33\x01\x0b\x01\x2b\x01\x73\x01\x57\x02\x6e\x04\x2c\x05\x5c\x0a\x7b\x6d\xd8\x2f\x1c\xcc\x5a\x8f\x7e\xe5\x19\x5c\xd8\x98\x26\xd7\x82\x5c\x1a\xa2\x00\x67\x66\xa9\x3b\x3f\xad\xd3\x0b\xe3\x3a\x20\x35\x74\x7f\xa1\x17\xcf\x98\xaa\x7f\x81\xa3\x32\x9d\x38\x15\x25\xe1\xea\x5c\x90\x0a\xd6\x1d\x09\x0c\x1f\x05\xb9\x10\x5a\xe8\xfe\xbc\xa6\x6b\xfa\x9c\x4d\xa4\x50\x71\xf2\x29\xc0\xf0\x45\x90\x8f\x22\x0c\x3f\x0a\xcb\x11\x06\x5f\x44\x9a\xa2\x44\x90\x6d\x63\xbb\x89\x64\x71\x2e\xcc\x36\xfd\x91\x70\x37\x30\x18\x9f\x3a\xfa\x85\x29\x84\x07\x33\x31\xc0\x1b\x4a\x66\xa2\x3b\xe3\x30\x13\xfa\xc1\xb0\x27\x4d\xf1\x69\xf9\x4e\x5f\x4b\x79\x67\x62\xb8\x12\x08\x47\x0b\xe1\xad\x4c\x2a\xcb\x4a\x2f\xa6\x66\xae\xa8\x34\x17\xae\xe8\xcc\xe5\x4e\x1d\x95\x16\x4e\x22\x70\x16\x9d\xf9\xc5\x30\x17\xc6\x10\x29\x8a\xcb\x22\xec\xc1\x8b\xd7\xf4\x8b\x3a\x11\x53\x8a\x82\xc0\x04\xfb\x6e\x9d\x09\x5d\xb2\x2b\x2c\x48\xd1\x95\x80\x8d\x56\x74\xe3\x89\xa2\xf2\x61\xac\x62\x7b\x9c\xa7\xda\xec\x95\xb0\xb7\xbe\xe8\x46\xe6\x22\xc3\xd1\xa9\x08\xc3\x53\xe1\x9d\x42\x87\xe8\x46\x90\xe2\x15\x79\x1b\xfc\x52\x90\x1b\xeb\x4a\x5a\xab\x6f\xe9\x04\xa7\x1b\x01\x7a\x14\x38\xaa\x7e\xbe\x16\xfe\x48\x97\xf9\x6a\xf0\xec\x50\xc0\x27\x01\x2f\x04\x1c\x0b\x78\x25\x88\x9e\xb0\x6d\x41\x6b\x33\xe3\x91\x32\xf7\x58\xfb\xfb\xbd\x06\x0b\x3d\x75\x0b\x91\x5f\x58\x3e\xd3\x33\x3d\x13\x84\x82\x9e\x06\x0c\x0b\x41\x68\x06\x0f\x44\x93\xf9\xc4\xfa\x3b\xac\x2c\x86\x19\x3a\xa3\x2a\xfb\xfb\xd6\xe7\xb4\xb8\x6a\xb1\x14\x5e\xae\xe1\x2a\xce\xfb\xf1\xd4\xfb\xa8\xd5\x22\xa1\x52\x13\x3e\x9d\xe7\x3e\x86\x0e\x8e\x84\x52\x44\xf3\x24\x2d\xd3\xe8\x14\x13\xfa\x56\xec\xb8\x78\x41\xf7\xf1\x81\xe3\x54\x27\x62\x3b\xa8\x98\xb9\x73\x62\x89\xa8\x09\x0f\x56\xd6\x4f\x4b\x77\xab\x53\x77\x68\xe8\xb5\xe8\xce\x8a\x9b\xbb\x50\x0f\xa4\xef\x18\xd6\xdd\x92\x1e\x30\x19\x3c\xad\x42\xaf\x90\xb1\x37\xc6\xf9\x2c\x6a\xf7\xdd\xde\xaf\xd2\xbc\xb6\x76\xbb\x83\xcf\xe3\xf7\x87\x55\x96\x65\xf0\x26\xa7\x10\xcf\x45\x4d\x1a\xb9\x25\x48\xe0\xc0\x18\xc0\x43\xe1\xef\xec\x7b\x24\xbc\x69\xfa\xbe\xa8\x9a\xa6\x6f\x09\x0c\x9f\x05\x79\xc5\xe1\xb1\x26\x18\xf9\x8c\xc0\x57\x51\xbe\x4b\xf7\x6d\x99\xb4\x3c\x11\x26\x76\xde\x8c\x2a\x13\x5b\xeb\x9d\x30\xd0\x80\x67\x82\xbc\x13\xf0\xbe\x46\x6a\xde\x0a\x0c\x3f\x0b\xd2\x6e\xa3\xaf\x22\x0c\xbf\x0a\x7f\xc5\xee\x95\x39\xe5\x2a\x72\xf7\x08\x93\x80\xe1\xa5\x20\x87\x0a\xdd\x12\x50\x8b\xac\xd6\x46\xcf\xd1\x67\x81\xdb\xb9\x76\xff\x59\x60\x6c\xbe\xdc\xb9\x43\x08\x79\x4c\x8b\xa8\x6b\x3a\xf7\x7b\x51\x56\x7e\x73\x2e\xe5\x40\xf3\xca\xe0\x0b\x13\xdc\x36\xea\x4b\x66\x6c\x86\x6c\x50\xbc\xc6\x8b\x47\x3f\xe7\xe7\xf4\xdb\x7d\x17\xda\xed\x73\xb1\xac\xfb\x18\x6a\xfe\x46\xa8\x76\xb6\xa8\xfa\x9a\x47\xcb\x45\x6a\x2b\xc0\xde\x73\x31\x26\x14\xda\x48\xd5\xbd\x33\x4d\xc1\x8a\x58\xae\x97\xc5\x2f\x82\xbc\x14\x69\xda\xde\x42\xe8\x36\x0d\xc3\xf6\x63\x5e\xed\xb5\x2c\x4b\xdc\xc6\xbe\xb2\x43\x5a\xfe\xa6\x14\x2e\x8d\xa4\x9d\x65\xa0\x10\xc7\xdb\x3b\xa0\x32\xab\xaa\x7a\x9f\x45\xd7\x5d\x24\x5e\xf7\x86\xb7\xb0\xc0\x18\x7e\x6d\xa0\x32\x79\x9c\x6c\xb3\x51\xda\x24\x78\x20\xb3\x9b\x31\xa7\xe6\x92\x2a\x9a\x81\x62\x8d\xaa\x3f\xed\x72\xa1\xd8\x8c\xd1\x29\xde\x14\xcf\x3e\x24\xa4\x39\xda\x40\x9d\x3b\xf0\xe0\x95\xa8\x7a\x51\xf8\x20\x0e\xc4\x45\x98\x04\x46\xfa\x84\x78\xa7\xb8\x98\xf4\x06\xb9\x7d\x2c\x1e\xb8\xd3\x52\x6e\x53\x93\x8f\xe2\x4e\x67\x0c\x0b\xc2\x86\xb3\xae\xf8\x14\xcd\xba\xb3\x98\x2d\x60\x45\x66\x1e\x6f\x60\x6e\x9e\x4d\x14\xfd\x29\x99\x39\x16\x6a\xe6\x67\x31\x44\x2c\x4d\xd1\x01\x21\xa6\x7b\x0e\x65\xc3\x50\x30\xeb\x79\x58\x4a\x24\x7d\x0c\xed\x1e\x21\x64\x31\x9c\x10\x11\xa1\x69\x18\x4e\x3d\xa3\x84\x09\x59\x20\x81\x61\x1a\x86\x68\xea\xf8\x32\x24\xa4\xdd\x33\xd7\xdc\x13\x32\xf3\xa4\x6a\x38\x47\x8f\x05\xf2\xe4\x63\x6f\x32\x8f\x19\x6f\x4d\x6e\x26\x5a\xc3\xc5\x11\x5a\x93\x5f\x85\x56\x71\x87\x6b\xcb\x7f\x26\x5a\xbd\xc6\xd1\x4a\xa7\x45\x73\x24\x4a\x58\x30\x0d\xc3\x76\x62\xba\x60\x5b\x33\xb1\xba\xb3\x12\x8c\xb5\xb8\x5e\x9e\x86\x3e\xc8\x30\x6c\x57\x46\x29\xed\x28\xad\xe7\x2d\xdd\x9e\x55\xbb\x63\xc3\x06\x3f\x8b\x21\x42\x9c\x54\x09\x0b\x0a\xcc\x8f\x96\x07\x3d\x83\xa2\xc0\x75\xfb\x89\xe0\x44\x02\x37\x47\xfc\x6d\x56\x05\xed\xbe\x39\xe1\x59\xa3\x45\x88\x63\x1c\x71\xb2\x71\x15\x44\x14\x6c\xf1\x48\x66\x80\x18\x11\xa3\x40\xf0\xa0\xa3\xc6\x78\xc8\x10\xc7\x51\xb0\xe6\xf6\x38\xcc\x34\x1f\x44\x60\xe3\x0d\x34\xf9\xbc\x09\xb3\xe6\xc5\x82\x0e\xcc\xe9\x5b\x43\xe5\xc3\x10\xf5\x09\xd9\x32\x61\x0f\xdd\x67\xa4\x70\x94\x3f\x02\xc5\x38\x43\xc1\x1b\xdf\x66\xcb\xf5\xb2\x55\x34\x6e\x9c\x6f\x25\xab\xb1\xb9\x37\xb9\xf4\xb0\xe5\xea\x69\x8e\x72\x59\x89\x8f\xcd\x10\x67\x86\x11\x22\x49\x9e\x56\xd7\xc3\x7b\x31\x7c\x2b\xdc\x61\x95\x7c\xcc\xaf\x8a\x66\x39\x28\x1c\x51\x86\x9a\x00\x02\x5a\x2c\x30\x71\xbb\x4b\xb8\xfb\x5e\xa4\xa9\x69\x6d\x78\x10\xf5\xc1\x0d\xd1\x5b\x5f\xdc\x7d\xdb\xc6\xc3\x97\xb3\x26\x35\xb4\x6f\x1c\x93\x4a\x98\xd3\xf6\xc1\x11\x32\x10\x7f\x6e\xf8\xe5\x21\xe5\x15\x3d\xb1\x9d\x0f\xfc\x70\xf2\x0f\xf3\xfc\x03\x38\x78\xd9\xb8\x24\xac\x8e\xa4\x25\xe7\x8f\xfc\x83\xd0\x8c\x41\x7f\x13\x1a\x12\x19\xc4\x4d\x85\xa8\xb1\xd7\xa4\x29\xb2\x0f\x5a\x76\x75\x11\x75\xb1\x6f\x92\x48\x70\x14\x88\x1c\x80\x32\x6b\xc5\xec\xcb\x67\x30\x69\xaa\xd1\xd2\x40\x5d\x99\xaf\xbd\x5c\xa9\x21\x37\xce\xe9\xc2\xcb\x66\x25\x52\xd0\x9a\x18\x2f\x94\x0b\x8d\x5d\x86\x68\x4d\x5b\x4c\x25\x74\x31\x0b\xfc\x99\xe5\x5f\x05\x92\x78\x20\x86\x35\xd2\xe9\x38\x8c\xdf\xc4\x35\xcd\x08\xef\xa2\xc2\x18\x9a\x30\x30\x16\x5d\xac\x5f\x62\xff\x52\xba\xed\x3c\x66\xf6\x56\x07\x1b\x94\x12\x47\x68\x7b\xf4\xfd\x7c\xf4\xfd\xad\x92\x79\xcb\xae\x86\x6c\xf0\x52\x0b\xbc\x9f\xab\x9c\xe6\xc4\x6d\xb4\x7f\x16\xa0\xa5\x21\x7b\x5b\xd3\xa1\x28\x79\x28\xb8\x7b\xdf\x1e\x0a\xf7\x6a\xce\x89\x20\x37\x00\x7b\x33\x83\x1f\x81\x7d\x2b\xd1\x42\xdd\x11\x1b\x25\xdf\xc8\x9d\xe8\xb0\xda\xf8\x23\x51\xde\xe5\xbf\x25\xfc\x8e\x37\x78\xe2\xa8\x9f\x2d\x3a\xeb\xa7\x9c\x82\x46\xa3\x31\xe4\x18\xa9\xbf\xd8\xf3\x6e\x5e\x4e\x74\x02\x7e\x25\xb4\x3e\x79\xc0\xd1\x67\x51\xb2\x4b\x6f\x34\xdf\x8c\x1a\xc8\x93\xb5\xa7\x92\xfb\x6e\xbc\x10\x93\x77\x02\x21\x49\x3e\x8b\xe2\x16\x2b\x24\xc8\xa1\x8b\x55\x5f\xbd\x7c\xc9\xee\x77\x20\x4e\x0e\x91\xc0\xa3\xf7\x7c\x8c\x87\x32\xa2\x54\x93\xd3\x22\xda\x66\x57\x7c\x22\x4d\x77\x6f\xa5\xa9\x82\xd8\x30\xc9\xa6\xb8\x29\x34\x0c\x29\xc4\x8e\x47\x12\xbb\x6a\xed\x8b\x77\x43\x60\x6e\xe9\x6b\xec\x66\x05\xbf\x71\x16\x20\x0c\xbd\x36\x61\x16\x71\xc2\x50\xb9\x99\x61\xc6\x01\x2d\x2e\x24\xf6\x49\xf5\x50\x71\x2d\xd4\x9b\x11\xc9\xbc\x42\x6a\xa2\x85\x7f\xda\x56\x8d\x8d\x3e\x74\x28\xc0\x22\x0d\xae\xea\x4a\xaa\xaa\xc8\xf8\x85\x50\xd3\x66\xfc\x92\xa0\x46\xa5\xe9\xce\xc8\xbb\x46\x2b\x9c\x5e\xb3\x9f\x45\x9a\xea\xdf\x17\x62\xa8\xdb\xfd\xa4\x9b\x8c\x9e\x19\x4d\x07\x1a\xc0\xf8\x4a\xaf\xfb\x63\x2d\xf4\x97\x7c\x41\x8d\x22\x4a\x15\x7a\x55\xbd\x8c\x7a\x4e\xf9\x96\x67\x4a\x71\xfc\xaa\x6c\x0c\xfe\x2c\xea\xee\xdd\xc7\xf9\x5a\x77\x9c\xdc\xc2\xce\x47\xb5\x28\x6d\x07\x35\xf5\xf2\x89\x08\xc3\xea\x3d\x06\xd5\xa8\x93\x3e\xea\x6d\x2f\x83\x8d\x51\x45\x1a\x63\xae\x0a\xf4\x59\xc0\x13\xef\x5f\x2d\x4a\x77\x90\x19\x8a\xf2\x07\x57\x25\xbc\x14\x19\x6c\x1c\x15\x8c\x3e\x0b\xeb\xb2\x68\xe8\x84\xc1\x99\x6d\x1d\x5b\xd8\x93\x1e\xe4\x45\x77\x36\x88\xc3\x50\xcb\xdf\x74\xf4\x9a\x8f\xc3\x50\x22\x0a\xaf\xf9\x9f\xbd\x07\xc2\x18\xaa\x33\x9c\x19\xfd\xec\x85\xd1\xb7\xcc\x53\xe1\x93\x74\x4b\xd4\x83\xcf\x9a\xce\x5a\xe4\x69\xb8\x30\xe1\x9d\x27\x5e\xa5\x03\x94\x36\x04\x85\x9e\xa2\x1c\x9f\x81\xe6\xeb\x20\xfb\x73\xed\x19\x24\xde\x01\xfb\xdc\x93\xee\x0f\xaa\xfa\x45\x57\x15\x2f\x16\x0d\xfd\x36\x55\x48\xdd\x7d\x73\x73\x4f\xae\x66\x83\x30\xcf\x46\x70\x66\x75\x19\xc5\x85\x28\xa1\x28\x3f\x9a\x8b\xcd\xcd\xd3\x5a\x5a\x87\x09\xe9\x0f\xee\x6b\x34\xdc\xda\x8c\x5a\x93\xb8\xd3\xd1\xb2\x71\x7f\xe0\x6e\x94\xf6\xc6\x9a\x49\xa7\xe3\x63\x72\x6b\x42\x5e\xd7\xcb\x14\xde\x24\x69\x8a\x12\x43\x76\x46\xeb\x31\x51\xb0\xb7\x37\x49\x53\x8e\x98\x56\x6e\xec\x59\xd6\x22\x29\x2b\xdd\x53\xed\x65\x3f\x81\x98\x13\x26\xca\xc6\x03\x19\x4f\xe8\x9f\x03\x8a\x01\x84\x68\x02\x84\xa8\x02\xa2\x61\xec\xa2\x3e\xb2\x02\xca\xdc\x1d\x7f\xcb\xcd\xe5\xbe\xbf\x1c\x89\xed\xfe\xfa\xc0\xc6\x6c\x9b\x20\x1e\xe6\xde\x67\x41\xc9\x41\xd8\xae\x3c\xe7\x97\x6f\xae\x7d\xec\xb2\x4b\x2e\x24\x7d\x10\x27\xd4\x25\xb3\xc0\x06\xa7\x5c\x28\xb6\x60\xdc\xa7\x2e\x4d\xea\x54\xa8\xc3\x85\x2f\x9f\x98\xa4\x35\x67\x5a\x69\x77\x69\x6b\x93\x96\x28\x36\xf9\x74\xe3\x92\x6e\x02\x0c\xb4\x14\x21\x27\x61\x95\xc3\x76\xce\x5b\xca\x50\x29\x13\x96\x97\xc1\x82\xc1\x8a\x91\xcd\x9b\x93\xb3\x37\x2f\x5e\x9c\xbe\x7a\x7d\xf4\xf0\xfc\x7d\xd4\x74\x27\x44\xc2\x50\x10\x07\xa0\x9b\x28\xc6\xb8\x88\x13\x65\xae\x96\x23\x07\xe0\x36\x6a\xbb\xf4\x0b\x9d\xa0\x20\xbe\x98\x4c\x03\x83\x1a\xf7\x5f\x9d\x3e\x3b\x3a\x39\x7f\x70\xf8\xea\xe8\xf5\xce\x9a\xff\x49\x06\x10\x5c\xfe\xc9\xba\x13\x25\x03\x2b\x97\xce\x99\xf3\x00\x2b\x51\x7b\x9d\x07\xa6\xcc\x19\x53\xb6\x0f\xe8\xc1\x15\x23\x73\x06\x37\x8c\xa0\x19\x23\xfb\xf1\x3e\x2c\x18\xd9\xbf\xf8\xdb\xfe\x25\xcc\x5d\x10\xaa\x19\x83\x20\x0e\x70\xfe\xbe\x70\xef\xbd\x36\x21\x33\x56\xf4\x2c\x4d\x75\xca\xa2\x94\x82\x61\xc9\xc8\x8a\x75\x2b\xf0\x4c\xd3\x15\xeb\x96\xc1\x00\x97\x8c\xe4\x16\xc3\x7d\x84\x87\xc3\x7d\x37\xb4\x00\x8f\xfa\xe3\x01\xba\x61\x69\x7a\xc9\xd2\x74\xc9\xb4\x9e\x72\xc5\x76\xfb\x78\xd9\xf5\x12\x93\xa5\xbd\x59\xda\x20\x03\x4c\xc8\xda\xf5\x9c\x61\x13\x8b\x23\x31\x91\x9e\x21\x21\x3d\x98\x11\x55\xba\xcb\x08\xed\x69\xbd\x0c\x4d\xc8\x24\xf7\x6b\x0b\x6e\x02\xe3\xd8\x96\x07\x41\xd2\xc8\x1b\x86\x68\xe2\xd0\x78\x56\x5c\x50\xe3\xdc\xa9\x2a\xe3\x2f\xbd\xdc\xeb\x85\x21\x6a\xb3\x02\xbf\xd3\x94\x95\x91\x3d\xf8\xa0\xe5\x23\xa2\x46\xa5\x32\x7b\x7d\x73\x63\xe5\x9a\x04\x68\x18\xb5\x82\xce\xba\x13\xe0\x00\x66\x24\x68\x05\x9d\x19\x24\x9d\x8e\xbf\x3a\x37\x77\x09\x44\xc3\xc8\x67\x9b\x60\x0c\x97\xcc\x68\x76\x95\x2c\xe6\xfb\x2d\x34\x6c\x7f\xf8\x90\xb8\x6c\x37\xcc\x28\x08\x95\xae\x73\xe2\x27\x3c\x1e\xca\x88\xc1\x0c\x43\x3c\xe4\x43\xa4\x55\xea\xd5\x5a\x11\xf7\xeb\x46\x9d\x60\xe0\xa3\xde\x98\xe8\x7f\xa5\x24\x0b\xb6\x72\xc5\x65\x90\x74\x6c\x76\xb7\x77\x1e\x95\xbe\x90\x5e\xa4\xfb\xa4\xe5\x97\x72\x2a\x73\x74\x64\xe8\x2a\xee\x94\xca\x47\xd4\x0e\xd7\xc4\x74\xf4\x07\xaa\xc3\x70\xea\x06\xc1\x8d\x83\x03\xd4\x0d\x3e\x82\xf4\x07\xe2\x6e\x5d\x15\xdf\x3b\x18\x88\x4e\x07\xe7\x32\x70\xb1\xa5\x28\xc6\x61\x88\xf8\x48\x8c\xfd\xd5\xa1\xf6\x96\x30\x17\x68\x95\x91\x2b\x56\x09\x1f\x6f\x81\xbe\x7d\x51\xc0\x7e\xd7\xe2\x78\x9b\x90\x0b\x96\xc1\x46\x3f\x47\x17\xcc\xd5\x73\xdd\xa8\xff\x16\x4e\x9b\x25\x47\x56\x60\x15\xd7\x4d\x88\xc9\x44\x21\x89\x4d\xfc\x19\x7f\x1a\xce\xe1\xf7\xdd\x5e\x9a\xc6\xf7\xc8\x64\xa8\x86\x41\xe0\xe4\xe8\x08\xf1\xaa\x8b\x5f\x8c\xf1\xdd\xef\xbf\x3f\xf8\xe9\x4e\x9a\xf2\x7b\xdf\xdf\xb9\xdd\xff\x29\x4d\xe3\x8e\x5e\x16\x93\x34\x45\xa2\x96\xb9\xd3\xd7\xd9\xef\xdc\x3e\xe8\xa5\xa9\xb8\xf7\xfd\x0f\xb7\xbf\xbb\x3d\x54\x43\xe6\x4f\x64\xc5\x38\xe2\x91\x7e\xb7\x08\x11\x43\xdc\x39\xc0\x91\xd8\x33\x25\x3a\x88\xef\x99\x96\xee\xde\xed\xf7\x70\xe7\xce\xf7\xdf\xdf\xbe\x93\x65\x70\xc6\xc8\x66\x62\xaa\x8f\xae\x19\xd2\xc2\x97\xad\xcc\xbc\xf5\x70\x06\x47\x8c\x9c\xf9\x16\xe0\x94\x79\x7b\xf7\x39\xab\x5f\xc5\x69\xc0\x52\xf2\xc5\x1e\x48\xee\x6e\xf8\x85\x60\xfb\xe6\x31\x85\x37\xa7\xac\xe2\x88\x5d\xaf\x00\xac\x3f\x57\x94\x2f\x78\xef\x8e\xdd\xec\x87\x0d\x94\x9c\x33\xc7\x0b\xa5\xb1\x22\x9a\xa6\xb9\x0f\xa8\x96\x8b\xd4\xf7\x88\x8f\xac\x34\x6c\x76\xb5\x8e\x90\x22\x47\xcc\x1c\xf6\x00\x57\xb8\x93\x87\x6a\xf5\xee\xd9\x2a\x77\xa1\xce\x63\x74\x7d\x64\xb5\x4d\x83\x2f\xac\x7e\x72\xcc\xf2\x9c\xfd\xee\x7e\xc1\x69\x34\x2a\x6e\x73\xf5\xe2\x32\x3d\xd5\xbd\x94\x62\xbd\x4a\xc8\x26\x8e\x82\x1f\x82\x0c\x54\x06\xc1\x0f\x9a\x74\x05\x41\x4e\x36\x15\x04\xb7\xee\xc6\xf7\x2c\xcf\x3b\x64\x24\xb8\xd5\x0b\x08\x21\x41\x5c\x64\xd9\xef\xee\x83\x4e\xc6\xf0\xc9\xf6\xd3\x7d\x08\x30\xbc\x60\xa4\xdd\xde\xef\xee\x8f\x3e\xb1\x71\x18\x9a\xa0\x50\xee\xcd\x72\x5d\x53\xea\x78\xd7\x60\xd0\x30\xc2\xfb\xc6\xf9\x5d\x0f\x65\xb0\x3d\xa2\x5c\x30\x2e\x9d\xc5\x2c\x5d\x59\xec\x8c\xe7\x41\x7c\xe1\x3d\x24\xf3\xed\x9f\xd6\x81\xf1\xf6\xb6\x90\x4f\xd3\x20\xd6\xc3\x96\xa3\xde\x38\x4d\x83\x0b\xfb\xdc\x1f\xeb\x21\xbf\x6a\xb2\xcd\x58\x19\xcd\x5e\x26\x17\x37\x75\x9e\x96\x8e\xc8\xd2\x91\x68\x72\x6c\xf9\x21\x83\x1f\xda\x24\x08\x46\x6a\xec\x42\x17\x4e\x48\xbc\x75\x43\x8d\xad\xcc\x1c\x90\xda\x8f\xfd\xdc\x06\x66\x30\xce\x56\x89\xec\x69\xf8\xda\x8e\x84\x8d\xcc\xe2\x13\x46\x1f\x59\x53\x17\xa4\xce\x36\x5b\xc4\x97\x09\x09\x02\x90\xba\x9f\x7a\x76\xc4\x58\x0b\x88\xbb\x60\x6d\xac\x50\xe6\xc0\x9d\x2e\x60\xb6\x61\xdb\x54\x23\x2a\x9b\xa1\x76\x9c\xa6\xed\x49\x9a\xe6\x18\xe0\xba\xd8\xfe\xc2\xd2\xb4\x7d\xc8\xd2\xf4\x05\xc3\x69\x5a\xe9\x7f\xfb\x98\x79\x51\xde\x36\x0e\x09\x91\x48\x80\x81\x4c\x55\x8f\x85\xea\x85\xd6\x56\x26\x22\x9a\xf0\x0e\x35\xe4\xc4\xd0\x59\x8f\xbc\x49\x65\x5d\xb9\x25\x3b\xaa\x7d\xcd\x4f\x5e\xd1\xf2\x57\x73\x70\x61\xf3\xea\xe8\xc5\xf1\xe1\x83\xa3\xf3\x67\x47\x47\x2f\xce\xce\x6f\xf5\xa2\x43\x06\xaf\x8e\x1e\x1f\xbd\x7b\x71\xee\x3f\x9d\xbd\xb9\x7f\xf6\xfa\xe9\xeb\x37\xaf\x8f\xce\xce\xdf\x9c\x3c\x3c\x7a\xf4\xf4\xe4\xe8\xe1\xf9\x83\xc3\x17\xaf\xdf\xbc\x3a\x8a\x5e\xb0\x4c\x8b\x14\x89\xe6\x55\x0b\x92\x68\xe9\x87\x2a\x54\x97\xdd\x40\x69\x66\xac\x55\xf8\x9a\xb4\x07\x02\x0e\x08\xa1\xc3\xaa\x76\xee\xc6\xbd\xf0\x71\x96\x9c\xe9\xaa\xf1\x0e\xd9\x4a\x26\x9c\xe1\x8c\x87\xe1\xf1\x56\x3b\x1a\xdc\x41\x32\x8f\x97\x81\x3d\x4c\xff\xa0\x4c\x92\x5f\x6f\x9b\xf0\x3d\xe4\x3b\x48\x0e\x1f\x58\x21\xdc\x33\xed\x3e\xce\xe0\xa4\x6e\xbc\xf5\xe1\x1a\xcd\xfa\x6d\xbe\x78\x2c\x3f\x90\x98\x87\x8f\xa2\xd6\xa3\xdf\xb9\xbd\xe5\x96\x26\xbe\xbd\x05\x6d\x87\xd3\xd2\xb5\xb7\x96\x54\xcd\xc5\xb4\x65\x7b\x48\xa7\xad\x44\xe8\x14\x4d\xf7\x85\x9a\x53\xd9\x52\xf3\x98\xb7\x62\x1f\x8e\xad\x25\xa4\xb9\xbb\xa1\x90\xcc\x79\xa6\x1b\x75\x6c\xbe\x6d\x1c\x7d\x1a\xfc\x09\xed\xf7\xbf\x98\x16\x8d\x57\xee\xb4\x25\x78\x8b\xf1\x89\x58\xae\x62\xc5\x2e\x16\xb4\x25\xe9\x84\xb2\x2b\x73\xa9\x93\xab\xfa\x82\x15\x43\xcb\x06\xaf\x18\x0a\xcc\x15\x61\x01\xf4\xeb\xf8\xed\x21\x3c\xda\x3e\xd7\x71\xe5\x38\x10\x27\xd6\x5c\x47\x87\x8e\xf1\xd3\xe2\x82\xa6\xc2\x9d\x93\x0f\x79\x71\xa5\x7c\x54\x92\x1a\x29\xd6\x04\xc7\x71\x3e\xa9\x95\x8d\xba\x0c\xce\x89\x44\x3e\x22\x86\x0b\x4d\x68\xac\xd0\x1e\x4e\x6e\xc3\xc1\xd2\x40\xb3\x01\x9f\x4b\x2e\x79\x91\xb6\x70\xf2\x5d\x7e\xba\x80\x21\x01\xcc\x47\x9c\x14\x5e\xe5\x1b\x88\xb2\xa4\x98\xdf\xb2\x32\x81\xb5\x56\xfd\x13\xd2\x1b\xb8\x83\x96\x68\x42\x5c\x15\xd8\x6d\xd8\xe5\xf2\xfa\x64\xd4\x1b\xe3\xc1\x7a\x94\x8c\xc9\x0c\x0c\x8b\x99\x85\x21\x2a\x57\xfc\x9a\x21\x06\x89\x2a\xa7\x61\x88\x31\xd6\x72\xb7\xdf\xfe\xd4\xc2\x61\x32\xd4\xad\x45\xeb\x6c\xec\x19\xef\x53\xb6\xe5\x2c\xcc\x1a\xdc\xd3\x9f\x33\x12\x3b\xb8\x24\xf9\x20\x6e\xb1\xf2\x55\x31\x0f\x19\x11\xa3\x5b\x6c\x0c\x8f\x18\x79\xc8\xc2\xf0\x21\xab\x5e\x15\xf3\x88\x19\x93\xff\x23\x36\x7a\xca\xc6\x6d\x42\x9e\x33\x77\x53\xcc\x23\x06\x4f\x19\x3c\x67\x25\x03\xb5\xcd\x44\x9e\xb3\xcc\x96\x78\xc3\xcc\x4d\x7b\x8f\x18\xbc\x61\x70\x4b\xeb\x46\x52\x37\x95\x07\xb3\xbf\x6f\x7a\x12\x73\x6c\xb3\xdf\x37\x0d\xc4\x5c\x3f\x14\x8d\xdc\x67\xe0\x92\x2a\x0d\xdd\x67\x63\x97\x35\xb3\x97\xd1\x7c\xde\x02\xc9\xe3\x1d\xfc\x5b\x63\xdd\x9b\x57\xc7\x28\xb8\x18\xc6\xa4\x1f\x5e\x90\x83\x70\x42\x6e\x07\x10\xcc\x95\x5a\x45\xfb\xfb\x5a\xf5\xd4\xcc\x3d\xa1\xb1\x9c\xcc\x5f\xc4\x32\x5e\x26\x20\x2b\xc6\x86\x55\xac\xe6\x3c\x5e\x52\x12\x4c\xfe\x7a\xd0\x9b\x06\x40\x9b\x82\x15\xb9\x0d\x18\x1b\xd9\x24\xb8\x08\x30\xc8\x0e\xe1\x1d\xa5\x99\x6a\x9b\x76\x13\x21\x55\x9a\xe6\xad\xee\x9b\xaa\x4c\x97\x74\x77\xcc\x5e\xd4\x5c\xd2\x59\x9a\x06\xb7\x6d\x18\x82\x4b\xaa\x50\x30\x31\x77\x0a\xc6\xa4\x1f\x14\x1e\x0c\x6e\x44\x67\xa5\x0e\xa3\x40\xd7\x14\x60\x9c\xa6\x6d\x3a\xfa\xac\x67\xc2\x0a\x13\xf9\xe8\x75\xbb\x89\x6e\xf8\x1f\x2f\x02\xdc\x5d\x27\x54\xea\x11\x79\x39\xa3\xa9\xca\xc6\x66\x62\x72\xa1\xb5\x57\xd3\xb7\xd8\xf4\xed\x0b\xdf\xdb\xa3\xfd\xf8\xe6\x62\xb2\xd5\x5e\xb4\xbf\xff\x6f\xff\xfa\xdf\xfe\xef\x7f\xfb\x97\x7f\xfb\xd7\x00\x1b\x97\xcc\x34\x0d\xfe\xf2\xd7\x87\xbd\xbf\xde\xef\x37\x65\x8e\xff\xf2\xdf\xfe\x2f\x9d\x31\x4e\x8c\x30\xd4\x9f\x18\x48\x48\xdd\x48\x53\xf6\x2f\x81\xdb\x55\xb0\x75\x6b\x38\x7f\x65\xfe\x14\x6b\x9c\x24\xec\x92\xc3\x5b\xb6\xe3\xea\xc0\x27\x8c\xb4\xbf\xb2\xfa\x0d\x9d\x6c\x86\xe2\x30\xec\xb7\x09\xf9\xca\xd0\xe6\x22\xea\x67\xf0\x95\xa1\xb7\x2c\xbf\x55\x7e\xfb\xf6\xbd\x52\xe9\xb7\x4e\xe0\x0f\x2e\xf2\xcb\xe5\x6f\x57\x8c\xcf\x7d\x13\x4b\x12\x36\x17\xd1\x41\x86\x71\xf7\x62\xeb\xc6\xbf\x0c\xcc\x8d\x86\x92\xd8\x2b\x28\x51\x61\xb1\x19\xc9\x31\xf9\x01\x8c\xe5\x87\xce\x2e\xe7\xec\xe3\xa7\xc5\x92\x8b\xd5\x67\x99\xa8\xfc\xe0\x4d\xb0\x23\x88\x96\xb9\x79\xd0\xc0\xe7\x87\xb6\x19\x58\x06\x0a\x8f\xa4\x41\x92\xa6\xfa\xda\xe4\x44\x21\x9b\x8f\x62\xdc\xfd\x28\x18\x47\xe6\xa6\x0b\x5c\x13\x05\xfc\xd2\x96\x2e\xf8\x02\xdf\xda\x84\x06\x41\xfa\xc0\xc8\xa5\xea\xce\x60\x42\x92\xee\x6c\xc0\xef\x89\x41\x4e\x13\xd6\x30\x23\xd3\x92\x87\xad\xe8\x74\xc6\xd8\xb8\x3d\x9c\x28\x34\xcb\x6f\x5a\x67\x68\x86\x71\x64\x92\x60\x45\x16\xbe\xee\x39\xe9\x0d\x56\xf7\xe6\x03\xbc\x26\x8b\xd1\xbc\xd3\x19\x83\x16\xc0\x9c\x63\xfb\x0c\xd6\x38\x4d\x91\x1c\xad\xc7\x64\x36\x5a\x17\x8e\xbb\x32\x8b\xbe\x32\x78\xf7\x0d\xb3\x0f\xc4\x30\x71\x23\x5a\x37\x86\xe1\x9f\xb3\xc4\x84\xea\x8f\xec\x09\xd2\x64\x7b\xd8\x33\x92\x34\x5f\xfc\x07\x8b\xc2\x38\x35\x83\x15\x79\xc8\xd1\x04\x9b\x91\xb0\x19\x5a\x84\x21\x9a\x11\x49\xd1\x0c\x92\x7b\x07\xa5\xe2\x07\x79\xf1\x03\xec\xe3\x3e\xac\xd2\x74\x4d\xec\x99\x91\x30\x7c\xce\xd1\x0a\x1b\xb0\x5a\xeb\xcc\x1a\x51\x92\x28\xe4\x43\xc1\x61\x3c\xa0\xf7\xe6\x83\x79\xa7\x83\x63\xb2\x18\xce\xd0\x64\x34\x1f\xc3\x1c\x47\xe6\x37\x96\x48\xc2\x1c\x62\x77\x80\x59\xd7\xc2\x08\x12\x64\xe5\x1c\x36\x30\x36\x8e\x7e\xce\x36\xb4\x1e\xb4\xad\x96\x6f\xf6\xc3\xfd\x19\x01\x5f\xf5\x23\x8e\x04\xcc\x60\xe4\x18\x11\xcc\xc7\x5a\xa6\x8b\xfc\x6b\xd1\x94\x9f\x0d\xd7\x43\x32\x07\x99\xc1\x33\x46\xf6\x47\xff\xf4\xa1\xb7\xf7\x61\xdd\xeb\xfd\x70\x34\xde\x87\xf7\x3a\xa5\xfb\x61\x7d\xbb\xd7\x3b\xf8\xb0\x7e\xf4\xa8\x77\xa4\xff\xdf\xe9\x8f\xf7\x2f\xe1\x67\x46\x82\xd3\x2b\x2a\x67\x0b\x71\x1d\xb5\x8c\xf9\xa8\xc5\x29\x9d\x26\xad\x6b\x36\xa5\xb2\xc5\xec\xc1\xb4\xa4\xa5\x44\xcb\xbb\x96\xc1\x4b\x46\x9e\xc7\x6a\xde\x9d\x2d\x84\x90\xf0\x4b\x6e\xca\x9c\x49\xb1\x7c\xe0\x6c\x11\xf0\x6b\xa3\xc5\x44\x75\x0e\x0e\x3a\x3f\x7c\xff\x37\xa4\xee\x1e\xdc\xc1\x19\xa8\x78\x47\x54\x0b\x2b\x43\x28\x22\x87\x2f\x19\x52\xfb\x3f\xf4\x7a\x38\x52\xf7\xee\xf5\x41\x75\x88\x49\xa1\x78\xa0\xee\x7d\xf7\xfd\xf7\x03\xde\x21\xb7\xef\x60\x65\x53\x6f\x7f\x9f\x83\xe5\x25\x43\xbc\x73\xfb\xce\xdf\xd4\x3e\x52\x9d\xdb\x3f\x6a\x09\x89\xc6\xcd\x18\xab\x65\x14\x41\x90\xfa\x96\x83\x7b\xcf\x1c\xd4\xf6\x06\x9c\xbb\x7c\x50\x1c\xc4\x29\xd9\x5f\x64\xa7\x63\xe4\x26\x71\x8f\x18\x4b\x4a\x18\x8a\xbb\xc4\x18\x6d\xc2\x50\xde\xe5\x3e\xa0\xd1\x76\x19\x63\x80\x21\x04\xdd\xf9\xee\xfb\xfe\x41\xc8\xf0\xd0\xb9\xce\x23\xd4\xef\x1d\xdc\x0e\x05\xb6\x36\x19\xfb\xc6\x9c\x71\xc6\xec\xca\x9b\x6c\x02\x83\xdc\xdb\xc3\xf6\x08\x6b\x9e\xe6\x65\x22\x9a\x19\xb7\x79\xb7\xb0\x18\xe9\x1f\xfc\xe8\xb6\x63\x7e\x38\x30\x70\xa6\xa4\x37\xa0\x77\xf3\xe1\xd1\x4e\x07\x23\x49\xd4\x88\x8e\xf1\xdd\xfe\xc1\x8f\x61\xe8\xae\xe1\xff\x85\x69\x51\xd3\x6e\x34\x10\x6f\xd3\x83\x84\xac\x4d\x2d\xeb\x3c\x5f\xb0\x17\xe0\x41\x72\x57\xe4\x22\xde\x41\xff\xbb\x1f\xbe\xfb\xf1\xf6\x9d\xef\x7e\xf8\xa3\xf6\xee\x11\xa6\x41\x35\xb3\xeb\xd8\xb6\xb5\x20\x49\xa7\xaf\xc1\x3a\xdb\x63\xf7\x5e\x32\x84\x8a\xea\xf6\x62\xbc\xbf\xf0\xf2\xfd\xab\x98\x5f\x3a\x01\xff\x67\x86\x4d\x4b\x71\x87\xe8\x52\xf8\x6f\x0b\x60\x64\x06\x0d\x0d\x6b\x8e\x95\x0f\x96\x85\x61\xa7\x13\xdf\x2b\xea\x6f\xae\x99\xcd\x90\x24\x84\x15\x48\xb2\x22\x31\xcc\xc9\xed\x3b\x83\xc1\xdc\xa0\xa3\x19\xf6\x94\xcc\xef\x92\xc9\xb0\x1f\xcd\xef\x91\x49\xe7\xe0\xce\xf0\xe0\x4e\x34\xdf\x33\xfa\xd3\xea\xee\x14\xdb\xd3\xc0\x3a\xe3\x15\x59\xed\x4d\xe1\x86\xdc\xbe\xb3\x37\x1d\x14\xa0\xfe\x95\xa1\x69\xe7\xea\xaf\x37\x18\x6b\x9a\xfd\x92\xa1\xab\xfd\x1b\x9c\x55\xbe\xaf\xb0\xb1\x37\xa8\x18\xc5\xb0\x80\x84\x90\x35\x36\x33\xdb\xe9\x24\x59\xd6\xe9\xc4\xd0\xe9\xb0\x2c\x17\xf8\x73\x36\x04\xb2\x61\x25\xd8\xb3\x57\x83\xc6\x93\x59\x2d\xba\xa5\x42\x95\x63\xa2\x6c\x1f\xcb\xca\x23\xaf\xd0\xfc\x28\x5a\x06\x3c\xae\x78\xaf\x0a\xfb\xfa\x84\xc6\x53\x2a\x93\x00\x03\x8b\xeb\x22\x69\x1c\x7b\x6b\xe2\x24\xae\x59\x13\x6b\x82\x55\x80\x61\xfd\x07\x59\x4a\x41\x20\x92\x98\xec\x7f\xe8\xec\x5f\xc2\x2c\xb6\xf4\x1f\x7d\x87\x61\x11\x37\x1a\x79\xe3\x91\xda\xeb\x8f\xd3\x14\xb9\xa7\xfc\xb4\x3f\x42\xc3\xe8\xaf\xa3\x0f\x1f\xa6\xf1\xde\x6c\xbc\x39\xc8\xf0\x26\xe8\xa8\x4e\x90\xe1\x00\x82\x4b\x16\xe8\x11\xaf\xe2\x1d\x1e\xc8\xad\x29\xd5\x7a\xd3\x9b\x57\x4f\x1f\x88\xe5\x4a\x70\xe3\x0e\x57\x3a\xe4\x97\x9f\x73\xcc\x60\xde\x34\x57\xaa\x88\x00\x10\x43\xd0\xd2\xa2\x32\xf9\x6e\xf0\xed\xfa\x69\x49\x23\xd0\x88\x3b\x90\x03\x4c\x49\xbe\xf1\x84\x16\x31\xd2\x44\x04\x56\x05\x6f\xa1\x59\x06\xd3\x98\xec\x8f\xda\xff\x80\xf0\x3f\x8f\xd3\xbf\x1e\xf4\xf6\x2f\xe1\x2a\x26\x9b\xa0\x1d\x44\xc1\x5f\x0f\xfa\x01\x04\xff\x60\x9e\x7e\x08\x20\x40\xe6\xe9\xc7\x00\x02\x6c\x9e\x7e\x0a\x20\xf8\x67\xfd\xf4\xc3\x51\x00\xc1\x5f\x0f\x7a\x41\x14\x74\x82\x0c\x6e\x1a\x21\x7d\x15\xdb\x2b\xfc\x1a\x3f\x52\xde\x00\xaf\xbc\xeb\xd3\x18\x6e\x62\x9c\xc1\x65\xbc\xed\x5b\x4e\x73\x59\xc9\x08\x27\x24\xbf\x24\x3c\xd4\x28\xa7\xc5\x86\xbb\xc2\x13\x04\x4d\x86\x84\xbd\xa0\xdd\x25\x99\xcb\x78\xa4\x2f\x42\xcc\x9e\xa6\x59\x80\x26\x94\xda\x3c\x46\xbc\x6b\x2f\xed\xc0\xd8\xd9\xa3\x4c\x9a\x5d\x6a\x24\xb0\x01\x4c\xe1\x22\xde\x0e\x88\xe8\x22\x63\x78\xee\xdd\x83\xcb\x18\x95\x3f\xd8\x9b\xc5\x1a\x06\xa4\xee\x6e\xaf\xc6\xe0\x44\xa8\x16\xe5\x62\x7d\x39\x2f\x0e\x50\xeb\x95\x7e\x16\x93\x9f\xb7\xa2\xff\xc5\x71\xc5\xae\xbe\x6b\x9d\x80\x5f\x89\x91\x8c\xd1\x24\xd6\x00\x77\x7d\xc3\xe5\x80\x27\x41\x51\x60\x5b\x79\x5c\xc7\xa5\xd8\x27\x26\xe0\x89\x24\xaa\xeb\x2b\x36\x52\x11\xb2\x1b\xe9\xd6\x1c\x91\x0b\x35\xce\x0f\xcf\xa5\x13\x1f\xdb\x84\xd0\x21\xef\x6a\xd0\x17\x01\x4d\x4c\x92\x8f\x5e\x62\xc2\x14\xba\xd7\xb1\x8b\x80\x78\x14\x97\x0d\xa0\xde\xe9\xec\x28\x86\x6d\x22\x32\x70\x3b\x05\x5b\x31\x2a\xb6\x8e\xb7\xf5\x4a\xc2\x65\x2f\x17\x2e\x67\x76\xc3\x73\x41\x46\x26\xb2\x71\x1c\xa3\xd9\x0e\x28\x07\x79\xbc\x9c\x05\xd8\x90\x98\x6f\x5e\x1d\x97\x75\xa1\xcc\x25\x97\x0b\x45\x17\x71\x86\x21\x17\x7f\x13\xcc\x66\x68\x89\x12\x8c\x1b\x6d\x72\x48\x69\x9a\x9e\x60\x2f\xd6\x1a\x8f\x6d\x43\x8e\x13\x27\x90\x1a\x41\xd4\x7b\x57\xe4\x87\x55\x0d\x4b\x34\x11\x29\x90\x20\x32\x46\x87\xc8\x01\x14\xbb\x62\xb8\x2a\xba\xa6\x29\x9a\xd4\xc5\xd9\x34\x6d\xe7\x29\xd6\xee\xb4\x85\xb2\x47\x5f\x56\x74\xa2\xe8\xb4\x95\xd0\xcf\x6b\xca\x27\xb4\x75\xcd\xd4\xbc\x65\xe1\xdb\x3a\x08\xf0\x60\x51\x5a\x6a\xb1\xed\x42\x27\x08\xdc\x3a\x9b\xe4\x09\x99\x13\x7c\x8c\x10\xd2\x62\xbc\x95\xe0\x6b\x94\xc0\x1a\x87\x61\xb9\x86\xb5\x2b\x98\x8c\xd6\x63\x53\xca\x0a\xeb\x97\x31\x5a\x6c\xc7\xa0\x4d\x86\xc1\x50\xe3\x56\xe2\xb7\xce\x7a\x78\xe8\xe3\x73\xf4\x71\x94\x44\x49\xc7\x70\xd2\xd3\x98\x1c\xc5\x25\x13\xd0\x03\x8e\x4e\x63\xd8\xd8\x43\x72\x35\x0f\xbf\xeb\x18\x6d\xa9\x39\x07\xfe\x2e\x9c\x49\xec\xbd\x84\x72\xca\x50\x74\x5d\x15\xc3\xb6\x03\x06\x7f\xed\xa1\x56\xe7\x71\x06\xd6\x68\x52\x31\x20\x37\xb5\xd6\xc7\x83\x42\xae\xf5\x2d\x9a\xcd\x30\x4f\x74\x38\x31\x6d\x09\xd2\x1b\x88\xbb\x32\xa7\x8b\x72\x24\x4c\xa0\x3d\x42\x08\x1f\x4a\x7f\xdb\x90\x80\x3e\x8e\x44\xa7\x33\xa0\xd5\xde\x54\xb4\xfa\xbf\xa7\x2b\x79\x37\xa4\xed\x86\x56\x04\xf8\xdd\xfc\x9a\x0b\x6e\xcf\x71\xd3\x11\xf7\x9d\xc9\x03\xb8\x98\xb4\x0a\x09\xb1\x9b\x1b\x97\x54\x1d\xd6\xbc\x9b\xfe\x03\xbd\x31\x8a\x82\x86\x4c\xde\x25\xd1\xe9\x60\x5a\x00\x47\xe6\x32\xb0\x49\xb4\xab\xa6\x30\x4d\xc3\x3c\x4e\xfe\x53\x20\xe3\xc0\xd2\xe9\xd4\x01\xd3\xee\xf9\x93\x1c\xfd\x0c\x92\xca\xbc\xec\x42\xc9\x52\xfb\x5a\x39\xca\xd1\x44\x10\x9e\xf7\x82\x91\x76\x1f\x62\xdb\x95\x09\x31\xab\x72\x4d\x7a\x83\x75\xc1\x4a\xd7\x56\xa8\x17\xa3\xf5\x18\xbb\x3e\xc5\x61\x88\xd8\x50\x78\xec\x59\xef\xed\x69\xfc\x41\x8c\xb4\x7b\xe0\xe9\xfc\x04\xe3\x01\x4b\x53\x51\x5e\xf9\x7e\xc1\x67\x18\x78\x15\xd1\x12\x21\x2b\xf6\xa3\x12\xf5\xde\xd5\x6f\x7f\xc7\x89\x1d\xa4\x28\xd8\xaf\x24\xbd\x81\xbc\x5b\x6c\xd2\x6b\xdd\xc0\x2a\xa1\x6c\x24\xc7\x4e\x75\x90\x46\x67\xd0\x1a\xde\x88\x1a\x50\xdf\x33\x31\x57\xf1\x26\x1f\x15\x85\x1e\x28\x6c\x63\xfd\x64\xd4\xa2\x84\xf0\xb7\x79\x65\xb5\xfe\x3b\x63\xd3\xae\x2b\xf7\xb7\x67\xdf\x9c\x17\x56\xb0\xc5\x8d\x9a\x2d\x25\xb7\xf1\xd6\x42\xe6\x08\x51\x22\xad\x99\xc8\x59\x14\x6c\x68\x5f\x17\x32\xba\x7a\x85\x7e\xe5\x00\xdf\x99\x93\x1a\x5c\xac\xaf\x0c\x7c\x58\xb8\x6f\xe7\xf6\xe1\xc0\xb2\x22\x40\xdc\xb7\x0b\x14\xc1\xe3\xb2\x9a\xb9\x30\x33\x9b\x6c\xa7\x31\xb0\x18\x4e\xe3\x42\x18\xb1\x89\xa5\x98\x27\x4d\xa7\x88\x14\x34\xae\xa6\xd1\x78\x6b\x2d\x29\x62\x97\x12\x48\x3b\x6f\xcb\x18\xd9\x59\xee\x04\x24\xe8\x98\x37\xc7\x0e\x0b\x71\xc5\x0a\x7c\xa1\xb9\xcd\x76\xab\xd3\x8a\xa2\x46\x69\xa3\xe6\x02\xeb\xfd\x6a\x1f\xb3\x0c\x36\xb5\xcc\xd1\x91\xe6\xfc\x8f\x59\xe3\x11\x70\x1e\x37\x26\x8b\x38\x4d\xff\xfd\x7e\xbc\x25\x83\x1e\x29\x6d\x4d\x6d\xa3\x5e\x18\xa2\x25\x2a\x05\x80\x1a\x59\x1f\x29\xcd\x55\x2e\xc4\xf4\x66\x7b\xdc\x84\x90\x17\x1c\x49\x9d\xc9\x04\x76\x9b\x5b\x0d\xd0\x78\x50\x8b\x18\xe5\x09\x76\xc3\x4b\xc4\xc6\xa0\x8d\x02\x13\xd6\x99\xab\x3d\x1b\x77\x33\x4d\xb9\xb9\xd7\xaa\x9a\x0c\x41\xbc\xd2\xeb\xd0\x1c\xcf\xde\xff\xb2\x77\x7d\x7d\xbd\x37\x13\x72\xb9\xb7\x96\x0b\xab\x42\x4c\x07\x9a\xa1\x27\x54\x91\x37\xaf\x1f\xed\xfd\x68\xf6\x2e\xee\x2b\x44\x61\xa3\x3b\x1b\xcd\x50\x0f\x8a\x5d\x35\x70\x3d\x31\xc9\xc6\x21\x13\x83\x5b\xcc\x14\x63\xe0\x71\xd9\x63\x41\x60\xef\x85\x79\x1e\xc3\xc7\x98\x34\x4c\xa1\x66\x47\xf6\xda\x9b\x49\x9c\xc1\x97\xd8\xec\xd2\x1a\x33\x10\x1c\xc6\x44\x74\xdf\xbc\x3a\x86\x4f\x31\xf9\x18\x77\x6b\x65\xe1\x85\x49\xf5\xc5\xe1\x38\x57\x8c\x5f\x35\x68\xbd\x01\x86\x07\x71\xd9\x48\xf7\xda\xbd\xad\xc4\x35\x9c\x68\x7d\xee\x70\xef\xd7\x78\xef\xeb\x78\x1f\x9e\xea\xb7\x0f\xd3\xce\x5e\x37\x4f\x7a\xa3\x95\xe3\xe9\x3e\x3c\x8f\xc9\xfe\x3f\xa1\xde\x97\xb4\xf7\x0e\xef\xc3\x2d\xfd\x36\xea\xed\xfd\x30\xee\xdc\xda\x87\x87\xfa\xed\xc3\x54\x3f\x3e\x32\x1f\x3e\x4c\x0f\xf7\x1e\x69\x45\x58\x27\xdd\x37\x95\xae\x7b\xbd\x5e\xcf\xfc\xff\xc9\xfc\x3f\x34\xff\x1f\xb6\xfe\xf2\xd7\xfd\x68\xf8\x8f\xa3\x0f\x1f\xc6\xe3\x7d\xf8\xfc\xed\xac\xa5\x9c\x8f\x6d\x3b\x26\xab\xb1\x6e\xf6\x1f\xb5\xc6\x9d\x74\x2b\xe5\xd6\xfe\x25\x7c\xcd\x6b\xad\xd4\x37\xde\xbf\x84\xb7\x75\x8d\x2a\xd7\x0c\x8d\xe9\x63\x14\x94\x02\x58\xf7\xec\x39\xd7\x60\x1c\xb4\x1b\xa3\x5a\x3b\x1e\x1b\x3c\xe5\x57\xf1\x82\x4d\x5b\x73\x91\xa8\xc0\xec\x9b\x22\x49\xde\x69\x4c\x76\x02\xa3\x09\xdb\xbf\x23\xbb\x32\x7b\x2f\x44\xe6\xf1\xe7\xe8\xc4\x44\x06\xd1\x4f\xdf\xb2\x57\xaa\xae\x12\xc7\xe2\x9a\xca\x07\x71\x42\x51\xa1\x0b\xbf\x67\x10\x74\x03\x5c\xba\xdf\xb7\x64\x73\x13\x65\xd3\x97\xe6\xce\x74\x0c\x4e\x60\x79\xe6\x62\xa5\x48\x3c\x34\x5b\x52\x41\x87\xc6\x48\xe2\xa8\x08\xf8\xe4\xd5\xda\x6e\x80\x33\x44\x31\xdc\x8f\x6d\x09\xba\x1b\x10\x2e\x04\x17\x92\xe4\x49\xac\xf3\xfd\x09\x10\xe8\x81\x7f\xfe\x83\x9a\xad\x3e\x63\xc4\xa0\x77\x0c\x51\xcf\xe6\x78\x59\x2a\x93\x1d\xf2\x6b\x6c\x3c\x03\xe1\x7d\x8c\x8b\x36\x32\x78\xb2\xc3\x0e\x5c\x28\x7c\x44\x95\xc1\xc7\x66\x68\x9d\x9b\x03\x82\x80\x90\xf5\x68\xfd\xff\x71\xf7\xe6\xed\x6d\xdb\xca\xe2\xf0\xff\xef\xa7\x90\xd0\x84\x25\x2a\x58\x96\x9c\xa5\x29\x15\x44\xc7\x71\x9c\x36\x6d\xe2\xa4\x71\xd2\xa6\x55\x74\x7c\x69\x0a\xb2\x19\xcb\xa4\x02\x80\x5e\x2a\xf1\xbb\xbf\x0f\x06\x0b\x41\x8a\x76\xd2\x7b\x96\xe7\x3e\xbf\x93\x53\x99\x04\x81\xc1\x36\x18\x0c\x06\xb3\x54\x31\x17\x82\xa0\xe8\x2f\xf3\x65\x88\x49\xc8\xa8\x4d\xc7\x4f\xee\x3b\x97\x50\xa6\xb5\xd5\x46\x03\x7c\x2c\x20\x16\x02\x6b\x9e\x62\x92\x4d\x2b\xdf\xfe\xe0\x29\x89\x0e\x07\x24\xf7\x28\x2c\x1a\x20\x4a\xf3\x0a\x2f\x15\x27\x45\x5f\x99\x51\xca\xf1\x78\xf8\x30\x7a\x44\x72\xc7\xdc\x3c\xa2\x34\x1d\x0f\xa3\x1d\x8c\xf5\x4d\x7a\x8e\x63\x35\xfd\x66\x74\xbb\xe1\x70\xa0\x32\x3c\x8b\x23\xc8\x78\x27\x8e\x9e\xc7\xd8\xc2\xaa\x1a\x12\x53\xe7\x41\x30\x27\x29\x2e\xb9\x35\xe6\x01\x87\x47\x7e\x67\xd4\x51\x97\xf2\x49\xa6\xba\x48\xd9\xd6\x50\xdf\x03\x3e\xa1\xef\xe2\x70\xe7\xc1\x43\xf2\x60\xcb\x4d\xa4\x66\xcb\x2d\xaa\xc7\x4f\x76\x1e\x3c\xf0\xbf\xc0\x58\x25\x94\x9b\x11\xd5\x75\x70\x9f\xff\x4f\x7a\x50\xd1\x77\x06\xf4\xbd\xad\xcc\xe1\x67\x52\x92\x0f\x5f\x9e\xda\xc9\x80\xd4\xfe\x4d\x8d\xde\x31\xb8\x61\x5f\xd0\x01\x59\xb6\xb9\x2f\xb2\x43\xbf\xc0\xe0\x3f\x11\x45\x60\x62\x6f\xe8\x43\xa4\xf6\x5c\x9b\xc3\x91\x85\xd1\xa2\x47\x77\xc8\x9c\xf6\x8c\x8f\xc7\xd1\x32\xc4\xfa\x70\xfd\x48\x1d\xdd\x4d\x26\x5b\x1e\x80\xe9\x85\xaa\x39\xd1\xfb\x41\xf0\xdc\x4c\xb0\xfa\x36\xc2\x8c\x0e\x1f\x7e\xc7\x7a\x6e\x4e\xd4\x00\x0d\x1f\x62\xb2\xe8\xf5\x08\xef\xf5\x00\x52\xdf\x6b\xd6\xa0\x3a\x05\xc0\xd5\xd8\x16\xe5\x44\x3c\x79\x68\x93\xec\x1c\xba\x56\xe5\x7a\x08\xb2\x27\x03\x63\xf7\x6f\xa1\x05\x41\xf6\xf8\xbe\xd7\xab\x5e\xa9\x3e\xbf\xf7\x1a\xe7\xc3\x1c\xbd\xaf\xb5\x7a\x05\xe8\x5c\x6f\xb4\xf3\xbc\x4e\x73\x9c\xd3\xd4\x21\xe6\x40\x25\x18\x50\x39\x1d\x0e\xbe\xcb\x7b\xa0\x1b\x91\x7b\x68\x02\xf5\x83\x96\xc8\xce\x83\x87\xdf\xa9\x87\x5e\x4e\x76\xba\xb4\xd7\xcb\x82\xe0\x7e\x97\x66\xeb\xb5\xd0\x2d\x54\x2f\xb6\x90\x66\xc7\x9b\x13\xa7\x46\xae\xab\x5e\x74\x2e\x87\x96\x55\xd2\xa8\x98\x88\x5e\x6f\x4a\x99\x23\x4d\x46\x91\x65\xee\x35\xc7\xcc\x71\xe9\x7f\xd5\x4e\x3d\xc5\xd6\x9c\x08\xfa\xfd\x68\xd0\xa5\x22\x08\xe2\x27\x83\x11\x4e\xa8\x6a\x33\x29\x26\x62\x6b\x6b\x4a\x8b\xc9\xbc\x17\x6f\x0d\xd5\xfb\xbc\xb7\xb5\x15\x4f\x69\x32\xb2\xad\x78\xd4\xad\xb0\xc4\xa0\x61\x51\x92\x5f\x6e\xc4\x70\x40\x80\xcc\xfa\x60\xb5\x37\xad\x16\xa9\xf4\x2d\x96\xc2\x2b\x38\xda\x78\xd1\x86\xef\xee\x3c\x78\x88\x89\xa4\x7b\x71\x28\xb7\xd5\x73\x65\xa8\x54\xd1\xfb\x16\x07\x66\x15\x6c\x20\xc4\xed\x97\x67\x80\x52\x9c\x0e\x8d\xbe\x93\x22\xd4\x46\xe8\xfa\x68\x94\xf6\x7a\x78\xa0\x35\xec\xa7\xe3\x30\x7f\xc2\xb5\x51\x2c\xe1\x34\xc7\x5e\x7e\x1c\xd9\x6d\x44\x87\x46\x4f\x31\xe9\xf5\xf2\xca\x2e\xa6\x5e\x0e\x2e\xbb\x4c\x57\x1f\x41\x57\xf3\x20\x00\xdf\x90\x70\x5f\x1f\xe6\x41\x10\xe6\x10\x5e\x3d\x53\x87\xb3\x71\xc8\x7a\x94\x8f\x51\xa4\xfe\x45\x88\xe4\xb4\xab\x2a\x64\x3d\xc8\xef\x5c\x32\x86\x6a\xa1\xf1\xc7\xdf\x1b\x43\x96\x08\x55\x26\x95\x68\x82\x7a\x0c\xbc\x31\x56\xce\x09\xff\x88\xe9\xaa\x24\x3f\xc7\xf4\x27\xd0\x01\xf8\x23\x26\x2b\xd4\x41\xd1\x90\x7c\x8b\xbe\x8d\x86\x04\x3d\x56\xcf\xe8\x09\xfc\xfe\x0f\x8a\x86\x25\x26\xbf\xda\xcc\x3f\xab\xcc\xdf\xc0\xa7\x31\xfc\xae\xe0\xb7\xd4\xd9\x7e\xb7\xd9\x7e\x55\xd9\xb6\xe1\x53\x04\xbf\x23\xf8\xa5\xf0\xfb\x0f\xf8\x9d\xc0\xef\xc7\x8f\xf0\x67\x0a\xbf\xff\x84\xdf\xb5\x86\xf5\x67\x2b\x2b\x44\xaf\xe2\x50\x92\x41\x75\xb6\x79\x72\x6f\x27\x08\xf8\xe3\xe1\xce\xf7\xe0\x6d\x94\x11\x89\xc7\x32\x6a\x15\xc8\x97\x44\x26\x74\x35\x97\xcb\x68\x67\x48\xc0\xe5\x14\x4c\x22\xa8\x9b\x3c\x1a\x10\xad\x42\x73\xff\xfe\x3d\x72\x29\xd4\xfb\xa5\x80\xb7\x92\xf8\x2a\xaa\x95\xcc\xff\x32\x94\x09\x91\x7d\x91\x9c\xb2\x73\x86\x4b\xc2\xdb\x72\x21\xa0\xbd\x9e\x3a\x0e\xbc\x2f\x63\x21\x2e\x73\x3e\x2b\x49\xd6\x56\xa8\x2b\x8d\x32\x8d\xec\x27\x71\x96\xe5\xf2\x29\xdb\x7d\x1a\x0b\x75\x2c\x37\xbe\xb2\x14\x96\x9b\x9a\x4b\x92\x27\x6d\x03\xe5\x54\x90\xa9\xbb\x19\x0e\x82\x03\x43\xfc\xa4\xc7\x43\x06\x81\x26\x3b\x21\xaf\xed\x12\xeb\x75\x97\x05\x01\x5a\x23\x45\xa7\x4b\x92\x26\x37\x7a\xe1\xe8\x48\x8f\x15\xc8\x93\xb0\x0a\x07\xb5\x03\xd0\xbd\x16\xac\xd7\x68\x1b\x69\x0f\xc9\xae\x2e\x70\x78\xac\xf0\x80\x82\x33\x20\x2d\xd8\x54\x0f\xdf\xc0\x03\x2e\x49\xdc\x52\x37\xd5\x6a\x5b\x20\x1d\x34\xfb\x6f\x97\x6f\x8e\x4e\x10\x0c\xb5\x8c\x23\x09\xd9\x64\x00\xba\x0a\xeb\x35\xd3\xfb\x77\x49\x92\xd6\x29\xeb\x23\xed\x6d\x13\xdd\xdd\xd1\xba\xc5\x75\x56\xb6\x24\x45\xa2\xd6\x8f\x80\xdf\x39\xfc\x2e\xe0\x77\x09\xbf\xa7\xf0\x3b\x83\xdf\x0b\xf8\xbd\x86\xdf\x73\xf8\x3d\x81\xdf\x63\xf8\xbd\x84\xdf\x43\xf8\xdd\x87\xdf\xd7\xf0\x7b\x04\xbf\x9f\xe0\xf7\x0a\x7e\x77\xe1\xf7\x0c\x7e\xdf\x24\x37\xe9\x8a\x7b\x17\x02\x7c\xbd\x2e\x12\x32\xa7\x03\xb2\x50\xf4\xcf\x44\x1e\xe8\x0e\xc9\x8c\x76\x87\x9a\xe5\x83\xc0\xab\x7a\x94\x54\x96\x0a\x4b\xf5\x9b\xc5\x51\xfd\x06\xdc\x29\xac\x16\x09\x9e\xe2\xdc\x73\x2c\x4f\x29\x44\x46\xff\x5c\x30\x7e\x6d\x93\xe7\x3c\x3e\x51\xa7\x6d\xfb\xde\x44\x63\xd5\x12\xff\x72\xef\xc7\x58\xbb\x03\xf7\xd3\xfe\x82\x34\x92\x6b\x1e\x7a\x34\x7f\x4c\xab\x8b\x30\xeb\xfd\x3a\xa5\xf9\x64\x3e\x25\xc2\xb8\xbd\x2e\x92\x08\xc2\x2d\xad\xd7\x5d\x8b\xe9\xa9\xde\x4b\x79\x93\x53\xd7\x1d\x47\x23\x41\xe7\xc9\x48\x1d\xd2\xd3\xac\x60\xe5\xa2\x47\xd3\xfa\x6c\x13\x41\x45\xe2\xfb\xce\x16\x50\x47\x1a\x04\xe1\x0b\x57\xc5\x7a\x8d\x7a\x88\xd2\x74\xbd\x46\x5b\xe6\xaf\x42\xa2\x14\xe3\x4d\x80\x95\x87\x51\xc5\x57\xa5\xb7\xb7\x0e\x26\x4f\x35\x51\x4d\x65\xd5\x4c\x55\x44\xd1\x7a\x75\x14\xeb\x52\x20\x44\x0b\x5c\x21\xff\x22\x08\x42\x9e\x80\x63\x1c\x1b\x41\x04\x26\x0d\xb7\xad\x0f\x43\x6c\xb0\xc7\x8b\x39\xb4\x58\x10\x27\xc1\xbe\xc8\xd3\x99\xae\x30\x08\x64\x32\xb1\x59\xa6\x16\x36\x44\x13\x77\x98\x81\xb1\x6e\x7a\xb3\xba\xb1\xa0\x87\x49\x64\xc0\x80\xe5\x95\xa9\xc9\xcf\xb1\x30\x39\xc6\x82\x5e\x24\x11\x10\x8c\x7c\x32\xef\x0d\xa7\xe3\x50\xd0\x65\x42\xe6\xbd\x1e\x8e\xc2\x36\xa4\x1a\x18\x8c\x34\x7a\x1e\x48\xcd\xde\x55\x82\x4b\x6f\xfa\xe6\x1a\x45\xb2\xf5\x3a\xdb\x00\x10\x04\xe8\x1b\x98\x93\x1b\x66\x03\xb4\x94\x5b\x0b\x81\xba\x85\x1b\x36\xdb\x2b\xbb\x3e\x32\xdd\x28\x23\xd9\xad\xd6\x8a\xfe\xeb\x2f\x17\x58\x6b\x6d\xfd\x12\xf4\xcc\x60\x61\x29\xa8\x1d\x55\x5b\xcf\xf8\x30\x89\x4e\x2b\x2c\xd6\x1d\x5d\x40\x47\x21\xe6\x55\x0a\x64\xb7\x6b\x46\x11\xaf\x04\xf5\x72\x97\x82\x5e\xc3\x98\xfa\x48\xbe\xb4\x85\xa1\x63\x82\x9e\x57\x95\x7f\x6a\x56\x74\x0a\x79\x37\x3b\x9f\x52\x7a\x14\x63\x8f\xac\x64\xee\xd1\x27\x2f\x99\x7b\x74\x64\x06\xfe\x38\x42\x03\x7f\xbe\x6e\x28\x1d\x73\xaa\x5b\x6e\xb7\x95\x34\x08\xb4\xd4\x42\xd0\x59\xc5\xc0\xc2\x46\x93\xfe\x97\x1a\x08\xcb\x78\x37\xa9\x16\xbf\x46\xb4\xd5\x7f\xba\x76\xbd\x1a\xe0\xb4\x5a\x9b\xba\xf2\xbf\x3a\x2f\x0d\x14\x57\xc8\xec\xaf\xc9\x99\x5e\x93\x4c\x93\x2c\x8d\xb2\x41\xa0\xe6\xce\x12\x48\x9d\xf6\xef\x1b\xae\xfa\x58\x28\xfc\xd6\xa7\x2b\xb5\x16\xfc\x75\x70\x01\x2d\x83\x15\x52\x5b\x49\x0b\xcb\xbc\xcc\x7b\x43\x8c\xdd\x7a\x68\xac\xa2\x6b\x6f\x09\x7a\xfd\x81\xe5\xe4\x2a\xf7\xf2\x9f\xeb\xfc\xff\xd0\xab\x6e\x19\x04\xe1\x82\xa2\xbb\xf7\x07\xa8\xb7\xc0\x04\x42\xe6\xc4\x6a\x33\x5c\x54\x37\x60\x17\x74\x30\xba\x78\x1c\xdb\x7d\xf1\xa2\xd7\xd3\xac\xc0\x35\x8d\x27\x17\x53\x77\x7a\xbf\x5e\xaf\x67\xfa\xc3\x39\xfd\x33\x0e\xaf\xc9\xef\x31\x1e\xcd\xc6\xd5\xb8\xf5\xe8\x79\x54\x8d\x6d\x8f\x9e\xeb\xe1\x98\xd1\xee\xa0\x54\x84\xdc\x9d\x3d\x61\x51\x1b\x2e\x2e\x35\xcc\x5a\x6a\x78\xb5\xcd\xf5\xa6\xa6\x6e\xa9\x85\x52\x8b\x26\x51\x8d\x0b\x79\x9a\xf3\x54\x5e\xa3\xd1\x7c\x4b\x77\xcb\x74\xa3\x37\x24\x66\xdf\x3b\x31\xd3\xa2\x76\x51\x7f\x60\x4f\x12\x1d\xbf\xe2\x18\x06\x0c\x62\xb2\xd4\xf7\x19\x35\xc8\xaf\x93\xda\x86\xa9\xb7\xdb\xf5\xfa\xd4\x9c\xf9\xff\x6e\x3f\xcc\xa6\xd5\xda\x17\x27\x50\xe4\x26\xc3\x4d\x1b\xb0\xb7\xc9\x26\xf4\x37\x75\x92\x59\x38\xd1\x13\xa8\xde\x99\x8e\x1f\x25\x6e\xe7\xad\x3a\x01\xd2\xdf\x74\x7c\x4a\xbb\x83\x08\x4d\x75\xfb\xc2\x53\x38\x2c\xaa\x01\x72\x32\x80\xdb\x9b\x78\x6b\xbd\x97\x09\xe1\x94\x1e\x27\x56\xe4\xe0\x8d\xf9\xa5\x5e\xa4\xef\xeb\x7c\xd5\xdf\x1a\xc7\xf5\x9a\x1b\xc1\x62\x97\x2e\x34\x3e\x9e\x54\xb2\x97\x05\x19\x0e\x40\x9a\x79\xf2\xe4\xe1\x83\x07\xf7\x1e\x34\x7b\xa0\x06\x10\x8d\xcc\x3a\x36\xb3\x71\xa2\xd8\x73\x8f\x1b\xd1\xa6\x35\x27\x80\x3f\xa5\xc7\x58\x8d\xd4\x90\x56\x23\xd9\x06\xb9\x6c\x22\xd9\x61\x7d\x5f\xd3\x28\x46\x1a\x3b\x0b\x16\x74\xbf\xa2\xea\x8a\xad\xd0\xf9\xba\x6e\x1f\x54\xa8\xf8\xa9\x8e\x8a\x76\x67\x6c\xd0\xa7\xbf\xb3\xbf\xd9\xbd\xeb\xeb\x41\xdc\xb4\x03\xa5\x49\x68\xe5\xb2\xf3\xca\x16\x00\xc3\xe9\xe0\xcb\xd0\x63\x58\x1f\x1b\x7b\xcb\xdf\xee\x59\xdb\x0e\xe1\x63\xdf\xbe\xc7\x90\x54\x83\xaf\x57\xb9\xe6\x4c\xb2\x8a\x0a\x64\x15\x73\x7b\x43\xef\x82\x20\xcc\x93\x50\x37\xc9\x1c\x0b\xc7\x3e\xeb\xe8\xbe\xe0\xa8\xd6\x99\x46\x4f\x75\xdb\x5e\xeb\x13\x41\x63\x25\xe8\x26\x36\x97\x84\x96\x5d\xea\x03\xe9\x42\x31\x24\x9f\x3c\x86\x04\xd6\x2d\xe8\xd0\xe9\x3a\x11\x22\x35\x04\x76\x2b\xbc\x7d\x0d\xa3\x45\x9e\xc4\x0b\x58\xe8\x60\x6d\x94\x0b\xcd\x95\x1b\x58\xb8\x02\xe6\xa8\x4c\x59\x3b\xf9\xf8\xd8\x7f\x04\x9d\xaa\xc8\x9f\x6a\x29\x69\x6e\x65\xae\xb4\xed\x02\x87\xfe\xaa\x4f\xe6\xe5\x1b\xb7\x85\xa7\x5d\x7a\x14\x07\x81\x0f\x08\x37\x00\x6c\xe2\xc0\xc8\xa4\xd7\x51\xd8\x6b\xe6\xa7\x5b\xc6\xde\x51\x1d\x35\xde\x61\x63\x1e\x34\x21\xea\xc3\x59\x3f\x2c\xd4\xff\x17\xb8\x7e\x50\xc3\x5a\x02\x00\x39\x0a\x75\xa2\x33\xe2\x80\x42\xa7\xdb\xb7\x71\x08\x6b\xa0\x49\x18\x5c\xe5\x8d\x13\x09\x8e\x12\x35\xf3\xe3\xaf\xcc\x1e\x85\xad\x27\x36\xc8\x63\x85\x3a\x80\x4a\x6e\xa6\xeb\x53\xbe\xa8\x58\x95\x01\xee\xa1\x08\xe1\xda\x11\x69\x81\x31\x69\x3d\xa8\xc1\x0d\x8e\x1e\xd4\xc6\xb8\x81\x10\xbd\xd6\x02\xb8\x01\xd2\x82\x12\xb3\x6a\x46\xd8\x64\x30\xca\xa7\x23\x0d\x64\x1c\x36\x66\x12\x47\x1a\x2a\xb4\xb9\x39\xf7\xd8\xed\xfd\x7f\xc6\x61\x4a\x7e\x8d\xb1\x3f\xf1\x57\x49\xf4\x05\xa0\xe3\x36\x98\x91\x45\x43\xd7\x56\x03\xfe\x8f\x18\xd7\xe0\xef\x26\x91\xc3\xdf\xb1\x2d\x84\xbe\xf5\xe6\x6a\x6c\xea\xed\x51\xd0\x2f\x8e\xaa\x57\x5d\x3d\xba\xbb\x73\x0f\x45\x0e\x78\xd4\xd6\x1c\xbf\xc6\xb3\xc4\x6b\x9c\xcd\x69\x5a\xf7\x73\x8c\x71\x39\x87\xe8\x16\x2f\x5b\x84\x61\x70\xed\x6a\x35\x47\x5f\x26\xc4\xdc\xb2\xe7\x9b\x7a\xa1\xed\x9a\x38\x95\x69\x2d\x26\x09\x7d\x19\x87\x99\xa7\x16\x8a\x4a\xd8\x95\xab\x18\x2e\xa0\x60\xe4\x07\x01\x79\x99\x60\x46\xdf\xc6\x61\x8e\x1d\x2d\xe3\xf4\x4d\x12\x82\xad\x9b\x81\x9c\xb7\xc4\x4d\xe1\xc6\x56\xe1\x4d\x12\x26\x24\x85\x4b\x17\xd2\x12\x7d\x87\x5b\x9b\x8e\xa4\x66\xc4\x09\xc6\x4a\x67\x31\x11\xf4\x4d\x1c\x16\x78\x64\x63\xb7\xd7\x0c\x1a\x13\x3d\x29\x98\x88\x4a\xb5\xc9\xbf\x40\x33\xdf\x6d\xff\x0b\xc3\xb1\x95\x24\x5e\xaf\xc3\x0c\x2c\x36\xe9\x9e\xb1\x38\xcb\x30\xc9\xfa\x39\x4f\x4f\xd2\x8c\xbe\xf3\xd3\x6c\xc4\x02\x7a\xe0\xa7\xba\x93\xca\x8b\x5a\x5e\x7b\x52\x79\xef\xa7\xc2\x7a\x7d\xd5\x4c\x81\xd2\x77\x6a\xa5\x15\xef\xf3\xac\x0e\xcf\xd8\xae\x3e\xf7\x53\xf5\x38\xd1\xa7\x9b\x69\x66\xec\x3e\xd7\xea\x8a\xc5\x29\xfd\xd1\xa5\xe0\x92\xbc\x4d\xe8\xcb\xc4\x73\x14\xb0\xd7\xe2\xe2\xe3\xad\xaf\x3b\x6d\xce\xfc\xdc\x13\x76\x83\x49\x92\x3b\x8d\xe5\x66\x47\x22\xa9\xe1\x85\x49\x6c\x45\xb8\x09\x35\x4b\x07\x6e\xb6\x2d\xe6\x13\x41\x99\x22\x58\xbe\xc2\xa4\xc2\xbe\x71\x28\x7a\x14\x6d\x6f\x23\xc2\x35\x0f\xa8\xde\x79\x2f\xcc\xc6\x28\x42\xbd\x4c\x47\x65\xfa\x07\xc2\x44\xf4\xe8\x2f\x0a\x27\x8d\xff\x2b\xa0\x32\x02\x6e\x47\x7a\x29\xc6\x91\xa5\x78\xcc\x24\x6f\x6f\xeb\x32\x9b\xf2\x97\x71\x3c\x19\x4c\x23\x7b\xc8\x52\x94\xbb\x17\x1b\x56\x62\x1b\xe1\x08\x21\x5b\x43\x62\x40\x8d\x51\x2f\x71\xd5\x16\x26\xf1\x1b\xd4\x2b\x30\x11\x25\x79\xf7\x37\xc6\x52\x0d\x14\x6c\xed\xc7\x8b\xfc\x58\x35\x16\xfb\xa1\x98\x8c\xbd\x2c\x73\xcc\x8a\xc1\xce\xa6\xb3\x78\x04\x3e\x08\x5c\x9c\x79\xcd\x9f\x32\x4b\xc6\xd4\x28\x6f\x6f\xa3\xde\x2f\xb1\xd9\x38\x70\xcf\x5e\x14\xc2\xcd\x53\x8f\x47\x10\x3d\x5d\x03\x21\x07\x6d\xfe\x3a\x6c\xfb\x4d\xdb\xd5\xbc\x95\xe4\xc5\xad\x39\x2d\x9a\x94\xe4\xfd\xad\xf9\xaa\xbb\x92\x57\x5f\x1a\x38\xc0\x2f\x37\x6c\x1e\xde\x80\x16\x3e\x72\x21\xd7\xf8\xf8\x97\x38\x64\x38\x82\xdf\x1e\x74\xb1\x24\x77\x6e\x81\x0e\x90\x1b\x00\xc1\x2b\x92\x1a\x33\x5c\x92\x67\xb7\x95\x6d\x69\x0c\x94\x75\x24\xb7\x24\xcf\xbf\xd4\x33\x35\xc1\xd5\x6d\xcb\x06\x82\x32\x85\xa0\xcc\x47\x50\x56\x43\xd0\x92\x3c\xbd\xad\x85\xfa\x6c\x61\xc1\x8f\x15\xfe\x4a\x28\xf5\xf9\xf6\xb9\xf6\x08\x4a\x49\x7e\xbc\xad\x06\xbb\xa8\xbd\x4a\xbe\xb1\x95\xfc\xd5\xbc\xbe\xd2\x79\x56\x27\x4c\x46\x12\x94\x82\x19\x69\x3a\xc7\xac\xab\x30\x82\xce\x43\x1c\x04\x2f\x64\xf8\x36\x21\x2b\x45\xb4\xa3\xbf\x92\x70\x2f\xd9\xf4\xe4\xc8\xaa\x71\xe5\xde\xa6\x97\xc1\x76\x45\xf4\x86\xb4\xe9\x02\x24\xc3\xa3\x37\xa0\x2f\xe5\xf5\x18\xb7\x6d\x37\xcc\x6c\x37\x25\xc6\x44\xaf\x45\xd5\x90\x77\x09\x26\x76\x8f\x50\xef\x07\xb7\x36\x6c\x04\x4d\xf1\x0c\xd8\x22\x44\x8a\x04\x40\xda\x35\xa3\x80\xbc\xf8\x52\xef\x3e\xa4\x95\x15\x9c\x76\x97\x91\x25\x21\xc3\x78\xc5\xfc\x9b\x1e\x27\x4a\x6a\x51\x66\x61\x9e\x44\xe8\xcf\x38\x04\x0d\x9a\xdf\x63\x1d\xb2\xcb\x2e\x4b\xd5\x94\xf7\xff\x42\x53\xbc\x6b\xa6\xdb\x9b\x52\x89\xaa\x9a\x4d\x51\x8b\x53\x35\xe3\xd5\xed\xc3\xca\x5a\x2e\x53\xeb\x43\x4d\x4e\xf4\x30\xdb\xbd\x57\x01\xbd\xf3\x2f\x03\x3d\xd6\x40\x15\x19\x50\x00\x9f\xdd\x0e\x10\x06\x66\xbd\xd6\xca\x57\xb2\x42\x51\xb0\xb9\xb5\xd7\x2b\x11\x54\x21\xc9\x65\xa2\x43\x24\x58\x26\x40\xc1\x7f\xfe\xf7\x1b\x6c\x76\x10\x3a\x99\x12\x0d\xb8\x87\x10\x39\x32\xb0\x35\xce\x2b\xc8\x4f\x6f\x87\xdc\xd6\xe2\xea\x52\x30\xd2\x07\x30\x59\x53\x12\x93\x54\x3a\xa3\x15\x4c\x58\xc5\xc7\x9b\xfe\xed\x26\x18\x93\xbf\xbf\xf2\xfc\xcc\xaa\xe1\x9f\x13\x4c\x14\x8f\xa3\x9e\x7f\xfc\x52\x27\xba\x8d\x4e\x84\xc0\xce\xdf\xde\x6e\x9f\xaf\x37\x4d\x3f\x4b\x30\x8e\x58\xfd\x22\x14\x3c\xa6\x82\x23\xa6\x84\x20\x99\xff\x7c\xf8\xfa\xa0\xae\x0c\x6e\xa8\xa3\x65\x38\x6d\x14\xf4\x36\x35\x73\x0d\xa2\x4d\xa3\xfc\x6b\x81\xec\xc6\xba\xf7\xbf\x25\x74\x37\x36\x41\x12\xb4\x2f\x8d\xf7\x6f\x5f\x92\x9f\x20\x95\xb3\x8b\xfc\xac\x4a\x1d\xfd\x96\x40\x44\x74\x75\xc4\x68\x14\x68\xf8\xc6\x33\x8d\xf8\x2d\x31\x2a\xc8\xbb\xb1\xef\x32\x0d\x63\xf2\x53\x05\xa9\x51\x49\x3b\xa4\x9f\x6e\x82\x54\x3a\x7f\xad\x1f\x12\x5f\x4f\xc4\xb8\x05\x39\x63\xd7\xc2\x18\x0e\x9b\x94\x13\x26\xbd\x30\x77\xda\x11\x87\xb0\x96\xfd\xb7\xe5\x51\x60\x18\xe8\xf8\x64\xfd\x79\xba\x90\xcc\xb7\x5c\xac\xac\x62\x5b\x41\x3c\x63\x3a\x12\x99\x89\xd1\xd0\xaf\x26\x03\xb4\xb6\xb5\xee\xa2\xe9\x21\xaf\xe2\x21\x77\x78\xd5\xbd\x5f\x92\xba\xee\xd2\x70\xc4\x36\x1c\x51\x6a\x9b\x71\x3d\x00\x9a\x87\xab\x8e\x7b\x6c\x3a\xf6\x5f\xa2\x55\x39\x62\x77\x77\xc6\x1f\x12\x33\x30\x21\xc7\xa4\x3b\x68\x73\x31\xc2\xf0\x6a\xc9\xb5\xae\xc1\x84\x4d\x21\xe2\xf1\x17\x3a\x29\xc6\x6d\x5e\x59\x52\x26\x42\x49\xbe\x54\x34\xe4\x18\x47\x7e\xab\x6e\x68\x52\xab\xdf\x17\x68\xe5\x97\x66\x80\x83\x27\x7e\x8c\x2b\x95\x28\x37\xc8\x7f\x24\x61\x8b\x7d\x25\x5e\xa1\xe3\x3c\x5f\xb0\xd8\x33\x5f\x88\xc1\xd1\x6a\x42\x12\x1a\x93\x98\x76\x87\x78\x04\xae\xf0\x3a\xf3\x36\x8f\x22\x7c\xcc\xfb\xf9\x52\x82\x83\x7e\x3e\x5a\x30\xd9\x59\xc0\x45\x7b\x10\xc8\x3e\x67\xd9\x8c\xf1\x20\x08\xe7\xe6\x91\xda\x34\x32\x07\x97\xf4\x69\xf2\x16\x5e\x9f\x67\x42\xd1\x9d\x7a\x0a\x99\xf7\x8f\x92\xfc\x7c\x99\x2e\x20\x6c\x0d\xc9\x01\x90\x6d\x41\xbc\xd0\xf1\x5c\x32\x48\x3d\x12\x49\xbe\x64\x2f\x66\x34\xc3\x24\x1d\x87\x8b\x9a\x20\x41\x11\xb5\xf5\x1a\x4c\x7c\xef\x5c\x64\xe0\x28\xd9\x7b\xe9\x0b\xc1\xf7\xf2\x4c\xb2\x2b\x9b\x49\xfb\xd3\x37\x99\xf4\x4b\xbd\x60\x2d\xcd\x2b\x8f\xd7\x6b\x54\xb8\x30\xc8\x6e\x88\x8e\x8e\x7e\x7b\xbf\x7f\x74\x78\xf8\xf6\x68\xef\xf5\xc1\xbb\xfd\x0f\xef\x8e\x8e\xd6\xeb\x50\xd2\x96\x74\x4c\x18\x44\xe2\xb2\xe4\x8d\x14\x20\x84\x86\xd1\x3c\xe2\xec\x24\x15\x92\x71\x36\x73\xaa\x5f\xe2\xc6\x0f\xfd\x78\x36\x0b\x53\x5c\xaa\x51\x14\x82\xbf\x35\x59\xe8\x02\x47\x0c\xae\xdf\xe2\x5a\x7c\x41\xbf\x4e\x61\xbc\xde\xf5\xef\xf0\x3c\x97\xfd\x3b\x66\x7a\xfb\xe2\x34\x9e\xe5\x97\x6f\xf3\x1c\xc2\x2e\xde\x54\x1a\xe4\xaa\x25\x26\x0b\x9c\xce\x6b\xf3\x85\x57\x1a\x8d\x24\xb5\xe8\x30\x72\x78\x51\xf7\xe8\x5a\x77\xc1\xc7\x31\x81\xf8\x21\xb8\xd4\x52\xe2\x0a\xca\x31\x9b\xe7\x9c\xed\x01\xb9\x1e\xd5\x5f\xa9\x1c\x4f\xa6\xd6\x09\x8f\x24\x0b\x1c\x4d\x16\xd3\x8a\xf4\x48\x16\x56\xc2\xa4\x9b\x8c\x81\x88\x38\x8d\xcf\xa3\x6e\xac\x8d\x82\xa2\x97\x49\x69\x57\xc2\xcf\x09\x5d\x01\x57\x82\x76\x2f\x62\x19\x73\x70\x6b\xbb\x14\x91\x16\x2d\xe9\x5f\xe3\x60\xd5\x46\x9d\x47\xb3\xf4\x02\x4c\x49\xd3\x19\x58\x76\xb7\x39\x69\xe9\x83\x5b\xbb\x70\x3b\x9c\xa5\x17\x6b\xb1\x8c\x33\xbc\x8d\xcb\x12\x78\xe3\x03\x55\x5b\x3b\x60\xa4\x73\xa4\xb3\x9b\xbf\x5f\xa6\x33\x79\x6a\x3e\xeb\x80\xe3\x84\xb3\xcf\x45\xca\x75\xb0\x0d\x9b\xf5\xfe\x0e\xb8\x1d\x90\x71\x4b\x08\xac\x18\x3a\x7a\x08\x0e\xa3\x23\x84\xc8\x22\x8f\x67\x69\x76\x02\x87\x14\xa2\x96\x69\x21\xd9\x2c\xfa\x25\x09\x7f\x49\xc2\x55\x49\xde\xf0\x70\x82\x4e\x98\x7c\x97\x9f\xb1\x0c\x4d\x31\x26\x2b\x30\x2a\x53\xfb\xc2\xec\x06\xef\xff\x06\xdf\xf4\x89\xa8\xaf\xf3\xea\xf1\x15\xeb\xb5\xaa\x07\x93\x4b\x88\x53\xb1\x32\xfd\xad\x1f\xae\x74\x1c\x65\x26\xdf\x0b\xc6\x75\xc4\xbb\xf3\xbc\xc8\x64\xbd\x3a\x04\xfe\xca\x54\x4e\x0d\x63\x5c\x2f\x55\x7d\xc0\x11\xbc\x98\x6e\xd2\xee\xb0\x24\xda\x43\xa2\x88\x56\x26\xfb\x0d\x5e\xea\x81\xfc\xd5\xca\x0e\xf4\x72\xf2\x87\x10\xf4\x61\xb4\xd3\x01\x18\x92\x20\xd0\x2d\x73\x5b\x1c\xbb\xec\x18\x07\x1d\x24\xa3\xe1\xe6\xf0\xd8\xd0\x98\x97\x69\x36\xcb\x2f\x5d\x7c\x5d\x23\x27\xc1\x3d\xb4\xcd\xd9\x79\x2e\x59\x7f\x79\xba\xdc\x9e\xc5\x17\xdb\xba\x76\xb1\x8d\x7a\x5e\x2f\x7b\x68\x7b\xb8\xf3\xa8\xbf\xcc\x4e\xd0\x88\x9b\x08\xa3\x21\xda\xd5\x17\xd8\x7f\xe9\xe0\xdf\x04\x3d\x65\x31\x67\xbc\x63\x4a\xda\x59\x55\x7b\xbb\x2d\xf1\x61\xeb\x2d\xfb\x5c\x30\x21\xd9\x6c\xeb\xf7\x54\x9e\x22\x82\x3e\xbc\x7a\xf9\x93\x94\x4b\x93\x8e\x30\x01\x4b\xb7\x30\x23\x2b\x6b\xdb\xc5\xcb\xb6\xa8\x02\x70\x49\x94\x9f\x39\x6b\x88\xfe\xf1\x22\x3f\x0e\x81\xcd\xb9\x3f\xb8\x0f\x17\xce\x6a\xa3\x28\x84\x39\xcb\xaa\x91\x32\x86\xed\xef\x33\xe6\x4c\xdb\x21\x0b\xc4\xb2\xeb\x20\x47\x07\x6c\xc9\x2a\x32\x47\xdd\xdb\x98\x37\xdd\x84\xd5\xe7\x4b\x8e\xcd\x48\xbf\x7f\xfb\xb2\xc9\x52\x86\x12\x44\x11\x78\x33\xd4\x1b\x00\x6d\xce\x7b\xad\x1a\x13\x14\xcb\x44\xb9\xfa\x16\x7a\xd2\x31\xdf\x3b\xba\x64\x27\x3d\x8f\x4f\xc0\xca\xbe\xa3\x66\xad\x83\xbe\xb5\x1d\x62\x66\x1a\xc9\xb7\x28\xea\x7c\x0b\x31\x03\x74\x50\x56\xe0\x01\xf4\x0d\x53\x03\x8b\x4b\xed\xd5\xf7\xd7\x16\x99\x86\x76\x87\x4a\x65\xff\x8e\x89\x2b\xb6\x60\x20\xae\x54\xdb\xf6\x91\x60\x0b\xb5\x1f\xaf\xd7\x9e\x6e\xac\xc1\xdd\x31\x0f\x65\xdf\x84\xd7\x89\x4f\x22\x94\xd8\x4d\x08\x95\x64\x22\x6d\xe5\x63\x1e\xa2\x3c\xd9\x12\xcb\x34\xcb\x18\x47\x04\x4c\x8c\x91\xee\xe1\x96\xc9\x83\x88\x90\xd7\x0b\x16\x21\x4d\xb0\x14\xc6\xf5\xe1\xb1\x87\x96\x57\xa3\xce\x29\x4b\x4f\x4e\x65\x33\x19\x91\x58\x4a\xae\x96\x65\xfa\x17\x8b\x90\x38\x8f\x17\x0b\x44\x50\xcc\xd3\x78\x6b\x11\x1f\xb3\x05\x8a\x64\xff\x0e\x18\xea\x5d\xc9\x10\xbd\x34\x55\xa9\x13\x76\xa4\xdb\x14\x1b\x22\xbe\xd1\x24\x36\x73\xc0\x75\x8b\x4c\xbd\x44\xf0\x24\x92\xb5\x89\x25\x48\x4d\xc5\x96\xda\x15\x90\x51\x38\x51\x34\xbb\x2c\xf1\x94\x0c\x71\x24\xfb\x47\x2c\xc4\xe5\xe8\xd7\xa4\x7f\x74\x99\xca\x53\x45\xa4\x21\xe0\x7b\x77\x60\xf6\x94\xdf\xab\x3d\x25\x49\x14\xe1\x12\x2f\x53\x21\x11\x71\xa3\x29\xa2\x95\xa6\x86\xd1\x1f\x49\xb8\xd2\x1b\x67\xf4\x6b\x42\x1a\x6c\x53\x34\x99\x96\xc6\x53\x05\xf9\x39\xb1\x4f\xdd\xe1\xe6\x53\xed\x0f\x2e\xed\x1e\x16\x9b\xea\xcd\x7e\xa1\x1d\xc5\x55\xdb\xc5\xc0\xa2\xd0\x9f\xff\x3a\x0a\xf1\x50\x6f\x8b\x13\x3d\x0f\x12\x9c\x18\x91\x95\x19\xf2\xf3\x74\x36\x5b\xc0\x66\x33\x4b\x2f\x52\xd5\x5b\x84\xca\xb2\x96\x79\x0b\x3c\x70\xd7\x01\x6c\xf1\xfc\xb2\x91\x92\x30\x85\x12\x16\xae\x38\xe5\x69\x76\xa6\xe0\xea\x9b\x20\x45\x8f\x90\xda\x5d\x64\xff\xe8\x22\xd4\x4e\x7d\x6e\x2c\xec\x17\x21\xb3\xfc\xfc\x8d\xd9\xf8\xd9\x95\xdc\xd3\x06\xb1\x6a\xae\x45\xe8\xa3\xdc\x7b\x23\x6b\x42\x10\x81\xe7\x3f\x56\xcd\xb3\x54\x2c\x17\xf1\x75\xe7\xbf\x50\xd5\xfe\x79\x9c\x2e\xbe\xa6\x0e\x8d\x9c\x7b\x8b\x58\x88\x08\x15\x67\x5b\xaa\xf8\x56\x96\x5f\xf2\x78\x59\xad\xdb\xd6\xf9\xf8\xea\xc1\x4d\x67\x1d\x63\x7c\xf3\x7f\xa2\x3d\x3f\xfe\xad\xf6\xfc\x5b\xaa\xdc\xd7\x74\x58\xd7\xa7\xc8\x8d\xfa\xef\x86\x7a\xcd\x82\x91\xfd\xa3\x45\x28\xfb\x76\xad\x93\xb6\xe3\xfe\xc6\x9a\x32\xf4\x51\x97\xd9\x5a\xa4\x42\xaa\xf4\x2d\xd4\x63\xfd\x74\x56\xb6\x2d\x39\x95\xe4\xa8\xab\xe9\xab\x4f\x28\x19\x04\xa0\x5c\xc4\xd7\x07\x60\x43\xc2\xfa\x4b\xce\xe6\x8c\x73\x36\x53\x09\x96\xaf\x55\xe0\x0d\x0f\x7b\xef\x81\xe9\xe2\xed\xc3\x7a\xcb\xc0\x35\xea\xf8\xf2\x14\xdd\x0a\xab\xd6\x7c\xb4\x85\xfe\x45\x70\x6a\x59\xfd\x8b\x20\x8a\x74\xa6\x59\xfc\x7f\x47\x7b\x4e\xfe\x26\xb0\xd6\xe5\x95\x40\x58\x56\xc5\x0c\x30\x8b\x70\xfb\x8e\x73\x50\x20\xd2\x44\xb1\x99\x16\x3f\xf4\x26\x08\x21\xed\xd5\x81\x89\xa7\xc0\x86\x46\x48\x14\x89\xf6\x83\x79\xe3\xd6\x6e\x36\xce\x4e\x2a\x3a\xcc\x2e\x89\x6a\x97\x6f\xab\x65\xc6\x96\x9c\x25\xb1\x54\x1b\xbd\x57\xd5\x2c\xce\x4e\x14\x8f\xf2\x35\x35\xcd\x52\x51\x55\x65\x17\x5f\x89\xb1\x79\x82\xb7\xd1\x9f\x2d\xdb\xbe\x93\xcc\xc8\xe2\xff\x69\xe9\x1e\x2b\xfe\x23\xd2\x3d\x59\xfc\x5f\x94\xee\xf9\xad\xfa\x2f\x48\xf7\x34\xeb\xc8\x0b\xc7\x3a\x2e\x97\x0d\x8e\xd1\xe3\x25\x7d\xbe\xf1\xcf\x5b\xf9\xc6\xdf\xff\x16\xdf\xe8\x4e\xff\xac\x08\x59\x61\x4e\xff\x8e\x8b\x45\x64\x82\x52\xf1\x22\x4b\x65\x1a\x2f\xd2\xbf\xd4\x4a\x43\x27\x4c\xda\xcf\x87\x39\x57\xab\xcf\x4a\x08\x1c\xf3\x79\x83\x88\x60\xa3\xa4\x22\x49\xf6\x60\xae\x2b\x7f\xd9\xac\xdc\x55\x0d\xb5\x68\xc6\xb4\x26\x14\x00\xc8\x55\xb6\x10\x1b\x0e\x37\x2b\xda\x39\xdc\x26\x77\xab\xcf\xfd\x1e\x83\xeb\x6e\x83\x99\x65\x70\xed\xc3\x06\x85\x4c\xf2\x4c\xc6\x69\xc6\x78\xa7\x38\xdb\x5a\xc6\x33\x38\x9b\x94\x50\xe0\x74\x88\xc8\x44\x43\xbe\x08\xd1\xc7\xac\x03\xff\xb3\x5d\xd3\xef\x08\x4f\x4d\x0c\x4d\x4b\x95\x75\x67\xfc\x01\x1f\x2b\x60\x76\x60\x61\xdb\xae\xc8\xa0\x1b\x6f\x2d\xa1\x30\x6f\x8a\x92\x45\x0c\xa8\x26\x1c\x83\x38\xc2\x53\xb2\x83\xa7\xb8\x1c\x65\xc5\x4d\x07\x98\xbc\xa0\x1e\x82\x65\xc5\x6d\x08\xc6\x8b\xaf\x47\x30\x98\x8a\xb4\xa0\xa2\x3f\x27\x71\x71\x7b\x3c\x28\xcf\xb1\x37\xc9\xe8\xb5\xf6\x50\x71\x20\xc3\x0c\x83\x07\x2a\xe3\x68\x2b\xa1\x03\x08\x90\x30\x4a\x9f\x24\x23\xf0\xc6\x91\x58\x17\xdc\xa9\x89\x79\x92\x11\x8e\xd7\xeb\xc2\xf8\x8f\x1a\x4f\x38\xc9\x26\x7c\x3a\x8d\xd4\x2f\xae\xac\xc2\x4b\x92\x14\x74\x65\xfd\x2b\xc5\x45\xd8\x1d\x60\xeb\x9e\x49\xbd\x0d\x71\x69\xc3\x1a\xf8\xc1\xb0\xf4\x42\x47\x36\x26\x64\x69\x7c\xae\x8b\x36\xa9\x60\x52\x80\x30\xcb\x68\x8a\x15\x94\x7b\x61\xfc\x8a\xba\x48\x5f\x3b\x3a\x85\x00\x10\x60\xdb\x1d\xc6\x98\x14\xd4\xf8\xeb\x6b\xaa\xce\xe8\x58\x17\x20\x29\x4b\xc0\x51\xe0\x98\x85\x05\x8e\x4c\xe8\x4f\x17\xe4\xbf\x30\x82\x92\x8c\xe4\x26\x38\xe0\xed\x53\xd0\x88\xd7\xe8\x28\xb7\x1f\x37\xd5\xd4\xe1\x91\x45\x08\x4b\x63\x7d\x34\xeb\xdd\x04\x74\x16\x5c\x57\x63\x08\x38\x59\x84\x29\xf4\x35\x26\x09\x41\x19\xbb\x92\x88\x48\xef\x9a\x2c\xd9\xcc\x04\x32\x22\xc8\x15\x87\x55\x9c\xb2\xb2\x24\x0b\x85\x00\xa0\x4a\x42\x96\x05\x9d\x75\xcd\x0e\x4a\x4e\x0b\xfa\x27\x0b\x91\xfa\x80\x08\x22\x08\xd7\x26\x0e\x0e\xc3\x9b\x41\xcc\x96\xc5\x7a\xdd\x3d\x2d\x4a\xb2\x52\xe5\x5a\xc3\xc9\x18\xbc\xba\x36\x9a\x03\x2e\xa0\x9a\x1c\x23\x82\xa2\x6a\x86\x67\x05\x4d\x14\x1f\xb8\x24\x17\x05\xfd\x8d\x85\xe8\x3c\x5e\x22\x4c\xae\x0b\xfa\x87\x7d\xf9\x9a\x16\x75\x2f\x54\x93\xae\x55\x93\xce\xe3\x65\x5b\x8b\x66\x85\x89\x55\xfa\x95\x4e\xcd\x5c\x0b\xcf\x0b\xed\xd3\xe8\x3c\xbe\x22\x27\xf6\x39\xcd\xc8\x71\xe1\x7b\x3e\xba\x2c\xe8\xf6\xc7\x3b\xe1\xe4\x4e\xf0\xed\xff\x4c\xd7\x1f\x67\x1f\x67\xe3\xf5\xe3\xc9\x3f\x9f\x4c\xbf\x7b\x82\xb7\x4f\xc8\xe1\xe6\x67\xbc\x7d\x02\xb1\x5d\x6c\xec\x23\xb2\xb3\x19\xbd\xc8\x3a\xff\xce\xfa\x7f\x27\x9a\x10\x49\xa1\x40\x3d\x24\x11\x89\x69\x3e\x46\x77\x50\x84\xee\x0c\xac\x2a\x5e\x15\x36\xc6\xab\xcb\x06\x8e\x49\x4d\xe0\x18\x6e\x03\xc7\xf0\xb6\xc0\x31\xe9\x38\xb5\x71\x91\x72\x92\xe1\xc8\x5c\x8d\x38\x5d\x51\x1d\x4b\xc9\x0b\x1a\x63\x63\x95\xe7\x41\x90\xae\xd7\x1b\xfe\x30\xb3\x20\x80\x58\x8c\x99\x8b\xbb\x18\x63\x1b\xef\xa9\x8a\x33\x43\x32\xe3\x2d\xc7\x8f\x34\x53\x98\x85\xaf\x32\x0b\x1d\x69\x66\x5e\x8b\x34\x43\x5a\x43\x4e\x67\xa3\xc5\x7a\x1d\x66\x2e\x66\x87\x71\x3c\xbe\xa4\xc2\xc4\xa4\x01\x47\xda\xba\x0d\xa7\x54\xb8\x50\x34\xc2\x0f\x45\x53\x5a\x3a\x3c\x53\x74\xd6\xf8\x23\xbf\xa0\x07\x69\x28\xc8\x1c\x7b\x1e\x8a\x2e\x8c\x3f\xee\x74\x1e\xce\x4c\x00\x5a\x4c\xba\x4b\x93\x0a\xca\xd7\x36\xac\xdf\x64\x00\xfe\xcd\x44\x3d\x32\xcd\x9c\x08\xe9\xa7\x61\x72\x8a\xb1\xab\xfe\x9a\x9c\x53\x84\xc8\x09\x1d\x90\x63\x3a\x18\x1d\x3f\x9e\x59\x8e\xf3\x18\x38\x4e\x3a\x9b\x1c\x4f\x9d\x7a\xce\x65\xad\x2e\x72\x48\xcf\x8b\xf0\xa4\x08\x13\x19\x5e\xe8\xe1\xc7\x64\x6e\x1d\x0d\x91\x01\x26\xfb\x74\x32\x25\xaf\xe9\x70\xf4\xfa\xf1\x85\x85\xfb\xba\xd7\xc3\xfb\x7e\x28\x5d\x4a\x69\x78\x4d\x2f\x26\xaf\xa7\x78\x7c\x6d\x75\xe3\xae\xcd\xa8\x1e\xd1\x0b\x13\x45\x0e\x6c\x95\xf4\x38\x7d\xa2\x93\x4b\x77\x79\xb5\x4f\x0e\xd5\x88\x39\x04\x3b\x0a\x82\x4f\x1a\xfc\x91\x06\x71\xe5\x66\xca\x50\x4e\xb3\x7d\x7e\xb2\x22\xe0\x2b\x9a\x84\x97\x64\x4e\x0e\xc9\x3e\x39\x52\x98\x72\xf8\x84\x9e\x04\x41\x78\xde\xa3\x73\xa3\xec\x71\x42\x0e\x71\xef\x8a\x9c\xd0\xc3\xde\xa5\xed\xa0\xe5\x32\xcf\x7b\x2e\x17\x2e\xa7\x23\x9f\xda\xfa\x5b\x8f\xde\x76\xb2\x9e\x0b\xc7\x57\x54\x1b\xae\xa0\x87\xc5\xe6\x4a\x01\x4d\xfc\x77\x32\x4c\x31\x11\xf4\xb2\xc0\xc4\xac\x95\x98\xd4\xe4\x11\x16\xb8\x18\x19\xd3\xf8\xd8\x77\x13\x96\xc4\x82\xa9\x55\x6c\x54\x40\xef\x20\x50\x39\x47\x81\x4d\xe9\x48\x9d\xf0\x3f\x2e\x81\x3b\x27\x0e\x19\xd6\xdf\xbe\xdd\xf8\x96\x98\x2f\x8f\x51\x24\x68\x3a\x89\x7d\x7f\x62\x53\xa3\xda\x6e\x6f\xcd\xb4\xa7\xfd\x5e\x3c\xd2\x8e\x74\x9c\x87\x9a\x0e\xc4\x25\x9a\x3f\x29\x74\xf3\x17\xf4\xb8\x08\xe7\xdb\xc3\xca\xc1\x87\xca\xbc\x18\xb3\x68\xf1\x98\x16\x63\x87\x2b\xf9\x64\xb1\x35\x9c\x8e\xe3\xca\x61\x45\xa4\x93\x7a\x7e\x12\x2b\x05\xcd\x27\xf3\xad\xa1\xbb\xd4\x74\x00\xc4\x18\xa1\x48\x94\x3a\xda\x37\x60\xc8\x7e\xd1\xaa\x87\xd8\x69\x71\xd6\xa8\x6f\x9e\xb4\x6b\xf6\xe6\xbe\xd0\xea\x16\x8a\x4f\xb2\xa9\x77\x58\xcb\xbc\xe8\x88\xd5\x3e\x5e\x96\xe4\x75\x61\xcf\xa8\x5e\x00\x76\xa3\xe5\x53\xe1\xd4\x51\xe1\xe9\xf6\x4e\xb4\xdf\x1b\xdd\x9a\xa9\xa2\x04\xaf\x0b\xeb\xd5\xbe\xda\xf4\x3f\x15\x4d\x9e\x06\xb6\xd5\x2a\xc3\x95\x9f\xc1\x1a\x2d\x06\xc1\xa6\x57\x9d\xaa\xc8\x6e\x5b\x33\x9e\x9b\xaf\x37\xb6\xe4\xac\x70\xae\xc2\x4d\x60\x62\xdc\x16\x87\x0d\xec\x58\xe8\x44\x4e\x31\x81\xee\x56\x6e\xd2\x37\x83\x5d\x68\x8f\x41\x9a\x23\x05\x7f\x13\x13\x3e\x25\x9c\x48\x2f\xde\x09\x6c\x52\x9d\x34\xeb\x48\xbc\x31\xc0\xa7\xb1\xf0\x4e\x92\x36\x88\x5a\x8e\x9d\x8e\x81\x01\x9a\x4f\x49\xae\x78\x24\x05\xeb\x4d\x41\x57\xa9\x80\x31\x8f\x8e\x0a\x62\x1e\x9f\x16\xf3\x39\x6b\xbb\xb5\xae\xcf\x92\xce\xd6\x1c\x21\x92\x8a\x1b\xcb\x7b\x33\xd2\x85\xa9\x0c\x02\x67\x58\xea\x45\x60\x34\x5f\xfd\x24\x1c\x04\x6d\x11\x6e\xfc\x2c\x7d\x5b\x71\x10\xb4\xa7\x9b\xd6\x3d\xcf\xf9\xf9\xb3\xda\xbd\x77\xd5\xbf\x4a\xa1\xc3\xcd\xa0\xcd\x1e\x04\xd2\x37\x16\xb1\xc9\x65\x7d\xd0\x7e\x4b\xd9\xe5\x57\x02\xf6\x4a\x05\x81\xf7\xd2\x4f\x85\x82\x32\xde\x4c\x0a\x25\x8e\x40\x3b\xe4\xd8\xf5\x53\x3f\xf9\x0d\xf3\x8a\xa9\xb6\xe9\x45\xd7\xd6\xa4\x26\xf3\x21\x55\x76\x2d\x00\x6c\xcb\xbe\xe1\xf3\x4a\x65\xd7\x48\x18\x5d\x29\xd4\x79\x6f\xbb\x18\x7d\x52\xaf\xcf\x62\xd9\x16\x36\xdf\xa1\x90\xfa\xde\x82\x3b\xcf\xd3\xc5\xad\xc5\xd4\xf7\x36\x94\x5b\xe4\xc7\xb7\x15\x53\xdf\xdb\x6a\x33\x25\xa2\xdd\x42\x8f\x15\x8b\xcf\xdb\xf0\xf6\x4a\x23\xab\x22\x15\xfd\x65\xba\x64\x50\xb8\xe9\x79\xf4\xeb\xa6\xbd\x51\xaa\x81\x56\x8d\xaf\x7a\x06\xe3\x6c\x16\xf3\xd9\x53\x9e\x5f\x0a\xc6\xf7\xb3\x8b\x4d\x79\x49\xd8\xa6\x8a\x94\xc5\x17\xe9\x49\x2c\x73\xbe\x5e\xa3\xb7\x2c\x4e\xe4\x41\x2c\xd3\x0b\x06\x31\xca\xec\x27\x45\x3f\x66\x45\xa2\x48\xa4\xfe\x7a\x08\xf2\xa7\x1b\xf3\x1c\xb6\x7e\x01\xe7\x4b\x2d\x7d\xd5\xb7\xe8\x41\xd0\xf6\x6d\x96\x27\xb0\x8d\x78\x0e\x9a\xcf\x0a\x72\xce\xf8\x49\x35\xff\x1d\xe9\x87\x88\x75\xa9\x5c\x73\xec\x1b\x44\x9d\x4d\xb2\x69\x0b\xad\xe7\x63\xf5\x81\x4a\x70\x69\x4e\x38\x8e\xe0\x95\x97\x9e\x9e\x76\x8b\x8d\xd9\x28\x7b\x9c\xc3\xa6\x77\x56\x84\xfe\x96\x47\xb8\x17\xb8\x83\xcc\x18\x5b\xbe\xfa\xaf\xb5\xb9\x25\x9b\x0c\x57\xa5\xfa\xfe\xef\xe9\x0e\xbb\x92\x4d\x8f\xfa\x9e\x8e\xd6\x59\x11\xb2\x1a\xb3\x96\xe1\x95\x84\xb1\x6c\xa5\xce\x6c\xbc\x5f\xe8\x90\x9a\xac\xc4\x98\xc8\x92\x48\x9e\xb6\x2e\xaf\x2a\xd0\xca\xf6\x3f\x3f\x8a\xef\xb6\x09\x42\x95\xab\xd5\xed\x8f\xe2\xbb\x3b\x90\x54\x7a\xe3\xf9\xb2\xf8\xea\xb8\x25\xdb\x77\xef\x0f\xb6\x4f\x52\x82\xfe\xe1\x43\xbd\x7b\x6f\x17\x12\xa3\x5a\xe2\xce\xfd\xed\x13\x82\xee\xd4\xd3\xf6\x20\x23\xa9\x27\x0e\x54\xc6\x5e\x2d\xed\xc1\x53\xc8\x38\xa9\x27\x3e\x83\xc4\x29\xd2\x3b\xee\xdb\x62\x23\x18\x17\x38\x0d\xa9\x1c\x82\xc2\x1c\x82\x45\x21\x86\xe8\xa2\x95\x35\xe2\x9b\xa2\xbf\x41\x75\x42\x86\x71\x46\x2b\xf6\xca\x7a\x66\xd2\xc7\xd9\xc9\x74\xf4\xa6\x70\x92\x69\x46\x1a\x21\x4a\x0c\xe7\x12\x04\x1a\xb4\xe6\x04\xc1\x96\x8a\xa2\xc9\x14\x45\xc0\xb9\x10\x0f\x82\xac\x2b\x35\x43\x29\x45\xc8\xc1\x8e\x14\x3c\x8c\xbd\x38\x7c\x6d\x1b\x12\xc1\x67\x23\x21\x97\x5a\xe1\xfc\xe7\xc3\xd7\x07\x26\x26\x78\x3a\xbf\x06\x7d\x47\xe3\xea\xf9\x65\x01\x56\x4c\x14\xf5\x60\x6a\xc1\x0d\x34\x44\x99\xa7\xb9\xe7\xf7\x1b\xec\x5a\x9c\xf0\xc8\x9e\x92\xd1\x37\x08\x8f\xb6\x86\xe6\x9c\x51\xa9\xb5\x0f\x48\xaa\x10\xaf\x47\x43\x38\x56\x7b\x05\xc6\x08\x8f\xd1\x18\x45\x0a\x68\x2f\xab\x64\xec\x15\x82\xed\x15\x56\x58\x7c\x1a\x67\xb3\x05\xe3\x82\x4e\xa6\xe5\x5e\xe1\x71\x5c\x85\x60\xed\xbc\x76\xad\x98\x71\xb2\x3f\x2f\x16\xf3\x74\xb1\x60\xb3\x48\x12\xce\x3e\x81\xe6\x92\x5a\x18\xa4\x9e\xd9\x7a\xbc\x2d\x49\xad\x2a\x28\xb0\x19\xde\xc6\x16\x9b\xc8\xa9\xea\x78\x23\x49\xfb\xb0\x6a\x40\x32\x53\x49\x1b\xf3\xe8\x66\xd8\x87\x51\xbf\x29\x36\xac\x1a\x0b\x02\xa9\x83\x70\x6b\xc1\xf9\xbb\x82\xee\x15\xe4\x60\x13\xaf\xcd\x60\x78\xc0\xb9\x07\x90\xe3\x95\xa4\xfa\xa2\xc9\x50\x87\x17\x6d\xc2\xc6\x6e\xd8\x95\xeb\x75\x57\xf6\x8f\x8e\xf6\x76\x0f\xf6\xf6\x5f\x1e\x1d\x61\x6f\x96\xde\xeb\x59\x6a\xe8\x86\x09\x26\xdf\xa5\xe7\x2c\x2f\x64\xe7\x34\xd6\x61\xb3\x8e\x19\xcb\x3a\x76\x13\xf2\xf8\xf8\x57\xad\x00\x92\x05\x8b\xf9\x17\x40\xa8\xbe\xdf\x29\xe8\xfb\x82\x3c\x2b\xe8\xab\xa2\x6a\xd3\xf3\xc2\xa8\xb6\xdd\x29\xd4\x09\xcd\xb5\xc5\x2e\xf1\x2a\x45\xbb\x80\x4c\xe7\xa1\xce\xfa\xbe\x58\xaf\xbb\x77\x0a\x1c\x04\x9b\x85\xee\x14\x1e\x24\xd2\x04\xe1\x99\x53\xde\x29\x20\xa9\x8a\x72\x55\xfb\xe6\x9f\x04\x6a\xb9\x1a\x39\x8c\xb4\x70\x80\xcb\xb2\x6c\x21\xed\xa7\xbc\x5f\x35\x21\x08\xc2\x5a\xeb\x30\x69\x2f\xe1\x0f\x6a\x10\x84\xcf\x0a\xea\xa7\xe8\xd3\xeb\xd3\x82\x7c\x86\x70\xc6\x3f\x16\xb4\x3b\x24\x7f\x15\x74\x6b\x58\x8d\xec\x6f\x6a\xb2\x7e\x2c\x82\xe0\x69\x11\x04\xa1\xce\xf2\xd4\x7a\x83\x1e\x7f\x2e\xe8\xd3\xc2\x4a\x52\x3e\x17\x38\x82\xd2\xe4\x73\xe5\x56\xfa\xa7\x22\xf4\x2d\x2d\xd4\x2b\x50\xdf\x1f\x0b\x7b\xe3\xf3\xbc\x08\x7f\x2b\xf0\x48\x81\x1e\x78\x01\x42\x1c\x8c\x11\x1b\xe9\xf3\xf3\xd3\x82\x7e\x36\x6d\x1d\xf5\x7a\x7f\x15\x8f\xd9\x08\x3f\x85\x96\x4d\xfe\x2a\xa6\x7d\x5e\x64\x21\x1e\xe9\x06\x78\xc5\xcb\xa7\x85\xf6\x25\xa8\xdb\xde\x50\x85\x7c\xa6\x90\xa0\x36\x26\xf6\x5a\xc0\x4b\x33\xf7\xc4\x3a\xf3\x2b\x85\x31\xcf\x14\xc6\xb4\x15\x6b\x8c\x30\x69\x82\x51\x98\xf1\xac\xa8\x85\x44\xf3\x90\xe5\x59\x0d\x59\x36\x51\xe5\x59\x0d\x55\x14\xa2\xc0\xdd\x45\x65\xc7\x52\x78\xaa\xba\xf3\x22\xa3\x46\xd1\x3c\x56\xbb\x0c\x65\xe5\x07\x9f\x2a\xf1\x22\xa3\xcd\x4b\xba\x79\x61\x85\x5c\xba\x09\xae\xb0\x4f\x00\x7e\x51\x73\x08\x6b\xf1\x8f\x82\xfe\x52\x90\x9f\xe1\xf7\x57\xf8\xfd\x1d\x7e\xff\x84\x5f\x29\xd4\x2f\x53\xbf\x3a\x16\x90\xa0\xa7\xbc\xbf\x64\x7c\x9e\xf3\x73\xc5\x7c\xaf\xd7\xab\x92\x64\x82\x72\xd1\xcf\xf2\xcb\xf5\x9a\x8b\xfe\x79\xfe\xd7\x81\x7d\x14\xf6\x29\xb7\x0f\x97\xec\xf8\x2c\x95\xf0\xb6\xc9\x8f\x2b\x5a\xa2\x36\x46\x88\x41\xac\x86\x3c\x34\xd4\x32\xd7\x06\xff\xea\x9b\xbe\xeb\x12\x74\x95\xb1\x2b\xf9\x2e\x4d\xce\x5a\x74\x8c\x6f\x16\xd0\x6c\x0d\x01\x0f\x36\xe5\xf9\x9e\x88\x61\x38\xe2\x9b\xb7\xef\x20\x66\x98\xf0\xad\xa1\x2f\xca\xe1\xd3\xd1\x67\x73\x01\xa6\xaa\x34\x73\x87\x89\xda\x53\x1d\xf6\xae\xd7\x3f\x16\xeb\xf5\xf3\x22\xfc\xa9\xc0\x25\x91\xa9\x5c\xb0\x08\x1d\xeb\x63\x09\x22\xe6\x41\xdb\xb5\x5e\x44\xab\x92\xc4\xfc\xe4\x22\x9a\x4c\xc9\x05\xe3\x02\x54\x2d\x90\x7d\x14\xea\x73\x9e\x45\x7f\x14\x24\x9e\xcd\x5e\xa6\x42\xb2\x8c\xf1\xe8\xe7\x82\xe4\x59\xc2\xa2\x5f\x0b\x92\xcf\xe7\xd1\xef\x05\xe1\xec\x3c\xbf\x60\x2e\xc3\x9f\x36\x65\x77\xb1\xb0\x89\x22\x92\x82\xb0\xf3\x54\x46\x4c\x90\xe3\x34\x9b\x35\xcf\xbb\x1b\xd4\xdd\x04\x59\xed\x9b\xcc\x36\xb2\xa2\x28\x96\x4b\x7d\x41\x8d\x4b\x92\x5c\xb6\x68\xae\xa3\x6d\x54\x92\xe4\x74\x96\xf2\xaf\xab\x00\xb2\xb6\x82\x2f\xce\x63\x71\xd6\x72\xef\x3d\x28\xc9\x29\x97\xe9\x39\x6b\xc1\x85\xfe\x60\x30\xfc\x2e\x13\xe6\xc6\x01\x2c\x52\xab\x3b\x98\x90\x29\x56\xc9\x7f\xbf\x3b\xfc\x6e\xc8\x7e\xa8\x42\x33\x07\x41\xc8\xb7\xa8\x9c\x0c\xa6\x24\xcc\xd4\xc3\x70\x8a\x1f\x0f\x20\x75\x8b\x64\x3d\xaa\x32\x63\x32\xe1\x24\x9b\x96\x64\xb9\x88\xa5\x5a\x19\xde\xfc\x72\xb6\x60\xb1\x60\x6a\xe6\xb4\x5a\x7a\x04\xd1\xd3\xea\x8d\xdd\x58\x00\x5b\xb9\xc0\xdb\x43\x76\xaf\x2c\x49\x2c\x1a\xdc\xd2\x0d\x8c\x25\x1c\x94\x32\xcd\x69\x64\x7d\x99\xbf\x5f\x2e\xad\x33\x1b\x4a\x81\xd5\xf5\x52\x14\xdb\x33\x61\x53\xca\x4d\x74\xae\x8e\x3a\x90\xe8\x78\x80\x89\xd8\xf0\x30\x4b\xf2\x4d\x79\xe8\xe6\x27\xab\x77\x4f\x19\xe1\xe0\xc6\x44\x9d\x2e\x28\xc7\x44\x9d\x53\x40\xc3\x9d\x66\xf0\x2c\x96\x79\x26\x18\xcd\x89\x54\xdc\xf3\x55\x9a\x0b\x40\x00\xed\xc1\x53\x5b\x46\x6e\x5a\x9e\xaf\x8c\xda\xb6\xbe\x85\x37\x2f\x04\x54\x3a\x20\x05\x9c\x4e\xcc\x8c\x22\x88\x5a\x36\x90\xea\x25\x10\x2d\x8a\x31\xb9\xb5\x85\xc7\x3c\x5d\xb0\x03\x07\xc2\xbe\x91\x45\x9a\xb1\x03\x2f\x77\xf5\x4e\x92\x7c\x51\x9c\x67\xfe\x47\x3f\x85\x08\x19\x27\x67\x3a\x1d\x1e\xed\x9c\x9b\x9c\xea\x99\xa8\x61\xb1\x09\x33\x56\x96\x44\x96\x61\xb5\x0a\x24\x76\x03\x5b\x92\x42\xd0\x09\x8a\x4f\x20\x76\x4c\xc3\xe0\xc0\x86\x96\xd1\x34\xc6\x4b\x30\xb1\x66\x98\x8c\x4f\xd4\x9f\xab\x65\xca\x99\x40\x04\xcd\x79\x7e\x8e\x08\x02\x0f\x51\x04\xa5\xf3\xad\xf3\x7c\x96\xce\x53\x36\xdb\x12\x69\x96\x30\x9d\x56\x64\x1b\xa9\x8b\x58\x48\x97\x57\xbd\x1b\x33\x0a\x44\xd0\x79\x7c\xb5\x35\xcf\xf9\x65\xcc\x67\xaa\x86\x25\xcf\xaf\xae\xb7\x9a\x0d\x05\x4d\x42\xd0\x14\xe3\x4c\xf2\xeb\xad\x78\x2e\xe1\x0d\x54\x1c\xe3\x13\x96\x49\x34\x25\x42\x50\x38\xf6\x6c\x4a\x6d\x42\x2f\x2c\xb9\x0b\xa2\x45\xb7\xc3\x73\x91\xb2\xb5\xe4\xe9\x8c\x65\x12\x6f\x9b\xf8\x20\x95\x88\x45\x41\xdf\x55\xc0\xd5\x7a\xb7\x42\x93\x7e\x4d\x27\x05\x62\xdc\x57\x5b\xa2\x23\x19\x19\xad\x74\x53\xd4\x3a\x57\x3c\xdb\xae\x94\x3c\x3d\x2e\x24\x0b\xd1\x29\x67\x73\x44\x32\x1d\x18\x52\xbd\x60\x72\x63\x16\xed\x8d\x40\x67\xab\x9c\x00\x70\xe7\x33\x66\x5c\x3d\x56\x67\xdf\x48\x1f\xdb\x15\xdd\x07\xe3\x76\xae\x5d\x5b\x18\x53\x6c\x6e\xac\xa1\xc7\xf6\xc1\x17\x02\x8c\xab\x92\xb1\x50\x79\xd5\x9f\xb1\xfe\xe3\xe5\xfb\xa6\x56\x01\xac\x21\xee\x7c\xce\x68\x5b\x75\xae\xdd\xb4\x38\xdb\x72\xed\xb9\x9b\x3b\x8f\x33\x5e\xe8\xc1\x2a\x51\xe5\xea\x55\xaf\xa5\x3b\x20\xd2\x2c\x6c\x1a\xe1\xe8\x91\xf3\x0f\x4a\x7a\xf3\x35\x68\x00\x67\x61\x86\xc7\xea\x4b\xe4\x85\xde\x74\xde\x76\xc0\xe1\x94\x79\x09\x02\xdd\x7c\x6a\x3d\x9f\x95\x65\x88\x37\xa9\x6b\x77\x50\x92\xf9\x6d\x88\xb6\xba\xe4\x69\x4d\xfc\x5a\x69\x8e\xe8\xe6\xc5\x8a\x6f\x8d\x8d\xc6\x0b\x9c\xba\x5b\x64\x28\x8a\x01\x80\x3a\x34\x4d\x80\x60\x52\xa6\x8c\x5d\x8e\x14\xf5\x2c\xa5\x0f\x39\xee\xcb\xfc\xc7\x57\xef\xec\xf9\xdf\x14\x76\x57\xcb\x55\x61\x30\xd3\x47\xbd\xac\x9e\x23\xf7\x72\xcc\xf2\xf3\x38\xcd\x28\xea\xe5\x98\x74\x07\x14\x0e\xf6\xf6\x9b\x60\x49\xc1\x19\xc2\xa4\x5a\x0d\x79\x7e\x96\x32\x6a\xdd\xd9\x8c\x3a\x10\x7e\x99\xc5\xb3\x96\x5d\xb4\x51\xc8\x98\xe1\xa9\x4e\xb8\x90\xc3\xff\x5c\x8f\x3e\x7e\x14\xdf\xe1\x10\x42\x0d\x63\x1a\x4e\xfe\x39\x9a\x7e\x87\x51\x15\x8a\x8c\x8d\xdb\x42\xff\x4e\xee\x4d\x71\xa4\xfd\x2e\x69\x2e\x25\xda\x38\xb0\xc3\xbc\x84\x92\x20\x44\xd4\x98\x29\x56\x33\xc4\x5b\x8f\x1e\xde\x67\x0f\x70\x59\x46\xcd\x79\xc3\xab\x66\x3f\x6a\x57\x29\x9b\xf5\xe0\x55\x59\x92\x85\x68\xd3\xda\x69\x57\xc6\xf1\xc2\xc1\xcb\xfe\x2c\x96\xb1\x76\x71\xa4\xad\xb6\x46\x30\x3d\xf6\xaa\x03\xa6\xd0\xec\xb2\xf9\x04\x19\xed\xe1\xad\x77\x8a\x4c\x4f\x35\x33\x0b\xfc\x6a\xdd\x18\x4c\x7b\xe2\x56\xb4\xd4\x62\x9e\x7e\xab\x45\x13\x00\xe7\x49\x90\x6a\xfd\x63\xa8\xd4\x51\xde\xaf\x59\xa7\x51\xf4\x34\x16\x69\xd2\x41\xbd\x63\x99\xc7\x61\x0c\x3e\x6f\x12\x7d\x12\x2f\x88\x20\x73\x1a\x16\x54\xf6\x8f\xb5\x43\x08\x22\xa8\xec\x17\x7c\x41\x8a\x20\xe8\x6e\xff\x33\x9c\xc4\x5b\x7f\x4d\xd5\xcf\xc7\xd9\xc7\xde\xc7\xad\x8f\xfd\xe9\x77\x11\x1e\x7f\xdc\xfe\xb8\x6d\x89\xae\xf0\x28\xb4\x2f\xce\x61\x63\x4f\x40\xf9\x71\xbb\xa7\xc9\x5a\x4f\x3b\xa8\xf1\x88\xd6\x76\x4f\x93\x23\x59\x86\x05\x11\x38\x12\xc0\xa1\xa7\xfd\x7c\xc9\xb2\x50\xf6\xb5\xe6\x62\x9d\x7d\x21\x6f\x8b\x70\x0e\xbe\xec\x20\x00\x99\x7d\x38\x64\x5c\xeb\xf3\x69\x75\x57\x92\xf6\xa5\x3e\xb6\x51\x69\x9f\x48\xda\xcf\x33\x50\x9c\x16\x32\x96\x2c\x39\x8d\xb3\x13\xe6\x73\x1b\xda\xbd\xfb\x7d\xb5\x76\xfa\x90\x0f\x82\x9a\x05\x41\x08\xf7\xf1\xc6\x3a\x6e\xbd\x4e\x1d\x1f\x03\x5e\xc0\x07\x26\xbf\x4b\xaa\x64\x66\x10\x6a\x02\x61\x6c\xf1\x05\xe9\xb0\x9f\x6f\x4d\x5e\x1b\x62\x3c\xcd\x3a\xe9\x78\x63\xdd\x99\x18\x77\xab\xb2\xf2\x9d\x13\xfa\xfc\x9f\x0d\x05\xf5\x31\x43\x98\x34\x6d\x04\x33\x5f\x74\x17\x41\x34\xb9\x37\x45\x5f\xf2\xf4\x5c\x15\x2c\x8e\x85\xe4\x70\xc3\xdf\x70\x7d\x48\xf8\x66\xb6\xac\x07\xbe\x2e\x74\x2c\x9e\x09\x9b\x06\x41\x21\x1c\x6c\x86\x9f\xd0\x81\x8b\x8d\xa3\xd8\x4a\x24\x98\xdc\xd2\x94\x42\x07\x41\x86\x42\x63\xf5\x13\x4d\xa6\xd8\x4a\x1b\x26\x7c\x8a\x23\xf7\xa5\x87\x48\x07\xf5\x78\xc4\xc1\xaf\x4b\x8e\xa3\xbc\x0c\xd3\x7e\xeb\x68\x85\x58\x53\x0c\x35\x34\x60\x8c\x5b\xb1\x95\x6a\x5d\x05\x01\x92\xec\x0a\xae\x63\xea\x1f\xc6\xd5\x1c\x45\xd5\xe3\x3b\x76\x25\x89\x9e\xd8\xc8\xce\xb0\x79\x57\x9f\x5c\x1a\xe4\xb3\x96\x99\x99\x63\xed\x88\xe1\x6e\xa3\xb4\x1c\x75\x9b\xd2\x3c\x3d\xe7\xdc\x9a\xa4\x1a\xe3\x66\x76\x08\x00\x47\xe0\x89\x5e\x71\x18\xda\xe6\x72\x2c\x43\x8e\x23\x16\x26\x22\x44\x86\x0e\x74\xe6\x71\xba\x60\x33\x1d\x7e\xb8\x66\xb1\xd9\xb3\xc5\x88\x85\xae\x7d\xe8\x71\xcb\x6d\x13\x8e\x71\xa9\x28\x15\xc9\xad\x66\x56\x59\x02\xfe\xc7\xc7\x39\x97\x35\xa4\x57\x7c\x4e\xad\x5a\xc8\xa2\xf8\x3d\x49\xd0\xfe\xde\xeb\x83\x83\xdd\xa7\xaf\xdf\xbe\xdb\x7f\x86\x40\x36\x9c\x5a\x19\xa9\x82\x06\x66\x99\x35\x86\x1d\x20\x1d\x30\x79\x99\xf3\x33\xcd\xd6\x2a\x38\xd0\xba\xaa\xb4\x2e\x6c\x17\xe8\x86\x72\x24\x32\x5f\x3a\xf9\x1c\x8c\x19\xcd\x6b\x0f\x9d\x8b\x0e\xbb\x4a\x18\x9b\xb1\x19\x1a\xb9\x74\xa8\xe5\x95\x3e\x15\x40\xc8\x9d\xd6\x2f\x98\x40\xdb\xd8\x6d\xbd\x2a\xc9\x8d\x0c\x82\xd5\x52\x99\x0b\xb2\xa4\xa1\xec\xab\x49\xd9\xe3\x4c\xb1\xa0\x69\xbc\x10\xeb\xb5\x10\xe1\x1c\xe3\x20\x90\xfd\x2b\xc1\xe7\x7b\xb0\x00\xd4\x89\x62\xbc\x00\x5a\x12\x36\xd3\xb1\x51\x1c\x1c\x2d\x83\x20\xcc\x27\xfa\xb3\xc6\x71\xf5\x79\x4a\x97\x3a\xba\x91\x60\xd2\x4c\x8c\xfe\x08\xd4\x22\x08\x3c\x4a\x90\x37\x2f\x29\x9c\x9a\x47\x16\x04\xf5\xb3\x81\x39\x0d\x7a\x2b\x7e\xec\xb6\x27\x36\x55\xd8\xde\xa8\x0d\xc2\xea\x94\x96\x31\x71\x17\xd6\x9b\x03\x80\xd7\xeb\x30\x6d\x26\xd2\x6e\x77\x33\x23\xa9\xaf\x4b\x70\x6c\x97\xd6\x92\x1a\x2b\xb7\x92\xa3\xa9\xf1\xf8\x24\x20\x96\x28\x6d\x42\x01\x89\x02\x6b\x13\xbd\xca\x7e\x9e\x3d\xcb\x2f\xb3\x45\x1e\xcf\xde\xf0\xfc\x84\x33\x21\x82\x20\xed\xc7\xb3\xd9\xfe\x05\xcb\xa4\x15\x8b\x80\x14\x02\xbe\x22\xd2\x56\xa6\x55\x4a\xab\x32\xbe\x5f\x36\x41\x17\x90\x52\x3d\x7d\xb1\xae\x3a\x08\xac\x83\x41\x24\x6c\x01\xa6\xe4\xa0\x9e\x51\xbd\x2a\xde\x17\x94\x90\x5b\xac\xc3\x83\x20\x4c\xfb\xb0\x80\x15\x31\x57\x27\x4a\xbb\x5e\xb1\xa7\x55\xab\x03\x56\x41\x3a\x51\x73\x9e\xcd\xc2\x4c\x4b\x00\x96\x82\xae\xea\x7c\x4a\xf4\xe5\xd0\xa5\xc8\x93\x2e\x9e\x0a\x8d\x83\xdd\x26\xc2\x60\xc0\xd9\x5a\x52\x93\x23\xd2\xa2\x89\x46\x22\x65\x9a\x5d\x99\x09\x72\x21\xe8\x2a\x9e\xc5\x4b\xc9\x78\x14\xb6\x5e\x9f\xd7\x19\xa9\xf5\xba\xd2\xa6\x13\x41\xe0\x54\x1b\x8c\xb0\x49\x6b\x37\xdc\xa4\x75\xa5\x85\x46\xa9\x00\x9f\xd1\x33\x41\x15\xe6\xce\xd4\xcc\xf0\x38\x13\x6a\x00\x4c\x25\xd1\xa4\x95\x03\x8a\x15\xa9\x41\xbb\x49\xc2\x96\x12\x61\xa2\x5f\x6b\x3d\x33\x6b\xca\xf1\x8a\x12\xaf\xd7\xd5\xa5\xa2\x53\xc0\x31\x89\xcd\x77\xad\x79\x51\xbd\x3f\x4f\x17\xcc\xcb\xbd\xc8\x8f\xe1\x86\x31\x6a\x42\x34\x5a\x31\x63\xab\x08\x13\xb5\x5e\x91\x4a\x3c\x0e\x4f\xa1\xc9\x5f\x1f\xb7\xb6\x90\x73\x88\x5b\x2b\xbd\x9b\xd5\xe6\x8d\x66\x1b\x54\xb5\xa0\x37\x80\x6c\xde\x7a\x46\xb2\x9c\xfa\x83\x6f\xb6\xf2\x49\x83\xf1\xd9\x54\xd2\x01\x02\x63\xee\x51\xc1\xe7\x7c\x25\xbe\x97\x78\x55\x5d\x64\x4e\x89\xd9\x35\xa2\x01\xa9\x93\xea\x08\x7d\x38\x7c\xfb\x7c\xeb\xdd\xeb\x5f\xf6\x0f\x10\xa9\xd3\xe9\x08\x7d\xd8\xf2\xbf\x9e\xc7\x57\x66\x96\x5f\x82\x74\x26\xda\x1a\x92\xfa\xce\xdf\x7a\x9d\xff\x84\xee\x0c\x06\x41\x20\x1f\xdf\x1b\x0c\xca\x72\x74\x21\xec\x81\x82\xae\x92\xfc\xfc\x3c\xcf\xc0\x56\x89\x2d\x65\xb4\x31\x76\xa4\xa3\x18\x9e\xed\xe5\x22\x4e\x33\xd2\xf9\x6e\xfb\x3b\x54\x96\xfe\x0d\xf4\x04\x69\x12\xaf\x0d\x8b\x10\xd1\xd6\xb3\xd3\x86\x37\x34\x57\xe1\x44\x4e\xe9\xaa\x34\x24\xbf\x82\xb1\xd4\xb2\xa3\x65\x01\xbf\x6a\xf4\x6e\x07\xf1\xa6\xe8\x83\x66\x4a\xb8\x04\x67\x5d\x70\xd8\xb9\x16\xf4\x42\x54\xa4\x02\xf0\x6c\x75\x2b\xa5\x03\xaa\xfe\x62\xee\xbc\x67\x84\x9a\x16\x9c\xb4\x1e\xd7\x00\x1e\x71\x47\xb1\xea\x50\x06\x17\x15\xfa\xac\x46\x0f\x8a\xd0\x9c\xda\xdc\x67\x85\xb1\x8d\x45\xed\x83\x71\x3d\x71\x49\x7d\x3d\x25\x06\xac\xeb\xb4\x39\xae\x4c\xeb\xe9\xf8\xcb\x73\x41\xda\x46\x97\x20\x5d\x4b\x6d\x98\x19\x5e\x59\xa1\xad\xab\x97\x4d\xd5\x64\xa9\x13\xa3\x26\x8d\xeb\xf5\xb5\xb0\xcf\x38\x94\x1b\x9e\x3c\x58\x63\xc0\x98\x1b\x18\xfd\x44\x58\xfb\xc0\xe8\x05\x87\x09\x2b\x71\xab\x3d\xf4\x8b\x42\x3b\x30\x34\x50\x83\x80\xb9\x1d\x5a\x71\x65\xee\xc5\xab\xae\x96\x44\xbc\xf7\xdb\x1a\xa0\x30\xd3\x59\xe1\x00\x5d\xd1\x57\xeb\xe4\xb8\x29\x2d\x67\x14\xee\xa8\xf4\xed\x15\x5d\x95\x24\xa3\x13\x54\xf0\x05\x22\x48\x4f\x15\x0c\x36\xc4\xfe\x26\x48\x35\x01\x4d\x49\x4e\x27\xc8\xd4\x6e\x24\xaf\x56\xba\x89\xa6\x24\xa5\x13\x64\xce\xca\x88\x18\x48\x4d\xd4\xa9\x27\xe9\x36\xbb\x7a\xaa\x53\xaa\xca\xa6\xc9\x0d\x22\xa8\xc1\x22\xa9\x8a\xf5\xfc\x81\xe4\xb4\xe2\x72\x10\x41\x75\xca\x64\x12\x2a\x72\x84\x08\x6a\x32\x13\x90\xd4\xe4\x65\xb4\x04\xb7\x46\xa9\x10\xc4\xc4\xf7\x08\x95\xce\xf3\x96\xcd\x52\xce\x12\xa9\x5e\x4f\xa5\x5c\x82\x64\xd5\x3c\x0b\xfb\xe2\xad\x59\x44\x90\xc8\x93\x33\x26\xdf\xc4\xf2\x14\xd5\xb4\x69\xb2\x06\xc1\xb0\x9b\x33\xd3\xca\x18\x5c\xd1\x0d\xf5\x8c\x1b\xd4\xc7\x67\x70\x33\xa3\x43\x63\xb6\x14\x36\xc9\xa6\x78\x0c\x5a\xd6\x6f\x8a\xbe\xd3\x2d\x0b\xe5\x24\x9b\x12\xf8\x18\x79\xd5\x64\x53\x9d\x55\x3d\xd5\x77\xa6\x5b\xc0\x78\x10\x24\xa8\x9e\x81\x13\x52\x6a\x6f\x4d\xfc\x86\xa6\xf5\x86\xde\x54\xf3\xad\xf0\x46\x5a\xe4\x93\xd9\x83\x72\xee\x8e\xcc\x29\x26\x49\xcd\xfe\x99\xe1\x4d\x83\x65\x47\x0e\x41\x7f\x27\x76\x07\x75\xe0\xe2\x47\x9b\x0a\x26\xc9\xbf\xa1\xc9\x84\x7b\x0c\xe0\xa5\x70\xa2\x3b\x63\x02\x20\xec\x3d\x76\x9a\x49\xc6\xd5\x26\x96\xab\x7d\xcd\x1e\x9d\x33\x76\xd9\x79\x57\x10\x77\x38\xd7\xef\x65\x79\x29\xfc\xdb\x6e\x73\x8b\xe4\xf7\x73\x73\xab\x1f\x87\xb2\x16\xef\x5f\xad\x7e\xdc\x2f\xf8\xc2\x4b\x1d\x4c\x23\x70\x78\xb7\x2a\x49\x28\xe9\xb1\x08\x6b\x4d\x25\x12\x63\x43\xc7\xc7\x96\xa0\x53\x4f\x10\xe5\x9d\x9c\xa2\x5a\xc1\xcd\x42\x2d\x5f\x9b\x00\x6c\x5e\xd8\x0c\x46\xfa\xf0\x3b\x39\x11\x86\x51\x9f\x12\x4e\x9b\xf6\x86\x52\x87\x80\xda\x18\x4e\x3b\x40\x2d\x36\xd5\xe0\x64\xc9\x45\xd5\xed\x3b\xad\x2a\x38\x87\x69\xad\x2a\xad\x4f\xd4\x02\xd3\x90\xe3\x1b\x80\x6a\x59\xf8\x8d\x10\x47\x2e\x40\x27\xe6\x94\xeb\x6d\x88\xd9\xc8\x10\xc4\x3d\x55\x11\x5d\x4b\x52\x9b\xf3\x13\x26\xdf\xf3\xb4\x6d\xa7\x6f\x9d\x37\xf2\x56\x6d\xed\x05\x5f\xdc\x2a\x1c\xdc\xbc\x32\xf9\x0a\x66\x89\x20\xe3\xe4\xaf\xc9\xf3\xf8\xed\x55\xd4\xab\x2e\x24\xf6\x75\xdb\xcc\xfc\x84\x8e\x9b\xe0\x80\x82\x2b\x8d\x01\x91\x24\x05\x5f\x80\xd6\xe7\xff\x86\xf5\xba\xad\x19\x24\xfb\x42\x43\xb2\xb6\x86\x68\x3f\x77\xdc\x37\x93\x39\x14\xf4\xd2\xe3\xde\xf6\xab\x75\x6e\x6e\x64\xa9\x2c\xf7\x45\xcb\x49\x6a\xf3\x42\x17\xed\xc1\x7e\x81\x7a\xa1\x5f\x7e\x8c\x22\xeb\x44\xcd\x5e\xf8\xc2\xf4\xd4\x80\x56\x4a\x6d\xb4\x3b\x80\x76\xbd\x16\x74\xdf\x6b\xd7\x91\xb0\x27\x01\x77\x58\xef\x7a\x67\x01\xa7\x78\x50\x39\xf9\x46\xec\x8a\x25\x85\xcc\x79\xe7\xbc\x10\xb2\x73\xcc\x3a\xb1\xbb\xeb\xee\x23\xdd\x79\x36\xd2\xae\x2d\xf5\x72\xa4\xed\x37\x03\x6a\x51\x50\x69\xc7\x8b\x6b\x77\x77\xb2\x41\x9c\xfb\x9c\xc5\x42\x31\x8f\xa1\x7d\x04\x68\xaf\x35\xd7\xe4\x12\xb5\x27\x83\xa3\xda\x78\x36\x98\xe1\x86\xe8\xda\xcc\x2e\x14\xd6\xdd\xf4\x52\x4a\x72\x24\xfa\x42\xfb\x58\x6b\xde\xa9\x9a\xf5\xb7\x92\x6a\xfb\x06\xf2\x7b\x24\xea\xfc\xa2\xa4\xa0\x8f\xac\x77\xf9\x48\x1a\xfb\xff\x4f\x82\x1e\x79\x03\x7f\x25\xea\x4a\x38\x87\x42\x47\xbc\xde\x2f\xc2\xc3\x16\x52\x4e\x98\xbf\x1d\x69\x35\xea\x90\x13\x3f\x2b\x61\xb0\x12\xdc\x37\xa6\x76\x1a\x55\xc1\xae\xa0\x57\x22\xbc\x16\x78\xb4\x2b\xfa\xa0\x45\x40\x0f\x05\xd9\x15\xe6\x92\xb7\x8d\x64\x5c\x89\xf0\x58\x84\xbb\x75\x4a\x5f\xaa\x32\x1a\x17\xe9\x6b\x51\xbd\x00\x23\x43\x3f\x41\x4a\x2a\x4c\x86\x17\x85\x7a\x8d\x17\x8b\x36\xf0\x96\x4e\x5b\x43\x89\x5d\xd1\x17\x4b\xce\xe2\xd9\x97\x0c\xf2\x1b\xe6\x60\x26\x14\x8a\x19\xe1\x33\x41\x77\x05\x79\xa3\x7e\x47\x67\xae\xe9\xf4\x8d\x80\xaf\x2f\x05\x3d\x13\xe4\xad\xd8\x94\x61\xd4\x0d\x9b\xc8\x9e\xa0\x20\x01\xb0\x92\x00\xf2\x4e\xd0\x16\xe3\x36\x49\x27\x53\xc2\xe8\x60\xc4\x1e\xef\x3c\x78\x38\xea\xf5\x18\x96\xe6\x02\xf1\x2e\xea\x85\x21\x7b\x3c\x7c\x38\x46\x03\x04\x91\x36\x58\x2d\x06\x39\xae\xdf\xd1\x54\x2a\x34\x65\x88\xc9\x41\x93\x2f\xaf\xd4\xad\xe0\x94\x00\x27\x57\xdd\x07\xe7\x60\x44\x4f\x24\x0c\x07\x8e\x80\x73\x1f\x8c\xb2\xc7\xce\xf8\xab\xd7\xcb\xf0\xcd\x2c\x89\xb7\xa1\xbc\x10\x74\x05\x1a\x70\xef\x72\x63\x79\x73\x20\x48\x2c\x44\x7a\x92\x45\xad\x72\x9b\x06\x7f\xc5\xd9\xac\x48\x6a\x6b\xdc\x27\xec\x13\xae\xd8\x23\x3e\x25\xb2\xc4\x44\x6a\x5f\x1f\xc7\x69\xc6\x5a\x41\xfb\x0e\x57\x99\xf1\x0b\x12\x27\xb2\x26\x0e\xa8\xf4\x27\x27\xab\xfc\xf8\x53\xb4\xca\x23\xa9\x3d\xcf\x45\x28\x47\xa5\xe2\x08\x26\x53\x33\x18\xcc\x1f\x0c\x67\xea\x06\xec\x1a\x78\x73\xc8\x8f\x3f\x4d\x72\x85\x14\xcb\x29\x89\x6b\x7c\x23\x30\x92\x83\x51\x52\xc5\x8f\xec\xf5\x12\x6b\x35\x1d\x4f\x92\x29\x11\x34\x9d\x14\xd3\xd1\x86\xf5\x84\x70\xe6\x67\xc2\x18\x5e\x73\xc7\x61\x0a\x0c\xc7\x3c\xad\xbb\xad\x1a\x9f\xea\x86\x17\xa5\x75\x84\x13\x8a\xca\x39\x4b\xb3\xd7\xa3\x2a\x96\xf8\xc8\x8b\xf4\x0d\x01\x4c\x39\x65\xd0\x1b\xa6\x7b\x33\x4a\xe7\xe1\x1e\xf8\x93\x59\x55\x16\x1c\x13\x75\x74\x1b\x8c\xf2\xca\xfc\xb2\xd7\xcb\x2b\x1c\xe1\x93\x7c\x1a\x04\x99\x6e\x86\x7a\x51\xdc\x89\x07\x93\x66\x65\x59\x86\x0c\xb4\xaa\xf5\x45\xf5\x86\x49\x87\xbd\xf2\xad\xee\x35\x7b\xdb\x27\x04\x75\x10\xdc\x59\xa2\x54\xe4\x5b\x8f\x1e\x3d\xf8\x61\x6b\x08\xda\x12\x56\xa3\x34\xf3\x0c\x1b\x26\x83\xad\x1f\xe2\xad\xf9\x74\xb5\x53\x6e\x9f\xa4\xa4\xc8\x98\x48\xe2\x25\xab\x29\x23\xb7\xdc\x92\x67\x78\xc3\x39\x45\x56\x96\x44\xcb\xdf\x36\x9a\x69\xcc\x6c\xed\x70\x36\xac\x24\xa8\x8e\x2a\x23\xc0\xf5\x91\xcf\x39\x67\x54\xbb\x43\xba\x51\x12\x2a\x71\x64\x19\xee\x9a\xad\x66\xe6\xf9\xcc\x27\x37\x8d\x82\xee\x68\x98\xf9\x66\x1e\x85\x1b\x8e\xfb\x30\x1c\x2d\x67\x18\x74\x77\xe7\xe1\xdd\x9d\x7b\xa8\xe7\x62\x45\x5a\x3b\x85\x1d\x4c\x86\x0f\x71\x0f\xdd\xbd\xf7\x14\xa9\x0d\xb7\xc2\x7f\x84\x48\x4a\x07\xa3\xf4\x71\x56\x21\x82\x53\xe1\xc8\x40\x77\x65\x2f\x9f\xb1\x5d\x75\x9e\x1a\xdd\x7f\xa0\x0e\x49\xeb\xf5\xfd\x87\xfa\xef\x0f\xe6\x7d\xb8\x63\x12\xe2\x27\xf4\xfe\xa3\x20\x88\x1f\xd3\x07\xdf\xc3\xdb\xc3\x07\xf0\xf6\xc3\x00\xde\x7e\xf8\x1e\xde\x86\x3b\x3b\xe3\xbc\x67\xa0\x03\xe4\x28\x7e\x3c\xdc\x79\xa4\x12\xdf\x89\x49\x3c\x8d\xe2\xc7\x3b\x83\xfb\xf6\x7d\xf8\xc3\xce\x3a\x7e\xf2\xe4\xe1\xb4\xa7\x5e\x76\x1e\xad\x1f\xde\x0b\x20\xcf\x83\x07\x3b\x3f\x3c\x04\xc0\x0f\xbe\xbf\x77\xff\xbe\xc9\xbe\xb3\x73\x5f\x65\x1f\xee\xb8\xfc\xaa\x70\xf0\xf0\x5e\xa3\x7c\x98\xf6\xe8\x90\xc4\xf4\xe1\x83\x07\xf7\x1e\xf6\xc2\x70\x38\xd8\xb9\x17\xc4\xf8\xf1\xe3\xe1\x60\x0d\xcf\x8d\xde\x63\x62\xe0\xdf\x1f\x00\xfc\x47\x3e\xfc\xe1\x8e\x5f\x41\x6b\x85\x6e\x2d\xe7\xb7\x9a\xb0\x6a\x7b\x84\x4d\x3b\x5f\x1c\x04\xdd\x6e\xd8\x30\x63\xfd\xdb\xf6\xa9\x60\x57\xa8\xf5\x50\x6e\xb3\x66\xd4\x39\xbe\x46\xe2\xaf\xc8\xf8\x79\x7c\x7d\xcc\x5e\xd5\x1c\x83\x98\x0b\xf0\x3d\x01\x71\x11\xab\x1d\xcc\x91\x63\x59\x99\x7d\xd3\x21\x36\x04\xcf\x48\x10\xbc\x1d\xc9\x79\x3e\x82\x7a\x9a\x76\x70\x86\x5f\x87\x50\x91\x35\x3b\xf9\x8d\xe1\xe3\xb6\x39\x0c\x63\x43\x74\x79\x15\x62\xbe\xcb\x5a\x46\xdc\x5a\x4c\x4d\x18\xe1\xd3\x51\x08\x97\x40\xb5\xcd\x77\xbd\xce\x14\x03\x93\x5f\xbe\xb1\x63\x23\xf0\x7a\xdd\x7d\x6b\x14\x68\x9b\x03\x47\x38\xdc\x8d\xa8\x0d\x90\x76\x07\x0e\x1b\x20\xd2\xe9\x17\x1a\xe0\xb6\x42\x13\xe2\x2d\xa7\x4e\xcf\x0b\xba\x14\x04\x5d\xa0\xf0\x41\x10\xe6\xf4\x40\x80\xe1\x1c\x26\xe6\x13\x7c\x19\x87\xbc\xe5\x58\xca\x49\x0e\xe3\x62\x9b\xcc\x48\x8e\xad\xf1\x13\x9b\xe4\xd3\x51\xda\x62\x39\x98\x06\x01\xbf\xc1\xa0\x30\x9f\x52\x19\xa6\x30\x29\x91\x1b\x65\xed\x36\x02\x3e\xaa\x03\x12\x61\xce\x6f\x1a\xec\xae\xbc\x85\x6b\x60\x95\x03\x1f\xb5\xf9\xd8\xbe\xfa\xcd\xb4\xb5\xa9\x3f\x24\x85\x0a\x55\x42\x0a\xf2\xd6\x1c\x97\x25\x79\x2f\x0c\xa9\xad\x31\xd3\x40\x4e\xc9\x2b\x41\x8d\x85\xdd\x1d\x41\x57\x6f\x9f\xef\x0d\xbf\xbf\xf7\x28\x42\xe6\x01\x91\xb7\xcf\xf7\xee\xfd\xf0\xe8\x21\xa4\xa8\x07\x54\x92\x67\x82\xbe\x10\x7d\xcd\x0b\x85\x2b\xeb\xae\xe1\x8e\xe8\x9b\x2c\x04\xf4\xfc\xa5\x64\x5c\x44\x0e\x62\x0b\x37\xfb\x5e\x58\xcb\xf9\x57\x02\xec\xfb\x4a\x57\x5b\x4b\xee\x2a\xf8\x55\x59\x92\x3b\x02\x93\xe7\x5f\xe6\x5f\x9f\x0a\xba\x3a\xe6\x71\x72\xc6\x64\xfb\xed\x49\x0f\x4d\xa6\x08\x38\xaa\xf3\x18\x1c\x2c\x9f\xc7\x88\xa4\xd9\x2c\x4d\x6a\x4e\xa3\x7c\x7b\xb3\x1e\x9a\xa0\x1e\xeb\x21\x55\x8e\xb3\x25\x8b\x65\x2b\xe4\xb2\x24\x9f\x9b\xdc\xf3\x8f\x36\xa1\x6a\xb0\xc2\x0c\xf2\x57\x93\xcf\xfd\x51\x18\xae\x5e\x92\xcf\x0a\x75\xc7\x2c\x02\x47\x7b\xe4\x37\x41\x41\x97\xcd\xa7\x41\xce\x0c\x90\xfc\x24\xe8\x33\xc7\xec\x93\x0f\x70\xe9\x39\xfb\xb5\x60\xfc\xfa\x0d\x67\xf3\xf4\x2a\xea\x0e\x09\x2c\xd3\x67\xb9\x14\xea\xc5\x5c\x9e\x45\x48\xdf\x9e\xd9\xf7\x43\x96\xc9\x34\x63\x0b\xed\xc3\x7e\x91\x9e\xa7\x92\xf1\x08\x05\xc8\xb2\x0e\x60\x77\xa0\x9e\x78\xf4\x42\xf4\xf5\xa3\x49\xf9\x0d\x1c\x6e\xbd\xce\x16\xd7\xaa\xb4\xc6\x84\xe8\x27\x51\xe1\x44\xf4\x4c\xf4\x2b\x04\x99\xfc\x24\xa6\x6e\xc0\xbb\x43\x22\xac\xc0\xe5\x06\x9b\xf6\xce\x6f\xa2\xa2\xb6\xe2\x2c\x5d\x1e\x14\x8b\x85\x2e\x29\x79\x9a\x48\xf5\xfa\x53\x9c\xcd\x16\xe0\x43\x7f\x58\x92\x5f\xaa\xb1\xb5\x64\xd2\x8f\xd3\x41\xe6\x64\x41\x96\xc4\x28\xcc\xcd\xc8\x05\xd5\x54\x73\xf3\xbe\x3e\x19\x5f\xd0\x24\xe4\xe4\x02\x47\x17\xbe\x19\xb9\x6a\xe8\xf8\x82\xce\xc3\x0b\x6c\x31\x48\x5f\x94\x7f\x16\xe1\x85\xa2\x43\x17\x6a\xb5\xd8\x8d\x21\xbc\x68\x8d\x55\x23\x37\x20\xce\xc1\x03\x41\x89\x6d\x08\x62\x82\xb0\x0e\x10\x08\xbe\x7d\x40\xa5\xca\xd2\xf9\x38\x08\xba\xcb\x71\x1c\x72\xf2\xc1\x4e\x06\x27\xa7\x04\x9d\xb1\x6b\x84\x23\x3e\xba\x30\xa1\xad\x9b\x62\xcf\x70\x46\x2f\xf0\x7a\xbd\xe1\x6e\x60\xb6\x5e\xbb\xe0\x25\xb5\xc4\x26\xf3\x07\x19\xd3\x93\x34\x93\xb5\xb4\x17\xa2\xda\x67\x2f\x5c\xc0\xe1\x78\x3c\x59\x84\xcb\x31\x8f\x6e\x68\xa8\x36\x48\x5d\x84\x71\x78\xd1\xf8\x0c\xde\x96\x10\xc6\xd3\x68\xb2\x08\xb9\xcd\x67\x3d\x0a\x61\xac\x15\x22\xaf\xc9\x39\xb8\x9e\x9b\x57\xee\x81\x2e\x6c\xdd\xe7\x2a\xf9\xb3\x08\x13\x8c\xaf\x69\x52\x59\xed\x9e\xd4\x4e\x37\x17\x78\x74\x4d\x8b\xf1\x49\x5f\xe4\x5c\x86\x05\x8e\x4e\x9c\xa1\xb7\xf6\x71\x74\x5d\x31\x86\xc7\x1a\x61\x2e\xe9\xf5\xe4\x78\x4a\x0e\xe9\xc5\xe4\x12\xea\xee\xa6\x2e\x80\xfb\xa1\xce\xb2\x4f\x01\x11\xc6\x6d\x1e\xa1\xc6\x6a\xe3\xb9\xc4\x11\x8f\x78\x2f\x14\x63\xd4\x47\xbd\xcb\x48\xd1\x97\x4b\x45\x5f\xf0\xe8\x2f\x11\x9e\x13\x19\x1e\x92\xfd\x1b\xb0\x16\x3b\x75\xe9\xf3\x92\xfc\x21\xe8\xc6\x56\xdb\xa4\x88\x75\x82\xd4\xd0\xfe\x31\xee\xfd\x24\xc9\x69\xe3\x72\xbc\xeb\x0c\xdd\x3e\x88\x91\xf3\xc3\x42\xa5\x9d\xa6\x20\xa8\x0e\xd5\x55\x5a\x9b\x20\xcd\x7e\x6d\x17\xa8\xed\xeb\x8f\x60\x07\x2a\xf3\x1b\x24\x6a\x26\xb4\x96\x60\x72\xbd\xfe\x20\xec\x73\x2d\xe2\xac\xcb\x11\x04\x86\xb6\x35\x12\xbd\xe3\x86\xff\xa5\xbd\x55\xef\x4e\x59\xc7\x64\xe8\x68\x79\xae\x13\xf8\xb1\x54\x9e\x32\xde\x81\x3a\x48\xa7\x82\x4a\x3a\x39\xef\x54\x7a\x26\x56\xb0\x57\x91\xe7\x46\x73\x35\x45\xd4\x63\xfd\xdc\x90\xb8\x1a\xa1\x24\x2e\x4f\x7b\x1b\xdf\x67\x67\x59\x7e\x99\x75\x74\x26\xdb\xcc\x25\xcf\x2f\xd2\x19\x9b\xa9\xb1\xe3\xae\x9a\x52\x9f\xe8\xea\x84\x98\xab\x73\xf0\x07\x61\x2e\x86\x46\xd6\xd9\x45\x9b\xe2\x92\xce\xb2\x5e\x7f\x16\xa1\x7d\xd1\x01\xd2\xa9\x7b\x25\xcd\xad\x67\x93\xa2\xc8\x7e\x3d\xcb\xb8\x99\x10\x7d\x10\x8d\x14\x6f\xf7\xaa\x3c\x12\xf5\x5d\xe2\xf8\x83\xe8\x7b\xfb\x5b\xd7\xfb\xe4\xb6\x3a\xb6\xb1\xc9\xb5\xb5\xac\x91\x67\xbc\x91\x12\x55\x88\x67\x93\xbc\xad\xd2\x6b\x9c\x4b\x54\x8d\xab\x72\x78\x1f\xec\xa6\xda\xd6\x0e\xfd\x69\x6c\x1f\xa2\x0f\x8d\xdd\x96\x47\xad\x13\x64\x3e\xba\x72\x3c\xf2\x28\xea\xc6\x3e\x7d\x73\xc5\x55\xa6\xf1\x66\x52\x05\xb3\x4a\x23\x7a\xfa\xa3\xdc\xdb\xef\xb3\xc6\xa6\xde\xda\xe2\x5a\x96\x71\xe3\x5d\xd5\x54\x4b\xf0\x76\xfe\xb6\xc6\xbb\xaf\x63\xef\x19\x80\xd8\x17\xa2\x48\xfc\x0d\x2d\xc9\xb9\x1c\xeb\x3f\x5a\x5d\xb8\x85\xb1\x68\xad\x74\x23\xdb\xb8\x2d\x11\x9a\xb1\x91\x0a\x22\xa4\x51\x4b\x7b\x72\xb3\xa0\xc6\x19\x0d\x07\xc4\xbe\xe1\x10\x21\xc5\xe8\x7f\x16\xa1\x4b\x0a\x82\x90\x53\xf7\xa6\x6d\x04\x48\x6c\xb6\xc4\x8d\x13\x55\xa6\xb7\x29\xc5\xa9\x18\xca\x8e\xd0\x28\xd5\x62\x55\x10\x7b\x3e\xd7\x74\x24\xcd\x3a\x4f\xc5\xb8\x96\x16\x31\x45\x3f\x35\xcb\x86\xd2\xac\xc3\xc6\xac\x6f\x5e\xc7\x2e\x3d\x42\x9a\x37\x46\x91\x4b\x1a\x69\x4f\x76\x4f\xc5\x24\x9d\x8e\xf8\x7a\x1d\xd6\x7d\x72\x67\xe0\x9f\x42\x0d\x7b\x10\x70\xbd\x05\xeb\xd7\x4a\x46\x53\xd0\xc1\xa8\xf0\xe5\x74\xc6\x96\x5c\x50\x3e\x29\xa6\xa3\xbc\x9a\x5f\x2d\x6d\x54\xbd\x9b\x88\xe9\x7a\xfd\x97\x08\x63\xf2\x8b\x08\xd5\x1b\x11\x24\x51\x15\x6d\xcc\x01\xf1\xca\x93\xdc\x2e\xbd\xdc\x2d\x21\xad\x3b\x6e\x06\xd8\x34\x95\xe4\x1e\x89\xc9\x1b\x48\x9a\x57\xe4\xd5\xc1\xf3\x96\x4a\xee\x36\x1d\xe3\x00\xd6\x1a\xd5\xe4\x15\x6d\xc0\x64\x41\xc1\x26\x27\x6f\x12\x4b\xf0\xa8\xe1\x42\x5d\xe7\x4d\x62\x14\x04\x4d\xc1\xa2\xcb\x32\x5e\xf4\xa8\xda\x14\x1f\x51\x2d\x24\x1b\x0e\x06\x83\x7b\x77\xef\x3d\x0d\x50\x54\x7d\xd9\xdf\xb9\xfb\xc3\xde\xdd\x1f\xee\x05\xa8\x72\xcd\xf8\x64\x30\x5e\xf4\xe6\x10\x91\x87\xfc\xdc\x66\xf0\x49\x52\xbc\xd2\xae\x49\xbc\xcb\x6a\xa3\x96\xe0\x8e\xe9\xf5\x39\x77\xa0\x83\x20\x8c\x29\xeb\xa1\x31\xea\xfd\xa1\x91\x81\x8f\x5f\x8a\x89\x9c\x86\x31\xe1\x24\xc5\x11\x5c\xab\x82\x63\x57\x9b\x9c\xe2\xc8\x3e\xfe\x21\xc2\x1c\x93\x14\x97\xe4\x57\xb1\x71\x4d\x45\xd8\x66\x54\xfb\x81\xc7\xb1\xf8\x57\xfc\xe3\xda\x7d\xff\xaa\x04\x11\xf2\x1d\x6d\x22\x35\x76\x4f\x10\xc1\x5b\x7d\x30\x3a\xf4\x39\x45\xdb\xf1\x32\xdd\xbe\x18\x6c\x5b\x57\xcf\xdb\x0d\xc7\xd0\x29\x5d\x95\x24\xf6\x8c\x32\x2a\x85\x89\xfe\x71\x3e\xbb\x06\x67\x2a\xfa\xd1\xd3\xb7\xd5\x09\xe3\x86\xda\x92\x67\xfe\xfc\x2a\x15\x22\xcd\x4e\x3a\x36\x8e\x4c\xa7\x03\x17\xd7\x4c\x11\xde\x8e\x2a\x8b\x30\x8e\x42\xd6\xbf\x03\xb1\x4e\xdf\xd8\x6f\x22\x08\x6a\xf7\x15\x1b\xdf\xdb\x7c\xac\x2b\xf6\x04\x34\x6d\x36\x72\x4f\x24\xa8\x92\xfd\x2c\x42\x73\xe7\xcc\x7b\x39\x91\xc0\xaf\x42\x70\xf8\xdf\x85\x76\xa4\x2e\x96\x31\x38\xd1\x1d\x80\xa5\x04\x8b\x56\xc6\x1c\x42\x6b\xf9\x57\x9e\xb5\xe1\xa0\xea\xc2\xe5\x94\x25\x81\x00\x01\x5c\xb8\x02\x6d\x47\x28\x63\xd0\x50\x92\x9a\x93\xee\xf6\xac\x5e\x5d\x00\xbc\xee\xfb\xbc\xad\x8c\x19\x2e\xed\x4f\xda\x8b\xf0\x81\x35\xa9\x0a\xdb\x85\x05\xf5\x98\x18\x30\xa1\xb5\x94\xb1\xec\xa7\x33\xb0\x6f\x5c\xb0\xbd\xfc\x7c\x19\x73\x16\xb2\x3e\x44\x49\xab\x67\xdc\xc8\xd3\x08\xb6\x01\xbe\x97\x63\x68\x81\x88\x56\x8b\x3c\x9e\xed\x35\x47\x4a\xb5\x2b\x1c\x10\x09\x4a\x88\xa9\xc4\x21\x7a\xf9\x7a\xf7\xd9\xd1\xde\xeb\x83\xe7\x2f\x7e\x44\x70\xb3\x54\x0d\x4b\xdb\x10\xcc\x8b\xb0\x28\xfa\xe7\x31\x3f\xab\xba\xdb\x61\xa1\x3b\x38\x38\xf7\xdd\x45\xff\x92\xc7\xcb\xfa\x4d\x30\x5c\xd5\x8c\xb0\x71\x35\x0a\xed\xbf\xa0\xac\x9f\xb1\x2b\xa9\x9d\x8d\x76\x06\xce\x59\x28\xb5\x6d\x04\xb7\x8d\xb3\x54\x80\xee\x02\xd1\xb9\xe9\x3d\xa2\xd8\x52\x26\x93\x53\xe7\x8d\x5e\x7b\x15\xed\xdc\x8b\x78\x88\x0e\xf7\xdf\x1d\xbd\x38\x78\xf1\xee\xc5\xee\xcb\x17\x7f\xee\x3f\x43\xa4\x3b\x30\x9f\xef\x47\xe0\x7b\x94\x65\x33\xe7\x97\x94\xf5\x85\xcc\x97\x21\x04\xe0\x80\x51\xc4\x21\x2e\x49\x0d\xf8\xff\x66\x24\xf4\x59\xed\x3f\x3d\x1e\x7f\x0a\xe0\xb8\x79\x9e\xcb\x1f\xf5\xfa\xc0\x76\x8c\xee\x93\x5f\x45\xb8\xb2\xd4\x2a\xef\xbb\x68\xe8\x70\x90\xd2\x31\xee\x88\x22\x0f\x6a\x75\xb9\xe1\xd9\x19\x0c\x29\xa5\x61\x4a\x59\x5f\xb0\x4c\x62\x63\x2b\x34\x0e\x63\x9a\x82\xa6\x65\x15\xd7\xc6\x0c\xf4\xee\xde\xde\xeb\xf7\x07\xef\x0e\x11\x89\xd7\xeb\xc9\x14\xe3\x28\x0b\x91\x38\xcd\x2f\x8d\xed\x0c\x22\x2b\xe3\xbb\xe2\xb9\x36\x49\x92\x79\x07\x46\xb7\x63\x21\xf5\x11\x18\xe0\xd7\xed\xa5\x8c\x5d\x95\x8d\x17\x52\x92\x95\xea\x24\x04\x21\xd6\x6d\x7d\xf8\x95\x53\x59\x92\xf3\x42\xc6\x66\x55\x78\xe8\xde\x0c\x71\xe8\xbc\x10\x94\xa4\x81\x3f\x1b\x39\x3d\xd2\x61\xb3\xdb\x51\xd8\xc8\x6b\x3b\x49\x59\xe9\x3b\x54\xfb\x13\x14\x1e\x5e\xde\xa0\x88\x55\xd4\x8d\x46\xe1\x4c\xe8\x6d\x08\x56\x95\xb8\x66\xae\x69\x0d\xa1\x75\x80\xb4\x3e\x28\x64\x8c\x38\x5c\xab\xb6\xe6\xa7\x2e\xf6\x60\x25\x4f\xf7\xe4\xf0\x86\x23\x91\xf3\x66\xe8\x34\x44\xd2\x99\x8b\x54\xa4\xde\x92\x3c\x8b\xc0\x6e\x6e\xeb\x22\x89\xf9\x0c\x19\xb7\x92\xfb\xb3\x54\xe6\x5c\x91\x71\xd0\xc1\xd0\x7e\x48\x26\x53\xbb\xf9\xad\xe2\xe5\xf2\x45\x36\xcf\x23\x39\x27\x3c\x2f\x24\x13\xd1\xc4\xd4\x54\xc1\x5e\xc6\xf2\x34\x42\xdb\xf5\xb8\x1b\xf1\x72\x19\xe5\x45\x59\x4e\x49\x16\x5f\xbc\x90\xec\xbc\x2a\xb9\x5b\x6b\xd5\xab\x58\x02\x33\x16\xc9\x79\x5f\xbd\xeb\x7a\xa2\x1b\x6b\x71\x57\xec\xf3\x7e\x3a\x23\x68\x1b\x61\x55\x89\x90\x39\x67\xd1\xef\x02\x74\x99\xfe\xbf\xff\x3f\x00\x00\xff\xff\x54\x06\xa5\xc7\xd6\x76\x01\x00") func init() { err := CTX.Err() diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue index 9a98b2317e..7d15d42376 100644 --- a/ui/components/accounts/AccountsList.vue +++ b/ui/components/accounts/AccountsList.vue @@ -15,7 +15,7 @@ - + @@ -33,8 +33,10 @@ From 58cb3da61f84d03a080338c911ad86889b83f8cb Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 10:58:13 +0200 Subject: [PATCH 183/407] Add changelog entries --- changelog/unreleased/align-project-structure.md | 5 +++++ changelog/unreleased/user-listing-ui.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 changelog/unreleased/align-project-structure.md create mode 100644 changelog/unreleased/user-listing-ui.md diff --git a/changelog/unreleased/align-project-structure.md b/changelog/unreleased/align-project-structure.md new file mode 100644 index 0000000000..da0e28fa8b --- /dev/null +++ b/changelog/unreleased/align-project-structure.md @@ -0,0 +1,5 @@ +Change: Align structure of this extension with other extensions + +We aim to have a similar project structure for all our ocis extensions. This extension was different with regard to the structure of the server command and naming of some flag names. + +https://github.com/owncloud/ocis-accounts/pull/51 diff --git a/changelog/unreleased/user-listing-ui.md b/changelog/unreleased/user-listing-ui.md new file mode 100644 index 0000000000..36e3530939 --- /dev/null +++ b/changelog/unreleased/user-listing-ui.md @@ -0,0 +1,5 @@ +Enhancement: Add simple user listing UI + +We added an extension for ocis-web that shows a simple list of all existing users. + +https://github.com/owncloud/ocis-accounts/pull/51 From 8158999cd1efb340041fb23d6d7f85524ed5cf4f Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 11:00:25 +0200 Subject: [PATCH 184/407] Ignore package.json and rollup.config.js on codacy --- .codacy.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.codacy.yml b/.codacy.yml index 855b4f298b..98fa739209 100644 --- a/.codacy.yml +++ b/.codacy.yml @@ -4,5 +4,7 @@ exclude_paths: - changelog/** - docs/** - pkg/proto/** + - package.json + - rollup.config.js ... From 4e1d6b45579a02e0b694dfc7090c467fdf9809f4 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 11:04:03 +0200 Subject: [PATCH 185/407] Add fake imports to make fileb0x work --- pkg/assets/assets.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/assets/assets.go b/pkg/assets/assets.go index a09debf445..c4e1efa088 100644 --- a/pkg/assets/assets.go +++ b/pkg/assets/assets.go @@ -7,6 +7,12 @@ import ( "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-pkg/v2/log" + + // Fake the import to make the dep tree happy. + _ "golang.org/x/net/context" + + // Fake the import to make the dep tree happy. + _ "golang.org/x/net/webdav" ) //go:generate go run github.com/UnnoTed/fileb0x embed.yml From 30a0742d2a0f765a2490ec965e402e00c14e4272 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 11:11:10 +0200 Subject: [PATCH 186/407] Update flagset docs --- docs/configuration.md | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 docs/configuration.md diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000000..f6c3830234 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,84 @@ +--- +title: "Configuration" +date: "2020-07-01T11:10:52+0200" +weight: 20 +geekdocRepo: https://github.com/owncloud/ocis-reva +geekdocEditPath: edit/master/docs +geekdocFilePath: configuration.md +--- + +{{< toc >}} + +## Configuration + +oCIS Single Binary is not responsible for configuring extensions. Instead, each extension could either be configured by environment variables, cli flags or config files. + +Each extension has its dedicated documentation page (e.g. https://owncloud.github.io/extensions/ocis_proxy/configuration) which lists all possible configurations. Config files and environment variables are picked up if you use the `./bin/ocis server` command within the oCIS single binary. Command line flags must be set explicitly on the extensions subcommands. + +### Configuration using config files + +Out of the box extensions will attempt to read configuration details from: + +```console +/etc/ocis +$HOME/.ocis +./config +``` + +For this configuration to be picked up, have a look at your extension `root` command and look for which default config name it has assigned. *i.e: ocis-proxy reads `proxy.json | yaml | toml ...`*. + +So far we support the file formats `JSON` and `YAML`, if you want to get a full example configuration just take a look at [our repository](https://github.com/owncloud/ocis/tree/master/config), there you can always see the latest configuration format. These example configurations include all available options and the default values. The configuration file will be automatically loaded if it's placed at `/etc/ocis/ocis.yml`, `${HOME}/.ocis/ocis.yml` or `$(pwd)/config/ocis.yml`. + +### Envrionment variables + +If you prefer to configure the service with environment variables you can see the available variables below. + +### Commandline flags + +If you prefer to configure the service with commandline flags you can see the available variables below. Command line flags are only working when calling the subcommand directly. + +### ocis-reva server + +Start ocis accounts service + +Usage: `ocis-reva server [command options] [arguments...]` + +--http-namespace | $ACCOUNTS_HTTP_NAMESPACE +: Set the base namespace for the http namespace. Default: `com.owncloud.web`. + +--http-addr | $ACCOUNTS_HTTP_ADDR +: Address to bind http server. Default: `localhost:9181`. + +--http-root | $ACCOUNTS_HTTP_ROOT +: Root path of http server. Default: `/`. + +--grpc-namespace | $ACCOUNTS_GRPC_NAMESPACE +: Set the base namespace for the grpc namespace. Default: `com.owncloud.api`. + +--grpc-addr | $ACCOUNTS_GRPC_ADDR +: Address to bind grpc server. Default: `localhost:9180`. + +--name | $ACCOUNTS_NAME +: service name. Default: `accounts`. + +--accounts-data-path | $ACCOUNTS_DATA_PATH +: accounts folder. Default: `/var/tmp/ocis-accounts`. + +--asset-path | $HELLO_ASSET_PATH +: Path to custom assets. + +### ocis-reva ocis-accounts + +Provide accounts and groups for oCIS + +Usage: `ocis-reva ocis-accounts [command options] [arguments...]` + +--log-level | $ACCOUNTS_LOG_LEVEL +: Set logging level. Default: `info`. + +--log-pretty | $ACCOUNTS_LOG_PRETTY +: Enable pretty logging. Default: `true`. + +--log-color | $ACCOUNTS_LOG_COLOR +: Enable colored logging. Default: `true`. + From fb3b6dcd5f69e9b9e946dd339e54bd84b4581667 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 11:40:00 +0200 Subject: [PATCH 187/407] Fix generate target in Makefile --- Makefile | 9 +++++++-- pkg/assets/embed.go | 4 ++-- reflex.conf | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 2bcfafcf84..3d02e9afbe 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ endif PACKAGES ?= $(shell go list ./...) SOURCES ?= $(shell find . -name "*.go" -type f -not -path "./node_modules/*") -GENERATE ?= $(PACKAGES) $(IMPORT)/pkg/assets +GENERATE ?= $(IMPORT)/pkg/assets TAGS ?= @@ -79,7 +79,7 @@ lint: for PKG in $(PACKAGES); do go run golang.org/x/lint/golint -set_exit_status $$PKG || exit 1; done; .PHONY: generate -generate: +generate: protobuf webapp go generate $(GENERATE) .PHONY: changelog @@ -197,3 +197,8 @@ $(PROTO_SRC)/accounts.swagger.json: $(PROTO_SRC)/accounts.proto .PHONY: protobuf protobuf: $(GOPATH)/bin/protoc-gen-go $(GOPATH)/bin/protoc-gen-micro $(GOPATH)/bin/protoc-gen-microweb $(GOPATH)/bin/protoc-gen-swagger \ $(PROTO_SRC)/accounts.pb.go $(PROTO_SRC)/accounts.pb.micro.go $(PROTO_SRC)/accounts.pb.web.go $(PROTO_SRC)/accounts.swagger.json + +.PHONY: webapp +webapp: + yarn generate-api + yarn build diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index 0b2bc6a0a1..4b9b254250 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-07-01 10:47:43.466579 +0200 CEST m=+0.004917707" from config file "embed.yml" DO NOT EDIT. -// modification hash(7584f18725298c447104e0f01f48babf.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-07-01 11:39:14.734417 +0200 CEST m=+0.006772493" from config file "embed.yml" DO NOT EDIT. +// modification hash(75ea29610fe7f7fa52cd0276c7e2565c.8058aec596c5fb73022d09bb97af796e) package assets diff --git a/reflex.conf b/reflex.conf index 3e496fb0b4..61ed9b137f 100644 --- a/reflex.conf +++ b/reflex.conf @@ -2,4 +2,4 @@ -r '^(cmd|pkg)/.*\.go$' -R '^node_modules/' -s -- sh -c 'make bin/ocis-accounts && bin/ocis-accounts server --asset-path assets/' # frontend --r '^ui/.*\.(vue|js)$' -R '^node_modules/' -- sh -c 'yarn build && make generate' +-r '^ui/.*\.(vue|js)$' -R '^node_modules/' -- sh -c 'make generate' From 2e102066dbf42137163ddc40f1e0d345c88bfd1f Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 11:44:21 +0200 Subject: [PATCH 188/407] Build container has no yarn --- Makefile | 7 +------ reflex.conf | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 3d02e9afbe..72c4f577ab 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,7 @@ lint: for PKG in $(PACKAGES); do go run golang.org/x/lint/golint -set_exit_status $$PKG || exit 1; done; .PHONY: generate -generate: protobuf webapp +generate: protobuf go generate $(GENERATE) .PHONY: changelog @@ -197,8 +197,3 @@ $(PROTO_SRC)/accounts.swagger.json: $(PROTO_SRC)/accounts.proto .PHONY: protobuf protobuf: $(GOPATH)/bin/protoc-gen-go $(GOPATH)/bin/protoc-gen-micro $(GOPATH)/bin/protoc-gen-microweb $(GOPATH)/bin/protoc-gen-swagger \ $(PROTO_SRC)/accounts.pb.go $(PROTO_SRC)/accounts.pb.micro.go $(PROTO_SRC)/accounts.pb.web.go $(PROTO_SRC)/accounts.swagger.json - -.PHONY: webapp -webapp: - yarn generate-api - yarn build diff --git a/reflex.conf b/reflex.conf index 61ed9b137f..3e496fb0b4 100644 --- a/reflex.conf +++ b/reflex.conf @@ -2,4 +2,4 @@ -r '^(cmd|pkg)/.*\.go$' -R '^node_modules/' -s -- sh -c 'make bin/ocis-accounts && bin/ocis-accounts server --asset-path assets/' # frontend --r '^ui/.*\.(vue|js)$' -R '^node_modules/' -- sh -c 'make generate' +-r '^ui/.*\.(vue|js)$' -R '^node_modules/' -- sh -c 'yarn build && make generate' From 7bbbcc126fd40f49048e11267d0287a0d8b0ea36 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 13:04:24 +0200 Subject: [PATCH 189/407] Build js assets on drone --- .drone.star | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/.drone.star b/.drone.star index a204a15edb..aebfe43f06 100644 --- a/.drone.star +++ b/.drone.star @@ -32,6 +32,17 @@ def testing(ctx): 'arch': 'amd64', }, 'steps': [ + { + 'name': 'frontend', + 'image': 'webhippie/nodejs:latest', + 'pull': 'always', + 'commands': [ + 'yarn install --frozen-lockfile', + 'yarn lint', + 'yarn test', + 'yarn build', + ], + }, { 'name': 'generate', 'image': 'webhippie/golang:1.13', @@ -152,6 +163,15 @@ def docker(ctx, arch): 'arch': arch, }, 'steps': [ + { + 'name': 'frontend', + 'image': 'webhippie/nodejs:latest', + 'pull': 'always', + 'commands': [ + 'yarn install --frozen-lockfile', + 'yarn build', + ], + }, { 'name': 'generate', 'image': 'webhippie/golang:1.13', @@ -290,6 +310,15 @@ def binary(ctx, name): 'arch': 'amd64', }, 'steps': [ + { + 'name': 'frontend', + 'image': 'webhippie/nodejs:latest', + 'pull': 'always', + 'commands': [ + 'yarn install --frozen-lockfile', + 'yarn build', + ], + }, { 'name': 'generate', 'image': 'webhippie/golang:1.13', From e38f0a491cafa70af341a9aed046db4b42b266f6 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 1 Jul 2020 15:42:30 +0200 Subject: [PATCH 190/407] Work with pointers instead of copying sync.Mutex --- pkg/service/v0/service.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 225e69a825..df6b9e94d8 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -120,14 +120,14 @@ func New(opts ...Option) (s *Service, err error) { // TODO groups for i := range accounts { var bytes []byte - if bytes, err = json.Marshal(accounts[i]); err != nil { - logger.Error().Err(err).Interface("account", accounts[i]).Msg("could not marshal default account") + if bytes, err = json.Marshal(&accounts[i]); err != nil { + logger.Error().Err(err).Interface("account", &accounts[i]).Msg("could not marshal default account") return } path := filepath.Join(accountsDir, accounts[i].Id) if err = ioutil.WriteFile(path, bytes, 0600); err != nil { accounts[i].PasswordProfile.Password = "***REMOVED***" - logger.Error().Err(err).Str("path", path).Interface("account", accounts[i]).Msg("could not persist default account") + logger.Error().Err(err).Str("path", path).Interface("account", &accounts[i]).Msg("could not persist default account") return } } @@ -172,9 +172,9 @@ func New(opts ...Option) (s *Service, err error) { logger.Error().Err(err).Str("path", path).Msg("could not unmarshal account") continue } - logger.Debug().Interface("account", a).Msg("found account") - if err = s.index.Index(a.Id, a); err != nil { - logger.Error().Err(err).Str("path", path).Interface("account", a).Msg("could not index account") + logger.Debug().Interface("account", &a).Msg("found account") + if err = s.index.Index(a.Id, &a); err != nil { + logger.Error().Err(err).Str("path", path).Interface("account", &a).Msg("could not index account") continue } } @@ -262,11 +262,11 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest s.log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") continue } - s.log.Debug().Interface("account", a).Msg("found account") + s.log.Debug().Interface("account", &a).Msg("found account") if password != "" { if a.PasswordProfile == nil { - s.log.Debug().Interface("account", a).Msg("no password profile") + s.log.Debug().Interface("account", &a).Msg("no password profile") return fmt.Errorf("invalid password") } if !s.passwordIsValid(a.PasswordProfile.Password, password) { From d6c51277611c28446e043662afb35ba060085de7 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Thu, 2 Jul 2020 12:55:41 +0200 Subject: [PATCH 191/407] Bind to 0.0.0.0 instead of localhost --- pkg/flagset/flagset.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index 35195fac05..140a801e3a 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -44,7 +44,7 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { }, &cli.StringFlag{ Name: "http-addr", - Value: "localhost:9181", + Value: "0.0.0.0:9181", Usage: "Address to bind http server", EnvVars: []string{"ACCOUNTS_HTTP_ADDR"}, Destination: &cfg.HTTP.Addr, @@ -65,7 +65,7 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { }, &cli.StringFlag{ Name: "grpc-addr", - Value: "localhost:9180", + Value: "0.0.0.0:9180", Usage: "Address to bind grpc server", EnvVars: []string{"ACCOUNTS_GRPC_ADDR"}, Destination: &cfg.GRPC.Addr, From b2d891c7512bf8de88c7f44c82b4926f6f8729f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 2 Jul 2020 11:30:09 +0000 Subject: [PATCH 192/407] Automated changelog update [skip ci] --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6ac70152a..fd9008d045 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,13 +6,23 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary +* Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) * Change - Enable accounts on creation: [#43](https://github.com/owncloud/ocis-accounts/issues/43) * Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) +* Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) ## Details +* Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) + + We aim to have a similar project structure for all our ocis extensions. This extension was + different with regard to the structure of the server command and naming of some flag names. + + https://github.com/owncloud/ocis-accounts/pull/51 + + * Change - Enable accounts on creation: [#43](https://github.com/owncloud/ocis-accounts/issues/43) Accounts have been created with the account_enabled flag set to false. Now when they are @@ -45,6 +55,13 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/30 + +* Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) + + We added an extension for ocis-web that shows a simple list of all existing users. + + https://github.com/owncloud/ocis-accounts/pull/51 + # Changelog for [0.1.1] (2020-04-29) The following sections list the changes in ocis-accounts 0.1.1. From f924285cf8cdd344bb802e9659e9d83fd83e459b Mon Sep 17 00:00:00 2001 From: jasson99 Date: Fri, 3 Jul 2020 15:09:19 +0545 Subject: [PATCH 193/407] Add tests infrastructure and tests for ocis-accounts --- .drone.star | 177 ++ Makefile | 6 + nightwatch.conf.js | 11 + package.json | 18 +- ui/tests/acceptance/features/accounts.feature | 13 + .../acceptance/pageobjects/accountsPage.js | 41 + .../stepDefinitions/accountsContext.js | 13 + .../config/drone/identifier-registration.yml | 16 + ui/tests/config/drone/ocis-config.json | 28 + ui/tests/config/drone/proxy-config.json | 73 + ui/tests/run-acceptance-test.sh | 59 + yarn.lock | 1616 ++++++++++++++++- 12 files changed, 2021 insertions(+), 50 deletions(-) create mode 100644 nightwatch.conf.js create mode 100644 ui/tests/acceptance/features/accounts.feature create mode 100644 ui/tests/acceptance/pageobjects/accountsPage.js create mode 100644 ui/tests/acceptance/stepDefinitions/accountsContext.js create mode 100644 ui/tests/config/drone/identifier-registration.yml create mode 100644 ui/tests/config/drone/ocis-config.json create mode 100644 ui/tests/config/drone/proxy-config.json create mode 100755 ui/tests/run-acceptance-test.sh diff --git a/.drone.star b/.drone.star index aebfe43f06..8ccfe3bd67 100644 --- a/.drone.star +++ b/.drone.star @@ -1,6 +1,7 @@ def main(ctx): before = [ testing(ctx), + UITests(ctx, 'master', '787c2443dd4ab977f69a2e34751dc27a8928da1e', 'master', 'b990689a83630baa83f4311718ff8c819fb95ef9') ] stages = [ @@ -261,6 +262,182 @@ def docker(ctx, arch): }, } +def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'UiTests', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'build', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make build', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'build-ocis', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'git clone -b %s --single-branch --no-tags https://github.com/owncloud/ocis /srv/app/ocis' % (ocisBranch), + 'cd /srv/app/ocis', + 'git checkout %s' % (ocisCommitId), + 'make build', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app' + }, + ] + }, + { + 'name': 'ocis-server', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'detach': True, + 'environment' : { + 'REVA_LDAP_HOSTNAME': 'ldap', + 'REVA_LDAP_PORT': 636, + 'REVA_LDAP_BIND_PASSWORD': 'admin', + 'REVA_LDAP_BIND_DN': 'cn=admin,dc=owncloud,dc=com', + 'REVA_LDAP_BASE_DN': 'dc=owncloud,dc=com', + 'REVA_STORAGE_HOME_DATA_TEMP_FOLDER': '/srv/app/tmp/', + 'REVA_STORAGE_LOCAL_ROOT': '/srv/app/tmp/reva/root', + 'REVA_STORAGE_OWNCLOUD_DATADIR': '/srv/app/tmp/reva/data', + 'REVA_STORAGE_OC_DATA_TEMP_FOLDER': '/srv/app/tmp/', + 'REVA_STORAGE_OWNCLOUD_REDIS_ADDR': 'redis:6379', + 'REVA_OIDC_ISSUER': 'https://ocis-server:9200', + 'PHOENIX_WEB_CONFIG': '/drone/src/ui/tests/config/drone/ocis-config.json', + 'PHOENIX_ASSET_PATH': '/srv/app/phoenix/dist', + 'KONNECTD_IDENTIFIER_REGISTRATION_CONF': '/drone/src/ui/tests/config/drone/identifier-registration.yml', + 'KONNECTD_ISS': 'https://ocis-server:9200', + 'KONNECTD_TLS': 'true', + 'LDAP_URI': 'ldap://ldap', + 'LDAP_BINDDN': 'cn=admin,dc=owncloud,dc=com', + 'LDAP_BINDPW': 'admin', + 'LDAP_BASEDN': 'dc=owncloud,dc=com', + 'OCIS_CONFIG_FILE': '/drone/src/ui/tests/config/drone/proxy-config.json' + }, + 'commands': [ + 'mkdir -p /srv/app/tmp/reva', + # First run settings service because accounts need it to register the settings bundles + '/srv/app/ocis/bin/ocis settings &', + # Now start the accounts service + 'bin/ocis-accounts server &', + # Now run all the ocis services except the accounts and settings because they are already running + '/srv/app/ocis/bin/ocis server', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app' + }, + ] + }, + { + 'name': 'WebUIAcceptanceTests', + 'image': 'owncloudci/nodejs:10', + 'pull': 'always', + 'environment': { + 'SERVER_HOST': 'https://ocis-server:9200', + 'BACKEND_HOST': 'https://ocis-server:9200', + 'RUN_ON_OCIS': 'true', + 'OCIS_REVA_DATA_ROOT': '/srv/app/tmp/reva', + 'OCIS_SKELETON_DIR': '/srv/app/testing/data/webUISkeleton', + 'PHOENIX_CONFIG': '/drone/src/ui/tests/config/drone/ocis-config.json', + 'LDAP_SERVER_URL': 'ldap://ldap', + 'TEST_TAGS': 'not @skipOnOCIS and not @skip', + 'LOCAL_UPLOAD_DIR': '/uploads', + 'PHOENIX_PATH': '/srv/app/phoenix', + 'FEATURE_PATH': 'ui/tests/acceptance/features', + 'NODE_TLS_REJECT_UNAUTHORIZED': '0' + }, + 'commands': [ + 'git clone --depth=1 https://github.com/owncloud/testing.git /srv/app/testing', + 'git clone -b %s --single-branch https://github.com/owncloud/phoenix /srv/app/phoenix' % (phoenixBranch), + 'cd /srv/app/phoenix', + 'git checkout %s' % (phoenixCommitId), + 'cp -r /srv/app/phoenix/tests/acceptance/filesForUpload/* /uploads', + 'yarn install-all', + 'yarn dist', + 'cp -r /drone/src/ui/tests/config/drone/ocis-config.json /srv/app/phoenix/dist/config.json', + 'cd /drone/src', + 'yarn install --all', + 'make test-acceptance-webui' + ], + 'volumes': [{ + 'name': 'gopath', + 'path': '/srv/app', + }, + { + 'name': 'uploads', + 'path': '/uploads' + }] + }, + ], + 'services': [ + { + 'name': 'ldap', + 'image': 'osixia/openldap:1.3.0', + 'pull': 'always', + 'environment': { + 'LDAP_DOMAIN': 'owncloud.com', + 'LDAP_ORGANISATION': 'ownCloud', + 'LDAP_ADMIN_PASSWORD': 'admin', + 'LDAP_TLS_VERIFY_CLIENT': 'never', + 'HOSTNAME': 'ldap' + }, + }, + { + 'name': 'redis', + 'image': 'webhippie/redis', + 'pull': 'always', + 'environment': { + 'REDIS_DATABASES': 1 + }, + }, + { + 'name': 'selenium', + 'image': 'selenium/standalone-chrome-debug:3.141.59-20200326', + 'pull': 'always', + 'volumes': [{ + 'name': 'uploads', + 'path': '/uploads' + }], + }, + ], + 'volumes': [ + { + 'name': 'gopath', + 'temp': {}, + }, + { + 'name': 'uploads', + 'temp': {} + } + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + 'refs/pull/**', + ], + }, + } + def binary(ctx, name): if ctx.build.event == "tag": settings = { diff --git a/Makefile b/Makefile index 72c4f577ab..bc174e3a02 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,8 @@ PACKAGES ?= $(shell go list ./...) SOURCES ?= $(shell find . -name "*.go" -type f -not -path "./node_modules/*") GENERATE ?= $(IMPORT)/pkg/assets +FEATURE_PATH ?= "ui/tests/acceptance/features" + TAGS ?= ifndef OUTPUT @@ -152,6 +154,10 @@ docs-build: .PHONY: docs docs: docs-copy docs-build +.PHONY: test-acceptance-webui +test-acceptance-webui: + ./ui/tests/run-acceptance-test.sh $(FEATURE_PATH) + .PHONY: watch watch: go run github.com/cespare/reflex -c reflex.conf diff --git a/nightwatch.conf.js b/nightwatch.conf.js new file mode 100644 index 0000000000..39988add62 --- /dev/null +++ b/nightwatch.conf.js @@ -0,0 +1,11 @@ +const path = require('path') +const PHOENIX_PATH = process.env.PHOENIX_PATH + +const config = require(path.join(PHOENIX_PATH, 'nightwatch.conf.js')) + +config.page_objects_path = [PHOENIX_PATH + '/tests/acceptance/pageObjects', 'ui/tests/acceptance/pageobjects'] +config.custom_commands_path = PHOENIX_PATH + '/tests/acceptance/customCommands' + +module.exports = { + ...config +} diff --git a/package.json b/package.json index 4372307e1e..3ca3778fe0 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "build": "rollup -c", "watch": "rollup -c -w", "test": "echo 'Not implemented'", - "generate-api": "node node_modules/swagger-vue-generator/bin/generate-api.js --package-version v0 --source pkg/proto/v0/accounts.swagger.json --moduleName accounts --destination ui/client/accounts/index.js" + "generate-api": "node node_modules/swagger-vue-generator/bin/generate-api.js --package-version v0 --source pkg/proto/v0/accounts.swagger.json --moduleName accounts --destination ui/client/accounts/index.js", + "acceptance-tests": "cucumber-js --require-module @babel/register --require-module @babel/polyfill --require ${TEST_INFRA_DIRECTORY}/acceptance/setup.js --require ui/tests/acceptance/stepDefinitions --require ${TEST_INFRA_DIRECTORY}/acceptance/stepDefinitions --format node_modules/cucumber-pretty -t \"${TEST_TAGS:-not @skip and not @skipOnOC10}\"" }, "devDependencies": { "@babel/core": "^7.7.7", @@ -25,14 +26,19 @@ "@babel/plugin-proposal-object-rest-spread": "^7.7.7", "@babel/plugin-syntax-dynamic-import": "^7.7.4", "@babel/plugin-transform-runtime": "^7.8.0", + "@babel/polyfill": "^7.10.1", "@babel/preset-env": "^7.7.7", + "@babel/register": "7.10.1", "@erquhart/rollup-plugin-node-builtins": "^2.1.5", "@rollup/plugin-commonjs": "^11.0.1", "@rollup/plugin-json": "^4.0.1", "@rollup/plugin-replace": "^2.3.0", + "archiver": "^4.0.1", "axios": "^0.19.0", "core-js": "3", "cross-env": "^6.0.3", + "cucumber": "^6.0.5", + "cucumber-pretty": ">=6.0.0", "debounce": "^1.2.0", "easygettext": "^2.7.0", "eslint": "6.8.0", @@ -42,6 +48,12 @@ "eslint-plugin-promise": "^4.1.1", "eslint-plugin-standard": "^4.0.0", "eslint-plugin-vue": "^6.1.2", + "fs-extra": "^9.0.1", + "join-path": "^1.1.1", + "ldap": "^0.7.1", + "nightwatch": "^1.3.6", + "nightwatch-api": "^3.0.1", + "node-fetch": "^2.6.0", "qs": "^6.9.1", "rimraf": "^3.0.0", "rollup": "^1.28.0", @@ -53,7 +65,9 @@ "rollup-plugin-terser": "^5.1.3", "rollup-plugin-vue": "^5.1.4", "swagger-vue-generator": "^1.0.6", - "vue-template-compiler": "^2.6.11" + "url-search-params-polyfill": "^8.1.0", + "vue-template-compiler": "^2.6.11", + "xml-js": "^1.6.11" }, "browserslist": [ "> 1%", diff --git a/ui/tests/acceptance/features/accounts.feature b/ui/tests/acceptance/features/accounts.feature new file mode 100644 index 0000000000..24681d8c38 --- /dev/null +++ b/ui/tests/acceptance/features/accounts.feature @@ -0,0 +1,13 @@ +Feature: Accounts + + Scenario: list accounts + Given user "user1" has been created with default attributes + And user "user1" has logged in using the webUI + When the user browses to the accounts page + Then user "einstein" should be displayed in the accounts list on the WebUI + And user "konnectd" should be displayed in the accounts list on the WebUI + And user "marie" should be displayed in the accounts list on the WebUI + And user "reva" should be displayed in the accounts list on the WebUI + And user "richard" should be displayed in the accounts list on the WebUI + + diff --git a/ui/tests/acceptance/pageobjects/accountsPage.js b/ui/tests/acceptance/pageobjects/accountsPage.js new file mode 100644 index 0000000000..66f263685e --- /dev/null +++ b/ui/tests/acceptance/pageobjects/accountsPage.js @@ -0,0 +1,41 @@ +const util = require('util') + +module.exports = { + url: function () { + return this.api.launchUrl + '/#/accounts' + }, + + commands: { + navigateAndWaitTillLoaded: async function () { + const url = this.url() + return this.navigate(url).waitForElementVisible('@accountsLabel') + }, + accountsList: function () { + return this.waitForElementVisible('@accountsListTable') + }, + isUserListed: async function (username) { + let user + const usernameInTable = util.format(this.elements.userInAccountsList.selector, username) + await this.useXpath().waitForElementVisible(usernameInTable) + .getText(usernameInTable, (result) => { + user = result + }) + return user.value + } + }, + + elements: { + accountsLabel: { + selector: "//h1[normalize-space(.)='Accounts']", + locateStrategy: 'xpath' + }, + accountsListTable: { + selector: "//table[@class='uk-table uk-table-middle uk-table-divider']", + locateStrategy: 'xpath' + }, + userInAccountsList: { + selector: '//table//td[text()="%s"]', + locateStrategy: 'xpath' + } + } +} diff --git a/ui/tests/acceptance/stepDefinitions/accountsContext.js b/ui/tests/acceptance/stepDefinitions/accountsContext.js new file mode 100644 index 0000000000..7cbd108007 --- /dev/null +++ b/ui/tests/acceptance/stepDefinitions/accountsContext.js @@ -0,0 +1,13 @@ +const assert = require('assert') +const { client } = require('nightwatch-api') +const { When, Then } = require('cucumber') + +When('the user browses to the accounts page', function () { + return client.page.accountsPage().navigateAndWaitTillLoaded() +}) + +Then('user {string} should be displayed in the accounts list on the WebUI', async function (username) { + await client.page.accountsPage().accountsList(username) + const userListed = await client.page.accountsPage().isUserListed(username) + return assert.strictEqual(userListed, username) +}) diff --git a/ui/tests/config/drone/identifier-registration.yml b/ui/tests/config/drone/identifier-registration.yml new file mode 100644 index 0000000000..a45a83f78d --- /dev/null +++ b/ui/tests/config/drone/identifier-registration.yml @@ -0,0 +1,16 @@ +--- + +# OpenID Connect client registry. +clients: + - id: phoenix + name: OCIS + application_type: web + insecure: yes + trusted: yes + redirect_uris: + - https://ocis-server:9200/oidc-callback.html + - https://ocis-server:9200/ + origins: + - https://ocis-server:9200 + +authorities: diff --git a/ui/tests/config/drone/ocis-config.json b/ui/tests/config/drone/ocis-config.json new file mode 100644 index 0000000000..7272483fb1 --- /dev/null +++ b/ui/tests/config/drone/ocis-config.json @@ -0,0 +1,28 @@ +{ + "server": "https://ocis-server:9200", + "theme": "owncloud", + "version": "0.1.0", + "openIdConnect": { + "metadata_url": "https://ocis-server:9200/.well-known/openid-configuration", + "authority": "https://ocis-server:9200", + "client_id": "phoenix", + "response_type": "code", + "scope": "openid profile email" + }, + "apps": [ + "files", + "draw-io", + "pdf-viewer", + "markdown-editor", + "media-viewer" + ], + "external_apps": [ + { + "id": "accounts", + "path": "https://ocis-server:9200/accounts.js", + "config": { + "url": "https://ocis-server:9200" + } + } + ] +} diff --git a/ui/tests/config/drone/proxy-config.json b/ui/tests/config/drone/proxy-config.json new file mode 100644 index 0000000000..c6cde69e7e --- /dev/null +++ b/ui/tests/config/drone/proxy-config.json @@ -0,0 +1,73 @@ +{ + "HTTP": { + "Namespace": "com.owncloud" + }, + "policy_selector": { + "static": { + "policy": "reva" + } + }, + "policies": [ + { + "name": "reva", + "routes": [ + { + "endpoint": "/", + "backend": "http://localhost:9100" + }, + { + "endpoint": "/.well-known/", + "backend": "http://localhost:9130" + }, + { + "endpoint": "/konnect/", + "backend": "http://localhost:9130" + }, + { + "endpoint": "/signin/", + "backend": "http://localhost:9130" + }, + { + "endpoint": "/ocs/", + "backend": "http://localhost:9140" + }, + { + "endpoint": "/remote.php/", + "backend": "http://localhost:9140" + }, + { + "endpoint": "/dav/", + "backend": "http://localhost:9140" + }, + { + "endpoint": "/data/", + "backend": "http://localhost:9164" + }, + { + "endpoint": "/webdav/", + "backend": "http://localhost:9140" + }, + { + "endpoint": "/status.php", + "backend": "http://localhost:9140" + }, + { + "endpoint": "/index.php/", + "backend": "http://localhost:9140" + }, + { + "endpoint": "/api/v0/greet", + "backend": "http://hello:9105" + }, + { + "endpoint": "/api/v0/accounts", + "backend": "http://localhost:9181" + }, + { + "endpoint": "/accounts.js", + "backend": "http://localhost:9181" + } + ] + } + ] +} diff --git a/ui/tests/run-acceptance-test.sh b/ui/tests/run-acceptance-test.sh new file mode 100755 index 0000000000..be6c544e76 --- /dev/null +++ b/ui/tests/run-acceptance-test.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +if [ -z "$PHOENIX_PATH" ] +then + echo "PHOENIX_PATH env variable is not set, cannot find files for tests infrastructure" + exit 1 +fi + +if [ -z "$OCIS_SKELETON_DIR" ] +then + echo "OCIS_SKELETON_DIR env variable is not set, cannot find skeleton directory" + exit 1 +fi + +if [ -z "$PHOENIX_CONFIG" ] +then + echo "PHOENIX_CONFIG env variable is not set, cannot find phoenix config file" + exit 1 +fi + +if [ -z "$1" ] +then + echo "Features path not given, exiting test run" + exit 1 +fi + +trap clean_up SIGHUP SIGINT SIGTERM + +if [ -z "$TEST_INFRA_DIRECTORY" ] +then + cleanup=true + testFolder=$(< /dev/urandom tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) + printf "creating folder $testFolder for Test infrastructure setup\n\n" + export TEST_INFRA_DIRECTORY=$testFolder +fi + +clean_up() { + if $cleanup + then + if [ -d "$testFolder" ]; then + printf "\n\n\n\nDeleting folder $testFolder Test infrastructure setup..." + rm -rf "$testFolder" + fi + fi +} + +trap clean_up SIGHUP SIGINT SIGTERM EXIT + +cp -r "$PHOENIX_PATH"/tests ./"$testFolder" + +export SERVER_HOST=${SERVER_HOST:-https://localhost:9200} +export BACKEND_HOST=${BACKEND_HOST:-https://localhost:9200} +export RUN_ON_OCIS='true' +export TEST_TAGS=${TEST_TAGS:-"not @skip"} + +yarn run acceptance-tests "$1" + +status=$? +exit $status diff --git a/yarn.lock b/yarn.lock index 0d3fbb59ca..aad71796b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -693,6 +693,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.1" "@babel/helper-plugin-utils" "^7.10.1" +"@babel/polyfill@^7.10.1": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.10.4.tgz#915e5bfe61490ac0199008e35ca9d7d151a8e45a" + integrity sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.4" + "@babel/preset-env@^7.7.7": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.3.tgz#3e58c9861bbd93b6a679987c7e4bd365c56c80c9" @@ -774,6 +782,25 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/register@7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.10.1.tgz#b6567c5cb5049f44bbf8c35d6ff68ca3c43238ed" + integrity sha512-sl96+kB3IA2B9EzpwwBmYadOT14vw3KaXOknGDbJaZCOj52GDA4Tivudq9doCJcB+bEIKCEARZYwRgBBsCGXyg== + dependencies: + find-cache-dir "^2.0.0" + lodash "^4.17.13" + make-dir "^2.1.0" + pirates "^4.0.0" + source-map-support "^0.5.16" + +"@babel/runtime-corejs3@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz#f29fc1990307c4c57b10dbd6ce667b27159d9e0d" + integrity sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.8.4": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364" @@ -887,6 +914,11 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/debug@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" + integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== + "@types/estree@*": version "0.0.45" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" @@ -1098,6 +1130,20 @@ acorn@^7.1.0, acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== +agent-base@4, agent-base@^4.2.0, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agent-base@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: version "6.12.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" @@ -1124,6 +1170,11 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" +ansi-colors@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + ansi-escapes@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" @@ -1136,6 +1187,11 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -1166,6 +1222,11 @@ ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -1174,6 +1235,35 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-4.0.1.tgz#3f722b121777e361ca9fad374ecda38e77e63c7f" + integrity sha512-/YV1pU4Nhpf/rJArM23W6GTUjT0l++VbjykrCRua1TSXrn+yM8Qs7XvtwSiRse0iCe49EPNf7ktXnPsWuSb91Q== + dependencies: + archiver-utils "^2.1.0" + async "^2.6.3" + buffer-crc32 "^0.2.1" + glob "^7.1.6" + readable-stream "^3.6.0" + tar-stream "^2.1.2" + zip-stream "^3.0.1" + argparse@^1.0.7, argparse@^1.0.9: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1198,6 +1288,11 @@ array.prototype.flat@^1.2.3: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +as-array@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/as-array/-/as-array-2.0.0.tgz#4f04805d87f8fce8e511bc2108f8e5e3a287d547" + integrity sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc= + asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -1212,6 +1307,11 @@ asn1.js@^4.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +asn1@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.2.tgz#408fcea7db6a668f119c38a9c244fec90061a7ac" + integrity sha1-QI/Op9tqZo8RnDipwkT+yQBhp6w= + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -1219,26 +1319,62 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" +assert-plus@0.1.5, assert-plus@0.1.x: + version "0.1.5" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" + integrity sha1-7nQAlBMALYTOxyGcasgRgS5yMWA= + assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assertion-error-formatter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz#be9c8825dee6a8a6c72183d915912d9b57d5d265" + integrity sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ== + dependencies: + diff "^4.0.1" + pad-right "^0.2.2" + repeat-string "^1.6.1" + +assertion-error@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b" + integrity sha1-x/hUOP3UZrx8oWq5DIFRN5el0js= + assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +ast-types@0.x.x: + version "0.13.3" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" + integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -1291,6 +1427,13 @@ babylon@^6.15.0, babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== +backoff@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.4.1.tgz#2f68c50e0dd789dbefe24200a62efb04d2456d68" + integrity sha1-L2jFDg3Xidvv4kIApi77BNJFbWg= + dependencies: + precond "0.2" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1308,6 +1451,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +becke-ch--regex--s0-0-v1--base--pl--lib@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.4.0.tgz#429ceebbfa5f7e936e78d73fbdc7da7162b20e20" + integrity sha1-Qpzuu/pffpNueNc/vcfacWKyDiA= + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -1318,7 +1466,16 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== -bluebird@^3.1.1: +bl@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a" + integrity sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@^3.1.1, bluebird@^3.4.1, bluebird@^3.5.0: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -1379,6 +1536,11 @@ brotli-size@4.0.0: dependencies: duplexer "0.1.1" +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -1443,6 +1605,11 @@ browserslist@^4.12.0, browserslist@^4.8.5: escalade "^3.0.1" node-releases "^1.1.58" +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + buffer-es6@^4.9.2, buffer-es6@^4.9.3: version "4.9.3" resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404" @@ -1458,7 +1625,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@^5.5.0: +buffer@^5.1.0, buffer@^5.5.0: version "5.6.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== @@ -1476,6 +1643,20 @@ buntis@0.2.1: resolved "https://registry.yarnpkg.com/buntis/-/buntis-0.2.1.tgz#a043aabc7d64f2243bfaa53e34e999c2dd790e82" integrity sha512-5wszfQlsqJmZrfxpPkO5yQcEoBAmfUYlXxXU/IM6PhPZ8DMnMMJQ9rvAHfe5WZmnB6E1IoJYylFfTaf1e2FJbQ== +bunyan@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.3.3.tgz#bf4e301c1f0bf888ec678829531f7b5d212e9e81" + integrity sha1-v04wHB8L+IjsZ4gpUx97XSEunoE= + optionalDependencies: + dtrace-provider "~0.4" + mv "~2" + safe-json-stringify "~1" + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1486,7 +1667,7 @@ camelcase@^1.0.2: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= -camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -1509,6 +1690,14 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" +chai-nightwatch@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chai-nightwatch/-/chai-nightwatch-0.4.0.tgz#028dc2bf234d9ef1e895cb134027795b1c7c9467" + integrity sha512-1xw74vR02XiHzo4wQfHqme2nqYPIzYnK5s3DMST7UW8FIHDWD7qplg+DTJ5FIPcmWiGYX/Re0CzvOcZQKJm1Uw== + dependencies: + assertion-error "1.0.0" + deep-eql "0.1.3" + chai@^4.1.2: version "4.2.0" resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" @@ -1532,7 +1721,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1598,6 +1787,11 @@ child_process@^1.0.2: optionalDependencies: fsevents "~2.1.2" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1625,6 +1819,21 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" +cli-spinners@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5" + integrity sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w== + +cli-table3@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -1639,6 +1848,20 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -1649,6 +1872,11 @@ clone@~0.1.9: resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" integrity sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU= +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1673,7 +1901,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colors@^1.3.3: +colors@^1.1.2, colors@^1.3.3, colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -1690,11 +1918,26 @@ commander@^2.19.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +compress-commons@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-3.0.0.tgz#833944d84596e537224dd91cf92f5246823d4f1d" + integrity sha512-FyDqr8TKX5/X0qo+aVfaZ+PVmNJHJeckFBlq8jZGSJOgnynhfifoyl24qaqdUdDIBe0EVTHByN6NAkqYvE/2Xg== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^3.0.1" + normalize-path "^3.0.0" + readable-stream "^2.3.7" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1755,12 +1998,17 @@ core-js-compat@^3.6.2: browserslist "^4.8.5" semver "7.0.0" +core-js-pure@^3.0.0: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" + integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + core-js@3: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== -core-js@^2.4.0: +core-js@^2.4.0, core-js@^2.6.5: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== @@ -1770,6 +2018,21 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +crc32-stream@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" + integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== + dependencies: + crc "^3.4.4" + readable-stream "^3.4.0" + +crc@^3.4.4: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -1896,6 +2159,76 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +cucumber-expressions@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-8.3.0.tgz#67f48307dc8f53540c7f3530ad7b744aa918dd5c" + integrity sha512-cP2ya0EiorwXBC7Ll7Cj7NELYbasNv9Ty42L4u7sso9KruWemWG1ZiTq4PMqir3SNDSrbykoqI5wZgMbLEDjLQ== + dependencies: + becke-ch--regex--s0-0-v1--base--pl--lib "^1.4.0" + xregexp "^4.2.4" + +cucumber-pretty@>=6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cucumber-pretty/-/cucumber-pretty-6.0.0.tgz#1331deae9663020f6835d60c0aa3a84637baaa4d" + integrity sha512-ddx/VInPVKFB7N86QujgLivihJhuzexKwExMuFaUjSlEs5zVVqBgaf55f88h97VafXTWX+ZAcxTUwMBS4mYj/g== + dependencies: + cli-table3 "^0.5.1" + colors "^1.4.0" + figures "^3.0.0" + +cucumber-tag-expressions@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/cucumber-tag-expressions/-/cucumber-tag-expressions-2.0.3.tgz#5525d60fbecb3fa2707051ace27004e0512e700e" + integrity sha512-+x5j1IfZrBtbvYHuoUX0rl4nUGxaey6Do9sM0CABmZfDCcWXuuRm1fQeCaklIYQgOFHQ6xOHvDSdkMHHpni6tQ== + +cucumber@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-6.0.5.tgz#cdc752ad18b551bcf7bc92774c925302f4408714" + integrity sha512-x+W9Fwk6TvcapQsYMxwFU5AsQJDOIJVGrPKmH15OC7jzb9/Dk7Hb0ZAyw4WcpaDcUDRc8bi2k2yJejDp5eTRlg== + dependencies: + assertion-error-formatter "^3.0.0" + bluebird "^3.4.1" + cli-table3 "^0.5.1" + colors "^1.1.2" + commander "^3.0.1" + cucumber-expressions "^8.1.0" + cucumber-tag-expressions "^2.0.2" + duration "^0.2.1" + escape-string-regexp "^2.0.0" + figures "^3.0.0" + gherkin "5.0.0" + glob "^7.1.3" + indent-string "^4.0.0" + is-generator "^1.0.2" + is-stream "^2.0.0" + knuth-shuffle-seeded "^1.0.6" + lodash "^4.17.14" + mz "^2.4.0" + progress "^2.0.0" + resolve "^1.3.3" + serialize-error "^4.1.0" + stack-chain "^2.0.0" + stacktrace-js "^2.0.0" + string-argv "^0.3.0" + title-case "^2.1.1" + util-arity "^1.0.2" + verror "^1.9.0" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dashdash@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.7.3.tgz#bf533fedaa455ed8fee11519ebfb9ad66170dcdf" + integrity sha1-v1M/7apFXtj+4RUZ6/ua1mFw3N8= + dependencies: + assert-plus "0.1.x" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1903,6 +2236,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" + integrity sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ== + de-indent@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" @@ -1913,28 +2251,35 @@ debounce@^1.2.0: resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== -debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^2.6.9: +debug@2, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@3.1.0, debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@3.2.6, debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -decamelize@^1.0.0: +decamelize@^1.0.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1944,6 +2289,13 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +deep-eql@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + integrity sha1-71WKyrjeJSBs1xOQbXTlaTDrafI= + dependencies: + type-detect "0.1.1" + deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" @@ -1956,6 +2308,13 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + deferred-leveldown@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" @@ -1971,11 +2330,25 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +degenerator@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" + integrity sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU= + dependencies: + ast-types "0.x.x" + escodegen "1.x.x" + esprima "3.x.x" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -1984,6 +2357,16 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -2062,11 +2445,31 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" +dotenv@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== + +dtrace-provider@0.4.0, dtrace-provider@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.4.0.tgz#0b67bc1cc77e79bf88b87ad20664f4a753ce3f26" + integrity sha1-C2e8HMd+eb+IuHrSBmT0p1POPyY= + dependencies: + nan "~1.5.1" + duplexer@0.1.1, duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= +duration@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/duration/-/duration-0.2.2.tgz#ddf149bc3bc6901150fe9017111d016b3357f529" + integrity sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg== + dependencies: + d "1" + es5-ext "~0.10.46" + easygettext@^2.7.0: version "2.13.0" resolved "https://registry.yarnpkg.com/easygettext/-/easygettext-2.13.0.tgz#32318e349087b17b2efe04b99ebd653f86192c75" @@ -2103,6 +2506,11 @@ editorconfig@^0.15.3: semver "^5.6.0" sigmund "^1.0.1" +ejs@^2.7.4: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + electron-to-chromium@^1.3.483: version "1.3.483" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz#9269e7cfc1c8e72709824da171cbe47ca5e3ca9e" @@ -2136,6 +2544,13 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -2146,6 +2561,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== +envinfo@^7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" + integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== + errno@^0.1.1, errno@~0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -2160,6 +2580,13 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: version "1.17.6" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" @@ -2186,16 +2613,71 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.46: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + escalade@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@1.x.x: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-config-standard@^14.1.0: version "14.1.1" resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" @@ -2354,7 +2836,12 @@ espree@^6.1.2, espree@^6.2.1: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" -esprima@^4.0.0: +esprima@3.x.x: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -2373,7 +2860,7 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -2416,6 +2903,13 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -2430,6 +2924,16 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" +extsprintf@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.0.tgz#4d58b815ace5bebfc4ebf03cf98b0a7604a99b86" + integrity sha1-TVi4Fazlvr/E6/A8+YsKdgSpm4Y= + +extsprintf@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.2.0.tgz#5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529" + integrity sha1-WtlGwi9bMrp/jNdCZxHG6KP8JSk= + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -2474,6 +2978,11 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-uri-to-path@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + filesize@^4.1.2: version "4.2.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-4.2.1.tgz#ab1cb2069db5d415911c1a13e144c0e743bc89bc" @@ -2486,6 +2995,22 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -2502,6 +3027,13 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" + integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== + dependencies: + is-buffer "~2.0.3" + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" @@ -2541,6 +3073,21 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2556,6 +3103,14 @@ fsevents@~2.1.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +ftp@~0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + integrity sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0= + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2585,11 +3140,28 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +get-uri@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.4.tgz#d4937ab819e218d4cb5ae18e4f5962bef169cc6a" + integrity sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q== + dependencies: + data-uri-to-buffer "1" + debug "2" + extend "~3.0.2" + file-uri-to-path "1" + ftp "~0.3.10" + readable-stream "2" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -2597,6 +3169,11 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +gherkin@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gherkin/-/gherkin-5.0.0.tgz#96def41198ec3908258b511af74f655a2764d2a1" + integrity sha1-lt70EZjsOQgli1Ea909lWidk0qE= + glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" @@ -2604,7 +3181,30 @@ glob-parent@^5.0.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.1.2, glob@^7.1.3: +glob@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -2628,11 +3228,16 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -graceful-fs@^4.1.2: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + gzip-size@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" @@ -2722,7 +3327,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@^1.1.0: +he@1.2.0, he@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -2753,6 +3358,25 @@ htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" +http-errors@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -2762,7 +3386,15 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.24: +https-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" + integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2817,6 +3449,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -2835,7 +3472,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2876,6 +3513,11 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +ip@1.1.5, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -2893,6 +3535,11 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + is-callable@^1.1.4, is-callable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" @@ -2926,6 +3573,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" + integrity sha1-wUwhBX7TbjKNuANHlmxpP4hjifM= + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -2933,6 +3585,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -2967,6 +3624,11 @@ is-regex@^1.0.3, is-regex@^1.1.0: dependencies: has-symbols "^1.0.1" +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" @@ -3017,6 +3679,15 @@ jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" +join-path@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/join-path/-/join-path-1.1.1.tgz#10535a126d24cbd65f7ffcdf15ef2e631076b505" + integrity sha1-EFNaEm0ky9Zff/zfFe8uYxB2tQU= + dependencies: + as-array "^2.0.0" + url-join "0.0.1" + valid-url "^1" + js-base64@^2.1.9: version "2.6.2" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.2.tgz#cf9301bc5cc756892a9a6c8d7138322e5944fb0d" @@ -3043,6 +3714,14 @@ js-stringify@^1.0.1: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" @@ -3105,6 +3784,15 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +jsonfile@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + dependencies: + universalify "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -3130,11 +3818,49 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.1.5" +knuth-shuffle-seeded@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz#01f1b65733aa7540ee08d8b0174164d22081e4e1" + integrity sha1-AfG2VzOqdUDuCNiwF0Fk0iCB5OE= + dependencies: + seed-random "~2.2.0" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +ldap-filter@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ldap-filter/-/ldap-filter-0.2.1.tgz#a6cc0560363d2144ba834dee8e0b3262b1372427" + integrity sha1-pswFYDY9IUS6g03ujgsyYrE3JCc= + dependencies: + assert-plus "0.1.5" + +ldap@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ldap/-/ldap-0.7.1.tgz#320165cd1065079607d83bfbf4308cb45ce791b9" + integrity sha1-MgFlzRBlB5YH2Dv79DCMtFznkbk= + dependencies: + asn1 "0.2.2" + assert-plus "0.1.5" + backoff "2.4.1" + bunyan "1.3.3" + dashdash "1.7.3" + ldap-filter "0.2.1" + once "1.3.1" + vasync "1.6.2" + verror "1.6.0" + optionalDependencies: + dtrace-provider "0.4.0" + less@^3.9.0: version "3.11.3" resolved "https://registry.yarnpkg.com/less/-/less-3.11.3.tgz#2d853954fcfe0169a8af869620bcaa16563dcc1c" @@ -3310,16 +4036,151 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash._arraycopy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" + integrity sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE= + +lodash._arrayeach@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e" + integrity sha1-urFWsqkNPxu9XGU0AzSeXlkz754= + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._baseclone@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz#303519bf6393fe7e42f34d8b630ef7794e3542b7" + integrity sha1-MDUZv2OT/n5C802LYw73eU41Qrc= + dependencies: + lodash._arraycopy "^3.0.0" + lodash._arrayeach "^3.0.0" + lodash._baseassign "^3.0.0" + lodash._basefor "^3.0.0" + lodash.isarray "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= + +lodash._basefor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2" + integrity sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI= + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= + +lodash.clone@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-3.0.3.tgz#84688c73d32b5a90ca25616963f189252a997043" + integrity sha1-hGiMc9MrWpDKJWFpY/GJJSqZcEM= + dependencies: + lodash._baseclone "^3.0.0" + lodash._bindcallback "^3.0.0" + lodash._isiterateecall "^3.0.0" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.defaultsdeep@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" + integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= + lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +log-symbols@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -3332,6 +4193,11 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + lru-cache@^4.1.2, lru-cache@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -3340,6 +4206,13 @@ lru-cache@^4.1.2, lru-cache@^4.1.5: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + ltgt@^2.1.2: version "2.2.1" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" @@ -3359,7 +4232,7 @@ magic-string@^0.25.2, magic-string@^0.25.5, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" -make-dir@^2.1.0: +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -3428,7 +4301,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -3440,7 +4313,14 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mkdirp@^0.5.1, mkdirp@~0.5.x: +mkdirp@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" + integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== + dependencies: + minimist "^1.2.5" + +mkdirp@^0.5.1, mkdirp@~0.5.1, mkdirp@~0.5.x: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -3452,11 +4332,50 @@ mkdirp@~1.0.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkpath@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-1.0.0.tgz#ebb3a977e7af1c683ae6fda12b545a6ba6c5853d" + integrity sha1-67Opd+evHGg65v2hK1Raa6bFhT0= + +mocha@^6.2.2: + version "6.2.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.2.3.tgz#e648432181d8b99393410212664450a4c1e31912" + integrity sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "2.2.0" + minimatch "3.0.4" + mkdirp "0.5.4" + ms "2.1.1" + node-environment-flags "1.0.5" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -3467,21 +4386,118 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mv@~2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" + integrity sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI= + dependencies: + mkdirp "~0.5.1" + ncp "~2.0.0" + rimraf "~2.4.0" + +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@~1.5.1: + version "1.5.3" + resolved "https://registry.yarnpkg.com/nan/-/nan-1.5.3.tgz#4cd0ecc133b7b0700a492a646add427ae8a318eb" + integrity sha1-TNDswTO3sHAKSSpkat1CeuijGOs= + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +ncp@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= + neo-async@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +netmask@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" + integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU= + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +nightwatch-api@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/nightwatch-api/-/nightwatch-api-3.0.1.tgz#10961a20b8e53f9fd7d0597643a009151d4a2ece" + integrity sha512-5xrlyDL17zJygXHa5Kib/0T8zZYqPYMpqHeHhyo+TWaWoR4rVtjcy3Cjblvo+0DuvhHk6wVKTLha1UgdDJpFPA== + dependencies: + "@types/debug" "^4.1.5" + debug "^4.1.1" + +nightwatch@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-1.3.6.tgz#881c7884090c7969e0f6b13ac5700929e7145c77" + integrity sha512-61kz2mw3Ng8Rrs2CDZv6aVB+bW+oNIFXL543L9kOvOqft3zVh2j08W8ww6BxGDzmWZe1HGRXNEI5U8+I4hO4KA== + dependencies: + assertion-error "^1.1.0" + chai-nightwatch "^0.4.0" + ci-info "^2.0.0" + dotenv "7.0.0" + ejs "^2.7.4" + envinfo "^7.5.1" + lodash.clone "3.0.3" + lodash.defaultsdeep "^4.6.1" + lodash.merge "^4.6.2" + minimatch "3.0.4" + minimist "^1.2.5" + mkpath "1.0.0" + ora "^4.0.3" + proxy-agent "^3.1.1" + request "^2.88.2" + request-promise "^4.2.5" + semver "^6.3.0" + strip-ansi "^6.0.0" + optionalDependencies: + mocha "^6.2.2" + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-environment-flags@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" + integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + +node-fetch@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + node-releases@^1.1.58: version "1.1.58" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" @@ -3546,7 +4562,7 @@ object-keys@~0.2.0: indexof "~0.0.1" is "~0.2.6" -object.assign@^4.1.0: +object.assign@4.1.0, object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -3556,6 +4572,14 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.getownpropertydescriptors@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + object.values@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" @@ -3571,7 +4595,14 @@ octal@^1.0.0: resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" integrity sha1-Y+cWKmjvvrniE1iNWOmJ0eXEUws= -once@^1.3.0: +once@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.1.tgz#f3f3e4da5b7d27b5c732969ee3e67e729457b31f" + integrity sha1-8/Pk2lt9J7XHMpae4+Z+cpRXsx8= + dependencies: + wrappy "1" + +once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -3585,7 +4616,7 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -optionator@^0.8.3: +optionator@^0.8.1, optionator@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -3597,6 +4628,20 @@ optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +ora@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.4.tgz#e8da697cc5b6a47266655bf68e0fb588d29a545d" + integrity sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -3622,6 +4667,13 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -3629,11 +4681,55 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pac-proxy-agent@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz#115b1e58f92576cac2eba718593ca7b0e37de2ad" + integrity sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ== + dependencies: + agent-base "^4.2.0" + debug "^4.1.1" + get-uri "^2.0.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^3.0.0" + pac-resolver "^3.0.0" + raw-body "^2.2.0" + socks-proxy-agent "^4.0.1" + +pac-resolver@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" + integrity sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA== + dependencies: + co "^4.6.0" + degenerator "^1.0.4" + ip "^1.1.5" + netmask "^1.0.6" + thunkify "^2.1.2" + +pad-right@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" + integrity sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q= + dependencies: + repeat-string "^1.5.2" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -3743,6 +4839,13 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pirates@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -3750,6 +4853,13 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + pofile@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pofile/-/pofile-1.1.0.tgz#9ce84bbef5043ceb4f19bdc3520d85778fad4f94" @@ -3829,6 +4939,11 @@ postcss@^7.0.14: source-map "^0.6.1" supports-color "^6.1.0" +precond@0.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" + integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -3881,6 +4996,25 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= +proxy-agent@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.1.1.tgz#7e04e06bf36afa624a1540be247b47c970bd3014" + integrity sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw== + dependencies: + agent-base "^4.2.0" + debug "4" + http-proxy-agent "^2.1.0" + https-proxy-agent "^3.0.0" + lru-cache "^5.1.1" + pac-proxy-agent "^3.0.1" + proxy-from-env "^1.0.0" + socks-proxy-agent "^4.0.1" + +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -4048,6 +5182,16 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" +raw-body@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + read-pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" @@ -4065,7 +5209,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^1.0.26-4: +readable-stream@1.1.x, readable-stream@^1.0.26-4: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= @@ -4075,7 +5219,7 @@ readable-stream@^1.0.26-4: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.2.2: +readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.3.7: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -4178,12 +5322,29 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -repeat-string@^1.5.2: +repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request@^2.83.0: +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.5.tgz#186222c59ae512f3497dfe4d75a9c8461bd0053c" + integrity sha512-ZgnepCykFdmpq86fKGwqntyTiUrHycALuGggpyCZwMvGaZWgxW6yagT0FHkgo5LzYvOaCNvxYwWYIjevSH1EDg== + dependencies: + bluebird "^3.5.0" + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.83.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -4209,6 +5370,16 @@ request@^2.83.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -4219,7 +5390,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -4255,6 +5426,13 @@ rimraf@^3.0.0: dependencies: glob "^7.1.3" +rimraf@~2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" + integrity sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto= + dependencies: + glob "^6.0.1" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -4379,6 +5557,11 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-json-stringify@~1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" + integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -4391,12 +5574,17 @@ sass@^1.18.0: dependencies: chokidar ">=2.0.0 <4.0.0" -sax@~1.2.4: +sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +seed-random@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54" + integrity sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ= + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -4406,16 +5594,33 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.1.0, semver@^6.1.2: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +serialize-error@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-4.1.0.tgz#63e1e33ede20bcd89d9f0528ea4c15fbf0f2b78a" + integrity sha512-5j9GgyGsP9vV9Uj1S0lDCvlsd+gc2LEPVK7HHHte7IyPwOD4lVQFeaX143gx3U5AnoCi+wbcb3mvaxVysjpxEw== + dependencies: + type-fest "^0.3.0" + serialize-javascript@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -4467,6 +5672,27 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== + +socks-proxy-agent@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== + dependencies: + agent-base "~4.2.1" + socks "~2.3.2" + +socks@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== + dependencies: + ip "1.1.5" + smart-buffer "^4.1.0" + source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -4478,7 +5704,7 @@ source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@~0.5.12: +source-map-support@^0.5.16, source-map-support@~0.5.12: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -4491,6 +5717,11 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= + source-map@0.6.*, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -4557,6 +5788,55 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +stack-chain@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-2.0.0.tgz#d73d1172af89565f07438b5bcc086831b6689b2d" + integrity sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg== + +stack-generator@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.5.tgz#fb00e5b4ee97de603e0773ea78ce944d81596c36" + integrity sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q== + dependencies: + stackframe "^1.1.1" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== + +stacktrace-gps@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz#7688dc2fc09ffb3a13165ebe0dbcaf41bcf0c69a" + integrity sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg== + dependencies: + source-map "0.5.6" + stackframe "^1.1.1" + +stacktrace-js@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" + integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== + dependencies: + error-stack-parser "^2.0.6" + stack-generator "^2.0.5" + stacktrace-gps "^3.0.4" + +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +string-argv@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + string-hash@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" @@ -4567,7 +5847,15 @@ string-range@~1.2, string-range@~1.2.1: resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" integrity sha1-qJPtNH5yKZvIO++78qaSqNI51d0= -string-width@^3.0.0: +"string-width@^1.0.2 || 2", string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -4627,7 +5915,14 @@ strip-ansi@^3.0.0: dependencies: ansi-regex "^2.0.0" -strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -4646,6 +5941,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-json-comments@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + strip-json-comments@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" @@ -4665,6 +5965,13 @@ stylus@^0.54.5: semver "^6.0.0" source-map "^0.7.3" +supports-color@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" + integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== + dependencies: + has-flag "^3.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -4731,6 +6038,17 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +tar-stream@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325" + integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q== + dependencies: + bl "^4.0.1" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + term-size@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" @@ -4750,11 +6068,38 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +thunkify@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" + integrity sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0= + +title-case@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -4779,12 +6124,17 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + token-stream@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= -tough-cookie@~2.5.0: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -4826,6 +6176,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + integrity sha1-C6XsKohWQORw6k6FBZcZANrFiCI= + type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -4836,11 +6191,26 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typedarray-to-buffer@~3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -4901,6 +6271,21 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +upper-case@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -4913,6 +6298,21 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-join@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-0.0.1.tgz#1db48ad422d3402469a87f7d97bdebfe4fb1e3c8" + integrity sha1-HbSK1CLTQCRpqH99l73r/k+x48g= + +url-search-params-polyfill@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/url-search-params-polyfill/-/url-search-params-polyfill-8.1.0.tgz#5c15b69687165bfd4f6c7d8a161d70d85385885b" + integrity sha512-MRG3vzXyG20BJ2fox50/9ZRoe+2h3RM7DIudVD2u/GY9MtayO1Dkrna76IUOak+uoUPVWbyR0pHCzxctP/eDYQ== + +util-arity@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/util-arity/-/util-arity-1.1.0.tgz#59d01af1fdb3fede0ac4e632b0ab5f6ce97c9330" + integrity sha1-WdAa8f2z/t4KxOYysKtfbOl8kzA= + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -4935,6 +6335,11 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +valid-url@^1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -4943,7 +6348,21 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -verror@1.10.0: +vasync@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/vasync/-/vasync-1.6.2.tgz#568edcf40b2b5c35b1cc048cad085de4739703fb" + integrity sha1-Vo7c9AsrXDWxzASMrQhd5HOXA/s= + dependencies: + verror "1.1.0" + +verror@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.1.0.tgz#2a4b4eb14a207051e75a6f94ee51315bf173a1b0" + integrity sha1-KktOsUogcFHnWm+U7lExW/FzobA= + dependencies: + extsprintf "1.0.0" + +verror@1.10.0, verror@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= @@ -4952,6 +6371,13 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +verror@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.6.0.tgz#7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5" + integrity sha1-fROyex+swuLakEBetepuW90lLqU= + dependencies: + extsprintf "1.2.0" + vlq@^0.2.1, vlq@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" @@ -4992,12 +6418,19 @@ vue-template-es2015-compiler@^1.9.0: resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== -vuex@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.5.1.tgz#f1b8dcea649bc25254cf4f4358081dbf5da18b3d" - integrity sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw== +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" -which@^1.2.9: +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@1.3.1, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -5011,6 +6444,13 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + widest-line@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -5046,6 +6486,15 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -5058,6 +6507,25 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" +xml-js@^1.6.11: + version "1.6.11" + resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" + integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + dependencies: + sax "^1.2.4" + +xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= + +xregexp@^4.2.4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + xtend@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" @@ -5076,16 +6544,59 @@ xtend@~2.0.4: is-object "~0.1.2" object-keys "~0.2.0" +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yaml@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-0.3.0.tgz#c31a616d07acdbc2012d73a6ba5b1b0bdd185a7f" integrity sha1-wxphbQes28IBLXOmulsbC90YWn8= +yargs-parser@13.1.2, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-unparser@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" + integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== + dependencies: + flat "^4.1.0" + lodash "^4.17.15" + yargs "^13.3.0" + +yargs@13.3.2, yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" @@ -5095,3 +6606,12 @@ yargs@~3.10.0: cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" + +zip-stream@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-3.0.1.tgz#cb8db9d324a76c09f9b76b31a12a48638b0b9708" + integrity sha512-r+JdDipt93ttDjsOVPU5zaq5bAyY+3H19bDrThkvuVxC0xMQzU1PJcS6D+KrP3u96gH9XLomcHPb+2skoDjulQ== + dependencies: + archiver-utils "^2.1.0" + compress-commons "^3.0.0" + readable-stream "^3.6.0" From db7afb88729562db916667778d8a09c639e55097 Mon Sep 17 00:00:00 2001 From: David Christofas Date: Wed, 8 Jul 2020 11:37:17 +0200 Subject: [PATCH 194/407] change grpc api errors Signed-off-by: David Christofas --- .../unreleased/change-grpc-error-messages.md | 6 ++ pkg/service/v0/service.go | 96 ++++++++++--------- 2 files changed, 55 insertions(+), 47 deletions(-) create mode 100644 changelog/unreleased/change-grpc-error-messages.md diff --git a/changelog/unreleased/change-grpc-error-messages.md b/changelog/unreleased/change-grpc-error-messages.md new file mode 100644 index 0000000000..2be7b44fa2 --- /dev/null +++ b/changelog/unreleased/change-grpc-error-messages.md @@ -0,0 +1,6 @@ +Change: change api errors + +Replaced the plain golang errors with the error model from the micro framework. + + +https://github.com/owncloud/ocis-accounts/issues/11 diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index df6b9e94d8..d003846814 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -25,6 +25,7 @@ import ( settings "github.com/owncloud/ocis-settings/pkg/proto/v0" "github.com/tredoe/osutil/user/crypt" + merrors "github.com/micro/go-micro/v2/errors" // register crypt functions _ "github.com/tredoe/osutil/user/crypt/apr1_crypt" _ "github.com/tredoe/osutil/user/crypt/md5_crypt" @@ -143,6 +144,7 @@ func New(opts ...Option) (s *Service, err error) { // TODO don't bother to store fields as we will load the account from disk s = &Service{ + id: cfg.GRPC.Namespace + "." + cfg.Server.Name, Config: cfg, } @@ -186,6 +188,7 @@ func New(opts ...Option) (s *Service, err error) { // Service implements the AccountsServiceHandler interface type Service struct { + id string log log.Logger Config *config.Config index bleve.Index @@ -198,7 +201,7 @@ var authQuery = regexp.MustCompile(`^login eq '(.*)' and password eq '(.*)'$`) / // ListAccounts implements the AccountsServiceHandler interface // the query contains account properties // TODO id vs onpremiseimmutableid -func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, res *proto.ListAccountsResponse) (err error) { +func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, res *proto.ListAccountsResponse) error { var password string @@ -210,24 +213,23 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest in.Query = fmt.Sprintf("preferred_name eq '%s'", match[1]) // todo fetch email? make query configurable password = match[2] if password == "" { - - return fmt.Errorf("password must not be empty") + return merrors.BadRequest(s.id, "password must not be empty") } } if in.Query != "" { // parse the query like an odata filter - var q *godata.GoDataFilterQuery - if q, err = godata.ParseFilterString(in.Query); err != nil { + q, err := godata.ParseFilterString(in.Query) + if err != nil { s.log.Error().Err(err).Msg("could not parse query") - return + return merrors.InternalServerError(s.id, "could not parse query: %v", err.Error()) } // convert to bleve query query, err = provider.BuildBleveQuery(q) if err != nil { s.log.Error().Err(err).Msg("could not build bleve query") - return + return merrors.InternalServerError(s.id, "could not build bleve query: %v", err.Error()) } } else { query = bleve.NewMatchAllQuery() @@ -237,10 +239,10 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest searchRequest := bleve.NewSearchRequest(query) var searchResult *bleve.SearchResult - searchResult, err = s.index.Search(searchRequest) + searchResult, err := s.index.Search(searchRequest) if err != nil { s.log.Error().Err(err).Msg("could not execute bleve search") - return + return merrors.InternalServerError(s.id, "could not execute bleve search: %v", err.Error()) } s.log.Debug().Interface("result", searchResult).Msg("result") @@ -267,10 +269,10 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest if password != "" { if a.PasswordProfile == nil { s.log.Debug().Interface("account", &a).Msg("no password profile") - return fmt.Errorf("invalid password") + return merrors.BadRequest(s.id, "invalid password") } if !s.passwordIsValid(a.PasswordProfile.Password, password) { - return fmt.Errorf("invalid password") + return merrors.BadRequest(s.id, "invalid password") } } @@ -294,16 +296,16 @@ func (s Service) passwordIsValid(hash string, pwd string) (ok bool) { func cleanupID(id string) (string, error) { id = filepath.Clean(id) if id == "." || strings.Contains(id, "/") { - return "", errors.New("bad request") + return "", errors.New("invalid id") } return id, nil } // GetAccount implements the AccountsServiceHandler interface -func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res *proto.Account) (err error) { - var id string - if id, err = cleanupID(req.Id); err != nil { - return +func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res *proto.Account) error { + id, err := cleanupID(req.Id) + if err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) } path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) @@ -311,31 +313,31 @@ func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res data, err = ioutil.ReadFile(path) if err != nil { s.log.Error().Err(err).Str("path", path).Msg("could not read account") - // TODO we need error handling ... eg Not Found - return fmt.Errorf("account not found") + return merrors.NotFound(s.id, "account not found") } err = json.Unmarshal(data, res) if err != nil { s.log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") - return fmt.Errorf("internal server error") + return merrors.InternalServerError(s.id, "could not unmarshal account: %v", err.Error()) } s.log.Debug().Interface("account", res).Msg("found account") - return + return nil } // CreateAccount implements the AccountsServiceHandler interface -func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountRequest, res *proto.Account) (err error) { +func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountRequest, res *proto.Account) error { var id string if req.Account == nil { - return fmt.Errorf("account missing") + return merrors.BadRequest(s.id, "account missing") } if req.Account.Id == "" { req.Account.Id = uuid.Must(uuid.NewV4()).String() } - if id, err = cleanupID(req.Account.Id); err != nil { - return + id, err := cleanupID(req.Account.Id) + if err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) } path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) @@ -345,94 +347,94 @@ func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountReques if req.Account.PasswordProfile.Password, err = c.Generate([]byte(req.Account.PasswordProfile.Password), nil); err != nil { req.Account.PasswordProfile.Password = "***REMOVED***" s.log.Error().Err(err).Str("id", id).Interface("account", req.Account).Msg("could not hash password") - return + return merrors.InternalServerError(s.id, "could not hash password: %v", err.Error()) } } req.Account.AccountEnabled = true - var bytes []byte - if bytes, err = json.Marshal(req.Account); err != nil { + bytes, err := json.Marshal(req.Account) + if err != nil { s.log.Error().Err(err).Interface("account", req.Account).Msg("could not marshal account") - return + return merrors.InternalServerError(s.id, "could not marshal account: %v", err.Error()) } if err = ioutil.WriteFile(path, bytes, 0600); err != nil { req.Account.PasswordProfile.Password = "***REMOVED***" s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not persist new account") - return + return merrors.InternalServerError(s.id, "could not persist new account: %v", err.Error()) } if err = s.index.Index(id, req.Account); err != nil { req.Account.PasswordProfile.Password = "***REMOVED***" s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not index new account") - return + return merrors.InternalServerError(s.id, "could not index new account: %v", err.Error()) } - return + return nil } // UpdateAccount implements the AccountsServiceHandler interface func (s Service) UpdateAccount(c context.Context, req *proto.UpdateAccountRequest, res *proto.Account) (err error) { - return errors.New("not implemented") + return merrors.InternalServerError(s.id, "not implemented") } // DeleteAccount implements the AccountsServiceHandler interface -func (s Service) DeleteAccount(c context.Context, req *proto.DeleteAccountRequest, res *empty.Empty) (err error) { - var id string - if id, err = cleanupID(req.Id); err != nil { - return +func (s Service) DeleteAccount(c context.Context, req *proto.DeleteAccountRequest, res *empty.Empty) error { + id, err := cleanupID(req.Id) + if err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) } path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) if err = os.Remove(path); err != nil { s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account") - return + return merrors.InternalServerError(s.id, "could not remove account: %v", err.Error()) } if err = s.index.Delete(id); err != nil { s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account from index") - return + return merrors.InternalServerError(s.id, "could not remove account from index: %v", err.Error()) } - return os.Remove(path) + return nil } // ListGroups implements the AccountsServiceHandler interface func (s Service) ListGroups(c context.Context, req *proto.ListGroupsRequest, res *proto.ListGroupsResponse) (err error) { - return errors.New("not implemented") + return merrors.InternalServerError(s.id, "not implemented") } // GetGroup implements the AccountsServiceHandler interface func (s Service) GetGroup(c context.Context, req *proto.GetGroupRequest, res *proto.Group) (err error) { - return errors.New("not implemented") + return merrors.InternalServerError(s.id, "not implemented") } // CreateGroup implements the AccountsServiceHandler interface func (s Service) CreateGroup(c context.Context, req *proto.CreateGroupRequest, res *proto.Group) (err error) { - return errors.New("not implemented") + return merrors.InternalServerError(s.id, "not implemented") } // UpdateGroup implements the AccountsServiceHandler interface func (s Service) UpdateGroup(c context.Context, req *proto.UpdateGroupRequest, res *proto.Group) (err error) { - return errors.New("not implemented") + return merrors.InternalServerError(s.id, "not implemented") } // DeleteGroup implements the AccountsServiceHandler interface func (s Service) DeleteGroup(c context.Context, req *proto.DeleteGroupRequest, res *empty.Empty) (err error) { - return errors.New("not implemented") + return merrors.InternalServerError(s.id, "not implemented") } // AddMember implements the AccountsServiceHandler interface func (s Service) AddMember(c context.Context, req *proto.AddMemberRequest, res *proto.Group) error { - return errors.New("not implemented") + return merrors.InternalServerError(s.id, "not implemented") } // RemoveMember implements the AccountsServiceHandler interface func (s Service) RemoveMember(c context.Context, req *proto.RemoveMemberRequest, res *proto.Group) error { - return errors.New("not implemented") + return merrors.InternalServerError(s.id, "not implemented") } // ListMembers implements the AccountsServiceHandler interface func (s Service) ListMembers(c context.Context, req *proto.ListMembersRequest, res *proto.ListMembersResponse) error { - return errors.New("not implemented") + return merrors.InternalServerError(s.id, "not implemented") } // RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. From 56ed1cc8f7ca8af6272c192930080f3db078f6f3 Mon Sep 17 00:00:00 2001 From: David Christofas Date: Wed, 8 Jul 2020 12:27:17 +0000 Subject: [PATCH 195/407] Automated changelog update [skip ci] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd9008d045..6dc7c81085 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary * Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) +* Change - Change api errors: [#11](https://github.com/owncloud/ocis-accounts/issues/11) * Change - Enable accounts on creation: [#43](https://github.com/owncloud/ocis-accounts/issues/43) * Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) @@ -23,6 +24,13 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/51 +* Change - Change api errors: [#11](https://github.com/owncloud/ocis-accounts/issues/11) + + Replaced the plain golang errors with the error model from the micro framework. + + https://github.com/owncloud/ocis-accounts/issues/11 + + * Change - Enable accounts on creation: [#43](https://github.com/owncloud/ocis-accounts/issues/43) Accounts have been created with the account_enabled flag set to false. Now when they are From c1dd1f78e5bbd64aeb40ec62604193a4b9d7b030 Mon Sep 17 00:00:00 2001 From: David Christofas Date: Fri, 10 Jul 2020 13:59:41 +0200 Subject: [PATCH 196/407] add sonar analyzer Signed-off-by: David Christofas --- .drone.star | 10 ++++++++++ sonar-project.properties | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 sonar-project.properties diff --git a/.drone.star b/.drone.star index 8ccfe3bd67..48c08c2920 100644 --- a/.drone.star +++ b/.drone.star @@ -138,6 +138,16 @@ def testing(ctx): }, }, }, + { + 'name': 'sonarcloud', + 'image': 'sonarsource/sonar-scanner-cli', + 'pull': 'always', + 'environment': { + 'SONAR_TOKEN': { + 'from_secret': 'sonar_token', + }, + }, + }, ], 'volumes': [ { diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000000..b66d2855d2 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,37 @@ + +sonar.projectKey=owncloud_ocis-accounts +sonar.organization=owncloud-1 +sonar.projectName=ownCloud Infinite Scale: ACCOUNTS +sonar.projectVersion=1.0 +sonar.host.url=https://sonarcloud.io + +# ===================================================== +# Meta-data for the project +# ===================================================== + +sonar.links.homepage=https://github.com/owncloud/ocis-accounts +sonar.links.ci=https://cloud.drone.io/owncloud/ocis-accounts/ +sonar.links.scm=https://github.com/owncloud/ocis-accounts +sonar.links.issue=https://github.com/owncloud/ocis-accounts/issues + + +# ===================================================== +# Properties that will be shared amongst all modules +# ===================================================== + +# SQ standard properties +sonar.sources=. + +# Pull Requests +sonar.pullrequest.provider=GitHub +sonar.pullrequest.github.repository=owncloud/ocis-accounts +sonar.pullrequest.base=${env.DRONE_BRANCH} +sonar.pullrequest.branch=${env.DRONE_SOURCE_BRANCH} +sonar.pullrequest.key=${env.DRONE_PULL_REQUEST} + + +# Properties specific to language plugins: +sonar.go.coverage.reportPaths=coverage.out + +# Exclude protobuf files +sonar.exclusions=pkg/proto/**, changelog/**, docs/**, package.json, rollup.config.js, changelog.md From 0d4e6a4a16ec2446270fc591eaddef2b6cf06d38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 24 Jun 2020 12:59:22 +0200 Subject: [PATCH 197/407] initial group api implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- go.mod | 5 +- go.sum | 32 ++ pkg/proto/v0/accounts.pb.go | 424 ++++++++++++----------- pkg/proto/v0/accounts.pb.micro.go | 60 ++-- pkg/proto/v0/accounts.pb.web.go | 20 +- pkg/proto/v0/accounts.proto | 32 +- pkg/proto/v0/accounts.swagger.json | 530 +++++++++++++---------------- pkg/server/grpc/server.go | 3 + pkg/service/v0/accounts.go | 401 ++++++++++++++++++++++ pkg/service/v0/groups.go | 321 +++++++++++++++++ pkg/service/v0/service.go | 317 +---------------- pkg/service/v0/settings.go | 31 +- 12 files changed, 1314 insertions(+), 862 deletions(-) create mode 100644 pkg/service/v0/accounts.go create mode 100644 pkg/service/v0/groups.go diff --git a/go.mod b/go.mod index 75f8c8e4c7..488d7ee5c5 100644 --- a/go.mod +++ b/go.mod @@ -21,6 +21,7 @@ require ( github.com/jmhodges/levigo v1.0.0 // indirect github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.6.0 + github.com/micro/protoc-gen-micro/v2 v2.3.0 // indirect github.com/oklog/run v1.1.0 github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170 github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 @@ -30,8 +31,8 @@ require ( github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tredoe/osutil v1.0.5 golang.org/x/net v0.0.0-20200301022130-244492dfa37a - google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb - google.golang.org/protobuf v1.23.0 + google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 + google.golang.org/protobuf v1.25.0 honnef.co/go/tools v0.0.1-2020.1.4 // indirect ) diff --git a/go.sum b/go.sum index 91bbac9cd7..dcf2785b00 100644 --- a/go.sum +++ b/go.sum @@ -175,10 +175,13 @@ github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReG github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/cheggaaa/pb v1.0.28/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= github.com/cloudflare/cloudflare-go v0.10.6/go.mod h1:dcRl7AXBH5Bf7QFTBVc3TRzwvotSeO4AlnMhuxORAX8= +github.com/cloudflare/cloudflare-go v0.10.9/go.mod h1:5TrsWH+3f4NV6WjtS5QFp+DifH81rph40gU374Sh0dQ= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -252,6 +255,7 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= @@ -385,6 +389,7 @@ github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:x github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -400,6 +405,8 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= @@ -590,12 +597,15 @@ github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= @@ -613,6 +623,7 @@ github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95 github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= +github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb/go.mod h1:qz2UT4UFdFVs+qUGMuDK3xuHgude1BgntqQ29sbpPlE= github.com/micro/go-micro/v2 v2.6.0 h1:HH6uEqTu6pkBtAlwAqQW2sf33640iEa1s9puGIctpO0= github.com/micro/go-micro/v2 v2.6.0/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= @@ -620,8 +631,14 @@ github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKki github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1 h1:7IkXfl94MdLZQwk0lNmu9Cg5WP42Zak9EtQMeN4SvVs= github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1/go.mod h1:QrkcwcDtIs2hIJpIEhozekyf6Rfz5C36kFI8+zzCpX0= github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= +github.com/micro/micro v1.16.0 h1:qCZV20WoTOtJ1IyLU/a0A0BMSertfu+iOj/2AJ4Uvrk= github.com/micro/micro v1.16.0/go.mod h1:TO5Ng0KidbfRYIxVM4Q3deZ0A+qwRyP9WeXp+k2fWNA= +github.com/micro/micro/v2 v2.5.1-0.20200418121137-24e9b206767c h1:0xGuo2yepDL8p+id/kXqVka+5iiOBSyfqOX01csnOYk= +github.com/micro/micro/v2 v2.5.1-0.20200418121137-24e9b206767c/go.mod h1:fqqaYbJGYzSBi7Ms2Adly7Xzw9+WIRBAucUjwGmYeFY= +github.com/micro/protoc-gen-micro v1.0.0 h1:qKh5S3I1RfenhIs5mqDFJLwRlRDlgin7XWiUKZbpwLM= github.com/micro/protoc-gen-micro v1.0.0/go.mod h1:C8ij4DJhapBmypcT00AXdb0cZ675/3PqUO02buWWqbE= +github.com/micro/protoc-gen-micro/v2 v2.3.0 h1:PBbGeNh4BOy1w4eRdeo4yWJJNWGLnaJX6/h55I74EXE= +github.com/micro/protoc-gen-micro/v2 v2.3.0/go.mod h1:gcsUvKSTTTalq+pqdUbFS40OTsURpYgL5+yUguR1djk= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -687,6 +704,7 @@ github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= +github.com/netdata/go-orchestrator v0.0.0-20190905093727-c793edba0e8f/go.mod h1:ECF8anFVCt/TfTIWVPgPrNaYJXtAtpAOF62ugDbw41A= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= @@ -706,6 +724,8 @@ github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DV github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oleiade/reflections v1.0.0/go.mod h1:RbATFBbKYkVdqmSFtx13Bb/tVhR0lgOBXunWTZKeL4w= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.3/go.mod h1:YZeBtGzYYEsCHp2LST/u/0NDwGkRoBtmn1cIWCJiS6M= +github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -911,6 +931,7 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 h1:gKMu1Bf6QINDnvyZuTaACm9ofY+PRh+5vFz4oxBZeF8= @@ -1048,9 +1069,11 @@ golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1059,6 +1082,8 @@ golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1192,6 +1217,8 @@ google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb h1:nAFaltAMbNVA0rixtwvdnqgSVLX3HFUUvMkEklmzbYM= google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1199,8 +1226,12 @@ google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= @@ -1236,6 +1267,7 @@ gopkg.in/ldap.v2 v2.5.1/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk= gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= +gopkg.in/olivere/elastic.v5 v5.0.83/go.mod h1:LXF6q9XNBxpMqrcgax95C6xyARXWbbCXUrtTxrNrxJI= gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 5020875e8f..c75bb6b2f6 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -1248,8 +1248,10 @@ type AddMemberRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // The id of the group to add a member to + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // The account id to add - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` } func (x *AddMemberRequest) Reset() { @@ -1284,9 +1286,16 @@ func (*AddMemberRequest) Descriptor() ([]byte, []int) { return file_accounts_proto_rawDescGZIP(), []int{15} } -func (x *AddMemberRequest) GetId() string { +func (x *AddMemberRequest) GetGroupId() string { if x != nil { - return x.Id + return x.GroupId + } + return "" +} + +func (x *AddMemberRequest) GetAccountId() string { + if x != nil { + return x.AccountId } return "" } @@ -1296,8 +1305,8 @@ type RemoveMemberRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The group id - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // The id of the group to remove a member from + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // The account id to remove AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` } @@ -1334,9 +1343,9 @@ func (*RemoveMemberRequest) Descriptor() ([]byte, []int) { return file_accounts_proto_rawDescGZIP(), []int{16} } -func (x *RemoveMemberRequest) GetId() string { +func (x *RemoveMemberRequest) GetGroupId() string { if x != nil { - return x.Id + return x.GroupId } return "" } @@ -1379,7 +1388,7 @@ type ListMembersRequest struct { // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - // The group id + // The id of the group to list members from Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` } @@ -2047,207 +2056,214 @@ var file_accounts_proto_rawDesc = []byte{ 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x24, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x22, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4c, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x44, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc0, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xea, 0x08, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x12, 0x29, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, - 0x0a, 0x0a, 0x67, 0x69, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x67, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x46, 0x0a, - 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x13, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc0, 0x01, + 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x6a, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xea, 0x08, 0x0a, + 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x46, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4c, 0x0a, - 0x14, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x68, - 0x69, 0x64, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x68, 0x69, - 0x64, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x12, 0x37, 0x0a, 0x18, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, - 0x73, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, - 0x53, 0x79, 0x6e, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x18, 0x6f, - 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x69, 0x6d, 0x6d, 0x75, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, - 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x49, 0x6d, 0x6d, 0x75, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, - 0x73, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6f, - 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x1e, 0x6f, - 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x3e, 0x0a, 0x1c, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, - 0x73, 0x61, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, - 0x65, 0x73, 0x53, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x35, 0x0a, 0x17, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x14, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x19, 0x6f, 0x6e, 0x5f, 0x70, 0x72, - 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x62, 0x69, 0x6f, 0x73, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, - 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4e, 0x65, 0x74, 0x42, 0x69, 0x6f, 0x73, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x43, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, - 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x6f, 0x6e, 0x50, 0x72, - 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, - 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, - 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4f, 0x6e, 0x50, 0x72, 0x65, - 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, - 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x1c, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, - 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x1b, 0x4f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, - 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x12, 0x48, 0x0a, 0x12, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x63, 0x61, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x79, 0x43, 0x61, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0xcb, 0x04, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x0c, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x23, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x6c, 0x69, 0x73, - 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x66, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0d, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, - 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, - 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, - 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x74, - 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, - 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x3a, 0x01, 0x2a, 0x32, 0xac, 0x06, 0x0a, 0x0d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x57, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0a, 0x2f, 0x76, - 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x64, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, - 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x26, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x32, 0x17, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x3a, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x5e, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x63, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x35, 0x0a, 0x17, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x14, 0x68, 0x69, 0x64, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x18, 0x6f, 0x6e, 0x5f, 0x70, 0x72, + 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, 0x65, + 0x6d, 0x69, 0x73, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x37, 0x0a, 0x18, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x69, 0x6d, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x49, 0x6d, + 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, + 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x1c, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x53, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x12, 0x43, 0x0a, 0x1e, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, + 0x69, 0x73, 0x65, 0x73, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x1c, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, + 0x69, 0x73, 0x65, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6f, 0x6e, 0x50, + 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x53, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, + 0x69, 0x73, 0x65, 0x73, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, + 0x65, 0x73, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x19, + 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x5f, + 0x62, 0x69, 0x6f, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x15, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4e, 0x65, 0x74, 0x42, 0x69, + 0x6f, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, + 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x1a, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x53, + 0x79, 0x6e, 0x63, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x1f, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x1c, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x4f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x1c, 0x6f, 0x6e, 0x50, + 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x1b, 0x4f, 0x6e, + 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x48, 0x0a, 0x12, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6f, + 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x34, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x63, 0x61, 0x75, 0x73, + 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x14, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x43, 0x61, 0x75, 0x73, 0x69, 0x6e, 0x67, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0xcb, 0x04, 0x0a, 0x0f, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x78, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, + 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x66, 0x0a, 0x0a, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, + 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x67, 0x65, 0x74, 0x3a, 0x01, + 0x2a, 0x12, 0x6f, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, + 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x3a, 0x01, 0x2a, 0x12, 0x74, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x32, 0xf3, 0x06, 0x0a, 0x0d, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6e, 0x0a, 0x0a, 0x4c, + 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x5c, 0x0a, 0x08, 0x47, + 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2d, 0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x65, 0x0a, 0x0b, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, + 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, + 0x12, 0x65, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x27, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x6c, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x69, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, - 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x12, - 0x72, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, - 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, - 0x72, 0x65, 0x66, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x24, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x7d, + 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, + 0x12, 0x79, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x3d, 0x2a, + 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x12, 0x72, 0x0a, 0x0b, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, + 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, + 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x42, + 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x3b, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index bc03e6b6b5..0a47f58d02 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -251,47 +251,49 @@ func NewGroupsServiceEndpoints() []*api.Endpoint { return []*api.Endpoint{ &api.Endpoint{ Name: "GroupsService.ListGroups", - Path: []string{"/v0/groups"}, - Method: []string{"GET"}, + Path: []string{"/api/v0/groups/groups-list"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.GetGroup", - Path: []string{"/v0/groups/{id=*}"}, - Method: []string{"GET"}, + Path: []string{"/api/v0/groups/groups-get"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.CreateGroup", - Path: []string{"/v0/groups"}, + Path: []string{"/api/v0/groups/groups-create"}, Method: []string{"POST"}, - Body: "group", + Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.UpdateGroup", - Path: []string{"/v0/groups/{group.id=*}"}, - Method: []string{"PATCH"}, - Body: "group", + Path: []string{"/api/v0/groups/groups-update"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.DeleteGroup", - Path: []string{"/v0/groups/{id=*}"}, - Method: []string{"DELETE"}, - Body: "", + Path: []string{"/api/v0/groups/groups-delete"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.AddMember", - Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Path: []string{"/v0/groups/{group_id=*}/members/$ref"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.RemoveMember", - Path: []string{"/v0/groups/{id=*}/members/{account_id}/$ref"}, + Path: []string{"/v0/groups/{group_id=*}/members/{account_id}/$ref"}, Method: []string{"DELETE"}, Body: "", Handler: "rpc", @@ -456,47 +458,49 @@ func RegisterGroupsServiceHandler(s server.Server, hdlr GroupsServiceHandler, op h := &groupsServiceHandler{hdlr} opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.ListGroups", - Path: []string{"/v0/groups"}, - Method: []string{"GET"}, + Path: []string{"/api/v0/groups/groups-list"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.GetGroup", - Path: []string{"/v0/groups/{id=*}"}, - Method: []string{"GET"}, + Path: []string{"/api/v0/groups/groups-get"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.CreateGroup", - Path: []string{"/v0/groups"}, + Path: []string{"/api/v0/groups/groups-create"}, Method: []string{"POST"}, - Body: "group", + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.UpdateGroup", - Path: []string{"/v0/groups/{group.id=*}"}, - Method: []string{"PATCH"}, - Body: "group", + Path: []string{"/api/v0/groups/groups-update"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.DeleteGroup", - Path: []string{"/v0/groups/{id=*}"}, - Method: []string{"DELETE"}, - Body: "", + Path: []string{"/api/v0/groups/groups-delete"}, + Method: []string{"POST"}, + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.AddMember", - Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Path: []string{"/v0/groups/{group_id=*}/members/$ref"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.RemoveMember", - Path: []string{"/v0/groups/{id=*}/members/{account_id}/$ref"}, + Path: []string{"/v0/groups/{group_id=*}/members/{account_id}/$ref"}, Method: []string{"DELETE"}, Body: "", Handler: "rpc", diff --git a/pkg/proto/v0/accounts.pb.web.go b/pkg/proto/v0/accounts.pb.web.go index f0fe5f7fe5..528a828322 100644 --- a/pkg/proto/v0/accounts.pb.web.go +++ b/pkg/proto/v0/accounts.pb.web.go @@ -185,7 +185,7 @@ func (h *webGroupsServiceHandler) ListGroups(w http.ResponseWriter, r *http.Requ return } - render.Status(r, http.StatusOK) + render.Status(r, http.StatusCreated) render.JSON(w, r, resp) } @@ -209,7 +209,7 @@ func (h *webGroupsServiceHandler) GetGroup(w http.ResponseWriter, r *http.Reques return } - render.Status(r, http.StatusOK) + render.Status(r, http.StatusCreated) render.JSON(w, r, resp) } @@ -257,7 +257,7 @@ func (h *webGroupsServiceHandler) UpdateGroup(w http.ResponseWriter, r *http.Req return } - render.Status(r, http.StatusOK) + render.Status(r, http.StatusCreated) render.JSON(w, r, resp) } @@ -362,13 +362,13 @@ func RegisterGroupsServiceWeb(r chi.Router, i GroupsServiceHandler, middlewares h: i, } - r.MethodFunc("GET", "/v0/groups", handler.ListGroups) - r.MethodFunc("GET", "/v0/groups/{id=*}", handler.GetGroup) - r.MethodFunc("POST", "/v0/groups", handler.CreateGroup) - r.MethodFunc("PATCH", "/v0/groups/{group.id=*}", handler.UpdateGroup) - r.MethodFunc("DELETE", "/v0/groups/{id=*}", handler.DeleteGroup) - r.MethodFunc("POST", "/v0/groups/{id=*}/members/$ref", handler.AddMember) - r.MethodFunc("DELETE", "/v0/groups/{id=*}/members/{account_id}/$ref", handler.RemoveMember) + r.MethodFunc("POST", "/api/v0/groups/groups-list", handler.ListGroups) + r.MethodFunc("POST", "/api/v0/groups/groups-get", handler.GetGroup) + r.MethodFunc("POST", "/api/v0/groups/groups-create", handler.CreateGroup) + r.MethodFunc("POST", "/api/v0/groups/groups-update", handler.UpdateGroup) + r.MethodFunc("POST", "/api/v0/groups/groups-delete", handler.DeleteGroup) + r.MethodFunc("POST", "/v0/groups/{group_id=*}/members/$ref", handler.AddMember) + r.MethodFunc("DELETE", "/v0/groups/{group_id=*}/members/{account_id}/$ref", handler.RemoveMember) r.MethodFunc("GET", "/v0/groups/{id=*}/members/$ref", handler.ListMembers) } diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index eca6435b72..617757d9fe 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -63,13 +63,15 @@ service GroupsService { rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) { // List method maps to HTTP GET option (google.api.http) = { - get: "/v0/groups" + post: "/api/v0/groups/groups-list", + body: "*" }; } // Gets an groups rpc GetGroup(GetGroupRequest) returns (Group) { option (google.api.http) = { - get: "/v0/groups/{id=*}" + post: "/api/v0/groups/groups-get", + body: "*" }; } // Creates a group @@ -77,8 +79,8 @@ service GroupsService { // Create maps to HTTP POST. URL path as the collection name. // HTTP request body contains the resource option (google.api.http) = { - post: "/v0/groups" - body: "group" + post: "/api/v0/groups/groups-create" + body: "*" }; } // Updates a group @@ -86,8 +88,8 @@ service GroupsService { // Update maps to HTTP PATCH. Resource name is mapped to a URL path. // Resource is contained in the HTTP request body option (google.api.http) = { - patch: "/v0/groups/{group.id=*}" - body: "group" + post: "/api/v0/groups/groups-update" + body: "*" }; }; // Deletes a group @@ -95,7 +97,8 @@ service GroupsService { // Delete maps to HTTP DELETE. Resource name maps to the URL path. // There is no request body option (google.api.http) = { - delete: "/v0/groups/{id=*}" + post: "/api/v0/groups/groups-delete", + body: "*" }; } @@ -108,7 +111,7 @@ service GroupsService { rpc AddMember(AddMemberRequest) returns (Group) { // All request parameters go into body. option (google.api.http) = { - post: "/v0/groups/{id=*}/members/$ref" + post: "/v0/groups/{group_id=*}/members/$ref" body: "*" }; } @@ -116,7 +119,7 @@ service GroupsService { rpc RemoveMember(RemoveMemberRequest) returns (Group) { // All request parameters go into body. option (google.api.http) = { - delete: "/v0/groups/{id=*}/members/{account_id}/$ref" + delete: "/v0/groups/{group_id=*}/members/{account_id}/$ref" }; } // group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 @@ -471,14 +474,15 @@ message DeleteGroupRequest { } message AddMemberRequest { + // The id of the group to add a member to + string group_id = 1; // The account id to add - string id = 1; + string account_id = 2; } message RemoveMemberRequest { - // The group id - string id = 1; - + // The id of the group to remove a member from + string group_id = 1; // The account id to remove string account_id = 2; } @@ -514,7 +518,7 @@ message ListMembersRequest { // display names that include both "Test" and "String" string query = 4 [(google.api.field_behavior) = OPTIONAL]; - // The group id + // The id of the group to list members from string id = 5; } diff --git a/pkg/proto/v0/accounts.swagger.json b/pkg/proto/v0/accounts.swagger.json index 1e407c0f6f..698065087b 100644 --- a/pkg/proto/v0/accounts.swagger.json +++ b/pkg/proto/v0/accounts.swagger.json @@ -14,19 +14,13 @@ "/api/v0/accounts/accounts-create": { "post": { "summary": "Creates an account", - "operationId": "AccountsService_CreateAccount", + "operationId": "CreateAccount", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/settingsAccount" } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } } }, "parameters": [ @@ -47,19 +41,13 @@ "/api/v0/accounts/accounts-delete": { "post": { "summary": "Deletes an account", - "operationId": "AccountsService_DeleteAccount", + "operationId": "DeleteAccount", "responses": { "200": { "description": "A successful response.", "schema": { "properties": {} } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } } }, "parameters": [ @@ -80,19 +68,13 @@ "/api/v0/accounts/accounts-get": { "post": { "summary": "Gets an account", - "operationId": "AccountsService_GetAccount", + "operationId": "GetAccount", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/settingsAccount" } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } } }, "parameters": [ @@ -113,19 +95,13 @@ "/api/v0/accounts/accounts-list": { "post": { "summary": "Lists accounts", - "operationId": "AccountsService_ListAccounts", + "operationId": "ListAccounts", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/settingsListAccountsResponse" } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } } }, "parameters": [ @@ -146,19 +122,13 @@ "/api/v0/accounts/accounts-update": { "post": { "summary": "Updates an account", - "operationId": "AccountsService_UpdateAccount", + "operationId": "UpdateAccount", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/settingsAccount" } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } } }, "parameters": [ @@ -176,88 +146,25 @@ ] } }, - "/v0/groups": { - "get": { - "summary": "Lists groups", - "operationId": "GroupsService_ListGroups", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/settingsListGroupsResponse" - } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "page_size", - "description": "Optional. The maximum number of groups to return in the response.", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "page_token", - "description": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "field_mask.paths", - "description": "The set of field mask paths.", - "in": "query", - "required": false, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "multi" - }, - { - "name": "query", - "description": "Optional. Search criteria used to select the groups to return.\nIf no search criteria is specified then all groups will be\nreturned. TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `display_name=\\\\\"Test String\\\\\"` returns groups with\ndisplay names that include both \"Test\" and \"String\"", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "GroupsService" - ] - }, + "/api/v0/groups/groups-create": { "post": { - "summary": "Creates a group", - "operationId": "GroupsService_CreateGroup", + "summary": "Creates an account", + "operationId": "CreateGroup", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/settingsGroup" } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } } }, "parameters": [ { "name": "body", - "description": "The account resource to create", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/settingsGroup" + "$ref": "#/definitions/settingsCreateGroupRequest" } } ], @@ -266,100 +173,26 @@ ] } }, - "/v0/groups/{group.id}": { - "patch": { - "summary": "Updates a group", - "operationId": "GroupsService_UpdateGroup", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/settingsGroup" - } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "group.id", - "description": "The unique identifier for the group.\nReturned by default. Inherited from directoryObject. Key. Not nullable. Read-only.", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "description": "The group resource which replaces the resource on the server", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/settingsGroup" - } - } - ], - "tags": [ - "GroupsService" - ] - } - }, - "/v0/groups/{id}": { - "get": { - "summary": "Gets an groups", - "operationId": "GroupsService_GetGroup", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/settingsGroup" - } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "GroupsService" - ] - }, - "delete": { - "summary": "Deletes a group", - "operationId": "GroupsService_DeleteGroup", + "/api/v0/groups/groups-delete": { + "post": { + "summary": "Deletes an account", + "operationId": "DeleteGroup", "responses": { "200": { "description": "A successful response.", "schema": { "properties": {} } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } } }, "parameters": [ { - "name": "id", - "in": "path", + "name": "body", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/settingsDeleteGroupRequest" + } } ], "tags": [ @@ -367,90 +200,103 @@ ] } }, - "/v0/groups/{id}/members/$ref": { - "get": { - "summary": "group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0", - "operationId": "GroupsService_ListMembers", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/settingsListMembersResponse" - } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } - } - }, - "parameters": [ - { - "name": "id", - "description": "The group id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "page_size", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "page_token", - "description": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue.", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "field_mask.paths", - "description": "The set of field mask paths.", - "in": "query", - "required": false, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "multi" - }, - { - "name": "query", - "description": "Optional. Search criteria used to select the groups to return.\nIf no search criteria is specified then all groups will be\nreturned. TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `display_name=\\\\\"Test String\\\\\"` returns groups with\ndisplay names that include both \"Test\" and \"String\"", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "GroupsService" - ] - }, + "/api/v0/groups/groups-get": { "post": { - "summary": "group:addmember https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0\u0026tabs=http", - "operationId": "GroupsService_AddMember", + "summary": "Gets an account", + "operationId": "GetGroup", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/settingsGroup" } - }, - "default": { - "description": "An unexpected error response", + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, "schema": { - "$ref": "#/definitions/runtimeError" + "$ref": "#/definitions/settingsGetGroupRequest" + } + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/api/v0/groups/groups-list": { + "post": { + "summary": "Lists accounts", + "operationId": "ListGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsListGroupsResponse" } } }, "parameters": [ { - "name": "id", - "description": "The account id to add", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsListGroupsRequest" + } + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/api/v0/groups/groups-update": { + "post": { + "summary": "Updates an account", + "operationId": "UpdateGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsUpdateGroupRequest" + } + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/v0/groups/{group_id}/members/$ref": { + "post": { + "summary": "group:addmember https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0\u0026tabs=http", + "operationId": "AddMember", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + } + }, + "parameters": [ + { + "name": "group_id", + "description": "The id of the group to add a member to", "in": "path", "required": true, "type": "string" @@ -469,28 +315,22 @@ ] } }, - "/v0/groups/{id}/members/{account_id}/$ref": { + "/v0/groups/{group_id}/members/{account_id}/$ref": { "delete": { "summary": "group:removemember https://docs.microsoft.com/en-us/graph/api/group-delete-members?view=graph-rest-1.0", - "operationId": "GroupsService_RemoveMember", + "operationId": "RemoveMember", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/settingsGroup" } - }, - "default": { - "description": "An unexpected error response", - "schema": { - "$ref": "#/definitions/runtimeError" - } } }, "parameters": [ { - "name": "id", - "description": "The group id", + "name": "group_id", + "description": "The id of the group to remove a member from", "in": "path", "required": true, "type": "string" @@ -507,21 +347,67 @@ "GroupsService" ] } + }, + "/v0/groups/{id}/members/$ref": { + "get": { + "summary": "group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0", + "operationId": "ListMembers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsListMembersResponse" + } + } + }, + "parameters": [ + { + "name": "id", + "description": "The id of the group to list members from", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page_size", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page_token", + "description": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "field_mask.paths", + "description": "The set of field mask paths.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "query", + "description": "Optional. Search criteria used to select the groups to return.\nIf no search criteria is specified then all groups will be\nreturned. TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `display_name=\\\\\"Test String\\\\\"` returns groups with\ndisplay names that include both \"Test\" and \"String\"", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + } } }, "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "type_url": { - "type": "string" - }, - "value": { - "type": "string", - "format": "byte" - } - } - }, "protobufFieldMask": { "type": "object", "properties": { @@ -536,27 +422,6 @@ "description": "paths: \"f.a\"\n paths: \"f.b.d\"\n\nHere `f` represents a field in some root message, `a` and `b`\nfields in the message found in `f`, and `d` a field found in the\nmessage in `f.b`.\n\nField masks are used to specify a subset of fields that should be\nreturned by a get operation or modified by an update operation.\nField masks also have a custom JSON encoding (see below).\n\n# Field Masks in Projections\n\nWhen used in the context of a projection, a response message or\nsub-message is filtered by the API to only contain those fields as\nspecified in the mask. For example, if the mask in the previous\nexample is applied to a response message as follows:\n\n f {\n a : 22\n b {\n d : 1\n x : 2\n }\n y : 13\n }\n z: 8\n\nThe result will not contain specific values for fields x,y and z\n(their value will be set to the default, and omitted in proto text\noutput):\n\n\n f {\n a : 22\n b {\n d : 1\n }\n }\n\nA repeated field is not allowed except at the last position of a\npaths string.\n\nIf a FieldMask object is not present in a get operation, the\noperation applies to all fields (as if a FieldMask of all fields\nhad been specified).\n\nNote that a field mask does not necessarily apply to the\ntop-level response message. In case of a REST get operation, the\nfield mask applies directly to the response, but in case of a REST\nlist operation, the mask instead applies to each individual message\nin the returned resource list. In case of a REST custom method,\nother definitions may be used. Where the mask applies will be\nclearly documented together with its declaration in the API. In\nany case, the effect on the returned resource/resources is required\nbehavior for APIs.\n\n# Field Masks in Update Operations\n\nA field mask in update operations specifies which fields of the\ntargeted resource are going to be updated. The API is required\nto only change the values of the fields as specified in the mask\nand leave the others untouched. If a resource is passed in to\ndescribe the updated values, the API ignores the values of all\nfields not covered by the mask.\n\nIf a repeated field is specified for an update operation, new values will\nbe appended to the existing repeated field in the target resource. Note that\na repeated field is only allowed in the last position of a `paths` string.\n\nIf a sub-message is specified in the last position of the field mask for an\nupdate operation, then new value will be merged into the existing sub-message\nin the target resource.\n\nFor example, given the target message:\n\n f {\n b {\n d: 1\n x: 2\n }\n c: [1]\n }\n\nAnd an update message:\n\n f {\n b {\n d: 10\n }\n c: [2]\n }\n\nthen if the field mask is:\n\n paths: [\"f.b\", \"f.c\"]\n\nthen the result will be:\n\n f {\n b {\n d: 10\n x: 2\n }\n c: [1, 2]\n }\n\nAn implementation may provide options to override this default behavior for\nrepeated and message fields.\n\nIn order to reset a field's value to the default, the field must\nbe in the mask and set to the default value in the provided resource.\nHence, in order to reset all fields of a resource, provide a default\ninstance of the resource and set all fields in the mask, or do\nnot provide a mask as described below.\n\nIf a field mask is not present on update, the operation applies to\nall fields (as if a field mask of all fields has been specified).\nNote that in the presence of schema evolution, this may mean that\nfields the client does not know and has therefore not filled into\nthe request will be reset to their default. If this is unwanted\nbehavior, a specific service may require a client to always specify\na field mask, producing an error if not.\n\nAs with get operations, the location of the resource which\ndescribes the updated values in the request message depends on the\noperation kind. In any case, the effect of the field mask is\nrequired to be honored by the API.\n\n## Considerations for HTTP REST\n\nThe HTTP kind of an update operation which uses a field mask must\nbe set to PATCH instead of PUT in order to satisfy HTTP semantics\n(PUT must only be used for full updates).\n\n# JSON Encoding of Field Masks\n\nIn JSON, a field mask is encoded as a single string where paths are\nseparated by a comma. Fields name in each path are converted\nto/from lower-camel naming conventions.\n\nAs an example, consider the following message declarations:\n\n message Profile {\n User user = 1;\n Photo photo = 2;\n }\n message User {\n string display_name = 1;\n string address = 2;\n }\n\nIn proto a field mask for `Profile` may look as such:\n\n mask {\n paths: \"user.display_name\"\n paths: \"photo\"\n }\n\nIn JSON, the same mask is represented as below:\n\n {\n mask: \"user.displayName,photo\"\n }\n\n# Field Masks and Oneof Fields\n\nField masks treat fields in oneofs just as regular fields. Consider the\nfollowing message:\n\n message SampleMessage {\n oneof test_oneof {\n string name = 4;\n SubMessage sub_message = 9;\n }\n }\n\nThe field mask can be:\n\n mask {\n paths: \"name\"\n }\n\nOr:\n\n mask {\n paths: \"sub_message\"\n }\n\nNote that oneof type names (\"test_oneof\" in this case) cannot be used in\npaths.\n\n## Field Mask Verification\n\nThe implementation of any API method which has a FieldMask type field in the\nrequest should verify the included field paths, and return an\n`INVALID_ARGUMENT` error if any path is unmappable.", "title": "`FieldMask` represents a set of symbolic field paths, for example:" }, - "runtimeError": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufAny" - } - } - } - }, "settingsAccount": { "type": "object", "properties": { @@ -698,7 +563,11 @@ "settingsAddMemberRequest": { "type": "object", "properties": { - "id": { + "group_id": { + "type": "string", + "title": "The id of the group to add a member to" + }, + "account_id": { "type": "string", "title": "The account id to add" } @@ -713,6 +582,15 @@ } } }, + "settingsCreateGroupRequest": { + "type": "object", + "properties": { + "group": { + "$ref": "#/definitions/settingsGroup", + "title": "The account resource to create" + } + } + }, "settingsDeleteAccountRequest": { "type": "object", "properties": { @@ -721,6 +599,14 @@ } } }, + "settingsDeleteGroupRequest": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, "settingsGetAccountRequest": { "type": "object", "properties": { @@ -729,6 +615,14 @@ } } }, + "settingsGetGroupRequest": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, "settingsGroup": { "type": "object", "properties": { @@ -886,6 +780,29 @@ } } }, + "settingsListGroupsRequest": { + "type": "object", + "properties": { + "page_size": { + "type": "integer", + "format": "int32", + "title": "Optional. The maximum number of groups to return in the response" + }, + "page_token": { + "type": "string", + "title": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue" + }, + "field_mask": { + "$ref": "#/definitions/protobufFieldMask", + "description": "Optional. Used to specify a subset of fields that should be\nreturned by a get operation or modified by an update operation." + }, + "query": { + "type": "string", + "description": "TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `display_name=\\\\\"Test String\\\\\"` returns groups with\ndisplay names that include both \"Test\" and \"String\"", + "title": "Optional. Search criteria used to select the groups to return.\nIf no search criteria is specified then all groups will be\nreturned" + } + } + }, "settingsListGroupsResponse": { "type": "object", "properties": { @@ -983,6 +900,19 @@ "title": "The update mask applies to the resource. For the `FieldMask` definition,\nsee https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask" } } + }, + "settingsUpdateGroupRequest": { + "type": "object", + "properties": { + "group": { + "$ref": "#/definitions/settingsGroup", + "title": "The group resource which replaces the resource on the server" + }, + "update_mask": { + "$ref": "#/definitions/protobufFieldMask", + "title": "The update mask applies to the resource. For the `FieldMask` definition,\nsee https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask" + } + } } } } diff --git a/pkg/server/grpc/server.go b/pkg/server/grpc/server.go index 6752862863..8238614151 100644 --- a/pkg/server/grpc/server.go +++ b/pkg/server/grpc/server.go @@ -28,6 +28,9 @@ func Server(opts ...Option) grpc.Service { if err = proto.RegisterAccountsServiceHandler(service.Server(), hdlr); err != nil { options.Logger.Fatal().Err(err).Msg("could not register service handler") } + if err = proto.RegisterGroupsServiceHandler(service.Server(), hdlr); err != nil { + options.Logger.Fatal().Err(err).Msg("could not register groups handler") + } service.Init() return service diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go new file mode 100644 index 0000000000..9433d71ea5 --- /dev/null +++ b/pkg/service/v0/accounts.go @@ -0,0 +1,401 @@ +package service + +import ( + "context" + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path/filepath" + "regexp" + "time" + + "github.com/CiscoM31/godata" + "github.com/blevesearch/bleve" + "github.com/blevesearch/bleve/search/query" + "github.com/gofrs/uuid" + "github.com/golang/protobuf/ptypes/empty" + merrors "github.com/micro/go-micro/v2/errors" + "github.com/owncloud/ocis-accounts/pkg/proto/v0" + "github.com/owncloud/ocis-accounts/pkg/provider" + "github.com/tredoe/osutil/user/crypt" + "google.golang.org/protobuf/types/known/timestamppb" + + // register crypt functions + _ "github.com/tredoe/osutil/user/crypt/apr1_crypt" + _ "github.com/tredoe/osutil/user/crypt/md5_crypt" + _ "github.com/tredoe/osutil/user/crypt/sha256_crypt" + _ "github.com/tredoe/osutil/user/crypt/sha512_crypt" +) + +func (s Service) indexAccounts(path string) (err error) { + + var f *os.File + if f, err = os.Open(path); err != nil { + s.log.Error().Err(err).Str("dir", path).Msg("could not open accounts folder") + return + } + list, err := f.Readdir(-1) + f.Close() + if err != nil { + s.log.Error().Err(err).Str("dir", path).Msg("could not list accounts folder") + return + } + for _, file := range list { + a := &proto.Account{} + if err = s.loadAccount(file.Name(), a); err != nil { + s.log.Error().Err(err).Str("account", file.Name()).Msg("could not load account") + continue + } + s.log.Debug().Interface("account", a).Msg("found account") + if err = s.index.Index(a.Id, a); err != nil { + s.log.Error().Err(err).Interface("account", a).Msg("could not index account") + continue + } + } + + return +} + +// an auth request is currently hardcoded and has to match this regex +// login eq \"teddy\" and password eq \"F&1!b90t111!\" +var authQuery = regexp.MustCompile(`^login eq '(.*)' and password eq '(.*)'$`) // TODO how is ' escaped in the password? + +func (s Service) loadAccount(id string, a *proto.Account) (err error) { + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) + + var data []byte + if data, err = ioutil.ReadFile(path); err != nil { + return merrors.NotFound(s.id, "could not read account: %v", err.Error()) + } + + if err = json.Unmarshal(data, a); err != nil { + return merrors.InternalServerError(s.id, "could not unmarshal account: %v", err.Error()) + } + return +} + +// loggableAccount redacts the password from the account +func loggableAccount(a *proto.Account) *proto.Account { + if a != nil && a.PasswordProfile != nil { + a.PasswordProfile.Password = "***REMOVED***" + } + return a +} + +func (s Service) writeAccount(a *proto.Account) (err error) { + + // leave only the group id + s.inflateMemberOf(a) + + var bytes []byte + if bytes, err = json.Marshal(a); err != nil { + return merrors.InternalServerError(s.id, "could not marshal account: %v", err.Error()) + } + + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", a.Id) + if err = ioutil.WriteFile(path, bytes, 0600); err != nil { + return merrors.InternalServerError(s.id, "could not write account: %v", err.Error()) + } + return +} + +func (s Service) expandMemberOf(a *proto.Account) { + if a == nil { + return + } + expanded := []*proto.Group{} + for i := range a.MemberOf { + g := &proto.Group{} + // TODO resolve by name, when a create or update is issued they may not have an id? fall back to searching the group id in the index? + if err := s.loadGroup(a.MemberOf[i].Id, g); err == nil { + g.Members = nil // always hide members when expanding + expanded = append(expanded, g) + } else { + // log errors but continue execution for now + s.log.Error().Err(err).Str("id", a.MemberOf[i].Id).Msg("could not load group") + } + } + a.MemberOf = expanded +} + +// inflateGroups replaces the groups of a user with an instance that only contains the id +func (s Service) inflateMemberOf(a *proto.Account) { + if a == nil { + return + } + inflated := []*proto.Group{} + for i := range a.MemberOf { + if a.MemberOf[i].Id != "" { + inflated = append(inflated, &proto.Group{Id: a.MemberOf[i].Id}) + } else { + // TODO fetch and use an id when group only has a name but no id + s.log.Error().Str("id", a.Id).Interface("group", a.MemberOf[i]).Msg("resolving groups by name is not implemented yet") + } + } + a.MemberOf = inflated +} + +func (s Service) passwordIsValid(hash string, pwd string) (ok bool) { + defer func() { + if r := recover(); r != nil { + s.log.Error().Err(fmt.Errorf("%s", r)).Str("hash", hash).Msg("password lib panicked") + } + }() + + c := crypt.NewFromHash(hash) + return c.Verify(hash, []byte(pwd)) == nil +} + +// ListAccounts implements the AccountsServiceHandler interface +// the query contains account properties +func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, out *proto.ListAccountsResponse) (err error) { + + var password string + + var query query.Query + + // check if this looks like an auth request + match := authQuery.FindStringSubmatch(in.Query) + if len(match) == 3 { + in.Query = fmt.Sprintf("preferred_name eq '%s'", match[1]) // todo fetch email? make query configurable + password = match[2] + if password == "" { + return merrors.Unauthorized(s.id, "password must not be empty") + } + } + + if in.Query != "" { + // parse the query like an odata filter + var q *godata.GoDataFilterQuery + if q, err = godata.ParseFilterString(in.Query); err != nil { + s.log.Error().Err(err).Msg("could not parse query") + return merrors.InternalServerError(s.id, "could not parse query: %v", err.Error()) + } + + // convert to bleve query + query, err = provider.BuildBleveQuery(q) + if err != nil { + s.log.Error().Err(err).Msg("could not build bleve query") + return merrors.InternalServerError(s.id, "could not build bleve query: %v", err.Error()) + } + } else { + query = bleve.NewMatchAllQuery() + } + + s.log.Debug().Interface("query", query).Msg("using query") + + searchRequest := bleve.NewSearchRequest(query) + var searchResult *bleve.SearchResult + searchResult, err = s.index.Search(searchRequest) + if err != nil { + s.log.Error().Err(err).Msg("could not execute bleve search") + return merrors.InternalServerError(s.id, "could not execute bleve search: %v", err.Error()) + } + + s.log.Debug().Interface("result", searchResult).Msg("result") + + out.Accounts = make([]*proto.Account, 0) + + for _, hit := range searchResult.Hits { + + a := &proto.Account{} + if err = s.loadAccount(hit.ID, a); err != nil { + s.log.Error().Err(err).Str("account", hit.ID).Msg("could not load account, skipping") + continue + } + var currentHash string + if a.PasswordProfile != nil { + currentHash = a.PasswordProfile.Password + } + s.log.Debug().Interface("account", loggableAccount(a)).Msg("found account") + + if password != "" { + if a.PasswordProfile == nil { + s.log.Debug().Interface("account", loggableAccount(a)).Msg("no password profile") + return merrors.Unauthorized(s.id, "invalid password") + } + if !s.passwordIsValid(currentHash, password) { + return merrors.Unauthorized(s.id, "invalid password") + } + } + // TODO add groups if requested + // if in.FieldMask ... + s.expandMemberOf(a) + + // remove password before returning + a.PasswordProfile.Password = "" + + out.Accounts = append(out.Accounts, a) + } + + return +} + +// GetAccount implements the AccountsServiceHandler interface +func (s Service) GetAccount(c context.Context, in *proto.GetAccountRequest, out *proto.Account) (err error) { + var id string + if id, err = cleanupID(in.Id); err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) + } + + if err = s.loadAccount(id, out); err != nil { + s.log.Error().Err(err).Str("id", id).Msg("could not load account") + return + } + s.log.Debug().Interface("account", loggableAccount(out)).Msg("found account") + + // TODO add groups if requested + // if in.FieldMask ... + s.expandMemberOf(out) + + // remove password + out.PasswordProfile.Password = "" + + return +} + +// CreateAccount implements the AccountsServiceHandler interface +func (s Service) CreateAccount(c context.Context, in *proto.CreateAccountRequest, out *proto.Account) (err error) { + var id string + if in.Account == nil { + return merrors.BadRequest(s.id, "account missing") + } + if in.Account.Id == "" { + in.Account.Id = uuid.Must(uuid.NewV4()).String() + } + + if id, err = cleanupID(in.Account.Id); err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) + } + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) + + if in.Account.PasswordProfile != nil && in.Account.PasswordProfile.Password != "" { + // encrypt password + c := crypt.New(crypt.SHA512) + if in.Account.PasswordProfile.Password, err = c.Generate([]byte(in.Account.PasswordProfile.Password), nil); err != nil { + s.log.Error().Err(err).Str("id", id).Interface("account", loggableAccount(in.Account)).Msg("could not hash password") + return merrors.InternalServerError(s.id, "could not hash password: %v", err.Error()) + } + } + + // extract group id + // TODO groups should be ignored during create, use groups.AddMember? return error? + if err = s.writeAccount(in.Account); err != nil { + s.log.Error().Err(err).Interface("account", loggableAccount(in.Account)).Msg("could not persist new account") + return + } + + if err = s.index.Index(id, in.Account); err != nil { + s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", loggableAccount(in.Account)).Msg("could not index new account") + return merrors.InternalServerError(s.id, "could not index new account: %v", err.Error()) + } + + return +} + +// UpdateAccount implements the AccountsServiceHandler interface +// read only fields are ignored +// TODO how can we unset specific values? using the update mask +func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest, out *proto.Account) (err error) { + var id string + if in.Account == nil { + return merrors.BadRequest(s.id, "account missing") + } + if in.Account.Id == "" { + return merrors.BadRequest(s.id, "account id missing") + } + + if id, err = cleanupID(in.Account.Id); err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) + } + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) + + if err = s.loadAccount(id, out); err != nil { + s.log.Error().Err(err).Str("id", id).Msg("could not load account") + return + } + s.log.Debug().Interface("account", loggableAccount(out)).Msg("found account") + + t := time.Now() + tsnow := ×tamppb.Timestamp{ + Seconds: t.Unix(), + Nanos: int32(t.Nanosecond()), + } + + // id read-only + out.AccountEnabled = in.Account.AccountEnabled + out.IsResourceAccount = in.Account.IsResourceAccount + // creation-type read only + out.Identities = in.Account.Identities + out.DisplayName = in.Account.DisplayName + out.PreferredName = in.Account.PreferredName + out.UidNumber = in.Account.UidNumber + out.GidNumber = in.Account.GidNumber + out.Mail = in.Account.Mail // read only? + out.Description = in.Account.Description + + if in.Account.PasswordProfile != nil && in.Account.PasswordProfile.Password != "" { + // encrypt password + c := crypt.New(crypt.SHA512) + if out.PasswordProfile.Password, err = c.Generate([]byte(in.Account.PasswordProfile.Password), nil); err != nil { + s.log.Error().Err(err).Str("id", id).Interface("account", loggableAccount(in.Account)).Msg("could not hash password") + return merrors.InternalServerError(s.id, "could not hash password: %v", err.Error()) + } + out.PasswordProfile.LastPasswordChangeDateTime = tsnow + } + // lastPasswordChangeDateTime calculated, see password + out.PasswordProfile.PasswordPolicies = in.Account.PasswordProfile.PasswordPolicies + out.PasswordProfile.ForceChangePasswordNextSignIn = in.Account.PasswordProfile.ForceChangePasswordNextSignIn + out.PasswordProfile.ForceChangePasswordNextSignInWithMfa = in.Account.PasswordProfile.ForceChangePasswordNextSignInWithMfa + + // memberOf read only + // createdDateTime read only + // deleteDateTime read only + + out.OnPremisesSyncEnabled = in.Account.OnPremisesSyncEnabled + // ... TODO on prem for sync + + if out.ExternalUserState != in.Account.ExternalUserState { + out.ExternalUserState = in.Account.ExternalUserState + out.ExternalUserStateChangeDateTime = tsnow + } + // out.RefreshTokensValidFromDateTime TODO use to invalidate all existing sessions + // out.SignInSessionsValidFromDateTime TODO use to invalidate all existing sessions + + if err = s.writeAccount(out); err != nil { + s.log.Error().Err(err).Interface("account", loggableAccount(out)).Msg("could not persist updated account") + return + } + + if err = s.index.Index(id, out); err != nil { + s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", loggableAccount(out)).Msg("could not index new account") + return merrors.InternalServerError(s.id, "could not index updated account: %v", err.Error()) + } + + // remove password + out.PasswordProfile.Password = "" + + return +} + +// DeleteAccount implements the AccountsServiceHandler interface +func (s Service) DeleteAccount(c context.Context, in *proto.DeleteAccountRequest, out *empty.Empty) (err error) { + var id string + if id, err = cleanupID(in.Id); err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) + } + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) + + if err = os.Remove(path); err != nil { + s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account") + return merrors.InternalServerError(s.id, "could not remove account: %v", err.Error()) + } + + if err = s.index.Delete(id); err != nil { + s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account from index") + return merrors.InternalServerError(s.id, "could not remove account from index: %v", err.Error()) + } + // TODO delete member relationship in groups + return +} diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go new file mode 100644 index 0000000000..8fe4d0ecd8 --- /dev/null +++ b/pkg/service/v0/groups.go @@ -0,0 +1,321 @@ +package service + +import ( + "context" + "encoding/json" + "errors" + "io/ioutil" + "os" + "path/filepath" + + "github.com/CiscoM31/godata" + "github.com/blevesearch/bleve" + "github.com/blevesearch/bleve/search/query" + "github.com/gofrs/uuid" + "github.com/golang/protobuf/ptypes/empty" + merrors "github.com/micro/go-micro/v2/errors" + "github.com/owncloud/ocis-accounts/pkg/proto/v0" + "github.com/owncloud/ocis-accounts/pkg/provider" +) + +func (s Service) indexGroups(path string) (err error) { + var f *os.File + if f, err = os.Open(path); err != nil { + s.log.Error().Err(err).Str("dir", path).Msg("could not open groups folder") + return + } + list, err := f.Readdir(-1) + f.Close() + if err != nil { + s.log.Error().Err(err).Str("dir", path).Msg("could not list groups folder") + return + } + for _, file := range list { + g := &proto.Group{} + if err = s.loadGroup(file.Name(), g); err != nil { + s.log.Error().Err(err).Str("group", file.Name()).Msg("could not load group") + continue + } + s.log.Debug().Interface("group", g).Msg("found group") + if err = s.index.Index(g.Id, g); err != nil { + s.log.Error().Err(err).Interface("group", g).Msg("could not index group") + continue + } + } + + return +} + +func (s Service) loadGroup(id string, g *proto.Group) (err error) { + path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) + + var data []byte + if data, err = ioutil.ReadFile(path); err != nil { + return merrors.NotFound(s.id, "could not read group: %v", err.Error()) + } + + if err = json.Unmarshal(data, g); err != nil { + return merrors.InternalServerError(s.id, "could not unmarshal group: %v", err.Error()) + } + + return +} + +func (s Service) writeGroup(g *proto.Group) (err error) { + + // leave only the member id + s.inflateMembers(g) + + var bytes []byte + if bytes, err = json.Marshal(g); err != nil { + return merrors.InternalServerError(s.id, "could not marshal group: %v", err.Error()) + } + + path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", g.Id) + if err = ioutil.WriteFile(path, bytes, 0600); err != nil { + return merrors.InternalServerError(s.id, "could not write group: %v", err.Error()) + } + return +} + +func (s Service) expandMembers(g *proto.Group) { + if g == nil { + return + } + expanded := []*proto.Account{} + for i := range g.Members { + // TODO resolve by name, when a create or update is issued they may not have an id? fall back to searching the group id in the index? + a := &proto.Account{} + if err := s.loadAccount(g.Members[i].Id, a); err == nil { + expanded = append(expanded, a) + } else { + // log errors but continue execution for now + s.log.Error().Err(err).Str("id", g.Members[i].Id).Msg("could not load account") + } + } + g.Members = expanded +} + +// inflateGroups replaces the groups of a user with an instance that only contains the id +func (s Service) inflateMembers(g *proto.Group) { + if g == nil { + return + } + inflated := []*proto.Account{} + for i := range g.Members { + if g.Members[i].Id != "" { + inflated = append(inflated, &proto.Account{Id: g.Members[i].Id}) + } else { + // TODO fetch and use an id when group only has a name but no id + s.log.Error().Str("id", g.Id).Interface("account", g.Members[i]).Msg("resolving members by name is not implemented yet") + } + } + g.Members = inflated +} + +// ListGroups implements the GroupsServiceHandler interface +func (s Service) ListGroups(c context.Context, in *proto.ListGroupsRequest, out *proto.ListGroupsResponse) (err error) { + + var query query.Query + + if in.Query != "" { + // parse the query like an odata filter + var q *godata.GoDataFilterQuery + if q, err = godata.ParseFilterString(in.Query); err != nil { + s.log.Error().Err(err).Msg("could not parse query") + return merrors.InternalServerError(s.id, "could not parse query: %v", err.Error()) + } + + // convert to bleve query + query, err = provider.BuildBleveQuery(q) + if err != nil { + s.log.Error().Err(err).Msg("could not build bleve query") + return merrors.InternalServerError(s.id, "could not build bleve query: %v", err.Error()) + } + } else { + query = bleve.NewMatchAllQuery() + } + + s.log.Debug().Interface("query", query).Msg("using query") + + searchRequest := bleve.NewSearchRequest(query) + var searchResult *bleve.SearchResult + searchResult, err = s.index.Search(searchRequest) + if err != nil { + s.log.Error().Err(err).Msg("could not execute bleve search") + return merrors.InternalServerError(s.id, "could not execute bleve search: %v", err.Error()) + } + + s.log.Debug().Interface("result", searchResult).Msg("result") + + out.Groups = make([]*proto.Group, 0) + + for _, hit := range searchResult.Hits { + + g := &proto.Group{} + if err = s.loadGroup(hit.ID, g); err != nil { + s.log.Error().Err(err).Str("group", hit.ID).Msg("could not load group, skipping") + continue + } + s.log.Debug().Interface("group", g).Msg("found group") + + // TODO add accounts if requested + // if in.FieldMask ... + s.expandMembers(g) + + out.Groups = append(out.Groups, g) + } + + return +} + +// GetGroup implements the GroupsServiceHandler interface +func (s Service) GetGroup(c context.Context, in *proto.GetGroupRequest, out *proto.Group) (err error) { + var id string + if id, err = cleanupID(in.Id); err != nil { + return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) + } + + if err = s.loadGroup(id, out); err != nil { + s.log.Error().Err(err).Str("id", id).Msg("could not load group") + return + } + s.log.Debug().Interface("group", out).Msg("found group") + + // TODO only add accounts if requested + // if in.FieldMask ... + s.expandMembers(out) + + return +} + +// CreateGroup implements the GroupsServiceHandler interface +func (s Service) CreateGroup(c context.Context, in *proto.CreateGroupRequest, out *proto.Group) (err error) { + var id string + if in.Group == nil { + return merrors.BadRequest(s.id, "account missing") + } + if in.Group.Id == "" { + in.Group.Id = uuid.Must(uuid.NewV4()).String() + } + + if id, err = cleanupID(in.Group.Id); err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) + } + path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) + + // extract member id + s.inflateMembers(in.Group) + + if err = s.writeGroup(in.Group); err != nil { + s.log.Error().Err(err).Interface("group", in.Group).Msg("could not persist new group") + return + } + + if err = s.index.Index(id, in.Group); err != nil { + s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("group", in.Group).Msg("could not index new group") + return merrors.InternalServerError(s.id, "could not index new group: %v", err.Error()) + } + + return +} + +// UpdateGroup implements the GroupsServiceHandler interface +func (s Service) UpdateGroup(c context.Context, in *proto.UpdateGroupRequest, out *proto.Group) (err error) { + return merrors.InternalServerError(s.id, "not implemented") +} + +// DeleteGroup implements the GroupsServiceHandler interface +func (s Service) DeleteGroup(c context.Context, in *proto.DeleteGroupRequest, out *empty.Empty) (err error) { + var id string + if id, err = cleanupID(in.Id); err != nil { + return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) + } + path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) + + if err = os.Remove(path); err != nil { + s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove group") + return merrors.InternalServerError(s.id, "could not remove group: %v", err.Error()) + } + + if err = s.index.Delete(id); err != nil { + s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove group from index") + return merrors.InternalServerError(s.id, "could not remove group from index: %v", err.Error()) + } + + // TODO delete memberof relationship in users + return +} + +// AddMember implements the GroupsServiceHandler interface +func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *proto.Group) (err error) { + + // cleanup ids + var groupID string + if groupID, err = cleanupID(in.GroupId); err != nil { + return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) + } + + var accountID string + if accountID, err = cleanupID(in.AccountId); err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) + } + + // load structs + a := &proto.Account{} + if err = s.loadAccount(accountID, a); err != nil { + s.log.Error().Err(err).Str("id", accountID).Msg("could not load account") + return + } + + g := &proto.Group{} + if err = s.loadGroup(groupID, g); err != nil { + s.log.Error().Err(err).Str("id", groupID).Msg("could not load group") + return + } + + // check if we need to add the account to the group + alreadyRelated := false + for i := range g.Members { + if g.Members[i].Id == a.Id { + alreadyRelated = true + } + } + if alreadyRelated == false { + g.Members = append(g.Members, a) + } + + // check if we need to add the group to the account + alreadyRelated = false + for i := range a.MemberOf { + if a.MemberOf[i].Id == g.Id { + alreadyRelated = true + } + } + if alreadyRelated == false { + a.MemberOf = append(a.MemberOf, g) + } + + if err = s.writeAccount(a); err != nil { + s.log.Error().Err(err).Interface("account", a).Msg("could not persist account") + return + } + if err = s.writeGroup(g); err != nil { + s.log.Error().Err(err).Interface("group", g).Msg("could not persist group") + return + } + // TODO rollback changes when only one of them failed? + // TODO store relation in another file? + // TODO return error if they are already related? + return nil +} + +// RemoveMember implements the GroupsServiceHandler interface +func (s Service) RemoveMember(c context.Context, in *proto.RemoveMemberRequest, out *proto.Group) error { + return errors.New("not implemented") +} + +// ListMembers implements the GroupsServiceHandler interface +func (s Service) ListMembers(c context.Context, in *proto.ListMembersRequest, out *proto.ListMembersResponse) error { + return errors.New("not implemented") +} diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index d003846814..22ad3a03fb 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -1,36 +1,19 @@ package service import ( - "context" "encoding/json" "errors" "fmt" "io/ioutil" "os" "path/filepath" - "regexp" "strings" - "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" "github.com/blevesearch/bleve/analysis/analyzer/keyword" - "github.com/blevesearch/bleve/search/query" - "github.com/gofrs/uuid" - "github.com/golang/protobuf/ptypes/empty" - mclient "github.com/micro/go-micro/v2/client" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" - "github.com/owncloud/ocis-accounts/pkg/provider" "github.com/owncloud/ocis-pkg/v2/log" - settings "github.com/owncloud/ocis-settings/pkg/proto/v0" - "github.com/tredoe/osutil/user/crypt" - - merrors "github.com/micro/go-micro/v2/errors" - // register crypt functions - _ "github.com/tredoe/osutil/user/crypt/apr1_crypt" - _ "github.com/tredoe/osutil/user/crypt/md5_crypt" - _ "github.com/tredoe/osutil/user/crypt/sha256_crypt" - _ "github.com/tredoe/osutil/user/crypt/sha512_crypt" ) // New returns a new instance of Service @@ -138,47 +121,33 @@ func New(opts ...Option) (s *Service, err error) { return nil, fmt.Errorf("%s is not a directory", accountsDir) } + if err = os.MkdirAll(filepath.Join(cfg.Server.AccountsDataPath, "groups"), 0700); err != nil { + return nil, err + } + mapping := bleve.NewIndexMapping() // keep all symbols in terms to allow exact maching, eg. emails mapping.DefaultAnalyzer = keyword.Name // TODO don't bother to store fields as we will load the account from disk + //groupsFieldMapping := bleve.NewTextFieldMapping() + //blogMapping.AddFieldMappingsAt("memberOf", nameFieldMapping) + // TODO index groups and accounts as different types? s = &Service{ id: cfg.GRPC.Namespace + "." + cfg.Server.Name, + log: logger, Config: cfg, } if s.index, err = bleve.New(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve"), mapping); err != nil { return } - var f *os.File - if f, err = os.Open(filepath.Join(cfg.Server.AccountsDataPath, "accounts")); err != nil { - logger.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not open accounts folder") - return + + if err = s.indexAccounts(filepath.Join(cfg.Server.AccountsDataPath, "accounts")); err != nil { + return nil, err } - list, err := f.Readdir(-1) - f.Close() - if err != nil { - logger.Error().Err(err).Str("dir", filepath.Join(cfg.Server.AccountsDataPath, "accounts")).Msg("could not list accounts folder") - return - } - var data []byte - for _, file := range list { - path := filepath.Join(cfg.Server.AccountsDataPath, "accounts", file.Name()) - if data, err = ioutil.ReadFile(path); err != nil { - logger.Error().Err(err).Str("path", path).Msg("could not read account") - continue - } - a := proto.Account{} - if err = json.Unmarshal(data, &a); err != nil { - logger.Error().Err(err).Str("path", path).Msg("could not unmarshal account") - continue - } - logger.Debug().Interface("account", &a).Msg("found account") - if err = s.index.Index(a.Id, &a); err != nil { - logger.Error().Err(err).Str("path", path).Interface("account", &a).Msg("could not index account") - continue - } + if err = s.indexGroups(filepath.Join(cfg.Server.AccountsDataPath, "groups")); err != nil { + return nil, err } // TODO watch folders for new records @@ -194,268 +163,10 @@ type Service struct { index bleve.Index } -// an auth request is currently hardcoded and has to match this regex -// login eq \"teddy\" and password eq \"F&1!b90t111!\" -var authQuery = regexp.MustCompile(`^login eq '(.*)' and password eq '(.*)'$`) // TODO how is ' escaped in the password? - -// ListAccounts implements the AccountsServiceHandler interface -// the query contains account properties -// TODO id vs onpremiseimmutableid -func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, res *proto.ListAccountsResponse) error { - - var password string - - var query query.Query - - // check if this looks like an auth request - match := authQuery.FindStringSubmatch(in.Query) - if len(match) == 3 { - in.Query = fmt.Sprintf("preferred_name eq '%s'", match[1]) // todo fetch email? make query configurable - password = match[2] - if password == "" { - return merrors.BadRequest(s.id, "password must not be empty") - } - } - - if in.Query != "" { - // parse the query like an odata filter - q, err := godata.ParseFilterString(in.Query) - if err != nil { - s.log.Error().Err(err).Msg("could not parse query") - return merrors.InternalServerError(s.id, "could not parse query: %v", err.Error()) - } - - // convert to bleve query - query, err = provider.BuildBleveQuery(q) - if err != nil { - s.log.Error().Err(err).Msg("could not build bleve query") - return merrors.InternalServerError(s.id, "could not build bleve query: %v", err.Error()) - } - } else { - query = bleve.NewMatchAllQuery() - } - - s.log.Debug().Interface("query", query).Msg("using query") - - searchRequest := bleve.NewSearchRequest(query) - var searchResult *bleve.SearchResult - searchResult, err := s.index.Search(searchRequest) - if err != nil { - s.log.Error().Err(err).Msg("could not execute bleve search") - return merrors.InternalServerError(s.id, "could not execute bleve search: %v", err.Error()) - } - - s.log.Debug().Interface("result", searchResult).Msg("result") - - res.Accounts = make([]*proto.Account, 0) - - for _, hit := range searchResult.Hits { - path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", hit.ID) - - var data []byte - data, err = ioutil.ReadFile(path) - if err != nil { - s.log.Error().Err(err).Str("path", path).Msg("could not read account") - continue - } - a := proto.Account{} - err = json.Unmarshal(data, &a) - if err != nil { - s.log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") - continue - } - s.log.Debug().Interface("account", &a).Msg("found account") - - if password != "" { - if a.PasswordProfile == nil { - s.log.Debug().Interface("account", &a).Msg("no password profile") - return merrors.BadRequest(s.id, "invalid password") - } - if !s.passwordIsValid(a.PasswordProfile.Password, password) { - return merrors.BadRequest(s.id, "invalid password") - } - } - - res.Accounts = append(res.Accounts, &a) - } - - return nil -} - -func (s Service) passwordIsValid(hash string, pwd string) (ok bool) { - defer func() { - if r := recover(); r != nil { - s.log.Error().Err(fmt.Errorf("%s", r)).Str("hash", hash).Msg("password lib panicked") - } - }() - - c := crypt.NewFromHash(hash) - return c.Verify(hash, []byte(pwd)) == nil -} - func cleanupID(id string) (string, error) { id = filepath.Clean(id) if id == "." || strings.Contains(id, "/") { - return "", errors.New("invalid id") + return "", errors.New("invalid id " + id) } return id, nil } - -// GetAccount implements the AccountsServiceHandler interface -func (s Service) GetAccount(c context.Context, req *proto.GetAccountRequest, res *proto.Account) error { - id, err := cleanupID(req.Id) - if err != nil { - return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) - } - path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) - - var data []byte - data, err = ioutil.ReadFile(path) - if err != nil { - s.log.Error().Err(err).Str("path", path).Msg("could not read account") - return merrors.NotFound(s.id, "account not found") - } - err = json.Unmarshal(data, res) - if err != nil { - s.log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") - return merrors.InternalServerError(s.id, "could not unmarshal account: %v", err.Error()) - } - - s.log.Debug().Interface("account", res).Msg("found account") - return nil -} - -// CreateAccount implements the AccountsServiceHandler interface -func (s Service) CreateAccount(c context.Context, req *proto.CreateAccountRequest, res *proto.Account) error { - var id string - if req.Account == nil { - return merrors.BadRequest(s.id, "account missing") - } - if req.Account.Id == "" { - req.Account.Id = uuid.Must(uuid.NewV4()).String() - } - - id, err := cleanupID(req.Account.Id) - if err != nil { - return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) - } - path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) - - if req.Account.PasswordProfile != nil && req.Account.PasswordProfile.Password != "" { - // encrypt password - c := crypt.New(crypt.SHA512) - if req.Account.PasswordProfile.Password, err = c.Generate([]byte(req.Account.PasswordProfile.Password), nil); err != nil { - req.Account.PasswordProfile.Password = "***REMOVED***" - s.log.Error().Err(err).Str("id", id).Interface("account", req.Account).Msg("could not hash password") - return merrors.InternalServerError(s.id, "could not hash password: %v", err.Error()) - } - } - req.Account.AccountEnabled = true - - bytes, err := json.Marshal(req.Account) - if err != nil { - s.log.Error().Err(err).Interface("account", req.Account).Msg("could not marshal account") - return merrors.InternalServerError(s.id, "could not marshal account: %v", err.Error()) - } - if err = ioutil.WriteFile(path, bytes, 0600); err != nil { - req.Account.PasswordProfile.Password = "***REMOVED***" - s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not persist new account") - return merrors.InternalServerError(s.id, "could not persist new account: %v", err.Error()) - } - - if err = s.index.Index(id, req.Account); err != nil { - req.Account.PasswordProfile.Password = "***REMOVED***" - s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", req.Account).Msg("could not index new account") - return merrors.InternalServerError(s.id, "could not index new account: %v", err.Error()) - } - - return nil -} - -// UpdateAccount implements the AccountsServiceHandler interface -func (s Service) UpdateAccount(c context.Context, req *proto.UpdateAccountRequest, res *proto.Account) (err error) { - return merrors.InternalServerError(s.id, "not implemented") -} - -// DeleteAccount implements the AccountsServiceHandler interface -func (s Service) DeleteAccount(c context.Context, req *proto.DeleteAccountRequest, res *empty.Empty) error { - id, err := cleanupID(req.Id) - if err != nil { - return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) - } - path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) - - if err = os.Remove(path); err != nil { - s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account") - return merrors.InternalServerError(s.id, "could not remove account: %v", err.Error()) - } - - if err = s.index.Delete(id); err != nil { - s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account from index") - return merrors.InternalServerError(s.id, "could not remove account from index: %v", err.Error()) - } - return nil -} - -// ListGroups implements the AccountsServiceHandler interface -func (s Service) ListGroups(c context.Context, req *proto.ListGroupsRequest, res *proto.ListGroupsResponse) (err error) { - return merrors.InternalServerError(s.id, "not implemented") -} - -// GetGroup implements the AccountsServiceHandler interface -func (s Service) GetGroup(c context.Context, req *proto.GetGroupRequest, res *proto.Group) (err error) { - return merrors.InternalServerError(s.id, "not implemented") -} - -// CreateGroup implements the AccountsServiceHandler interface -func (s Service) CreateGroup(c context.Context, req *proto.CreateGroupRequest, res *proto.Group) (err error) { - return merrors.InternalServerError(s.id, "not implemented") -} - -// UpdateGroup implements the AccountsServiceHandler interface -func (s Service) UpdateGroup(c context.Context, req *proto.UpdateGroupRequest, res *proto.Group) (err error) { - return merrors.InternalServerError(s.id, "not implemented") -} - -// DeleteGroup implements the AccountsServiceHandler interface -func (s Service) DeleteGroup(c context.Context, req *proto.DeleteGroupRequest, res *empty.Empty) (err error) { - return merrors.InternalServerError(s.id, "not implemented") -} - -// AddMember implements the AccountsServiceHandler interface -func (s Service) AddMember(c context.Context, req *proto.AddMemberRequest, res *proto.Group) error { - return merrors.InternalServerError(s.id, "not implemented") -} - -// RemoveMember implements the AccountsServiceHandler interface -func (s Service) RemoveMember(c context.Context, req *proto.RemoveMemberRequest, res *proto.Group) error { - return merrors.InternalServerError(s.id, "not implemented") -} - -// ListMembers implements the AccountsServiceHandler interface -func (s Service) ListMembers(c context.Context, req *proto.ListMembersRequest, res *proto.ListMembersResponse) error { - return merrors.InternalServerError(s.id, "not implemented") -} - -// RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. -func RegisterSettingsBundles(l *log.Logger) { - // TODO this won't work with a registry other than mdns. Look into Micro's client initialization. - // https://github.com/owncloud/ocis-proxy/issues/38 - service := settings.NewBundleService("com.owncloud.api.settings", mclient.DefaultClient) - - requests := []settings.SaveSettingsBundleRequest{ - generateSettingsBundleProfileRequest(), - } - - for i := range requests { - res, err := service.SaveSettingsBundle(context.Background(), &requests[i]) - if err != nil { - l.Err(err). - Msg("Error registering settings bundle") - } else { - l.Info(). - Str("bundle key", res.SettingsBundle.Identifier.BundleKey). - Msg("Successfully registered settings bundle") - } - } -} diff --git a/pkg/service/v0/settings.go b/pkg/service/v0/settings.go index 07f62b91ab..6dcf6d1dae 100644 --- a/pkg/service/v0/settings.go +++ b/pkg/service/v0/settings.go @@ -1,6 +1,12 @@ package service -import settings "github.com/owncloud/ocis-settings/pkg/proto/v0" +import ( + "context" + + mclient "github.com/micro/go-micro/v2/client" + olog "github.com/owncloud/ocis-pkg/v2/log" + settings "github.com/owncloud/ocis-settings/pkg/proto/v0" +) func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { return settings.SaveSettingsBundleRequest{ @@ -82,3 +88,26 @@ func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { }, } } + +// RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. +func RegisterSettingsBundles(l *olog.Logger) { + // TODO this won't work with a registry other than mdns. Look into Micro's client initialization. + // https://github.com/owncloud/ocis-proxy/issues/38 + service := settings.NewBundleService("com.owncloud.api.settings", mclient.DefaultClient) + + requests := []settings.SaveSettingsBundleRequest{ + generateSettingsBundleProfileRequest(), + } + + for i := range requests { + res, err := service.SaveSettingsBundle(context.Background(), &requests[i]) + if err != nil { + l.Err(err). + Msg("Error registering settings bundle") + } else { + l.Info(). + Str("bundle key", res.SettingsBundle.Identifier.BundleKey). + Msg("Successfully registered settings bundle") + } + } +} From ebaf39f0afa4d8549e8c4e2145841368dae85445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 7 Jul 2020 15:13:34 +0200 Subject: [PATCH 198/407] address review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- Makefile | 2 +- pkg/proto/v0/accounts.proto | 18 ++++++++++-------- pkg/service/v0/accounts.go | 12 ++++++------ pkg/service/v0/groups.go | 15 ++++++++------- 4 files changed, 25 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index bc174e3a02..c4250c3209 100644 --- a/Makefile +++ b/Makefile @@ -163,7 +163,7 @@ watch: go run github.com/cespare/reflex -c reflex.conf $(GOPATH)/bin/protoc-gen-go: - GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go + GO111MODULE=off go get -v google.golang.org/protobuf/cmd/protoc-gen-go $(GOPATH)/bin/protoc-gen-micro: GO111MODULE=on go get -v github.com/micro/protoc-gen-micro/v2 diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index 617757d9fe..4c5b4f1c3d 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -63,14 +63,14 @@ service GroupsService { rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) { // List method maps to HTTP GET option (google.api.http) = { - post: "/api/v0/groups/groups-list", + post: "/api/v0/accounts/groups-list", body: "*" }; } // Gets an groups rpc GetGroup(GetGroupRequest) returns (Group) { option (google.api.http) = { - post: "/api/v0/groups/groups-get", + post: "/api/v0/accounts/groups-get", body: "*" }; } @@ -79,7 +79,7 @@ service GroupsService { // Create maps to HTTP POST. URL path as the collection name. // HTTP request body contains the resource option (google.api.http) = { - post: "/api/v0/groups/groups-create" + post: "/api/v0/accounts/groups-create" body: "*" }; } @@ -88,7 +88,7 @@ service GroupsService { // Update maps to HTTP PATCH. Resource name is mapped to a URL path. // Resource is contained in the HTTP request body option (google.api.http) = { - post: "/api/v0/groups/groups-update" + post: "/api/v0/accounts/groups-update" body: "*" }; }; @@ -97,7 +97,7 @@ service GroupsService { // Delete maps to HTTP DELETE. Resource name maps to the URL path. // There is no request body option (google.api.http) = { - post: "/api/v0/groups/groups-delete", + post: "/api/v0/accounts/groups-delete", body: "*" }; } @@ -111,7 +111,7 @@ service GroupsService { rpc AddMember(AddMemberRequest) returns (Group) { // All request parameters go into body. option (google.api.http) = { - post: "/v0/groups/{group_id=*}/members/$ref" + post: "/api/v0/groups/{group_id=*}/members/$ref" body: "*" }; } @@ -119,14 +119,16 @@ service GroupsService { rpc RemoveMember(RemoveMemberRequest) returns (Group) { // All request parameters go into body. option (google.api.http) = { - delete: "/v0/groups/{group_id=*}/members/{account_id}/$ref" + delete: "/api/v0/groups/{group_id=*}/members/{account_id}/$ref" + body: "*" }; } // group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 rpc ListMembers(ListMembersRequest) returns (ListMembersResponse) { // All request parameters go into body. option (google.api.http) = { - get: "/v0/groups/{id=*}/members/$ref" + get: "/api/v0/groups/{id=*}/members/$ref" + body: "*" }; } diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 9433d71ea5..480956435c 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -86,7 +86,7 @@ func loggableAccount(a *proto.Account) *proto.Account { func (s Service) writeAccount(a *proto.Account) (err error) { // leave only the group id - s.inflateMemberOf(a) + s.deflateMemberOf(a) var bytes []byte if bytes, err = json.Marshal(a); err != nil { @@ -119,21 +119,21 @@ func (s Service) expandMemberOf(a *proto.Account) { a.MemberOf = expanded } -// inflateGroups replaces the groups of a user with an instance that only contains the id -func (s Service) inflateMemberOf(a *proto.Account) { +// deflateMemberOf replaces the groups of a user with an instance that only contains the id +func (s Service) deflateMemberOf(a *proto.Account) { if a == nil { return } - inflated := []*proto.Group{} + deflated := []*proto.Group{} for i := range a.MemberOf { if a.MemberOf[i].Id != "" { - inflated = append(inflated, &proto.Group{Id: a.MemberOf[i].Id}) + deflated = append(deflated, &proto.Group{Id: a.MemberOf[i].Id}) } else { // TODO fetch and use an id when group only has a name but no id s.log.Error().Str("id", a.Id).Interface("group", a.MemberOf[i]).Msg("resolving groups by name is not implemented yet") } } - a.MemberOf = inflated + a.MemberOf = deflated } func (s Service) passwordIsValid(hash string, pwd string) (ok bool) { diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 8fe4d0ecd8..51ec50e6de 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -64,7 +64,7 @@ func (s Service) loadGroup(id string, g *proto.Group) (err error) { func (s Service) writeGroup(g *proto.Group) (err error) { // leave only the member id - s.inflateMembers(g) + s.deflateMembers(g) var bytes []byte if bytes, err = json.Marshal(g); err != nil { @@ -96,21 +96,21 @@ func (s Service) expandMembers(g *proto.Group) { g.Members = expanded } -// inflateGroups replaces the groups of a user with an instance that only contains the id -func (s Service) inflateMembers(g *proto.Group) { +// deflateMembers replaces the users of a group with an instance that only contains the id +func (s Service) deflateMembers(g *proto.Group) { if g == nil { return } - inflated := []*proto.Account{} + deflated := []*proto.Account{} for i := range g.Members { if g.Members[i].Id != "" { - inflated = append(inflated, &proto.Account{Id: g.Members[i].Id}) + deflated = append(deflated, &proto.Account{Id: g.Members[i].Id}) } else { // TODO fetch and use an id when group only has a name but no id s.log.Error().Str("id", g.Id).Interface("account", g.Members[i]).Msg("resolving members by name is not implemented yet") } } - g.Members = inflated + g.Members = deflated } // ListGroups implements the GroupsServiceHandler interface @@ -205,7 +205,7 @@ func (s Service) CreateGroup(c context.Context, in *proto.CreateGroupRequest, ou path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) // extract member id - s.inflateMembers(in.Group) + s.deflateMembers(in.Group) if err = s.writeGroup(in.Group); err != nil { s.log.Error().Err(err).Interface("group", in.Group).Msg("could not persist new group") @@ -290,6 +290,7 @@ func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *p for i := range a.MemberOf { if a.MemberOf[i].Id == g.Id { alreadyRelated = true + break } } if alreadyRelated == false { From eb140be50fd6135bded42a9784886ac02b89c1ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 7 Jul 2020 17:13:30 +0200 Subject: [PATCH 199/407] update generated files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/proto/v0/accounts.pb.go | 108 +++++++++++++++--------------- pkg/proto/v0/accounts.pb.micro.go | 36 +++++----- pkg/proto/v0/accounts.pb.web.go | 16 ++--- 3 files changed, 81 insertions(+), 79 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index c75bb6b2f6..f8f7eb8d0d 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -2206,64 +2206,66 @@ var file_accounts_proto_rawDesc = []byte{ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x32, 0xf3, 0x06, 0x0a, 0x0d, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6e, 0x0a, 0x0a, 0x4c, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x32, 0x90, 0x07, 0x0a, 0x0d, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x70, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x5c, 0x0a, 0x08, 0x47, - 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x2d, 0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x65, 0x0a, 0x0b, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, - 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, - 0x12, 0x65, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x27, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x6c, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x69, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x64, - 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x5e, 0x0a, + 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x67, 0x0a, + 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x29, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x67, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, + 0x6e, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, + 0x6d, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2d, 0x22, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, 0x12, 0x80, + 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, - 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x24, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x3d, 0x2a, 0x7d, - 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, - 0x12, 0x79, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x3d, 0x2a, - 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x12, 0x72, 0x0a, 0x0b, 0x4c, - 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, - 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, - 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x42, - 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x3b, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x2a, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, + 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, + 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, + 0x2a, 0x12, 0x79, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, 0x42, 0x14, 0x5a, 0x12, + 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index 0a47f58d02..c8ec8472e4 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -251,56 +251,56 @@ func NewGroupsServiceEndpoints() []*api.Endpoint { return []*api.Endpoint{ &api.Endpoint{ Name: "GroupsService.ListGroups", - Path: []string{"/api/v0/groups/groups-list"}, + Path: []string{"/api/v0/accounts/groups-list"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.GetGroup", - Path: []string{"/api/v0/groups/groups-get"}, + Path: []string{"/api/v0/accounts/groups-get"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.CreateGroup", - Path: []string{"/api/v0/groups/groups-create"}, + Path: []string{"/api/v0/accounts/groups-create"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.UpdateGroup", - Path: []string{"/api/v0/groups/groups-update"}, + Path: []string{"/api/v0/accounts/groups-update"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.DeleteGroup", - Path: []string{"/api/v0/groups/groups-delete"}, + Path: []string{"/api/v0/accounts/groups-delete"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.AddMember", - Path: []string{"/v0/groups/{group_id=*}/members/$ref"}, + Path: []string{"/api/v0/groups/{group_id=*}/members/$ref"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.RemoveMember", - Path: []string{"/v0/groups/{group_id=*}/members/{account_id}/$ref"}, + Path: []string{"/api/v0/groups/{group_id=*}/members/{account_id}/$ref"}, Method: []string{"DELETE"}, - Body: "", + Body: "*", Handler: "rpc", }, &api.Endpoint{ Name: "GroupsService.ListMembers", - Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Path: []string{"/api/v0/groups/{id=*}/members/$ref"}, Method: []string{"GET"}, Handler: "rpc", }, @@ -458,56 +458,56 @@ func RegisterGroupsServiceHandler(s server.Server, hdlr GroupsServiceHandler, op h := &groupsServiceHandler{hdlr} opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.ListGroups", - Path: []string{"/api/v0/groups/groups-list"}, + Path: []string{"/api/v0/accounts/groups-list"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.GetGroup", - Path: []string{"/api/v0/groups/groups-get"}, + Path: []string{"/api/v0/accounts/groups-get"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.CreateGroup", - Path: []string{"/api/v0/groups/groups-create"}, + Path: []string{"/api/v0/accounts/groups-create"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.UpdateGroup", - Path: []string{"/api/v0/groups/groups-update"}, + Path: []string{"/api/v0/accounts/groups-update"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.DeleteGroup", - Path: []string{"/api/v0/groups/groups-delete"}, + Path: []string{"/api/v0/accounts/groups-delete"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.AddMember", - Path: []string{"/v0/groups/{group_id=*}/members/$ref"}, + Path: []string{"/api/v0/groups/{group_id=*}/members/$ref"}, Method: []string{"POST"}, Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.RemoveMember", - Path: []string{"/v0/groups/{group_id=*}/members/{account_id}/$ref"}, + Path: []string{"/api/v0/groups/{group_id=*}/members/{account_id}/$ref"}, Method: []string{"DELETE"}, - Body: "", + Body: "*", Handler: "rpc", })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "GroupsService.ListMembers", - Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Path: []string{"/api/v0/groups/{id=*}/members/$ref"}, Method: []string{"GET"}, Handler: "rpc", })) diff --git a/pkg/proto/v0/accounts.pb.web.go b/pkg/proto/v0/accounts.pb.web.go index 528a828322..48ccdd5393 100644 --- a/pkg/proto/v0/accounts.pb.web.go +++ b/pkg/proto/v0/accounts.pb.web.go @@ -362,14 +362,14 @@ func RegisterGroupsServiceWeb(r chi.Router, i GroupsServiceHandler, middlewares h: i, } - r.MethodFunc("POST", "/api/v0/groups/groups-list", handler.ListGroups) - r.MethodFunc("POST", "/api/v0/groups/groups-get", handler.GetGroup) - r.MethodFunc("POST", "/api/v0/groups/groups-create", handler.CreateGroup) - r.MethodFunc("POST", "/api/v0/groups/groups-update", handler.UpdateGroup) - r.MethodFunc("POST", "/api/v0/groups/groups-delete", handler.DeleteGroup) - r.MethodFunc("POST", "/v0/groups/{group_id=*}/members/$ref", handler.AddMember) - r.MethodFunc("DELETE", "/v0/groups/{group_id=*}/members/{account_id}/$ref", handler.RemoveMember) - r.MethodFunc("GET", "/v0/groups/{id=*}/members/$ref", handler.ListMembers) + r.MethodFunc("POST", "/api/v0/accounts/groups-list", handler.ListGroups) + r.MethodFunc("POST", "/api/v0/accounts/groups-get", handler.GetGroup) + r.MethodFunc("POST", "/api/v0/accounts/groups-create", handler.CreateGroup) + r.MethodFunc("POST", "/api/v0/accounts/groups-update", handler.UpdateGroup) + r.MethodFunc("POST", "/api/v0/accounts/groups-delete", handler.DeleteGroup) + r.MethodFunc("POST", "/api/v0/groups/{group_id=*}/members/$ref", handler.AddMember) + r.MethodFunc("DELETE", "/api/v0/groups/{group_id=*}/members/{account_id}/$ref", handler.RemoveMember) + r.MethodFunc("GET", "/api/v0/groups/{id=*}/members/$ref", handler.ListMembers) } // ListAccountsRequestJSONMarshaler describes the default jsonpb.Marshaler used by all From c8451c04364bd3b182a8d4b07fe3b063c53dee39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 7 Jul 2020 17:13:50 +0200 Subject: [PATCH 200/407] generate default groups MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/service/v0/service.go | 280 ++++++++++++++++++++++++-------------- 1 file changed, 181 insertions(+), 99 deletions(-) diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 22ad3a03fb..acb661d80a 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -23,106 +23,184 @@ func New(opts ...Option) (s *Service, err error) { cfg := options.Config // read all user and group records - // for now recreate index on every start - if err = os.RemoveAll(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve")); err != nil { - return nil, err - } - - // check if accounts exist accountsDir := filepath.Join(cfg.Server.AccountsDataPath, "accounts") - var fi os.FileInfo - if fi, err = os.Stat(accountsDir); err != nil { - if os.IsNotExist(err) { - // create accounts directory - if err = os.MkdirAll(accountsDir, 0700); err != nil { - return nil, err - } - // create default accounts - accounts := []proto.Account{ - { - Id: "4c510ada-c86b-4815-8820-42cdf82c3d51", - PreferredName: "einstein", - Mail: "einstein@example.org", - DisplayName: "Albert Einstein", - UidNumber: 20000, - GidNumber: 30000, - PasswordProfile: &proto.PasswordProfile{ - Password: "$6$rounds=35210$sa1u5Pmfo4cr23Vw$RJNGElaDB1D3xorWkfTEGm2Ko.o2QL3E0cimKx23MNxVWVFSkUUeRoC7FqC4RzYDNQBD6cKzovTEaDD.8TDkD.", - }, - AccountEnabled: true, - }, - { - Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c", - PreferredName: "marie", - Mail: "marie@example.org", - DisplayName: "Marie Curie", - UidNumber: 20001, - GidNumber: 30000, - PasswordProfile: &proto.PasswordProfile{ - Password: "$6$rounds=81434$sa1u5Pmfo4cr23Vw$W78cyL884GmuvDpxYPvSRBVzEj02T5QhTTcI8Dv4IKvMooDFGv4bwaWMkH9HfJ0wgpEBW7Lp.4Cad0xE/MYSg1", - }, - AccountEnabled: true, - }, - { - Id: "932b4540-8d16-481e-8ef4-588e4b6b151c", - PreferredName: "richard", - Mail: "richard@example.org", - DisplayName: "Richard Feynman", - UidNumber: 20002, - GidNumber: 30000, - PasswordProfile: &proto.PasswordProfile{ - Password: "$6$rounds=5524$sa1u5Pmfo4cr23Vw$58bQVL/JeUlwM0RY21YKAFMvKvwKLLysGllYXox.vwKT5dHMwdzJjCxwTDMnB2o2pwexC8o/iOXyP2zrhALS40", - }, - AccountEnabled: true, - }, - // technical users for kopano and reva - { - Id: "820ba2a1-3f54-4538-80a4-2d73007e30bf", - PreferredName: "konnectd", - Mail: "idp@example.org", - DisplayName: "Kopano Konnectd", - UidNumber: 10000, - GidNumber: 15000, - PasswordProfile: &proto.PasswordProfile{ - Password: "$6$rounds=9746$sa1u5Pmfo4cr23Vw$2hnwpkTvUkWX0v6mh8Aw1pbzEXa9EUJzmrey4g2W/8arwWCwhteqU//3aWnA3S0d5T21fOKYteoqlsN1IbTcN.", - }, - AccountEnabled: true, - }, - { - Id: "bc596f3c-c955-4328-80a0-60d018b4ad57", - PreferredName: "reva", - Mail: "storage@example.org", - DisplayName: "Reva Inter Operability Platform", - UidNumber: 10001, - GidNumber: 15000, - PasswordProfile: &proto.PasswordProfile{ - Password: "$6$rounds=91087$sa1u5Pmfo4cr23Vw$wPC3BbMTbP/ytlo0p.f99zJifyO70AUCdKIK9hkhwutBKGCirLmZs/MsWAG6xHjVvmnmHN5NoON7FUGv5pPaN.", - }, - AccountEnabled: true, - }, - } - // TODO groups - for i := range accounts { - var bytes []byte - if bytes, err = json.Marshal(&accounts[i]); err != nil { - logger.Error().Err(err).Interface("account", &accounts[i]).Msg("could not marshal default account") - return + { + // check if accounts exist + var fi os.FileInfo + if fi, err = os.Stat(accountsDir); err != nil { + if os.IsNotExist(err) { + // create accounts directory + if err = os.MkdirAll(accountsDir, 0700); err != nil { + return nil, err } - path := filepath.Join(accountsDir, accounts[i].Id) - if err = ioutil.WriteFile(path, bytes, 0600); err != nil { - accounts[i].PasswordProfile.Password = "***REMOVED***" - logger.Error().Err(err).Str("path", path).Interface("account", &accounts[i]).Msg("could not persist default account") - return + // create default accounts + accounts := []proto.Account{ + { + Id: "4c510ada-c86b-4815-8820-42cdf82c3d51", + PreferredName: "einstein", + Mail: "einstein@example.org", + DisplayName: "Albert Einstein", + UidNumber: 20000, + GidNumber: 30000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=35210$sa1u5Pmfo4cr23Vw$RJNGElaDB1D3xorWkfTEGm2Ko.o2QL3E0cimKx23MNxVWVFSkUUeRoC7FqC4RzYDNQBD6cKzovTEaDD.8TDkD.", + }, + AccountEnabled: true, + MemberOf: []*proto.Group{ + {Id: "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa"}, // users + {Id: "6040aa17-9c64-4fef-9bd0-77234d71bad0"}, // sailing-lovers + {Id: "dd58e5ec-842e-498b-8800-61f2ec6f911f"}, // violin-haters + {Id: "262982c1-2362-4afa-bfdf-8cbfef64a06e"}, // physics-lovers + }, + }, + { + Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c", + PreferredName: "marie", + Mail: "marie@example.org", + DisplayName: "Marie Curie", + UidNumber: 20001, + GidNumber: 30000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=81434$sa1u5Pmfo4cr23Vw$W78cyL884GmuvDpxYPvSRBVzEj02T5QhTTcI8Dv4IKvMooDFGv4bwaWMkH9HfJ0wgpEBW7Lp.4Cad0xE/MYSg1", + }, + AccountEnabled: true, + MemberOf: []*proto.Group{ + {Id: "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa"}, // users + {Id: "7b87fd49-286e-4a5f-bafd-c535d5dd997a"}, // radium-lovers + {Id: "cedc21aa-4072-4614-8676-fa9165f598ff"}, // polonium-lovers + {Id: "262982c1-2362-4afa-bfdf-8cbfef64a06e"}, // physics-lovers + }, + }, + { + Id: "932b4540-8d16-481e-8ef4-588e4b6b151c", + PreferredName: "richard", + Mail: "richard@example.org", + DisplayName: "Richard Feynman", + UidNumber: 20002, + GidNumber: 30000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=5524$sa1u5Pmfo4cr23Vw$58bQVL/JeUlwM0RY21YKAFMvKvwKLLysGllYXox.vwKT5dHMwdzJjCxwTDMnB2o2pwexC8o/iOXyP2zrhALS40", + }, + AccountEnabled: true, + MemberOf: []*proto.Group{ + {Id: "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa"}, // users + {Id: "a1726108-01f8-4c30-88df-2b1a9d1cba1a"}, // quantum-lovers + {Id: "167cbee2-0518-455a-bfb2-031fe0621e5d"}, // philosophy-haters + {Id: "262982c1-2362-4afa-bfdf-8cbfef64a06e"}, // physics-lovers + }, + }, + // technical users for kopano and reva + { + Id: "820ba2a1-3f54-4538-80a4-2d73007e30bf", + PreferredName: "konnectd", + Mail: "idp@example.org", + DisplayName: "Kopano Konnectd", + UidNumber: 10000, + GidNumber: 15000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=9746$sa1u5Pmfo4cr23Vw$2hnwpkTvUkWX0v6mh8Aw1pbzEXa9EUJzmrey4g2W/8arwWCwhteqU//3aWnA3S0d5T21fOKYteoqlsN1IbTcN.", + }, + AccountEnabled: true, + MemberOf: []*proto.Group{ + {Id: "34f38767-c937-4eb6-b847-1c175829a2a0"}, // sysusers + }, + }, + { + Id: "bc596f3c-c955-4328-80a0-60d018b4ad57", + PreferredName: "reva", + Mail: "storage@example.org", + DisplayName: "Reva Inter Operability Platform", + UidNumber: 10001, + GidNumber: 15000, + PasswordProfile: &proto.PasswordProfile{ + Password: "$6$rounds=91087$sa1u5Pmfo4cr23Vw$wPC3BbMTbP/ytlo0p.f99zJifyO70AUCdKIK9hkhwutBKGCirLmZs/MsWAG6xHjVvmnmHN5NoON7FUGv5pPaN.", + }, + AccountEnabled: true, + MemberOf: []*proto.Group{ + {Id: "34f38767-c937-4eb6-b847-1c175829a2a0"}, // sysusers + }, + }, + } + for i := range accounts { + var bytes []byte + if bytes, err = json.Marshal(&accounts[i]); err != nil { + logger.Error().Err(err).Interface("account", &accounts[i]).Msg("could not marshal default account") + return + } + path := filepath.Join(accountsDir, accounts[i].Id) + if err = ioutil.WriteFile(path, bytes, 0600); err != nil { + accounts[i].PasswordProfile.Password = "***REMOVED***" + logger.Error().Err(err).Str("path", path).Interface("account", &accounts[i]).Msg("could not persist default account") + return + } } } - + } else if !fi.IsDir() { + return nil, fmt.Errorf("%s is not a directory", accountsDir) } - } else if !fi.IsDir() { - return nil, fmt.Errorf("%s is not a directory", accountsDir) } - if err = os.MkdirAll(filepath.Join(cfg.Server.AccountsDataPath, "groups"), 0700); err != nil { - return nil, err + groupsDir := filepath.Join(cfg.Server.AccountsDataPath, "groups") + { + // check if groups exist + var fi os.FileInfo + if fi, err = os.Stat(groupsDir); err != nil { + if os.IsNotExist(err) { + // create accounts directory + if err = os.MkdirAll(groupsDir, 0700); err != nil { + return nil, err + } + // create default accounts + groups := []proto.Group{ + {Id: "34f38767-c937-4eb6-b847-1c175829a2a0", GidNumber: 15000, OnPremisesSamAccountName: "sysusers", DisplayName: "Technical users", Description: "A group for technical users. They should not show up in sharing dialogs.", Members: []*proto.Account{ + {Id: "820ba2a1-3f54-4538-80a4-2d73007e30bf"}, // konnectd + {Id: "bc596f3c-c955-4328-80a0-60d018b4ad57"}, // reva + }}, + {Id: "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa", GidNumber: 30000, OnPremisesSamAccountName: "users", DisplayName: "Users", Description: "A group every normal user belongs to.", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }}, + {Id: "6040aa17-9c64-4fef-9bd0-77234d71bad0", GidNumber: 30001, OnPremisesSamAccountName: "sailing-lovers", DisplayName: "Sailing lovers", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + }}, + {Id: "dd58e5ec-842e-498b-8800-61f2ec6f911f", GidNumber: 30002, OnPremisesSamAccountName: "violin-haters", DisplayName: "Violin haters", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + }}, + {Id: "7b87fd49-286e-4a5f-bafd-c535d5dd997a", GidNumber: 30003, OnPremisesSamAccountName: "radium-lovers", DisplayName: "Radium lovers", Members: []*proto.Account{ + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + }}, + {Id: "cedc21aa-4072-4614-8676-fa9165f598ff", GidNumber: 30004, OnPremisesSamAccountName: "polonium-lovers", DisplayName: "Polonium lovers", Members: []*proto.Account{ + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + }}, + {Id: "a1726108-01f8-4c30-88df-2b1a9d1cba1a", GidNumber: 30005, OnPremisesSamAccountName: "quantum-lovers", DisplayName: "Quantum lovers", Members: []*proto.Account{ + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }}, + {Id: "167cbee2-0518-455a-bfb2-031fe0621e5d", GidNumber: 30006, OnPremisesSamAccountName: "philosophy-haters", DisplayName: "Philosophy haters", Members: []*proto.Account{ + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }}, + {Id: "262982c1-2362-4afa-bfdf-8cbfef64a06e", GidNumber: 30007, OnPremisesSamAccountName: "physics-lovers", DisplayName: "Physics lovers", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }}, + } + for i := range groups { + var bytes []byte + if bytes, err = json.Marshal(&groups[i]); err != nil { + logger.Error().Err(err).Interface("group", &groups[i]).Msg("could not marshal default group") + return + } + path := filepath.Join(groupsDir, groups[i].Id) + if err = ioutil.WriteFile(path, bytes, 0600); err != nil { + logger.Error().Err(err).Str("path", path).Interface("group", &groups[i]).Msg("could not persist default group") + return + } + } + } + } else if !fi.IsDir() { + return nil, fmt.Errorf("%s is not a directory", groupsDir) + } } mapping := bleve.NewIndexMapping() @@ -139,14 +217,18 @@ func New(opts ...Option) (s *Service, err error) { Config: cfg, } - if s.index, err = bleve.New(filepath.Join(cfg.Server.AccountsDataPath, "index.bleve"), mapping); err != nil { - return - } - - if err = s.indexAccounts(filepath.Join(cfg.Server.AccountsDataPath, "accounts")); err != nil { + indexDir := filepath.Join(cfg.Server.AccountsDataPath, "index.bleve") + // for now recreate index on every start + if err = os.RemoveAll(indexDir); err != nil { return nil, err } - if err = s.indexGroups(filepath.Join(cfg.Server.AccountsDataPath, "groups")); err != nil { + if s.index, err = bleve.New(indexDir, mapping); err != nil { + return + } + if err = s.indexAccounts(accountsDir); err != nil { + return nil, err + } + if err = s.indexGroups(groupsDir); err != nil { return nil, err } From 379becff5bd441bf7c0d63959445404b37e6ca8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 9 Jul 2020 13:02:43 +0200 Subject: [PATCH 201/407] delete relationships MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/service/v0/accounts.go | 20 +++++++- pkg/service/v0/groups.go | 100 ++++++++++++++++++++++++++++++++++--- 2 files changed, 113 insertions(+), 7 deletions(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 480956435c..73269b58db 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -387,6 +387,23 @@ func (s Service) DeleteAccount(c context.Context, in *proto.DeleteAccountRequest } path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) + a := &proto.Account{} + if err = s.loadAccount(id, a); err != nil { + s.log.Error().Err(err).Str("id", id).Msg("could not load account") + return + } + + // delete member relationship in groups + for i := range a.MemberOf { + err = s.RemoveMember(c, &proto.RemoveMemberRequest{ + GroupId: a.MemberOf[i].Id, + AccountId: id, + }, a.MemberOf[i]) + if err != nil { + s.log.Error().Err(err).Str("accountid", id).Str("groupid", a.MemberOf[i].Id).Msg("could not remove group membership") + } + } + if err = os.Remove(path); err != nil { s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account") return merrors.InternalServerError(s.id, "could not remove account: %v", err.Error()) @@ -396,6 +413,7 @@ func (s Service) DeleteAccount(c context.Context, in *proto.DeleteAccountRequest s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove account from index") return merrors.InternalServerError(s.id, "could not remove account from index: %v", err.Error()) } - // TODO delete member relationship in groups + + s.log.Info().Str("id", id).Msg("deleted account") return } diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 51ec50e6de..41f4792300 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -3,7 +3,6 @@ package service import ( "context" "encoding/json" - "errors" "io/ioutil" "os" "path/filepath" @@ -233,6 +232,22 @@ func (s Service) DeleteGroup(c context.Context, in *proto.DeleteGroupRequest, ou } path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) + g := &proto.Group{} + if err = s.loadGroup(id, g); err != nil { + s.log.Error().Err(err).Str("id", id).Msg("could not load account") + return + } + + // delete memberof relationship in users + for i := range g.Members { + err = s.RemoveMember(c, &proto.RemoveMemberRequest{ + GroupId: g.Members[i].Id, + AccountId: id, + }, g) + if err != nil { + s.log.Error().Err(err).Str("groupid", id).Str("accountid", g.Members[i].Id).Msg("could not remove account memberof, skipping") + } + } if err = os.Remove(path); err != nil { s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not remove group") return merrors.InternalServerError(s.id, "could not remove group: %v", err.Error()) @@ -243,7 +258,7 @@ func (s Service) DeleteGroup(c context.Context, in *proto.DeleteGroupRequest, ou return merrors.InternalServerError(s.id, "could not remove group from index: %v", err.Error()) } - // TODO delete memberof relationship in users + s.log.Info().Str("id", id).Msg("deleted group") return } @@ -312,11 +327,84 @@ func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *p } // RemoveMember implements the GroupsServiceHandler interface -func (s Service) RemoveMember(c context.Context, in *proto.RemoveMemberRequest, out *proto.Group) error { - return errors.New("not implemented") +func (s Service) RemoveMember(c context.Context, in *proto.RemoveMemberRequest, out *proto.Group) (err error) { + + // cleanup ids + var groupID string + if groupID, err = cleanupID(in.GroupId); err != nil { + return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) + } + + var accountID string + if accountID, err = cleanupID(in.AccountId); err != nil { + return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) + } + + // load structs + a := &proto.Account{} + if err = s.loadAccount(accountID, a); err != nil { + s.log.Error().Err(err).Str("id", accountID).Msg("could not load account") + return + } + + g := &proto.Group{} + if err = s.loadGroup(groupID, g); err != nil { + s.log.Error().Err(err).Str("id", groupID).Msg("could not load group") + return + } + + //remove the account from the group if it exists + newMembers := []*proto.Account{} + for i := range g.Members { + if g.Members[i].Id != a.Id { + newMembers = append(newMembers, g.Members[i]) + } + } + g.Members = newMembers + + // remove the group from the account if it exists + newGroups := []*proto.Group{} + for i := range a.MemberOf { + if a.MemberOf[i].Id != g.Id { + newGroups = append(newGroups, a.MemberOf[i]) + } + } + a.MemberOf = newGroups + + if err = s.writeAccount(a); err != nil { + s.log.Error().Err(err).Interface("account", a).Msg("could not persist account") + return + } + if err = s.writeGroup(g); err != nil { + s.log.Error().Err(err).Interface("group", g).Msg("could not persist group") + return + } + // TODO rollback changes when only one of them failed? + // TODO store relation in another file? + // TODO return error if they are not related? + return nil } // ListMembers implements the GroupsServiceHandler interface -func (s Service) ListMembers(c context.Context, in *proto.ListMembersRequest, out *proto.ListMembersResponse) error { - return errors.New("not implemented") +func (s Service) ListMembers(c context.Context, in *proto.ListMembersRequest, out *proto.ListMembersResponse) (err error) { + + // cleanup ids + var groupID string + if groupID, err = cleanupID(in.Id); err != nil { + return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) + } + + g := &proto.Group{} + if err = s.loadGroup(groupID, g); err != nil { + s.log.Error().Err(err).Str("id", groupID).Msg("could not load group") + return + } + + // TODO only expand accounts if requested + // if in.FieldMask ... + s.expandMembers(g) + + out.Members = g.Members + + return } From 31f9cca78b043d70b2217c9647661a758dadb079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 9 Jul 2020 14:16:30 +0200 Subject: [PATCH 202/407] satisfy staticcheck MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/service/v0/groups.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 41f4792300..835ef7ec4f 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -296,7 +296,7 @@ func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *p alreadyRelated = true } } - if alreadyRelated == false { + if !alreadyRelated { g.Members = append(g.Members, a) } @@ -308,7 +308,7 @@ func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *p break } } - if alreadyRelated == false { + if !alreadyRelated { a.MemberOf = append(a.MemberOf, g) } From 9d63ca148af910465c0f2a67b380f3b0af513eec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 9 Jul 2020 15:23:27 +0200 Subject: [PATCH 203/407] use on_premises_sam_account_name instead of preferred_name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/service/v0/accounts.go | 5 +-- pkg/service/v0/service.go | 65 ++++++++++++++++++++------------------ 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 73269b58db..6c9c8bafe3 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -158,7 +158,7 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest // check if this looks like an auth request match := authQuery.FindStringSubmatch(in.Query) if len(match) == 3 { - in.Query = fmt.Sprintf("preferred_name eq '%s'", match[1]) // todo fetch email? make query configurable + in.Query = fmt.Sprintf("on_premises_sam_account_name eq '%s'", match[1]) // todo fetch email? make query configurable password = match[2] if password == "" { return merrors.Unauthorized(s.id, "password must not be empty") @@ -354,6 +354,7 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest // deleteDateTime read only out.OnPremisesSyncEnabled = in.Account.OnPremisesSyncEnabled + out.OnPremisesSamAccountName = in.Account.OnPremisesSamAccountName // ... TODO on prem for sync if out.ExternalUserState != in.Account.ExternalUserState { @@ -400,7 +401,7 @@ func (s Service) DeleteAccount(c context.Context, in *proto.DeleteAccountRequest AccountId: id, }, a.MemberOf[i]) if err != nil { - s.log.Error().Err(err).Str("accountid", id).Str("groupid", a.MemberOf[i].Id).Msg("could not remove group membership") + s.log.Error().Err(err).Str("accountid", id).Str("groupid", a.MemberOf[i].Id).Msg("could not remove group member, skipping") } } diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index acb661d80a..40904a7a8f 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -36,12 +36,13 @@ func New(opts ...Option) (s *Service, err error) { // create default accounts accounts := []proto.Account{ { - Id: "4c510ada-c86b-4815-8820-42cdf82c3d51", - PreferredName: "einstein", - Mail: "einstein@example.org", - DisplayName: "Albert Einstein", - UidNumber: 20000, - GidNumber: 30000, + Id: "4c510ada-c86b-4815-8820-42cdf82c3d51", + PreferredName: "einstein", + OnPremisesSamAccountName: "einstein", + Mail: "einstein@example.org", + DisplayName: "Albert Einstein", + UidNumber: 20000, + GidNumber: 30000, PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=35210$sa1u5Pmfo4cr23Vw$RJNGElaDB1D3xorWkfTEGm2Ko.o2QL3E0cimKx23MNxVWVFSkUUeRoC7FqC4RzYDNQBD6cKzovTEaDD.8TDkD.", }, @@ -54,12 +55,13 @@ func New(opts ...Option) (s *Service, err error) { }, }, { - Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c", - PreferredName: "marie", - Mail: "marie@example.org", - DisplayName: "Marie Curie", - UidNumber: 20001, - GidNumber: 30000, + Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c", + PreferredName: "marie", + OnPremisesSamAccountName: "marie", + Mail: "marie@example.org", + DisplayName: "Marie Curie", + UidNumber: 20001, + GidNumber: 30000, PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=81434$sa1u5Pmfo4cr23Vw$W78cyL884GmuvDpxYPvSRBVzEj02T5QhTTcI8Dv4IKvMooDFGv4bwaWMkH9HfJ0wgpEBW7Lp.4Cad0xE/MYSg1", }, @@ -72,12 +74,13 @@ func New(opts ...Option) (s *Service, err error) { }, }, { - Id: "932b4540-8d16-481e-8ef4-588e4b6b151c", - PreferredName: "richard", - Mail: "richard@example.org", - DisplayName: "Richard Feynman", - UidNumber: 20002, - GidNumber: 30000, + Id: "932b4540-8d16-481e-8ef4-588e4b6b151c", + PreferredName: "richard", + OnPremisesSamAccountName: "richard", + Mail: "richard@example.org", + DisplayName: "Richard Feynman", + UidNumber: 20002, + GidNumber: 30000, PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=5524$sa1u5Pmfo4cr23Vw$58bQVL/JeUlwM0RY21YKAFMvKvwKLLysGllYXox.vwKT5dHMwdzJjCxwTDMnB2o2pwexC8o/iOXyP2zrhALS40", }, @@ -91,12 +94,13 @@ func New(opts ...Option) (s *Service, err error) { }, // technical users for kopano and reva { - Id: "820ba2a1-3f54-4538-80a4-2d73007e30bf", - PreferredName: "konnectd", - Mail: "idp@example.org", - DisplayName: "Kopano Konnectd", - UidNumber: 10000, - GidNumber: 15000, + Id: "820ba2a1-3f54-4538-80a4-2d73007e30bf", + PreferredName: "konnectd", + OnPremisesSamAccountName: "konnectd", + Mail: "idp@example.org", + DisplayName: "Kopano Konnectd", + UidNumber: 10000, + GidNumber: 15000, PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=9746$sa1u5Pmfo4cr23Vw$2hnwpkTvUkWX0v6mh8Aw1pbzEXa9EUJzmrey4g2W/8arwWCwhteqU//3aWnA3S0d5T21fOKYteoqlsN1IbTcN.", }, @@ -106,12 +110,13 @@ func New(opts ...Option) (s *Service, err error) { }, }, { - Id: "bc596f3c-c955-4328-80a0-60d018b4ad57", - PreferredName: "reva", - Mail: "storage@example.org", - DisplayName: "Reva Inter Operability Platform", - UidNumber: 10001, - GidNumber: 15000, + Id: "bc596f3c-c955-4328-80a0-60d018b4ad57", + PreferredName: "reva", + OnPremisesSamAccountName: "reva", + Mail: "storage@example.org", + DisplayName: "Reva Inter Operability Platform", + UidNumber: 10001, + GidNumber: 15000, PasswordProfile: &proto.PasswordProfile{ Password: "$6$rounds=91087$sa1u5Pmfo4cr23Vw$wPC3BbMTbP/ytlo0p.f99zJifyO70AUCdKIK9hkhwutBKGCirLmZs/MsWAG6xHjVvmnmHN5NoON7FUGv5pPaN.", }, From 0f64397e792cc8f76e961797cafc21648d243c38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 9 Jul 2020 15:54:54 +0200 Subject: [PATCH 204/407] update ui MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- ui/components/accounts/AccountsList.vue | 4 ++-- ui/store/index.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue index 7d15d42376..ba0054dc22 100644 --- a/ui/components/accounts/AccountsList.vue +++ b/ui/components/accounts/AccountsList.vue @@ -15,9 +15,9 @@ - + - + diff --git a/ui/store/index.js b/ui/store/index.js index 86917928b4..db81d2d40f 100644 --- a/ui/store/index.js +++ b/ui/store/index.js @@ -15,10 +15,10 @@ const getters = { isInitialized: state => state.initialized, getAccountsSorted: state => { return Object.values(state.accounts).sort((a1, a2) => { - if (a1.preferredName === a2.preferredName) { + if (a1.onPremisesSamAccountName === a2.onPremisesSamAccountName) { return a1.id.localeCompare(a2.id) } - return a1.preferredName.localeCompare(a2.preferredName) + return a1.onPremisesSamAccountName.localeCompare(a2.onPremisesSamAccountName) }) } } From b4f1a908a9104be5b3c73b05619e65a1bbc276e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 10 Jul 2020 13:12:03 +0200 Subject: [PATCH 205/407] index with type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/proto/v0/bleve.go | 14 +++++++++++++ pkg/service/v0/accounts.go | 20 +++++++++++-------- pkg/service/v0/groups.go | 20 ++++++++++++------- pkg/service/v0/service.go | 40 ++++++++++++++++++++++++++++++++++---- 4 files changed, 75 insertions(+), 19 deletions(-) create mode 100644 pkg/proto/v0/bleve.go diff --git a/pkg/proto/v0/bleve.go b/pkg/proto/v0/bleve.go new file mode 100644 index 0000000000..c4074c36d6 --- /dev/null +++ b/pkg/proto/v0/bleve.go @@ -0,0 +1,14 @@ +package proto + +// Bleve uses a private bleveClassifier interface to determine the type of a struct +// see https://github.com/blevesearch/bleve/blob/master/mapping/mapping.go#L32-L38 + +type BleveAccount struct { + Account + BleveType string `json:"bleve_type"` +} + +type BleveGroup struct { + Group + BleveType string `json:"bleve_type"` +} diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 6c9c8bafe3..deb23e2e34 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -12,7 +12,6 @@ import ( "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" - "github.com/blevesearch/bleve/search/query" "github.com/gofrs/uuid" "github.com/golang/protobuf/ptypes/empty" merrors "github.com/micro/go-micro/v2/errors" @@ -42,8 +41,10 @@ func (s Service) indexAccounts(path string) (err error) { return } for _, file := range list { - a := &proto.Account{} - if err = s.loadAccount(file.Name(), a); err != nil { + a := &proto.BleveAccount{ + BleveType: "account", + } + if err = s.loadAccount(file.Name(), &a.Account); err != nil { s.log.Error().Err(err).Str("account", file.Name()).Msg("could not load account") continue } @@ -153,8 +154,6 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest var password string - var query query.Query - // check if this looks like an auth request match := authQuery.FindStringSubmatch(in.Query) if len(match) == 3 { @@ -165,6 +164,12 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest } } + // only search for accounts + tq := bleve.NewTermQuery("account") + tq.SetField("bleve_type") + + query := bleve.NewConjunctionQuery(tq) + if in.Query != "" { // parse the query like an odata filter var q *godata.GoDataFilterQuery @@ -174,13 +179,12 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest } // convert to bleve query - query, err = provider.BuildBleveQuery(q) + bq, err := provider.BuildBleveQuery(q) if err != nil { s.log.Error().Err(err).Msg("could not build bleve query") return merrors.InternalServerError(s.id, "could not build bleve query: %v", err.Error()) } - } else { - query = bleve.NewMatchAllQuery() + query.AddQuery(bq) } s.log.Debug().Interface("query", query).Msg("using query") diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 835ef7ec4f..91c379c5b0 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -9,7 +9,6 @@ import ( "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" - "github.com/blevesearch/bleve/search/query" "github.com/gofrs/uuid" "github.com/golang/protobuf/ptypes/empty" merrors "github.com/micro/go-micro/v2/errors" @@ -30,8 +29,10 @@ func (s Service) indexGroups(path string) (err error) { return } for _, file := range list { - g := &proto.Group{} - if err = s.loadGroup(file.Name(), g); err != nil { + g := &proto.BleveGroup{ + BleveType: "group", + } + if err = s.loadGroup(file.Name(), &g.Group); err != nil { s.log.Error().Err(err).Str("group", file.Name()).Msg("could not load group") continue } @@ -115,7 +116,11 @@ func (s Service) deflateMembers(g *proto.Group) { // ListGroups implements the GroupsServiceHandler interface func (s Service) ListGroups(c context.Context, in *proto.ListGroupsRequest, out *proto.ListGroupsResponse) (err error) { - var query query.Query + // only search for groups + tq := bleve.NewTermQuery("group") + tq.SetField("bleve_type") + + query := bleve.NewConjunctionQuery(tq) if in.Query != "" { // parse the query like an odata filter @@ -126,13 +131,12 @@ func (s Service) ListGroups(c context.Context, in *proto.ListGroupsRequest, out } // convert to bleve query - query, err = provider.BuildBleveQuery(q) + bq, err := provider.BuildBleveQuery(q) if err != nil { s.log.Error().Err(err).Msg("could not build bleve query") return merrors.InternalServerError(s.id, "could not build bleve query: %v", err.Error()) } - } else { - query = bleve.NewMatchAllQuery() + query.AddQuery(bq) } s.log.Debug().Interface("query", query).Msg("using query") @@ -320,6 +324,7 @@ func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *p s.log.Error().Err(err).Interface("group", g).Msg("could not persist group") return } + // FIXME update index! // TODO rollback changes when only one of them failed? // TODO store relation in another file? // TODO return error if they are already related? @@ -379,6 +384,7 @@ func (s Service) RemoveMember(c context.Context, in *proto.RemoveMemberRequest, s.log.Error().Err(err).Interface("group", g).Msg("could not persist group") return } + // FIXME update index! // TODO rollback changes when only one of them failed? // TODO store relation in another file? // TODO return error if they are not related? diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 40904a7a8f..365a9b49c8 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -11,6 +11,7 @@ import ( "github.com/blevesearch/bleve" "github.com/blevesearch/bleve/analysis/analyzer/keyword" + "github.com/blevesearch/bleve/analysis/analyzer/simple" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" "github.com/owncloud/ocis-pkg/v2/log" @@ -208,13 +209,44 @@ func New(opts ...Option) (s *Service, err error) { } } - mapping := bleve.NewIndexMapping() + indexMapping := bleve.NewIndexMapping() // keep all symbols in terms to allow exact maching, eg. emails - mapping.DefaultAnalyzer = keyword.Name + indexMapping.DefaultAnalyzer = keyword.Name // TODO don't bother to store fields as we will load the account from disk //groupsFieldMapping := bleve.NewTextFieldMapping() //blogMapping.AddFieldMappingsAt("memberOf", nameFieldMapping) - // TODO index groups and accounts as different types? + // TODO index groups and accounts as different types! + + // Reusable mapping for text, uses english stop word removal + simpleTextFieldMapping := bleve.NewTextFieldMapping() + simpleTextFieldMapping.Analyzer = simple.Name + simpleTextFieldMapping.Store = false + + // Reusable mapping for keyword text + keywordFieldMapping := bleve.NewTextFieldMapping() + keywordFieldMapping.Analyzer = keyword.Name + keywordFieldMapping.Store = false + + // accounts + accountMapping := bleve.NewDocumentMapping() + indexMapping.AddDocumentMapping("account", accountMapping) + + // Text + accountMapping.AddFieldMappingsAt("display_name", simpleTextFieldMapping) + accountMapping.AddFieldMappingsAt("description", simpleTextFieldMapping) + + // Keywords + accountMapping.AddFieldMappingsAt("mail", keywordFieldMapping) + + // groups + groupMapping := bleve.NewDocumentMapping() + indexMapping.AddDocumentMapping("group", groupMapping) + + // Text + groupMapping.AddFieldMappingsAt("display_name", simpleTextFieldMapping) + groupMapping.AddFieldMappingsAt("description", simpleTextFieldMapping) + + indexMapping.TypeField = "bleve_type" s = &Service{ id: cfg.GRPC.Namespace + "." + cfg.Server.Name, @@ -227,7 +259,7 @@ func New(opts ...Option) (s *Service, err error) { if err = os.RemoveAll(indexDir); err != nil { return nil, err } - if s.index, err = bleve.New(indexDir, mapping); err != nil { + if s.index, err = bleve.New(indexDir, indexMapping); err != nil { return } if err = s.indexAccounts(accountsDir); err != nil { From 523f704034348dac2dcf3083c7ec01afbf7ed883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 10 Jul 2020 13:26:10 +0200 Subject: [PATCH 206/407] document bleve type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/proto/v0/bleve.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkg/proto/v0/bleve.go b/pkg/proto/v0/bleve.go index c4074c36d6..66188d84ba 100644 --- a/pkg/proto/v0/bleve.go +++ b/pkg/proto/v0/bleve.go @@ -1,13 +1,12 @@ package proto -// Bleve uses a private bleveClassifier interface to determine the type of a struct -// see https://github.com/blevesearch/bleve/blob/master/mapping/mapping.go#L32-L38 - +// BleveAccount wraps the generated Account and adds a bleve type that is used to distinguish documents in the index type BleveAccount struct { Account BleveType string `json:"bleve_type"` } +// BleveGroup wraps the generated Group and adds a bleve type that is used to distinguish documents in the index type BleveGroup struct { Group BleveType string `json:"bleve_type"` From 277e0923676bc5a3f6a7f959e07aab1c2987aa2e Mon Sep 17 00:00:00 2001 From: David Christofas Date: Fri, 10 Jul 2020 17:10:29 +0200 Subject: [PATCH 207/407] tweak sonar config only set pullrequest config if the build was triggered by a pull request Signed-off-by: David Christofas --- .drone.star | 3 +++ sonar-project.properties | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.drone.star b/.drone.star index 48c08c2920..ec91d1a115 100644 --- a/.drone.star +++ b/.drone.star @@ -146,6 +146,9 @@ def testing(ctx): 'SONAR_TOKEN': { 'from_secret': 'sonar_token', }, + 'SONAR_PULL_REQUEST_BASE': 'master' if ctx.build.event == 'pull_request' else None, + 'SONAR_PULL_REQUEST_BRANCH': ctx.build.source if ctx.build.event == 'pull_request' else None, + 'SONAR_PULL_REQUEST_KEY': ctx.build.ref.replace("refs/pull/", "").split("/")[0] if ctx.build.event == 'pull_request' else None, }, }, ], diff --git a/sonar-project.properties b/sonar-project.properties index b66d2855d2..f9be5326c5 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,7 +1,7 @@ sonar.projectKey=owncloud_ocis-accounts sonar.organization=owncloud-1 -sonar.projectName=ownCloud Infinite Scale: ACCOUNTS +sonar.projectName=ocis-accounts sonar.projectVersion=1.0 sonar.host.url=https://sonarcloud.io @@ -25,9 +25,9 @@ sonar.sources=. # Pull Requests sonar.pullrequest.provider=GitHub sonar.pullrequest.github.repository=owncloud/ocis-accounts -sonar.pullrequest.base=${env.DRONE_BRANCH} -sonar.pullrequest.branch=${env.DRONE_SOURCE_BRANCH} -sonar.pullrequest.key=${env.DRONE_PULL_REQUEST} +sonar.pullrequest.base=${env.SONAR_PULL_REQUEST_BASE} +sonar.pullrequest.branch=${env.SONAR_PULL_REQUEST_BRANCH} +sonar.pullrequest.key=${env.SONAR_PULL_REQUEST_KEY} # Properties specific to language plugins: From 00ea1f186a4caec8c072e5f038222a9d2274692a Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 15 Jul 2020 08:25:27 +0200 Subject: [PATCH 208/407] Refactor indexing of new entities into own function This also fixes that on Create and Update calls the index was not updated properly. --- pkg/service/v0/accounts.go | 35 +++++++++++++++++++---------------- pkg/service/v0/groups.go | 33 ++++++++++++++++++--------------- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index deb23e2e34..e940e72ef6 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -41,23 +41,28 @@ func (s Service) indexAccounts(path string) (err error) { return } for _, file := range list { - a := &proto.BleveAccount{ - BleveType: "account", - } - if err = s.loadAccount(file.Name(), &a.Account); err != nil { - s.log.Error().Err(err).Str("account", file.Name()).Msg("could not load account") - continue - } - s.log.Debug().Interface("account", a).Msg("found account") - if err = s.index.Index(a.Id, a); err != nil { - s.log.Error().Err(err).Interface("account", a).Msg("could not index account") - continue - } + _ = s.indexAccount(file.Name()) } return } +func (s Service) indexAccount(id string) error { + a := &proto.BleveAccount{ + BleveType: "account", + } + if err := s.loadAccount(id, &a.Account); err != nil { + s.log.Error().Err(err).Str("account", id).Msg("could not load account") + return err + } + s.log.Debug().Interface("account", a).Msg("found account") + if err := s.index.Index(a.Id, a); err != nil { + s.log.Error().Err(err).Interface("account", a).Msg("could not index account") + return err + } + return nil +} + // an auth request is currently hardcoded and has to match this regex // login eq \"teddy\" and password eq \"F&1!b90t111!\" var authQuery = regexp.MustCompile(`^login eq '(.*)' and password eq '(.*)'$`) // TODO how is ' escaped in the password? @@ -272,7 +277,6 @@ func (s Service) CreateAccount(c context.Context, in *proto.CreateAccountRequest if id, err = cleanupID(in.Account.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) } - path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) if in.Account.PasswordProfile != nil && in.Account.PasswordProfile.Password != "" { // encrypt password @@ -290,8 +294,7 @@ func (s Service) CreateAccount(c context.Context, in *proto.CreateAccountRequest return } - if err = s.index.Index(id, in.Account); err != nil { - s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", loggableAccount(in.Account)).Msg("could not index new account") + if err = s.indexAccount(in.Account.Id); err != nil { return merrors.InternalServerError(s.id, "could not index new account: %v", err.Error()) } @@ -373,7 +376,7 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest return } - if err = s.index.Index(id, out); err != nil { + if err = s.indexAccount(id); err != nil { s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", loggableAccount(out)).Msg("could not index new account") return merrors.InternalServerError(s.id, "could not index updated account: %v", err.Error()) } diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 91c379c5b0..83989ecb97 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -29,23 +29,28 @@ func (s Service) indexGroups(path string) (err error) { return } for _, file := range list { - g := &proto.BleveGroup{ - BleveType: "group", - } - if err = s.loadGroup(file.Name(), &g.Group); err != nil { - s.log.Error().Err(err).Str("group", file.Name()).Msg("could not load group") - continue - } - s.log.Debug().Interface("group", g).Msg("found group") - if err = s.index.Index(g.Id, g); err != nil { - s.log.Error().Err(err).Interface("group", g).Msg("could not index group") - continue - } + _ = s.indexGroup(file.Name()) } return } +func (s Service) indexGroup(id string) error { + g := &proto.BleveGroup{ + BleveType: "group", + } + if err := s.loadGroup(id, &g.Group); err != nil { + s.log.Error().Err(err).Str("group", id).Msg("could not load group") + return err + } + s.log.Debug().Interface("group", g).Msg("found group") + if err := s.index.Index(g.Id, g); err != nil { + s.log.Error().Err(err).Interface("group", g).Msg("could not index group") + return err + } + return nil +} + func (s Service) loadGroup(id string, g *proto.Group) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) @@ -205,7 +210,6 @@ func (s Service) CreateGroup(c context.Context, in *proto.CreateGroupRequest, ou if id, err = cleanupID(in.Group.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) } - path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) // extract member id s.deflateMembers(in.Group) @@ -215,8 +219,7 @@ func (s Service) CreateGroup(c context.Context, in *proto.CreateGroupRequest, ou return } - if err = s.index.Index(id, in.Group); err != nil { - s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("group", in.Group).Msg("could not index new group") + if err = s.indexGroup(id); err != nil { return merrors.InternalServerError(s.id, "could not index new group: %v", err.Error()) } From 0fba802f572f5265dcaade441691d62cfe6e2a73 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 15 Jul 2020 08:31:35 +0200 Subject: [PATCH 209/407] Add changelog item --- changelog/unreleased/fix-indexing.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/unreleased/fix-indexing.md diff --git a/changelog/unreleased/fix-indexing.md b/changelog/unreleased/fix-indexing.md new file mode 100644 index 0000000000..01ebab8a76 --- /dev/null +++ b/changelog/unreleased/fix-indexing.md @@ -0,0 +1,6 @@ +Change: Fix index update on create/update + +We fixed a bug in creating/updating accounts and groups, that caused new entities not to show up in list queries. + +https://github.com/owncloud/ocis-accounts/issues/57 +https://github.com/owncloud/ocis-accounts/pull/59 From 9e356555045d28ad6a49992986198e73c167c641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 15 Jul 2020 10:11:43 +0000 Subject: [PATCH 210/407] Automated changelog update [skip ci] --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6dc7c81085..c54133130d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The following sections list the changes in ocis-accounts unreleased. * Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) * Change - Change api errors: [#11](https://github.com/owncloud/ocis-accounts/issues/11) * Change - Enable accounts on creation: [#43](https://github.com/owncloud/ocis-accounts/issues/43) +* Change - Fix index update on create/update: [#57](https://github.com/owncloud/ocis-accounts/issues/57) * Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) @@ -39,6 +40,15 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/issues/43 +* Change - Fix index update on create/update: [#57](https://github.com/owncloud/ocis-accounts/issues/57) + + We fixed a bug in creating/updating accounts and groups, that caused new entities not to show up + in list queries. + + https://github.com/owncloud/ocis-accounts/issues/57 + https://github.com/owncloud/ocis-accounts/pull/59 + + * Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) Pass around the logger to have consistent log formatting, log level, etc. From 43effc0cbac48cea213c263d7f2b4c90d293aaab Mon Sep 17 00:00:00 2001 From: Dipak Acharya Date: Thu, 16 Jul 2020 10:32:36 +0545 Subject: [PATCH 211/407] Fix the account and group id mismatch in delete group method --- pkg/service/v0/groups.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 83989ecb97..666d8608d6 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -248,8 +248,8 @@ func (s Service) DeleteGroup(c context.Context, in *proto.DeleteGroupRequest, ou // delete memberof relationship in users for i := range g.Members { err = s.RemoveMember(c, &proto.RemoveMemberRequest{ - GroupId: g.Members[i].Id, - AccountId: id, + AccountId: g.Members[i].Id, + GroupId: id, }, g) if err != nil { s.log.Error().Err(err).Str("groupid", id).Str("accountid", g.Members[i].Id).Msg("could not remove account memberof, skipping") From 2bd43221230d5bfb881098e03a9113ca735daa14 Mon Sep 17 00:00:00 2001 From: Dipak Acharya Date: Thu, 16 Jul 2020 10:38:14 +0545 Subject: [PATCH 212/407] Add changelog item --- changelog/unreleased/fix-account-group-id.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 changelog/unreleased/fix-account-group-id.md diff --git a/changelog/unreleased/fix-account-group-id.md b/changelog/unreleased/fix-account-group-id.md new file mode 100644 index 0000000000..81a1dc4c04 --- /dev/null +++ b/changelog/unreleased/fix-account-group-id.md @@ -0,0 +1,8 @@ +Bugfix: Fix the accountId and groupId mismatch in DeleteGroup Method + +We've fixed a bug in deleting the groups. + +The accountId and GroupId were swapped when removing the member from a group after deleting +the group. + +https://github.com/owncloud/ocis-accounts/pull/60 From a0c9ff863dab0ebc252bc8e9fc5833704d15fb96 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Thu, 16 Jul 2020 06:03:09 +0000 Subject: [PATCH 213/407] Automated changelog update [skip ci] --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c54133130d..81431e90e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary +* Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) * Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) * Change - Change api errors: [#11](https://github.com/owncloud/ocis-accounts/issues/11) * Change - Enable accounts on creation: [#43](https://github.com/owncloud/ocis-accounts/issues/43) @@ -17,6 +18,16 @@ The following sections list the changes in ocis-accounts unreleased. ## Details +* Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) + + We've fixed a bug in deleting the groups. + + The accountId and GroupId were swapped when removing the member from a group after deleting the + group. + + https://github.com/owncloud/ocis-accounts/pull/60 + + * Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) We aim to have a similar project structure for all our ocis extensions. This extension was From 3152c52845616adcf32711371e508a939a68a91d Mon Sep 17 00:00:00 2001 From: Dipak Acharya Date: Wed, 13 May 2020 12:06:04 +0545 Subject: [PATCH 214/407] [Tests-Only] Add gRPC tests for user and group related actions --- .gitignore | 2 + go.mod | 2 + go.sum | 1 + pkg/proto/v0/accounts.pb.micro_test.go | 944 +++++++++++++++++++++++++ 4 files changed, 949 insertions(+) create mode 100644 pkg/proto/v0/accounts.pb.micro_test.go diff --git a/.gitignore b/.gitignore index 9b9ecfed13..6a7077affe 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,7 @@ coverage.out /dist /hugo +/pkg/proto/v0/accounts-store/ + /node_modules /assets diff --git a/go.mod b/go.mod index 488d7ee5c5..52969e8ad0 100644 --- a/go.mod +++ b/go.mod @@ -28,11 +28,13 @@ require ( github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 github.com/spf13/viper v1.7.0 + github.com/stretchr/testify v1.4.0 github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tredoe/osutil v1.0.5 golang.org/x/net v0.0.0-20200301022130-244492dfa37a google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 google.golang.org/protobuf v1.25.0 + gopkg.in/go-playground/assert.v1 v1.2.1 honnef.co/go/tools v0.0.1-2020.1.4 // indirect ) diff --git a/go.sum b/go.sum index dcf2785b00..724cc74274 100644 --- a/go.sum +++ b/go.sum @@ -1248,6 +1248,7 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= diff --git a/pkg/proto/v0/accounts.pb.micro_test.go b/pkg/proto/v0/accounts.pb.micro_test.go new file mode 100644 index 0000000000..a43056c33d --- /dev/null +++ b/pkg/proto/v0/accounts.pb.micro_test.go @@ -0,0 +1,944 @@ +package proto_test + +import ( + context "context" + "fmt" + "log" + "os" + "path/filepath" + "testing" + + "github.com/owncloud/ocis-accounts/pkg/command" + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/proto/v0" + svc "github.com/owncloud/ocis-accounts/pkg/service/v0" + + "github.com/owncloud/ocis-pkg/v2/service/grpc" + "github.com/stretchr/testify/assert" + + "github.com/golang/protobuf/ptypes/empty" +) + +var service = grpc.Service{} + +const dataPath = "./accounts-store" + +var newCreatedAccounts = []string{} +var newCreatedGroups = []string{} + +func getAccount(user string) *proto.Account { + switch user { + case "user1": + return &proto.Account{ + Id: "f9149a32-2b8e-4f04-9e8d-937d81712b9a", + AccountEnabled: true, + IsResourceAccount: true, + CreationType: "", + DisplayName: "User One", + PreferredName: "user1", + OnPremisesSamAccountName: "user1", + UidNumber: 20009, + GidNumber: 30000, + Mail: "user1@example.com", + Identities: []*proto.Identities{nil}, + PasswordProfile: &proto.PasswordProfile{Password: "heysdjfsdlk"}, + MemberOf: []*proto.Group{ + {Id: "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa"}, // users + }, + } + case "user2": + return &proto.Account{ + Id: "e9149a32-2b8e-4f04-9e8d-937d81712b9a", + AccountEnabled: true, + IsResourceAccount: true, + CreationType: "", + DisplayName: "User Two", + PreferredName: "user2", + OnPremisesSamAccountName: "user2", + UidNumber: 20009, + GidNumber: 30000, + Mail: "user2@example.com", + Identities: []*proto.Identities{nil}, + PasswordProfile: &proto.PasswordProfile{Password: "hello123"}, + MemberOf: []*proto.Group{ + {Id: "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa"}, // users + }, + } + default: + return &proto.Account{ + Id: fmt.Sprintf("new-id-%s", user), + AccountEnabled: true, + IsResourceAccount: true, + CreationType: "", + DisplayName: "Regular User", + PreferredName: user, + UidNumber: 2, + Mail: fmt.Sprintf("%s@example.com", user), + Identities: []*proto.Identities{nil}, + } + } +} + +func getGroup(group string) *proto.Group { + switch group { + case "sysusers": + return &proto.Group{Id: "34f38767-c937-4eb6-b847-1c175829a2a0", GidNumber: 15000, OnPremisesSamAccountName: "sysusers", DisplayName: "Technical users", Description: "A group for technical users. They should not show up in sharing dialogs.", Members: []*proto.Account{ + {Id: "820ba2a1-3f54-4538-80a4-2d73007e30bf"}, // konnectd + {Id: "bc596f3c-c955-4328-80a0-60d018b4ad57"}, // reva + }} + case "users": + return &proto.Group{Id: "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa", GidNumber: 30000, OnPremisesSamAccountName: "users", DisplayName: "Users", Description: "A group every normal user belongs to.", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }} + case "sailing-lovers": + return &proto.Group{Id: "6040aa17-9c64-4fef-9bd0-77234d71bad0", GidNumber: 30001, OnPremisesSamAccountName: "sailing-lovers", DisplayName: "Sailing lovers", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + }} + case "violin-haters": + return &proto.Group{Id: "dd58e5ec-842e-498b-8800-61f2ec6f911f", GidNumber: 30002, OnPremisesSamAccountName: "violin-haters", DisplayName: "Violin haters", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + }} + case "radium-lovers": + return &proto.Group{Id: "7b87fd49-286e-4a5f-bafd-c535d5dd997a", GidNumber: 30003, OnPremisesSamAccountName: "radium-lovers", DisplayName: "Radium lovers", Members: []*proto.Account{ + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + }} + case "polonium-lovers": + return &proto.Group{Id: "cedc21aa-4072-4614-8676-fa9165f598ff", GidNumber: 30004, OnPremisesSamAccountName: "polonium-lovers", DisplayName: "Polonium lovers", Members: []*proto.Account{ + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + }} + case "quantum-lovers": + return &proto.Group{Id: "a1726108-01f8-4c30-88df-2b1a9d1cba1a", GidNumber: 30005, OnPremisesSamAccountName: "quantum-lovers", DisplayName: "Quantum lovers", Members: []*proto.Account{ + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }} + case "philosophy-haters": + return &proto.Group{Id: "167cbee2-0518-455a-bfb2-031fe0621e5d", GidNumber: 30006, OnPremisesSamAccountName: "philosophy-haters", DisplayName: "Philosophy haters", Members: []*proto.Account{ + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }} + case "physics-lovers": + return &proto.Group{Id: "262982c1-2362-4afa-bfdf-8cbfef64a06e", GidNumber: 30007, OnPremisesSamAccountName: "physics-lovers", DisplayName: "Physics lovers", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }} + } + return nil +} + +func getTestGroups(group string) *proto.Group { + switch group { + case "grp1": + return &proto.Group{Id: "0779f828-4df8-41d6-82dd-40020d9fd0ef", GidNumber: 40000, OnPremisesSamAccountName: "grp1", DisplayName: "Group One", Description: "One group", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + }} + case "grp2": + return &proto.Group{Id: "f446fb0a-5e57-4812-9f47-9c1ebca99b5a", GidNumber: 40001, OnPremisesSamAccountName: "grp2", DisplayName: "Group Two", Description: "Two Group", Members: []*proto.Account{ + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }} + case "grp3": + return &proto.Group{Id: "cae8b5d5-d133-4d95-8595-fe33a5051017", GidNumber: 40002, OnPremisesSamAccountName: "grp3", DisplayName: "Group Three", Description: "Three Group", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + {Id: "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c"}, // marie + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }} + } + return nil +} + +func init() { + service = grpc.NewService( + grpc.Namespace("com.owncloud.api"), + grpc.Name("accounts"), + grpc.Address("localhost:9180"), + ) + + cfg := config.New() + cfg.Server.AccountsDataPath = dataPath + var hdlr *svc.Service + var err error + + if hdlr, err = svc.New(svc.Logger(command.NewLogger(cfg)), svc.Config(cfg)); err != nil { + log.Fatalf("Could not create new service") + } + + err = proto.RegisterAccountsServiceHandler(service.Server(), hdlr) + if err != nil { + log.Fatal("could not register the Accounts handler") + } + err = proto.RegisterGroupsServiceHandler(service.Server(), hdlr) + if err != nil { + log.Fatal("could not register the Groups handler") + } + + err = service.Server().Start() + if err != nil { + log.Fatal(err) + } +} + +func cleanUp(t *testing.T) { + datastore := filepath.Join(dataPath, "accounts") + + for _, id := range newCreatedAccounts { + path := filepath.Join(datastore, id) + if _, err := os.Stat(path); os.IsNotExist(err) { + continue + } + _, err := deleteAccount(t, id) + checkError(t, err) + } + + datastore = filepath.Join(dataPath, "groups") + + for _, id := range newCreatedGroups { + path := filepath.Join(datastore, id) + if _, err := os.Stat(path); os.IsNotExist(err) { + continue + } + _, err := deleteGroup(t, id) + checkError(t, err) + } + + newCreatedAccounts = []string{} + newCreatedGroups = []string{} +} + +func assertUserExists(t *testing.T, account *proto.Account) { + resp, _ := listAccounts(t) + assertResponseContainsUser(t, resp, account) +} + +func assertResponseContainsUser(t *testing.T, response *proto.ListAccountsResponse, account *proto.Account) { + var result *proto.Account + for _, a := range response.Accounts { + if a.Id == account.Id { + result = account + } + } + if result == nil { + t.Fatalf("Account not found in response: %s", account.PreferredName) + } + assertAccountsSame(t, account, result) +} + +func assertResponseNotContainsUser(t *testing.T, response *proto.ListAccountsResponse, account *proto.Account) { + for _, a := range response.Accounts { + if a.Id == account.Id || a.PreferredName == account.PreferredName { + t.Fatal("Account was not expected to be present in the response, but was found.") + } + } +} + +func assertAccountsSame(t *testing.T, acc1, acc2 *proto.Account) { + assert.Equal(t, acc1.Id, acc2.Id) + assert.Equal(t, acc1.AccountEnabled, acc2.AccountEnabled) + assert.Equal(t, acc1.IsResourceAccount, acc2.IsResourceAccount) + assert.Equal(t, acc1.CreationType, acc2.CreationType) + assert.Equal(t, acc1.DisplayName, acc2.DisplayName) + assert.Equal(t, acc1.PreferredName, acc2.PreferredName) + assert.Equal(t, acc1.UidNumber, acc2.UidNumber) + assert.Equal(t, acc1.Mail, acc2.Mail) +} + +func assertResponseContainsGroup(t *testing.T, response *proto.ListGroupsResponse, group *proto.Group) { + var result *proto.Group + for _, g := range response.Groups { + if g.Id == group.Id { + result = g + } + } + if result == nil { + t.Fatalf("Group not found in response: %s", group.GetDisplayName()) + } + assertGroupsSame(t, group, result) +} + +func assertResponseNotContainsGroup(t *testing.T, response *proto.ListGroupsResponse, group *proto.Group) { + for _, g := range response.Groups { + if g.Id == group.Id && g.DisplayName == group.DisplayName { + t.Fatal("Group was not expected to be present in the response, but was found.") + } + } +} + +func assertGroupsSame(t *testing.T, grp1, grp2 *proto.Group) { + assert.Equal(t, grp1.Id, grp2.Id) + assert.Equal(t, grp1.GidNumber, grp2.GidNumber) + assert.Equal(t, grp1.OnPremisesSamAccountName, grp2.OnPremisesSamAccountName) + assert.Equal(t, grp1.DisplayName, grp2.DisplayName) + + assert.Equal(t, len(grp1.Members), len(grp2.Members)) + for _, m := range grp1.Members { + assertGroupHasMember(t, grp2, m.Id) + } +} + +func assertGroupHasMember(t *testing.T, grp *proto.Group, memberId string) { + for _, m := range grp.Members { + if m.Id == memberId { + return + } + } + + t.Fatalf("Member with id %s expected to be in group '%s', but not found", memberId, grp.DisplayName) +} + +func checkError(t *testing.T, err error) { + if err != nil { + t.Fatalf("Expected Error to be nil but got %s", err) + } +} + +func createAccount(t *testing.T, user string) (*proto.Account, error) { + client := service.Client() + cl := proto.NewAccountsService("com.owncloud.api.accounts", client) + + account := getAccount(user) + request := &proto.CreateAccountRequest{Account: account} + res, err := cl.CreateAccount(context.Background(), request) + if err == nil { + newCreatedAccounts = append(newCreatedAccounts, account.Id) + } + return res, err +} + +func createGroup(t *testing.T, group *proto.Group) (*proto.Group, error) { + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + request := &proto.CreateGroupRequest{Group: group} + res, err := cl.CreateGroup(context.Background(), request) + if err == nil { + newCreatedGroups = append(newCreatedGroups, group.Id) + } + return res, err +} + +func listAccounts(t *testing.T) (*proto.ListAccountsResponse, error) { + request := &proto.ListAccountsRequest{} + client := service.Client() + cl := proto.NewAccountsService("com.owncloud.api.accounts", client) + + response, err := cl.ListAccounts(context.Background(), request) + return response, err +} + +func listGroups(t *testing.T) *proto.ListGroupsResponse { + request := &proto.ListGroupsRequest{} + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + response, err := cl.ListGroups(context.Background(), request) + checkError(t, err) + return response +} + +func deleteAccount(t *testing.T, id string) (*empty.Empty, error) { + client := service.Client() + cl := proto.NewAccountsService("com.owncloud.api.accounts", client) + + req := &proto.DeleteAccountRequest{Id: id} + res, err := cl.DeleteAccount(context.Background(), req) + return res, err +} + +func deleteGroup(t *testing.T, id string) (*empty.Empty, error) { + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + req := &proto.DeleteGroupRequest{Id: id} + res, err := cl.DeleteGroup(context.Background(), req) + return res, err +} + +// https://github.com/owncloud/ocis-accounts/issues/61 +func TestCreateAccount(t *testing.T) { + + resp, err := createAccount(t, "user1") + checkError(t, err) + assertUserExists(t, getAccount("user1")) + assert.IsType(t, &proto.Account{}, resp) + // Account is not returned in response + // assertAccountsSame(t, getAccount("user1"), resp) + + resp, err = createAccount(t, "user2") + checkError(t, err) + assertUserExists(t, getAccount("user2")) + assert.IsType(t, &proto.Account{}, resp) + // Account is not returned in response + // assertAccountsSame(t, getAccount("user2"), resp) + + cleanUp(t) +} + +// https://github.com/owncloud/ocis-accounts/issues/62 +func TestCreateExistingUser(t *testing.T) { + createAccount(t, "user1") + _, err := createAccount(t, "user1") + + // Should give error but it does not + checkError(t, err) + assertUserExists(t, getAccount("user1")) + + cleanUp(t) +} + +// All tests fail after running this +// https://github.com/owncloud/ocis-accounts/issues/62 +func TestCreateAccountInvalidUserName(t *testing.T) { + testData := []string{ + "", + "0", + "#&@#", + ".._$%203", + } + + for _, userName := range testData { + _, err := createAccount(t, userName) + + // Should give error + checkError(t, err) + } + + // This throws a error in server + // resp contains no accounts + resp, _ := listAccounts(t) + + assert.Equal(t, 0, len(resp.GetAccounts())) + + cleanUp(t) +} + +func TestListAccounts(t *testing.T) { + createAccount(t, "user1") + createAccount(t, "user2") + + resp, err := listAccounts(t) + checkError(t, err) + + assert.IsType(t, &proto.ListAccountsResponse{}, resp) + assert.Equal(t, 7, len(resp.Accounts)) + + assertResponseContainsUser(t, resp, getAccount("user1")) + assertResponseContainsUser(t, resp, getAccount("user2")) + + cleanUp(t) +} + +func TestListWithoutUserCreation(t *testing.T) { + resp, err := listAccounts(t) + + checkError(t, err) + + // Only 5 default users + assert.Equal(t, 5, len(resp.Accounts)) + cleanUp(t) +} + +func TestGetAccount(t *testing.T) { + createAccount(t, "user1") + + req := &proto.GetAccountRequest{Id: getAccount("user1").Id} + + client := service.Client() + cl := proto.NewAccountsService("com.owncloud.api.accounts", client) + + resp, err := cl.GetAccount(context.Background(), req) + + checkError(t, err) + assert.IsType(t, &proto.Account{}, resp) + assertAccountsSame(t, getAccount("user1"), resp) + + cleanUp(t) +} + +func TestDeleteAccount(t *testing.T) { + createAccount(t, "user1") + createAccount(t, "user2") + + req := &proto.DeleteAccountRequest{Id: getAccount("user1").Id} + + client := service.Client() + cl := proto.NewAccountsService("com.owncloud.api.accounts", client) + + resp, err := cl.DeleteAccount(context.Background(), req) + checkError(t, err) + assert.IsType(t, resp, &empty.Empty{}) + + // Check the account doesn't exists anymore + accountList, _ := listAccounts(t) + assertResponseContainsUser(t, accountList, getAccount("user2")) + assertResponseNotContainsUser(t, accountList, getAccount("user1")) + + cleanUp(t) +} + +func TestListGroups(t *testing.T) { + req := &proto.ListGroupsRequest{} + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + resp, err := cl.ListGroups(context.Background(), req) + checkError(t, err) + assert.IsType(t, &proto.ListGroupsResponse{}, resp) + assert.Equal(t, len(resp.Groups), 9) + + groups := []string{ + "sysusers", + "users", + "sailing-lovers", + "violin-haters", + "radium-lovers", + "polonium-lovers", + "quantum-lovers", + "philosophy-haters", + "physics-lovers", + } + + for _, g := range groups { + assertResponseContainsGroup(t, resp, getGroup(g)) + } + cleanUp(t) +} + +func TestGetGroups(t *testing.T) { + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + groups := []string{ + "sysusers", + "users", + "sailing-lovers", + "violin-haters", + "radium-lovers", + "polonium-lovers", + "quantum-lovers", + "philosophy-haters", + "physics-lovers", + } + + for _, g := range groups { + group := getGroup(g) + req := &proto.GetGroupRequest{Id: group.Id} + resp, err := cl.GetGroup(context.Background(), req) + + checkError(t, err) + assert.IsType(t, &proto.Group{}, resp) + assertGroupsSame(t, group, resp) + } + cleanUp(t) +} + +// https://github.com/owncloud/ocis-accounts/issues/61 +func TestCreateGroup(t *testing.T) { + group := &proto.Group{Id: "2d58e5ec-842e-498b-8800-61f2ec6f911f", GidNumber: 30042, OnPremisesSamAccountName: "quantum-group", DisplayName: "Quantum Group", Members: []*proto.Account{ + {Id: "4c510ada-c86b-4815-8820-42cdf82c3d51"}, // einstein + {Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman + }} + + res, err := createGroup(t, group) + checkError(t, err) + + assert.IsType(t, &proto.Group{}, res) + + // Should return the group but does not + // assertGroupsSame(t, res, group) + + groupsResponse := listGroups(t) + assertResponseContainsGroup(t, groupsResponse, group) + cleanUp(t) +} + +func TestGetGroupInvalidID(t *testing.T) { + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + req := &proto.GetGroupRequest{Id: "42"} + resp, err := cl.GetGroup(context.Background(), req) + + assert.IsType(t, &proto.Group{}, resp) + assert.Empty(t, resp) + assert.Error(t, err) + assert.Equal(t, "{\"id\":\".\",\"code\":404,\"detail\":\"could not read group: open accounts-store/groups/42: no such file or directory\",\"status\":\"Not Found\"}", err.Error()) + cleanUp(t) +} + +func TestDeleteGroup(t *testing.T) { + grp1 := getTestGroups("grp1") + grp2 := getTestGroups("grp2") + grp3 := getTestGroups("grp3") + createGroup(t, grp1) + createGroup(t, grp2) + createGroup(t, grp3) + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + req := &proto.DeleteGroupRequest{Id: grp1.Id} + res, err := cl.DeleteGroup(context.Background(), req) + assert.IsType(t, res, &empty.Empty{}) + checkError(t, err) + + req = &proto.DeleteGroupRequest{Id: grp2.Id} + res, err = cl.DeleteGroup(context.Background(), req) + assert.IsType(t, res, &empty.Empty{}) + checkError(t, err) + + groupsResponse := listGroups(t) + assertResponseNotContainsGroup(t, groupsResponse, grp1) + assertResponseNotContainsGroup(t, groupsResponse, grp2) + assertResponseContainsGroup(t, groupsResponse, grp3) + cleanUp(t) +} + +func TestDeleteGroupNotExisting(t *testing.T) { + invalidIds := []string{ + "$@dsfd", + "42", + "happyString", + "0ed84f08-aa0a-46e4-8e42-f0a5d6e1b059", + " ", + } + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + for _, id := range invalidIds { + req := &proto.DeleteGroupRequest{Id: id} + res, err := cl.DeleteGroup(context.Background(), req) + assert.IsType(t, &empty.Empty{}, res) + assert.Empty(t, res) + assert.Error(t, err) + assert.Equal( + t, + fmt.Sprintf("{\"id\":\".\",\"code\":404,\"detail\":\"could not read group: open accounts-store/groups/%v: no such file or directory\",\"status\":\"Not Found\"}", id), + err.Error(), + ) + } + cleanUp(t) +} + +func TestDeleteGroupInvalidId(t *testing.T) { + invalidIds := map[string]string{ + ".": ".", + "hello/world": "hello/world", + "/new-id": "/new-id", + "/new-id/": "/new-id", + "/0ed84f08-aa0a-46e4-8e42-f0a5d6e1b059": "/0ed84f08-aa0a-46e4-8e42-f0a5d6e1b059", + "": ".", + } + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + for id, val := range invalidIds { + req := &proto.DeleteGroupRequest{Id: id} + res, err := cl.DeleteGroup(context.Background(), req) + assert.IsType(t, &empty.Empty{}, res) + assert.Empty(t, res) + assert.Error(t, err) + assert.Equal( + t, + fmt.Sprintf("{\"id\":\".\",\"code\":500,\"detail\":\"could not clean up group id: invalid id %v\",\"status\":\"Internal Server Error\"}", val), + err.Error(), + ) + } + cleanUp(t) +} + +func TestUpdateGroup(t *testing.T) { + grp1 := getTestGroups("grp1") + createGroup(t, grp1) + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + updateGrp := &proto.Group{ + Id: grp1.Id, + } + + req := &proto.UpdateGroupRequest{Group: updateGrp} + + res, err := cl.UpdateGroup(context.Background(), req) + + assert.IsType(t, &proto.Group{}, res) + assert.Empty(t, res) + assert.Error(t, err) + assert.Equal( + t, + "{\"id\":\".\",\"code\":500,\"detail\":\"not implemented\",\"status\":\"Internal Server Error\"}", + err.Error(), + ) + cleanUp(t) +} + +// https://github.com/owncloud/ocis-accounts/issues/61 +func TestAddMember(t *testing.T) { + grp1 := getTestGroups("grp1") + account := getAccount("user1") + + updatedGroup := grp1 + updatedGroup.Members = append(updatedGroup.Members, &proto.Account{Id: account.Id}) + + createGroup(t, grp1) + createAccount(t, account.PreferredName) + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + req := &proto.AddMemberRequest{GroupId: grp1.Id, AccountId: account.Id} + + res, err := cl.AddMember(context.Background(), req) + checkError(t, err) + + assert.IsType(t, &proto.Group{}, res) + + // Should return the group but returns empty + // assertGroupsSame(t, updatedGroup, res) + + resp := listGroups(t) + assertResponseContainsGroup(t, resp, updatedGroup) + + cleanUp(t) +} + +// https://github.com/owncloud/ocis-accounts/issues/62 +func TestAddMemberAlreadyInGroup(t *testing.T) { + grp1 := getTestGroups("grp1") + account := getAccount("user1") + + updatedGroup := grp1 + updatedGroup.Members = append(updatedGroup.Members, &proto.Account{Id: account.Id}) + + createGroup(t, grp1) + createAccount(t, account.PreferredName) + + addMemberToGroup(t, grp1.Id, account.Id) + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + req := &proto.AddMemberRequest{GroupId: grp1.Id, AccountId: account.Id} + + res, err := cl.AddMember(context.Background(), req) + + // Should Give Error + checkError(t, err) + assert.IsType(t, &proto.Group{}, res) + //assert.Equal(t, proto.Group{}, *res) + //assertGroupsSame(t, updatedGroup, res) + + // Check the group is truly updated + resp := listGroups(t) + assertResponseContainsGroup(t, resp, updatedGroup) + + cleanUp(t) +} + +func TestAddMemberNonExisting(t *testing.T) { + grp1 := getTestGroups("grp1") + + createGroup(t, grp1) + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + invalidIds := []string{ + "$@dsfd", + "42", + "happyString", + "0ed84f08-aa0a-46e4-8e42-f0a5d6e1b059", + " ", + } + + for _, id := range invalidIds { + req := &proto.AddMemberRequest{GroupId: grp1.Id, AccountId: id} + + res, err := cl.AddMember(context.Background(), req) + assert.IsType(t, &proto.Group{}, res) + assert.Empty(t, res) + assert.Error(t, err) + assert.Equal( + t, + fmt.Sprintf("{\"id\":\".\",\"code\":404,\"detail\":\"could not read account: open accounts-store/accounts/%v: no such file or directory\",\"status\":\"Not Found\"}", id), + err.Error(), + ) + } + + // Check group is not changed + resp := listGroups(t) + assertResponseContainsGroup(t, resp, grp1) + + cleanUp(t) +} + +func addMemberToGroup(t *testing.T, groupId, memberId string) (*proto.Group, error) { + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + req := &proto.AddMemberRequest{GroupId: groupId, AccountId: memberId} + + res, err := cl.AddMember(context.Background(), req) + + return res, err +} + +// https://github.com/owncloud/ocis-accounts/issues/61 +func TestRemoveMember(t *testing.T) { + grp1 := getTestGroups("grp1") + account := getAccount("user1") + + createGroup(t, grp1) + createAccount(t, account.PreferredName) + + addMemberToGroup(t, grp1.Id, account.Id) + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + req := &proto.RemoveMemberRequest{GroupId: grp1.Id, AccountId: account.Id} + + res, err := cl.RemoveMember(context.Background(), req) + checkError(t, err) + + assert.IsType(t, &proto.Group{}, res) + //assert.Equal(t, proto.Group{}, *res) + // assertGroupsSame(t, grp1, res) + + resp := listGroups(t) + assertResponseContainsGroup(t, resp, grp1) + + cleanUp(t) +} + +func TestRemoveMemberNonExistingUser(t *testing.T) { + grp1 := getTestGroups("grp1") + + createGroup(t, grp1) + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + invalidIds := []string{ + "$@dsfd", + "42", + "happyString", + "0ed84f08-aa0a-46e4-8e42-f0a5d6e1b059", + " ", + } + + for _, id := range invalidIds { + req := &proto.RemoveMemberRequest{GroupId: grp1.Id, AccountId: id} + + res, err := cl.RemoveMember(context.Background(), req) + assert.IsType(t, &proto.Group{}, res) + assert.Empty(t, res) + assert.Error(t, err) + assert.Equal( + t, + fmt.Sprintf("{\"id\":\".\",\"code\":404,\"detail\":\"could not read account: open accounts-store/accounts/%v: no such file or directory\",\"status\":\"Not Found\"}", id), + err.Error(), + ) + } + + // Check group is not changed + resp := listGroups(t) + assertResponseContainsGroup(t, resp, grp1) + cleanUp(t) +} + +// https://github.com/owncloud/ocis-accounts/issues/62 +func TestRemoveMemberNotInGroup(t *testing.T) { + grp1 := getTestGroups("grp1") + account := getAccount("user1") + + createGroup(t, grp1) + createAccount(t, account.PreferredName) + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + req := &proto.RemoveMemberRequest{GroupId: grp1.Id, AccountId: account.Id} + + res, err := cl.RemoveMember(context.Background(), req) + + // Should give an error + checkError(t, err) + assert.IsType(t, &proto.Group{}, res) + + //assert.Error(t, err) + //assert.Equal( + // t, + // fmt.Sprintf("{\"id\":\".\",\"code\":404,\"detail\":\"User not found in the group\",\"status\":\"Not Found\"}", account.Id), + // err.Error(), + //) + + // Check group is not changed + resp := listGroups(t) + assertResponseContainsGroup(t, resp, grp1) + cleanUp(t) +} + +func TestListMembers(t *testing.T) { + groups := []string{ + "sysusers", + "users", + "sailing-lovers", + "violin-haters", + "radium-lovers", + "polonium-lovers", + "quantum-lovers", + "philosophy-haters", + "physics-lovers", + } + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + for _, group := range groups { + expectedGroup := getGroup(group) + req := &proto.ListMembersRequest{Id: expectedGroup.Id} + + res, err := cl.ListMembers(context.Background(), req) + checkError(t, err) + + assert.Equal(t, len(res.Members), len(expectedGroup.Members)) + + for _, member := range expectedGroup.Members { + found := false + for _, resMember := range res.Members { + if resMember.Id == member.Id { + found = true + break + } + } + + if !found { + t.Fatalf("Group with Id %v Expected to be in response but not found", member.Id) + } + } + } + cleanUp(t) +} + +func TestListMembersEmptyGroup(t *testing.T) { + group := &proto.Group{Id: "5d58e5ec-842e-498b-8800-61f2ec6f911c", GidNumber: 30002, OnPremisesSamAccountName: "quantum-group", DisplayName: "Quantum Group", Members: []*proto.Account{}} + + createGroup(t, group) + + client := service.Client() + cl := proto.NewGroupsService("com.owncloud.api.accounts", client) + + req := &proto.ListMembersRequest{Id: group.Id} + + res, err := cl.ListMembers(context.Background(), req) + + checkError(t, err) + assert.Empty(t, res.Members) + + cleanUp(t) +} From aa107eaa1ac24dc419b04cf15aee326741f0d447 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Thu, 23 Jul 2020 10:00:30 +0200 Subject: [PATCH 215/407] Use alpine:latest instead of alpine:edge in docker builds --- changelog/unreleased/use-alpine-latest.md | 5 +++++ docker/Dockerfile.linux.amd64 | 2 +- docker/Dockerfile.linux.arm | 2 +- docker/Dockerfile.linux.arm64 | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 changelog/unreleased/use-alpine-latest.md diff --git a/changelog/unreleased/use-alpine-latest.md b/changelog/unreleased/use-alpine-latest.md new file mode 100644 index 0000000000..54ae7714d9 --- /dev/null +++ b/changelog/unreleased/use-alpine-latest.md @@ -0,0 +1,5 @@ +Bugfix: build docker images with alpine:latest instead of alpine:edge + +ARM builds were failing when built on alpine:edge, so we switched to alpine:latest instead. + +https://github.com/owncloud/ocis-accounts/pull/64 diff --git a/docker/Dockerfile.linux.amd64 b/docker/Dockerfile.linux.amd64 index b183affe93..a7195e2c5c 100644 --- a/docker/Dockerfile.linux.amd64 +++ b/docker/Dockerfile.linux.amd64 @@ -1,4 +1,4 @@ -FROM amd64/alpine:edge +FROM amd64/alpine:latest RUN apk update && \ apk upgrade && \ diff --git a/docker/Dockerfile.linux.arm b/docker/Dockerfile.linux.arm index 3235da1d63..b8a1375dbc 100644 --- a/docker/Dockerfile.linux.arm +++ b/docker/Dockerfile.linux.arm @@ -1,4 +1,4 @@ -FROM arm32v6/alpine:edge +FROM arm32v6/alpine:latest RUN apk update && \ apk upgrade && \ diff --git a/docker/Dockerfile.linux.arm64 b/docker/Dockerfile.linux.arm64 index fb24cd5bee..daab5ecee8 100644 --- a/docker/Dockerfile.linux.arm64 +++ b/docker/Dockerfile.linux.arm64 @@ -1,4 +1,4 @@ -FROM arm64v8/alpine:edge +FROM arm64v8/alpine:latest RUN apk update && \ apk upgrade && \ From 42b8a7add57dd913b5ae9bc802106b52218d8fc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 23 Jul 2020 08:51:11 +0000 Subject: [PATCH 216/407] Automated changelog update [skip ci] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81431e90e0..3fbe937093 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) +* Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#64](https://github.com/owncloud/ocis-accounts/pull/64) * Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) * Change - Change api errors: [#11](https://github.com/owncloud/ocis-accounts/issues/11) * Change - Enable accounts on creation: [#43](https://github.com/owncloud/ocis-accounts/issues/43) @@ -28,6 +29,13 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/60 +* Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#64](https://github.com/owncloud/ocis-accounts/pull/64) + + ARM builds were failing when built on alpine:edge, so we switched to alpine:latest instead. + + https://github.com/owncloud/ocis-accounts/pull/64 + + * Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) We aim to have a similar project structure for all our ocis extensions. This extension was From bf3581c9143bc79b86e18ce4d5e4c6ac8eb95f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 23 Jul 2020 11:17:58 +0200 Subject: [PATCH 217/407] fix password related segfaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/fix-segfault.md | 5 ++++ pkg/service/v0/accounts.go | 38 ++++++++++++++++++---------- 2 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 changelog/unreleased/fix-segfault.md diff --git a/changelog/unreleased/fix-segfault.md b/changelog/unreleased/fix-segfault.md new file mode 100644 index 0000000000..ff25d58b9b --- /dev/null +++ b/changelog/unreleased/fix-segfault.md @@ -0,0 +1,5 @@ +Bugfix: Prevent segfault when no password is set. + +Passwords are stored in a dedicated child struct of an account. We fixed several segfault conditions where the methods would try to unset a password when that child struct was not existing. + +https://github.com/owncloud/ocis-accounts/pull/65 diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index e940e72ef6..116bc91642 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -233,7 +233,10 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest s.expandMemberOf(a) // remove password before returning - a.PasswordProfile.Password = "" + + if a.PasswordProfile != nil { + a.PasswordProfile.Password = "" + } out.Accounts = append(out.Accounts, a) } @@ -259,7 +262,9 @@ func (s Service) GetAccount(c context.Context, in *proto.GetAccountRequest, out s.expandMemberOf(out) // remove password - out.PasswordProfile.Password = "" + if out.PasswordProfile != nil { + out.PasswordProfile.Password = "" + } return } @@ -342,19 +347,24 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest out.Mail = in.Account.Mail // read only? out.Description = in.Account.Description - if in.Account.PasswordProfile != nil && in.Account.PasswordProfile.Password != "" { - // encrypt password - c := crypt.New(crypt.SHA512) - if out.PasswordProfile.Password, err = c.Generate([]byte(in.Account.PasswordProfile.Password), nil); err != nil { - s.log.Error().Err(err).Str("id", id).Interface("account", loggableAccount(in.Account)).Msg("could not hash password") - return merrors.InternalServerError(s.id, "could not hash password: %v", err.Error()) + if in.Account.PasswordProfile != nil { + if out.PasswordProfile == nil { + out.PasswordProfile = &proto.PasswordProfile{} } + if in.Account.PasswordProfile.Password != "" { + // encrypt password + c := crypt.New(crypt.SHA512) + if out.PasswordProfile.Password, err = c.Generate([]byte(in.Account.PasswordProfile.Password), nil); err != nil { + s.log.Error().Err(err).Str("id", id).Interface("account", loggableAccount(in.Account)).Msg("could not hash password") + return merrors.InternalServerError(s.id, "could not hash password: %v", err.Error()) + } + } + // lastPasswordChangeDateTime calculated, see password + out.PasswordProfile.PasswordPolicies = in.Account.PasswordProfile.PasswordPolicies + out.PasswordProfile.ForceChangePasswordNextSignIn = in.Account.PasswordProfile.ForceChangePasswordNextSignIn + out.PasswordProfile.ForceChangePasswordNextSignInWithMfa = in.Account.PasswordProfile.ForceChangePasswordNextSignInWithMfa out.PasswordProfile.LastPasswordChangeDateTime = tsnow } - // lastPasswordChangeDateTime calculated, see password - out.PasswordProfile.PasswordPolicies = in.Account.PasswordProfile.PasswordPolicies - out.PasswordProfile.ForceChangePasswordNextSignIn = in.Account.PasswordProfile.ForceChangePasswordNextSignIn - out.PasswordProfile.ForceChangePasswordNextSignInWithMfa = in.Account.PasswordProfile.ForceChangePasswordNextSignInWithMfa // memberOf read only // createdDateTime read only @@ -382,7 +392,9 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest } // remove password - out.PasswordProfile.Password = "" + if out.PasswordProfile != nil { + out.PasswordProfile.Password = "" + } return } From de01b8773b7a97092ed07a671b477fbdbda3e78a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 23 Jul 2020 11:38:43 +0200 Subject: [PATCH 218/407] update TestCreateAccountInvalidUserName MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- pkg/proto/v0/accounts.pb.micro_test.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkg/proto/v0/accounts.pb.micro_test.go b/pkg/proto/v0/accounts.pb.micro_test.go index a43056c33d..0251a4f65f 100644 --- a/pkg/proto/v0/accounts.pb.micro_test.go +++ b/pkg/proto/v0/accounts.pb.micro_test.go @@ -389,6 +389,11 @@ func TestCreateExistingUser(t *testing.T) { // All tests fail after running this // https://github.com/owncloud/ocis-accounts/issues/62 func TestCreateAccountInvalidUserName(t *testing.T) { + + resp, err := listAccounts(t) + checkError(t, err) + numAccounts := len(resp.GetAccounts()) + testData := []string{ "", "0", @@ -403,11 +408,11 @@ func TestCreateAccountInvalidUserName(t *testing.T) { checkError(t, err) } - // This throws a error in server - // resp contains no accounts - resp, _ := listAccounts(t) + // resp should have the same number of accounts + resp, err = listAccounts(t) + checkError(t, err) - assert.Equal(t, 0, len(resp.GetAccounts())) + assert.Equal(t, numAccounts, len(resp.GetAccounts())) cleanUp(t) } From 65e3df2b1eab2eabe000ca1f1b54c4999c4d45e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 23 Jul 2020 12:38:16 +0200 Subject: [PATCH 219/407] tighten the screws MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/fix-segfault.md | 2 +- changelog/unreleased/tighten-screws.md | 5 ++++ pkg/proto/v0/accounts.pb.micro_test.go | 4 ++- pkg/service/v0/accounts.go | 34 ++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 changelog/unreleased/tighten-screws.md diff --git a/changelog/unreleased/fix-segfault.md b/changelog/unreleased/fix-segfault.md index ff25d58b9b..2ba5e13621 100644 --- a/changelog/unreleased/fix-segfault.md +++ b/changelog/unreleased/fix-segfault.md @@ -1,4 +1,4 @@ -Bugfix: Prevent segfault when no password is set. +Bugfix: Prevent segfault when no password is set Passwords are stored in a dedicated child struct of an account. We fixed several segfault conditions where the methods would try to unset a password when that child struct was not existing. diff --git a/changelog/unreleased/tighten-screws.md b/changelog/unreleased/tighten-screws.md new file mode 100644 index 0000000000..00d9185e90 --- /dev/null +++ b/changelog/unreleased/tighten-screws.md @@ -0,0 +1,5 @@ +Change: Tighten screws on usernames and email addresses + +In order to match accounts to the OIDC claims we currently rely on the email address or username to be present. We force both to match the [W3C recommended regex](https://www.w3.org/TR/2016/REC-html51-20161101/sec-forms.html#valid-e-mail-address) with usernames having to start with a character or `_`. This allows the username to be presented and used in ACLs when integrating the os with the glauth LDAP service of ocis. + +https://github.com/owncloud/ocis-accounts/pull/65 diff --git a/pkg/proto/v0/accounts.pb.micro_test.go b/pkg/proto/v0/accounts.pb.micro_test.go index 0251a4f65f..fa9482095b 100644 --- a/pkg/proto/v0/accounts.pb.micro_test.go +++ b/pkg/proto/v0/accounts.pb.micro_test.go @@ -405,7 +405,9 @@ func TestCreateAccountInvalidUserName(t *testing.T) { _, err := createAccount(t, userName) // Should give error - checkError(t, err) + if err == nil { + t.Fatalf("Expected an Error when creating user '%s' but got nil", userName) + } } // resp should have the same number of accounts diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 116bc91642..5e36b2ec5d 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -278,6 +278,12 @@ func (s Service) CreateAccount(c context.Context, in *proto.CreateAccountRequest if in.Account.Id == "" { in.Account.Id = uuid.Must(uuid.NewV4()).String() } + if !s.isValidUsername(in.Account.PreferredName) { + return merrors.BadRequest(s.id, "preferred_name '%s' must be at least the local part of an email", in.Account.PreferredName) + } + if !s.isValidEmail(in.Account.Mail) { + return merrors.BadRequest(s.id, "mail '%s' must be a valid email", in.Account.Mail) + } if id, err = cleanupID(in.Account.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) @@ -317,6 +323,12 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest if in.Account.Id == "" { return merrors.BadRequest(s.id, "account id missing") } + if !s.isValidUsername(in.Account.PreferredName) { + return merrors.BadRequest(s.id, "preferred_name '%s' must be at least the local part of an email", in.Account.PreferredName) + } + if !s.isValidEmail(in.Account.Mail) { + return merrors.BadRequest(s.id, "mail '%s' must be a valid email", in.Account.Mail) + } if id, err = cleanupID(in.Account.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) @@ -437,3 +449,25 @@ func (s Service) DeleteAccount(c context.Context, in *proto.DeleteAccountRequest s.log.Info().Str("id", id).Msg("deleted account") return } + +// We want to allow email addresses as usernames so they show up when using them in ACLs on storages that allow intergration with our glauth LDAP service +// so we are adding a few restrictions from https://stackoverflow.com/questions/6949667/what-are-the-real-rules-for-linux-usernames-on-centos-6-and-rhel-6 +// names should not start with numbers +var usernameRegex = regexp.MustCompile("^[a-zA-Z_][a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]*(@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)*$") + +func (s Service) isValidUsername(e string) bool { + if len(e) < 1 && len(e) > 254 { + return false + } + return usernameRegex.MatchString(e) +} + +// regex from https://www.w3.org/TR/2016/REC-html51-20161101/sec-forms.html#valid-e-mail-address +var emailRegex = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$") + +func (s Service) isValidEmail(e string) bool { + if len(e) < 3 && len(e) > 254 { + return false + } + return emailRegex.MatchString(e) +} From fbaa7e08de511200c7f5bdd6fb59593a53d7b39a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 24 Jul 2020 18:23:14 +0200 Subject: [PATCH 220/407] use NewNumericRangeInclusiveQuery for numeric literals MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some LDAP properties like `uidnumber` and `gidnumber` are numeric. When an OS tries to look up a user it will not only try to lookup the user by username, but also by the `uidnumber`: `(&(objectclass=posixAccount)(uidnumber=20000))`. The accounts backend for glauth was sending that as a string query `uid_number eq '20000'` and has been changed to send it as `uid_number eq 20000`. The removed quotes allow the parser in ocis-accounts to identify the numeric literal and use the NewNumericRangeInclusiveQuery instead of a TermQuery. Related: https://github.com/owncloud/ocis-glauth/issues/28 https://github.com/owncloud/ocis-glauth/pull/29 Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/fix-int-queries.md | 7 ++++++ pkg/provider/bleve.go | 29 +++++++++++++++++-------- 2 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 changelog/unreleased/fix-int-queries.md diff --git a/changelog/unreleased/fix-int-queries.md b/changelog/unreleased/fix-int-queries.md new file mode 100644 index 0000000000..7a2325810d --- /dev/null +++ b/changelog/unreleased/fix-int-queries.md @@ -0,0 +1,7 @@ +Bugfix: use NewNumericRangeInclusiveQuery for numeric literals + +Some LDAP properties like `uidnumber` and `gidnumber` are numeric. When an OS tries to look up a user it will not only try to lookup the user by username, but also by the `uidnumber`: `(&(objectclass=posixAccount)(uidnumber=20000))`. The accounts backend for glauth was sending that as a string query `uid_number eq '20000'` and has been changed to send it as `uid_number eq 20000`. The removed quotes allow the parser in ocis-accounts to identify the numeric literal and use the NewNumericRangeInclusiveQuery instead of a TermQuery. + +https://github.com/owncloud/ocis-glauth/issues/28 +https://github.com/owncloud/ocis-accounts/pull/68 +https://github.com/owncloud/ocis-glauth/pull/29 \ No newline at end of file diff --git a/pkg/provider/bleve.go b/pkg/provider/bleve.go index bcb454b550..0fc03fcc4e 100644 --- a/pkg/provider/bleve.go +++ b/pkg/provider/bleve.go @@ -2,6 +2,8 @@ package provider import ( "errors" + "fmt" + "strconv" "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" @@ -49,16 +51,25 @@ func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { if n.Children[0].Token.Type != godata.FilterTokenLiteral { return nil, errors.New("equality expected a literal on the lhs") } - if n.Children[1].Token.Type != godata.FilterTokenString { - return nil, errors.New("equality expected a string on the rhs") + if n.Children[1].Token.Type == godata.FilterTokenString { + // string tokens are enclosed with 'some string' + // ' is escaped as '' + // TODO unescape '' as ' + // http://docs.oasis-open.org/odata/odata/v4.01/cs01/part2-url-conventions/odata-v4.01-cs01-part2-url-conventions.html#sec_URLComponents + q := bleve.NewTermQuery(n.Children[1].Token.Value[1 : len(n.Children[1].Token.Value)-1]) + q.SetField(n.Children[0].Token.Value) + return q, nil + } else if n.Children[1].Token.Type == godata.FilterTokenInteger { + v, err := strconv.ParseFloat(n.Children[1].Token.Value, 64) + if err != nil { + return nil, err + } + incl := true + q := bleve.NewNumericRangeInclusiveQuery(&v, &v, &incl, &incl) + q.SetField(n.Children[0].Token.Value) + return q, nil } - // string tokens are enclosed with 'some string' - // ' is escaped as '' - // TODO unescape '' as ' - // http://docs.oasis-open.org/odata/odata/v4.01/cs01/part2-url-conventions/odata-v4.01-cs01-part2-url-conventions.html#sec_URLComponents - q := bleve.NewTermQuery(n.Children[1].Token.Value[1 : len(n.Children[1].Token.Value)-1]) - q.SetField(n.Children[0].Token.Value) - return q, nil + return nil, fmt.Errorf("equality expected a string or int on the rhs, got %d", n.Children[1].Token.Type) case "and": q := query.NewConjunctionQuery([]query.Query{}) for _, child := range n.Children { From 229e5e01d7f6599a1e38463df7497dae40aacc55 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Mon, 27 Jul 2020 07:33:02 +0000 Subject: [PATCH 221/407] Automated changelog update [skip ci] --- CHANGELOG.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fbe937093..229bf04534 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) +* Bugfix - Use NewNumericRangeInclusiveQuery for numeric literals: [#28](https://github.com/owncloud/ocis-glauth/issues/28) +* Bugfix - Prevent segfault when no password is set: [#65](https://github.com/owncloud/ocis-accounts/pull/65) * Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#64](https://github.com/owncloud/ocis-accounts/pull/64) * Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) * Change - Change api errors: [#11](https://github.com/owncloud/ocis-accounts/issues/11) @@ -14,6 +16,7 @@ The following sections list the changes in ocis-accounts unreleased. * Change - Fix index update on create/update: [#57](https://github.com/owncloud/ocis-accounts/issues/57) * Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) +* Change - Tighten screws on usernames and email addresses: [#65](https://github.com/owncloud/ocis-accounts/pull/65) * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) * Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) @@ -29,6 +32,29 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/60 +* Bugfix - Use NewNumericRangeInclusiveQuery for numeric literals: [#28](https://github.com/owncloud/ocis-glauth/issues/28) + + Some LDAP properties like `uidnumber` and `gidnumber` are numeric. When an OS tries to look up a + user it will not only try to lookup the user by username, but also by the `uidnumber`: + `(&(objectclass=posixAccount)(uidnumber=20000))`. The accounts backend for glauth was + sending that as a string query `uid_number eq '20000'` and has been changed to send it as + `uid_number eq 20000`. The removed quotes allow the parser in ocis-accounts to identify the + numeric literal and use the NewNumericRangeInclusiveQuery instead of a TermQuery. + + https://github.com/owncloud/ocis-glauth/issues/28 + https://github.com/owncloud/ocis-accounts/pull/68 + https://github.com/owncloud/ocis-glauth/pull/29 + + +* Bugfix - Prevent segfault when no password is set: [#65](https://github.com/owncloud/ocis-accounts/pull/65) + + Passwords are stored in a dedicated child struct of an account. We fixed several segfault + conditions where the methods would try to unset a password when that child struct was not + existing. + + https://github.com/owncloud/ocis-accounts/pull/65 + + * Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#64](https://github.com/owncloud/ocis-accounts/pull/64) ARM builds were failing when built on alpine:edge, so we switched to alpine:latest instead. @@ -85,6 +111,17 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/33 +* Change - Tighten screws on usernames and email addresses: [#65](https://github.com/owncloud/ocis-accounts/pull/65) + + In order to match accounts to the OIDC claims we currently rely on the email address or username + to be present. We force both to match the [W3C recommended + regex](https://www.w3.org/TR/2016/REC-html51-20161101/sec-forms.html#valid-e-mail-address) + with usernames having to start with a character or `_`. This allows the username to be presented + and used in ACLs when integrating the os with the glauth LDAP service of ocis. + + https://github.com/owncloud/ocis-accounts/pull/65 + + * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) We updated the api to allow fetching users not onyl by UUID, but also by identity (OpenID issuer From 694fe677aad6652f8e27e4516de65981088bd990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 21 Jul 2020 14:22:19 +0200 Subject: [PATCH 222/407] Add cli-subbcomands to mange users ocis-accounts [list|delete|update|add|inspect] Implements UpdateMask for the update request. Changed server-handler accordingly. The commands use service-discovery to discover the backend. --- .../unreleased/add-cli-user-management.md | 17 ++ go.mod | 8 +- go.sum | 24 +- pkg/command/add_account.go | 56 +++++ pkg/command/inspect_account.go | 76 ++++++ pkg/command/list_accounts.go | 50 ++++ pkg/command/remove_account.go | 39 +++ pkg/command/root.go | 5 + pkg/command/update_account.go | 87 +++++++ pkg/flagset/flagset.go | 235 +++++++++++++++++- pkg/proto/v0/accounts.pb.micro_test.go | 56 +++++ pkg/service/v0/accounts.go | 207 ++++++++++----- 12 files changed, 777 insertions(+), 83 deletions(-) create mode 100644 changelog/unreleased/add-cli-user-management.md create mode 100644 pkg/command/add_account.go create mode 100644 pkg/command/inspect_account.go create mode 100644 pkg/command/list_accounts.go create mode 100644 pkg/command/remove_account.go create mode 100644 pkg/command/update_account.go diff --git a/changelog/unreleased/add-cli-user-management.md b/changelog/unreleased/add-cli-user-management.md new file mode 100644 index 0000000000..f86123aa6c --- /dev/null +++ b/changelog/unreleased/add-cli-user-management.md @@ -0,0 +1,17 @@ +Enhancement: Add early version of cli tools for user-management + +Following commands are available: + +list, ls List existing accounts +add, create, Create a new account +update Make changes to an existing account +remove, rm Removes an existing account +inspect Show detailed data on an existing account + +See --help for details. + +Note that not all account-attributes have an effect yet. This is due to ocis +being in an early development stage. + +https://github.com/owncloud/ocis-accounts/pull/69 +https://github.com/owncloud/product/issues/115 diff --git a/go.mod b/go.mod index 52969e8ad0..3b07f1f352 100644 --- a/go.mod +++ b/go.mod @@ -19,22 +19,24 @@ require ( github.com/golang/protobuf v1.4.2 github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect github.com/jmhodges/levigo v1.0.0 // indirect + github.com/mennanov/fieldmask-utils v0.3.2 github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.6.0 - github.com/micro/protoc-gen-micro/v2 v2.3.0 // indirect github.com/oklog/run v1.1.0 + github.com/olekukonko/tablewriter v0.0.4 github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170 github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 + github.com/rs/zerolog v1.18.0 github.com/spf13/viper v1.7.0 github.com/stretchr/testify v1.4.0 github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tredoe/osutil v1.0.5 golang.org/x/net v0.0.0-20200301022130-244492dfa37a - google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 + golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 // indirect + google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece google.golang.org/protobuf v1.25.0 - gopkg.in/go-playground/assert.v1 v1.2.1 honnef.co/go/tools v0.0.1-2020.1.4 // indirect ) diff --git a/go.sum b/go.sum index 724cc74274..ae7e325bb3 100644 --- a/go.sum +++ b/go.sum @@ -175,13 +175,10 @@ github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReG github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/cheggaaa/pb v1.0.28/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= github.com/cloudflare/cloudflare-go v0.10.6/go.mod h1:dcRl7AXBH5Bf7QFTBVc3TRzwvotSeO4AlnMhuxORAX8= -github.com/cloudflare/cloudflare-go v0.10.9/go.mod h1:5TrsWH+3f4NV6WjtS5QFp+DifH81rph40gU374Sh0dQ= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -255,7 +252,6 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= @@ -597,18 +593,19 @@ github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mennanov/fieldmask-utils v0.3.2 h1:AkHXYBEOoyvocl8YhzoStATRnto5OH1PY4Rj78I5Cuc= +github.com/mennanov/fieldmask-utils v0.3.2/go.mod h1:JpaanSp6Ql5A8dGktEFxTmA9uBXmz3F+2LAXDZwiimU= github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.9.1/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= @@ -623,7 +620,6 @@ github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95 github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= -github.com/micro/go-micro/v2 v2.5.1-0.20200417165434-16db76bee2fb/go.mod h1:qz2UT4UFdFVs+qUGMuDK3xuHgude1BgntqQ29sbpPlE= github.com/micro/go-micro/v2 v2.6.0 h1:HH6uEqTu6pkBtAlwAqQW2sf33640iEa1s9puGIctpO0= github.com/micro/go-micro/v2 v2.6.0/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= @@ -633,12 +629,8 @@ github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1/go.mod h1:QrkcwcD github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= github.com/micro/micro v1.16.0 h1:qCZV20WoTOtJ1IyLU/a0A0BMSertfu+iOj/2AJ4Uvrk= github.com/micro/micro v1.16.0/go.mod h1:TO5Ng0KidbfRYIxVM4Q3deZ0A+qwRyP9WeXp+k2fWNA= -github.com/micro/micro/v2 v2.5.1-0.20200418121137-24e9b206767c h1:0xGuo2yepDL8p+id/kXqVka+5iiOBSyfqOX01csnOYk= -github.com/micro/micro/v2 v2.5.1-0.20200418121137-24e9b206767c/go.mod h1:fqqaYbJGYzSBi7Ms2Adly7Xzw9+WIRBAucUjwGmYeFY= github.com/micro/protoc-gen-micro v1.0.0 h1:qKh5S3I1RfenhIs5mqDFJLwRlRDlgin7XWiUKZbpwLM= github.com/micro/protoc-gen-micro v1.0.0/go.mod h1:C8ij4DJhapBmypcT00AXdb0cZ675/3PqUO02buWWqbE= -github.com/micro/protoc-gen-micro/v2 v2.3.0 h1:PBbGeNh4BOy1w4eRdeo4yWJJNWGLnaJX6/h55I74EXE= -github.com/micro/protoc-gen-micro/v2 v2.3.0/go.mod h1:gcsUvKSTTTalq+pqdUbFS40OTsURpYgL5+yUguR1djk= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -704,7 +696,6 @@ github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= -github.com/netdata/go-orchestrator v0.0.0-20190905093727-c793edba0e8f/go.mod h1:ECF8anFVCt/TfTIWVPgPrNaYJXtAtpAOF62ugDbw41A= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= @@ -724,7 +715,7 @@ github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DV github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oleiade/reflections v1.0.0/go.mod h1:RbATFBbKYkVdqmSFtx13Bb/tVhR0lgOBXunWTZKeL4w= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.3/go.mod h1:YZeBtGzYYEsCHp2LST/u/0NDwGkRoBtmn1cIWCJiS6M= +github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -931,7 +922,6 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 h1:gKMu1Bf6QINDnvyZuTaACm9ofY+PRh+5vFz4oxBZeF8= @@ -1069,11 +1059,9 @@ golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1219,6 +1207,8 @@ google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb h1:nAFaltAMbNVA0ri google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece h1:1YM0uhfumvoDu9sx8+RyWwTI63zoCQvI23IYFRlvte0= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1230,6 +1220,7 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= @@ -1268,7 +1259,6 @@ gopkg.in/ldap.v2 v2.5.1/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk= gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= -gopkg.in/olivere/elastic.v5 v5.0.83/go.mod h1:LXF6q9XNBxpMqrcgax95C6xyARXWbbCXUrtTxrNrxJI= gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= diff --git a/pkg/command/add_account.go b/pkg/command/add_account.go new file mode 100644 index 0000000000..1e38ada77d --- /dev/null +++ b/pkg/command/add_account.go @@ -0,0 +1,56 @@ +package command + +import ( + "fmt" + "github.com/micro/cli/v2" + "github.com/micro/go-micro/v2/client/grpc" + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/flagset" + accounts "github.com/owncloud/ocis-accounts/pkg/proto/v0" +) + +// AddAccount command creates a new account +func AddAccount(cfg *config.Config) *cli.Command { + a := &accounts.Account{ + PasswordProfile: &accounts.PasswordProfile{}, + } + return &cli.Command{ + Name: "add", + Usage: "Create a new account", + Aliases: []string{"create", "a"}, + Flags: flagset.AddAccountWithConfig(cfg, a), + Before: func(c *cli.Context) error { + // Write value of username to the flags beneath, as preferred name + // and on-premises-sam-account-name is probably confusing for users. + if username := c.String("username"); username != "" { + if !c.IsSet("on-premises-sam-account-name") { + if err := c.Set("on-premises-sam-account-name", username); err != nil { + return err + } + } + + if !c.IsSet("preferred-name") { + if err := c.Set("preferred-name", username); err != nil { + return err + } + } + } + + return nil + + }, + Action: func(c *cli.Context) error { + accSvcID := cfg.GRPC.Namespace + "." + cfg.Server.Name + accSvc := accounts.NewAccountsService(accSvcID, grpc.NewClient()) + _, err := accSvc.CreateAccount(c.Context, &accounts.CreateAccountRequest{ + Account: a, + }) + + if err != nil { + fmt.Println(fmt.Errorf("could not create account %w", err)) + return err + } + + return nil + }} +} diff --git a/pkg/command/inspect_account.go b/pkg/command/inspect_account.go new file mode 100644 index 0000000000..4fd2c19242 --- /dev/null +++ b/pkg/command/inspect_account.go @@ -0,0 +1,76 @@ +package command + +import ( + "fmt" + "github.com/micro/cli/v2" + "github.com/micro/go-micro/v2/client/grpc" + tw "github.com/olekukonko/tablewriter" + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/flagset" + accounts "github.com/owncloud/ocis-accounts/pkg/proto/v0" + "os" + "strconv" +) + +// InspectAccount command shows detailed information about a specific account. +func InspectAccount(cfg *config.Config) *cli.Command { + return &cli.Command{ + Name: "inspect", + Usage: "Show detailed data on an existing account", + ArgsUsage: "id", + Flags: flagset.InspectAccountWithConfig(cfg), + Action: func(c *cli.Context) error { + accServiceID := cfg.GRPC.Namespace + "." + cfg.Server.Name + if c.NArg() != 1 { + fmt.Println("Please provide a user-id") + os.Exit(1) + } + + uid := c.Args().First() + accSvc := accounts.NewAccountsService(accServiceID, grpc.NewClient()) + acc, err := accSvc.GetAccount(c.Context, &accounts.GetAccountRequest{ + Id: uid, + }) + + if err != nil { + fmt.Println(fmt.Errorf("could not view account %w", err)) + return err + } + + buildAccountInspectTable(acc).Render() + return nil + }} +} + +func buildAccountInspectTable(acc *accounts.Account) *tw.Table { + table := tw.NewWriter(os.Stdout) + table.SetAutoMergeCells(true) + table.AppendBulk([][]string{ + {"ID", acc.Id}, + {"Mail", acc.Mail}, + {"DisplayName", acc.DisplayName}, + {"PreferredName", acc.PreferredName}, + {"AccountEnabled", strconv.FormatBool(acc.AccountEnabled)}, + {"CreationType", acc.CreationType}, + {"CreatedDateTime", acc.CreatedDateTime.String()}, + {"Description", acc.Description}, + {"ExternalUserState", acc.ExternalUserState}, + {"UidNumber", fmt.Sprintf("%+d", acc.UidNumber)}, + {"GidNumber", fmt.Sprintf("%+d", acc.GidNumber)}, + {"IsResourceAccount", strconv.FormatBool(acc.IsResourceAccount)}, + {"OnPremisesDistinguishedName", acc.OnPremisesDistinguishedName}, + {"OnPremisesDomainName", acc.OnPremisesDomainName}, + {"OnPremisesImmutableId", acc.OnPremisesImmutableId}, + {"OnPremisesSamAccountName", acc.OnPremisesSamAccountName}, + {"OnPremisesSecurityIdentifier", acc.OnPremisesSecurityIdentifier}, + {"OnPremisesUserPrincipalName", acc.OnPremisesUserPrincipalName}, + {"RefreshTokenValidFromDateTime", acc.RefreshTokensValidFromDateTime.String()}, + }) + + // Merged cell with group memberships + for k := range acc.MemberOf { + table.Append([]string{"MemberOf", acc.MemberOf[k].DisplayName}) + } + + return table +} diff --git a/pkg/command/list_accounts.go b/pkg/command/list_accounts.go new file mode 100644 index 0000000000..c387961505 --- /dev/null +++ b/pkg/command/list_accounts.go @@ -0,0 +1,50 @@ +package command + +import ( + "fmt" + "github.com/micro/cli/v2" + "github.com/micro/go-micro/v2/client/grpc" + tw "github.com/olekukonko/tablewriter" + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/flagset" + accounts "github.com/owncloud/ocis-accounts/pkg/proto/v0" + "os" + "strconv" +) + +// ListAccounts command lists all accounts +func ListAccounts(cfg *config.Config) *cli.Command { + return &cli.Command{ + Name: "list", + Usage: "List existing accounts", + Aliases: []string{"ls"}, + Flags: flagset.ListAccountsWithConfig(cfg), + Action: func(c *cli.Context) error { + accSvcID := cfg.GRPC.Namespace + "." + cfg.Server.Name + accSvc := accounts.NewAccountsService(accSvcID, grpc.NewClient()) + resp, err := accSvc.ListAccounts(c.Context, &accounts.ListAccountsRequest{}) + + if err != nil { + fmt.Println(fmt.Errorf("could not list accounts %w", err)) + return err + } + + buildAccountsListTable(resp.Accounts).Render() + return nil + }} +} + +// buildAccountsListTable creates an ascii table for printing on the cli +func buildAccountsListTable(accs []*accounts.Account) *tw.Table { + table := tw.NewWriter(os.Stdout) + table.SetHeader([]string{"Id", "DisplayName", "Mail", "AccountEnabled"}) + table.SetAutoFormatHeaders(false) + for _, acc := range accs { + table.Append([]string{ + acc.Id, + acc.DisplayName, + acc.Mail, + strconv.FormatBool(acc.AccountEnabled)}) + } + return table +} diff --git a/pkg/command/remove_account.go b/pkg/command/remove_account.go new file mode 100644 index 0000000000..b141e2bef6 --- /dev/null +++ b/pkg/command/remove_account.go @@ -0,0 +1,39 @@ +package command + +import ( + "fmt" + "github.com/micro/cli/v2" + "github.com/micro/go-micro/v2/client/grpc" + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/flagset" + accounts "github.com/owncloud/ocis-accounts/pkg/proto/v0" + "os" +) + +// RemoveAccount command deletes an existing account. +func RemoveAccount(cfg *config.Config) *cli.Command { + return &cli.Command{ + Name: "remove", + Usage: "Removes an existing account", + ArgsUsage: "id", + Aliases: []string{"rm"}, + Flags: flagset.RemoveAccountWithConfig(cfg), + Action: func(c *cli.Context) error { + accServiceID := cfg.GRPC.Namespace + "." + cfg.Server.Name + if c.NArg() != 1 { + fmt.Println("Please provide a user-id") + os.Exit(1) + } + + uid := c.Args().First() + accSvc := accounts.NewAccountsService(accServiceID, grpc.NewClient()) + _, err := accSvc.DeleteAccount(c.Context, &accounts.DeleteAccountRequest{Id: uid}) + + if err != nil { + fmt.Println(fmt.Errorf("could not delete account %w", err)) + return err + } + + return nil + }} +} diff --git a/pkg/command/root.go b/pkg/command/root.go index 3f250f0e5c..de9802ab0a 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -42,6 +42,11 @@ func Execute() error { Commands: []*cli.Command{ Server(cfg), + AddAccount(cfg), + UpdateAccount(cfg), + ListAccounts(cfg), + InspectAccount(cfg), + RemoveAccount(cfg), }, } diff --git a/pkg/command/update_account.go b/pkg/command/update_account.go new file mode 100644 index 0000000000..ead11f2cac --- /dev/null +++ b/pkg/command/update_account.go @@ -0,0 +1,87 @@ +package command + +import ( + "errors" + "fmt" + "github.com/micro/cli/v2" + "github.com/micro/go-micro/v2/client/grpc" + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/flagset" + accounts "github.com/owncloud/ocis-accounts/pkg/proto/v0" + "google.golang.org/genproto/protobuf/field_mask" +) + +// UpdateAccount command for modifying accounts including password policies +func UpdateAccount(cfg *config.Config) *cli.Command { + a := &accounts.Account{ + PasswordProfile: &accounts.PasswordProfile{}, + } + return &cli.Command{ + Name: "update", + Usage: "Make changes to an existing account", + ArgsUsage: "id", + Flags: flagset.UpdateAccountWithConfig(cfg, a), + Before: func(c *cli.Context) error { + if len(c.StringSlice("password_policies")) > 0 { + // StringSliceFlag doesn't support Destination + a.PasswordProfile.PasswordPolicies = c.StringSlice("password_policies") + } + + if c.NArg() != 1 { + return errors.New("missing account-id") + } + + if c.NumFlags() == 0 { + return errors.New("missing attribute-flags for update") + } + + return nil + }, + Action: func(c *cli.Context) error { + a.Id = c.Args().First() + accSvcID := cfg.GRPC.Namespace + "." + cfg.Server.Name + accSvc := accounts.NewAccountsService(accSvcID, grpc.NewClient()) + _, err := accSvc.UpdateAccount(c.Context, &accounts.UpdateAccountRequest{ + Account: a, + UpdateMask: buildAccUpdateMask(c.FlagNames()), + }) + + if err != nil { + fmt.Println(fmt.Errorf("could not update account %w", err)) + return err + } + + return nil + }} +} + +// buildAccUpdateMask by mapping passed update flags to account fieldNames. +// +// The UpdateMask is passed with the update-request to the server so that +// only the modified values are transferred. +func buildAccUpdateMask(setFlags []string) *field_mask.FieldMask { + var flagToPath = map[string]string{ + "enabled": "AccountEnabled", + "displayname": "DisplayName", + "preferred-name": "PreferredName", + "uidnumber": "UidNumber", + "gidnumber": "GidNumber", + "mail": "Mail", + "description": "Description", + "password": "PasswordProfile.Password", + "password-policies": "PasswordProfile.PasswordPolicies", + "force-password-change": "PasswordProfile.ForceChangePasswordNextSignIn", + "force-password-change-mfa": "PasswordProfile.ForceChangePasswordNextSignInWithMfa", + "on-premises-sam-account-name": "OnPremisesSamAccountName", + } + + updatedPaths := make([]string, 0) + + for _, v := range setFlags { + if _, ok := flagToPath[v]; ok { + updatedPaths = append(updatedPaths, flagToPath[v]) + } + } + + return &field_mask.FieldMask{Paths: updatedPaths} +} diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index 140a801e3a..aff5f17b07 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -3,6 +3,7 @@ package flagset import ( "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" + accounts "github.com/owncloud/ocis-accounts/pkg/proto/v0" ) // RootWithConfig applies cfg to the root flagset @@ -88,8 +89,240 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { Name: "asset-path", Value: "", Usage: "Path to custom assets", - EnvVars: []string{"HELLO_ASSET_PATH"}, + EnvVars: []string{"ACCOUNTS_ASSET_PATH"}, Destination: &cfg.Asset.Path, }, } } + +// UpdateAccountWithConfig applies update command flags to cfg +func UpdateAccountWithConfig(cfg *config.Config, a *accounts.Account) []cli.Flag { + if a.PasswordProfile == nil { + a.PasswordProfile = &accounts.PasswordProfile{} + } + + return []cli.Flag{ + &cli.StringFlag{ + Name: "grpc-namespace", + Value: "com.owncloud.api", + Usage: "Set the base namespace for the grpc namespace", + EnvVars: []string{"ACCOUNTS_GRPC_NAMESPACE"}, + Destination: &cfg.GRPC.Namespace, + }, + &cli.StringFlag{ + Name: "name", + Value: "accounts", + Usage: "service name", + EnvVars: []string{"ACCOUNTS_NAME"}, + Destination: &cfg.Server.Name, + }, + &cli.BoolFlag{ + Name: "enabled", + Usage: "Enable the account", + Destination: &a.AccountEnabled, + }, + &cli.StringFlag{ + Name: "displayname", + Usage: "Set the displayname for the account", + Destination: &a.DisplayName, + }, + &cli.StringFlag{ + Name: "preferred-name", + Usage: "Set the preferred-name for the account", + Destination: &a.PreferredName, + }, + &cli.StringFlag{ + Name: "on-premises-sam-account-name", + Usage: "Set the on-premises-sam-account-name", + Destination: &a.OnPremisesSamAccountName, + }, + &cli.Int64Flag{ + Name: "uidnumber", + Usage: "Set the uidnumber for the account", + Destination: &a.UidNumber, + }, + &cli.Int64Flag{ + Name: "gidnumber", + Usage: "Set the gidnumber for the account", + Destination: &a.GidNumber, + }, + &cli.StringFlag{ + Name: "mail", + Usage: "Set the mail for the account", + Destination: &a.Mail, + }, + &cli.StringFlag{ + Name: "description", + Usage: "Set the description for the account", + Destination: &a.Description, + }, + &cli.StringFlag{ + Name: "password", + Usage: "Set the password for the account", + Destination: &a.PasswordProfile.Password, + // TODO read password from ENV? + }, + &cli.StringSliceFlag{ + Name: "password-policies", + Usage: "Possible policies: DisableStrongPassword, DisablePasswordExpiration", + }, + &cli.BoolFlag{ + Name: "force-password-change", + Usage: "Force password change on next sign-in", + Destination: &a.PasswordProfile.ForceChangePasswordNextSignIn, + }, + &cli.BoolFlag{ + Name: "force-password-change-mfa", + Usage: "Force password change on next sign-in with mfa", + Destination: &a.PasswordProfile.ForceChangePasswordNextSignInWithMfa, + }, + } +} + +// AddAccountWithConfig applies create command flags to cfg +func AddAccountWithConfig(cfg *config.Config, a *accounts.Account) []cli.Flag { + if a.PasswordProfile == nil { + a.PasswordProfile = &accounts.PasswordProfile{} + } + + return []cli.Flag{ + &cli.StringFlag{ + Name: "grpc-namespace", + Value: "com.owncloud.api", + Usage: "Set the base namespace for the grpc namespace", + EnvVars: []string{"ACCOUNTS_GRPC_NAMESPACE"}, + Destination: &cfg.GRPC.Namespace, + }, + &cli.StringFlag{ + Name: "name", + Value: "accounts", + Usage: "service name", + EnvVars: []string{"ACCOUNTS_NAME"}, + Destination: &cfg.Server.Name, + }, + &cli.BoolFlag{ + Name: "enabled", + Usage: "Enable the account", + Destination: &a.AccountEnabled, + }, + &cli.StringFlag{ + Name: "displayname", + Usage: "Set the displayname for the account", + Destination: &a.DisplayName, + }, + &cli.StringFlag{ + Name: "username", + Usage: "Username will be written to preferred-name and on_premises_sam_account_name", + }, + &cli.StringFlag{ + Name: "preferred-name", + Usage: "Set the preferred-name for the account", + Destination: &a.PreferredName, + }, + &cli.StringFlag{ + Name: "on-premises-sam-account-name", + Usage: "Set the on-premises-sam-account-name", + Destination: &a.OnPremisesSamAccountName, + }, + &cli.Int64Flag{ + Name: "uidnumber", + Usage: "Set the uidnumber for the account", + Destination: &a.UidNumber, + }, + &cli.Int64Flag{ + Name: "gidnumber", + Usage: "Set the gidnumber for the account", + Destination: &a.GidNumber, + }, + &cli.StringFlag{ + Name: "mail", + Usage: "Set the mail for the account", + Destination: &a.Mail, + }, + &cli.StringFlag{ + Name: "description", + Usage: "Set the description for the account", + Destination: &a.Description, + }, + &cli.StringFlag{ + Name: "password", + Usage: "Set the password for the account", + Destination: &a.PasswordProfile.Password, + // TODO read password from ENV? + }, + &cli.StringSliceFlag{ + Name: "password-policies", + Usage: "Possible policies: DisableStrongPassword, DisablePasswordExpiration", + }, + &cli.BoolFlag{ + Name: "force-password-change", + Usage: "Force password change on next sign-in", + Destination: &a.PasswordProfile.ForceChangePasswordNextSignIn, + }, + &cli.BoolFlag{ + Name: "force-password-change-mfa", + Usage: "Force password change on next sign-in with mfa", + Destination: &a.PasswordProfile.ForceChangePasswordNextSignInWithMfa, + }, + } +} + +// ListAccountsWithConfig applies list command flags to cfg +func ListAccountsWithConfig(cfg *config.Config) []cli.Flag { + return []cli.Flag{ + &cli.StringFlag{ + Name: "grpc-namespace", + Value: "com.owncloud.api", + Usage: "Set the base namespace for the grpc namespace", + EnvVars: []string{"ACCOUNTS_GRPC_NAMESPACE"}, + Destination: &cfg.GRPC.Namespace, + }, + &cli.StringFlag{ + Name: "name", + Value: "accounts", + Usage: "service name", + EnvVars: []string{"ACCOUNTS_NAME"}, + Destination: &cfg.Server.Name, + }, + } +} + +// RemoveAccountWithConfig applies remove command flags to cfg +func RemoveAccountWithConfig(cfg *config.Config) []cli.Flag { + return []cli.Flag{ + &cli.StringFlag{ + Name: "grpc-namespace", + Value: "com.owncloud.api", + Usage: "Set the base namespace for the grpc namespace", + EnvVars: []string{"ACCOUNTS_GRPC_NAMESPACE"}, + Destination: &cfg.GRPC.Namespace, + }, + &cli.StringFlag{ + Name: "name", + Value: "accounts", + Usage: "service name", + EnvVars: []string{"ACCOUNTS_NAME"}, + Destination: &cfg.Server.Name, + }, + } +} + +// InspectAccountWithConfig applies inspect command flags to cfg +func InspectAccountWithConfig(cfg *config.Config) []cli.Flag { + return []cli.Flag{ + &cli.StringFlag{ + Name: "grpc-namespace", + Value: "com.owncloud.api", + Usage: "Set the base namespace for the grpc namespace", + EnvVars: []string{"ACCOUNTS_GRPC_NAMESPACE"}, + Destination: &cfg.GRPC.Namespace, + }, + &cli.StringFlag{ + Name: "name", + Value: "accounts", + Usage: "service name", + EnvVars: []string{"ACCOUNTS_NAME"}, + Destination: &cfg.Server.Name, + }, + } +} diff --git a/pkg/proto/v0/accounts.pb.micro_test.go b/pkg/proto/v0/accounts.pb.micro_test.go index fa9482095b..7304f5e3e5 100644 --- a/pkg/proto/v0/accounts.pb.micro_test.go +++ b/pkg/proto/v0/accounts.pb.micro_test.go @@ -2,7 +2,10 @@ package proto_test import ( context "context" + "errors" "fmt" + "google.golang.org/genproto/protobuf/field_mask" + "google.golang.org/protobuf/types/known/timestamppb" "log" "os" "path/filepath" @@ -17,6 +20,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/golang/protobuf/ptypes/empty" + merrors "github.com/micro/go-micro/v2/errors" ) var service = grpc.Service{} @@ -949,3 +953,55 @@ func TestListMembersEmptyGroup(t *testing.T) { cleanUp(t) } + +func TestAccountUpdateMask(t *testing.T) { + createAccount(t, "user1") + user1 := getAccount("user1") + client := service.Client() + req := &proto.UpdateAccountRequest{ + // We only want to update the display-name, rest should be ignored + UpdateMask: &field_mask.FieldMask{Paths: []string{"DisplayName"}}, + Account: &proto.Account{ + Id: user1.Id, + DisplayName: "ShouldBeUpdated", + PreferredName: "ShouldStaySame", + }} + + cl := proto.NewAccountsService("com.owncloud.api.accounts", client) + res, err := cl.UpdateAccount(context.Background(), req) + checkError(t, err) + + assert.Equal(t, "ShouldBeUpdated", res.DisplayName) + assert.Equal(t, user1.PreferredName, res.PreferredName) + + cleanUp(t) +} + +func TestAccountUpdateReadOnlyField(t *testing.T) { + createAccount(t, "user1") + user1 := getAccount("user1") + client := service.Client() + req := &proto.UpdateAccountRequest{ + // We only want to update the display-name, rest should be ignored + UpdateMask: &field_mask.FieldMask{Paths: []string{"CreatedDateTime"}}, + Account: &proto.Account{ + Id: user1.Id, + CreatedDateTime: timestamppb.Now(), + }} + + cl := proto.NewAccountsService("com.owncloud.api.accounts", client) + res, err := cl.UpdateAccount(context.Background(), req) + assert.Nil(t, res) + assert.Error(t, err) + + var e *merrors.Error + + if errors.As(err, &e) { + assert.EqualValues(t, 400, e.Code) + assert.Equal(t, "Bad Request", e.Status) + } else { + t.Fatal("Unexpected error type") + } + + cleanUp(t) +} diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 5e36b2ec5d..6e368ce9ec 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -4,6 +4,9 @@ import ( "context" "encoding/json" "fmt" + fieldmask_utils "github.com/mennanov/fieldmask-utils" + "github.com/rs/zerolog" + "google.golang.org/genproto/protobuf/field_mask" "io/ioutil" "os" "path/filepath" @@ -28,7 +31,6 @@ import ( ) func (s Service) indexAccounts(path string) (err error) { - var f *os.File if f, err = os.Open(path); err != nil { s.log.Error().Err(err).Str("dir", path).Msg("could not open accounts folder") @@ -81,14 +83,6 @@ func (s Service) loadAccount(id string, a *proto.Account) (err error) { return } -// loggableAccount redacts the password from the account -func loggableAccount(a *proto.Account) *proto.Account { - if a != nil && a.PasswordProfile != nil { - a.PasswordProfile.Password = "***REMOVED***" - } - return a -} - func (s Service) writeAccount(a *proto.Account) (err error) { // leave only the group id @@ -207,7 +201,6 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest out.Accounts = make([]*proto.Account, 0) for _, hit := range searchResult.Hits { - a := &proto.Account{} if err = s.loadAccount(hit.ID, a); err != nil { s.log.Error().Err(err).Str("account", hit.ID).Msg("could not load account, skipping") @@ -217,11 +210,12 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest if a.PasswordProfile != nil { currentHash = a.PasswordProfile.Password } - s.log.Debug().Interface("account", loggableAccount(a)).Msg("found account") + + s.debugLogAccount(a).Msg("found account") if password != "" { if a.PasswordProfile == nil { - s.log.Debug().Interface("account", loggableAccount(a)).Msg("no password profile") + s.debugLogAccount(a).Msg("no password profile") return merrors.Unauthorized(s.id, "invalid password") } if !s.passwordIsValid(currentHash, password) { @@ -233,7 +227,6 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest s.expandMemberOf(a) // remove password before returning - if a.PasswordProfile != nil { a.PasswordProfile.Password = "" } @@ -255,7 +248,8 @@ func (s Service) GetAccount(c context.Context, in *proto.GetAccountRequest, out s.log.Error().Err(err).Str("id", id).Msg("could not load account") return } - s.log.Debug().Interface("account", loggableAccount(out)).Msg("found account") + + s.debugLogAccount(out).Msg("found account") // TODO add groups if requested // if in.FieldMask ... @@ -272,40 +266,48 @@ func (s Service) GetAccount(c context.Context, in *proto.GetAccountRequest, out // CreateAccount implements the AccountsServiceHandler interface func (s Service) CreateAccount(c context.Context, in *proto.CreateAccountRequest, out *proto.Account) (err error) { var id string - if in.Account == nil { + var acc = in.Account + if acc == nil { return merrors.BadRequest(s.id, "account missing") } - if in.Account.Id == "" { - in.Account.Id = uuid.Must(uuid.NewV4()).String() + if acc.Id == "" { + acc.Id = uuid.Must(uuid.NewV4()).String() } - if !s.isValidUsername(in.Account.PreferredName) { - return merrors.BadRequest(s.id, "preferred_name '%s' must be at least the local part of an email", in.Account.PreferredName) + if !s.isValidUsername(acc.PreferredName) { + return merrors.BadRequest(s.id, "preferred_name '%s' must be at least the local part of an email", acc.PreferredName) } - if !s.isValidEmail(in.Account.Mail) { - return merrors.BadRequest(s.id, "mail '%s' must be a valid email", in.Account.Mail) + if !s.isValidEmail(acc.Mail) { + return merrors.BadRequest(s.id, "mail '%s' must be a valid email", acc.Mail) } - if id, err = cleanupID(in.Account.Id); err != nil { + if id, err = cleanupID(acc.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) } - if in.Account.PasswordProfile != nil && in.Account.PasswordProfile.Password != "" { - // encrypt password - c := crypt.New(crypt.SHA512) - if in.Account.PasswordProfile.Password, err = c.Generate([]byte(in.Account.PasswordProfile.Password), nil); err != nil { - s.log.Error().Err(err).Str("id", id).Interface("account", loggableAccount(in.Account)).Msg("could not hash password") - return merrors.InternalServerError(s.id, "could not hash password: %v", err.Error()) + if acc.PasswordProfile != nil { + if acc.PasswordProfile.Password != "" { + // encrypt password + c := crypt.New(crypt.SHA512) + if acc.PasswordProfile.Password, err = c.Generate([]byte(acc.PasswordProfile.Password), nil); err != nil { + s.log.Error().Err(err).Str("id", id).Msg("could not hash password") + return merrors.InternalServerError(s.id, "could not hash password: %v", err.Error()) + } + } + + if err := passwordPoliciesValid(acc.PasswordProfile.PasswordPolicies); err != nil { + return merrors.BadRequest(s.id, "%s", err) } } // extract group id // TODO groups should be ignored during create, use groups.AddMember? return error? - if err = s.writeAccount(in.Account); err != nil { - s.log.Error().Err(err).Interface("account", loggableAccount(in.Account)).Msg("could not persist new account") + if err = s.writeAccount(acc); err != nil { + s.log.Error().Err(err).Str("id", id).Msg("could not persist new account") + s.debugLogAccount(acc).Msg("could not persist new account") return } - if err = s.indexAccount(in.Account.Id); err != nil { + if err = s.indexAccount(acc.Id); err != nil { return merrors.InternalServerError(s.id, "could not index new account: %v", err.Error()) } @@ -323,23 +325,19 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest if in.Account.Id == "" { return merrors.BadRequest(s.id, "account id missing") } - if !s.isValidUsername(in.Account.PreferredName) { - return merrors.BadRequest(s.id, "preferred_name '%s' must be at least the local part of an email", in.Account.PreferredName) - } - if !s.isValidEmail(in.Account.Mail) { - return merrors.BadRequest(s.id, "mail '%s' must be a valid email", in.Account.Mail) - } if id, err = cleanupID(in.Account.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) } + path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) if err = s.loadAccount(id, out); err != nil { s.log.Error().Err(err).Str("id", id).Msg("could not load account") return } - s.log.Debug().Interface("account", loggableAccount(out)).Msg("found account") + + s.debugLogAccount(out).Msg("found account") t := time.Now() tsnow := ×tamppb.Timestamp{ @@ -347,17 +345,14 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest Nanos: int32(t.Nanosecond()), } - // id read-only - out.AccountEnabled = in.Account.AccountEnabled - out.IsResourceAccount = in.Account.IsResourceAccount - // creation-type read only - out.Identities = in.Account.Identities - out.DisplayName = in.Account.DisplayName - out.PreferredName = in.Account.PreferredName - out.UidNumber = in.Account.UidNumber - out.GidNumber = in.Account.GidNumber - out.Mail = in.Account.Mail // read only? - out.Description = in.Account.Description + validMask, err := validateUpdate(in.UpdateMask, updatableAccountPaths) + if err != nil { + return merrors.BadRequest(s.id, "%s", err) + } + + if err := fieldmask_utils.StructToStruct(validMask, in.Account, out); err != nil { + return merrors.InternalServerError(s.id, "%s", err) + } if in.Account.PasswordProfile != nil { if out.PasswordProfile == nil { @@ -367,39 +362,39 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest // encrypt password c := crypt.New(crypt.SHA512) if out.PasswordProfile.Password, err = c.Generate([]byte(in.Account.PasswordProfile.Password), nil); err != nil { - s.log.Error().Err(err).Str("id", id).Interface("account", loggableAccount(in.Account)).Msg("could not hash password") + in.Account.PasswordProfile.Password = "" + s.log.Error().Err(err).Str("id", id).Msg("could not hash password") return merrors.InternalServerError(s.id, "could not hash password: %v", err.Error()) } + + in.Account.PasswordProfile.Password = "" } + + if err := passwordPoliciesValid(in.Account.PasswordProfile.PasswordPolicies); err != nil { + return merrors.BadRequest(s.id, "%s", err) + } + // lastPasswordChangeDateTime calculated, see password - out.PasswordProfile.PasswordPolicies = in.Account.PasswordProfile.PasswordPolicies - out.PasswordProfile.ForceChangePasswordNextSignIn = in.Account.PasswordProfile.ForceChangePasswordNextSignIn - out.PasswordProfile.ForceChangePasswordNextSignInWithMfa = in.Account.PasswordProfile.ForceChangePasswordNextSignInWithMfa out.PasswordProfile.LastPasswordChangeDateTime = tsnow } - // memberOf read only - // createdDateTime read only - // deleteDateTime read only + // out.RefreshTokensValidFromDateTime TODO use to invalidate all existing sessions + // out.SignInSessionsValidFromDateTime TODO use to invalidate all existing sessions - out.OnPremisesSyncEnabled = in.Account.OnPremisesSyncEnabled - out.OnPremisesSamAccountName = in.Account.OnPremisesSamAccountName // ... TODO on prem for sync if out.ExternalUserState != in.Account.ExternalUserState { out.ExternalUserState = in.Account.ExternalUserState out.ExternalUserStateChangeDateTime = tsnow } - // out.RefreshTokensValidFromDateTime TODO use to invalidate all existing sessions - // out.SignInSessionsValidFromDateTime TODO use to invalidate all existing sessions if err = s.writeAccount(out); err != nil { - s.log.Error().Err(err).Interface("account", loggableAccount(out)).Msg("could not persist updated account") + s.log.Error().Err(err).Str("id", out.Id).Msg("could not persist updated account") return } if err = s.indexAccount(id); err != nil { - s.log.Error().Err(err).Str("id", id).Str("path", path).Interface("account", loggableAccount(out)).Msg("could not index new account") + s.log.Error().Err(err).Str("id", id).Str("path", path).Msg("could not index new account") return merrors.InternalServerError(s.id, "could not index updated account: %v", err.Error()) } @@ -411,6 +406,25 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest return } +// whitelist of all paths/fields which can be updated by clients +var updatableAccountPaths = map[string]struct{}{ + "AccountEnabled": {}, + "IsResourceAccount": {}, + "Identities": {}, + "DisplayName": {}, + "PreferredName": {}, + "UidNumber": {}, + "GidNumber": {}, + "Description": {}, + "Mail": {}, // read only?, + "PasswordProfile.Password": {}, + "PasswordProfile.PasswordPolicies": {}, + "PasswordProfile.ForceChangePasswordNextSignIn": {}, + "PasswordProfile.ForceChangePasswordNextSignInWithMfa": {}, + "OnPremisesSyncEnabled": {}, + "OnPremisesSamAccountName": {}, +} + // DeleteAccount implements the AccountsServiceHandler interface func (s Service) DeleteAccount(c context.Context, in *proto.DeleteAccountRequest, out *empty.Empty) (err error) { var id string @@ -471,3 +485,72 @@ func (s Service) isValidEmail(e string) bool { } return emailRegex.MatchString(e) } + +const ( + policyDisableStrongPassword = "DisableStrongPassword" + policyDisablePasswordExpiration = "DisablePasswordExpiration" +) + +func passwordPoliciesValid(policies []string) error { + for _, v := range policies { + if v != policyDisableStrongPassword && v != policyDisablePasswordExpiration { + return fmt.Errorf("invalid password-policy %s", v) + } + } + + return nil +} + +// validateUpdate takes a update field-mask and validates it against a whitelist of updatable paths. +// Returns a FieldFilter on success which can be passed to the fieldmask_utils..StructToStruct. An error is returned +// if the mask tries to update no whitelisted fields. +// +// Given an empty or nil mask we assume that the client wants to update all whitelisted fields. +// +func validateUpdate(mask *field_mask.FieldMask, updatablePaths map[string]struct{}) (fieldmask_utils.FieldFilterContainer, error) { + nop := func(s string) string { return s } + // Assume that the client wants to update all updatable path if + // no field-mask is given, so we create a mask with all paths + if mask == nil || len(mask.Paths) == 0 { + paths := make([]string, 0, len(updatablePaths)) + for fieldName := range updatablePaths { + paths = append(paths, fieldName) + } + + return fieldmask_utils.MaskFromPaths(paths, nop) + } + + // Check that only allowed fields are updated + for _, v := range mask.Paths { + if _, ok := updatablePaths[v]; !ok { + return nil, fmt.Errorf("can not update field %s, either unknown or readonly", v) + } + } + + return fieldmask_utils.MaskFromPaths(mask.Paths, nop) +} + +// debugLogAccount returns a debug-log event with detailed account-info, and filtered password data +func (s Service) debugLogAccount(a *proto.Account) *zerolog.Event { + return s.log.Debug().Fields(map[string]interface{}{ + "Id": a.Id, + "Mail": a.Mail, + "DisplayName": a.DisplayName, + "AccountEnabled": a.AccountEnabled, + "IsResourceAccount": a.IsResourceAccount, + "Identities": a.Identities, + "PreferredName": a.PreferredName, + "UidNumber": a.UidNumber, + "GidNumber": a.GidNumber, + "Description": a.Description, + "OnPremisesSyncEnabled": a.OnPremisesSyncEnabled, + "OnPremisesSamAccountName": a.OnPremisesSamAccountName, + "OnPremisesUserPrincipalName": a.OnPremisesUserPrincipalName, + "OnPremisesSecurityIdentifier": a.OnPremisesSecurityIdentifier, + "OnPremisesDistinguishedName": a.OnPremisesDistinguishedName, + "OnPremisesLastSyncDateTime": a.OnPremisesLastSyncDateTime, + "MemberOf": a.MemberOf, + "CreatedDateTime": a.CreatedDateTime, + "DeletedDateTime": a.DeletedDateTime, + }) +} From 6816703df41d4c15f26255d1a12375f4d4b46992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 27 Jul 2020 19:52:15 +0000 Subject: [PATCH 223/407] Automated changelog update [skip ci] --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 229bf04534..fe8ab2f818 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ The following sections list the changes in ocis-accounts unreleased. * Change - Pass around the correct logger throughout the code: [#41](https://github.com/owncloud/ocis-accounts/issues/41) * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) * Change - Tighten screws on usernames and email addresses: [#65](https://github.com/owncloud/ocis-accounts/pull/65) +* Enhancement - Add early version of cli tools for user-management: [#69](https://github.com/owncloud/ocis-accounts/pull/69) * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) * Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) @@ -122,6 +123,23 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/65 +* Enhancement - Add early version of cli tools for user-management: [#69](https://github.com/owncloud/ocis-accounts/pull/69) + + Following commands are available: + + List, ls List existing accounts add, create, Create a new account update Make changes to an + existing account remove, rm Removes an existing account inspect Show detailed data on an + existing account + + See --help for details. + + Note that not all account-attributes have an effect yet. This is due to ocis being in an early + development stage. + + https://github.com/owncloud/product/issues/115 + https://github.com/owncloud/ocis-accounts/pull/69 + + * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) We updated the api to allow fetching users not onyl by UUID, but also by identity (OpenID issuer From c717105a49f173c47ebbdf7038a48a6d5d97c897 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 28 Jul 2020 16:28:17 +0200 Subject: [PATCH 224/407] override out with acc --- pkg/service/v0/accounts.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 6e368ce9ec..1afedabbe8 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -4,15 +4,16 @@ import ( "context" "encoding/json" "fmt" - fieldmask_utils "github.com/mennanov/fieldmask-utils" - "github.com/rs/zerolog" - "google.golang.org/genproto/protobuf/field_mask" "io/ioutil" "os" "path/filepath" "regexp" "time" + fieldmask_utils "github.com/mennanov/fieldmask-utils" + "github.com/rs/zerolog" + "google.golang.org/genproto/protobuf/field_mask" + "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" "github.com/gofrs/uuid" @@ -311,6 +312,14 @@ func (s Service) CreateAccount(c context.Context, in *proto.CreateAccountRequest return merrors.InternalServerError(s.id, "could not index new account: %v", err.Error()) } + s.log.Debug().Interface("account", acc).Msg("account after indexing") + + if acc.PasswordProfile != nil { + acc.PasswordProfile.Password = "" + } + + *out = *acc + return } From 0d03cee6f299ca9332868b2658481749507ced65 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 28 Jul 2020 16:29:45 +0200 Subject: [PATCH 225/407] add changelog --- changelog/unreleased/fix-update.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/unreleased/fix-update.md diff --git a/changelog/unreleased/fix-update.md b/changelog/unreleased/fix-update.md new file mode 100644 index 0000000000..ff652259ed --- /dev/null +++ b/changelog/unreleased/fix-update.md @@ -0,0 +1,5 @@ +Bugfix: Update account return value not used + +In order to return a value using the micro go code we need to override the `out` value. + +https://github.com/owncloud/ocis-accounts/pull/70 From b6ab351c0b944ed6dc9fa083a207550c0da0558e Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Tue, 28 Jul 2020 16:58:17 +0200 Subject: [PATCH 226/407] make go vet happy --- pkg/service/v0/accounts.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 1afedabbe8..a72179451c 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -318,7 +318,14 @@ func (s Service) CreateAccount(c context.Context, in *proto.CreateAccountRequest acc.PasswordProfile.Password = "" } - *out = *acc + { + out.Id = acc.Id + out.Mail = acc.Mail + out.PreferredName = acc.PreferredName + out.AccountEnabled = acc.AccountEnabled + out.DisplayName = acc.DisplayName + out.OnPremisesSamAccountName = acc.OnPremisesSamAccountName + } return } From 82923da77e198e47ed6aa1c569ac213bf665d65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 29 Jul 2020 07:22:03 +0000 Subject: [PATCH 227/407] Automated changelog update [skip ci] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe8ab2f818..7b40263da0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The following sections list the changes in ocis-accounts unreleased. * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) * Bugfix - Use NewNumericRangeInclusiveQuery for numeric literals: [#28](https://github.com/owncloud/ocis-glauth/issues/28) * Bugfix - Prevent segfault when no password is set: [#65](https://github.com/owncloud/ocis-accounts/pull/65) +* Bugfix - Update account return value not used: [#70](https://github.com/owncloud/ocis-accounts/pull/70) * Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#64](https://github.com/owncloud/ocis-accounts/pull/64) * Change - Align structure of this extension with other extensions: [#51](https://github.com/owncloud/ocis-accounts/pull/51) * Change - Change api errors: [#11](https://github.com/owncloud/ocis-accounts/issues/11) @@ -56,6 +57,13 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/65 +* Bugfix - Update account return value not used: [#70](https://github.com/owncloud/ocis-accounts/pull/70) + + In order to return a value using the micro go code we need to override the `out` value. + + https://github.com/owncloud/ocis-accounts/pull/70 + + * Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#64](https://github.com/owncloud/ocis-accounts/pull/64) ARM builds were failing when built on alpine:edge, so we switched to alpine:latest instead. From 52c2781548c208090cc51c15f01e0942fe6c8972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 30 Jul 2020 08:49:03 +0200 Subject: [PATCH 228/407] Add write mutexes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/add-write-mutexes.md | 5 +++++ pkg/service/v0/accounts.go | 6 ++++++ pkg/service/v0/groups.go | 6 ++++++ 3 files changed, 17 insertions(+) create mode 100644 changelog/unreleased/add-write-mutexes.md diff --git a/changelog/unreleased/add-write-mutexes.md b/changelog/unreleased/add-write-mutexes.md new file mode 100644 index 0000000000..ec16003a1b --- /dev/null +++ b/changelog/unreleased/add-write-mutexes.md @@ -0,0 +1,5 @@ +Bugfix: Add write mutexes + +Concurrent account or groups writes would corrupt the json file on disk, because the different goroutines would be treated as a single thread from the os. We introduce a mutex for account and group file writes each. This locks the update frequency for all accounts/groups and could be further improved by using a concurrent map of mutexes with a mutex per account / group. PR welcome. + +https://github.com/owncloud/ocis-accounts/pull/71 \ No newline at end of file diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index a72179451c..6a3e8ec2c2 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -8,6 +8,7 @@ import ( "os" "path/filepath" "regexp" + "sync" "time" fieldmask_utils "github.com/mennanov/fieldmask-utils" @@ -84,6 +85,8 @@ func (s Service) loadAccount(id string, a *proto.Account) (err error) { return } +var accountMutex sync.Mutex + func (s Service) writeAccount(a *proto.Account) (err error) { // leave only the group id @@ -95,6 +98,9 @@ func (s Service) writeAccount(a *proto.Account) (err error) { } path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", a.Id) + + accountMutex.Lock() + defer accountMutex.Unlock() if err = ioutil.WriteFile(path, bytes, 0600); err != nil { return merrors.InternalServerError(s.id, "could not write account: %v", err.Error()) } diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 666d8608d6..150dc7d60e 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -6,6 +6,7 @@ import ( "io/ioutil" "os" "path/filepath" + "sync" "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" @@ -66,6 +67,8 @@ func (s Service) loadGroup(id string, g *proto.Group) (err error) { return } +var groupMutex sync.Mutex + func (s Service) writeGroup(g *proto.Group) (err error) { // leave only the member id @@ -77,6 +80,9 @@ func (s Service) writeGroup(g *proto.Group) (err error) { } path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", g.Id) + + groupMutex.Lock() + defer groupMutex.Unlock() if err = ioutil.WriteFile(path, bytes, 0600); err != nil { return merrors.InternalServerError(s.id, "could not write group: %v", err.Error()) } From 2cd1209d9f17a6884cbf3971642e203a9f319c11 Mon Sep 17 00:00:00 2001 From: Alex Unger Date: Thu, 30 Jul 2020 07:37:52 +0000 Subject: [PATCH 229/407] Automated changelog update [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b40263da0..a22521e93b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary +* Bugfix - Add write mutexes: [#71](https://github.com/owncloud/ocis-accounts/pull/71) * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) * Bugfix - Use NewNumericRangeInclusiveQuery for numeric literals: [#28](https://github.com/owncloud/ocis-glauth/issues/28) * Bugfix - Prevent segfault when no password is set: [#65](https://github.com/owncloud/ocis-accounts/pull/65) @@ -24,6 +25,17 @@ The following sections list the changes in ocis-accounts unreleased. ## Details +* Bugfix - Add write mutexes: [#71](https://github.com/owncloud/ocis-accounts/pull/71) + + Concurrent account or groups writes would corrupt the json file on disk, because the different + goroutines would be treated as a single thread from the os. We introduce a mutex for account and + group file writes each. This locks the update frequency for all accounts/groups and could be + further improved by using a concurrent map of mutexes with a mutex per account / group. PR + welcome. + + https://github.com/owncloud/ocis-accounts/pull/71 + + * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) We've fixed a bug in deleting the groups. From 4074565a6b8197e153a6a3c29c46854c160c5e03 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 30 Jul 2020 10:06:29 +0200 Subject: [PATCH 230/407] use global mutex --- pkg/service/v0/accounts.go | 9 +++++---- pkg/service/v0/groups.go | 7 ++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 6a3e8ec2c2..f8a8f28c3b 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -32,6 +32,9 @@ import ( _ "github.com/tredoe/osutil/user/crypt/sha512_crypt" ) +// M synchronizes access to account files to readers and writers +var M sync.RWMutex + func (s Service) indexAccounts(path string) (err error) { var f *os.File if f, err = os.Open(path); err != nil { @@ -85,8 +88,6 @@ func (s Service) loadAccount(id string, a *proto.Account) (err error) { return } -var accountMutex sync.Mutex - func (s Service) writeAccount(a *proto.Account) (err error) { // leave only the group id @@ -99,8 +100,8 @@ func (s Service) writeAccount(a *proto.Account) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", a.Id) - accountMutex.Lock() - defer accountMutex.Unlock() + M.Lock() + defer M.Unlock() if err = ioutil.WriteFile(path, bytes, 0600); err != nil { return merrors.InternalServerError(s.id, "could not write account: %v", err.Error()) } diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 150dc7d60e..5d8b887111 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -6,7 +6,6 @@ import ( "io/ioutil" "os" "path/filepath" - "sync" "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" @@ -67,8 +66,6 @@ func (s Service) loadGroup(id string, g *proto.Group) (err error) { return } -var groupMutex sync.Mutex - func (s Service) writeGroup(g *proto.Group) (err error) { // leave only the member id @@ -81,8 +78,8 @@ func (s Service) writeGroup(g *proto.Group) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", g.Id) - groupMutex.Lock() - defer groupMutex.Unlock() + M.Lock() + defer M.Unlock() if err = ioutil.WriteFile(path, bytes, 0600); err != nil { return merrors.InternalServerError(s.id, "could not write group: %v", err.Error()) } From c432f296ebbebf4c23ae80c4fac1d25baef29414 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 30 Jul 2020 10:10:52 +0200 Subject: [PATCH 231/407] set lock on read --- pkg/service/v0/accounts.go | 11 +++++++---- pkg/service/v0/groups.go | 10 ++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index f8a8f28c3b..18d042997d 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -32,8 +32,8 @@ import ( _ "github.com/tredoe/osutil/user/crypt/sha512_crypt" ) -// M synchronizes access to account files to readers and writers -var M sync.RWMutex +// accLock mutually exclude readers from writers on account files +var accLock sync.RWMutex func (s Service) indexAccounts(path string) (err error) { var f *os.File @@ -77,6 +77,9 @@ var authQuery = regexp.MustCompile(`^login eq '(.*)' and password eq '(.*)'$`) / func (s Service) loadAccount(id string, a *proto.Account) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) + accLock.Lock() + defer accLock.Unlock() + var data []byte if data, err = ioutil.ReadFile(path); err != nil { return merrors.NotFound(s.id, "could not read account: %v", err.Error()) @@ -100,8 +103,8 @@ func (s Service) writeAccount(a *proto.Account) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", a.Id) - M.Lock() - defer M.Unlock() + accLock.Lock() + defer accLock.Unlock() if err = ioutil.WriteFile(path, bytes, 0600); err != nil { return merrors.InternalServerError(s.id, "could not write account: %v", err.Error()) } diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 5d8b887111..63ca4a0c06 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -6,6 +6,7 @@ import ( "io/ioutil" "os" "path/filepath" + "sync" "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" @@ -35,6 +36,9 @@ func (s Service) indexGroups(path string) (err error) { return } +// accLock mutually exclude readers from writers on group files +var groupLock sync.RWMutex + func (s Service) indexGroup(id string) error { g := &proto.BleveGroup{ BleveType: "group", @@ -54,6 +58,8 @@ func (s Service) indexGroup(id string) error { func (s Service) loadGroup(id string, g *proto.Group) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) + groupLock.Lock() + defer groupLock.Unlock() var data []byte if data, err = ioutil.ReadFile(path); err != nil { return merrors.NotFound(s.id, "could not read group: %v", err.Error()) @@ -78,8 +84,8 @@ func (s Service) writeGroup(g *proto.Group) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", g.Id) - M.Lock() - defer M.Unlock() + groupLock.Lock() + defer groupLock.Unlock() if err = ioutil.WriteFile(path, bytes, 0600); err != nil { return merrors.InternalServerError(s.id, "could not write group: %v", err.Error()) } From 20a577dc1589ff543baf6afc2138ef62fc911f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 31 Jul 2020 11:25:57 +0200 Subject: [PATCH 232/407] fix index mapping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/fix-index-mapping.md | 5 +++ pkg/provider/bleve.go | 24 ++++++++--- pkg/service/v0/accounts.go | 5 ++- pkg/service/v0/groups.go | 5 ++- pkg/service/v0/service.go | 51 +++++++++++++++++++---- 5 files changed, 74 insertions(+), 16 deletions(-) create mode 100644 changelog/unreleased/fix-index-mapping.md diff --git a/changelog/unreleased/fix-index-mapping.md b/changelog/unreleased/fix-index-mapping.md new file mode 100644 index 0000000000..36e3530939 --- /dev/null +++ b/changelog/unreleased/fix-index-mapping.md @@ -0,0 +1,5 @@ +Enhancement: Add simple user listing UI + +We added an extension for ocis-web that shows a simple list of all existing users. + +https://github.com/owncloud/ocis-accounts/pull/51 diff --git a/pkg/provider/bleve.go b/pkg/provider/bleve.go index 0fc03fcc4e..8dcb7df969 100644 --- a/pkg/provider/bleve.go +++ b/pkg/provider/bleve.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/CiscoM31/godata" "github.com/blevesearch/bleve" @@ -35,9 +36,11 @@ func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { if n.Children[1].Token.Type != godata.FilterTokenString { return nil, errors.New("startswith expected a string as the second param") } - q := bleve.NewTermQuery(n.Children[1].Token.Value) + q := bleve.NewPrefixQuery(n.Children[1].Token.Value) q.SetField(n.Children[0].Token.Value) return q, nil + // TODO contains as regex? + // TODO endswith as regex? default: return nil, godata.NotImplementedError(n.Token.Value + " is not implemented.") } @@ -52,11 +55,20 @@ func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { return nil, errors.New("equality expected a literal on the lhs") } if n.Children[1].Token.Type == godata.FilterTokenString { - // string tokens are enclosed with 'some string' - // ' is escaped as '' - // TODO unescape '' as ' - // http://docs.oasis-open.org/odata/odata/v4.01/cs01/part2-url-conventions/odata-v4.01-cs01-part2-url-conventions.html#sec_URLComponents - q := bleve.NewTermQuery(n.Children[1].Token.Value[1 : len(n.Children[1].Token.Value)-1]) + // for escape rules see http://docs.oasis-open.org/odata/odata/v4.01/cs01/part2-url-conventions/odata-v4.01-cs01-part2-url-conventions.html#sec_URLComponents + // remove enclosing ' of string tokens (looks like 'some ol'' string') + value := n.Children[1].Token.Value[1 : len(n.Children[1].Token.Value)-1] + // unescape '' as ' + unascaped := strings.ReplaceAll(value, "''", "'") + // use a match query, so the field mapping, e.g. lowercase is applied to the value + // remember we defined the field mapping for `preferred_name` to be lowercase + // a term query like `preferred_name eq 'Artur'` would use `Artur` to search in the index and come up empty + // a match query will apply the field mapping (lowercasing `Artur` to `artur`) before doing the search + // TODO there is a mismatch between the LDAP and odata filters: + // - LDAP matching rules depend on the attribute: see https://ldapwiki.com/wiki/MatchingRule + // - odata has functions like `startswith`, `contains`, `tolower`, `toupper`, `matchesPattern` andy more: see http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_BuiltinQueryFunctions + // - ocis-glauth should do the mapping between LDAP and odata filter + q := bleve.NewMatchQuery(unascaped) q.SetField(n.Children[0].Token.Value) return q, nil } else if n.Children[1].Token.Type == godata.FilterTokenInteger { diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 18d042997d..4ebd7ddfb8 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -48,7 +48,10 @@ func (s Service) indexAccounts(path string) (err error) { return } for _, file := range list { - _ = s.indexAccount(file.Name()) + err = s.indexAccount(file.Name()) + if err != nil { + s.log.Error().Err(err).Str("file", file.Name()).Msg("could not index account") + } } return diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 63ca4a0c06..cbfee00fd2 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -30,7 +30,10 @@ func (s Service) indexGroups(path string) (err error) { return } for _, file := range list { - _ = s.indexGroup(file.Name()) + err = s.indexGroup(file.Name()) + if err != nil { + s.log.Error().Err(err).Str("file", file.Name()).Msg("could not index account") + } } return diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 365a9b49c8..26604507fa 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -10,8 +10,13 @@ import ( "strings" "github.com/blevesearch/bleve" + "github.com/blevesearch/bleve/analysis/analyzer/custom" "github.com/blevesearch/bleve/analysis/analyzer/keyword" "github.com/blevesearch/bleve/analysis/analyzer/simple" + "github.com/blevesearch/bleve/analysis/analyzer/standard" + "github.com/blevesearch/bleve/analysis/token/lowercase" + "github.com/blevesearch/bleve/analysis/tokenizer/unicode" + "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/proto/v0" "github.com/owncloud/ocis-pkg/v2/log" @@ -213,9 +218,11 @@ func New(opts ...Option) (s *Service, err error) { // keep all symbols in terms to allow exact maching, eg. emails indexMapping.DefaultAnalyzer = keyword.Name // TODO don't bother to store fields as we will load the account from disk - //groupsFieldMapping := bleve.NewTextFieldMapping() - //blogMapping.AddFieldMappingsAt("memberOf", nameFieldMapping) - // TODO index groups and accounts as different types! + + // Reusable mapping for text + standardTextFieldMapping := bleve.NewTextFieldMapping() + standardTextFieldMapping.Analyzer = standard.Name + standardTextFieldMapping.Store = false // Reusable mapping for text, uses english stop word removal simpleTextFieldMapping := bleve.NewTextFieldMapping() @@ -227,13 +234,33 @@ func New(opts ...Option) (s *Service, err error) { keywordFieldMapping.Analyzer = keyword.Name keywordFieldMapping.Store = false + // Reusable mapping for lowercase text + err = indexMapping.AddCustomAnalyzer("lowercase", + map[string]interface{}{ + "type": custom.Name, + "tokenizer": unicode.Name, + "token_filters": []string{ + lowercase.Name, + }, + }) + if err != nil { + return nil, err + } + lowercaseTextFieldMapping := bleve.NewTextFieldMapping() + lowercaseTextFieldMapping.Analyzer = "lowercase" + lowercaseTextFieldMapping.Store = true + // accounts accountMapping := bleve.NewDocumentMapping() indexMapping.AddDocumentMapping("account", accountMapping) // Text - accountMapping.AddFieldMappingsAt("display_name", simpleTextFieldMapping) - accountMapping.AddFieldMappingsAt("description", simpleTextFieldMapping) + accountMapping.AddFieldMappingsAt("display_name", standardTextFieldMapping) + accountMapping.AddFieldMappingsAt("description", standardTextFieldMapping) + + // Lowercase + accountMapping.AddFieldMappingsAt("on_premises_sam_account_name", lowercaseTextFieldMapping) + accountMapping.AddFieldMappingsAt("preferred_name", lowercaseTextFieldMapping) // Keywords accountMapping.AddFieldMappingsAt("mail", keywordFieldMapping) @@ -243,10 +270,18 @@ func New(opts ...Option) (s *Service, err error) { indexMapping.AddDocumentMapping("group", groupMapping) // Text - groupMapping.AddFieldMappingsAt("display_name", simpleTextFieldMapping) - groupMapping.AddFieldMappingsAt("description", simpleTextFieldMapping) + groupMapping.AddFieldMappingsAt("display_name", standardTextFieldMapping) + groupMapping.AddFieldMappingsAt("description", standardTextFieldMapping) - indexMapping.TypeField = "bleve_type" + // Lowercase + groupMapping.AddFieldMappingsAt("on_premises_sam_account_name", lowercaseTextFieldMapping) + + // Tell blevesearch how to determine the type of the structs that are indexed. + // The referenced field needs to match the struct field exactly and it must be public. + // See pkg/proto/v0/bleve.go how we wrap the generated Account and Group to add a + // BleveType property which is indexed as `bleve_type` so we can also distinguish the + // documents in the index by querying for that property. + indexMapping.TypeField = "BleveType" s = &Service{ id: cfg.GRPC.Namespace + "." + cfg.Server.Name, From e7082d3647910d09782024ec93aa147635058a91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 31 Jul 2020 10:03:49 +0000 Subject: [PATCH 233/407] Automated changelog update [skip ci] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a22521e93b..9ad87d2490 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The following sections list the changes in ocis-accounts unreleased. * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) * Change - Tighten screws on usernames and email addresses: [#65](https://github.com/owncloud/ocis-accounts/pull/65) * Enhancement - Add early version of cli tools for user-management: [#69](https://github.com/owncloud/ocis-accounts/pull/69) +* Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) * Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) @@ -160,6 +161,13 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/69 +* Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) + + We added an extension for ocis-web that shows a simple list of all existing users. + + https://github.com/owncloud/ocis-accounts/pull/51 + + * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) We updated the api to allow fetching users not onyl by UUID, but also by identity (OpenID issuer From 22218b3d290b4dbe3af9a55de821a638d6c9a51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 31 Jul 2020 13:48:22 +0200 Subject: [PATCH 234/407] Update fix-index-mapping.md we --- changelog/unreleased/fix-index-mapping.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/changelog/unreleased/fix-index-mapping.md b/changelog/unreleased/fix-index-mapping.md index 36e3530939..aff6ada100 100644 --- a/changelog/unreleased/fix-index-mapping.md +++ b/changelog/unreleased/fix-index-mapping.md @@ -1,5 +1,5 @@ -Enhancement: Add simple user listing UI +Bugfix: Fix index mapping -We added an extension for ocis-web that shows a simple list of all existing users. +The index mapping was not being used because we were not using the right blevesearch TypeField, leading to username like properties like `preferred_name` and `on_premises_sam_account_name` to be case sensitive. -https://github.com/owncloud/ocis-accounts/pull/51 +https://github.com/owncloud/ocis-accounts/issues/73 From 8ebb5ce0abef9bb504adf2c21548078fe4836ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 31 Jul 2020 23:10:36 +0200 Subject: [PATCH 235/407] Unescape value for prefix query MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/fix-prefix-query.md | 5 +++++ pkg/provider/bleve.go | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 changelog/unreleased/fix-prefix-query.md diff --git a/changelog/unreleased/fix-prefix-query.md b/changelog/unreleased/fix-prefix-query.md new file mode 100644 index 0000000000..e386761262 --- /dev/null +++ b/changelog/unreleased/fix-prefix-query.md @@ -0,0 +1,5 @@ +Bugfix: Unescape value for prefix query + +Prefix queries also need to unescape token values like `'some ''ol string'` to `some 'ol string` before using it in a prefix query + +https://github.com/owncloud/ocis-accounts/pull/76 \ No newline at end of file diff --git a/pkg/provider/bleve.go b/pkg/provider/bleve.go index 8dcb7df969..5657e94096 100644 --- a/pkg/provider/bleve.go +++ b/pkg/provider/bleve.go @@ -35,8 +35,11 @@ func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { } if n.Children[1].Token.Type != godata.FilterTokenString { return nil, errors.New("startswith expected a string as the second param") - } - q := bleve.NewPrefixQuery(n.Children[1].Token.Value) + } // remove enclosing ' of string tokens (looks like 'some ol'' string') + value := n.Children[1].Token.Value[1 : len(n.Children[1].Token.Value)-1] + // unescape '' as ' + unescaped := strings.ReplaceAll(value, "''", "'") + q := bleve.NewPrefixQuery(unescaped) q.SetField(n.Children[0].Token.Value) return q, nil // TODO contains as regex? @@ -59,7 +62,7 @@ func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { // remove enclosing ' of string tokens (looks like 'some ol'' string') value := n.Children[1].Token.Value[1 : len(n.Children[1].Token.Value)-1] // unescape '' as ' - unascaped := strings.ReplaceAll(value, "''", "'") + unescaped := strings.ReplaceAll(value, "''", "'") // use a match query, so the field mapping, e.g. lowercase is applied to the value // remember we defined the field mapping for `preferred_name` to be lowercase // a term query like `preferred_name eq 'Artur'` would use `Artur` to search in the index and come up empty @@ -68,7 +71,7 @@ func recursiveBuildQuery(n *godata.ParseNode) (query.Query, error) { // - LDAP matching rules depend on the attribute: see https://ldapwiki.com/wiki/MatchingRule // - odata has functions like `startswith`, `contains`, `tolower`, `toupper`, `matchesPattern` andy more: see http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_BuiltinQueryFunctions // - ocis-glauth should do the mapping between LDAP and odata filter - q := bleve.NewMatchQuery(unascaped) + q := bleve.NewMatchQuery(unescaped) q.SetField(n.Children[0].Token.Value) return q, nil } else if n.Children[1].Token.Type == godata.FilterTokenInteger { From 56583430ede4573ae56940aad16b7b6b5635c806 Mon Sep 17 00:00:00 2001 From: Parajuli Kiran Date: Mon, 3 Aug 2020 12:30:10 +0545 Subject: [PATCH 236/407] Added account update unit test --- pkg/proto/v0/accounts.pb.micro_test.go | 161 +++++++++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/pkg/proto/v0/accounts.pb.micro_test.go b/pkg/proto/v0/accounts.pb.micro_test.go index 7304f5e3e5..82feab8e52 100644 --- a/pkg/proto/v0/accounts.pb.micro_test.go +++ b/pkg/proto/v0/accounts.pb.micro_test.go @@ -244,6 +244,8 @@ func assertAccountsSame(t *testing.T, acc1, acc2 *proto.Account) { assert.Equal(t, acc1.DisplayName, acc2.DisplayName) assert.Equal(t, acc1.PreferredName, acc2.PreferredName) assert.Equal(t, acc1.UidNumber, acc2.UidNumber) + assert.Equal(t, acc1.OnPremisesSamAccountName, acc2.OnPremisesSamAccountName) + assert.Equal(t, acc1.GidNumber, acc2.GidNumber) assert.Equal(t, acc1.Mail, acc2.Mail) } @@ -321,6 +323,19 @@ func createGroup(t *testing.T, group *proto.Group) (*proto.Group, error) { return res, err } +func updateAccount(t *testing.T, account *proto.Account, updateArray []string) (*proto.Account, error) { + client := service.Client() + cl := proto.NewAccountsService("com.owncloud.api.accounts", client) + + updateMask := &field_mask.FieldMask{ + Paths: updateArray, + } + request := &proto.UpdateAccountRequest{Account: account, UpdateMask: updateMask} + res, err := cl.UpdateAccount(context.Background(), request) + + return res, err +} + func listAccounts(t *testing.T) (*proto.ListAccountsResponse, error) { request := &proto.ListAccountsRequest{} client := service.Client() @@ -423,6 +438,152 @@ func TestCreateAccountInvalidUserName(t *testing.T) { cleanUp(t) } +func TestUpdateAccount(t *testing.T) { + _, _ = createAccount(t, "user1") + + tests := []struct { + name string + userAccount *proto.Account + }{ + { + "Update user (demonstration of updatable fields)", + &proto.Account{ + DisplayName: "Alice Hansen", + PreferredName: "Wonderful Alice", + OnPremisesDistinguishedName: "Alice", + UidNumber: 20010, + GidNumber: 30001, + Mail: "alice@example.com", + }, + }, + { + "Update user with unicode data", + &proto.Account{ + DisplayName: "एलिस हेन्सेन", + PreferredName: "अद्भुत एलिस", + OnPremisesDistinguishedName: "एलिस", + UidNumber: 20010, + GidNumber: 30001, + Mail: "एलिस@उदाहरण.com", + }, + }, + { + "Update user with empty data values", + &proto.Account{ + DisplayName: "", + PreferredName: "", + OnPremisesDistinguishedName: "", + UidNumber: 0, + GidNumber: 0, + Mail: "", + }, + }, + { + "Update user with strange data", + &proto.Account{ + DisplayName: "12345", + PreferredName: "12345", + OnPremisesDistinguishedName: "54321", + UidNumber: 1000, + GidNumber: 1000, + Mail: "1.2@3.c_@", + }, + }, + } + + for _, tt := range tests { + // updatable fields for type Account + updateMask := []string{ + "AccountEnabled", + "IsResourceAccount", + "DisplayName", + "PreferredName", + "OnPremisesSamAccountName", + "UidNumber", + "GidNumber", + "Mail", + } + + t.Run(tt.name, func(t *testing.T) { + tt.userAccount.Id = "f9149a32-2b8e-4f04-9e8d-937d81712b9a" + tt.userAccount.AccountEnabled = false + tt.userAccount.IsResourceAccount = false + resp, err := updateAccount(t, tt.userAccount, updateMask) + + checkError(t, err) + + assert.IsType(t, &proto.Account{}, resp) + assertAccountsSame(t, tt.userAccount, resp) + assertUserExists(t, tt.userAccount) + }) + } + + cleanUp(t) +} + +func TestUpdateNonUpdatableFieldsInAccount(t *testing.T) { + _, _ = createAccount(t, "user1") + + tests := []struct { + name string + updateMask []string + userAccount *proto.Account + }{ + { + "Try to update creation type", + []string{ + "CreationType", + }, + &proto.Account{ + CreationType: "Type Test", + }, + }, + { + "Try to update password profile", + []string{ + "PasswordProfile", + }, + &proto.Account{ + PasswordProfile: &proto.PasswordProfile{Password: "new password"}, + }, + }, + { + "Try to update member of", + []string{ + "MemberOf", + }, + &proto.Account{ + MemberOf: []*proto.Group{ + {Id: "509a9dcd-bb37-4f4f-a01a-19dca27d9cfa"}, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.userAccount.Id = "f9149a32-2b8e-4f04-9e8d-937d81712b9a" + res, err := updateAccount(t, tt.userAccount, tt.updateMask) + if err == nil { + t.Fatalf("Expected error while updating non updatable field, but found none.") + } + assert.IsType(t, &proto.Account{}, res) + assert.Empty(t, res) + assert.Error(t, err) + + var e *merrors.Error + + if errors.As(err, &e) { + assert.EqualValues(t, 400, e.Code) + assert.Equal(t, "Bad Request", e.Status) + errMsg := fmt.Sprintf("can not update field %s, either unknown or readonly", tt.updateMask[0]) + assert.Equal(t, errMsg, e.Detail) + } else { + t.Fatal("Expected merror errors but found something else.") + } + }) + } +} + func TestListAccounts(t *testing.T) { createAccount(t, "user1") createAccount(t, "user2") From b940cac8d389dfd18981fff0a165c7106a77be02 Mon Sep 17 00:00:00 2001 From: Alex Unger Date: Mon, 3 Aug 2020 07:44:12 +0000 Subject: [PATCH 237/407] Automated changelog update [skip ci] --- CHANGELOG.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ad87d2490..7f585531e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The following sections list the changes in ocis-accounts unreleased. * Bugfix - Add write mutexes: [#71](https://github.com/owncloud/ocis-accounts/pull/71) * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) +* Bugfix - Fix index mapping: [#73](https://github.com/owncloud/ocis-accounts/issues/73) * Bugfix - Use NewNumericRangeInclusiveQuery for numeric literals: [#28](https://github.com/owncloud/ocis-glauth/issues/28) * Bugfix - Prevent segfault when no password is set: [#65](https://github.com/owncloud/ocis-accounts/pull/65) * Bugfix - Update account return value not used: [#70](https://github.com/owncloud/ocis-accounts/pull/70) @@ -20,7 +21,6 @@ The following sections list the changes in ocis-accounts unreleased. * Change - Remove timezone setting: [#33](https://github.com/owncloud/ocis-accounts/pull/33) * Change - Tighten screws on usernames and email addresses: [#65](https://github.com/owncloud/ocis-accounts/pull/65) * Enhancement - Add early version of cli tools for user-management: [#69](https://github.com/owncloud/ocis-accounts/pull/69) -* Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) * Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) @@ -47,6 +47,15 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/60 +* Bugfix - Fix index mapping: [#73](https://github.com/owncloud/ocis-accounts/issues/73) + + The index mapping was not being used because we were not using the right blevesearch TypeField, + leading to username like properties like `preferred_name` and + `on_premises_sam_account_name` to be case sensitive. + + https://github.com/owncloud/ocis-accounts/issues/73 + + * Bugfix - Use NewNumericRangeInclusiveQuery for numeric literals: [#28](https://github.com/owncloud/ocis-glauth/issues/28) Some LDAP properties like `uidnumber` and `gidnumber` are numeric. When an OS tries to look up a @@ -161,13 +170,6 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/69 -* Enhancement - Add simple user listing UI: [#51](https://github.com/owncloud/ocis-accounts/pull/51) - - We added an extension for ocis-web that shows a simple list of all existing users. - - https://github.com/owncloud/ocis-accounts/pull/51 - - * Enhancement - Update accounts API: [#30](https://github.com/owncloud/ocis-accounts/pull/30) We updated the api to allow fetching users not onyl by UUID, but also by identity (OpenID issuer From 2cf9639e680d11db1f4cde2b7a484098666a7fdd Mon Sep 17 00:00:00 2001 From: Parajuli Kiran Date: Mon, 3 Aug 2020 13:13:20 +0545 Subject: [PATCH 238/407] Tagged test example with the mail validation issue --- pkg/proto/v0/accounts.pb.micro_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/proto/v0/accounts.pb.micro_test.go b/pkg/proto/v0/accounts.pb.micro_test.go index 82feab8e52..5e8e8109d3 100644 --- a/pkg/proto/v0/accounts.pb.micro_test.go +++ b/pkg/proto/v0/accounts.pb.micro_test.go @@ -486,6 +486,8 @@ func TestUpdateAccount(t *testing.T) { OnPremisesDistinguishedName: "54321", UidNumber: 1000, GidNumber: 1000, + // No email validation + // https://github.com/owncloud/ocis-accounts/issues/77 Mail: "1.2@3.c_@", }, }, @@ -575,6 +577,7 @@ func TestUpdateNonUpdatableFieldsInAccount(t *testing.T) { if errors.As(err, &e) { assert.EqualValues(t, 400, e.Code) assert.Equal(t, "Bad Request", e.Status) + errMsg := fmt.Sprintf("can not update field %s, either unknown or readonly", tt.updateMask[0]) assert.Equal(t, errMsg, e.Detail) } else { From 9a9745837f96dc53faa71976508151eaa1200298 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Aug 2020 14:10:18 +0200 Subject: [PATCH 239/407] atomic requests --- pkg/service/v0/accounts.go | 25 +++++++++++++++---------- pkg/service/v0/groups.go | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 4ebd7ddfb8..32ffcba39f 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -33,7 +33,7 @@ import ( ) // accLock mutually exclude readers from writers on account files -var accLock sync.RWMutex +var accLock sync.Mutex func (s Service) indexAccounts(path string) (err error) { var f *os.File @@ -80,9 +80,6 @@ var authQuery = regexp.MustCompile(`^login eq '(.*)' and password eq '(.*)'$`) / func (s Service) loadAccount(id string, a *proto.Account) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", id) - accLock.Lock() - defer accLock.Unlock() - var data []byte if data, err = ioutil.ReadFile(path); err != nil { return merrors.NotFound(s.id, "could not read account: %v", err.Error()) @@ -95,7 +92,6 @@ func (s Service) loadAccount(id string, a *proto.Account) (err error) { } func (s Service) writeAccount(a *proto.Account) (err error) { - // leave only the group id s.deflateMemberOf(a) @@ -106,8 +102,6 @@ func (s Service) writeAccount(a *proto.Account) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "accounts", a.Id) - accLock.Lock() - defer accLock.Unlock() if err = ioutil.WriteFile(path, bytes, 0600); err != nil { return merrors.InternalServerError(s.id, "could not write account: %v", err.Error()) } @@ -164,7 +158,8 @@ func (s Service) passwordIsValid(hash string, pwd string) (ok bool) { // ListAccounts implements the AccountsServiceHandler interface // the query contains account properties func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest, out *proto.ListAccountsResponse) (err error) { - + accLock.Lock() + defer accLock.Unlock() var password string // check if this looks like an auth request @@ -253,6 +248,8 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest // GetAccount implements the AccountsServiceHandler interface func (s Service) GetAccount(c context.Context, in *proto.GetAccountRequest, out *proto.Account) (err error) { + accLock.Lock() + defer accLock.Unlock() var id string if id, err = cleanupID(in.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) @@ -279,6 +276,8 @@ func (s Service) GetAccount(c context.Context, in *proto.GetAccountRequest, out // CreateAccount implements the AccountsServiceHandler interface func (s Service) CreateAccount(c context.Context, in *proto.CreateAccountRequest, out *proto.Account) (err error) { + accLock.Lock() + defer accLock.Unlock() var id string var acc = in.Account if acc == nil { @@ -347,6 +346,8 @@ func (s Service) CreateAccount(c context.Context, in *proto.CreateAccountRequest // read only fields are ignored // TODO how can we unset specific values? using the update mask func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest, out *proto.Account) (err error) { + accLock.Lock() + defer accLock.Unlock() var id string if in.Account == nil { return merrors.BadRequest(s.id, "account missing") @@ -366,8 +367,6 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest return } - s.debugLogAccount(out).Msg("found account") - t := time.Now() tsnow := ×tamppb.Timestamp{ Seconds: t.Unix(), @@ -417,6 +416,10 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest out.ExternalUserStateChangeDateTime = tsnow } + //fmt.Printf("---------") + //fmt.Printf("\n\nRECEIVED: %+v\n\n", in.Account) + //fmt.Printf("\n\nUPDATING ACCOUNT INFO: %+v\n\n", out) + //fmt.Printf("---------") if err = s.writeAccount(out); err != nil { s.log.Error().Err(err).Str("id", out.Id).Msg("could not persist updated account") return @@ -456,6 +459,8 @@ var updatableAccountPaths = map[string]struct{}{ // DeleteAccount implements the AccountsServiceHandler interface func (s Service) DeleteAccount(c context.Context, in *proto.DeleteAccountRequest, out *empty.Empty) (err error) { + accLock.Lock() + defer accLock.Unlock() var id string if id, err = cleanupID(in.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up account id: %v", err.Error()) diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index cbfee00fd2..d06f338e5d 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -40,7 +40,7 @@ func (s Service) indexGroups(path string) (err error) { } // accLock mutually exclude readers from writers on group files -var groupLock sync.RWMutex +var groupLock sync.Mutex func (s Service) indexGroup(id string) error { g := &proto.BleveGroup{ From 510007d40222683bf485214d30410d9745653b08 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Aug 2020 14:13:16 +0200 Subject: [PATCH 240/407] update groups --- pkg/service/v0/accounts.go | 4 ---- pkg/service/v0/groups.go | 25 ++++++++++++++----------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 32ffcba39f..35d4c00202 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -416,10 +416,6 @@ func (s Service) UpdateAccount(c context.Context, in *proto.UpdateAccountRequest out.ExternalUserStateChangeDateTime = tsnow } - //fmt.Printf("---------") - //fmt.Printf("\n\nRECEIVED: %+v\n\n", in.Account) - //fmt.Printf("\n\nUPDATING ACCOUNT INFO: %+v\n\n", out) - //fmt.Printf("---------") if err = s.writeAccount(out); err != nil { s.log.Error().Err(err).Str("id", out.Id).Msg("could not persist updated account") return diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index d06f338e5d..9befa575c4 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -60,9 +60,6 @@ func (s Service) indexGroup(id string) error { func (s Service) loadGroup(id string, g *proto.Group) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) - - groupLock.Lock() - defer groupLock.Unlock() var data []byte if data, err = ioutil.ReadFile(path); err != nil { return merrors.NotFound(s.id, "could not read group: %v", err.Error()) @@ -84,11 +81,7 @@ func (s Service) writeGroup(g *proto.Group) (err error) { if bytes, err = json.Marshal(g); err != nil { return merrors.InternalServerError(s.id, "could not marshal group: %v", err.Error()) } - path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", g.Id) - - groupLock.Lock() - defer groupLock.Unlock() if err = ioutil.WriteFile(path, bytes, 0600); err != nil { return merrors.InternalServerError(s.id, "could not write group: %v", err.Error()) } @@ -132,7 +125,8 @@ func (s Service) deflateMembers(g *proto.Group) { // ListGroups implements the GroupsServiceHandler interface func (s Service) ListGroups(c context.Context, in *proto.ListGroupsRequest, out *proto.ListGroupsResponse) (err error) { - + groupLock.Lock() + defer groupLock.Unlock() // only search for groups tq := bleve.NewTermQuery("group") tq.SetField("bleve_type") @@ -191,6 +185,8 @@ func (s Service) ListGroups(c context.Context, in *proto.ListGroupsRequest, out // GetGroup implements the GroupsServiceHandler interface func (s Service) GetGroup(c context.Context, in *proto.GetGroupRequest, out *proto.Group) (err error) { + groupLock.Lock() + defer groupLock.Unlock()s var id string if id, err = cleanupID(in.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) @@ -211,6 +207,8 @@ func (s Service) GetGroup(c context.Context, in *proto.GetGroupRequest, out *pro // CreateGroup implements the GroupsServiceHandler interface func (s Service) CreateGroup(c context.Context, in *proto.CreateGroupRequest, out *proto.Group) (err error) { + groupLock.Lock() + defer groupLock.Unlock() var id string if in.Group == nil { return merrors.BadRequest(s.id, "account missing") @@ -245,6 +243,8 @@ func (s Service) UpdateGroup(c context.Context, in *proto.UpdateGroupRequest, ou // DeleteGroup implements the GroupsServiceHandler interface func (s Service) DeleteGroup(c context.Context, in *proto.DeleteGroupRequest, out *empty.Empty) (err error) { + groupLock.Lock() + defer groupLock.Unlock() var id string if id, err = cleanupID(in.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) @@ -283,7 +283,8 @@ func (s Service) DeleteGroup(c context.Context, in *proto.DeleteGroupRequest, ou // AddMember implements the GroupsServiceHandler interface func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *proto.Group) (err error) { - + groupLock.Lock() + defer groupLock.Unlock() // cleanup ids var groupID string if groupID, err = cleanupID(in.GroupId); err != nil { @@ -348,7 +349,8 @@ func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *p // RemoveMember implements the GroupsServiceHandler interface func (s Service) RemoveMember(c context.Context, in *proto.RemoveMemberRequest, out *proto.Group) (err error) { - + groupLock.Lock() + defer groupLock.Unlock() // cleanup ids var groupID string if groupID, err = cleanupID(in.GroupId); err != nil { @@ -408,7 +410,8 @@ func (s Service) RemoveMember(c context.Context, in *proto.RemoveMemberRequest, // ListMembers implements the GroupsServiceHandler interface func (s Service) ListMembers(c context.Context, in *proto.ListMembersRequest, out *proto.ListMembersResponse) (err error) { - + groupLock.Lock() + defer groupLock.Unlock() // cleanup ids var groupID string if groupID, err = cleanupID(in.Id); err != nil { From a4e8a8f09e601d2a3c8c719df8c5a33e06cbf079 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Aug 2020 14:15:08 +0200 Subject: [PATCH 241/407] typo --- pkg/service/v0/groups.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 9befa575c4..dde185619b 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -186,7 +186,7 @@ func (s Service) ListGroups(c context.Context, in *proto.ListGroupsRequest, out // GetGroup implements the GroupsServiceHandler interface func (s Service) GetGroup(c context.Context, in *proto.GetGroupRequest, out *proto.Group) (err error) { groupLock.Lock() - defer groupLock.Unlock()s + defer groupLock.Unlock() var id string if id, err = cleanupID(in.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) From 7c298189213509f1977a14f9a0e9fef75b8f0268 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Fri, 7 Aug 2020 14:27:38 +0200 Subject: [PATCH 242/407] undo group changes --- pkg/service/v0/groups.go | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index dde185619b..d06f338e5d 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -60,6 +60,9 @@ func (s Service) indexGroup(id string) error { func (s Service) loadGroup(id string, g *proto.Group) (err error) { path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", id) + + groupLock.Lock() + defer groupLock.Unlock() var data []byte if data, err = ioutil.ReadFile(path); err != nil { return merrors.NotFound(s.id, "could not read group: %v", err.Error()) @@ -81,7 +84,11 @@ func (s Service) writeGroup(g *proto.Group) (err error) { if bytes, err = json.Marshal(g); err != nil { return merrors.InternalServerError(s.id, "could not marshal group: %v", err.Error()) } + path := filepath.Join(s.Config.Server.AccountsDataPath, "groups", g.Id) + + groupLock.Lock() + defer groupLock.Unlock() if err = ioutil.WriteFile(path, bytes, 0600); err != nil { return merrors.InternalServerError(s.id, "could not write group: %v", err.Error()) } @@ -125,8 +132,7 @@ func (s Service) deflateMembers(g *proto.Group) { // ListGroups implements the GroupsServiceHandler interface func (s Service) ListGroups(c context.Context, in *proto.ListGroupsRequest, out *proto.ListGroupsResponse) (err error) { - groupLock.Lock() - defer groupLock.Unlock() + // only search for groups tq := bleve.NewTermQuery("group") tq.SetField("bleve_type") @@ -185,8 +191,6 @@ func (s Service) ListGroups(c context.Context, in *proto.ListGroupsRequest, out // GetGroup implements the GroupsServiceHandler interface func (s Service) GetGroup(c context.Context, in *proto.GetGroupRequest, out *proto.Group) (err error) { - groupLock.Lock() - defer groupLock.Unlock() var id string if id, err = cleanupID(in.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) @@ -207,8 +211,6 @@ func (s Service) GetGroup(c context.Context, in *proto.GetGroupRequest, out *pro // CreateGroup implements the GroupsServiceHandler interface func (s Service) CreateGroup(c context.Context, in *proto.CreateGroupRequest, out *proto.Group) (err error) { - groupLock.Lock() - defer groupLock.Unlock() var id string if in.Group == nil { return merrors.BadRequest(s.id, "account missing") @@ -243,8 +245,6 @@ func (s Service) UpdateGroup(c context.Context, in *proto.UpdateGroupRequest, ou // DeleteGroup implements the GroupsServiceHandler interface func (s Service) DeleteGroup(c context.Context, in *proto.DeleteGroupRequest, out *empty.Empty) (err error) { - groupLock.Lock() - defer groupLock.Unlock() var id string if id, err = cleanupID(in.Id); err != nil { return merrors.InternalServerError(s.id, "could not clean up group id: %v", err.Error()) @@ -283,8 +283,7 @@ func (s Service) DeleteGroup(c context.Context, in *proto.DeleteGroupRequest, ou // AddMember implements the GroupsServiceHandler interface func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *proto.Group) (err error) { - groupLock.Lock() - defer groupLock.Unlock() + // cleanup ids var groupID string if groupID, err = cleanupID(in.GroupId); err != nil { @@ -349,8 +348,7 @@ func (s Service) AddMember(c context.Context, in *proto.AddMemberRequest, out *p // RemoveMember implements the GroupsServiceHandler interface func (s Service) RemoveMember(c context.Context, in *proto.RemoveMemberRequest, out *proto.Group) (err error) { - groupLock.Lock() - defer groupLock.Unlock() + // cleanup ids var groupID string if groupID, err = cleanupID(in.GroupId); err != nil { @@ -410,8 +408,7 @@ func (s Service) RemoveMember(c context.Context, in *proto.RemoveMemberRequest, // ListMembers implements the GroupsServiceHandler interface func (s Service) ListMembers(c context.Context, in *proto.ListMembersRequest, out *proto.ListMembersResponse) (err error) { - groupLock.Lock() - defer groupLock.Unlock() + // cleanup ids var groupID string if groupID, err = cleanupID(in.Id); err != nil { From 20c4203bf1e57e775bd1833d010de2ede44c416f Mon Sep 17 00:00:00 2001 From: Alex Unger Date: Tue, 11 Aug 2020 16:12:42 +0200 Subject: [PATCH 243/407] add changelog Signed-off-by: A.Unger --- changelog/unreleased/atomic-requests.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/unreleased/atomic-requests.md diff --git a/changelog/unreleased/atomic-requests.md b/changelog/unreleased/atomic-requests.md new file mode 100644 index 0000000000..38ae9d6a85 --- /dev/null +++ b/changelog/unreleased/atomic-requests.md @@ -0,0 +1,5 @@ +Bugfix: Atomic Requests + +Operations on the file system level are now atomic. This happens only on the provisioning API. + +https://github.com/owncloud/ocis-accounts/pull/82 From c030487016b0e97aa1d2fb3829dbd1c986dd606f Mon Sep 17 00:00:00 2001 From: jasson99 Date: Mon, 10 Aug 2020 13:48:31 +0545 Subject: [PATCH 244/407] Commit ids updated in drone.star --- .drone.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.star b/.drone.star index ec91d1a115..cbb07d7d90 100644 --- a/.drone.star +++ b/.drone.star @@ -1,7 +1,7 @@ def main(ctx): before = [ testing(ctx), - UITests(ctx, 'master', '787c2443dd4ab977f69a2e34751dc27a8928da1e', 'master', 'b990689a83630baa83f4311718ff8c819fb95ef9') + UITests(ctx, 'master', 'd6ed9f3e60f5cfc4eeb261d91a6d1607045904ee', 'master', '0ba693cea50cafdb7e6b4e3f559a70cbd4d04bbe') ] stages = [ From a89c5fb3d6df0d9f1664cc4a8c0212f7d3b6a8fc Mon Sep 17 00:00:00 2001 From: jasson99 Date: Wed, 12 Aug 2020 16:50:12 +0545 Subject: [PATCH 245/407] run with ldap --- .drone.star | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.star b/.drone.star index cbb07d7d90..7ac566d882 100644 --- a/.drone.star +++ b/.drone.star @@ -368,6 +368,7 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'SERVER_HOST': 'https://ocis-server:9200', 'BACKEND_HOST': 'https://ocis-server:9200', 'RUN_ON_OCIS': 'true', + 'RUN_WITH_LDAP': 'true', 'OCIS_REVA_DATA_ROOT': '/srv/app/tmp/reva', 'OCIS_SKELETON_DIR': '/srv/app/testing/data/webUISkeleton', 'PHOENIX_CONFIG': '/drone/src/ui/tests/config/drone/ocis-config.json', From ed77ff501eeab5d43d4ca946cc34a6018ab97aeb Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Wed, 12 Aug 2020 13:32:12 +0000 Subject: [PATCH 246/407] Automated changelog update [skip ci] --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f585531e0..637029bb45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,11 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary * Bugfix - Add write mutexes: [#71](https://github.com/owncloud/ocis-accounts/pull/71) +* Bugfix - Atomic Requests: [#82](https://github.com/owncloud/ocis-accounts/pull/82) * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) * Bugfix - Fix index mapping: [#73](https://github.com/owncloud/ocis-accounts/issues/73) * Bugfix - Use NewNumericRangeInclusiveQuery for numeric literals: [#28](https://github.com/owncloud/ocis-glauth/issues/28) +* Bugfix - Unescape value for prefix query: [#76](https://github.com/owncloud/ocis-accounts/pull/76) * Bugfix - Prevent segfault when no password is set: [#65](https://github.com/owncloud/ocis-accounts/pull/65) * Bugfix - Update account return value not used: [#70](https://github.com/owncloud/ocis-accounts/pull/70) * Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#64](https://github.com/owncloud/ocis-accounts/pull/64) @@ -37,6 +39,13 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/71 +* Bugfix - Atomic Requests: [#82](https://github.com/owncloud/ocis-accounts/pull/82) + + Operations on the file system level are now atomic. This happens only on the provisioning API. + + https://github.com/owncloud/ocis-accounts/pull/82 + + * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) We've fixed a bug in deleting the groups. @@ -70,6 +79,14 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-glauth/pull/29 +* Bugfix - Unescape value for prefix query: [#76](https://github.com/owncloud/ocis-accounts/pull/76) + + Prefix queries also need to unescape token values like `'some ''ol string'` to `some 'ol + string` before using it in a prefix query + + https://github.com/owncloud/ocis-accounts/pull/76 + + * Bugfix - Prevent segfault when no password is set: [#65](https://github.com/owncloud/ocis-accounts/pull/65) Passwords are stored in a dedicated child struct of an account. We fixed several segfault From 5003cb1329ae1a0ea0e5f481fa81fa5b882a9825 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 19 Aug 2020 10:54:45 +0200 Subject: [PATCH 247/407] Prepare release 0.2.0 --- .../{unreleased => 0.2.0_2020-08-19}/add-cli-user-management.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/add-write-mutexes.md | 0 .../{unreleased => 0.2.0_2020-08-19}/align-project-structure.md | 0 .../change-grpc-error-messages.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/enable_accounts.md | 0 .../{unreleased => 0.2.0_2020-08-19}/fix-account-group-id.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/fix-index-mapping.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/fix-indexing.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/fix-int-queries.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/fix-segfault.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/fix-update.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/pass-correct-logger.md | 0 .../{unreleased => 0.2.0_2020-08-19}/remove-timezone-setting.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/tighten-screws.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/update-accounts-api.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/use-alpine-latest.md | 0 changelog/{unreleased => 0.2.0_2020-08-19}/user-listing-ui.md | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename changelog/{unreleased => 0.2.0_2020-08-19}/add-cli-user-management.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/add-write-mutexes.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/align-project-structure.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/change-grpc-error-messages.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/enable_accounts.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/fix-account-group-id.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/fix-index-mapping.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/fix-indexing.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/fix-int-queries.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/fix-segfault.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/fix-update.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/pass-correct-logger.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/remove-timezone-setting.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/tighten-screws.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/update-accounts-api.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/use-alpine-latest.md (100%) rename changelog/{unreleased => 0.2.0_2020-08-19}/user-listing-ui.md (100%) diff --git a/changelog/unreleased/add-cli-user-management.md b/changelog/0.2.0_2020-08-19/add-cli-user-management.md similarity index 100% rename from changelog/unreleased/add-cli-user-management.md rename to changelog/0.2.0_2020-08-19/add-cli-user-management.md diff --git a/changelog/unreleased/add-write-mutexes.md b/changelog/0.2.0_2020-08-19/add-write-mutexes.md similarity index 100% rename from changelog/unreleased/add-write-mutexes.md rename to changelog/0.2.0_2020-08-19/add-write-mutexes.md diff --git a/changelog/unreleased/align-project-structure.md b/changelog/0.2.0_2020-08-19/align-project-structure.md similarity index 100% rename from changelog/unreleased/align-project-structure.md rename to changelog/0.2.0_2020-08-19/align-project-structure.md diff --git a/changelog/unreleased/change-grpc-error-messages.md b/changelog/0.2.0_2020-08-19/change-grpc-error-messages.md similarity index 100% rename from changelog/unreleased/change-grpc-error-messages.md rename to changelog/0.2.0_2020-08-19/change-grpc-error-messages.md diff --git a/changelog/unreleased/enable_accounts.md b/changelog/0.2.0_2020-08-19/enable_accounts.md similarity index 100% rename from changelog/unreleased/enable_accounts.md rename to changelog/0.2.0_2020-08-19/enable_accounts.md diff --git a/changelog/unreleased/fix-account-group-id.md b/changelog/0.2.0_2020-08-19/fix-account-group-id.md similarity index 100% rename from changelog/unreleased/fix-account-group-id.md rename to changelog/0.2.0_2020-08-19/fix-account-group-id.md diff --git a/changelog/unreleased/fix-index-mapping.md b/changelog/0.2.0_2020-08-19/fix-index-mapping.md similarity index 100% rename from changelog/unreleased/fix-index-mapping.md rename to changelog/0.2.0_2020-08-19/fix-index-mapping.md diff --git a/changelog/unreleased/fix-indexing.md b/changelog/0.2.0_2020-08-19/fix-indexing.md similarity index 100% rename from changelog/unreleased/fix-indexing.md rename to changelog/0.2.0_2020-08-19/fix-indexing.md diff --git a/changelog/unreleased/fix-int-queries.md b/changelog/0.2.0_2020-08-19/fix-int-queries.md similarity index 100% rename from changelog/unreleased/fix-int-queries.md rename to changelog/0.2.0_2020-08-19/fix-int-queries.md diff --git a/changelog/unreleased/fix-segfault.md b/changelog/0.2.0_2020-08-19/fix-segfault.md similarity index 100% rename from changelog/unreleased/fix-segfault.md rename to changelog/0.2.0_2020-08-19/fix-segfault.md diff --git a/changelog/unreleased/fix-update.md b/changelog/0.2.0_2020-08-19/fix-update.md similarity index 100% rename from changelog/unreleased/fix-update.md rename to changelog/0.2.0_2020-08-19/fix-update.md diff --git a/changelog/unreleased/pass-correct-logger.md b/changelog/0.2.0_2020-08-19/pass-correct-logger.md similarity index 100% rename from changelog/unreleased/pass-correct-logger.md rename to changelog/0.2.0_2020-08-19/pass-correct-logger.md diff --git a/changelog/unreleased/remove-timezone-setting.md b/changelog/0.2.0_2020-08-19/remove-timezone-setting.md similarity index 100% rename from changelog/unreleased/remove-timezone-setting.md rename to changelog/0.2.0_2020-08-19/remove-timezone-setting.md diff --git a/changelog/unreleased/tighten-screws.md b/changelog/0.2.0_2020-08-19/tighten-screws.md similarity index 100% rename from changelog/unreleased/tighten-screws.md rename to changelog/0.2.0_2020-08-19/tighten-screws.md diff --git a/changelog/unreleased/update-accounts-api.md b/changelog/0.2.0_2020-08-19/update-accounts-api.md similarity index 100% rename from changelog/unreleased/update-accounts-api.md rename to changelog/0.2.0_2020-08-19/update-accounts-api.md diff --git a/changelog/unreleased/use-alpine-latest.md b/changelog/0.2.0_2020-08-19/use-alpine-latest.md similarity index 100% rename from changelog/unreleased/use-alpine-latest.md rename to changelog/0.2.0_2020-08-19/use-alpine-latest.md diff --git a/changelog/unreleased/user-listing-ui.md b/changelog/0.2.0_2020-08-19/user-listing-ui.md similarity index 100% rename from changelog/unreleased/user-listing-ui.md rename to changelog/0.2.0_2020-08-19/user-listing-ui.md From 4661038aa661da434d1d685bfe923b782076df1a Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 19 Aug 2020 09:46:16 +0000 Subject: [PATCH 248/407] Automated changelog update [skip ci] --- CHANGELOG.md | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 637029bb45..01d57283ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,16 +2,41 @@ The following sections list the changes in ocis-accounts unreleased. -[unreleased]: https://github.com/owncloud/ocis-accounts/compare/v0.1.1...master +[unreleased]: https://github.com/owncloud/ocis-accounts/compare/v0.2.0...master + +## Summary + +* Bugfix - Atomic Requests: [#82](https://github.com/owncloud/ocis-accounts/pull/82) +* Bugfix - Unescape value for prefix query: [#76](https://github.com/owncloud/ocis-accounts/pull/76) + +## Details + +* Bugfix - Atomic Requests: [#82](https://github.com/owncloud/ocis-accounts/pull/82) + + Operations on the file system level are now atomic. This happens only on the provisioning API. + + https://github.com/owncloud/ocis-accounts/pull/82 + + +* Bugfix - Unescape value for prefix query: [#76](https://github.com/owncloud/ocis-accounts/pull/76) + + Prefix queries also need to unescape token values like `'some ''ol string'` to `some 'ol + string` before using it in a prefix query + + https://github.com/owncloud/ocis-accounts/pull/76 + +# Changelog for [0.2.0] (2020-08-19) + +The following sections list the changes in ocis-accounts 0.2.0. + +[0.2.0]: https://github.com/owncloud/ocis-accounts/compare/v0.1.1...v0.2.0 ## Summary * Bugfix - Add write mutexes: [#71](https://github.com/owncloud/ocis-accounts/pull/71) -* Bugfix - Atomic Requests: [#82](https://github.com/owncloud/ocis-accounts/pull/82) * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) * Bugfix - Fix index mapping: [#73](https://github.com/owncloud/ocis-accounts/issues/73) * Bugfix - Use NewNumericRangeInclusiveQuery for numeric literals: [#28](https://github.com/owncloud/ocis-glauth/issues/28) -* Bugfix - Unescape value for prefix query: [#76](https://github.com/owncloud/ocis-accounts/pull/76) * Bugfix - Prevent segfault when no password is set: [#65](https://github.com/owncloud/ocis-accounts/pull/65) * Bugfix - Update account return value not used: [#70](https://github.com/owncloud/ocis-accounts/pull/70) * Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#64](https://github.com/owncloud/ocis-accounts/pull/64) @@ -39,13 +64,6 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/71 -* Bugfix - Atomic Requests: [#82](https://github.com/owncloud/ocis-accounts/pull/82) - - Operations on the file system level are now atomic. This happens only on the provisioning API. - - https://github.com/owncloud/ocis-accounts/pull/82 - - * Bugfix - Fix the accountId and groupId mismatch in DeleteGroup Method: [#60](https://github.com/owncloud/ocis-accounts/pull/60) We've fixed a bug in deleting the groups. @@ -79,14 +97,6 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-glauth/pull/29 -* Bugfix - Unescape value for prefix query: [#76](https://github.com/owncloud/ocis-accounts/pull/76) - - Prefix queries also need to unescape token values like `'some ''ol string'` to `some 'ol - string` before using it in a prefix query - - https://github.com/owncloud/ocis-accounts/pull/76 - - * Bugfix - Prevent segfault when no password is set: [#65](https://github.com/owncloud/ocis-accounts/pull/65) Passwords are stored in a dedicated child struct of an account. We fixed several segfault From 45b486c68e0da8b09c6e1fa702760da71c1efd63 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 19 Aug 2020 10:49:49 +0200 Subject: [PATCH 249/407] Update to new data model of ocis-settings --- pkg/service/v0/settings.go | 188 +++++++++++++++++++------------------ 1 file changed, 99 insertions(+), 89 deletions(-) diff --git a/pkg/service/v0/settings.go b/pkg/service/v0/settings.go index 6dcf6d1dae..f96061eac8 100644 --- a/pkg/service/v0/settings.go +++ b/pkg/service/v0/settings.go @@ -8,86 +8,9 @@ import ( settings "github.com/owncloud/ocis-settings/pkg/proto/v0" ) -func generateSettingsBundleProfileRequest() settings.SaveSettingsBundleRequest { - return settings.SaveSettingsBundleRequest{ - SettingsBundle: &settings.SettingsBundle{ - Identifier: &settings.Identifier{ - Extension: "ocis-accounts", - BundleKey: "profile", - }, - DisplayName: "Profile", - Settings: []*settings.Setting{ - { - SettingKey: "language", - DisplayName: "Language", - Description: "User language", - Value: &settings.Setting_SingleChoiceValue{ - SingleChoiceValue: &settings.SingleChoiceListSetting{ - Options: []*settings.ListOption{ - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "cs", - }, - }, - DisplayValue: "Czech", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "de", - }, - }, - DisplayValue: "Deutsch", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "en", - }, - }, - DisplayValue: "English", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "es", - }, - }, - DisplayValue: "Español", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "fr", - }, - }, - DisplayValue: "Français", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "gl", - }, - }, - DisplayValue: "Galego", - }, - { - Value: &settings.ListOptionValue{ - Option: &settings.ListOptionValue_StringValue{ - StringValue: "it", - }, - }, - DisplayValue: "Italiano", - }, - }, - }, - }, - }, - }, - }, - } -} +const ( + settingUuidProfileLanguage = "aa8cfbe5-95d4-4f7e-a032-c3c01f5f062f" +) // RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. func RegisterSettingsBundles(l *olog.Logger) { @@ -95,19 +18,106 @@ func RegisterSettingsBundles(l *olog.Logger) { // https://github.com/owncloud/ocis-proxy/issues/38 service := settings.NewBundleService("com.owncloud.api.settings", mclient.DefaultClient) - requests := []settings.SaveSettingsBundleRequest{ - generateSettingsBundleProfileRequest(), + bundleRequests := []settings.SaveBundleRequest{ + generateBundleProfileRequest(), } - for i := range requests { - res, err := service.SaveSettingsBundle(context.Background(), &requests[i]) + for i := range bundleRequests { + res, err := service.SaveBundle(context.Background(), &bundleRequests[i]) if err != nil { - l.Err(err). - Msg("Error registering settings bundle") + l.Err(err).Str("bundle", bundleRequests[i].Bundle.Id).Msg("Error registering bundle") } else { - l.Info(). - Str("bundle key", res.SettingsBundle.Identifier.BundleKey). - Msg("Successfully registered settings bundle") + l.Info().Str("bundle", res.Bundle.Id).Msg("Successfully registered bundle") } } } + +var languageSetting = settings.Setting_SingleChoiceValue{ + SingleChoiceValue: &settings.SingleChoiceList{ + Options: []*settings.ListOption{ + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "cs", + }, + }, + DisplayValue: "Czech", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "de", + }, + }, + DisplayValue: "Deutsch", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "en", + }, + }, + DisplayValue: "English", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "es", + }, + }, + DisplayValue: "Español", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "fr", + }, + }, + DisplayValue: "Français", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "gl", + }, + }, + DisplayValue: "Galego", + }, + { + Value: &settings.ListOptionValue{ + Option: &settings.ListOptionValue_StringValue{ + StringValue: "it", + }, + }, + DisplayValue: "Italiano", + }, + }, + }, +} + +func generateBundleProfileRequest() settings.SaveBundleRequest { + return settings.SaveBundleRequest{ + Bundle: &settings.Bundle{ + Id: "2a506de7-99bd-4f0d-994e-c38e72c28fd9", + Name: "profile", + Extension: "ocis-accounts", + Type: settings.Bundle_TYPE_DEFAULT, + Resource: &settings.Resource{ + Type: settings.Resource_TYPE_SYSTEM, + }, + DisplayName: "Profile", + Settings: []*settings.Setting{ + { + Id: settingUuidProfileLanguage, + Name: "language", + DisplayName: "Language", + Description: "User language", + Resource: &settings.Resource{ + Type: settings.Resource_TYPE_USER, + }, + Value: &languageSetting, + }, + }, + }, + } +} From b996f906ffeae00d1e65b0c45ebdb1379c10ed7d Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 19 Aug 2020 11:19:06 +0200 Subject: [PATCH 250/407] Add changelog --- changelog/unreleased/adapt-to-settings-data-model.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/unreleased/adapt-to-settings-data-model.md diff --git a/changelog/unreleased/adapt-to-settings-data-model.md b/changelog/unreleased/adapt-to-settings-data-model.md new file mode 100644 index 0000000000..defc3568c9 --- /dev/null +++ b/changelog/unreleased/adapt-to-settings-data-model.md @@ -0,0 +1,6 @@ +Change: Adapt to new ocis-settings data model + +ocis-settings introduced UUIDs and less verbose endpoint and message type names. This PR adjusts ocis-accounts accordingly. + +https://github.com/owncloud/ocis-accounts/pull/87 +https://github.com/owncloud/ocis-settings/pull/46 From d52e227adc45978ce97a31e6345b7ae7f752fa3a Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 19 Aug 2020 11:22:20 +0200 Subject: [PATCH 251/407] Update ocis-pkg to 2.3.0 and ocis-settings to d59cdd5469acde28ab0e845f0b2dc63e815efa6e --- go.mod | 18 +- go.sum | 893 ++++++++++++++++++++++++++++++++++++--------------------- 2 files changed, 571 insertions(+), 340 deletions(-) diff --git a/go.mod b/go.mod index 3b07f1f352..cbc62a5141 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect - github.com/go-chi/chi v4.1.0+incompatible + github.com/go-chi/chi v4.1.2+incompatible github.com/go-chi/render v1.0.1 github.com/go-test/deep v1.0.6 // indirect github.com/gofrs/uuid v3.3.0+incompatible @@ -21,23 +21,23 @@ require ( github.com/jmhodges/levigo v1.0.0 // indirect github.com/mennanov/fieldmask-utils v0.3.2 github.com/micro/cli/v2 v2.1.2 - github.com/micro/go-micro/v2 v2.6.0 + github.com/micro/go-micro/v2 v2.9.1 github.com/oklog/run v1.1.0 github.com/olekukonko/tablewriter v0.0.4 - github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170 - github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 + github.com/onsi/ginkgo v1.10.1 // indirect + github.com/onsi/gomega v1.7.0 // indirect + github.com/owncloud/ocis-pkg/v2 v2.3.0 + github.com/owncloud/ocis-settings v0.1.1-0.20200819091309-d59cdd5469ac github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 - github.com/rs/zerolog v1.18.0 + github.com/rs/zerolog v1.19.0 github.com/spf13/viper v1.7.0 - github.com/stretchr/testify v1.4.0 + github.com/stretchr/testify v1.6.1 github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tredoe/osutil v1.0.5 - golang.org/x/net v0.0.0-20200301022130-244492dfa37a - golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 // indirect + golang.org/x/net v0.0.0-20200625001655-4c5254603344 google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece google.golang.org/protobuf v1.25.0 - honnef.co/go/tools v0.0.1-2020.1.4 // indirect ) replace google.golang.org/grpc => google.golang.org/grpc v1.26.0 diff --git a/go.sum b/go.sum index ae7e325bb3..2edeae39ac 100644 --- a/go.sum +++ b/go.sum @@ -1,37 +1,35 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= +cloud.google.com/go v0.40.0/go.mod h1:Tk58MuI9rbLMKlAjeO/bDnteAx7tX2gJIXw4T5Jwlro= +cloud.google.com/go v0.41.0/go.mod h1:OauMR7DV8fzvZIl2qg6rkaIhD/vmgk4iwEw/h6ercmg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= -contrib.go.opencensus.io/exporter/jaeger v0.2.0/go.mod h1:ukdzwIYYHgZ7QYtwVFQUjiT28BJHiMhTERo32s6qVgM= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +contrib.go.opencensus.io/exporter/jaeger v0.2.1/go.mod h1:Y8IsLgdxqh1QxYxPC5IgXVmBaeLUeQFfBeBi9PbeZd0= contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= -contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= -contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= -contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= +contrib.go.opencensus.io/exporter/prometheus v0.2.0/go.mod h1:TYmVAyE8Tn1lyPcltF5IYYfWp2KHu7lQGIZnj8iZMys= contrib.go.opencensus.io/exporter/zipkin v0.1.1/go.mod h1:GMvdSl3eJ2gapOaLKzTKE3qDgUkJ86k9k3yY2eqwkzc= -contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= -contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= -github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= -github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= -github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= -github.com/Azure/azure-storage-blob-go v0.6.0/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.1.0/go.mod h1:AKyIcETwSUFxIcs/Wnq/C+kwCtlEYGUVd7FPNb2slmg= github.com/Azure/go-autorest/autorest v0.5.0/go.mod h1:9HLKlQjVBH6U3oDfsXOeVc56THsLPw1L03yban4xThw= github.com/Azure/go-autorest/autorest/adal v0.1.0/go.mod h1:MeS4XhScH55IST095THyTxElntu7WqB7pNbZo8Q5G3E= @@ -44,42 +42,41 @@ github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocm github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvdeRAgDr0izn4z5Ij88= +github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CiscoM31/godata v0.0.0-20191007193734-c2c4ebb1b415 h1:rATYsVSP89BOyS9/o+cdGZ8qU7AHh4frtS59nFPoX8k= github.com/CiscoM31/godata v0.0.0-20191007193734-c2c4ebb1b415/go.mod h1:tjaihnMBH6p5DVnGBksDQQHpErbrLvb9ek6cEWuyc7E= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= +github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.1.0 h1:Y2lUDsFKVRSYGojLJ1yLxSXdMmMYTYls0rCvoqmMUQk= +github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig/v3 v3.0.1 h1:RuaOafp+8qOLUPX1lInLfUrLc1MEVbnz7a40RLoixKY= github.com/Masterminds/sprig/v3 v3.0.1/go.mod h1:Cp7HwZjmqKrC+Y7XqSJOU2yRvAJRGLiohfgz5ZJj8+4= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Masterminds/sprig/v3 v3.1.0 h1:j7GpgZ7PdFqNsmncycTHsLmVPf5/3wJtlgW9TNDYD9Y= +github.com/Masterminds/sprig/v3 v3.1.0/go.mod h1:ONGMf7UfYGAbMXCZmQLy8x3lCDIPrEZE/rU8pmrbihA= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7-0.20191101173118-65519b62243c/go.mod h1:7xhjOwRV2+0HXGmM0jxaEu+ZiXJFoVZOTfL/dmqbrD8= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w= github.com/RoaringBitmap/roaring v0.4.21 h1:WJ/zIlNX4wQZ9x8Ey33O1UaD9TCTakYsdLFSBcTwH+8= github.com/RoaringBitmap/roaring v0.4.21/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/UnnoTed/fileb0x v1.1.4 h1:IUgFzgBipF/ujNx9wZgkrKOF3oltUuXMSoaejrBws+A= github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ9cgOiZs= -github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/ajg/form v0.0.0-20160822230020-523a5da1a92f/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= @@ -90,14 +87,6 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190808125512-07798873deee/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= -github.com/anacrolix/envpprof v0.0.0-20180404065416-323002cec2fa/go.mod h1:KgHhUaQMc8cC0+cEflSgCFNFbKwi5h54gqtVn8yhP7c= -github.com/anacrolix/envpprof v1.0.0/go.mod h1:KgHhUaQMc8cC0+cEflSgCFNFbKwi5h54gqtVn8yhP7c= -github.com/anacrolix/missinggo v1.1.2-0.20190815015349-b888af804467/go.mod h1:MBJu3Sk/k3ZfGYcS7z18gwfu72Ey/xopPFJJbTi5yIo= -github.com/anacrolix/missinggo v1.2.1/go.mod h1:J5cMhif8jPmFoC3+Uvob3OXXNIhOUikzMt+uUjeM21Y= -github.com/anacrolix/missinggo/perf v1.0.0/go.mod h1:ljAFWkBuzkO12MQclXzZrosP5urunoLS0Cbvb4V0uMQ= -github.com/anacrolix/sync v0.2.0/go.mod h1:BbecHL6jDSExojhNtgTFSBcdGerzNc64tz3DCOj/I0g= -github.com/anacrolix/tagflag v0.0.0-20180109131632-2146c8d41bf0/go.mod h1:1m2U/K6ZT+JZG0+bdMK6qauP49QT4wE5pmhJXOKKCHw= -github.com/anacrolix/utp v0.0.0-20180219060659-9e0e1d1d0572/go.mod h1:MDwc+vsGEq7RMw6lr2GKOEqjWny5hO5OZXRVNaBJ2Dk= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= @@ -110,18 +99,16 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496 h1:zV3ejI06GQ59hwDQAvmK1qxOQGB3WuVTRoY0okPTAv0= +github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee h1:3T/l+vMotQ7cDSLWNAn2Vg1SAQ3mdyLgBWWBitSS3uU= github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee/go.mod h1:u7Wtt4WATGGgae9mURNGQQqxAudPKrxfsbSDSGOso+g= -github.com/asim/go-awsxray v0.0.0-20161209120537-0d8a60b6e205/go.mod h1:frVmN4PtXUuL1EbZn0uL4PHSTKNKFnbMpBIhngqMuNQ= -github.com/asim/go-bson v0.0.0-20160318195205-84522947cabd/go.mod h1:L59ZX7HuzTbNzFBt8g3SJkRraj+GBOgvLAfJYJUcQ5w= -github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.20.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.25.31/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.29.26/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= +github.com/aws/aws-sdk-go v1.23.19/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.33.19/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-xray-sdk-go v0.9.4/go.mod h1:XtMKdBQfpVut+tJEwI7+dJFRxxRdxHDyVNp2tHXRq04= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= -github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -155,30 +142,30 @@ github.com/bmatcuk/doublestar v1.1.1 h1:YroD6BJCZBYx06yYFEWvUuKVWQn3vLLQAVmDmvTS github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= -github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= -github.com/bradfitz/iter v0.0.0-20190303215204-33e6a9893b0c/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= -github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= -github.com/bwmarrin/discordgo v0.20.1/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= +github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/bwmarrin/discordgo v0.20.2/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= +github.com/caddyserver/certmagic v0.10.6/go.mod h1:Y8jcUBctgk/IhpAzlHKfimZNyXCkfGgRTC0orl8gROQ= +github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/reflex v0.2.0 h1:6d9WpWJseKjJvZEevKP7Pk42nPx2+BUTqmhNk8wZPwM= -github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/cheggaaa/pb v1.0.28/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= -github.com/cloudflare/cloudflare-go v0.10.6/go.mod h1:dcRl7AXBH5Bf7QFTBVc3TRzwvotSeO4AlnMhuxORAX8= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -194,11 +181,9 @@ github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.18+incompatible h1:Zz1aXgDrFFi1nadh58tA9ktt06cmPTwNNP3dXwIq1lE= github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-oidc v2.2.1+incompatible h1:mh48q/BqXqgjVHpy2ZY7WnWAbenxRjsz9N1i1YxjHAk= github.com/coreos/go-oidc v2.2.1+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -219,25 +204,22 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cs3org/go-cs3apis v0.0.0-20200306065539-29abc33f5be0 h1:jTKILSBtDm0GEw3FtXPxc5wxGpaw2pxzREg1GBV9LIQ= -github.com/cs3org/go-cs3apis v0.0.0-20200306065539-29abc33f5be0/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= -github.com/cs3org/reva v0.1.0 h1:PYzDejKm/+xG3OTS2WgzBxcksVogEGmPgjJVegwSR2c= -github.com/cs3org/reva v0.1.0/go.mod h1:8j6QyyAq9Kjj7RPfJb7M1aEmw5DmsuCJKUULXxYOyRo= +github.com/cs3org/cato v0.0.0-20200626150132-28a40e643719/go.mod h1:XJEZ3/EQuI3BXTp/6DUzFr850vlxq11I6satRtz0YQ4= +github.com/cs3org/go-cs3apis v0.0.0-20200730121022-c4f3d4f7ddfd h1:uMaudkC7znaiIKT9rxIhoRYzrhTg1Nc78X7XEqhmjSk= +github.com/cs3org/go-cs3apis v0.0.0-20200730121022-c4f3d4f7ddfd/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= +github.com/cs3org/reva v1.1.0 h1:Gih6ECHvMMGSx523SFluFlDmNMuhYelXYShdWvjvW38= +github.com/cs3org/reva v1.1.0/go.mod h1:fBzTrNuAKdQ62ybjpdu8nyhBin90/3/3s6DGQDCdBp4= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d h1:SwD98825d6bdB+pEuTxWOXiSjBrHdOl/UVp75eI7JT8= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= github.com/cznic/strutil v0.0.0-20181122101858-275e90344537 h1:MZRmHqDBd0vxNwenEbKSQqRVT24d3C05ft8kduSwlqM= github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= -github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -245,28 +227,23 @@ github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQ github.com/dnaeon/go-vcr v0.0.0-20180814043457-aafff18a5cc2/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/dnsimple/dnsimple-go v0.30.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v1.4.2-0.20190710153559-aa8249ae1b8b/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.4.2-0.20191101170500-ac7306503d23/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v0.0.0-20180713052910-9f541cc9db5d/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/ef-ds/deque v1.0.4-0.20190904040645-54cb57c252a1/go.mod h1:HvODWzv6Y6kBf3Ah2WzN1bHjDUezGLaAhwuWVwfpEJs= -github.com/eknkc/basex v1.0.0/go.mod h1:k/F/exNEHFdbs3ZHuasoP2E7zeWwZblG84Y7Z59vQRo= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20181003060214-f58a169a71a5/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.0.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= +github.com/eventials/go-tus v0.0.0-20200718001131-45c7ec8f5d59/go.mod h1:XYuK1S5+kS6FGhlIUFuZFPvWiSrOIoLk6+ro33Xce3Y= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= @@ -275,36 +252,29 @@ github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqL github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/forestgiant/sliceutil v0.0.0-20160425183142-94783f95db6c/go.mod h1:pFdJbAhRf7rh6YYMUdIQGyzne6zYL1tCUW8QV2B3UfY= -github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsouza/go-dockerclient v1.4.4/go.mod h1:PrwszSL5fbmsESocROrOGq/NULMXRw+bajY0ltzD6MA= github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+4np9qfPbb+znGc= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 h1:Ujru1hufTHVb++eG6OuNDKMxZnGIvF6o/u8q/8h2+I4= github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= -github.com/go-acme/lego/v3 v3.3.0/go.mod h1:iGSY2vQrvQs3WezicSB/oVbO2eCrD88dpWPwb1qLqu0= -github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= -github.com/go-chi/chi v4.1.0+incompatible h1:ETj3cggsVIY2Xao5ExCu6YhEh5MD6JTfcBzS37R260w= -github.com/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-acme/lego/v3 v3.4.0/go.mod h1:xYbLDuxq3Hy4bMUT1t9JIuz6GWIWb3m5X+TeTHYaT7M= +github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= +github.com/go-bindata/go-bindata v3.1.1+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= +github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= +github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= @@ -315,65 +285,227 @@ github.com/go-git/go-billy/v5 v5.0.0 h1:7NQHvd9FVid8VL4qVUMm8XifBK+2xCoZ2lSk0agR github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-git-fixtures/v4 v4.0.1 h1:q+IFMfLx200Q3scvt2hN79JsEzy4AmBTp/pqnefH+Bc= github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= -github.com/go-git/go-git/v5 v5.0.0 h1:k5RWPm4iJwYtfWoxIJy4wJX9ON7ihPeZZYC1fLYDnpg= -github.com/go-git/go-git/v5 v5.0.0/go.mod h1:oYD8y9kWsGINPFJoLdaScGCN6dlKg23blmClfZwtUVA= +github.com/go-git/go-git/v5 v5.1.0 h1:HxJn9g/E7eYvKW3Fm7Jt4ee8LXfPOm/H1cdDu8vEssk= +github.com/go-git/go-git/v5 v5.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= -github.com/go-log/log v0.1.0/go.mod h1:4mBwpdRMFLiuXZDCwU2lKQFsoSCo72j3HqBK9d81N2M= +github.com/go-ldap/ldap/v3 v3.2.3/go.mod h1:iYS1MdmrmceOJ1QOTnRXrIs7i3kloqtmGQjRvjKpyMg= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-redsync/redsync v1.3.1/go.mod h1:qxZwM5JOimfq8y98Wk2+c8dKtxJgG5/yIl2ODz2E5Dk= +github.com/go-ozzo/ozzo-validation/v4 v4.2.1 h1:XALUNshPYumA7UShB7iM3ZVlqIBn0jfwjqAMIoyE1N0= +github.com/go-ozzo/ozzo-validation/v4 v4.2.1/go.mod h1:2NKgrcHl3z6cJs+3Oo940FPRiTzuqKbvfrL2RxCj6Ew= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stomp/stomp v2.0.3+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.6 h1:UHSEyLZUwX9Qoi99vVwvewiMC8mM2bf7XEM2nqvzEn8= github.com/go-test/deep v1.0.6/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= +github.com/gobuffalo/buffalo v0.12.8-0.20181004233540-fac9bb505aa8/go.mod h1:sLyT7/dceRXJUxSsE813JTQtA3Eb1vjxWfo/N//vXIY= +github.com/gobuffalo/buffalo v0.13.0/go.mod h1:Mjn1Ba9wpIbpbrD+lIDMy99pQ0H0LiddMIIDGse7qT4= +github.com/gobuffalo/buffalo-plugins v1.0.2/go.mod h1:pOp/uF7X3IShFHyobahTkTLZaeUXwb0GrUTb9ngJWTs= +github.com/gobuffalo/buffalo-plugins v1.0.4/go.mod h1:pWS1vjtQ6uD17MVFWf7i3zfThrEKWlI5+PYLw/NaDB4= +github.com/gobuffalo/buffalo-plugins v1.4.3/go.mod h1:uCzTY0woez4nDMdQjkcOYKanngeUVRO2HZi7ezmAjWY= +github.com/gobuffalo/buffalo-plugins v1.5.1/go.mod h1:jbmwSZK5+PiAP9cC09VQOrGMZFCa/P0UMlIS3O12r5w= +github.com/gobuffalo/buffalo-plugins v1.6.4/go.mod h1:/+N1aophkA2jZ1ifB2O3Y9yGwu6gKOVMtUmJnbg+OZI= +github.com/gobuffalo/buffalo-plugins v1.6.5/go.mod h1:0HVkbgrVs/MnPZ/FOseDMVanCTm2RNcdM0PuXcL1NNI= +github.com/gobuffalo/buffalo-plugins v1.6.7/go.mod h1:ZGZRkzz2PiKWHs0z7QsPBOTo2EpcGRArMEym6ghKYgk= +github.com/gobuffalo/buffalo-plugins v1.6.9/go.mod h1:yYlYTrPdMCz+6/+UaXg5Jm4gN3xhsvsQ2ygVatZV5vw= +github.com/gobuffalo/buffalo-plugins v1.6.11/go.mod h1:eAA6xJIL8OuynJZ8amXjRmHND6YiusVAaJdHDN1Lu8Q= +github.com/gobuffalo/buffalo-plugins v1.8.2/go.mod h1:9te6/VjEQ7pKp7lXlDIMqzxgGpjlKoAcAANdCgoR960= +github.com/gobuffalo/buffalo-plugins v1.8.3/go.mod h1:IAWq6vjZJVXebIq2qGTLOdlXzmpyTZ5iJG5b59fza5U= +github.com/gobuffalo/buffalo-plugins v1.9.4/go.mod h1:grCV6DGsQlVzQwk6XdgcL3ZPgLm9BVxlBmXPMF8oBHI= +github.com/gobuffalo/buffalo-plugins v1.10.0/go.mod h1:4osg8d9s60txLuGwXnqH+RCjPHj9K466cDFRl3PErHI= +github.com/gobuffalo/buffalo-plugins v1.11.0/go.mod h1:rtIvAYRjYibgmWhnjKmo7OadtnxuMG5ZQLr25ozAzjg= +github.com/gobuffalo/buffalo-pop v1.0.5/go.mod h1:Fw/LfFDnSmB/vvQXPvcXEjzP98Tc+AudyNWUBWKCwQ8= +github.com/gobuffalo/envy v1.6.4/go.mod h1:Abh+Jfw475/NWtYMEt+hnJWRiC8INKWibIMyNt1w2Mc= +github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.6/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.7/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.8/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.9/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/gobuffalo/envy v1.6.10/go.mod h1:X0CFllQjTV5ogsnUrg+Oks2yTI+PU2dGYBJOEI2D1Uo= +github.com/gobuffalo/envy v1.6.11/go.mod h1:Fiq52W7nrHGDggFPhn2ZCcHw4u/rqXkqo+i7FB6EAcg= +github.com/gobuffalo/envy v1.6.12/go.mod h1:qJNrJhKkZpEW0glh5xP2syQHH5kgdmgsKss2Kk8PTP0= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/events v1.0.3/go.mod h1:Txo8WmqScapa7zimEQIwgiJBvMECMe9gJjsKNPN3uZw= +github.com/gobuffalo/events v1.0.7/go.mod h1:z8txf6H9jWhQ5Scr7YPLWg/cgXBRj8Q4uYI+rsVCCSQ= +github.com/gobuffalo/events v1.0.8/go.mod h1:A5KyqT1sA+3GJiBE4QKZibse9mtOcI9nw8gGrDdqYGs= +github.com/gobuffalo/events v1.1.3/go.mod h1:9yPGWYv11GENtzrIRApwQRMYSbUgCsZ1w6R503fCfrk= +github.com/gobuffalo/events v1.1.4/go.mod h1:09/YRRgZHEOts5Isov+g9X2xajxdvOAcUuAHIX/O//A= +github.com/gobuffalo/events v1.1.5/go.mod h1:3YUSzgHfYctSjEjLCWbkXP6djH2M+MLaVRzb4ymbAK0= +github.com/gobuffalo/events v1.1.7/go.mod h1:6fGqxH2ing5XMb3EYRq9LEkVlyPGs4oO/eLzh+S8CxY= +github.com/gobuffalo/events v1.1.8/go.mod h1:UFy+W6X6VbCWS8k2iT81HYX65dMtiuVycMy04cplt/8= +github.com/gobuffalo/events v1.1.9/go.mod h1:/0nf8lMtP5TkgNbzYxR6Bl4GzBy5s5TebgNTdRfRbPM= +github.com/gobuffalo/fizz v1.0.12/go.mod h1:C0sltPxpYK8Ftvf64kbsQa2yiCZY4RZviurNxXdAKwc= +github.com/gobuffalo/flect v0.0.0-20180907193754-dc14d8acaf9f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181002182613-4571df4b1daf/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181007231023-ae7ed6bfe683/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181018182602-fd24a256709f/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181019110701-3d6f0b585514/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181024204909-8f6be1a8c6c2/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181104133451-1f6e9779237a/go.mod h1:rCiQgmAE4axgBNl3jZWzS5rETRYTGOsrixTRaCPzNdA= +github.com/gobuffalo/flect v0.0.0-20181114183036-47375f6d8328/go.mod h1:0HvNbHdfh+WOvDSIASqJOSxTOWSxCCUF++k/Y53v9rI= +github.com/gobuffalo/flect v0.0.0-20181210151238-24a2b68e0316/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= +github.com/gobuffalo/flect v0.0.0-20190104192022-4af577e09bf2/go.mod h1:en58vff74S9b99Eg42Dr+/9yPu437QjlNsO/hBYPuOk= +github.com/gobuffalo/flect v0.0.0-20190117212819-a62e61d96794/go.mod h1:397QT6v05LkZkn07oJXXT6y9FCfwC8Pug0WA2/2mE9k= +github.com/gobuffalo/genny v0.0.0-20180924032338-7af3a40f2252/go.mod h1:tUTQOogrr7tAQnhajMSH6rv1BVev34H2sa1xNHMy94g= +github.com/gobuffalo/genny v0.0.0-20181003150629-3786a0744c5d/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= +github.com/gobuffalo/genny v0.0.0-20181005145118-318a41a134cc/go.mod h1:WAd8HmjMVrnkAZbmfgH5dLBUchsZfqzp/WS5sQz+uTM= +github.com/gobuffalo/genny v0.0.0-20181007153042-b8de7d566757/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= +github.com/gobuffalo/genny v0.0.0-20181012161047-33e5f43d83a6/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= +github.com/gobuffalo/genny v0.0.0-20181017160347-90a774534246/go.mod h1:+oG5Ljrw04czAHbPXREwaFojJbpUvcIy4DiOnbEJFTA= +github.com/gobuffalo/genny v0.0.0-20181024195656-51392254bf53/go.mod h1:o9GEH5gn5sCKLVB5rHFC4tq40rQ3VRUzmx6WwmaqISE= +github.com/gobuffalo/genny v0.0.0-20181025145300-af3f81d526b8/go.mod h1:uZ1fFYvdcP8mu0B/Ynarf6dsGvp7QFIpk/QACUuFUVI= +github.com/gobuffalo/genny v0.0.0-20181027191429-94d6cfb5c7fc/go.mod h1:x7SkrQQBx204Y+O9EwRXeszLJDTaWN0GnEasxgLrQTA= +github.com/gobuffalo/genny v0.0.0-20181027195209-3887b7171c4f/go.mod h1:JbKx8HSWICu5zyqWOa0dVV1pbbXOHusrSzQUprW6g+w= +github.com/gobuffalo/genny v0.0.0-20181106193839-7dcb0924caf1/go.mod h1:x61yHxvbDCgQ/7cOAbJCacZQuHgB0KMSzoYcw5debjU= +github.com/gobuffalo/genny v0.0.0-20181107223128-f18346459dbe/go.mod h1:utQD3aKKEsdb03oR+Vi/6ztQb1j7pO10N3OBoowRcSU= +github.com/gobuffalo/genny v0.0.0-20181114215459-0a4decd77f5d/go.mod h1:kN2KZ8VgXF9VIIOj/GM0Eo7YK+un4Q3tTreKOf0q1ng= +github.com/gobuffalo/genny v0.0.0-20181119162812-e8ff4adce8bb/go.mod h1:BA9htSe4bZwBDJLe8CUkoqkypq3hn3+CkoHqVOW718E= +github.com/gobuffalo/genny v0.0.0-20181127225641-2d959acc795b/go.mod h1:l54xLXNkteX/PdZ+HlgPk1qtcrgeOr3XUBBPDbH+7CQ= +github.com/gobuffalo/genny v0.0.0-20181128191930-77e34f71ba2a/go.mod h1:FW/D9p7cEEOqxYA71/hnrkOWm62JZ5ZNxcNIVJEaWBU= +github.com/gobuffalo/genny v0.0.0-20181203165245-fda8bcce96b1/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= +github.com/gobuffalo/genny v0.0.0-20181203201232-849d2c9534ea/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= +github.com/gobuffalo/genny v0.0.0-20181206121324-d6fb8a0dbe36/go.mod h1:wpNSANu9UErftfiaAlz1pDZclrYzLtO5lALifODyjuM= +github.com/gobuffalo/genny v0.0.0-20181207164119-84844398a37d/go.mod h1:y0ysCHGGQf2T3vOhCrGHheYN54Y/REj0ayd0Suf4C/8= +github.com/gobuffalo/genny v0.0.0-20181211165820-e26c8466f14d/go.mod h1:sHnK+ZSU4e2feXP3PA29ouij6PUEiN+RCwECjCTB3yM= +github.com/gobuffalo/genny v0.0.0-20190104222617-a71664fc38e7/go.mod h1:QPsQ1FnhEsiU8f+O0qKWXz2RE4TiDqLVChWkBuh1WaY= +github.com/gobuffalo/genny v0.0.0-20190112155932-f31a84fcacf5/go.mod h1:CIaHCrSIuJ4il6ka3Hub4DR4adDrGoXGEEt2FbBxoIo= +github.com/gobuffalo/github_flavored_markdown v1.0.4/go.mod h1:uRowCdK+q8d/RF0Kt3/DSalaIXbb0De/dmTqMQdkQ4I= +github.com/gobuffalo/github_flavored_markdown v1.0.5/go.mod h1:U0643QShPF+OF2tJvYNiYDLDGDuQmJZXsf/bHOJPsMY= +github.com/gobuffalo/github_flavored_markdown v1.0.7/go.mod h1:w93Pd9Lz6LvyQXEG6DktTPHkOtCbr+arAD5mkwMzXLI= +github.com/gobuffalo/httptest v1.0.2/go.mod h1:7T1IbSrg60ankme0aDLVnEY0h056g9M1/ZvpVThtB7E= +github.com/gobuffalo/licenser v0.0.0-20180924033006-eae28e638a42/go.mod h1:Ubo90Np8gpsSZqNScZZkVXXAo5DGhTb+WYFIjlnog8w= +github.com/gobuffalo/licenser v0.0.0-20181025145548-437d89de4f75/go.mod h1:x3lEpYxkRG/XtGCUNkio+6RZ/dlOvLzTI9M1auIwFcw= +github.com/gobuffalo/licenser v0.0.0-20181027200154-58051a75da95/go.mod h1:BzhaaxGd1tq1+OLKObzgdCV9kqVhbTulxOpYbvMQWS0= +github.com/gobuffalo/licenser v0.0.0-20181109171355-91a2a7aac9a7/go.mod h1:m+Ygox92pi9bdg+gVaycvqE8RVSjZp7mWw75+K5NPHk= +github.com/gobuffalo/licenser v0.0.0-20181128165715-cc7305f8abed/go.mod h1:oU9F9UCE+AzI/MueCKZamsezGOOHfSirltllOVeRTAE= +github.com/gobuffalo/licenser v0.0.0-20181203160806-fe900bbede07/go.mod h1:ph6VDNvOzt1CdfaWC+9XwcBnlSTBz2j49PBwum6RFaU= +github.com/gobuffalo/licenser v0.0.0-20181211173111-f8a311c51159/go.mod h1:ve/Ue99DRuvnTaLq2zKa6F4KtHiYf7W046tDjuGYPfM= +github.com/gobuffalo/logger v0.0.0-20181022175615-46cfb361fc27/go.mod h1:8sQkgyhWipz1mIctHF4jTxmJh1Vxhp7mP8IqbljgJZo= +github.com/gobuffalo/logger v0.0.0-20181027144941-73d08d2bb969/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= +github.com/gobuffalo/logger v0.0.0-20181027193913-9cf4dd0efe46/go.mod h1:7uGg2duHKpWnN4+YmyKBdLXfhopkAdVM6H3nKbyFbz8= +github.com/gobuffalo/logger v0.0.0-20181109185836-3feeab578c17/go.mod h1:oNErH0xLe+utO+OW8ptXMSA5DkiSEDW1u3zGIt8F9Ew= +github.com/gobuffalo/logger v0.0.0-20181117211126-8e9b89b7c264/go.mod h1:5etB91IE0uBlw9k756fVKZJdS+7M7ejVhmpXXiSFj0I= +github.com/gobuffalo/logger v0.0.0-20181127160119-5b956e21995c/go.mod h1:+HxKANrR9VGw9yN3aOAppJKvhO05ctDi63w4mDnKv2U= +github.com/gobuffalo/makr v1.1.5/go.mod h1:Y+o0btAH1kYAMDJW/TX3+oAXEu0bmSLLoC9mIFxtzOw= +github.com/gobuffalo/mapi v1.0.0/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/meta v0.0.0-20181018155829-df62557efcd3/go.mod h1:XTTOhwMNryif3x9LkTTBO/Llrveezd71u3quLd0u7CM= +github.com/gobuffalo/meta v0.0.0-20181018192820-8c6cef77dab3/go.mod h1:E94EPzx9NERGCY69UWlcj6Hipf2uK/vnfrF4QD0plVE= +github.com/gobuffalo/meta v0.0.0-20181025145500-3a985a084b0a/go.mod h1:YDAKBud2FP7NZdruCSlmTmDOZbVSa6bpK7LJ/A/nlKg= +github.com/gobuffalo/meta v0.0.0-20181114191255-b130ebedd2f7/go.mod h1:K6cRZ29ozr4Btvsqkjvg5nDFTLOgTqf03KA70Ks0ypE= +github.com/gobuffalo/meta v0.0.0-20181127070345-0d7e59dd540b/go.mod h1:RLO7tMvE0IAKAM8wny1aN12pvEKn7EtkBLkUZR00Qf8= +github.com/gobuffalo/meta v0.0.0-20190120163247-50bbb1fa260d/go.mod h1:KKsH44nIK2gA8p0PJmRT9GvWJUdphkDUA8AJEvFWiqM= +github.com/gobuffalo/mw-basicauth v1.0.3/go.mod h1:dg7+ilMZOKnQFHDefUzUHufNyTswVUviCBgF244C1+0= +github.com/gobuffalo/mw-contenttype v0.0.0-20180802152300-74f5a47f4d56/go.mod h1:7EvcmzBbeCvFtQm5GqF9ys6QnCxz2UM1x0moiWLq1No= +github.com/gobuffalo/mw-csrf v0.0.0-20180802151833-446ff26e108b/go.mod h1:sbGtb8DmDZuDUQoxjr8hG1ZbLtZboD9xsn6p77ppcHo= +github.com/gobuffalo/mw-forcessl v0.0.0-20180802152810-73921ae7a130/go.mod h1:JvNHRj7bYNAMUr/5XMkZaDcw3jZhUZpsmzhd//FFWmQ= +github.com/gobuffalo/mw-i18n v0.0.0-20180802152014-e3060b7e13d6/go.mod h1:91AQfukc52A6hdfIfkxzyr+kpVYDodgAeT5cjX1UIj4= +github.com/gobuffalo/mw-paramlogger v0.0.0-20181005191442-d6ee392ec72e/go.mod h1:6OJr6VwSzgJMqWMj7TYmRUqzNe2LXu/W1rRW4MAz/ME= +github.com/gobuffalo/mw-tokenauth v0.0.0-20181001105134-8545f626c189/go.mod h1:UqBF00IfKvd39ni5+yI5MLMjAf4gX7cDKN/26zDOD6c= +github.com/gobuffalo/packd v0.0.0-20181027182251-01ad393492c8/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= +github.com/gobuffalo/packd v0.0.0-20181027190505-aafc0d02c411/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= +github.com/gobuffalo/packd v0.0.0-20181027194105-7ae579e6d213/go.mod h1:SmdBdhj6uhOsg1Ui4SFAyrhuc7U4VCildosO5IDJ3lc= +github.com/gobuffalo/packd v0.0.0-20181031195726-c82734870264/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= +github.com/gobuffalo/packd v0.0.0-20181104210303-d376b15f8e96/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= +github.com/gobuffalo/packd v0.0.0-20181111195323-b2e760a5f0ff/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= +github.com/gobuffalo/packd v0.0.0-20181114190715-f25c5d2471d7/go.mod h1:Yf2toFaISlyQrr5TfO3h6DB9pl9mZRmyvBGQb/aQ/pI= +github.com/gobuffalo/packd v0.0.0-20181124090624-311c6248e5fb/go.mod h1:Foenia9ZvITEvG05ab6XpiD5EfBHPL8A6hush8SJ0o8= +github.com/gobuffalo/packd v0.0.0-20181207120301-c49825f8f6f4/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= +github.com/gobuffalo/packd v0.0.0-20181212173646-eca3b8fd6687/go.mod h1:LYc0TGKFBBFTRC9dg2pcRcMqGCTMD7T2BIMP7OBuQAA= +github.com/gobuffalo/packr v1.13.7/go.mod h1:KkinLIn/n6+3tVXMwg6KkNvWwVsrRAz4ph+jgpk3Z24= +github.com/gobuffalo/packr v1.15.0/go.mod h1:t5gXzEhIviQwVlNx/+3SfS07GS+cZ2hn76WLzPp6MGI= +github.com/gobuffalo/packr v1.15.1/go.mod h1:IeqicJ7jm8182yrVmNbM6PR4g79SjN9tZLH8KduZZwE= +github.com/gobuffalo/packr v1.19.0/go.mod h1:MstrNkfCQhd5o+Ct4IJ0skWlxN8emOq8DsoT1G98VIU= +github.com/gobuffalo/packr v1.20.0/go.mod h1:JDytk1t2gP+my1ig7iI4NcVaXr886+N0ecUga6884zw= +github.com/gobuffalo/packr v1.21.0/go.mod h1:H00jGfj1qFKxscFJSw8wcL4hpQtPe1PfU2wa6sg/SR0= +github.com/gobuffalo/packr v1.22.0/go.mod h1:Qr3Wtxr3+HuQEwWqlLnNW4t1oTvK+7Gc/Rnoi/lDFvA= +github.com/gobuffalo/packr/v2 v2.0.0-rc.8/go.mod h1:y60QCdzwuMwO2R49fdQhsjCPv7tLQFR0ayzxxla9zes= +github.com/gobuffalo/packr/v2 v2.0.0-rc.9/go.mod h1:fQqADRfZpEsgkc7c/K7aMew3n4aF1Kji7+lIZeR98Fc= +github.com/gobuffalo/packr/v2 v2.0.0-rc.10/go.mod h1:4CWWn4I5T3v4c1OsJ55HbHlUEKNWMITG5iIkdr4Px4w= +github.com/gobuffalo/packr/v2 v2.0.0-rc.11/go.mod h1:JoieH/3h3U4UmatmV93QmqyPUdf4wVM9HELaHEu+3fk= +github.com/gobuffalo/packr/v2 v2.0.0-rc.12/go.mod h1:FV1zZTsVFi1DSCboO36Xgs4pzCZBjB/tDV9Cz/lSaR8= +github.com/gobuffalo/packr/v2 v2.0.0-rc.13/go.mod h1:2Mp7GhBFMdJlOK8vGfl7SYtfMP3+5roE39ejlfjw0rA= +github.com/gobuffalo/packr/v2 v2.0.0-rc.14/go.mod h1:06otbrNvDKO1eNQ3b8hst+1010UooI2MFg+B2Ze4MV8= +github.com/gobuffalo/packr/v2 v2.0.0-rc.15/go.mod h1:IMe7H2nJvcKXSF90y4X1rjYIRlNMJYCxEhssBXNZwWs= +github.com/gobuffalo/plush v3.7.16+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.20+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.21+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.22+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.23+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.30+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.31+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plush v3.7.32+incompatible/go.mod h1:rQ4zdtUUyZNqULlc6bqd5scsPfLKfT0+TGMChgduDvI= +github.com/gobuffalo/plushgen v0.0.0-20181128164830-d29dcb966cb2/go.mod h1:r9QwptTFnuvSaSRjpSp4S2/4e2D3tJhARYbvEBcKSb4= +github.com/gobuffalo/plushgen v0.0.0-20181203163832-9fc4964505c2/go.mod h1:opEdT33AA2HdrIwK1aibqnTJDVVKXC02Bar/GT1YRVs= +github.com/gobuffalo/plushgen v0.0.0-20181207152837-eedb135bd51b/go.mod h1:Lcw7HQbEVm09sAQrCLzIxuhFbB3nAgp4c55E+UlynR0= +github.com/gobuffalo/plushgen v0.0.0-20190104222512-177cd2b872b3/go.mod h1:tYxCozi8X62bpZyKXYHw1ncx2ZtT2nFvG42kuLwYjoc= +github.com/gobuffalo/pop v4.8.2+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= +github.com/gobuffalo/pop v4.8.3+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= +github.com/gobuffalo/pop v4.8.4+incompatible/go.mod h1:DwBz3SD5SsHpTZiTubcsFWcVDpJWGsxjVjMPnkiThWg= +github.com/gobuffalo/release v1.0.35/go.mod h1:VtHFAKs61vO3wboCec5xr9JPTjYyWYcvaM3lclkc4x4= +github.com/gobuffalo/release v1.0.38/go.mod h1:VtHFAKs61vO3wboCec5xr9JPTjYyWYcvaM3lclkc4x4= +github.com/gobuffalo/release v1.0.42/go.mod h1:RPs7EtafH4oylgetOJpGP0yCZZUiO4vqHfTHJjSdpug= +github.com/gobuffalo/release v1.0.52/go.mod h1:RPs7EtafH4oylgetOJpGP0yCZZUiO4vqHfTHJjSdpug= +github.com/gobuffalo/release v1.0.53/go.mod h1:FdF257nd8rqhNaqtDWFGhxdJ/Ig4J7VcS3KL7n/a+aA= +github.com/gobuffalo/release v1.0.54/go.mod h1:Pe5/RxRa/BE8whDpGfRqSI7D1a0evGK1T4JDm339tJc= +github.com/gobuffalo/release v1.0.61/go.mod h1:mfIO38ujUNVDlBziIYqXquYfBF+8FDHUjKZgYC1Hj24= +github.com/gobuffalo/release v1.0.72/go.mod h1:NP5NXgg/IX3M5XmHmWR99D687/3Dt9qZtTK/Lbwc1hU= +github.com/gobuffalo/release v1.1.1/go.mod h1:Sluak1Xd6kcp6snkluR1jeXAogdJZpFFRzTYRs/2uwg= +github.com/gobuffalo/release v1.1.3/go.mod h1:CuXc5/m+4zuq8idoDt1l4va0AXAn/OSs08uHOfMVr8E= +github.com/gobuffalo/release v1.1.6/go.mod h1:18naWa3kBsqO0cItXZNJuefCKOENpbbUIqRL1g+p6z0= +github.com/gobuffalo/shoulders v1.0.1/go.mod h1:V33CcVmaQ4gRUmHKwq1fiTXuf8Gp/qjQBUL5tHPmvbA= +github.com/gobuffalo/syncx v0.0.0-20181120191700-98333ab04150/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gobuffalo/syncx v0.0.0-20181120194010-558ac7de985f/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gobuffalo/tags v2.0.11+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= +github.com/gobuffalo/tags v2.0.14+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= +github.com/gobuffalo/tags v2.0.15+incompatible/go.mod h1:9XmhOkyaB7UzvuY4UoZO4s67q8/xRMVJEaakauVQYeY= +github.com/gobuffalo/uuid v2.0.3+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= +github.com/gobuffalo/uuid v2.0.4+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= +github.com/gobuffalo/uuid v2.0.5+incompatible/go.mod h1:ErhIzkRhm0FtRuiE/PeORqcw4cVi1RtSpnwYrxuvkfE= +github.com/gobuffalo/validate v2.0.3+incompatible/go.mod h1:N+EtDe0J8252BgfzQUChBgfd6L93m9weay53EWFVsMM= +github.com/gobuffalo/x v0.0.0-20181003152136-452098b06085/go.mod h1:WevpGD+5YOreDJznWevcn8NTmQEW5STSBgIkpkjzqXc= +github.com/gobuffalo/x v0.0.0-20181007152206-913e47c59ca7/go.mod h1:9rDPXaB3kXdKWzMc4odGQQdG2e2DIEmANy5aSJ9yesY= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.3/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/gofrs/uuid v3.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang/gddo v0.0.0-20180828051604-96d2a289f41e/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4= +github.com/golang/gddo v0.0.0-20190904175337-72a348e765d2/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -391,8 +523,7 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/gomodule/redigo v1.8.2/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -405,80 +536,70 @@ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= -github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= -github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/pat v0.0.0-20180118222023-199c85a7f6d1/go.mod h1:YeAe0gNeiNT5hoiZRI4yiOky6jVdNvfO2N6Kav/HmxY= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.1.2/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= +github.com/gorilla/sessions v1.1.3/go.mod h1:8KCfur6+4Mqcc6S0FEfKuN15Vl5MgXW92AE8ovaJD0w= github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0 h1:0IKlLyQ3Hs9nDaiK5cSHAGmcQEIC8l2Ts1u6x5Dfrqg= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.14.4 h1:IOPK2xMPP3aV6/NPt4jt//ELFo3Vv8sDVD8j3+tleDU= github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= -github.com/hako/branca v0.0.0-20180808000428-10b799466ada/go.mod h1:tOPn4gvKEUWqIJNE+zpTeTALaRAXnrRqqSnPlO3VpEo= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.2.0/go.mod h1:1SIkFYi2ZTXUE5Kgt179+4hH33djo11+0Eo2XgTAtkw= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.2.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= -github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -488,56 +609,60 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.1.5/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= -github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/huandu/xstrings v1.3.0 h1:gvV6jG9dTgFEncxo+AF7PH6MZXi/vZl25owA/8Dg8Wo= github.com/huandu/xstrings v1.3.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= +github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= -github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= +github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jmoiron/sqlx v0.0.0-20180614180643-0dae4fefe7c0/go.mod h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU= +github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/joncalhoun/qson v0.0.0-20170526102502-8a9cab3a62b1/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= +github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= +github.com/karrick/godirwalk v1.7.7/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= @@ -547,10 +672,10 @@ github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kljensen/snowball v0.6.0/go.mod h1:27N7E8fVU5H68RlUmnWwZCfxgt4POBJfENGMvNRhldw= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= +github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -558,8 +683,7 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -569,146 +693,134 @@ github.com/labstack/echo v3.2.1+incompatible h1:J2M7YArHx4gi8p/3fDw8tX19SXhBCoRp github.com/labstack/echo v3.2.1+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= github.com/labstack/gommon v0.2.7 h1:2qOPq/twXDrQ6ooBGrn3mrmVOC+biLlatwgIu8lbzRM= github.com/labstack/gommon v0.2.7/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4= -github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA= github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= -github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gNfqwTxjbE7s3Vb8s= -github.com/lucas-clemente/quic-go v0.13.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= github.com/lucas-clemente/quic-go v0.14.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= +github.com/luna-duclos/instrumentedsql v1.1.2/go.mod h1:4LGbEqDnopzNAiyxPPDXhLspyunZxgPTMJBKtC6U0BQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/markbates/deplist v1.0.4/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= +github.com/markbates/deplist v1.0.5/go.mod h1:gRRbPbbuA8TmMiRvaOzUlRfzfjeCCBqX2A6arxN01MM= +github.com/markbates/going v1.0.2/go.mod h1:UWCk3zm0UKefHZ7l8BNqi26UyiEMniznk8naLdTcy6c= +github.com/markbates/grift v1.0.4/go.mod h1:wbmtW74veyx+cgfwFhlnnMWqhoz55rnHR47oMXzsyVs= +github.com/markbates/hmax v1.0.0/go.mod h1:cOkR9dktiESxIMu+65oc/r/bdY4bE8zZw3OLhLx0X2c= +github.com/markbates/inflect v1.0.0/go.mod h1:oTeZL2KHA7CUX6X+fovmK9OvIOFuqu0TwdQrZjLTh88= +github.com/markbates/inflect v1.0.1/go.mod h1:uv3UVNBe5qBIfCm8O8Q+DW+S1EopeyINj+Ikhc7rnCk= +github.com/markbates/inflect v1.0.3/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= +github.com/markbates/inflect v1.0.4/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= +github.com/markbates/oncer v0.0.0-20180924031910-e862a676800b/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/oncer v0.0.0-20180924034138-723ad0170a46/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/oncer v0.0.0-20181014194634-05fccaae8fc4/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/refresh v1.4.10/go.mod h1:NDPHvotuZmTmesXxr95C9bjlw1/0frJwtME2dzcVKhc= +github.com/markbates/safe v1.0.0/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/markbates/sigtx v1.0.0/go.mod h1:QF1Hv6Ic6Ca6W+T+DL0Y/ypborFKyvUY9HmuCD4VeTc= +github.com/markbates/willie v1.0.9/go.mod h1:fsrFVWl91+gXpx/6dv715j7i11fYPfZ9ZGfH0DQzY7w= github.com/marten-seemann/chacha20 v0.2.0/go.mod h1:HSdjFau7GzYRj+ahFNwsO3ouVJr1HFkWoEwNDb4TMtE= github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGDAUWqna+CNTrI= -github.com/marten-seemann/qtls v0.3.2/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= +github.com/mattn/goveralls v0.0.5/go.mod h1:Xg2LHi51faXLyKXwsndxiW6uxEEQT9+3sjGzzwU4xy0= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mennanov/fieldmask-utils v0.3.2 h1:AkHXYBEOoyvocl8YhzoStATRnto5OH1PY4Rj78I5Cuc= github.com/mennanov/fieldmask-utils v0.3.2/go.mod h1:JpaanSp6Ql5A8dGktEFxTmA9uBXmz3F+2LAXDZwiimU= -github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= -github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= -github.com/mholt/certmagic v0.9.1/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= -github.com/mholt/certmagic v0.9.3/go.mod h1:nu8jbsbtwK4205EDH/ZUMTKsfYpJA1Q7MKXHfgTihNw= -github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= -github.com/micro/cli v0.2.0/go.mod h1:jRT9gmfVKWSS6pkKcXQ8YhUyj6bzwxK8Fp5b0Y7qNnk= -github.com/micro/cli/v2 v2.1.1/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= github.com/micro/cli/v2 v2.1.2 h1:43J1lChg/rZCC1rvdqZNFSQDrGT7qfMrtp6/ztpIkEM= github.com/micro/cli/v2 v2.1.2/go.mod h1:EguNh6DAoWKm9nmk+k/Rg0H3lQnDxqzu5x5srOtGtYg= -github.com/micro/go-micro v1.16.0/go.mod h1:A0F58bHLh2m0LAI9QyhvmbN8c1cxhAZo3cM6s+iDsrM= -github.com/micro/go-micro v1.17.1/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= -github.com/micro/go-micro v1.18.0 h1:gP70EZVHpJuUIT0YWth192JmlIci+qMOEByHm83XE9E= -github.com/micro/go-micro v1.18.0/go.mod h1:klwUJL1gkdY1MHFyz+fFJXn52dKcty4hoe95Mp571AA= -github.com/micro/go-micro/v2 v2.0.0/go.mod h1:v7QP5UhKRt37ixjJe8DouWmg0/eE6dltr5h0idJ9BpE= -github.com/micro/go-micro/v2 v2.6.0 h1:HH6uEqTu6pkBtAlwAqQW2sf33640iEa1s9puGIctpO0= -github.com/micro/go-micro/v2 v2.6.0/go.mod h1:60HMKlDN4ShZDJRrlgdcAmkCWNhQbYv+CDG3r7iLE34= -github.com/micro/go-plugins v1.5.1 h1:swcFD7ynCTUo98APqIEIbPu2XMd6yVGTnI8PqdnCwOQ= -github.com/micro/go-plugins v1.5.1/go.mod h1:jcxejzJCAMH731cQHbS/hncyKe0rxAbzKkibj8glad4= -github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1 h1:7IkXfl94MdLZQwk0lNmu9Cg5WP42Zak9EtQMeN4SvVs= -github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.0.1/go.mod h1:QrkcwcDtIs2hIJpIEhozekyf6Rfz5C36kFI8+zzCpX0= -github.com/micro/mdns v0.3.0/go.mod h1:KJ0dW7KmicXU2BV++qkLlmHYcVv7/hHnbtguSWt9Aoc= -github.com/micro/micro v1.16.0 h1:qCZV20WoTOtJ1IyLU/a0A0BMSertfu+iOj/2AJ4Uvrk= -github.com/micro/micro v1.16.0/go.mod h1:TO5Ng0KidbfRYIxVM4Q3deZ0A+qwRyP9WeXp+k2fWNA= -github.com/micro/protoc-gen-micro v1.0.0 h1:qKh5S3I1RfenhIs5mqDFJLwRlRDlgin7XWiUKZbpwLM= -github.com/micro/protoc-gen-micro v1.0.0/go.mod h1:C8ij4DJhapBmypcT00AXdb0cZ675/3PqUO02buWWqbE= +github.com/micro/go-micro/v2 v2.9.1 h1:+S9koIrNWARjpP6k2TZ7kt0uC9zUJtNXzIdZTZRms7Q= +github.com/micro/go-micro/v2 v2.9.1/go.mod h1:x55ZM3Puy0FyvvkR3e0ha0xsE9DFwfPSUMWAIbFY0SY= +github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.9.1 h1:IaZUsLp0Omb/ozDnRKEvVY56C0UocBdPxxg2S2Pk2j0= +github.com/micro/go-plugins/wrapper/trace/opencensus/v2 v2.9.1/go.mod h1:26UmOLM/I487NqTg3n6zJiBrYmIb684M2Zp4WH98XzU= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/gox v1.0.1 h1:x0jD3dcHk9a9xPSDN6YEL4xL6Qz0dvNYm8yZqui5chI= +github.com/mitchellh/gox v1.0.1/go.mod h1:ED6BioOGXMswlXa2zxfh/xdd5QhwYliBFn9V18Ap4z4= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.0.0/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/monoculum/formam v0.0.0-20180901015400-4e68be1d79ba/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q= github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/moul/http2curl v0.0.0-20170919181001-9ac6cf4d929b/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.0/go.mod h1:r5y0WgCag0dTj/qiHkHrXAcKQ/f5GMOZaEGdoxxnJ4I= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats-server/v2 v2.1.6 h1:qAaHZaS8pRRNQLFaiBA1rq5WynyEGp9DFgmMfoaiXGY= github.com/nats-io/nats-server/v2 v2.1.6/go.mod h1:BL1NOtaBQ5/y97djERRVWNouMW7GT3gxnmbE/eC8u8A= -github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nats.go v1.9.2 h1:oDeERm3NcZVrPpdR/JpGdWHMv3oJ8yY30YwxKq+DU2s= github.com/nats-io/nats.go v1.9.2/go.mod h1:AjGArbfyR50+afOUotNX2Xs5SYHf+CoOa5HH1eEl2HE= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.4 h1:aEsHIssIk6ETN5m2/MD8Y4B2X7FfXrBAUdkyRvbVYzA= github.com/nats-io/nkeys v0.1.4/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nats-io/stan.go v0.5.0/go.mod h1:dYqB+vMN3C2F9pT1FRQpg9eHbjPj6mP0yYuyBNuXHZE= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= +github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nlopes/slack v0.6.0/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nlopes/slack v0.6.1-0.20191106133607-d06c2a2b3249/go.mod h1:JzQ9m3PMAqcpeCam7UaHSuBuupz7CmpjehYMayT6YOk= github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= -github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= +github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= -github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= -github.com/ogier/pflag v0.0.1 h1:RW6JSWSu/RkSatfcLtogGfFgpim5p7ARQ10ECk5O750= -github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= @@ -717,16 +829,15 @@ github.com/oleiade/reflections v1.0.0/go.mod h1:RbATFBbKYkVdqmSFtx13Bb/tVhR0lgOB github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= @@ -734,165 +845,197 @@ github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5X github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= -github.com/ory/fosite v0.30.4/go.mod h1:Lq9qQ9Sl6mcea2Tt8J7PU+wUeFYPZ+vg7N3zPVKGbN8= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +github.com/ory/fosite v0.29.0/go.mod h1:0atSZmXO7CAcs6NPMI/Qtot8tmZYj04Nddoold4S2h0= +github.com/ory/fosite v0.32.2/go.mod h1:UeBhRgW6nAjTcd8S7kAo0IFsY/rTPyOXPq/t8N20Q8I= +github.com/ory/go-acc v0.0.0-20181118080137-ddc355013f90/go.mod h1:sxnvPCxChFuSmTJGj8FdMupeq1BezCiEpDjTUXQ4hf4= +github.com/ory/go-acc v0.2.1/go.mod h1:0omgy2aa3nDBJ45VAKeLHH8ccPBudxLeic4xiDRtug0= github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8TWB0yn9KNs= +github.com/ory/gojsonreference v0.0.0-20190720135523-6b606c2d8ee8/go.mod h1:wsH1C4nIeeQClDtD5AH7kF1uTS6zWyqfjVDTmB0Em7A= +github.com/ory/gojsonschema v1.1.1-0.20190919112458-f254ca73d5e9/go.mod h1:BNZpdJgB74KOLSsWFvzw6roXg1I6O51WO8roMmW+T7Y= +github.com/ory/herodot v0.6.2/go.mod h1:3BOneqcyBsVybCPAJoi92KN2BpJHcmDqAMcAAaJiJow= +github.com/ory/viper v1.5.6/go.mod h1:TYmpFpKLxjQwvT4f0QPpkOn4sDXU1kDgAwJpgLYiQ28= +github.com/ory/x v0.0.85/go.mod h1:s44V8t3xyjWZREcU+mWlp4h302rTuM4aLXcW+y5FbQ8= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= -github.com/owncloud/ocis-hello v0.1.0-alpha1/go.mod h1:tU2bOB7DjuXZ+ju+5A+7pUHmTfPIYUk3tMflqHTBTpE= -github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= -github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= -github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= -github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170 h1:MYfyffPyTZbTofJjAz3LSQUIaKKcjjBBBIJGaEAkP8g= -github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170/go.mod h1:s894msGwDsULmsROHkbsXFCP/eSqDcteDFUntZOiJdc= -github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 h1:wk/7aAUITTrM192TFoIDq4fqzJQtFOQ0dDdSRkJ25SU= -github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363/go.mod h1:/h0ceztOoFc3KAnm8nqZI4zwsaaZK9q4MTgtintwsXc= +github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200812103920-db41b5a3d14d h1:eruHqxLfS3fiPO1ylg60T++wShVqtayI4LxUhwOEuN4= +github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200812103920-db41b5a3d14d/go.mod h1:FSzIvhx9HcZcq4jgNaDowNvM7PTX/XCyoMvyfzidUpE= +github.com/owncloud/ocis-pkg/v2 v2.3.0 h1:bdDgfPkPdL3D6bGKhQ56pfwT1XdiKBtQ34qErVyXzys= +github.com/owncloud/ocis-pkg/v2 v2.3.0/go.mod h1:FSzIvhx9HcZcq4jgNaDowNvM7PTX/XCyoMvyfzidUpE= +github.com/owncloud/ocis-settings v0.1.1-0.20200819091309-d59cdd5469ac h1:QGIa2920ZNNgcMVgLXrk9C/reDViVHFG1troCFu9gok= +github.com/owncloud/ocis-settings v0.1.1-0.20200819091309-d59cdd5469ac/go.mod h1:pvB0Mk24i0Gf6bmiIFEINgOFvViXtzVyossovxMRv0s= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/parnurzeal/gorequest v0.2.15/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.4.0 h1:u3Z1r+oOXJIkxqw34zVhyPgjBsm6X2wn21NWs/HfSeg= +github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/xattr v0.4.1/go.mod h1:W2cGD0TBEus7MkUgv0tNZ9JutLtVO3cXu+IBRuHqnFs= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.2.1 h1:JnMpQc6ppsNgw9QPAGF6Dod479itz7lvlsMzzNayLOI= github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= +github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0 h1:L+1lyG48J1zAQXA3RBX/nG/B3gjlHq0zTt2tlbJLyCY= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.5 h1:3+auTFlqw+ZaQYJARz6ArODtkaIwtvBTx3N2NehQlL8= github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.6/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/statsd_exporter v0.15.0/go.mod h1:Dv8HnkoLQkeEjkIE4/2ndAA7WL1zHKK7WMqFQqu72rw= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= github.com/restic/calens v0.2.0 h1:LVNAtmFc+Pb4ODX66qdX1T3Di1P0OTLyUsVyvM/xD7E= github.com/restic/calens v0.2.0/go.mod h1:UXwyAKS4wsgUZGEc7NrzzygJbLsQZIo3wl+62Q1wvmU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.0.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= -github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= -github.com/rs/zerolog v1.18.0 h1:CbAm3kP2Tptby1i9sYy2MGRg0uxIN9cyDb59Ys7W8z8= -github.com/rs/zerolog v1.18.0/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= +github.com/rs/zerolog v1.19.0 h1:hYz4ZVdUgjXTBUmrkrw55j1nHx68LfOKIQk5IYtyScg= +github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= +github.com/rubenv/sql-migrate v0.0.0-20190212093014-1007f53448d7/go.mod h1:WS0rl9eEliYI8DPnr3TOwz4439pay+qNgzJoVya/DmY= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= -github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8= github.com/sacloud/libsacloud v1.26.1/go.mod h1:79ZwATmHLIFZIMd7sxA3LwzVy/B77uj3LDoToVTxDoQ= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= +github.com/santhosh-tekuri/jsonschema/v2 v2.1.0/go.mod h1:yzJzKUGV4RbWqWIBBP4wSOBqavX5saE02yirLS0OTyg= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/analytics-go v3.0.1+incompatible/go.mod h1:C7CYBtQWk4vRk2RyLu0qOcbHJ18E3F1HV2C/8JvKN48= +github.com/segmentio/backo-go v0.0.0-20160424052352-204274ad699c/go.mod h1:kJ9mm9YmoWSkk+oQ+5Cj8DEoRCX2JT6As4kEtIIOp1M= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sethgrid/pester v0.0.0-20190127155807-68a33a018ad0/go.mod h1:Ad7IjTpvzZO8Fl0vh9AzQ+j/jYZfyp2diGwI8m5q+ns= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20170515013102-78fb10f4a5f8/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/octicon v0.0.0-20180602230221-c42b0e3b24d9/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.1.0/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= +github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= -github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI= +github.com/spf13/viper v1.3.1/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs= github.com/spf13/viper v1.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw= github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/steveyen/gtreap v0.1.0 h1:CjhzTa274PyJLJuMZwIzCO1PfC00oRa8d1Kc78bFXJM= github.com/steveyen/gtreap v0.1.0/go.mod h1:kl/5J7XbrOmlIbYIXdRHDDE5QxHqpk0cmkT7Z4dM9/Y= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.1.1/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -901,9 +1044,11 @@ github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpP github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog= +github.com/tidwall/gjson v1.3.2/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= +github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/sjson v1.0.4/go.mod h1:bURseu1nuBkFpIES5cz6zBtjmYeOQmEESshn7VpF15Y= github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY= -github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -916,99 +1061,116 @@ github.com/tredoe/fileutil v1.0.0/go.mod h1:PBayWPFCURwkmW0u6E8E8C6Jtd9ZzWq/U1iM github.com/tredoe/goutil v0.0.0-20200111155331-68cefb6d3cdc/go.mod h1:dp4VPOLeEFYbsf1ikgd+uytWDnpCdMiTHMg6mh7hHuQ= github.com/tredoe/osutil v1.0.5 h1:mfXjHBJU46GoJDOUcHyV895fauUuVikR9U8yRbGBrqw= github.com/tredoe/osutil v1.0.5/go.mod h1:DDO4G4Mwys6NJi5JmEVLnfFbQWIfVVri8L6HuXb/v98= +github.com/tus/tusd v1.1.0/go.mod h1:3DWPOdeCnjBwKtv98y5dSws3itPqfce5TVa0s59LRiA= +github.com/tus/tusd v1.1.1-0.20200416115059-9deabf9d80c2/go.mod h1:ygrT4B9ZSb27dx3uTnobX5nOFDnutBL6iWKLH4+KpA0= github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v1.5.0/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/unrolled/secure v0.0.0-20180918153822-f340ee86eb8b/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= +github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IAdsi/kV7+Es7y+pXALeV3h7G6dQF6mNYjcLA= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 h1:gKMu1Bf6QINDnvyZuTaACm9ofY+PRh+5vFz4oxBZeF8= github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw= +github.com/vimeo/go-util v1.2.0/go.mod h1:s13SMDTSO7AjH1nbgp707mfN5JFIWUFDU5MDDuRRtKs= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= -github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.10 h1:NotGKqX0KwQ72NUzqrjZq5ipPNDQex9lo3WpaS8L2sc= github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= -github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= -github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c/go.mod h1:UrdRz5enIKZ63MEE3IF9l2/ebyx59GyGgPi+tICQdmM= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= -go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -gocloud.dev v0.17.0/go.mod h1:tIHTRdR1V5dlD8sTkzYdTGizBJ314BDykJ8KmadEXwo= -gocloud.dev/pubsub/rabbitpubsub v0.17.0/go.mod h1:7o1XYDiIC+b0mmcwJuofsDg08t0DtU2ubfn7C/Uz7Y0= golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180830192347-182538f80094/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181024171144-74cb1d3d52f4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181025113841-85e1b3f9139a/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181106171534-e4dc69e5b2fd/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190130090550-b01c7a725664/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190102171810-8d7daa0c54b3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de h1:ikNHVSjEfnvz6sxdSPCaPt572qowuyMDMJLLm3Db3ig= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -1019,21 +1181,34 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181207154023-610586996380/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1046,32 +1221,33 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1079,26 +1255,39 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180831094639-fa5fdf94c789/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180921163948-d47a0f339242/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180927150500-dad3d9fb7b6e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181005133103-4497e2df6f9e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181011152604-fa43e7bc11ba/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181021155630-eda9bb28ed51/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181022134430-8a28ead16f52/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181024145615-5cd93ef61a7c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181025063200-d989b31c8746/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026064943-731415f00dce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181106135930-3a76605856fd/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181206074257-70b957f3b65e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181221143128-b4a75ba826a6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1108,27 +1297,36 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190710143415-6ec70d6a5542/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191113165036-4c7a9d0fe056/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 h1:ogLJMz+qpzav7lGMh10LMvAkM/fAoGlaiiHYiFYdm80= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1138,53 +1336,96 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqG golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181003024731-2f84ea8ef872/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181006002542-f60d9635b16a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181008205924-a2b3f7f249e9/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181013182035-5e66757b835f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181017214349-06f26fdaaa28/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181024171208-a2dc47679d30/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181026183834-f60e5f99f081/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181105230042-78dc5bac0cac/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181107215632-34b416bd17b3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181114190951-94339b83286c/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181119130350-139d099f6620/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181127195227-b4e97c0ed882/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181127232545-e782529d0ddd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181203210056-e5f3ab76ea4b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181205224935-3576414c54a4/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181206194817-bcd4e47d0288/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181207183836-8bc39b988060/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181212172921-837e80568c09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190102213336-ca9055ed7d04/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190104182027-498d95493402/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190111214448-fc1d57b08d7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190118193359-16909d206f00/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624190245-7f2218787638/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190711191110-9a621aea19f8/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200811215021-48a8ffc5b207 h1:8Kg+JssU1jBZs8GIrL5pl4nVyaqyyhdmHAR4D1zGErg= +golang.org/x/tools v0.0.0-20200811215021-48a8ffc5b207/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1192,17 +1433,24 @@ google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190626174449-989357319d63/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190708153700-3bdd9d9f5532/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb h1:nAFaltAMbNVA0rixtwvdnqgSVLX3HFUUvMkEklmzbYM= google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= @@ -1223,13 +1471,11 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= +gopkg.in/Acconut/lockfile.v1 v1.1.0/go.mod h1:6UCz3wJ8tSFUsPR6uP/j8uegEtDuEEqFxlpi0JI4Umw= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= -gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= -gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= @@ -1238,37 +1484,25 @@ gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= -gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= +gopkg.in/gorp.v1 v1.7.2/go.mod h1:Wo3h+DBQZIxATwftsglhdD/62zRFPhGhTiu5jUJmCaw= +gopkg.in/h2non/gock.v1 v1.0.14/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= -gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= -gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= -gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= -gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= -gopkg.in/ldap.v2 v2.5.1/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk= -gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ= +gopkg.in/mail.v2 v2.0.0-20180731213649-a0242b2233b4/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= -gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= -gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.1.9/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= -gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= -gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= +gopkg.in/square/go-jose.v2 v2.5.0 h1:OZ4sdq+Y+SHfYB7vfthi1Ei8b0vkP8ZPQgUfUwdUSqo= +gopkg.in/square/go-jose.v2 v2.5.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/telegram-bot-api.v4 v4.6.4/go.mod h1:5DpGO5dbumb40px+dXcwCpcjmeHNYLpk0bp3XRNvWDM= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= @@ -1280,27 +1514,24 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c h1:grhR+C34yXImVGp7EzNk+DTIk+323eIUWOmEevy6bDo= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.0.0-20191109101513-0171b7c15da1/go.mod h1:VJq7+38rpM4TSUbRiZX4P5UVAKK2UQpNQLZClkFQkpE= -k8s.io/apimachinery v0.0.0-20191109100837-dffb012825f2/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= -k8s.io/apimachinery v0.0.0-20191111054156-6eb29fdf75dc/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= -k8s.io/client-go v11.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.5 h1:nI5egYTGJakVyOryqLs1cQO5dO0ksin5XXs2pspk75k= +honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= From f5f356f00152541333649a57610292dd5b3fc4e4 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 19 Aug 2020 11:54:57 +0200 Subject: [PATCH 252/407] Rename variable to comply with golang var naming rules --- pkg/service/v0/settings.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/service/v0/settings.go b/pkg/service/v0/settings.go index f96061eac8..48d26b49d9 100644 --- a/pkg/service/v0/settings.go +++ b/pkg/service/v0/settings.go @@ -9,7 +9,7 @@ import ( ) const ( - settingUuidProfileLanguage = "aa8cfbe5-95d4-4f7e-a032-c3c01f5f062f" + settingUUIDProfileLanguage = "aa8cfbe5-95d4-4f7e-a032-c3c01f5f062f" ) // RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. @@ -108,7 +108,7 @@ func generateBundleProfileRequest() settings.SaveBundleRequest { DisplayName: "Profile", Settings: []*settings.Setting{ { - Id: settingUuidProfileLanguage, + Id: settingUUIDProfileLanguage, Name: "language", DisplayName: "Language", Description: "User language", From 95348e8bd8d4014f438d508522677f2040e0807b Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 19 Aug 2020 11:16:07 +0000 Subject: [PATCH 253/407] Automated changelog update [skip ci] --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01d57283ff..919b6c0639 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The following sections list the changes in ocis-accounts unreleased. * Bugfix - Atomic Requests: [#82](https://github.com/owncloud/ocis-accounts/pull/82) * Bugfix - Unescape value for prefix query: [#76](https://github.com/owncloud/ocis-accounts/pull/76) +* Change - Adapt to new ocis-settings data model: [#87](https://github.com/owncloud/ocis-accounts/pull/87) ## Details @@ -25,6 +26,15 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/76 + +* Change - Adapt to new ocis-settings data model: [#87](https://github.com/owncloud/ocis-accounts/pull/87) + + Ocis-settings introduced UUIDs and less verbose endpoint and message type names. This PR + adjusts ocis-accounts accordingly. + + https://github.com/owncloud/ocis-accounts/pull/87 + https://github.com/owncloud/ocis-settings/pull/46 + # Changelog for [0.2.0] (2020-08-19) The following sections list the changes in ocis-accounts 0.2.0. From f4be471c734525fcee85c3a2c5a0a241807816e0 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 19 Aug 2020 15:08:16 +0200 Subject: [PATCH 254/407] Adjust README casing --- Readme.md => README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Readme.md => README.md (100%) diff --git a/Readme.md b/README.md similarity index 100% rename from Readme.md rename to README.md From 2ae2cf40c9c9e80266741aff21d171a9f066ba01 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 19 Aug 2020 13:23:54 +0200 Subject: [PATCH 255/407] Add permissions for language to default roles of settings service --- go.mod | 2 +- go.sum | 7 ++ pkg/service/v0/settings.go | 145 +++++++++++++++++++++++++++++++++++++ 3 files changed, 153 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index cbc62a5141..c694dce5d2 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/onsi/ginkgo v1.10.1 // indirect github.com/onsi/gomega v1.7.0 // indirect github.com/owncloud/ocis-pkg/v2 v2.3.0 - github.com/owncloud/ocis-settings v0.1.1-0.20200819091309-d59cdd5469ac + github.com/owncloud/ocis-settings v0.1.1-0.20200819111829-a987d53702a8 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 github.com/rs/zerolog v1.19.0 diff --git a/go.sum b/go.sum index 2edeae39ac..1846214692 100644 --- a/go.sum +++ b/go.sum @@ -599,6 +599,7 @@ github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerX github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.0.0 h1:21MVWPKDphxa7ineQQTrCU5brh7OuVVAzGOCnnCPtE8= github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -723,8 +724,10 @@ github.com/markbates/willie v1.0.9/go.mod h1:fsrFVWl91+gXpx/6dv715j7i11fYPfZ9ZGf github.com/marten-seemann/chacha20 v0.2.0/go.mod h1:HSdjFau7GzYRj+ahFNwsO3ouVJr1HFkWoEwNDb4TMtE= github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGDAUWqna+CNTrI= github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= +github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -868,6 +871,10 @@ github.com/owncloud/ocis-pkg/v2 v2.3.0 h1:bdDgfPkPdL3D6bGKhQ56pfwT1XdiKBtQ34qErV github.com/owncloud/ocis-pkg/v2 v2.3.0/go.mod h1:FSzIvhx9HcZcq4jgNaDowNvM7PTX/XCyoMvyfzidUpE= github.com/owncloud/ocis-settings v0.1.1-0.20200819091309-d59cdd5469ac h1:QGIa2920ZNNgcMVgLXrk9C/reDViVHFG1troCFu9gok= github.com/owncloud/ocis-settings v0.1.1-0.20200819091309-d59cdd5469ac/go.mod h1:pvB0Mk24i0Gf6bmiIFEINgOFvViXtzVyossovxMRv0s= +github.com/owncloud/ocis-settings v0.1.1-0.20200819105511-cb578e5039f4 h1:Y+ZHRPL04FFwvelhdkvWyXhAbT7l5tJmAEruAdyRZ80= +github.com/owncloud/ocis-settings v0.1.1-0.20200819105511-cb578e5039f4/go.mod h1:pvB0Mk24i0Gf6bmiIFEINgOFvViXtzVyossovxMRv0s= +github.com/owncloud/ocis-settings v0.1.1-0.20200819111829-a987d53702a8 h1:Et/p4+iG1GnnPZhz5HGPb0HaOsbBkwL6rI72+fr1YDc= +github.com/owncloud/ocis-settings v0.1.1-0.20200819111829-a987d53702a8/go.mod h1:pvB0Mk24i0Gf6bmiIFEINgOFvViXtzVyossovxMRv0s= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/parnurzeal/gorequest v0.2.15/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE= diff --git a/pkg/service/v0/settings.go b/pkg/service/v0/settings.go index 48d26b49d9..698cf1057d 100644 --- a/pkg/service/v0/settings.go +++ b/pkg/service/v0/settings.go @@ -6,6 +6,7 @@ import ( mclient "github.com/micro/go-micro/v2/client" olog "github.com/owncloud/ocis-pkg/v2/log" settings "github.com/owncloud/ocis-settings/pkg/proto/v0" + ssvc "github.com/owncloud/ocis-settings/pkg/service/v0" ) const ( @@ -30,6 +31,17 @@ func RegisterSettingsBundles(l *olog.Logger) { l.Info().Str("bundle", res.Bundle.Id).Msg("Successfully registered bundle") } } + + permissionRequests := generateProfilePermissionsRequests() + for i := range permissionRequests { + res, err := service.AddSettingToBundle(context.Background(), &permissionRequests[i]) + bundleId := permissionRequests[i].BundleId + if err != nil { + l.Err(err).Str("bundle", bundleId).Str("setting", permissionRequests[i].Setting.Id).Msg("Error adding setting to bundle") + } else { + l.Info().Str("bundle", bundleId).Str("setting", res.Setting.Id).Msg("Successfully added setting to bundle") + } + } } var languageSetting = settings.Setting_SingleChoiceValue{ @@ -121,3 +133,136 @@ func generateBundleProfileRequest() settings.SaveBundleRequest { }, } } + +func generateProfilePermissionsRequests() []settings.AddSettingToBundleRequest { + // TODO: we don't want to set up permissions for settings manually in the future. Instead each setting should come with + // a set of default permissions for the default roles (guest, user, admin). + return []settings.AddSettingToBundleRequest{ + { + BundleId: ssvc.BundleUUIDRoleAdmin, + Setting: &settings.Setting{ + Id: "7d81f103-0488-4853-bce5-98dcce36d649", + Name: "language-create", + DisplayName: "Permission to set the language", + Resource: &settings.Resource{ + Type: settings.Resource_TYPE_SETTING, + Id: settingUUIDProfileLanguage, + }, + Value: &settings.Setting_PermissionValue{ + PermissionValue: &settings.Permission{ + Operation: settings.Permission_OPERATION_CREATE, + Constraint: settings.Permission_CONSTRAINT_OWN, + }, + }, + }, + }, + { + BundleId: ssvc.BundleUUIDRoleAdmin, + Setting: &settings.Setting{ + Id: "04ef2fd3-e724-48f6-a411-129dd461c820", + Name: "language-read", + DisplayName: "Permission to read the language", + Resource: &settings.Resource{ + Type: settings.Resource_TYPE_SETTING, + Id: settingUUIDProfileLanguage, + }, + Value: &settings.Setting_PermissionValue{ + PermissionValue: &settings.Permission{ + Operation: settings.Permission_OPERATION_READ, + Constraint: settings.Permission_CONSTRAINT_OWN, + }, + }, + }, + }, + { + BundleId: ssvc.BundleUUIDRoleAdmin, + Setting: &settings.Setting{ + Id: "30ac1e63-10e2-4ef8-bf0a-941cd5b56c5c", + Name: "language-update", + DisplayName: "Permission to update the language", + Resource: &settings.Resource{ + Type: settings.Resource_TYPE_SETTING, + Id: settingUUIDProfileLanguage, + }, + Value: &settings.Setting_PermissionValue{ + PermissionValue: &settings.Permission{ + Operation: settings.Permission_OPERATION_UPDATE, + Constraint: settings.Permission_CONSTRAINT_OWN, + }, + }, + }, + }, + { + BundleId: ssvc.BundleUUIDRoleUser, + Setting: &settings.Setting{ + Id: "640e00d2-4df8-41bd-b1c2-9f30a01e0e99", + Name: "language-create", + DisplayName: "Permission to set the language", + Resource: &settings.Resource{ + Type: settings.Resource_TYPE_SETTING, + Id: settingUUIDProfileLanguage, + }, + Value: &settings.Setting_PermissionValue{ + PermissionValue: &settings.Permission{ + Operation: settings.Permission_OPERATION_CREATE, + Constraint: settings.Permission_CONSTRAINT_OWN, + }, + }, + }, + }, + { + BundleId: ssvc.BundleUUIDRoleUser, + Setting: &settings.Setting{ + Id: "dcaeb961-da25-46f2-9892-731603a20d3b", + Name: "language-read", + DisplayName: "Permission to read the language", + Resource: &settings.Resource{ + Type: settings.Resource_TYPE_SETTING, + Id: settingUUIDProfileLanguage, + }, + Value: &settings.Setting_PermissionValue{ + PermissionValue: &settings.Permission{ + Operation: settings.Permission_OPERATION_READ, + Constraint: settings.Permission_CONSTRAINT_OWN, + }, + }, + }, + }, + { + BundleId: ssvc.BundleUUIDRoleUser, + Setting: &settings.Setting{ + Id: "e43f364c-ffa5-4080-9621-0d186632a169", + Name: "language-update", + DisplayName: "Permission to update the language", + Resource: &settings.Resource{ + Type: settings.Resource_TYPE_SETTING, + Id: settingUUIDProfileLanguage, + }, + Value: &settings.Setting_PermissionValue{ + PermissionValue: &settings.Permission{ + Operation: settings.Permission_OPERATION_UPDATE, + Constraint: settings.Permission_CONSTRAINT_OWN, + }, + }, + }, + }, + { + BundleId: ssvc.BundleUUIDRoleGuest, + Setting: &settings.Setting{ + Id: "ca878636-8b1a-4fae-8282-8617a4c13597", + Name: "language-read", + DisplayName: "Permission to read the language", + Resource: &settings.Resource{ + Type: settings.Resource_TYPE_SETTING, + Id: settingUUIDProfileLanguage, + }, + Value: &settings.Setting_PermissionValue{ + PermissionValue: &settings.Permission{ + Operation: settings.Permission_OPERATION_READ, + Constraint: settings.Permission_CONSTRAINT_OWN, + }, + }, + }, + }, + } +} From bd5bbc24778c28012f199d99c0b7b5284c963790 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 19 Aug 2020 13:28:09 +0200 Subject: [PATCH 256/407] Add changelog item --- .../unreleased/add-language-permissions-to-default-roles.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/unreleased/add-language-permissions-to-default-roles.md diff --git a/changelog/unreleased/add-language-permissions-to-default-roles.md b/changelog/unreleased/add-language-permissions-to-default-roles.md new file mode 100644 index 0000000000..55a2a81fc1 --- /dev/null +++ b/changelog/unreleased/add-language-permissions-to-default-roles.md @@ -0,0 +1,6 @@ +Change: Add permissions for language to default roles + +ocis-settings has default roles and exposes the respective bundle uuids. We now added +permissions for reading/writing the preferred language to the default roles. + +https://github.com/owncloud/ocis-accounts/pull/88 From e695ccc44083ff0a08c066a5dbbfedfe38feb1e6 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 19 Aug 2020 16:58:08 +0200 Subject: [PATCH 257/407] Make linter happy --- pkg/service/v0/settings.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/service/v0/settings.go b/pkg/service/v0/settings.go index 698cf1057d..e90cfc2696 100644 --- a/pkg/service/v0/settings.go +++ b/pkg/service/v0/settings.go @@ -35,11 +35,11 @@ func RegisterSettingsBundles(l *olog.Logger) { permissionRequests := generateProfilePermissionsRequests() for i := range permissionRequests { res, err := service.AddSettingToBundle(context.Background(), &permissionRequests[i]) - bundleId := permissionRequests[i].BundleId + bundleID := permissionRequests[i].BundleId if err != nil { - l.Err(err).Str("bundle", bundleId).Str("setting", permissionRequests[i].Setting.Id).Msg("Error adding setting to bundle") + l.Err(err).Str("bundle", bundleID).Str("setting", permissionRequests[i].Setting.Id).Msg("Error adding setting to bundle") } else { - l.Info().Str("bundle", bundleId).Str("setting", res.Setting.Id).Msg("Successfully added setting to bundle") + l.Info().Str("bundle", bundleID).Str("setting", res.Setting.Id).Msg("Successfully added setting to bundle") } } } From d9b8416a00c945adc9635da3fad40969170ae623 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 19 Aug 2020 16:18:47 +0000 Subject: [PATCH 258/407] Automated changelog update [skip ci] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 919b6c0639..24d5ff3ae0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The following sections list the changes in ocis-accounts unreleased. * Bugfix - Atomic Requests: [#82](https://github.com/owncloud/ocis-accounts/pull/82) * Bugfix - Unescape value for prefix query: [#76](https://github.com/owncloud/ocis-accounts/pull/76) * Change - Adapt to new ocis-settings data model: [#87](https://github.com/owncloud/ocis-accounts/pull/87) +* Change - Add permissions for language to default roles: [#88](https://github.com/owncloud/ocis-accounts/pull/88) ## Details @@ -35,6 +36,14 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/87 https://github.com/owncloud/ocis-settings/pull/46 + +* Change - Add permissions for language to default roles: [#88](https://github.com/owncloud/ocis-accounts/pull/88) + + Ocis-settings has default roles and exposes the respective bundle uuids. We now added + permissions for reading/writing the preferred language to the default roles. + + https://github.com/owncloud/ocis-accounts/pull/88 + # Changelog for [0.2.0] (2020-08-19) The following sections list the changes in ocis-accounts 0.2.0. From 9f51deb61d9e76cd5e3c246bbebc010fa087f482 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Thu, 20 Aug 2020 16:58:08 +0200 Subject: [PATCH 259/407] Prepare release 0.3.0 --- .../adapt-to-settings-data-model.md | 0 .../add-language-permissions-to-default-roles.md | 0 changelog/{unreleased => 0.3.0_2020-08-20}/atomic-requests.md | 0 changelog/{unreleased => 0.3.0_2020-08-20}/fix-prefix-query.md | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename changelog/{unreleased => 0.3.0_2020-08-20}/adapt-to-settings-data-model.md (100%) rename changelog/{unreleased => 0.3.0_2020-08-20}/add-language-permissions-to-default-roles.md (100%) rename changelog/{unreleased => 0.3.0_2020-08-20}/atomic-requests.md (100%) rename changelog/{unreleased => 0.3.0_2020-08-20}/fix-prefix-query.md (100%) diff --git a/changelog/unreleased/adapt-to-settings-data-model.md b/changelog/0.3.0_2020-08-20/adapt-to-settings-data-model.md similarity index 100% rename from changelog/unreleased/adapt-to-settings-data-model.md rename to changelog/0.3.0_2020-08-20/adapt-to-settings-data-model.md diff --git a/changelog/unreleased/add-language-permissions-to-default-roles.md b/changelog/0.3.0_2020-08-20/add-language-permissions-to-default-roles.md similarity index 100% rename from changelog/unreleased/add-language-permissions-to-default-roles.md rename to changelog/0.3.0_2020-08-20/add-language-permissions-to-default-roles.md diff --git a/changelog/unreleased/atomic-requests.md b/changelog/0.3.0_2020-08-20/atomic-requests.md similarity index 100% rename from changelog/unreleased/atomic-requests.md rename to changelog/0.3.0_2020-08-20/atomic-requests.md diff --git a/changelog/unreleased/fix-prefix-query.md b/changelog/0.3.0_2020-08-20/fix-prefix-query.md similarity index 100% rename from changelog/unreleased/fix-prefix-query.md rename to changelog/0.3.0_2020-08-20/fix-prefix-query.md From 22e2d9ca0553eac9b4a080ca05bb571490e2d0fd Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 21 Aug 2020 08:47:38 +0200 Subject: [PATCH 260/407] Update ocis-settings to 0.2.0 --- go.mod | 4 +++- go.sum | 21 +++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index c694dce5d2..16d12bb942 100644 --- a/go.mod +++ b/go.mod @@ -18,6 +18,8 @@ require ( github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/protobuf v1.4.2 github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect + github.com/huandu/xstrings v1.3.2 // indirect + github.com/imdario/mergo v0.3.11 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/mennanov/fieldmask-utils v0.3.2 github.com/micro/cli/v2 v2.1.2 @@ -27,7 +29,7 @@ require ( github.com/onsi/ginkgo v1.10.1 // indirect github.com/onsi/gomega v1.7.0 // indirect github.com/owncloud/ocis-pkg/v2 v2.3.0 - github.com/owncloud/ocis-settings v0.1.1-0.20200819111829-a987d53702a8 + github.com/owncloud/ocis-settings v0.2.0 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 github.com/rs/zerolog v1.19.0 diff --git a/go.sum b/go.sum index 1846214692..88f5b8f407 100644 --- a/go.sum +++ b/go.sum @@ -89,7 +89,7 @@ github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190808125512-07798873deee/go.mod github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= @@ -582,8 +582,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.14.4 h1:IOPK2xMPP3aV6/NPt4jt//ELFo3Vv8sDVD8j3+tleDU= -github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= +github.com/grpc-ecosystem/grpc-gateway v1.14.6 h1:8ERzHx8aj1Sc47mu9n/AksaKCSWrMchFtkdrS4BIj5o= +github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= @@ -729,6 +729,8 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= @@ -869,12 +871,8 @@ github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200812103920-db41b5a3d14d h1:eruHqxLf github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200812103920-db41b5a3d14d/go.mod h1:FSzIvhx9HcZcq4jgNaDowNvM7PTX/XCyoMvyfzidUpE= github.com/owncloud/ocis-pkg/v2 v2.3.0 h1:bdDgfPkPdL3D6bGKhQ56pfwT1XdiKBtQ34qErVyXzys= github.com/owncloud/ocis-pkg/v2 v2.3.0/go.mod h1:FSzIvhx9HcZcq4jgNaDowNvM7PTX/XCyoMvyfzidUpE= -github.com/owncloud/ocis-settings v0.1.1-0.20200819091309-d59cdd5469ac h1:QGIa2920ZNNgcMVgLXrk9C/reDViVHFG1troCFu9gok= -github.com/owncloud/ocis-settings v0.1.1-0.20200819091309-d59cdd5469ac/go.mod h1:pvB0Mk24i0Gf6bmiIFEINgOFvViXtzVyossovxMRv0s= -github.com/owncloud/ocis-settings v0.1.1-0.20200819105511-cb578e5039f4 h1:Y+ZHRPL04FFwvelhdkvWyXhAbT7l5tJmAEruAdyRZ80= -github.com/owncloud/ocis-settings v0.1.1-0.20200819105511-cb578e5039f4/go.mod h1:pvB0Mk24i0Gf6bmiIFEINgOFvViXtzVyossovxMRv0s= -github.com/owncloud/ocis-settings v0.1.1-0.20200819111829-a987d53702a8 h1:Et/p4+iG1GnnPZhz5HGPb0HaOsbBkwL6rI72+fr1YDc= -github.com/owncloud/ocis-settings v0.1.1-0.20200819111829-a987d53702a8/go.mod h1:pvB0Mk24i0Gf6bmiIFEINgOFvViXtzVyossovxMRv0s= +github.com/owncloud/ocis-settings v0.2.0 h1:pncwKQQdWGyUwO/+O10vcIrgGWWBAF9/PPWOCnD0DU4= +github.com/owncloud/ocis-settings v0.2.0/go.mod h1:7+fRwpXe+njcsO0d9Bpxx3V8ZsF99JrL6jCeD9QuxUk= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/parnurzeal/gorequest v0.2.15/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE= @@ -1295,6 +1293,7 @@ golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1447,7 +1446,6 @@ google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= @@ -1458,8 +1456,7 @@ google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4 google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb h1:nAFaltAMbNVA0rixtwvdnqgSVLX3HFUUvMkEklmzbYM= -google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece h1:1YM0uhfumvoDu9sx8+RyWwTI63zoCQvI23IYFRlvte0= From e44c15be0661a2cb7b72f7e3299096e1d51af3b1 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 21 Aug 2020 07:17:10 +0000 Subject: [PATCH 261/407] Automated changelog update [skip ci] --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24d5ff3ae0..def1bcbc43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ -# Changelog for [unreleased] (UNRELEASED) +# Changelog for [0.3.0] (2020-08-20) -The following sections list the changes in ocis-accounts unreleased. +The following sections list the changes in ocis-accounts 0.3.0. -[unreleased]: https://github.com/owncloud/ocis-accounts/compare/v0.2.0...master +[0.3.0]: https://github.com/owncloud/ocis-accounts/compare/v0.2.0...v0.3.0 ## Summary From a3128cb26c18f088f31ae7a599597c76b0e43b6d Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Thu, 20 Aug 2020 12:19:19 +0545 Subject: [PATCH 262/407] [tests-only] advance commit id of ocis & phoenix --- .drone.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.star b/.drone.star index 7ac566d882..dead457939 100644 --- a/.drone.star +++ b/.drone.star @@ -1,7 +1,7 @@ def main(ctx): before = [ testing(ctx), - UITests(ctx, 'master', 'd6ed9f3e60f5cfc4eeb261d91a6d1607045904ee', 'master', '0ba693cea50cafdb7e6b4e3f559a70cbd4d04bbe') + UITests(ctx, 'master', 'a7ce0c8172f445d9b945d4c4bf531f1271926df6', 'master', '0075dbd7b14360de203ec2a327c6b3f5c5844364') ] stages = [ From e2544b2b4d5d02e0139eacd41d6f8d885325dfb5 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Thu, 20 Aug 2020 12:36:38 +0545 Subject: [PATCH 263/407] delete LDAP usages from CI pipelines --- .drone.star | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/.drone.star b/.drone.star index dead457939..475fb3ecae 100644 --- a/.drone.star +++ b/.drone.star @@ -322,11 +322,6 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'pull': 'always', 'detach': True, 'environment' : { - 'REVA_LDAP_HOSTNAME': 'ldap', - 'REVA_LDAP_PORT': 636, - 'REVA_LDAP_BIND_PASSWORD': 'admin', - 'REVA_LDAP_BIND_DN': 'cn=admin,dc=owncloud,dc=com', - 'REVA_LDAP_BASE_DN': 'dc=owncloud,dc=com', 'REVA_STORAGE_HOME_DATA_TEMP_FOLDER': '/srv/app/tmp/', 'REVA_STORAGE_LOCAL_ROOT': '/srv/app/tmp/reva/root', 'REVA_STORAGE_OWNCLOUD_DATADIR': '/srv/app/tmp/reva/data', @@ -338,10 +333,6 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'KONNECTD_IDENTIFIER_REGISTRATION_CONF': '/drone/src/ui/tests/config/drone/identifier-registration.yml', 'KONNECTD_ISS': 'https://ocis-server:9200', 'KONNECTD_TLS': 'true', - 'LDAP_URI': 'ldap://ldap', - 'LDAP_BINDDN': 'cn=admin,dc=owncloud,dc=com', - 'LDAP_BINDPW': 'admin', - 'LDAP_BASEDN': 'dc=owncloud,dc=com', 'OCIS_CONFIG_FILE': '/drone/src/ui/tests/config/drone/proxy-config.json' }, 'commands': [ @@ -368,11 +359,9 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'SERVER_HOST': 'https://ocis-server:9200', 'BACKEND_HOST': 'https://ocis-server:9200', 'RUN_ON_OCIS': 'true', - 'RUN_WITH_LDAP': 'true', 'OCIS_REVA_DATA_ROOT': '/srv/app/tmp/reva', 'OCIS_SKELETON_DIR': '/srv/app/testing/data/webUISkeleton', 'PHOENIX_CONFIG': '/drone/src/ui/tests/config/drone/ocis-config.json', - 'LDAP_SERVER_URL': 'ldap://ldap', 'TEST_TAGS': 'not @skipOnOCIS and not @skip', 'LOCAL_UPLOAD_DIR': '/uploads', 'PHOENIX_PATH': '/srv/app/phoenix', @@ -403,18 +392,6 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): }, ], 'services': [ - { - 'name': 'ldap', - 'image': 'osixia/openldap:1.3.0', - 'pull': 'always', - 'environment': { - 'LDAP_DOMAIN': 'owncloud.com', - 'LDAP_ORGANISATION': 'ownCloud', - 'LDAP_ADMIN_PASSWORD': 'admin', - 'LDAP_TLS_VERIFY_CLIENT': 'never', - 'HOSTNAME': 'ldap' - }, - }, { 'name': 'redis', 'image': 'webhippie/redis', From eef08e34e5efdfe6fa36b99776ca7b34fda8f1d7 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Thu, 20 Aug 2020 14:50:44 +0545 Subject: [PATCH 264/407] use basic-roles-support as ocis branch for now --- .drone.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.star b/.drone.star index 475fb3ecae..1eb825c91e 100644 --- a/.drone.star +++ b/.drone.star @@ -1,7 +1,7 @@ def main(ctx): before = [ testing(ctx), - UITests(ctx, 'master', 'a7ce0c8172f445d9b945d4c4bf531f1271926df6', 'master', '0075dbd7b14360de203ec2a327c6b3f5c5844364') + UITests(ctx, 'basic-roles-support', '', 'master', '0075dbd7b14360de203ec2a327c6b3f5c5844364') ] stages = [ From 8e702c621f8405d50c184efd1f6cbf15ab0f641e Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Thu, 20 Aug 2020 15:11:34 +0545 Subject: [PATCH 265/407] add more settings --- .drone.star | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.drone.star b/.drone.star index 1eb825c91e..6623ed9028 100644 --- a/.drone.star +++ b/.drone.star @@ -328,6 +328,10 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'REVA_STORAGE_OC_DATA_TEMP_FOLDER': '/srv/app/tmp/', 'REVA_STORAGE_OWNCLOUD_REDIS_ADDR': 'redis:6379', 'REVA_OIDC_ISSUER': 'https://ocis-server:9200', + 'PROXY_OIDC_ISSUER': 'https://ocis-server:9200', + 'REVA_STORAGE_OC_DATA_SERVER_URL': 'http://ocis-server:9164/data', + 'REVA_DATAGATEWAY_URL': 'https://ocis-server:9200/data', + 'REVA_FRONTEND_URL': 'https://ocis-server:9200', 'PHOENIX_WEB_CONFIG': '/drone/src/ui/tests/config/drone/ocis-config.json', 'PHOENIX_ASSET_PATH': '/srv/app/phoenix/dist', 'KONNECTD_IDENTIFIER_REGISTRATION_CONF': '/drone/src/ui/tests/config/drone/identifier-registration.yml', From a531cefac94bd4d88d99367d6dc9a3af0a3faff5 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Thu, 20 Aug 2020 16:25:34 +0545 Subject: [PATCH 266/407] add 'REVA_LDAP_IDP' setting --- .drone.star | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.star b/.drone.star index 6623ed9028..38f6be3ba4 100644 --- a/.drone.star +++ b/.drone.star @@ -332,6 +332,7 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'REVA_STORAGE_OC_DATA_SERVER_URL': 'http://ocis-server:9164/data', 'REVA_DATAGATEWAY_URL': 'https://ocis-server:9200/data', 'REVA_FRONTEND_URL': 'https://ocis-server:9200', + 'REVA_LDAP_IDP': 'https://ocis-server:9200', 'PHOENIX_WEB_CONFIG': '/drone/src/ui/tests/config/drone/ocis-config.json', 'PHOENIX_ASSET_PATH': '/srv/app/phoenix/dist', 'KONNECTD_IDENTIFIER_REGISTRATION_CONF': '/drone/src/ui/tests/config/drone/identifier-registration.yml', From 05b4f6b4fd4c1c2f46305297ce2c8ae443c84d69 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 21 Aug 2020 11:20:43 +0545 Subject: [PATCH 267/407] use build in phoenix --- .drone.star | 1 - 1 file changed, 1 deletion(-) diff --git a/.drone.star b/.drone.star index 38f6be3ba4..0fe85d5170 100644 --- a/.drone.star +++ b/.drone.star @@ -334,7 +334,6 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'REVA_FRONTEND_URL': 'https://ocis-server:9200', 'REVA_LDAP_IDP': 'https://ocis-server:9200', 'PHOENIX_WEB_CONFIG': '/drone/src/ui/tests/config/drone/ocis-config.json', - 'PHOENIX_ASSET_PATH': '/srv/app/phoenix/dist', 'KONNECTD_IDENTIFIER_REGISTRATION_CONF': '/drone/src/ui/tests/config/drone/identifier-registration.yml', 'KONNECTD_ISS': 'https://ocis-server:9200', 'KONNECTD_TLS': 'true', From 3a2699149f88b6b9f4c7e7be81f74895f14720fe Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 21 Aug 2020 11:52:36 +0545 Subject: [PATCH 268/407] don't use the proxy config file --- .drone.star | 1 - ui/tests/config/drone/proxy-config.json | 73 ------------------------- 2 files changed, 74 deletions(-) delete mode 100644 ui/tests/config/drone/proxy-config.json diff --git a/.drone.star b/.drone.star index 0fe85d5170..ae5729931c 100644 --- a/.drone.star +++ b/.drone.star @@ -337,7 +337,6 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'KONNECTD_IDENTIFIER_REGISTRATION_CONF': '/drone/src/ui/tests/config/drone/identifier-registration.yml', 'KONNECTD_ISS': 'https://ocis-server:9200', 'KONNECTD_TLS': 'true', - 'OCIS_CONFIG_FILE': '/drone/src/ui/tests/config/drone/proxy-config.json' }, 'commands': [ 'mkdir -p /srv/app/tmp/reva', diff --git a/ui/tests/config/drone/proxy-config.json b/ui/tests/config/drone/proxy-config.json deleted file mode 100644 index c6cde69e7e..0000000000 --- a/ui/tests/config/drone/proxy-config.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "HTTP": { - "Namespace": "com.owncloud" - }, - "policy_selector": { - "static": { - "policy": "reva" - } - }, - "policies": [ - { - "name": "reva", - "routes": [ - { - "endpoint": "/", - "backend": "http://localhost:9100" - }, - { - "endpoint": "/.well-known/", - "backend": "http://localhost:9130" - }, - { - "endpoint": "/konnect/", - "backend": "http://localhost:9130" - }, - { - "endpoint": "/signin/", - "backend": "http://localhost:9130" - }, - { - "endpoint": "/ocs/", - "backend": "http://localhost:9140" - }, - { - "endpoint": "/remote.php/", - "backend": "http://localhost:9140" - }, - { - "endpoint": "/dav/", - "backend": "http://localhost:9140" - }, - { - "endpoint": "/data/", - "backend": "http://localhost:9164" - }, - { - "endpoint": "/webdav/", - "backend": "http://localhost:9140" - }, - { - "endpoint": "/status.php", - "backend": "http://localhost:9140" - }, - { - "endpoint": "/index.php/", - "backend": "http://localhost:9140" - }, - { - "endpoint": "/api/v0/greet", - "backend": "http://hello:9105" - }, - { - "endpoint": "/api/v0/accounts", - "backend": "http://localhost:9181" - }, - { - "endpoint": "/accounts.js", - "backend": "http://localhost:9181" - } - ] - } - ] -} From ea203e16bff0ea0d9801c5a0c7b131a460601978 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 21 Aug 2020 12:02:34 +0545 Subject: [PATCH 269/407] delete unnedded build steps --- .drone.star | 2 -- 1 file changed, 2 deletions(-) diff --git a/.drone.star b/.drone.star index ae5729931c..d3ec6aec58 100644 --- a/.drone.star +++ b/.drone.star @@ -378,8 +378,6 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'git checkout %s' % (phoenixCommitId), 'cp -r /srv/app/phoenix/tests/acceptance/filesForUpload/* /uploads', 'yarn install-all', - 'yarn dist', - 'cp -r /drone/src/ui/tests/config/drone/ocis-config.json /srv/app/phoenix/dist/config.json', 'cd /drone/src', 'yarn install --all', 'make test-acceptance-webui' From db68531e542f0a86862e2e0f7c7014b86da8a162 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 21 Aug 2020 12:24:17 +0545 Subject: [PATCH 270/407] delete KONNECTD_TLS --- .drone.star | 1 - 1 file changed, 1 deletion(-) diff --git a/.drone.star b/.drone.star index d3ec6aec58..b1e5c95786 100644 --- a/.drone.star +++ b/.drone.star @@ -336,7 +336,6 @@ def UITests(ctx, ocisBranch, ocisCommitId, phoenixBranch, phoenixCommitId): 'PHOENIX_WEB_CONFIG': '/drone/src/ui/tests/config/drone/ocis-config.json', 'KONNECTD_IDENTIFIER_REGISTRATION_CONF': '/drone/src/ui/tests/config/drone/identifier-registration.yml', 'KONNECTD_ISS': 'https://ocis-server:9200', - 'KONNECTD_TLS': 'true', }, 'commands': [ 'mkdir -p /srv/app/tmp/reva', From 5e66bf645c72f48e69b3019d151c4902d40fccec Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 21 Aug 2020 12:25:35 +0545 Subject: [PATCH 271/407] make build also depend on UI tests --- .drone.star | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.star b/.drone.star index b1e5c95786..6ad3a749ae 100644 --- a/.drone.star +++ b/.drone.star @@ -265,6 +265,7 @@ def docker(ctx, arch): ], 'depends_on': [ 'testing', + 'UiTests', ], 'trigger': { 'ref': [ From 2aa66bf041e7add18f6ccc8bbeeb36ada334f811 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Fri, 21 Aug 2020 14:55:52 +0545 Subject: [PATCH 272/407] use newest ocis master commit --- .drone.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.star b/.drone.star index 6ad3a749ae..db38894b51 100644 --- a/.drone.star +++ b/.drone.star @@ -1,7 +1,7 @@ def main(ctx): before = [ testing(ctx), - UITests(ctx, 'basic-roles-support', '', 'master', '0075dbd7b14360de203ec2a327c6b3f5c5844364') + UITests(ctx, 'master', '5b8438dacc92270bf2fabafb78d6dd54a0b04ecb', 'master', '0075dbd7b14360de203ec2a327c6b3f5c5844364') ] stages = [ From 2cf9e918bae57167dcb17bb682da9e11fc2ad6f9 Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Thu, 30 Jul 2020 10:08:40 +0200 Subject: [PATCH 273/407] Add vuex as direct dependency instead of peerDependency --- package.json | 4 ++-- pkg/assets/embed.go | 6 +++--- yarn.lock | 5 +++++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3ca3778fe0..7f0dce47fe 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "swagger-vue-generator": "^1.0.6", "url-search-params-polyfill": "^8.1.0", "vue-template-compiler": "^2.6.11", + "vuex": "^3.5.1", "xml-js": "^1.6.11" }, "browserslist": [ @@ -74,7 +75,6 @@ "not dead" ], "peerDependencies": { - "owncloud-design-system": "^1.7.0", - "vuex": "^3.5.1" + "owncloud-design-system": "^1.7.0" } } diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index 4b9b254250..b6e376cfbd 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-07-01 11:39:14.734417 +0200 CEST m=+0.006772493" from config file "embed.yml" DO NOT EDIT. -// modification hash(75ea29610fe7f7fa52cd0276c7e2565c.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-07-30 10:02:09.726924 +0200 CEST m=+0.008531253" from config file "embed.yml" DO NOT EDIT. +// modification hash(0c7259d7ac39f4f61189409e99dddb41.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,7 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\xfd\xdb\x72\x1b\xb9\x96\x30\x08\x5f\xff\xdf\x53\x90\xb9\xbd\xb3\x81\xcd\x25\x8a\x94\xab\x5c\x55\x49\xc3\x6c\xd9\x96\x0f\x65\x59\xb2\x2d\xdb\x65\x17\xcd\x56\xa4\x48\x50\x84\x4d\x02\x34\x12\x94\x2c\x33\xb3\xa3\xba\xff\x39\x3f\xc2\xdc\xcc\xdc\xce\xd5\xc4\x5c\xcc\x0b\x7c\x4f\xf0\xf5\x23\x4c\xcd\x8b\x4c\xe0\x94\x27\x26\x5d\xb5\xbb\xa3\x23\x14\x62\x26\x12\xc7\x85\x85\x75\xc2\xc2\xc2\x94\xce\x18\xa7\x08\xcd\xd6\x7c\xa2\x98\xe0\x08\x6f\x82\x75\x42\x5b\x89\x92\x6c\xa2\x82\xc1\x55\x2c\x5b\x8a\x04\x6b\x6e\x33\x4e\x83\x36\x51\x37\x2b\x2a\x66\xad\xcb\x85\xb8\x88\x17\xaf\xe7\x2c\x19\x16\x8f\x51\x53\xce\x6b\xc6\xa7\xe2\x7a\x68\x7f\x1a\x73\xd8\x0a\x5c\x3d\x8d\x39\x12\xba\x98\x0d\xf5\xbf\x68\x93\x0d\x7c\x67\x5b\x14\x29\xa0\x78\x23\xa9\x5a\x4b\xde\x52\x88\x92\x0d\xfd\xb2\x12\x52\x25\xd1\x26\xcb\x80\x76\xdd\x1b\x2e\x1e\x33\x3d\x22\x49\xca\x43\x56\x78\xa3\x13\x29\xd9\x4e\x39\xbd\xf8\x48\x27\xaa\xbb\x92\x42\x09\xdd\x13\x90\x84\x76\xe7\x71\x72\x7a\xcd\x5f\x48\xb1\xa2\x52\xdd\x00\x27\x81\x2f\x18\x10\xdf\xdf\xb3\x9b\xe5\x85\x58\x0c\xed\x4f\xb4\xc9\x40\x10\xde\x65\x8a\xca\x58\x09\x99\xa6\xc1\x3f\xfe\xa3\x7f\x09\x80\x11\xde\x8d\x93\x1b\x3e\x79\x5a\xfe\x5e\x49\x09\x20\x26\xbc\xab\xc4\x99\x92\x8c\x5f\xbe\x8e\x2f\x4d\x96\xd2\x7b\x50\x00\x65\xa2\x81\x02\x12\xb8\x1d\x84\x20\x34\x0c\x69\x31\x84\x16\xe3\x89\x8a\xf9\x44\xf7\x72\x36\xa4\xd1\x0c\x98\x1f\xe6\x44\xd2\x58\x51\x24\x8a\xcc\x58\xb7\x4b\xaf\x5b\x47\x88\xa7\xe9\x68\x8c\x07\x0e\xd4\xac\x7b\xce\xf8\x95\xf8\x54\x86\x99\x6e\xd4\x36\xc9\x49\x90\xac\x93\x15\xe5\x53\x3a\x3d\x53\xb1\x54\x81\x2f\x97\xe7\x16\xc0\xf0\x86\xcd\x50\x40\xbf\xd0\xc9\x5a\x31\x7e\x19\x10\x42\x38\x56\x73\x29\xae\x5b\xa6\x49\x29\x85\x44\xc1\x63\xca\x2d\x08\x5a\x2c\x69\xc5\x0b\x49\xe3\xe9\x4d\x4b\xae\x39\xd7\x45\xf0\x40\x57\x31\x11\xcb\xd5\x82\x2a\x3a\xb5\x55\x98\x6a\x4d\x3d\xfa\x5d\xb8\x2a\x99\xef\xc2\x39\xc2\xd9\x4c\x48\x24\xbb\x4b\xaa\xe6\x62\x4a\x04\xc8\x6e\x2c\x2f\x09\x1b\x0c\x6c\xf7\x63\x22\xbb\x53\xba\xa0\x97\xb1\xa2\xba\x81\xd8\x26\x4f\xc8\x05\x8a\x41\x9a\x36\x27\xa6\x95\x09\x21\x24\xc1\x13\xc1\x15\xe3\x6b\xea\x1b\x98\x64\x99\xee\x01\xa7\x5f\x94\xee\x80\x6f\x07\xcb\x6e\x42\xb9\x22\xb2\x7b\xee\x7e\x63\x79\x39\xa0\x8b\x84\xb6\x2a\x1d\xce\xf3\x9b\x71\xd4\xe0\x58\x86\x11\x29\x0d\xdc\x0e\x61\x20\xbb\x53\x96\xac\x62\x35\x99\x1f\x7d\x99\xd0\x95\x81\xb4\xf9\x82\x33\xdd\x50\x60\x7b\x58\x6e\x25\x0c\x65\x37\xbe\x90\xeb\x95\x42\xfe\xab\xad\x0b\x0f\x38\x29\x4d\x8e\x21\x04\x33\xb2\x76\xd3\x6c\xe0\xce\x85\x5c\xc6\x0b\x5d\xdb\xac\x6b\x90\x45\xf7\x98\x6b\xe0\x09\x4e\x87\xa5\xde\x45\xc5\x30\xde\x33\xba\x98\x06\x30\x33\x10\x6f\x80\xde\xe6\x2a\x5e\xac\x69\x64\xbe\x83\xae\x27\xb2\xd5\x65\x59\x01\x21\xdb\x5a\x18\xa2\x3a\x08\xdc\x84\xba\x9c\x6e\x5a\x67\x76\xfc\x59\x86\x14\x48\x88\x31\xb0\x2c\x5f\x2a\x7e\x38\x1b\x25\x6f\x1c\x15\xd9\xe8\xba\x23\x3f\x36\x88\xe5\x65\xa4\xba\x93\x78\xb1\x40\x3a\x63\x96\x4d\x34\x74\x35\x81\xa8\x64\x77\x2d\x9a\xdc\x59\x96\xa9\xee\xb5\x8c\x57\x64\x62\xa0\x96\x90\x32\xc9\x9a\x21\xbc\x29\x3a\xb0\xa8\xbc\xad\xf4\x9b\x2e\x32\xd7\x45\xe6\x23\x31\x26\x25\xba\xec\xa9\xdc\x9c\x25\x99\xa9\x78\xea\xd7\xed\x25\x55\x2f\xfc\x8a\x3d\x9d\xc1\x15\x99\x86\xe1\x14\x4d\xd1\x29\x1a\x8d\x31\xc6\x83\xab\x30\xbc\x6a\x13\x4d\x07\xa4\x1d\xca\x15\x08\x1c\x86\x68\x4e\xae\xb0\xa9\xe9\x86\xac\x8a\x35\x4f\x66\xa5\xe7\x2a\x65\x98\xe3\x62\x20\x4b\x0d\x84\x91\x45\x73\xf0\x00\xf0\x38\x34\xee\xce\x84\x3c\x8a\x27\xf3\x12\x99\xa5\x78\xa3\x46\x74\x5c\xa1\xb2\xa5\x31\x79\x8a\x82\x28\x28\x9c\x65\x18\x17\x70\xb9\xb4\x64\xde\x90\x96\x41\x39\x2f\xa9\xd2\x93\xbc\x40\x5c\x80\x4b\x93\x92\x32\xb1\xe7\x10\xe3\x4d\x3b\xcf\x69\x4a\x42\x0c\x13\x5b\x7d\xa2\x31\x7c\x24\xc6\xa0\x80\x59\x24\xb7\x03\x6b\x13\x92\x38\x1c\xb7\x0b\x21\x31\x08\xba\x20\xb3\xae\x41\x58\xbf\xf6\x17\x61\x18\x08\x03\xb2\x82\x15\x2c\x72\xb0\x2f\x20\x38\x3f\x8f\xaf\x63\xa6\x02\x3c\xa4\x5d\x49\x13\xb1\xb8\xa2\x68\xd1\x75\xa9\xb8\xab\xe6\x94\x57\x39\x13\x77\x94\x04\x94\xe9\x65\x86\xa1\xfe\xd9\x81\xde\x7f\xc7\x51\xa9\xe6\xa6\x1a\x5d\x97\x89\x82\x18\xcd\xb6\x2a\xf4\x60\xdb\xae\x37\x9b\xa0\xc4\xae\x25\x03\x33\x0d\x48\x9d\xea\x0b\x10\x3e\xe4\xb6\xb5\x18\x62\x1c\xc5\x08\x67\xc5\x0c\x5e\x14\x33\x28\x89\xca\x19\xe1\x88\xba\x35\x3b\xd6\xb0\xbe\x12\x6c\xda\xea\x69\xe2\x64\x28\x09\xcd\x89\x30\xe1\xeb\xc5\x02\x0a\x02\x40\xcb\x24\xb2\xa8\xad\x6b\xbb\x12\x86\x88\xe6\xa4\xc0\xd3\x34\x6a\x68\x81\x6d\x01\x6c\x6f\x9a\x2a\xc4\x6e\x34\xc9\x80\xd6\xa9\x89\xad\x41\xa3\xd3\xeb\x9b\x15\x75\xdc\xe9\xf5\x9c\xb6\x7c\xf3\xad\xa9\xa0\x49\x8b\x0b\xd5\x5a\x49\x71\xc5\xa6\xb4\x15\xb7\xfe\xc1\x14\xfe\x87\x96\xad\x2b\xc8\xa1\x65\xc5\x10\x4e\xd6\x48\x42\x31\x00\xdb\x46\x19\xef\x34\xbd\xb7\x78\xe7\x0a\xee\xea\x96\x41\xc7\x3a\xc4\x92\x81\x15\x00\xb8\x65\x0e\xb6\x06\x31\x14\x96\x40\x23\x3a\x52\x1a\x53\xd6\x0b\x75\x12\x2f\xe9\x98\x08\x8b\x18\x40\xbb\x1a\xe3\x88\x32\x3f\xc7\x62\x92\xaf\xea\x76\x01\xa9\x0a\x90\x2d\x82\x96\x41\x8c\xb7\xfb\x82\x23\x11\xa1\x3f\x07\xd5\x1c\xa2\xb6\x77\x9a\xf3\x6b\xb0\xc6\xbc\xe5\xd6\x56\x53\xf5\x05\xb2\x5d\x17\xf2\x9b\x26\xec\xc7\x62\x12\xa9\x51\x6f\x9c\x0d\xfa\x2d\xc6\x5b\xca\x74\xdd\x90\xf1\x63\x31\x21\x6a\xd4\x1f\x63\x38\x28\xbe\xcc\x18\x8f\x17\x8b\x1b\xfb\xed\x60\xac\x7b\x38\x53\x54\xda\xf7\xdb\x63\x0c\x86\x00\x29\x79\x73\xc4\x95\x64\x34\xe9\xae\xd6\xc9\x1c\xd1\x52\xfb\x67\x45\xfb\xaa\xeb\x18\x14\x13\x3c\x4d\x37\xd9\x80\x9a\xd9\x24\x39\x7f\xd1\xa3\x50\xb4\x65\xc0\x00\xe5\xdc\x84\x16\x15\x1e\xe9\x0a\x6b\xcd\x92\x91\x1f\x5b\x20\x85\x50\x41\x36\x06\x95\x13\xdd\x6b\xd3\x49\xd7\x55\x49\x13\xaa\x50\xbb\x57\xea\xe1\xa9\xae\x50\xaf\x9d\xbc\x9f\x23\x61\x96\x60\x09\xcf\x0c\xc5\x52\x16\x19\xb7\xe5\x5b\x8b\x1c\x3e\xb7\xd2\xb9\xda\x2c\x39\x89\x4f\x90\xea\x2e\x28\xbf\x54\x73\xec\x65\xc1\xbd\x3e\x30\x52\x12\xd9\xf1\x46\x8b\x5f\x83\x4e\x87\xdf\xf5\x79\x07\x98\xcd\x90\x23\x92\x0a\x38\x2e\x7a\xe1\x48\xd5\x88\xeb\x89\xd0\x68\x4b\xda\x7d\xc8\xc9\xad\xff\xee\xd6\xb5\xcf\xd1\x03\x9a\x15\x92\xaa\x41\x66\x96\xb9\xa5\xb7\xd1\xaf\xd1\x79\x89\x36\x9d\xe7\xcc\xc2\x09\x1f\xae\x36\x23\x7d\xb4\x7b\xbe\x60\x6b\x51\x62\x8b\x37\xdd\x89\xe0\x89\x92\xeb\x89\x12\x92\xac\x60\x55\x79\x5f\xc0\x6a\x14\x8f\xc9\xc2\x48\x63\x8b\xf8\x46\x2f\x2f\x52\x48\xb2\x8f\x3c\x34\xf5\xd2\x4f\xb6\x92\x1b\xd4\x90\xa6\x09\x08\x43\x55\x6e\xd4\x8d\xb7\xdd\xd6\x82\x11\x25\x84\x2c\xd2\xb4\xa1\x49\x42\x88\x26\xac\x45\xbf\xd2\x94\x76\x79\xbc\xa4\x18\x67\xa0\xba\xcb\x58\x7e\x6a\x62\xd0\x4e\x0c\x48\x2a\x82\xc6\xb0\x31\x15\x29\x58\xe1\x08\xa9\xee\xf9\xb9\x81\xd7\xf9\x39\x59\x41\x6c\xd6\x57\x9a\x22\xa5\x01\xd3\xd0\x2f\x8c\x41\xed\x14\x3b\x6e\x30\x28\xdd\xbb\xd8\x48\x55\xdb\xdd\xdb\x38\xfe\xa9\x65\x2f\x58\xa2\xcb\xb2\xfe\x52\x7a\x19\xb1\x9d\xf2\x14\xa8\xee\x61\x59\xdf\x22\x7a\x31\x1a\x0d\xac\x28\x61\x74\x2a\x30\x82\x46\xce\xa9\x58\x18\x22\x46\x5e\x48\xb1\x64\x09\xb5\xb2\x94\x55\x98\x2e\xd1\xc4\x17\xc0\x5a\x94\xf0\x8d\x35\x4d\x38\x92\x78\x18\x47\xb1\x41\x54\xd4\xc4\xb1\xf3\xc2\x86\x6e\x2b\x8b\xf4\x79\x01\xcd\x84\x61\xa9\x81\x74\x53\x05\x6e\x00\x37\xdf\x10\x21\xe1\x26\xd7\x27\xb7\xb3\x04\x23\x4b\x69\x5b\x79\x65\xe3\x40\x03\xe9\x13\xbd\x49\x1a\xf0\x73\x34\x1e\xe8\x35\x6d\xd8\xbb\x99\x69\x4c\x2d\x59\x94\xb8\x58\xaa\x92\x5e\x51\x99\x50\x84\x21\x5f\x7a\xd2\x13\x03\x9a\x13\x02\x47\x34\x68\x77\x25\x56\xc8\x50\x1f\x6e\x6b\x74\xf5\x48\xb7\xe4\x39\xc8\x9c\x1e\xc8\x2c\xff\xe8\x09\x80\xcc\x74\x77\x4d\xd6\x84\x9c\xc2\x51\x09\xb7\x36\xa5\x55\x13\x1d\x81\x21\x8f\x51\x79\x4c\x9a\x30\x6a\xc2\xb9\x92\xf4\x8a\xf4\x2c\x11\x35\x44\xc4\x3d\x1b\xf5\xcd\x8a\xa1\xe6\xd1\xd1\x0b\x93\xe2\xbb\x64\x5f\x2a\x2c\xca\x24\x55\x59\xa6\x49\x2a\x09\x26\x75\xd6\xe2\xe9\xf9\x19\x86\xb6\xc2\x1e\xc4\xd4\x00\x44\x13\xf8\x40\x59\xe9\x65\x32\x8f\xe5\xa1\x42\x3d\x9c\x8b\x9a\xfa\x33\x50\x1c\x86\x8e\x2a\x77\x68\x37\x59\xb0\x09\x45\x7d\xac\x25\x7f\xfd\x59\xcb\xe2\x8e\x5b\x67\x90\x28\xb1\x8a\x4a\x68\x50\x1a\x4c\xcf\x19\x81\x6a\x9d\x1b\xf5\xc6\x25\x76\x55\x95\x59\x94\x95\x59\xac\xa2\xaa\xca\xd2\x87\xe5\x48\x57\xf1\x22\x83\x2d\x55\xb5\x71\x12\x74\x1f\x7c\x45\x03\xc7\xac\xe6\x2c\x19\x94\x24\x78\x63\xea\x70\xf5\xc7\x8e\xbf\x7a\x85\xcc\x40\x57\x79\x91\x46\x02\xff\x43\xc1\xa5\xdd\xe6\x99\x87\xb4\xa8\x0f\xda\xa1\xe9\x5e\x7f\x20\xee\x91\xde\x60\x6f\x4f\x58\x84\x65\x5b\xd0\x11\x63\x88\x09\xab\x43\xc8\xb0\x6a\x4d\x37\xba\x96\x79\xe3\x42\xdc\xa6\x7c\x6a\xed\x19\xfe\xdb\x5d\x92\x63\xa1\x37\x40\xb8\xc9\x65\x10\x78\xf9\x25\xc0\xb0\x2e\x25\x17\xc2\x8b\xad\x6b\x12\x86\xeb\x2a\x42\xdf\x65\xb9\xec\x53\x34\x5e\xa4\x41\xbb\x67\x0a\x96\xf3\x17\x95\x96\x4b\x94\x52\x33\x6f\xc5\x98\xfc\xdd\x6d\x99\xa2\xba\x50\x7b\xbd\x6d\xfb\x51\xf2\xa6\x95\xa8\x58\xd1\x25\xe5\xaa\x75\xcd\xd4\x5c\xac\x55\xcb\x14\x6f\x09\xd9\x72\x3d\x08\xfe\x1d\x1d\xce\xb2\x0c\xac\xd9\x23\x2a\x1b\xb0\x2c\x35\xb2\x14\x68\xe7\xcc\x73\x3b\xf3\xb9\x79\xad\x3e\xf3\xdc\x48\x52\x62\x7b\x16\xf3\xc5\x29\xaa\x13\x15\x86\x45\xe7\x45\xb9\x9b\x0e\xb5\xc4\xe0\x42\xd2\xf8\x53\x96\x69\x6e\x13\x98\x67\xb3\xc8\xd2\x34\xf0\xd6\x13\xf3\x8e\xc3\xb0\xc0\x1d\x1a\x86\xf4\x2e\x29\x8f\xda\xb0\x2a\x4d\x89\x3c\x9f\x62\xc3\x32\x7e\x46\x9b\x5c\x66\x72\x8b\x48\xb9\xe5\x43\x81\x0d\xd1\x2e\xea\x65\xa5\xab\x52\x33\x5a\xd2\x37\x5f\xbc\x69\x06\xc5\x38\x03\xff\x52\x03\xf7\x9f\xa3\x1a\xa5\x31\x9b\x2c\xf5\x81\x9b\xc4\x61\xd1\x1d\x53\x36\x2a\x59\xbb\x5c\x0e\x94\x53\x1f\x92\x53\x5e\x65\x25\xef\xf2\xe8\xbc\xce\x58\x54\x68\x17\x67\x54\xb2\x78\x29\x67\x83\xa2\x8e\x98\xda\x7c\x14\x43\x92\xc1\x8c\x71\x96\xcc\x2b\xd4\x2c\x27\xdd\xbb\xd1\x8a\x5a\xb4\x2a\xb4\xe4\x1a\x5a\x51\x83\x56\xb2\xac\x9f\xe8\x39\x2f\xd3\xd5\x1c\xe2\xb2\x34\xaf\x20\x73\x05\x06\xc3\x19\x92\xba\x8b\x19\x98\x45\xf4\x9f\xd5\x45\x8b\x83\xa6\x7b\x8e\x9d\xcb\x9d\xac\x82\x97\xcc\x2a\x5e\x53\xd5\xbd\xf4\x2c\x5d\x64\xd9\x16\x5d\x60\x0b\xcd\x57\x17\x8e\x12\xc4\x4a\xd1\xe5\x4a\x05\x38\x03\xcf\x70\x8d\x95\x31\xaa\x9b\xa6\xcb\xa0\xca\x59\xf3\xc6\x2b\x9b\x91\x56\x8a\xa0\xd0\x87\x23\x0a\x4e\xff\x8d\x64\x06\xb9\x39\xb7\x84\x29\x7e\xea\xcb\xdc\x43\xc3\x56\x65\x48\xe5\x3b\x0f\x03\x6b\x5a\xbc\xf4\x72\xd4\xab\x35\x57\x6c\x49\x09\x2d\x2c\x89\xb9\x1c\x18\x48\x63\x41\xab\xe7\x6d\x91\x96\x0c\xb0\x56\x31\x33\x8c\x81\x37\x1a\xd0\xb4\x36\xf0\x3c\x56\x73\x42\xf4\xff\x30\x54\x66\xc7\x01\x6d\x19\xa3\x8a\xad\x9a\x30\x2c\x9e\x71\x9a\x36\xe4\xb5\x1b\x36\x61\x68\x7f\x9b\xf3\x24\x74\x31\x0b\x43\xfd\xbf\xf9\xbb\xee\x18\x4e\xd3\xd2\x10\x8b\x49\x08\x30\xc2\x25\xd5\xd0\x28\xb9\xb9\x1d\xb6\xdd\xd6\xa2\x6d\xcd\xda\xaa\xb5\x31\x88\x49\x9b\x55\x36\xac\x5c\x95\x3f\xb4\xbd\xda\x60\x77\x8f\xfc\x06\x0d\xda\x64\xd0\x87\xcd\x65\x59\xca\x2b\x0a\x65\x19\x1e\xf5\xc7\x1a\xb0\x13\xb2\xc9\xb4\x98\x68\x0a\x3d\x4d\x8e\xf8\x7a\x49\x65\x7c\xb1\xa0\xb0\x2e\x19\x5a\x4b\x3b\x3f\x0f\x69\x32\x91\x6c\xa5\x84\x84\x84\x6c\x66\xd1\x3a\x0c\xdb\x13\x4b\xe1\x37\xfd\xe8\x20\x83\x3e\x1e\x6e\xcb\xca\x6b\x2b\x9b\x29\x5c\xd6\xd8\x68\x97\xe6\xcd\x65\xd1\x24\x83\x19\xa9\x12\x4a\xa7\xe8\x14\xb9\xa2\x36\xea\x87\x0a\xc3\x44\xf0\x19\xbb\x5c\xfb\xb4\x03\x9d\x76\x2d\x99\x72\xef\xdf\xe9\x77\xab\x2f\xd0\x2c\x83\x85\x1e\xa3\x17\xfb\xa1\x49\x97\x6a\x2d\xbc\xe6\xef\x04\xc6\x1f\x61\xaf\x8f\x33\x98\x93\x20\xe8\x26\xab\x05\x53\x30\x25\x4d\xf0\x6f\x5b\x18\xa1\xe0\x6b\x80\x1b\xc1\x88\x7a\x5a\x55\x19\x6e\x37\x19\xd8\xee\x04\x84\xac\x90\xc2\xc3\xb9\xb7\x03\x04\x01\x8e\x5c\xa5\x0a\x67\xee\x11\xae\x48\x4d\x4c\xd4\x2c\x4d\x93\x1a\x4b\x26\x4a\x66\xa4\x07\x31\xff\x07\x2d\x2e\x2c\x16\xce\xfe\xd6\x12\xbc\x15\x74\x54\xa1\x8d\x65\x70\xd3\x04\x82\x29\xba\x42\xca\x68\x55\x0d\x5f\xb7\x51\x7c\xa8\x7b\xd0\x26\x44\x45\x4d\x7a\x7a\x06\x97\x64\x8b\xe9\xb5\x97\xba\x81\xdc\x7a\x62\xc8\x29\x18\xca\x48\xc3\x70\xbb\x16\x24\x35\xc3\x71\xd3\xa6\x85\xfa\xa5\xd9\x67\x71\x13\x95\x57\xc4\x9b\x8d\x35\xa6\xb4\xc1\x81\xd3\xd9\x1f\x14\x6e\xff\xc7\x9a\xdf\x35\x05\x82\x5f\x51\xa9\x9c\xf5\xae\xa5\x44\x6b\x25\xd9\x92\x29\x76\x45\x5b\xa6\x5f\x9a\x76\x5f\x68\xd4\xac\x6d\xad\x5e\x37\xae\x82\xd6\x85\xc7\x10\x8a\x33\x38\x23\xa2\x3b\x15\x93\xb5\x96\x11\xe1\x88\x2c\xd1\x19\x0e\xc3\x25\x3a\x73\xc6\x83\xa3\x85\x91\x1e\x31\x9c\x36\xcd\xf4\xd1\xb0\x96\x0f\x29\x6c\xb6\x8e\xcf\x49\x3b\xd6\xca\xd3\xdf\x45\x68\x4e\x51\x30\x65\x57\x01\x86\x20\x0e\xbe\x45\x70\xba\xb1\xa6\x37\x1f\xff\x90\xaa\x7c\xd1\x54\x25\x1e\x7e\xdc\x16\x9a\x14\xb9\xd1\xdc\x8a\x92\x4b\x44\xb5\x18\x0d\xe7\xb8\x20\x9d\xad\x8f\x16\x34\x39\xf1\xcc\xd8\x0c\x5d\x9b\x34\x3f\x55\x33\xd4\x4e\xba\xb3\x02\x8c\xa0\x46\x74\x8c\xb3\x0c\x0e\xeb\xab\xcb\x62\x6a\x7d\x62\x2d\x2a\x20\x85\x3b\x41\x83\x75\xb6\xb4\xbe\x3e\x35\x83\x0a\x5e\xd8\xa1\x7d\xda\x62\xd2\x6c\x86\x0e\xab\x43\x3b\xd4\x32\x4b\x65\x7c\x9f\x5c\xe6\xea\x08\x83\x4b\xaa\x02\xc6\x5b\x32\x4d\x83\xc4\x3d\x6e\x13\x85\xc3\xc9\x84\x26\x89\x90\xb6\xd3\xc9\x7a\xa5\xd9\x34\x9d\xe6\x9d\x0e\x2c\x42\xea\xc2\x9a\xbf\x6b\x25\xd9\x99\x1c\x30\xa8\x2c\x83\x63\x12\x0f\x77\x08\x16\x2f\xba\x33\x93\x32\x43\x7d\x90\x18\x67\x3b\x05\x10\x53\x29\xa8\x0c\x5e\xd5\xf0\x5b\x8f\xf1\x18\x09\x28\x4d\x9f\xc4\x1b\x31\x52\x63\x42\xbd\x40\x44\x33\x78\x40\xc4\x28\x38\x3f\x9f\x08\x49\xf7\x3e\x26\xe7\xc9\x3c\x96\x74\x7a\x7e\x1e\x8c\xd3\xf4\x15\x6a\xfa\x00\x9b\x0c\xc3\x6b\xe2\xb9\x70\xbe\x96\x07\xc5\x5a\xcf\x3d\x2d\x1e\x74\x19\x4f\x56\x74\xa2\xce\xc4\x5a\x4e\xb4\x7c\x5b\x4b\x69\x5a\x47\xaf\x3d\x31\xc8\xac\x72\x71\x02\x4f\xe1\x0d\x3c\x27\xb5\xa2\x70\x8b\x88\xee\x2f\x34\xfe\xf4\x3c\x5e\xc1\xc3\x26\xb3\xe6\xad\x30\xdc\xe7\xb1\xa1\x0c\x13\x31\xa5\xfb\x5d\x45\x13\x85\x9e\xa3\x5b\x18\xc3\xa3\xba\xd7\x46\x21\x66\x35\xd3\x89\x07\x23\x35\x4e\x53\xa4\x7f\x9c\x80\xd6\x26\x84\x0e\x69\xb4\xc9\x70\x86\x51\x70\x45\x65\xc2\x04\x4f\x02\x18\x8d\xb1\x35\x58\x6d\x5c\x5a\x14\xdc\xee\xde\xe9\x7e\x1f\xc0\x52\x4c\x69\x14\x58\x51\x29\x80\x89\x58\xdd\x48\x76\x39\x57\x51\xf0\x5f\xff\x8f\xd6\x41\xef\xa0\xd7\x7a\x48\x39\x4b\x5a\x2f\xd6\xc9\xfc\x53\x2c\xe9\x55\x0b\x7d\x5d\x08\x26\xc5\xe4\x53\x57\xae\x71\xa0\x1b\xc2\x70\x9f\xf4\xe0\xb3\x91\xcc\xba\x32\xe6\x53\xb1\x44\x18\x1e\x37\xf1\x16\xeb\x2f\x82\x82\x8e\x5b\x60\xb9\xa1\x51\x0d\x83\x20\xd2\xcb\x0d\x9f\x07\x1d\xd4\xe9\xdc\xef\x7c\xc6\xf9\x34\xa2\xdb\x77\x70\x06\x5f\xc9\x23\x14\x7c\xa2\x37\x49\x80\xe1\x6d\xd3\x24\x7d\xb5\xe0\xd0\x3f\xe4\xb1\x65\x70\x4f\xc8\x26\x83\x77\xc5\xa4\x68\x1e\xf0\xd0\x4a\x2a\xcf\x8c\x1d\xf3\x1d\xbc\x27\xcf\x34\x85\x82\x9f\xc9\x33\x4d\x9e\xe1\x25\x79\xd6\x4d\xa8\x1a\x9c\x34\xc3\xfc\xa5\xc5\x84\x67\x06\x87\x81\x66\xf0\xb4\xa9\x2b\xef\xf3\x5c\x38\x4d\x35\xbd\x7d\xd3\x94\xeb\xe7\x22\x57\x66\x0d\x05\xba\x63\xbf\x90\xb7\x28\x30\x66\x81\x00\x0f\x9e\x8c\x7e\x19\x93\x76\x0f\x76\xf4\xe6\x18\x29\xf8\xe5\x5b\x1d\xd1\x64\xf1\x17\x3c\x54\xa3\x5f\xc6\xd1\xce\x7e\xd8\x4c\x99\xd9\xb3\xfb\x15\x94\x22\x9b\x84\xaa\xe8\x04\x34\x85\x7f\x0a\xf3\x38\x89\xde\x00\xe5\x33\x21\x27\x34\x6a\x28\xfe\x46\x4b\x35\x4f\x35\x67\x39\x41\x4a\x2f\xc5\x4c\x97\x54\x54\x3e\x12\xb2\x29\x7f\x79\xc7\xdc\x48\x06\x03\x4b\x87\x29\x4e\x53\x24\xc9\x53\x44\x31\x36\x5a\x53\xbb\x51\xec\x79\xca\xb5\xae\x15\x2b\x76\xb1\xa0\x2d\x49\x27\x94\x5d\x51\x09\x5a\xf0\xe9\x04\x2d\x49\x3f\xaf\x99\x2c\xd1\xbb\x96\xcc\xb2\x0c\xa8\x6a\xf6\x88\x52\x86\x3b\x81\xd4\x0f\x6e\x84\xc0\x89\xc3\x3a\x27\x0f\x58\xa9\x10\x79\x29\x0e\x0f\x76\x2c\x4b\x60\x90\x7b\xd2\xb4\x0d\x77\x6d\xc7\xdd\x35\x4f\xe2\x99\x96\xb0\xf3\x94\x42\xc4\x85\xa4\x48\xe5\xe2\x75\x2c\x2f\xa9\x7a\x4c\xd5\xa0\x81\x6c\x18\xcb\x48\x62\x3b\x90\x53\x32\x9a\xa6\xd7\x88\x41\xc0\xe3\x25\x0d\x70\x9a\x1e\xe7\x2f\x1a\x23\x24\x62\xb8\x9b\x58\x8a\xc6\xbb\x1f\x05\xe3\x79\x0d\x79\xb5\x9a\x56\x04\x66\x6f\xa2\x4d\x88\x18\xa2\xc9\xb0\x9d\x84\xa1\xa6\xdf\x61\x88\xd6\xa4\xdd\xc3\x91\xdb\xc0\xd3\x69\xb0\x1e\x1a\xd2\xce\xa2\x63\x3b\x5e\x8c\xa3\x3c\xe9\x15\xd2\x09\x19\x46\x39\x11\x2e\x9c\xca\x02\xbf\x90\x03\xd8\x16\x37\x9a\x64\x4a\xa3\xbe\x51\xa3\x48\xf8\x31\xa4\xe9\x73\xfb\x9e\x61\x43\x72\xa4\x22\x02\xb8\x6a\x22\x32\x0d\x15\x0e\x95\xdb\xf5\xca\x40\xa8\xe6\xa5\x14\xcb\x4b\x23\x63\x79\x7b\xc0\xdd\x83\x21\x57\x48\xaa\x91\x1a\x6b\xd5\x4f\x21\xcd\xa6\x70\x64\x12\xc2\xd0\xfc\x8c\xe8\x38\x4d\x85\x79\x17\xf6\x35\x03\xa6\x2c\x1d\x9c\x50\xb6\x80\xd8\xbd\xcc\x16\x42\x48\x98\x34\xf5\xb6\xe5\x76\x15\x49\x47\xe1\x61\x2f\x42\xea\x5e\x6f\x18\xab\x88\x29\xac\xb9\x0d\xac\x5d\x0d\x4b\xc6\x21\x69\x2c\xaf\x0b\xac\x15\x32\x4a\x04\xfc\xd4\xeb\xfd\xd0\xff\xe9\xa7\x83\xef\xbf\xfb\xe1\xbb\xde\x4f\x3f\xf5\x71\xd4\xcb\x60\xe6\xeb\x88\xbf\xc0\xa2\x54\xdf\xaa\xb1\xbe\xea\x7e\x90\x33\x5c\x00\x23\x37\xc8\x78\xcb\x25\x0a\x31\xbf\x03\x0a\x93\x1a\x28\xad\xd9\xc4\x74\x25\x5f\x7e\x77\x7b\xc3\x99\x42\xb2\x43\xa1\x87\xa3\x85\x42\x52\xf3\x7e\xe3\xa6\x62\xcc\x9a\x61\x28\xdb\x44\xba\x6d\x92\xf8\xde\xc4\x6c\x95\x22\x41\xd8\x68\xd2\xe9\x8c\x71\x9b\x08\x9c\xeb\xc6\xc6\x0c\x9b\x67\x9c\x74\x3a\x26\xaf\x4a\xd3\x49\x8b\xf1\x16\xc3\x61\xc8\x46\x93\xb1\x71\xb0\xf0\xc0\x49\xd3\x49\x9a\xf6\xbc\x2a\xaa\xc2\x70\xaf\x9f\x65\x30\x57\x64\xc3\xf8\x64\xb1\x9e\xd2\x24\x5a\x99\xcd\x63\x60\x7c\x4a\xbf\x9c\xce\xcc\x6b\x1f\x67\x5d\xf7\x0e\xd3\x3a\xbe\x38\x65\xc6\x4a\xa8\x82\xf4\x80\xf9\xfd\x21\xb3\x37\xc4\x71\xfb\x1a\x3d\x01\x89\xc3\xf0\x1a\x71\xf3\xcb\xf2\xcd\xa2\xca\x66\xd0\x3d\x31\xc0\x26\x0b\xa1\x23\xa1\x07\x1b\x86\xe8\x9f\xe7\x0a\x31\x90\x38\x4d\xf3\x42\x85\x53\x62\x06\x57\x8a\x8c\x82\xd2\xfe\x4e\x00\x41\x55\xa5\x08\x20\x60\x49\x69\xb7\x32\x80\xa0\x49\x57\x0d\xf4\x9a\x3c\x16\x93\x78\x41\xfd\xca\x2c\x2d\xd2\xc0\x29\x53\xc1\x18\x6e\x14\xb9\x32\xfb\xb0\x93\x58\xa1\xc0\xf6\xdb\xd6\x69\x5b\x08\x30\x2c\x95\x96\x75\x1b\x65\xfd\x93\x78\x49\x93\x34\x6d\x52\x41\x15\x52\x70\xa3\xf9\x1e\x5c\xee\x2e\x6f\xc5\x85\x24\x83\x0b\x45\x84\x42\xc1\x2b\x3a\x5b\x68\x09\x1c\x02\x71\xcd\x9f\x19\x51\xa0\x5a\xbb\xa5\xea\x4b\xd5\xb5\x52\x36\x06\x49\x2e\x55\x77\x96\x23\xe3\x90\xfa\xb1\x48\xfd\x39\xa2\x19\x5c\xd7\xe7\x37\xdf\xe9\x23\x17\x4a\xe3\x3c\x27\x2f\xba\x33\x10\xe4\x4b\x77\x06\x8c\xf4\x06\xec\xae\xf4\xbb\x79\xac\xd3\xc9\x5d\x2a\x47\x6c\x3c\xd0\x8c\x34\x36\x86\x22\x05\x31\x08\x44\x21\xc6\x7a\x88\x67\x8a\xec\xff\x25\xfd\x50\x90\xc4\x0f\xdd\x7d\x38\x6a\x44\x2c\x72\xae\x46\xa7\x7a\x01\x8d\xf3\x4e\x13\xf2\x45\xa5\xa9\x6c\x93\x8f\x4a\xb3\x81\x6d\xf2\x46\x87\x0c\x51\x1c\xb5\xdb\x5a\x5f\x3c\x55\xe4\x48\x75\xad\x25\x97\x7d\x6d\x94\x66\x73\xed\xa6\x2b\xe9\x6a\x11\x4f\x28\x3a\x53\x10\x74\x03\x2d\x71\x1d\x8b\x6b\x2a\x1f\xc4\x09\x45\x38\x83\x73\x53\xd7\x34\x56\xb1\x96\xa3\x3e\x9a\xb7\x93\xc3\xd7\x4f\xdf\x1e\x91\xe0\x24\x80\x2f\x26\xe1\xc5\xe9\xf1\xfb\x47\x4f\x8f\x8f\x49\xf0\x22\x80\x43\x9d\x04\x9f\x94\x81\xd6\x8b\x1d\x4b\xc7\x7a\xa4\xc1\x5a\x6b\xdd\x86\xeb\x41\x42\x54\xd7\xca\xa0\x30\x23\xaa\xab\xa5\x1f\x63\x6a\x25\xc9\x50\x44\xb3\xa1\x18\xad\x8d\xec\xbf\xd6\xd2\x45\x84\xec\xeb\x26\xc3\xa5\x8d\x70\x3d\x6b\x66\x27\xd5\x2a\x90\x31\xa1\x23\x3e\x06\x46\x54\x99\xb5\x0e\xd1\x84\x7c\x52\x66\x43\x0d\x87\xe1\xc4\x6d\x34\x4b\x9d\xb3\x7d\xa8\x50\x32\xe4\xd1\xba\x83\x66\xc3\xa0\x1b\x44\xc1\x5f\x02\xdc\xe1\xd6\xe9\x64\x42\xa7\x38\x0c\x73\x11\xdb\xba\xf6\x3a\xe0\xc7\x05\x93\x2e\x9c\x3d\xaf\x15\x8a\x35\x3b\x44\xaa\x9b\xcc\xe3\x65\x9a\x32\x4d\x05\xf4\x23\x0e\xc3\x63\x14\x43\xa0\x9f\x03\xa3\xff\x51\xd3\x21\x88\x8d\x14\x08\xc7\x8a\xb4\xdb\xdf\x5a\x0c\x3b\xb4\xf6\xb6\x17\x5a\xac\x84\x6d\x99\xe4\x2b\x45\x8e\x55\x18\xb6\x6d\xa2\x69\x3f\x0c\x83\xc4\xbc\xd5\x7d\xb9\x0b\x2f\xad\x07\x8a\x1c\x4a\x19\xdf\x74\x59\x62\x7e\x9b\x16\x70\x60\xbe\x38\x93\x56\x06\xaf\x1b\x59\x89\x33\x6e\x39\x63\xd3\x89\xf2\xba\xb2\x16\xe2\x77\x53\x85\x2b\x5d\xe1\x53\x45\xe2\x61\x93\x6a\xcd\x68\x52\x33\x17\xe8\x85\x5e\x6c\xcf\x03\x27\x27\x66\xd9\x0a\xc2\xdd\x32\x35\xab\x56\xdc\x63\x03\x6c\x35\x58\x49\xf8\x88\x75\x3a\x63\xa0\x23\x39\x2e\x2b\xf3\x6f\x2c\x95\xf1\xd6\x96\x00\xf2\x47\x67\x3d\x09\x30\x3c\x57\x5a\x3c\x7f\x7a\x74\xfe\xe2\xd5\xe9\xeb\xd3\x00\xc3\x2d\x55\x76\x2f\xc8\xe0\x61\xa3\x4c\x72\xd7\x1a\x3d\xee\x19\x29\xf5\xee\x87\x7d\xff\x9a\xc1\xa3\x4a\x79\xad\x21\xff\x4a\x7c\xb3\xdd\xa9\x58\xc6\x8c\x87\xa1\x56\x55\x0e\x27\x5a\x6d\x7c\xe7\xcd\x90\x73\xb5\x5c\xcc\xd8\x82\x06\x65\x33\x81\xd9\xc9\x06\x3a\x78\xa4\xc8\xaf\x15\x4b\xa4\xea\x5e\x4b\xa6\x28\x7a\xa8\x90\x15\xf8\xba\x93\x85\xd0\x8b\xdc\xef\x39\x77\x57\xb1\xa4\x5c\xfd\x62\x6c\xe1\x5d\xdb\x48\x0e\x1a\xbb\xc1\x4f\x33\xf4\x2b\x8e\x10\xa2\xe4\x14\x05\x6c\x26\x8d\xd8\x89\xbb\x89\xba\x59\xe4\x2e\x37\x24\xe0\x82\xd3\x00\xde\xa8\x6e\xbc\x5a\x51\x3e\x7d\x30\x67\x8b\xa9\x9e\x0f\xda\x4d\xe4\xc4\x8b\xd6\xc1\xc7\xf8\x2a\xb6\x30\x88\x02\x0c\x48\x11\x43\x98\x55\xd1\x03\x0f\x02\xdc\x15\x2b\xca\x91\xee\x71\x31\x82\x1c\x3e\x8f\x1c\x4a\x55\x86\x04\xaa\xfb\xa8\x84\x11\x9a\x81\x39\x7a\x2d\xf7\xf6\x06\xd8\x49\xb4\x8f\x4a\xfe\x38\xa3\x2b\x35\x92\xe3\x9c\xe2\x3e\x52\x08\x67\x83\x27\xa3\xe7\x6a\xec\xdd\x03\xee\xab\xaa\xcf\x4e\x19\x7d\x73\xca\xe6\xcb\x7b\x7b\xe9\x10\xdd\x2a\x3b\xfd\x18\xbb\x8f\x34\x6a\xe7\x2d\x05\x95\x4f\x06\xbe\xd2\x34\xa8\x70\x24\x89\xee\x01\xe4\xca\x31\x1d\xca\xe8\xa9\x93\x9c\xe0\xb3\x32\xfc\x0d\x1e\xab\x8a\xad\xfb\xab\x22\x7f\xb0\xc1\x11\x86\xbb\x79\xf4\x70\xf7\x27\xe4\xb6\x47\xa2\xd1\x18\xde\x1a\x56\xdd\xa4\x7a\xab\x30\xcc\x7d\x6a\xec\x0c\x8e\x03\x42\x1e\x2b\x6f\x37\x19\x36\xef\x82\xb4\x3e\x1b\xdb\x77\x6d\x1b\xa4\xf5\x55\x39\xe3\x3c\xce\x32\xad\x57\x7e\x56\xe8\xc6\x10\x91\x0c\x9e\x28\xf2\x08\x05\xd7\x9f\x92\x00\xc3\x3b\x45\x44\xd7\x52\x2f\x78\xa6\xc8\x2b\x35\x7c\xa7\xa2\x77\x2a\x0c\xdf\xa9\xae\xdb\x4d\x3f\x33\x8a\x68\x9a\x3e\x86\xf7\x8d\x24\xea\x1a\x3d\x51\x46\x49\x47\x9a\x50\x5e\xa3\x77\xfa\x6d\xf8\x44\x4b\xf7\xe4\x9d\xfe\x1f\xd9\xe7\x67\x5a\x01\xb4\x74\x32\xe8\x68\xc1\xc2\x24\x67\xf0\xb3\x81\xc8\x7b\x95\xc1\x4b\x65\xe4\x84\x5f\xec\xcf\xaf\x8a\xbc\x57\x28\x28\x9f\x60\xc1\xa0\xb6\x8f\x93\x68\xea\x7c\x8d\x14\x91\x43\x15\x95\xcf\xe1\xfc\xaa\x70\x18\xfe\xa2\xc9\xe1\xaf\x0a\x36\xd5\x4d\x90\x5e\xbe\xe1\x81\x33\xa0\xb4\x6e\xd1\x6c\xb0\x79\x6d\x6b\xd1\x4d\x06\xce\x5c\xf4\xaf\x58\x38\xe5\x76\xa7\xd9\x0c\x51\xaa\x91\xb9\xc0\xd0\xc2\xd6\x9f\x5c\x33\x67\xd7\x9b\xc4\x09\x6d\xf5\xa2\xba\x5e\x51\xf2\xf7\xb2\xe7\x0e\x70\x36\x30\x59\xfb\x5b\x59\xe5\x56\x5e\x90\x3e\xf7\xc1\x76\xee\x92\x9f\x4c\x91\x1f\xb8\x2f\x71\xbb\xa9\x04\x88\xc6\x32\x20\x70\xee\x18\xd9\xd4\xf3\x78\xb5\x5a\xdc\x68\xf9\xce\x6b\x8d\x1a\x37\x39\x35\x93\x9e\xac\xe8\x84\x51\x8d\xa0\x82\x36\x09\x40\x1e\xb8\x0f\x34\xee\x57\x24\xba\x76\x79\x43\xa2\x24\xe6\x63\x23\xfe\x59\xae\x1c\x86\xed\x07\x0a\xc9\x92\xe8\x33\x5c\x22\xad\x65\xd8\x7d\x22\x82\x24\x91\x23\x4e\x8d\x36\x21\xfd\xbe\x6d\x94\x3f\x01\xa7\xd7\x25\x4f\xf4\xa1\xa9\x33\x92\x18\x59\x42\xd3\x8b\x34\x8d\x61\x94\x8c\xc6\x46\xff\x80\xb8\xe9\xd8\x58\x9f\x10\xcd\x46\x0f\xf4\x0f\x27\xb7\xf5\x8f\x20\xdf\xe9\x1f\x46\xee\xe8\x9f\x98\x7c\x6f\x1c\x38\xd8\xd6\xc1\xa8\x09\xac\x21\x81\x59\x21\x66\x2f\x60\x05\x73\xf2\x5a\xa1\x09\x86\x2b\x32\x45\x73\x0c\x37\x44\x52\xa4\xb3\xdd\xc6\xb0\xd4\x1a\xe7\x55\xae\x71\x5e\x92\x1e\x5c\x90\x59\x9a\x0a\x0a\xd7\x84\x0e\x2f\xd0\x04\x96\x38\x92\xe6\xa1\x87\x9d\x96\x3f\x58\xde\xbb\x1c\x5c\x3a\xfd\x30\x4e\xd3\x4b\x2d\x18\x5e\x69\x88\xac\xc8\x0d\x5a\x90\xab\xd1\xe5\x18\x2e\x61\x8e\x41\x61\x6c\xdc\x82\xaf\x47\x97\x63\xb2\xca\x8f\x2b\xad\xb0\x43\x63\xe5\xd0\xd8\xe3\x4e\xbb\x67\x71\xe9\x7b\x8f\x4b\x0b\xfb\x7e\xc7\xbf\x5f\x7a\xec\x64\xce\xc5\xf8\x1a\x16\x85\x03\x51\xae\xcc\xf6\x73\xa5\x6e\xb8\xd7\x8f\x78\x9a\x8a\xa1\x88\xae\xb3\x0c\x26\x94\x6c\x9c\x5b\x5c\x14\x53\xd4\xc3\xb0\x8c\x57\xfa\xa9\x8f\x61\xc6\x16\x8a\x4a\xfd\x72\x80\x21\x11\x4b\xaa\x1f\x6f\x63\xa0\x57\x54\xde\xe8\xe7\xef\x74\x1e\x3e\xd5\x8f\xdf\xdb\xc7\xa7\x5a\x8b\xd5\xef\x77\x70\x06\x6b\x4a\x26\xd4\x3b\xdd\x41\x42\xb5\x24\x33\x67\xd3\x29\xe5\x01\x86\x19\x75\x14\xeb\x85\xdf\xbb\x0a\x30\x2c\x8c\x89\x2c\xa1\x0a\x56\xde\x58\x66\xed\x7a\x9e\x1a\x06\x18\xe6\x0d\xc7\x08\xa7\xb4\xa0\xcc\x57\xd4\x48\x55\x3f\x9f\x9d\x9e\x04\xe0\x4c\x50\x6c\x76\x13\x60\xb8\xa1\x46\x4d\x58\x52\x43\x32\x2f\x29\x79\xab\x19\xdb\x05\x25\x49\x77\x06\xd7\x54\x13\x7a\x2b\xab\xea\xb5\x74\x66\xde\xc5\x6a\xaf\x48\x3a\xb2\x59\x4c\x8d\x7b\x4a\xb8\x2f\x7b\x92\x5e\xb2\x44\x49\xdd\xc2\x69\xa9\x12\x93\xc3\xe6\x2d\xe5\x38\xa7\x05\x3f\xf9\xa8\x7b\xfd\xd2\xed\xc3\x7e\xa1\xa4\xfd\x91\xa6\x69\xfb\x63\xe9\x70\x61\xed\xb5\xab\x41\x6c\x24\x1c\x38\xa4\x24\x0e\xc3\x5d\xfb\x69\xf7\x15\x5a\x52\xb4\xc9\xbe\xb5\x73\xb6\xb4\x06\x2f\x9b\xc5\x52\xf8\x1f\xcc\x5e\x5a\x86\xed\x8e\xda\xd6\xbe\x8c\xf5\x3d\xb9\xa1\x68\x4e\x81\xe2\x01\x0f\x43\x27\xdb\xcc\xe9\x88\x8e\x61\x49\x5d\x46\xe0\x61\xa8\xda\x84\xcc\x69\x18\x2e\x6d\x6e\x4d\x15\xa3\x25\x85\x4f\x8d\x14\x8a\x5c\x53\xcd\xf4\xee\x2b\x34\x2d\x8d\x36\xe7\x0a\x0b\x8a\x24\xb8\x93\x61\x0e\x0d\x40\xc5\x97\x91\x82\xa9\xdb\xdc\x63\x82\x6b\xf6\x04\x71\x9a\x22\xd9\x2d\xa5\x12\x8a\x41\x66\xf0\x82\x6a\x6e\xdd\x20\x27\xd7\x75\x13\x95\x35\x89\x1b\xf9\xae\x79\xe9\xac\xe7\x94\x66\x70\xdc\xc0\x60\x89\x1d\xf7\x31\x45\x67\xd4\x42\xc3\x28\x0c\x16\x76\x6e\x0f\xce\x0f\xcc\x6c\xc5\x5d\xa3\x6b\x0d\x9e\x21\x92\x25\x5b\xed\xd0\x6c\x30\x26\x14\x87\xa1\x1a\x25\x74\x3c\xe2\x63\xb3\x7d\x66\x1f\x49\xbb\xaf\x25\xbb\xfb\x5a\x46\x2b\xfb\x30\xcc\x50\x0f\xda\x7d\x73\x68\xc9\x97\x4f\x53\x33\x2d\x89\xdd\x46\xdb\x68\x2d\xad\xa8\xa5\x87\xe1\x50\x7f\xe5\x20\x31\x8e\x96\xfe\x31\x83\x57\xf5\x69\xca\xc7\x20\xad\x61\xce\x68\x3d\x12\x7b\xeb\xc6\x53\x5a\x36\x1c\xad\x29\xe2\x50\x39\xa8\x16\x6b\x2e\xe2\x08\x94\x16\x2b\xd3\xf4\xd8\x21\x8b\xd9\x27\xc5\xc6\x21\xfd\x41\x13\xe9\xbf\x44\xca\x68\xad\x92\x5c\xd0\x8a\x2b\xae\xb7\xb1\x99\x77\x07\x74\x03\x4a\xe3\xa5\x7b\x6d\xa0\x6f\x7c\x73\xdb\x48\xa6\xa9\x16\x7a\x6c\x39\xf3\x6c\xb2\xa5\xa9\x4b\xb4\x60\x9e\xb3\xc4\x00\x86\x8e\x35\xfb\xd3\x4a\x66\x33\xae\x1a\x3b\x5c\x31\x95\x6c\x86\xa4\xc1\x75\x5f\x31\x37\x15\x9f\xe9\x07\xef\x86\x75\x43\x8d\xb0\xe0\xbb\x2c\xaa\x59\xa5\xed\x80\x74\xd3\x92\xa6\x48\x94\x30\xc1\xcc\x92\xc8\x32\x38\x69\x04\x0f\xb5\x92\x2a\x48\x32\x1a\x97\xe0\x4f\xab\xa7\xd0\x4c\x6b\xca\xb4\xf6\xc4\xfc\x4a\x6b\xed\x53\xd6\xb6\x9d\xc1\xd3\xa6\xca\x2d\x2e\x83\xd4\xad\xd0\xe1\x19\x8d\x6c\x53\xbc\xda\x94\xac\x36\xd5\xce\xdb\xa2\x66\x1e\xe6\xf6\x85\xdb\x06\xcd\x42\x37\x8d\xf2\x4c\x83\xee\x58\xa5\x29\xa2\x0a\xa1\x29\x2d\xab\xa5\xce\x01\xb5\x55\x59\x6f\xdb\x5b\x33\x96\x18\x14\x02\x65\xd9\x52\x89\x9d\x9b\x75\xdd\xce\x5e\xb2\xab\xe4\x9f\x46\xbd\xf1\xd0\x49\xa8\xe5\x34\xcf\xde\x81\x9a\xfd\x3d\x90\x55\xdf\xaa\x02\xef\x9c\xef\xc6\x99\x1e\x2a\x94\x91\xca\x3e\xeb\x89\x35\x68\x89\x4a\x48\x66\xd6\xf0\xa1\xa3\xc1\x76\x75\x6a\x8d\x23\xf7\x19\x0d\xc3\x2f\x34\x0c\x0f\x1d\xf9\xdc\x12\xc9\x13\xaa\x22\x99\x61\xf0\x07\x3c\xf1\x9f\xdd\xff\x68\xad\xfc\x46\x87\x8a\x2f\xf5\x44\x50\x4d\x75\x21\xa8\x28\x30\x41\xe3\x21\xc6\x4f\x14\x19\x38\x58\xac\x49\xba\x33\xf2\x80\xc2\x8b\xee\x8c\x1c\x53\xf8\xd2\x9d\x91\xd7\x14\xb4\xaa\x68\xd8\x2a\x39\xa1\x70\xa9\x7f\x9f\x52\xf8\x59\xff\x36\xd7\xf7\x5e\xb9\x0a\x21\x0e\x43\xcd\xb3\xca\x0c\x00\x82\x12\x25\x0f\xb6\x61\xd0\xcc\xd7\xf2\xf1\x95\x0a\x67\x99\x19\xe7\x9c\xee\x32\x4f\x3f\xa0\xb0\xb1\x7b\x67\x51\xbb\x97\x61\x8c\xe1\x85\x42\x1b\x17\x40\xa1\xdd\x83\x6b\x19\xaf\xf4\xaf\x35\xce\x45\xed\x63\x05\xc9\x3c\x5e\xea\x87\x0c\x36\x2e\x2c\xc1\x54\xb3\xa0\x35\x45\x27\x0a\x9d\xd3\xda\x39\xd0\xf6\xf6\xf2\x92\xca\x89\x2c\x9a\x69\xf9\x67\xb2\xc9\xf0\xe0\x1a\xd9\x45\xf3\x52\xe9\x07\xcf\x9d\x35\x18\xcd\x8a\xcd\xdc\xba\xd5\x5d\xb4\x06\xcd\x82\x2f\x26\x2a\x56\xd5\x8e\x66\xa0\x05\xbc\x68\xbb\xfd\x5c\x27\x1b\x18\x7f\x96\x23\x5a\x72\x68\x39\xd2\x1c\xdd\x11\xfc\x29\x45\x05\x2f\x36\x1f\x88\x84\x53\x3a\x92\x63\x42\x35\xed\xf8\x44\x6f\xea\x3b\xaf\x6c\x86\xda\x2f\x68\x93\xa7\x8b\x2a\x2b\x80\x8e\xfb\xba\x0e\x9c\xea\x41\xfb\x0e\x9c\x52\xa3\xef\xae\x13\x6a\x31\xb2\x3c\xd1\x5a\x54\xea\xd9\x6f\x6c\xb9\x5a\xd0\xfa\xb7\xbe\x9e\xee\x32\x70\x9c\xd1\xa6\x01\x38\x6e\x16\xe3\x0c\x36\xd6\xd0\x12\x35\x6e\xd6\x95\x4c\x23\xf7\x8d\x4f\xd3\x2b\x8a\xcc\x83\x31\x91\x54\x7d\x71\xa2\x63\x0a\x5b\x26\xc4\x57\x14\x76\xb9\x25\x45\xaf\xe9\x9f\xee\x6e\x66\x84\xb9\xba\xc9\x24\x3a\xa9\xd7\xee\x6c\xb7\xd1\xd3\x3f\x59\x75\x55\x8e\xd4\xeb\x16\xf5\xed\x41\xa8\x4d\x73\xc5\x0d\xab\xd9\x94\x7a\xad\xac\xdd\x04\xc3\x95\x63\x98\x6f\x28\x69\x6b\x2a\x5f\x6d\xc2\xd2\xe6\x29\x45\xb9\x9f\xd0\x48\xeb\x93\xe3\xa0\x4d\xae\x28\xb2\x7b\xa0\xc1\x26\xb3\xaf\x9b\x38\x52\x59\x39\x21\x97\xc7\x74\x1f\x07\xe5\xf1\x59\xa9\xbf\x36\xba\x37\x34\x83\x4d\xae\x08\x6c\xb9\x11\xe5\x67\x14\x40\x90\x91\x1a\x03\x23\xfd\x41\x9d\x6b\xdc\x63\x03\x2c\x2c\x0b\x2b\x38\x04\xeb\x74\xc6\xf6\x48\x15\xa1\x80\xac\x43\x41\xce\x5c\xb4\xaa\xed\xd6\x40\xa1\x7f\x1b\x97\x83\xba\x58\xd1\x7c\x22\xd4\x9c\xac\x21\xbc\x24\xf3\x18\x87\x33\xd0\x75\x16\xeb\x54\xcf\xaf\x18\xf5\xf5\x4a\xbc\xa2\xce\x4a\x60\x8c\x7b\x42\x4f\x42\x56\xa6\xa6\xa3\x19\x1d\xa7\xe9\x71\x95\xc2\xce\x34\xae\x96\x14\x0c\xef\xd6\x08\x8a\x1a\xae\x90\x6b\x5d\x4f\x34\xdb\xf2\xd6\xc9\xe7\x14\x6e\x51\x78\x68\x15\x2d\x1e\x5f\xb1\x4b\x7b\x3e\x2e\x58\x27\x54\x1e\x5e\x1a\xcb\x75\x9a\x06\x01\x3c\xd2\x1a\xce\x4a\x8a\x09\x4d\x12\xb8\x4f\xc9\x23\x1a\x86\x8f\x68\xd7\x3b\x0a\xc1\x67\x4a\xee\xd3\x30\xbc\x4f\xbb\x57\x3f\x0e\x3e\xd3\xe1\x2d\x4a\xd0\x73\x4a\x3e\x53\xef\x04\xd1\x0d\x30\x1e\xf5\xc6\x9d\xe7\x74\xd4\x1f\x47\x0f\xa9\x91\xe7\x9e\x53\xf2\x90\x76\x97\xc6\x88\xb7\x7f\x34\xbd\xa4\x1f\xf6\xd1\x87\x69\x07\xef\x63\x9c\xa6\x26\xe7\x3d\xf2\xc3\x77\x9a\xdf\x56\x72\x3e\x98\x4b\xb1\x2c\xe5\x0d\x43\x74\x8b\x12\x93\xdf\x0a\x0b\x8f\x29\xb9\x45\xc3\xb0\x73\x8b\xc2\xd7\xba\x69\xe5\x6d\xe3\xce\xd6\x63\x7a\x8f\x7c\xdf\x4f\xd3\xf6\x36\x76\xd3\x42\x4a\x42\xb4\x72\x9c\x75\x93\xe1\xd1\x57\xda\x70\x90\x70\x33\x13\x22\xea\x67\x19\xf4\xdb\x84\x68\xfa\x87\xee\x0b\xb1\xa0\x31\xc7\xdd\x99\x10\x66\x39\x3e\xa1\x3b\x1c\x00\xdf\x51\xb2\xc9\xe0\x19\xad\x89\x28\xe6\xe8\x47\x06\xef\x1b\x70\xee\x1a\xbd\x2b\x13\xdc\x77\xba\xc1\x01\x35\xf8\xb9\xc9\xbc\xb0\x3f\x1a\xeb\x15\xc1\x49\xbb\xad\x79\x52\x70\xf8\xe0\xc1\xd1\xd9\xd9\xe9\xab\xb3\x00\x87\x21\xed\xe6\xaf\x20\x88\xfe\xde\xc3\x43\x3a\xea\x8d\xa3\x67\x14\x26\x26\xa1\xaf\x13\xfa\x63\x6f\x26\x29\x37\x45\xda\x6d\xb9\xb5\xb7\xa4\xd7\x52\x18\xb6\xe3\x7c\x0f\xde\x09\x71\x1b\xbb\x0a\xa3\xbd\x7e\x36\xe0\xc3\x27\x5a\x77\xe8\x57\x34\x1f\x27\x0d\x3c\xa3\x19\x8e\x94\x5e\x0f\x7d\xc8\xcf\x3f\x0b\x17\x6f\x01\x7e\xb6\xf6\x08\x63\xd5\x80\x97\x94\xbc\xa5\x28\xb0\x6f\x01\x86\x5f\x28\x79\x5f\x7a\xaf\x50\x15\xbb\xf9\x04\x66\x99\x94\x09\xf2\x4b\x2d\xf4\xff\xa2\xa9\x8b\x33\x95\x34\x39\x5d\x51\xbf\x7a\xb7\x68\x4a\x7f\x58\xd0\x92\x1c\x48\x7a\xdd\x9a\x51\xff\xda\xac\x7e\x98\x19\xc9\x7d\xdd\xe5\x96\x0d\xc0\x8e\xda\x6e\xa0\x94\x76\x0d\x3c\x32\xf4\x33\x70\x94\x5d\xc9\xb2\x75\x86\x4a\xf2\xab\x1e\xbe\x7d\x0d\x30\x48\x69\xe1\x91\x27\x70\x49\xa8\x0c\x43\x29\x87\xa3\x3c\x1c\x49\xd3\x80\x95\xfc\x7b\x07\xfc\x67\x60\x5d\xb4\xd9\x26\x5c\x5a\x99\xc6\xf4\x80\x4b\x07\x2f\x21\xed\x96\xb9\xac\xb9\xd3\x0b\x69\x79\xd9\xe0\xcf\xb0\xd8\x38\x4d\x99\x2c\x09\x05\x3b\x99\x76\xa3\x98\x20\x24\xba\x71\x42\x81\xeb\x54\x2c\x77\x44\x74\xba\xd4\x32\x95\x3d\x8a\x3b\xb4\xdb\x84\x1c\xb4\xfa\xae\x15\x71\xa5\x95\x73\x99\x7d\xb3\xc3\x7f\xdc\xc5\xa4\xf9\x38\x12\x94\x7c\x49\xac\x8b\xc1\x85\x42\x1c\x83\xd9\x72\x9f\x90\xde\xc0\xbb\xdb\xdc\x9b\x0c\x70\xce\xcd\x90\x24\x02\x71\xa0\xde\x4f\x06\x87\x61\x2c\x51\x6c\x83\x17\x79\x95\xc5\x0f\x7a\x52\x9f\x82\x13\xf5\xe7\xa7\x60\xa2\x27\xf7\x13\xbd\x69\x94\x31\x4e\x54\x21\x61\x98\xa6\xd6\x92\x6c\x1e\x9c\x9d\xbd\x5a\x2f\xe8\x31\x4b\x54\xd4\x83\x07\x67\x67\x67\xea\x66\x41\x1f\xd2\xc9\x22\x96\xb1\x31\x0d\x99\xd4\xb7\x9a\xb5\xf9\x4c\x0b\x46\xb9\x7a\x45\x27\xca\x25\x3c\x3c\x7d\x5e\x7d\xb3\xc2\x71\xf1\xfe\x5a\x7c\xa2\xdc\xbc\xf6\xe1\x61\xac\xe2\xd7\x32\xe6\xc9\x8c\xca\xa7\x8a\x2e\x5d\xae\x47\x2c\xef\xc4\x93\xd7\xcf\x8f\x0f\x17\x8b\x07\x62\xb1\xa0\x13\xd7\x05\x9d\xb6\x95\xf0\x48\xc8\xa5\xdb\xec\x75\x29\x67\x54\xe7\x28\xd2\x9e\xd3\x29\x8b\x5d\xb5\xcf\xd9\x92\x6a\x51\xda\x1a\xd1\x7b\xa0\xa5\xbf\xe9\x89\x98\xd2\xe7\xf1\x4a\xbf\x8a\x29\x75\x5d\x7c\x11\x33\x3d\xbe\xcf\x6b\x9a\xf8\x41\xbd\x58\xac\x2f\x19\xcf\x1f\x7c\x1d\x67\x6f\x1f\x1f\x9b\xf9\x76\xd9\xce\xde\x3e\x3e\x59\x2f\x2f\xa8\x2c\xde\x5f\xc4\x6a\x7e\x46\x2f\x4b\x09\x82\x71\x55\xbc\x56\x60\x75\xf6\xf6\xb1\x85\x8d\x90\x1e\x30\xd6\x59\xf9\xfe\x7a\x36\x2b\x6a\xd5\x53\x74\x36\xa7\xd4\x57\xf3\x9a\x7e\x51\xaf\x65\x3c\xf9\xf4\x20\x9f\xa4\x3c\xc9\xbf\x8b\xf5\xc4\xf5\x32\xcb\xb7\x5b\x13\xe3\x04\xb5\x76\xeb\x6a\x26\x89\x18\x25\x72\x0c\x0b\x49\x66\x32\x0c\x67\xa5\x7d\x0b\x2d\xa8\x2d\x64\x18\x2e\x64\x41\x49\x08\x97\xd8\x3a\x89\x2f\x24\xe4\xb4\x0e\x78\xd9\x17\xbe\xc8\xaf\x09\x8f\xd9\xf2\x5e\x6d\xaf\x6a\x2f\x8f\xd9\x15\xdd\x7c\x9e\x41\x67\x75\xba\x9c\x84\x2a\xf3\xaa\xab\xb6\xc5\x91\xa3\x9e\xe1\x68\xde\xc3\x7d\x2e\xbf\x11\x3c\xf0\xcf\x05\xfc\xfb\xe3\x90\x82\x1b\x17\x0f\x4b\x12\xf4\xc7\x99\x73\x12\x31\x97\xc3\xb9\x8c\x36\x19\xee\x9e\x9f\xbf\x7d\x73\x74\xfe\xf0\xe8\xed\xeb\xd3\xd3\xe3\xb3\xf3\xc7\xc7\xa7\xf7\x0f\x8f\xcf\x9f\x9c\x9e\x3e\x3b\x3f\x2f\x0e\x9a\x5f\x49\x4b\x3b\x4b\x4e\x1a\x48\xe1\x86\x40\x57\x25\xe8\x22\x35\x92\x63\x90\xb8\x12\xce\xea\x46\x96\x03\x2d\xb9\xbd\xf0\x86\xc0\x51\xca\xcc\xdd\x52\xd6\x0f\x09\x98\x43\xac\xfe\x18\xa1\x3d\xa5\x7a\x3e\x99\xb3\xc5\x54\x52\x5e\x8b\x9c\x61\x8e\xfb\xba\x2c\x32\xbe\x7e\x2e\xa6\xeb\x05\x25\xee\xc0\x91\x73\x24\xa2\x36\xa4\x96\x79\x24\x4d\x92\xbd\x1c\x4a\x84\x23\xe9\x3c\xb5\x2f\x25\xd9\x70\xad\xc5\xad\x62\x4d\xfe\xea\x46\x8e\x2c\x1b\x5c\xca\x6e\x91\xa1\x7b\x49\xd5\xb6\xe4\xd8\x6e\xd7\xfa\x54\x2a\x91\xc1\xb2\xb4\x0a\xba\xf1\xd4\xee\x20\x34\x41\x21\x1f\xb6\x3d\x21\x51\x2d\x28\xe9\x52\x5c\xd1\x7a\x59\xbc\xf1\x1e\xbb\xf5\x0a\x6a\xc5\x2f\xa9\xda\x2e\xeb\x45\x86\x3f\x28\x3b\x8f\x93\xdd\x65\x7d\xf4\x86\xa2\x82\x5a\xe9\xf5\x6a\x1a\xab\xba\x60\xbc\x0b\x5a\x44\x95\x5e\x40\x75\x63\x53\x26\xf1\x67\x53\x4b\x65\xdc\x17\x92\xe7\xc1\xa0\xba\xcb\xb5\x8a\x77\x15\xc8\xbf\x91\x52\x3e\x5d\xc8\xee\x72\x35\x15\x71\x5f\x48\x9e\x07\xd7\xc6\xe6\x56\xcb\x36\x74\xae\x24\xaa\x02\xc5\x18\xd9\x9a\xca\x3e\x36\x35\x7f\x13\x3c\x79\x07\xf3\x5a\xb7\xbe\xed\xac\xfe\xd0\xd4\xfa\xcd\xea\x73\x18\x37\x54\xef\xbe\xed\xac\xfe\xb9\x03\xe4\x37\x1b\x28\xcd\x4a\x43\x13\xf9\x57\xd3\xc8\x0e\x27\x30\x54\x6e\x1c\x2e\xa5\x15\x3f\x2e\x24\x5c\x37\x80\xce\xee\xf7\x51\x89\x46\x63\x50\x66\x47\x66\x70\x5d\x5b\x0b\x8d\xa8\xdc\x95\x74\xba\x9e\x54\x4e\x0e\x94\xe3\xb1\xe6\x6b\x08\x51\x9c\xf9\x68\x54\x42\xe8\x5e\xd7\xab\x3f\xf1\x38\xdc\x64\xd6\xf7\xe5\x06\xdf\x6a\xb7\xe4\x0b\xd1\x41\x88\x92\x62\x05\x23\x89\x71\x69\x91\x0c\x65\x27\xd8\x0f\xa2\x20\xd0\x7d\xd2\xff\xab\x9d\x69\x58\x7d\x45\xb8\x40\xe5\xbd\xbe\xcd\x39\x77\x9b\x55\x0b\xa3\xbc\xbb\x34\x73\x93\xe4\x41\x5a\x84\xf1\x75\xce\x93\x8d\x85\x51\x16\x5d\x12\x5e\x8f\x1d\x28\x94\xfb\xdc\x0a\x0c\x95\x2c\x45\xb5\x23\x31\xc6\x59\x66\xa6\xc7\x03\x03\xb6\xc0\xe8\x67\x71\x87\x04\x6f\xc2\xa6\x14\x9e\x0d\xc6\xfd\xa1\xdd\xc3\x3e\x46\x1c\xbd\x6e\x2d\xa5\x71\x20\x19\x98\x03\x47\x4e\xaa\x1e\xe6\x0d\x12\x61\xe3\x3a\x5c\x52\x85\xbc\xff\x51\x0f\xf6\xfa\x18\xe7\x34\x1a\xa9\x91\xca\xc3\x05\x8c\x41\xe0\x01\xf5\x23\x30\x98\x9c\xbf\x95\x77\xdb\x40\xe0\x0d\x2f\x50\x50\x95\xa0\x41\x1d\xeb\xac\xcd\x10\x6f\x18\x69\x05\x59\xb6\xbb\x08\x92\x54\xfb\xc6\xab\x08\x32\xe0\x61\xc8\x3d\x57\x0d\xc3\x0a\xf7\x40\xb2\xde\x03\x96\xbc\x72\x3d\xa0\xd3\x7f\x7f\x1f\x8a\xd0\x48\x9e\x5f\xe8\x96\xcc\x7c\x9c\xed\x1a\x5a\x31\x81\x4a\x93\x5f\xb2\xc9\x30\xb4\x2f\x64\x18\xee\x16\x7c\xbc\x7f\x5b\xf7\xed\x9a\x86\x61\xcd\xea\xad\x8b\x2a\x42\xc8\x85\x3f\x12\x30\x68\xff\x97\xfd\xbf\xb5\xff\xcb\xff\xaf\xf5\xb7\xd6\xd5\x9a\x7e\x69\x5d\xdd\xee\x7e\xdf\xed\x9b\x77\x34\xc1\xf6\xc8\xdb\xd1\x55\xcc\x5b\xef\xc5\xda\xa4\xfe\xa3\x1e\x21\x4f\x68\xeb\xf9\xd3\xd7\x3a\x61\xff\xbf\xd4\x9a\xb0\xd2\x39\x52\xde\x8a\x56\x32\x95\x8d\x7a\x63\x7c\x8f\x1c\x60\xd5\x5d\xb2\x2f\x8c\xa3\xcd\x05\x9d\x09\x49\x1f\x58\xcb\xb6\x56\x94\xf3\x53\x5f\xc6\x05\x33\x9f\x80\x73\xc6\x99\x1a\x6c\xa5\x54\x81\xb6\x0d\x29\xd5\x35\xb9\xec\xcf\x70\x24\xc7\x1e\xd7\x6c\x0a\xd6\x62\x6e\xd9\x80\x59\x0e\x61\x29\x73\x2b\xb0\x99\xde\x5b\xc2\x6c\xd4\x24\x03\x2d\x44\x09\xe9\xc2\x8f\xdc\x32\xcf\x8d\xf1\xda\x7c\x36\xfb\x8b\x70\xe4\x9e\x22\xef\x5a\x1a\x86\xfe\xc9\x55\xe3\xf9\xab\xab\xb4\xf6\x55\xd3\x83\x0b\x49\x14\xce\x50\x31\xbf\x38\x97\xec\x56\x46\x69\xda\x5a\xf0\xa3\xb1\xdf\xda\xd7\xcd\x4b\x36\x51\x45\x0e\x6e\x42\xea\xb6\xfb\x5e\x60\x9c\x88\xe5\x92\x29\xc5\xf8\x65\x1e\xd1\xea\xdc\x0b\x11\xbb\xc5\x4c\x9b\xe3\x6c\x7d\xa1\xf5\xfa\x0b\x2d\x0c\x78\xaa\x75\x5e\x08\x14\xbb\x8b\x5f\xcb\x78\xb5\xa2\xd3\xc7\x4e\x90\xd8\x9d\xd1\x51\x12\x43\xb8\xae\xa5\xd9\x95\x2b\xa7\xe7\x0c\xe5\x79\xbc\xfa\x46\x2d\x49\x53\x3f\xaf\xb5\x2a\x45\xe5\xdb\xe7\xa6\xf2\x0b\xe9\x6b\x8e\x3f\x51\x73\x26\xc4\x75\xee\x41\x3c\x99\xd7\x43\xd5\x15\xf1\x75\x6c\x60\x20\x70\x91\xa1\x7c\xb0\x2b\x88\x89\x0f\xd5\xb2\xd4\x18\x5c\xfe\xd6\x7c\xee\x8a\xf9\x98\x41\xf6\xb8\x7b\xa9\xf4\x2e\x9d\x2e\x2e\x95\x30\xde\x11\x4e\xbe\xd7\xb3\x4d\xb8\xb5\x78\x90\x0a\xb0\x0c\x7d\x77\xca\xc0\x17\x67\x0e\x9b\x40\x31\x6f\xa5\x5c\x18\x3e\xfa\x0c\x9a\x5b\x6d\x6b\x3f\xaa\x1c\x8f\xdd\x6c\xfb\xa1\x62\x8f\xa1\x3b\xa5\x57\x4a\x88\x45\x32\x2c\x1e\xa3\x0b\xd9\xb5\x4a\x44\x9e\x84\xab\x74\x6a\x6a\x8e\x62\x77\xcf\xdd\xe7\x27\x42\x7c\x22\x53\x09\x53\xd9\xa5\x4b\x4d\x49\x34\xa1\x8a\xf4\x02\x0e\x40\x61\x9d\x2c\xb8\x4b\x54\x32\xbe\xa2\xce\xb3\x29\x56\x34\xa8\x7a\x79\x28\x7f\xbe\xe3\x4c\x7f\x74\xbd\x55\xdd\x1c\x27\xea\x72\x4d\xb5\x41\x8f\xcd\x81\x9d\x19\x0c\x9b\x95\xa4\x2b\xca\xa7\x46\x07\x2e\xd7\x63\x45\xca\x6f\xd7\x66\x97\x4d\x73\x5d\x38\x73\x47\xfb\xe0\x48\x92\x8d\x19\x49\x93\xde\x95\x93\xaa\x53\x59\xd7\xf2\xfd\x69\x2d\xa4\xf0\xdd\x9e\x26\x04\x61\xa8\xf9\x99\x69\x62\xa8\x39\x6a\x32\x67\x33\xb3\x51\x48\xbd\xa3\x45\x11\xa6\x0f\x79\x53\x6e\xb9\x9a\x81\xbc\xb7\xd7\xd7\x8c\x52\x53\xf3\x09\x45\x12\xfa\x65\x6a\x79\xee\x94\x65\xf5\x07\x24\xe3\x0f\x89\xc2\x9f\xa3\x08\x7f\x7a\xd9\xd7\x34\x5f\x8d\xec\x20\x0d\xa6\x57\xd1\xdc\xf8\xf0\x7c\xb4\x5f\xcb\xb1\x5d\x3f\xca\x9a\x50\xd5\x3d\xbf\x5a\x0e\x72\x75\x87\x6c\x32\x53\xd3\xdf\x4b\x29\xea\xa3\x04\x46\x36\xd9\xe0\x4a\x22\x51\x91\x94\x24\xde\xb0\x91\x1c\x37\x13\x8a\x06\x37\x5c\x13\x33\xc8\xec\xcd\x37\xaa\x09\x37\x28\xef\x38\xc8\x5d\x6e\x77\x66\x84\x23\x39\xce\xaa\x16\x20\x73\xb0\xdd\x05\x12\x2b\x16\x70\xc2\x16\x94\xab\x41\x3d\x81\xb4\x7b\x60\xea\x71\x04\x15\x6d\xa6\xb1\x8a\xa3\xcd\xad\x5b\x16\x99\xa9\x0d\x10\xb6\x56\x74\x1a\xb1\x0c\xc3\x56\xf9\x18\x3c\xbb\xaa\x52\x06\x53\x69\xf7\x96\x21\xd8\x4d\xae\x85\x96\x7e\xe9\xc6\xba\xae\xad\x4a\xbc\x6b\xac\x85\x82\xcd\x94\x52\xe3\x2b\x91\xdc\xf0\x89\x1d\x99\xf1\x98\xb2\xcb\x44\x4f\x0d\x53\xf3\x07\x86\xe2\x56\x9a\xe0\xd5\x8a\xcd\x19\x05\x4d\x40\x2e\xa4\x09\x06\xf6\x9a\x4d\x3e\x35\x75\x89\x77\x6f\x4d\x69\xa2\xa4\xb8\x31\xa1\x3b\x4b\xb8\xf5\x45\xfa\x9b\x1b\x20\x0f\x2b\xd8\xf6\x67\xe9\x34\xe3\x28\x50\xb4\xac\x31\x21\x1b\x8e\x9f\x97\x54\x1c\x4b\x2e\x1b\x96\xc4\x28\x1e\xef\x58\x2c\xa3\x78\x4c\x38\x86\x36\x0b\xc3\xb6\xf0\xc7\xb4\x0f\x8d\x42\x50\x15\x62\xd7\x44\x8e\x64\x49\x88\xdd\x0d\xa0\x0b\xd9\x4d\xa8\x32\x1e\xcd\xdc\xae\x37\x23\xcc\xdb\x38\xeb\xdc\x9e\x67\xf9\xb2\xcd\xc5\xdc\x0d\x12\x26\xb2\x25\x08\xb2\xf1\xec\x31\xe2\x9a\x69\xf8\x97\xba\x8f\xba\x05\xd7\x27\xe9\xde\x4d\xf0\xc5\x55\x7c\xb3\x10\xf1\x14\x26\x84\x75\x9d\xb8\x06\x6b\xc2\xcc\xd9\xf9\xfc\xb6\x86\x30\x9c\x98\x15\x9f\xa6\x68\x4d\x68\x67\xad\xa9\x89\x6f\x05\xad\xc1\x05\xaf\x5b\x32\x65\xda\x77\x8f\xff\xe1\xd6\x1b\x9b\xb5\x95\xeb\x46\x61\x82\xb3\xdc\xb5\x6a\x97\x86\x2f\xcc\x92\xd5\xab\x37\x32\x6b\x97\x0f\x9b\x56\xaf\xcb\x92\x35\x2c\xed\xad\x2d\xd6\xf6\x2e\xda\x35\xa2\x63\xcf\x04\x36\x99\xd1\x9d\xdc\x89\xa1\x8a\x31\x34\x37\xfa\x34\x88\x05\xc2\x34\x20\x72\x5c\xe2\xd8\x1c\x8b\xf0\x21\x0e\x5d\x3a\xc7\x83\x66\x42\x25\x81\xed\x26\x50\xae\xd9\x91\x68\x20\x52\x96\xa5\xef\x1c\x15\xc9\x63\xc7\x7e\x23\x53\x66\xe3\xe9\x64\xe0\x58\x6f\x73\x3f\x0e\xb5\x8e\x63\x72\x98\x8b\x22\x32\x0c\x22\x33\xe7\x5c\xb5\x76\x59\x37\xff\xa0\x1a\x59\x6f\x57\x57\x01\x70\x13\xdd\xa4\x60\x8e\xe6\x28\x7d\x3d\x45\x4b\xf3\x2e\x6e\x49\x45\xae\x29\x22\x69\xbb\xfe\xd8\x85\xa7\x3b\xd3\x91\x40\x21\xb1\x0e\x8d\x55\x8b\x57\xbd\x47\x3e\x0e\xaf\x46\xd2\xa1\x8c\x74\x49\x61\x2e\xbf\xe1\xd3\x05\x95\x69\x4a\x07\x3b\xfa\xec\xf8\x7d\xde\xe3\xe2\x7d\x57\x7f\xfd\x11\xfa\xbc\xdf\xa5\x35\x5f\x48\xce\x7e\x15\xba\x65\x02\x1e\xf7\x79\xce\xc3\xec\xf4\xf8\x41\xeb\x8e\xbb\x89\x8c\x4a\x7c\x4e\x08\x65\xc4\xbd\xc8\x4d\x56\x56\xf8\xe6\x22\x41\x18\x6e\x0a\x80\xd5\x12\x26\x2a\x73\x9a\x16\xc1\x9e\xf3\x3b\x16\x98\x45\xb0\x92\x6c\x3a\x74\x21\x4e\x6b\x77\x5f\xb8\xb0\x96\xe5\x9c\x65\x01\x90\x4a\x29\x64\x60\x63\x95\x60\xac\xd9\xa0\x99\x31\x0e\xa2\x3e\x5f\x76\x50\x7f\x02\x83\xcc\xed\x08\x35\xc9\x42\xaf\x64\x6f\x79\x6a\xf8\xd6\x64\xe6\x93\xc8\x83\xb4\x00\xb5\xc7\xf4\x92\xa1\x77\x27\x7e\x59\xd3\x46\xf9\x0a\x0e\x86\x37\x9e\xd9\x79\x0d\x9c\x61\x7b\xa8\xa8\xcc\x10\x0f\x65\x45\xc0\xa1\x7f\x60\x6e\xd4\x2b\xd5\xf8\x66\xe6\x15\x7c\xaa\x0b\xc2\x66\xeb\x45\x33\x75\x77\x83\x8c\x24\x14\x28\x51\xa0\x7c\xf0\x51\xe7\xb6\xaf\xc0\x51\xef\x88\x82\xa3\xdd\x91\xcc\xb2\x23\x69\x87\xdd\xbc\xa9\xe1\xa4\x8d\xab\x65\x4d\xe2\x80\xbc\x58\x52\xb3\xa3\x66\x70\x56\x36\x2b\xed\x50\xeb\x0a\xf3\x1d\x08\x92\x0f\x09\x34\xd5\x34\xc6\xdd\x98\x88\x12\xb3\xb1\x03\x60\xf9\x00\xe2\x0c\xd6\xa4\xa6\x7f\x8f\xd8\x78\xb0\xce\xcd\xf7\x3b\xd8\xf7\xba\x59\xb9\x53\x28\xf6\x31\x46\xb6\x54\x68\x7f\x2a\xf1\x0f\xd4\xc2\x49\x59\x1e\xc0\x35\x20\xec\xd0\x86\x8b\x88\xa3\xc0\x1d\x10\xec\x19\x66\x03\x02\x46\x78\x0e\x82\xd8\x81\x40\xe4\x20\x60\x19\x78\x85\xd7\x13\x23\x7b\xdd\xc1\xc4\x9e\xb5\xdc\x61\xb8\x28\x46\x63\x9c\x65\x76\xc4\x64\xb7\x26\xab\x0c\xff\xc1\xa0\x5d\x3e\x14\x83\x2c\xc9\x42\xd5\x93\xc9\x6b\x32\x29\x3c\x4f\x3c\x9d\xd1\x14\x71\xd2\x5d\xc6\xab\x1d\xc0\x64\x06\x88\xd1\x64\xd4\x1b\xa3\x22\xd0\xbc\x96\xb3\x5d\x0d\xf5\xe5\xb2\xae\x47\x98\x77\x81\xc7\x64\x13\x08\xbe\x39\x74\x13\x57\xf6\x8f\x47\x6e\xb2\xed\x1c\xb8\xb5\x12\x54\x9d\x8f\xff\x7d\xdd\x31\x14\xb4\xb9\x3b\x65\x22\x62\xb2\x15\xdd\xb1\xde\xe1\xa5\x0e\x51\xeb\xad\x9c\xd9\xc8\x14\x65\xd4\xcc\x31\xbd\x59\x01\x33\x6a\xf7\xd6\x9a\xb0\x41\x0a\x1b\xab\xd9\xda\x6a\xaa\x56\xd6\x18\xa8\xc7\x99\x48\x23\x95\x45\x6a\x97\xc5\x6d\xbb\xc9\xeb\xad\x15\x55\xdb\x17\xa8\x50\xb0\xdc\xfe\xf5\x2d\xcd\x6a\x9b\x29\xe8\x69\xb4\x06\xa7\xb3\xea\xb6\x44\x61\x63\xd9\x65\xd5\xfe\x26\x21\xa2\xdb\x34\x95\xa8\x6c\x8b\x70\xf8\x4d\x01\xb7\xc9\xbd\x35\xd8\xaa\x21\x54\x6b\x7e\x5b\xf1\x9e\xac\xa5\x78\xa4\xc6\xb8\x6e\xf9\xca\x77\x27\x34\xd9\xf1\x26\xb2\x62\xdf\x1c\x54\xad\x80\xb1\xfe\x63\x30\x46\x96\x84\xca\x2b\x3b\xfc\xc2\x78\x56\x14\xad\x0f\xa3\xd8\xdd\xd8\x1a\x48\x05\x64\x7f\xbe\xf3\x45\x8d\x85\x95\x74\x07\xa8\x2d\x95\xd5\x6a\x5f\xce\xdf\xcb\xca\x9f\x56\xec\xed\xf6\x39\x92\x50\xd9\xcb\x30\xfc\xe0\x5c\x7a\x3b\xd5\x59\x6d\x37\xbc\x61\x28\xfe\x40\xdb\x9f\x1d\x45\x79\xcf\xc5\xc4\xd4\xa8\xb6\x21\xd4\x9b\x5d\xdb\xe6\x39\x1c\xec\x76\x9d\xca\x3b\x6a\x02\xd0\x57\xeb\x29\x01\x66\xd7\xc6\x4e\xc9\x2e\x3e\xd8\x36\x94\xf7\x40\xa1\x06\x03\x3a\xdd\xbd\x51\x5b\x6e\x1f\x8e\xdc\x46\xed\x0b\x49\x1e\xc8\x3a\xe5\xf6\x0a\x98\x5f\xad\xaf\x24\xa2\x3b\xa8\x9d\x97\xde\x3f\xd1\x1b\x23\xb6\x5f\xc5\x8b\x81\x20\xaa\x23\x40\x8e\xf8\xb8\x76\x74\xa9\xad\xd2\xf4\xb5\x2c\x6f\x36\x40\xb0\x8c\x57\x4e\x2a\x0c\x4a\x4e\xb7\xa5\x2c\x15\xad\x4b\x57\xda\xd5\x62\x2c\x31\xf6\x4a\xd0\x64\x18\x8e\xff\x13\xc6\x50\xef\x7d\x11\xb5\x7c\x34\x06\xb9\x75\x78\xca\x46\xb4\x30\x47\x3f\x0a\x4f\x4e\x39\x1e\x94\x42\xfc\xbb\xd1\x78\xb1\x63\x50\x5c\x8b\xc4\x48\x03\x50\x2c\xcd\x36\x40\xb1\x97\x1e\x79\x69\x9a\x9b\xdb\x1e\x8c\x49\x23\xaf\xcc\xe9\x96\x4d\x0a\xc5\x50\x38\xef\x77\x83\x88\x1a\x7c\x4e\x10\xa6\x18\x47\xbc\xf4\xcd\x37\x3e\x12\xe5\x2c\x99\x87\x72\x61\xf5\x7d\x25\x9b\xa2\x94\xa9\x92\x7e\x5a\x8a\x59\x83\x14\x4e\x53\x23\x0d\x67\x48\xe1\x61\xfd\xdb\x50\xed\x92\x38\x36\x9f\xe8\x4d\xa4\xe0\x2a\x5e\x44\x4a\x77\x22\xaa\xb9\x43\x55\x8b\xd1\x4a\x31\x6a\x8b\x69\x39\x5d\x97\x1c\x8d\x0b\x49\xfd\x41\x63\xe7\x4b\xa2\xfb\x76\x74\xbf\xa1\x93\xde\x83\x00\x47\xc1\xbe\xbd\x9c\xcc\x5d\x84\x42\x73\xc2\x84\xc3\x10\xd1\x0e\x09\xf6\x03\x0c\xca\x5d\xe1\x98\x37\xfa\xba\xae\x1e\xec\x30\x8d\xc9\xb1\x11\xcf\x4e\xa4\xf1\xb1\x5f\xf3\x64\x22\x56\xf1\xc5\xc2\xf8\xd9\x3f\x95\x2e\x18\x50\xe1\xb7\x67\x03\x0d\x3c\x95\xa3\x13\x39\x0e\xc3\x17\xdd\x19\x7a\x2a\xe1\x44\xee\x0a\x53\x71\x5f\x59\x5b\xb0\xf3\x10\x7d\x23\xe1\xb9\x84\x5b\x12\x1e\x56\xf7\x80\x6d\x7d\xc6\x11\xbd\x97\xc1\x23\x63\x88\xb9\x2f\xeb\xb1\xd0\x4b\x9e\x0a\x78\x53\x98\x36\xca\x3a\x46\xe1\xd8\x6f\x9c\xae\x1b\xef\x90\x44\x5a\x7e\x54\xd8\x6c\xd9\xe4\x65\x35\xca\x7d\x96\xb5\xf0\x3e\x8f\xe5\xf6\xe9\xf6\xaf\x92\xdc\x97\xc3\xc6\x8a\x1b\x1d\xb0\x89\xf1\x91\x85\x6b\xa4\xe0\xb3\xc4\x43\x35\xfa\x2c\xc7\x8d\xb1\xb4\xcb\xbd\x0f\x43\x55\x3e\x6e\x59\xf9\x36\xac\xbc\x15\x3d\x8b\x2a\x45\x6c\x07\x87\x8f\x65\x64\x4c\xb7\xf0\xd6\xce\x6f\x7e\x31\x2f\x86\x27\x92\xb4\xfb\x83\xd1\xd8\x60\x77\x18\xba\xab\x18\x19\x47\xb7\x24\x71\xa9\x08\xe3\x21\x7a\x2e\xc9\x57\x89\xbe\x4a\x74\x4b\x62\xac\xa1\x56\x07\x49\x18\xa2\x37\x92\x3c\x97\x38\x7a\x62\x9c\x2e\xc0\xe2\xc8\x1b\x69\x3f\x68\x61\xe4\x1a\xbd\x91\xf0\x56\x9a\x38\x95\xe6\xa9\xe9\x2c\xa4\x26\x08\xde\xee\xfe\x4e\x92\x8d\xbf\xaf\x2a\x87\x70\xf4\x46\xc2\xfd\x37\x8f\x1f\xbf\x3f\x3f\x3b\x7c\x74\xf8\xea\xe9\xf9\xd3\xd7\x47\xaf\x0e\x5f\x9f\xbe\x3a\x8b\x9e\xc8\x0c\x9e\x49\xf2\x4e\x76\xb7\x4a\xc1\x7b\xb9\xf3\x9a\xa8\x9f\x77\xf9\x93\xd0\x4e\xd0\xca\xef\x27\x1e\x6c\xa3\x1a\xb9\xaf\xd0\x33\x09\xf6\xc2\x35\x1b\x13\x39\x33\xe7\x74\x14\x70\x68\xf7\x31\x3c\x32\xc4\xfc\xbd\xf1\x13\x7d\x99\xa3\x51\xf5\x36\xb1\x34\x45\x41\x7e\x91\x58\xc0\xf8\x26\x1b\xd6\xc4\x15\x05\xf6\x0e\x28\xcd\x53\xb4\xde\x80\xd4\x1f\xc5\xd5\x46\x5b\x08\x5b\x6a\x02\xeb\x0e\x60\x7f\xf2\x7b\x34\xc6\x40\x89\x2c\x63\x8d\x59\xed\x25\x75\xe1\x5b\x51\x56\xcc\x79\xf9\x9a\x3b\x84\x09\xa8\x6d\xa3\x91\x34\xc7\x6f\xb5\x31\xd3\x13\xaa\x5a\x79\x18\x60\x13\x86\x26\x4e\x5a\x71\xab\x14\x58\x30\x43\x1c\x03\x1d\x2a\xdf\x57\x8e\x23\x59\xba\x74\x8d\x83\xcc\x32\xe4\x8f\x04\x63\xf8\x65\xc7\xd4\xff\x6a\xd2\x9b\x71\x06\x14\xaf\x2f\x09\xca\x77\x62\x8a\xe4\xa4\x6e\x83\x02\x61\xa3\xbe\xfe\x2c\x91\x34\x41\x15\xec\xee\xb3\x8d\x71\x52\x0f\xcc\xa3\x08\x21\x22\x0c\xaf\xbc\xb0\x71\x65\x18\xec\xaf\x6e\xa5\xb7\xe6\x3e\x7d\x3e\x52\xe3\x41\x35\xfe\x88\x8d\x7b\x1c\x99\x47\x7b\xe9\x97\x7b\xa1\xf6\x6a\x92\x60\x77\x94\x1d\x4d\xe9\x64\xe1\xef\xf1\x27\xf2\x61\x73\x91\x42\x05\xfd\x61\xa5\x71\x70\x4e\x2a\x31\x3e\xc8\x7c\xa4\xf8\x38\x4d\xe7\xa3\xf2\x75\xdf\xe3\x34\x15\x61\x38\x1f\x89\x31\x5c\x11\x33\xba\x69\x9a\xce\x90\xc0\x70\x43\xf2\xa8\x71\x34\x0c\xe7\x5d\xd7\xf7\x34\x9d\x6a\x40\xdc\x84\x21\x9a\x68\x32\x73\xe3\x4e\xcc\x18\x0a\xad\xe7\xb5\x91\xde\x4c\xcc\x26\x54\x18\x6a\xaa\x34\xd1\x24\xe9\x17\x4d\x6b\x5e\xca\xe1\x4b\x89\x26\xf0\x8b\xc4\x51\x43\x1c\xa4\x89\xee\x70\x18\x1e\xa3\x09\x28\x0e\x94\x63\xb3\x5e\x27\xb0\xd0\x92\x32\xc6\xe0\x61\x6b\xe6\x69\x1a\x86\xfe\xbd\x4d\xc8\xd4\x6c\x3f\x99\x08\x32\x9a\xb3\x35\x20\xc9\xb4\xf0\xac\xd1\x84\xc0\x00\xa7\x4d\xc8\x95\x6e\x6f\xae\xdb\xbb\x32\x24\x81\x8e\xc9\x15\x08\xcc\x66\x68\x4d\xac\xf3\x79\x12\xcd\x90\x6f\x09\x83\x39\x6a\xc1\x86\x57\x3a\xd1\x45\xbb\x76\x80\xd2\x29\x7e\xbe\x71\x06\xb1\xf1\xc5\x4b\x8c\xbb\x3d\x46\xbf\xca\x34\x5d\xa5\x69\xdb\x26\xcc\x31\x0e\x43\xaa\xd0\x1c\x12\x58\x8f\x92\xb1\x75\x34\x6a\x95\x8e\x7b\xd0\xad\x13\x3d\xa6\x86\x0c\xd6\x45\xd8\x88\x0c\x38\xf7\xf1\x5f\x04\xaf\xc5\x7f\x31\x53\x59\x60\x08\x86\x98\x13\xc9\x91\x49\x06\x7f\x6a\xa8\x26\x1c\x73\x6e\x11\xd1\xc5\x0e\xa9\x55\x01\xae\x6b\xe6\x30\x8c\xd9\x89\x8f\x7a\xf0\x89\xf1\xa9\x89\x74\x55\xdd\xd7\xb4\x9e\x4a\xc2\xd6\xa7\x69\x58\x1e\x4a\x52\x12\xd5\xd5\x85\x80\x1b\x3f\xa8\x29\xfd\xd2\xe9\xf8\xe3\x59\x34\x4d\xf9\xbd\x7c\x73\x67\x88\x7c\x21\x7f\x3f\x5d\xf3\x05\x99\x38\xb2\x13\x41\x88\x1c\xba\x1c\xdc\x7d\xec\x67\x51\x81\x33\xf9\x57\x13\x7a\x32\xcf\xe0\x12\x47\x1c\x74\x7a\xf1\x21\x2b\xf0\x0d\x0f\x1e\xc9\xee\xa1\x17\xe0\x89\x79\xd1\x60\x7c\x28\x73\x1c\xd0\x8f\x39\x8e\xe8\x97\x1c\x13\x2c\xc9\xa9\xd3\x26\xc7\xc5\x40\xf8\xd9\x7c\x29\x1b\xaf\xbe\xe0\xa4\x22\x33\x69\xca\xdd\x36\x36\x84\x25\x12\xa4\x14\xc4\x19\x87\xa1\xd0\x1f\xca\x6b\xf0\xa5\x96\x2f\x85\x89\x15\xb2\xe6\x24\x18\x7d\x50\x1f\xf8\x87\xab\x0f\xb3\x0f\xb2\xf5\x5f\xff\xf7\xff\xe7\x7f\xfd\xed\xf7\xdf\x7e\xfb\xfd\xb7\x7f\xf9\xfd\xb7\x7f\xfd\xfd\xb7\xff\xff\xef\xbf\xfd\x77\xbf\xff\xf6\xdf\xff\xfe\xdb\xff\xf0\xfb\x6f\xff\xe3\xef\xbf\xfd\x4f\xbf\xff\xf6\x3f\xff\xfe\xdb\xff\xf2\xfb\x6f\xff\xe7\xef\xff\xf2\xbf\xfd\xbf\xbf\xfd\xf6\x61\x7d\xd0\x3b\xf8\xd1\xfc\xff\xe9\xc3\x7a\x46\x67\xb3\x71\x00\x09\x27\xaf\xe8\xe5\xd1\x97\x15\x0a\xfe\x29\xe8\xac\xb9\xfe\x0b\xfe\x16\x60\x98\xe5\x1f\x7c\xe2\xad\x00\xc3\xa2\xf1\xe6\xa0\xba\xc2\x25\xfd\x31\xfb\x2b\xad\x66\x78\xe0\xf4\x43\x65\xac\x26\x32\x8f\x88\x9a\x70\x30\x81\x12\x0f\xb6\xbe\xcc\xdc\x17\x99\x65\xb0\xe2\xc6\x5f\x45\xaa\x68\xc1\x51\x5f\xaf\xd4\xa9\x7e\x3a\xc0\xa0\x24\x5b\xea\xc7\xdb\x38\x83\x39\xb7\x21\xfb\xa6\xdc\x9c\xf0\xba\xb2\x11\x65\x6f\x38\x59\xf1\xae\xce\x07\x4b\x4e\x44\xd7\xfa\x11\xc2\x25\x27\xcb\x72\xf0\xec\x0b\x4e\x02\xfb\xc9\x44\xdb\xbc\xaf\xd0\xa5\xa6\x5b\xd7\x0d\xf7\xa8\x16\x1c\x09\x0c\x0b\xb2\xc1\x5a\xfa\xf6\x8e\xdb\xba\x21\x22\x09\xc3\xfc\x1c\xe0\x81\x26\x47\xdf\xdd\x36\x97\xa7\x12\x94\x90\x1b\x8e\x12\x8c\x8d\xb6\xf1\x40\x4c\xa9\xb9\x7a\x11\xa7\xe9\x77\xdf\xdb\x3d\x4d\x36\x43\x3f\xfe\x68\x43\x8d\x25\xe5\x4c\x07\x3a\x53\xff\xa0\x57\x8e\xc0\x7c\x12\x9f\xe4\xd1\xaf\xbe\xfb\xd1\x96\x77\xbc\xad\x52\xb6\x8f\x5d\xa4\xad\x3b\x77\x0c\x67\x6b\xfd\xf4\x63\xc4\xc9\x01\x08\xf2\xdd\x4f\xf6\x7e\x38\x1b\x58\xeb\x87\x9f\xec\xe7\x7e\xbf\x1f\x71\xf2\x23\x08\xf2\xfd\xf7\xee\xfb\x94\xce\xe2\xf5\x42\x39\x56\xd8\x49\xcc\x35\x87\x31\x41\x8c\x78\x53\xf7\x01\xc6\xde\xdd\x60\x42\x7a\x83\xc9\xdd\x38\x8f\x22\xbd\xd6\xea\x6d\xd1\x9d\x09\xc6\x77\xbf\xfb\x31\x4d\xd7\xf7\x44\x69\x24\x1e\x5d\x56\xb1\x4c\xe8\x53\xae\x10\x03\xee\x6f\xf2\xea\x24\x26\x80\xca\xa1\x42\x7e\xba\xa0\xbd\xe4\x28\x68\xf5\x44\x3f\xc0\x69\x6a\x5e\x7a\x17\xe6\x59\x3f\x76\x7a\x5f\xfa\x01\xc6\x85\x8a\x7f\xc6\xe1\xa8\xe9\x72\xdc\xad\xc0\xe4\xfd\x61\x2f\x32\x74\xae\x64\xd8\xac\x88\x70\x47\x3c\x0c\xd1\x05\x1f\xd6\xa2\x08\x70\x7f\x9a\xdc\x49\x54\x26\x2e\x91\xef\x6c\x9b\xac\x90\xc4\x78\x38\xe1\x86\xf3\x2e\x39\xba\xd6\x6b\x06\x83\x84\x23\x8e\x23\xf3\x92\xc1\x29\x27\xf1\x70\xce\xd1\x92\xe3\x28\x78\x7e\xf8\xee\xfc\xed\xe1\xf1\x9b\x23\x78\xfe\xf4\xc4\x3d\x9d\xc4\x27\x70\x72\xf4\xd8\xc4\x08\x3e\x7f\x7a\xf2\xe8\xe9\xc9\xd3\xd7\xef\xe1\xc5\xe9\xd9\xd3\x6a\xca\xd1\x8b\xb3\xa7\xc7\xa7\x27\xc0\x92\x47\x8c\x33\x45\x81\x25\x4f\xb9\xa2\x97\x54\x82\x09\x88\x0e\x2c\x39\x8b\x67\xd4\xa7\xe9\xa6\xce\x0e\x1f\xe9\x0a\x5e\x1f\x3d\x3e\x7a\x65\x5a\xac\x24\x98\x29\x79\xb4\x10\xb1\x02\x3f\x3b\x45\x9d\x81\xf7\xc9\x85\x00\xc3\x39\x27\xbd\xc1\xa9\x0f\x0e\x7b\xef\x9c\x0f\xce\x79\xa7\x83\xaf\xd1\x92\xc3\x19\x27\xa7\x7c\x74\xce\xc7\x36\x66\xd1\x91\x4e\xc1\x61\x78\xc5\xed\x23\x4c\xb9\xcd\x85\xf1\xe0\xa8\xb4\x48\xc9\x25\x87\x4b\x5e\xd1\x3d\x8f\x38\x50\x85\x04\xe4\xc8\x70\xc4\xad\x6b\xc8\x47\xae\x25\xf9\x8f\x7c\xb4\x15\x1f\x72\x4c\x82\xaf\x81\xa1\xe6\x5f\x34\x35\x75\xd1\x34\xbf\x8e\x03\x42\x3c\xd1\xfa\xc8\x31\x1c\xf2\x86\xd0\x92\x9f\xb8\x16\xae\x1c\xa2\x18\x42\xb1\x2d\xa0\xe4\x88\x94\x21\x8c\xe1\x05\x27\x5f\xf8\x70\xb5\x1d\x87\x44\x53\x91\x41\x3d\xce\x86\x1a\x06\x6f\x72\x07\xec\xc8\x85\x1a\x54\xc3\xe0\x64\xbd\x58\x04\x51\x9d\xb8\xa0\xad\x33\x5d\x45\xc4\x4f\x63\x1e\x29\xd4\x8b\x0c\x79\xc7\x31\xcd\xf5\x0f\x39\xc6\x43\x19\x7d\xe2\xc3\x15\xa2\x38\x3f\x93\x4a\x08\xe2\x44\xa7\x34\xef\x5e\x5b\x9f\x66\x4a\x87\x25\x10\x44\x3c\x83\x63\x33\xc4\x52\x94\xd4\x6d\xaf\x86\x1c\xcc\x41\xe7\x85\x13\x26\x3a\xc1\x38\xc8\x06\x5f\x78\x9a\x52\xd5\xa0\x4a\x15\xb1\x7c\x8e\x79\x25\x46\x8d\x99\xb9\x57\x9a\x92\xbb\x8d\x29\x78\xb0\xcd\x94\xf3\xd8\x16\x36\x54\x35\x55\x46\x5b\x34\x02\x83\x2c\x47\xdd\x7c\xcd\x6b\xf1\x0e\x4e\xb6\xeb\xd2\xda\x03\xaa\x68\xfc\x74\x3b\xbe\x8b\xb9\x2e\x43\x4a\x3b\x44\x24\x87\xb2\x13\xb4\xcc\xe1\x90\x4e\xc0\xf8\x95\x98\x58\x17\xcf\x72\xd3\x4f\xb7\x74\xa2\x37\xbc\x6e\x03\x82\xe7\x8d\xcc\xb6\x70\x84\x0d\x43\xe4\xa5\x18\x7b\x95\xe7\x1b\x3e\x7a\xca\xc7\xe6\xce\xc4\x0c\x6e\x6d\x35\xf1\x90\x37\x5d\x7b\xd6\x2e\x5d\x00\x39\xba\xa5\x75\x0d\x55\xd7\x35\x1e\xc9\x91\x9e\x38\x3c\xce\xe0\xd1\xb6\x7e\x56\xc1\x3c\x3e\xa4\x48\x6b\xac\xa3\xde\x18\xe4\xa8\x3f\xc6\x11\x45\xf9\xc1\xd2\xfc\x8a\x46\xd5\xf5\xee\x03\x06\x92\xf9\x90\x44\x18\x1e\x22\x91\x5f\x0a\x06\x34\xcb\xe0\x3e\x6f\xbe\x56\xa4\x86\xfc\x76\x2f\x44\xac\x56\x74\x4a\x54\x7e\x69\xfd\x7a\xa1\x08\xcd\x76\xdc\x26\x52\x5c\xc5\x1d\xcb\x96\x63\xe7\x30\x03\x1b\x2c\x53\x52\xeb\x87\x35\x3c\x88\x2c\x73\x67\x38\x26\x6a\xe0\xaf\x9a\x6d\x88\x27\x3a\x21\x0f\xb9\xb9\xca\x6c\x0b\x3d\x6c\x6c\x74\x1f\x02\xc8\x40\xf6\x62\x41\x6d\x08\xa0\xe7\x5c\xf3\x41\x83\xb3\x6b\xd2\x83\x84\x24\xaa\xb8\xfe\x7e\x90\xdc\x5b\x0f\xd6\x8e\x7b\xce\x88\x18\xce\xd1\x21\x5a\x11\x35\x5a\x8f\x0d\x84\x57\x06\xc2\x73\x64\x12\x70\x18\xce\xaa\x88\xea\xc5\xb3\xf2\x86\x2e\x35\x37\x2f\xc4\x64\x92\xdf\xb6\xa4\x9b\x5e\x10\x7b\x13\xf8\xa0\x8d\x56\xc4\xdd\xde\x17\x63\x6c\x6e\x4e\x36\xb7\x45\xd4\x0f\x96\xa2\x19\x79\xc4\x51\x0c\x73\x58\x59\x8e\x07\xc2\x74\xe0\xef\xe8\x03\x36\xf3\xd5\x84\xe2\x2e\x4f\xcf\x28\xd3\x18\xc3\xe7\x2d\x54\x7e\xcc\x49\xbb\x6f\x4c\x35\x7a\xee\xbe\x72\xd2\x83\xb7\x9c\x38\x33\x51\x9d\xfe\x6c\xac\x36\xd0\xfe\xca\x3b\x9d\x2c\x03\x9b\x58\xce\xa6\x6b\xeb\x65\xd9\xe0\x2d\x1f\x7d\xe6\xbb\x2f\x3b\xb7\xeb\x73\x26\xc5\x12\xbd\xe5\x15\x4d\xc9\xce\xf8\xc1\xf6\x6e\xfc\x13\x0e\xef\x38\x3c\xe3\xf0\xbe\x4e\x6b\x7e\xe6\x64\x1f\xb1\xd5\x5c\x70\x9a\xb2\x95\x98\xa6\x6c\x15\x4f\x71\xf7\x6f\xf1\x6a\xb5\xa0\xd7\xf4\xe2\x13\x53\xfb\xcc\xde\x5c\xf5\x90\x62\x78\xa9\x69\xde\xc2\x91\x12\xf8\x45\xbf\x25\x54\x3d\x5d\x2e\xe9\x94\xc5\x8a\xc2\xaf\x3a\x65\xb2\xa0\xb1\x2c\xd2\x94\x28\x05\xa2\xa1\xfa\xe5\x39\x4d\x92\xf8\x92\x3e\x98\xc7\x9c\xd3\x05\x48\x9d\xf6\xd0\xfb\x46\x71\x41\x7a\x20\x04\xd9\x64\xc0\x44\x9d\x52\x08\x51\xbb\x57\x4f\x63\xba\x5b\x89\x42\x8c\xd4\x78\xe0\x8e\xc4\x9a\x17\x30\x51\xa5\x21\x16\xdf\xd4\x16\xf0\x86\x09\x64\x02\xf2\x4f\x6a\xed\x09\x64\x6f\x44\xc0\x19\xac\xab\x9f\x44\x77\x25\x12\xe5\xc6\x81\x54\x27\x08\xe0\xa5\x13\x12\x26\x62\xd1\x09\xf6\xf7\x83\xce\x4b\xde\x9d\x8b\x44\xe1\x6c\xf0\x0b\x0f\xc3\x5f\x79\x9a\xa2\x5f\xaa\xa4\xaf\xb6\xe3\xd3\x10\xfa\x48\x0e\xfc\xf5\xf3\xa5\x3d\x1f\x13\xfa\xc8\x87\xbd\x10\xa3\x4e\x87\x57\xaf\xc6\x6f\xde\x6d\x57\xd1\xa3\xa2\x69\xec\x76\x65\x7c\x90\x3d\x9c\xc1\x13\x8e\xb8\xc0\xc0\x45\xa6\x67\xb1\xdc\xcd\x32\x48\x33\x13\xc5\x4d\x4f\xa5\xbd\x10\x40\xe0\xe1\x93\xda\x01\x50\x51\xf8\x0c\xc7\xc2\x04\x8c\x88\xa4\x08\x43\x29\xba\x5c\x5c\xd7\x73\xdb\xd4\x3c\x23\x15\x61\xd8\xfe\x99\x0f\xd1\x33\x4e\xd0\x3b\x6e\x7c\xac\xa9\xc0\x5d\x4d\x34\x0f\xe0\x1d\x37\x0f\xfd\xae\xe0\x4b\x0b\x7a\x32\x11\xf0\x84\x6b\x2a\xf9\x8c\x97\xa7\x44\xe3\x7a\x1f\xe3\xa8\x2d\xba\xf1\x74\x7a\x74\x45\x6d\xcc\x04\xca\xa9\x4c\xd3\x06\x6b\x51\xa9\x68\x9a\x8a\x2e\x5b\xea\x76\xce\x8c\x91\x35\x49\x53\x86\xd6\x02\xeb\x72\x6c\x41\x23\x2d\xa2\x95\xe6\x5a\x0f\x28\x10\x5c\xd2\x78\x7a\x63\xf6\x99\x27\xf3\x98\x5f\x9a\x5b\xf7\x4e\x51\x60\xed\xb4\x41\x35\x26\x7a\x2d\x60\x7e\x29\x1b\xee\x6e\xd7\x54\x9e\xd9\x37\xaa\x72\x98\xcf\x1a\x44\x1c\xf6\x56\xa4\xbb\x84\xaa\xd7\x6c\x49\xc5\x5a\x59\xd0\x42\x0f\x67\x11\x7a\xc2\xc9\x5a\xc0\x36\x48\x50\xe0\xc0\x19\xc0\x44\x68\x2d\xd2\x99\xe5\x13\x01\x33\x01\x0b\x01\x2b\x01\x73\x01\x57\x02\x6e\x04\x2c\x05\x5c\x0a\x7b\x6d\xd8\x2f\x1c\xcc\x5a\x8f\x7e\xe5\x19\x5c\xd8\x98\x26\xd7\x82\x5c\x1a\xa2\x00\x67\x66\xa9\x3b\x3f\xad\xd3\x0b\xe3\x3a\x20\x35\x74\x7f\xa1\x17\xcf\x98\xaa\x7f\x81\xa3\x32\x9d\x38\x15\x25\xe1\xea\x5c\x90\x0a\xd6\x1d\x09\x0c\x1f\x05\xb9\x10\x5a\xe8\xfe\xbc\xa6\x6b\xfa\x9c\x4d\xa4\x50\x71\xf2\x29\xc0\xf0\x45\x90\x8f\x22\x0c\x3f\x0a\xcb\x11\x06\x5f\x44\x9a\xa2\x44\x90\x6d\x63\xbb\x89\x64\x71\x2e\xcc\x36\xfd\x91\x70\x37\x30\x18\x9f\x3a\xfa\x85\x29\x84\x07\x33\x31\xc0\x1b\x4a\x66\xa2\x3b\xe3\x30\x13\xfa\xc1\xb0\x27\x4d\xf1\x69\xf9\x4e\x5f\x4b\x79\x67\x62\xb8\x12\x08\x47\x0b\xe1\xad\x4c\x2a\xcb\x4a\x2f\xa6\x66\xae\xa8\x34\x17\xae\xe8\xcc\xe5\x4e\x1d\x95\x16\x4e\x22\x70\x16\x9d\xf9\xc5\x30\x17\xc6\x10\x29\x8a\xcb\x22\xec\xc1\x8b\xd7\xf4\x8b\x3a\x11\x53\x8a\x82\xc0\x04\xfb\x6e\x9d\x09\x5d\xb2\x2b\x2c\x48\xd1\x95\x80\x8d\x56\x74\xe3\x89\xa2\xf2\x61\xac\x62\x7b\x9c\xa7\xda\xec\x95\xb0\xb7\xbe\xe8\x46\xe6\x22\xc3\xd1\xa9\x08\xc3\x53\xe1\x9d\x42\x87\xe8\x46\x90\xe2\x15\x79\x1b\xfc\x52\x90\x1b\xeb\x4a\x5a\xab\x6f\xe9\x04\xa7\x1b\x01\x7a\x14\x38\xaa\x7e\xbe\x16\xfe\x48\x97\xf9\x6a\xf0\xec\x50\xc0\x27\x01\x2f\x04\x1c\x0b\x78\x25\x88\x9e\xb0\x6d\x41\x6b\x33\xe3\x91\x32\xf7\x58\xfb\xfb\xbd\x06\x0b\x3d\x75\x0b\x91\x5f\x58\x3e\xd3\x33\x3d\x13\x84\x82\x9e\x06\x0c\x0b\x41\x68\x06\x0f\x44\x93\xf9\xc4\xfa\x3b\xac\x2c\x86\x19\x3a\xa3\x2a\xfb\xfb\xd6\xe7\xb4\xb8\x6a\xb1\x14\x5e\xae\xe1\x2a\xce\xfb\xf1\xd4\xfb\xa8\xd5\x22\xa1\x52\x13\x3e\x9d\xe7\x3e\x86\x0e\x8e\x84\x52\x44\xf3\x24\x2d\xd3\xe8\x14\x13\xfa\x56\xec\xb8\x78\x41\xf7\xf1\x81\xe3\x54\x27\x62\x3b\xa8\x98\xb9\x73\x62\x89\xa8\x09\x0f\x56\xd6\x4f\x4b\x77\xab\x53\x77\x68\xe8\xb5\xe8\xce\x8a\x9b\xbb\x50\x0f\xa4\xef\x18\xd6\xdd\x92\x1e\x30\x19\x3c\xad\x42\xaf\x90\xb1\x37\xc6\xf9\x2c\x6a\xf7\xdd\xde\xaf\xd2\xbc\xb6\x76\xbb\x83\xcf\xe3\xf7\x87\x55\x96\x65\xf0\x26\xa7\x10\xcf\x45\x4d\x1a\xb9\x25\x48\xe0\xc0\x18\xc0\x43\xe1\xef\xec\x7b\x24\xbc\x69\xfa\xbe\xa8\x9a\xa6\x6f\x09\x0c\x9f\x05\x79\xc5\xe1\xb1\x26\x18\xf9\x8c\xc0\x57\x51\xbe\x4b\xf7\x6d\x99\xb4\x3c\x11\x26\x76\xde\x8c\x2a\x13\x5b\xeb\x9d\x30\xd0\x80\x67\x82\xbc\x13\xf0\xbe\x46\x6a\xde\x0a\x0c\x3f\x0b\xd2\x6e\xa3\xaf\x22\x0c\xbf\x0a\x7f\xc5\xee\x95\x39\xe5\x2a\x72\xf7\x08\x93\x80\xe1\xa5\x20\x87\x0a\xdd\x12\x50\x8b\xac\xd6\x46\xcf\xd1\x67\x81\xdb\xb9\x76\xff\x59\x60\x6c\xbe\xdc\xb9\x43\x08\x79\x4c\x8b\xa8\x6b\x3a\xf7\x7b\x51\x56\x7e\x73\x2e\xe5\x40\xf3\xca\xe0\x0b\x13\xdc\x36\xea\x4b\x66\x6c\x86\x6c\x50\xbc\xc6\x8b\x47\x3f\xe7\xe7\xf4\xdb\x7d\x17\xda\xed\x73\xb1\xac\xfb\x18\x6a\xfe\x46\xa8\x76\xb6\xa8\xfa\x9a\x47\xcb\x45\x6a\x2b\xc0\xde\x73\x31\x26\x14\xda\x48\xd5\xbd\x33\x4d\xc1\x8a\x58\xae\x97\xc5\x2f\x82\xbc\x14\x69\xda\xde\x42\xe8\x36\x0d\xc3\xf6\x63\x5e\xed\xb5\x2c\x4b\xdc\xc6\xbe\xb2\x43\x5a\xfe\xa6\x14\x2e\x8d\xa4\x9d\x65\xa0\x10\xc7\xdb\x3b\xa0\x32\xab\xaa\x7a\x9f\x45\xd7\x5d\x24\x5e\xf7\x86\xb7\xb0\xc0\x18\x7e\x6d\xa0\x32\x79\x9c\x6c\xb3\x51\xda\x24\x78\x20\xb3\x9b\x31\xa7\xe6\x92\x2a\x9a\x81\x62\x8d\xaa\x3f\xed\x72\xa1\xd8\x8c\xd1\x29\xde\x14\xcf\x3e\x24\xa4\x39\xda\x40\x9d\x3b\xf0\xe0\x95\xa8\x7a\x51\xf8\x20\x0e\xc4\x45\x98\x04\x46\xfa\x84\x78\xa7\xb8\x98\xf4\x06\xb9\x7d\x2c\x1e\xb8\xd3\x52\x6e\x53\x93\x8f\xe2\x4e\x67\x0c\x0b\xc2\x86\xb3\xae\xf8\x14\xcd\xba\xb3\x98\x2d\x60\x45\x66\x1e\x6f\x60\x6e\x9e\x4d\x14\xfd\x29\x99\x39\x16\x6a\xe6\x67\x31\x44\x2c\x4d\xd1\x01\x21\xa6\x7b\x0e\x65\xc3\x50\x30\xeb\x79\x58\x4a\x24\x7d\x0c\xed\x1e\x21\x64\x31\x9c\x10\x11\xa1\x69\x18\x4e\x3d\xa3\x84\x09\x59\x20\x81\x61\x1a\x86\x68\xea\xf8\x32\x24\xa4\xdd\x33\xd7\xdc\x13\x32\xf3\xa4\x6a\x38\x47\x8f\x05\xf2\xe4\x63\x6f\x32\x8f\x19\x6f\x4d\x6e\x26\x5a\xc3\xc5\x11\x5a\x93\x5f\x85\x56\x71\x87\x6b\xcb\x7f\x26\x5a\xbd\xc6\xd1\x4a\xa7\x45\x73\x24\x4a\x58\x30\x0d\xc3\x76\x62\xba\x60\x5b\x33\xb1\xba\xb3\x12\x8c\xb5\xb8\x5e\x9e\x86\x3e\xc8\x30\x6c\x57\x46\x29\xed\x28\xad\xe7\x2d\xdd\x9e\x55\xbb\x63\xc3\x06\x3f\x8b\x21\x42\x9c\x54\x09\x0b\x0a\xcc\x8f\x96\x07\x3d\x83\xa2\xc0\x75\xfb\x89\xe0\x44\x02\x37\x47\xfc\x6d\x56\x05\xed\xbe\x39\xe1\x59\xa3\x45\x88\x63\x1c\x71\xb2\x71\x15\x44\x14\x6c\xf1\x48\x66\x80\x18\x11\xa3\x40\xf0\xa0\xa3\xc6\x78\xc8\x10\xc7\x51\xb0\xe6\xf6\x38\xcc\x34\x1f\x44\x60\xe3\x0d\x34\xf9\xbc\x09\xb3\xe6\xc5\x82\x0e\xcc\xe9\x5b\x43\xe5\xc3\x10\xf5\x09\xd9\x32\x61\x0f\xdd\x67\xa4\x70\x94\x3f\x02\xc5\x38\x43\xc1\x1b\xdf\x66\xcb\xf5\xb2\x55\x34\x6e\x9c\x6f\x25\xab\xb1\xb9\x37\xb9\xf4\xb0\xe5\xea\x69\x8e\x72\x59\x89\x8f\xcd\x10\x67\x86\x11\x22\x49\x9e\x56\xd7\xc3\x7b\x31\x7c\x2b\xdc\x61\x95\x7c\xcc\xaf\x8a\x66\x39\x28\x1c\x51\x86\x9a\x00\x02\x5a\x2c\x30\x71\xbb\x4b\xb8\xfb\x5e\xa4\xa9\x69\x6d\x78\x10\xf5\xc1\x0d\xd1\x5b\x5f\xdc\x7d\xdb\xc6\xc3\x97\xb3\x26\x35\xb4\x6f\x1c\x93\x4a\x98\xd3\xf6\xc1\x11\x32\x10\x7f\x6e\xf8\xe5\x21\xe5\x15\x3d\xb1\x9d\x0f\xfc\x70\xf2\x0f\xf3\xfc\x03\x38\x78\xd9\xb8\x24\xac\x8e\xa4\x25\xe7\x8f\xfc\x83\xd0\x8c\x41\x7f\x13\x1a\x12\x19\xc4\x4d\x85\xa8\xb1\xd7\xa4\x29\xb2\x0f\x5a\x76\x75\x11\x75\xb1\x6f\x92\x48\x70\x14\x88\x1c\x80\x32\x6b\xc5\xec\xcb\x67\x30\x69\xaa\xd1\xd2\x40\x5d\x99\xaf\xbd\x5c\xa9\x21\x37\xce\xe9\xc2\xcb\x66\x25\x52\xd0\x9a\x18\x2f\x94\x0b\x8d\x5d\x86\x68\x4d\x5b\x4c\x25\x74\x31\x0b\xfc\x99\xe5\x5f\x05\x92\x78\x20\x86\x35\xd2\xe9\x38\x8c\xdf\xc4\x35\xcd\x08\xef\xa2\xc2\x18\x9a\x30\x30\x16\x5d\xac\x5f\x62\xff\x52\xba\xed\x3c\x66\xf6\x56\x07\x1b\x94\x12\x47\x68\x7b\xf4\xfd\x7c\xf4\xfd\xad\x92\x79\xcb\xae\x86\x6c\xf0\x52\x0b\xbc\x9f\xab\x9c\xe6\xc4\x6d\xb4\x7f\x16\xa0\xa5\x21\x7b\x5b\xd3\xa1\x28\x79\x28\xb8\x7b\xdf\x1e\x0a\xf7\x6a\xce\x89\x20\x37\x00\x7b\x33\x83\x1f\x81\x7d\x2b\xd1\x42\xdd\x11\x1b\x25\xdf\xc8\x9d\xe8\xb0\xda\xf8\x23\x51\xde\xe5\xbf\x25\xfc\x8e\x37\x78\xe2\xa8\x9f\x2d\x3a\xeb\xa7\x9c\x82\x46\xa3\x31\xe4\x18\xa9\xbf\xd8\xf3\x6e\x5e\x4e\x74\x02\x7e\x25\xb4\x3e\x79\xc0\xd1\x67\x51\xb2\x4b\x6f\x34\xdf\x8c\x1a\xc8\x93\xb5\xa7\x92\xfb\x6e\xbc\x10\x93\x77\x02\x21\x49\x3e\x8b\xe2\x16\x2b\x24\xc8\xa1\x8b\x55\x5f\xbd\x7c\xc9\xee\x77\x20\x4e\x0e\x91\xc0\xa3\xf7\x7c\x8c\x87\x32\xa2\x54\x93\xd3\x22\xda\x66\x57\x7c\x22\x4d\x77\x6f\xa5\xa9\x82\xd8\x30\xc9\xa6\xb8\x29\x34\x0c\x29\xc4\x8e\x47\x12\xbb\x6a\xed\x8b\x77\x43\x60\x6e\xe9\x6b\xec\x66\x05\xbf\x71\x16\x20\x0c\xbd\x36\x61\x16\x71\xc2\x50\xb9\x99\x61\xc6\x01\x2d\x2e\x24\xf6\x49\xf5\x50\x71\x2d\xd4\x9b\x11\xc9\xbc\x42\x6a\xa2\x85\x7f\xda\x56\x8d\x8d\x3e\x74\x28\xc0\x22\x0d\xae\xea\x4a\xaa\xaa\xc8\xf8\x85\x50\xd3\x66\xfc\x92\xa0\x46\xa5\xe9\xce\xc8\xbb\x46\x2b\x9c\x5e\xb3\x9f\x45\x9a\xea\xdf\x17\x62\xa8\xdb\xfd\xa4\x9b\x8c\x9e\x19\x4d\x07\x1a\xc0\xf8\x4a\xaf\xfb\x63\x2d\xf4\x97\x7c\x41\x8d\x22\x4a\x15\x7a\x55\xbd\x8c\x7a\x4e\xf9\x96\x67\x4a\x71\xfc\xaa\x6c\x0c\xfe\x2c\xea\xee\xdd\xc7\xf9\x5a\x77\x9c\xdc\xc2\xce\x47\xb5\x28\x6d\x07\x35\xf5\xf2\x89\x08\xc3\xea\x3d\x06\xd5\xa8\x93\x3e\xea\x6d\x2f\x83\x8d\x51\x45\x1a\x63\xae\x0a\xf4\x59\xc0\x13\xef\x5f\x2d\x4a\x77\x90\x19\x8a\xf2\x07\x57\x25\xbc\x14\x19\x6c\x1c\x15\x8c\x3e\x0b\xeb\xb2\x68\xe8\x84\xc1\x99\x6d\x1d\x5b\xd8\x93\x1e\xe4\x45\x77\x36\x88\xc3\x50\xcb\xdf\x74\xf4\x9a\x8f\xc3\x50\x22\x0a\xaf\xf9\x9f\xbd\x07\xc2\x18\xaa\x33\x9c\x19\xfd\xec\x85\xd1\xb7\xcc\x53\xe1\x93\x74\x4b\xd4\x83\xcf\x9a\xce\x5a\xe4\x69\xb8\x30\xe1\x9d\x27\x5e\xa5\x03\x94\x36\x04\x85\x9e\xa2\x1c\x9f\x81\xe6\xeb\x20\xfb\x73\xed\x19\x24\xde\x01\xfb\xdc\x93\xee\x0f\xaa\xfa\x45\x57\x15\x2f\x16\x0d\xfd\x36\x55\x48\xdd\x7d\x73\x73\x4f\xae\x66\x83\x30\xcf\x46\x70\x66\x75\x19\xc5\x85\x28\xa1\x28\x3f\x9a\x8b\xcd\xcd\xd3\x5a\x5a\x87\x09\xe9\x0f\xee\x6b\x34\xdc\xda\x8c\x5a\x93\xb8\xd3\xd1\xb2\x71\x7f\xe0\x6e\x94\xf6\xc6\x9a\x49\xa7\xe3\x63\x72\x6b\x42\x5e\xd7\xcb\x14\xde\x24\x69\x8a\x12\x43\x76\x46\xeb\x31\x51\xb0\xb7\x37\x49\x53\x8e\x98\x56\x6e\xec\x59\xd6\x22\x29\x2b\xdd\x53\xed\x65\x3f\x81\x98\x13\x26\xca\xc6\x03\x19\x4f\xe8\x9f\x03\x8a\x01\x84\x68\x02\x84\xa8\x02\xa2\x61\xec\xa2\x3e\xb2\x02\xca\xdc\x1d\x7f\xcb\xcd\xe5\xbe\xbf\x1c\x89\xed\xfe\xfa\xc0\xc6\x6c\x9b\x20\x1e\xe6\xde\x67\x41\xc9\x41\xd8\xae\x3c\xe7\x97\x6f\xae\x7d\xec\xb2\x4b\x2e\x24\x7d\x10\x27\xd4\x25\xb3\xc0\x06\xa7\x5c\x28\xb6\x60\xdc\xa7\x2e\x4d\xea\x54\xa8\xc3\x85\x2f\x9f\x98\xa4\x35\x67\x5a\x69\x77\x69\x6b\x93\x96\x28\x36\xf9\x74\xe3\x92\x6e\x02\x0c\xb4\x14\x21\x27\x61\x95\xc3\x76\xce\x5b\xca\x50\x29\x13\x96\x97\xc1\x82\xc1\x8a\x91\xcd\x9b\x93\xb3\x37\x2f\x5e\x9c\xbe\x7a\x7d\xf4\xf0\xfc\x7d\xd4\x74\x27\x44\xc2\x50\x10\x07\xa0\x9b\x28\xc6\xb8\x88\x13\x65\xae\x96\x23\x07\xe0\x36\x6a\xbb\xf4\x0b\x9d\xa0\x20\xbe\x98\x4c\x03\x83\x1a\xf7\x5f\x9d\x3e\x3b\x3a\x39\x7f\x70\xf8\xea\xe8\xf5\xce\x9a\xff\x49\x06\x10\x5c\xfe\xc9\xba\x13\x25\x03\x2b\x97\xce\x99\xf3\x00\x2b\x51\x7b\x9d\x07\xa6\xcc\x19\x53\xb6\x0f\xe8\xc1\x15\x23\x73\x06\x37\x8c\xa0\x19\x23\xfb\xf1\x3e\x2c\x18\xd9\xbf\xf8\xdb\xfe\x25\xcc\x5d\x10\xaa\x19\x83\x20\x0e\x70\xfe\xbe\x70\xef\xbd\x36\x21\x33\x56\xf4\x2c\x4d\x75\xca\xa2\x94\x82\x61\xc9\xc8\x8a\x75\x2b\xf0\x4c\xd3\x15\xeb\x96\xc1\x00\x97\x8c\xe4\x16\xc3\x7d\x84\x87\xc3\x7d\x37\xb4\x00\x8f\xfa\xe3\x01\xba\x61\x69\x7a\xc9\xd2\x74\xc9\xb4\x9e\x72\xc5\x76\xfb\x78\xd9\xf5\x12\x93\xa5\xbd\x59\xda\x20\x03\x4c\xc8\xda\xf5\x9c\x61\x13\x8b\x23\x31\x91\x9e\x21\x21\x3d\x98\x11\x55\xba\xcb\x08\xed\x69\xbd\x0c\x4d\xc8\x24\xf7\x6b\x0b\x6e\x02\xe3\xd8\x96\x07\x41\xd2\xc8\x1b\x86\x68\xe2\xd0\x78\x56\x5c\x50\xe3\xdc\xa9\x2a\xe3\x2f\xbd\xdc\xeb\x85\x21\x6a\xb3\x02\xbf\xd3\x94\x95\x91\x3d\xf8\xa0\xe5\x23\xa2\x46\xa5\x32\x7b\x7d\x73\x63\xe5\x9a\x04\x68\x18\xb5\x82\xce\xba\x13\xe0\x00\x66\x24\x68\x05\x9d\x19\x24\x9d\x8e\xbf\x3a\x37\x77\x09\x44\xc3\xc8\x67\x9b\x60\x0c\x97\xcc\x68\x76\x95\x2c\xe6\xfb\x2d\x34\x6c\x7f\xf8\x90\xb8\x6c\x37\xcc\x28\x08\x95\xae\x73\xe2\x27\x3c\x1e\xca\x88\xc1\x0c\x43\x3c\xe4\x43\xa4\x55\xea\xd5\x5a\x11\xf7\xeb\x46\x9d\x60\xe0\xa3\xde\x98\xe8\x7f\xa5\x24\x0b\xb6\x72\xc5\x65\x90\x74\x6c\x76\xb7\x77\x1e\x95\xbe\x90\x5e\xa4\xfb\xa4\xe5\x97\x72\x2a\x73\x74\x64\xe8\x2a\xee\x94\xca\x47\xd4\x0e\xd7\xc4\x74\xf4\x07\xaa\xc3\x70\xea\x06\xc1\x8d\x83\x03\xd4\x0d\x3e\x82\xf4\x07\xe2\x6e\x5d\x15\xdf\x3b\x18\x88\x4e\x07\xe7\x32\x70\xb1\xa5\x28\xc6\x61\x88\xf8\x48\x8c\xfd\xd5\xa1\xf6\x96\x30\x17\x68\x95\x91\x2b\x56\x09\x1f\x6f\x81\xbe\x7d\x51\xc0\x7e\xd7\xe2\x78\x9b\x90\x0b\x96\xc1\x46\x3f\x47\x17\xcc\xd5\x73\xdd\xa8\xff\x16\x4e\x9b\x25\x47\x56\x60\x15\xd7\x4d\x88\xc9\x44\x21\x89\x4d\xfc\x19\x7f\x1a\xce\xe1\xf7\xdd\x5e\x9a\xc6\xf7\xc8\x64\xa8\x86\x41\xe0\xe4\xe8\x08\xf1\xaa\x8b\x5f\x8c\xf1\xdd\xef\xbf\x3f\xf8\xe9\x4e\x9a\xf2\x7b\xdf\xdf\xb9\xdd\xff\x29\x4d\xe3\x8e\x5e\x16\x93\x34\x45\xa2\x96\xb9\xd3\xd7\xd9\xef\xdc\x3e\xe8\xa5\xa9\xb8\xf7\xfd\x0f\xb7\xbf\xbb\x3d\x54\x43\xe6\x4f\x64\xc5\x38\xe2\x91\x7e\xb7\x08\x11\x43\xdc\x39\xc0\x91\xd8\x33\x25\x3a\x88\xef\x99\x96\xee\xde\xed\xf7\x70\xe7\xce\xf7\xdf\xdf\xbe\x93\x65\x70\xc6\xc8\x66\x62\xaa\x8f\xae\x19\xd2\xc2\x97\xad\xcc\xbc\xf5\x70\x06\x47\x8c\x9c\xf9\x16\xe0\x94\x79\x7b\xf7\x39\xab\x5f\xc5\x69\xc0\x52\xf2\xc5\x1e\x48\xee\x6e\xf8\x85\x60\xfb\xe6\x31\x85\x37\xa7\xac\xe2\x88\x5d\xaf\x00\xac\x3f\x57\x94\x2f\x78\xef\x8e\xdd\xec\x87\x0d\x94\x9c\x33\xc7\x0b\xa5\xb1\x22\x9a\xa6\xb9\x0f\xa8\x96\x8b\xd4\xf7\x88\x8f\xac\x34\x6c\x76\xb5\x8e\x90\x22\x47\xcc\x1c\xf6\x00\x57\xb8\x93\x87\x6a\xf5\xee\xd9\x2a\x77\xa1\xce\x63\x74\x7d\x64\xb5\x4d\x83\x2f\xac\x7e\x72\xcc\xf2\x9c\xfd\xee\x7e\xc1\x69\x34\x2a\x6e\x73\xf5\xe2\x32\x3d\xd5\xbd\x94\x62\xbd\x4a\xc8\x26\x8e\x82\x1f\x82\x0c\x54\x06\xc1\x0f\x9a\x74\x05\x41\x4e\x36\x15\x04\xb7\xee\xc6\xf7\x2c\xcf\x3b\x64\x24\xb8\xd5\x0b\x08\x21\x41\x5c\x64\xd9\xef\xee\x83\x4e\xc6\xf0\xc9\xf6\xd3\x7d\x08\x30\xbc\x60\xa4\xdd\xde\xef\xee\x8f\x3e\xb1\x71\x18\x9a\xa0\x50\xee\xcd\x72\x5d\x53\xea\x78\xd7\x60\xd0\x30\xc2\xfb\xc6\xf9\x5d\x0f\x65\xb0\x3d\xa2\x5c\x30\x2e\x9d\xc5\x2c\x5d\x59\xec\x8c\xe7\x41\x7c\xe1\x3d\x24\xf3\xed\x9f\xd6\x81\xf1\xf6\xb6\x90\x4f\xd3\x20\xd6\xc3\x96\xa3\xde\x38\x4d\x83\x0b\xfb\xdc\x1f\xeb\x21\xbf\x6a\xb2\xcd\x58\x19\xcd\x5e\x26\x17\x37\x75\x9e\x96\x8e\xc8\xd2\x91\x68\x72\x6c\xf9\x21\x83\x1f\xda\x24\x08\x46\x6a\xec\x42\x17\x4e\x48\xbc\x75\x43\x8d\xad\xcc\x1c\x90\xda\x8f\xfd\xdc\x06\x66\x30\xce\x56\x89\xec\x69\xf8\xda\x8e\x84\x8d\xcc\xe2\x13\x46\x1f\x59\x53\x17\xa4\xce\x36\x5b\xc4\x97\x09\x09\x02\x90\xba\x9f\x7a\x76\xc4\x58\x0b\x88\xbb\x60\x6d\xac\x50\xe6\xc0\x9d\x2e\x60\xb6\x61\xdb\x54\x23\x2a\x9b\xa1\x76\x9c\xa6\xed\x49\x9a\xe6\x18\xe0\xba\xd8\xfe\xc2\xd2\xb4\x7d\xc8\xd2\xf4\x05\xc3\x69\x5a\xe9\x7f\xfb\x98\x79\x51\xde\x36\x0e\x09\x91\x48\x80\x81\x4c\x55\x8f\x85\xea\x85\xd6\x56\x26\x22\x9a\xf0\x0e\x35\xe4\xc4\xd0\x59\x8f\xbc\x49\x65\x5d\xb9\x25\x3b\xaa\x7d\xcd\x4f\x5e\xd1\xf2\x57\x73\x70\x61\xf3\xea\xe8\xc5\xf1\xe1\x83\xa3\xf3\x67\x47\x47\x2f\xce\xce\x6f\xf5\xa2\x43\x06\xaf\x8e\x1e\x1f\xbd\x7b\x71\xee\x3f\x9d\xbd\xb9\x7f\xf6\xfa\xe9\xeb\x37\xaf\x8f\xce\xce\xdf\x9c\x3c\x3c\x7a\xf4\xf4\xe4\xe8\xe1\xf9\x83\xc3\x17\xaf\xdf\xbc\x3a\x8a\x5e\xb0\x4c\x8b\x14\x89\xe6\x55\x0b\x92\x68\xe9\x87\x2a\x54\x97\xdd\x40\x69\x66\xac\x55\xf8\x9a\xb4\x07\x02\x0e\x08\xa1\xc3\xaa\x76\xee\xc6\xbd\xf0\x71\x96\x9c\xe9\xaa\xf1\x0e\xd9\x4a\x26\x9c\xe1\x8c\x87\xe1\xf1\x56\x3b\x1a\xdc\x41\x32\x8f\x97\x81\x3d\x4c\xff\xa0\x4c\x92\x5f\x6f\x9b\xf0\x3d\xe4\x3b\x48\x0e\x1f\x58\x21\xdc\x33\xed\x3e\xce\xe0\xa4\x6e\xbc\xf5\xe1\x1a\xcd\xfa\x6d\xbe\x78\x2c\x3f\x90\x98\x87\x8f\xa2\xd6\xa3\xdf\xb9\xbd\xe5\x96\x26\xbe\xbd\x05\x6d\x87\xd3\xd2\xb5\xb7\x96\x54\xcd\xc5\xb4\x65\x7b\x48\xa7\xad\x44\xe8\x14\x4d\xf7\x85\x9a\x53\xd9\x52\xf3\x98\xb7\x62\x1f\x8e\xad\x25\xa4\xb9\xbb\xa1\x90\xcc\x79\xa6\x1b\x75\x6c\xbe\x6d\x1c\x7d\x1a\xfc\x09\xed\xf7\xbf\x98\x16\x8d\x57\xee\xb4\x25\x78\x8b\xf1\x89\x58\xae\x62\xc5\x2e\x16\xb4\x25\xe9\x84\xb2\x2b\x73\xa9\x93\xab\xfa\x82\x15\x43\xcb\x06\xaf\x18\x0a\xcc\x15\x61\x01\xf4\xeb\xf8\xed\x21\x3c\xda\x3e\xd7\x71\xe5\x38\x10\x27\xd6\x5c\x47\x87\x8e\xf1\xd3\xe2\x82\xa6\xc2\x9d\x93\x0f\x79\x71\xa5\x7c\x54\x92\x1a\x29\xd6\x04\xc7\x71\x3e\xa9\x95\x8d\xba\x0c\xce\x89\x44\x3e\x22\x86\x0b\x4d\x68\xac\xd0\x1e\x4e\x6e\xc3\xc1\xd2\x40\xb3\x01\x9f\x4b\x2e\x79\x91\xb6\x70\xf2\x5d\x7e\xba\x80\x21\x01\xcc\x47\x9c\x14\x5e\xe5\x1b\x88\xb2\xa4\x98\xdf\xb2\x32\x81\xb5\x56\xfd\x13\xd2\x1b\xb8\x83\x96\x68\x42\x5c\x15\xd8\x6d\xd8\xe5\xf2\xfa\x64\xd4\x1b\xe3\xc1\x7a\x94\x8c\xc9\x0c\x0c\x8b\x99\x85\x21\x2a\x57\xfc\x9a\x21\x06\x89\x2a\xa7\x61\x88\x31\xd6\x72\xb7\xdf\xfe\xd4\xc2\x61\x32\xd4\xad\x45\xeb\x6c\xec\x19\xef\x53\xb6\xe5\x2c\xcc\x1a\xdc\xd3\x9f\x33\x12\x3b\xb8\x24\xf9\x20\x6e\xb1\xf2\x55\x31\x0f\x19\x11\xa3\x5b\x6c\x0c\x8f\x18\x79\xc8\xc2\xf0\x21\xab\x5e\x15\xf3\x88\x19\x93\xff\x23\x36\x7a\xca\xc6\x6d\x42\x9e\x33\x77\x53\xcc\x23\x06\x4f\x19\x3c\x67\x25\x03\xb5\xcd\x44\x9e\xb3\xcc\x96\x78\xc3\xcc\x4d\x7b\x8f\x18\xbc\x61\x70\x4b\xeb\x46\x52\x37\x95\x07\xb3\xbf\x6f\x7a\x12\x73\x6c\xb3\xdf\x37\x0d\xc4\x5c\x3f\x14\x8d\xdc\x67\xe0\x92\x2a\x0d\xdd\x67\x63\x97\x35\xb3\x97\xd1\x7c\xde\x02\xc9\xe3\x1d\xfc\x5b\x63\xdd\x9b\x57\xc7\x28\xb8\x18\xc6\xa4\x1f\x5e\x90\x83\x70\x42\x6e\x07\x10\xcc\x95\x5a\x45\xfb\xfb\x5a\xf5\xd4\xcc\x3d\xa1\xb1\x9c\xcc\x5f\xc4\x32\x5e\x26\x20\x2b\xc6\x86\x55\xac\xe6\x3c\x5e\x52\x12\x4c\xfe\x7a\xd0\x9b\x06\x40\x9b\x82\x15\xb9\x0d\x18\x1b\xd9\x24\xb8\x08\x30\xc8\x0e\xe1\x1d\xa5\x99\x6a\x9b\x76\x13\x21\x55\x9a\xe6\xad\xee\x9b\xaa\x4c\x97\x74\x77\xcc\x5e\xd4\x5c\xd2\x59\x9a\x06\xb7\x6d\x18\x82\x4b\xaa\x50\x30\x31\x77\x0a\xc6\xa4\x1f\x14\x1e\x0c\x6e\x44\x67\xa5\x0e\xa3\x40\xd7\x14\x60\x9c\xa6\x6d\x3a\xfa\xac\x67\xc2\x0a\x13\xf9\xe8\x75\xbb\x89\x6e\xf8\x1f\x2f\x02\xdc\x5d\x27\x54\xea\x11\x79\x39\xa3\xa9\xca\xc6\x66\x62\x72\xa1\xb5\x57\xd3\xb7\xd8\xf4\xed\x0b\xdf\xdb\xa3\xfd\xf8\xe6\x62\xb2\xd5\x5e\xb4\xbf\xff\x6f\xff\xfa\xdf\xfe\xef\x7f\xfb\x97\x7f\xfb\xd7\x00\x1b\x97\xcc\x34\x0d\xfe\xf2\xd7\x87\xbd\xbf\xde\xef\x37\x65\x8e\xff\xf2\xdf\xfe\x2f\x9d\x31\x4e\x8c\x30\xd4\x9f\x18\x48\x48\xdd\x48\x53\xf6\x2f\x81\xdb\x55\xb0\x75\x6b\x38\x7f\x65\xfe\x14\x6b\x9c\x24\xec\x92\xc3\x5b\xb6\xe3\xea\xc0\x27\x8c\xb4\xbf\xb2\xfa\x0d\x9d\x6c\x86\xe2\x30\xec\xb7\x09\xf9\xca\xd0\xe6\x22\xea\x67\xf0\x95\xa1\xb7\x2c\xbf\x55\x7e\xfb\xf6\xbd\x52\xe9\xb7\x4e\xe0\x0f\x2e\xf2\xcb\xe5\x6f\x57\x8c\xcf\x7d\x13\x4b\x12\x36\x17\xd1\x41\x86\x71\xf7\x62\xeb\xc6\xbf\x0c\xcc\x8d\x86\x92\xd8\x2b\x28\x51\x61\xb1\x19\xc9\x31\xf9\x01\x8c\xe5\x87\xce\x2e\xe7\xec\xe3\xa7\xc5\x92\x8b\xd5\x67\x99\xa8\xfc\xe0\x4d\xb0\x23\x88\x96\xb9\x79\xd0\xc0\xe7\x87\xb6\x19\x58\x06\x0a\x8f\xa4\x41\x92\xa6\xfa\xda\xe4\x44\x21\x9b\x8f\x62\xdc\xfd\x28\x18\x47\xe6\xa6\x0b\x5c\x13\x05\xfc\xd2\x96\x2e\xf8\x02\xdf\xda\x84\x06\x41\xfa\xc0\xc8\xa5\xea\xce\x60\x42\x92\xee\x6c\xc0\xef\x89\x41\x4e\x13\xd6\x30\x23\xd3\x92\x87\xad\xe8\x74\xc6\xd8\xb8\x3d\x9c\x28\x34\xcb\x6f\x5a\x67\x68\x86\x71\x64\x92\x60\x45\x16\xbe\xee\x39\xe9\x0d\x56\xf7\xe6\x03\xbc\x26\x8b\xd1\xbc\xd3\x19\x83\x16\xc0\x9c\x63\xfb\x0c\xd6\x38\x4d\x91\x1c\xad\xc7\x64\x36\x5a\x17\x8e\xbb\x32\x8b\xbe\x32\x78\xf7\x0d\xb3\x0f\xc4\x30\x71\x23\x5a\x37\x86\xe1\x9f\xb3\xc4\x84\xea\x8f\xec\x09\xd2\x64\x7b\xd8\x33\x92\x34\x5f\xfc\x07\x8b\xc2\x38\x35\x83\x15\x79\xc8\xd1\x04\x9b\x91\xb0\x19\x5a\x84\x21\x9a\x11\x49\xd1\x0c\x92\x7b\x07\xa5\xe2\x07\x79\xf1\x03\xec\xe3\x3e\xac\xd2\x74\x4d\xec\x99\x91\x30\x7c\xce\xd1\x0a\x1b\xb0\x5a\xeb\xcc\x1a\x51\x92\x28\xe4\x43\xc1\x61\x3c\xa0\xf7\xe6\x83\x79\xa7\x83\x63\xb2\x18\xce\xd0\x64\x34\x1f\xc3\x1c\x47\xe6\x37\x96\x48\xc2\x1c\x62\x77\x80\x59\xd7\xc2\x08\x12\x64\xe5\x1c\x36\x30\x36\x8e\x7e\xce\x36\xb4\x1e\xb4\xad\x96\x6f\xf6\xc3\xfd\x19\x01\x5f\xf5\x23\x8e\x04\xcc\x60\xe4\x18\x11\xcc\xc7\x5a\xa6\x8b\xfc\x6b\xd1\x94\x9f\x0d\xd7\x43\x32\x07\x99\xc1\x33\x46\xf6\x47\xff\xf4\xa1\xb7\xf7\x61\xdd\xeb\xfd\x70\x34\xde\x87\xf7\x3a\xa5\xfb\x61\x7d\xbb\xd7\x3b\xf8\xb0\x7e\xf4\xa8\x77\xa4\xff\xdf\xe9\x8f\xf7\x2f\xe1\x67\x46\x82\xd3\x2b\x2a\x67\x0b\x71\x1d\xb5\x8c\xf9\xa8\xc5\x29\x9d\x26\xad\x6b\x36\xa5\xb2\xc5\xec\xc1\xb4\xa4\xa5\x44\xcb\xbb\x96\xc1\x4b\x46\x9e\xc7\x6a\xde\x9d\x2d\x84\x90\xf0\x4b\x6e\xca\x9c\x49\xb1\x7c\xe0\x6c\x11\xf0\x6b\xa3\xc5\x44\x75\x0e\x0e\x3a\x3f\x7c\xff\x37\xa4\xee\x1e\xdc\xc1\x19\xa8\x78\x47\x54\x0b\x2b\x43\x28\x22\x87\x2f\x19\x52\xfb\x3f\xf4\x7a\x38\x52\xf7\xee\xf5\x41\x75\x88\x49\xa1\x78\xa0\xee\x7d\xf7\xfd\xf7\x03\xde\x21\xb7\xef\x60\x65\x53\x6f\x7f\x9f\x83\xe5\x25\x43\xbc\x73\xfb\xce\xdf\xd4\x3e\x52\x9d\xdb\x3f\x6a\x09\x89\xc6\xcd\x18\xab\x65\x14\x41\x90\xfa\x96\x83\x7b\xcf\x1c\xd4\xf6\x06\x9c\xbb\x7c\x50\x1c\xc4\x29\xd9\x5f\x64\xa7\x63\xe4\x26\x71\x8f\x18\x4b\x4a\x18\x8a\xbb\xc4\x18\x6d\xc2\x50\xde\xe5\x3e\xa0\xd1\x76\x19\x63\x80\x21\x04\xdd\xf9\xee\xfb\xfe\x41\xc8\xf0\xd0\xb9\xce\x23\xd4\xef\x1d\xdc\x0e\x05\xb6\x36\x19\xfb\xc6\x9c\x71\xc6\xec\xca\x9b\x6c\x02\x83\xdc\xdb\xc3\xf6\x08\x6b\x9e\xe6\x65\x22\x9a\x19\xb7\x79\xb7\xb0\x18\xe9\x1f\xfc\xe8\xb6\x63\x7e\x38\x30\x70\xa6\xa4\x37\xa0\x77\xf3\xe1\xd1\x4e\x07\x23\x49\xd4\x88\x8e\xf1\xdd\xfe\xc1\x8f\x61\xe8\xae\xe1\xff\x85\x69\x51\xd3\x6e\x34\x10\x6f\xd3\x83\x84\xac\x4d\x2d\xeb\x3c\x5f\xb0\x17\xe0\x41\x72\x57\xe4\x22\xde\x41\xff\xbb\x1f\xbe\xfb\xf1\xf6\x9d\xef\x7e\xf8\xa3\xf6\xee\x11\xa6\x41\x35\xb3\xeb\xd8\xb6\xb5\x20\x49\xa7\xaf\xc1\x3a\xdb\x63\xf7\x5e\x32\x84\x8a\xea\xf6\x62\xbc\xbf\xf0\xf2\xfd\xab\x98\x5f\x3a\x01\xff\x67\x86\x4d\x4b\x71\x87\xe8\x52\xf8\x6f\x0b\x60\x64\x06\x0d\x0d\x6b\x8e\x95\x0f\x96\x85\x61\xa7\x13\xdf\x2b\xea\x6f\xae\x99\xcd\x90\x24\x84\x15\x48\xb2\x22\x31\xcc\xc9\xed\x3b\x83\xc1\xdc\xa0\xa3\x19\xf6\x94\xcc\xef\x92\xc9\xb0\x1f\xcd\xef\x91\x49\xe7\xe0\xce\xf0\xe0\x4e\x34\xdf\x33\xfa\xd3\xea\xee\x14\xdb\xd3\xc0\x3a\xe3\x15\x59\xed\x4d\xe1\x86\xdc\xbe\xb3\x37\x1d\x14\xa0\xfe\x95\xa1\x69\xe7\xea\xaf\x37\x18\x6b\x9a\xfd\x92\xa1\xab\xfd\x1b\x9c\x55\xbe\xaf\xb0\xb1\x37\xa8\x18\xc5\xb0\x80\x84\x90\x35\x36\x33\xdb\xe9\x24\x59\xd6\xe9\xc4\xd0\xe9\xb0\x2c\x17\xf8\x73\x36\x04\xb2\x61\x25\xd8\xb3\x57\x83\xc6\x93\x59\x2d\xba\xa5\x42\x95\x63\xa2\x6c\x1f\xcb\xca\x23\xaf\xd0\xfc\x28\x5a\x06\x3c\xae\x78\xaf\x0a\xfb\xfa\x84\xc6\x53\x2a\x93\x00\x03\x8b\xeb\x22\x69\x1c\x7b\x6b\xe2\x24\xae\x59\x13\x6b\x82\x55\x80\x61\xfd\x07\x59\x4a\x41\x20\x92\x98\xec\x7f\xe8\xec\x5f\xc2\x2c\xb6\xf4\x1f\x7d\x87\x61\x11\x37\x1a\x79\xe3\x91\xda\xeb\x8f\xd3\x14\xb9\xa7\xfc\xb4\x3f\x42\xc3\xe8\xaf\xa3\x0f\x1f\xa6\xf1\xde\x6c\xbc\x39\xc8\xf0\x26\xe8\xa8\x4e\x90\xe1\x00\x82\x4b\x16\xe8\x11\xaf\xe2\x1d\x1e\xc8\xad\x29\xd5\x7a\xd3\x9b\x57\x4f\x1f\x88\xe5\x4a\x70\xe3\x0e\x57\x3a\xe4\x97\x9f\x73\xcc\x60\xde\x34\x57\xaa\x88\x00\x10\x43\xd0\xd2\xa2\x32\xf9\x6e\xf0\xed\xfa\x69\x49\x23\xd0\x88\x3b\x90\x03\x4c\x49\xbe\xf1\x84\x16\x31\xd2\x44\x04\x56\x05\x6f\xa1\x59\x06\xd3\x98\xec\x8f\xda\xff\x80\xf0\x3f\x8f\xd3\xbf\x1e\xf4\xf6\x2f\xe1\x2a\x26\x9b\xa0\x1d\x44\xc1\x5f\x0f\xfa\x01\x04\xff\x60\x9e\x7e\x08\x20\x40\xe6\xe9\xc7\x00\x02\x6c\x9e\x7e\x0a\x20\xf8\x67\xfd\xf4\xc3\x51\x00\xc1\x5f\x0f\x7a\x41\x14\x74\x82\x0c\x6e\x1a\x21\x7d\x15\xdb\x2b\xfc\x1a\x3f\x52\xde\x00\xaf\xbc\xeb\xd3\x18\x6e\x62\x9c\xc1\x65\xbc\xed\x5b\x4e\x73\x59\xc9\x08\x27\x24\xbf\x24\x3c\xd4\x28\xa7\xc5\x86\xbb\xc2\x13\x04\x4d\x86\x84\xbd\xa0\xdd\x25\x99\xcb\x78\xa4\x2f\x42\xcc\x9e\xa6\x59\x80\x26\x94\xda\x3c\x46\xbc\x6b\x2f\xed\xc0\xd8\xd9\xa3\x4c\x9a\x5d\x6a\x24\xb0\x01\x4c\xe1\x22\xde\x0e\x88\xe8\x22\x63\x78\xee\xdd\x83\xcb\x18\x95\x3f\xd8\x9b\xc5\x1a\x06\xa4\xee\x6e\xaf\xc6\xe0\x44\xa8\x16\xe5\x62\x7d\x39\x2f\x0e\x50\xeb\x95\x7e\x16\x93\x9f\xb7\xa2\xff\xc5\x71\xc5\xae\xbe\x6b\x9d\x80\x5f\x89\x91\x8c\xd1\x24\xd6\x00\x77\x7d\xc3\xe5\x80\x27\x41\x51\x60\x5b\x79\x5c\xc7\xa5\xd8\x27\x26\xe0\x89\x24\xaa\xeb\x2b\x36\x52\x11\xb2\x1b\xe9\xd6\x1c\x91\x0b\x35\xce\x0f\xcf\xa5\x13\x1f\xdb\x84\xd0\x21\xef\x6a\xd0\x17\x01\x4d\x4c\x92\x8f\x5e\x62\xc2\x14\xba\xd7\xb1\x8b\x80\x78\x14\x97\x0d\xa0\xde\xe9\xec\x28\x86\x6d\x22\x32\x70\x3b\x05\x5b\x31\x2a\xb6\x8e\xb7\xf5\x4a\xc2\x65\x2f\x17\x2e\x67\x76\xc3\x73\x41\x46\x26\xb2\x71\x1c\xa3\xd9\x0e\x28\x07\x79\xbc\x9c\x05\xd8\x90\x98\x6f\x5e\x1d\x97\x75\xa1\xcc\x25\x97\x0b\x45\x17\x71\x86\x21\x17\x7f\x13\xcc\x66\x68\x89\x12\x8c\x1b\x6d\x72\x48\x69\x9a\x9e\x60\x2f\xd6\x1a\x8f\x6d\x43\x8e\x13\x27\x90\x1a\x41\xd4\x7b\x57\xe4\x87\x55\x0d\x4b\x34\x11\x29\x90\x20\x32\x46\x87\xc8\x01\x14\xbb\x62\xb8\x2a\xba\xa6\x29\x9a\xd4\xc5\xd9\x34\x6d\xe7\x29\xd6\xee\xb4\x85\xb2\x47\x5f\x56\x74\xa2\xe8\xb4\x95\xd0\xcf\x6b\xca\x27\xb4\x75\xcd\xd4\xbc\x65\xe1\xdb\x3a\x08\xf0\x60\x51\x5a\x6a\xb1\xed\x42\x27\x08\xdc\x3a\x9b\xe4\x09\x99\x13\x7c\x8c\x10\xd2\x62\xbc\x95\xe0\x6b\x94\xc0\x1a\x87\x61\xb9\x86\xb5\x2b\x98\x8c\xd6\x63\x53\xca\x0a\xeb\x97\x31\x5a\x6c\xc7\xa0\x4d\x86\xc1\x50\xe3\x56\xe2\xb7\xce\x7a\x78\xe8\xe3\x73\xf4\x71\x94\x44\x49\xc7\x70\xd2\xd3\x98\x1c\xc5\x25\x13\xd0\x03\x8e\x4e\x63\xd8\xd8\x43\x72\x35\x0f\xbf\xeb\x18\x6d\xa9\x39\x07\xfe\x2e\x9c\x49\xec\xbd\x84\x72\xca\x50\x74\x5d\x15\xc3\xb6\x03\x06\x7f\xed\xa1\x56\xe7\x71\x06\xd6\x68\x52\x31\x20\x37\xb5\xd6\xc7\x83\x42\xae\xf5\x2d\x9a\xcd\x30\x4f\x74\x38\x31\x6d\x09\xd2\x1b\x88\xbb\x32\xa7\x8b\x72\x24\x4c\xa0\x3d\x42\x08\x1f\x4a\x7f\xdb\x90\x80\x3e\x8e\x44\xa7\x33\xa0\xd5\xde\x54\xb4\xfa\xbf\xa7\x2b\x79\x37\xa4\xed\x86\x56\x04\xf8\xdd\xfc\x9a\x0b\x6e\xcf\x71\xd3\x11\xf7\x9d\xc9\x03\xb8\x98\xb4\x0a\x09\xb1\x9b\x1b\x97\x54\x1d\xd6\xbc\x9b\xfe\x03\xbd\x31\x8a\x82\x86\x4c\xde\x25\xd1\xe9\x60\x5a\x00\x47\xe6\x32\xb0\x49\xb4\xab\xa6\x30\x4d\xc3\x3c\x4e\xfe\x53\x20\xe3\xc0\xd2\xe9\xd4\x01\xd3\xee\xf9\x93\x1c\xfd\x0c\x92\xca\xbc\xec\x42\xc9\x52\xfb\x5a\x39\xca\xd1\x44\x10\x9e\xf7\x82\x91\x76\x1f\x62\xdb\x95\x09\x31\xab\x72\x4d\x7a\x83\x75\xc1\x4a\xd7\x56\xa8\x17\xa3\xf5\x18\xbb\x3e\xc5\x61\x88\xd8\x50\x78\xec\x59\xef\xed\x69\xfc\x41\x8c\xb4\x7b\xe0\xe9\xfc\x04\xe3\x01\x4b\x53\x51\x5e\xf9\x7e\xc1\x67\x18\x78\x15\xd1\x12\x21\x2b\xf6\xa3\x12\xf5\xde\xd5\x6f\x7f\xc7\x89\x1d\xa4\x28\xd8\xaf\x24\xbd\x81\xbc\x5b\x6c\xd2\x6b\xdd\xc0\x2a\xa1\x6c\x24\xc7\x4e\x75\x90\x46\x67\xd0\x1a\xde\x88\x1a\x50\xdf\x33\x31\x57\xf1\x26\x1f\x15\x85\x1e\x28\x6c\x63\xfd\x64\xd4\xa2\x84\xf0\xb7\x79\x65\xb5\xfe\x3b\x63\xd3\xae\x2b\xf7\xb7\x67\xdf\x9c\x17\x56\xb0\xc5\x8d\x9a\x2d\x25\xb7\xf1\xd6\x42\xe6\x08\x51\x22\xad\x99\xc8\x59\x14\x6c\x68\x5f\x17\x32\xba\x7a\x85\x7e\xe5\x00\xdf\x99\x93\x1a\x5c\xac\xaf\x0c\x7c\x58\xb8\x6f\xe7\xf6\xe1\xc0\xb2\x22\x40\xdc\xb7\x0b\x14\xc1\xe3\xb2\x9a\xb9\x30\x33\x9b\x6c\xa7\x31\xb0\x18\x4e\xe3\x42\x18\xb1\x89\xa5\x98\x27\x4d\xa7\x88\x14\x34\xae\xa6\xd1\x78\x6b\x2d\x29\x62\x97\x12\x48\x3b\x6f\xcb\x18\xd9\x59\xee\x04\x24\xe8\x98\x37\xc7\x0e\x0b\x71\xc5\x0a\x7c\xa1\xb9\xcd\x76\xab\xd3\x8a\xa2\x46\x69\xa3\xe6\x02\xeb\xfd\x6a\x1f\xb3\x0c\x36\xb5\xcc\xd1\x91\xe6\xfc\x8f\x59\xe3\x11\x70\x1e\x37\x26\x8b\x38\x4d\xff\xfd\x7e\xbc\x25\x83\x1e\x29\x6d\x4d\x6d\xa3\x5e\x18\xa2\x25\x2a\x05\x80\x1a\x59\x1f\x29\xcd\x55\x2e\xc4\xf4\x66\x7b\xdc\x84\x90\x17\x1c\x49\x9d\xc9\x04\x76\x9b\x5b\x0d\xd0\x78\x50\x8b\x18\xe5\x09\x76\xc3\x4b\xc4\xc6\xa0\x8d\x02\x13\xd6\x99\xab\x3d\x1b\x77\x33\x4d\xb9\xb9\xd7\xaa\x9a\x0c\x41\xbc\xd2\xeb\xd0\x1c\xcf\xde\xff\xb2\x77\x7d\x7d\xbd\x37\x13\x72\xb9\xb7\x96\x0b\xab\x42\x4c\x07\x9a\xa1\x27\x54\x91\x37\xaf\x1f\xed\xfd\x68\xf6\x2e\xee\x2b\x44\x61\xa3\x3b\x1b\xcd\x50\x0f\x8a\x5d\x35\x70\x3d\x31\xc9\xc6\x21\x13\x83\x5b\xcc\x14\x63\xe0\x71\xd9\x63\x41\x60\xef\x85\x79\x1e\xc3\xc7\x98\x34\x4c\xa1\x66\x47\xf6\xda\x9b\x49\x9c\xc1\x97\xd8\xec\xd2\x1a\x33\x10\x1c\xc6\x44\x74\xdf\xbc\x3a\x86\x4f\x31\xf9\x18\x77\x6b\x65\xe1\x85\x49\xf5\xc5\xe1\x38\x57\x8c\x5f\x35\x68\xbd\x01\x86\x07\x71\xd9\x48\xf7\xda\xbd\xad\xc4\x35\x9c\x68\x7d\xee\x70\xef\xd7\x78\xef\xeb\x78\x1f\x9e\xea\xb7\x0f\xd3\xce\x5e\x37\x4f\x7a\xa3\x95\xe3\xe9\x3e\x3c\x8f\xc9\xfe\x3f\xa1\xde\x97\xb4\xf7\x0e\xef\xc3\x2d\xfd\x36\xea\xed\xfd\x30\xee\xdc\xda\x87\x87\xfa\xed\xc3\x54\x3f\x3e\x32\x1f\x3e\x4c\x0f\xf7\x1e\x69\x45\x58\x27\xdd\x37\x95\xae\x7b\xbd\x5e\xcf\xfc\xff\xc9\xfc\x3f\x34\xff\x1f\xb6\xfe\xf2\xd7\xfd\x68\xf8\x8f\xa3\x0f\x1f\xc6\xe3\x7d\xf8\xfc\xed\xac\xa5\x9c\x8f\x6d\x3b\x26\xab\xb1\x6e\xf6\x1f\xb5\xc6\x9d\x74\x2b\xe5\xd6\xfe\x25\x7c\xcd\x6b\xad\xd4\x37\xde\xbf\x84\xb7\x75\x8d\x2a\xd7\x0c\x8d\xe9\x63\x14\x94\x02\x58\xf7\xec\x39\xd7\x60\x1c\xb4\x1b\xa3\x5a\x3b\x1e\x1b\x3c\xe5\x57\xf1\x82\x4d\x5b\x73\x91\xa8\xc0\xec\x9b\x22\x49\xde\x69\x4c\x76\x02\xa3\x09\xdb\xbf\x23\xbb\x32\x7b\x2f\x44\xe6\xf1\xe7\xe8\xc4\x44\x06\xd1\x4f\xdf\xb2\x57\xaa\xae\x12\xc7\xe2\x9a\xca\x07\x71\x42\x51\xa1\x0b\xbf\x67\x10\x74\x03\x5c\xba\xdf\xb7\x64\x73\x13\x65\xd3\x97\xe6\xce\x74\x0c\x4e\x60\x79\xe6\x62\xa5\x48\x3c\x34\x5b\x52\x41\x87\xc6\x48\xe2\xa8\x08\xf8\xe4\xd5\xda\x6e\x80\x33\x44\x31\xdc\x8f\x6d\x09\xba\x1b\x10\x2e\x04\x17\x92\xe4\x49\xac\xf3\xfd\x09\x10\xe8\x81\x7f\xfe\x83\x9a\xad\x3e\x63\xc4\xa0\x77\x0c\x51\xcf\xe6\x78\x59\x2a\x93\x1d\xf2\x6b\x6c\x3c\x03\xe1\x7d\x8c\x8b\x36\x32\x78\xb2\xc3\x0e\x5c\x28\x7c\x44\x95\xc1\xc7\x66\x68\x9d\x9b\x03\x82\x80\x90\xf5\x68\xfd\xff\x71\xf7\xe6\xed\x6d\xdb\xca\xe2\xf0\xff\xef\xa7\x90\xd0\x84\x25\x2a\x58\x96\x9c\xa5\x29\x15\x44\xc7\x71\x9c\x36\x6d\xe2\xa4\x71\xd2\xa6\x55\x74\x7c\x69\x0a\xb2\x19\xcb\xa4\x02\x80\x5e\x2a\xf1\xbb\xbf\x0f\x06\x0b\x41\x8a\x76\xd2\x7b\x96\xe7\x3e\xbf\x93\x53\x99\x04\x81\xc1\x36\x18\x0c\x06\xb3\x54\x31\x17\x82\xa0\xe8\x2f\xf3\x65\x88\x49\xc8\xa8\x4d\xc7\x4f\xee\x3b\x97\x50\xa6\xb5\xd5\x46\x03\x7c\x2c\x20\x16\x02\x6b\x9e\x62\x92\x4d\x2b\xdf\xfe\xe0\x29\x89\x0e\x07\x24\xf7\x28\x2c\x1a\x20\x4a\xf3\x0a\x2f\x15\x27\x45\x5f\x99\x51\xca\xf1\x78\xf8\x30\x7a\x44\x72\xc7\xdc\x3c\xa2\x34\x1d\x0f\xa3\x1d\x8c\xf5\x4d\x7a\x8e\x63\x35\xfd\x66\x74\xbb\xe1\x70\xa0\x32\x3c\x8b\x23\xc8\x78\x27\x8e\x9e\xc7\xd8\xc2\xaa\x1a\x12\x53\xe7\x41\x30\x27\x29\x2e\xb9\x35\xe6\x01\x87\x47\x7e\x67\xd4\x51\x97\xf2\x49\xa6\xba\x48\xd9\xd6\x50\xdf\x03\x3e\xa1\xef\xe2\x70\xe7\xc1\x43\xf2\x60\xcb\x4d\xa4\x66\xcb\x2d\xaa\xc7\x4f\x76\x1e\x3c\xf0\xbf\xc0\x58\x25\x94\x9b\x11\xd5\x75\x70\x9f\xff\x4f\x7a\x50\xd1\x77\x06\xf4\xbd\xad\xcc\xe1\x67\x52\x92\x0f\x5f\x9e\xda\xc9\x80\xd4\xfe\x4d\x8d\xde\x31\xb8\x61\x5f\xd0\x01\x59\xb6\xb9\x2f\xb2\x43\xbf\xc0\xe0\x3f\x11\x45\x60\x62\x6f\xe8\x43\xa4\xf6\x5c\x9b\xc3\x91\x85\xd1\xa2\x47\x77\xc8\x9c\xf6\x8c\x8f\xc7\xd1\x32\xc4\xfa\x70\xfd\x48\x1d\xdd\x4d\x26\x5b\x1e\x80\xe9\x85\xaa\x39\xd1\xfb\x41\xf0\xdc\x4c\xb0\xfa\x36\xc2\x8c\x0e\x1f\x7e\xc7\x7a\x6e\x4e\xd4\x00\x0d\x1f\x62\xb2\xe8\xf5\x08\xef\xf5\x00\x52\xdf\x6b\xd6\xa0\x3a\x05\xc0\xd5\xd8\x16\xe5\x44\x3c\x79\x68\x93\xec\x1c\xba\x56\xe5\x7a\x08\xb2\x27\x03\x63\xf7\x6f\xa1\x05\x41\xf6\xf8\xbe\xd7\xab\x5e\xa9\x3e\xbf\xf7\x1a\xe7\xc3\x1c\xbd\xaf\xb5\x7a\x05\xe8\x5c\x6f\xb4\xf3\xbc\x4e\x73\x9c\xd3\xd4\x21\xe6\x40\x25\x18\x50\x39\x1d\x0e\xbe\xcb\x7b\xa0\x1b\x91\x7b\x68\x02\xf5\x83\x96\xc8\xce\x83\x87\xdf\xa9\x87\x5e\x4e\x76\xba\xb4\xd7\xcb\x82\xe0\x7e\x97\x66\xeb\xb5\xd0\x2d\x54\x2f\xb6\x90\x66\xc7\x9b\x13\xa7\x46\xae\xab\x5e\x74\x2e\x87\x96\x55\xd2\xa8\x98\x88\x5e\x6f\x4a\x99\x23\x4d\x46\x91\x65\xee\x35\xc7\xcc\x71\xe9\x7f\xd5\x4e\x3d\xc5\xd6\x9c\x08\xfa\xfd\x68\xd0\xa5\x22\x08\xe2\x27\x83\x11\x4e\xa8\x6a\x33\x29\x26\x62\x6b\x6b\x4a\x8b\xc9\xbc\x17\x6f\x0d\xd5\xfb\xbc\xb7\xb5\x15\x4f\x69\x32\xb2\xad\x78\xd4\xad\xb0\xc4\xa0\x61\x51\x92\x5f\x6e\xc4\x70\x40\x80\xcc\xfa\x60\xb5\x37\xad\x16\xa9\xf4\x2d\x96\xc2\x2b\x38\xda\x78\xd1\x86\xef\xee\x3c\x78\x88\x89\xa4\x7b\x71\x28\xb7\xd5\x73\x65\xa8\x54\xd1\xfb\x16\x07\x66\x15\x6c\x20\xc4\xed\x97\x67\x80\x52\x9c\x0e\x8d\xbe\x93\x22\xd4\x46\xe8\xfa\x68\x94\xf6\x7a\x78\xa0\x35\xec\xa7\xe3\x30\x7f\xc2\xb5\x51\x2c\xe1\x34\xc7\x5e\x7e\x1c\xd9\x6d\x44\x87\x46\x4f\x31\xe9\xf5\xf2\xca\x2e\xa6\x5e\x0e\x2e\xbb\x4c\x57\x1f\x41\x57\xf3\x20\x00\xdf\x90\x70\x5f\x1f\xe6\x41\x10\xe6\x10\x5e\x3d\x53\x87\xb3\x71\xc8\x7a\x94\x8f\x51\xa4\xfe\x45\x88\xe4\xb4\xab\x2a\x64\x3d\xc8\xef\x5c\x32\x86\x6a\xa1\xf1\xc7\xdf\x1b\x43\x96\x08\x55\x26\x95\x68\x82\x7a\x0c\xbc\x31\x56\xce\x09\xff\x88\xe9\xaa\x24\x3f\xc7\xf4\x27\xd0\x01\xf8\x23\x26\x2b\xd4\x41\xd1\x90\x7c\x8b\xbe\x8d\x86\x04\x3d\x56\xcf\xe8\x09\xfc\xfe\x0f\x8a\x86\x25\x26\xbf\xda\xcc\x3f\xab\xcc\xdf\xc0\xa7\x31\xfc\xae\xe0\xb7\xd4\xd9\x7e\xb7\xd9\x7e\x55\xd9\xb6\xe1\x53\x04\xbf\x23\xf8\xa5\xf0\xfb\x0f\xf8\x9d\xc0\xef\xc7\x8f\xf0\x67\x0a\xbf\xff\x84\xdf\xb5\x86\xf5\x67\x2b\x2b\x44\xaf\xe2\x50\x92\x41\x75\xb6\x79\x72\x6f\x27\x08\xf8\xe3\xe1\xce\xf7\xe0\x6d\x94\x11\x89\xc7\x32\x6a\x15\xc8\x97\x44\x26\x74\x35\x97\xcb\x68\x67\x48\xc0\xe5\x14\x4c\x22\xa8\x9b\x3c\x1a\x10\xad\x42\x73\xff\xfe\x3d\x72\x29\xd4\xfb\xa5\x80\xb7\x92\xf8\x2a\xaa\x95\xcc\xff\x32\x94\x09\x91\x7d\x91\x9c\xb2\x73\x86\x4b\xc2\xdb\x72\x21\xa0\xbd\x9e\x3a\x0e\xbc\x2f\x63\x21\x2e\x73\x3e\x2b\x49\xd6\x56\xa8\x2b\x8d\x32\x8d\xec\x27\x71\x96\xe5\xf2\x29\xdb\x7d\x1a\x0b\x75\x2c\x37\xbe\xb2\x14\x96\x9b\x9a\x4b\x92\x27\x6d\x03\xe5\x54\x90\xa9\xbb\x19\x0e\x82\x03\x43\xfc\xa4\xc7\x43\x06\x81\x26\x3b\x21\xaf\xed\x12\xeb\x75\x97\x05\x01\x5a\x23\x45\xa7\x4b\x92\x26\x37\x7a\xe1\xe8\x48\x8f\x15\xc8\x93\xb0\x0a\x07\xb5\x03\xd0\xbd\x16\xac\xd7\x68\x1b\x69\x0f\xc9\xae\x2e\x70\x78\xac\xf0\x80\x82\x33\x20\x2d\xd8\x54\x0f\xdf\xc0\x03\x2e\x49\xdc\x52\x37\xd5\x6a\x5b\x20\x1d\x34\xfb\x6f\x97\x6f\x8e\x4e\x10\x0c\xb5\x8c\x23\x09\xd9\x64\x00\xba\x0a\xeb\x35\xd3\xfb\x77\x49\x92\xd6\x29\xeb\x23\xed\x6d\x13\xdd\xdd\xd1\xba\xc5\x75\x56\xb6\x24\x45\xa2\xd6\x8f\x80\xdf\x39\xfc\x2e\xe0\x77\x09\xbf\xa7\xf0\x3b\x83\xdf\x0b\xf8\xbd\x86\xdf\x73\xf8\x3d\x81\xdf\x63\xf8\xbd\x84\xdf\x43\xf8\xdd\x87\xdf\xd7\xf0\x7b\x04\xbf\x9f\xe0\xf7\x0a\x7e\x77\xe1\xf7\x0c\x7e\xdf\x24\x37\xe9\x8a\x7b\x17\x02\x7c\xbd\x2e\x12\x32\xa7\x03\xb2\x50\xf4\xcf\x44\x1e\xe8\x0e\xc9\x8c\x76\x87\x9a\xe5\x83\xc0\xab\x7a\x94\x54\x96\x0a\x4b\xf5\x9b\xc5\x51\xfd\x06\xdc\x29\xac\x16\x09\x9e\xe2\xdc\x73\x2c\x4f\x29\x44\x46\xff\x5c\x30\x7e\x6d\x93\xe7\x3c\x3e\x51\xa7\x6d\xfb\xde\x44\x63\xd5\x12\xff\x72\xef\xc7\x58\xbb\x03\xf7\xd3\xfe\x82\x34\x92\x6b\x1e\x7a\x34\x7f\x4c\xab\x8b\x30\xeb\xfd\x3a\xa5\xf9\x64\x3e\x25\xc2\xb8\xbd\x2e\x92\x08\xc2\x2d\xad\xd7\x5d\x8b\xe9\xa9\xde\x4b\x79\x93\x53\xd7\x1d\x47\x23\x41\xe7\xc9\x48\x1d\xd2\xd3\xac\x60\xe5\xa2\x47\xd3\xfa\x6c\x13\x41\x45\xe2\xfb\xce\x16\x50\x47\x1a\x04\xe1\x0b\x57\xc5\x7a\x8d\x7a\x88\xd2\x74\xbd\x46\x5b\xe6\xaf\x42\xa2\x14\xe3\x4d\x80\x95\x87\x51\xc5\x57\xa5\xb7\xb7\x0e\x26\x4f\x35\x51\x4d\x65\xd5\x4c\x55\x44\xd1\x7a\x75\x14\xeb\x52\x20\x44\x0b\x5c\x21\xff\x22\x08\x42\x9e\x80\x63\x1c\x1b\x41\x04\x26\x0d\xb7\xad\x0f\x43\x6c\xb0\xc7\x8b\x39\xb4\x58\x10\x27\xc1\xbe\xc8\xd3\x99\xae\x30\x08\x64\x32\xb1\x59\xa6\x16\x36\x44\x13\x77\x98\x81\xb1\x6e\x7a\xb3\xba\xb1\xa0\x87\x49\x64\xc0\x80\xe5\x95\xa9\xc9\xcf\xb1\x30\x39\xc6\x82\x5e\x24\x11\x10\x8c\x7c\x32\xef\x0d\xa7\xe3\x50\xd0\x65\x42\xe6\xbd\x1e\x8e\xc2\x36\xa4\x1a\x18\x8c\x34\x7a\x1e\x48\xcd\xde\x55\x82\x4b\x6f\xfa\xe6\x1a\x45\xb2\xf5\x3a\xdb\x00\x10\x04\xe8\x1b\x98\x93\x1b\x66\x03\xb4\x94\x5b\x0b\x81\xba\x85\x1b\x36\xdb\x2b\xbb\x3e\x32\xdd\x28\x23\xd9\xad\xd6\x8a\xfe\xeb\x2f\x17\x58\x6b\x6d\xfd\x12\xf4\xcc\x60\x61\x29\xa8\x1d\x55\x5b\xcf\xf8\x30\x89\x4e\x2b\x2c\xd6\x1d\x5d\x40\x47\x21\xe6\x55\x0a\x64\xb7\x6b\x46\x11\xaf\x04\xf5\x72\x97\x82\x5e\xc3\x98\xfa\x48\xbe\xb4\x85\xa1\x63\x82\x9e\x57\x95\x7f\x6a\x56\x74\x0a\x79\x37\x3b\x9f\x52\x7a\x14\x63\x8f\xac\x64\xee\xd1\x27\x2f\x99\x7b\x74\x64\x06\xfe\x38\x42\x03\x7f\xbe\x6e\x28\x1d\x73\xaa\x5b\x6e\xb7\x95\x34\x08\xb4\xd4\x42\xd0\x59\xc5\xc0\xc2\x46\x93\xfe\x97\x1a\x08\xcb\x78\x37\xa9\x16\xbf\x46\xb4\xd5\x7f\xba\x76\xbd\x1a\xe0\xb4\x5a\x9b\xba\xf2\xbf\x3a\x2f\x0d\x14\x57\xc8\xec\xaf\xc9\x99\x5e\x93\x4c\x93\x2c\x8d\xb2\x41\xa0\xe6\xce\x12\x48\x9d\xf6\xef\x1b\xae\xfa\x58\x28\xfc\xd6\xa7\x2b\xb5\x16\xfc\x75\x70\x01\x2d\x83\x15\x52\x5b\x49\x0b\xcb\xbc\xcc\x7b\x43\x8c\xdd\x7a\x68\xac\xa2\x6b\x6f\x09\x7a\xfd\x81\xe5\xe4\x2a\xf7\xf2\x9f\xeb\xfc\xff\xd0\xab\x6e\x19\x04\xe1\x82\xa2\xbb\xf7\x07\xa8\xb7\xc0\x04\x42\xe6\xc4\x6a\x33\x5c\x54\x37\x60\x17\x74\x30\xba\x78\x1c\xdb\x7d\xf1\xa2\xd7\xd3\xac\xc0\x35\x8d\x27\x17\x53\x77\x7a\xbf\x5e\xaf\x67\xfa\xc3\x39\xfd\x33\x0e\xaf\xc9\xef\x31\x1e\xcd\xc6\xd5\xb8\xf5\xe8\x79\x54\x8d\x6d\x8f\x9e\xeb\xe1\x98\xd1\xee\xa0\x54\x84\xdc\x9d\x3d\x61\x51\x1b\x2e\x2e\x35\xcc\x5a\x6a\x78\xb5\xcd\xf5\xa6\xa6\x6e\xa9\x85\x52\x8b\x26\x51\x8d\x0b\x79\x9a\xf3\x54\x5e\xa3\xd1\x7c\x4b\x77\xcb\x74\xa3\x37\x24\x66\xdf\x3b\x31\xd3\xa2\x76\x51\x7f\x60\x4f\x12\x1d\xbf\xe2\x18\x06\x0c\x62\xb2\xd4\xf7\x19\x35\xc8\xaf\x93\xda\x86\xa9\xb7\xdb\xf5\xfa\xd4\x9c\xf9\xff\x6e\x3f\xcc\xa6\xd5\xda\x17\x27\x50\xe4\x26\xc3\x4d\x1b\xb0\xb7\xc9\x26\xf4\x37\x75\x92\x59\x38\xd1\x13\xa8\xde\x99\x8e\x1f\x25\x6e\xe7\xad\x3a\x01\xd2\xdf\x74\x7c\x4a\xbb\x83\x08\x4d\x75\xfb\xc2\x53\x38\x2c\xaa\x01\x72\x32\x80\xdb\x9b\x78\x6b\xbd\x97\x09\xe1\x94\x1e\x27\x56\xe4\xe0\x8d\xf9\xa5\x5e\xa4\xef\xeb\x7c\xd5\xdf\x1a\xc7\xf5\x9a\x1b\xc1\x62\x97\x2e\x34\x3e\x9e\x54\xb2\x97\x05\x19\x0e\x40\x9a\x79\xf2\xe4\xe1\x83\x07\xf7\x1e\x34\x7b\xa0\x06\x10\x8d\xcc\x3a\x36\xb3\x71\xa2\xd8\x73\x8f\x1b\xd1\xa6\x35\x27\x80\x3f\xa5\xc7\x58\x8d\xd4\x90\x56\x23\xd9\x06\xb9\x6c\x22\xd9\x61\x7d\x5f\xd3\x28\x46\x1a\x3b\x0b\x16\x74\xbf\xa2\xea\x8a\xad\xd0\xf9\xba\x6e\x1f\x54\xa8\xf8\xa9\x8e\x8a\x76\x67\x6c\xd0\xa7\xbf\xb3\xbf\xd9\xbd\xeb\xeb\x41\xdc\xb4\x03\xa5\x49\x68\xe5\xb2\xf3\xca\x16\x00\xc3\xe9\xe0\xcb\xd0\x63\x58\x1f\x1b\x7b\xcb\xdf\xee\x59\xdb\x0e\xe1\x63\xdf\xbe\xc7\x90\x54\x83\xaf\x57\xb9\xe6\x4c\xb2\x8a\x0a\x64\x15\x73\x7b\x43\xef\x82\x20\xcc\x93\x50\x37\xc9\x1c\x0b\xc7\x3e\xeb\xe8\xbe\xe0\xa8\xd6\x99\x46\x4f\x75\xdb\x5e\xeb\x13\x41\x63\x25\xe8\x26\x36\x97\x84\x96\x5d\xea\x03\xe9\x42\x31\x24\x9f\x3c\x86\x04\xd6\x2d\xe8\xd0\xe9\x3a\x11\x22\x35\x04\x76\x2b\xbc\x7d\x0d\xa3\x45\x9e\xc4\x0b\x58\xe8\x60\x6d\x94\x0b\xcd\x95\x1b\x58\xb8\x02\xe6\xa8\x4c\x59\x3b\xf9\xf8\xd8\x7f\x04\x9d\xaa\xc8\x9f\x6a\x29\x69\x6e\x65\xae\xb4\xed\x02\x87\xfe\xaa\x4f\xe6\xe5\x1b\xb7\x85\xa7\x5d\x7a\x14\x07\x81\x0f\x08\x37\x00\x6c\xe2\xc0\xc8\xa4\xd7\x51\xd8\x6b\xe6\xa7\x5b\xc6\xde\x51\x1d\x35\xde\x61\x63\x1e\x34\x21\xea\xc3\x59\x3f\x2c\xd4\xff\x17\xb8\x7e\x50\xc3\x5a\x02\x00\x39\x0a\x75\xa2\x33\xe2\x80\x42\xa7\xdb\xb7\x71\x08\x6b\xa0\x49\x18\x5c\xe5\x8d\x13\x09\x8e\x12\x35\xf3\xe3\xaf\xcc\x1e\x85\xad\x27\x36\xc8\x63\x85\x3a\x80\x4a\x6e\xa6\xeb\x53\xbe\xa8\x58\x95\x01\xee\xa1\x08\xe1\xda\x11\x69\x81\x31\x69\x3d\xa8\xc1\x0d\x8e\x1e\xd4\xc6\xb8\x81\x10\xbd\xd6\x02\xb8\x01\xd2\x82\x12\xb3\x6a\x46\xd8\x64\x30\xca\xa7\x23\x0d\x64\x1c\x36\x66\x12\x47\x1a\x2a\xb4\xb9\x39\xf7\xd8\xed\xfd\x7f\xc6\x61\x4a\x7e\x8d\xb1\x3f\xf1\x57\x49\xf4\x05\xa0\xe3\x36\x98\x91\x45\x43\xd7\x56\x03\xfe\x8f\x18\xd7\xe0\xef\x26\x91\xc3\xdf\xb1\x2d\x84\xbe\xf5\xe6\x6a\x6c\xea\xed\x51\xd0\x2f\x8e\xaa\x57\x5d\x3d\xba\xbb\x73\x0f\x45\x0e\x78\xd4\xd6\x1c\xbf\xc6\xb3\xc4\x6b\x9c\xcd\x69\x5a\xf7\x73\x8c\x71\x39\x87\xe8\x16\x2f\x5b\x84\x61\x70\xed\x6a\x35\x47\x5f\x26\xc4\xdc\xb2\xe7\x9b\x7a\xa1\xed\x9a\x38\x95\x69\x2d\x26\x09\x7d\x19\x87\x99\xa7\x16\x8a\x4a\xd8\x95\xab\x18\x2e\xa0\x60\xe4\x07\x01\x79\x99\x60\x46\xdf\xc6\x61\x8e\x1d\x2d\xe3\xf4\x4d\x12\x82\xad\x9b\x81\x9c\xb7\xc4\x4d\xe1\xc6\x56\xe1\x4d\x12\x26\x24\x85\x4b\x17\xd2\x12\x7d\x87\x5b\x9b\x8e\xa4\x66\xc4\x09\xc6\x4a\x67\x31\x11\xf4\x4d\x1c\x16\x78\x64\x63\xb7\xd7\x0c\x1a\x13\x3d\x29\x98\x88\x4a\xb5\xc9\xbf\x40\x33\xdf\x6d\xff\x0b\xc3\xb1\x95\x24\x5e\xaf\xc3\x0c\x2c\x36\xe9\x9e\xb1\x38\xcb\x30\xc9\xfa\x39\x4f\x4f\xd2\x8c\xbe\xf3\xd3\x6c\xc4\x02\x7a\xe0\xa7\xba\x93\xca\x8b\x5a\x5e\x7b\x52\x79\xef\xa7\xc2\x7a\x7d\xd5\x4c\x81\xd2\x77\x6a\xa5\x15\xef\xf3\xac\x0e\xcf\xd8\xae\x3e\xf7\x53\xf5\x38\xd1\xa7\x9b\x69\x66\xec\x3e\xd7\xea\x8a\xc5\x29\xfd\xd1\xa5\xe0\x92\xbc\x4d\xe8\xcb\xc4\x73\x14\xb0\xd7\xe2\xe2\xe3\xad\xaf\x3b\x6d\xce\xfc\xdc\x13\x76\x83\x49\x92\x3b\x8d\xe5\x66\x47\x22\xa9\xe1\x85\x49\x6c\x45\xb8\x09\x35\x4b\x07\x6e\xb6\x2d\xe6\x13\x41\x99\x22\x58\xbe\xc2\xa4\xc2\xbe\x71\x28\x7a\x14\x6d\x6f\x23\xc2\x35\x0f\xa8\xde\x79\x2f\xcc\xc6\x28\x42\xbd\x4c\x47\x65\xfa\x07\xc2\x44\xf4\xe8\x2f\x0a\x27\x8d\xff\x2b\xa0\x32\x02\x6e\x47\x7a\x29\xc6\x91\xa5\x78\xcc\x24\x6f\x6f\xeb\x32\x9b\xf2\x97\x71\x3c\x19\x4c\x23\x7b\xc8\x52\x94\xbb\x17\x1b\x56\x62\x1b\xe1\x08\x21\x5b\x43\x62\x40\x8d\x51\x2f\x71\xd5\x16\x26\xf1\x1b\xd4\x2b\x30\x11\x25\x79\xf7\x37\xc6\x52\x0d\x14\x6c\xed\xc7\x8b\xfc\x58\x35\x16\xfb\xa1\x98\x8c\xbd\x2c\x73\xcc\x8a\xc1\xce\xa6\xb3\x78\x04\x3e\x08\x5c\x9c\x79\xcd\x9f\x32\x4b\xc6\xd4\x28\x6f\x6f\xa3\xde\x2f\xb1\xd9\x38\x70\xcf\x5e\x14\xc2\xcd\x53\x8f\x47\x10\x3d\x5d\x03\x21\x07\x6d\xfe\x3a\x6c\xfb\x4d\xdb\xd5\xbc\x95\xe4\xc5\xad\x39\x2d\x9a\x94\xe4\xfd\xad\xf9\xaa\xbb\x92\x57\x5f\x1a\x38\xc0\x2f\x37\x6c\x1e\xde\x80\x16\x3e\x72\x21\xd7\xf8\xf8\x97\x38\x64\x38\x82\xdf\x1e\x74\xb1\x24\x77\x6e\x81\x0e\x90\x1b\x00\xc1\x2b\x92\x1a\x33\x5c\x92\x67\xb7\x95\x6d\x69\x0c\x94\x75\x24\xb7\x24\xcf\xbf\xd4\x33\x35\xc1\xd5\x6d\xcb\x06\x82\x32\x85\xa0\xcc\x47\x50\x56\x43\xd0\x92\x3c\xbd\xad\x85\xfa\x6c\x61\xc1\x8f\x15\xfe\x4a\x28\xf5\xf9\xf6\xb9\xf6\x08\x4a\x49\x7e\xbc\xad\x06\xbb\xa8\xbd\x4a\xbe\xb1\x95\xfc\xd5\xbc\xbe\xd2\x79\x56\x27\x4c\x46\x12\x94\x82\x19\x69\x3a\xc7\xac\xab\x30\x82\xce\x43\x1c\x04\x2f\x64\xf8\x36\x21\x2b\x45\xb4\xa3\xbf\x92\x70\x2f\xd9\xf4\xe4\xc8\xaa\x71\xe5\xde\xa6\x97\xc1\x76\x45\xf4\x86\xb4\xe9\x02\x24\xc3\xa3\x37\xa0\x2f\xe5\xf5\x18\xb7\x6d\x37\xcc\x6c\x37\x25\xc6\x44\xaf\x45\xd5\x90\x77\x09\x26\x76\x8f\x50\xef\x07\xb7\x36\x6c\x04\x4d\xf1\x0c\xd8\x22\x44\x8a\x04\x40\xda\x35\xa3\x80\xbc\xf8\x52\xef\x3e\xa4\x95\x15\x9c\x76\x97\x91\x25\x21\xc3\x78\xc5\xfc\x9b\x1e\x27\x4a\x6a\x51\x66\x61\x9e\x44\xe8\xcf\x38\x04\x0d\x9a\xdf\x63\x1d\xb2\xcb\x2e\x4b\xd5\x94\xf7\xff\x42\x53\xbc\x6b\xa6\xdb\x9b\x52\x89\xaa\x9a\x4d\x51\x8b\x53\x35\xe3\xd5\xed\xc3\xca\x5a\x2e\x53\xeb\x43\x4d\x4e\xf4\x30\xdb\xbd\x57\x01\xbd\xf3\x2f\x03\x3d\xd6\x40\x15\x19\x50\x00\x9f\xdd\x0e\x10\x06\x66\xbd\xd6\xca\x57\xb2\x42\x51\xb0\xb9\xb5\xd7\x2b\x11\x54\x21\xc9\x65\xa2\x43\x24\x58\x26\x40\xc1\x7f\xfe\xf7\x1b\x6c\x76\x10\x3a\x99\x12\x0d\xb8\x87\x10\x39\x32\xb0\x35\xce\x2b\xc8\x4f\x6f\x87\xdc\xd6\xe2\xea\x52\x30\xd2\x07\x30\x59\x53\x12\x93\x54\x3a\xa3\x15\x4c\x58\xc5\xc7\x9b\xfe\xed\x26\x18\x93\xbf\xbf\xf2\xfc\xcc\xaa\xe1\x9f\x13\x4c\x14\x8f\xa3\x9e\x7f\xfc\x52\x27\xba\x8d\x4e\x84\xc0\xce\xdf\xde\x6e\x9f\xaf\x37\x4d\x3f\x4b\x30\x8e\x58\xfd\x22\x14\x3c\xa6\x82\x23\xa6\x84\x20\x99\xff\x7c\xf8\xfa\xa0\xae\x0c\x6e\xa8\xa3\x65\x38\x6d\x14\xf4\x36\x35\x73\x0d\xa2\x4d\xa3\xfc\x6b\x81\xec\xc6\xba\xf7\xbf\x25\x74\x37\x36\x41\x12\xb4\x2f\x8d\xf7\x6f\x5f\x92\x9f\x20\x95\xb3\x8b\xfc\xac\x4a\x1d\xfd\x96\x40\x44\x74\x75\xc4\x68\x14\x68\xf8\xc6\x33\x8d\xf8\x2d\x31\x2a\xc8\xbb\xb1\xef\x32\x0d\x63\xf2\x53\x05\xa9\x51\x49\x3b\xa4\x9f\x6e\x82\x54\x3a\x7f\xad\x1f\x12\x5f\x4f\xc4\xb8\x05\x39\x63\xd7\xc2\x18\x0e\x9b\x94\x13\x26\xbd\x30\x77\xda\x11\x87\xb0\x96\xfd\xb7\xe5\x51\x60\x18\xe8\xf8\x64\xfd\x79\xba\x90\xcc\xb7\x5c\xac\xac\x62\x5b\x41\x3c\x63\x3a\x12\x99\x89\xd1\xd0\xaf\x26\x03\xb4\xb6\xb5\xee\xa2\xe9\x21\xaf\xe2\x21\x77\x78\xd5\xbd\x5f\x92\xba\xee\xd2\x70\xc4\x36\x1c\x51\x6a\x9b\x71\x3d\x00\x9a\x87\xab\x8e\x7b\x6c\x3a\xf6\x5f\xa2\x55\x39\x62\x77\x77\xc6\x1f\x12\x33\x30\x21\xc7\xa4\x3b\x68\x73\x31\xc2\xf0\x6a\xc9\xb5\xae\xc1\x84\x4d\x21\xe2\xf1\x17\x3a\x29\xc6\x6d\x5e\x59\x52\x26\x42\x49\xbe\x54\x34\xe4\x18\x47\x7e\xab\x6e\x68\x52\xab\xdf\x17\x68\xe5\x97\x66\x80\x83\x27\x7e\x8c\x2b\x95\x28\x37\xc8\x7f\x24\x61\x8b\x7d\x25\x5e\xa1\xe3\x3c\x5f\xb0\xd8\x33\x5f\x88\xc1\xd1\x6a\x42\x12\x1a\x93\x98\x76\x87\x78\x04\xae\xf0\x3a\xf3\x36\x8f\x22\x7c\xcc\xfb\xf9\x52\x82\x83\x7e\x3e\x5a\x30\xd9\x59\xc0\x45\x7b\x10\xc8\x3e\x67\xd9\x8c\xf1\x20\x08\xe7\xe6\x91\xda\x34\x32\x07\x97\xf4\x69\xf2\x16\x5e\x9f\x67\x42\xd1\x9d\x7a\x0a\x99\xf7\x8f\x92\xfc\x7c\x99\x2e\x20\x6c\x0d\xc9\x01\x90\x6d\x41\xbc\xd0\xf1\x5c\x32\x48\x3d\x12\x49\xbe\x64\x2f\x66\x34\xc3\x24\x1d\x87\x8b\x9a\x20\x41\x11\xb5\xf5\x1a\x4c\x7c\xef\x5c\x64\xe0\x28\xd9\x7b\xe9\x0b\xc1\xf7\xf2\x4c\xb2\x2b\x9b\x49\xfb\xd3\x37\x99\xf4\x4b\xbd\x60\x2d\xcd\x2b\x8f\xd7\x6b\x54\xb8\x30\xc8\x6e\x88\x8e\x8e\x7e\x7b\xbf\x7f\x74\x78\xf8\xf6\x68\xef\xf5\xc1\xbb\xfd\x0f\xef\x8e\x8e\xd6\xeb\x50\xd2\x96\x74\x4c\x18\x44\xe2\xb2\xe4\x8d\x14\x20\x84\x86\xd1\x3c\xe2\xec\x24\x15\x92\x71\x36\x73\xaa\x5f\xe2\xc6\x0f\xfd\x78\x36\x0b\x53\x5c\xaa\x51\x14\x82\xbf\x35\x59\xe8\x02\x47\x0c\xae\xdf\xe2\x5a\x7c\x41\xbf\x4e\x61\xbc\xde\xf5\xef\xf0\x3c\x97\xfd\x3b\x66\x7a\xfb\xe2\x34\x9e\xe5\x97\x6f\xf3\x1c\xc2\x2e\xde\x54\x1a\xe4\xaa\x25\x26\x0b\x9c\xce\x6b\xf3\x85\x57\x1a\x8d\x24\xb5\xe8\x30\x72\x78\x51\xf7\xe8\x5a\x77\xc1\xc7\x31\x81\xf8\x21\xb8\xd4\x52\xe2\x0a\xca\x31\x9b\xe7\x9c\xed\x01\xb9\x1e\xd5\x5f\xa9\x1c\x4f\xa6\xd6\x09\x8f\x24\x0b\x1c\x4d\x16\xd3\x8a\xf4\x48\x16\x56\xc2\xa4\x9b\x8c\x81\x88\x38\x8d\xcf\xa3\x6e\xac\x8d\x82\xa2\x97\x49\x69\x57\xc2\xcf\x09\x5d\x01\x57\x82\x76\x2f\x62\x19\x73\x70\x6b\xbb\x14\x91\x16\x2d\xe9\x5f\xe3\x60\xd5\x46\x9d\x47\xb3\xf4\x02\x4c\x49\xd3\x19\x58\x76\xb7\x39\x69\xe9\x83\x5b\xbb\x70\x3b\x9c\xa5\x17\x6b\xb1\x8c\x33\xbc\x8d\xcb\x12\x78\xe3\x03\x55\x5b\x3b\x60\xa4\x73\xa4\xb3\x9b\xbf\x5f\xa6\x33\x79\x6a\x3e\xeb\x80\xe3\x84\xb3\xcf\x45\xca\x75\xb0\x0d\x9b\xf5\xfe\x0e\xb8\x1d\x90\x71\x4b\x08\xac\x18\x3a\x7a\x08\x0e\xa3\x23\x84\xc8\x22\x8f\x67\x69\x76\x02\x87\x14\xa2\x96\x69\x21\xd9\x2c\xfa\x25\x09\x7f\x49\xc2\x55\x49\xde\xf0\x70\x82\x4e\x98\x7c\x97\x9f\xb1\x0c\x4d\x31\x26\x2b\x30\x2a\x53\xfb\xc2\xec\x06\xef\xff\x06\xdf\xf4\x89\xa8\xaf\xf3\xea\xf1\x15\xeb\xb5\xaa\x07\x93\x4b\x88\x53\xb1\x32\xfd\xad\x1f\xae\x74\x1c\x65\x26\xdf\x0b\xc6\x75\xc4\xbb\xf3\xbc\xc8\x64\xbd\x3a\x04\xfe\xca\x54\x4e\x0d\x63\x5c\x2f\x55\x7d\xc0\x11\xbc\x98\x6e\xd2\xee\xb0\x24\xda\x43\xa2\x88\x56\x26\xfb\x0d\x5e\xea\x81\xfc\xd5\xca\x0e\xf4\x72\xf2\x87\x10\xf4\x61\xb4\xd3\x01\x18\x92\x20\xd0\x2d\x73\x5b\x1c\xbb\xec\x18\x07\x1d\x24\xa3\xe1\xe6\xf0\xd8\xd0\x98\x97\x69\x36\xcb\x2f\x5d\x7c\x5d\x23\x27\xc1\x3d\xb4\xcd\xd9\x79\x2e\x59\x7f\x79\xba\xdc\x9e\xc5\x17\xdb\xba\x76\xb1\x8d\x7a\x5e\x2f\x7b\x68\x7b\xb8\xf3\xa8\xbf\xcc\x4e\xd0\x88\x9b\x08\xa3\x21\xda\xd5\x17\xd8\x7f\xe9\xe0\xdf\x04\x3d\x65\x31\x67\xbc\x63\x4a\xda\x59\x55\x7b\xbb\x2d\xf1\x61\xeb\x2d\xfb\x5c\x30\x21\xd9\x6c\xeb\xf7\x54\x9e\x22\x82\x3e\xbc\x7a\xf9\x93\x94\x4b\x93\x8e\x30\x01\x4b\xb7\x30\x23\x2b\x6b\xdb\xc5\xcb\xb6\xa8\x02\x70\x49\x94\x9f\x39\x6b\x88\xfe\xf1\x22\x3f\x0e\x81\xcd\xb9\x3f\xb8\x0f\x17\xce\x6a\xa3\x28\x84\x39\xcb\xaa\x91\x32\x86\xed\xef\x33\xe6\x4c\xdb\x21\x0b\xc4\xb2\xeb\x20\x47\x07\x6c\xc9\x2a\x32\x47\xdd\xdb\x98\x37\xdd\x84\xd5\xe7\x4b\x8e\xcd\x48\xbf\x7f\xfb\xb2\xc9\x52\x86\x12\x44\x11\x78\x33\xd4\x1b\x00\x6d\xce\x7b\xad\x1a\x13\x14\xcb\x44\xb9\xfa\x16\x7a\xd2\x31\xdf\x3b\xba\x64\x27\x3d\x8f\x4f\xc0\xca\xbe\xa3\x66\xad\x83\xbe\xb5\x1d\x62\x66\x1a\xc9\xb7\x28\xea\x7c\x0b\x31\x03\x74\x50\x56\xe0\x01\xf4\x0d\x53\x03\x8b\x4b\xed\xd5\xf7\xd7\x16\x99\x86\x76\x87\x4a\x65\xff\x8e\x89\x2b\xb6\x60\x20\xae\x54\xdb\xf6\x91\x60\x0b\xb5\x1f\xaf\xd7\x9e\x6e\xac\xc1\xdd\x31\x0f\x65\xdf\x84\xd7\x89\x4f\x22\x94\xd8\x4d\x08\x95\x64\x22\x6d\xe5\x63\x1e\xa2\x3c\xd9\x12\xcb\x34\xcb\x18\x47\x04\x4c\x8c\x91\xee\xe1\x96\xc9\x83\x88\x90\xd7\x0b\x16\x21\x4d\xb0\x14\xc6\xf5\xe1\xb1\x87\x96\x57\xa3\xce\x29\x4b\x4f\x4e\x65\x33\x19\x91\x58\x4a\xae\x96\x65\xfa\x17\x8b\x90\x38\x8f\x17\x0b\x44\x50\xcc\xd3\x78\x6b\x11\x1f\xb3\x05\x8a\x64\xff\x0e\x18\xea\x5d\xc9\x10\xbd\x34\x55\xa9\x13\x76\xa4\xdb\x14\x1b\x22\xbe\xd1\x24\x36\x73\xc0\x75\x8b\x4c\xbd\x44\xf0\x24\x92\xb5\x89\x25\x48\x4d\xc5\x96\xda\x15\x90\x51\x38\x51\x34\xbb\x2c\xf1\x94\x0c\x71\x24\xfb\x47\x2c\xc4\xe5\xe8\xd7\xa4\x7f\x74\x99\xca\x53\x45\xa4\x21\xe0\x7b\x77\x60\xf6\x94\xdf\xab\x3d\x25\x49\x14\xe1\x12\x2f\x53\x21\x11\x71\xa3\x29\xa2\x95\xa6\x86\xd1\x1f\x49\xb8\xd2\x1b\x67\xf4\x6b\x42\x1a\x6c\x53\x34\x99\x96\xc6\x53\x05\xf9\x39\xb1\x4f\xdd\xe1\xe6\x53\xed\x0f\x2e\xed\x1e\x16\x9b\xea\xcd\x7e\xa1\x1d\xc5\x55\xdb\xc5\xc0\xa2\xd0\x9f\xff\x3a\x0a\xf1\x50\x6f\x8b\x13\x3d\x0f\x12\x9c\x18\x91\x95\x19\xf2\xf3\x74\x36\x5b\xc0\x66\x33\x4b\x2f\x52\xd5\x5b\x84\xca\xb2\x96\x79\x0b\x3c\x70\xd7\x01\x6c\xf1\xfc\xb2\x91\x92\x30\x85\x12\x16\xae\x38\xe5\x69\x76\xa6\xe0\xea\x9b\x20\x45\x8f\x90\xda\x5d\x64\xff\xe8\x22\xd4\x4e\x7d\x6e\x2c\xec\x17\x21\xb3\xfc\xfc\x8d\xd9\xf8\xd9\x95\xdc\xd3\x06\xb1\x6a\xae\x45\xe8\xa3\xdc\x7b\x23\x6b\x42\x10\x81\xe7\x3f\x56\xcd\xb3\x54\x2c\x17\xf1\x75\xe7\xbf\x50\xd5\xfe\x79\x9c\x2e\xbe\xa6\x0e\x8d\x9c\x7b\x8b\x58\x88\x08\x15\x67\x5b\xaa\xf8\x56\x96\x5f\xf2\x78\x59\xad\xdb\xd6\xf9\xf8\xea\xc1\x4d\x67\x1d\x63\x7c\xf3\x7f\xa2\x3d\x3f\xfe\xad\xf6\xfc\x5b\xaa\xdc\xd7\x74\x58\xd7\xa7\xc8\x8d\xfa\xef\x86\x7a\xcd\x82\x91\xfd\xa3\x45\x28\xfb\x76\xad\x93\xb6\xe3\xfe\xc6\x9a\x32\xf4\x51\x97\xd9\x5a\xa4\x42\xaa\xf4\x2d\xd4\x63\xfd\x74\x56\xb6\x2d\x39\x95\xe4\xa8\xab\xe9\xab\x4f\x28\x19\x04\xa0\x5c\xc4\xd7\x07\x60\x43\xc2\xfa\x4b\xce\xe6\x8c\x73\x36\x53\x09\x96\xaf\x55\xe0\x0d\x0f\x7b\xef\x81\xe9\xe2\xed\xc3\x7a\xcb\xc0\x35\xea\xf8\xf2\x14\xdd\x0a\xab\xd6\x7c\xb4\x85\xfe\x45\x70\x6a\x59\xfd\x8b\x20\x8a\x74\xa6\x59\xfc\x7f\x47\x7b\x4e\xfe\x26\xb0\xd6\xe5\x95\x40\x58\x56\xc5\x0c\x30\x8b\x70\xfb\x8e\x73\x50\x20\xd2\x44\xb1\x99\x16\x3f\xf4\x26\x08\x21\xed\xd5\x81\x89\xa7\xc0\x86\x46\x48\x14\x89\xf6\x83\x79\xe3\xd6\x6e\x36\xce\x4e\x2a\x3a\xcc\x2e\x89\x6a\x97\x6f\xab\x65\xc6\x96\x9c\x25\xb1\x54\x1b\xbd\x57\xd5\x2c\xce\x4e\x14\x8f\xf2\x35\x35\xcd\x52\x51\x55\x65\x17\x5f\x89\xb1\x79\x82\xb7\xd1\x9f\x2d\xdb\xbe\x93\xcc\xc8\xe2\xff\x69\xe9\x1e\x2b\xfe\x23\xd2\x3d\x59\xfc\x5f\x94\xee\xf9\xad\xfa\x2f\x48\xf7\x34\xeb\xc8\x0b\xc7\x3a\x2e\x97\x0d\x8e\xd1\xe3\x25\x7d\xbe\xf1\xcf\x5b\xf9\xc6\xdf\xff\x16\xdf\xe8\x4e\xff\xac\x08\x59\x61\x4e\xff\x8e\x8b\x45\x64\x82\x52\xf1\x22\x4b\x65\x1a\x2f\xd2\xbf\xd4\x4a\x43\x27\x4c\xda\xcf\x87\x39\x57\xab\xcf\x4a\x08\x1c\xf3\x79\x83\x88\x60\xa3\xa4\x22\x49\xf6\x60\xae\x2b\x7f\xd9\xac\xdc\x55\x0d\xb5\x68\xc6\xb4\x26\x14\x00\xc8\x55\xb6\x10\x1b\x0e\x37\x2b\xda\x39\xdc\x26\x77\xab\xcf\xfd\x1e\x83\xeb\x6e\x83\x99\x65\x70\xed\xc3\x06\x85\x4c\xf2\x4c\xc6\x69\xc6\x78\xa7\x38\xdb\x5a\xc6\x33\x38\x9b\x94\x50\xe0\x74\x88\xc8\x44\x43\xbe\x08\xd1\xc7\xac\x03\xff\xb3\x5d\xd3\xef\x08\x4f\x4d\x0c\x4d\x4b\x95\x75\x67\xfc\x01\x1f\x2b\x60\x76\x60\x61\xdb\xae\xc8\xa0\x1b\x6f\x2d\xa1\x30\x6f\x8a\x92\x45\x0c\xa8\x26\x1c\x83\x38\xc2\x53\xb2\x83\xa7\xb8\x1c\x65\xc5\x4d\x07\x98\xbc\xa0\x1e\x82\x65\xc5\x6d\x08\xc6\x8b\xaf\x47\x30\x98\x8a\xb4\xa0\xa2\x3f\x27\x71\x71\x7b\x3c\x28\xcf\xb1\x37\xc9\xe8\xb5\xf6\x50\x71\x20\xc3\x0c\x83\x07\x2a\xe3\x68\x2b\xa1\x03\x08\x90\x30\x4a\x9f\x24\x23\xf0\xc6\x91\x58\x17\xdc\xa9\x89\x79\x92\x11\x8e\xd7\xeb\xc2\xf8\x8f\x1a\x4f\x38\xc9\x26\x7c\x3a\x8d\xd4\x2f\xae\xac\xc2\x4b\x92\x14\x74\x65\xfd\x2b\xc5\x45\xd8\x1d\x60\xeb\x9e\x49\xbd\x0d\x71\x69\xc3\x1a\xf8\xc1\xb0\xf4\x42\x47\x36\x26\x64\x69\x7c\xae\x8b\x36\xa9\x60\x52\x80\x30\xcb\x68\x8a\x15\x94\x7b\x61\xfc\x8a\xba\x48\x5f\x3b\x3a\x85\x00\x10\x60\xdb\x1d\xc6\x98\x14\xd4\xf8\xeb\x6b\xaa\xce\xe8\x58\x17\x20\x29\x4b\xc0\x51\xe0\x98\x85\x05\x8e\x4c\xe8\x4f\x17\xe4\xbf\x30\x82\x92\x8c\xe4\x26\x38\xe0\xed\x53\xd0\x88\xd7\xe8\x28\xb7\x1f\x37\xd5\xd4\xe1\x91\x45\x08\x4b\x63\x7d\x34\xeb\xdd\x04\x74\x16\x5c\x57\x63\x08\x38\x59\x84\x29\xf4\x35\x26\x09\x41\x19\xbb\x92\x88\x48\xef\x9a\x2c\xd9\xcc\x04\x32\x22\xc8\x15\x87\x55\x9c\xb2\xb2\x24\x0b\x85\x00\xa0\x4a\x42\x96\x05\x9d\x75\xcd\x0e\x4a\x4e\x0b\xfa\x27\x0b\x91\xfa\x80\x08\x22\x08\xd7\x26\x0e\x0e\xc3\x9b\x41\xcc\x96\xc5\x7a\xdd\x3d\x2d\x4a\xb2\x52\xe5\x5a\xc3\xc9\x18\xbc\xba\x36\x9a\x03\x2e\xa0\x9a\x1c\x23\x82\xa2\x6a\x86\x67\x05\x4d\x14\x1f\xb8\x24\x17\x05\xfd\x8d\x85\xe8\x3c\x5e\x22\x4c\xae\x0b\xfa\x87\x7d\xf9\x9a\x16\x75\x2f\x54\x93\xae\x55\x93\xce\xe3\x65\x5b\x8b\x66\x85\x89\x55\xfa\x95\x4e\xcd\x5c\x0b\xcf\x0b\xed\xd3\xe8\x3c\xbe\x22\x27\xf6\x39\xcd\xc8\x71\xe1\x7b\x3e\xba\x2c\xe8\xf6\xc7\x3b\xe1\xe4\x4e\xf0\xed\xff\x4c\xd7\x1f\x67\x1f\x67\xe3\xf5\xe3\xc9\x3f\x9f\x4c\xbf\x7b\x82\xb7\x4f\xc8\xe1\xe6\x67\xbc\x7d\x02\xb1\x5d\x6c\xec\x23\xb2\xb3\x19\xbd\xc8\x3a\xff\xce\xfa\x7f\x27\x9a\x10\x49\xa1\x40\x3d\x24\x11\x89\x69\x3e\x46\x77\x50\x84\xee\x0c\xac\x2a\x5e\x15\x36\xc6\xab\xcb\x06\x8e\x49\x4d\xe0\x18\x6e\x03\xc7\xf0\xb6\xc0\x31\xe9\x38\xb5\x71\x91\x72\x92\xe1\xc8\x5c\x8d\x38\x5d\x51\x1d\x4b\xc9\x0b\x1a\x63\x63\x95\xe7\x41\x90\xae\xd7\x1b\xfe\x30\xb3\x20\x80\x58\x8c\x99\x8b\xbb\x18\x63\x1b\xef\xa9\x8a\x33\x43\x32\xe3\x2d\xc7\x8f\x34\x53\x98\x85\xaf\x32\x0b\x1d\x69\x66\x5e\x8b\x34\x43\x5a\x43\x4e\x67\xa3\xc5\x7a\x1d\x66\x2e\x66\x87\x71\x3c\xbe\xa4\xc2\xc4\xa4\x01\x47\xda\xba\x0d\xa7\x54\xb8\x50\x34\xc2\x0f\x45\x53\x5a\x3a\x3c\x53\x74\xd6\xf8\x23\xbf\xa0\x07\x69\x28\xc8\x1c\x7b\x1e\x8a\x2e\x8c\x3f\xee\x74\x1e\xce\x4c\x00\x5a\x4c\xba\x4b\x93\x0a\xca\xd7\x36\xac\xdf\x64\x00\xfe\xcd\x44\x3d\x32\xcd\x9c\x08\xe9\xa7\x61\x72\x8a\xb1\xab\xfe\x9a\x9c\x53\x84\xc8\x09\x1d\x90\x63\x3a\x18\x1d\x3f\x9e\x59\x8e\xf3\x18\x38\x4e\x3a\x9b\x1c\x4f\x9d\x7a\xce\x65\xad\x2e\x72\x48\xcf\x8b\xf0\xa4\x08\x13\x19\x5e\xe8\xe1\xc7\x64\x6e\x1d\x0d\x91\x01\x26\xfb\x74\x32\x25\xaf\xe9\x70\xf4\xfa\xf1\x85\x85\xfb\xba\xd7\xc3\xfb\x7e\x28\x5d\x4a\x69\x78\x4d\x2f\x26\xaf\xa7\x78\x7c\x6d\x75\xe3\xae\xcd\xa8\x1e\xd1\x0b\x13\x45\x0e\x6c\x95\xf4\x38\x7d\xa2\x93\x4b\x77\x79\xb5\x4f\x0e\xd5\x88\x39\x04\x3b\x0a\x82\x4f\x1a\xfc\x91\x06\x71\xe5\x66\xca\x50\x4e\xb3\x7d\x7e\xb2\x22\xe0\x2b\x9a\x84\x97\x64\x4e\x0e\xc9\x3e\x39\x52\x98\x72\xf8\x84\x9e\x04\x41\x78\xde\xa3\x73\xa3\xec\x71\x42\x0e\x71\xef\x8a\x9c\xd0\xc3\xde\xa5\xed\xa0\xe5\x32\xcf\x7b\x2e\x17\x2e\xa7\x23\x9f\xda\xfa\x5b\x8f\xde\x76\xb2\x9e\x0b\xc7\x57\x54\x1b\xae\xa0\x87\xc5\xe6\x4a\x01\x4d\xfc\x77\x32\x4c\x31\x11\xf4\xb2\xc0\xc4\xac\x95\x98\xd4\xe4\x11\x16\xb8\x18\x19\xd3\xf8\xd8\x77\x13\x96\xc4\x82\xa9\x55\x6c\x54\x40\xef\x20\x50\x39\x47\x81\x4d\xe9\x48\x9d\xf0\x3f\x2e\x81\x3b\x27\x0e\x19\xd6\xdf\xbe\xdd\xf8\x96\x98\x2f\x8f\x51\x24\x68\x3a\x89\x7d\x7f\x62\x53\xa3\xda\x6e\x6f\xcd\xb4\xa7\xfd\x5e\x3c\xd2\x8e\x74\x9c\x87\x9a\x0e\xc4\x25\x9a\x3f\x29\x74\xf3\x17\xf4\xb8\x08\xe7\xdb\xc3\xca\xc1\x87\xca\xbc\x18\xb3\x68\xf1\x98\x16\x63\x87\x2b\xf9\x64\xb1\x35\x9c\x8e\xe3\xca\x61\x45\xa4\x93\x7a\x7e\x12\x2b\x05\xcd\x27\xf3\xad\xa1\xbb\xd4\x74\x00\xc4\x18\xa1\x48\x94\x3a\xda\x37\x60\xc8\x7e\xd1\xaa\x87\xd8\x69\x71\xd6\xa8\x6f\x9e\xb4\x6b\xf6\xe6\xbe\xd0\xea\x16\x8a\x4f\xb2\xa9\x77\x58\xcb\xbc\xe8\x88\xd5\x3e\x5e\x96\xe4\x75\x61\xcf\xa8\x5e\x00\x76\xa3\xe5\x53\xe1\xd4\x51\xe1\xe9\xf6\x4e\xb4\xdf\x1b\xdd\x9a\xa9\xa2\x04\xaf\x0b\xeb\xd5\xbe\xda\xf4\x3f\x15\x4d\x9e\x06\xb6\xd5\x2a\xc3\x95\x9f\xc1\x1a\x2d\x06\xc1\xa6\x57\x9d\xaa\xc8\x6e\x5b\x33\x9e\x9b\xaf\x37\xb6\xe4\xac\x70\xae\xc2\x4d\x60\x62\xdc\x16\x87\x0d\xec\x58\xe8\x44\x4e\x31\x81\xee\x56\x6e\xd2\x37\x83\x5d\x68\x8f\x41\x9a\x23\x05\x7f\x13\x13\x3e\x25\x9c\x48\x2f\xde\x09\x6c\x52\x9d\x34\xeb\x48\xbc\x31\xc0\xa7\xb1\xf0\x4e\x92\x36\x88\x5a\x8e\x9d\x8e\x81\x01\x9a\x4f\x49\xae\x78\x24\x05\xeb\x4d\x41\x57\xa9\x80\x31\x8f\x8e\x0a\x62\x1e\x9f\x16\xf3\x39\x6b\xbb\xb5\xae\xcf\x92\xce\xd6\x1c\x21\x92\x8a\x1b\xcb\x7b\x33\xd2\x85\xa9\x0c\x02\x67\x58\xea\x45\x60\x34\x5f\xfd\x24\x1c\x04\x6d\x11\x6e\xfc\x2c\x7d\x5b\x71\x10\xb4\xa7\x9b\xd6\x3d\xcf\xf9\xf9\xb3\xda\xbd\x77\xd5\xbf\x4a\xa1\xc3\xcd\xa0\xcd\x1e\x04\xd2\x37\x16\xb1\xc9\x65\x7d\xd0\x7e\x4b\xd9\xe5\x57\x02\xf6\x4a\x05\x81\xf7\xd2\x4f\x85\x82\x32\xde\x4c\x0a\x25\x8e\x40\x3b\xe4\xd8\xf5\x53\x3f\xf9\x0d\xf3\x8a\xa9\xb6\xe9\x45\xd7\xd6\xa4\x26\xf3\x21\x55\x76\x2d\x00\x6c\xcb\xbe\xe1\xf3\x4a\x65\xd7\x48\x18\x5d\x29\xd4\x79\x6f\xbb\x18\x7d\x52\xaf\xcf\x62\xd9\x16\x36\xdf\xa1\x90\xfa\xde\x82\x3b\xcf\xd3\xc5\xad\xc5\xd4\xf7\x36\x94\x5b\xe4\xc7\xb7\x15\x53\xdf\xdb\x6a\x33\x25\xa2\xdd\x42\x8f\x15\x8b\xcf\xdb\xf0\xf6\x4a\x23\xab\x22\x15\xfd\x65\xba\x64\x50\xb8\xe9\x79\xf4\xeb\xa6\xbd\x51\xaa\x81\x56\x8d\xaf\x7a\x06\xe3\x6c\x16\xf3\xd9\x53\x9e\x5f\x0a\xc6\xf7\xb3\x8b\x4d\x79\x49\xd8\xa6\x8a\x94\xc5\x17\xe9\x49\x2c\x73\xbe\x5e\xa3\xb7\x2c\x4e\xe4\x41\x2c\xd3\x0b\x06\x31\xca\xec\x27\x45\x3f\x66\x45\xa2\x48\xa4\xfe\x7a\x08\xf2\xa7\x1b\xf3\x1c\xb6\x7e\x01\xe7\x4b\x2d\x7d\xd5\xb7\xe8\x41\xd0\xf6\x6d\x96\x27\xb0\x8d\x78\x0e\x9a\xcf\x0a\x72\xce\xf8\x49\x35\xff\x1d\xe9\x87\x88\x75\xa9\x5c\x73\xec\x1b\x44\x9d\x4d\xb2\x69\x0b\xad\xe7\x63\xf5\x81\x4a\x70\x69\x4e\x38\x8e\xe0\x95\x97\x9e\x9e\x76\x8b\x8d\xd9\x28\x7b\x9c\xc3\xa6\x77\x56\x84\xfe\x96\x47\xb8\x17\xb8\x83\xcc\x18\x5b\xbe\xfa\xaf\xb5\xb9\x25\x9b\x0c\x57\xa5\xfa\xfe\xef\xe9\x0e\xbb\x92\x4d\x8f\xfa\x9e\x8e\xd6\x59\x11\xb2\x1a\xb3\x96\xe1\x95\x84\xb1\x6c\xa5\xce\x6c\xbc\x5f\xe8\x90\x9a\xac\xc4\x98\xc8\x92\x48\x9e\xb6\x2e\xaf\x2a\xd0\xca\xf6\x3f\x3f\x8a\xef\xb6\x09\x42\x95\xab\xd5\xed\x8f\xe2\xbb\x3b\x90\x54\x7a\xe3\xf9\xb2\xf8\xea\xb8\x25\xdb\x77\xef\x0f\xb6\x4f\x52\x82\xfe\xe1\x43\xbd\x7b\x6f\x17\x12\xa3\x5a\xe2\xce\xfd\xed\x13\x82\xee\xd4\xd3\xf6\x20\x23\xa9\x27\x0e\x54\xc6\x5e\x2d\xed\xc1\x53\xc8\x38\xa9\x27\x3e\x83\xc4\x29\xd2\x3b\xee\xdb\x62\x23\x18\x17\x38\x0d\xa9\x1c\x82\xc2\x1c\x82\x45\x21\x86\xe8\xa2\x95\x35\xe2\x9b\xa2\xbf\x41\x75\x42\x86\x71\x46\x2b\xf6\xca\x7a\x66\xd2\xc7\xd9\xc9\x74\xf4\xa6\x70\x92\x69\x46\x1a\x21\x4a\x0c\xe7\x12\x04\x1a\xb4\xe6\x04\xc1\x96\x8a\xa2\xc9\x14\x45\xc0\xb9\x10\x0f\x82\xac\x2b\x35\x43\x29\x45\xc8\xc1\x8e\x14\x3c\x8c\xbd\x38\x7c\x6d\x1b\x12\xc1\x67\x23\x21\x97\x5a\xe1\xfc\xe7\xc3\xd7\x07\x26\x26\x78\x3a\xbf\x06\x7d\x47\xe3\xea\xf9\x65\x01\x56\x4c\x14\xf5\x60\x6a\xc1\x0d\x34\x44\x99\xa7\xb9\xe7\xf7\x1b\xec\x5a\x9c\xf0\xc8\x9e\x92\xd1\x37\x08\x8f\xb6\x86\xe6\x9c\x51\xa9\xb5\x0f\x48\xaa\x10\xaf\x47\x43\x38\x56\x7b\x05\xc6\x08\x8f\xd1\x18\x45\x0a\x68\x2f\xab\x64\xec\x15\x82\xed\x15\x56\x58\x7c\x1a\x67\xb3\x05\xe3\x82\x4e\xa6\xe5\x5e\xe1\x71\x5c\x85\x60\xed\xbc\x76\xad\x98\x71\xb2\x3f\x2f\x16\xf3\x74\xb1\x60\xb3\x48\x12\xce\x3e\x81\xe6\x92\x5a\x18\xa4\x9e\xd9\x7a\xbc\x2d\x49\xad\x2a\x28\xb0\x19\xde\xc6\x16\x9b\xc8\xa9\xea\x78\x23\x49\xfb\xb0\x6a\x40\x32\x53\x49\x1b\xf3\xe8\x66\xd8\x87\x51\xbf\x29\x36\xac\x1a\x0b\x02\xa9\x83\x70\x6b\xc1\xf9\xbb\x82\xee\x15\xe4\x60\x13\xaf\xcd\x60\x78\xc0\xb9\x07\x90\xe3\x95\xa4\xfa\xa2\xc9\x50\x87\x17\x6d\xc2\xc6\x6e\xd8\x95\xeb\x75\x57\xf6\x8f\x8e\xf6\x76\x0f\xf6\xf6\x5f\x1e\x1d\x61\x6f\x96\xde\xeb\x59\x6a\xe8\x86\x09\x26\xdf\xa5\xe7\x2c\x2f\x64\xe7\x34\xd6\x61\xb3\x8e\x19\xcb\x3a\x76\x13\xf2\xf8\xf8\x57\xad\x00\x92\x05\x8b\xf9\x17\x40\xa8\xbe\xdf\x29\xe8\xfb\x82\x3c\x2b\xe8\xab\xa2\x6a\xd3\xf3\xc2\xa8\xb6\xdd\x29\xd4\x09\xcd\xb5\xc5\x2e\xf1\x2a\x45\xbb\x80\x4c\xe7\xa1\xce\xfa\xbe\x58\xaf\xbb\x77\x0a\x1c\x04\x9b\x85\xee\x14\x1e\x24\xd2\x04\xe1\x99\x53\xde\x29\x20\xa9\x8a\x72\x55\xfb\xe6\x9f\x04\x6a\xb9\x1a\x39\x8c\xb4\x70\x80\xcb\xb2\x6c\x21\xed\xa7\xbc\x5f\x35\x21\x08\xc2\x5a\xeb\x30\x69\x2f\xe1\x0f\x6a\x10\x84\xcf\x0a\xea\xa7\xe8\xd3\xeb\xd3\x82\x7c\x86\x70\xc6\x3f\x16\xb4\x3b\x24\x7f\x15\x74\x6b\x58\x8d\xec\x6f\x6a\xb2\x7e\x2c\x82\xe0\x69\x11\x04\xa1\xce\xf2\xd4\x7a\x83\x1e\x7f\x2e\xe8\xd3\xc2\x4a\x52\x3e\x17\x38\x82\xd2\xe4\x73\xe5\x56\xfa\xa7\x22\xf4\x2d\x2d\xd4\x2b\x50\xdf\x1f\x0b\x7b\xe3\xf3\xbc\x08\x7f\x2b\xf0\x48\x81\x1e\x78\x01\x42\x1c\x8c\x11\x1b\xe9\xf3\xf3\xd3\x82\x7e\x36\x6d\x1d\xf5\x7a\x7f\x15\x8f\xd9\x08\x3f\x85\x96\x4d\xfe\x2a\xa6\x7d\x5e\x64\x21\x1e\xe9\x06\x78\xc5\xcb\xa7\x85\xf6\x25\xa8\xdb\xde\x50\x85\x7c\xa6\x90\xa0\x36\x26\xf6\x5a\xc0\x4b\x33\xf7\xc4\x3a\xf3\x2b\x85\x31\xcf\x14\xc6\xb4\x15\x6b\x8c\x30\x69\x82\x51\x98\xf1\xac\xa8\x85\x44\xf3\x90\xe5\x59\x0d\x59\x36\x51\xe5\x59\x0d\x55\x14\xa2\xc0\xdd\x45\x65\xc7\x52\x78\xaa\xba\xf3\x22\xa3\x46\xd1\x3c\x56\xbb\x0c\x65\xe5\x07\x9f\x2a\xf1\x22\xa3\xcd\x4b\xba\x79\x61\x85\x5c\xba\x09\xae\xb0\x4f\x00\x7e\x51\x73\x08\x6b\xf1\x8f\x82\xfe\x52\x90\x9f\xe1\xf7\x57\xf8\xfd\x1d\x7e\xff\x84\x5f\x29\xd4\x2f\x53\xbf\x3a\x16\x90\xa0\xa7\xbc\xbf\x64\x7c\x9e\xf3\x73\xc5\x7c\xaf\xd7\xab\x92\x64\x82\x72\xd1\xcf\xf2\xcb\xf5\x9a\x8b\xfe\x79\xfe\xd7\x81\x7d\x14\xf6\x29\xb7\x0f\x97\xec\xf8\x2c\x95\xf0\xb6\xc9\x8f\x2b\x5a\xa2\x36\x46\x88\x41\xac\x86\x3c\x34\xd4\x32\xd7\x06\xff\xea\x9b\xbe\xeb\x12\x74\x95\xb1\x2b\xf9\x2e\x4d\xce\x5a\x74\x8c\x6f\x16\xd0\x6c\x0d\x01\x0f\x36\xe5\xf9\x9e\x88\x61\x38\xe2\x9b\xb7\xef\x20\x66\x98\xf0\xad\xa1\x2f\xca\xe1\xd3\xd1\x67\x73\x01\xa6\xaa\x34\x73\x87\x89\xda\x53\x1d\xf6\xae\xd7\x3f\x16\xeb\xf5\xf3\x22\xfc\xa9\xc0\x25\x91\xa9\x5c\xb0\x08\x1d\xeb\x63\x09\x22\xe6\x41\xdb\xb5\x5e\x44\xab\x92\xc4\xfc\xe4\x22\x9a\x4c\xc9\x05\xe3\x02\x54\x2d\x90\x7d\x14\xea\x73\x9e\x45\x7f\x14\x24\x9e\xcd\x5e\xa6\x42\xb2\x8c\xf1\xe8\xe7\x82\xe4\x59\xc2\xa2\x5f\x0b\x92\xcf\xe7\xd1\xef\x05\xe1\xec\x3c\xbf\x60\x2e\xc3\x9f\x36\x65\x77\xb1\xb0\x89\x22\x92\x82\xb0\xf3\x54\x46\x4c\x90\xe3\x34\x9b\x35\xcf\xbb\x1b\xd4\xdd\x04\x59\xed\x9b\xcc\x36\xb2\xa2\x28\x96\x4b\x7d\x41\x8d\x4b\x92\x5c\xb6\x68\xae\xa3\x6d\x54\x92\xe4\x74\x96\xf2\xaf\xab\x00\xb2\xb6\x82\x2f\xce\x63\x71\xd6\x72\xef\x3d\x28\xc9\x29\x97\xe9\x39\x6b\xc1\x85\xfe\x60\x30\xfc\x2e\x13\xe6\xc6\x01\x2c\x52\xab\x3b\x98\x90\x29\x56\xc9\x7f\xbf\x3b\xfc\x6e\xc8\x7e\xa8\x42\x33\x07\x41\xc8\xb7\xa8\x9c\x0c\xa6\x24\xcc\xd4\xc3\x70\x8a\x1f\x0f\x20\x75\x8b\x64\x3d\xaa\x32\x63\x32\xe1\x24\x9b\x96\x64\xb9\x88\xa5\x5a\x19\xde\xfc\x72\xb6\x60\xb1\x60\x6a\xe6\xb4\x5a\x7a\x04\xd1\xd3\xea\x8d\xdd\x58\x00\x5b\xb9\xc0\xdb\x43\x76\xaf\x2c\x49\x2c\x1a\xdc\xd2\x0d\x8c\x25\x1c\x94\x32\xcd\x69\x64\x7d\x99\xbf\x5f\x2e\xad\x33\x1b\x4a\x81\xd5\xf5\x52\x14\xdb\x33\x61\x53\xca\x4d\x74\xae\x8e\x3a\x90\xe8\x78\x80\x89\xd8\xf0\x30\x4b\xf2\x4d\x79\xe8\xe6\x27\xab\x77\x4f\x19\xe1\xe0\xc6\x44\x9d\x2e\x28\xc7\x44\x9d\x53\x40\xc3\x9d\x66\xf0\x2c\x96\x79\x26\x18\xcd\x89\x54\xdc\xf3\x55\x9a\x0b\x40\x00\xed\xc1\x53\x5b\x46\x6e\x5a\x9e\xaf\x8c\xda\xb6\xbe\x85\x37\x2f\x04\x54\x3a\x20\x05\x9c\x4e\xcc\x8c\x22\x88\x5a\x36\x90\xea\x25\x10\x2d\x8a\x31\xb9\xb5\x85\xc7\x3c\x5d\xb0\x03\x07\xc2\xbe\x91\x45\x9a\xb1\x03\x2f\x77\xf5\x4e\x92\x7c\x51\x9c\x67\xfe\x47\x3f\x85\x08\x19\x27\x67\x3a\x1d\x1e\xed\x9c\x9b\x9c\xea\x99\xa8\x61\xb1\x09\x33\x56\x96\x44\x96\x61\xb5\x0a\x24\x76\x03\x5b\x92\x42\xd0\x09\x8a\x4f\x20\x76\x4c\xc3\xe0\xc0\x86\x96\xd1\x34\xc6\x4b\x30\xb1\x66\x98\x8c\x4f\xd4\x9f\xab\x65\xca\x99\x40\x04\xcd\x79\x7e\x8e\x08\x02\x0f\x51\x04\xa5\xf3\xad\xf3\x7c\x96\xce\x53\x36\xdb\x12\x69\x96\x30\x9d\x56\x64\x1b\xa9\x8b\x58\x48\x97\x57\xbd\x1b\x33\x0a\x44\xd0\x79\x7c\xb5\x35\xcf\xf9\x65\xcc\x67\xaa\x86\x25\xcf\xaf\xae\xb7\x9a\x0d\x05\x4d\x42\xd0\x14\xe3\x4c\xf2\xeb\xad\x78\x2e\xe1\x0d\x54\x1c\xe3\x13\x96\x49\x34\x25\x42\x50\x38\xf6\x6c\x4a\x6d\x42\x2f\x2c\xb9\x0b\xa2\x45\xb7\xc3\x73\x91\xb2\xb5\xe4\xe9\x8c\x65\x12\x6f\x9b\xf8\x20\x95\x88\x45\x41\xdf\x55\xc0\xd5\x7a\xb7\x42\x93\x7e\x4d\x27\x05\x62\xdc\x57\x5b\xa2\x23\x19\x19\xad\x74\x53\xd4\x3a\x57\x3c\xdb\xae\x94\x3c\x3d\x2e\x24\x0b\xd1\x29\x67\x73\x44\x32\x1d\x18\x52\xbd\x60\x72\x63\x16\xed\x8d\x40\x67\xab\x9c\x00\x70\xe7\x33\x66\x5c\x3d\x56\x67\xdf\x48\x1f\xdb\x15\xdd\x07\xe3\x76\xae\x5d\x5b\x18\x53\x6c\x6e\xac\xa1\xc7\xf6\xc1\x17\x02\x8c\xab\x92\xb1\x50\x79\xd5\x9f\xb1\xfe\xe3\xe5\xfb\xa6\x56\x01\xac\x21\xee\x7c\xce\x68\x5b\x75\xae\xdd\xb4\x38\xdb\x72\xed\xb9\x9b\x3b\x8f\x33\x5e\xe8\xc1\x2a\x51\xe5\xea\x55\xaf\xa5\x3b\x20\xd2\x2c\x6c\x1a\xe1\xe8\x91\xf3\x0f\x4a\x7a\xf3\x35\x68\x00\x67\x61\x86\xc7\xea\x4b\xe4\x85\xde\x74\xde\x76\xc0\xe1\x94\x79\x09\x02\xdd\x7c\x6a\x3d\x9f\x95\x65\x88\x37\xa9\x6b\x77\x50\x92\xf9\x6d\x88\xb6\xba\xe4\x69\x4d\xfc\x5a\x69\x8e\xe8\xe6\xc5\x8a\x6f\x8d\x8d\xc6\x0b\x9c\xba\x5b\x64\x28\x8a\x01\x80\x3a\x34\x4d\x80\x60\x52\xa6\x8c\x5d\x8e\x14\xf5\x2c\xa5\x0f\x39\xee\xcb\xfc\xc7\x57\xef\xec\xf9\xdf\x14\x76\x57\xcb\x55\x61\x30\xd3\x47\xbd\xac\x9e\x23\xf7\x72\xcc\xf2\xf3\x38\xcd\x28\xea\xe5\x98\x74\x07\x14\x0e\xf6\xf6\x9b\x60\x49\xc1\x19\xc2\xa4\x5a\x0d\x79\x7e\x96\x32\x6a\xdd\xd9\x8c\x3a\x10\x7e\x99\xc5\xb3\x96\x5d\xb4\x51\xc8\x98\xe1\xa9\x4e\xb8\x90\xc3\xff\x5c\x8f\x3e\x7e\x14\xdf\xe1\x10\x42\x0d\x63\x1a\x4e\xfe\x39\x9a\x7e\x87\x51\x15\x8a\x8c\x8d\xdb\x42\xff\x4e\xee\x4d\x71\xa4\xfd\x2e\x69\x2e\x25\xda\x38\xb0\xc3\xbc\x84\x92\x20\x44\xd4\x98\x29\x56\x33\xc4\x5b\x8f\x1e\xde\x67\x0f\x70\x59\x46\xcd\x79\xc3\xab\x66\x3f\x6a\x57\x29\x9b\xf5\xe0\x55\x59\x92\x85\x68\xd3\xda\x69\x57\xc6\xf1\xc2\xc1\xcb\xfe\x2c\x96\xb1\x76\x71\xa4\xad\xb6\x46\x30\x3d\xf6\xaa\x03\xa6\xd0\xec\xb2\xf9\x04\x19\xed\xe1\xad\x77\x8a\x4c\x4f\x35\x33\x0b\xfc\x6a\xdd\x18\x4c\x7b\xe2\x56\xb4\xd4\x62\x9e\x7e\xab\x45\x13\x00\xe7\x49\x90\x6a\xfd\x63\xa8\xd4\x51\xde\xaf\x59\xa7\x51\xf4\x34\x16\x69\xd2\x41\xbd\x63\x99\xc7\x61\x0c\x3e\x6f\x12\x7d\x12\x2f\x88\x20\x73\x1a\x16\x54\xf6\x8f\xb5\x43\x08\x22\xa8\xec\x17\x7c\x41\x8a\x20\xe8\x6e\xff\x33\x9c\xc4\x5b\x7f\x4d\xd5\xcf\xc7\xd9\xc7\xde\xc7\xad\x8f\xfd\xe9\x77\x11\x1e\x7f\xdc\xfe\xb8\x6d\x89\xae\xf0\x28\xb4\x2f\xce\x61\x63\x4f\x40\xf9\x71\xbb\xa7\xc9\x5a\x4f\x3b\xa8\xf1\x88\xd6\x76\x4f\x93\x23\x59\x86\x05\x11\x38\x12\xc0\xa1\xa7\xfd\x7c\xc9\xb2\x50\xf6\xb5\xe6\x62\x9d\x7d\x21\x6f\x8b\x70\x0e\xbe\xec\x20\x00\x99\x7d\x38\x64\x5c\xeb\xf3\x69\x75\x57\x92\xf6\xa5\x3e\xb6\x51\x69\x9f\x48\xda\xcf\x33\x50\x9c\x16\x32\x96\x2c\x39\x8d\xb3\x13\xe6\x73\x1b\xda\xbd\xfb\x7d\xb5\x76\xfa\x90\x0f\x82\x9a\x05\x41\x08\xf7\xf1\xc6\x3a\x6e\xbd\x4e\x1d\x1f\x03\x5e\xc0\x07\x26\xbf\x4b\xaa\x64\x66\x10\x6a\x02\x61\x6c\xf1\x05\xe9\xb0\x9f\x6f\x4d\x5e\x1b\x62\x3c\xcd\x3a\xe9\x78\x63\xdd\x99\x18\x77\xab\xb2\xf2\x9d\x13\xfa\xfc\x9f\x0d\x05\xf5\x31\x43\x98\x34\x6d\x04\x33\x5f\x74\x17\x41\x34\xb9\x37\x45\x5f\xf2\xf4\x5c\x15\x2c\x8e\x85\xe4\x70\xc3\xdf\x70\x7d\x48\xf8\x66\xb6\xac\x07\xbe\x2e\x74\x2c\x9e\x09\x9b\x06\x41\x21\x1c\x6c\x86\x9f\xd0\x81\x8b\x8d\xa3\xd8\x4a\x24\x98\xdc\xd2\x94\x42\x07\x41\x86\x42\x63\xf5\x13\x4d\xa6\xd8\x4a\x1b\x26\x7c\x8a\x23\xf7\xa5\x87\x48\x07\xf5\x78\xc4\xc1\xaf\x4b\x8e\xa3\xbc\x0c\xd3\x7e\xeb\x68\x85\x58\x53\x0c\x35\x34\x60\x8c\x5b\xb1\x95\x6a\x5d\x05\x01\x92\xec\x0a\xae\x63\xea\x1f\xc6\xd5\x1c\x45\xd5\xe3\x3b\x76\x25\x89\x9e\xd8\xc8\xce\xb0\x79\x57\x9f\x5c\x1a\xe4\xb3\x96\x99\x99\x63\xed\x88\xe1\x6e\xa3\xb4\x1c\x75\x9b\xd2\x3c\x3d\xe7\xdc\x9a\xa4\x1a\xe3\x66\x76\x08\x00\x47\xe0\x89\x5e\x71\x18\xda\xe6\x72\x2c\x43\x8e\x23\x16\x26\x22\x44\x86\x0e\x74\xe6\x71\xba\x60\x33\x1d\x7e\xb8\x66\xb1\xd9\xb3\xc5\x88\x85\xae\x7d\xe8\x71\xcb\x6d\x13\x8e\x71\xa9\x28\x15\xc9\xad\x66\x56\x59\x02\xfe\xc7\xc7\x39\x97\x35\xa4\x57\x7c\x4e\xad\x5a\xc8\xa2\xf8\x3d\x49\xd0\xfe\xde\xeb\x83\x83\xdd\xa7\xaf\xdf\xbe\xdb\x7f\x86\x40\x36\x9c\x5a\x19\xa9\x82\x06\x66\x99\x35\x86\x1d\x20\x1d\x30\x79\x99\xf3\x33\xcd\xd6\x2a\x38\xd0\xba\xaa\xb4\x2e\x6c\x17\xe8\x86\x72\x24\x32\x5f\x3a\xf9\x1c\x8c\x19\xcd\x6b\x0f\x9d\x8b\x0e\xbb\x4a\x18\x9b\xb1\x19\x1a\xb9\x74\xa8\xe5\x95\x3e\x15\x40\xc8\x9d\xd6\x2f\x98\x40\xdb\xd8\x6d\xbd\x2a\xc9\x8d\x0c\x82\xd5\x52\x99\x0b\xb2\xa4\xa1\xec\xab\x49\xd9\xe3\x4c\xb1\xa0\x69\xbc\x10\xeb\xb5\x10\xe1\x1c\xe3\x20\x90\xfd\x2b\xc1\xe7\x7b\xb0\x00\xd4\x89\x62\xbc\x00\x5a\x12\x36\xd3\xb1\x51\x1c\x1c\x2d\x83\x20\xcc\x27\xfa\xb3\xc6\x71\xf5\x79\x4a\x97\x3a\xba\x91\x60\xd2\x4c\x8c\xfe\x08\xd4\x22\x08\x3c\x4a\x90\x37\x2f\x29\x9c\x9a\x47\x16\x04\xf5\xb3\x81\x39\x0d\x7a\x2b\x7e\xec\xb6\x27\x36\x55\xd8\xde\xa8\x0d\xc2\xea\x94\x96\x31\x71\x17\xd6\x9b\x03\x80\xd7\xeb\x30\x6d\x26\xd2\x6e\x77\x33\x23\xa9\xaf\x4b\x70\x6c\x97\xd6\x92\x1a\x2b\xb7\x92\xa3\xa9\xf1\xf8\x24\x20\x96\x28\x6d\x42\x01\x89\x02\x6b\x13\xbd\xca\x7e\x9e\x3d\xcb\x2f\xb3\x45\x1e\xcf\xde\xf0\xfc\x84\x33\x21\x82\x20\xed\xc7\xb3\xd9\xfe\x05\xcb\xa4\x15\x8b\x80\x14\x02\xbe\x22\xd2\x56\xa6\x55\x4a\xab\x32\xbe\x5f\x36\x41\x17\x90\x52\x3d\x7d\xb1\xae\x3a\x08\xac\x83\x41\x24\x6c\x01\xa6\xe4\xa0\x9e\x51\xbd\x2a\xde\x17\x94\x90\x5b\xac\xc3\x83\x20\x4c\xfb\xb0\x80\x15\x31\x57\x27\x4a\xbb\x5e\xb1\xa7\x55\xab\x03\x56\x41\x3a\x51\x73\x9e\xcd\xc2\x4c\x4b\x00\x96\x82\xae\xea\x7c\x4a\xf4\xe5\xd0\xa5\xc8\x93\x2e\x9e\x0a\x8d\x83\xdd\x26\xc2\x60\xc0\xd9\x5a\x52\x93\x23\xd2\xa2\x89\x46\x22\x65\x9a\x5d\x99\x09\x72\x21\xe8\x2a\x9e\xc5\x4b\xc9\x78\x14\xb6\x5e\x9f\xd7\x19\xa9\xf5\xba\xd2\xa6\x13\x41\xe0\x54\x1b\x8c\xb0\x49\x6b\x37\xdc\xa4\x75\xa5\x85\x46\xa9\x00\x9f\xd1\x33\x41\x15\xe6\xce\xd4\xcc\xf0\x38\x13\x6a\x00\x4c\x25\xd1\xa4\x95\x03\x8a\x15\xa9\x41\xbb\x49\xc2\x96\x12\x61\xa2\x5f\x6b\x3d\x33\x6b\xca\xf1\x8a\x12\xaf\xd7\xd5\xa5\xa2\x53\xc0\x31\x89\xcd\x77\xad\x79\x51\xbd\x3f\x4f\x17\xcc\xcb\xbd\xc8\x8f\xe1\x86\x31\x6a\x42\x34\x5a\x31\x63\xab\x08\x13\xb5\x5e\x91\x4a\x3c\x0e\x4f\xa1\xc9\x5f\x1f\xb7\xb6\x90\x73\x88\x5b\x2b\xbd\x9b\xd5\xe6\x8d\x66\x1b\x54\xb5\xa0\x37\x80\x6c\xde\x7a\x46\xb2\x9c\xfa\x83\x6f\xb6\xf2\x49\x83\xf1\xd9\x54\xd2\x01\x02\x63\xee\x51\xc1\xe7\x7c\x25\xbe\x97\x78\x55\x5d\x64\x4e\x89\xd9\x35\xa2\x01\xa9\x93\xea\x08\x7d\x38\x7c\xfb\x7c\xeb\xdd\xeb\x5f\xf6\x0f\x10\xa9\xd3\xe9\x08\x7d\xd8\xf2\xbf\x9e\xc7\x57\x66\x96\x5f\x82\x74\x26\xda\x1a\x92\xfa\xce\xdf\x7a\x9d\xff\x84\xee\x0c\x06\x41\x20\x1f\xdf\x1b\x0c\xca\x72\x74\x21\xec\x81\x82\xae\x92\xfc\xfc\x3c\xcf\xc0\x56\x89\x2d\x65\xb4\x31\x76\xa4\xa3\x18\x9e\xed\xe5\x22\x4e\x33\xd2\xf9\x6e\xfb\x3b\x54\x96\xfe\x0d\xf4\x04\x69\x12\xaf\x0d\x8b\x10\xd1\xd6\xb3\xd3\x86\x37\x34\x57\xe1\x44\x4e\xe9\xaa\x34\x24\xbf\x82\xb1\xd4\xb2\xa3\x65\x01\xbf\x6a\xf4\x6e\x07\xf1\xa6\xe8\x83\x66\x4a\xb8\x04\x67\x5d\x70\xd8\xb9\x16\xf4\x42\x54\xa4\x02\xf0\x6c\x75\x2b\xa5\x03\xaa\xfe\x62\xee\xbc\x67\x84\x9a\x16\x9c\xb4\x1e\xd7\x00\x1e\x71\x47\xb1\xea\x50\x06\x17\x15\xfa\xac\x46\x0f\x8a\xd0\x9c\xda\xdc\x67\x85\xb1\x8d\x45\xed\x83\x71\x3d\x71\x49\x7d\x3d\x25\x06\xac\xeb\xb4\x39\xae\x4c\xeb\xe9\xf8\xcb\x73\x41\xda\x46\x97\x20\x5d\x4b\x6d\x98\x19\x5e\x59\xa1\xad\xab\x97\x4d\xd5\x64\xa9\x13\xa3\x26\x8d\xeb\xf5\xb5\xb0\xcf\x38\x94\x1b\x9e\x3c\x58\x63\xc0\x98\x1b\x18\xfd\x44\x58\xfb\xc0\xe8\x05\x87\x09\x2b\x71\xab\x3d\xf4\x8b\x42\x3b\x30\x34\x50\x83\x80\xb9\x1d\x5a\x71\x65\xee\xc5\xab\xae\x96\x44\xbc\xf7\xdb\x1a\xa0\x30\xd3\x59\xe1\x00\x5d\xd1\x57\xeb\xe4\xb8\x29\x2d\x67\x14\xee\xa8\xf4\xed\x15\x5d\x95\x24\xa3\x13\x54\xf0\x05\x22\x48\x4f\x15\x0c\x36\xc4\xfe\x26\x48\x35\x01\x4d\x49\x4e\x27\xc8\xd4\x6e\x24\xaf\x56\xba\x89\xa6\x24\xa5\x13\x64\xce\xca\x88\x18\x48\x4d\xd4\xa9\x27\xe9\x36\xbb\x7a\xaa\x53\xaa\xca\xa6\xc9\x0d\x22\xa8\xc1\x22\xa9\x8a\xf5\xfc\x81\xe4\xb4\xe2\x72\x10\x41\x75\xca\x64\x12\x2a\x72\x84\x08\x6a\x32\x13\x90\xd4\xe4\x65\xb4\x04\xb7\x46\xa9\x10\xc4\xc4\xf7\x08\x95\xce\xf3\x96\xcd\x52\xce\x12\xa9\x5e\x4f\xa5\x5c\x82\x64\xd5\x3c\x0b\xfb\xe2\xad\x59\x44\x90\xc8\x93\x33\x26\xdf\xc4\xf2\x14\xd5\xb4\x69\xb2\x06\xc1\xb0\x9b\x33\xd3\xca\x18\x5c\xd1\x0d\xf5\x8c\x1b\xd4\xc7\x67\x70\x33\xa3\x43\x63\xb6\x14\x36\xc9\xa6\x78\x0c\x5a\xd6\x6f\x8a\xbe\xd3\x2d\x0b\xe5\x24\x9b\x12\xf8\x18\x79\xd5\x64\x53\x9d\x55\x3d\xd5\x77\xa6\x5b\xc0\x78\x10\x24\xa8\x9e\x81\x13\x52\x6a\x6f\x4d\xfc\x86\xa6\xf5\x86\xde\x54\xf3\xad\xf0\x46\x5a\xe4\x93\xd9\x83\x72\xee\x8e\xcc\x29\x26\x49\xcd\xfe\x99\xe1\x4d\x83\x65\x47\x0e\x41\x7f\x27\x76\x07\x75\xe0\xe2\x47\x9b\x0a\x26\xc9\xbf\xa1\xc9\x84\x7b\x0c\xe0\xa5\x70\xa2\x3b\x63\x02\x20\xec\x3d\x76\x9a\x49\xc6\xd5\x26\x96\xab\x7d\xcd\x1e\x9d\x33\x76\xd9\x79\x57\x10\x77\x38\xd7\xef\x65\x79\x29\xfc\xdb\x6e\x73\x8b\xe4\xf7\x73\x73\xab\x1f\x87\xb2\x16\xef\x5f\xad\x7e\xdc\x2f\xf8\xc2\x4b\x1d\x4c\x23\x70\x78\xb7\x2a\x49\x28\xe9\xb1\x08\x6b\x4d\x25\x12\x63\x43\xc7\xc7\x96\xa0\x53\x4f\x10\xe5\x9d\x9c\xa2\x5a\xc1\xcd\x42\x2d\x5f\x9b\x00\x6c\x5e\xd8\x0c\x46\xfa\xf0\x3b\x39\x11\x86\x51\x9f\x12\x4e\x9b\xf6\x86\x52\x87\x80\xda\x18\x4e\x3b\x40\x2d\x36\xd5\xe0\x64\xc9\x45\xd5\xed\x3b\xad\x2a\x38\x87\x69\xad\x2a\xad\x4f\xd4\x02\xd3\x90\xe3\x1b\x80\x6a\x59\xf8\x8d\x10\x47\x2e\x40\x27\xe6\x94\xeb\x6d\x88\xd9\xc8\x10\xc4\x3d\x55\x11\x5d\x4b\x52\x9b\xf3\x13\x26\xdf\xf3\xb4\x6d\xa7\x6f\x9d\x37\xf2\x56\x6d\xed\x05\x5f\xdc\x2a\x1c\xdc\xbc\x32\xf9\x0a\x66\x89\x20\xe3\xe4\xaf\xc9\xf3\xf8\xed\x55\xd4\xab\x2e\x24\xf6\x75\xdb\xcc\xfc\x84\x8e\x9b\xe0\x80\x82\x2b\x8d\x01\x91\x24\x05\x5f\x80\xd6\xe7\xff\x86\xf5\xba\xad\x19\x24\xfb\x42\x43\xb2\xb6\x86\x68\x3f\x77\xdc\x37\x93\x39\x14\xf4\xd2\xe3\xde\xf6\xab\x75\x6e\x6e\x64\xa9\x2c\xf7\x45\xcb\x49\x6a\xf3\x42\x17\xed\xc1\x7e\x81\x7a\xa1\x5f\x7e\x8c\x22\xeb\x44\xcd\x5e\xf8\xc2\xf4\xd4\x80\x56\x4a\x6d\xb4\x3b\x80\x76\xbd\x16\x74\xdf\x6b\xd7\x91\xb0\x27\x01\x77\x58\xef\x7a\x67\x01\xa7\x78\x50\x39\xf9\x46\xec\x8a\x25\x85\xcc\x79\xe7\xbc\x10\xb2\x73\xcc\x3a\xb1\xbb\xeb\xee\x23\xdd\x79\x36\xd2\xae\x2d\xf5\x72\xa4\xed\x37\x03\x6a\x51\x50\x69\xc7\x8b\x6b\x77\x77\xb2\x41\x9c\xfb\x9c\xc5\x42\x31\x8f\xa1\x7d\x04\x68\xaf\x35\xd7\xe4\x12\xb5\x27\x83\xa3\xda\x78\x36\x98\xe1\x86\xe8\xda\xcc\x2e\x14\xd6\xdd\xf4\x52\x4a\x72\x24\xfa\x42\xfb\x58\x6b\xde\xa9\x9a\xf5\xb7\x92\x6a\xfb\x06\xf2\x7b\x24\xea\xfc\xa2\xa4\xa0\x8f\xac\x77\xf9\x48\x1a\xfb\xff\x4f\x82\x1e\x79\x03\x7f\x25\xea\x4a\x38\x87\x42\x47\xbc\xde\x2f\xc2\xc3\x16\x52\x4e\x98\xbf\x1d\x69\x35\xea\x90\x13\x3f\x2b\x61\xb0\x12\xdc\x37\xa6\x76\x1a\x55\xc1\xae\xa0\x57\x22\xbc\x16\x78\xb4\x2b\xfa\xa0\x45\x40\x0f\x05\xd9\x15\xe6\x92\xb7\x8d\x64\x5c\x89\xf0\x58\x84\xbb\x75\x4a\x5f\xaa\x32\x1a\x17\xe9\x6b\x51\xbd\x00\x23\x43\x3f\x41\x4a\x2a\x4c\x86\x17\x85\x7a\x8d\x17\x8b\x36\xf0\x96\x4e\x5b\x43\x89\x5d\xd1\x17\x4b\xce\xe2\xd9\x97\x0c\xf2\x1b\xe6\x60\x26\x14\x8a\x19\xe1\x33\x41\x77\x05\x79\xa3\x7e\x47\x67\xae\xe9\xf4\x8d\x80\xaf\x2f\x05\x3d\x13\xe4\xad\xd8\x94\x61\xd4\x0d\x9b\xc8\x9e\xa0\x20\x01\xb0\x92\x00\xf2\x4e\xd0\x16\xe3\x36\x49\x27\x53\xc2\xe8\x60\xc4\x1e\xef\x3c\x78\x38\xea\xf5\x18\x96\xe6\x02\xf1\x2e\xea\x85\x21\x7b\x3c\x7c\x38\x46\x03\x04\x91\x36\x58\x2d\x06\x39\xae\xdf\xd1\x54\x2a\x34\x65\x88\xc9\x41\x93\x2f\xaf\xd4\xad\xe0\x94\x00\x27\x57\xdd\x07\xe7\x60\x44\x4f\x24\x0c\x07\x8e\x80\x73\x1f\x8c\xb2\xc7\xce\xf8\xab\xd7\xcb\xf0\xcd\x2c\x89\xb7\xa1\xbc\x10\x74\x05\x1a\x70\xef\x72\x63\x79\x73\x20\x48\x2c\x44\x7a\x92\x45\xad\x72\x9b\x06\x7f\xc5\xd9\xac\x48\x6a\x6b\xdc\x27\xec\x13\xae\xd8\x23\x3e\x25\xb2\xc4\x44\x6a\x5f\x1f\xc7\x69\xc6\x5a\x41\xfb\x0e\x57\x99\xf1\x0b\x12\x27\xb2\x26\x0e\xa8\xf4\x27\x27\xab\xfc\xf8\x53\xb4\xca\x23\xa9\x3d\xcf\x45\x28\x47\xa5\xe2\x08\x26\x53\x33\x18\xcc\x1f\x0c\x67\xea\x06\xec\x1a\x78\x73\xc8\x8f\x3f\x4d\x72\x85\x14\xcb\x29\x89\x6b\x7c\x23\x30\x92\x83\x51\x52\xc5\x8f\xec\xf5\x12\x6b\x35\x1d\x4f\x92\x29\x11\x34\x9d\x14\xd3\xd1\x86\xf5\x84\x70\xe6\x67\xc2\x18\x5e\x73\xc7\x61\x0a\x0c\xc7\x3c\xad\xbb\xad\x1a\x9f\xea\x86\x17\xa5\x75\x84\x13\x8a\xca\x39\x4b\xb3\xd7\xa3\x2a\x96\xf8\xc8\x8b\xf4\x0d\x01\x4c\x39\x65\xd0\x1b\xa6\x7b\x33\x4a\xe7\xe1\x1e\xf8\x93\x59\x55\x16\x1c\x13\x75\x74\x1b\x8c\xf2\xca\xfc\xb2\xd7\xcb\x2b\x1c\xe1\x93\x7c\x1a\x04\x99\x6e\x86\x7a\x51\xdc\x89\x07\x93\x66\x65\x59\x86\x0c\xb4\xaa\xf5\x45\xf5\x86\x49\x87\xbd\xf2\xad\xee\x35\x7b\xdb\x27\x04\x75\x10\xdc\x59\xa2\x54\xe4\x5b\x8f\x1e\x3d\xf8\x61\x6b\x08\xda\x12\x56\xa3\x34\xf3\x0c\x1b\x26\x83\xad\x1f\xe2\xad\xf9\x74\xb5\x53\x6e\x9f\xa4\xa4\xc8\x98\x48\xe2\x25\xab\x29\x23\xb7\xdc\x92\x67\x78\xc3\x39\x45\x56\x96\x44\xcb\xdf\x36\x9a\x69\xcc\x6c\xed\x70\x36\xac\x24\xa8\x8e\x2a\x23\xc0\xf5\x91\xcf\x39\x67\x54\xbb\x43\xba\x51\x12\x2a\x71\x64\x19\xee\x9a\xad\x66\xe6\xf9\xcc\x27\x37\x8d\x82\xee\x68\x98\xf9\x66\x1e\x85\x1b\x8e\xfb\x30\x1c\x2d\x67\x18\x74\x77\xe7\xe1\xdd\x9d\x7b\xa8\xe7\x62\x45\x5a\x3b\x85\x1d\x4c\x86\x0f\x71\x0f\xdd\xbd\xf7\x14\xa9\x0d\xb7\xc2\x7f\x84\x48\x4a\x07\xa3\xf4\x71\x56\x21\x82\x53\xe1\xc8\x40\x77\x65\x2f\x9f\xb1\x5d\x75\x9e\x1a\xdd\x7f\xa0\x0e\x49\xeb\xf5\xfd\x87\xfa\xef\x0f\xe6\x7d\xb8\x63\x12\xe2\x27\xf4\xfe\xa3\x20\x88\x1f\xd3\x07\xdf\xc3\xdb\xc3\x07\xf0\xf6\xc3\x00\xde\x7e\xf8\x1e\xde\x86\x3b\x3b\xe3\xbc\x67\xa0\x03\xe4\x28\x7e\x3c\xdc\x79\xa4\x12\xdf\x89\x49\x3c\x8d\xe2\xc7\x3b\x83\xfb\xf6\x7d\xf8\xc3\xce\x3a\x7e\xf2\xe4\xe1\xb4\xa7\x5e\x76\x1e\xad\x1f\xde\x0b\x20\xcf\x83\x07\x3b\x3f\x3c\x04\xc0\x0f\xbe\xbf\x77\xff\xbe\xc9\xbe\xb3\x73\x5f\x65\x1f\xee\xb8\xfc\xaa\x70\xf0\xf0\x5e\xa3\x7c\x98\xf6\xe8\x90\xc4\xf4\xe1\x83\x07\xf7\x1e\xf6\xc2\x70\x38\xd8\xb9\x17\xc4\xf8\xf1\xe3\xe1\x60\x0d\xcf\x8d\xde\x63\x62\xe0\xdf\x1f\x00\xfc\x47\x3e\xfc\xe1\x8e\x5f\x41\x6b\x85\x6e\x2d\xe7\xb7\x9a\xb0\x6a\x7b\x84\x4d\x3b\x5f\x1c\x04\xdd\x6e\xd8\x30\x63\xfd\xdb\xf6\xa9\x60\x57\xa8\xf5\x50\x6e\xb3\x66\xd4\x39\xbe\x46\xe2\xaf\xc8\xf8\x79\x7c\x7d\xcc\x5e\xd5\x1c\x83\x98\x0b\xf0\x3d\x01\x71\x11\xab\x1d\xcc\x91\x63\x59\x99\x7d\xd3\x21\x36\x04\xcf\x48\x10\xbc\x1d\xc9\x79\x3e\x82\x7a\x9a\x76\x70\x86\x5f\x87\x50\x91\x35\x3b\xf9\x8d\xe1\xe3\xb6\x39\x0c\x63\x43\x74\x79\x15\x62\xbe\xcb\x5a\x46\xdc\x5a\x4c\x4d\x18\xe1\xd3\x51\x08\x97\x40\xb5\xcd\x77\xbd\xce\x14\x03\x93\x5f\xbe\xb1\x63\x23\xf0\x7a\xdd\x7d\x6b\x14\x68\x9b\x03\x47\x38\xdc\x8d\xa8\x0d\x90\x76\x07\x0e\x1b\x20\xd2\xe9\x17\x1a\xe0\xb6\x42\x13\xe2\x2d\xa7\x4e\xcf\x0b\xba\x14\x04\x5d\xa0\xf0\x41\x10\xe6\xf4\x40\x80\xe1\x1c\x26\xe6\x13\x7c\x19\x87\xbc\xe5\x58\xca\x49\x0e\xe3\x62\x9b\xcc\x48\x8e\xad\xf1\x13\x9b\xe4\xd3\x51\xda\x62\x39\x98\x06\x01\xbf\xc1\xa0\x30\x9f\x52\x19\xa6\x30\x29\x91\x1b\x65\xed\x36\x02\x3e\xaa\x03\x12\x61\xce\x6f\x1a\xec\xae\xbc\x85\x6b\x60\x95\x03\x1f\xb5\xf9\xd8\xbe\xfa\xcd\xb4\xb5\xa9\x3f\x24\x85\x0a\x55\x42\x0a\xf2\xd6\x1c\x97\x25\x79\x2f\x0c\xa9\xad\x31\xd3\x40\x4e\xc9\x2b\x41\x8d\x85\xdd\x1d\x41\x57\x6f\x9f\xef\x0d\xbf\xbf\xf7\x28\x42\xe6\x01\x91\xb7\xcf\xf7\xee\xfd\xf0\xe8\x21\xa4\xa8\x07\x54\x92\x67\x82\xbe\x10\x7d\xcd\x0b\x85\x2b\xeb\xae\xe1\x8e\xe8\x9b\x2c\x04\xf4\xfc\xa5\x64\x5c\x44\x0e\x62\x0b\x37\xfb\x5e\x58\xcb\xf9\x57\x02\xec\xfb\x4a\x57\x5b\x4b\xee\x2a\xf8\x55\x59\x92\x3b\x02\x93\xe7\x5f\xe6\x5f\x9f\x0a\xba\x3a\xe6\x71\x72\xc6\x64\xfb\xed\x49\x0f\x4d\xa6\x08\x38\xaa\xf3\x18\x1c\x2c\x9f\xc7\x88\xa4\xd9\x2c\x4d\x6a\x4e\xa3\x7c\x7b\xb3\x1e\x9a\xa0\x1e\xeb\x21\x55\x8e\xb3\x25\x8b\x65\x2b\xe4\xb2\x24\x9f\x9b\xdc\xf3\x8f\x36\xa1\x6a\xb0\xc2\x0c\xf2\x57\x93\xcf\xfd\x51\x18\xae\x5e\x92\xcf\x0a\x75\xc7\x2c\x02\x47\x7b\xe4\x37\x41\x41\x97\xcd\xa7\x41\xce\x0c\x90\xfc\x24\xe8\x33\xc7\xec\x93\x0f\x70\xe9\x39\xfb\xb5\x60\xfc\xfa\x0d\x67\xf3\xf4\x2a\xea\x0e\x09\x2c\xd3\x67\xb9\x14\xea\xc5\x5c\x9e\x45\x48\xdf\x9e\xd9\xf7\x43\x96\xc9\x34\x63\x0b\xed\xc3\x7e\x91\x9e\xa7\x92\xf1\x08\x05\xc8\xb2\x0e\x60\x77\xa0\x9e\x78\xf4\x42\xf4\xf5\xa3\x49\xf9\x0d\x1c\x6e\xbd\xce\x16\xd7\xaa\xb4\xc6\x84\xe8\x27\x51\xe1\x44\xf4\x4c\xf4\x2b\x04\x99\xfc\x24\xa6\x6e\xc0\xbb\x43\x22\xac\xc0\xe5\x06\x9b\xf6\xce\x6f\xa2\xa2\xb6\xe2\x2c\x5d\x1e\x14\x8b\x85\x2e\x29\x79\x9a\x48\xf5\xfa\x53\x9c\xcd\x16\xe0\x43\x7f\x58\x92\x5f\xaa\xb1\xb5\x64\xd2\x8f\xd3\x41\xe6\x64\x41\x96\xc4\x28\xcc\xcd\xc8\x05\xd5\x54\x73\xf3\xbe\x3e\x19\x5f\xd0\x24\xe4\xe4\x02\x47\x17\xbe\x19\xb9\x6a\xe8\xf8\x82\xce\xc3\x0b\x6c\x31\x48\x5f\x94\x7f\x16\xe1\x85\xa2\x43\x17\x6a\xb5\xd8\x8d\x21\xbc\x68\x8d\x55\x23\x37\x20\xce\xc1\x03\x41\x89\x6d\x08\x62\x82\xb0\x0e\x10\x08\xbe\x7d\x40\xa5\xca\xd2\xf9\x38\x08\xba\xcb\x71\x1c\x72\xf2\xc1\x4e\x06\x27\xa7\x04\x9d\xb1\x6b\x84\x23\x3e\xba\x30\xa1\xad\x9b\x62\xcf\x70\x46\x2f\xf0\x7a\xbd\xe1\x6e\x60\xb6\x5e\xbb\xe0\x25\xb5\xc4\x26\xf3\x07\x19\xd3\x93\x34\x93\xb5\xb4\x17\xa2\xda\x67\x2f\x5c\xc0\xe1\x78\x3c\x59\x84\xcb\x31\x8f\x6e\x68\xa8\x36\x48\x5d\x84\x71\x78\xd1\xf8\x0c\xde\x96\x10\xc6\xd3\x68\xb2\x08\xb9\xcd\x67\x3d\x0a\x61\xac\x15\x22\xaf\xc9\x39\xb8\x9e\x9b\x57\xee\x81\x2e\x6c\xdd\xe7\x2a\xf9\xb3\x08\x13\x8c\xaf\x69\x52\x59\xed\x9e\xd4\x4e\x37\x17\x78\x74\x4d\x8b\xf1\x49\x5f\xe4\x5c\x86\x05\x8e\x4e\x9c\xa1\xb7\xf6\x71\x74\x5d\x31\x86\xc7\x1a\x61\x2e\xe9\xf5\xe4\x78\x4a\x0e\xe9\xc5\xe4\x12\xea\xee\xa6\x2e\x80\xfb\xa1\xce\xb2\x4f\x01\x11\xc6\x6d\x1e\xa1\xc6\x6a\xe3\xb9\xc4\x11\x8f\x78\x2f\x14\x63\xd4\x47\xbd\xcb\x48\xd1\x97\x4b\x45\x5f\xf0\xe8\x2f\x11\x9e\x13\x19\x1e\x92\xfd\x1b\xb0\x16\x3b\x75\xe9\xf3\x92\xfc\x21\xe8\xc6\x56\xdb\xa4\x88\x75\x82\xd4\xd0\xfe\x31\xee\xfd\x24\xc9\x69\xe3\x72\xbc\xeb\x0c\xdd\x3e\x88\x91\xf3\xc3\x42\xa5\x9d\xa6\x20\xa8\x0e\xd5\x55\x5a\x9b\x20\xcd\x7e\x6d\x17\xa8\xed\xeb\x8f\x60\x07\x2a\xf3\x1b\x24\x6a\x26\xb4\x96\x60\x72\xbd\xfe\x20\xec\x73\x2d\xe2\xac\xcb\x11\x04\x86\xb6\x35\x12\xbd\xe3\x86\xff\xa5\xbd\x55\xef\x4e\x59\xc7\x64\xe8\x68\x79\xae\x13\xf8\xb1\x54\x9e\x32\xde\x81\x3a\x48\xa7\x82\x4a\x3a\x39\xef\x54\x7a\x26\x56\xb0\x57\x91\xe7\x46\x73\x35\x45\xd4\x63\xfd\xdc\x90\xb8\x1a\xa1\x24\x2e\x4f\x7b\x1b\xdf\x67\x67\x59\x7e\x99\x75\x74\x26\xdb\xcc\x25\xcf\x2f\xd2\x19\x9b\xa9\xb1\xe3\xae\x9a\x52\x9f\xe8\xea\x84\x98\xab\x73\xf0\x07\x61\x2e\x86\x46\xd6\xd9\x45\x9b\xe2\x92\xce\xb2\x5e\x7f\x16\xa1\x7d\xd1\x01\xd2\xa9\x7b\x25\xcd\xad\x67\x93\xa2\xc8\x7e\x3d\xcb\xb8\x99\x10\x7d\x10\x8d\x14\x6f\xf7\xaa\x3c\x12\xf5\x5d\xe2\xf8\x83\xe8\x7b\xfb\x5b\xd7\xfb\xe4\xb6\x3a\xb6\xb1\xc9\xb5\xb5\xac\x91\x67\xbc\x91\x12\x55\x88\x67\x93\xbc\xad\xd2\x6b\x9c\x4b\x54\x8d\xab\x72\x78\x1f\xec\xa6\xda\xd6\x0e\xfd\x69\x6c\x1f\xa2\x0f\x8d\xdd\x96\x47\xad\x13\x64\x3e\xba\x72\x3c\xf2\x28\xea\xc6\x3e\x7d\x73\xc5\x55\xa6\xf1\x66\x52\x05\xb3\x4a\x23\x7a\xfa\xa3\xdc\xdb\xef\xb3\xc6\xa6\xde\xda\xe2\x5a\x96\x71\xe3\x5d\xd5\x54\x4b\xf0\x76\xfe\xb6\xc6\xbb\xaf\x63\xef\x19\x80\xd8\x17\xa2\x48\xfc\x0d\x2d\xc9\xb9\x1c\xeb\x3f\x5a\x5d\xb8\x85\xb1\x68\xad\x74\x23\xdb\xb8\x2d\x11\x9a\xb1\x91\x0a\x22\xa4\x51\x4b\x7b\x72\xb3\xa0\xc6\x19\x0d\x07\xc4\xbe\xe1\x10\x21\xc5\xe8\x7f\x16\xa1\x4b\x0a\x82\x90\x53\xf7\xa6\x6d\x04\x48\x6c\xb6\xc4\x8d\x13\x55\xa6\xb7\x29\xc5\xa9\x18\xca\x8e\xd0\x28\xd5\x62\x55\x10\x7b\x3e\xd7\x74\x24\xcd\x3a\x4f\xc5\xb8\x96\x16\x31\x45\x3f\x35\xcb\x86\xd2\xac\xc3\xc6\xac\x6f\x5e\xc7\x2e\x3d\x42\x9a\x37\x46\x91\x4b\x1a\x69\x4f\x76\x4f\xc5\x24\x9d\x8e\xf8\x7a\x1d\xd6\x7d\x72\x67\xe0\x9f\x42\x0d\x7b\x10\x70\xbd\x05\xeb\xd7\x4a\x46\x53\xd0\xc1\xa8\xf0\xe5\x74\xc6\x96\x5c\x50\x3e\x29\xa6\xa3\xbc\x9a\x5f\x2d\x6d\x54\xbd\x9b\x88\xe9\x7a\xfd\x97\x08\x63\xf2\x8b\x08\xd5\x1b\x11\x24\x51\x15\x6d\xcc\x01\xf1\xca\x93\xdc\x2e\xbd\xdc\x2d\x21\xad\x3b\x6e\x06\xd8\x34\x95\xe4\x1e\x89\xc9\x1b\x48\x9a\x57\xe4\xd5\xc1\xf3\x96\x4a\xee\x36\x1d\xe3\x00\xd6\x1a\xd5\xe4\x15\x6d\xc0\x64\x41\xc1\x26\x27\x6f\x12\x4b\xf0\xa8\xe1\x42\x5d\xe7\x4d\x62\x14\x04\x4d\xc1\xa2\xcb\x32\x5e\xf4\xa8\xda\x14\x1f\x51\x2d\x24\x1b\x0e\x06\x83\x7b\x77\xef\x3d\x0d\x50\x54\x7d\xd9\xdf\xb9\xfb\xc3\xde\xdd\x1f\xee\x05\xa8\x72\xcd\xf8\x64\x30\x5e\xf4\xe6\x10\x91\x87\xfc\xdc\x66\xf0\x49\x52\xbc\xd2\xae\x49\xbc\xcb\x6a\xa3\x96\xe0\x8e\xe9\xf5\x39\x77\xa0\x83\x20\x8c\x29\xeb\xa1\x31\xea\xfd\xa1\x91\x81\x8f\x5f\x8a\x89\x9c\x86\x31\xe1\x24\xc5\x11\x5c\xab\x82\x63\x57\x9b\x9c\xe2\xc8\x3e\xfe\x21\xc2\x1c\x93\x14\x97\xe4\x57\xb1\x71\x4d\x45\xd8\x66\x54\xfb\x81\xc7\xb1\xf8\x57\xfc\xe3\xda\x7d\xff\xaa\x04\x11\xf2\x1d\x6d\x22\x35\x76\x4f\x10\xc1\x5b\x7d\x30\x3a\xf4\x39\x45\xdb\xf1\x32\xdd\xbe\x18\x6c\x5b\x57\xcf\xdb\x0d\xc7\xd0\x29\x5d\x95\x24\xf6\x8c\x32\x2a\x85\x89\xfe\x71\x3e\xbb\x06\x67\x2a\xfa\xd1\xd3\xb7\xd5\x09\xe3\x86\xda\x92\x67\xfe\xfc\x2a\x15\x22\xcd\x4e\x3a\x36\x8e\x4c\xa7\x03\x17\xd7\x4c\x11\xde\x8e\x2a\x8b\x30\x8e\x42\xd6\xbf\x03\xb1\x4e\xdf\xd8\x6f\x22\x08\x6a\xf7\x15\x1b\xdf\xdb\x7c\xac\x2b\xf6\x04\x34\x6d\x36\x72\x4f\x24\xa8\x92\xfd\x2c\x42\x73\xe7\xcc\x7b\x39\x91\xc0\xaf\x42\x70\xf8\xdf\x85\x76\xa4\x2e\x96\x31\x38\xd1\x1d\x80\xa5\x04\x8b\x56\xc6\x1c\x42\x6b\xf9\x57\x9e\xb5\xe1\xa0\xea\xc2\xe5\x94\x25\x81\x00\x01\x5c\xb8\x02\x6d\x47\x28\x63\xd0\x50\x92\x9a\x93\xee\xf6\xac\x5e\x5d\x00\xbc\xee\xfb\xbc\xad\x8c\x19\x2e\xed\x4f\xda\x8b\xf0\x81\x35\xa9\x0a\xdb\x85\x05\xf5\x98\x18\x30\xa1\xb5\x94\xb1\xec\xa7\x33\xb0\x6f\x5c\xb0\xbd\xfc\x7c\x19\x73\x16\xb2\x3e\x44\x49\xab\x67\xdc\xc8\xd3\x08\xb6\x01\xbe\x97\x63\x68\x81\x88\x56\x8b\x3c\x9e\xed\x35\x47\x4a\xb5\x2b\x1c\x10\x09\x4a\x88\xa9\xc4\x21\x7a\xf9\x7a\xf7\xd9\xd1\xde\xeb\x83\xe7\x2f\x7e\x44\x70\xb3\x54\x0d\x4b\xdb\x10\xcc\x8b\xb0\x28\xfa\xe7\x31\x3f\xab\xba\xdb\x61\xa1\x3b\x38\x38\xf7\xdd\x45\xff\x92\xc7\xcb\xfa\x4d\x30\x5c\xd5\x8c\xb0\x71\x35\x0a\xed\xbf\xa0\xac\x9f\xb1\x2b\xa9\x9d\x8d\x76\x06\xce\x59\x28\xb5\x6d\x04\xb7\x8d\xb3\x54\x80\xee\x02\xd1\xb9\xe9\x3d\xa2\xd8\x52\x26\x93\x53\xe7\x8d\x5e\x7b\x15\xed\xdc\x8b\x78\x88\x0e\xf7\xdf\x1d\xbd\x38\x78\xf1\xee\xc5\xee\xcb\x17\x7f\xee\x3f\x43\xa4\x3b\x30\x9f\xef\x47\xe0\x7b\x94\x65\x33\xe7\x97\x94\xf5\x85\xcc\x97\x21\x04\xe0\x80\x51\xc4\x21\x2e\x49\x0d\xf8\xff\x66\x24\xf4\x59\xed\x3f\x3d\x1e\x7f\x0a\xe0\xb8\x79\x9e\xcb\x1f\xf5\xfa\xc0\x76\x8c\xee\x93\x5f\x45\xb8\xb2\xd4\x2a\xef\xbb\x68\xe8\x70\x90\xd2\x31\xee\x88\x22\x0f\x6a\x75\xb9\xe1\xd9\x19\x0c\x29\xa5\x61\x4a\x59\x5f\xb0\x4c\x62\x63\x2b\x34\x0e\x63\x9a\x82\xa6\x65\x15\xd7\xc6\x0c\xf4\xee\xde\xde\xeb\xf7\x07\xef\x0e\x11\x89\xd7\xeb\xc9\x14\xe3\x28\x0b\x91\x38\xcd\x2f\x8d\xed\x0c\x22\x2b\xe3\xbb\xe2\xb9\x36\x49\x92\x79\x07\x46\xb7\x63\x21\xf5\x11\x18\xe0\xd7\xed\xa5\x8c\x5d\x95\x8d\x17\x52\x92\x95\xea\x24\x04\x21\xd6\x6d\x7d\xf8\x95\x53\x59\x92\xf3\x42\xc6\x66\x55\x78\xe8\xde\x0c\x71\xe8\xbc\x10\x94\xa4\x81\x3f\x1b\x39\x3d\xd2\x61\xb3\xdb\x51\xd8\xc8\x6b\x3b\x49\x59\xe9\x3b\x54\xfb\x13\x14\x1e\x5e\xde\xa0\x88\x55\xd4\x8d\x46\xe1\x4c\xe8\x6d\x08\x56\x95\xb8\x66\xae\x69\x0d\xa1\x75\x80\xb4\x3e\x28\x64\x8c\x38\x5c\xab\xb6\xe6\xa7\x2e\xf6\x60\x25\x4f\xf7\xe4\xf0\x86\x23\x91\xf3\x66\xe8\x34\x44\xd2\x99\x8b\x54\xa4\xde\x92\x3c\x8b\xc0\x6e\x6e\xeb\x22\x89\xf9\x0c\x19\xb7\x92\xfb\xb3\x54\xe6\x5c\x91\x71\xd0\xc1\xd0\x7e\x48\x26\x53\xbb\xf9\xad\xe2\xe5\xf2\x45\x36\xcf\x23\x39\x27\x3c\x2f\x24\x13\xd1\xc4\xd4\x54\xc1\x5e\xc6\xf2\x34\x42\xdb\xf5\xb8\x1b\xf1\x72\x19\xe5\x45\x59\x4e\x49\x16\x5f\xbc\x90\xec\xbc\x2a\xb9\x5b\x6b\xd5\xab\x58\x02\x33\x16\xc9\x79\x5f\xbd\xeb\x7a\xa2\x1b\x6b\x71\x57\xec\xf3\x7e\x3a\x23\x68\x1b\x61\x55\x89\x90\x39\x67\xd1\xef\x02\x74\x99\xfe\xbf\xff\x3f\x00\x00\xff\xff\x54\x06\xa5\xc7\xd6\x76\x01\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\xfd\xdb\x72\x1b\xb9\x96\x30\x08\x5f\xff\xdf\x53\x90\xb9\xbd\xb3\x81\xcd\x25\x8a\x94\xab\x5c\x55\x49\xc3\x6c\xd9\x96\x0f\x65\x59\xb2\x2d\xdb\x65\x17\xcd\x56\xa4\x48\x50\x84\x4d\x02\x34\x12\x94\x2c\x33\xb3\xa3\xba\xff\x39\x3f\xc2\xdc\xcc\xdc\xce\xd5\xc4\x5c\xcc\x0b\x7c\x4f\xf0\xf5\x23\x4c\xcd\x8b\x4c\xe0\x94\x27\x26\x5d\xb5\xbb\xa3\x23\x14\x62\x26\x12\xc7\x85\x85\x75\xc2\xc2\xc2\x94\xce\x18\xa7\x08\xcd\xd6\x7c\xa2\x98\xe0\x08\x6f\x82\x75\x42\x5b\x89\x92\x6c\xa2\x82\xc1\x55\x2c\x5b\x8a\x04\x6b\x6e\x33\x4e\x83\x36\x51\x37\x2b\x2a\x66\xad\xcb\x85\xb8\x88\x17\xaf\xe7\x2c\x19\x16\x8f\x51\x53\xce\x6b\xc6\xa7\xe2\x7a\x68\x7f\x1a\x73\xd8\x0a\x5c\x3d\x8d\x39\x12\xba\x98\x0d\xf5\xbf\x68\x93\x0d\x7c\x67\x5b\x14\x29\xa0\x78\x23\xa9\x5a\x4b\xde\x52\x88\x92\x0d\xfd\xb2\x12\x52\x25\xd1\x26\xcb\x80\x76\xdd\x1b\x2e\x1e\x33\x3d\x22\x49\xca\x43\x56\x78\xa3\x13\x29\xd9\x4e\x39\xbd\xf8\x48\x27\xaa\xbb\x92\x42\x09\xdd\x13\x90\x84\x76\xe7\x71\x72\x7a\xcd\x5f\x48\xb1\xa2\x52\xdd\x00\x27\x81\x2f\x18\x10\xdf\xdf\xb3\x9b\xe5\x85\x58\x0c\xed\x4f\xb4\xc9\x40\x10\xde\x65\x8a\xca\x58\x09\x99\xa6\xc1\x3f\xfe\xa3\x7f\x09\x80\x11\xde\x8d\x93\x1b\x3e\x79\x5a\xfe\x5e\x49\x09\x20\x26\xbc\xab\xc4\x99\x92\x8c\x5f\xbe\x8e\x2f\x4d\x96\xd2\x7b\x50\x00\x65\xa2\x81\x02\x12\xb8\x1d\x84\x20\x34\x0c\x69\x31\x84\x16\xe3\x89\x8a\xf9\x44\xf7\x72\x36\xa4\xd1\x0c\x98\x1f\xe6\x44\xd2\x58\x51\x24\x8a\xcc\x58\xb7\x4b\xaf\x5b\x47\x88\xa7\xe9\x68\x8c\x07\x0e\xd4\xac\x7b\xce\xf8\x95\xf8\x54\x86\x99\x6e\xd4\x36\xc9\x49\x90\xac\x93\x15\xe5\x53\x3a\x3d\x53\xb1\x54\x81\x2f\x97\xe7\x16\xc0\xf0\x86\xcd\x50\x40\xbf\xd0\xc9\x5a\x31\x7e\x19\x10\x42\x38\x56\x73\x29\xae\x5b\xa6\x49\x29\x85\x44\xc1\x63\xca\x2d\x08\x5a\x2c\x69\xc5\x0b\x49\xe3\xe9\x4d\x4b\xae\x39\xd7\x45\xf0\x40\x57\x31\x11\xcb\xd5\x82\x2a\x3a\xb5\x55\x98\x6a\x4d\x3d\xfa\x5d\xb8\x2a\x99\xef\xc2\x39\xc2\xd9\x4c\x48\x24\xbb\x4b\xaa\xe6\x62\x4a\x04\xc8\x6e\x2c\x2f\x09\x1b\x0c\x6c\xf7\x63\x22\xbb\x53\xba\xa0\x97\xb1\xa2\xba\x81\xd8\x26\x4f\xc8\x05\x8a\x41\x9a\x36\x27\xa6\x95\x09\x21\x24\xc1\x13\xc1\x15\xe3\x6b\xea\x1b\x98\x64\x99\xee\x01\xa7\x5f\x94\xee\x80\x6f\x07\xcb\x6e\x42\xb9\x22\xb2\x7b\xee\x7e\x63\x79\x39\xa0\x8b\x84\xb6\x2a\x1d\xce\xf3\x9b\x71\xd4\xe0\x58\x86\x11\x29\x0d\xdc\x0e\x61\x20\xbb\x53\x96\xac\x62\x35\x99\x1f\x7d\x99\xd0\x95\x81\xb4\xf9\x82\x33\xdd\x50\x60\x7b\x58\x6e\x25\x0c\x65\x37\xbe\x90\xeb\x95\x42\xfe\xab\xad\x0b\x0f\x38\x29\x4d\x8e\x21\x04\x33\xb2\x76\xd3\x6c\xe0\xce\x85\x5c\xc6\x0b\x5d\xdb\xac\x6b\x90\x45\xf7\x98\x6b\xe0\x09\x4e\x87\xa5\xde\x45\xc5\x30\xde\x33\xba\x98\x06\x30\x33\x10\x6f\x80\xde\xe6\x2a\x5e\xac\x69\x64\xbe\x83\xae\x27\xb2\xd5\x65\x59\x01\x21\xdb\x5a\x18\xa2\x3a\x08\xdc\x84\xba\x9c\x6e\x5a\x67\x76\xfc\x59\x86\x14\x48\x88\x31\xb0\x2c\x5f\x2a\x7e\x38\x1b\x25\x6f\x1c\x15\xd9\xe8\xba\x23\x3f\x36\x88\xe5\x65\xa4\xba\x93\x78\xb1\x40\x3a\x63\x96\x4d\x34\x74\x35\x81\xa8\x64\x77\x2d\x9a\xdc\x59\x96\xa9\xee\xb5\x8c\x57\x64\x62\xa0\x96\x90\x32\xc9\x9a\x21\xbc\x29\x3a\xb0\xa8\xbc\xcd\xf5\x9b\x2e\xb2\xd2\x45\x56\x23\x31\x26\x25\xba\xec\xa9\xdc\x9c\x25\x99\xa9\x78\xea\xd7\xed\x25\x55\x2f\xfc\x8a\x3d\x9d\xc1\x15\x99\x86\xe1\x14\x4d\xd1\x29\x1a\x8d\x31\xc6\x83\xab\x30\xbc\x6a\x13\x4d\x07\xa4\x1d\xca\x15\x08\x1c\x86\x68\x45\xae\xb0\xa9\xe9\x86\xcc\x8b\x35\x4f\x66\xa5\xe7\x2a\x65\x58\xe1\x62\x20\x4b\x0d\x84\x91\x45\x73\xf0\x00\xf0\x38\x34\xee\xce\x84\x3c\x8a\x27\xf3\x12\x99\xa5\x78\xa3\x46\x74\x5c\xa1\xb2\xa5\x31\x79\x8a\x82\x28\x28\x9c\x65\x18\x17\x70\xb9\xb4\x64\xde\x90\x96\x41\x39\x2f\xa9\xd2\x93\xbc\x40\x5c\x80\x4b\x93\x92\x32\xb1\xe7\x10\xe3\x4d\x3b\xcf\x69\x4a\x42\x0c\x13\x5b\x7d\xa2\x31\x7c\x24\xc6\xa0\x80\x59\x24\xb7\x03\x6b\x13\x92\x38\x1c\xb7\x0b\x21\x31\x08\xba\x20\xb3\xae\x41\x58\xbf\xf6\x17\x61\x18\x08\x03\xb2\x82\x15\x2c\x72\xb0\x2f\x20\x38\x3f\x8f\xaf\x63\xa6\x02\x3c\xa4\x5d\x49\x13\xb1\xb8\xa2\x68\xd1\x75\xa9\xb8\xab\xe6\x94\x57\x39\x13\x77\x94\x04\x94\xe9\x65\x86\xa1\xfe\xd9\x81\xde\x7f\xc7\x51\xa9\xe6\xa6\x1a\x5d\x97\x89\x82\x18\xcd\xb6\x2a\xf4\x60\xdb\xae\x37\x9b\xa0\xc4\xae\x25\x03\x33\x0d\x48\x9d\xea\x0b\x10\x3e\xe4\xb6\xb5\x18\x62\x1c\xc5\x08\x67\xc5\x0c\x5e\x14\x33\x28\x89\xca\x19\xe1\x88\xba\x35\x3b\xd6\xb0\xbe\x12\x6c\xda\xea\x69\xe2\x64\x28\x09\xcd\x89\x30\xe1\xeb\xc5\x02\x0a\x02\x40\xcb\x24\xb2\xa8\xad\x6b\xbb\x12\x86\x88\xe6\xa4\xc0\xd3\x34\x6a\x68\x81\x6d\x01\x6c\x6f\x9a\x2a\xc4\x6e\x34\xc9\x80\xd6\xa9\x89\xad\x41\xa3\xd3\xeb\x9b\x15\x75\xdc\xe9\xf5\x9c\xb6\x7c\xf3\xad\xa9\xa0\x49\x8b\x0b\xd5\x5a\x49\x71\xc5\xa6\xb4\x15\xb7\xfe\xc1\x14\xfe\x87\x96\xad\x2b\xc8\xa1\x65\xc5\x10\x4e\xd6\x48\x42\x31\x00\xdb\x46\x19\xef\x34\xbd\xb7\x78\xe7\x0a\xee\xea\x96\x41\xc7\x3a\xc4\x92\x81\x15\x00\xb8\x65\x0e\xb6\x06\x31\x14\x96\x40\x23\x3a\x52\x1a\x53\xd6\x0b\x75\x12\x2f\xe9\x98\x08\x8b\x18\x40\xbb\x1a\xe3\x88\x32\x3f\xc7\x62\x92\xaf\xea\x76\x01\xa9\x0a\x90\x2d\x82\x96\x41\x8c\xb7\xfb\x82\x23\x11\xa1\x3f\x07\xd5\x1c\xa2\xb6\x77\x9a\xf3\x6b\xb0\xc6\xbc\xe5\xd6\x56\x53\xf5\x05\xb2\x5d\x17\xf2\x9b\x26\xec\xc7\x62\x12\xa9\x51\x6f\x9c\x0d\xfa\x2d\xc6\x5b\xca\x74\xdd\x90\xf1\x63\x31\x21\x6a\xd4\x1f\x63\x38\x28\xbe\xcc\x18\x8f\x17\x8b\x1b\xfb\xed\x60\xac\x7b\x38\x53\x54\xda\xf7\xdb\x63\x0c\x86\x00\x29\x79\x73\xc4\x95\x64\x34\xe9\xae\xd6\xc9\x1c\xd1\x52\xfb\x67\x45\xfb\xaa\xeb\x18\x14\x13\x3c\x4d\x37\xd9\x80\x9a\xd9\x24\x39\x7f\xd1\xa3\x50\xb4\x65\xc0\x00\xe5\xdc\x84\x16\x15\x1e\xe9\x0a\x6b\xcd\x92\x91\x1f\x5b\x20\x85\x50\x41\x36\x06\x95\x13\xdd\x6b\xd3\x49\xd7\x55\x49\x13\xaa\x50\xbb\x57\xea\xe1\xa9\xae\x50\xaf\x9d\xbc\x9f\x23\x61\x96\x60\x09\xcf\x0c\xc5\x52\x16\x19\xb7\xe5\x5b\x8b\x1c\x3e\xb7\xd2\xb9\xda\x2c\x39\x89\x4f\x90\xea\x2e\x28\xbf\x54\x73\xec\x65\xc1\xbd\x3e\x30\x52\x12\xd9\xf1\x46\x8b\x5f\x83\x4e\x87\xdf\xf5\x79\x07\x98\xcd\x90\x23\x92\x0a\x38\x2e\x7a\xe1\x48\xd5\x88\xeb\x89\xd0\x68\x4b\xda\x7d\xc8\xc9\xad\xff\xee\xd6\xb5\xcf\xd1\x03\x9a\x15\x92\xaa\x41\x66\x96\xb9\xa5\xb7\xd1\xaf\xd1\x79\x89\x36\x9d\xe7\xcc\xc2\x09\x1f\xae\x36\x23\x7d\xb4\x7b\xbe\x60\x6b\x51\x62\x8b\x37\xdd\x89\xe0\x89\x92\xeb\x89\x12\x92\xcc\x61\x5e\x79\x5f\xc0\x7c\x14\x8f\xc9\xc2\x48\x63\x8b\xf8\x46\x2f\x2f\x52\x48\xb2\x8f\x3c\x34\xf5\xd2\x4f\xb6\x92\x1b\xd4\x90\xa6\x09\x08\x43\x55\x6e\xd4\x8d\xb7\xdd\xd6\x82\x11\x25\x84\x2c\xd2\xb4\xa1\x49\x42\x88\x26\xac\x45\xbf\xd2\x94\x76\x79\xbc\xa4\x18\x67\xa0\xba\xcb\x58\x7e\x6a\x62\xd0\x4e\x0c\x48\x2a\x82\xc6\xb0\x31\x15\x29\x98\xe3\x08\xa9\xee\xf9\xb9\x81\xd7\xf9\x39\x99\x43\x6c\xd6\x57\x9a\x22\xa5\x01\xd3\xd0\x2f\x8c\x41\xed\x14\x3b\x6e\x30\x28\xdd\xbb\xd8\x48\x55\xdb\xdd\xdb\x38\xfe\xa9\x65\x2f\x58\xa2\xcb\xb2\xfe\x52\x7a\x19\xb1\x9d\xf2\x14\xa8\xee\x61\x59\xdf\x22\x7a\x31\x1a\x0d\xac\x28\x61\x74\x2a\x30\x82\x46\xce\xa9\x58\x18\x22\x46\x5e\x48\xb1\x64\x09\xb5\xb2\x94\x55\x98\x2e\xd1\xc4\x17\xc0\x5a\x94\xf0\x8d\x35\x4d\x38\x92\x78\x18\x47\xb1\x41\x54\xd4\xc4\xb1\xf3\xc2\x86\x6e\x2b\x8b\xf4\x79\x01\xcd\x84\x61\xa9\x81\x74\x53\x05\x6e\x00\x37\xdf\x10\x21\xe1\x26\xd7\x27\xb7\xb3\x04\x23\x4b\x69\x5b\x79\x65\xe3\x40\x03\xe9\x13\xbd\x49\x1a\xf0\x73\x34\x1e\xe8\x35\x6d\xd8\xbb\x99\x69\x4c\x2d\x59\x94\xb8\x58\xaa\x92\x5e\x51\x99\x50\x84\x21\x5f\x7a\xd2\x13\x03\x9a\x13\x02\x47\x34\x68\x77\x25\x56\xc8\x50\x1f\x6e\x6b\x74\xf5\x48\xb7\xe4\x39\xc8\x9c\x1e\xc8\x2c\xff\xe8\x09\x80\xcc\x74\x77\x4d\xd6\x84\x9c\xc2\x51\x09\xb7\x36\xa5\x55\x13\x1d\x81\x21\x8f\x51\x79\x4c\x9a\x30\x6a\xc2\xb9\x92\xf4\x8a\xf4\x2c\x11\x35\x44\xc4\x3d\x1b\xf5\xcd\x8a\xa1\xe6\xd1\xd1\x0b\x93\xe2\xbb\x64\x5f\x2a\x2c\xca\x24\x55\x59\xa6\x49\x2a\x09\x26\x75\xd6\xe2\xe9\xf9\x19\x86\xb6\xc2\x1e\xc4\xd4\x00\x44\x13\xf8\x40\x59\xe9\x65\x32\x8f\xe5\xa1\x42\x3d\x9c\x8b\x9a\xfa\x33\x50\x1c\x86\x8e\x2a\x77\x68\x37\x59\xb0\x09\x45\x7d\xac\x25\x7f\xfd\x59\xcb\xe2\x8e\x5b\x67\x90\x28\xb1\x8a\x4a\x68\x50\x1a\x4c\xcf\x19\x81\x6a\x9d\x1b\xf5\xc6\x25\x76\x55\x95\x59\x94\x95\x59\xac\xa2\xaa\xca\xd2\x87\xe5\x48\x57\xf1\x22\x83\x2d\x55\xb5\x71\x12\x74\x1f\x7c\x45\x03\xc7\xac\xe6\x2c\x19\x94\x24\x78\x63\xea\x70\xf5\xc7\x8e\xbf\x7a\x85\xcc\x40\x57\x79\x91\x46\x02\xff\x43\xc1\xa5\xdd\xe6\x99\x87\xb4\xa8\x0f\xda\xa1\xe9\x5e\x7f\x20\xee\x91\xde\x60\x6f\x4f\x58\x84\x65\x5b\xd0\x11\x63\x88\x09\xab\x43\xc8\xb0\x6a\x4d\x37\xba\x96\x79\xe3\x42\xdc\xa6\x7c\x6a\xed\x19\xfe\xdb\x5d\x92\x63\xa1\x37\x40\xb8\xc9\x65\x10\x78\xf9\x25\xc0\xb0\x2e\x25\x17\xc2\x8b\xad\x6b\x12\x86\xeb\x2a\x42\xdf\x65\xb9\xec\x53\x34\x5e\xa4\x41\xbb\x67\x0a\x96\xf3\x17\x95\x96\x4b\x94\x52\x33\x6f\xc5\x98\xfc\xdd\x6d\x99\xa2\xba\x50\x7b\xbd\x6d\xfb\x51\xf2\xa6\x95\xa8\x58\xd1\x25\xe5\xaa\x75\xcd\xd4\x5c\xac\x55\xcb\x14\x6f\x09\xd9\x72\x3d\x08\xfe\x1d\x1d\xce\xb2\x0c\xac\xd9\x23\x2a\x1b\xb0\x2c\x35\xb2\x14\x68\xe7\xcc\x73\x3b\xf3\xb9\x79\xad\x3e\xf3\xdc\x48\x52\x62\x7b\x16\xf3\xc5\x29\xaa\x13\x15\x86\x45\xe7\x45\xb9\x9b\x0e\xb5\xc4\xe0\x42\xd2\xf8\x53\x96\x69\x6e\x13\x98\x67\xb3\xc8\xd2\x34\xf0\xd6\x13\xf3\x8e\xc3\xb0\xc0\x1d\x1a\x86\xf4\x2e\x29\x8f\xda\xb0\x2a\x4d\x89\x3c\x9f\x62\xc3\x32\x7e\x46\x9b\x5c\x66\x72\x8b\x48\xb9\xe5\x43\x81\x0d\xd1\x2e\xea\x65\xa5\xab\x52\x33\x5a\xd2\x37\x5f\xbc\x69\x06\xc5\x38\x03\xff\x52\x03\xf7\x9f\xa3\x1a\xa5\x31\x9b\x2c\xf5\x81\x9b\xc4\x61\xd1\x1d\x53\x36\x2a\x59\xbb\x5c\x0e\x94\x53\x1f\x92\x53\x5e\x65\x25\xef\xf2\xe8\xbc\xce\x58\x54\x68\x17\x67\x54\xb2\x78\x29\x67\x83\xa2\x8e\x98\xda\x7c\x14\x43\x92\xc1\x8c\x71\x96\xcc\x2b\xd4\x2c\x27\xdd\xbb\xd1\x8a\x5a\xb4\x2a\xb4\xe4\x1a\x5a\x51\x83\x56\xb2\xac\x9f\xe8\x39\x2f\xd3\xd5\x1c\xe2\xb2\x34\xaf\x20\x73\x05\x06\xc3\x19\x92\xba\x8b\x19\x98\x45\xf4\x9f\xd5\x45\x8b\x83\xa6\x7b\x8e\x9d\xcb\x9d\xac\x82\x97\xcc\x2a\x5e\x53\xd5\xbd\xf4\x2c\x5d\x64\xd9\x16\x5d\x60\x0b\xcd\x57\x17\x8e\x12\xc4\x4a\xd1\xe5\x4a\x05\x38\x03\xcf\x70\x8d\x95\x31\xaa\x9b\xa6\xcb\xa0\xca\x59\xf3\xc6\x2b\x9b\x91\x56\x8a\xa0\xd0\x87\x23\x0a\x4e\xff\x8d\x64\x06\xb9\x39\xb7\x84\x29\x7e\xea\xcb\xdc\x43\xc3\x56\x65\x48\xe5\x3b\x0f\x03\x6b\x5a\xbc\xf4\x72\xd4\xab\x35\x57\x6c\x49\x09\x2d\x2c\x89\xb9\x1c\x18\x48\x63\x41\xab\xe7\x6d\x91\x96\x0c\xb0\x56\x31\x33\x8c\x81\x37\x1a\xd0\xb4\x36\xf0\x3c\x56\x73\x42\xf4\xff\x30\x54\x66\xc7\x01\x6d\x19\xa3\x8a\xad\x9a\x30\x2c\x9e\x71\x9a\x36\xe4\xb5\x1b\x36\x61\x68\x7f\x9b\xf3\x24\x74\x31\x0b\x43\xfd\xbf\xf9\xbb\xee\x18\x4e\xd3\xd2\x10\x8b\x49\x08\x30\xc2\x25\xd5\xd0\x28\xb9\xb9\x1d\xb6\xdd\xd6\xa2\x6d\xcd\xda\xaa\xb5\x31\x88\x49\x9b\x55\x36\xac\x5c\x95\x3f\xb4\xbd\xda\x60\x77\x8f\xfc\x06\x0d\xda\x64\xd0\x87\xcd\x65\x59\xca\x2b\x0a\x65\x19\x1e\xf5\xc7\x1a\xb0\x13\xb2\xc9\xb4\x98\x68\x0a\x3d\x4d\x8e\xf8\x7a\x49\x65\x7c\xb1\xa0\xb0\x2e\x19\x5a\x4b\x3b\x3f\x0f\x69\x32\x91\x6c\xa5\x84\x84\x84\x6c\x66\xd1\x3a\x0c\xdb\x13\x4b\xe1\x37\xfd\xe8\x20\x83\x3e\x1e\x6e\xcb\xca\x6b\x2b\x9b\x29\x5c\xd6\xd8\x68\x97\xe6\xcd\x65\xd1\x24\x83\x19\xa9\x12\x4a\xa7\xe8\x14\xb9\xa2\x36\xea\x87\x0a\xc3\x44\xf0\x19\xbb\x5c\xfb\xb4\x03\x9d\x76\x2d\x99\x72\xef\xdf\xe9\x77\xab\x2f\xd0\x2c\x83\x85\x1e\xa3\x17\xfb\x61\xde\x84\x4a\x0b\xaf\xf9\x3b\x81\xf1\x47\xd8\xeb\xe3\x0c\x56\x24\x08\xba\xc9\x6a\xc1\x14\x4c\x49\x13\xfc\xdb\x16\x46\x28\xf8\x1a\xe0\x46\x30\xa2\x9e\x56\x55\x86\xdb\x4d\x06\xb6\x3b\x01\x21\x7a\xaa\x87\x2b\x6f\x07\x08\x02\x1c\xb9\x4a\x15\xce\xdc\x23\x5c\x91\x9a\x98\xa8\x59\x9a\x26\x35\x96\x4c\x94\xcc\x48\x0f\x62\xfe\x0f\x5a\x5c\x58\x2c\x9c\xfd\xad\x25\x78\x2b\xe8\xa8\x42\x1b\xcb\xe0\xa6\x09\x04\x53\x74\x85\x94\xd1\xaa\x1a\xbe\x6e\xa3\xf8\x50\xf7\xa0\x4d\x88\x8a\x9a\xf4\xf4\x0c\x2e\xc9\x16\xd3\x6b\x2f\x75\x03\xb9\xf5\xc4\x90\x53\x30\x94\x91\x86\xe1\x76\x2d\x48\x6a\x86\xe3\xa6\x4d\x0b\xf5\x4b\xb3\xcf\xe2\x26\x2a\xaf\x88\x37\x1b\x6b\x4c\x69\x83\x03\xa7\xb3\x3f\x28\xdc\xfe\x8f\x35\xbf\x6b\x0a\x04\xbf\xa2\x52\x39\xeb\x5d\x4b\x89\xd6\x4a\xb2\x25\x53\xec\x8a\xb6\x4c\xbf\x34\xed\xbe\xd0\xa8\x59\xdb\x5a\xbd\x6e\x5c\x05\xad\x0b\x8f\x21\x14\x67\x70\x46\x44\x77\x2a\x26\x6b\x2d\x23\xc2\x11\x59\xa2\x33\x1c\x86\x4b\x74\xe6\x8c\x07\x47\x0b\x23\x3d\x62\x38\x6d\x9a\xe9\xa3\x61\x2d\x1f\x52\xd8\x6c\x1d\x9f\x93\x76\xac\x95\xa7\xbf\x8b\xd0\x9c\xa2\x60\xca\xae\x02\x0c\x41\x1c\x7c\x8b\xe0\x74\x63\x4d\x6f\x3e\xfe\x21\x55\xf9\xa2\xa9\x4a\x3c\xfc\xb8\x2d\x34\x29\x72\xa3\xb9\x15\x25\x97\x88\x6a\x31\x1a\xce\x71\x41\x3a\x5b\x1f\x2d\x68\x72\xe2\x99\xb1\x19\xba\x36\x69\x7e\xaa\x66\xa8\x9d\x74\x67\x05\x18\x41\x8d\xe8\x18\x67\x19\x1c\xd6\x57\x97\xc5\xd4\xfa\xc4\x5a\x54\x40\x0a\x77\x82\x06\xeb\x6c\x69\x7d\xbd\x68\x06\x15\x7c\xb2\x43\x7b\xb1\xc5\xa4\xd9\x0c\x1d\x56\x87\x76\xa8\x65\x96\xca\xf8\x5e\xb8\xcc\xd5\x11\x06\x97\x54\x05\x8c\xb7\x64\x9a\x06\x89\x7b\xdc\x26\x0a\x87\x93\x09\x4d\x12\x21\x6d\xa7\x93\xf5\x4a\xb3\x69\x3a\xcd\x3b\x1d\x58\x84\xd4\x85\x35\x7f\xd7\x4a\xb2\x33\x39\x60\x50\x59\x06\xc7\x24\x1e\xee\x10\x2c\x3e\x75\x67\x26\x65\x86\xfa\x20\x31\xce\x76\x0a\x20\xa6\x52\x50\x19\xbc\xaa\xe1\xb7\x1e\xe3\x31\x12\x50\x9a\x3e\x89\x37\x62\xa4\xc6\x84\x7a\x81\x88\x66\xf0\x80\x88\x51\x70\x7e\x3e\x11\x92\xee\x7d\x4c\xce\x93\x79\x2c\xe9\xf4\xfc\x3c\x18\xa7\xe9\x2b\xd4\xf4\x01\x36\x19\x86\xd7\xc4\x73\xe1\x7c\x2d\x0f\x8a\xb5\x9e\x7b\x5a\x3c\xe8\x32\x9e\xac\xe8\x44\x9d\x89\xb5\x9c\x68\xf9\xb6\x96\xd2\xb4\x8e\x5e\x7b\x62\x90\x59\xe5\xe2\x04\x9e\xc2\x1b\x78\x4e\x6a\x45\xe1\x16\x11\xdd\x5f\x68\xfc\xe9\x79\xbc\x82\x87\x4d\x66\xcd\x5b\x61\xb8\xcf\x63\x43\x19\x26\x62\x4a\xf7\xbb\x8a\x26\x0a\x3d\x47\xb7\x30\x86\x47\x75\xaf\x8d\x42\xcc\x6a\xa6\x13\x0f\x46\x6a\x9c\xa6\x48\xff\x38\x01\xad\x4d\x08\x1d\xd2\x68\x93\xe1\x0c\xa3\xe0\x8a\xca\x84\x09\x9e\x04\x30\x1a\x63\x6b\xb0\xda\xb8\xb4\x28\xb8\xdd\xbd\xd3\xfd\x3e\x80\xa5\x98\xd2\x28\xb0\xa2\x52\x00\x13\xb1\xba\x91\xec\x72\xae\xa2\xe0\xbf\xfe\x1f\xad\x83\xde\x41\xaf\xf5\x90\x72\x96\xb4\x5e\xac\x93\xf9\xa7\x58\xd2\xab\x16\xfa\xba\x10\x4c\x8a\xc9\xa7\xae\x5c\xe3\x40\x37\x84\xe1\x3e\xe9\xc1\x67\x23\x99\x75\x65\xcc\xa7\x62\x89\x30\x3c\x6e\xe2\x2d\xd6\x5f\x04\x05\x1d\xb7\xc0\x72\x43\xa3\x1a\x06\x41\xa4\x97\x1b\x3e\x0f\x3a\xa8\xd3\xb9\xdf\xf9\x8c\xf3\x69\x44\xb7\xef\xe0\x0c\xbe\x92\x47\x28\xf8\x44\x6f\x92\x00\xc3\xdb\xa6\x49\xfa\x6a\xc1\xa1\x7f\xc8\x63\xcb\xe0\x9e\x90\x4d\x06\xef\x8a\x49\xd1\x3c\xe0\xa1\x95\x54\x9e\x19\x3b\xe6\x3b\x78\x4f\x9e\x69\x0a\x05\x3f\x93\x67\x9a\x3c\xc3\x4b\xf2\xac\x9b\x50\x35\x38\x69\x86\xf9\x4b\x8b\x09\xcf\x0c\x0e\x03\xcd\xe0\x69\x53\x57\xde\xe7\xb9\x70\x9a\x6a\x7a\xfb\xa6\x29\xd7\xcf\x45\xae\xcc\x1a\x0a\x74\xc7\x7e\x21\x6f\x51\x60\xcc\x02\x01\x1e\x3c\x19\xfd\x32\x26\xed\x1e\xec\xe8\xcd\x31\x52\xf0\xcb\xb7\x3a\xa2\xc9\xe2\x2f\x78\xa8\x46\xbf\x8c\xa3\x9d\xfd\xb0\x99\x32\xb3\x67\xf7\x2b\x28\x45\x36\x09\x55\xd1\x09\x68\x0a\xff\x14\xe6\x71\x12\xbd\x01\xca\x67\x42\x4e\x68\xd4\x50\xfc\x8d\x96\x6a\x9e\x6a\xce\x72\x82\x94\x5e\x8a\x99\x2e\xa9\xa8\x7c\x24\x64\x53\xfe\xf2\x8e\xb9\x91\x0c\x06\x96\x0e\x53\x9c\xa6\x48\x92\xa7\x88\x62\x6c\xb4\xa6\x76\xa3\xd8\xf3\x94\x6b\x5d\x2b\x56\xec\x62\x41\x5b\x92\x4e\x28\xbb\xa2\x12\xb4\xe0\xd3\x09\x5a\x92\x7e\x5e\x33\x59\xa2\x77\x2d\x99\x65\x19\x50\xd5\xec\x11\xa5\x0c\x77\x02\xa9\x1f\xdc\x08\x81\x13\x87\x75\x4e\x1e\xb0\x52\x21\xf2\x52\x1c\x1e\xec\x58\x96\xc0\x20\xf7\xa4\x69\x1b\xee\xda\x8e\xbb\x6b\x9e\xc4\x33\x2d\x61\xe7\x29\x85\x88\x0b\x49\x91\xca\xc5\xeb\x58\x5e\x52\xf5\x98\xaa\x41\x03\xd9\x30\x96\x91\xc4\x76\x20\xa7\x64\x34\x4d\xaf\x11\x83\x80\xc7\x4b\x1a\xe0\x34\x3d\xce\x5f\x34\x46\x48\xc4\x70\x37\xb1\x14\x8d\x77\x3f\x0a\xc6\xf3\x1a\xf2\x6a\x35\xad\x08\xcc\xde\x44\x9b\x10\x31\x44\x93\x61\x3b\x09\x43\x4d\xbf\xc3\x10\xad\x49\xbb\x87\x23\xb7\x81\xa7\xd3\x60\x3d\x34\xa4\x9d\x45\xc7\x76\xbc\x18\x47\x79\xd2\x2b\xa4\x13\x32\x8c\x72\x22\x5c\x38\x95\x05\x7e\x21\x07\xb0\x2d\x6e\x34\xc9\x94\x46\x7d\xa3\x46\x91\xf0\x63\x48\xd3\xe7\xf6\x3d\xc3\x86\xe4\x48\x45\x04\x70\xd5\x44\x64\x1a\x2a\x1c\x2a\xb7\xeb\x95\x81\x50\xcd\x4b\x29\x96\x97\x46\xc6\xf2\xf6\x80\xbb\x07\x43\xae\x90\x54\x23\x35\xd6\xaa\x9f\x42\x9a\x4d\xe1\xc8\x24\x84\xa1\xf9\x19\xd1\x71\x9a\x0a\xf3\x2e\xec\x6b\x06\x4c\x59\x3a\x38\xa1\x6c\x01\xb1\x7b\x99\x2d\x84\x90\x30\x69\xea\x6d\xcb\xed\x2a\x92\x8e\xc2\xc3\x5e\x84\xd4\xbd\xde\x30\x56\x11\x53\x58\x73\x1b\x58\xbb\x1a\x96\x8c\x43\xd2\x58\x5e\x17\x58\x2b\x64\x94\x08\xf8\xa9\xd7\xfb\xa1\xff\xd3\x4f\x07\xdf\x7f\xf7\xc3\x77\xbd\x9f\x7e\xea\xe3\xa8\x97\xc1\xcc\xd7\x11\x7f\x81\x45\xa9\xbe\x79\x63\x7d\xd5\xfd\x20\x67\xb8\x00\x46\x6e\x90\xf1\x96\x4b\x14\x62\x7e\x07\x14\x26\x35\x50\x5a\xb3\x89\xe9\x4a\xbe\xfc\xee\xf6\x86\x33\x85\x64\x87\x42\x0f\x47\x0b\x85\xa4\xe6\xfd\xc6\x4d\xc5\x98\x35\xc3\x50\xb6\x89\x74\xdb\x24\xf1\xbd\x89\xd9\x2a\x45\x82\xb0\xd1\xa4\xd3\x19\xe3\x36\x11\x38\xd7\x8d\x8d\x19\x36\xcf\x38\xe9\x74\x4c\x5e\x95\xa6\x93\x16\xe3\x2d\x86\xc3\x90\x8d\x26\x63\xe3\x60\xe1\x81\x93\xa6\x93\x34\xed\x79\x55\x54\x85\xe1\x5e\x3f\xcb\x60\xa5\xc8\x86\xf1\xc9\x62\x3d\xa5\x49\x34\x37\x9b\xc7\xc0\xf8\x94\x7e\x39\x9d\x99\xd7\x3e\xce\xba\xee\x1d\xa6\x75\x7c\x71\xca\x8c\x95\x50\x05\xe9\x01\xf3\xfb\x43\x66\x6f\x88\xe3\xf6\x35\x7a\x02\x12\x87\xe1\x35\xe2\xe6\x97\xe5\x9b\x45\x95\xcd\xa0\x7b\x62\x80\x4d\x16\x42\x47\x42\x0f\x36\x0c\xd1\x3f\xaf\x14\x62\x20\x71\x9a\xe6\x85\x0a\xa7\xc4\x0c\xae\x14\x19\x05\xa5\xfd\x9d\x00\x82\xaa\x4a\x11\x40\xc0\x92\xd2\x6e\x65\x00\x41\x93\xae\x1a\xe8\x35\x79\x2c\x26\xf1\x82\xfa\x95\x59\x5a\xa4\x81\x53\xa6\x82\x31\xdc\x28\x72\x65\xf6\x61\x27\xb1\x42\x81\xed\xb7\xad\xd3\xb6\x10\x60\x58\x2a\x2d\xeb\x36\xca\xfa\x27\xf1\x92\x26\x69\xda\xa4\x82\x2a\xa4\xe0\x46\xf3\x3d\xb8\xdc\x5d\xde\x8a\x0b\x49\x06\x17\x8a\x08\x85\x82\x57\x74\xb6\xd0\x12\x38\x04\xe2\x9a\x3f\x33\xa2\x40\xb5\x76\x4b\xd5\x97\xaa\x6b\xa5\x6c\x0c\x92\x5c\xaa\xee\x2c\x47\xc6\x21\xf5\x63\x91\xfa\x73\x44\x33\xb8\xae\xcf\x6f\xbe\xd3\x47\x2e\x94\xc6\x79\x4e\x3e\x75\x67\x20\xc8\x97\xee\x0c\x18\xe9\x0d\xd8\x5d\xe9\x77\xf3\x58\xa7\x93\xbb\x54\x8e\xd8\x78\xa0\x19\x69\x6c\x0c\x45\x0a\x62\x10\x88\x42\x8c\xf5\x10\xcf\x14\xd9\xff\x4b\xfa\xa1\x20\x89\x1f\xba\xfb\x70\xd4\x88\x58\xe4\x5c\x8d\x4e\xf5\x02\x1a\xe7\x9d\x26\xe4\x8b\x4a\x53\xd9\x26\x1f\x95\x66\x03\xdb\xe4\x8d\x0e\x19\xa2\x38\x6a\xb7\xb5\xbe\x78\xaa\xc8\x91\xea\x5a\x4b\x2e\xfb\xda\x28\xcd\xe6\xda\x4d\x57\xd2\xd5\x22\x9e\x50\x74\xa6\x20\xe8\x06\x5a\xe2\x3a\x16\xd7\x54\x3e\x88\x13\x8a\x70\x06\xe7\xa6\xae\x69\xac\x62\x2d\x47\x7d\x34\x6f\x27\x87\xaf\x9f\xbe\x3d\x22\xc1\x49\x00\x5f\x4c\xc2\x8b\xd3\xe3\xf7\x8f\x9e\x1e\x1f\x93\xe0\x45\x00\x87\x3a\x09\x5e\x28\x03\xad\x4f\x3b\x96\x8e\xf5\x48\x83\xb5\xd6\xba\x0d\xd7\x83\x84\xa8\xae\x95\x41\x61\x46\x54\x57\x4b\x3f\xc6\xd4\x4a\x92\xa1\x88\x66\x43\x31\x5a\x1b\xd9\x7f\xad\xa5\x8b\x08\xd9\xd7\x4d\x86\x4b\x1b\xe1\x7a\xd6\xcc\x4e\xaa\x55\x20\x63\x42\x47\x7c\x0c\x8c\xa8\x32\x6b\x1d\xa2\x09\x79\xa1\xcc\x86\x1a\x0e\xc3\x89\xdb\x68\x96\x3a\x67\xfb\x50\xa1\x64\xc8\xa3\x75\x07\xcd\x86\x41\x37\x88\x82\xbf\x04\xb8\xc3\xad\xd3\xc9\x84\x4e\x71\x18\xe6\x22\xb6\x75\xed\x75\xc0\x8f\x0b\x26\x5d\x38\x7b\x5e\x2b\x14\x6b\x76\x88\x54\x37\x99\xc7\xcb\x34\x65\x9a\x0a\xe8\x47\x1c\x86\xc7\x28\x86\x40\x3f\x07\x46\xff\xa3\xa6\x43\x10\x1b\x29\x10\x8e\x15\x69\xb7\xbf\xb5\x18\x76\x68\xed\x6d\x2f\xb4\x58\x09\xdb\x32\xc9\x57\x8a\x1c\xab\x30\x6c\xdb\x44\xd3\x7e\x18\x06\x89\x79\xab\xfb\x72\x17\x5e\x5a\x0f\x14\x39\x94\x32\xbe\xe9\xb2\xc4\xfc\x36\x2d\xe0\xc0\x7c\x71\x26\xad\x0c\x5e\x37\xb2\x12\x67\xdc\x72\xc6\xa6\x13\xe5\x75\x65\x2d\xc4\xef\xa6\x0a\x57\xba\xc2\xa7\x8a\xc4\xc3\x26\xd5\x9a\xd1\xa4\x66\x2e\xd0\x0b\xbd\xd8\x9e\x07\x4e\x4e\xcc\xb2\x15\x84\xbb\x65\x6a\x56\xad\xb8\xc7\x06\xd8\x6a\xb0\x92\xf0\x11\xeb\x74\xc6\x40\x47\x72\x5c\x56\xe6\xdf\x58\x2a\xe3\xad\x2d\x01\xe4\x8f\xce\x7a\x12\x60\x78\xae\xb4\x78\xfe\xf4\xe8\xfc\xc5\xab\xd3\xd7\xa7\x01\x86\x5b\xaa\xec\x5e\x90\xc1\xc3\x46\x99\xe4\xae\x35\x7a\xdc\x33\x52\xea\xdd\x0f\xfb\xfe\x35\x83\x47\x95\xf2\x5a\x43\xfe\x95\xf8\x66\xbb\x53\xb1\x8c\x19\x0f\x43\xad\xaa\x1c\x4e\xb4\xda\xf8\xce\x9b\x21\xe7\x6a\xb9\x98\xb1\x05\x0d\xca\x66\x02\xb3\x93\x0d\x74\xf0\x48\x91\x5f\x2b\x96\x48\xd5\xbd\x96\x4c\x51\xf4\x50\x21\x2b\xf0\x75\x27\x0b\xa1\x17\xb9\xdf\x73\xee\xae\x62\x49\xb9\xfa\xc5\xd8\xc2\xbb\xb6\x91\x1c\x34\x76\x83\x9f\x66\xe8\x57\x1c\x21\x44\xc9\x29\x0a\xd8\x4c\x1a\xb1\x13\x77\x13\x75\xb3\xc8\x5d\x6e\x48\xc0\x05\xa7\x01\xbc\x51\xdd\x78\xb5\xa2\x7c\xfa\x60\xce\x16\x53\x3d\x1f\xb4\x9b\xc8\x89\x17\xad\x83\x8f\xf1\x55\x6c\x61\x10\x05\x18\x90\x22\x86\x30\xab\xa2\x07\x1e\x04\xb8\x2b\x56\x94\x23\xdd\xe3\x62\x04\x39\x7c\x1e\x39\x94\xaa\x0c\x09\x54\xf7\x51\x09\x23\x34\x03\x73\xf4\x5a\xee\xed\x0d\xb0\x93\x68\x1f\x95\xfc\x71\x46\x57\x6a\x24\xc7\x39\xc5\x7d\xa4\x10\xce\x06\x4f\x46\xcf\xd5\xd8\xbb\x07\xdc\x57\x55\x9f\x9d\x32\xfa\xe6\x94\xcd\x97\xf7\xf6\xd2\x21\xba\x55\x76\xfa\x31\x76\x1f\x69\xd4\xce\x5b\x0a\x2a\x9f\x0c\x7c\xa5\x69\x50\xe1\x48\x12\xdd\x03\xc8\x95\x63\x3a\x94\xd1\x53\x27\x39\xc1\x67\x65\xf8\x1b\x3c\x56\x15\x5b\xf7\x57\x45\xfe\x60\x83\x23\x0c\x77\xf3\xe8\xe1\xee\x4f\xc8\x6d\x8f\x44\xa3\x31\xbc\x35\xac\xba\x49\xf5\x56\x61\x98\xfb\xd4\xd8\x19\x1c\x07\x84\x3c\x56\xde\x6e\x32\x6c\xde\x05\x69\x7d\x36\xb6\xef\xda\x36\x48\xeb\xab\x72\xc6\x79\x9c\x65\x5a\xaf\xfc\xac\xd0\x8d\x21\x22\x19\x3c\x51\xe4\x11\x0a\xae\x3f\x25\x01\x86\x77\x8a\x88\xae\xa5\x5e\xf0\x4c\x91\x57\x6a\xf8\x4e\x45\xef\x54\x18\xbe\x53\x5d\xb7\x9b\x7e\x66\x14\xd1\x34\x7d\x0c\xef\x1b\x49\xd4\x35\x7a\xa2\x8c\x92\x8e\x34\xa1\xbc\x46\xef\xf4\xdb\xf0\x89\x96\xee\xc9\x3b\xfd\x3f\xb2\xcf\xcf\xb4\x02\x68\xe9\x64\xd0\xd1\x82\x85\x49\xce\xe0\x67\x03\x91\xf7\x2a\x83\x97\xca\xc8\x09\xbf\xd8\x9f\x5f\x15\x79\xaf\x50\x50\x3e\xc1\x82\x41\x6d\x1f\x27\xd1\xd4\xf9\x1a\x29\x22\x87\x2a\x2a\x9f\xc3\xf9\x55\xe1\x30\xfc\x45\x93\xc3\x5f\x15\x6c\xaa\x9b\x20\xbd\x7c\xc3\x03\x67\x40\x69\xdd\xa2\xd9\x60\xf3\xda\xd6\xa2\x9b\x0c\x9c\xb9\xe8\x5f\xb1\x70\xca\xed\x4e\xb3\x19\xa2\x54\x23\x73\x81\xa1\x85\xad\x3f\xb9\x66\xce\xae\x37\x89\x13\xda\xea\x45\x75\xbd\xa2\xe4\xef\x65\xcf\x1d\xe0\x6c\x60\xb2\xf6\xb7\xb2\xca\xad\xbc\x20\x7d\xee\x83\xed\xdc\x25\x3f\x99\x22\x3f\x70\x5f\xe2\x76\x53\x09\x10\x8d\x65\x40\xe0\xdc\x31\xb2\xa9\xe7\xf1\x6a\xb5\xb8\xd1\xf2\x9d\xd7\x1a\x35\x6e\x72\x6a\x26\x3d\x59\xd1\x09\xa3\x1a\x41\x05\x6d\x12\x80\x3c\x70\x1f\x68\xdc\xaf\x48\x74\xed\xf2\x86\x44\x49\xcc\xc7\x46\xfc\xb3\x5c\x39\x0c\xdb\x0f\x14\x92\x25\xd1\x67\xb8\x44\x5a\xcb\xb0\xfb\x44\x04\x49\x22\x47\x9c\x1a\x6d\x42\xfa\x7d\xdb\x28\x7f\x02\x4e\xaf\x4b\x9e\xe8\x43\x53\x67\x24\x31\xb2\x84\xa6\x17\x69\x1a\xc3\x28\x19\x8d\x8d\xfe\x01\x71\xd3\xb1\xb1\x3e\x21\x9a\x8d\x1e\xe8\x1f\x4e\x6e\xeb\x1f\x41\xbe\xd3\x3f\x8c\xdc\xd1\x3f\x31\xf9\xde\x38\x70\xb0\xad\x83\x51\x13\x58\x43\x02\xb3\x42\xcc\x5e\xc0\x1c\x56\xe4\xb5\x42\x13\x0c\x57\x64\x8a\x56\x18\x6e\x88\xa4\x48\x67\xbb\x8d\x61\xa9\x35\xce\xab\x5c\xe3\xbc\x24\x3d\xb8\x20\xb3\x34\x15\x14\xae\x09\x1d\x5e\xa0\x09\x2c\x71\x24\xcd\x43\x0f\x3b\x2d\x7f\xb0\xbc\x77\x39\xb8\x74\xfa\x61\x9c\xa6\x97\x5a\x30\xbc\xd2\x10\x99\x93\x1b\xb4\x20\x57\xa3\xcb\x31\x5c\xc2\x0a\x83\xc2\xd8\xb8\x05\x5f\x8f\x2e\xc7\x64\x9e\x1f\x57\x9a\x63\x87\xc6\xca\xa1\xb1\xc7\x9d\x76\xcf\xe2\xd2\xf7\x1e\x97\x16\xf6\xfd\x8e\x7f\xbf\xf4\xd8\xc9\x9c\x8b\xf1\x35\x2c\x0a\x07\xa2\x5c\x99\xed\xe7\x4a\xdd\x70\xaf\x1f\xf1\x34\x15\x43\x11\x5d\x67\x19\x4c\x28\xd9\x38\xb7\xb8\x28\xa6\xa8\x87\x61\x19\xaf\xf4\x53\x1f\xc3\x8c\x2d\x14\x95\xfa\xe5\x00\x43\x22\x96\x54\x3f\xde\xc6\x40\xaf\xa8\xbc\xd1\xcf\xdf\xe9\x3c\x7c\xaa\x1f\xbf\xb7\x8f\x4f\xb5\x16\xab\xdf\xef\xe0\x0c\xd6\x94\x4c\xa8\x77\xba\x83\x84\x6a\x49\x66\xce\xa6\x53\xca\x03\x0c\x33\xea\x28\xd6\x0b\xbf\x77\x15\x60\x58\x18\x13\x59\x42\x15\xcc\xbd\xb1\xcc\xda\xf5\x3c\x35\x0c\x30\xac\x1a\x8e\x11\x4e\x69\x41\x99\xaf\xa8\x91\xaa\x7e\x3e\x3b\x3d\x09\xc0\x99\xa0\xd8\xec\x26\xc0\x70\x43\x8d\x9a\xb0\xa4\x86\x64\x5e\x52\xf2\x56\x33\xb6\x0b\x4a\x92\xee\x0c\xae\xa9\x26\xf4\x56\x56\xd5\x6b\xe9\xcc\xbc\x8b\xd5\x5e\x91\x74\x64\xb3\x98\x1a\xf7\x94\x70\x5f\xf6\x24\xbd\x64\x89\x92\xba\x85\xd3\x52\x25\x26\x87\xcd\x5b\xca\x71\x4e\x0b\x7e\xf2\x51\xf7\xfa\xa5\xdb\x87\xfd\x42\x49\xfb\x23\x4d\xd3\xf6\xc7\xd2\xe1\xc2\xda\x6b\x57\x83\xd8\x48\x38\x70\x48\x49\x1c\x86\xbb\xf6\xd3\xee\x2b\xb4\xa4\x68\x93\x7d\x6b\xe7\x6c\x69\x0d\x5e\x36\x8b\xa5\xf0\x3f\x98\xbd\xb4\x0c\xdb\x1d\xb5\xad\x7d\x19\xeb\x7b\x72\x43\xd1\x8a\x02\xc5\x03\x1e\x86\x4e\xb6\x59\xd1\x11\x1d\xc3\x92\xba\x8c\xc0\xc3\x50\xb5\x09\x59\xd1\x30\x5c\xda\xdc\x9a\x2a\x46\x4b\x0a\x2f\x1a\x29\x14\xb9\xa6\x9a\xe9\xdd\x57\x68\x5a\x1a\x6d\xce\x15\x16\x14\x49\x70\x27\xc3\x1c\x1a\x80\x8a\x2f\x23\x05\x53\xb7\xb9\xc7\x04\xd7\xec\x09\xe2\x34\x45\xb2\x5b\x4a\x25\x14\x83\xcc\xe0\x13\xd5\xdc\xba\x41\x4e\xae\xeb\x26\x2a\x6b\x12\x37\xf2\x5d\xf3\xd2\x59\xcf\x29\xcd\xe0\xb8\x81\xc1\x12\x3b\xee\x63\x8a\xce\xa8\x85\x86\x51\x18\x2c\xec\xdc\x1e\x9c\x1f\x98\xd9\x8a\xbb\x46\xd7\x1a\x3c\x43\x24\x4b\xb6\xda\xa1\xd9\x60\x4c\x28\x0e\x43\x35\x4a\xe8\x78\xc4\xc7\x66\xfb\xcc\x3e\x92\x76\x5f\x4b\x76\xf7\xb5\x8c\x56\xf6\x61\x98\xa1\x1e\xb4\xfb\xe6\xd0\x92\x2f\x9f\xa6\x66\x5a\x12\xbb\x8d\xb6\xd1\x5a\x5a\x51\x4b\x0f\xc3\xa1\xfe\xca\x41\x62\x1c\x2d\xfd\x63\x06\xaf\xea\xd3\x94\x8f\x41\x5a\xc3\x9c\xd1\x7a\x24\xf6\xd6\x8d\xa7\xb4\x6c\x38\x5a\x53\xc4\xa1\x72\x50\x2d\xd6\x5c\xc4\x11\x28\x2d\x56\xa6\xe9\xb1\x43\x16\xb3\x4f\x8a\x8d\x43\xfa\x83\x26\xd2\x7f\x89\x94\xd1\x5a\x25\xb9\xa0\x15\x57\x5c\x6f\x63\x33\xef\x0e\xe8\x06\x94\xc6\x4b\xf7\xda\x40\xdf\xf8\xe6\xb6\x91\x4c\x53\x2d\xf4\xd8\x72\xe6\xd9\x64\x4b\x53\x97\x68\xc1\x3c\x67\x89\x01\x0c\x1d\x6b\xf6\xa7\x95\xcc\x66\x5c\x35\x76\xb8\x62\x2a\xd9\x0c\x49\x83\xeb\xbe\x62\x6e\x2a\x3e\xd3\x0f\xde\x0d\xeb\x86\x1a\x61\xc1\x77\x59\x54\xb3\x4a\xdb\x01\xe9\xa6\x25\x4d\x91\x28\x61\x82\x99\x25\x91\x65\x70\xd2\x08\x1e\x6a\x25\x55\x90\x64\x34\x2e\xc1\x9f\x56\x4f\xa1\x99\xd6\x94\x69\xed\x89\xf9\x95\xd6\xda\xa7\xac\x6d\x3b\x83\xa7\x4d\x95\x5b\x5c\x06\xa9\x5b\xa1\xc3\x33\x1a\xd9\xa6\x78\xb5\x29\x59\x6d\xaa\x9d\xb7\x45\xcd\x3c\xac\xec\x0b\xb7\x0d\x9a\x85\x6e\x1a\xe5\x99\x06\xdd\xb1\x4a\x53\x44\x15\x42\x53\x5a\x56\x4b\x9d\x03\x6a\xab\xb2\xde\xb6\xb7\x66\x2c\x31\x28\x04\xca\xb2\xa5\x12\x3b\x37\xeb\xba\x9d\xbd\x64\x57\xc9\x3f\x8d\x7a\xe3\xa1\x93\x50\xcb\x69\x9e\xbd\x03\x35\xfb\x7b\x20\xab\xbe\x55\x05\xde\x39\xdf\x8d\x33\x3d\x54\x28\x23\x95\x7d\xd6\x13\x6b\xd0\x12\x95\x90\xcc\xac\xe1\x43\x47\x83\xed\xea\xd4\x1a\x47\xee\x33\x1a\x86\x5f\x68\x18\x1e\x3a\xf2\xb9\x25\x92\x27\x54\x45\x32\xc3\xf0\xc2\x1d\xf0\xc4\x7f\x76\xff\xa3\x35\xf7\x1b\x1d\x2a\xbe\xd4\x13\x41\x35\xd5\x85\xa0\xa2\xc0\x04\x8d\x87\x18\x5f\x50\x64\xe0\x60\xb1\x26\xe9\xce\xc8\x03\x0a\x9f\xba\x33\x72\x4c\xe1\x4b\x77\x46\x5e\x53\xd0\xaa\xa2\x61\xab\xe4\x84\xc2\xa5\xfe\x7d\x4a\xe1\x67\xfd\xdb\x5c\xdf\x7b\xe5\x2a\x84\x38\x0c\x35\xcf\x2a\x33\x00\x08\x4a\x94\x3c\xd8\x86\x41\x33\x5f\xcb\xc7\x57\x2a\x9c\x65\x66\x9c\xba\xca\x66\xf3\xf4\x03\x0a\x1b\xbb\x77\x16\xb5\x7b\x19\xc6\x18\x3e\x29\xb4\x71\x01\x14\xda\x3d\xb8\x96\xf1\x4a\xff\x5a\xe3\x5c\xd4\x3e\x56\x90\xcc\xe3\xa5\x7e\xc8\x60\xe3\xc2\x12\x4c\x35\x0b\x5a\x53\x74\xa2\xd0\x39\xad\x9d\x03\x6d\x6f\x2f\x2f\xa9\x9c\xc8\xa2\x99\x96\x7f\x26\x9b\x0c\x0f\xae\x91\x5d\x34\x2f\x95\x7e\xf0\xdc\x59\x83\xd1\xac\xd8\xcc\xad\x5b\xdd\x45\x6b\xd0\x2c\xf8\x62\xa2\x62\x55\xed\x68\x06\x5a\xc0\x8b\xb6\xdb\xcf\x75\xb2\x81\xf1\x67\x39\xa2\x25\x87\x96\x23\xcd\xd1\x1d\xc1\x9f\x52\x54\xf0\x62\xf3\x81\x48\x38\xa5\x23\x39\x26\xd4\x32\xd7\x9b\xfa\xce\x2b\x9b\xa1\xf6\x27\xda\xe4\xe9\xa2\xca\x0a\xa0\xe3\xbe\xae\x03\xa7\x7a\xd0\xbe\x03\xa7\xd4\xe8\xbb\xeb\x84\x5a\x8c\x2c\x4f\xb4\x16\x95\x7a\xf6\x1b\x5b\xae\x16\xb4\xfe\xad\xaf\xa7\xbb\x0c\x1c\x67\xb4\x69\x00\x8e\x9b\xc5\x38\x83\x8d\x35\xb4\x44\x8d\x9b\x75\x25\xd3\xc8\x7d\xe3\xd3\xf4\x8a\x22\xf3\x60\x4c\x24\x55\x5f\x9c\xe8\x98\xc2\x96\x09\xf1\x15\x85\x5d\x6e\x49\xd1\x6b\xfa\xa7\xbb\x9b\x19\x61\xae\x6e\x32\x89\x4e\xea\xb5\x3b\xdb\x6d\xf4\xf4\x4f\x56\x5d\x95\x23\xf5\xba\x45\x7d\x7b\x10\x6a\xd3\x5c\x71\xc3\x6a\x36\xa5\x5e\x2b\x6b\x37\xc1\x70\xe5\x18\xe6\x1b\x4a\xda\x9a\xca\x57\x9b\xb0\xb4\x79\x4a\x51\xee\x27\x34\xd2\xfa\xe4\x38\x68\x93\x2b\x8a\xec\x1e\x68\xb0\xc9\xec\xeb\x26\x8e\x54\x56\x4e\xc8\xe5\x31\xdd\xc7\x41\x79\x7c\x56\xea\xaf\x8d\xee\x0d\xcd\x60\x93\x2b\x02\x5b\x6e\x44\xf9\x19\x05\x10\x64\xa4\xc6\xc0\x48\x7f\x50\xe7\x1a\xf7\xd8\x00\x0b\xcb\xc2\x0a\x0e\xc1\x3a\x9d\xb1\x3d\x52\x45\x28\x20\xeb\x50\x90\x33\x17\xad\x6a\xbb\x35\x50\xe8\xdf\xc6\xe5\xa0\x2e\x56\x34\x9f\x08\x35\x27\x6b\x08\x2f\xc9\x3c\xc6\xe1\x0c\x74\x9d\xc5\x3a\xd5\xf3\x2b\x46\x7d\xbd\x12\xaf\xa8\xb3\x12\x18\xe3\x9e\xd0\x93\x90\x95\xa9\xe9\x68\x46\xc7\x69\x7a\x5c\xa5\xb0\x33\x8d\xab\x25\x05\xc3\xbb\x35\x82\xa2\x86\x2b\xe4\x5a\xd7\x13\xcd\xb6\xbc\x75\xf2\x39\x85\x5b\x14\x1e\x5a\x45\x8b\xc7\x57\xec\xd2\x9e\x8f\x0b\xd6\x09\x95\x87\x97\xc6\x72\x9d\xa6\x41\x00\x8f\xb4\x86\xb3\x92\x62\x42\x93\x04\xee\x53\xf2\x88\x86\xe1\x23\xda\xf5\x8e\x42\xf0\x99\x92\xfb\x34\x0c\xef\xd3\xee\xd5\x8f\x83\xcf\x74\x78\x8b\x12\xf4\x9c\x92\xcf\xd4\x3b\x41\x74\x03\x8c\x47\xbd\x71\xe7\x39\x1d\xf5\xc7\xd1\x43\x6a\xe4\xb9\xe7\x94\x3c\xa4\xdd\xa5\x31\xe2\xed\x1f\x4d\x2f\xe9\x87\x7d\xf4\x61\xda\xc1\xfb\x18\xa7\xa9\xc9\x79\x8f\xfc\xf0\x9d\xe6\xb7\x95\x9c\x0f\xe6\x52\x2c\x4b\x79\xc3\x10\xdd\xa2\xc4\xe4\xb7\xc2\xc2\x63\x4a\x6e\xd1\x30\xec\xdc\xa2\xf0\xb5\x6e\x5a\x79\xdb\xb8\xb3\xf5\x98\xde\x23\xdf\xf7\xd3\xb4\xbd\x8d\xdd\xb4\x90\x92\x10\xad\x1c\x67\xdd\x64\x78\xf4\x95\x36\x1c\x24\xdc\xcc\x84\x88\xfa\x59\x06\xfd\x36\x21\x9a\xfe\xa1\xfb\x42\x2c\x68\xcc\x71\x77\x26\x84\x59\x8e\x4f\xe8\x0e\x07\xc0\x77\x94\x6c\x32\x78\x46\x6b\x22\x8a\x39\xfa\x91\xc1\xfb\x06\x9c\xbb\x46\xef\xca\x04\xf7\x9d\x6e\x70\x40\x0d\x7e\x6e\x32\x2f\xec\x8f\xc6\x7a\x45\x70\xd2\x6e\x6b\x9e\x14\x1c\x3e\x78\x70\x74\x76\x76\xfa\xea\x2c\xc0\x61\x48\xbb\xf9\x2b\x08\xa2\xbf\xf7\xf0\x90\x8e\x7a\xe3\xe8\x19\x85\x89\x49\xe8\xeb\x84\xfe\xd8\x9b\x49\xca\x4d\x91\x76\x5b\x6e\xed\x2d\xe9\xb5\x14\x86\xed\x38\xdf\x83\x77\x42\xdc\xc6\xae\xc2\x68\xaf\x9f\x0d\xf8\xf0\x89\xd6\x1d\xfa\x15\xcd\xc7\x49\x03\xcf\x68\x86\x23\xa5\xd7\x43\x1f\xf2\xf3\xcf\xc2\xc5\x5b\x80\x9f\xad\x3d\xc2\x58\x35\xe0\x25\x25\x6f\x29\x0a\xec\x5b\x80\xe1\x17\x4a\xde\x97\xde\x2b\x54\xc5\x6e\x3e\x81\x59\x26\x65\x82\xfc\x52\x0b\xfd\xbf\x68\xea\xe2\x4c\x25\x4d\x4e\x57\xd4\xaf\xde\x2d\x9a\xd2\x1f\x16\xb4\x24\x07\x92\x5e\xb7\x66\xd4\xbf\x36\xab\x1f\x66\x46\x72\x5f\x77\xb9\x65\x03\xb0\xa3\xb6\x1b\x28\xa5\x5d\x03\x8f\x0c\xfd\x0c\x1c\x65\x57\xb2\x6c\x9d\xa1\x92\xfc\xaa\x87\x6f\x5f\x03\x0c\x52\x5a\x78\xe4\x09\x5c\x12\x2a\xc3\x50\xca\xe1\x28\x0f\x47\xd2\x34\x60\x25\xff\xde\x01\xff\x19\x58\x17\x6d\xb6\x09\x97\x56\xa6\x31\x3d\xe0\xd2\xc1\x4b\x48\xbb\x65\x2e\x6b\xee\xf4\x42\x5a\x5e\x36\xf8\x33\x2c\x36\x4e\x53\x26\x4b\x42\xc1\x4e\xa6\xdd\x28\x26\x08\x89\x6e\x9c\x50\xe0\x3a\x15\xcb\x1d\x11\x9d\x2e\xb5\x4c\x65\x8f\xe2\x0e\xed\x36\x21\x07\xad\xbe\x6b\x45\x5c\x69\xe5\x5c\x66\xdf\xec\xf0\x1f\x77\x31\x69\x3e\x8e\x04\x25\x5f\x12\xeb\x62\x70\xa1\x10\xc7\x60\xb6\xdc\x27\xa4\x37\xf0\xee\x36\xf7\x26\x03\x9c\x73\x33\x24\x89\x40\x1c\xa8\xf7\x93\xc1\x61\x18\x4b\x14\xdb\xe0\x45\x5e\x65\xf1\x83\x9e\xd4\xa7\xe0\x44\xfd\xf9\x29\x98\xe8\xc9\xfd\x44\x6f\x1a\x65\x8c\x13\x55\x48\x18\xa6\xa9\xb5\x24\x9b\x07\x67\x67\xaf\xd6\x0b\x7a\xcc\x12\x15\xf5\xe0\xc1\xd9\xd9\x99\xba\x59\xd0\x87\x74\xb2\x88\x65\x6c\x4c\x43\x26\xf5\xad\x66\x6d\x3e\xd3\x82\x51\xae\x5e\xd1\x89\x72\x09\x0f\x4f\x9f\x57\xdf\xac\x70\x5c\xbc\xbf\x16\x9f\x28\x37\xaf\x7d\x78\x18\xab\xf8\xb5\x8c\x79\x32\xa3\xf2\xa9\xa2\x4b\x97\xeb\x11\xcb\x3b\xf1\xe4\xf5\xf3\xe3\xc3\xc5\xe2\x81\x58\x2c\xe8\xc4\x75\x41\xa7\x6d\x25\x3c\x12\x72\xe9\x36\x7b\x5d\xca\x19\xd5\x39\x8a\xb4\xe7\x74\xca\x62\x57\xed\x73\xb6\xa4\x5a\x94\xb6\x46\xf4\x1e\x68\xe9\x6f\x7a\x22\xa6\xf4\x79\xbc\xd2\xaf\x62\x4a\x5d\x17\x5f\xc4\x4c\x8f\xef\xf3\x9a\x26\x7e\x50\x2f\x16\xeb\x4b\xc6\xf3\x07\x5f\xc7\xd9\xdb\xc7\xc7\x66\xbe\x5d\xb6\xb3\xb7\x8f\x4f\xd6\xcb\x0b\x2a\x8b\xf7\x17\xb1\x9a\x9f\xd1\xcb\x52\x82\x60\x5c\x15\xaf\x15\x58\x9d\xbd\x7d\x6c\x61\x23\xa4\x07\x8c\x75\x56\xbe\xbf\x9e\xcd\x8a\x5a\xf5\x14\x9d\xcd\x29\xf5\xd5\xbc\xa6\x5f\xd4\x6b\x19\x4f\x3e\x3d\xc8\x27\x29\x4f\xf2\xef\x62\x3d\x71\xbd\xcc\xf2\xed\xd6\xc4\x38\x41\xad\xdd\xba\x9a\x49\x22\x46\x89\x1c\xc3\x42\x92\x99\x0c\xc3\x59\x69\xdf\x42\x0b\x6a\x0b\x19\x86\x0b\x59\x50\x12\xc2\x25\xb6\x4e\xe2\x0b\x09\x39\xad\x03\x5e\xf6\x85\x2f\xf2\x6b\xc2\x63\xb6\xbc\xe7\xdb\xab\xda\xcb\x63\x76\x45\x37\x9f\x67\xd0\x59\x9d\x2e\x27\xa1\xca\xbc\xea\xaa\x6d\x71\xe4\xa8\x67\x38\x9a\xf7\x70\x5f\xc9\x6f\x04\x0f\xfc\x73\x01\xff\xfe\x38\xa4\xe0\xc6\xc5\xc3\x92\x04\xfd\x71\xe6\x9c\x44\xac\xe4\x70\x25\xa3\x4d\x86\xbb\xe7\xe7\x6f\xdf\x1c\x9d\x3f\x3c\x7a\xfb\xfa\xf4\xf4\xf8\xec\xfc\xf1\xf1\xe9\xfd\xc3\xe3\xf3\x27\xa7\xa7\xcf\xce\xcf\x8b\x83\xe6\x57\xd2\xd2\xce\x92\x93\x06\x52\xb8\x21\xd0\x55\x09\xba\x48\x8d\xe4\x18\x24\xae\x84\xb3\xba\x91\xe5\x40\x4b\x6e\x2f\xbc\x21\x70\x94\x32\x73\xb7\x94\xf5\x43\x02\xe6\x10\xab\x3f\x46\x68\x4f\xa9\x9e\x4f\xe6\x6c\x31\x95\x94\xd7\x22\x67\x98\xe3\xbe\x2e\x8b\x8c\xaf\x9f\x8b\xe9\x7a\x41\x89\x3b\x70\xe4\x1c\x89\xa8\x0d\xa9\x65\x1e\x49\x93\x64\x2f\x87\x12\xe1\x48\x3a\x4f\xed\x4b\x49\x36\x5c\x6b\x71\xab\x58\x93\xbf\xba\x91\x23\xcb\x06\x97\xb2\x5b\x64\xe8\x5e\x52\xb5\x2d\x39\xb6\xdb\xb5\x3e\x95\x4a\x64\xb0\x2c\xad\x82\x6e\x3c\xb5\x3b\x08\x4d\x50\xc8\x87\x6d\x4f\x48\x54\x0b\x4a\xba\x14\x57\xb4\x5e\x16\x6f\xbc\xc7\x6e\xbd\x82\x5a\xf1\x4b\xaa\xb6\xcb\x7a\x91\xe1\x0f\xca\xce\xe3\x64\x77\x59\x1f\xbd\xa1\xa8\xa0\x56\x7a\xbd\x9a\xc6\xaa\x2e\x18\xef\x82\x16\x51\xa5\x17\x50\xdd\xd8\x94\x49\xfc\xd9\xd4\x52\x19\xf7\x85\xe4\x79\x30\xa8\xee\x72\xad\xe2\x5d\x05\xf2\x6f\xa4\x94\x4f\x17\xb2\xbb\x5c\x4d\x45\xdc\x17\x92\xe7\xc1\xb5\xb1\xb9\xd5\xb2\x0d\x9d\x2b\x89\xaa\x40\x31\x46\xb6\xa6\xb2\x8f\x4d\xcd\xdf\x04\x4f\xde\xc1\xbc\xd6\xad\x6f\x3b\xab\x3f\x34\xb5\x7e\xb3\xfa\x1c\xc6\x0d\xd5\xbb\x6f\x3b\xab\x7f\xee\x00\xf9\xcd\x06\x4a\xb3\xd2\xd0\x44\xfe\xd5\x34\xb2\xc3\x09\x0c\x95\x1b\x87\x4b\x69\xc5\x8f\x0b\x09\xd7\x0d\xa0\xb3\xfb\x7d\x54\xa2\xd1\x18\x94\xd9\x91\x19\x5c\xd7\xd6\x42\x23\x2a\x77\x25\x9d\xae\x27\x95\x93\x03\xe5\x78\xac\xf9\x1a\x42\x14\x67\x3e\x1a\x95\x10\xba\xd7\xf5\xea\x4f\x3c\x0e\x37\x99\xf5\x7d\xb9\xc1\xb7\xda\x2d\xf9\x42\x74\x10\xa2\xa4\x58\xc1\x48\x62\x5c\x5a\x24\x43\xd9\x09\xf6\x83\x28\x08\x74\x9f\xf4\xff\x6a\x67\x1a\x56\x5f\x11\x2e\x50\x79\xaf\x6f\x73\xce\xdd\x66\xd5\xc2\x28\xef\x2e\xcd\xdc\x24\x79\x90\x16\x61\x7c\x9d\xf3\x64\x63\x61\x94\x45\x97\x84\xd7\x63\x07\x0a\xe5\x3e\xb7\x02\x43\x25\x4b\x51\xed\x48\x8c\x71\x96\x99\xe9\xf1\xc0\x80\x2d\x30\xfa\x59\xdc\x21\xc1\x9b\xb0\x29\x85\x67\x83\x71\x7f\x68\xf7\xb0\x8f\x11\x47\xaf\x5b\x4b\x69\x1c\x48\x06\xe6\xc0\x91\x93\xaa\x87\x79\x83\x44\xd8\xb8\x0e\x97\x54\x21\xef\x7f\xd4\x83\xbd\x3e\xc6\x39\x8d\x46\x6a\xa4\xf2\x70\x01\x63\x10\x78\x40\xfd\x08\x0c\x26\xe7\x6f\xe5\xdd\x36\x10\x78\xc3\x0b\x14\x54\x25\x68\x50\xc7\x3a\x6b\x33\xc4\x1b\x46\x5a\x41\x96\xed\x2e\x82\x24\xd5\xbe\xf1\x2a\x82\x0c\x78\x18\x72\xcf\x55\xc3\xb0\xc2\x3d\x90\xac\xf7\x80\x25\xaf\x5c\x0f\xe8\xf4\xdf\xdf\x87\x22\x34\x92\xe7\x17\xba\x25\x33\x1f\x67\xbb\x86\x56\x4c\xa0\xd2\xe4\x97\x6c\x32\x0c\xed\x0b\x19\x86\xbb\x05\x1f\xef\xdf\xd6\x7d\xbb\xa6\x61\x58\xb3\x7a\xeb\xa2\x8a\x10\x72\xe1\x8f\x04\x0c\xda\xff\x65\xff\x6f\xed\xff\xf2\xff\x6b\xfd\xad\x75\xb5\xa6\x5f\x5a\x57\xb7\xbb\xdf\x77\xfb\xe6\x1d\x4d\xb0\x3d\xf2\x76\x74\x15\xf3\xd6\x7b\xb1\x36\xa9\xff\xa8\x47\xc8\x13\xda\x7a\xfe\xf4\xb5\x4e\xd8\xff\x2f\xb5\x26\xac\x74\x8e\x94\xb7\xa2\x95\x4c\x65\xa3\xde\x18\xdf\x23\x07\x58\x75\x97\xec\x0b\xe3\x68\x73\x41\x67\x42\xd2\x07\xd6\xb2\xad\x15\xe5\xfc\xd4\x97\x71\xc1\xcc\x27\xe0\x9c\x71\xa6\x06\x5b\x29\x55\xa0\x6d\x43\x4a\x75\x4d\x2e\xfb\x33\x1c\xc9\xb1\xc7\x35\x9b\x82\xb5\x98\x5b\x36\x60\x96\x43\x58\xca\xdc\x0a\x6c\xa6\xf7\x96\x30\x1b\x35\xc9\x40\x0b\x51\x42\xba\xf0\x23\xb7\xcc\x73\x63\xbc\x36\x9f\xcd\xfe\x22\x1c\xb9\xa7\xc8\xbb\x96\x86\xa1\x7f\x72\xd5\x78\xfe\xea\x2a\xad\x7d\xd5\xf4\xe0\x42\x12\x85\x33\x54\xcc\x2f\xce\x25\xbb\x95\x51\x9a\xb6\x16\xfc\x68\xec\xb7\xf6\x75\xf3\x92\x4d\x54\x91\x83\x9b\x90\xba\xed\xbe\x17\x18\x27\x62\xb9\x64\x4a\x31\x7e\x99\x47\xb4\x3a\xf7\x42\xc4\x6e\x31\xd3\xe6\x38\x5b\x5f\x68\xbd\xfe\x42\x0b\x03\x9e\x6a\x9d\x17\x02\xc5\xee\xe2\xd7\x32\x5e\xad\xe8\xf4\xb1\x13\x24\x76\x67\x74\x94\xc4\x10\xae\x6b\x69\x76\xe5\xca\xe9\x39\x43\x79\x1e\xaf\xbe\x51\x4b\xd2\xd4\xcf\x6b\xad\x4a\x51\xf9\xf6\xb9\xa9\xfc\x42\xfa\x9a\xe3\x4f\xd4\x9c\x09\x71\x9d\x7b\x10\x4f\xe6\xf5\x50\x75\x45\x7c\x1d\x1b\x18\x08\x5c\x64\x28\x1f\xec\x0a\x62\xe2\x43\xb5\x2c\x35\x06\x97\xbf\x35\x9f\xbb\x62\x3e\x66\x90\x3d\xee\x5e\x2a\xbd\x4b\xa7\x8b\x4b\x25\x8c\x77\x84\x93\xef\xf5\x6c\x13\x6e\x2d\x1e\xa4\x02\x2c\x43\xdf\x9d\x32\xf0\xc5\x99\xc3\x26\x50\xcc\x5b\x29\x17\x86\x8f\x3e\x83\xe6\x56\xdb\xda\x8f\x2a\xc7\x63\x37\xdb\x7e\xa8\xd8\x63\xe8\x4e\xe9\x95\x12\x62\x91\x0c\x8b\xc7\xe8\x42\x76\xad\x12\x91\x27\xe1\x2a\x9d\x9a\x9a\xa3\xd8\xdd\x73\xf7\xf9\x89\x10\x9f\xc8\x54\xc2\x54\x76\xe9\x52\x53\x12\x4d\xa8\x22\xbd\x80\x03\x50\x58\x27\x0b\xee\x12\x95\x8c\xaf\xa8\xf3\x6c\x8a\x15\x0d\xaa\x5e\x1e\xca\x9f\xef\x38\xd3\x1f\x5d\x6f\x55\x37\xc7\x89\xba\x5c\x53\x6d\xd0\x63\x73\x60\x67\x06\xc3\x66\x25\xe9\x8a\xf2\xa9\xd1\x81\xcb\xf5\x58\x91\xf2\xdb\xb5\xd9\x65\xd3\x5c\x17\xce\xdc\xd1\x3e\x38\x92\x64\x63\x46\xd2\xa4\x77\xe5\xa4\xea\x54\xd6\xb5\x7c\x7f\x5a\x0b\x29\x7c\xb7\xa7\x09\x41\x18\x6a\x7e\x66\x9a\x18\x6a\x8e\x9a\xcc\xd9\xcc\x6c\x14\x52\xef\x68\x51\x84\xe9\x43\xde\x94\x5b\xae\x66\x20\xef\xed\xf5\x35\xa3\xd4\xd4\x7c\x42\x91\x84\x7e\x99\x5a\x9e\x3b\x65\x59\xfd\x01\xc9\xf8\x43\xa2\xf0\xe7\x28\xc2\x9f\x5e\xf6\x35\xcd\x57\x23\x3b\x48\x83\xe9\x55\x34\x37\x3e\x3c\x1f\xed\xd7\x72\x6c\xd7\x8f\xb2\x26\x54\x75\xcf\xaf\x96\x83\x5c\xdd\x21\x9b\xcc\xd4\xf4\xf7\x52\x8a\xfa\x28\x81\x91\x4d\x36\xb8\x92\x48\x54\x24\x25\x89\x37\x6c\x24\xc7\xcd\x84\xa2\xc1\x0d\xd7\xc4\x0c\x32\x7b\xf3\x8d\x6a\xc2\x0d\xca\x3b\x0e\x72\x97\xdb\x9d\x19\xe1\x48\x8e\xb3\xaa\x05\xc8\x1c\x6c\x77\x81\xc4\x8a\x05\x9c\xb0\x05\xe5\x6a\x50\x4f\x20\xed\x1e\x98\x7a\x1c\x41\x45\x9b\x69\xac\xe2\x68\x73\xeb\x96\x45\x66\x6a\x03\x84\xad\x15\x9d\x46\x2c\xc3\xb0\x55\x3e\x06\xcf\xae\xaa\x94\xc1\x54\xda\xbd\x65\x08\x76\x93\x6b\xa1\xa5\x5f\xba\xb1\xae\x6b\xab\x12\xef\x1a\x6b\xa1\x60\x33\xa5\xd4\xf8\x4a\x24\x37\x7c\x62\x47\x66\x3c\xa6\xec\x32\xd1\x53\xc3\xd4\xfc\x81\xa1\xb8\x95\x26\x78\xb5\x62\x73\x46\x41\x13\x90\x0b\x69\x82\x81\xbd\x66\x93\x4f\x4d\x5d\xe2\xdd\x5b\x53\x9a\x28\x29\x6e\x4c\xe8\xce\x12\x6e\x7d\x91\xfe\xe6\x06\xc8\xc3\x0a\xb6\xfd\x59\x3a\xcd\x38\x0a\x14\x2d\x6b\x4c\xc8\x86\xe3\xe7\x25\x15\xc7\x92\xcb\x86\x25\x31\x8a\xc7\x3b\x16\xcb\x28\x1e\x13\x8e\xa1\xcd\xc2\xb0\x2d\xfc\x31\xed\x43\xa3\x10\x54\x85\xd8\x35\x91\x23\x59\x12\x62\x77\x03\xe8\x42\x76\x13\xaa\x8c\x47\x33\xb7\xeb\xcd\x08\xf3\x36\xce\x3a\xb7\xe7\x59\xbe\x6c\x73\x31\x77\x83\x84\x89\x6c\x09\x82\x6c\x3c\x7b\x8c\xb8\x66\x1a\xfe\xa5\xee\xa3\x6e\xc1\xf5\x42\xba\x77\x13\x7c\x71\x15\xdf\x2c\x44\x3c\x85\x09\x61\x5d\x27\xae\xc1\x9a\x30\x73\x76\x3e\xbf\xad\x21\x0c\x27\x66\xc5\xa7\x29\x5a\x13\xda\x59\x6b\x6a\xe2\x5b\x41\x6b\x70\xc1\xeb\x96\x4c\x99\xf6\xdd\xe3\x7f\xb8\xf5\xc6\x66\x6d\xe5\xba\x51\x98\xe0\x2c\x77\xad\xda\xa5\xe1\x0b\xb3\x64\xf5\xea\x8d\xcc\xda\xe5\xc3\xa6\xd5\xeb\xb2\x64\x0d\x4b\x7b\x6b\x8b\xb5\xbd\x8b\x76\x8d\xe8\xd8\x33\x81\x4d\x66\x74\x27\x77\x62\xa8\x62\x0c\xcd\x8d\x3e\x0d\x62\x81\x30\x0d\x88\x1c\x97\x38\x36\xc7\x22\x7c\x88\x43\x97\xce\xf1\xa0\x99\x50\x49\x60\xbb\x09\x94\x6b\x76\x24\x1a\x88\x94\x65\xe9\x3b\x47\x45\xf2\xd8\xb1\xdf\xc8\x94\xd9\x78\x3a\x19\x38\xd6\xdb\xdc\x8f\x43\xad\xe3\x98\x1c\xe6\xa2\x88\x0c\x83\xc8\xcc\x39\x57\xad\x5d\xd6\xcd\x3f\xa8\x46\xd6\xdb\xd5\x55\x00\xdc\x44\x37\x29\x98\xa3\x39\x4a\x5f\x4f\xd1\xd2\xbc\x8b\x5b\x52\x91\x6b\x8a\x48\xda\xae\x3f\x76\xe1\xe9\xce\x74\x24\x50\x48\xac\x43\x63\xd5\xe2\x55\xef\x91\x8f\xc3\xab\x91\x74\x28\x23\x5d\x52\x98\xcb\x6f\xf8\x74\x41\x65\x9a\xd2\xc1\x8e\x3e\x3b\x7e\x9f\xf7\xb8\x78\xdf\xd5\x5f\x7f\x84\x3e\xef\x77\x69\xcd\x17\x92\xb3\x5f\x85\x6e\x99\x80\xc7\x7d\x9e\xf3\x30\x3b\x3d\x7e\xd0\xba\xe3\x6e\x22\xa3\x12\x9f\x13\x42\x19\x71\x2f\x72\x93\x95\x15\xbe\xb9\x48\x10\x86\x9b\x02\x60\xb5\x84\x89\xca\x9c\xa6\x45\xb0\xe7\xfc\x8e\x05\x66\x11\xac\x24\x9b\x0e\x5d\x88\xd3\xda\xdd\x17\x2e\xac\x65\x39\x67\x59\x00\xa4\x52\x0a\x19\xd8\x58\x25\x18\x6b\x36\x68\x66\x8c\x83\xa8\xcf\x97\x1d\xd4\x9f\xc0\x20\x73\x3b\x42\x4d\xb2\xd0\x2b\xd9\x5b\x9e\x1a\xbe\x35\x99\xf9\x24\xf2\x20\x2d\x40\xed\x31\xbd\x64\xe8\xdd\x89\x5f\xd6\xb4\x51\xbe\x82\x83\xe1\x8d\x67\x76\x5e\x03\x67\xd8\x1e\x2a\x2a\x33\xc4\x43\x59\x11\x70\xe8\x1f\x98\x1b\xf5\x4a\x35\xbe\x99\x79\x05\x2f\xea\x82\xb0\xd9\x7a\xd1\x4c\xdd\xdd\x20\x23\x09\x05\x4a\x14\x28\x1f\x7c\xd4\xb9\xed\x2b\x70\xd4\x3b\xa2\xe0\x68\x77\x24\xb3\xec\x48\xda\x61\x37\x6f\x6a\x38\x69\xe3\x6a\x59\x93\x38\x20\x2f\x96\xd4\xec\xa8\x19\x9c\x95\xcd\x4a\x3b\xd4\xba\xc2\x7c\x07\x82\xe4\x43\x02\x4d\x35\x8d\x71\x37\x26\xa2\xc4\x6c\xec\x00\x58\x3e\x80\x38\x83\x35\xa9\xe9\xdf\x23\x36\x1e\xac\x73\xf3\xfd\x0e\xf6\xbd\x6e\x56\xee\x14\x8a\x7d\x8c\x91\x2d\x15\xda\x9f\x4a\xfc\x03\xb5\x70\x52\x96\x07\x70\x0d\x08\x3b\xb4\xe1\x22\xe2\x28\x70\x07\x04\x7b\x86\xd9\x80\x80\x11\x9e\x83\x20\x76\x20\x10\x39\x08\x58\x06\x5e\xe1\xf5\xc4\xc8\x5e\x77\x30\xb1\x67\x2d\x77\x18\x2e\x8a\xd1\x18\x67\x99\x1d\x31\xd9\xad\xc9\x2a\xc3\x7f\x30\x68\x97\x0f\xc5\x20\x4b\xb2\x50\xf5\x64\xf2\x9a\x4c\x0a\xcf\x13\x4f\x67\x34\x45\x9c\x74\x97\xf1\x6a\x07\x30\x99\x01\x62\x34\x19\xf5\xc6\xa8\x08\x34\xaf\xe5\x6c\x57\x43\x7d\xb9\xac\xeb\x11\xe6\x5d\xe0\x31\xd9\x04\x82\x6f\x0e\xdd\xc4\x95\xfd\xe3\x91\x9b\x6c\x3b\x07\x6e\xad\x04\x55\xe7\xe3\x7f\x5f\x77\x0c\x05\x6d\xee\x4e\x99\x88\x98\x6c\x45\x77\xac\x77\x78\xa9\x43\xd4\x7a\x2b\x67\x36\x32\x45\x19\x35\x73\x4c\x6f\x56\xc0\x8c\xda\xbd\xb5\x26\x6c\x90\xc2\xc6\x6a\xb6\xb6\x9a\xaa\x95\x35\x06\xea\x71\x26\xd2\x48\x65\x91\xda\x65\x71\xdb\x6e\xf2\x7a\x6b\x45\xd5\xf6\x05\x2a\x14\x2c\xb7\x7f\x7d\x4b\xb3\xda\x66\x0a\x7a\x1a\xad\xc1\xe9\xac\xba\x2d\x51\xd8\x58\x76\x59\xb5\xbf\x49\x88\xe8\x36\x4d\x25\x2a\xdb\x22\x1c\x7e\x53\xc0\x6d\x72\x6f\x0d\xb6\x6a\x08\xd5\x9a\xdf\x56\xbc\x27\x6b\x29\x1e\xa9\x31\xae\x5b\xbe\xf2\xdd\x09\x4d\x76\xbc\x89\xac\xd8\x37\x07\x55\x2b\x60\xac\xff\x18\x8c\x91\x25\xa1\xf2\xca\x0e\xbf\x30\x9e\x15\x45\xeb\xc3\x28\x76\x37\xb6\x06\x52\x01\xd9\x9f\xef\x7c\x51\x63\x61\x25\xdd\x01\x6a\x4b\x65\xb5\xda\x97\xf3\xf7\xb2\xf2\xa7\x15\x7b\xbb\x7d\x8e\x24\x54\xf6\x32\x0c\x3f\x38\x97\xde\x4e\x75\x56\xdb\x0d\x6f\x18\x8a\x3f\xd0\xf6\x67\x47\x51\xde\x73\x31\x31\x35\xaa\x6d\x08\xf5\x66\xd7\xb6\x79\x0e\x07\xbb\x5d\xa7\xf2\x8e\x9a\x00\xf4\xd5\x7a\x4a\x80\xd9\xb5\xb1\x53\xb2\x8b\x0f\xb6\x0d\xe5\x3d\x50\xa8\xc1\x80\x4e\x77\x6f\xd4\x96\xdb\x87\x23\xb7\x51\xfb\x49\x92\x07\xb2\x4e\xb9\xbd\x02\xe6\x57\xeb\x2b\x89\xe8\x0e\x6a\xe7\xa5\xf7\x4f\xf4\xc6\x88\xed\x57\xf1\x62\x20\x88\xea\x08\x90\x23\x3e\xae\x1d\x5d\x6a\xab\x34\x7d\x2d\xcb\x9b\x0d\x10\x2c\xe3\x95\x93\x0a\x83\x92\xd3\x6d\x29\x4b\x45\xeb\xd2\x95\x76\xb5\x18\x4b\x8c\xbd\x12\x34\x19\x86\xe3\xff\x84\x31\xd4\x7b\x5f\x44\x2d\x1f\x8d\x41\x6e\x1d\x9e\xb2\x11\x2d\xcc\xd1\x8f\xc2\x93\x53\x8e\x07\xa5\x10\xff\x6e\x34\x5e\xec\x18\x14\xd7\x22\x31\xd2\x00\x14\x4b\xb3\x0d\x50\xec\xa5\x47\x5e\x9a\xe6\xe6\xb6\x07\x63\xd2\xc8\x2b\x73\xba\x65\x93\x42\x31\x14\xce\xfb\xdd\x20\xa2\x06\x9f\x13\x84\x29\xc6\x11\x2f\x7d\xf3\x8d\x8f\x44\x39\x4b\xe6\xa1\x5c\x58\x7d\x5f\xc9\xa6\x28\x65\xaa\xa4\x9f\x96\x62\xd6\x20\x85\xd3\xd4\x48\xc3\x19\x52\x78\x58\xff\x36\x54\xbb\x24\x8e\xcd\x27\x7a\x13\x29\xb8\x8a\x17\x91\xd2\x9d\x88\x6a\xee\x50\xd5\x62\xb4\x52\x8c\xda\x62\x5a\x4e\xd7\x25\x47\xe3\x42\x52\x7f\xd0\xd8\xf9\x92\xe8\xbe\x1d\xdd\x6f\xe8\xa4\xf7\x20\xc0\x51\xb0\x6f\x2f\x27\x73\x17\xa1\xd0\x9c\x30\xe1\x30\x44\xb4\x43\x82\xfd\x00\x83\x72\x57\x38\xe6\x8d\xbe\xae\xab\x07\x3b\x4c\x63\x72\x6c\xc4\xb3\x13\x69\x7c\xec\xd7\x3c\x99\x88\x55\x7c\xb1\x30\x7e\xf6\x4f\xa5\x0b\x06\x54\xf8\xed\xd9\x40\x03\x4f\xe5\xe8\x44\x8e\xc3\xf0\x53\x77\x86\x9e\x4a\x38\x91\xbb\xc2\x54\xdc\x57\xd6\x16\xec\x3c\x44\xdf\x48\x78\x2e\xe1\x96\x84\x87\xd5\x3d\x60\x5b\x9f\x71\x44\xef\x65\xf0\xc8\x18\x62\xee\xcb\x7a\x2c\xf4\x92\xa7\x02\xde\x14\xa6\x8d\xb2\x8e\x51\x38\xf6\x1b\xa7\xeb\xc6\x3b\x24\x91\x96\x1f\x15\x36\x5b\x36\x79\x59\x8d\x72\x9f\x65\x2d\xbc\xcf\x63\xb9\x7d\xba\xfd\xab\x24\xf7\xe5\xb0\xb1\xe2\x46\x07\x6c\x62\x7c\x64\xe1\x1a\x29\xf8\x2c\xf1\x50\x8d\x3e\xcb\x71\x63\x2c\xed\x72\xef\xc3\x50\x95\x8f\x5b\x56\xbe\x0d\x2b\x6f\x45\xcf\xa2\x4a\x11\xdb\xc1\xe1\x63\x19\x19\xd3\x2d\xbc\xb5\xf3\x9b\x5f\xcc\x8b\xe1\x89\x24\xed\xfe\x60\x34\x36\xd8\x1d\x86\xee\x2a\x46\xc6\xd1\x2d\x49\x5c\x2a\xc2\x78\x88\x9e\x4b\xf2\x55\xa2\xaf\x12\xdd\x92\x18\x6b\xa8\xd5\x41\x12\x86\xe8\x8d\x24\xcf\x25\x8e\x9e\x18\xa7\x0b\xb0\x38\xf2\x46\xda\x0f\x5a\x18\xb9\x46\x6f\x24\xbc\x95\x26\x4e\xa5\x79\x6a\x3a\x0b\xa9\x09\x82\xb7\xbb\xbf\x93\x64\xe3\xef\xab\xca\x21\x1c\xbd\x91\x70\xff\xcd\xe3\xc7\xef\xcf\xcf\x0e\x1f\x1d\xbe\x7a\x7a\xfe\xf4\xf5\xd1\xab\xc3\xd7\xa7\xaf\xce\xa2\x27\x32\x83\x67\x92\xbc\x93\xdd\xad\x52\xf0\x5e\xee\xbc\x26\xea\xe7\x5d\xfe\x24\xb4\x13\xb4\xf2\xfb\x89\x07\xdb\xa8\x46\xee\x2b\xf4\x4c\x82\xbd\x70\xcd\xc6\x44\xce\xcc\x39\x1d\x05\x1c\xda\x7d\x0c\x8f\x0c\x31\x7f\x6f\xfc\x44\x5f\xe6\x68\x54\xbd\x4d\x2c\x4d\x51\x90\x5f\x24\x16\x30\xbe\xc9\x86\x35\x71\x45\x81\xbd\x03\x4a\xf3\x14\xad\x37\x20\xf5\x47\x71\xb5\xd1\x16\xc2\x96\x9a\xc0\xba\x03\xd8\x9f\xfc\x1e\x8d\x31\x50\x22\xcb\x58\x63\x56\x7b\x49\x5d\xf8\x56\x94\x15\x73\x5e\xbe\xe6\x0e\x61\x02\x6a\xdb\x68\x24\xcd\xf1\x5b\x6d\xcc\xf4\x84\xaa\x56\x1e\x06\xd8\x84\xa1\x89\x93\x56\xdc\x2a\x05\x16\xcc\x10\xc7\x40\x87\xca\xf7\x95\xe3\x48\x96\x2e\x5d\xe3\x20\xb3\x0c\xf9\x23\xc1\x18\x7e\xd9\x31\xf5\xbf\x9a\xf4\x66\x9c\x01\xc5\xeb\x4b\x82\xf2\x9d\x98\x22\x39\xa9\xdb\xa0\x40\xd8\xa8\xaf\x3f\x4b\x24\x4d\x50\x05\xbb\xfb\x6c\x63\x9c\xd4\x03\xf3\x28\x42\x88\x08\xc3\x2b\x2f\x6c\x5c\x19\x06\xfb\xab\x5b\xe9\xad\x95\x4f\x5f\x8d\xd4\x78\x50\x8d\x3f\x62\xe3\x1e\x47\xe6\xd1\x5e\xfa\xe5\x5e\xa8\xbd\x9a\x24\xd8\x1d\x65\x47\x53\x3a\x59\xf8\x7b\xfc\x89\x7c\xd8\x5c\xa4\x50\x41\x7f\x98\x6b\x1c\x5c\x91\x4a\x8c\x0f\xb2\x1a\x29\x3e\x4e\xd3\xd5\xa8\x7c\xdd\xf7\x38\x4d\x45\x18\xae\x46\x62\x0c\x57\xc4\x8c\x6e\x9a\xa6\x33\x24\x30\xdc\x90\x3c\x6a\x1c\x0d\xc3\x55\xd7\xf5\x3d\x4d\xa7\x1a\x10\x37\x61\x88\x26\x9a\xcc\xdc\xb8\x13\x33\x86\x42\xeb\x79\x6d\xa4\x37\x13\xb3\x09\x15\x86\x9a\x2a\x4d\x34\x49\xfa\x45\xd3\x9a\x97\x72\xf8\x52\xa2\x09\xfc\x22\x71\xd4\x10\x07\x69\xa2\x3b\x1c\x86\xc7\x68\x02\x8a\x03\xe5\xd8\xac\xd7\x09\x2c\xb4\xa4\x8c\x31\x78\xd8\x9a\x79\x9a\x86\xa1\x7f\x6f\x13\x32\x35\xdb\x4f\x26\x82\x8c\xe6\x6c\x0d\x48\x32\x2d\x3c\x6b\x34\x21\x30\xc0\x69\x13\x72\xa5\xdb\x5b\xe9\xf6\xae\x0c\x49\xa0\x63\x72\x05\x02\xb3\x19\x5a\x13\xeb\x7c\x9e\x44\x33\xe4\x5b\xc2\x60\x8e\x5a\xb0\xe1\x95\x4e\x74\xd1\xae\x1d\xa0\x74\x8a\x9f\x6f\x9c\x41\x6c\x7c\xf1\x12\xe3\x6e\x8f\xd1\xaf\x32\x4d\xe7\x69\xda\xb6\x09\x2b\x8c\xc3\x90\x2a\xb4\x82\x04\xd6\xa3\x64\x6c\x1d\x8d\x5a\xa5\xe3\x1e\x74\xeb\x44\x8f\xa9\x21\x83\x75\x11\x36\x22\x03\xce\x7d\xfc\x17\xc1\x6b\xf1\x5f\xcc\x54\x16\x18\x82\x21\xe6\x44\x72\x64\x92\xc1\x9f\x1a\xaa\x09\xc7\x9c\x5b\x44\x74\xb1\x43\x6a\x55\x80\xeb\x9a\x39\x0c\x63\x76\xe2\xa3\x1e\x7c\x62\x7c\x6a\x22\x5d\x55\xf7\x35\xad\xa7\x92\xb0\xf5\x69\x1a\x96\x87\x92\x94\x44\x75\x75\x21\xe0\xc6\x0f\x6a\x4a\xbf\x74\x3a\xfe\x78\x16\x4d\x53\x7e\x2f\xdf\xdc\x19\x22\x5f\xc8\xdf\x4f\xd7\x7c\x41\x26\x8e\xec\x44\x10\x22\x87\x2e\x07\x77\x1f\xfb\x59\x54\xe0\x4c\xfe\xd5\x84\x9e\xcc\x33\xb8\xc4\x11\x07\x9d\x5e\x7c\xc8\x0a\x7c\xc3\x83\x47\xb2\x7b\xe8\x05\x78\x62\x5e\x34\x18\x1f\xca\x1c\x07\xf4\x63\x8e\x23\xfa\x25\xc7\x04\x4b\x72\xea\xb4\xc9\x71\x31\x10\x7e\x36\x5f\xca\xc6\xab\x2f\x38\xa9\xc8\x4c\x9a\x72\xb7\x8d\x0d\x61\x89\x04\x29\x05\x71\xc6\x61\x28\xf4\x87\xf2\x1a\x7c\xa9\xe5\x4b\x61\x62\x85\xac\x39\x09\x46\x1f\xd4\x07\xfe\xe1\xea\xc3\xec\x83\x6c\xfd\xd7\xff\xfd\xff\xf9\x5f\x7f\xfb\xfd\xb7\xdf\x7e\xff\xed\x5f\x7e\xff\xed\x5f\x7f\xff\xed\xff\xff\xfb\x6f\xff\xdd\xef\xbf\xfd\xf7\xbf\xff\xf6\x3f\xfc\xfe\xdb\xff\xf8\xfb\x6f\xff\xd3\xef\xbf\xfd\xcf\xbf\xff\xf6\xbf\xfc\xfe\xdb\xff\xf9\xfb\xbf\xfc\x6f\xff\xef\x6f\xbf\x7d\x58\x1f\xf4\x0e\x7e\x34\xff\x7f\xfa\xb0\x9e\xd1\xd9\x6c\x1c\x40\xc2\xc9\x2b\x7a\x79\xf4\x65\x85\x82\x7f\x0a\x3a\x6b\xae\xff\x82\xbf\x05\x18\x66\xf9\x07\x9f\x78\x2b\xc0\xb0\x68\xbc\x39\xa8\xae\x70\x49\x7f\xcc\xfe\x4a\xab\x19\x1e\x38\xfd\x50\x19\xab\x89\xcc\x23\xa2\x26\x1c\x4c\xa0\xc4\x83\xad\x2f\x33\xf7\x45\x66\x19\xcc\xb9\xf1\x57\x91\x2a\x5a\x70\xd4\xd7\x2b\x75\xaa\x9f\x0e\x30\x28\xc9\x96\xfa\xf1\x36\xce\x60\xc5\x6d\xc8\xbe\x29\x37\x27\xbc\xae\x6c\x44\xd9\x1b\x4e\xe6\xbc\xab\xf3\xc1\x92\x13\xd1\xb5\x7e\x84\x70\xc9\xc9\xb2\x1c\x3c\xfb\x82\x93\xc0\x7e\x32\xd1\x36\xef\x2b\x74\xa9\xe9\xd6\x75\xc3\x3d\xaa\x05\x47\x02\xc3\x82\x6c\xb0\x96\xbe\xbd\xe3\xb6\x6e\x88\x48\xc2\x30\x3f\x07\x78\xa0\xc9\xd1\x77\xb7\xcd\xe5\xa9\x04\x25\xe4\x86\xa3\x04\x63\xa3\x6d\x3c\x10\x53\x6a\xae\x5e\xc4\x69\xfa\xdd\xf7\x76\x4f\x93\xcd\xd0\x8f\x3f\xda\x50\x63\x49\x39\xd3\x81\xce\xd4\x3f\xe8\x95\x23\x30\x9f\xc4\x27\x79\xf4\xab\xef\x7e\xb4\xe5\x1d\x6f\xab\x94\xed\x63\x17\x69\xeb\xce\x1d\xc3\xd9\x5a\x3f\xfd\x18\x71\x72\x00\x82\x7c\xf7\x93\xbd\x1f\xce\x06\xd6\xfa\xe1\x27\xfb\xb9\xdf\xef\x47\x9c\xfc\x08\x82\x7c\xff\xbd\xfb\x3e\xa5\xb3\x78\xbd\x50\x8e\x15\x76\x12\x73\xcd\x61\x4c\x10\x23\xde\xd4\x7d\x80\xb1\x77\x37\x98\x90\xde\x60\x72\x37\xce\xa3\x48\xaf\xb5\x7a\x5b\x74\x67\x82\xf1\xdd\xef\x7e\x4c\xd3\xf5\x3d\x51\x1a\x89\x47\x97\x55\x2c\x13\xfa\x94\x2b\xc4\x80\xfb\x9b\xbc\x3a\x89\x09\xa0\x72\xa8\x90\x9f\x2e\x68\x2f\x39\x0a\x5a\x3d\xd1\x0f\x70\x9a\x9a\x97\xde\x85\x79\xd6\x8f\x9d\xde\x97\x7e\x80\x71\xa1\xe2\x9f\x71\x38\x6a\xba\x1c\x77\x2b\x30\x79\x7f\xd8\x8b\x0c\x9d\x2b\x19\x36\x2b\x22\xdc\x11\x0f\x43\x74\xc1\x87\xb5\x28\x02\xdc\x9f\x26\x77\x12\x95\x89\x4b\xe4\x3b\xdb\x26\x26\xd6\xf4\x70\xc2\x0d\xe7\x5d\x72\x74\xad\xd7\x0c\x06\x09\x47\x1c\x47\xe6\x25\x83\x53\x4e\xe2\xe1\x8a\xa3\x25\xc7\x51\xf0\xfc\xf0\xdd\xf9\xdb\xc3\xe3\x37\x47\xf0\xfc\xe9\x89\x7b\x3a\x89\x4f\xe0\xe4\xe8\xb1\x89\x11\x7c\xfe\xf4\xe4\xd1\xd3\x93\xa7\xaf\xdf\xc3\x8b\xd3\xb3\xa7\xd5\x94\xa3\x17\x67\x4f\x8f\x4f\x4f\x80\x25\x8f\x18\x67\x8a\x02\x4b\x9e\x72\x45\x2f\xa9\x04\x13\x10\x1d\x58\x72\x16\xcf\xa8\x4f\xd3\x4d\x9d\x1d\x3e\xd2\x15\xbc\x3e\x7a\x7c\xf4\xca\xb4\x58\x49\x30\x53\xf2\x68\x21\x62\x05\x7e\x76\x8a\x3a\x03\xef\x93\x0b\x01\x86\x73\x4e\x7a\x83\x53\x1f\x1c\xf6\xde\x39\x1f\x9c\xf3\x4e\x07\x5f\xa3\x25\x87\x33\x4e\x4e\xf9\xe8\x9c\x8f\x6d\xcc\xa2\x23\x9d\x82\xc3\xf0\x8a\xdb\x47\x98\x72\x9b\x0b\xe3\xc1\x51\x69\x91\x92\x4b\x0e\x97\xbc\xa2\x7b\x1e\x71\xa0\x0a\x09\xc8\x91\xe1\x88\x5b\xd7\x90\x8f\x5c\x4b\xf2\x1f\xf9\x68\x2b\x3e\xe4\x98\x04\x5f\x03\x43\xcd\xbf\x68\x6a\xea\xa2\x69\x7e\x1d\x07\x84\x78\xa2\xf5\x91\x63\x38\xe4\x0d\xa1\x25\x5f\x70\x2d\x5c\x39\x44\x31\x84\x62\x5b\x40\xc9\x11\x29\x43\x18\xc3\x27\x4e\xbe\xf0\xe1\x7c\x3b\x0e\x89\xa6\x22\x83\x7a\x9c\x0d\x35\x0c\xde\xe4\x0e\xd8\x91\x0b\x35\xa8\x86\xc1\xc9\x7a\xb1\x08\xa2\x3a\x71\x41\x5b\x67\xba\x8a\x88\x9f\xc6\x3c\x52\xa8\x17\x19\xf2\x8e\x63\x9a\xeb\x1f\x72\x8c\x87\x32\x7a\xc1\x87\x73\x44\x71\x7e\x26\x95\x10\xc4\x89\x4e\x69\xde\xbd\xb6\x3e\xcd\x94\x0e\x4b\x20\x88\x78\x06\xc7\x66\x88\xa5\x28\xa9\xdb\x5e\x0d\x39\x98\x83\xce\x27\x27\x4c\x74\x82\x71\x90\x0d\xbe\xf0\x34\xa5\xaa\x41\x95\x2a\x62\xf9\x1c\xf3\x4a\x8c\x1a\x33\x73\xaf\x34\x25\x77\x1b\x53\xf0\x60\x9b\x29\xe7\xb1\x2d\x6c\xa8\x6a\xaa\x8c\xb6\x68\x04\x06\x59\x8e\xba\xf9\x9a\xd7\xe2\x1d\x9c\x6c\xd7\xa5\xb5\x07\x54\xd1\xf8\xe9\x76\x7c\x17\x73\x5d\x86\x94\x76\x88\x48\x0e\x65\x27\x68\x99\xc3\x21\x9d\x80\xf1\x2b\x31\xb1\x2e\x9e\xe5\xa6\x9f\x6e\xe9\x44\x6f\x78\xdd\x06\x04\xcf\x1b\x99\x6d\xe1\x08\x1b\x86\xc8\x4b\x31\xf6\x2a\xcf\x37\x7c\xf4\x94\x8f\xcd\x9d\x89\x19\xdc\xda\x6a\xe2\x21\x6f\xba\xf6\xac\x5d\xba\x00\x72\x74\x4b\xeb\x1a\xaa\xae\x6b\x3c\x92\x23\x3d\x71\x78\x9c\xc1\xa3\x6d\xfd\xac\x82\x79\x7c\x48\x91\xd6\x58\x47\xbd\x31\xc8\x51\x7f\x8c\x23\x8a\xf2\x83\xa5\xf9\x15\x8d\xaa\xeb\xdd\x07\x0c\x24\xf3\x21\x89\x30\x3c\x44\x22\xbf\x14\x0c\x68\x96\xc1\x7d\xde\x7c\xad\x48\x0d\xf9\xed\x5e\x88\x58\xad\xe8\x94\xa8\xfc\xd2\xfa\xf5\x42\x11\x9a\xed\xb8\x4d\xa4\xb8\x8a\x3b\x96\x2d\xc7\xce\x61\x06\x36\x58\xa6\xa4\xd6\x0f\x6b\x78\x10\x59\xe6\xce\x70\x4c\xd4\xc0\x5f\x35\xdb\x10\x4f\x74\x42\x1e\x72\x73\x95\xd9\x16\x7a\xd8\xd8\xe8\x3e\x04\x90\x81\xec\xc5\x82\xda\x10\x40\xcf\xb9\xe6\x83\x06\x67\xd7\xa4\x07\x09\x49\x54\x71\xfd\xfd\x20\xb9\xb7\x1e\xac\x1d\xf7\x9c\x11\x31\x5c\xa1\x43\x34\x27\x6a\xb4\x1e\x1b\x08\xcf\x0d\x84\x57\xc8\x24\xe0\x30\x9c\x55\x11\xd5\x8b\x67\xe5\x0d\x5d\x6a\x6e\x5e\x88\xc9\x24\xbf\x6d\x49\x37\xbd\x20\xf6\x26\xf0\x41\x1b\xcd\x89\xbb\xbd\x2f\xc6\xd8\xdc\x9c\x6c\x6e\x8b\xa8\x1f\x2c\x45\x33\xf2\x88\xa3\x18\x56\x30\xb7\x1c\x0f\x84\xe9\xc0\xdf\xd1\x07\x6c\xe6\xab\x09\xc5\x5d\x9e\x9e\x51\xa6\x31\x86\xcf\x5b\xa8\xfc\x98\x93\x76\xdf\x98\x6a\xf4\xdc\x7d\xe5\xa4\x07\x6f\x39\x71\x66\xa2\x3a\xfd\xd9\x58\x6d\xa0\xfd\x95\x77\x3a\x59\x06\x36\xb1\x9c\x4d\xd7\xd6\xcb\xb2\xc1\x5b\x3e\xfa\xcc\x77\x5f\x76\x6e\xd7\xe7\x4c\x8a\x25\x7a\xcb\x2b\x9a\x92\x9d\xf1\x83\xed\xdd\xf8\x27\x1c\xde\x71\x78\xc6\xe1\x7d\x9d\xd6\xfc\xcc\xc9\x3e\x62\xab\xb9\xe0\x34\x65\x2b\x31\x4d\xd9\x2a\x9e\xe2\xee\xdf\xe2\xd5\x6a\x41\xaf\xe9\xc5\x27\xa6\xf6\x99\xbd\xb9\xea\x21\xc5\xf0\x52\xd3\xbc\x85\x23\x25\xf0\x8b\x7e\x4b\xa8\x7a\xba\x5c\xd2\x29\x8b\x15\x85\x5f\x75\xca\x64\x41\x63\x59\xa4\x29\x51\x0a\x44\x43\xf5\xcb\x73\x9a\x24\xf1\x25\x7d\x30\x8f\x39\xa7\x0b\x90\x3a\xed\xa1\xf7\x8d\xe2\x82\xf4\x40\x08\xb2\xc9\x80\x89\x3a\xa5\x10\xa2\x76\xaf\x9e\xc6\x74\xb7\x12\x85\x18\xa9\xf1\xc0\x1d\x89\x35\x2f\x60\xa2\x4a\x43\x2c\xbe\xa9\x2d\xe0\x0d\x13\xc8\x04\xe4\x9f\xd4\xda\x13\xc8\xde\x88\x80\x33\x58\x57\x3f\x89\xee\x4a\x24\xca\x8d\x03\xa9\x4e\x10\xc0\x4b\x27\x24\x4c\xc4\xa2\x13\xec\xef\x07\x9d\x97\xbc\x3b\x17\x89\xc2\xd9\xe0\x17\x1e\x86\xbf\xf2\x34\x45\xbf\x54\x49\x5f\x6d\xc7\xa7\x21\xf4\x91\x1c\xf8\xeb\xe7\x4b\x7b\x3e\x26\xf4\x91\x0f\x7b\x21\x46\x9d\x0e\xaf\x5e\x8d\xdf\xbc\xdb\xae\xa2\x47\x45\xd3\xd8\xed\xca\xf8\x20\x7b\x38\x83\x27\x1c\x71\x81\x81\x8b\x4c\xcf\x62\xb9\x9b\x65\x90\x66\x26\x8a\x9b\x9e\x4a\x7b\x21\x80\xc0\xc3\x27\xb5\x03\xa0\xa2\xf0\x19\x8e\x85\x09\x18\x11\x49\x11\x86\x52\x74\xb9\xb8\xae\xe7\xb6\xa9\x79\x46\x2a\xc2\xb0\xfd\x33\x1f\xa2\x67\x9c\xa0\x77\xdc\xf8\x58\x53\x81\xbb\x9a\x68\x1e\xc0\x3b\x6e\x1e\xfa\x5d\xc1\x97\x16\xf4\x64\x22\xe0\x09\xd7\x54\xf2\x19\x2f\x4f\x89\xc6\xf5\x3e\xc6\x51\x5b\x74\xe3\xe9\xf4\xe8\x8a\xda\x98\x09\x94\x53\x99\xa6\x0d\xd6\xa2\x52\xd1\x34\x15\x5d\xb6\xd4\xed\x9c\x19\x23\x6b\x92\xa6\x0c\xad\x05\xd6\xe5\xd8\x82\x46\x5a\x44\x2b\xcd\xb5\x1e\x50\x20\xb8\xa4\xf1\xf4\xc6\xec\x33\x4f\xe6\x31\xbf\x34\xb7\xee\x9d\xa2\xc0\xda\x69\x83\x6a\x4c\xf4\x5a\xc0\xfc\x52\x36\xdc\xdd\xae\xa9\x3c\xb3\x6f\x54\xe5\x30\x9f\x35\x88\x38\xec\xad\x48\x77\x09\x55\xaf\xd9\x92\x8a\xb5\xb2\xa0\x85\x1e\xce\x22\xf4\x84\x93\xb5\x80\x6d\x90\xa0\xc0\x81\x33\x80\x89\xd0\x5a\xa4\x33\xcb\x27\x02\x66\x02\x16\x02\xe6\x02\x56\x02\xae\x04\xdc\x08\x58\x0a\xb8\x14\xf6\xda\xb0\x5f\x38\x98\xb5\x1e\xfd\xca\x33\xb8\xb0\x31\x4d\xae\x05\xb9\x34\x44\x01\xce\xcc\x52\x77\x7e\x5a\xa7\x17\xc6\x75\x40\x6a\xe8\xfe\x42\x2f\x9e\x31\x55\xff\x02\x47\x65\x3a\x71\x2a\x4a\xc2\xd5\xb9\x20\x15\xac\x3b\x12\x18\x3e\x0a\x72\x21\xb4\xd0\xfd\x79\x4d\xd7\xf4\x39\x9b\x48\xa1\xe2\xe4\x53\x80\xe1\x8b\x20\x1f\x45\x18\x7e\x14\x96\x23\x0c\xbe\x88\x34\x45\x89\x20\xdb\xc6\x76\x13\xc9\xe2\x5c\x98\x6d\xfa\x23\xe1\x6e\x60\x30\x3e\x75\xf4\x0b\x53\x08\x0f\x66\x62\x80\x37\x94\xcc\x44\x77\xc6\x61\x26\xf4\x83\x61\x4f\x9a\xe2\xd3\xf2\x9d\xbe\x96\xf2\xce\xc4\x70\x2e\x10\x8e\x16\xc2\x5b\x99\x54\x96\x95\x5e\x4c\xcd\x5c\x51\x69\x2e\x5c\xd1\x99\xcb\x9d\x3a\x2a\x2d\x9c\x44\xe0\x2c\x3a\xf3\x8b\x61\x25\x8c\x21\x52\x14\x97\x45\xd8\x83\x17\xaf\xe9\x17\x75\x22\xa6\x14\x05\x81\x09\xf6\xdd\x3a\x13\xba\x64\x57\x58\x90\xa2\x2b\x01\x1b\xad\xe8\xc6\x13\x45\xe5\xc3\x58\xc5\xf6\x38\x4f\xb5\xd9\x2b\x61\x6f\x7d\xd1\x8d\xac\x44\x86\xa3\x53\x11\x86\xa7\xc2\x3b\x85\x0e\xd1\x8d\x20\xc5\x2b\xf2\x36\xf8\xa5\x20\x37\xd6\x95\xb4\x56\xdf\xd2\x09\x4e\x37\x02\xf4\x28\x70\x54\xfd\x7c\x2d\xfc\x91\x2e\xf3\xd5\xe0\xd9\xa1\x80\x17\x02\x3e\x09\x38\x16\xf0\x4a\x10\x3d\x61\xdb\x82\xd6\x66\xc6\x23\x65\xee\xb1\xf6\xf7\x7b\x0d\x16\x7a\xea\x16\x22\xbf\xb0\x7c\xa6\x67\x7a\x26\x08\x05\x3d\x0d\x18\x16\x82\xd0\x0c\x1e\x88\x26\xf3\x89\xf5\x77\x58\x59\x0c\x33\x74\x46\x55\xf6\xf7\xad\xcf\x69\x71\xd5\x62\x29\xbc\x5c\xc3\x55\x9c\xf7\xe3\xa9\xf7\x51\xab\x45\x42\xa5\x26\x7c\x3a\xcf\x7d\x0c\x1d\x1c\x09\xa5\x88\xe6\x49\x5a\xa6\xd1\x29\x26\xf4\xad\xd8\x71\xf1\x82\xee\xe3\x03\xc7\xa9\x4e\xc4\x76\x50\x31\x73\xe7\xc4\x12\x51\x13\x1e\xac\xac\x9f\x96\xee\x56\xa7\xee\xd0\xd0\x6b\xd1\x9d\x15\x37\x77\xa1\x1e\x48\xdf\x31\xac\xbb\x25\x3d\x60\x32\x78\x5a\x85\x5e\x21\x63\x6f\x8c\xf3\x59\xd4\xee\xbb\xbd\x5f\xa5\x79\x6d\xed\x76\x07\x9f\xc7\xef\x0f\xab\x2c\xcb\xe0\x4d\x4e\x21\x9e\x8b\x9a\x34\x72\x4b\x90\xc0\x81\x31\x80\x87\xc2\xdf\xd9\xf7\x48\x78\xd3\xf4\x7d\x51\x35\x4d\xdf\x12\x18\x3e\x0b\xf2\x8a\xc3\x63\x4d\x30\xf2\x19\x81\xaf\xa2\x7c\x97\xee\xdb\x32\x69\x79\x22\x4c\xec\xbc\x19\x55\x26\xb6\xd6\x3b\x61\xa0\x01\xcf\x04\x79\x27\xe0\x7d\x8d\xd4\xbc\x15\x18\x7e\x16\xa4\xdd\x46\x5f\x45\x18\x7e\x15\xfe\x8a\xdd\x2b\x73\xca\x55\xe4\xee\x11\x26\x01\xc3\x4b\x41\x0e\x15\xba\x25\xa0\x16\x59\xad\x8d\x9e\xa3\xcf\x02\xb7\x73\xed\xfe\xb3\xc0\xd8\x7c\xb9\x73\x87\x10\xf2\x98\x16\x51\xd7\x74\xee\xf7\xa2\xac\xfc\xe6\x5c\xca\x81\xe6\x95\xc1\x17\x26\xb8\x6d\xd4\x97\xcc\xd8\x0c\xd9\xa0\x78\x8d\x17\x8f\x7e\xce\xcf\xe9\xb7\xfb\x2e\xb4\xdb\xe7\x62\x59\xf7\x31\xd4\xfc\x8d\x50\xed\x6c\x51\xf5\x35\x8f\x96\x8b\xd4\x56\x80\xbd\xe7\x62\x4c\x28\xb4\x91\xaa\x7b\x67\x9a\x82\x15\xb1\x5c\x2f\x8b\x5f\x04\x79\x29\xd2\xb4\xbd\x85\xd0\x6d\x1a\x86\xed\xc7\xbc\xda\x6b\x59\x96\xb8\x8d\x7d\x65\x87\xb4\xfc\x4d\x29\x5c\x1a\x49\x3b\xcb\x40\x21\x8e\xb7\x77\x40\x65\x56\x55\xf5\x3e\x8b\xae\xbb\x48\xbc\xee\x0d\x6f\x61\x81\x31\xfc\xda\x40\x65\xf2\x38\xd9\x66\xa3\xb4\x49\xf0\x40\x66\x37\x63\x4e\xcd\x25\x55\x34\x03\xc5\x1a\x55\x7f\xda\xe5\x42\xb1\x19\xa3\x53\xbc\x29\x9e\x7d\x48\x48\x73\xb4\x81\x3a\x77\xe0\xc1\x2b\x51\xf5\xa2\xf0\x41\x1c\x88\x8b\x30\x09\x8c\xf4\x09\xf1\x4e\x71\x31\xe9\x0d\x72\xfb\x58\x3c\x70\xa7\xa5\xdc\xa6\x26\x1f\xc5\x9d\xce\x18\x16\x84\x0d\x67\x5d\xf1\x29\x9a\x75\x67\x31\x5b\xc0\x9c\xcc\x3c\xde\xc0\xca\x3c\x9b\x28\xfa\x53\x32\x73\x2c\xd4\xcc\xcf\x62\x88\x58\x9a\xa2\x03\x42\x4c\xf7\x1c\xca\x86\xa1\x60\xd6\xf3\xb0\x94\x48\xfa\x18\xda\x3d\x42\xc8\x62\x38\x21\x22\x42\xd3\x30\x9c\x7a\x46\x09\x13\xb2\x40\x02\xc3\x34\x0c\xd1\xd4\xf1\x65\x48\x48\xbb\x67\xae\xb9\x27\x64\xe6\x49\xd5\x70\x85\x1e\x0b\xe4\xc9\xc7\xde\x64\x1e\x33\xde\x9a\xdc\x4c\xb4\x86\x8b\x23\xb4\x26\xbf\x0a\xad\xe2\x0e\xd7\x96\xff\x4c\xb4\x7a\x8d\xa3\xb9\x4e\x8b\x56\x48\x94\xb0\x60\x1a\x86\xed\xc4\x74\xc1\xb6\xb6\x32\x34\xb7\x04\x63\x2d\xae\x97\xa7\xa1\x0f\x32\x0c\xdb\x95\x51\x4a\x3b\x4a\xeb\x79\x4b\xb7\x67\xd5\xee\xd8\xb0\xc1\xcf\x62\x88\x10\x27\x55\xc2\x82\x02\xf3\xa3\xe5\x41\xcf\xa0\x28\x70\xdd\x7e\x22\x38\x91\xc0\xcd\x11\x7f\x9b\x55\x41\xbb\x6f\x4e\x78\xd6\x68\x11\xe2\x18\x47\x9c\x6c\x5c\x05\x11\x05\x5b\x3c\x92\x19\x20\x46\xc4\x28\x10\x3c\xe8\xa8\x31\x1e\x32\xc4\x71\x14\xac\xb9\x3d\x0e\x33\xcd\x07\x11\xd8\x78\x03\x4d\x3e\x6f\xc2\xac\x79\xb1\xa0\x03\x73\xfa\xd6\x50\xf9\x30\x44\x7d\x42\xb6\x4c\xd8\x43\xf7\x19\x29\x1c\xe5\x8f\x40\x31\xce\x50\xf0\xc6\xb7\xd9\x72\xbd\x6c\x15\x8d\x1b\xe7\x5b\xc9\x6a\x6c\xee\x4d\x2e\x3d\x6c\xb9\x7a\x9a\xa3\x5c\x56\xe2\x63\x33\xc4\x99\x61\x84\x48\x92\xa7\xd5\xf5\xf0\x5e\x0c\xdf\x0a\x77\x58\x25\x1f\xf3\xab\xa2\x59\x0e\x0a\x47\x94\xa1\x26\x80\x80\x16\x0b\x4c\xdc\xee\x12\xee\xbe\x17\x69\x6a\x5a\x1b\x1e\x44\x7d\x70\x43\xf4\xd6\x17\x77\xdf\xb6\xf1\xf0\xe5\xac\x49\x0d\xed\x1b\xc7\xa4\x12\xe6\xb4\x7d\x70\x84\x0c\xc4\x9f\x1b\x7e\x79\x48\x79\x45\x4f\x6c\xe7\x03\x3f\x9c\xfc\xc3\x3c\xff\x00\x0e\x5e\x36\x2e\x09\xab\x23\x69\xc9\xf9\x23\xff\x20\x34\x63\xd0\xdf\x84\x86\x44\x06\x71\x53\x21\x6a\xec\x35\x69\x8a\xec\x83\x96\x5d\x5d\x44\x5d\xec\x9b\x24\x12\x1c\x05\x22\x07\xa0\xcc\x5a\x31\xfb\xf2\x19\x4c\x9a\x6a\xb4\x34\x50\x57\xe6\x6b\x2f\x57\x6a\xc8\x8d\x73\xba\xf0\xb2\x59\x89\x14\xb4\x26\xc6\x0b\xe5\x42\x63\x97\x21\x5a\xd3\x16\x53\x09\x5d\xcc\x02\x7f\x66\xf9\x57\x81\x24\x1e\x88\x61\x8d\x74\x3a\x0e\xe3\x37\x71\x4d\x33\xc2\xbb\xa8\x30\x86\x26\x0c\x8c\x45\x17\xeb\x97\xd8\xbf\x94\x6e\x3b\x8f\x99\xbd\xd5\xc1\x06\xa5\xc4\x11\xda\x1e\x7d\x3f\x1f\x7d\x7f\xab\x64\xde\xb2\xab\x21\x1b\xbc\xd4\x02\xef\xe7\x2a\xa7\x39\x71\x1b\xed\x9f\x05\x68\x69\xc8\xde\xd6\x74\x28\x4a\x1e\x0a\xee\xde\xb7\x87\xc2\xbd\x9a\x73\x22\xc8\x0d\xc0\xde\xcc\xe0\x47\x60\xdf\x4a\xb4\x50\x77\xc4\x46\xc9\x37\x72\x27\x3a\xac\x36\xfe\x48\x94\x77\xf9\x6f\x09\xbf\xe3\x0d\x9e\x38\xea\x67\x8b\xce\xfa\x29\xa7\xa0\xd1\x68\x0c\x39\x46\xea\x2f\xf6\xbc\x9b\x97\x13\x9d\x80\x5f\x09\xad\x4f\x1e\x70\xf4\x59\x94\xec\xd2\x1b\xcd\x37\xa3\x06\xf2\x64\xed\xa9\xe4\xbe\x1b\x2f\xc4\xe4\x9d\x40\x48\x92\xcf\xa2\xb8\xc5\x0a\x09\x72\xe8\x62\xd5\x57\x2f\x5f\xb2\xfb\x1d\x88\x93\x43\x24\xf0\xe8\x3d\x1f\xe3\xa1\x8c\x28\xd5\xe4\xb4\x88\xb6\xd9\x15\x9f\x48\xd3\xdd\x5b\x69\xaa\x20\x36\x4c\xb2\x29\x6e\x0a\x0d\x43\x0a\xb1\xe3\x91\xc4\xae\x5a\xfb\xe2\xdd\x10\x98\x5b\xfa\x1a\xbb\x59\xc1\x6f\x9c\x05\x08\x43\xaf\x4d\x98\x45\x9c\x30\x54\x6e\x66\x98\x71\x40\x8b\x0b\x89\x7d\x52\x3d\x54\x5c\x0b\xf5\x66\x44\x32\xaf\x90\x9a\x68\xe1\x2f\xb6\x55\x63\xa3\x0f\x1d\x0a\xb0\x48\x83\xab\xba\x92\xaa\x2a\x32\x7e\x21\xd4\xb4\x19\xbf\x24\xa8\x51\x69\xba\x33\xf2\xae\xd1\x0a\xa7\xd7\xec\x67\x91\xa6\xfa\xf7\x93\x18\x9a\xb3\x3e\xba\xc9\xe8\x99\xd1\x74\xa0\x01\x8c\xaf\xf4\xba\x3f\xd6\x42\x7f\xc9\x17\xd4\x28\xa2\x54\xa1\x57\xd5\xcb\xa8\xe7\x94\x6f\x79\xa6\x14\xc7\xaf\xca\xc6\xe0\xcf\xa2\xee\xde\x7d\x9c\xaf\x75\xc7\xc9\x2d\xec\x7c\x54\x8b\xd2\x76\x50\x53\x2f\x9f\x88\x30\xac\xde\x63\x50\x8d\x3a\xe9\xa3\xde\xf6\x32\xd8\x18\x55\xa4\x31\xe6\xaa\x40\x9f\x05\x3c\xf1\xfe\xd5\xa2\x74\x07\x99\xa1\x28\x7f\x70\x55\xc2\x4b\x91\xc1\xc6\x51\xc1\xe8\xb3\xb0\x2e\x8b\x86\x4e\x18\x9c\xd9\xd6\xb1\x85\x3d\xe9\x41\x3e\x75\x67\x83\x38\x0c\xb5\xfc\x4d\x47\xaf\xf9\x38\x0c\x25\xa2\xf0\x9a\xff\xd9\x7b\x20\x8c\xa1\x3a\xc3\x99\xd1\xcf\x3e\x19\x7d\xcb\x3c\x15\x3e\x49\xb7\x44\x3d\xf8\xac\xe9\xac\x45\x9e\x86\x0b\x13\xde\x79\xe2\x55\x3a\x40\x69\x43\x50\xe8\x29\xca\xf1\x19\x68\xbe\x0e\xb2\x3f\xd7\x9e\x41\xe2\x1d\xb0\xcf\x3d\xe9\xfe\xa0\xaa\x5f\x74\x55\xf1\x62\xd1\xd0\x6f\x53\x85\xd4\xdd\x37\x37\xf7\xe4\x6a\x36\x08\xf3\x6c\x04\x67\x56\x97\x51\x5c\x88\x12\x8a\xf2\xa3\xb9\xd8\xdc\x3c\xad\xa5\x75\x98\x90\xfe\xe0\xbe\x46\xc3\xad\xcd\xa8\x35\x89\x3b\x1d\x2d\x1b\xf7\x07\xee\x46\x69\x6f\xac\x99\x74\x3a\x3e\x26\xb7\x26\xe4\x75\xbd\x4c\xe1\x4d\x92\xa6\x28\x31\x64\x67\xb4\x1e\x13\x05\x7b\x7b\x93\x34\xe5\x88\x69\xe5\xc6\x9e\x65\x2d\x92\xb2\xd2\x3d\xd5\x5e\xf6\x13\x88\x39\x61\xa2\x6c\x3c\x90\xf1\x84\xfe\x39\xa0\x18\x40\x88\x26\x40\x88\x2a\x20\x1a\xc6\x2e\xea\x23\x2b\xa0\xcc\xdd\xf1\xb7\xdc\x5c\xee\xfb\xcb\x91\xd8\xee\xaf\x0f\x6c\xcc\xb6\x09\xe2\x61\xee\x7d\x16\x94\x1c\x84\xed\xca\x73\x7e\xf9\xe6\xda\xc7\x2e\xbb\xe4\x42\xd2\x07\x71\x42\x5d\x32\x0b\x6c\x70\xca\x85\x62\x0b\xc6\x7d\xea\xd2\xa4\x4e\x85\x3a\x5c\xf8\xf2\x89\x49\x5a\x73\xa6\x95\x76\x97\xb6\x36\x69\x89\x62\x93\x4f\x37\x2e\xe9\x26\xc0\x40\x4b\x11\x72\x12\x56\x39\x6c\xe7\xbc\xa5\x0c\x95\x32\x61\x79\x19\x2c\x18\xcc\x19\xd9\xbc\x39\x39\x7b\xf3\xe2\xc5\xe9\xab\xd7\x47\x0f\xcf\xdf\x47\x4d\x77\x42\x24\x0c\x05\x71\x00\xba\x89\x62\x8c\x8b\x38\x51\xe6\x6a\x39\x72\x00\x6e\xa3\xb6\x4b\xbf\xd0\x09\x0a\xe2\x8b\xc9\x34\x30\xa8\x71\xff\xd5\xe9\xb3\xa3\x93\xf3\x07\x87\xaf\x8e\x5e\xef\xac\xf9\x9f\x64\x00\xc1\xe5\x9f\xac\x3b\x51\x32\xb0\x72\xe9\x8a\x39\x0f\xb0\x12\xb5\xd7\x79\x60\xca\x9c\x31\x65\xfb\x80\x1e\x5c\x31\xb2\x62\x70\xc3\x08\x9a\x31\xb2\x1f\xef\xc3\x82\x91\xfd\x8b\xbf\xed\x5f\xc2\xca\x05\xa1\x9a\x31\x08\xe2\x00\xe7\xef\x0b\xf7\xde\x6b\x13\x32\x63\x45\xcf\xd2\x54\xa7\x2c\x4a\x29\x18\x96\x8c\xcc\x59\xb7\x02\xcf\x34\x9d\xb3\x6e\x19\x0c\x70\xc9\x48\x6e\x31\xdc\x47\x78\x38\xdc\x77\x43\x0b\xf0\xa8\x3f\x1e\xa0\x1b\x96\xa6\x97\x2c\x4d\x97\x4c\xeb\x29\x57\x6c\xb7\x8f\x97\x5d\x2f\x31\x59\xda\x9b\xa5\x0d\x32\xc0\x84\xac\x5d\xcf\x19\x36\xb1\x38\x12\x13\xe9\x19\x12\xd2\x83\x19\x51\xa5\xbb\x8c\xd0\x9e\xd6\xcb\xd0\x84\x4c\x72\xbf\xb6\xe0\x26\x30\x8e\x6d\x79\x10\x24\x8d\xbc\x61\x88\x26\x0e\x8d\x67\xc5\x05\x35\xce\x9d\xaa\x32\xfe\xd2\xcb\xbd\x5e\x18\xa2\x36\x2b\xf0\x3b\x4d\x59\x19\xd9\x83\x0f\x5a\x3e\x22\x6a\x54\x2a\xb3\xd7\x37\x37\x56\xae\x49\x80\x86\x51\x2b\xe8\xac\x3b\x01\x0e\x60\x46\x82\x56\xd0\x99\x41\xd2\xe9\xf8\xab\x73\x73\x97\x40\x34\x8c\x7c\xb6\x09\xc6\x70\xc9\x8c\x66\x57\xc9\x62\xbe\xdf\x42\xc3\xf6\x87\x0f\x89\xcb\x76\xc3\x8c\x82\x50\xe9\x3a\x27\x7e\xc2\xe3\xa1\x8c\x18\xcc\x30\xc4\x43\x3e\x44\x5a\xa5\x5e\xad\x15\x71\xbf\x6e\xd4\x09\x06\x3e\xea\x8d\x89\xfe\x57\x4a\xb2\x60\x2b\x57\x5c\x06\x49\xc7\x66\x77\x7b\xe7\x51\xe9\x0b\xe9\x45\xba\x4f\x5a\x7e\x29\xa7\x32\x47\x47\x86\xae\xe2\x4e\xa9\x7c\x44\xed\x70\x4d\x4c\x47\x7f\xa0\x3a\x0c\xa7\x6e\x10\xdc\x38\x38\x40\xdd\xe0\x23\x48\x7f\x20\xee\xd6\x55\xf1\xbd\x83\x81\xe8\x74\x70\x2e\x03\x17\x5b\x8a\x62\x1c\x86\x88\x8f\xc4\xd8\x5f\x1d\x6a\x6f\x09\x73\x81\x56\x19\xb9\x62\x95\xf0\xf1\x16\xe8\xdb\x17\x05\xec\x77\x2d\x8e\xb7\x09\xb9\x60\x19\x6c\xf4\x73\x74\xc1\x5c\x3d\xd7\x8d\xfa\x6f\xe1\xb4\x59\x72\x64\x05\x56\x71\xdd\x84\x98\x4c\x14\x92\xd8\xc4\x9f\xf1\xa7\xe1\x1c\x7e\xdf\xed\xa5\x69\x7c\x8f\x4c\x86\x6a\x18\x04\x4e\x8e\x8e\x10\xaf\xba\xf8\xc5\x18\xdf\xfd\xfe\xfb\x83\x9f\xee\xa4\x29\xbf\xf7\xfd\x9d\xdb\xfd\x9f\xd2\x34\xee\xe8\x65\x31\x49\x53\x24\x6a\x99\x3b\x7d\x9d\xfd\xce\xed\x83\x5e\x9a\x8a\x7b\xdf\xff\x70\xfb\xbb\xdb\x43\x35\x64\xfe\x44\x56\x8c\x23\x1e\xe9\x77\x8b\x10\x31\xc4\x9d\x03\x1c\x89\x3d\x53\xa2\x83\xf8\x9e\x69\xe9\xee\xdd\x7e\x0f\x77\xee\x7c\xff\xfd\xed\x3b\x59\x06\x67\x8c\x6c\x26\xa6\xfa\xe8\x9a\x21\x2d\x7c\xd9\xca\xcc\x5b\x0f\x67\x70\xc4\xc8\x99\x6f\x01\x4e\x99\xb7\x77\x9f\xb3\xfa\x55\x9c\x06\x2c\x25\x5f\xec\x81\xe4\xee\x86\x5f\x08\xb6\x6f\x1e\x53\x78\x73\xca\x2a\x8e\xd8\xf5\x0a\xc0\xfa\x73\x45\xf9\x82\xf7\xee\xd8\xcd\x7e\xd8\x40\xc9\x39\x73\xbc\x50\x1a\x2b\xa2\x69\x9a\xfb\x80\x6a\xb9\x48\x7d\x8f\xf8\xc8\x4a\xc3\x66\x57\xeb\x08\x29\x72\xc4\xcc\x61\x0f\x70\x85\x3b\x79\xa8\x56\xef\x9e\xad\x72\x17\xea\x3c\x46\xd7\x47\x56\xdb\x34\xf8\xc2\xea\x27\xc7\x2c\xcf\xd9\xef\xee\x17\x9c\x46\xa3\xe2\x36\x57\x2f\x2e\xd3\x53\xdd\x4b\x29\xd6\xab\x84\x6c\xe2\x28\xf8\x21\xc8\x40\x65\x10\xfc\xa0\x49\x57\x10\xe4\x64\x53\x41\x70\xeb\x6e\x7c\xcf\xf2\xbc\x43\x46\x82\x5b\xbd\x80\x10\x12\xc4\x45\x96\xfd\xee\x3e\xe8\x64\x0c\x2f\x6c\x3f\xdd\x87\x00\xc3\x27\x46\xda\xed\xfd\xee\xfe\xe8\x05\x1b\x87\xa1\x09\x0a\xe5\xde\x2c\xd7\x35\xa5\x8e\x77\x0d\x06\x0d\x23\xbc\x6f\x9c\xdf\xf5\x50\x06\xdb\x23\xca\x05\xe3\xd2\x59\xcc\xd2\x95\xc5\xce\x78\x1e\xc4\x17\xde\x43\x32\xdf\xfe\x69\x1d\x18\x6f\x6f\x0b\xf9\x34\x0d\x62\x3d\x6c\x39\xea\x8d\xd3\x34\xb8\xb0\xcf\xfd\xb1\x1e\xf2\xab\x26\xdb\x8c\x95\xd1\xec\x65\x72\x71\x53\xe7\x69\xe9\x88\x2c\x1d\x89\x26\xc7\x96\x1f\x32\xf8\xa1\x4d\x82\x60\xa4\xc6\x2e\x74\xe1\x84\xc4\x5b\x37\xd4\xd8\xca\xcc\x01\xa9\xfd\xd8\xcf\x6d\x60\x06\xe3\x6c\x95\xc8\x9e\x86\xaf\xed\x48\xd8\xc8\x2c\x3e\x61\xf4\x91\x35\x75\x41\xea\x6c\xb3\x45\x7c\x99\x90\x20\x00\xa9\xfb\xa9\x67\x47\x8c\xb5\x80\xb8\x0b\xd6\xc6\x0a\x65\x0e\xdc\xe9\x02\x66\x1b\xb6\x4d\x35\xa2\xb2\x19\x6a\xc7\x69\xda\x9e\xa4\x69\x8e\x01\xae\x8b\xed\x2f\x2c\x4d\xdb\x87\x2c\x4d\x3f\x31\x9c\xa6\x95\xfe\xb7\x8f\x99\x17\xe5\x6d\xe3\x90\x10\x89\x04\x18\xc8\x54\xf5\x58\xa8\x5e\x68\x6d\x65\x22\xa2\x09\xef\x50\x43\x4e\x0c\x9d\xf5\xc8\x9b\x54\xd6\x95\x5b\xb2\xa3\xda\xd7\xfc\xe4\x15\x2d\x7f\x35\x07\x17\x36\xaf\x8e\x5e\x1c\x1f\x3e\x38\x3a\x7f\x76\x74\xf4\xe2\xec\xfc\x56\x2f\x3a\x64\xf0\xea\xe8\xf1\xd1\xbb\x17\xe7\xfe\xd3\xd9\x9b\xfb\x67\xaf\x9f\xbe\x7e\xf3\xfa\xe8\xec\xfc\xcd\xc9\xc3\xa3\x47\x4f\x4f\x8e\x1e\x9e\x3f\x38\x7c\xf1\xfa\xcd\xab\xa3\xe8\x13\xcb\xb4\x48\x91\x68\x5e\xb5\x20\x89\x96\x7e\xa8\x42\x75\xd9\x0d\x94\x66\xc6\x5a\x85\xaf\x49\x7b\x20\xe0\x80\x10\x3a\xac\x6a\xe7\x6e\xdc\x0b\x1f\x67\xc9\x99\xae\x1a\xef\x90\xad\x64\xc2\x19\xce\x78\x18\x1e\x6f\xb5\xa3\xc1\x1d\x24\xf3\x78\x19\xd8\xc3\xf4\x0f\xca\x24\xf9\xf5\xb6\x09\xdf\x43\xbe\x83\xe4\xf0\x81\x15\xc2\x3d\xd3\xee\xe3\x0c\x4e\xea\xc6\x5b\x1f\xae\xd1\xac\xdf\xe6\x8b\xc7\xf2\x03\x89\x79\xf8\x28\x6a\x3d\xfa\x9d\xdb\x5b\x6e\x69\xe2\xdb\x5b\xd0\x76\x38\x2d\x5d\x7b\x6b\x49\xd5\x5c\x4c\x5b\xb6\x87\x74\xda\x4a\x84\x4e\xd1\x74\x5f\xa8\x39\x95\x2d\x35\x8f\x79\x2b\xf6\xe1\xd8\x5a\x42\x9a\xbb\x1b\x0a\xc9\x9c\x67\xba\x51\xc7\xe6\xdb\xc6\xd1\xa7\xc1\x9f\xd0\x7e\xff\x8b\x69\xd1\x78\xe5\x4e\x5b\x82\xb7\x18\x9f\x88\xe5\x2a\x56\xec\x62\x41\x5b\x92\x4e\x28\xbb\x32\x97\x3a\xb9\xaa\x2f\x58\x31\xb4\x6c\xf0\x8a\xa1\xc0\x5c\x11\x16\x40\xbf\x8e\xdf\x1e\xc2\xa3\xed\x73\x1d\x57\x8e\x03\x71\x62\xcd\x75\x74\xe8\x18\x3f\x2d\x2e\x68\x2a\xdc\x39\xf9\x90\x17\x57\xca\x47\x25\xa9\x91\x62\x4d\x70\x1c\xe7\x93\x5a\xd9\xa8\xcb\xe0\x9c\x48\xe4\x23\x62\xb8\xd0\x84\xc6\x0a\xed\xe1\xe4\x36\x1c\x2c\x0d\x34\x1b\xf0\xb9\xe4\x92\x17\x69\x0b\x27\xdf\xe5\xa7\x0b\x18\x12\xc0\x7c\xc4\x49\xe1\x55\xbe\x81\x28\x4b\x8a\xf9\x2d\x2b\x13\x58\x6b\xd5\x3f\x21\xbd\x81\x3b\x68\x89\x26\xc4\x55\x81\xdd\x86\x5d\x2e\xaf\x4f\x46\xbd\x31\x1e\xac\x47\xc9\x98\xcc\xc0\xb0\x98\x59\x18\xa2\x72\xc5\xaf\x19\x62\x90\xa8\x72\x1a\x86\x18\x63\x2d\x77\xfb\xed\x4f\x2d\x1c\x26\x43\xdd\x5a\xb4\xce\xc6\x9e\xf1\x3e\x65\x5b\xce\xc2\xac\xc1\x3d\xfd\x39\x23\xb1\x83\x4b\x92\x0f\xe2\x16\x2b\x5f\x15\xf3\x90\x11\x31\xba\xc5\xc6\xf0\x88\x91\x87\x2c\x0c\x1f\xb2\xea\x55\x31\x8f\x98\x31\xf9\x3f\x62\xa3\xa7\x6c\xdc\x26\xe4\x39\x73\x37\xc5\x3c\x62\xf0\x94\xc1\x73\x56\x32\x50\xdb\x4c\xe4\x39\xcb\x6c\x89\x37\xcc\xdc\xb4\xf7\x88\xc1\x1b\x06\xb7\xb4\x6e\x24\x75\x53\x79\x30\xfb\xfb\xa6\x27\x31\xc7\x36\xfb\x7d\xd3\x40\xcc\xf5\x43\xd1\xc8\x7d\x06\x2e\xa9\xd2\xd0\x7d\x36\x76\x59\x33\x7b\x19\xcd\xe7\x2d\x90\x3c\xde\xc1\xbf\x35\xd6\xbd\x79\x75\x8c\x82\x8b\x61\x4c\xfa\xe1\x05\x39\x08\x27\xe4\x76\x00\xc1\x5c\xa9\x55\xb4\xbf\xaf\x55\x4f\xcd\xdc\x13\x1a\xcb\xc9\xfc\x45\x2c\xe3\x65\x02\xb2\x62\x6c\x58\xc5\x6a\xce\xe3\x25\x25\xc1\xe4\xaf\x07\xbd\x69\x00\xb4\x29\x58\x91\xdb\x80\xb1\x91\x4d\x82\x8b\x00\x83\xec\x10\xde\x51\x9a\xa9\xb6\x69\x37\x11\x52\xa5\x69\xde\xea\xbe\xa9\xca\x74\x49\x77\xc7\xec\x45\xcd\x25\x9d\xa5\x69\x70\xdb\x86\x21\xb8\xa4\x0a\x05\x13\x73\xa7\x60\x4c\xfa\x41\xe1\xc1\xe0\x46\x74\x56\xea\x30\x0a\x74\x4d\x01\xc6\x69\xda\xa6\xa3\xcf\x7a\x26\xac\x30\x91\x8f\x5e\xb7\x9b\xe8\x86\xff\xf1\x22\xc0\xdd\x75\x42\xa5\x1e\x91\x97\x33\x9a\xaa\x6c\x6c\x26\x26\x17\x5a\x7b\x35\x7d\x8b\x4d\xdf\xbe\xf0\xbd\x3d\xda\x8f\x6f\x2e\x26\x5b\xed\x45\xfb\xfb\xff\xf6\xaf\xff\xed\xff\xfe\xb7\x7f\xf9\xb7\x7f\x0d\xb0\x71\xc9\x4c\xd3\xe0\x2f\x7f\x7d\xd8\xfb\xeb\xfd\x7e\x53\xe6\xf8\x2f\xff\xed\xff\xd2\x19\xe3\xc4\x08\x43\xfd\x89\x81\x84\xd4\x8d\x34\x65\xff\x12\xb8\x5d\x05\x5b\xb7\x86\xf3\x57\xe6\x4f\xb1\xc6\x49\xc2\x2e\x39\xbc\x65\x3b\xae\x0e\x7c\xc2\x48\xfb\x2b\xab\xdf\xd0\xc9\x66\x28\x0e\xc3\x7e\x9b\x90\xaf\x0c\x6d\x2e\xa2\x7e\x06\x5f\x19\x7a\xcb\xf2\x5b\xe5\xb7\x6f\xdf\x2b\x95\x7e\xeb\x04\xfe\xe0\x22\xbf\x5c\xfe\x76\xc5\xf8\xdc\x37\xb1\x24\x61\x73\x11\x1d\x64\x18\x77\x2f\xb6\x6e\xfc\xcb\xc0\xdc\x68\x28\x89\xbd\x82\x12\x15\x16\x9b\x91\x1c\x93\x1f\xc0\x58\x7e\xe8\xec\x72\xce\x3e\x7e\x5a\x2c\xb9\x58\x7d\x96\x89\xca\x0f\xde\x04\x3b\x82\x68\x99\x9b\x07\x0d\x7c\x7e\x68\x9b\x81\x65\xa0\xf0\x48\x1a\x24\x69\xaa\xaf\x4d\x4e\x14\xb2\xf9\x28\xc6\xdd\x8f\x82\x71\x64\x6e\xba\xc0\x35\x51\xc0\x2f\x6d\xe9\x82\x2f\xf0\xad\x4d\x68\x10\xa4\x0f\x8c\x5c\xaa\xee\x0c\x26\x24\xe9\xce\x06\xfc\x9e\x18\xe4\x34\x61\x0d\x33\x32\x2d\x79\xd8\x8a\x4e\x67\x8c\x8d\xdb\xc3\x89\x42\xb3\xfc\xa6\x75\x86\x66\x18\x47\x26\x09\xe6\x64\xe1\xeb\x5e\x91\xde\x60\x7e\x6f\x35\xc0\x6b\xb2\x18\xad\x3a\x9d\x31\x68\x01\xcc\x39\xb6\xcf\x60\x8d\xd3\x14\xc9\xd1\x7a\x4c\x66\xa3\x75\xe1\xb8\x2b\xb3\xe8\x2b\x83\x77\xdf\x30\xfb\x40\x0c\x13\x37\xa2\x75\x63\x18\xfe\x39\x4b\x4c\xa8\xfe\xc8\x9e\x20\x4d\xb6\x87\x3d\x23\x49\xf3\xc5\x7f\xb0\x28\x8c\x53\x33\x98\x93\x87\x1c\x4d\xb0\x19\x09\x9b\xa1\x45\x18\xa2\x19\x91\x14\xcd\x20\xb9\x77\x50\x2a\x7e\x90\x17\x3f\xc0\x3e\xee\xc3\x3c\x4d\xd7\xc4\x9e\x19\x09\xc3\xe7\x1c\xcd\xb1\x01\xab\xb5\xce\xac\x11\x25\x89\x42\x3e\x14\x1c\xc6\x03\x7a\x6f\x35\x58\x75\x3a\x38\x26\x8b\xe1\x0c\x4d\x46\xab\x31\xac\x70\x64\x7e\x63\x89\x24\xac\x20\x76\x07\x98\x75\x2d\x8c\x20\x41\xe6\xce\x61\x03\x63\xe3\xe8\xe7\x6c\x43\xeb\x41\xdb\x6a\xf9\x66\x3f\xdc\x9f\x11\xf0\x55\x3f\xe2\x48\xc0\x0c\x46\x8e\x11\xc1\x6a\xac\x65\xba\xc8\xbf\x16\x4d\xf9\xd9\x70\x3d\x24\x2b\x90\x19\x3c\x63\x64\x7f\xf4\x4f\x1f\x7a\x7b\x1f\xd6\xbd\xde\x0f\x47\xe3\x7d\x78\xaf\x53\xba\x1f\xd6\xb7\x7b\xbd\x83\x0f\xeb\x47\x8f\x7a\x47\xfa\xff\x9d\xfe\x78\xff\x12\x7e\x66\x24\x38\xbd\xa2\x72\xb6\x10\xd7\x51\xcb\x98\x8f\x5a\x9c\xd2\x69\xd2\xba\x66\x53\x2a\x5b\xcc\x1e\x4c\x4b\x5a\x4a\xb4\xbc\x6b\x19\xbc\x64\xe4\x79\xac\xe6\xdd\xd9\x42\x08\x09\xbf\xe4\xa6\xcc\x99\x14\xcb\x07\xce\x16\x01\xbf\x36\x5a\x4c\x54\xe7\xe0\xa0\xf3\xc3\xf7\x7f\x43\xea\xee\xc1\x1d\x9c\x81\x8a\x77\x44\xb5\xb0\x32\x84\x22\x72\xf8\x92\x21\xb5\xff\x43\xaf\x87\x23\x75\xef\x5e\x1f\x54\x87\x98\x14\x8a\x07\xea\xde\x77\xdf\x7f\x3f\xe0\x1d\x72\xfb\x0e\x56\x36\xf5\xf6\xf7\x39\x58\x5e\x32\xc4\x3b\xb7\xef\xfc\x4d\xed\x23\xd5\xb9\xfd\xa3\x96\x90\x68\xdc\x8c\xb1\x5a\x46\x11\x04\xa9\x6f\x39\xb8\xf7\xcc\x41\x6d\x6f\xc0\xb9\xcb\x07\xc5\x41\x9c\x92\xfd\x45\x76\x3a\x46\x6e\x12\xf7\x88\xb1\xa4\x84\xa1\xb8\x4b\x8c\xd1\x26\x0c\xe5\x5d\xee\x03\x1a\x6d\x97\x31\x06\x18\x42\xd0\x9d\xef\xbe\xef\x1f\x84\x0c\x0f\x9d\xeb\x3c\x42\xfd\xde\xc1\xed\x50\x60\x6b\x93\xb1\x6f\xcc\x19\x67\xcc\xae\xbc\xc9\x26\x30\xc8\xbd\x3d\x6c\x8f\xb0\xe6\x69\x5e\x26\xa2\x99\x71\x9b\x77\x0b\x8b\x91\xfe\xc1\x8f\x6e\x3b\xe6\x87\x03\x03\x67\x4a\x7a\x03\x7a\x37\x1f\x1e\xed\x74\x30\x92\x44\x8d\xe8\x18\xdf\xed\x1f\xfc\x18\x86\xee\x1a\xfe\x5f\x98\x16\x35\xed\x46\x03\xf1\x36\x3d\x48\xc8\xda\xd4\xb2\xce\xf3\x05\x7b\x01\x1e\x24\x77\x45\x2e\xe2\x1d\xf4\xbf\xfb\xe1\xbb\x1f\x6f\xdf\xf9\xee\x87\x3f\x6a\xef\x1e\x61\x1a\x54\x33\xbb\x8e\x6d\x5b\x0b\x92\x74\xfa\x1a\xac\xb3\x3d\x76\xef\x25\x43\xa8\xa8\x6e\x2f\xc6\xfb\x0b\x2f\xdf\xbf\x8a\xf9\xa5\x13\xf0\x7f\x66\xd8\xb4\x14\x77\x88\x2e\x85\xff\xb6\x00\x46\x66\xd0\xd0\xb0\xe6\x58\xf9\x60\x59\x18\x76\x3a\xf1\xbd\xa2\xfe\xe6\x9a\xd9\x0c\x49\x42\x58\x81\x24\x73\x12\xc3\x8a\xdc\xbe\x33\x18\xac\x0c\x3a\x9a\x61\x4f\xc9\xea\x2e\x99\x0c\xfb\xd1\xea\x1e\x99\x74\x0e\xee\x0c\x0f\xee\x44\xab\x3d\xa3\x3f\xcd\xef\x4e\xb1\x3d\x0d\xac\x33\x5e\x91\xf9\xde\x14\x6e\xc8\xed\x3b\x7b\xd3\x41\x01\xea\x5f\x19\x9a\x76\xae\xfe\x7a\x83\xb1\xa6\xd9\x2f\x19\xba\xda\xbf\xc1\x59\xe5\xfb\x1c\x1b\x7b\x83\x8a\x51\x0c\x0b\x48\x08\x59\x63\x33\xb3\x9d\x4e\x92\x65\x9d\x4e\x0c\x9d\x0e\xcb\x72\x81\x3f\x67\x43\x20\x1b\x56\x82\x3d\x7b\x35\x68\x3c\x99\xd5\xa2\x5b\x2a\x54\x39\x26\xca\xf6\xb1\xac\x3c\xf2\x0a\xcd\x8f\xa2\x65\xc0\xe3\x8a\xf7\xaa\xb0\xaf\x4f\x68\x3c\xa5\x32\x09\x30\xb0\xb8\x2e\x92\xc6\xb1\xb7\x26\x4e\xe2\x9a\x35\xb1\x26\x58\x05\x18\xd6\x7f\x90\xa5\x14\x04\x22\x89\xc9\xfe\x87\xce\xfe\x25\xcc\x62\x4b\xff\xd1\x77\x18\x16\x71\xa3\x91\x37\x1e\xa9\xbd\xfe\x38\x4d\x91\x7b\xca\x4f\xfb\x23\x34\x8c\xfe\x3a\xfa\xf0\x61\x1a\xef\xcd\xc6\x9b\x83\x0c\x6f\x82\x8e\xea\x04\x19\x0e\x20\xb8\x64\x81\x1e\xf1\x3c\xde\xe1\x81\xdc\x9a\x52\xad\x37\xbd\x79\xf5\xf4\x81\x58\xae\x04\x37\xee\x70\xa5\x43\x7e\xf9\x39\xc7\x0c\x56\x4d\x73\xa5\x8a\x08\x00\x31\x04\x2d\x2d\x2a\x93\xef\x06\xdf\xae\x9f\x96\x34\x02\x8d\xb8\x03\x39\xc0\x94\xe4\x1b\x4f\x68\x11\x23\x4d\x44\x60\x5e\xf0\x16\x9a\x65\x30\x8d\xc9\xfe\xa8\xfd\x0f\x08\xff\xf3\x38\xfd\xeb\x41\x6f\xff\x12\xae\x62\xb2\x09\xda\x41\x14\xfc\xf5\xa0\x1f\x40\xf0\x0f\xe6\xe9\x87\x00\x02\x64\x9e\x7e\x0c\x20\xc0\xe6\xe9\xa7\x00\x82\x7f\xd6\x4f\x3f\x1c\x05\x10\xfc\xf5\xa0\x17\x44\x41\x27\xc8\xe0\xa6\x11\xd2\x57\xb1\xbd\xc2\xaf\xf1\x23\xe5\x0d\xf0\xca\xbb\x3e\x8d\xe1\x26\xc6\x19\x5c\xc6\xdb\xbe\xe5\x34\x97\x95\x8c\x70\x42\xf2\x4b\xc2\x43\x8d\x72\x5a\x6c\xb8\x2b\x3c\x41\xd0\x64\x48\xd8\x0b\xda\x5d\x92\xb9\x8c\x47\xfa\x22\xc4\xec\x69\x9a\x05\x68\x42\xa9\xad\x62\xc4\xbb\xf6\xd2\x0e\x8c\x9d\x3d\xca\xa4\xd9\xa5\x46\x02\x1b\xc0\x14\x2e\xe2\xed\x80\x88\x2e\x32\x86\xe7\xde\x3d\xb8\x8c\x51\xf9\x83\xbd\x59\xac\x61\x40\xea\xee\xf6\x6a\x0c\x4e\x84\x6a\x51\x2e\xd6\x97\xf3\xe2\x00\xb5\x5e\xe9\x67\x31\xf9\x79\x2b\xfa\x5f\x1c\x57\xec\xea\xbb\xd6\x09\xf8\x95\x18\xc9\x18\x4d\x62\x0d\x70\xd7\x37\x5c\x0e\x78\x12\x14\x05\xb6\x95\xc7\x75\x5c\x8a\x7d\x62\x02\x9e\x48\xa2\xba\xbe\x62\x23\x15\x21\xbb\x91\x6e\xcd\x11\xb9\x50\xe3\xfc\xf0\x5c\x3a\xf1\xb1\x4d\x08\x1d\xf2\xae\x06\x7d\x11\xd0\xc4\x24\xf9\xe8\x25\x26\x4c\xa1\x7b\x1d\xbb\x08\x88\x47\x71\xd9\x00\xea\x9d\xce\x8e\x62\xd8\x26\x22\x03\xb7\x53\xb0\x15\xa3\x62\xeb\x78\x5b\xaf\x24\x5c\xf6\x72\xe1\x72\x66\x37\x3c\x17\x64\x64\x22\x1b\xc7\x31\x9a\xed\x80\x72\x90\xc7\xcb\x59\x80\x0d\x89\xf9\xe6\xd5\x71\x59\x17\xca\x5c\x72\xb9\x50\x74\x11\x67\x18\x72\xf1\x37\xc1\x6c\x86\x96\x28\xc1\xb8\xd1\x26\x87\x94\xa6\xe9\x09\xf6\x62\xad\xf1\xd8\x36\xe4\x38\x71\x02\xa9\x11\x44\xbd\x77\x45\x7e\x58\xd5\xb0\x44\x13\x91\x02\x09\x22\x63\x74\x88\x1c\x40\xb1\x2b\x86\xab\xa2\x6b\x9a\xa2\x49\x5d\x9c\x4d\xd3\x76\x9e\x62\xed\x4e\x5b\x28\x7b\xf4\x65\x45\x27\x8a\x4e\x5b\x09\xfd\xbc\xa6\x7c\x42\x5b\xd7\x4c\xcd\x5b\x16\xbe\xad\x83\x00\x0f\x16\xa5\xa5\x16\xdb\x2e\x74\x82\xc0\xad\xb3\x49\x9e\x90\x39\xc1\xc7\x08\x21\x2d\xc6\x5b\x09\xbe\x46\x09\xac\x71\x18\x96\x6b\x58\xbb\x82\xc9\x68\x3d\x36\xa5\xac\xb0\x7e\x19\xa3\xc5\x76\x0c\xda\x64\x18\x0c\x35\x6e\x25\x7e\xeb\xac\x87\x87\x3e\x3e\x47\x1f\x47\x49\x94\x74\x0c\x27\x3d\x8d\xc9\x51\x5c\x32\x01\x3d\xe0\xe8\x34\x86\x8d\x3d\x24\x57\xf3\xf0\xbb\x8e\xd1\x96\x9a\x73\xe0\xef\xc2\x99\xc4\xde\x4b\x28\xa7\x0c\x45\xd7\x55\x31\x6c\x3b\x60\xf0\xd7\x1e\x6a\x75\x1e\x67\x60\x8d\x26\x15\x03\x72\x53\x6b\x7d\x3c\x28\xe4\x5a\xdf\xa2\xd9\x0c\xf3\x44\x87\x13\xd3\x96\x20\xbd\x81\xb8\x2b\x73\xba\x28\x47\xc2\x04\xda\x23\x84\xf0\xa1\xf4\xb7\x0d\x09\xe8\xe3\x48\x74\x3a\x03\x5a\xed\x4d\x45\xab\xff\x7b\xba\x92\x77\x43\xda\x6e\x68\x45\x80\xdf\xcd\xaf\xb9\xe0\xf6\x1c\x37\x1d\x71\xdf\x99\x3c\x80\x8b\x49\xab\x90\x10\xbb\xb9\x71\x49\xd5\x61\xcd\xbb\xe9\x3f\xd0\x1b\xa3\x28\x68\xc8\xe4\x5d\x12\x9d\x0e\xa6\x05\x70\x64\x2e\x03\x9b\x44\xbb\x6a\x0a\xd3\x34\xcc\xe3\xe4\x3f\x05\x32\x0e\x2c\x9d\x4e\x1d\x30\xed\x9e\x3f\xc9\xd1\xcf\x20\xa9\xcc\xcb\x2e\x94\x2c\xb5\xaf\x95\xa3\x1c\x4d\x04\xe1\x79\x2f\x18\x69\xf7\x21\xb6\x5d\x99\x10\xb3\x2a\xd7\xa4\x37\x58\x17\xac\x74\x6d\x85\x7a\x31\x5a\x8f\xb1\xeb\x53\x1c\x86\x88\x0d\x85\xc7\x9e\xf5\xde\x9e\xc6\x1f\xc4\x48\xbb\x07\x9e\xce\x4f\x30\x1e\xb0\x34\x15\xe5\x95\xef\x17\x7c\x86\x81\x57\x11\x2d\x11\xb2\x62\x3f\x2a\x51\xef\x5d\xfd\xf6\x77\x9c\xd8\x41\x8a\x82\xfd\x4a\xd2\x1b\xc8\xbb\xc5\x26\xbd\xd6\x0d\xac\x12\xca\x46\x72\xec\x54\x07\x69\x74\x06\xad\xe1\x8d\xa8\x01\xf5\x3d\x13\x73\x15\x6f\xf2\x51\x51\xe8\x81\xc2\x36\xd6\x4f\x46\x2d\x4a\x08\x7f\x9b\x57\x56\xeb\xbf\x33\x36\xed\xba\x72\x7f\x7b\xf6\xcd\x79\x61\x05\x5b\xdc\xa8\xd9\x52\x72\x1b\x6f\x2d\x64\x8e\x10\x25\xd2\x9a\x89\x9c\x45\xc1\x86\xf6\x75\x21\xa3\xab\x57\xe8\x57\x0e\xf0\x9d\x39\xa9\xc1\xc5\xfa\xca\xc0\x87\x85\xfb\x76\x6e\x1f\x0e\x2c\x2b\x02\xc4\x7d\xbb\x40\x11\x3c\x2e\xab\x99\x0b\x33\xb3\xc9\x76\x1a\x03\x8b\xe1\x34\x2e\x84\x11\x9b\x58\x8a\x79\xd2\x74\x8a\x48\x41\xe3\x6a\x1a\x8d\xb7\xd6\x92\x22\x76\x29\x81\xb4\xf3\xb6\x8c\x91\x9d\xe5\x4e\x40\x82\x8e\x79\x73\xec\xb0\x10\x57\xac\xc0\x17\x9a\xdb\x6c\xb7\x3a\xad\x28\x6a\x94\x36\x6a\x2e\xb0\xde\xaf\xf6\x31\xcb\x60\x53\xcb\x1c\x1d\x69\xce\xff\x98\x35\x1e\x01\xe7\x71\x63\xb2\x88\xd3\xf4\xdf\xef\xc7\x5b\x32\xe8\x91\xd2\xd6\xd4\x36\xea\x85\x21\x5a\xa2\x52\x00\xa8\x91\xf5\x91\xd2\x5c\xe5\x42\x4c\x6f\xb6\xc7\x4d\x08\xf9\xc4\x91\xd4\x99\x4c\x60\xb7\xb9\xd5\x00\x8d\x07\xb5\x88\x51\x9e\x60\x37\xbc\x44\x6c\x0c\xda\x28\x30\x61\x9d\xb9\xda\xb3\x71\x37\xd3\x94\x9b\x7b\xad\xaa\xc9\x10\xc4\x2b\xbd\x0e\xcd\xf1\xec\xfd\x2f\x7b\xd7\xd7\xd7\x7b\x33\x21\x97\x7b\x6b\xb9\xb0\x2a\xc4\x74\xa0\x19\x7a\x42\x15\x79\xf3\xfa\xd1\xde\x8f\x66\xef\xe2\xbe\x42\x14\x36\xba\xb3\xd1\x0c\xf5\xa0\xd8\x55\x03\xd7\x13\x93\x6c\x1c\x32\x31\xb8\xc5\x4c\x31\x06\x1e\x97\x3d\x16\x04\xf6\x5e\x98\xe7\x31\x7c\x8c\x49\xc3\x14\x6a\x76\x64\xaf\xbd\x99\xc4\x19\x7c\x89\xcd\x2e\xad\x31\x03\xc1\x61\x4c\x44\xf7\xcd\xab\x63\x78\x11\x93\x8f\x71\xb7\x56\x16\x3e\x99\x54\x5f\x1c\x8e\x73\xc5\xf8\x55\x83\xd6\x1b\x60\x78\x10\x97\x8d\x74\xaf\xdd\xdb\x4a\x5c\xc3\x89\xd6\xe7\x0e\xf7\x7e\x8d\xf7\xbe\x8e\xf7\xe1\xa9\x7e\xfb\x30\xed\xec\x75\xf3\xa4\x37\x5a\x39\x9e\xee\xc3\xf3\x98\xec\xff\x13\xea\x7d\x49\x7b\xef\xf0\x3e\xdc\xd2\x6f\xa3\xde\xde\x0f\xe3\xce\xad\x7d\x78\xa8\xdf\x3e\x4c\xf5\xe3\x23\xf3\xe1\xc3\xf4\x70\xef\x91\x56\x84\x75\xd2\x7d\x53\xe9\xba\xd7\xeb\xf5\xcc\xff\x9f\xcc\xff\x43\xf3\xff\x61\xeb\x2f\x7f\xdd\x8f\x86\xff\x38\xfa\xf0\x61\x3c\xde\x87\xcf\xdf\xce\x5a\xca\xf9\xd8\xb6\x63\xb2\x1a\xeb\x66\xff\x51\x6b\xdc\x49\xb7\x52\x6e\xed\x5f\xc2\xd7\xbc\xd6\x4a\x7d\xe3\xfd\x4b\x78\x5b\xd7\xa8\x72\xcd\xd0\x98\x3e\x46\x41\x29\x80\x75\xcf\x9e\x73\x0d\xc6\x41\xbb\x31\xaa\xb5\xe3\xb1\xc1\x53\x7e\x15\x2f\xd8\xb4\x35\x17\x89\x0a\xcc\xbe\x29\x92\xe4\x9d\xc6\x64\x27\x30\x9a\xb0\xfd\x3b\xb2\x2b\xb3\xf7\x42\x64\x1e\x7f\x8e\x4e\x4c\x64\x10\xfd\xf4\x2d\x7b\xa5\xea\x2a\x71\x2c\xae\xa9\x7c\x10\x27\x14\x15\xba\xf0\x7b\x06\x41\x37\xc0\xa5\xfb\x7d\x4b\x36\x37\x51\x36\x7d\x69\xee\x4c\xc7\xe0\x04\x96\x67\x2e\x56\x8a\xc4\x43\xb3\x25\x15\x74\x68\x8c\x24\x8e\x8a\x80\x4f\x5e\xad\xed\x06\x38\x43\x14\xc3\xfd\xd8\x96\xa0\xbb\x01\xe1\x42\x70\x21\x49\x9e\xc4\x3a\xdf\x9f\x00\x81\x1e\xf8\xe7\x3f\xa8\xd9\xea\x33\x46\x0c\x7a\xc7\x10\xf5\x6c\x8e\x97\xa5\x32\xd9\x21\xbf\xc6\xc6\x33\x10\xde\xc7\xb8\x68\x23\x83\x27\x3b\xec\xc0\x85\xc2\x47\x54\x19\x7c\x6c\x86\xd6\xb9\x39\x20\x08\x08\x59\x8f\xd6\xc5\x9d\x0b\x61\xb8\xee\xae\xc4\x0a\xe1\xff\x8f\xbb\x37\x6f\x6f\xdb\x56\x1e\x85\xff\x7f\x3f\x85\x84\xa6\x2c\x51\xc1\xb2\xe4\x2c\x27\xa5\x82\xe8\xe7\x38\x4e\x9b\x36\x5b\xe3\xa4\x4d\xab\xe8\xf8\x47\x53\x90\xcd\x58\x22\x15\x00\xf4\x52\x89\xdf\xfd\x7d\x30\x58\x08\x52\xb4\x93\xde\xb3\x3c\xf7\xb9\x27\xa7\x32\xb1\x6f\x83\xc1\x60\x30\x0b\x09\x19\xb5\xf1\xf8\xf1\x3d\x67\x12\xca\xf4\xb6\x3a\x68\x80\x8e\x05\xc0\x42\xa0\xcd\x53\x4c\xb2\x69\x65\xdb\x1f\x2c\x25\xd1\xe1\x80\xe4\x1e\x86\x45\x03\x44\x69\x5e\xc1\xa5\xa2\xa4\xe8\x4b\x33\x4b\x39\x1e\x0f\x1f\x44\x0f\x49\xee\x88\x9b\x87\x94\xa6\xe3\x61\xb4\x87\xb1\x7e\x49\xcf\x71\xac\x96\xdf\xcc\x6e\x37\x1c\x0e\x54\x86\xa7\x71\x04\x19\xef\xc4\xd1\xb3\x18\xdb\xba\xaa\x8e\xc4\xd4\x59\x10\xcc\x49\x8a\x4b\x6e\x95\x79\xc0\xe0\x91\x3f\x18\x75\xd5\xa5\x7c\x92\xa9\x21\x52\xb6\x33\xd4\xef\x80\x8f\xe9\xbb\x38\xdc\xbb\xff\x80\xdc\xdf\x71\x0b\xa9\xc9\x72\x0b\xea\xf1\xe3\xbd\xfb\xf7\xfd\x14\x98\xab\x84\x72\x33\xa3\xba\x0d\xee\xd3\xff\x49\x0f\x1a\xfa\xde\x54\x7d\x77\x27\x73\xf0\x99\x94\xe4\xc3\x97\x97\x76\x32\x20\xb5\x7f\x53\x23\x77\x0c\x66\xd8\x17\x74\x40\xce\xda\xcc\x17\xd9\xa9\x5f\x60\xb0\x9f\x88\x22\x50\xb1\x37\xf8\x21\x52\x67\xae\xcd\xe1\xd0\xc2\x68\xd1\xa3\x7b\x64\x4e\x7b\xc6\xc6\xe3\xe8\x2c\xc4\xfa\x72\xfd\x50\x5d\xdd\x4d\x26\x5b\x1e\x2a\xd3\x1b\x55\x53\xa2\xf7\x82\xe0\x99\x59\x60\x95\x36\xc2\x8c\x0e\x1f\x7c\xcf\x7a\x6e\x4d\xce\x42\x4c\x86\x0f\x30\x59\xf4\x7a\x84\xf7\x7a\x50\x53\xdf\xeb\xd6\xa0\xba\x05\xc0\xd3\xd8\x0e\xe5\x44\x3c\x7e\x60\xa3\xec\x1a\xba\x5e\xe5\x7a\x0a\xb2\xc7\x03\xa3\xf7\x6f\x6b\x0b\x82\xec\xd1\x3d\x6f\x54\xbd\x52\x25\xbf\xf7\x3a\xe7\xd7\x39\x7a\x5f\xeb\xf5\x1a\xc0\xb9\xde\x69\x67\x79\x9d\xe6\x38\xa7\xa9\x03\xcc\x81\x8a\x30\x55\xe5\x74\x38\xf8\x3e\xef\x81\x6c\x44\xee\x81\x09\xb4\x0f\x52\x22\x7b\xf7\x1f\x7c\xaf\x3e\x7a\x39\xd9\xeb\xd2\x5e\x2f\x0b\x82\x7b\x5d\x9a\x6d\x36\x42\xf7\x50\x05\x6c\x21\x4d\x8e\x37\x17\x4e\xcd\x5c\x57\x05\x74\x2e\x07\x96\x55\xd4\xa8\x98\x88\x5e\x6f\x4a\x99\x43\x4d\x46\x90\x65\xee\x75\xc7\xac\x71\xe9\xa7\x6a\xa3\x9e\x62\x67\x4e\x04\xfd\xc7\x68\xd0\xa5\x22\x08\xe2\xc7\x83\x11\x4e\xa8\xea\x33\x29\x26\x62\x67\x67\x4a\x8b\xc9\xbc\x17\xef\x0c\x55\x78\xde\xdb\xd9\x89\xa7\x34\x19\xd9\x5e\x3c\xec\x56\x50\x62\xc0\xb0\x28\xc9\x2f\x37\x42\x38\x00\x40\x66\x6d\xb0\xda\x97\x56\x0b\x54\xfa\x15\x4b\xc1\x15\x5c\x6d\x3c\x6f\xc3\xdf\xee\xdd\x7f\x80\x89\xa4\x07\x71\x28\x77\xd5\x77\xa5\xa8\x54\xe1\xfb\x16\x03\x66\x55\xdd\x80\x88\xdb\x1f\xcf\x00\xa4\x38\x1d\x1a\x79\x27\x85\xa8\x0d\xd3\xf5\xe1\x28\xed\xf5\xf0\x40\x4b\xd8\x4f\xc7\x61\xfe\x98\x6b\xa5\x58\xc2\x69\x8e\xbd\xfc\x38\xb2\xc7\x88\x76\x8d\x9e\x62\xd2\xeb\xe5\x95\x5e\x4c\xbd\x1c\x3c\x76\x99\xa1\x3e\x84\xa1\xe6\x41\x00\xb6\x21\xe1\xbd\x3e\xcc\x83\x20\xcc\xc1\xbd\x7a\xa6\x2e\x67\xe3\x90\xf5\x28\x1f\xa3\x48\xfd\x8b\x10\xc9\x69\x57\x35\xc8\x7a\x90\xdf\x99\x64\x0c\xd5\x46\xe3\x8f\xfe\x61\x14\x59\x22\x54\xa9\x54\xa2\x09\xea\x31\xb0\xc6\x58\x19\x27\xfc\x23\xa6\xeb\x92\xfc\x1c\xd3\x9f\x40\x06\xe0\x8f\x98\xac\x51\x07\x45\x43\xf2\x1d\xfa\x2e\x1a\x12\xf4\x48\x7d\xa3\xc7\xf0\xfb\xbf\x28\x1a\x96\x98\xfc\x6a\x33\xff\xac\x32\x7f\x03\x49\x63\xf8\x5d\xc3\x6f\xa9\xb3\xfd\x6e\xb3\xfd\xaa\xb2\xed\x42\x52\x04\xbf\x23\xf8\xa5\xf0\xfb\x3f\xf0\x3b\x81\xdf\x8f\x1f\xe1\xcf\x14\x7e\xff\x09\xbf\x1b\x5d\xd7\x9f\xad\xa4\x10\xbd\x8a\x43\x49\x06\xd5\xdd\xe6\xf1\xdd\xbd\x20\xe0\x8f\x86\x7b\xff\x00\x6b\xa3\x8c\x48\x3c\x96\x51\x2b\x43\xbe\x24\x32\xa1\xeb\xb9\x5c\x45\x7b\x43\x02\x26\xa7\x60\x11\x41\xdc\xe4\xe1\x80\x68\x11\x9a\x7b\xf7\xee\x92\x4b\xa1\xc2\x97\x02\x42\x25\xf1\x45\x54\x2b\x9e\xff\x65\x28\x13\x22\xfb\x22\x39\x63\x4b\x86\x4b\xc2\xdb\x72\x21\xc0\xbd\x9e\x38\x0e\x84\x57\xb1\x10\x97\x39\x9f\x95\x24\x6b\x2b\xd4\x95\x46\x98\x46\xf6\x93\x38\xcb\x72\xf9\x84\xed\x3f\x89\x85\xba\x96\x1b\x5b\x59\x0a\xca\x4d\xcb\x25\xc9\x93\xb6\x89\x72\x22\xc8\xd4\xbd\x0c\x07\xc1\x2b\x83\xfc\xa4\x47\x43\x06\x81\x46\x3b\x21\xaf\x9d\x12\x9b\x4d\x97\x05\x01\xda\x20\x85\xa7\x4b\x92\x26\x37\x5a\xe1\xe8\x48\x8f\x14\xc8\x93\xb0\x72\x07\xb5\x07\xb5\x7b\x3d\xd8\x6c\xd0\x2e\xd2\x16\x92\x5d\x5b\x60\xf0\x58\xc1\x01\x05\x63\x40\x9a\xb1\xa9\x3e\xbe\x81\x0f\x5c\x92\xb8\xa5\x6d\xaa\xc5\xb6\x80\x3b\x68\xce\xdf\x2e\xdf\x9e\x9d\x20\x18\x6a\x1e\x47\x12\xb2\xc9\x00\x64\x15\x36\x1b\xa6\xcf\xef\x92\x24\xad\x4b\xd6\x47\xda\xda\x26\xfa\x76\x4f\xcb\x16\xd7\x49\xd9\x92\x14\x89\xda\x3f\x02\x7e\xe7\xf0\xbb\x80\xdf\x33\xf8\x5d\xc1\xef\x0c\x7e\x2f\xe0\xf7\x1a\x7e\x97\xf0\x7b\x0a\xbf\x27\xf0\x7b\x09\xbf\x47\xf0\x7b\x08\xbf\xaf\xe1\xf7\x18\x7e\x3f\xc1\xef\x15\xfc\xee\xc3\xef\x1b\xf8\x3d\x4f\x6e\x92\x15\xf7\x1e\x04\xf8\x66\x53\x24\x64\x4e\x07\x64\xa1\xf0\x9f\xf1\x3c\xd0\x1d\x92\x19\xed\x0e\x35\xc9\x07\x8e\x57\xf5\x2c\xa9\x2c\x15\x94\xea\x90\x85\x51\x1d\x02\xea\x14\x76\x8b\x04\x4b\x71\xee\x3b\x96\x67\x14\x3c\xa3\x7f\x2e\x18\xbf\xb6\xd1\x73\x1e\x9f\xaa\xdb\xb6\x0d\x37\xc1\x58\xf5\xc4\x7f\xdc\xfb\x31\xd6\xe6\xc0\xfd\xb8\xbf\x20\x8e\xe4\x9a\x86\x1e\xcd\x1f\xd1\xea\x21\xcc\x5a\xbf\x4e\x69\x3e\x99\x4f\x89\x30\x66\xaf\x8b\x24\x02\x77\x4b\x9b\x4d\xd7\x42\x7a\xaa\xcf\x52\xde\xa4\xd4\xf5\xc0\xd1\x48\xd0\x79\x32\x52\x97\xf4\x34\x2b\x58\xb9\xe8\xd1\xb4\xbe\xda\x44\x50\x91\xf8\xb6\xb3\x05\xb4\x91\x06\x41\xf8\xdc\x35\xb1\xd9\xa0\x1e\xa2\x34\xdd\x6c\xd0\x8e\xf9\xab\x80\x28\xc5\x78\xbb\xc2\xca\xc2\xa8\xa2\xab\xd2\xdb\x7b\x07\x8b\xa7\xba\xa8\x96\xb2\xea\xa6\x2a\xa2\x70\xbd\xba\x8a\x75\x29\x20\xa2\x05\xae\x80\x7f\x11\x04\x21\x4f\xc0\x30\x8e\xf5\x20\x02\x8b\x86\xdb\xf6\x87\x41\x36\xd8\xa3\xc5\x1c\x58\x2c\x88\xe3\x60\x5f\xe4\xe9\x4c\x37\x18\x04\x32\x99\xd8\x2c\x53\x5b\x37\x78\x13\x77\x90\x81\xb1\xee\x7a\xb3\xb9\xb1\xa0\x47\x49\x64\xaa\x01\xcd\x2b\xd3\x92\x9f\x63\x61\x72\x8c\x05\xbd\x48\x22\x40\x18\xf9\x64\xde\x1b\x4e\xc7\xa1\xa0\x67\x09\x99\xf7\x7a\x38\x0a\xdb\x80\x6a\x60\x20\xd2\xc8\x79\x20\xb5\x7a\x57\x09\x2e\xbd\xe5\x9b\x6b\x10\xc9\x36\x9b\x6c\xab\x82\x20\x40\xdf\xc0\x9a\xdc\xb0\x1a\x20\xa5\xdc\x5a\x08\xc4\x2d\xdc\xb4\xd9\x51\xd9\xfd\x91\xe9\x4e\x19\xce\x6e\xb5\x57\xf4\x5f\x7f\xbb\xc0\x5e\x6b\x1b\x97\xa0\x6f\x0c\x14\x96\x82\xda\x59\xb5\xed\x8c\x8f\x92\x68\x55\x41\xb1\x1e\xe8\x02\x06\x0a\x3e\xaf\x52\x40\xbb\x5d\x33\x8b\x78\x2d\xa8\x97\xbb\x14\xf4\x1a\xe6\xd4\x07\xf2\x33\x5b\x18\x06\x26\xe8\xb2\x6a\xfc\x53\xb3\xa1\x15\xe4\xdd\x1e\x7c\x4a\xe9\x71\x8c\x3d\xb4\x92\xb9\x4f\x1f\xbd\x64\xee\xd3\xa1\x19\xf8\xe3\x10\x0d\xfc\xf9\xba\xa9\x74\xc4\xa9\xee\xb9\x3d\x56\xd2\x20\xd0\x5c\x0b\x41\x67\x15\x01\x0b\x07\x4d\xfa\x5f\xea\x20\x6c\xe3\xfd\xa4\xda\xfc\x1a\xd0\xd6\xff\xe9\xd6\xf5\x6e\x80\xdb\x6a\x6d\xe9\xca\xff\xea\xba\x34\x40\x5c\x01\xb3\xbf\x27\x67\x7a\x4f\x32\x8d\xb2\x34\xc8\x06\x81\x5a\x3b\x8b\x20\x75\xdc\xbf\x6f\xba\xea\x73\xa1\xe0\x5b\xdf\xae\xd4\x5e\xf0\xf7\xc1\x05\xf4\x0c\x76\x48\x6d\x27\x2d\x2c\xf1\x32\xef\x0d\x31\x76\xfb\xa1\xb1\x8b\xae\xbd\x2d\xe8\x8d\x07\xb6\x93\x6b\xdc\xcb\xbf\xd4\xf9\xff\x47\xef\xba\xb3\x20\x08\x17\x14\x7d\x7b\x6f\x80\x7a\x0b\x4c\xc0\x65\x4e\xac\x0e\xc3\x45\xf5\x02\x76\x41\x07\xa3\x8b\x47\xb1\x3d\x17\x2f\x7a\x3d\x4d\x0a\x5c\xd3\x78\x72\x31\x75\xb7\xf7\xeb\xcd\x66\xa6\x13\x96\xf4\xcf\x38\xbc\x26\xbf\xc7\x78\x34\x1b\x57\xf3\xd6\xa3\xcb\xa8\x9a\xdb\x1e\x5d\xea\xe9\x98\xd1\xee\xa0\x54\x88\xdc\xdd\x3d\x61\x53\x1b\x2a\x2e\x35\xc4\x5a\x6a\x68\xb5\xed\xfd\xa6\x96\xce\x30\xa5\x16\x4d\xa4\x1a\x17\xf2\x2c\xe7\xa9\xbc\x46\xa3\xf9\x8e\x1e\x96\x19\x46\x6f\x48\xcc\xb9\x77\x6a\x96\x45\x9d\xa2\xfe\xc4\x9e\x26\xda\x7f\xc5\x09\x4c\x18\xf8\x64\xa9\x9f\x33\x6a\x92\x5f\x27\xb5\x03\x53\x1f\xb7\x9b\xcd\xca\xdc\xf9\xff\xee\x38\xcc\xa1\xd5\x3a\x16\xc7\x50\xe4\x26\xc3\x4d\x07\xb0\x77\xc8\x26\xf4\x37\x75\x93\x59\x38\xd6\x13\x88\xde\x99\x81\x1f\x27\xee\xe4\xad\x06\x01\xdc\xdf\x74\xbc\xa2\xdd\x41\x84\xa6\xba\x7f\xe1\x0a\x2e\x8b\x6a\x82\x1c\x0f\xe0\xf6\x2e\xde\xda\xee\x65\x42\x38\xa5\x27\x89\x65\x39\x78\x73\x7e\xa9\x37\xe9\xfb\x3a\x5d\xf5\xb7\xe6\x71\xb3\xe1\x86\xb1\xd8\xa5\x0b\x0d\x8f\xa7\x15\xef\x65\x41\x86\x03\xe0\x66\x9e\x3e\x7e\x70\xff\xfe\xdd\xfb\xcd\x11\xa8\x09\x44\x23\xb3\x8f\xcd\x6a\x9c\x2a\xf2\xdc\xa3\x46\xb4\x6a\xcd\x29\xc0\x4f\xe9\x11\x56\x23\x35\xa5\xd5\x4c\xb6\xd5\x5c\x36\x81\xec\xa8\x7e\xae\x69\x10\x23\x8d\x93\x05\x0b\x7a\x58\x61\x75\x45\x56\xe8\x7c\x5d\x77\x0e\x2a\x50\xfc\x54\x07\x45\x7b\x32\x36\xf0\xd3\xdf\x39\xdf\xec\xd9\xf5\xf5\x55\xdc\x74\x02\xa5\x49\x68\xf9\xb2\xf3\x4a\x17\x00\xc3\xed\xe0\xcb\xb5\xc7\xb0\x3f\xb6\xce\x96\xbf\x3d\xb2\xb6\x13\xc2\x87\xbe\x43\x8f\x20\xa9\x26\x5f\xef\x72\x4d\x99\x64\x15\x16\xc8\x2a\xe2\xf6\x86\xd1\x05\x41\x98\x27\xa1\xee\x92\xb9\x16\x8e\x7d\xd2\xd1\xa5\xe0\xa8\x36\x98\xc6\x48\x75\xdf\x5e\xeb\x1b\x41\x63\x27\xe8\x2e\x36\xb7\x84\xe6\x5d\xea\x0b\xe9\x42\x11\x24\x9f\x3c\x82\x04\xf6\x2d\xc8\xd0\xe9\x36\x11\x22\x35\x00\x76\x3b\xbc\x7d\x0f\xa3\x45\x9e\xc4\x0b\xd8\xe8\xa0\x6d\x94\x0b\x4d\x95\x9b\xba\x70\x55\x99\xc3\x32\x65\xed\xe6\xe3\x43\xff\x31\x0c\xaa\x42\x7f\xaa\xa7\xa4\x79\x94\xb9\xd2\x76\x08\x1c\xc6\xab\x92\x4c\xe0\x1b\x77\x84\xa7\x5d\x7a\x1c\x07\x81\x5f\x11\x6e\x54\xb0\x0d\x03\x23\x13\x5f\x07\x61\xaf\x9b\x9f\x6e\x99\x7b\x87\x75\xd4\x7c\x87\x8d\x75\xd0\x88\xa8\x0f\x77\xfd\xb0\x50\xff\x5f\xe0\xfa\x45\x0d\x6b\x0e\x00\xe4\x28\xd4\x8d\xce\xb0\x03\x0a\x1d\x6f\x43\xe3\x10\xf6\x40\x13\x31\xb8\xc6\x1b\x37\x12\x1c\x25\x6a\xe5\xc7\x5f\x99\x3d\x0a\x5b\x6f\x6c\x90\xc7\x32\x75\x00\x94\xdc\x4a\xd7\x97\x7c\x51\x91\x2a\x03\xdc\x43\x11\xc2\xb5\x2b\xd2\x02\x63\xd2\x7a\x51\x83\x17\x1c\x3d\xa9\x8d\x79\x03\x26\x7a\xad\x07\xf0\x02\xa4\x19\x25\x66\xd7\x8c\xb0\xc9\x60\x84\x4f\x47\xba\x92\x71\xd8\x58\x49\x1c\xe9\x5a\xa1\xcf\xcd\xb5\xc7\xee\xec\xff\x33\x0e\x53\xf2\x6b\x8c\xfd\x85\xbf\x4a\xa2\x2f\x54\x3a\x6e\xab\x33\xb2\x60\xe8\xfa\x6a\xaa\xff\x23\xc6\xb5\xfa\xf7\x93\xc8\xc1\xef\xd8\x16\x42\xdf\x79\x6b\x35\x36\xed\xf6\x28\xc8\x17\x47\x55\x50\x37\x8f\xbe\xdd\xbb\x8b\x22\x57\x79\xd4\xd6\x1d\xbf\xc5\x37\x89\xd7\x39\x9b\xd3\xf4\xee\xe7\x18\xe3\x72\x0e\xde\x2d\x5e\xb4\x30\xc3\xe0\xd9\xd5\x4a\x8e\xbe\x48\x88\x79\x65\xcf\xb7\xe5\x42\xdb\x25\x71\x2a\xd5\x5a\x4c\x12\xfa\x22\x0e\x33\x4f\x2c\x14\x95\x70\x2a\x57\x3e\x5c\x40\xc0\xc8\x77\x02\xf2\x22\xc1\x8c\xbe\x8d\xc3\x1c\x3b\x5c\xc6\xe9\x79\x12\x82\xae\x9b\xa9\x39\x6f\xf1\x9b\xc2\x8d\xae\xc2\x79\x12\x26\x24\x85\x47\x17\xd2\xe2\x7d\x87\x5b\x9d\x8e\xa4\xa6\xc4\x09\xca\x4a\x6f\x62\x22\xe8\x79\x1c\x16\x78\x64\x7d\xb7\xd7\x14\x1a\x13\xbd\x28\x98\x88\x4a\xb4\xc9\x7f\x40\x33\xe9\x76\xfc\x85\xa1\xd8\x4a\x12\x6f\x36\x61\x06\x1a\x9b\xf4\xc0\x68\x9c\x65\x98\x64\xfd\x9c\xa7\xa7\x69\x46\xdf\xf9\x71\xd6\x63\x01\x7d\xe5\xc7\xba\x9b\xca\xf3\x5a\x5e\x7b\x53\x79\xef\xc7\xc2\x7e\x7d\xd9\x8c\x81\xd2\x77\x6a\xa5\x15\xed\xf3\xb4\x5e\x9f\xd1\x5d\x7d\xe6\xc7\xea\x79\xa2\x4f\xb6\xe3\xcc\xdc\x7d\xae\xb5\x15\x8b\x33\xfa\xa3\x8b\xc1\x25\x79\x9b\xd0\x17\x89\x67\x28\xe0\xa0\xc5\xc4\xc7\x5b\x5f\x76\xda\xdc\xf9\xb9\xc7\xec\x06\x95\x24\x77\x1b\xcb\xcd\x89\x44\x52\x43\x0b\x93\xd8\xb2\x70\x13\x6a\xb6\x0e\xbc\x6c\x5b\xc8\x27\x82\x32\x85\xb0\x7c\x81\x49\x05\x7d\xe3\x50\xf4\x28\xda\xdd\x45\x84\x6b\x1a\x50\x85\x79\x2f\xcc\xc6\x28\x42\xbd\x4c\x7b\x65\xfa\x1f\x84\x89\xe8\xd1\x5f\x14\x4c\x1a\xfb\x57\x80\x65\x04\xbc\x8e\xf4\x52\x8c\x23\x8b\xf1\x98\x89\xde\xdd\xd5\x65\xb6\xf9\x2f\xe3\x78\x32\x98\x46\xf6\x92\xa5\x30\x77\x2f\x36\xa4\xc4\x2e\xc2\x11\x42\xb6\x85\xc4\x54\x35\x46\xbd\xc4\x35\x5b\x98\xc8\x6f\x50\xaf\xc0\x44\x94\xe4\xdd\xdf\x98\x4b\x35\x51\x70\xb4\x9f\x2c\xf2\x13\xd5\x59\xec\xbb\x62\x32\xfa\xb2\xcc\x11\x2b\x06\x3a\x9b\xc6\xe2\x11\xd8\x20\x70\x7e\xe6\x35\x7d\xca\x2c\x1a\x53\xb3\xbc\xbb\x8b\x7a\xbf\xc4\xe6\xe0\xc0\x3d\xfb\x50\x08\x2f\x4f\x3d\x1e\x81\xf7\x74\x5d\x09\x79\xd5\x66\xaf\xc3\xf6\xdf\xf4\x5d\xad\x5b\x49\x9e\xdf\x9a\xd3\x82\x49\x49\xde\xdf\x9a\xaf\x7a\x2b\x79\xf9\xa5\x89\x03\xf8\x72\xd3\xe6\xc1\x0d\x48\xe1\x23\xe7\x72\x8d\x8f\x7f\x89\x43\x86\x23\xf8\xed\xc1\x10\x4b\x72\xe7\x96\xda\xa1\xe6\x46\x85\x60\x15\x49\xcd\x19\x2e\xc9\xd3\xdb\xca\xb6\x74\x06\xca\x3a\x94\x5b\x92\x67\x5f\x1a\x99\x5a\xe0\xea\xb5\x65\x0b\x40\x99\x02\x50\xe6\x03\x28\xab\x01\x68\x49\x9e\xdc\xd6\x43\x7d\xb7\xb0\xd5\x8f\x15\xfc\x4a\x28\xf5\xf9\xf6\xb5\xf6\x10\x4a\x49\x7e\xbc\xad\x05\xbb\xa9\xbd\x46\xbe\xb1\x8d\xfc\xd5\x7c\xbe\xd2\x79\xd6\xa7\x4c\x46\x12\x84\x82\x19\x69\x1a\xc7\xac\x8b\x30\x82\xcc\x43\x1c\x04\xcf\x65\xf8\x36\x21\x6b\x85\xb4\xa3\xbf\x92\xf0\x20\xd9\xb6\xe4\xc8\xaa\x79\xe5\xde\xa1\x97\xc1\x71\x45\xf4\x81\xb4\x6d\x02\x24\xc3\xa3\x73\x90\x97\xf2\x46\x8c\xdb\x8e\x1b\x66\x8e\x9b\x12\x63\xa2\xf7\xa2\xea\xc8\xbb\x04\x13\x7b\x46\xa8\xf0\xab\x5b\x3b\x36\x82\xae\x78\x0a\x6c\x11\x22\x45\x02\x55\xda\x3d\xa3\x2a\x79\xfe\xa5\xd1\x7d\x48\x2b\x2d\x38\x6d\x2e\x23\x4b\x42\x86\xf1\x9a\xf9\x2f\x3d\x8e\x95\xd4\x22\xcc\xc2\x3c\x8e\xd0\x9f\x71\x08\x12\x34\xbf\xc7\xda\x65\x97\xdd\x96\xaa\x2b\xef\xff\x85\xae\x78\xcf\x4c\xb7\x77\xa5\x62\x55\x35\xbb\xa2\x36\xa7\xea\xc6\xcb\xdb\xa7\x95\xb5\x3c\xa6\xd6\xa7\x9a\x9c\xea\x69\xb6\x67\xaf\xaa\xf4\xce\xbf\x5c\xe9\x89\xae\x54\xa1\x01\x55\xe1\xd3\xdb\x2b\x84\x89\xd9\x6c\xb4\xf0\x95\xac\x40\x14\x74\x6e\xed\xf3\x4a\x04\x4d\x48\x72\x99\x68\x17\x09\x96\x08\x50\xf5\x3f\xfb\xfb\x1d\x36\x27\x08\x9d\x4c\x89\xae\xb8\x87\x10\x39\x36\x75\x6b\x98\x57\x35\x3f\xb9\xbd\xe6\xb6\x1e\x57\x8f\x82\x91\xbe\x80\xc9\x9a\x90\x98\xa4\xd2\x29\xad\x60\xc2\x2a\x3a\xde\x8c\x6f\x3f\xc1\x98\xfc\xfd\x9d\xe7\x67\x56\x1d\xff\x9c\x60\xa2\x68\x1c\xf5\xfd\xe3\x97\x06\xd1\x6d\x0c\x22\x04\x72\xfe\xf6\x7e\xfb\x74\xbd\xe9\xfa\x9b\x04\xe3\x88\xd5\x1f\x42\xc1\x62\x2a\x18\x62\x4a\x08\x92\xf9\xcf\x47\xaf\x5f\xd5\x85\xc1\x0d\x76\xb4\x04\xa7\xf5\x82\xde\x26\x66\xae\xab\x68\x93\x28\xff\xda\x4a\xf6\x63\x3d\xfa\xdf\x12\xba\x1f\x1b\x27\x09\xda\x96\xc6\xfb\xb7\x2f\xc8\x4f\x10\xcb\xd9\x45\x7e\x5e\xc5\x8e\x7e\x4b\xc0\x23\xba\xba\x62\x34\x0a\x34\x6c\xe3\x99\x4e\xfc\x96\x18\x11\xe4\xfd\xd8\x37\x99\x86\x31\xf9\xa9\xaa\xa9\xd1\x48\x7b\x4d\x3f\xdd\x54\x53\xe9\xec\xb5\x7e\x48\x7c\x39\x11\x63\x16\xe4\x9c\x5d\x0b\xa3\x38\x6c\x62\x4e\x99\xf4\xdc\xdc\x69\x43\x1c\xc2\x6a\xf6\xdf\x96\x47\x55\xc3\x40\xc6\x27\xeb\xcf\xd3\x85\x64\xbe\xe6\x62\xa5\x15\xdb\x5a\xc5\x53\xa6\x3d\x91\x19\x1f\x0d\xfd\x6a\x31\x40\x6a\x5b\xcb\x2e\x9a\x11\xf2\xca\x1f\x72\x87\x57\xc3\xfb\x25\xa9\xcb\x2e\x0d\x47\x6c\xcb\x10\xa5\xd6\x19\xd7\x13\xa0\x69\xb8\xea\xba\xc7\xa6\x63\x3f\x10\xad\xcb\x11\xfb\x76\x6f\xfc\x21\x31\x13\x13\x72\x4c\xba\x83\x36\x13\x23\x0c\xaf\xcf\xb8\x96\x35\x98\xb0\x29\x78\x3c\xfe\xc2\x20\xc5\xb8\xcd\x2a\x4b\xca\x44\x28\xc9\x97\x8a\x86\x1c\xe3\xc8\xef\xd5\x0d\x5d\x6a\xb5\xfb\x02\xbd\xfc\xd2\x0a\x70\xb0\xc4\x8f\x71\x25\x12\xe5\x26\xf9\x8f\x24\x6c\xd1\xaf\xc4\x6b\x74\x92\xe7\x0b\x16\x7b\xea\x0b\x31\x18\x5a\x4d\x48\x42\x63\x12\xd3\xee\x10\x8f\xc0\x14\x5e\x67\xde\x66\x51\x84\x8f\x79\x3f\x5f\x49\x30\xd0\xcf\x47\x0b\x26\x3b\x0b\x78\x68\x0f\x02\xd9\xe7\x2c\x9b\x31\x1e\x04\xe1\xdc\x7c\x52\x1b\x47\xe6\x60\x92\x3e\x4d\xde\x42\xf0\x59\x26\x14\xde\xa9\xc7\x90\x79\xff\x38\xc9\x97\xab\x74\x01\x6e\x6b\x48\x0e\x15\xd9\x1e\xc4\x0b\xed\xcf\x25\x83\xd8\x63\x91\xe4\x2b\xf6\x7c\x46\x33\x4c\xd2\x71\xb8\xa8\x31\x12\x14\x52\xdb\x6c\x40\xc5\xf7\xce\x45\x06\x86\x92\xbd\x40\x5f\x08\x7e\x90\x67\x92\x5d\xd9\x4c\xda\x9e\xbe\xc9\xa4\x03\xf5\x82\xb5\x38\xaf\x3c\xde\x6c\x50\xe1\xdc\x20\xbb\x29\x3a\x3e\xfe\xed\xfd\xe1\xf1\xd1\xd1\xdb\xe3\x83\xd7\xaf\xde\x1d\x7e\x78\x77\x7c\xbc\xd9\x84\x92\xb6\xc4\x63\xc2\xc0\x13\x97\x45\x6f\xa4\x00\x26\x34\xcc\xe6\x31\x67\xa7\xa9\x90\x8c\xb3\x99\x13\xfd\x12\x37\x26\xf4\xe3\xd9\x2c\x4c\x71\xa9\x66\x51\x08\xfe\xd6\x64\xa1\x0b\x1c\x31\x78\x7e\x8b\x6b\xfe\x05\xfd\x36\x85\xb1\x7a\xd7\xbf\xc3\xf3\x5c\xf6\xef\x98\xe5\xed\x8b\xb3\x78\x96\x5f\xbe\xcd\x73\x70\xbb\x78\x53\x69\xe0\xab\x96\x98\x2c\x70\x3a\xaf\xad\x17\x5e\x6b\x30\x92\xd4\x82\xc3\xc8\xc1\x45\xdd\xa2\x6b\xdd\x04\x1f\xc7\x04\xfc\x87\xe0\x52\x73\x89\xab\x5a\x4e\xd8\x3c\xe7\xec\x00\xd0\xf5\xa8\x1e\xa4\x72\x3c\x99\x5a\x23\x3c\x92\x2c\x70\x34\x59\x4c\x2b\xd4\x23\x59\x58\x31\x93\x6e\x52\x06\x22\xe2\x2c\x5e\x46\xdd\x58\x2b\x05\x45\x2f\x92\xd2\xee\x84\x9f\x13\xba\x06\xaa\x04\xed\x5f\xc4\x32\xe6\x60\xd6\x76\x25\x22\xcd\x5a\xd2\xbf\xc6\xc0\xaa\xf5\x3a\x8f\x66\xe9\x05\xa8\x92\xa6\x33\xd0\xec\x6e\x33\xd2\xd2\x07\xb3\x76\xe1\x6e\x38\x4b\x2f\x36\x62\x15\x67\x78\x17\x97\x25\xd0\xc6\xaf\x54\x6b\xed\x15\x23\x9d\x23\x9d\xdd\x9c\x7e\x99\xce\xe4\x99\x49\xd6\x0e\xc7\x09\x67\x9f\x8b\x94\x6b\x67\x1b\x36\xeb\xbd\x3d\x30\x3b\x20\xe3\x16\x17\x58\x31\x0c\xf4\x08\x0c\x46\x47\x08\x91\x45\x1e\xcf\xd2\xec\x14\x2e\x29\x44\x6d\xd3\x42\xb2\x59\xf4\x4b\x12\xfe\x92\x84\xeb\x92\x9c\xf3\x70\x82\x4e\x99\x7c\x97\x9f\xb3\x0c\x4d\x31\x26\x6b\x50\x2a\x53\xe7\xc2\xec\x06\xeb\xff\x06\xde\xf4\x8d\xa8\xaf\xf3\xea\xf9\x15\x9b\x8d\x6a\x07\x93\x4b\xf0\x53\xb1\x36\xe3\xad\x5f\xae\xb4\x1f\x65\x26\xdf\x0b\xc6\xb5\xc7\xbb\x65\x5e\x64\xb2\xde\x1c\x02\x7b\x65\x2a\xa7\xae\x63\x5c\x2f\x55\x25\xe0\x08\x02\x66\x98\xb4\x3b\x2c\x89\xb6\x90\x28\xa2\xb5\xc9\x7e\x83\x95\x7a\x40\x7f\xb5\xb2\x03\xbd\x9d\xfc\x29\x04\x79\x18\x6d\x74\x00\xa6\x24\x08\x74\xcf\xdc\x11\xc7\x2e\x3b\xc6\x40\x07\xc9\x68\xb8\x3d\x3d\xd6\x35\xe6\x65\x9a\xcd\xf2\x4b\xe7\x5f\xd7\xf0\x49\x70\x0f\xed\x72\xb6\xcc\x25\xeb\xaf\xce\x56\xbb\xb3\xf8\x62\x57\xb7\x2e\x76\x51\xcf\x1b\x65\x0f\xed\x0e\xf7\x1e\xf6\x57\xd9\x29\x1a\x71\xe3\x61\x34\x44\xfb\xfa\x01\xfb\x2f\xed\xfc\x9b\xa0\x27\x2c\xe6\x8c\x77\x4c\x49\xbb\xaa\xea\x6c\xb7\x25\x3e\xec\xbc\x65\x9f\x0b\x26\x24\x9b\xed\xfc\x9e\xca\x33\x44\xd0\x87\x97\x2f\x7e\x92\x72\x65\xe2\x11\x26\xa0\xe9\x16\x66\x64\x6d\x75\xbb\x78\xd9\xe6\x55\x00\x1e\x89\xf2\x73\xa7\x0d\xd1\x3f\x59\xe4\x27\x21\x90\x39\xf7\x06\xf7\xe0\xc1\x59\x1d\x14\x85\x30\x77\x59\x35\x53\x46\xb1\xfd\x7d\xc6\x9c\x6a\x3b\x64\x01\x5f\x76\x1d\xe4\xf0\x80\x2d\x59\x79\xe6\xa8\x5b\x1b\xf3\x96\x9b\xb0\xfa\x7a\xc9\xb1\x99\xe9\xf7\x6f\x5f\x34\x49\xca\x50\x02\x2b\x02\x6f\xbb\x7a\x83\x4a\x9b\xeb\x5e\x6b\xc6\x38\xc5\x32\x5e\xae\xbe\x83\x91\x74\x4c\x7a\x47\x97\xec\xa4\xcb\xf8\x14\xb4\xec\x3b\x6a\xd5\x3a\xe8\x3b\x3b\x20\x66\x96\x91\x7c\x87\xa2\xce\x77\xe0\x33\x40\x3b\x65\x05\x1a\x40\xbf\x30\x35\xa0\xb8\xd4\x56\x7d\x7f\x6d\xe1\x69\x68\x73\xa8\x54\xf6\xef\x18\xbf\x62\x0b\x06\xec\x4a\x75\x6c\x1f\x0b\xb6\x50\xe7\xf1\x66\xe3\xc9\xc6\x1a\xd8\x1d\xf3\x50\xf6\x8d\x7b\x9d\xf8\x34\x42\x89\x3d\x84\x50\x49\x26\xd2\x36\x3e\xe6\x21\xca\x93\x1d\xb1\x4a\xb3\x8c\x71\x44\x40\xc5\x18\xe9\x11\xee\x98\x3c\x88\x08\x79\xbd\x60\x11\xd2\x08\x4b\x41\x5c\x1f\x3e\x7b\x68\x75\x35\xea\x9c\xb1\xf4\xf4\x4c\x36\xa3\x11\x89\xa5\xe4\x6a\x5b\xa6\x7f\xb1\x08\x89\x65\xbc\x58\x20\x82\x62\x9e\xc6\x3b\x8b\xf8\x84\x2d\x50\x24\xfb\x77\x40\x51\xef\x4a\x86\xe8\x85\x69\x4a\xdd\xb0\x23\xdd\xa7\xd8\x20\xf1\xad\x2e\xb1\x99\xab\x5c\xf7\xc8\xb4\x4b\x04\x4f\x22\x59\x5b\x58\x82\xd4\x52\xec\xa8\x53\x01\x19\x81\x13\x85\xb3\xcb\x12\x4f\xc9\x10\x47\xb2\x7f\xcc\x42\x5c\x8e\x7e\x4d\xfa\xc7\x97\xa9\x3c\x53\x48\x1a\x1c\xbe\x77\x07\xe6\x4c\xf9\xbd\x3a\x53\x92\x44\x21\x2e\xf1\x22\x15\x12\x11\x37\x9b\x22\x5a\x6b\x6c\x18\xfd\x91\x84\x6b\x7d\x70\x46\xbf\x26\xa4\x41\x36\x45\x93\x69\x69\x2c\x55\x90\x9f\x13\xfb\xd5\x1d\x6e\x7f\xd5\xfe\xe0\xd2\x9e\x61\xb1\x69\xde\x9c\x17\xda\x50\x5c\x75\x5c\x0c\x2c\x08\xfd\xf9\xaf\x83\x10\x0f\xf5\xb1\x38\xd1\xeb\x20\xc1\x88\x11\x59\x9b\x29\x5f\xa6\xb3\xd9\x02\x0e\x9b\x59\x7a\x91\xaa\xd1\x22\x54\x96\xb5\xcc\x3b\x60\x81\xbb\x5e\xc1\x0e\xcf\x2f\x1b\x31\x09\x53\x20\x61\xeb\x15\x67\x3c\xcd\xce\x55\xbd\xfa\x25\x48\xe1\x23\xa4\x4e\x17\xd9\x3f\xbe\x08\xb5\x51\x9f\x1b\x0b\xfb\x45\xc8\x2c\x5f\xbe\x31\x07\x3f\xbb\x92\x07\x5a\x21\x56\xad\xb5\x08\x7d\x90\x7b\x6f\x78\x4d\x08\x3c\xf0\xfc\xc7\x9a\x79\x9a\x8a\xd5\x22\xbe\xee\xfc\x17\x9a\x3a\x5c\xc6\xe9\xe2\x6b\xda\xd0\xc0\x79\xb0\x88\x85\x88\x50\x71\xbe\xa3\x8a\xef\x64\xf9\x25\x8f\x57\xd5\xbe\x6d\x5d\x8f\xaf\x9e\xdc\x74\xd6\x31\xca\x37\xff\x57\xf4\xe7\xc7\xbf\xd5\x9f\x7f\x4b\x93\x87\x1a\x0f\xeb\xf6\x14\xba\x51\xff\xdd\xd0\xae\xd9\x30\xb2\x7f\xbc\x08\x65\xdf\xee\x75\xd2\x76\xdd\xdf\xda\x53\x06\x3f\xea\x32\x3b\x8b\x54\x48\x15\xbf\x83\x7a\xac\x9f\xce\xca\xb6\x2d\xa7\xa2\x1c\x76\x35\x63\xf5\x11\x25\x03\x07\x94\x8b\xf8\xfa\x15\xe8\x90\xb0\x7e\x9e\xbd\xe1\x6c\x99\x0a\x26\x8e\xe2\xa5\x41\x84\x2a\xcd\x92\xb8\xaa\x25\x43\xce\xde\xbd\x6f\x46\x7b\xfb\x0c\xdf\x32\x87\x37\x37\xf7\xe5\x85\xbb\xb5\xda\xda\xa0\xd0\x0e\xfa\x17\xab\x53\x9b\xed\x5f\xac\xa2\x48\x67\x9a\xf0\xff\x77\xf4\xe7\xf4\x6f\x56\xd6\xba\xe9\x12\x70\xd6\xaa\x48\x04\x66\xc1\xf0\xd0\xd1\x13\xaa\x8a\x34\x51\xc4\xa7\x85\x1a\x7d\x34\x82\xa3\x7b\x75\x8d\xe2\x29\x10\xa7\x11\x12\x45\xa2\xad\x63\xde\x78\xe0\x9b\x65\xed\xa4\xa2\xc3\xec\x46\xa9\xce\xfe\xb6\x56\x66\x6c\xc5\x59\x12\x4b\x75\xfc\x7b\x4d\xcd\xe2\xec\x54\x51\x2e\x5f\xd3\xd2\x2c\x15\x55\x53\x76\x4b\x96\x18\x9b\x2f\x08\x8d\xfe\x6c\x21\x06\x1c\xbf\x46\x16\xff\x4f\xf3\xfc\x58\xf1\x1f\xe1\xf9\xc9\xe2\xff\x46\x9e\x9f\xdf\xab\xff\x02\xcf\x4f\x13\x94\xbc\x70\x04\xe5\x6a\xd5\xa0\x23\x3d\x0a\xd3\xa7\x26\xff\xbc\x95\x9a\xfc\xfd\x6f\x51\x93\x8e\x27\xc0\x8a\x90\x15\x86\x27\xe0\x68\x5b\x44\x26\x28\x15\xcf\xb3\x54\xa6\xf1\x22\xfd\x4b\xed\x34\x74\xca\xa4\x4d\x3e\xca\xb9\xda\x7d\x96\x6f\xe0\x48\xd2\x1b\x18\x07\x5b\x25\x15\x4a\xb2\xd7\x75\xdd\xf8\x8b\x66\xe3\xae\x69\x68\x45\x93\xab\x35\x56\x01\xd4\x5c\x65\x0b\xb1\xa1\x7b\xb3\xa2\x9d\xee\x6d\xd2\xbc\x9a\x1b\xe0\x91\xbd\xee\x8d\x98\x59\xb2\xd7\x7e\x6c\x61\xc8\x24\xcf\x64\x9c\x66\x8c\x77\x8a\xf3\x9d\x55\x3c\x83\x1b\x4b\x09\x05\xce\x86\x88\x4c\x74\xcd\x17\x21\xfa\x98\x75\xe0\x7f\x76\x68\x3a\x8c\xf0\xd4\x78\xd6\xb4\x58\x59\x0f\xc6\x9f\xf0\xb1\xaa\xcc\x4e\x2c\x1c\xe6\x15\x1a\x74\xf3\xad\xf9\x16\x26\xa4\x30\x59\xc4\x00\x6b\xc2\xe5\x88\x23\x3c\x25\x7b\x78\x8a\xcb\x51\x56\xdc\x74\xad\xc9\x0b\xea\x01\x58\x56\xdc\x06\x60\xbc\xf8\x7a\x00\x83\xa5\x48\x0b\x2a\xfa\x73\x12\x17\xb7\x7b\x89\xf2\xcc\x7d\x93\x8c\x5e\x6b\xbb\x15\xaf\x64\x98\x61\xb0\x4b\x65\xcc\x6f\x25\x74\x00\x6e\x13\x46\xe9\xe3\x64\x04\x36\x3a\x12\x6b\x98\x3b\x35\x9e\x50\x32\xc2\xf1\x66\x53\x18\xab\x52\xe3\x09\x27\xd9\x84\x4f\xa7\x91\xfa\xc5\x95\xae\x78\x49\x92\x82\xae\xad\xd5\xa5\xb8\x08\xbb\x03\x6c\x8d\x36\xa9\xd0\x10\x97\xd6\xd9\x81\xef\x22\x4b\x6f\x74\x64\x3d\x45\x96\xc6\x12\xbb\x68\xe3\x15\x26\x05\xb0\xb8\x8c\xfc\x58\x41\xb9\xe7\xdc\xaf\xa8\x33\xfa\xb5\xf9\x53\x70\x0b\x01\x1a\xdf\x61\x8c\x49\x41\x8d\x15\xbf\xa6\x40\x8d\xf6\x80\x01\xfc\xb3\x04\xcc\x07\x8e\x59\x58\xe0\xc8\x38\x04\x75\xae\xff\x0b\xc3\x3e\xc9\x48\x6e\x5c\x06\xde\xbe\x04\x0d\x2f\x8e\x0e\x73\xfb\xde\x54\x4d\x1b\x1e\x5a\x04\x67\x35\xd6\x72\xb3\x3e\x4d\x40\x92\xc1\x0d\x35\x06\x37\x94\x45\x98\xc2\x58\x63\x92\x10\x94\xb1\x2b\x89\x88\xf4\x1e\xcf\x92\xed\x4c\xc0\x39\x82\x5c\x71\x58\x79\x2f\x2b\x4b\xb2\x50\x00\x00\x02\x26\xe4\xac\xa0\xb3\xae\x39\x41\xc9\xaa\xa0\x7f\xb2\x10\xa9\x04\x44\x10\x41\xb8\xb6\x70\x70\x45\xde\x76\x6d\x76\x56\x6c\x36\xdd\x55\x51\x92\xb5\x2a\xd7\xea\x64\xc6\xc0\xd5\xb5\x91\x27\x70\x6e\xd6\xe4\x18\x11\x14\x55\x2b\x3c\x2b\x68\xa2\xe8\xc0\x15\xb9\x28\xe8\x6f\x2c\x44\xcb\x78\x85\x30\xb9\x2e\xe8\x1f\x36\xf0\x35\x3d\xea\x5e\xa8\x2e\x5d\xab\x2e\x2d\xe3\x55\x5b\x8f\x66\x85\xf1\x60\xfa\x95\xa6\xce\x5c\x0f\x97\x85\xb6\x74\xb4\x8c\xaf\xc8\xa9\xfd\x4e\x33\x72\x52\xf8\xf6\x90\x2e\x0b\xba\xfb\xf1\x4e\x38\xb9\x13\x7c\xf7\xbf\xd3\xcd\xc7\xd9\xc7\xd9\x78\xf3\x68\xf2\xcf\xc7\xd3\xef\x1f\xe3\xdd\x53\x72\xb4\x9d\x8c\x77\x4f\xc1\xe3\x8b\xf5\x88\x44\xf6\xb6\x7d\x1a\x59\x93\xe0\x59\xff\xef\xf8\x18\x22\x29\x14\xa8\x3b\x2a\x22\x31\xcd\xc7\xe8\x0e\x8a\xd0\x9d\x81\x15\xd0\xab\x9c\xc9\x78\x6d\x59\x77\x32\xa9\x71\x27\xc3\xad\x3b\x19\xde\xe6\x4e\x26\x1d\xa7\xd6\x5b\x52\x4e\x32\x1c\x99\x07\x13\x27\x41\xaa\x3d\x2c\x79\xae\x64\xac\x07\xf3\x3c\x08\xd2\xcd\x66\xcb\x4a\x66\x16\x04\xe0\xa1\x31\x73\xde\x18\x63\x6c\xbd\x40\x55\xde\x67\x48\x66\x6c\xe8\xf8\xfe\x67\x0a\xb3\xf1\x55\x66\xa1\xfd\xcf\xcc\x6b\xfe\x67\x48\xab\x23\xea\x6c\xb4\xd8\x6c\xc2\xcc\x79\xf2\x30\xe6\xc8\xcf\xa8\x30\x9e\x6a\xc0\xbc\xb6\xee\xc3\x8a\x0a\xe7\xa0\x46\xf8\x0e\x6a\x4a\x8b\x87\x67\x0a\xcf\x1a\x2b\xe5\x17\xf4\x55\x1a\x0a\x32\xc7\x9e\xdd\xa2\x0b\x63\xa5\x3b\x9d\x87\x33\xe3\x96\x16\x93\xee\x99\x89\x05\x91\x6c\xeb\xec\x6f\x32\x00\xab\x67\xa2\xee\xaf\x66\x4e\x84\xf4\xe3\x30\x59\x61\xec\x9a\xbf\x26\x4b\x8a\x10\x39\xa5\x03\x72\x42\x07\xa3\x93\x47\x33\x4b\x71\x9e\x00\xc5\x49\x67\x93\x93\xa9\x13\xda\xb9\xac\xb5\x45\x8e\xe8\xb2\x08\x4f\x8b\x30\x91\xe1\x85\x9e\x7e\x4c\xe6\xd6\xfc\x10\x19\x60\x72\x48\x27\x53\xf2\x9a\x0e\x47\xaf\x1f\x5d\xd8\x7a\x5f\xf7\x7a\xf8\xd0\x77\xb0\x4b\x29\x0d\xaf\xe9\xc5\xe4\xf5\x14\x8f\xaf\xad\xc4\xdc\xb5\x99\xd5\x63\x7a\x61\x7c\xcb\x81\x06\x93\x9e\xa7\x4f\x74\x72\xe9\x9e\xb4\x0e\xc9\x91\x9a\x31\x07\x60\xc7\x41\xf0\x49\x57\x7f\xac\xab\xb8\x72\x2b\x65\x30\xa7\x39\x3e\x3f\x59\xc6\xf0\x15\x4d\xc2\x4b\x32\x27\x47\xe4\x90\x1c\x2b\x48\x39\x7a\x4c\x4f\x83\x20\x5c\xf6\xe8\xdc\x88\x80\x9c\x92\x23\xdc\xbb\x22\xa7\xf4\xa8\x77\x69\x07\x68\xa9\xcc\x65\xcf\xe5\xc2\xe5\x74\xe4\x63\x5b\xff\xe8\xd1\xc7\x4e\xd6\x73\x4e\xfa\x8a\xea\xc0\x15\xf4\xa8\xd8\xde\x29\x20\x9f\xff\x4e\x86\x29\x26\x82\x5e\x16\x98\x98\xbd\x12\x93\x1a\x97\xc2\x56\x2e\x46\x46\x61\x3e\xf6\x8d\x87\x25\xb1\x60\x6a\x17\x1b\xc1\xd0\x3b\x08\x04\xd1\x51\x60\x63\x3a\x52\x47\xfc\xaf\x8b\xe0\xce\xb4\x43\x86\x75\xda\x77\x5b\x69\x89\x49\x79\x84\x22\x41\xd3\x49\xec\x5b\x19\x9b\x1a\x81\x77\xfb\x96\xa6\xed\xef\xf7\xe2\x91\x36\xaf\xe3\xec\xd6\x74\xc0\x5b\xd1\xfc\x71\xa1\xbb\xbf\xa0\x27\x45\x38\xdf\x1d\x56\x66\x3f\x54\xe6\xc5\x98\x45\x8b\x47\xb4\x18\x3b\x58\xc9\x27\x8b\x9d\xe1\x74\x1c\x57\x66\x2c\x22\x1d\xd5\xf3\xa3\x58\x29\x68\x3e\x99\xef\x0c\xdd\x53\xa7\xab\x40\x8c\x11\x8a\x44\xa9\x7d\x80\x03\x84\x1c\x16\xad\xd2\x89\x9d\x16\x13\x8e\xfa\x3d\x4a\x1b\x6c\x6f\x9e\x0b\xad\xc6\xa2\xf8\x24\x9b\x7a\x97\xb5\xcc\xf3\x99\x58\x9d\xe3\x65\x49\x5e\x17\xf6\x8e\xea\xb9\x65\x37\xb2\x3f\x15\x4c\x1d\x17\x9e\xc4\xef\x44\x5b\xc3\xd1\xbd\x99\x2a\x4c\xf0\xba\xb0\xb6\xee\xab\x43\xff\x53\xd1\xa4\x69\xe0\x58\xad\x32\x5c\xf9\x19\xac\x2a\x63\x10\x6c\xdb\xda\xa9\x8a\xec\xb7\x75\xe3\x99\x49\xbd\xb1\x27\x6f\x0a\x67\x40\xdc\xb8\x2b\xc6\x6d\xde\xd9\x40\xbb\x85\x4e\xe4\x14\x13\x18\x6e\x65\x3c\x7d\xdb\x05\x86\xb6\x23\xa4\x29\x52\xb0\x42\x31\xe1\x53\xc2\x89\xf4\xbc\xa0\xc0\x21\xd5\x49\xb3\x8e\xc4\x5b\x13\x7c\x16\x0b\xef\x26\x69\x5d\xab\xe5\xd8\x49\x1e\x98\x4a\xf3\x29\xc9\x15\x8d\xa4\xea\x3a\x2f\xe8\x3a\x15\x30\xe7\xd1\x71\x41\xcc\xe7\x93\x62\x3e\x67\x6d\x6f\xd9\xf5\x55\xd2\xd9\x9a\x33\x44\x52\x71\x63\x79\x6f\x45\xba\xb0\x94\x41\xe0\xd4\x4d\x3d\xbf\x8c\x26\xd5\x8f\xc2\x41\xd0\xe6\xf7\xc6\xcf\xd2\xb7\x0d\x07\x41\x7b\xbc\xe9\xdd\xb3\x9c\x2f\x9f\xd6\x5e\xc3\xab\xf1\x55\x62\x1e\x6e\x05\x6d\xf6\x20\x90\xbe\x0a\x89\x8d\x2e\xeb\x93\xf6\x5b\xca\x2e\xbf\xb2\x62\xaf\x54\x10\x78\x81\x7e\x2a\x54\x2d\xe3\xed\xa8\x50\xe2\x08\x64\x46\x4e\xdc\x38\xf5\x97\xdf\x31\xaf\x98\xea\x9b\xde\x74\x6d\x5d\x6a\x12\x1f\x52\x65\xd7\x0c\xc0\xb6\xec\x5b\x96\xb0\x54\x76\x0d\x84\xd1\x95\x02\x9d\xf7\x76\x88\xd1\x27\x15\x7c\x1a\xcb\x36\x67\xfa\x0e\x84\x54\x7a\x0b\xec\x3c\x4b\x17\xb7\x16\x53\xe9\x6d\x20\xb7\xc8\x4f\x6e\x2b\xa6\xd2\xdb\x5a\x33\x25\xa2\xfd\x42\xcf\x15\x8b\x97\x6d\x70\x7b\xa5\x81\x55\xa1\x8a\xfe\x2a\x5d\x31\x28\xdc\xb4\x47\xfa\x75\xcb\xde\x28\xd5\x00\xab\x46\xaa\x5e\xc1\x38\x9b\xc5\x7c\xf6\x84\xe7\x97\x82\xf1\xc3\xec\x62\x9b\x5f\x12\xb6\x09\x28\x65\xf1\x45\x7a\x1a\xcb\x9c\x6f\x36\xe8\x2d\x8b\x13\xf9\x2a\x96\xe9\x05\x03\xcf\x65\x36\x49\xe1\x8f\x59\x91\x28\x14\xa9\x53\x8f\x80\xff\x74\x63\x9e\xa3\xd6\x14\x30\xc9\xd4\x32\x56\xfd\xb6\x1e\x04\x6d\x69\xb3\x3c\x81\x63\xc4\x33\xdb\xfc\xa6\x20\x4b\xc6\x4f\xab\xf5\xef\x48\xdf\x71\xac\x8b\xe5\x9a\x62\xdf\x42\xea\x6c\x92\x4d\x5b\x70\x3d\x1f\xab\x04\x2a\xc1\xd0\x39\xe1\x38\x82\x20\x2f\x3d\xe9\xed\x16\xcd\xb3\x51\xf6\x28\x87\x43\xef\x4d\x11\xfa\x47\x1e\xe1\x9e\x3b\x0f\x32\x63\x6c\xf5\xf2\xbf\xd6\xe7\x96\x6c\x32\x5c\x97\x2a\xfd\xdf\x33\x1c\x76\x25\x9b\x76\xf6\x3d\xc9\xad\x37\x45\xc8\x6a\xc4\x5a\x86\xd7\x12\xe6\xb2\x15\x3b\xb3\xf1\x61\xa1\x1d\x6d\xb2\x12\x63\x22\x4b\x22\x79\xda\xba\xbd\x2a\xf7\x2b\xbb\xff\xfc\x28\xbe\xdf\x25\x08\x55\x06\x58\x77\x3f\x8a\xef\xef\x40\x54\xe9\xcd\xe7\x8b\xe2\xab\xbd\x99\xec\x7e\x7b\x6f\xb0\x7b\x9a\x12\xf4\x3f\x7e\xad\xdf\xde\xdd\x87\xc8\xa8\x16\xb9\x77\x6f\xf7\x94\xa0\x3b\xf5\xb8\x03\xc8\x48\xea\x91\x03\x95\xb1\x57\x8b\xbb\xff\x04\x32\x4e\xea\x91\x4f\x21\x72\x8a\xf4\x89\xfb\xb6\xd8\x72\xd1\x05\xa6\x44\x2a\x33\xa1\xb0\x86\xa0\x67\x88\xc1\xe7\x68\xa5\xa3\x78\x5e\xf4\xb7\xb0\x4e\xc8\x30\xce\x68\x45\x5e\x59\x7b\x4d\xfa\x3a\x3b\x99\x8e\xce\x0b\xc7\x99\x66\xa4\xe1\xb8\xc4\x50\x2e\x41\xa0\xab\xd6\x94\x20\x68\x58\x51\x34\x99\xa2\x08\x28\x17\xe2\xd5\x20\xeb\xa2\xce\x50\x4a\x21\x72\xd0\x2e\x05\xbb\x63\xcf\x8f\x5e\xdb\x8e\x44\x90\x6c\x38\xe4\x52\x8b\xa1\xff\x7c\xf4\xfa\x95\xf1\x14\x9e\xce\xaf\x41\x0a\xd2\x18\x80\x7e\x51\x80\x6e\x13\x45\x3d\x58\x5a\x30\x0e\x0d\xbe\xe7\x69\xee\x59\x03\x07\x6d\x17\xc7\x3c\xb2\xb7\x64\xf4\x0d\xc2\xa3\x9d\xa1\xb9\x67\x54\xc2\xee\x03\x92\x2a\xc0\xeb\xd1\x10\xae\xd5\x5e\x81\x31\xc2\x63\x34\x46\x91\xaa\xb4\x97\x55\x3c\xf6\x0a\xc0\x0e\x0a\xcb\x2c\x3e\x8b\xb3\xd9\x82\x71\x41\x27\xd3\xf2\xa0\xf0\x28\xae\x42\xb0\x76\x5a\xbb\x56\xcc\x98\xde\x9f\x17\x8b\x79\xba\x58\xb0\x59\x24\x09\x67\x9f\x40\x9e\x49\x6d\x0c\x52\xcf\x6c\xed\xe0\x96\xa4\xd6\x14\x14\xd8\x76\x7a\x63\x8b\x4d\xe4\x54\x0d\xbc\x11\xa5\x2d\x5b\x35\x6a\x32\x4b\x49\x1b\xeb\xe8\x56\xd8\xaf\xa3\xfe\x7e\x6c\x48\x35\x16\x04\x52\xbb\xe6\xd6\x8c\xf3\x77\x05\x3d\x28\xc8\xab\x6d\xb8\x36\x93\xe1\x55\xce\xbd\x0a\x39\x5e\x4b\xaa\x1f\x9a\x0c\x76\x78\xde\xc6\x6c\xec\x86\x5d\xb9\xd9\x74\x65\xff\xf8\xf8\x60\xff\xd5\xc1\xe1\x8b\xe3\x63\xec\xad\xd2\x7b\xbd\x4a\x0d\x89\x31\xc1\xe4\xbb\x74\xc9\xf2\x42\x76\xce\x62\xed\x4c\xeb\x84\xb1\xac\x63\x0f\x21\x8f\x8e\x7f\xd9\x5a\x41\xb2\x60\x31\xff\x42\x15\x6a\xec\x77\x0a\xfa\xbe\x20\x4f\x0b\xfa\xb2\xa8\xfa\xf4\xac\x30\x02\x6f\x77\x0a\x75\x43\x73\x7d\xb1\x5b\xbc\x8a\xd1\x86\x21\xd3\x79\xa8\xb3\xbe\x2f\x36\x9b\xee\x9d\x02\x07\xc1\x76\xa1\x3b\x85\x57\x13\x69\x56\xe1\x29\x59\xde\x29\x20\xaa\xf2\x7d\x55\x4b\xf3\x6f\x02\xb5\x5c\x8d\x1c\x86\x5b\x38\xc0\x65\x59\xb6\xa0\xf6\x15\xef\x57\x5d\x08\x82\xb0\xd6\x3b\x4c\xda\x4b\xf8\x93\x1a\x04\xe1\xd3\x82\xfa\x31\xfa\xf6\xfa\xa4\x20\x9f\xc1\xc9\xf1\x8f\x05\xed\x0e\xc9\x5f\x05\xdd\x19\x56\x33\xfb\x9b\x5a\xac\x1f\x8b\x20\x78\x52\x04\x41\xa8\xb3\x3c\xb1\x36\xa2\xc7\x9f\x0b\xfa\xa4\xb0\x9c\x94\xcf\x05\x8e\xa0\x34\xf9\x5c\x19\x9b\xfe\xa9\x08\x7d\xfd\x0b\x15\x04\xec\xfb\x63\x61\x5f\x7c\x9e\x15\xe1\x6f\x05\x1e\xa9\xaa\x07\x9e\xdb\x10\x57\xc7\x88\x8d\xf4\xfd\xf9\x49\x41\x3f\x9b\xbe\x8e\x7a\xbd\xbf\x8a\x47\x6c\x84\x9f\x40\xcf\x26\x7f\x15\xd3\x3e\x2f\xb2\x10\x8f\x74\x07\xbc\xe2\xe5\x93\x42\x5b\x18\xd4\x7d\x6f\x08\x48\x3e\x55\x40\x50\x9b\x13\xfb\x2c\xe0\xc5\x99\x77\x62\x9d\xf9\xa5\x82\x98\xa7\x0a\x62\xda\x8a\x35\x66\x98\x34\xab\x51\x90\xf1\xb4\xa8\x39\x4a\xf3\x80\xe5\x69\x0d\x58\xb6\x41\xe5\x69\x0d\x54\x14\xa0\xc0\xdb\x45\xa5\xdd\x52\x78\x02\xbc\xf3\x22\xa3\x46\xfc\x3c\x56\xa7\x0c\x65\xe5\x07\x1f\x2b\xf1\x22\xa3\xcd\x47\xba\x79\x61\x99\x5c\xba\x0b\xae\xb0\x8f\x00\x7e\x51\x6b\x08\x7b\xf1\x8f\x82\xfe\x52\x90\x9f\xe1\xf7\x57\xf8\xfd\x1d\x7e\xff\x84\x5f\x29\xd4\x2f\x53\xbf\xda\x43\x90\xa0\x2b\xde\x5f\x31\x3e\xcf\xf9\x52\x11\xdf\x9b\xcd\xba\x24\x99\xa0\x5c\xf4\xb3\xfc\x72\xb3\xe1\xa2\xbf\xcc\xff\x7a\x65\x3f\x85\xfd\xca\xed\xc7\x25\x3b\x39\x4f\x25\x84\xb6\xe9\x71\x85\x4b\xd4\xc1\x08\x9e\x89\xd5\x94\x87\x06\x5b\xe6\xda\x0c\x80\x4a\xd3\x6f\x5d\x82\xae\x33\x76\x25\xdf\xa5\xc9\x79\x8b\xe4\xf1\xcd\x0c\x9a\x9d\x21\xc0\xc1\x36\x3f\xdf\x63\x31\x0c\x47\x7c\xfb\xf5\x1d\xd8\x0c\x13\xbe\x33\xf4\x59\x39\x7c\x3a\xfa\x6c\x1e\xc0\x54\x93\x66\xed\x30\x51\x67\xaa\x83\xde\xcd\xe6\xc7\x62\xb3\x79\x56\x84\x3f\x15\xb8\x24\x32\x95\x0b\x16\xa1\x13\x7d\x2d\x41\xc4\x7c\x68\x6d\xd7\x8b\x68\x5d\x92\x98\x9f\x5e\x44\x93\x29\xb9\x60\x5c\x80\xa8\x05\xb2\x9f\x42\x25\xe7\x59\xf4\x47\x41\xe2\xd9\xec\x45\x2a\x24\xcb\x18\x8f\x7e\x2e\x48\x9e\x25\x2c\xfa\xb5\x20\xf9\x7c\x1e\xfd\x5e\x10\xce\x96\xf9\x05\x73\x19\xfe\xb4\x31\xfb\x8b\x85\x8d\x14\x91\x14\x84\x2d\x53\x19\x31\x41\x4e\xd2\x6c\xd6\xbc\xef\x6e\x61\x77\xe3\x7a\xb5\x6f\x32\x5b\x7f\x8b\xa2\x58\xad\xf4\x03\x35\x2e\x49\x72\xd9\x22\xcf\x8e\x76\x51\x49\x92\xb3\x59\xca\xbf\xae\x01\xc8\xda\x5a\x7d\xb1\x8c\xc5\x79\xcb\xbb\xf7\xa0\x24\x67\x5c\xa6\x4b\xd6\x02\x0b\xfd\xc1\x60\xf8\x7d\x26\xcc\x8b\x03\xe8\xa9\x56\x6f\x30\x21\x53\xa4\x92\x1f\xfe\x76\xf8\xfd\x90\xfd\x50\x39\x6c\x0e\x82\x90\xef\x50\x39\x19\x4c\x49\x98\xa9\x8f\xe1\x14\x3f\x1a\x40\xec\x0e\xc9\x7a\x54\x65\xc6\x64\xc2\x49\x36\x2d\xc9\x6a\x11\x4b\xb5\x33\xbc\xf5\xe5\x6c\xc1\x62\xc1\xd4\xca\x69\x61\xf5\x08\x7c\xaa\xd5\x3b\xbb\xb5\x01\x76\x72\x81\x77\x87\xec\x6e\x59\x92\x58\x34\xa8\xa5\x1b\x08\x4b\xb8\x28\x65\x9a\xd2\xc8\xfa\x32\x7f\xbf\x5a\x59\x13\x37\x94\x02\xa9\xeb\xc5\x28\xb2\x67\xc2\xa6\x94\x1b\x9f\x5d\x1d\x75\x21\xd1\x5e\x02\x13\xb1\x65\x77\x96\xe4\xdb\xfc\xd0\xed\x24\x2b\x8d\x4f\x19\xe1\x60\xdc\x44\xdd\x2e\x28\xc7\x44\xdd\x53\x40\xee\x9d\x66\xf0\x2d\x56\x79\x26\x18\xcd\x89\x54\xd4\xf3\x55\x9a\x0b\x00\x00\x6d\xd7\x53\xeb\x4b\x6e\xeb\xa3\xaf\x8d\x30\xb7\x7e\x85\x37\x01\x02\x22\x1d\x10\x03\xa6\x28\x66\x46\x10\x44\x6d\x1b\x88\xf5\x22\x88\x66\xc5\x98\xdc\x5a\xef\x63\x9e\x2e\xd8\x2b\x57\x85\x0d\x91\x45\x9a\xb1\x57\x5e\xee\x2a\x4c\x92\x7c\x51\x2c\x33\x3f\xd1\x8f\x21\x42\xc6\xc9\xb9\x8e\x87\x4f\xbb\xe6\x26\xa7\xfa\x26\x6a\x5a\x6c\xc4\x8c\x95\x25\x91\x65\x58\xed\x02\x89\xdd\xc4\x96\xa4\x10\x74\x82\xe2\x53\xf0\x28\xd3\x50\x43\xb0\x0e\x67\x34\x8e\xf1\x22\x8c\x07\x1a\x26\xe3\x53\xf5\xe7\x6a\x95\x72\x26\x10\x41\x73\x9e\x2f\x11\x41\x60\x37\x8a\xa0\x74\xbe\xb3\xcc\x67\xe9\x3c\x65\xb3\x1d\x91\x66\x09\xd3\x71\x45\xb6\x15\xbb\x88\x85\x74\x79\x55\xd8\x28\x57\x20\x82\x96\xf1\xd5\xce\x3c\xe7\x97\x31\x9f\xa9\x16\x56\x3c\xbf\xba\xde\x69\x76\x94\xb3\x39\xe3\x20\x29\xc6\x99\xe4\xd7\x3b\xf1\x5c\x42\x08\x04\x1f\xe3\x53\x96\x49\x34\x25\x42\x50\xb8\xf6\x6c\x73\x6d\x42\xcf\x59\xb9\x73\xad\x45\x77\xc3\xa5\x48\xd9\x46\xf2\x74\xc6\x32\x89\x77\x8d\xd7\x90\x8a\xc5\xa2\x6a\xdf\x57\x95\xab\xfd\x6e\x99\x26\xfd\x9a\x4c\x0a\x78\xbe\xaf\x8e\x44\x87\x32\x32\x5a\xc9\xa6\xa8\x7d\xae\x68\xb6\x7d\x29\x79\x7a\x52\x48\x16\xa2\x33\xce\xe6\x88\x64\xda\x5d\xa4\x0a\x60\x72\x63\x16\x6d\xa3\x40\x67\xab\x4c\x03\x70\x67\x49\x66\x5c\x7d\x56\x77\xdf\x48\x5f\xdb\x15\xde\x07\x95\x77\xae\x0d\x5e\x18\x05\x6d\x6e\x74\xa4\xc7\xf6\xc3\x67\x02\x8c\xab\x92\xb1\x50\x79\xd5\x9f\xb1\xfe\xe3\xe5\xfb\xa6\xd6\x00\xec\x21\xee\x2c\xd1\x68\x0d\x76\xae\x8d\xb7\x38\x8d\x73\x6d\xcf\x9b\x3b\x3b\x34\x9e\x43\xc2\x2a\x52\xe5\xea\x55\xc1\xd2\x5d\x10\x69\x16\x36\x55\x73\xf4\xcc\xf9\x17\x25\x7d\xf8\x1a\x30\x80\xbb\x30\xc3\x63\x95\x12\x79\x0e\x39\x9d\x0d\x1e\x30\x43\x65\x02\x41\xa0\xbb\x4f\xad\x3d\xb4\xb2\x0c\xf1\x36\x76\xed\x0e\x4a\x32\xbf\x0d\xd0\xd6\x97\x3c\xad\xb1\x5f\x2b\xc9\x11\xdd\xbd\x58\xd1\xad\xb1\x91\x78\x81\x5b\x77\x0b\x0f\x45\x11\x00\xd0\x86\xc6\x09\xe0\x62\xca\x94\xb1\xdb\x91\xa2\x9e\xc5\xf4\x21\xc7\x7d\x99\xff\xf8\xf2\x9d\xbd\xff\x9b\xc2\xee\x69\xb9\x2a\x0c\xca\xfb\xa8\x97\xd5\x73\xe4\x5e\x8e\x59\xbe\x8c\xd3\x8c\xa2\x5e\x8e\x49\x77\x40\xe1\x62\x6f\xd3\x04\x4b\x0a\xce\x10\x26\xd5\x6e\xc8\xf3\xf3\x94\x51\x6b\xe4\x66\xd4\x01\xa7\xcc\x2c\x9e\xb5\x9c\xa2\x8d\x42\x46\x39\x4f\x0d\xc2\x39\x22\xfe\xe7\x66\xf4\xf1\xa3\xf8\x1e\x87\xe0\x80\x18\xd3\x70\xf2\xcf\xd1\xf4\x7b\x8c\x2a\x07\x65\x6c\xdc\xe6\x10\x78\x72\x77\x8a\x23\x6d\x8d\x49\x53\x29\xd1\xd6\x85\x1d\xd6\x25\x94\x04\x21\xa2\xe6\x4c\x91\x9a\x21\xde\x79\xf8\xe0\x1e\xbb\x8f\xcb\x32\x6a\xae\x1b\x5e\x37\xc7\x51\x7b\x4a\xd9\x6e\x07\xaf\xcb\x92\x2c\x44\x9b\xd4\x4e\xbb\x30\x8e\xe7\x24\x5e\xf6\x67\xb1\x8c\xb5\xe1\x23\xad\xcb\x35\x82\xe5\xb1\x4f\x1d\xb0\x84\xe6\x94\xcd\x27\xc8\x48\x0f\xef\xbc\x53\x68\x7a\xaa\x89\x59\xa0\x57\xeb\x2a\x62\xda\x3e\xb7\xc2\xa5\x16\xf2\x74\xa8\xe6\x63\x00\x4c\x2a\x41\xac\xb5\x9a\xa1\x62\x47\x79\xbf\xa6\xb3\x46\xd1\x93\x58\xa4\x49\x07\xf5\x4e\x64\x1e\x87\x31\x58\xc2\x49\xf4\x4d\xbc\x20\x82\xcc\x69\x58\x50\xd9\x3f\xd1\x66\x22\x88\xa0\xb2\x5f\xf0\x05\x29\x82\xa0\xbb\xfb\xcf\x70\x12\xef\xfc\x35\x55\x3f\x1f\x67\x1f\x7b\x1f\x77\x3e\xf6\xa7\xdf\x47\x78\xfc\x71\xf7\xe3\xae\x45\xba\xc2\xc3\xd0\x3e\x3b\x87\x8d\x3d\x06\xe5\xc7\xdd\x9e\x46\x6b\x3d\x6d\xb6\xc6\x43\x5a\xbb\x3d\x8d\x8e\x64\x19\x16\x44\xe0\x48\x00\x85\x9e\xf6\xf3\x15\xcb\x42\xd9\xd7\x92\x8b\x75\xf2\x85\xbc\x2d\xc2\x39\x58\xb8\x03\xb7\x64\xf6\xe3\x88\x71\x2d\xcf\xa7\xc5\x5d\x49\xda\x97\xfa\xda\x46\xa5\xfd\x22\x69\x3f\xcf\x40\x70\x5a\xc8\x58\xb2\xe4\x2c\xce\x4e\x99\x4f\x6d\x68\xa3\xef\xf7\xd4\xde\xe9\x43\x3e\x70\x75\x16\x04\x21\xbc\xc7\x1b\x9d\xb9\xcd\x26\x75\x74\x0c\xd8\x06\x1f\x98\xfc\x2e\xaa\xe2\x99\x81\x03\x0a\x84\xb1\x85\x17\xa4\x9d\x81\xbe\x35\x79\xad\xe3\xf1\x34\xeb\xa4\xe3\xad\x7d\x67\x3c\xdf\xad\xcb\xca\xa2\x4e\xe8\xd3\x7f\xd6\x41\xd4\xc7\x0c\x61\xd2\xd4\x1c\xcc\x7c\xd6\x5d\x04\x3e\xe6\xce\x8b\xbe\xe4\xe9\x52\x15\x2c\x4e\x84\xe4\xf0\xc2\xdf\x30\x88\x48\xf8\x76\xb6\xac\x07\x16\x30\xb4\x87\x9e\x09\x9b\x06\x41\x21\x5c\xdd\x0c\x3f\xa6\x03\xe7\x31\x47\x91\x95\x48\x30\xb9\xa3\x31\x85\x76\x8d\x0c\x85\xc6\xea\x27\x9a\x4c\xb1\xe5\x36\x4c\xf8\x14\x47\x2e\xa5\x87\x48\x07\xf5\x78\xc4\xc1\xda\x4b\x8e\xa3\xbc\x0c\xd3\x7e\xeb\x6c\x85\x58\x63\x0c\x35\x35\xa0\xa2\x5b\x91\x95\x6a\x5f\x05\x01\x92\xec\x0a\x9e\x63\xea\x09\xe3\x6a\x8d\xa2\xea\xf3\x1d\xbb\x92\x44\x2f\x6c\x64\x57\xd8\x84\x55\x92\x8b\x83\x7c\x56\x5f\x33\x73\xa4\x1d\x31\xd4\x6d\x94\x96\xa3\x6e\x93\x9b\xa7\xd7\x9c\x5b\x45\x55\xa3\xf2\xcc\x8e\xa0\xc2\x11\xd8\xa7\x57\x14\x86\xd6\xc4\x1c\xcb\x90\xe3\x88\x85\x89\x08\x91\xc1\x03\x9d\x79\x9c\x2e\xd8\x4c\x3b\x25\xae\xe9\x71\xf6\x6c\x31\x62\x6b\xd7\x96\xf5\xb8\xa5\xb6\x09\xc7\xb8\x54\x98\x8a\xe4\x56\x32\xab\x2c\x01\xfe\xe3\x93\x9c\xcb\x1a\xd0\x2b\x3a\xa7\xd6\x2c\x64\x51\xf4\x9e\x24\xe8\xf0\xe0\xf5\xab\x57\xfb\x4f\x5e\xbf\x7d\x77\xf8\x14\x01\x6f\x38\xb5\x3c\x52\x55\x1b\x28\x6b\xd6\x08\x76\xa8\xe9\x15\x93\x97\x39\x3f\xd7\x64\xad\xaa\x07\x7a\x57\x95\xd6\x85\xed\x06\xdd\x12\x8e\x44\x26\xa5\x93\xcf\x41\xc5\xd1\x04\x7b\x68\x29\x3a\xec\x2a\x61\x6c\xc6\x66\x68\xe4\xe2\xa1\x95\x97\xfa\x56\x00\x8e\x78\x5a\x53\x30\x81\xbe\xb1\xdb\x46\x55\x92\x1b\x09\x04\x2b\xa5\x32\x17\xe4\x8c\x86\xb2\xaf\x16\xe5\x80\x33\x45\x82\xa6\xf1\x42\x6c\x36\x42\x84\x73\x8c\x83\x40\xf6\xaf\x04\x9f\x1f\xc0\x06\x50\x37\x8a\xf1\x02\x70\x49\xd8\x8c\xc7\x46\x70\x70\x74\x16\x04\x61\x3e\xd1\xc9\x1a\xc6\x55\xf2\x94\x9e\x69\x9f\x47\x82\x49\xb3\x30\x3a\x11\xb0\x45\x10\x78\x98\x20\x6f\x3e\x52\x38\x31\x8f\x2c\x08\xea\x77\x03\x73\x1b\xf4\x76\xfc\xd8\x1d\x4f\x6c\xaa\xa0\xbd\xd1\x1a\x38\xdb\x29\x2d\x61\xe2\x1e\xac\xb7\x27\x00\x6f\x36\x61\xda\x8c\xa4\xdd\xee\x76\x46\x52\xdf\x97\x60\xee\x2e\xad\x45\x35\x76\x6e\xc5\x47\x53\xf3\xf1\x49\x80\x87\x51\xda\xac\x05\x38\x0a\xac\x8d\xf5\x2a\xfb\x79\xf6\x34\xbf\xcc\x16\x79\x3c\x7b\xc3\xf3\x53\xce\x84\x08\x82\xb4\x1f\xcf\x66\x87\x17\x2c\x93\x96\x2d\x02\x5c\x08\x48\x45\xa4\xad\x4c\x2b\x97\x56\x65\x7c\xbf\x6a\x56\x5d\x40\x4c\xf5\xf5\xc5\xb6\xea\x55\x60\xed\x22\x22\x61\x0b\x50\x30\x07\xf1\x8c\x2a\xa8\x68\x5f\x10\x42\x6e\xd1\x19\x0f\x82\x30\xed\xc3\x06\x56\xc8\x5c\xdd\x28\xed\x7e\xc5\x9e\x54\xad\x76\x63\x05\xf1\x44\xad\x79\x36\x0b\x33\xcd\x01\x38\x13\x74\x5d\xa7\x53\xa2\x2f\x3b\x34\x45\x1e\x77\x71\x25\x34\x0c\x76\x9b\x00\x83\x01\x66\x6b\x51\x4d\x8a\x48\xb3\x26\x1a\x91\x94\x69\x72\x65\x26\xc8\x85\xa0\xeb\x78\x16\xaf\x24\xe3\x51\xd8\xfa\x7c\x5e\x27\xa4\x36\x9b\x4a\x9a\x4e\x04\x81\x13\x6d\x30\xcc\x26\x2d\xdd\x70\x93\xd4\x95\x66\x1a\xa5\x02\x2c\x49\xcf\x04\x55\x90\x3b\x53\x2b\xc3\xe3\x4c\xa8\x09\x30\x8d\x44\x93\x56\x0a\x28\x56\xa8\x06\xed\x27\x09\x5b\x49\x84\x89\x0e\xd6\x46\x66\xf6\x94\xa3\x15\x25\xde\x6c\xaa\x47\x45\x27\x80\x63\x22\x9b\x61\x2d\x79\x51\x85\x9f\xa5\x0b\xe6\xe5\x5e\xe4\x27\xf0\xc2\x18\x35\x6b\x34\x52\x31\x63\x2b\x08\x13\xb5\x3e\x91\x4a\x3c\x0e\x57\xd0\xe5\xaf\xf7\x66\x5b\xc8\x39\x78\xb3\x95\xde\xcb\x6a\xf3\x45\xb3\xad\x56\xb5\xa1\xb7\x2a\xd9\x7e\xf5\x8c\x64\x39\xf5\x27\xdf\x1c\xe5\x93\x06\xe1\xb3\x2d\xa4\x03\x08\xc6\xbc\xa3\x82\x25\xfa\x8a\x7d\x2f\xf1\xba\x7a\xc8\x9c\x12\x73\x6a\x44\x03\x52\x47\xd5\x11\xfa\x70\xf4\xf6\xd9\xce\xbb\xd7\xbf\x1c\xbe\x42\xa4\x8e\xa7\x23\xf4\x61\xc7\x4f\x5d\xc6\x57\x66\x95\x5f\x00\x77\x26\xda\x19\x92\xfa\xc9\xdf\xfa\x9c\xff\x98\xee\x0d\x06\x41\x20\x1f\xdd\x1d\x0c\xca\x72\x74\x21\xec\x85\x82\xae\x93\x7c\xb9\xcc\x33\xd0\x55\x62\x2b\x19\x6d\xcd\x1d\xe9\x28\x82\x67\x77\xb5\x88\xd3\x8c\x74\xbe\xdf\xfd\x1e\x95\xa5\xff\x02\x3d\x41\x1a\xc5\x6b\xc5\x22\x44\xb4\x4e\xed\xb4\x61\x23\xcd\x35\x38\x91\x53\xba\x2e\x0d\xca\xaf\xea\x58\x69\xde\xd1\xaa\x80\x5f\x35\x7b\xb7\x57\x71\x5e\xf4\x41\x32\x25\x3c\x03\x13\x5e\x70\xd9\xb9\x16\xf4\x42\x54\xa8\x02\xe0\x6c\x7d\x2b\xa6\x03\xac\xfe\x7c\xee\x6c\x6a\x84\x1a\x17\x9c\xb6\x5e\xd7\xa0\x3e\xe2\xae\x62\xd5\xa5\x0c\x1e\x2a\xf4\x5d\x8d\xbe\x2a\x42\x73\x6b\x73\xc9\x0a\x62\x1b\x9b\xda\xaf\xc6\x8d\xc4\x45\xf5\xf5\x92\x98\x6a\xdd\xa0\xcd\x75\x65\x5a\x8f\xc7\x5f\x5e\x0b\xd2\x36\xbb\x04\xe9\x56\x6a\xd3\xcc\xf0\xda\x32\x6d\x5d\xbb\x6c\xaa\x16\x4b\xdd\x18\x35\x6a\xdc\x6c\xae\x85\xfd\xc6\xa1\xdc\xb2\xef\xc1\x1a\x13\xc6\xdc\xc4\xe8\x2f\xc2\xda\x27\x46\x6f\x38\x4c\x58\x89\x5b\xb5\xa4\x9f\x17\xda\xac\xa1\xa9\x35\x08\x98\x3b\xa1\x15\x55\xe6\x02\x5e\x73\xb5\x28\xe2\x85\x6f\xeb\x00\xc6\xa4\xd2\xc2\x01\xbc\xa2\x9f\xd6\xc9\x49\x93\x5b\xce\x28\xbc\x51\xe9\xd7\x2b\xba\x2e\x49\x46\x27\xa8\xe0\x0b\x44\x90\x5e\x2a\x98\x6c\xf0\x08\x4e\x90\xea\x02\x9a\x92\x9c\x4e\x90\x69\xdd\x70\x5e\x2d\x77\x13\x4d\x49\x4a\x27\xc8\xdc\x95\x11\x31\x35\x35\x41\xa7\x1e\xa5\xfb\xec\xda\xa9\x6e\xa9\x2a\x9b\x46\x37\x88\xa0\x06\x89\xa4\x1a\xd6\xeb\x07\x9c\xd3\x8a\xca\x41\x04\xd5\x31\x93\x89\xa8\xd0\x11\x22\xa8\x49\x4c\x40\x54\x93\x96\xd1\x1c\xdc\x1a\xa6\x42\xe0\x29\xdf\x43\x54\x3a\xcf\x5b\x36\x4b\x39\x4b\xa4\x0a\x9e\x49\xb9\x02\xce\xaa\xf9\x16\x36\xe0\xed\x59\x44\x90\xc8\x93\x73\x26\xdf\xc4\xf2\x0c\xd5\xa4\x69\xb2\x06\xc2\xb0\x87\x33\xd3\xc2\x18\x5c\xe1\x0d\xf5\x8d\x1b\xd8\xc7\x27\x70\x33\x23\x43\x63\x8e\x14\x36\xc9\xa6\x78\x0c\x52\xd6\xe7\x45\xdf\xc9\x96\x85\x72\x92\x4d\x09\x24\x46\x5e\x33\xd9\x54\x67\x55\x5f\xf5\x93\xe9\x96\x6a\xbc\x1a\x24\x88\x9e\x81\x69\x52\x6a\x5f\x4d\xfc\x8e\xa6\xf5\x8e\xde\xd4\xf2\xad\xf5\x8d\x34\xcb\x27\xb3\x17\xe5\xdc\x5d\x99\x53\x4c\x92\x9a\xfe\x33\xc3\xdb\x0a\xcb\x0e\x1d\x82\xfc\x4e\xec\x2e\xea\x40\xc5\x8f\xb6\x05\x4c\x92\x7f\x43\x97\x09\xf7\x08\xc0\x4b\xe1\x58\x77\x46\x05\x40\xd8\x77\xec\x34\x93\x8c\xab\x43\x2c\x57\xe7\x9a\xbd\x3a\x67\xec\xb2\xf3\xae\x20\xee\x72\xae\xc3\x65\x79\x29\xfc\xd7\x6e\xf3\x8a\xe4\x8f\x73\xfb\xa8\x1f\x87\x92\xfa\xba\x59\x6a\xf7\xe3\x7e\xc1\x17\x5e\xec\x60\x1a\x81\x19\xbc\x75\x49\x42\x49\x4f\x44\x58\xeb\x2a\x91\x18\x1b\x3c\x3e\xb6\x08\x9d\x7a\x8c\x28\xef\xe6\x14\xd5\x0a\x6e\x17\x6a\x49\x6d\x56\x60\xf3\xc2\x61\x30\xd2\x97\xdf\xc9\xa9\x30\x84\xfa\x94\x70\xda\xd4\x37\x94\xda\x31\xd4\xd6\x74\xda\x09\x6a\xd1\xa9\x06\xd3\x4b\xce\xd7\x6e\xdf\x49\x55\xc1\x3d\x4c\x4b\x55\x69\x79\xa2\x96\x3a\x0d\x3a\xbe\xa1\x52\xcd\x0b\xbf\xb1\xc6\x91\x73\xdb\x89\x39\xe5\xfa\x18\x62\xd6\x5f\x04\x71\x5f\x95\x9f\xd7\x92\xd4\xd6\xfc\x94\xc9\xf7\x3c\x6d\x3b\xe9\x5b\xd7\x8d\xbc\x55\x47\x7b\xc1\x17\xb7\x32\x07\xb7\x9f\x4c\xbe\x82\x58\x22\xc8\x98\xfe\x6b\xd2\x3c\x7e\x7f\x15\xf6\xaa\x33\x89\x7d\xd9\x36\xb3\x3e\xa1\xa3\x26\x38\x80\xe0\x5a\x43\x40\x24\x49\xc1\x17\x20\xf5\xf9\x7f\x42\x7a\xdd\xd6\x0d\x92\x7d\xa1\x23\x59\x5b\x47\xb4\xf5\x3b\xee\xab\xc9\x1c\x09\x7a\xe9\x51\x6f\x87\xd5\x3e\x37\x2f\xb2\x54\x96\x87\xa2\xe5\x26\xb5\xfd\xa0\x8b\x0e\xe0\xbc\x40\xbd\xd0\x2f\x3f\x46\x91\x35\xad\x66\x1f\x7c\x61\x79\x6a\x95\x56\x42\x6d\xb4\x3b\x80\x7e\xbd\x16\xf4\xd0\xeb\xd7\xb1\xb0\x37\x01\x77\x59\xef\x7a\x77\x01\x27\x78\x50\x99\xfe\x46\xec\x8a\x25\x85\xcc\x79\x67\x59\x08\xd9\x39\x61\x9d\xd8\xbd\x75\xf7\x91\x1e\x3c\x1b\x69\x83\x97\x7a\x3b\xd2\xf6\x97\x01\xb5\x29\xa8\xb4\xf3\xc5\xb5\x11\x3c\xd9\x40\xce\x7d\xce\x62\xa1\x88\xc7\xd0\x7e\x42\x6d\xaf\x35\xd5\xe4\x22\xb5\x25\x83\xe3\xda\x7c\x36\x88\xe1\x06\xeb\xda\xac\x2e\x14\xd6\xc3\xf4\x62\x4a\x72\x2c\xfa\x42\x5b\x5e\x6b\xbe\xa9\x9a\xfd\xb7\x96\xea\xf8\x06\xf4\x7b\x2c\xea\xf4\xa2\xa4\x20\x8f\xac\x4f\xf9\x48\x1a\xfd\xff\x4f\x82\x1e\x7b\x13\x7f\x25\xea\x42\x38\x47\x42\xfb\xc1\x3e\x2c\xc2\xa3\x16\x54\x4e\x98\x7f\x1c\x69\x31\xea\x90\x13\x3f\x2b\x61\xb0\x13\x5c\x1a\x53\x27\x8d\x6a\x60\x5f\xd0\x2b\x11\x5e\x0b\x3c\xda\x17\x7d\x90\x22\xa0\x47\x82\xec\x0b\xf3\xc8\xdb\x86\x32\xae\x44\x78\x22\xc2\xfd\x3a\xa6\x2f\x55\x19\x0d\x8b\xf4\xb5\xa8\x02\x40\xc8\xd0\x4f\x10\x93\x0a\x93\xe1\x79\xa1\x82\xf1\x62\xd1\x56\xbd\xc5\xd3\x56\x51\x62\x5f\xf4\xc5\x8a\xb3\x78\xf6\x25\x85\xfc\x86\x3a\x98\x71\x90\x62\x66\xf8\x8d\xa0\xfb\x82\x9c\xab\xdf\xd1\x1b\xd7\x75\x7a\x2e\x20\xf5\x85\xa0\x6f\x04\x79\x2b\xb6\x79\x18\x75\xc5\x26\x72\x20\x28\x70\x00\x2c\x27\x80\xbc\x13\xb4\x45\xb9\x4d\xd2\xc9\x94\x30\x3a\x18\xb1\x47\x7b\xf7\x1f\x8c\x7a\x3d\x86\xa5\x79\x40\xfc\x16\xf5\xc2\x90\x3d\x1a\x3e\x18\xa3\x01\x02\xff\x1b\xac\xe6\x99\x1c\xd7\xdf\x68\x2a\x11\x9a\x32\xc4\xe4\x55\x93\x2e\xaf\xc4\xad\xe0\x96\x00\x37\x57\x3d\x06\x67\x60\x44\x2f\x24\x4c\x07\x8e\x80\x72\x1f\x8c\xb2\x47\x4e\xf9\xab\xd7\xcb\xf0\xcd\x24\x89\x77\xa0\x3c\x17\x74\x0d\x12\x70\xef\x72\xa3\x79\xf3\x4a\x90\x58\x88\xf4\x34\x8b\x5a\xf9\x36\x0d\xfa\x8a\xb3\x59\x91\xd4\xf6\xb8\x8f\xd8\x27\x5c\x91\x47\x7c\x4a\x64\x89\x89\xd4\xb6\x3e\x4e\xd2\x8c\xb5\x56\xed\x9b\x61\x65\xc6\x2e\x48\x9c\xc8\x1a\x3b\xa0\x92\x9f\x9c\xac\xf3\x93\x4f\xd1\x3a\x8f\xa4\xb6\x47\x17\xa1\x1c\x95\x8a\x22\x98\x4c\xcd\x64\x30\x7f\x32\x9c\xaa\x1b\x90\x6b\x60\xcd\x21\x3f\xf9\x34\xc9\x15\x50\xac\xa6\x24\xae\xd1\x8d\x40\x48\x0e\x46\x49\xe5\x55\xb2\xd7\x4b\xac\xd6\x74\x3c\x49\xa6\x44\xd0\x74\x52\x4c\x47\x5b\xda\x13\xc2\xa9\x9f\x09\xa3\x78\xcd\x1d\x85\x29\x30\x5c\xf3\xb4\xec\xb6\xea\x7c\xaa\x3b\x5e\x94\xd6\x10\x4e\x28\x2a\xe3\x2c\xcd\x51\x8f\x2a\x0f\xe3\x23\xcf\xff\x37\xb8\x35\xe5\x94\xc1\x68\x98\x1e\xcd\x28\x9d\x87\x07\x60\x4f\x66\x5d\x69\x70\x4c\xd4\xd5\x6d\x30\xca\x2b\xf5\xcb\x5e\x2f\xaf\x60\x84\x4f\xf2\x69\x10\x64\xba\x1b\x2a\xa0\xa8\x13\xaf\x4e\x9a\x95\x65\x19\x32\x90\xaa\xd6\x0f\xd5\x5b\x2a\x1d\xf6\xc9\xb7\x7a\xd7\xec\xed\x9e\x12\xd4\x41\xf0\x66\x89\x52\x91\xef\x3c\x7c\x78\xff\x87\x9d\x21\x48\x4b\x58\x89\xd2\xcc\x53\x6c\x98\x0c\x76\x7e\x88\x77\xe6\xd3\xf5\x5e\xb9\x7b\x9a\x92\x22\x63\x22\x89\x57\xac\x26\x8c\xdc\xf2\x4a\x9e\xe1\x2d\xe3\x14\x59\x59\x12\xcd\x7f\xdb\xea\xa6\x51\xb3\xb5\xd3\xd9\xd0\x92\xa0\xda\xd7\x8c\x00\xd3\x47\x3e\xe5\x9c\x51\x6d\x0e\xe9\x46\x4e\xa8\xc4\x91\x25\xb8\x6b\xba\x9a\x99\x67\x49\x9f\xdc\x34\x0b\x7a\xa0\x61\xe6\xab\x79\x14\x6e\x3a\xee\xc1\x74\xb4\xdc\x61\xd0\xb7\x7b\x0f\xbe\xdd\xbb\x8b\x7a\xce\x83\xa4\xd5\x53\xd8\xc3\x64\xf8\x00\xf7\xd0\xb7\x77\x9f\x20\x75\xe0\x56\xf0\x8f\x10\x49\xe9\x60\x94\x3e\xca\x2a\x40\x70\x22\x1c\x19\xc8\xae\x1c\xe4\x33\xb6\xaf\xee\x53\xa3\x7b\xf7\xd5\x25\x69\xb3\xb9\xf7\x40\xff\xfd\xc1\x84\x87\x7b\x26\x22\x7e\x4c\xef\x3d\x0c\x82\xf8\x11\xbd\xff\x0f\x08\x3d\xb8\x0f\xa1\x1f\x06\x10\xfa\xe1\x1f\x10\x1a\xee\xed\x8d\xf3\x9e\xa9\x1d\x6a\x8e\xe2\x47\xc3\xbd\x87\x2a\xf2\x9d\x98\xc4\xd3\x28\x7e\xb4\x37\xb8\x67\xc3\xc3\x1f\xf6\x36\xf1\xe3\xc7\x0f\xa6\x3d\x15\xd8\x7b\xb8\x79\x70\x37\x80\x3c\xf7\xef\xef\xfd\xf0\x00\x2a\xbe\xff\x8f\xbb\xf7\xee\x99\xec\x7b\x7b\xf7\x54\xf6\xe1\x9e\xcb\xaf\x0a\x07\x0f\xee\x36\xca\x87\x69\x8f\x0e\x49\x4c\x1f\xdc\xbf\x7f\xf7\x41\x2f\x0c\x87\x83\xbd\xbb\x41\x8c\x1f\x3d\x1a\x0e\x36\xf0\xdd\x18\x3d\x26\xa6\xfe\x7b\x03\xa8\xff\xa1\x5f\xff\x70\xcf\x6f\xa0\xb5\x41\xb7\x97\xf3\x5b\x55\x58\xb5\x3e\xc2\xb6\x9e\x2f\x0e\x82\x6e\x37\x6c\xa8\xb1\xfe\x6d\xfd\x54\xd0\x2b\xd4\x72\x28\xb7\x69\x33\xea\x1c\x5f\xc3\xf1\x57\x68\x7c\x19\x5f\x9f\xb0\x97\x35\xc3\x20\xe6\x01\xfc\x40\x80\xb7\xc4\xea\x04\x73\xe8\x58\x56\x6a\xdf\x74\x88\x0d\xc2\x33\x1c\x04\xef\x44\x72\x96\x8f\xa0\x9d\xa6\x1e\x9c\xa1\xd7\xc1\x81\x64\x4d\x4f\x7e\x6b\xfa\xb8\xed\x0e\xc3\xd8\x20\x5d\x5e\x39\x9e\xef\xb2\x96\x19\xb7\x1a\x53\x13\x46\xf8\x74\x14\xc2\x23\x50\xed\xf0\xdd\x6c\x32\x45\xc0\xe4\x97\x6f\xec\xdc\x08\xbc\xd9\x74\xdf\x1a\x01\xda\xe6\xc4\x11\x0e\x6f\x23\xea\x00\xa4\xdd\x81\x83\x06\xf0\x7f\xfa\x85\x0e\xb8\xa3\xd0\x38\x7e\xcb\xa9\x93\xf3\x82\x21\x05\x41\x17\x30\x7c\x10\x84\x39\x7d\x25\x40\x71\x0e\x13\x93\x04\x29\xe3\x90\xb7\x5c\x4b\x39\xc9\x61\x5e\x6c\x97\x19\xc9\xb1\x55\x7e\x62\x93\x7c\x3a\x4a\x5b\x34\x07\xd3\x20\xe0\x37\x28\x14\xe6\x53\x2a\xc3\x14\x16\x25\x72\xb3\xac\xcd\x46\x40\xa2\xba\x20\x11\xe6\xec\xa6\xc1\xe9\xca\x5b\xa8\x06\x56\x19\xf0\x51\x87\x8f\x1d\xab\xdf\x4d\xdb\x9a\xfa\x43\x52\x68\x50\x45\xa4\xc0\x6f\xcd\x71\x59\x92\xf7\xc2\xa0\xda\x1a\x31\x0d\xe8\x94\xbc\x14\xd4\x68\xd8\xdd\x11\x74\xfd\xf6\xd9\xc1\xf0\x1f\x77\x1f\x46\xc8\x7c\x20\xf2\xf6\xd9\xc1\xdd\x1f\x1e\x3e\x80\x18\xf5\x81\x4a\xf2\x54\xd0\xe7\xa2\xaf\x69\xa1\x70\x6d\xcd\x35\xdc\x11\x7d\x93\x85\x80\x9c\xbf\x94\x8c\x8b\xc8\xd5\xd8\x42\xcd\xbe\x17\x56\x73\xfe\xa5\x00\xfd\xbe\xd2\xb5\xd6\x92\xbb\x72\x89\x55\x96\xe4\x8e\xc0\xe4\xd9\x97\xe9\xd7\x27\x82\xae\x4f\x78\x9c\x9c\x33\xd9\xfe\x7a\xd2\x43\x93\x29\x02\x8a\x6a\x19\x83\xd9\xe5\x65\x8c\x48\x9a\xcd\xd2\xa4\x66\x34\xca\xd7\x37\xeb\xa1\x09\xea\xb1\x1e\x52\xe5\x38\x5b\xb1\x58\xb6\xd6\x5c\x96\xe4\x73\x93\x7a\xfe\xd1\x46\x54\x1d\x56\x90\x41\xfe\x6a\xd2\xb9\x3f\x0a\x43\xd5\x4b\xf2\x59\x81\xee\x98\x45\x60\x68\x8f\xfc\x26\x28\xc8\xb2\xf9\x38\xc8\xa9\x01\x92\x9f\x04\x7d\xea\x88\x7d\xf2\x01\x1e\x3d\x67\xbf\x16\x8c\x5f\xbf\xe1\x6c\x9e\x5e\x45\xdd\x21\x81\x6d\xfa\x34\x97\x42\x05\xcc\xe3\x59\x84\xf4\xeb\x99\x0d\x1f\xb1\x4c\xa6\x19\x5b\x68\xcb\xf6\x8b\x74\x99\x4a\xc6\x23\x14\x20\x4b\x3a\x80\xde\x81\xfa\xe2\xd1\x73\xd1\xd7\x9f\x26\xe6\x37\x30\xb8\xf5\x3a\x5b\x5c\xab\xd2\x1a\x12\xa2\x9f\x44\x05\x13\xd1\x53\xd1\xaf\x00\x64\xf2\x93\x98\xba\x09\xef\x0e\x89\xb0\x0c\x97\x1b\x74\xda\x3b\xbf\x89\x0a\xdb\x8a\xf3\x74\xf5\xaa\x58\x2c\x74\x49\xc9\xd3\x44\xaa\xe0\x4f\x71\x36\x5b\x80\x65\xfd\x61\x49\x7e\xa9\xe6\xd6\xa2\x49\xdf\x7b\x07\x99\x93\x05\x39\x23\x2b\xbd\xc9\x66\xe4\x82\x6a\xac\xb9\xfd\x5e\x9f\x8c\x2f\x68\x12\x72\x72\x81\xa3\x0b\x5f\x8d\x5c\x75\x74\x7c\x41\xe7\xe1\x05\xb6\x10\xa4\x1f\xca\x3f\x8b\xf0\x42\xe1\xa1\x0b\xb5\x5b\xec\xc1\x10\x5e\xb4\x7a\xb0\x91\x5b\x35\xce\xc1\x02\x41\x89\xad\x63\x62\x82\xb0\x76\x1b\x08\xb6\x7d\x40\xa4\xca\xe2\xf9\x38\x08\xba\x67\xe3\x38\xe4\xe4\x83\x5d\x0c\x4e\x56\x04\x9d\xb3\x6b\x84\x23\x3e\xba\x30\x0e\xaf\x9b\x6c\xcf\x70\x46\x2f\xf0\x66\xb3\x65\x6e\x60\xb6\xd9\x38\x97\x26\xb5\xc8\x26\xf1\x07\x19\xd3\xd3\x34\x93\xb5\xb8\xe7\xa2\x3a\x67\x2f\x9c\x1b\xe2\x78\x3c\x59\x84\x67\x63\x1e\xdd\xd0\x51\xad\x90\xba\x08\xe3\xf0\xa2\x91\x0c\xd6\x96\x10\xc6\xd3\x68\xb2\x08\xb9\xcd\x67\x2d\x0a\x61\xac\x05\x22\xaf\xc9\x12\x4c\xcf\xcd\x2b\xf3\x40\x17\xb6\xed\xa5\x8a\xfe\x2c\xc2\x04\xe3\x6b\x9a\x54\x5a\xbb\xa7\xb5\xdb\xcd\x05\x1e\x5d\xd3\x62\x7c\xda\x17\x39\x97\x61\x81\xa3\x53\xa7\xe8\xad\x6d\x1c\x5d\x57\x84\xe1\x89\x06\x98\x4b\x7a\x3d\x39\x99\x92\x23\x7a\x31\xb9\x84\xb6\xbb\xa9\x73\xeb\x7e\xa4\xb3\x1c\x52\x00\x84\x71\x9b\x45\xa8\xb1\x3a\x78\x2e\x71\xc4\x23\xde\x0b\xc5\x18\xf5\x51\xef\x32\x52\xf8\xe5\x52\xe1\x17\x3c\xfa\x4b\x84\x4b\x22\xc3\x23\x72\x78\x03\xd4\x62\x27\x2e\xbd\x2c\xc9\x1f\x82\x6e\x1d\xb5\x4d\x8c\x58\x47\x48\x0d\xe9\x1f\x63\xde\x4f\x92\x9c\x36\x1e\xc7\xbb\x4e\xd1\xed\x83\x18\x39\x3b\x2c\x54\xda\x65\x0a\x82\xea\x52\x5d\xc5\xb5\x31\xd2\x6c\x6a\x3b\x43\xed\x50\x27\x82\x1e\xa8\xcc\x6f\xe0\xa8\x19\x87\x5b\x82\xc9\xcd\xe6\x83\xb0\xdf\x35\x3f\xb4\x2e\x47\x10\x18\xdc\xd6\x88\xf4\xae\x1b\x7e\x4a\x7b\xaf\xde\x9d\xb1\x8e\xc9\xd0\xd1\xfc\x5c\xc7\xf0\x63\xa9\x3c\x63\xbc\x03\x6d\x90\x4e\x55\x2b\xe9\xe4\xbc\x53\xc9\x99\x58\xc6\x5e\x85\x9e\x1b\xdd\xd5\x18\x51\xcf\xf5\x33\x83\xe2\x6a\x88\x92\xb8\x3c\xed\x7d\x7c\x9f\x9d\x67\xf9\x65\xd6\xd1\x99\x6c\x37\x57\x3c\xbf\x48\x67\x6c\xa6\xe6\x8e\xbb\x66\x4a\x7d\xa3\xab\x23\x62\xae\xee\xc1\x1f\x84\x79\x18\x1a\x59\x63\x17\x6d\x82\x4b\x3a\xcb\x66\xf3\x59\x84\x36\xa0\xdd\xa6\x53\x17\x24\xcd\xa3\x67\x1b\xa3\xc8\x7e\x3d\xcb\xb8\x19\x11\x7d\x10\x8d\x18\xef\xf4\xaa\x2c\x12\xf5\x5d\xe4\xf8\x83\xe8\x7b\xe7\x5b\xd7\x4b\x72\x47\x1d\xdb\x3a\xe4\xda\x7a\xd6\xc8\x33\xde\x8a\x89\x2a\xc0\xb3\x51\xde\x51\xe9\x75\xce\x45\xaa\xce\x55\x39\xbc\x04\x7b\xa8\xb6\xf5\x43\x27\x8d\xed\x47\xf4\xa1\x71\xda\xf2\xa8\x75\x81\x4c\xa2\x2b\xc7\x23\x0f\xa3\x6e\x9d\xd3\x37\x37\x5c\x65\x1a\x6f\x47\x55\x75\x56\x71\x44\x2f\x7f\x94\x7b\xe7\x7d\xd6\x38\xd4\x5b\x7b\x5c\xcb\x32\x6e\x84\x55\x4b\xb5\x08\xef\xe4\x6f\xeb\xbc\x4b\x1d\x7b\xdf\x50\x89\x0d\x10\x85\xe2\x6f\xe8\x49\xce\xe5\x58\xff\xd1\xe2\xc2\x2d\x84\x45\x6b\xa3\x5b\xd9\xc6\x6d\x91\xd0\x8d\xad\x58\x60\x21\x8d\x5a\xfa\x93\x9b\x0d\x35\xce\x68\x38\x20\x36\x84\x43\x84\x14\xa1\xff\x59\x84\x2e\x2a\x08\x42\x4e\x5d\x48\xeb\x08\x90\xd8\x1c\x89\x5b\x37\xaa\x4c\x1f\x53\x8a\x52\x31\x98\x1d\xa1\x51\xaa\xd9\xaa\xc0\xf6\x7c\xa6\xf1\x48\x9a\x75\x9e\x88\x71\x2d\x2e\x62\x0a\x7f\x6a\x92\x0d\xa5\x59\x87\x8d\x59\xdf\x04\xc7\x2e\x3e\x42\x9a\x36\x46\x91\x8b\x1a\x69\x4b\x76\x4f\xc4\x24\x9d\x8e\xf8\x66\x13\xd6\x6d\x72\x67\x60\x9f\x42\x4d\x7b\x10\x70\x7d\x04\xeb\x60\xc5\xa3\x29\xe8\x60\x54\xf8\x7c\x3a\xa3\x4b\x2e\x28\x9f\x14\xd3\x51\x5e\xad\xaf\xe6\x36\xaa\xd1\x4d\xc4\x74\xb3\xf9\x4b\x84\x31\xf9\x45\x84\x2a\x44\x04\x49\x54\x43\x5b\x6b\x40\xbc\xf2\x24\xb7\x5b\x2f\x77\x5b\x48\xcb\x8e\x9b\x09\x36\x5d\x25\xb9\x87\x62\xf2\x06\x90\xe6\x15\x7a\x75\xf5\x79\x5b\x25\x77\x87\x8e\x31\x00\x6b\x95\x6a\xf2\x0a\x37\x60\xb2\xa0\xa0\x93\x93\x37\x91\x25\x58\xd4\x70\x0e\xb0\xf3\x26\x32\x0a\x82\x26\x63\xd1\x65\x19\x2f\x7a\x54\x1d\x8a\x0f\xa9\x66\x92\x0d\x07\x83\xc1\xdd\x6f\xef\x3e\x09\x50\x54\xa5\x1c\xee\x7d\xfb\xc3\xc1\xb7\x3f\xdc\x0d\x50\x65\x9a\xf1\xf1\x60\xbc\xe8\xcd\xc1\x4f\x0f\xf9\xb9\x4d\xe1\x93\xa4\x78\xad\x4d\x93\x78\x8f\xd5\x46\x2c\xc1\x5d\xd3\xeb\x6b\xee\xaa\x0e\x82\x30\xa6\xac\x87\xc6\xa8\xf7\x87\x06\x06\x3e\x7e\x21\x26\x72\x1a\xc6\x84\x93\x14\x47\xf0\xac\x0a\x86\x5d\x6d\x74\x8a\x23\xfb\xf9\x87\x08\x73\x4c\x52\x5c\x92\x5f\xc5\xd6\x33\x15\x61\xdb\xbe\xee\x07\x1e\xc5\xe2\x3f\xf1\x8f\x6b\xef\xfd\xeb\x12\x58\xc8\x77\xb4\x8a\xd4\xd8\x7d\x81\x5f\x6f\x95\x60\x64\xe8\x73\x8a\x76\xe3\x55\xba\x7b\x31\xd8\xb5\xa6\x9e\x77\x1b\x86\xa1\x53\xba\x2e\x49\xec\x29\x65\x54\x02\x13\xfd\x93\x7c\x76\x0d\xc6\x54\xf4\xa7\x27\x6f\xab\x23\xc6\x0d\xb1\x25\x4f\xfd\xf9\x65\x2a\x44\x9a\x9d\x76\xac\x77\x99\x4e\x07\x1e\xae\x99\x42\xbc\x1d\x55\x16\x61\x1c\x85\xac\x7f\x07\x3c\xa0\xbe\xb1\x69\x22\x08\x6a\xef\x15\x5b\xe9\x6d\x36\xd6\x15\x79\x02\x92\x36\x5b\xb9\x27\x12\x44\xc9\x7e\x16\xa1\x79\x73\xe6\xbd\x9c\x48\xa0\x57\xc1\x65\xfc\xef\x42\x1b\x52\x17\xab\x18\x8c\xe8\x0e\x40\x53\x82\x45\x6b\xa3\x0e\xa1\xa5\xfc\x2b\xcb\xda\x70\x51\x75\x4e\x74\xca\x92\x80\x83\x00\x2e\x5c\x81\xb6\x2b\x94\x51\x68\x28\x49\xcd\x48\x77\x7b\x56\xaf\x2d\xa8\xbc\x6e\xfb\xbc\xad\x8c\x99\x2e\x6d\x4f\xda\xf3\xfb\x81\x35\xaa\x0a\xdb\x99\x05\x37\xba\xc7\x80\xb5\xbd\x29\x71\x2c\xfb\xe9\x0c\xb4\x1e\x17\xec\x20\x5f\xae\x62\xce\x42\xd6\x07\x8f\x6a\x37\x96\xd9\xca\x7e\xb3\x63\x0e\xb0\xd3\x1c\x43\x6f\x45\xb4\x5e\xe4\xf1\xec\xa0\x39\xab\x6a\x0c\xe1\x80\x48\x10\x58\x4c\x25\x0e\xd1\x8b\xd7\xfb\x4f\x8f\x0f\x5e\xbf\x7a\xf6\xfc\x47\x04\xaf\x50\xd5\x14\xb6\x4d\xd7\xbc\x08\x8b\xa2\xbf\x8c\xf9\x79\x35\x35\x1d\x16\xba\x4b\x86\x33\xf5\x5d\xf4\x2f\x79\xbc\xaa\xbf\x1a\xc3\xb3\xce\x08\x1b\xb3\xa4\xac\xbf\xe2\xec\x82\xb2\x7e\xc6\xae\xa4\x36\x4c\xda\x19\x38\xc3\xa2\xd4\xf6\x11\x4c\x3c\xce\x52\x01\x72\x0e\x44\xe7\xa6\x77\x89\x22\x61\x99\x4c\xce\x9c\xe5\x7a\x6d\x81\xb4\x73\x37\xe2\x21\x3a\x3a\x7c\x77\xfc\xfc\xd5\xf3\x77\xcf\xf7\x5f\x3c\xff\xf3\xf0\x29\x22\xdd\x81\x49\xbe\x17\x81\x9d\x52\x96\xcd\x9c\x0d\x53\xd6\x17\x32\x5f\x85\xe0\xac\x03\x66\x11\x87\xb8\x24\xb5\xca\xff\x4f\x66\x42\xdf\xeb\xfe\xd3\xf3\xf1\xa7\x00\xea\x9c\xe7\xb9\xfc\x51\xef\x25\x6c\xe7\xe8\x1e\xf9\x55\x84\x6b\x8b\xd9\xf2\xbe\xf3\xa7\x0e\x97\x2e\xed\x25\x8f\x28\x54\xa2\x76\xa2\x9b\x9e\xbd\xc1\x90\x52\x1a\xa6\x94\xf5\x05\xcb\x24\x36\x7a\x45\xe3\x30\xa6\x29\x48\x65\x56\x9e\x71\xcc\x44\xef\x1f\x1c\xbc\x7e\xff\xea\xdd\x11\x22\xf1\x66\x33\x99\x62\x1c\x65\x21\x12\x67\xf9\xa5\xd1\xb3\x41\x64\x6d\xec\x5c\x3c\xd3\xea\x4b\x32\xef\xc0\xec\x76\x6c\x4d\x7d\x04\xca\xfa\x75\xdd\x2a\xa3\x83\x65\x7d\x8b\x94\x64\xad\x06\x09\x6e\x8c\x75\x5f\x1f\x7c\xe5\x52\x96\x64\x59\xc8\xd8\xec\x0a\x0f\xdc\x9b\x4e\x12\x9d\xc5\x82\x92\x34\xe0\x67\x2b\xa7\x87\x66\x6c\x76\x3b\x0b\x5b\x79\xed\x20\x29\x2b\x7d\xe3\x6b\x7f\x82\x70\xc4\x8b\x1b\x84\xb6\x8a\xba\x82\x29\xdc\x1f\xbd\xc3\xc3\x8a\x1d\xd7\x54\x3b\xad\xd2\xb4\x76\xb1\xd6\x07\xe1\x8d\x11\x87\x27\xd8\xd6\xfc\xd4\x79\x2f\xac\x78\xef\x1e\xcf\xde\x50\x2f\x72\xde\x74\xbe\x86\x48\x3a\x73\xbe\x8e\x54\x28\xc9\xb3\x08\x74\xec\x76\x2e\x92\x98\xcf\x90\x31\x41\x79\x38\x4b\x65\xce\x15\xca\x07\x79\x0d\x6d\xb3\x64\x32\xb5\x07\xe5\x3a\x5e\xad\x9e\x67\xf3\x3c\x92\x73\xc2\xf3\x42\x32\x11\x4d\x4c\x4b\x55\xdd\xab\x58\x9e\x45\x68\xb7\xee\xa3\x23\x5e\xad\xa2\xbc\x28\xcb\x29\xc9\xe2\x8b\xe7\x92\x2d\xab\x92\xfb\xb5\x5e\xbd\x8c\x25\x10\x6e\x91\x9c\xf7\x55\x58\xb7\x13\xdd\xd8\x8a\x7b\x8e\x9f\xf7\xd3\x19\x41\xbb\x08\xab\x46\x84\xcc\x39\x8b\x7e\x17\x20\xf7\xf4\xff\xfd\xff\x01\x00\x00\xff\xff\x1a\x7c\xdb\x2c\x18\x77\x01\x00") func init() { err := CTX.Err() diff --git a/yarn.lock b/yarn.lock index aad71796b3..235035ada7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6418,6 +6418,11 @@ vue-template-es2015-compiler@^1.9.0: resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== +vuex@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.5.1.tgz#f1b8dcea649bc25254cf4f4358081dbf5da18b3d" + integrity sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw== + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" From 72c31b4ebfe1e677549aaff1777b6e2baa1502c4 Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Fri, 31 Jul 2020 11:53:12 +0200 Subject: [PATCH 274/407] Add basic role management UI --- ui/components/accounts/AccountsList.vue | 27 ++-- ui/components/accounts/AccountsListRow.vue | 139 +++++++++++++++++++++ ui/helpers/utils.js | 8 ++ ui/store/index.js | 25 +++- 4 files changed, 182 insertions(+), 17 deletions(-) create mode 100644 ui/components/accounts/AccountsListRow.vue create mode 100644 ui/helpers/utils.js diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue index ba0054dc22..ad84c838e1 100644 --- a/ui/components/accounts/AccountsList.vue +++ b/ui/components/accounts/AccountsList.vue @@ -7,36 +7,31 @@ + - - - - - - - - - - - - - - + diff --git a/ui/helpers/utils.js b/ui/helpers/utils.js new file mode 100644 index 0000000000..2fceea84e4 --- /dev/null +++ b/ui/helpers/utils.js @@ -0,0 +1,8 @@ +/** + * Asserts wheter the given object is empty + * @param {Object} obj Object to be checked + * @returns {Boolean} + */ +export function isObjectEmpty (obj) { + return Object.keys(obj).length === 0 && obj.constructor === Object +} diff --git a/ui/store/index.js b/ui/store/index.js index db81d2d40f..a83a66bdba 100644 --- a/ui/store/index.js +++ b/ui/store/index.js @@ -7,7 +7,8 @@ import axios from 'axios' const state = { config: null, initialized: false, - accounts: {} + accounts: {}, + roles: null } const getters = { @@ -32,6 +33,9 @@ const mutations = { }, SET_ACCOUNTS (state, accounts) { state.accounts = accounts + }, + SET_ROLES (state, roles) { + state.roles = roles } } @@ -42,6 +46,7 @@ const actions = { async initialize ({ commit, dispatch }) { await dispatch('fetchAccounts') + await dispatch('fetchRoles') commit('SET_INITIALIZED', true) }, @@ -61,6 +66,24 @@ const actions = { status: 'danger' }, { root: true }) } + }, + + async fetchRoles ({ commit, rootGetters }) { + const headers = new Headers() + + headers.append('Authorization', 'Bearer ' + rootGetters.getToken) + + let roles = await fetch(`${rootGetters.configuration.server}/api/v0/settings/roles-list`, { + method: 'POST', + mode: 'cors', + headers: this.headers, + body: JSON.stringify({ + account_uuid: rootGetters.user.id + }) + }) + + roles = await roles.json() + commit('SET_ROLES', roles.bundles) } } From d61babe1defe6c74f91ef4d3ad79fabcb3095dbe Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Fri, 31 Jul 2020 14:40:30 +0200 Subject: [PATCH 275/407] Add settings client --- ui/client/settings/index.js | 581 ++++++++++++++++++++++++++++++++++++ 1 file changed, 581 insertions(+) create mode 100644 ui/client/settings/index.js diff --git a/ui/client/settings/index.js b/ui/client/settings/index.js new file mode 100644 index 0000000000..5957e6c81c --- /dev/null +++ b/ui/client/settings/index.js @@ -0,0 +1,581 @@ +/* eslint-disable */ +import axios from 'axios' +import qs from 'qs' +let domain = '' +export const getDomain = () => { + return domain +} +export const setDomain = ($domain) => { + domain = $domain +} +export const request = (method, url, body, queryParameters, form, config) => { + method = method.toLowerCase() + let keys = Object.keys(queryParameters) + let queryUrl = url + if (keys.length > 0) { + queryUrl = url + '?' + qs.stringify(queryParameters) + } + // let queryUrl = url+(keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') + if (body) { + return axios[method](queryUrl, body, config) + } else if (method === 'get') { + return axios[method](queryUrl, config) + } else { + return axios[method](queryUrl, qs.stringify(form), config) + } +} +/*========================================================== + * + ==========================================================*/ +/** + * + * request: RoleService_AssignRoleToUser + * url: RoleService_AssignRoleToUserURL + * method: RoleService_AssignRoleToUser_TYPE + * raw_url: RoleService_AssignRoleToUser_RAW_URL + * @param body - + */ +export const RoleService_AssignRoleToUser = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/assignments-add' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const RoleService_AssignRoleToUser_RAW_URL = function() { + return '/api/v0/settings/assignments-add' +} +export const RoleService_AssignRoleToUser_TYPE = function() { + return 'post' +} +export const RoleService_AssignRoleToUserURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/assignments-add' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: RoleService_ListRoleAssignments + * url: RoleService_ListRoleAssignmentsURL + * method: RoleService_ListRoleAssignments_TYPE + * raw_url: RoleService_ListRoleAssignments_RAW_URL + * @param body - + */ +export const RoleService_ListRoleAssignments = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/assignments-list' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const RoleService_ListRoleAssignments_RAW_URL = function() { + return '/api/v0/settings/assignments-list' +} +export const RoleService_ListRoleAssignments_TYPE = function() { + return 'post' +} +export const RoleService_ListRoleAssignmentsURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/assignments-list' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: RoleService_RemoveRoleFromUser + * url: RoleService_RemoveRoleFromUserURL + * method: RoleService_RemoveRoleFromUser_TYPE + * raw_url: RoleService_RemoveRoleFromUser_RAW_URL + * @param body - + */ +export const RoleService_RemoveRoleFromUser = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/assignments-remove' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const RoleService_RemoveRoleFromUser_RAW_URL = function() { + return '/api/v0/settings/assignments-remove' +} +export const RoleService_RemoveRoleFromUser_TYPE = function() { + return 'post' +} +export const RoleService_RemoveRoleFromUserURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/assignments-remove' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: BundleService_GetBundle + * url: BundleService_GetBundleURL + * method: BundleService_GetBundle_TYPE + * raw_url: BundleService_GetBundle_RAW_URL + * @param body - + */ +export const BundleService_GetBundle = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/bundle-get' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const BundleService_GetBundle_RAW_URL = function() { + return '/api/v0/settings/bundle-get' +} +export const BundleService_GetBundle_TYPE = function() { + return 'post' +} +export const BundleService_GetBundleURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/bundle-get' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: BundleService_SaveBundle + * url: BundleService_SaveBundleURL + * method: BundleService_SaveBundle_TYPE + * raw_url: BundleService_SaveBundle_RAW_URL + * @param body - + */ +export const BundleService_SaveBundle = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/bundle-save' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const BundleService_SaveBundle_RAW_URL = function() { + return '/api/v0/settings/bundle-save' +} +export const BundleService_SaveBundle_TYPE = function() { + return 'post' +} +export const BundleService_SaveBundleURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/bundle-save' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: BundleService_AddSettingToBundle + * url: BundleService_AddSettingToBundleURL + * method: BundleService_AddSettingToBundle_TYPE + * raw_url: BundleService_AddSettingToBundle_RAW_URL + * @param body - + */ +export const BundleService_AddSettingToBundle = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/bundles-add-setting' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const BundleService_AddSettingToBundle_RAW_URL = function() { + return '/api/v0/settings/bundles-add-setting' +} +export const BundleService_AddSettingToBundle_TYPE = function() { + return 'post' +} +export const BundleService_AddSettingToBundleURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/bundles-add-setting' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: BundleService_ListBundles + * url: BundleService_ListBundlesURL + * method: BundleService_ListBundles_TYPE + * raw_url: BundleService_ListBundles_RAW_URL + * @param body - + */ +export const BundleService_ListBundles = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/bundles-list' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const BundleService_ListBundles_RAW_URL = function() { + return '/api/v0/settings/bundles-list' +} +export const BundleService_ListBundles_TYPE = function() { + return 'post' +} +export const BundleService_ListBundlesURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/bundles-list' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: BundleService_RemoveSettingFromBundle + * url: BundleService_RemoveSettingFromBundleURL + * method: BundleService_RemoveSettingFromBundle_TYPE + * raw_url: BundleService_RemoveSettingFromBundle_RAW_URL + * @param body - + */ +export const BundleService_RemoveSettingFromBundle = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/bundles-remove-setting' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const BundleService_RemoveSettingFromBundle_RAW_URL = function() { + return '/api/v0/settings/bundles-remove-setting' +} +export const BundleService_RemoveSettingFromBundle_TYPE = function() { + return 'post' +} +export const BundleService_RemoveSettingFromBundleURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/bundles-remove-setting' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: RoleService_ListRoles + * url: RoleService_ListRolesURL + * method: RoleService_ListRoles_TYPE + * raw_url: RoleService_ListRoles_RAW_URL + * @param body - + */ +export const RoleService_ListRoles = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/roles-list' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const RoleService_ListRoles_RAW_URL = function() { + return '/api/v0/settings/roles-list' +} +export const RoleService_ListRoles_TYPE = function() { + return 'post' +} +export const RoleService_ListRolesURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/roles-list' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: ValueService_GetValue + * url: ValueService_GetValueURL + * method: ValueService_GetValue_TYPE + * raw_url: ValueService_GetValue_RAW_URL + * @param body - + */ +export const ValueService_GetValue = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/values-get' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const ValueService_GetValue_RAW_URL = function() { + return '/api/v0/settings/values-get' +} +export const ValueService_GetValue_TYPE = function() { + return 'post' +} +export const ValueService_GetValueURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/values-get' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: ValueService_ListValues + * url: ValueService_ListValuesURL + * method: ValueService_ListValues_TYPE + * raw_url: ValueService_ListValues_RAW_URL + * @param body - + */ +export const ValueService_ListValues = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/values-list' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const ValueService_ListValues_RAW_URL = function() { + return '/api/v0/settings/values-list' +} +export const ValueService_ListValues_TYPE = function() { + return 'post' +} +export const ValueService_ListValuesURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/values-list' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * + * request: ValueService_SaveValue + * url: ValueService_SaveValueURL + * method: ValueService_SaveValue_TYPE + * raw_url: ValueService_SaveValue_RAW_URL + * @param body - + */ +export const ValueService_SaveValue = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/settings/values-save' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const ValueService_SaveValue_RAW_URL = function() { + return '/api/v0/settings/values-save' +} +export const ValueService_SaveValue_TYPE = function() { + return 'post' +} +export const ValueService_SaveValueURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/settings/values-save' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} \ No newline at end of file From ee047d87393f7f9ad78e3abcf4b77c675c7033da Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Fri, 31 Jul 2020 14:51:11 +0200 Subject: [PATCH 276/407] Use generated API to fetch roles --- ui/store/index.js | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/ui/store/index.js b/ui/store/index.js index a83a66bdba..bcec1e1789 100644 --- a/ui/store/index.js +++ b/ui/store/index.js @@ -2,6 +2,7 @@ import { // eslint-disable-next-line camelcase AccountsService_ListAccounts } from '../client/accounts' +import { RoleService_ListRoles } from '../client/settings' import axios from 'axios' const state = { @@ -68,22 +69,22 @@ const actions = { } }, - async fetchRoles ({ commit, rootGetters }) { - const headers = new Headers() - - headers.append('Authorization', 'Bearer ' + rootGetters.getToken) - - let roles = await fetch(`${rootGetters.configuration.server}/api/v0/settings/roles-list`, { - method: 'POST', - mode: 'cors', - headers: this.headers, - body: JSON.stringify({ - account_uuid: rootGetters.user.id - }) + async fetchRoles ({ commit, dispatch, rootGetters }) { + injectAuthToken(rootGetters) + const response = await RoleService_ListRoles({ + $domain: rootGetters.configuration.server, + body: {} }) - - roles = await roles.json() - commit('SET_ROLES', roles.bundles) + if (response.status === 201) { + const roles = response.data.bundles + commit('SET_ROLES', roles || []) + } else { + dispatch('showMessage', { + title: 'Failed to fetch roles.', + desc: response.statusText, + status: 'danger' + }, { root: true }) + } } } From b65c6925edc04a5b025a71ceac670fb4ab967afb Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Fri, 31 Jul 2020 14:54:12 +0200 Subject: [PATCH 277/407] Stop removing previous assignments The assignments are now removed through the server. No need to do this via JS anymore --- ui/components/accounts/AccountsListRow.vue | 23 +--------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/ui/components/accounts/AccountsListRow.vue b/ui/components/accounts/AccountsListRow.vue index d41fcdc2e7..3319a974ed 100644 --- a/ui/components/accounts/AccountsListRow.vue +++ b/ui/components/accounts/AccountsListRow.vue @@ -57,8 +57,7 @@ export default { data () { return { - currentRole: null, - currentAssignment: null + currentRole: null } }, @@ -81,25 +80,6 @@ export default { methods: { changeRole (roleId) { - this.removeAssignment().then(() => this.addAssignment(roleId)) - }, - - removeAssignment () { - if (this.currentAssignment === null) { - return Promise.resolve() - } - - return fetch(`${this.configuration.server}/api/v0/settings/assignments-remove`, { - method: 'POST', - mode: 'cors', - headers: this.headers, - body: JSON.stringify({ - id: this.currentAssignment.id - }) - }) - }, - - addAssignment (roleId) { fetch(`${this.configuration.server}/api/v0/settings/assignments-add`, { method: 'POST', mode: 'cors', @@ -129,7 +109,6 @@ export default { return } - this.currentAssignment = assignedRole.assignments[0] this.currentRole = this.roles.find(role => { return role.id === assignedRole.assignments[0].roleId }) From 662817af0aa74cb7b63cbb2420c9938edc9ab067 Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Fri, 31 Jul 2020 15:06:28 +0200 Subject: [PATCH 278/407] Use settings client --- ui/components/accounts/AccountsListRow.vue | 77 ++++++++++++---------- ui/helpers/auth.js | 12 ++++ ui/store/index.js | 28 +++----- 3 files changed, 63 insertions(+), 54 deletions(-) create mode 100644 ui/helpers/auth.js diff --git a/ui/components/accounts/AccountsListRow.vue b/ui/components/accounts/AccountsListRow.vue index 3319a974ed..c7136d937b 100644 --- a/ui/components/accounts/AccountsListRow.vue +++ b/ui/components/accounts/AccountsListRow.vue @@ -39,8 +39,11 @@ + + diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue index ad84c838e1..8d7c765ed4 100644 --- a/ui/components/accounts/AccountsList.vue +++ b/ui/components/accounts/AccountsList.vue @@ -3,6 +3,14 @@ + + + @@ -25,6 +33,7 @@ diff --git a/ui/components/accounts/AccountsListRow.vue b/ui/components/accounts/AccountsListRow.vue index 2b05312f22..08349f949a 100644 --- a/ui/components/accounts/AccountsListRow.vue +++ b/ui/components/accounts/AccountsListRow.vue @@ -1,5 +1,8 @@ diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue index 8d7c765ed4..d8ef723030 100644 --- a/ui/components/accounts/AccountsList.vue +++ b/ui/components/accounts/AccountsList.vue @@ -8,7 +8,7 @@ :value="areAllAccountsSelected" :label="$gettext('Select all users')" hide-label - @change="toggleAllAccountsSelection" + @change="toggleSelectionAll" /> @@ -51,11 +51,7 @@ export default { ...mapGetters('Accounts', ['areAllAccountsSelected']) }, methods: { - ...mapActions('Accounts', ['toggleSelectionAll']), - - toggleAllAccountsSelection () { - this.toggleSelectionAll() - } + ...mapActions('Accounts', ['toggleSelectionAll']) } } diff --git a/ui/store/index.js b/ui/store/index.js index 0a2517df5c..aa2ccc0129 100644 --- a/ui/store/index.js +++ b/ui/store/index.js @@ -110,15 +110,15 @@ const actions = { }, toggleSelectionAll ({ commit, getters, state }) { - getters.areAllAccountsSelected ? commit('SET_SELECTED_ACCOUNTS', []) : commit('SET_SELECTED_ACCOUNTS', [...state.accounts]) + getters.areAllAccountsSelected ? commit('RESET_ACCOUNTS_SELECTION') : commit('SET_SELECTED_ACCOUNTS', [...state.accounts]) }, - async enableAccounts ({ commit, dispatch, state, rootGetters }) { + async toggleAccountStatus ({ commit, dispatch, state, rootGetters }, status) { const failedAccounts = [] injectAuthToken(rootGetters.user.token) for (const account of state.selectedAccounts) { - if (account.accountEnabled) { + if (account.accountEnabled === status) { continue } @@ -127,7 +127,7 @@ const actions = { body: { account: { id: account.id, - accountEnabled: true + accountEnabled: status }, update_mask: { paths: ['AccountEnabled'] @@ -136,73 +136,29 @@ const actions = { }) if (response.status === 201) { - console.log('Going to update') - commit('UPDATE_ACCOUNT', { ...account, accountEnabled: true }) + commit('UPDATE_ACCOUNT', { ...account, accountEnabled: status }) } else { failedAccounts.push({ account: account.diisplayName, statusText: response.statusText }) } } if (failedAccounts.length === 1) { + const failedMessageTitle = status ? 'Failed to enable account.' : 'Failed to disable account.' + dispatch('showMessage', { - title: 'Failed to enable account.', + title: failedMessageTitle, desc: failedAccounts[0].statusText, status: 'danger' }, { root: true }) } if (failedAccounts.length > 1) { + const failedMessageTitle = status ? 'Failed to enable accounts.' : 'Failed to disable accounts.' + const failedMessageDesc = status ? 'Could not enable multiple accounts.' : 'Could not disable multiple accounts.' + dispatch('showMessage', { - title: 'Failed to enable accounts.', - desc: 'Could not enable multiple accounts', - status: 'danger' - }, { root: true }) - } - - commit('RESET_ACCOUNTS_SELECTION') - }, - - async disableAccounts ({ commit, dispatch, state, rootGetters }) { - const failedAccounts = [] - injectAuthToken(rootGetters.user.token) - - for (const account of state.selectedAccounts) { - if (!account.accountEnabled) { - continue - } - - const response = await AccountsService_UpdateAccount({ - $domain: rootGetters.configuration.server, - body: { - account: { - id: account.id, - accountEnabled: false - }, - update_mask: { - paths: ['AccountEnabled'] - } - } - }) - - if (response.status === 201) { - commit('UPDATE_ACCOUNT', { ...account, accountEnabled: false }) - } else { - failedAccounts.push({ account: account.diisplayName, statusText: response.statusText }) - } - } - - if (failedAccounts.length === 1) { - dispatch('showMessage', { - title: 'Failed to disable account.', - desc: failedAccounts[0].statusText, - status: 'danger' - }, { root: true }) - } - - if (failedAccounts.length > 1) { - dispatch('showMessage', { - title: 'Failed to disable accounts.', - desc: 'Could not disable multiple accounts', + title: failedMessageTitle, + desc: failedMessageDesc, status: 'danger' }, { root: true }) } From 91ca8ac528abe879c3d64c2a715c353e2dbedd68 Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Mon, 7 Sep 2020 17:53:34 +0200 Subject: [PATCH 351/407] Add changelog --- changelog/unreleased/add-enable-disable-ui.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/unreleased/add-enable-disable-ui.md diff --git a/changelog/unreleased/add-enable-disable-ui.md b/changelog/unreleased/add-enable-disable-ui.md new file mode 100644 index 0000000000..da84c1ab71 --- /dev/null +++ b/changelog/unreleased/add-enable-disable-ui.md @@ -0,0 +1,6 @@ +Enhancement: Add enable/disable capabilities to the WebUI + +We've added batch actions into the accounts listing to provide options to enable and disable accounts. + +https://github.com/owncloud/product/issues/118 +https://github.com/owncloud/ocis-accounts/pull/109 From 4d37041ebc8085aca35ace63ba3275dbe56c9bdc Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Mon, 7 Sep 2020 17:53:55 +0200 Subject: [PATCH 352/407] Regenerate assets --- pkg/assets/embed.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index 5b15b707ad..f7f6ec4a2b 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-09-07 16:19:31.738978 +0200 CEST m=+0.049717975" from config file "embed.yml" DO NOT EDIT. -// modification hash(4d07a7cfaf54cc3ba50977d24c15d8c0.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-09-07 17:45:26.571709 +0200 CEST m=+0.059244100" from config file "embed.yml" DO NOT EDIT. +// modification hash(6687169ddabd55f7faead6c4eeefd4b6.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,7 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\xbd\xe9\x96\x1a\xb9\xb6\x30\xf8\xbb\xbf\xa7\x80\xb8\x3e\x71\xa5\x62\x27\x06\xd7\x70\xaa\x02\xab\xb8\x9e\xed\xf2\x90\x2e\xa7\xed\x1a\x28\x6e\xae\x48\x10\x99\x72\x82\x44\x29\x44\xa6\xd3\x10\xfd\x3e\xfd\x1a\xfd\x64\xbd\xb4\x25\xc5\x44\x60\xfb\x9c\x6f\x58\xab\xff\x40\x84\x42\xe3\x96\xb4\xb5\x67\xcd\xf9\x42\x48\x4e\xc8\x62\x23\x67\x46\x28\x49\xe8\x36\xda\x64\xbc\x93\x19\x2d\x66\x26\x1a\x5d\xa5\xba\x63\x58\xb4\x91\x2e\xe3\x3c\xea\x32\x73\xb3\xe6\x6a\xd1\x39\x5f\xaa\xb3\x74\xf9\xf6\x42\x64\xe3\xf2\x31\x69\xcb\x79\x2d\xe4\x5c\x5d\x8f\xdd\x5f\x6b\x0e\x57\x81\xaf\xa7\x35\x47\xc6\x97\x8b\xb1\xfd\x49\xb6\xf9\x28\x74\xb6\xc3\x89\x01\x4e\xb7\x9a\x9b\x8d\x96\x1d\x43\x38\xdb\xf2\x8f\x6b\xa5\x4d\x96\x6c\xf3\x1c\x78\xdf\xbf\xd1\xf2\x31\xb7\x23\x92\xac\x3a\x64\x43\xb7\x36\x91\xb3\xfd\x94\xe3\xb3\x0f\x7c\x66\xfa\x6b\xad\x8c\xb2\x3d\x01\xc9\x78\xff\x22\xcd\x8e\xaf\xe5\x6b\xad\xd6\x5c\x9b\x1b\xd0\x2c\x0a\x05\x23\x16\xfa\x7b\x72\xb3\x3a\x53\xcb\xb1\xfb\x4b\xb6\x39\x28\xa6\xfb\xc2\x70\x9d\x1a\xa5\x77\xbb\xe8\xbf\xfe\x2b\xbc\x44\x20\x98\xee\xa7\xd9\x8d\x9c\x3d\xab\x7e\xaf\xa5\x44\x90\x32\xdd\x37\xea\xc4\x68\x21\xcf\xdf\xa6\xe7\x98\xa5\xf2\x1e\x95\x40\x99\x59\xa0\x80\x04\xed\x06\xa1\x18\x8f\x63\x5e\x0e\xa1\x23\x64\x66\x52\x39\xb3\xbd\x5c\x8e\x79\xb2\x04\x11\x86\x39\xd3\x3c\x35\x9c\xa8\x32\x33\x85\x94\x49\x7e\xdd\x39\x21\x7a\xb7\x9b\x4c\xe9\xc8\x83\x5a\xf4\x4f\x85\xbc\x52\x97\x55\x98\xd9\x46\x5d\x93\x9a\x45\xd9\x26\x5b\x73\x39\xe7\xf3\x13\x93\x6a\x13\x85\x72\x45\x6e\x05\x82\x6e\xc5\x82\x44\xfc\x23\x9f\x6d\x8c\x90\xe7\x11\x63\x4c\x53\x73\xa1\xd5\x75\xc7\x36\xf9\x48\x6b\xa5\x49\xf4\x84\x4b\x07\x82\x8e\xc8\x3a\xe9\x52\xf3\x74\x7e\xd3\xd1\x1b\x29\x6d\x11\x3a\xb2\x55\xcc\xd4\x6a\xbd\xe4\x86\xcf\x5d\x15\x58\x2d\xd6\x63\xdf\x95\xaf\x52\x84\x2e\x3c\x22\x34\x5f\x28\x4d\x64\x7f\xc5\xcd\x85\x9a\x33\x05\xb2\x9f\xea\x73\x26\x46\x23\xd7\xfd\x94\xc9\xfe\x9c\x2f\xf9\x79\x6a\xb8\x6d\x20\x75\xc9\x33\x76\x46\x52\x90\xd8\xe6\x0c\x5b\x99\x31\xc6\x36\x74\xa6\xa4\x11\x72\xc3\x43\x03\xb3\x3c\xb7\x3d\x90\xfc\xa3\xb1\x1d\x08\xed\x50\xd9\xcf\xb8\x34\x4c\xf6\x4f\xfd\x7f\xaa\xcf\x47\x7c\x99\xf1\x4e\xad\xc3\x45\x7e\x1c\x47\x03\x8e\x15\x18\x69\x56\x19\xb8\x1b\xc2\x48\xf6\xe7\x22\x5b\xa7\x66\x76\xf1\xe8\xe3\x8c\xaf\x11\xd2\xf8\x85\xe6\xb6\xa1\xc8\xf5\xb0\xda\x4a\x1c\xcb\x7e\x7a\xa6\x37\x6b\x43\xc2\x57\x57\x17\x1d\x69\x56\x99\x1c\x44\x04\x4b\x96\xf9\x69\x46\xb8\x4b\xa5\x57\xe9\xd2\xd6\xb6\xec\xe3\x62\xb1\x3d\xd6\x16\x78\x4a\xf2\x71\xa5\x77\x49\x39\x8c\x3f\x04\x5f\xce\x23\x58\x22\xc4\x5b\xa0\xb7\xbd\x4a\x97\x1b\x9e\xe0\x77\xb0\xf5\x24\xae\xba\x3c\x2f\x21\xe4\x5a\x8b\x63\xd2\x04\x81\x9f\x50\x9f\xd3\x4f\xeb\xd2\x8d\x3f\xcf\x89\x01\x09\x29\x05\x91\x17\x5b\x25\x0c\x67\x6b\xf4\x8d\xc7\x22\x5b\x5b\x77\x12\xc6\x06\xa9\x3e\x4f\x4c\x7f\x96\x2e\x97\xc4\x66\xcc\xf3\x99\x85\xae\x45\x10\xb5\xec\xbe\x45\xcc\x9d\xe7\xb9\xe9\x5f\xeb\x74\xcd\x66\x08\xb5\x0d\xab\xa2\xac\x25\xa1\xdb\xb2\x03\x8b\xda\xdb\xda\xbe\xd9\x22\x73\x5b\x64\x3e\x51\x53\x56\xc1\xcb\x01\xcb\x5d\x88\x2c\xc7\x8a\x2f\xc2\xbe\x3d\xe7\xe6\x75\xd8\xb1\xc7\x0b\xb8\x62\x17\x71\x7c\x41\x2e\xc8\x31\x99\x4c\x29\xa5\xa3\xab\x38\xbe\xea\x32\x8b\x07\xa4\x1b\xca\x15\x28\x1a\xc7\x64\xce\xae\x28\xd6\xb4\x62\xeb\x72\xcf\xb3\x65\xe5\xb9\x8e\x19\xe6\xb4\x1c\xc8\x8d\x05\xc2\xc4\x2d\x73\x08\x00\x08\x6b\x68\xda\x5f\x28\xfd\x28\x9d\x5d\x54\xd0\x2c\xa7\x5b\x33\xe1\xd3\x1a\x96\xad\x8c\x29\x60\x14\xc2\xc1\xd0\x3c\xa7\xb4\x84\xcb\xb9\x43\xf3\x88\x5a\x46\xd5\xbc\xac\x8e\x4f\x8a\x02\x69\x09\x2e\x8b\x4a\xaa\xc8\x5e\x43\x4a\xb7\xdd\x22\xa7\xb6\x25\x21\x85\x99\xab\x7e\x63\x57\xf8\x44\x4d\xc1\x80\x70\x8b\xdc\x0d\xac\xcb\xd8\xc6\xaf\x71\xb7\x11\x36\xb8\x40\x17\x6c\xd9\xc7\x05\x5b\xe0\xb7\x38\x8e\x14\x82\xac\x3c\x0a\x16\x05\xd8\x17\x10\x9d\x9e\xa6\xd7\xa9\x30\x11\x1d\xf3\xbe\xe6\x99\x5a\x5e\x71\xb2\xe8\xfb\x54\xda\x37\x17\x5c\xd6\x4f\x26\xed\x31\x09\x18\xec\x65\x4e\xa1\xf9\xd9\x83\x3e\x7c\xa7\x49\xa5\xe6\xb6\x1a\x7d\x97\x99\x81\x94\x2c\xf7\x2b\x74\x03\x69\xa9\x37\x9f\x91\x8d\xdb\x4b\x08\x33\x0b\x48\x9b\x1a\x0a\x30\x3d\xd6\xae\xb5\x14\x52\x9a\xa4\x84\xe6\xe5\x0c\x9e\x95\x33\x28\x99\x29\x0e\xc2\x09\xf7\x7b\x76\x6a\x61\x7d\xa5\xc4\xbc\x33\xb0\xc8\x09\x31\x09\x2f\x90\x30\x93\x9b\xe5\x12\x4a\x04\xc0\xab\x28\xb2\xac\xad\xef\xba\x12\xc7\x84\x17\xa8\x20\xe0\x34\x8e\xb8\xc0\xb5\x00\xae\x37\x6d\x15\x52\x3f\x9a\xcd\x88\x37\xb1\x89\xab\xc1\x2e\xa7\xb7\x37\x6b\xee\x4f\xa7\xb7\x17\xbc\x13\x9a\xef\xcc\x15\xcf\x3a\x52\x99\xce\x5a\xab\x2b\x31\xe7\x9d\xb4\xf3\x9f\x58\xf8\x3f\x3b\xae\xae\xa8\x80\xd6\x26\x77\xe7\x64\x46\x24\x94\x03\x70\x6d\x54\xd7\x9d\xc5\xf7\x6e\xdd\xf9\x82\x07\xba\xa5\x71\x39\x36\x21\xb6\x19\x39\x02\x00\xbf\x86\x25\xaa\xc6\xca\x21\x68\xc2\x27\xc6\xae\x94\xcd\xd2\xbc\x4a\x57\x7c\xca\x94\x5b\x18\xc0\xfb\x76\xc5\x31\x83\x7f\x2f\xd4\xac\xd8\xd5\xdd\x12\x52\x35\x20\xbb\x05\x5a\x05\x31\xdd\xef\x0b\x4d\x54\x42\xbe\x0e\xaa\x05\x44\x5d\xef\xec\xc9\x6f\xc1\x9a\xca\x8e\xdf\x5b\x6d\xd5\x97\x8b\xed\xba\xa4\xdf\x2c\x62\x7f\xa1\x66\x89\x99\x0c\xa6\xf9\x68\xd8\x11\xb2\x63\xb0\xeb\x88\xc6\x5f\xa8\x19\x33\x93\xe1\x94\xc2\x9d\xf2\xcb\x42\xc8\x74\xb9\xbc\x71\xdf\xee\x4c\x6d\x0f\x17\x86\x6b\xf7\xfe\xed\x94\x02\x22\x20\xa3\x6f\x1e\x49\xa3\x05\xcf\xfa\xeb\x4d\x76\x41\x78\xa5\xfd\x7b\x65\xfb\xa6\xef\x0f\x28\xa1\xe4\x6e\xb7\xcd\x47\x1c\x67\x93\x15\xe7\x8b\x1d\x85\xe1\x1d\x04\x03\x54\x73\x33\x5e\x56\x78\x62\x2b\x6c\x34\xcb\x26\x61\x6c\x91\x56\xca\x44\xf9\x14\x4c\x81\x74\xaf\xb1\x93\xbe\xab\x9a\x67\xdc\x90\xee\xa0\xd2\xc3\x63\x5b\xa1\xdd\x3b\x45\x3f\x27\x0a\xb7\x60\x65\x9d\x21\xc6\x32\x6e\x31\xee\xd3\xb7\x6e\x71\x84\xdc\xc6\xe6\xea\x8a\xec\x55\xfa\x8a\x98\xfe\x92\xcb\x73\x73\x41\x03\x2d\x78\x34\x04\xc1\x2a\x24\x3b\xdd\x5a\xf2\x6b\xd4\xeb\xe9\xbb\x21\xef\x88\x8a\x05\xf1\x48\xd2\x80\xa6\x65\x2f\x3c\xaa\x9a\x68\x3b\x11\x76\xd9\xb2\xee\x10\x0a\x74\x1b\xbe\xfb\x7d\x1d\x72\x0c\x80\xe7\x25\xa5\x8a\x8b\x59\xe4\x7e\xeb\x6d\xed\x6b\xf2\xa8\x82\x9b\x1e\x15\x87\x85\x27\x3e\x7c\x6d\x48\x7d\x74\x07\xa1\x60\x67\x51\x39\x16\x57\xfd\x99\x92\x99\xd1\x9b\x99\x51\x9a\xad\x61\x5d\x7b\x5f\xc0\x7a\x92\x4e\xd9\x02\xa9\xb1\x65\x7a\x63\xb7\x17\x2b\x29\xd9\xc7\x01\x9a\x76\xeb\x67\x7b\xc9\x2d\x6c\x48\xdb\x04\xc4\xb1\xa9\x36\xea\xc7\xdb\xed\x5a\xc2\x88\x33\xc6\x16\xbb\x5d\x4b\x93\x8c\x31\x8b\x58\xcb\x7e\xed\x76\xbc\x2f\xd3\x15\xa7\x34\x07\xd3\x5f\xa5\xfa\xb2\xed\x80\xf6\x64\x40\x56\x23\x34\xc6\xad\xa9\xc4\xc0\x9a\x26\xc4\xf4\x4f\x4f\x11\x5e\xa7\xa7\x6c\x0d\x29\xee\xaf\xdd\x8e\x18\x0b\x98\x96\x7e\x51\x0a\xe6\x20\xd9\xb1\xa2\x60\x6c\xef\x52\xa4\xaa\xf6\xbb\xb7\xf5\xe7\xa7\xa5\xbd\xe0\x86\x9c\x57\xf9\x97\xca\xcb\x44\x1c\xa4\xa7\xc0\xf4\xef\x55\xf9\x2d\x66\x37\x23\x72\x60\x65\x09\xe4\xa9\x00\x09\x8d\xe2\xa4\x12\x71\x4c\x04\x7b\xad\xd5\x4a\x64\xdc\xd1\x52\x8e\x61\x3a\x27\xb3\x50\x80\x5a\x52\x22\x34\xd6\x36\xe1\x44\xd2\x71\x9a\xa4\xb8\x50\x49\x2b\x0d\x10\x0a\x23\xde\x36\x6e\xd1\x17\x05\xec\x21\x0c\x37\x16\x48\xab\x3a\x70\x23\x58\x7d\x86\x84\x84\x55\xc1\x4f\xee\x67\x89\x26\x0e\xd3\x76\x8a\xca\xa6\x91\x05\xd2\x25\xbf\xc9\x5a\xd6\xe7\x64\x3a\xb2\x7b\x1a\x8f\x77\x9c\x69\xca\x1d\x5a\x94\xb4\xdc\xaa\x9a\x5f\x71\x9d\x71\x42\xa1\xd8\x7a\x32\x20\x03\x5e\x20\x02\x8f\x34\x78\x7f\xad\xd6\x04\xb1\x8f\x76\x35\x06\x7a\xce\x6f\x79\x0d\xb2\xc0\x07\x32\x2f\x3e\x06\x04\x20\x73\xdb\x5d\xcc\x9a\xb1\x63\x38\xa9\xac\xad\x6d\x65\xd7\x24\x27\x80\xe8\x31\xa9\x8e\xc9\x22\x46\x8b\x38\xd7\x9a\x5f\xb1\x81\x43\xa2\x88\x44\xfc\x33\xb2\x6f\x8e\x0c\xc5\x47\x8f\x2f\x30\x25\x74\xc9\xbd\xd4\x8e\x28\x4c\xaa\x1f\x99\x98\x54\x21\x4c\x9a\x47\x4b\xc0\xe7\xf7\x28\x74\x0d\x0d\x20\xe6\x08\x10\x8b\xe0\x23\xe3\xa8\x97\xd9\x45\xaa\xef\x19\x32\xa0\x05\xa9\x69\x3f\x03\xa7\x71\xec\xb1\x72\x8f\xf7\xb3\xa5\x98\x71\x32\xa4\x96\xf2\xb7\x9f\x2d\x2d\xee\x4f\xeb\x1c\x32\xa3\xd6\x49\x65\x19\x54\x06\x33\xf0\x42\xa0\x46\xe7\x26\x83\x69\xe5\xb8\xaa\xd3\x2c\xc6\xd1\x2c\x8e\x51\x35\x55\xea\xc3\x9d\x48\x57\xe9\x32\x87\x3d\x56\xb5\x75\x12\x6c\x1f\x42\x45\x23\x7f\x58\x5d\x88\x6c\x54\xa1\xe0\x51\xd4\xe1\xeb\x4f\xfd\xf9\x1a\x18\x32\x84\xae\x09\x24\x8d\x04\xfd\x45\xc2\xa5\xdb\xd5\x79\x80\xb4\x6a\x0e\xda\x2f\xd3\xa3\xe1\x48\xfd\xcc\x06\xa3\xa3\x23\xe5\x16\xac\xd8\x83\x8e\x9a\x42\xca\x44\x13\x42\x78\x54\x5b\xbc\xd1\x77\x87\x37\x2d\xc9\x6d\x2e\xe7\x4e\x9e\x11\xbe\xdd\x65\xc5\x2a\x0c\x02\x08\x3f\xb9\x02\xa2\x40\xbf\x44\x14\xb2\x4a\x72\x49\xbc\xb8\xba\x66\x71\x9c\xd5\x17\xf4\x5d\x51\xd0\x3e\x65\xe3\x65\x1a\x74\x07\x58\xb0\x9a\xbf\xac\xb4\x5a\xa2\x92\x9a\x07\x29\xc6\xec\x5f\x6e\x0b\x8b\xda\x42\xdd\x6c\x5f\xf6\x63\xf4\x4d\x27\x33\xa9\xe1\x2b\x2e\x4d\xe7\x5a\x98\x0b\xb5\x31\x1d\x2c\xde\x51\xba\xe3\x7b\x10\xfd\x1b\x1d\xce\xf3\x1c\x9c\xd8\x23\xa9\x0a\xb0\x1c\x36\x72\x18\xe8\xe0\xcc\x6b\x37\xf3\x85\x78\xad\x39\xf3\x1a\x29\x29\xb5\x3f\x8b\xc5\xe6\x54\xf5\x89\x8a\xe3\xb2\xf3\xaa\xda\x4d\xbf\xb4\xd4\xe8\x4c\xf3\xf4\x32\xcf\xed\x69\x13\xe1\x33\x6e\xb2\xdd\x2e\x0a\xd2\x13\x7c\xa7\x71\x5c\xae\x1d\x1e\xc7\xfc\x2e\xab\x8e\x1a\x8f\x2a\x8b\x89\xc2\x39\x25\xc6\xd5\xf5\x99\x6c\x0b\x9a\xc9\x6f\x22\xe3\xb7\x0f\x07\x31\x26\x87\xb0\x97\xa3\xae\x2a\xcd\x58\x4a\x1f\xbf\x04\xd1\x0c\x49\x69\x0e\xe1\xa5\x01\xee\xaf\xc3\x1a\x95\x31\x63\x96\xe6\xc0\x31\x71\x5c\x76\x07\xcb\x26\x15\x69\x97\xcf\x41\x0a\xec\xc3\x0a\xcc\x6b\x1c\xe5\x5d\x1d\x5d\xe0\x19\xcb\x0a\xdd\xe6\x4c\x2a\x12\x2f\xe3\x65\x50\xdc\x23\x53\x97\x8f\x53\xd8\xe4\xb0\x10\x52\x64\x17\x35\x6c\x56\xa0\xee\xc3\xcb\x8a\xbb\x65\x55\x72\xc9\x8d\x65\xc5\x71\x59\xc9\x2a\x7f\x62\xe7\xbc\x8a\x57\x0b\x88\xcb\xca\xbc\x82\x2c\x18\x18\x0a\xf7\x88\xb4\x5d\xcc\x01\x37\xd1\xff\xae\x2e\xba\x35\x88\xdd\xf3\xc7\xb9\x3c\x78\x54\xe8\x8a\x58\x25\x70\xaa\xb6\x97\xe1\x48\x57\x79\xbe\x87\x17\xc4\xd2\x9e\xab\x4b\x8f\x09\x52\x63\xf8\x6a\x6d\x22\x9a\x43\x38\x70\x51\xca\x98\x34\x45\xd3\x55\x50\x15\x47\xf3\x36\x30\x9b\x89\x65\x8a\xa0\xe4\x87\x13\x0e\x9e\xff\x4d\x64\x0e\x85\x38\xb7\xb2\x52\xc2\xd4\x57\x4f\x0f\x0b\x5b\x93\x13\x53\x68\x1e\x46\x4e\xb4\x78\x1e\xe8\xa8\x37\x1b\x69\xc4\x8a\x33\x5e\x4a\x12\x0b\x3a\x30\xd2\x28\x41\x6b\xe6\xed\xb0\x8e\x8e\xa8\x65\x31\x73\x4a\x41\xb7\x0a\xd0\x2c\x37\xf0\x32\x35\x17\x8c\xd9\xdf\x38\x36\xa8\x71\x20\x7b\xc2\xa8\x52\x55\x13\xc7\xe5\x33\xdd\xed\x5a\xf2\x3a\x85\x4d\x1c\xbb\xff\xf6\x3c\x19\x5f\x2e\xe2\xd8\xfe\xb6\x7f\xb7\x1d\xa3\xbb\x5d\x65\x88\xe5\x24\x44\x94\xd0\x0a\x6b\x88\x4c\x6e\x21\x87\xed\x76\x2d\x69\xdb\x90\xb6\x5a\x6e\x0c\x52\xd6\x15\x35\x85\x95\xaf\xf2\x9f\xdd\xc0\x36\x38\xed\x51\x50\xd0\x90\x6d\x0e\x43\xd8\x9e\x57\xa9\xbc\xb2\x50\x9e\xd3\xc9\x70\x6a\x01\x3b\x63\xdb\xdc\x92\x89\x58\xe8\x59\xf6\x48\x6e\x56\x5c\xa7\x67\x4b\x0e\x59\x45\xd0\x5a\xd1\xfc\x3c\xe4\xd9\x4c\x8b\xb5\x51\x1a\x36\x6c\xbb\x48\xb2\x38\xee\xce\x1c\x86\xdf\x0e\x93\x3b\x39\x0c\xe9\x78\x9f\x56\xce\x1c\x6d\x66\x68\x95\x63\xe3\x7d\x5e\x34\x97\x27\xb3\x1c\x96\xac\x8e\x28\x3d\xa3\x53\xe6\x4a\xba\x64\x18\x1b\x0a\x33\x25\x17\xe2\x7c\x13\xd2\xee\xd8\xb4\x6b\x2d\x8c\x7f\xff\xce\xbe\x3b\x7e\x81\xe7\x39\x2c\xec\x18\x03\xd9\x0f\x6d\xbc\x54\x67\x11\x38\x7f\x4f\x30\xfe\x08\x47\x43\xbb\xb5\x58\x14\xf5\xb3\xf5\x52\x18\xb8\x60\x6d\xf0\xef\x3a\x18\x91\xe8\x53\x44\x5b\xc1\x48\x06\x96\x55\x19\xef\x37\x19\xb9\xee\x44\x8c\xad\x89\xa1\xe3\x79\x90\x03\x44\x11\x4d\x7c\xa5\x86\xe6\xfe\x11\xae\x58\x83\x4c\xb4\x47\x9a\x45\x35\x0e\x4d\x54\xc4\x48\x0f\x52\xf9\x9f\x96\x5c\x58\x2e\xbd\xfc\xad\xa3\x64\x27\xea\x99\x92\x1b\xcb\x61\xd5\x06\x82\x0b\x72\x45\x0c\x72\x55\x2d\x5f\xf7\x97\xf8\xd8\xf6\xa0\xcb\x98\x49\xda\xf8\xf4\x1c\xce\xd9\xde\xa1\xd7\xbd\xb1\x0d\x14\xd2\x13\x44\xa7\xa0\x51\x02\x13\xc7\xfb\xb5\x10\x69\x0f\x1c\x3f\x6d\x96\xa8\xbf\x41\x3d\x8b\x9f\xa8\xa2\x22\xdd\x2e\xac\xc1\xd2\xb8\x06\x8e\x17\x5f\x28\xdc\xfd\x9f\x6b\xfe\xd0\x14\x28\x79\xc5\xb5\xf1\xd2\xbb\x8e\x51\x9d\xb5\x16\x2b\x61\xc4\x15\xef\x60\xbf\x2c\xee\x3e\xb3\x4b\xb3\xa1\x5a\xbd\x6e\xdd\x05\x9d\xb3\xb0\x42\x38\xcd\xe1\x1e\x53\xfd\xb9\x9a\x6d\x2c\x8d\x08\x27\xec\x86\xdc\xa3\x71\x7c\x43\xee\x79\xe1\xc1\xa3\x25\x52\x8f\x14\x8e\xdb\x66\xfa\x64\xdc\xc8\x47\x0c\x45\xd5\xf1\x23\xd6\x4d\x2d\xf3\xf4\x2f\x21\x9a\x63\x12\xcd\xc5\x55\x44\x21\x4a\xa3\xcf\x21\x9c\x7e\x6a\xf1\xcd\xc7\x2f\x62\x95\x53\x8b\x55\xd2\xf1\xc7\x7d\xa2\xc9\xb0\x95\x3d\xad\x38\x3b\x27\xdc\x92\xd1\xf0\x88\x96\xa8\xb3\xf3\xd1\x81\xa6\x40\x9e\xb9\x58\x90\x6b\x4c\x0b\x53\xb5\x24\xdd\x4d\x7f\x51\x82\x11\xcc\x84\x4f\x69\x9e\xc3\x87\xe6\xee\x72\x2b\xb5\x39\xb1\x6e\x29\x10\x43\x7b\x51\x8b\x74\xb6\xb2\xbf\x2e\xdb\x41\x05\x0f\xdc\xd0\x2e\xf7\x0e\x69\xb1\x20\x1f\xea\x43\xfb\x60\x69\x96\xda\xf8\x2e\x7d\xe6\xfa\x08\xa3\x73\x6e\x22\x21\x3b\x72\xb7\x8b\x32\xff\xb8\x8f\x14\xee\xcd\x66\x3c\xcb\x94\x76\x9d\xce\x36\x6b\x7b\x4c\xf3\x79\xd1\xe9\xc8\x2d\x48\x5b\xd8\x9e\xef\x96\x49\xf6\x22\x07\x0a\x26\xcf\xe1\x35\x4b\xc7\x07\x08\x8b\x07\xfd\x05\xa6\x2c\xc9\x10\x24\xa5\xf9\x41\x02\x04\x2b\x05\x93\xc3\xdb\xc6\xfa\xb6\x63\x7c\x4d\x14\x54\xa6\x4f\xd2\xad\x9a\x98\x29\xe3\x81\x20\xe2\x39\xbc\x61\x6a\x12\x9d\x9e\xce\x94\xe6\x47\x1f\xb2\xd3\xec\x22\xd5\x7c\x7e\x7a\x1a\x4d\x77\xbb\xb7\xa4\xed\x03\x6c\x73\x0a\x2f\x58\x38\x85\x8b\xbd\x3c\x2a\xf7\x7a\x61\x69\xf1\xa6\x2f\x64\xb6\xe6\x33\x73\xa2\x36\x7a\x66\xe9\xdb\x46\x4a\xdb\x3e\x7a\x11\x90\x41\xee\x98\x8b\x57\xf0\x0c\xde\xc1\x2d\xd6\x28\x0a\x0f\x99\xea\xff\xc6\xd3\xcb\x97\xe9\x1a\x5e\xb6\x89\x35\x1f\xc6\xf1\x6d\x99\x22\x66\x98\xa9\x39\xbf\xdd\x37\x3c\x33\xe4\x16\x79\x48\x29\x3c\x6e\x5a\x6d\x94\x64\x56\x3b\x9e\x78\x33\x31\xd3\xdd\x8e\xd8\x3f\x4f\xa0\x75\x19\xe3\x63\x9e\x6c\x73\x9a\x53\x12\x5d\x71\x9d\x09\x25\xb3\x08\x26\x53\xea\x04\x56\x5b\x9f\x96\x44\xdf\xf6\x7f\xe8\x7f\x1f\xc1\x4a\xcd\x79\x12\x39\x52\x29\x82\x99\x5a\xdf\x68\x71\x7e\x61\x92\xe8\xff\xfd\x7f\x3a\x77\x06\x77\x06\x9d\x87\x5c\x8a\xac\xf3\x7a\x93\x5d\x5c\xa6\x9a\x5f\x75\xc8\xa7\xa5\x12\x5a\xcd\x2e\xfb\x7a\x43\x23\xdb\x10\x85\xbf\xd9\x00\xee\x23\x65\xd6\xd7\xa9\x9c\xab\x15\xa1\xf0\xa4\xed\x6c\x71\xf6\x22\x24\xea\xf9\x0d\x56\x08\x1a\xcd\x38\x8a\x12\xbb\xdd\xe8\x69\xd4\x23\xbd\xde\xdf\xbd\xfb\xb4\x98\x46\xf2\xed\x0f\x34\x87\x4f\xec\x31\x89\x2e\xf9\x4d\x16\x51\x78\xdf\x36\x49\x9f\x1c\x38\xec\x1f\x7b\xe2\x0e\xb8\xa7\x6c\x9b\xc3\xef\xe5\xa4\xd8\x33\xe0\xa5\xa3\x54\xfe\x40\x39\xe6\xef\xf0\x9c\xfd\x61\x31\x14\xfc\xc2\xfe\xb0\xe8\x19\x7e\x65\x7f\xf4\x33\x6e\x46\xaf\xda\x61\xfe\xab\x5b\x09\x7f\xe0\x1a\x06\x9e\xc3\xb3\xb6\xae\x3c\x2f\x72\xd1\xdd\xce\xe2\xdb\x77\x6d\xb9\x7e\x29\x73\xe5\x4e\x50\x60\x3b\xf6\x1b\x7b\x4f\x22\x14\x0b\x44\x74\xf4\x74\xf2\xdb\x94\x75\x07\x70\xa0\x37\xaf\x89\x81\xdf\x3e\xd7\x11\x8b\x16\x7f\xa3\x63\x33\xf9\x6d\x9a\x1c\xec\x87\xcb\x94\xa3\xce\xee\x4f\x30\x86\x6d\x33\x6e\x92\x57\x60\x31\xfc\x33\xb8\x48\xb3\xe4\x1d\x70\xb9\x50\x7a\xc6\x93\x96\xe2\xef\x2c\x55\xf3\xcc\x9e\x2c\xaf\x88\xb1\x5b\x31\xb7\x25\x0d\xd7\x8f\x95\x6e\xcb\x5f\xd5\x98\x23\x65\x30\x72\x78\x98\xd3\xdd\x8e\x48\xf6\x8c\x70\x4a\x91\x6b\xea\xb6\x92\x3d\xcf\xa4\xe5\xb5\x52\x23\xce\x96\xbc\xa3\xf9\x8c\x8b\x2b\xae\xc1\x12\x3e\xbd\xa8\xa3\xf9\xdf\x1b\xa1\x2b\xf8\xae\x23\xf3\x3c\x07\x6e\xda\x2d\xa2\x0c\x9e\x4e\x20\xed\x83\x1f\x21\x68\xe6\x57\x9d\xa7\x07\x1c\x55\x48\x02\x15\x47\x47\x07\xb6\x25\x08\x28\x2c\x69\xba\x78\xba\x76\xd3\xfe\x46\x66\xe9\xc2\x52\xd8\x45\x4a\x49\xe2\xc2\xa6\x4c\x95\xea\x6d\xaa\xcf\xb9\x79\xc2\xcd\xa8\x05\x6d\xa0\x64\x24\x73\x1d\x28\x30\x19\xdf\xed\xae\x89\x80\x48\xa6\x2b\x1e\xd1\xdd\xee\x75\xf1\x62\x57\x84\x24\x82\xf6\x33\x87\xd1\x74\xff\x83\x12\xb2\xa8\xa1\xa8\xd6\xe2\x8a\x08\x75\x13\x5d\xc6\xd4\x98\xcc\xc6\xdd\x4d\x1c\x5b\xfc\x1d\xc7\x24\x63\xdd\x01\x4d\xbc\x02\xcf\xa6\x41\x36\x46\xd4\x2e\x92\xd7\x6e\xbc\x94\x26\x45\xd2\x5b\x62\x13\x72\x4a\x0a\x24\x5c\x1a\x95\x45\x61\x23\x47\xb0\x4f\x6e\xb4\xd1\x94\xc8\xbe\x71\x64\x24\xc2\x18\x76\xbb\x5b\xee\x3d\xa7\x88\x72\xa4\x61\x0a\xb4\x69\x43\x32\x2d\x15\x8e\x8d\xd7\x7a\xe5\xa0\x4c\xfb\x56\x4a\xf5\x39\xd2\x58\x41\x1e\x70\xf7\xce\x58\x1b\x22\xcd\xc4\x4c\x2d\xeb\x67\x88\x3d\xa6\x68\x82\x09\x71\x8c\x7f\x13\x3e\xdd\xed\x14\xbe\x2b\xf7\x9a\x83\x30\x0e\x0f\xce\xb8\x58\x42\xea\x5f\x16\x4b\xa5\x34\xcc\xda\x7a\xdb\xf1\x5a\x45\xd6\x33\x74\x3c\x48\x88\xf9\x79\x30\x4e\x4d\x22\x0c\xb5\xa7\x0d\x64\xbe\x86\x95\x90\xb0\x69\x2d\x6f\x0b\x64\x86\x20\x13\x01\x3f\x0d\x06\xff\x1c\xfe\xf4\xd3\x9d\xef\xbf\xfb\xe7\x77\x83\x9f\x7e\x1a\xd2\x64\x90\xc3\x32\xd4\x91\x7e\x84\x45\xa5\xbe\x75\x13\x12\x4e\xea\x81\x35\x15\xbb\xe7\xee\x60\xbc\x34\x44\xf6\x38\x0c\x68\xb2\x30\x44\x22\x51\x3a\x6f\xed\x4a\x5d\x95\xe4\x65\x1e\x20\xd8\x8a\xa0\xa1\xdd\xc6\x10\x11\x94\xa7\x30\x63\x6b\x83\xc6\x2a\x28\xdc\x8c\x63\xd9\x65\xd2\x2b\x4b\xd2\x9f\x67\xa8\x30\x25\x8a\x89\xc9\xac\xd7\x9b\xd2\x2e\x53\xb4\xe0\x90\x51\x18\x5b\x64\x9c\xf5\x7a\x98\xd7\xec\x76\xb3\x8e\x90\x1d\x41\xe3\x58\x4c\x66\x53\x34\xb3\x08\x20\xda\xed\x66\xbb\xdd\x20\x30\xa4\x26\x8e\x8f\x86\x79\x0e\x17\x86\x6d\x85\x9c\x2d\x37\x73\x9e\x25\x73\x54\x21\x83\x90\x73\xfe\xf1\x78\x81\xaf\x96\x2d\xbc\x32\xec\xc2\xf4\x7d\x2a\xac\x5a\x21\x06\xda\x51\xab\x8a\x0d\x40\x04\x5d\x11\xea\x89\x34\xed\x5e\x93\xa7\x20\x69\x1c\x5f\x13\x8d\xff\xa2\x50\x1c\xd5\x14\x43\x3f\xab\x11\xc5\x2c\x8c\x4f\x94\x1d\x72\x1c\x93\xff\xfb\xca\x10\x01\x92\xee\x76\x45\xa1\xd2\x40\x31\x87\x1b\xc3\x26\x51\x45\xd7\x13\x41\x54\x67\x2f\x22\x88\x44\x56\xd1\x5c\x46\x10\xb5\xf1\xad\x91\xdd\x9f\x2f\xd4\x2c\x5d\xf2\xb0\x4b\x2b\x1b\x36\xf2\x8c\x55\x34\x85\x73\xc3\x6e\x50\x27\x3b\x4b\x0d\x89\x5c\xbf\x5d\x9d\xae\x85\x88\xc2\x99\xb1\x74\x6f\x2b\xdd\xff\x2a\x5d\xf1\x6c\xb7\x6b\x59\x36\x2b\x43\x0c\x9c\xdb\x33\x10\xae\x0f\x97\x77\xa4\x43\x96\xc3\x3d\xc3\x94\x21\xd1\x1b\xbe\x58\x5a\x6a\x1c\x22\x75\x2d\x9f\x23\x59\x50\xaf\xdd\x61\xf8\x33\xd3\x77\x14\x37\x05\xc9\xae\x4d\x7f\x51\xac\xec\x31\x0f\x63\xb1\xd9\x69\xc2\x73\x38\x69\xce\x6f\xa1\xf5\x63\xf7\x8c\x5d\xc4\x9a\x3d\xe8\x2f\x40\xb1\xd3\xfe\x02\x04\x1b\x8c\xc4\x5d\x19\x34\x7b\xa2\xd7\x2b\xcc\x2b\x27\x62\x3a\xb2\x87\x6a\x8a\x42\x23\x03\x29\x28\xc2\x21\xa5\x76\x88\xc7\x86\xdd\xfe\x8f\xdd\x5f\x25\x7a\xfc\xab\x7f\x1b\x1e\xb5\x6f\xc5\x53\x33\xf9\x68\x77\xe3\xb4\xe8\x34\x63\x97\x66\xb7\x93\x5d\xf6\xc1\xd8\x23\x61\x1f\xd5\xf1\xb1\x20\x9c\x26\xdd\xae\xdd\xa6\x1f\x0d\x7b\x64\xfa\x4e\xaa\x2b\x3e\xb5\x52\xb6\x05\xa7\xd3\xd7\x7c\xbd\x4c\x67\x9c\x1c\x1b\x88\xfa\x91\xa5\xbe\x5e\xa8\x6b\xae\x1f\xa4\x19\x27\x34\x87\x53\xac\x6b\x9e\x9a\xd4\xd2\x54\x1f\xf0\xed\xd5\xbd\xb7\xcf\xde\x3f\x62\xd1\xab\x08\x2e\x31\xe1\xf5\xf1\x8b\x3f\x1e\x3f\x7b\xf1\x82\x45\xaf\x23\x78\x60\x93\xe0\xb5\x41\x68\xbd\x3d\xb0\x75\x9c\x75\x1a\x64\x96\x03\xc7\x13\x10\x36\xcc\xf4\x1d\x3d\x0a\x4b\x66\xfa\x96\x12\x42\xb1\x2b\xdb\x8c\x55\xb2\x1c\xab\x49\x86\x7c\x40\x66\x29\x8d\x84\xb8\xd7\x6d\x4e\x2b\x4a\x71\x3b\x6b\xa8\x55\x75\xcc\x64\xca\xf8\x44\x4f\x41\x30\x53\x3d\x66\xc7\x64\xc6\x5e\x1b\x54\xae\xd1\x38\x9e\x79\xa5\xb3\xb4\x39\xbb\x0f\x0c\xd9\x8c\x75\x92\xf5\xc8\x72\x1c\xf5\xa3\x24\xfa\x8f\x88\xf6\xb4\x33\x40\x99\xf1\x39\x8d\xe3\x82\xdc\x76\x66\xbe\x1e\xf8\x69\x79\x60\x97\x86\x9f\x27\x86\xa4\xf6\x68\x24\xa6\x9f\x5d\xa4\xab\xdd\x4e\x58\x2c\x60\x1f\x69\x1c\xbf\x26\x29\x44\xf6\x39\x42\x5e\x90\x63\x87\x20\x45\x8a\x10\xde\x18\xd6\xed\x7e\x6e\x33\x1c\xe0\xe0\xbb\x81\x80\x71\xd4\xb6\x3b\x30\x5f\x18\xf6\xc6\xc4\x71\xd7\x25\x62\xfb\x71\x1c\x65\xf8\xd6\xb4\xeb\x2e\x2d\xb6\x5e\x19\x76\x4f\xeb\xf4\xa6\x2f\x32\xfc\x6f\xdb\xc0\x11\x7e\xf1\xe2\xad\x1c\x9e\xb5\x9e\x0d\x5e\xd0\xe5\x05\x4f\xef\x4c\xe0\x9b\x2d\x41\x7f\x18\x2b\xdc\xd8\x0a\x6f\x19\x96\x8e\xdb\xd8\x6c\xc1\xb3\x86\xe8\xc0\x6e\xf4\x52\x55\x0f\x9a\xbd\xc3\x6d\xab\x98\xf6\xdb\x14\x77\xad\xfa\x59\x8c\xa8\xe3\x66\x25\xd3\x13\xd1\xeb\x4d\x81\x4f\xe4\xb4\xca\xd8\x3f\x74\x58\x26\x48\x5e\x22\x28\x1e\xbd\x24\x25\xa2\xf0\xd2\x58\x52\xfd\xd9\xa3\xd3\xd7\x6f\x8e\xdf\x1e\x47\x14\x1e\x9b\xaa\xa9\x41\x0e\x7f\xb7\xd2\x27\x77\x9d\x00\xe4\x67\xa4\x58\xef\xfe\x75\x3b\xbc\xe6\x70\xbf\x56\xde\x72\xcb\x7f\xb2\xd0\x6c\x7f\xae\x56\xa9\x90\x71\x6c\xd9\x96\x7b\x33\xcb\x42\xfe\x1e\x44\x92\x17\x66\xb5\x5c\x88\x25\x8f\xaa\x22\x03\xd4\x6a\x03\x1f\xdd\x37\xec\xcf\x9a\x54\xd2\xf4\xaf\xb5\x30\x9c\xfc\x6d\x88\x23\xfe\xfa\xb3\xa5\xb2\x9b\x3c\xe8\x9f\xfb\xeb\x54\x73\x69\x7e\x43\xb9\x78\xdf\x35\x52\x80\xc6\x29\xfb\x79\x4e\xfe\xa4\x09\x21\x9c\x1d\x93\x48\x2c\x34\x92\xa0\xb4\x9f\x99\x9b\x65\x61\x7e\xc3\x22\xa9\x24\x8f\xe0\xa1\xe9\xa7\xeb\x35\x97\xf3\x07\x17\x62\x39\xb7\xf3\xc1\xfb\x99\x9e\x05\x32\x3b\xfa\x90\x5e\xa5\x0e\x06\x49\x44\x81\x18\x86\x88\xd9\x94\x3d\x08\x20\xa0\x7d\xb5\xe6\x92\xd8\x1e\x97\x23\x28\xe0\xf3\xd8\x2f\xa9\xda\x90\xc0\xf4\x1f\x57\x56\x84\x3d\xc0\x3c\xbe\x96\x47\x47\x23\xea\xa9\xdb\xfb\x15\xdb\x9c\xc9\x8d\x99\xc8\x69\x81\x71\xef\x1b\x42\xf3\xd1\xd3\xc9\x4b\x33\x0d\xa6\x02\x4f\x4c\xdd\x7e\xa7\xba\x7c\x0b\xcc\x56\x60\x6c\x2f\x3b\x1d\x93\xc7\x55\x03\x20\x94\x01\x49\x64\x41\x1f\x1b\xa8\x7d\x42\xf8\x4a\x6c\xd0\xd0\x44\x32\xdb\x03\x28\x18\x65\x3e\x96\xc9\xad\x40\x86\x7d\x32\x78\xbe\xc1\x7b\x53\x93\x7b\x3f\x35\xec\x0b\xca\x8e\x38\x3e\x7c\x46\x8f\x0f\x7f\x22\x5e\x55\x92\x4c\xa6\xf0\x3b\x1e\xd5\x2d\x1b\xf7\xa9\x89\xe3\xc2\xbe\xc6\xcd\xe0\x34\x62\xec\xbd\x09\x32\x94\x71\xbb\x46\xa4\xf3\x09\xe5\xe0\x0d\x95\x48\xe7\xa9\xf1\x82\x7a\x9a\xe7\x96\xc7\xfc\x64\xc8\x0a\x91\x48\x0e\x7f\x18\xf6\x98\x44\xd7\x97\x59\x44\xe1\xb9\x61\xaa\xef\xb0\x17\xfc\x62\xd8\x0b\x33\x7e\x6e\x92\xe7\x26\x8e\x9f\x9b\xbe\xd7\xac\x9f\x20\x53\xba\xdb\x3d\x81\x5f\x5b\x51\xd4\x35\xf9\xc3\x20\xc3\x4e\x2c\xa2\xbc\x26\xcf\xed\xdb\xf8\x0f\x4b\xe9\xb3\xe7\xf6\x37\x71\xcf\xbf\x58\x66\xd0\xe1\xc9\xa8\x67\x09\x0b\x4c\xce\xe1\x37\x84\xc8\xaf\x26\x87\x3f\x0d\xd2\x09\xa6\xcd\xe5\x46\x1a\xdf\x4d\xcb\xec\x86\x67\xb6\xcd\xe9\xe8\x1a\x4d\xc3\x77\xbb\x3f\x8d\x7d\x00\x6f\xad\xf7\x9b\x25\x60\x0c\xb5\x5c\x35\xe7\x58\xad\xe4\xec\x57\x43\xa2\xaa\x77\x0c\x05\xbd\xef\xaa\x62\xb1\xfd\x35\x31\x4c\x8e\x4d\x52\xf3\xf1\xe1\x34\x8e\x39\xb7\xd8\x8f\xc3\xb6\xae\x60\x19\x14\xca\x14\x9a\x83\xe2\x4d\x69\x69\x8b\x3c\x6d\x9f\x43\x6f\x13\x9e\x16\xbc\x41\x4d\x7a\x2a\xf6\x3b\x2d\x16\x44\x71\xbb\x39\xca\x15\x5f\xea\x11\xb2\x6b\xe1\x65\x86\xb3\x34\xe3\x9d\x41\xd2\x64\x3c\x2a\xb6\x64\xce\xa7\x81\xe6\x23\xcc\x3a\xdc\xcb\x2a\xf7\xf2\x82\x0c\xb9\xef\xec\xe7\xae\xd8\xe0\x94\xf9\x41\x87\x12\xdf\xb6\x95\x00\xd5\x5a\x06\x14\x2d\x8d\x2e\x5b\x7a\x9e\xae\xd7\xcb\x1b\x4b\x2f\x06\x8e\xd4\xae\xf5\xd4\x4d\x7a\xb6\xe6\x33\xc1\xed\x82\x9f\xf1\x36\x82\x2a\x00\xf7\x95\xdd\x4b\x35\x0a\xb1\x5b\x55\x76\x54\xd8\x06\x8a\xe4\xa4\x3b\xe5\xe3\xb8\xfb\xca\x90\x0a\xeb\x4e\xc7\x37\xc4\x72\x2d\x4e\x07\xc5\x88\x64\x72\x92\x72\xe4\x4e\x64\xd0\x09\x27\xc5\x13\x48\x7e\x5d\xb1\x72\x1f\x63\x9d\x89\xa4\xc4\x21\xae\x41\x62\x71\x56\xc6\xd9\x64\x8a\xfc\x0c\x6c\xda\xf6\xc7\x90\x31\x7b\x2c\xdf\xb1\x7f\x9a\x7d\x6b\xff\x14\xfb\xce\xfe\x09\xf6\x83\xfd\x4b\xd9\xf7\x68\x1c\x22\xf6\x9c\xae\x66\x90\xc1\x06\x96\x25\xd9\xbe\x80\x35\xcc\xd9\x33\x43\x66\x14\xae\xd8\x05\x99\x53\x58\x31\xc1\x89\xcd\xf6\x2d\x85\x1b\xcb\x92\x5e\x15\x2c\xe9\x39\x1b\xc0\x19\x5b\xee\x76\x33\x0e\xd7\x8c\x8f\xcf\xc8\x0c\x6e\x68\x22\xf1\x61\x40\xbd\x04\x61\x74\xf3\xf3\xf9\xe8\xdc\x73\x9d\xe9\x6e\x77\x6e\x09\xcd\x2b\x0b\x91\x35\x5b\x91\x05\xbb\x9a\x9c\x4f\xe1\x1c\xe6\x14\x0c\xa5\x68\x72\x7c\x3d\x39\x9f\xb2\x75\xe1\x0a\xb5\xa6\x7e\x19\x1b\xbf\x8c\xc3\xda\xe9\x0e\xdc\x5a\xfa\xbe\x58\x4b\xee\xfd\x87\xf0\x7e\x1e\x56\x67\xe6\xcd\x97\xaf\x61\x51\x1a\x27\x15\x2c\xf2\xb0\x60\x12\xc7\x47\xc3\x44\xef\x76\x6a\xac\x92\xeb\x3c\x87\x25\x67\x5b\x6f\x72\x97\x6c\x38\x19\x50\x58\xa5\x6b\xfb\x34\xa4\xb0\x10\x4b\xc3\xb5\x7d\xb9\x43\x21\x53\x2b\x6e\x1f\xbf\xa5\xc0\xaf\xb8\xbe\xb1\xcf\xdf\xd9\x3c\x72\x6e\x1f\xbf\x77\x8f\xcf\x2c\x57\x6c\xdf\x7f\xa0\x39\x2c\x38\x5b\xf2\x60\xd0\x07\x6b\x6e\x29\xa3\x0b\x31\x9f\x73\x19\x51\x98\x07\x8c\xf5\x3a\xe8\xc5\x22\x0a\x17\x28\x7e\xcb\xb8\x81\xab\x20\x88\x73\x32\xc3\x80\x5d\x23\x0a\xab\x16\x17\xc5\x1b\x5e\x62\xfa\x73\x8e\x54\xda\x2f\x27\xc7\xaf\x22\xf0\xe2\x2d\xb1\xb8\xb1\x9c\x28\x47\xb6\xe3\xda\xa1\xcc\x7b\x9c\xfd\x6e\x0f\xca\x13\xce\x36\xfd\x05\x1c\x73\x7b\x70\x38\xda\xd7\xee\xa5\x47\xf8\xae\xd6\x47\x65\xd2\x47\x97\x05\x6b\x3c\x32\xca\x7f\x39\xd2\xfc\x5c\x64\x46\xdb\x16\x4e\x2b\x95\x60\x0e\x97\xb7\x92\xe3\x03\x2f\xcf\xa7\x4b\xdb\xeb\x5f\xbd\x8e\xf7\x01\x67\xdd\x4b\xbe\xdb\x75\x2f\x2b\x8e\x8b\x8d\xd7\xbe\x05\x31\x52\x4c\xf0\x9a\xb3\x34\x8e\x0f\xe9\xea\x9e\x18\x72\xcd\xc9\x36\xff\x9c\x56\xee\xda\x09\xd3\x5c\x16\x87\xe1\xff\x89\x7a\xba\x9c\x3a\x6d\xdd\x9e\xce\xc7\xd9\xb5\x9c\x71\xb2\xe2\xc0\xe9\x48\xc7\xb1\xa7\x95\x56\x7c\xc2\xa7\x70\xcd\x7d\x46\xd0\x71\x6c\xba\x8c\xad\x78\x1c\x5f\xbb\xdc\x16\x2b\x26\xd7\x1c\xde\xb6\x62\x28\x76\xcc\x51\x40\x6f\xc8\x4d\x65\xb4\xc5\xa9\x70\xc1\x89\x04\xef\x75\xe6\x97\x01\x98\xf4\x3c\x31\x30\xf7\x8a\x43\xa1\xa4\x3d\x9e\x20\xb5\x07\x68\xbf\x92\xca\x38\x05\x99\xc3\x1b\x6e\x4f\xff\x16\xba\xbb\xc9\xeb\x98\xbc\x8d\x7c\x29\x34\xf2\x15\x3f\xd2\x1b\x9e\xc3\x8b\x96\x03\x96\xb9\x71\xbf\xe0\xe4\x11\x77\xd0\x40\x06\xc4\xc1\xce\xeb\xf7\xc2\xc0\x50\xcd\x77\x4d\x8e\x2d\x78\xc6\x44\x56\xe4\xc0\x63\x54\x5e\xae\xed\xa9\x6c\x26\x6b\x3e\x9d\xe8\x29\xaa\xe6\xdc\x23\xeb\x0e\x2d\xa5\xf8\xc4\xd2\x7c\x55\xfb\x88\x25\x19\x40\x77\x88\x0e\x51\xa1\xfc\x6e\x87\xd3\xb2\x76\x2a\xba\xad\xe5\xfa\xca\x5a\x06\x14\x5e\xdb\xaf\x1a\x24\xa5\xc9\x75\x78\xcc\xe1\x55\x73\x9a\x8a\x31\x48\x27\xb9\x43\x2e\x4a\xd2\x20\x2d\x79\xc8\xab\x82\xa8\x05\x27\x1a\x6a\x4e\x70\x69\x1c\x77\x9f\x79\x04\x65\xc9\xd4\xdd\xee\x85\x5f\x2c\xa8\x83\xa5\x68\xec\xfe\xac\x0d\xf5\x9f\x13\x83\x5c\xb0\x64\x27\xbc\x66\xe6\x1b\x24\x77\xf8\xee\x81\x8e\xa0\x44\x0b\xe0\x6b\x84\x3e\xda\xfd\x76\x89\xdc\xed\x2c\xd1\xe3\xca\xe1\x33\x66\xdb\xed\x7c\xa2\x03\xf3\x85\xc8\x10\x30\x7c\x6a\x8f\x3f\xcb\x90\xb6\xaf\x55\x94\xeb\x95\x53\x29\x16\x44\xe2\x5a\x0f\x15\x6b\xac\xf8\x91\x7d\x08\x26\x5e\x67\x1c\x89\x85\xd0\x65\x55\xcf\x2a\x5d\x07\xa4\x9f\x96\xdd\x8e\xa8\xca\x4a\xc0\x59\x52\x79\x0e\xb7\xda\xc0\x73\x8f\x3b\xca\x17\x24\x9b\x4c\x2b\xf0\xe7\x75\x0f\x37\x6c\xcd\x60\x6b\x4f\xf1\x5f\x3a\xe9\xa1\x71\x72\xf3\x1c\x1e\xb6\x55\xee\xd6\x32\x48\xdb\x0a\x1f\x3f\xe2\x89\x6b\x4a\xd7\x9b\x92\xf5\xa6\xba\x45\x5b\x1c\xe7\x61\xe5\x5e\xb4\x6b\x10\x37\x3a\x36\xaa\x73\x0b\xba\x37\x66\xb7\x23\xdc\x10\x72\xc3\xab\x6c\xae\x37\x6e\xed\xd4\xf6\xdb\xbe\xda\xc7\x21\x83\x92\xa0\xac\x4a\x3e\xa9\x37\xe1\x6e\xca\xf0\x2b\x72\x9a\xe2\xd3\x64\x30\x1d\x7b\x0a\xb5\x9a\x16\x8e\x77\xe0\xa8\x3b\x84\xba\x9b\x4a\x65\xdd\x79\xbb\x90\x47\x76\xa8\x50\x5d\x54\xee\xd9\x4e\x2c\x2e\x4b\x52\x59\x64\xb8\x87\x5f\x7b\x1c\xec\x76\xa7\xe5\x60\x0a\x7b\xd4\x38\x7e\xc0\xe3\xf8\xb5\x47\x9f\x7b\x24\x79\xc6\x4d\x22\x73\x0a\x6f\xbd\xf3\x28\xfd\x5a\xdd\x4a\xe7\x2a\x28\x51\x4c\x7a\x6e\x27\x82\x5b\xac\x0b\x51\x8d\x21\x8a\x5a\x1d\x24\xdf\x72\x82\x70\x70\xab\x66\xd3\x5f\xb0\x67\x1c\x1e\xf4\x17\xec\x05\x87\xd3\xfe\x82\xbd\xe3\x60\x59\x4f\x3c\x56\xd9\x2d\x0e\xd7\xf6\xff\x21\x07\xcb\xae\xb4\x31\x57\x6f\x39\xf9\xd5\xf8\x0a\x21\x8d\x63\x7b\x66\x55\x0f\x00\x88\x2a\x98\x3c\xda\x87\x41\xfb\xb9\x56\x8c\xaf\x52\x38\xcf\x71\x9c\x2b\x7e\x48\xdc\xfd\x8c\xc3\xd6\xe9\xe5\x92\xee\x20\xa7\x94\xc2\x5b\x43\xb6\x3e\x38\x43\x77\x00\xd7\x3a\x5d\xdb\x7f\x27\xec\x4b\xba\x6f\x0c\x64\x17\xe9\xca\x3e\xe4\xb0\xf5\x21\x0f\x6e\xec\x11\xb4\xe0\xe4\x9d\x21\x1f\x78\xc3\xc7\xd4\x70\xbf\xd9\x6c\xbd\x4e\xaa\x59\x1e\x66\x99\x49\x4d\xbd\xf6\x1c\x2c\x55\x96\xec\xef\xc9\x82\x91\x1a\xa1\x81\xcb\x47\x5e\xb1\x70\xf9\x68\x8f\x61\x8f\xa5\x6f\x38\x29\x0f\x50\xfc\xc0\x24\x9c\xf2\x89\x9c\x32\x6e\x37\xfc\x25\xbf\x69\xaa\x62\xc5\x82\x74\xdf\xf0\x36\xd3\x17\x53\xe5\xda\xfc\x91\xe9\x3b\x70\x6a\x57\x5f\xe8\xc0\x29\x47\xa6\x77\x93\x71\xb7\x8c\xaa\xb3\x63\xe9\x9b\x81\xfb\x26\x56\xeb\x25\x6f\x7e\x1b\xda\x39\xaa\x02\xc7\x4b\x6e\x5a\x80\xe3\x41\x9f\xe6\xb0\x75\xd2\x96\xa4\x55\x7b\x57\x91\x8f\x3c\x41\x23\xa7\x57\x9c\xe0\x83\x53\x57\xd5\x8c\x73\x92\x17\x1c\xf6\xe4\x88\xaf\x38\x1c\xb2\x53\x4a\xde\xf1\xaf\xee\x6e\x8e\x14\x58\x53\x6e\x92\xdc\x6a\xd6\xee\x05\xb8\xc9\xc3\xaf\xac\xba\x4e\xfc\xd9\xcd\x46\x86\xce\x33\x6a\xdb\x5e\x71\x9b\x7c\xc3\x96\x7a\x66\x9c\xf0\x84\xc2\xb9\x3f\xe5\x5e\x72\xd6\xb5\xa8\xb9\xde\x84\x43\xa8\x37\x9c\x14\x86\x43\x13\xcb\x04\x4e\xa3\x2e\x3b\xe7\xc4\x29\x45\xa3\x6d\xee\x5e\xb7\x69\x62\xf2\x6a\x42\x41\x44\xd9\x3e\x8e\xaa\xe3\x73\xa4\x7a\x63\x74\x2f\x79\x0e\xdb\x82\x7a\xdf\xb3\x2b\x2a\x9c\x16\x40\xb1\x89\x99\x82\x60\xc3\x51\x13\xd5\xff\x2c\x46\x54\xb9\x73\xa7\x44\xeb\xa2\xd7\x9b\x3a\x1f\x2b\xc6\x81\x38\x0b\x83\xe2\x44\xb0\xfc\xb1\xdf\x03\x25\xd3\x8c\x36\x08\x4d\x5a\xa0\xdd\x45\x14\x5d\x6d\x98\xae\x10\x2a\x68\x81\x06\xb6\xce\x72\x9f\xda\xf9\x55\x93\xa1\xdd\x89\xe7\xdc\xb3\xf6\x28\xe1\x53\x76\x12\xf2\x2a\x0a\x9c\xcc\xf9\x74\xb7\x7b\x5d\x47\x8b\x73\xcb\xf0\x54\xb8\x82\x60\xe7\x08\x9a\x23\x2a\x2f\x58\xa5\xa7\xf6\xac\x09\x22\xca\xc7\x1c\xfe\xe6\x70\xdf\x71\x47\x32\xbd\x12\xe7\xce\x61\x2e\xda\x64\x5c\xdf\x3b\x47\xf1\xf5\x6e\x17\x45\xf0\xc4\xb2\x25\x6b\xad\x66\x3c\xcb\xe0\x13\x67\x4f\x78\x1c\x3f\xe1\xfd\x60\x39\x04\xef\x39\xfb\xc4\xe3\xf8\x13\xef\x5f\xfd\x38\x7a\xcf\xc7\x7f\x73\x46\x1e\x73\xf6\x9e\x07\xab\x88\x7e\x44\xe9\x64\x30\xed\x3d\xe6\x93\xe1\x34\xb9\xcf\x91\x08\x7b\xcc\xd9\x7d\xde\x5f\xa1\x24\xef\xf6\xa3\xf9\x39\xff\xeb\x36\xf9\x6b\xde\xa3\xb7\x29\xdd\xed\x30\xe7\xcf\xec\x9f\xdf\xd9\x43\xb2\x96\xf3\xc1\x85\x56\xab\x4a\xde\x38\x26\x7f\x73\x86\xf9\xdd\x09\xff\x94\xb3\xbf\x79\x1c\xf7\xfe\xe6\xf0\x7b\x53\x1e\xf2\x47\xab\x7a\xeb\x29\xff\x99\x7d\x3f\xdc\xed\xba\xfb\xab\x9b\x97\xa4\x0d\xe1\x35\xff\xd6\x6d\x4e\x27\xbf\xf3\x16\xcf\xc2\xed\x42\xa9\x64\x98\xe7\x30\xec\x32\x66\xf1\x1f\xb9\xaf\xd4\x92\xa7\x92\xf6\x17\x4a\xe1\x76\x7c\xce\x0f\x58\x04\xfe\xc2\xd9\x36\x87\x5f\x79\x83\xae\x40\x5f\x90\x1c\x7e\x6b\x59\x73\xd7\xe4\x97\x2a\xc2\xfd\xc5\x36\x38\xe2\xb8\x3e\xb7\x79\xa0\xd0\x27\x53\xbb\x23\x34\xeb\x76\xaf\x09\x87\xe8\xde\x83\x07\x8f\x4e\x4e\x8e\xdf\x9c\x44\x34\x8e\x79\xbf\x78\x05\xc5\xec\xf7\x01\x1d\xf3\xc9\x60\x9a\xfc\xca\x61\x86\x09\x43\x9b\x30\x9c\x06\xd9\x46\xb5\x29\xd6\xed\xca\x3d\x05\x93\xdd\x4b\x71\xdc\x4d\x0b\x75\xbc\xa7\xbc\xb6\x6e\x17\x26\x47\xc3\x7c\xa4\xc7\xcf\x2d\xc1\x3f\xac\xb1\x2b\xfe\x08\xff\x95\xe7\x34\x31\x76\x3f\x0c\xa1\x70\x88\x56\x3e\x00\x03\xfc\xe9\x84\x08\x28\x8a\x00\x23\xd9\x1f\x9c\x44\xee\x2d\xa2\xc0\x25\xfb\xad\xf2\x5e\xc3\x2a\x4e\x03\x05\xb8\x4d\xaa\x08\xd9\x58\x76\x80\x4b\x7b\xc2\x3a\xf9\x46\xcb\x12\xf9\x93\x87\xdd\xbb\x87\x53\x86\xe3\x12\x97\x14\x40\xb2\xfb\xd6\x01\x5f\xb6\xf2\x0c\x38\x23\x85\xf1\xbb\x6c\x32\xee\x7e\xd4\x4e\x8b\x52\x51\x1d\x84\xc5\x30\xcc\xc1\x63\x76\x2d\xab\x22\x15\x25\x99\x94\x24\xf2\xaf\x11\x85\xd4\xc3\xa3\x48\x98\x49\xa6\x64\x1c\xa7\x72\x3c\x29\xe2\x93\xb4\x0d\x58\xcb\x7f\x75\xc0\x5f\x03\xeb\xb2\xcd\x2e\x9b\x49\x47\xd3\x60\x0f\x66\xd2\xc3\x2b\xc3\xf1\x64\x6a\xc5\x61\xe3\x06\x63\x9f\x23\x0a\x4b\x37\x12\xf7\xf6\x55\xf3\xba\xb1\xf3\xba\xb4\xad\xa0\xa8\xaa\x65\x90\xd9\xbf\x3c\x48\xdf\xcb\x85\x44\xc1\xd1\x5a\x36\xbc\x00\x16\xd2\x9d\xb8\xa3\xaf\x21\x04\xd2\xdd\x6e\x2d\x2b\xa4\xcb\x41\xd2\xa2\x95\x98\x59\x48\xb2\xf2\xa4\x8b\xef\xd4\x5c\x1e\x08\x44\x75\x8e\x94\x1f\x3a\xcc\x8e\x9d\x46\x53\xc3\x92\x0c\x90\xc7\x37\x96\xef\x97\xf9\x67\x3b\xfc\xe5\x2e\x66\xed\x5e\x54\x50\x31\x7b\x71\xd6\x10\xf7\x0c\xd1\x14\xd0\x3a\x60\xc6\x06\xa3\x60\xea\xf3\xf3\x6c\x44\x8b\x33\x97\x48\xa6\x88\x06\x1e\x0c\x7b\x68\x1c\xcf\x25\x49\x5d\xcc\xa5\xc0\x0d\x85\x41\x5f\x34\xa7\xe0\x9d\xf9\xfa\x29\xb8\xb0\x8b\xe3\x92\xdf\xb4\x52\x42\xef\x4c\x49\x07\x61\x53\x57\x92\x6d\x1f\x9c\x9c\xbc\xd9\x2c\xf9\x0b\x91\x99\x64\x00\x0f\x4e\x4e\x4e\xcc\xcd\x92\x3f\xe4\xb3\x65\xaa\x53\x94\x3a\x61\xea\x7b\x7b\x00\x87\x4c\x4b\xc1\xa5\x79\xc3\x67\xc6\x27\x3c\x3c\x7e\x59\x7f\x73\x24\x7c\xf9\xfe\x56\x5d\x72\x89\xaf\x43\x78\x98\x9a\xf4\xad\x4e\x65\xb6\xe0\xfa\x99\xe1\x2b\x9f\xeb\xb1\x28\x3a\xf1\xf4\xed\xcb\x17\xf7\x96\xcb\x07\x6a\xb9\xe4\x33\xdf\x05\x9b\xb6\x97\xf0\x58\xe9\x95\xd7\x4b\xfb\x94\x13\x6e\x73\x94\x69\x2f\xf9\x5c\xa4\xbe\xda\x97\x62\xc5\x2d\xc1\xef\xe4\xf3\x03\xb0\x34\xea\xfc\x95\x9a\xf3\x97\xe9\xda\xbe\xaa\x39\xf7\x5d\x7c\x9d\x0a\x3b\xbe\xbf\x37\x3c\x0b\x83\x7a\xbd\xdc\x9c\x0b\x59\x3c\x84\x3a\x4e\xde\x3f\x79\x81\xf3\xed\xb3\x9d\xbc\x7f\xf2\x6a\xb3\x3a\xe3\xba\x7c\x7f\x9d\x9a\x8b\x13\x7e\x5e\x49\x50\x42\x9a\xf2\xb5\x06\xab\x93\xf7\x4f\x1c\x6c\x94\x0e\x80\x71\x36\xd6\xf7\x37\x8b\x45\x59\xab\x9d\xa2\x93\x0b\xce\x43\x35\x6f\xf9\x47\xf3\x56\xa7\xb3\xcb\x07\xc5\x24\x15\x49\xe1\x5d\x6d\x66\xbe\x97\x79\xa1\x19\x5e\xa1\xbd\xd6\x95\xdf\x57\x37\x92\xa9\xc9\x4a\x4e\xe1\x5c\xb2\x1b\x19\xc7\x37\x15\x95\x88\x25\x27\xcf\x65\x1c\x9f\xcb\x12\xdf\xb1\x99\xa4\xce\xb6\xfd\x5c\x42\x81\x91\x61\x56\x35\xe1\x2f\xf3\x5b\xf4\x88\xda\xf9\xb3\xfd\x5d\x1d\xa8\x46\xb7\xa3\xdb\xdd\x30\x6c\x56\x2f\xc4\x95\x50\x3f\x62\x9b\x5c\x73\xe9\x29\x35\xc0\x73\x37\x18\xe6\x5f\xcb\xcf\xc4\x3c\xfc\xba\x38\x85\x5f\x8e\x84\xb8\x75\x61\xbc\xee\x49\x46\xbe\x9c\xb9\x40\x11\xd7\x72\x7c\x2d\x93\x6d\x4e\xfb\xa7\xa7\xef\xdf\x3d\x3a\x7d\xf8\xe8\xfd\xdb\xe3\xe3\x17\x27\xa7\x4f\x5e\x1c\xdf\xbf\xf7\xe2\xf4\xe9\xf1\xf1\xf3\xd3\xd3\xd2\x3f\xfe\xc4\xe3\xce\x8a\x3d\x09\x31\xb4\x25\x3e\x57\x05\xba\xc4\x4c\xe4\x14\x24\xad\x45\xe1\x3a\xae\x62\x88\xa0\xb6\x6f\x89\x77\x65\x70\xee\x1e\x35\x0f\x7f\xe7\x7b\x1b\xbc\x1f\x9d\x73\xed\xe9\xec\x42\x2c\xe7\x9a\xcb\x46\xc0\x0f\xf4\x52\xf6\x59\x74\x7a\xfd\x52\xcd\x37\x4b\xce\xbc\x9f\x94\xb7\x79\xe2\x2e\x12\x18\x3e\xb2\x36\xfe\x43\x8e\x25\xa1\x89\xf4\x06\xe6\x1f\x25\xdb\x4a\xcb\x6b\xae\x53\x8b\xfe\x9a\xf2\x93\x3c\x1f\x7d\x94\xfd\x32\x43\xff\x9c\x9b\x7d\xfa\xb6\xdb\x6d\xf4\xa9\x52\x22\x87\x47\x95\x5d\xd0\x4f\xe7\x4e\x39\xd1\x06\x85\x62\xd8\xce\xb1\xa3\x5e\x50\xf3\x95\xba\xe2\xcd\xb2\x74\x1b\x0c\x8d\x9b\x15\x34\x8a\x9f\x73\xb3\x5f\x36\xa8\x4e\xbf\x50\xf6\x22\xcd\x0e\x97\x0d\x41\x27\xca\x0a\x1a\xa5\x37\xeb\x79\x6a\x9a\xe4\xfb\x21\x68\x31\x53\x79\x01\xd3\x4f\xb1\x4c\x16\x5c\x6a\x2b\x65\xfc\x17\x56\xe4\xa1\x60\xfa\xab\x8d\x49\x0f\x15\x28\xbe\xb1\x4a\x3e\x5b\xc8\x29\xd0\xda\x8a\xf8\x2f\xac\xc8\x43\x1b\x63\xf3\xbb\x65\x1f\x3a\x27\x92\xd4\x81\x82\xf2\xbb\xb6\xb2\x4f\xb0\xe6\xcf\x82\xa7\xe8\x60\x51\xeb\xde\xb7\x83\xd5\xdf\xc3\x5a\x3f\x5b\x7d\x01\xe3\x96\xea\xfd\xb7\x83\xd5\xbf\xf4\x80\xfc\x6c\x03\x95\x59\x69\x69\xa2\xf8\x8a\x8d\x1c\xb0\x57\x23\xd5\xc6\xe1\xa3\x74\xe4\xc7\xa9\x84\x0f\x2d\x4d\x3b\x55\x22\xd7\x64\x32\x05\x83\xca\x9e\xd1\x87\xc6\x5e\x68\x5d\xca\x7d\xcd\xe7\x9b\x59\xcd\xe1\xa1\x1a\x46\xb6\xd8\x43\x84\xd3\x3c\x04\xd1\x52\xca\xf6\xba\x59\xfd\xab\xb0\x86\xdb\x34\x06\xa1\xdc\xe8\x73\xed\x56\xcc\x2c\x7a\x84\x70\x56\xee\x60\x22\x29\xad\x6c\x92\xb1\xec\x45\xb7\xa3\x24\x8a\x6c\x9f\xec\x6f\xbd\x33\x2d\xbb\xaf\x8c\x72\x68\x82\xc5\x39\xba\xe7\xbb\xac\x96\x18\xd5\xfd\x15\xce\x4d\x56\xc4\x96\x51\x68\x96\x5d\x24\xa3\x1c\x54\x96\x5d\x52\x81\xdb\x1e\x19\x52\x98\x07\x2b\x0a\xb5\x2c\x65\xb5\x13\x35\xa5\x79\x8e\xd3\x13\x80\x01\x7b\x60\x0c\xb3\x78\x80\x82\xc7\x68\x2f\xa5\xd1\x04\x5a\x56\x74\x07\xd4\x87\xb6\xc3\xa8\x00\x68\x50\x4f\x47\xe8\x27\xe5\xa9\xea\x71\xd1\x20\x53\x2e\x1c\xc5\x39\x37\x24\x98\x4a\x0d\xe0\x68\x48\x69\x81\xa3\x89\x99\x98\x22\xca\xc1\x14\x14\x1d\xf1\x30\x02\x5c\xc9\xc5\x5b\x55\x91\x87\xc6\x2b\xe5\x12\x34\x15\x68\x70\x7f\x74\x36\x66\x48\xb6\x8c\xb4\xb6\x58\xf6\xbb\x08\x92\xd5\xfb\xa6\xeb\x0b\x64\xa4\xe3\x58\x87\x53\x35\x8e\x6b\xa7\x07\x91\xcd\x1e\x88\xec\x8d\xef\x01\x9f\xff\xfb\x7d\x28\x23\x3a\x85\xf3\xc2\xb6\x84\xf3\x71\xd9\x16\xbc\xac\x3e\x81\xc6\xa2\x5f\xb6\xcd\x29\x74\x4f\x65\x1c\x1f\x26\x7c\x82\x29\x5e\xff\xfd\x86\xc7\x71\x43\x36\x6f\x8b\x1a\xc6\xd8\x69\xf0\x61\x18\x75\xff\xc7\xed\x6f\xba\xff\xe3\xff\xea\x7c\xd3\xb9\xda\xf0\x8f\x9d\xab\x6f\xfb\xdf\xf7\x87\xf8\x4e\x66\xd4\x79\xea\x3d\xba\x4a\x65\xe7\x0f\xb5\xc1\xd4\xff\xb2\x23\x94\x19\xef\xbc\x7c\xf6\xd6\x26\xdc\xfe\x1f\x8d\x26\x1c\x75\x4e\x4c\x90\xf5\x55\x04\x7a\x93\xc1\x94\xfe\xcc\xee\x50\xd3\x5f\x89\x8f\x42\x92\xed\x19\x5f\x28\xcd\x1f\x38\xf9\xbb\x65\xe7\x0b\x67\x35\xb4\x16\x2d\x26\xe0\x54\x48\x61\x46\x7b\x29\x75\xa0\xed\x43\xca\xf4\x31\x97\xfb\x1b\x4f\xe4\x34\xac\x35\x97\x42\x2d\x99\x5b\x15\xb3\x56\x23\x6f\x96\xb2\x6a\x9c\xde\x5b\x0a\x75\x40\xd9\xc8\x12\x51\x4a\xfb\xa8\x29\xb7\xf0\xb9\x35\xcc\x5c\xc8\xe6\xfe\x09\x4d\xfc\x53\x12\xac\x60\xe3\x38\x3c\xf9\x6a\xc2\xf9\xea\x2b\x6d\x7c\xb5\xf8\xe0\x54\x32\x43\x73\x52\xce\x2f\x2d\x28\xbb\x35\x32\x4d\x7b\x1b\x7e\x32\x0d\x56\x03\xb6\x79\x2d\x66\xa6\xcc\xa1\x31\x12\x70\x77\x18\x08\xc6\x99\x5a\xad\x84\x31\x42\x9e\x17\x81\xb8\x4e\x03\x11\x71\x98\xcc\x74\x39\x4e\x36\x67\x96\xaf\x3f\xb3\xc4\x40\xc0\x5a\xa7\x25\x41\x71\xb8\xf8\xb5\x4e\xd7\x6b\x3e\x7f\xe2\x09\x89\xc3\x19\x3d\x26\x41\xc4\xf5\x41\xa2\xc2\xaf\x9a\x5e\x1c\x28\x2f\xd3\xf5\x67\x6a\xc9\xda\xfa\x79\x6d\x59\x29\xae\xdf\xbf\xc4\xca\x4f\x65\xa8\x39\xbd\xe4\xe8\xbe\xe2\x3b\xf7\x20\x9d\x5d\x34\x23\xec\x95\x61\x81\x5c\x3c\x23\xf0\x01\xad\x42\x8c\x2e\x48\x59\x88\x30\xb3\xb2\x2b\xb8\xfa\xad\xdd\x5d\x4c\x84\x50\x47\xce\x4b\xbf\x52\xfa\x10\x4f\x97\x56\x4a\xa0\xe1\x85\xa7\xef\xed\x6c\x33\x3d\x72\x8e\x83\x35\x60\x21\x7e\xf7\xcc\xc0\x0b\x2f\xcf\x9a\x41\x39\x6f\x95\x5c\x14\xde\x84\x0c\xf6\xb4\xda\xe7\x7e\x4c\x35\x8c\x3c\x2a\x27\x49\xa9\x09\xe9\xcf\xf9\x95\x51\x6a\x99\x8d\xcb\xc7\xe4\x54\xf6\x1d\x13\x51\x24\xd1\x3a\x9e\xba\x87\x1e\xe4\xfd\x53\xff\xf9\xa9\x52\x97\xec\x9e\x84\x7b\xb2\xcf\x57\x16\x93\x58\x44\x95\xd8\x0d\x1c\x81\xa1\x36\x59\x49\x9f\x68\x74\x7a\xc5\xbd\xd1\x54\x6a\x78\x54\x37\x20\x31\xc1\x15\xe5\xc4\x7e\xf4\xbd\x35\xfd\x62\x4d\x34\xe9\x9a\x7a\x83\x61\x35\x47\x6e\x66\x28\x6c\xd7\x9a\xaf\xb9\x9c\x23\x0f\x5c\xad\xc7\x91\x94\x9f\xaf\xcd\x6d\x9b\xf6\xba\x68\xee\x3d\x12\xe1\x81\x64\x5b\x1c\x49\x1b\xdf\x55\xa0\xaa\xd7\x7b\x5c\x7e\x70\x2c\x23\x86\xde\x1d\x58\x44\x10\xc7\xf6\x3c\xc3\x26\xc6\xf6\x44\xcd\x2e\xc4\x02\xd5\x99\x3c\xd8\x70\x94\xd1\x05\x49\x10\x38\x57\xab\x19\xc9\x9f\x8f\x86\xf6\xa0\xb4\xd8\x7c\xc6\x89\x84\x61\x15\x5b\xbe\x0d\x6c\xda\x17\x50\xc6\x17\x91\xc2\xd7\x61\x84\xaf\xde\xf6\x0d\xce\xf7\x05\x52\x8e\xb8\xd2\xeb\xcb\x1c\xcd\x83\xde\xb8\xaf\xd5\x90\xb4\x6f\x9a\x44\x55\xff\xf4\x6a\x35\x2a\xd8\x1d\xb6\xcd\xb1\xa6\x7f\x15\x53\x34\x47\x09\x82\x6d\xf3\xd1\x89\x24\xaa\x46\x29\x49\xba\x15\x13\x39\x6d\x47\x14\x2d\x16\xbe\x18\xea\x08\x4d\x39\x5a\xd9\x84\x1b\x52\x74\x1c\xe4\x21\x8b\x3e\x1c\xe1\x44\x4e\xf3\xba\x04\x08\xfd\xf1\x7d\xfc\xb3\x72\x03\x67\x62\xc9\xa5\x19\x35\x13\x58\x77\x00\x58\x8f\x47\xa8\x64\x3b\x4f\x4d\x9a\x6c\x6f\xdd\x72\x8b\x99\xbb\xb8\x66\x1b\xc3\xe7\x89\xc8\x29\xec\x95\x4f\x21\x1c\x57\x75\xcc\x80\x95\xf6\x6f\x21\xc2\x6e\xb3\x5a\x74\xf8\xcb\x36\xd6\xf7\x6d\xd5\xc2\x74\x53\x4b\x14\x6c\xe7\x9c\xa3\x19\x46\x76\x23\x67\x6e\x64\x68\x8c\xe5\xb6\x89\x9d\x1a\x61\x2e\x1e\x20\xc6\xad\x37\x51\xaf\x18\xdd\x29\x2c\x02\x39\x95\x18\xc3\xec\xad\x98\x5d\xb6\x75\x49\xf7\x6f\xcd\x79\x66\xb4\xba\xc1\x88\xa3\x95\xb5\xf5\x42\x86\x0b\x27\xa0\x88\x86\xd8\x0d\x6e\x7f\xf6\xe0\x28\x97\x68\x95\x63\x22\xee\x16\x01\x5d\x61\x71\x1c\xba\x6c\xd9\x12\x93\x74\x7a\x60\xb3\x4c\xd2\x29\xd3\x14\xba\x22\x8e\xbb\x2a\x78\x97\xbf\xc2\x45\x57\x27\x62\x33\x26\x27\xb2\x42\xc4\x1e\x06\xd0\xa9\xec\x67\xdc\xa0\xb1\xb4\x76\xfb\x0d\x89\x79\x17\x1e\x5e\x3b\xd7\x9b\x8f\xfb\xa7\x98\xbf\xf8\x02\x03\x72\x82\x62\xdb\x70\x3c\x26\xda\x1e\x1a\xe1\xa5\x69\xfe\xee\xc0\xf5\x2c\xbc\x63\xcc\xc8\x75\x7a\xb3\x54\xe9\x1c\x66\x4c\xf4\x3d\xb9\x06\x19\x13\xe8\xf2\x5f\x5c\x32\x11\xc7\x33\xdc\xf1\xbb\x1d\xc9\x18\xef\xa1\x80\x23\xb4\x42\x32\xf0\x31\xf7\x56\xc2\x60\xfb\xfe\xf1\x7f\xba\xf5\xd6\x66\x5d\xe5\xb6\x51\x98\xd1\xbc\xb0\xda\x3a\xc4\xe1\x2b\xdc\xb2\x76\xf7\x26\xb8\x77\xf5\xb8\x6d\xf7\xfa\x2c\x79\xcb\xd6\xde\x53\x04\x77\x0f\xe1\xae\x09\x9f\x86\x43\x60\x9b\x23\xef\xe4\x9d\x9b\x6a\xc2\xd0\x42\xe8\xd3\x42\x16\x28\xe7\x71\x51\xac\x25\x4d\xd1\xe3\x22\x44\x66\xf4\xe9\x9a\x8e\xda\x11\x95\x04\x71\x18\x41\xf9\x66\x27\xaa\x05\x49\xb9\x23\xfd\xe0\xa8\x58\x11\xf2\xf6\x33\x99\x72\x17\x06\x28\x07\x7f\xf4\xb6\xf7\xe3\x95\x24\xfe\x58\xc1\xfb\x2d\x72\x0a\x2a\x47\x97\x5c\xcb\x5d\x36\xc5\x3f\xa4\x81\xd6\xbb\xf5\x5d\x00\x1a\x83\xb2\x94\x87\x23\x46\x00\x68\xa6\x58\x6a\xde\x87\x5b\xa9\xd1\x35\x65\x00\x70\xdf\x1f\xb7\xf1\x6c\x67\x7a\x12\x38\x6c\x9c\xad\x64\x5d\xe2\xd5\xec\x51\x08\x1f\x6c\x17\xe9\x58\x26\xb6\xa4\xc2\x3b\x7b\xe4\x7c\xc9\xf5\x6e\xc7\x47\x07\xfa\xec\xcf\xfb\xa2\xc7\xe5\xfb\xa1\xfe\x06\xf7\xfd\xa2\xdf\x95\x3d\x5f\x52\xce\x61\x17\xfa\x6d\x02\x61\xed\xeb\xe2\x0c\x73\xd3\x13\x06\x6d\x3b\xee\x27\x32\x29\xcf\x39\x9b\x8a\xe4\x5e\xe2\x27\x2b\x2f\xcd\x7e\x89\x62\x82\xb6\xc5\xed\xea\x28\x0c\x26\xbd\xdb\x95\x31\xaa\x8b\xab\x21\x84\x5b\x60\x15\xda\x74\xec\x23\xb3\x36\xae\xec\xf0\xd1\x38\xab\x39\xab\x04\x20\xd7\x5a\xe9\xc8\x85\x58\xa1\xd4\x1e\x83\x38\x63\x1a\x54\x73\xbe\xdc\xa0\xbe\x62\x05\xe1\xa5\x0e\x0d\xca\xc2\xee\xe4\x20\x79\x6a\xf9\xd6\x26\xe6\x93\xa4\x00\x69\x29\x3d\xf5\x29\x15\x41\xef\xc1\xf5\xe5\x44\x1b\xd5\x9b\x43\x04\xdd\x86\xc3\x2e\x70\xe0\x82\x3a\x7f\xa5\xea\x81\xf8\xaa\x4e\xe0\xf0\x2f\x88\x1b\xed\x4e\x45\xb3\xcf\xa2\x82\x67\x4d\x42\x18\x55\x2f\xf6\x50\xf7\x17\xdf\x48\xc6\x81\x33\x03\x26\xc4\x4c\xf5\x1e\x01\x06\x3c\xf6\x4e\x38\x78\xdc\x9d\xc8\x3c\x7f\x20\xdd\xb0\xdb\x95\x1a\x9e\xda\xb8\x5a\x35\x28\x0e\x28\x8a\x65\x0d\x39\x6a\x0e\x97\x55\xb1\xd2\x01\xb6\xae\x14\xdf\x81\x62\xc5\x90\xc0\x62\x4d\x14\xee\xa6\x4c\x55\x0e\x1b\x37\x00\x51\x0c\x20\xcd\x21\x63\x0d\xfe\x7b\x22\xa6\xa3\x52\x7c\x7f\xe0\xf8\xce\xda\x99\x3b\x43\xd2\x10\x1a\x65\x8f\x85\x0e\x0e\x94\x5f\x60\x0b\x67\x55\x7a\x80\x36\x80\x70\x80\x1b\x2e\x03\xa5\x82\xf6\x40\x70\xee\xd6\x08\x02\xc1\x74\x01\x82\xd4\x83\x40\x15\x20\x10\x39\x04\x86\x37\x20\x23\x77\x4b\xc3\xcc\xb9\x85\x1e\x10\x5c\x94\xa3\x41\x93\x9e\x03\xa1\xe4\x9d\xc8\x2a\xa7\x5f\x18\xb4\xcf\x47\x52\x90\x15\x5a\xa8\xee\x44\x9d\xb1\x59\x69\x3a\x12\xf0\x8c\xc5\x88\xb3\xfe\x2a\x5d\x1f\x00\xa6\x40\x20\x26\xb3\xc9\x60\x4a\xca\xf8\xf8\x96\xce\xf6\x35\x34\xb7\x4b\xd6\x0c\x8c\xef\xe3\xa5\xc9\x36\x10\x7c\x76\xe8\x18\x0e\xf7\xcb\x23\xc7\x6c\x07\x07\xee\xa4\x04\x0d\xbb\xe6\x7f\xab\x3b\x88\x41\xdb\xbb\x53\x45\x22\x98\xad\xec\x8e\x33\x3c\xaf\x74\xc8\xdb\x54\xe7\xe8\xf9\x5b\x5b\x9a\xc5\x4a\x3f\x10\x23\xcb\xbe\xee\xed\x09\x94\xda\xb4\x57\xb3\xa7\x6a\xaa\x57\xd6\x1a\x5f\xc8\x8b\x48\x13\x93\x27\xe6\x90\xc4\x6d\xbf\xc9\xeb\xbd\x1d\xd5\xd0\x0b\xd4\x30\x58\x21\xff\xfa\x1c\x67\xb5\x7f\x28\xd8\x69\x74\x02\xa7\xcb\xba\x5a\xa2\x94\xb1\x1c\x92\x6a\x7f\x16\x11\xf1\x7d\x9c\xca\x4c\xbe\x87\x38\x82\x52\xc0\x2b\xb9\xf7\x06\x5b\x17\x84\x5a\xce\x6f\x2f\x4c\x95\x93\x14\x4f\xcc\x94\x36\x25\x5f\x85\x76\xc2\xa2\x9d\x20\x22\x2b\xf5\xe6\x60\x1a\x05\x50\xfa\x4f\x01\x85\x2c\x19\xd7\x57\x6e\xf8\xa5\xf0\xac\x2c\xda\x1c\x46\xa9\xdd\xd8\x1b\x48\x0d\x64\x5f\xdf\xf9\xb2\xc6\x52\x4a\x7a\x00\xd4\x0e\xcb\x5a\xb6\xaf\x38\xdf\xab\xcc\x9f\x65\xec\x9d\xfa\x9c\x48\xa8\xe9\x32\x9c\x17\x82\x0c\x72\xaa\xcb\x86\x36\xbc\x65\x28\xc1\x57\xee\x6b\x47\x51\xd5\xb9\x60\xf8\x8f\x7a\x1b\xca\xbc\x3b\xa4\x36\x2f\xe0\xe0\xd4\x75\xa6\xe8\x28\xc6\xcd\xaf\xd7\x53\x01\xcc\x21\xc5\x4e\x45\x2e\x3e\xda\x17\x94\x0f\xc0\x90\x16\x01\x3a\x3f\xac\xa8\xad\xb6\x0f\x0f\xbc\xa2\xf6\x9d\x64\x7f\xef\x49\x0c\x03\x03\x16\x76\xeb\x63\x8b\xd8\xda\xb1\x5d\xa0\xde\x2f\xf9\x0d\x92\xed\x57\xe9\x72\x24\x27\xba\x66\x6a\x5c\x19\x93\x53\x29\x04\xee\xa5\x96\xe6\x37\xf7\xa8\xbc\xe5\x48\xb3\xfb\xb2\xaa\x99\x80\x68\x95\xae\x4f\x9c\x7c\xd5\xb9\x90\x74\x75\xa0\x31\x79\xc9\xe8\x17\xb5\x97\x29\x81\x37\xf5\x6b\xa1\x85\xee\x1e\xab\xaa\x7f\x1e\x48\x9a\x70\x64\xf3\xec\x58\xfa\x96\x6e\x66\x28\x20\x05\x69\x7f\x6e\xfd\x1f\x00\x5a\x19\xdd\x7d\x32\x05\xb9\xe7\x08\xe6\xa2\x7d\xa0\x47\x4c\x69\xfb\x29\xa7\xa3\xca\x55\x08\x1e\xae\x5e\x03\x50\x82\x55\xb4\x81\x35\xf0\x8b\x59\x01\x5a\x11\x40\xab\xf1\x56\x0c\x07\x48\x57\xd9\xe7\xe1\xe8\x5c\x02\x10\x90\x16\x78\x9e\xee\xe6\x94\x26\xba\xf2\x2d\x34\x3e\x51\xd5\x2c\x79\x01\xe3\x87\xff\x1b\x60\xac\x98\xe9\x29\x68\x42\x1a\xe5\x11\xbb\x5d\x0b\x50\x3c\xbb\x12\x55\x6c\xd6\x5b\x56\xec\xe1\x75\xf2\xf2\xff\x4f\xeb\x24\xd0\xc3\x5f\x5a\x29\x8e\x98\xf8\xc2\x3a\x09\x95\xfd\x1f\x58\x29\xa5\x3a\xe2\x71\x6b\xe8\xbe\x32\xa9\x16\xf7\x89\x18\xba\xdb\x21\x9b\x96\x13\x43\xc7\xcd\x6f\x63\x73\x88\x14\xde\x5e\xf2\x9b\xc4\xc0\x55\xba\x4c\x8c\xed\x44\xd2\xb0\xd3\xab\x17\xe3\xb5\x62\xdc\x15\xb3\x0c\xa4\x2d\x39\x99\x96\x2c\xe4\xdf\x87\xe2\x0e\x36\x4f\xb0\x32\x5a\xe6\xd8\xb3\x95\x51\x44\x93\xe8\xb6\xbb\xec\xcf\x5f\x2c\xc4\x8b\x13\x93\xc6\x31\xe1\x3d\x16\xdd\x8e\x28\x18\x7f\x25\x6a\xd1\xe8\xfd\xbd\x48\xc7\xed\x32\x5b\x39\x45\xbe\xe1\x89\x44\x17\x95\x8d\xcc\x66\x6a\x9d\x9e\x2d\xd1\x4d\xe5\x93\xf4\x01\xb5\x4a\x83\x52\x17\x5c\xe3\x93\x9c\x3c\x91\xd3\x38\x7e\xd0\x5f\x90\x4f\x12\x9e\xc8\x43\xa1\x59\x9e\x18\xa7\xa4\xf0\xa6\xcb\xef\xeb\x36\x09\xae\x1a\x74\xdf\x18\xe4\xf0\xd4\xb9\x10\x08\x39\x87\xdf\xa5\x3d\x05\xff\x08\x4e\x14\x78\x1b\x8f\xfb\x17\x72\x32\x8d\x63\x37\x95\x43\x8a\xb9\x6b\xd4\x87\x2d\x39\x6c\xba\x33\x1e\xb0\xcc\xff\x5d\xee\x76\xdd\x3f\x9c\xc3\x85\x9c\xb7\x86\x07\xfa\x37\x0c\xf3\xe1\xbd\x2c\xfa\x6c\xc7\xfc\x5c\x56\xa3\x32\xfe\x22\xd9\x64\x5a\xbc\xfd\x2a\x59\xb7\xfb\x8b\x8c\xe3\xe1\xed\xc9\xb0\x48\x26\x43\x38\x1a\xd0\xbb\x03\xf8\xcd\x79\x1e\xf8\xe4\x88\xc2\x9f\x0e\x22\x21\x01\xb6\x85\xcf\x8c\x1d\xd6\x30\x19\xe4\x5f\xe5\x92\xf0\xab\x1d\xf8\x6f\xf6\xe7\x4f\x3b\xfa\x10\x47\xb2\x05\x00\xbf\xca\xf1\x2f\xb2\xba\x99\xcb\x38\x2f\xbb\xdd\x20\x79\xfe\xef\x3a\x2e\x18\xcd\x64\xe5\xea\x70\x5d\x6a\x2d\x5c\x64\x5a\xcb\xbd\x79\x25\xf3\x44\x4c\x49\x4a\xc1\x32\xb6\xb8\xa6\xf6\x82\x2e\x61\xd5\xb8\xdb\x67\xee\x52\x36\x4e\x32\x9a\x34\x65\x6c\x99\xbf\xcc\x0d\x25\x44\x88\xa8\x5b\x2f\xef\x68\xa5\x6d\xaa\xc8\xf7\xf3\xdc\x71\x45\x92\x5f\xc6\xc6\x91\x15\x44\x96\xda\xb6\xb8\x26\x02\xc7\x9a\xc2\x0c\xc2\x05\x3e\x15\x99\xd3\x6c\x3f\x53\xb8\x00\x96\xe6\x29\x09\xb0\xb4\x98\xd2\x61\x7b\xfd\x45\x75\x5e\x19\x55\x0c\x43\xb2\xe1\xfe\x69\xce\x19\x05\xcd\x06\x23\x5d\x86\x89\xd4\xbd\x1e\xc5\x43\xa9\x9c\x4a\x3d\x1d\xed\xc5\xfe\xb1\x78\x07\x94\xde\x8b\x7e\x52\x86\x36\x2f\x46\x26\x74\x85\x6e\x0f\x71\xb7\xb0\x37\x53\xbc\x20\x5c\x17\xb1\xcb\x4b\x88\xe9\xe6\x5c\xa3\x41\x4e\x05\x5a\xfa\x6b\x6d\xa1\x8b\x22\x59\x5b\x37\x42\x30\xe0\x83\x3d\xd9\xe8\x42\xcb\xe1\x9a\x31\x54\x2c\x8a\x6b\x56\xba\x2d\xec\x07\x0e\x97\x96\xb0\x1f\x80\x66\x65\x50\xb7\xbb\x7a\x24\x7b\x3d\xca\x2b\x4e\x56\xce\xd6\xdb\x9e\xbf\x45\xe4\xd8\xc2\x12\xd0\xd0\x3d\x00\xd7\x63\xa8\x16\x2e\x6a\xe8\x4e\x57\xad\x54\x4d\x41\xd9\xb5\x63\xeb\x5a\x6a\xb6\xf5\x87\x61\x22\x34\xf8\x47\xe7\xa9\xd0\x82\x02\xea\xb3\xe4\xb2\x35\x21\x04\x22\x3b\x58\xbe\x32\x23\x5d\x9c\x4a\x17\xa0\x09\x2d\x39\x2a\x7e\x8c\xfe\x6b\x2d\xd8\x53\xab\x18\xbd\x96\xa5\x1f\x1a\x6e\x5c\xc0\x59\xa4\xfb\xde\x3d\x56\x7a\xf5\x30\x35\x69\xdb\xf8\x5a\x8c\xde\x42\xf6\x38\x36\xd5\x48\x0f\x21\x39\xaf\x03\xed\xbd\xe0\xd7\x5f\x59\x71\xa5\x94\x3f\xc4\xdc\x4b\x5f\x64\xb6\x96\xf1\x7e\x12\x31\x34\x41\xb3\xae\xb3\x62\x9c\xee\xa9\xda\xb1\x4a\x31\xdb\x37\xb7\xe9\xda\xba\xb4\xc7\x29\xdb\xec\xce\xb8\xae\x2d\xbb\xc4\x2f\x8d\xec\x6e\x11\x26\x33\xbb\x74\xde\x85\x21\x26\xa9\x7d\x7d\x58\x77\x79\xdf\x5b\x42\xf6\x7b\xcb\xda\x79\x2c\x96\x9f\x2d\x66\xbf\xb7\x2d\xb9\xa5\x3a\xfb\x5c\x31\xfb\xbd\xad\x35\x5f\x22\xc9\xb4\x83\x15\x4f\x57\x6d\xeb\x76\xe6\x16\xab\x45\x15\xfd\xb5\x58\x73\x2c\xfc\xee\xcd\x8b\x13\x9e\xea\xd9\xc5\xeb\x54\xa7\xab\x36\x7f\xad\xb6\x69\x6f\x94\x6a\x2c\xab\xc6\x57\x37\x83\xa9\x9c\xa7\x7a\x7e\x5f\xab\xeb\x8c\xeb\x47\xf2\x6a\x5f\x59\x58\xf5\x53\x29\xfd\x2c\x82\xfb\xf4\x6e\x17\xbd\xe1\xe9\xcc\xbc\xc2\xfb\x1b\x2c\x01\x59\x7c\xb2\xf8\x63\xbe\x99\x59\x14\xe9\xbe\x9e\xa0\xf7\xdc\xc1\x3c\x27\xad\x5f\x30\x60\xdb\x67\x0c\x46\xdb\xbe\x15\xb1\x31\x73\x28\x42\x7b\x69\x58\x71\x7d\x5e\xce\x7f\xc7\x14\x47\x6f\xf5\xaa\x7e\x1f\xd5\x6e\x0f\xa9\x73\x0c\x40\xb4\x97\x2c\xc7\xf6\x03\x33\x04\xa3\xe9\x22\xcb\x8f\xfe\x85\xe5\x95\x82\x03\x50\xfb\x1c\x95\xbe\xab\xf0\xd0\xdb\x68\x52\x3d\xf2\x2a\x0e\x7f\x3c\x87\x39\xe7\xeb\x97\xff\xc7\xfa\xdc\x92\xcd\x90\x6d\x6e\xbf\xff\xaf\x19\x0e\xff\x68\xb8\x3c\x78\x41\xdb\x46\xd7\x42\xf6\x70\x3b\x20\xe7\xab\xd9\x8a\x9d\xf9\x58\x6b\xe2\x64\x2c\x3e\x78\x92\xd1\xa2\x75\x7b\x15\x86\x73\xe4\xf6\x7f\xff\x95\x7d\x73\x1b\xa2\xa8\x0c\xeb\x7c\xfb\xaf\xec\x9b\x5b\x98\x54\xb5\x49\x5b\x54\x0f\x7a\x2e\x67\x6a\xce\xdf\xbd\x79\xf6\x40\xad\xd6\x4a\xba\xeb\x82\xca\x0a\xfe\xf1\xdd\xe0\xf6\xb9\x80\xe8\xbf\xaa\xb5\xfe\xe3\xdb\x7b\x98\x98\xd4\x12\xef\x7c\x77\xfb\x1c\xa2\x5b\xf5\xb4\x07\x98\x11\xea\x89\x03\x9b\xb1\x57\x4b\xfb\xfe\x3e\x66\x9c\xd4\x13\x1f\x62\xe2\x34\x72\x27\xee\x7a\xdf\x9c\x1e\xaf\x77\xaa\xdf\x39\x85\x77\x3e\x49\xaa\x99\xe5\x2c\x8b\x00\x7c\x4b\x7b\x10\x34\x30\x04\x46\x6c\x60\x25\x79\x45\x2a\x36\xce\x8a\x4d\xa6\xa3\x65\xa1\x37\xad\xc7\x5b\xb2\xc4\x8b\xa7\x5c\xe2\xd8\x55\x5d\x30\xc5\x96\x91\x9c\x4c\xa3\x04\x29\x17\xa8\xd4\x60\xea\x7a\x15\x2c\xf5\xd0\x09\x41\xc7\xa8\xf3\x54\xcf\x4e\x8e\x43\x47\x12\xfc\x5c\x44\xd4\x40\x4a\xe8\x97\x93\xe3\x57\xfd\x22\x60\x06\x9a\x05\xfa\xe0\x17\x0b\x4d\x38\xed\x45\x2c\xea\xe1\xd4\x3a\x55\x1e\x06\x72\x52\xfe\x12\x88\x38\xa2\xb9\x58\x10\x5d\x12\xd5\x81\x47\x8a\xfe\x23\xa2\xa3\xa3\x61\xd7\xdd\xfb\x6c\x3b\x12\xa4\xcc\xa8\x4d\xef\x31\x72\x34\x44\x1f\x84\xa2\xc0\x38\xa2\xe3\x68\x1c\x25\xb6\xd2\x9e\x2e\x6c\x36\x2a\x0b\x6c\xae\xc3\x6d\xbb\xde\x44\x21\x63\x93\x69\x3e\xd7\x55\xd1\x7a\x76\x40\x73\x53\x2b\xe6\xef\xaf\x59\x6c\x96\x0b\xb1\x5c\xf2\x79\x62\x40\x73\x0b\x13\x3e\xc7\x70\x70\xf5\xcc\x81\x9f\xcf\xa1\xd6\x14\x16\xd8\x97\x45\x87\x62\x78\x95\x03\x69\x26\xb9\x4b\x45\x1b\x35\x05\x5f\xce\xc6\x3c\x16\x33\x5c\xad\xa3\x6e\xde\xea\x49\x35\x1e\xc7\xde\x12\xd7\x31\x1c\x17\x9a\xcd\x35\x5c\xed\xaf\x6b\x0f\x8c\x4a\xe5\xd5\x28\x5c\x18\x86\xce\x81\xcd\x63\x87\x55\x1b\x13\xd6\x45\xa1\x5d\xd7\xf4\x4f\x4f\x1f\xdc\x7b\xf5\xe0\xd1\x8b\xd3\x53\x5a\x99\xa5\x1b\x5d\xc4\x1f\xa8\xdc\x43\x99\x71\xf3\x56\xac\xb8\xda\x98\xce\x45\xea\x42\x02\x9d\x71\x2e\x3b\xe1\x10\xaa\xd0\xf1\xe7\xad\x15\xcc\x96\x3c\xd5\x5f\xa8\x02\x1d\x61\x35\xbb\xd1\x70\xad\xd9\xb9\x2e\xfb\x74\x4f\x7b\x4f\x85\x33\xcd\x18\x2b\xfb\x12\xb6\x78\x99\x42\x0c\xb8\xe0\x6c\x2e\xeb\x8d\xde\xed\xba\x67\x96\xd6\xdd\x2f\x74\xa6\x2b\x35\x41\xb3\x8a\x4a\x30\xe2\x33\x8d\x49\x9e\x33\xe6\xb5\x40\xc5\x67\xba\xca\x09\xd4\x72\x35\x72\x78\x4e\xde\x32\xe9\x79\x0b\x6a\xbf\x46\x53\x3c\xdf\x85\x38\x26\xb5\xde\x51\x68\x2f\x51\x05\x6a\x1c\x93\x6b\xcd\xaa\x29\x4e\x16\x70\xa2\xe1\x58\xb3\xc9\x14\x1e\x69\xd6\x1d\xc2\x47\xcd\x8e\x86\x25\x64\x4f\xed\x64\x3d\xd2\x71\x7c\xa2\xe3\x98\xb8\x2c\x27\x21\x42\xfa\xf8\x58\xb3\x13\x1d\x44\x87\xc7\x9a\x26\x58\x1a\x8e\x75\x11\x54\xed\x83\x26\x55\x7b\x10\xfb\x8a\xd8\xf7\x91\x0e\xbe\x18\xf7\x34\x39\xd5\x74\x64\xab\x1e\x8c\x4a\x99\x6b\x51\xc7\x88\x8f\x1c\xff\x7c\xa2\xd9\xb1\xef\xeb\xa8\xd7\xfb\xa8\xef\xf2\x11\x3d\xc1\x9e\x4d\x3e\xea\x69\x5f\x6f\x24\xa1\x23\xd7\x81\x4a\xf1\xfc\x44\xbb\x30\xd9\xae\xef\xd5\xe5\x2e\x16\x16\x22\xac\x0e\x93\x40\x7e\x56\xd2\x7c\x54\x2d\x97\xf9\xdc\xae\x98\x6b\xbb\x62\xda\x8a\x35\x20\x0c\xcd\x6a\xec\xca\xb8\xd6\x65\xec\xea\xfa\x62\xb9\xae\x2d\x96\xfd\xa5\x72\xad\x1b\xae\x2d\x39\xa9\x39\xb8\x5c\xea\x8a\x67\xed\x62\x23\x99\x09\xd7\xaa\xeb\xf4\x86\xf1\xfc\xb2\x8a\x95\xf4\x46\xd6\x22\xc8\xfb\x32\xd5\xb8\x43\x65\xe1\x2a\x02\x78\x60\xe7\x10\xf7\xe2\x6b\xcd\x1e\x68\x78\x8b\xbf\x6f\xf0\xf7\x05\xfe\xbe\xc2\xdf\x67\xf8\xfb\xce\xfe\xe2\x42\xbb\xa5\xd9\xb5\xec\xaf\xb9\x5e\x28\xbd\xb2\xc4\xf7\x6e\xb7\xcd\xe1\xa1\x66\xb7\x74\x5f\xaa\xeb\xdd\xee\x96\xee\xaf\xd4\xa7\x57\xe1\x31\x0b\x4f\x2a\x3c\x5c\xf3\xb3\x4b\x61\xf0\x6d\x9f\x1e\xb7\xb8\xc4\x1e\x8c\xb4\x7f\xee\xf6\x05\xf1\xd8\xf2\xa5\x66\xe1\x9b\x0b\x78\xa4\xd9\x36\x98\xf7\xb6\x44\x52\x3b\x2c\xa0\x39\x1a\xe2\x3a\xd8\x97\xb5\x55\x44\x0c\xc3\x91\xbc\xbb\xaf\x29\xe8\xf5\x28\x9f\xc8\xa3\x61\x43\x55\x70\xec\xa3\x1f\xda\x26\xfd\xdc\x51\x8c\x17\x54\xac\xde\xdd\xee\x91\xde\xed\xee\x69\xf2\x41\xd3\x1c\x8c\x30\x4b\x9e\x44\x67\x8e\x2d\x89\xc0\x3f\x24\xdd\x01\x70\x79\x95\x6c\x73\x48\xf5\xf9\x55\x32\x99\x42\x71\x75\x5b\x14\x1e\x33\xfb\x59\xc9\xe4\xb5\x86\x74\x3e\x7f\x21\x32\xc3\x25\xd7\xc9\x5b\x0d\x4a\xce\x78\xf2\x46\x83\x5a\x2c\x92\x17\x1a\x9c\xdb\x5c\x91\xe1\x55\x48\xb9\xb7\x5c\x86\xc4\x2c\x79\xa6\x81\xaf\x84\x49\xde\x69\x38\x13\x72\xde\xe4\x77\xf7\xb0\xbb\x0f\x1b\xd5\xf7\x99\x43\xd4\xb8\xca\x9d\x83\x39\xcc\xae\xe7\xfb\x6c\x56\x74\x3b\xca\x61\x76\x31\x17\xfa\xeb\x1a\xc0\xac\xad\xd5\x6f\x56\x69\x76\xd9\x62\xf4\x39\xc8\xe1\x42\x1b\xd1\x08\x0d\xe3\xd6\x42\x7f\x30\x18\x7e\xf3\xd0\xef\xba\x5b\x9a\x82\xac\x5c\xd2\xe4\xe2\x9d\x56\xdf\xff\x31\xfc\x66\xc8\x7f\x2a\xa3\x96\xc7\x31\x91\x47\xcc\x4c\x06\x53\x20\xda\x3e\x0c\xa7\xde\x79\xe3\xe8\x08\x74\x8f\xd9\xcc\x14\x26\x12\xf4\x34\x87\xf5\x32\x35\x76\x67\x54\xe6\x57\xf3\x25\x4f\x33\x6e\x67\xce\xc9\xf7\xed\xd3\x66\x5d\xef\xec\xde\x06\x38\x7a\xa9\xe9\xed\x21\xff\x36\xcf\xe1\xef\xa6\x64\xf2\x00\x61\xe9\x42\x96\x3b\x4a\x43\xf7\x8d\x7a\xb7\x5e\x87\xdb\x5c\x18\x43\x52\xb7\x92\x52\xdc\x05\x09\xc5\x85\x5f\x7a\xea\x9c\x3c\xef\x37\x49\x92\x5a\x60\xf3\xcf\x7c\x32\xde\x5b\x80\x71\x70\x9e\x42\x96\xbb\x60\x92\x82\xe5\x53\x30\xa4\x08\xd3\xf8\x9c\xad\x95\xcc\x38\x53\x60\x2c\xf5\xfc\x51\xa8\x0c\x17\x80\x73\x4f\x30\xca\x12\xbb\x2d\xb1\xb8\x56\x3c\xcb\xd2\x73\xee\xbc\x5f\xfd\x0b\xc8\x74\xe5\x53\xec\x53\x2d\x66\xb0\x73\xea\x2a\x13\xc0\x89\x62\x7c\x6e\x7c\x86\x85\x58\xf2\x57\x45\x15\xe1\x0d\x96\x42\xf2\x57\x95\xdc\xe5\x3b\xcc\xd4\x72\xb3\x92\xd5\x8f\xd5\x14\xc8\x4c\x3a\xbb\x4c\x82\x59\xc9\xec\x32\xcc\xb9\xcf\x69\x9f\xc1\x82\x25\x24\xcc\xb9\xbb\x60\xbb\xdc\x05\x86\x16\x80\xcd\xe1\x89\x66\x93\x28\x3d\xe7\x11\x44\xe9\xc6\x5c\x28\x2d\x3e\x79\x67\xa7\xc8\x5f\x99\x71\x54\xdc\xcb\x14\x12\xf0\x6a\x26\x88\xb8\x49\xcf\xed\xdf\xc7\xb5\xd0\x3c\x8b\x20\x5a\x68\xb5\x8a\x20\xba\x50\x99\x89\x20\x12\x8b\xa3\x95\x9a\x8b\x85\xe0\xf3\xa3\x4c\xc8\x19\x77\x69\x1b\xb9\x97\xba\x4c\x33\x53\xe4\xb5\xef\x6a\x16\xfa\xb0\x4a\x3f\x1e\x2d\x94\xbe\x4e\xf5\x3c\x73\x37\x43\x7d\xbc\x39\x6a\x76\x54\xf3\x05\xd7\xdc\x5d\x05\x6e\xf4\xcd\x11\xda\xa1\xf9\xd0\x74\x47\x29\xc6\xa6\x9b\xc2\x27\xcd\x90\xed\xd9\x97\xda\x10\x3a\x6e\x28\x14\x0c\x70\x76\x9b\xac\x32\xc1\x77\x46\x8b\x39\x97\x86\xde\x16\xee\x62\xcd\x52\xc4\x52\x04\xbe\xb3\xfb\xbd\xb8\x33\xa4\x7e\x37\x6e\x94\x46\x15\xb5\x82\x2e\x0d\x2b\x0a\x17\x77\x34\x4e\xb5\x34\xdb\x3d\x63\xb4\x38\xdb\x18\x4e\xa2\x0b\xcd\x17\x11\x68\x8b\x37\x64\xdf\xbe\x50\x38\x98\x65\x6b\x9f\x12\x97\xcd\xa9\x90\x66\x6a\x99\x78\x4b\x93\x99\x5a\x8e\xcb\xc7\x92\xf7\x4d\x1c\xdb\x6e\xf1\xbe\x9d\x2c\x5b\x5c\x65\x96\x78\xb5\xec\x6b\x62\xdb\xb2\x0f\xe3\xf0\x50\x15\x02\x8c\xcb\x92\x69\x66\xf3\xda\xbf\xb1\xfb\xab\xe4\xfb\x8f\x5a\x03\xb8\x87\x5c\x23\xb8\x89\x2c\xba\xb5\x7d\x54\xda\xc0\x3a\x35\x17\xf8\x3d\xba\x1d\x31\xc6\x64\x3f\x24\x04\x55\xea\x80\x8e\xcb\x44\x9b\xab\x57\xbe\x16\xb7\x1e\x18\xa6\x83\x77\x6c\x58\x3d\x1e\x72\x4d\x7d\xbe\x0c\xcb\x00\x79\x61\x4e\xc7\x16\x43\x27\x85\x9b\x48\x09\x2e\xe4\x4b\xc3\x4b\x1c\xbb\xee\x63\xa2\x7d\xc8\x73\x42\xf7\xb1\x6b\x77\x90\xc3\xfb\xcf\x2d\xb4\x2d\x5e\x33\x93\xec\xe3\x38\x10\xe1\xae\xaf\xc9\x74\x94\x7a\xdf\x3c\xe4\xba\x5b\x64\x28\x96\x00\xc0\x36\xbc\xcb\xb5\xa4\x71\xec\xcb\x84\xed\xc8\xa2\x5e\xc0\xf4\x44\xd2\xbe\x51\x4f\x5e\xbe\x0d\xfc\xbf\x2f\xec\x5f\x75\xa5\xb0\x85\x2b\x8b\x7a\xba\x9e\x43\x55\x72\xb8\x3b\x83\x58\xd4\x53\x14\xba\x03\x86\x8c\x7d\xf8\x96\xf1\xd9\x46\xf3\x88\x42\xb9\x1b\x94\xba\x14\x9c\xa5\x5e\x50\x30\xea\xd8\x23\x56\xf3\x74\xde\x72\x8a\x36\x0a\xf9\x10\x8e\x76\x10\x6f\xf8\xf9\xa3\x8f\x6b\x12\x91\xff\xde\x8d\xfe\xfa\x2b\xfb\x86\x12\xbc\xe8\x88\x32\x32\xf9\xef\xd1\xf4\x1b\x1a\x95\xc1\xc3\xf9\x78\xce\xf7\xc1\x35\xf9\x76\x4a\x13\x74\xdb\xf2\x54\x4a\xb2\xc7\xb0\xbb\xeb\x7f\x0c\x44\x11\x58\x98\x59\x52\x93\xd0\xa3\x1f\x7f\xf8\x8e\x7f\x4f\xf3\x3c\x69\xce\x1b\xdd\x36\xc7\x51\x53\xa5\xec\xb7\x43\xb7\x79\x0e\x4f\x5b\xb5\x99\xed\x4a\xca\x9a\xef\xe1\x3c\x35\x29\x28\xbb\xf4\x78\x3a\xe7\x3a\x1b\xe1\xf4\x04\x55\x07\x4e\xa1\x3f\x65\xd5\x24\x7a\xe0\xd1\xf4\x5b\x8b\xa6\x9d\xa5\x89\x70\x57\xd3\xbe\x7c\xf1\xd4\x98\xb5\x8f\xbe\x85\x76\x26\x7d\x8b\x4b\xc3\xca\x73\x6f\x88\xd8\xec\xe6\xc2\x70\x9e\xb3\x90\xba\x4e\xb3\xec\x5a\xe9\xb9\x4d\x1d\xa9\xfe\xbd\x2a\x0e\x66\xd1\xfd\x34\x13\xb3\x4e\xd4\x3b\x33\x2a\x25\x69\x2f\x4a\xa2\xde\xcc\x71\xe2\x78\x81\x06\x23\x19\x33\xfd\xb3\x34\xe3\xef\xde\xbc\xc0\xfb\xd8\x36\x7a\x09\x59\x1c\x77\x6f\xff\x37\x99\xa4\x47\x9f\xa6\xf6\xe7\xaf\xf9\x5f\xbd\xbf\x8e\xfe\xea\x4f\xbf\x49\xe8\xf8\xaf\xdb\x7f\xdd\x0e\x48\x77\x53\xbf\x4d\xa0\x14\x2f\x8e\x2b\x02\xca\xbf\x6e\xf7\x1c\x5a\xeb\x59\x1c\xc1\xab\x48\xeb\x76\xcf\xa1\x23\x93\x93\x0c\x36\x34\xd9\x20\x85\x2e\xdc\xe5\x4f\xa6\xef\xee\xba\xaf\x93\x2f\xb0\xd6\x64\x09\xe8\x8a\x9f\xae\xb2\xe2\xe1\x84\x6b\x91\x2e\xc5\x27\xae\x29\x7a\x8e\x8a\xbe\x71\x6c\x1b\x33\xe1\x09\x44\x5f\x49\xbb\x36\x6e\xd0\x0e\x6e\x76\x91\xca\xf3\x66\x78\x72\x11\xc7\xdf\xd9\xbd\xd3\xc7\x7c\x68\x52\x17\xc7\x04\x6f\x7f\x43\xeb\xb9\x4d\xb6\xdb\x89\x82\x8e\x79\xf7\xe6\x45\x1c\x0f\x7c\xfe\x22\xa9\x94\x99\x59\xaa\x22\x89\x28\x2d\x5c\xea\xce\xb9\xb9\xb7\x5c\xbe\xf1\x79\x9f\xba\x35\x13\x09\xd9\x11\xe3\xbd\x7d\xe7\xd0\x4f\xc5\x1e\xca\x8c\x49\x95\xfe\x0b\x51\x1c\xfe\x92\x51\xc3\x78\x1b\xa3\xe0\x56\x44\x77\x49\x44\x81\x5b\xdc\x67\xb4\x58\x11\xe7\x16\x6d\x34\xba\x80\x35\xee\xfe\x03\xb9\x9f\x4d\xf7\x86\x94\x7a\xc5\xad\xc2\xfb\x62\x9f\xe8\xa2\x6e\x4e\x7f\x66\x83\x60\xe7\x64\xbf\xb2\x28\xe3\xe6\xc8\x61\x0a\x74\x20\x1c\x63\xa1\xb1\xfd\x49\x26\xd3\xe2\x6a\x81\x89\x9c\xd2\xa4\xf8\xd2\x8b\xa0\x13\xf5\x64\x22\xd1\x78\x49\xd1\x44\xe5\x44\xf4\x5b\xa1\x45\xa8\xc3\x18\xe8\x98\x98\x9a\x34\x29\xc9\xca\xb7\xe8\x52\x12\x19\xfe\x11\xd5\x31\xf5\x0f\xe3\x72\x8e\x92\xf2\xf1\x2d\xff\x68\xc0\x4d\x6c\x12\x66\xd8\xbf\xdb\x4f\x45\x1a\xe6\xf3\x7b\x3c\xd1\x05\x69\x07\x9e\xba\x4d\x44\xde\x74\xc6\x0a\x73\x5e\x38\xd2\x5e\xa5\x4b\x31\x4f\x0d\xda\x21\x6f\xb2\x51\x57\xef\x76\x9a\x48\x5f\x3f\x1d\x1b\x22\x69\xc2\xc9\x7d\x4d\x22\x8f\x07\x3a\x8b\x54\x2c\xf9\xbc\x73\x2d\xcc\x45\xc7\x65\xc3\x9b\xc4\x2d\xa4\x42\x57\x43\xed\xe0\xae\x12\x0b\xd4\x36\x5e\xda\x8e\x91\x72\x14\x05\xe1\x1c\x63\x73\x5c\xff\xe9\x99\xd2\x35\xcf\x19\x61\xe9\x9c\x5a\xb3\x98\xc5\xd2\x7b\x06\xa2\x47\x0f\x8e\x5f\xbd\xba\x77\xff\xf8\xcd\xdb\x47\x0f\x23\x94\x0d\x8b\x20\x23\xb5\xb5\xa1\x25\x7f\xb5\x36\x57\xd3\x2b\x6e\xae\x95\xbe\x74\x64\xad\xad\x07\x7b\x57\x96\x76\x85\xc3\x06\xdd\x33\x1a\x89\xfc\x97\x8e\x5a\x74\xa2\x5e\xb1\x7f\x7b\xd1\x2a\xeb\xf0\x8f\x33\xce\xe7\x7c\x1e\x8d\x8a\x74\x6c\xe5\xa5\xe3\x0a\x30\x50\x73\xeb\x17\x0a\xd8\x37\xfe\xb9\x51\xe5\x70\x90\x40\x70\x7d\x5b\xb0\xf7\x1a\xd6\x8c\xb8\x8b\xc6\x1e\x68\x6e\x49\x50\x91\x2e\xb3\xdd\xee\x93\x26\x4b\x8a\x9e\x4d\x1f\x33\xbd\x78\x80\x1b\xc0\x72\x14\xe3\x05\xe2\x12\xd2\x4c\x2f\x2e\x19\x5a\xc7\x31\x51\x13\xf7\xd9\xad\x71\xfb\x79\xca\xd6\x28\xbb\xb7\xdb\xc9\x4f\x8c\xfb\x88\xd8\x22\x8e\x2b\x98\x40\x35\x95\x14\xd5\x78\x22\x75\xde\xc0\x73\x83\x95\x1d\x3f\x2e\x8e\x27\x3e\xb5\xab\xbd\xd1\x9a\xbf\x85\xc0\x93\x1d\x85\xc2\x7a\x1f\x00\x74\xb7\x23\xa2\x99\xc8\xba\xdd\xfd\x8c\x50\xdf\x97\x18\x4d\x51\xd4\x92\x1a\x3b\xb7\x94\xa3\x59\x78\x7c\xc8\xf0\x86\x2b\xd6\xac\x05\x25\x0a\xbc\x4d\xf4\x6a\xfa\x4a\x3e\x54\xd7\x72\xa9\xd2\xf9\x6b\xad\xce\x35\xcf\xb2\x38\x16\xfd\x74\x3e\x7f\x74\xc5\x5d\x58\x4a\x2e\xb9\x93\x42\xe0\xd7\x08\xda\xca\xb4\x4a\x69\x6d\xc6\x77\xeb\x66\xd5\x1b\x4c\x29\x9f\xbe\xd8\x56\xbd\x0a\x74\x45\x4e\xe5\x8c\x2f\x31\x88\x28\x9a\x67\x94\xaf\x96\xf6\x45\xe3\xac\x86\x17\x91\x71\x9b\x59\xf4\x71\x03\x5b\x64\x6e\x39\xca\xb0\x5f\x69\xe5\x9e\x35\x17\x67\xc6\x45\x6e\xb0\x73\x2e\xe7\x44\x3b\x09\xc0\xef\x9a\x6d\xeb\x74\x4a\x12\xa5\xeb\xf5\x52\x38\xd2\xfd\xf6\xc7\xa3\xeb\xeb\x6b\xcb\xf8\xad\x8e\x36\x7a\xe9\x28\xe0\x79\x54\x91\x2e\xfe\xe1\x65\x98\xdd\xe6\x82\xa1\xb8\x66\x6b\x49\x4d\x8a\xc8\x89\x26\x1a\x89\x8c\x3b\x72\xe5\xb9\x86\x5f\x34\xdb\xa6\xf3\x74\x6d\xb8\x4e\x48\xab\xfa\xbc\x4e\x48\x55\x22\xc0\x3f\xd6\x95\x9b\x0a\xbd\xb0\x09\xad\x1b\x0e\x5a\x5d\x39\xa1\xd1\x63\xbc\x32\x96\x3c\xd7\xec\xa9\xa6\xf0\x5c\x53\x30\x21\x54\xa9\x6f\x24\x99\xb4\x52\x40\x7f\x6b\x8c\xd1\x3d\x9b\xf1\xb5\x89\x28\xb8\xd7\xda\xc8\xfc\x9e\x2a\x68\x45\x43\x77\xbb\x52\xa9\x58\x18\xe0\xf8\xc4\xe6\xbb\xb3\xbc\x28\xdf\x1f\x8b\x25\xaf\xe4\x5e\xaa\x33\xd4\x30\x26\xcd\x1a\xbd\x55\xcc\x38\x18\xc2\x24\xad\x2a\x52\x43\xc7\xe4\x0f\xec\xf2\x17\x27\x7f\x64\xb9\xc1\x8c\x1b\xb6\x31\x8b\xa3\x1f\x23\x8a\x72\x9c\x82\xa1\x69\x68\x34\xdb\x6a\xb5\x1b\x7a\xaf\x92\x7d\xad\x67\x62\xf2\x69\x15\xf8\xfe\x28\x9f\x34\x08\x9f\x7d\x23\x1d\x44\x30\x5e\x8f\xba\xb6\xad\xd4\xae\x9e\x2c\x15\x99\x53\xf0\xa7\x46\x32\x80\x3a\xaa\x4e\xa2\xdf\x4f\xde\x3c\x3e\x7a\x7b\xfc\xfc\xd1\xab\x08\xea\x78\x3a\x89\x7e\x3f\xaa\x7e\x5d\xa5\x1f\xfd\x2c\xbf\x08\x61\xd2\xa1\x7e\xf2\xb7\xaa\xf3\x7f\x66\x77\x06\x83\x38\x36\x77\xbf\x1d\x0c\xf2\x7c\xf4\x8b\x0e\x0c\x05\xdb\xce\xd4\x6a\xa5\x64\xb2\x75\x6b\x29\xd9\x83\x1d\x74\x2c\xc1\x73\x7b\xbd\x4c\x85\x84\xce\x37\xb7\xbf\x89\xf2\xbc\xaa\x81\x9e\x44\x0e\xc5\x47\x60\xc9\xcf\x08\x22\x5b\x73\x34\xad\x93\x8c\x65\x83\x13\x33\x65\xdb\xdc\xa3\xfc\xb2\x8e\xb5\x93\x1d\xad\x37\xf8\x6b\xa1\xf7\xf9\x2a\x96\xba\x8f\x96\x29\xe4\x77\x5d\xc4\x29\xf9\x55\xb3\x5f\x2a\x5a\xbf\xdf\xb4\x0b\x20\xf2\x19\x4c\x87\x58\xfd\xd9\xc2\x6f\x35\x3e\x27\x0e\x17\xfc\xd9\xca\xae\xfd\xe6\xbc\xab\x0a\xc8\x15\x4f\xa8\xa8\xf0\x17\x5a\x5f\x69\xe2\xb9\xb6\xe2\xb3\x5d\xb1\x8d\x4d\x5d\xad\xa6\x18\x49\x91\xd4\x77\x53\xe2\xab\x2d\x06\xed\xd9\x95\x69\x3d\x9d\x7e\x79\x2e\xa0\x0d\xba\x10\xb9\x56\x6a\x60\xe6\x65\xf0\xd4\xa2\x5d\x3e\xc5\x10\x4f\xa6\xef\x51\xe3\x6e\xf7\xab\x0e\xcf\x94\x18\xda\xe2\x6c\x5a\x03\x18\x2f\x00\xe3\x9e\x80\xb7\x03\xc6\x6d\x38\x74\x8e\x87\xb6\xda\x56\xda\x5d\xa9\xe1\x6b\x75\x21\xfc\x5c\x21\x4b\x95\x15\x2f\x95\xe6\x6a\x49\x50\x79\xff\x5c\x07\x28\x85\xd2\x3a\x19\xf1\x8a\x53\xad\x83\x51\x0d\x69\x39\x67\xa8\xa3\x1a\x55\xc2\x66\x4c\xa2\x8d\x5e\x46\x10\xb9\xa9\x42\x60\x5b\x84\x17\x41\x64\xbb\x10\x4d\x41\xb1\x49\xe4\x5b\xf7\x92\xd7\x20\xdd\x8c\xa6\x20\xd8\x24\xf2\xbc\x72\x04\xbe\xa6\xe6\xd2\xa9\x27\xb9\x3e\x17\xed\x94\x5c\xaa\xcd\xe6\xd0\x4d\xe4\x2e\x69\xaa\x90\x48\xb6\x61\x37\x7f\x28\x39\x2d\xa9\x9c\x08\xa2\x3a\x66\xf2\x09\x25\x3a\x8a\x20\x6a\x12\x13\x98\xd4\xa4\x65\x9c\x04\xb7\x86\xa9\x22\x88\xea\x88\xca\xe5\x79\xc3\xe7\x42\xf3\x99\xb1\xaf\x17\xc6\xac\xdd\x95\x22\xee\x39\x0b\x2f\x95\x3d\x1b\x41\x94\xa9\xd9\x25\x37\xaf\x53\x73\x11\xd5\xac\x69\x74\x1d\x61\x14\x87\x33\x77\xc6\x18\x2e\x86\x70\xb8\x48\xec\x00\x81\xab\xbd\x0d\x8d\x3f\x52\xf8\x44\x4f\xe9\x18\xad\xac\x97\xba\x5f\xd8\x96\x11\x33\xd1\x53\xc0\x8f\x49\xa5\x19\x3d\x75\x59\xed\x53\xfd\x64\xfa\x4c\x35\x95\x1a\x8c\xbb\xaf\x0f\xf3\x05\xad\x49\xb5\xa3\xa2\xde\xd1\x43\x2d\x7f\xb6\x3e\x1f\xd1\x49\x97\x41\x38\x2b\x01\x1a\x66\xd5\xbb\xd4\xd1\x3b\xea\xa0\x3b\x36\xda\xef\xa4\x95\x78\x61\x79\x29\x8c\xab\x74\x79\xf6\xbf\xa0\xcb\x20\x2b\x04\x20\x57\x85\xe8\x6e\xce\x17\xe9\x66\x69\xb2\xa0\xc7\x16\xd2\x70\x6d\x0f\x31\x65\xcf\xb5\xc0\x3a\x4b\x7e\xdd\xb9\xd0\x50\x30\xe7\xee\x3d\xcf\xb9\xaa\xb9\x16\x3b\x2d\x52\x75\x9c\xfb\x47\xfd\x98\x54\x2e\x86\x9b\x0c\x11\x13\xd3\xfe\x46\x2f\x6b\x77\xc2\x25\x86\x19\xc4\xd1\xc4\x30\xa3\x48\xad\xab\x60\x28\xf5\x78\x7c\x1c\x10\x3a\xab\x08\xa2\x2a\x9c\x53\x52\x2b\xb8\x5f\xa8\xe5\x6b\xb3\x82\x90\x17\x0f\x03\x7f\x25\xfb\xe4\x4f\xed\x09\xf5\x29\xc8\xbd\x58\x27\xfe\xce\xfb\x3d\x70\x06\x00\xb5\x07\x02\xa8\xc4\x97\xeb\x17\x56\x55\xc8\x87\x39\xab\xaa\x32\x96\x44\xa3\x4e\x8f\x8e\x0f\x54\xea\x64\xe1\x07\x6b\x1c\x15\x31\x8a\xa8\x64\xd2\x1d\x43\xbc\xef\xfa\x81\x17\xc3\xbb\xa7\x32\x62\x42\x0e\xb5\x39\x3f\xe7\xe6\x9d\x16\xad\x61\x8f\xdb\xe6\x0d\xd6\xf6\x68\xdf\xe8\xcf\x0b\x07\xf7\x55\x26\x5f\x41\x2c\x41\xe4\x43\x90\x34\x69\x9e\x6a\x7f\x2d\xf6\x6a\x73\x4f\xeb\xf8\x00\xcf\x38\x3f\xa4\xa0\x26\x1c\xf9\xb0\x75\x2b\x20\x31\xb0\xd1\x4b\xb4\xfa\xfc\x77\x48\xaf\xcf\x75\xa3\x7a\x9b\x75\x6b\x47\x74\x5b\x47\x00\x45\x6b\xd2\xf7\xc7\x9d\xa0\x8a\x71\x55\xd1\x99\x95\xfb\xdc\x6b\x64\x99\xc9\xb5\x6a\xe1\xa4\xf6\x15\xba\xd1\x03\x3c\x2f\xa2\x1e\xa9\x96\x1f\x47\x49\x27\xea\x55\x53\x30\x44\x34\xd4\x2a\x2d\x8d\xda\xc2\x05\x58\x4a\x31\x5d\xe9\x97\x50\xe4\x8b\x17\x98\x5b\x14\x53\xb9\x6f\x92\x7f\xe4\xb3\x8d\x51\xba\xb3\xda\x64\xa6\x73\xc6\x2b\x77\x98\xf7\xbd\x1b\x9a\x0f\xd1\xef\x39\x6f\x76\x20\xb8\x87\x25\x39\x4c\x01\x2f\x1f\x58\xa1\x9e\x41\xf6\x35\x4f\x33\x4b\x3c\x92\xf0\x88\xb5\x29\x85\x54\x53\x91\xe8\xc2\x5f\x88\x1a\x3c\x1b\xc4\x70\xcb\xcd\x9a\xa1\xb0\x0f\x75\x54\xa6\xe4\x20\x54\x3f\xc3\x5b\x35\x9a\xf2\xb6\xa0\xf1\xdc\x1a\x7b\x7c\x23\xfa\x15\xaa\x11\x9c\x84\xa1\x3d\xb2\x3b\xe5\x13\xe3\xfd\xa6\x52\xc5\x44\x05\xf0\x33\x55\x37\xc2\x91\xca\x5d\xae\xa9\x35\x91\x2d\xa8\xbc\x0c\xfa\x64\x8f\x23\x67\x46\x4d\x24\x54\xb3\x02\xc7\x9d\x50\x7c\xc3\x4b\x7f\x51\x75\xa1\xd8\x4c\x91\x5f\x35\x1d\x65\xaa\x8f\x56\x04\x4c\x2a\xc8\x94\x57\xf2\xb6\xa1\x0c\xdb\x3b\x45\x32\x55\xc3\xf4\xb9\x2d\xe3\xd6\x22\x53\xaa\x7c\x41\x42\x86\xa5\x98\x22\x32\x9f\x61\xa5\xed\x6b\xba\x5c\xb6\x55\x5f\x8d\x15\x63\x5c\xbd\xd9\x5a\xf3\xb4\xf5\x02\x82\x16\xe2\xd9\x54\xed\xb6\x78\xf0\x4c\xdb\x28\x96\x29\x58\xda\xdf\xd1\xa6\xe8\x3a\x5b\x2a\x77\x7d\x91\x62\x9b\x0a\xfc\xd7\xca\xdd\xda\xd3\x7e\x2e\x6c\xea\x3a\xac\x96\xdb\x14\x0b\xee\xa6\xa6\x41\x8a\x63\x83\xd4\x7b\xeb\x47\x16\xdd\xe7\xa9\xe6\xba\x13\x15\x61\x9c\xa9\x8b\x9e\x85\xd3\x74\xa1\xd8\x64\x8a\x1a\x46\xb8\x52\xec\xa2\xeb\x89\x17\x58\x29\x74\xcc\xb4\x1f\x22\xb4\x12\xff\x1a\xaf\xcb\x2b\xb5\xdb\x75\x57\x2a\x87\xad\x2d\xd7\xc6\x44\x5f\xf8\x48\x05\x2b\x17\x03\xa3\x14\x77\x99\x71\x04\x51\x62\x0a\xf7\xc9\x1b\xc5\x96\xbc\xbf\x4a\xd7\x70\xae\xf0\xe2\xb1\x55\xba\x8e\x28\x9c\x29\x74\x0f\xc5\x97\xaf\xba\x9a\xea\xdc\x76\xe9\xcc\x76\x69\x95\xae\xdb\x7a\x74\xa3\xfe\x4d\x07\xcf\x6b\xd4\xfb\x5c\xab\x89\xbb\x4b\xdd\xe1\xd1\xb7\xe9\x79\x44\xa7\x2c\xfa\xe4\x48\x85\x7b\x8a\x15\x12\xad\x4f\x28\xcb\xf2\x52\x97\x6b\x45\xe1\x44\xb1\xbd\xa2\x70\xac\x58\x74\x2f\xb4\x1a\x31\xb6\x6e\x89\x2a\x53\xf4\x2a\x27\x94\xc2\x23\xc5\xee\xa9\xf1\x7a\x5f\x29\x6c\xcf\x95\xd1\x9e\x57\xe1\x38\x2a\xa4\x7b\x51\xe2\x7c\x9d\x6d\xe2\xab\xcd\x72\x19\x25\x4d\x72\x8d\xec\x5d\xab\x52\x5a\x52\xa2\x23\x78\x29\xa3\xc9\x49\x88\xdd\x6a\x51\xca\x89\xa2\x74\x2c\x93\x63\x35\x5e\x13\x4e\x8b\x6b\xa1\x18\x23\x9a\xd9\x94\x76\xcf\x37\xe7\xd2\xc7\xf9\xb8\x02\x82\x44\xe7\xf0\x11\x87\xb8\xcd\x8b\xe3\xaa\xc5\x88\x2d\x80\x39\xea\x3d\x72\x33\x4a\x7b\xd1\x34\xca\x47\xf7\xd4\x6e\xc7\x0d\xd9\xbb\xb7\xbe\x72\x53\xef\x47\x55\xbb\x81\xd6\xdd\x01\xa1\x98\xea\x7b\x8c\x01\x1f\xd4\x9e\x19\x78\xe1\x97\xd2\x11\xb2\xc3\x29\x37\x18\x85\x8e\xd7\x7d\x4f\x4c\x0e\x97\xaa\x71\x31\xe2\x83\xfd\xba\xc4\x82\x74\x49\xcd\x61\x8a\xef\x5f\x04\x1b\x3d\x93\x33\xa5\xb5\x1b\x22\x91\x63\xd9\x8b\x3a\x78\x3f\x43\x2f\x12\xf2\x2a\x18\xfd\x54\x9b\x7e\x6d\x17\x28\xbc\x75\x1d\x10\x86\x6b\xbc\x74\x92\xc2\x1b\xd5\xf4\x79\x87\x17\xaa\x0d\x07\x96\x0c\x45\x1c\x93\xd7\xaa\x8f\xa5\xec\x72\xd9\xed\xde\xa8\xc9\x5b\x35\xb5\xcf\x34\x87\x57\x7b\x4d\x3c\xab\xd7\x57\x71\x27\x2d\x16\xcf\x2b\x35\xdd\xed\xcc\x24\xfa\xaf\xff\x2a\xca\x4d\x77\xbb\xd7\x6a\x62\xa7\x8f\x4e\x73\x78\xd7\x04\x14\x3a\xe6\x94\xeb\x4f\x8f\x39\xf9\x40\x24\x9d\x58\x22\x7c\x32\x9c\xd2\x84\x13\x59\x31\xe8\x0d\x41\x83\xbd\xe2\xd3\xc1\xb3\x18\x92\x8a\xe3\x0f\x24\x84\x4d\x41\x84\x98\xc3\x2d\xc5\x1a\xa4\x82\x3b\x29\x1b\x5b\xc0\x59\x8f\xa9\xf5\x9a\xcf\x03\xd7\xa4\x79\x66\x91\x3e\xcf\x47\xc4\xf4\xf9\xc7\xb5\xd2\x26\xab\x16\xab\x5b\xa9\xc0\x0c\x50\xb1\x0f\x0b\x58\xc3\x9c\x09\xee\x02\xa2\x8e\xef\x24\xce\xfa\x55\xd0\x94\x19\xe7\xf0\xd2\x4a\x23\x91\x19\x7b\x66\x81\xd4\xb2\x48\xde\x22\x3a\x0c\xc6\x99\x08\xd9\xb3\x25\x77\x37\x06\xbf\x50\x64\x46\xdd\xca\xcd\xd8\x00\x36\x6c\x63\x79\x0d\xef\x18\x3d\xda\xfc\x9c\x8d\xb2\x5e\x8f\x8a\x05\x21\x4b\xa6\xc6\x73\xf2\x81\xac\x99\x99\x64\x53\x84\xf0\x1a\x21\x3c\x27\x98\x40\xe3\x78\x59\x5f\xae\x81\x4a\xa8\xfa\x8e\x73\xd2\x1d\xd2\x3c\x65\xb3\xd2\xcf\x58\x69\xb2\x60\x29\x46\xfe\x1d\x75\xc9\x9a\x2d\xdc\xa7\x94\x52\xf4\x6b\x1f\x55\xbd\x8d\x0b\x1c\xb4\x64\xef\x14\x49\x61\x0e\x6b\xe7\x1e\x0f\x0a\x3b\xf0\x2f\xf4\x81\xe2\x7c\x1d\x32\x1f\xe1\xa4\x3b\x40\x53\x6f\x4a\xe1\xe1\xde\x52\x7e\xa9\x58\x77\x38\x0a\xde\xfa\x8f\x15\x1b\xc0\xdf\xca\x59\x37\xef\x63\xa1\xad\x1d\x45\xd2\xed\x3e\x56\xbd\x5e\x9e\x83\x4b\xac\x66\xb3\xb5\x0d\xf2\x7c\xf4\xb7\x9a\x3c\x54\x2d\x57\x9a\x22\x3d\x98\x83\xdb\x9f\x0b\xad\x56\xe4\x6f\x55\x0b\xc5\xec\x66\xfc\xce\x7e\x58\xbc\xfb\x0a\x9e\x28\xf8\xa4\xe0\x7d\x53\xc4\x86\x9e\x58\x71\xdc\x7d\xa9\xc2\x35\xa1\x43\x4f\xfc\x56\x06\xa6\xd1\x88\xa1\xbd\x53\x9f\x1d\xac\xc4\x01\xe5\x39\x18\xa2\x5b\x64\xf6\x32\x87\xa7\x4d\x14\xf8\xbb\x62\xb7\x89\x58\x5f\x28\xc9\x77\x62\xad\xe6\x3b\xb1\x4e\xe7\xb4\xff\x8d\x25\xaf\xb8\x33\x40\x0f\xc6\x2b\xf7\x39\x85\x3f\x2c\x2a\x0e\x86\x69\xf0\xdc\xbe\x65\xdc\x3c\x5b\xad\xf8\x5c\xa4\x86\xc3\x2f\x36\x05\xbd\x00\xca\xb4\x5f\x55\xe5\x22\xdd\xdf\xec\x8b\x57\x31\x3f\xb8\x48\xa5\xe4\x4b\xf8\xd3\xa6\x3d\x0c\x51\x53\x8d\x60\x03\xe0\xc2\xe2\x4b\x29\x9a\xa8\x8b\x8b\x86\x17\xba\xdd\x7a\x1e\x35\x70\x31\x31\xd3\x91\x97\xf7\xe2\x0b\x70\x42\xed\xd4\xb7\x32\xc5\x55\x2d\xbc\x40\xc7\x02\x50\xf5\x8c\x36\x19\x45\xad\x34\x07\x51\xff\xa4\xfa\x96\xcb\xf4\xe3\x20\xa6\x17\x45\xf0\x87\x2a\x8c\xec\x7a\xd1\xed\xdb\x51\xef\x0f\x85\x06\x76\x34\x1f\x3d\x57\x71\xfc\x8b\xda\xed\xc8\xf3\x3a\x2e\x6e\x84\xdc\x69\xb9\xba\x59\x8e\x28\x6f\x5e\xdd\x2c\xf1\xea\xe6\x60\x39\x24\x26\xbd\x9e\x11\xb5\x95\xd2\x1e\x87\xcf\x24\x8f\xcb\xa6\xa9\xa7\x9f\xc3\xcd\xfe\x34\x87\xfb\x8a\x18\x41\xc1\x88\xdc\xce\x62\xb5\x9b\x55\x90\xe6\x10\x6c\xcf\x91\x20\xfa\x55\xd1\xf1\xfd\x7a\xee\x5f\x55\x19\x4d\x5c\x0b\x74\xb4\x4b\xfe\x54\x71\xfc\xa7\xea\x4b\x75\xdd\xcc\xed\x52\x8b\x8c\xbf\xa9\x38\xee\xfe\xae\xc6\xe4\x93\x62\xe4\x89\xbb\xe4\xe7\x37\x45\xd1\xc2\xf2\x0e\x3c\x51\xf8\x30\xec\x2b\x19\x78\x68\x25\xe0\xbe\xb2\x68\xfb\x53\x6d\x4a\xec\xe6\x1b\x52\x9a\x74\xd5\x9e\x2a\x79\xb7\x6b\xe1\x74\x2b\x45\x77\x3b\xd5\x17\x2b\xdb\x8e\xf3\x54\xce\x76\x3b\x41\x84\xa0\xb6\x1c\xda\x27\x31\xc6\x2a\x73\x6d\x07\x14\xed\xdb\x49\x45\x42\x76\x8e\x49\xe4\x4c\xaa\x23\x5a\x33\x57\x7a\x88\xdc\x0b\x97\xfe\x0a\xa2\x4a\x36\xfa\x05\x8b\xab\x87\xa6\x76\xcd\x8f\xa3\xdb\xfd\xea\xad\x11\x9d\x15\xf7\x2d\x04\x2d\x0c\x68\x9e\x10\x0b\x29\x01\xfb\x20\x21\x91\x07\x67\x04\x4a\x40\x77\x48\x83\x58\x55\xc0\x4c\x40\x26\x60\x23\x60\x29\x60\x21\x60\x2d\x60\x2e\xe0\x42\x30\xdb\x42\xf2\x5c\x39\x8f\x9f\xe4\x17\x95\xc3\x95\xc0\xdb\x4e\x57\x82\x5d\xa0\x5d\x04\xdc\x08\xbb\xd5\x7d\x38\xb0\xe3\x33\x0c\x2a\xa8\x2d\x74\x7f\xe3\x67\xcf\x85\x69\x7e\x81\x73\x51\xc1\x13\x67\xa2\x42\xf3\x5d\x0b\x56\x5b\x75\xe7\x82\xc2\x3d\xc1\xae\x04\x51\x10\xfd\xbd\xe1\x1b\xfe\x52\xcc\xb4\x32\x69\x76\x19\x51\x38\x11\xec\x9e\x88\xe3\x7b\xc2\x1d\x51\xa3\x13\xb1\xdb\x91\x54\xec\xf1\xf1\xc0\x51\x36\x78\xed\x3c\x3a\xcf\x45\xdf\x99\x84\xa2\x4d\x0a\xff\x28\x0c\xa1\xa3\x99\x18\xd1\x2d\x67\x33\xd1\x5f\x48\x98\x09\xfb\x80\xe7\xa5\xc5\xd4\x16\xb7\x14\x28\xd6\x1d\x05\x33\x31\xde\x08\x42\x93\x4c\x30\xbf\xb1\x4c\x9e\x57\x5e\xb0\x66\xcb\x6d\x12\x9a\xc3\xb5\xcd\x5c\xed\xd4\xb9\x28\x37\x4e\x2a\x68\x9e\xdc\x08\xbf\x19\x96\x82\x59\x36\x4a\x34\xad\xb3\xdf\xf2\x8f\xe6\x95\x9a\x73\x12\x45\x14\xec\x56\xb9\x11\xb6\x64\x5f\x39\x90\x92\x85\x80\xed\xec\x22\xd5\xe9\xcc\x70\x8d\x11\x29\xf0\xa2\x8f\x7a\xb3\x0b\xe1\x34\x4c\xb6\x91\xa5\xc8\x69\x72\x26\xe2\xf8\x4c\x04\x11\xea\x98\xac\x05\x2b\x5f\x43\x38\x18\x98\x0b\xb6\x16\x28\xa4\x6c\xd4\x37\xf7\xf7\xbf\xac\x05\xd8\x51\xd0\xa4\xfe\x79\x55\x5c\x0f\x83\x5f\x71\x9d\x1d\x0b\x78\x24\xe0\xa3\x80\x53\x01\x1f\x04\xb3\x13\xb6\x4f\xf9\x6d\x17\x32\x31\x80\xc7\x9f\xeb\x43\x3e\xca\xec\xd4\x65\x0e\x6c\x8c\x53\x98\xd9\x99\x9e\x09\xc6\xc1\x4e\x03\x85\x4c\x30\x9e\xc3\xa5\xd8\x0f\x8c\x08\x72\x5f\x40\x55\x93\x3c\xf9\x68\xd4\xa5\x7c\xbf\x62\x1c\x21\xf7\x69\xbd\xfb\xe9\x3c\xc8\x34\x3a\x95\xc8\x20\x11\x1d\x71\x66\x40\x32\x5d\x48\x8c\x3d\x1c\x99\xe2\x84\x17\x49\xe8\x7b\xab\x90\x66\x86\x07\x82\x6d\x5b\xa3\x23\xa1\xdb\x94\x3f\xa9\x5e\x8b\x7d\xc2\xe2\x83\xdd\xe7\x37\x84\xbb\x78\x2c\x95\x4b\xdb\x59\x49\xeb\x73\x4f\x6d\x3c\x10\x7d\xbc\x13\xc5\xfb\xd2\x0c\xd0\x14\x0e\x3b\x46\x6d\xb7\x0a\x9b\x99\x1c\xde\xd6\xa1\x57\x12\xfd\x5b\x34\x66\x4b\xba\x43\x1f\x7c\xcb\xd8\xb3\xb6\x11\x2d\x29\xe4\x09\x01\xba\x8c\x25\x4e\xde\x14\x18\xe2\x85\x68\x50\x23\xaf\x04\x8b\x3c\x18\x23\x78\x26\x98\xc1\x88\x8b\xf0\x0e\x9f\x6c\x89\x5b\x21\xcd\x70\xfd\x58\x69\xf2\x4a\x50\x78\x28\xd8\xa9\x82\x97\x16\x61\x14\x33\x02\x8f\xed\x6b\xd8\x2e\xf0\x77\x15\xb5\xdc\x17\x78\xf7\xff\x82\x1b\xbc\x1b\xfc\x89\x40\x68\xc0\x27\xc1\x9e\x08\x78\xdf\x40\x35\x7f\x0b\x0a\x4f\x05\xeb\x76\xc9\x63\x11\xc7\x8f\x45\xf0\x8b\xb8\xc2\xfb\xaf\x54\x11\x9f\x0e\x13\x28\xfc\x2e\xd8\x03\x43\x5e\x09\x68\xdc\x0c\xdf\x25\xb7\xc8\x43\x41\xbb\x85\xd0\xe1\xa1\xa0\x14\xbf\xfc\xf0\x03\x63\xec\x29\x2f\x6f\x8d\xb7\xb9\xdf\x8b\x2a\x4f\x5e\x9c\x52\x1e\x34\x6f\x70\xbd\x08\x25\x5d\xa3\x85\xc5\xbe\x58\x10\x77\xa9\x7f\x1c\xdf\x96\x18\x6b\x03\xed\x1f\x6f\x3b\xf2\xcd\xb6\x58\xa3\x39\x0d\x7b\x58\x6e\xeb\x21\x85\x46\x24\x52\xd2\xb8\x75\xa4\xfe\x4a\x83\x99\x6d\x3d\x8a\x0e\xdb\xe6\x74\xf2\x42\x4c\x19\x87\x2e\x31\x4d\x55\x3a\x16\xac\xf1\x09\x76\x5b\xfc\x21\xd8\xef\x62\xb7\xeb\xbe\x57\x75\x86\xef\xa1\xf0\xe2\xc1\xbd\xe0\xf4\xae\x03\x94\xc2\xf3\x96\xad\x3d\x2a\xdc\xba\x5d\x68\xbe\x16\x9e\x0d\x4d\x1e\x2f\xb8\xb4\xbc\x0b\xcf\xe1\x17\xd1\x1e\x31\xa1\x2f\x95\x41\x57\x1e\xba\x2d\x9f\x83\x18\x1d\x6f\x1a\xe0\x3e\x3a\xf7\xe8\x43\xe3\x46\xf4\x10\x49\xc9\xc5\x5a\xdc\x70\x10\x6c\xc8\x58\x88\x57\x9a\xb2\xc1\x28\xb8\x3c\xfe\x9c\x8e\xfc\xe5\x25\x8e\x11\x65\x7a\x92\xf6\x7a\x53\x58\x30\x31\x5e\xf6\xd5\x65\xb2\xec\x2f\x52\xb1\x84\x35\x5b\x86\xc9\x82\x39\x3e\xa3\x6c\xf0\x82\x2d\xfd\xb9\x85\x87\xd2\x62\x4c\x2c\x0e\xbc\x83\x02\x4a\x1d\xd6\x49\x1c\x9b\xd4\x05\x02\xae\x24\xb2\xa1\x77\x7c\x58\x8c\x67\x4c\x25\xe4\x22\x8e\x2f\xc2\xe9\x04\x33\xb6\x20\x8a\xc2\x45\x1c\x93\x0b\x7f\x18\xc2\x86\x75\x07\xd4\x7e\x62\x6c\x19\xf0\xc3\x78\x4e\x5e\x0a\x12\xf6\xec\xd1\xec\x22\x15\xb2\x33\xbb\x99\x59\x3e\x97\x26\x24\x63\xcf\x85\x65\x74\xc7\x99\x43\xfa\x33\xcb\x64\xd3\x64\x6d\xd3\x92\x39\x51\x95\x13\xf4\x22\x8e\xbb\x1b\xec\x82\x6b\x0d\x43\xe6\xe6\x15\x18\x5b\x1a\xb9\x3a\x0d\x43\x90\x71\xdc\xad\x8d\xf2\x37\x11\xbc\xfd\xf3\x1c\x7e\xdd\x9f\x55\x9c\x37\x10\xa3\xa7\x62\x4c\x88\x66\xf5\xdd\x4c\x22\xfc\xb3\x44\x58\x38\x15\x38\xe8\x42\xe7\x00\x1a\x6f\xdc\x73\x59\x0d\x74\x87\x68\x36\xdf\x40\x00\x44\x53\x9a\x68\xb6\xf5\x15\x24\x1c\x5c\xf1\x44\xe6\x40\x04\x53\x93\x48\xc9\xa8\x67\xa6\x74\x2c\x88\xa6\x49\xb4\x91\x2e\x10\xc2\xbc\x18\x44\xe4\xae\xff\x6b\x18\xa8\x22\xce\x56\xb8\xd1\xd4\x92\x8f\xf0\x32\x2c\x44\xad\x71\x4c\x50\x6f\xdd\xe0\x1b\xc6\xfe\x33\x31\x34\x29\x1e\x81\x53\x9a\x93\xe8\x5d\x68\xb3\xe3\x7b\xd9\x29\x1b\xc7\x58\xd8\xbf\x35\xcf\x96\x37\xc5\x91\xbd\x17\x79\x19\x6f\x56\x71\x64\x96\x58\x90\x3f\x05\x9e\x3e\x44\xb2\xb7\xf5\xfd\xf0\x5e\x8c\xff\x16\xfe\xee\x88\x62\xcc\x6f\xca\x66\x35\x18\x9a\xfc\x2a\x48\x1b\x40\xc0\x9e\xc5\x76\xb3\x57\xd7\xee\x7b\xb1\xdb\x61\x6b\xe3\x3b\xc9\x10\xfc\x10\x83\x0c\x46\xfa\xd0\x7d\x94\xe6\xf0\x67\x2b\xef\x37\xf4\x06\xb1\xc5\xca\xe9\x86\xbb\x0a\x73\x30\xe9\x57\x0d\xbf\x3a\xa4\xa2\xa2\xa7\xae\xf3\x51\x18\x4e\xf1\xe1\xa2\xf8\x00\x1e\x5e\xce\x06\x87\xa7\x2d\x82\xb5\x26\x83\xaa\x2c\x36\x46\xe3\x74\x0b\x89\x1c\x64\x5b\x21\x8e\x52\x9b\xdd\x8e\xb8\x07\x4b\x30\x6a\xb4\xee\xd6\x34\x34\xc9\x24\x78\x0c\xc4\xee\xc0\x2f\xb8\x57\xec\x22\xa6\x39\xe8\xb6\x1a\x1d\x0e\xb4\x95\x85\xda\xab\x95\x22\xba\x11\x0b\x62\x58\x49\x10\x55\x50\x41\x67\x96\xca\xff\x44\xe5\xa0\x47\x5a\xf3\x8e\x30\x19\x5f\x2e\xa2\x70\x85\xd8\x73\x41\x24\x1d\xa9\x71\x03\x75\x7a\x01\x88\x13\xde\x0c\x73\x6c\xc6\xcb\x06\x25\xf0\x94\xe8\x14\x50\xba\x4b\xed\x8b\x0c\x2f\x01\x91\x48\xba\x95\x29\x8a\x7f\xf1\x16\xb4\xdc\x22\xa1\xfd\xd1\x0f\x8b\xd1\x0f\xf7\x4a\x16\x2d\xfb\x1a\xf2\xd1\xef\x96\xca\x7c\x58\x5f\x47\x0f\xbc\xa6\xe2\xa1\x00\x4b\x82\x28\x0c\xd2\x7d\x2c\xca\x78\x05\x5e\x0d\xca\x9e\x09\xff\x8a\x56\x95\xc4\x0f\x00\x63\x43\x17\x23\x70\x6f\x15\x5c\x68\x3b\xe2\xc2\x47\x23\xb1\x47\x8e\xeb\x8d\xbf\x73\x75\xfa\x9b\x3f\x5e\x09\xf0\x5d\x86\x80\x1c\xed\xb3\x5b\xce\xf6\xa9\xc0\xa0\xc9\x64\x0a\xc5\x8a\xb4\x5f\xdc\xf5\x33\x81\x38\xf3\x54\x35\xcd\x69\x29\x8d\x66\x1f\x14\x79\x28\x2a\xd2\xe9\xad\x3d\x37\x93\x16\xf4\xe4\xa4\xaa\xec\x96\x1f\x2f\xa4\xec\x89\x20\x44\xb2\x87\xa2\x54\x2c\x11\xc5\x3e\xb8\xcf\xb5\xc8\x7b\xbb\x9d\xd3\x7d\x10\xcd\x3e\x10\x45\x27\x4f\xd5\x94\x8e\x65\xa2\xb8\x45\xa7\x85\xa4\x23\xed\xab\x4b\xd6\xa6\xa4\xde\xed\x0c\xa4\x78\x48\xb6\x5d\x63\xca\xe3\x98\x43\xea\xcf\x48\xe6\x76\xad\x7b\xf1\x03\x06\xe1\xb7\xbe\x5d\xdd\xa2\x3c\x6f\xbc\xd8\x85\xc2\xa0\xeb\x9d\x99\x78\x1c\xff\xe2\x41\x8f\x5c\x32\xa4\x25\x99\x3c\xab\xdf\xf1\xd5\xb8\x79\x1d\xe9\xa0\xc0\x05\x62\xd8\xd6\x47\xfb\xfc\x28\x32\x21\xc7\x02\xdc\xa2\xa1\x75\x06\xc5\xd4\xb9\x87\xb0\x11\x1a\x2c\x44\xd8\x12\x1c\xf9\x88\xfe\x82\x3d\x39\x60\x0f\xc2\xd8\x43\xb1\xdb\xd9\xff\x8f\x62\x8c\x1e\xd5\xb6\xc9\xe4\x13\xb2\x17\x6d\x76\xfb\xa7\x2a\x8e\xc9\xa9\xa5\xb4\x6b\x1a\x76\x2e\x81\x1b\x52\x4d\x84\xc8\xa6\x46\x7b\x3e\x16\xa5\x86\xbf\xc2\xce\x3c\x14\xcd\xa0\xd6\xa7\x22\xec\x75\x7f\x92\x3b\xd8\x85\x4b\x26\x2b\xaa\xa1\xb6\x5e\xde\x17\x71\xfc\xd6\x90\xed\xf9\x52\x9d\xa5\x4b\x17\x28\xa2\x72\xbb\x56\xa1\x89\x1c\xe4\xb0\x45\xfa\xbf\x6d\xc6\x5e\x0b\xf2\x50\xc0\x7d\xe1\x45\x64\xaa\x12\x85\x16\x31\x8a\x8b\xf6\x5b\x36\x71\xad\xd3\x75\x35\xce\xaf\xc8\x61\xeb\xb1\x60\xf2\x50\xe4\x14\x34\x27\x88\x27\x70\xcd\xec\x33\xb6\xca\x5d\xbc\xc0\x1e\xf4\x17\xa3\x34\x8e\xb9\xa5\x6a\x26\x97\x6a\x1a\xc7\x92\x70\xb8\x54\xfb\xd1\x8e\x0f\x5c\x2b\x76\x21\xb2\x3c\xa7\x39\x32\x45\x1f\x91\xc9\xb1\x4f\x15\xcd\xec\x2b\x81\x5b\xbe\xd9\x59\xb7\x78\x5a\x3c\x59\x9f\x04\xe4\x15\xb8\x47\xbf\xce\xdc\x14\x15\xeb\x19\x78\xb1\x0f\xf2\xaf\x6b\x0f\x17\xf1\x01\xd8\x17\xd1\x5e\xbe\x50\xd5\x1f\xb6\xaa\x74\xb9\x6c\xe9\xb7\x8f\xa2\xfb\x44\xb8\x98\x15\x05\x6f\x0b\x0a\x9f\x91\x70\x16\x4d\x1a\xc5\x13\x59\x9c\x14\xd6\x63\x14\x84\x25\x3a\x53\x36\x80\x19\x1b\x8e\x6e\xa9\x66\x74\x32\x77\x05\x4e\xda\xeb\x59\xda\x78\x38\x12\x0e\x65\x04\x09\xc9\xac\xd7\x03\x7f\x41\x98\x45\xe4\x2d\xee\x27\x9b\xdd\x8e\x6c\x10\xed\x4c\xb2\x29\x33\x70\x74\x34\xdb\xed\x34\x11\x96\xb9\x71\x57\x4b\x95\x49\x15\x73\x44\x11\x68\x3f\x45\xbc\x8c\xab\xc6\xb1\xeb\x74\xd6\x16\xdc\xa3\x05\x28\x08\x08\xd5\x06\x08\x55\x07\x44\xcb\xd8\x55\x73\x64\x25\x94\xb5\xbf\x8d\x26\xf4\x57\x85\xfe\x6a\xa2\xf6\xfb\xeb\x65\x40\x2a\x05\x91\x42\x9a\xc2\x2c\xdd\x77\x32\xa9\xcb\xfc\x21\x4b\x59\x2d\xcc\x3a\x6c\xd2\xb6\x48\xf6\x06\x59\x06\x36\x18\xf1\xbb\x77\xbe\xff\x61\xd4\xeb\x71\x6a\xbc\x87\xf7\x3f\xa2\x1e\x21\xfc\xee\xf0\x87\x71\x34\x70\x9a\xdb\x4a\x80\xbb\xe1\x0f\xe8\xe7\x59\x71\xa2\xad\xa8\x72\x09\x85\x65\x93\x42\x2c\xe3\xe1\xa0\x19\x37\xba\x16\xb8\x31\x64\xe3\x96\x3b\x54\x13\x34\xad\x1e\x8c\xf4\xdd\x22\x3a\x6f\xaf\xa7\xe9\x61\x9b\xd1\x8a\xc5\xdf\x22\x65\x5b\x0c\x51\xf4\x56\xf9\xd0\xa8\xcb\x14\xd2\x2c\x13\xe7\xcd\x53\xd9\x97\x69\x18\xc0\xb6\x5c\x48\x56\xb1\xbc\x9b\xc8\x29\xe3\x13\x39\x05\xe3\xee\x25\x83\x99\x5a\x9d\x09\xc9\x5b\xab\x9e\x94\x97\x91\xe3\x81\x33\x53\xab\x75\xda\xc0\x23\x15\x0d\xc7\x56\x9d\x7d\x48\xb6\x2a\x31\x39\xac\xb5\x5a\x27\x91\x8a\xf2\x29\x48\x3b\x47\x0e\x18\xbc\x0a\x8c\x0a\x07\x3d\xd1\x53\xbc\x3a\x4c\x9d\x7d\x98\xe0\x41\xb3\xb6\x7b\xb2\x3a\x2e\xb4\xf4\x1d\x8c\x66\x77\xd3\xb2\x8a\x59\xb1\x3d\x27\xb3\x29\x6c\x98\xdd\x62\xa3\xbd\xf0\x96\x9b\x22\x3e\xf0\x26\x8e\xd1\x04\x58\x16\x26\xc0\x1b\x8c\x78\xef\x83\xeb\xd9\xce\x0b\xd7\xf1\x2c\xc7\xe5\x6b\x93\x37\x94\xe6\x7b\xd1\x5e\xdc\xa8\x47\xa6\x30\x5d\x19\xd1\xf2\x42\x78\xb5\x46\xaf\x61\x8e\xa3\xe1\x6e\x34\x96\x75\xca\x52\x22\x69\xc5\x94\xc1\x82\x45\xb1\xc1\x48\x95\xf1\xb1\x7b\x3d\x55\xae\x11\x39\xb1\x07\x44\x08\xa8\x34\x51\x53\x3a\xaa\xd5\xc9\x74\x9e\xe7\x28\x61\xcc\xc1\x45\x12\xd8\x8b\xb9\x19\x7c\xf2\x4b\xc7\xf3\xde\xed\x73\x88\x3a\x4e\x43\x1d\x89\x4c\x1d\xfd\xf8\xe3\xf7\x3f\x1d\x0d\x31\x9c\x45\x90\x20\xea\x4a\xe4\xc9\xc9\xe0\xe8\xa7\xf4\x68\x31\xdd\xde\xc9\x6f\x9f\x0b\xd8\x48\x9e\xcd\xd2\x35\xaf\x45\x8b\x6b\x09\x63\x50\xd5\x4d\x86\x5a\xf3\x1c\x9c\x83\xd4\x5e\x37\xc5\x82\xa0\xb1\x4c\xd0\x8e\xd7\xc3\x58\x32\x74\xff\x8f\xb2\x9b\xd5\x99\x5a\x56\xd5\x5d\x9a\x9d\x60\xda\x41\x57\x35\x43\x93\xbd\x9b\x10\x0c\x3a\xfa\x79\x34\x60\x28\x85\x43\x50\x70\x03\x25\x55\xfb\xd8\x7f\x6c\x0a\x70\x7c\x87\xe0\x68\x31\x32\x8f\xfe\x71\xe7\x87\x7f\xdc\xf9\x36\xea\xa1\x63\xd5\x33\x69\x48\x08\x24\x79\x87\xc2\xf0\x07\xda\x8b\xfe\xf1\xed\xfd\x08\xef\xa2\x28\xd6\x7f\x14\x81\x60\x83\x91\xb8\xab\xcb\x85\x50\xc4\xd8\xd0\x18\x5c\xe4\x81\x9a\xf3\x7b\x86\x08\x3a\xfa\xee\x7b\xc6\x58\xba\xdb\x7d\xf7\x83\xfb\xff\xc9\xbf\x0f\xef\xf8\x84\xf4\x67\xf6\xdd\x8f\x71\x9c\xde\x65\xdf\xff\x13\xdf\x7e\xf8\x1e\xdf\x7e\x1a\xe0\xdb\x4f\xff\xc4\xb7\xe1\x9d\x3b\x63\xd5\xf3\xb5\x63\xcd\x49\x7a\x77\x78\xe7\x47\x9b\xb8\x49\x27\xe9\x34\x49\xef\xde\x19\x7c\x17\xde\x87\x3f\xdd\xd9\xa5\x3f\xff\xfc\xc3\xb4\x67\x5f\xee\xfc\xb8\xfb\xe1\xdb\x18\xf3\x7c\xff\xfd\x9d\x9f\x7e\xc0\x8a\xbf\xff\xe7\xb7\xdf\x7d\xe7\xb3\xdf\xb9\xf3\x9d\xcd\x3e\xbc\x53\xe4\xb7\x85\xe3\x1f\xbe\x6d\x94\x27\xa2\xc7\x86\x90\xb2\x1f\xbe\xff\xfe\xdb\x1f\x7a\x84\x0c\x07\x77\xbe\x8d\x53\x7a\xf7\xee\x70\xb0\xc3\xe7\xc6\xe8\x29\xf8\xfa\xbf\x1b\x60\xfd\x3f\x56\xeb\x1f\xde\xa9\x36\xd0\xda\x60\xb1\x97\xd5\x67\x63\x8c\xbb\x80\x91\xfb\x81\xd8\x69\x1c\x77\xbb\xa4\x11\x67\xfc\x5f\x0e\x20\x8e\x81\x9f\x5d\xa0\x90\xcf\x85\x9b\x76\x39\xbe\xc6\x25\xd3\xa2\xf1\x55\x7a\x73\xc6\x5f\xd6\x8c\xee\xbc\xd2\x20\x4b\x51\x83\x5e\x9e\x60\x05\x3a\x36\x65\x5c\x7e\x36\xa4\x1e\xe1\x79\x17\x8f\xca\x89\x14\x36\x84\x6b\xa7\x19\xa8\xb8\x22\x4a\x28\xf7\xce\xa8\x2d\x8e\xbd\x0c\xdd\xe1\x34\xa8\xbc\x25\x2d\x0c\x6f\xba\xbc\x05\xe2\x41\x68\x3e\xe1\x20\xa7\x23\x82\x5e\xba\xb5\xc3\x77\xb7\xd3\xfd\x74\xb9\x54\xd7\xaf\x03\x6c\x32\xba\xdb\x75\x67\xa9\x83\xcc\x9e\x1d\x1a\x0a\x84\x09\xde\x71\xd3\x1d\x14\xab\x81\xe7\x5f\xee\x40\x71\x14\xca\x20\xde\x28\x02\xf1\xe0\x90\xe2\xb8\x8b\x18\x3e\x8e\x89\x62\xcb\x14\x23\x1b\x53\xf0\x9f\xf0\xcb\x98\xc8\x16\xbf\x01\x09\xee\x1a\xe2\xd0\x65\x34\xb8\xf1\xd1\x69\x39\xde\x09\xd9\x12\xda\x59\xc4\xb1\x3c\x10\xf1\x59\x4d\x99\x21\x02\x27\x25\x29\xa0\x9c\x63\xf8\x5f\xfc\x88\xb7\x0d\xf1\xfa\x55\x34\xb2\x85\x6a\xe0\xe5\xcd\x13\xf6\xf0\x29\xee\xa6\xae\x74\x33\xb4\x66\xff\x40\x60\x83\x36\x41\xa0\x43\x9c\xa2\x79\x0e\xeb\xd4\xa3\xda\xfd\xbb\xf7\x60\x9e\x32\x1f\x02\xf9\x22\x65\xdb\x37\x8f\x1f\x0c\xff\xf9\xed\x8f\x49\xe4\x1f\x22\x78\xf3\xf8\xc1\xb7\x3f\xfd\xf8\x03\xa6\xd8\x87\x28\x87\xab\x94\x2d\xd2\xbe\xa3\x85\xc8\xd6\x1b\xff\x26\x17\x69\xdf\x67\x01\x0c\xc4\xe8\xaf\x9f\x0e\x35\xb6\xf0\x20\xeb\x34\x5c\x6d\x30\x4f\x31\x00\x73\x5e\xb4\xd6\x92\xbb\x38\x2c\xf2\x3c\x87\x8b\x94\xc2\xea\xcb\xf4\xeb\x4d\xca\xb6\x67\x3a\x9d\x5d\x72\xd3\xee\xde\xda\x8b\x26\xd3\xc8\x5d\xe3\x9d\x26\xe8\xd8\x98\x46\x20\xe4\x5c\xcc\x78\xd6\x4e\xe6\xd9\x22\x51\x8f\xa3\x9d\x25\x68\xbe\xe6\xa9\x69\xad\x39\xcf\xe1\xbc\x49\x3d\x9f\xa5\x4d\x23\x44\x5c\x19\x70\xdd\xa4\x73\xcf\xd2\x70\x39\x0b\x9c\xdb\xa5\x3b\xe6\xc9\x84\x4f\x69\x0e\xf7\x52\x86\xc1\x86\xaa\x38\xa8\x88\xd3\x0c\x27\x29\xbb\x4a\x83\x35\x36\x1c\x5b\x0a\x76\x3e\xff\x75\xc3\xf5\xcd\x6b\xcd\x17\xe2\x63\xd2\x1d\x02\x6e\xd3\x87\xca\x64\xf6\xc5\x7b\x37\x27\x91\x73\x6f\x0e\xef\x27\x5c\x1a\x21\xf9\xd2\x66\x99\xf3\xa5\x58\x09\xc3\x75\x12\xc5\x51\x20\x1d\x90\xdf\xb7\x4f\x3a\x59\xa4\x7d\xf7\xe8\x53\xde\x5b\xb6\x23\x3b\x96\xcb\x1b\x5b\xda\xad\x84\xe4\x24\x2d\xd7\x44\x72\x95\xf6\xcb\x05\x32\x39\x49\xa7\x05\xc0\xbb\x43\xc8\x82\x47\xcc\x81\x4b\x07\x3a\xf7\xd2\x12\xdb\x66\x97\x62\xfd\x6a\xb3\x5c\xba\x92\x46\x8b\x99\xb1\xaf\x28\x1c\x16\xf2\x1c\x85\x8b\x8f\x4a\xd8\x06\x34\xe9\x6e\xa3\xa9\x1b\x24\xba\x4d\x76\x01\x57\xcc\x61\xcd\x7d\x91\xc7\x6c\x7c\xc5\x66\x44\xc2\x15\x4d\xae\xaa\x36\x78\xb6\xa3\xe3\x2b\xb6\x24\x57\x34\xac\x20\x17\xc9\xe0\x3c\x25\x57\x16\x0f\x5d\xd9\xdd\x12\x0e\x06\x72\xd5\x46\xae\x74\xcc\x5e\x8d\x48\x37\x99\x9c\x52\x1f\x09\x0b\x22\x4a\xc1\x9b\x2e\x5f\xb9\x98\x37\x01\xcf\xa7\x71\xdc\x5d\x8f\x53\x22\xe1\x38\x4c\x86\x86\x39\x44\x97\xfc\x26\xa2\x89\x1c\x5d\xb1\x28\xca\x5b\x5c\xd0\xc9\x05\xbb\xa2\xbb\xdd\xde\x7d\x10\x17\xbb\x5d\x74\xa6\xd4\x92\xa7\xb2\x9e\xd8\x24\xfe\x30\xa3\x38\x17\xd2\xd4\xd2\x16\x69\x79\xce\x5e\x15\xf7\xb0\xa5\xe3\xc9\x82\xac\xc7\x32\x39\xd0\x51\x1f\x31\x9c\xa4\xe4\xaa\xf1\x19\x39\xd9\x88\xd2\x69\x32\x59\x10\x19\xf2\x79\x7c\x70\x45\xa9\x8b\x58\xb5\x82\x1b\x36\x41\x12\xbf\x10\x83\x5e\x85\xb6\x6f\x6c\xf2\x79\x4a\x66\x94\xfe\x7f\xec\xbd\xe9\x7a\xdc\xb6\xb6\x28\xf8\xbf\x9f\x82\x85\x38\x34\x10\xa2\x26\x79\x0c\xcb\x50\x6d\x59\x96\x1d\x25\xb6\xe5\x48\x96\x33\x94\x6a\xeb\x52\x24\x4a\xa2\xcd\x22\xcb\x1c\x34\xa4\xc8\xfb\xe5\x9c\x9e\xfb\x11\xfa\x4f\xf7\x1b\xf4\xd7\x3f\xfa\x05\xfa\x09\xee\x79\x84\x4e\xbf\x48\x7f\x58\x00\x38\x54\xb1\x64\x67\xef\x9d\xdd\xfb\xee\x73\x12\x7f\x25\x12\xc4\x8c\x85\x35\x61\x61\xad\x39\x73\x2b\xb7\xea\xe7\x0d\xe9\xe6\x92\x8c\xe6\x2c\x19\x9f\xf7\x92\x28\x4e\x71\x42\xec\xf3\xd2\x13\xff\x19\x1b\x8c\xce\x9e\xcc\x2b\xc6\xf0\x4c\x02\xcc\x15\x9b\x4f\xce\xa6\x74\x87\x5d\x4e\xae\xa6\x32\xb8\x9a\x54\xb2\x76\x18\xdb\x91\x59\x8e\x18\x00\xc2\xb8\x05\xa4\xe2\x71\x8c\x43\x7a\x45\xec\xd0\x0e\x2d\x9c\x8d\x51\x0f\x59\x57\xb6\xc0\x2f\x57\x02\xbf\x90\xd1\x95\x83\x6f\x68\x8a\x77\xe8\xd1\x06\xa8\x25\xa5\x3f\xbb\x9b\x82\x5e\x3b\x6c\x8d\xd4\xae\x62\xc4\x26\x42\x6a\x55\x2f\xb3\x94\xae\x59\x32\x77\x4a\xc3\x86\x03\x67\x54\x5a\x36\xb3\x54\x2f\x93\x69\x56\x42\x75\x95\xd6\xa6\x44\xd6\x5f\xdb\x6f\x3c\xed\xc9\x8f\xe0\xa8\x3b\x8d\x36\x5c\x79\x62\x69\x4f\x21\xaa\x3c\x3f\x70\xf4\xf3\xa8\x6e\x45\x52\xe6\x30\x4d\x85\xdb\x56\x12\x6b\xe2\x46\xfd\x4b\x7b\xaf\xde\x5e\x70\x43\x65\x30\xe4\x85\xbb\xf2\x46\x16\xf7\xd3\x0b\x1e\x1b\xd0\x06\x35\xaa\x5a\xa9\x11\xc5\x46\xe5\x08\x44\xdf\xbc\xaa\xd0\xf3\x4a\x77\x25\x46\x94\x73\x3d\x57\x28\xae\x81\x28\x69\x99\xa7\xbd\x8f\xc7\xe1\x87\x30\xba\x0a\x0d\x99\x49\x77\x73\x11\x47\x97\xbe\xc7\x3d\x31\x77\x61\xd9\x4c\x21\x25\xba\x26\x22\x0e\x85\x1c\x7c\xe0\xa8\x9b\xbb\xda\xe8\xa0\xd5\xb3\x8c\xcc\x92\xe7\xe7\x0e\xd6\x2f\x44\x72\x5c\xe5\x2b\x5d\x25\x3d\xeb\x18\x25\xed\x35\xb3\x8c\x57\x13\xec\x03\x67\x25\xa5\x46\xbd\xaa\xcb\x1d\xbd\x32\x71\x2c\x0a\x54\xf4\xad\x53\xfb\x54\x92\x3a\xbe\x46\xe4\xda\x7a\xb6\x92\x67\xbc\x96\x62\x57\x80\xa7\x93\x6a\xa4\xb2\xd6\xb9\x32\x51\x74\xae\xca\x51\xfb\xa0\x89\x6a\x5b\x3f\xe4\xa7\xb1\x7e\xb0\x0f\x56\xa8\x6d\x6c\xb7\x2e\x90\xfa\x58\x96\x8b\xed\x1a\x46\x5d\xa3\xd3\x9b\x1b\xae\x32\x8d\xd7\x93\xaa\x3a\xab\x34\x2a\x97\xdf\x8e\x6a\xf4\x3e\x5e\x21\xea\xad\x3d\x6e\x64\x19\xaf\xbc\x8b\x96\x1a\x09\x35\xca\xdf\xd6\xf9\xf2\xeb\xb8\xf6\x0c\x95\xe8\x17\x2a\x50\xfc\x86\x9e\x44\x71\x3a\x96\x7f\xa4\x3f\xb7\x16\xc6\xa2\xb5\xd1\xb5\x6c\xe3\xb6\x44\xe8\xc6\x5a\x2a\xa8\x90\x46\x6d\x41\x37\xd5\x86\x1a\xc7\x0c\x0f\xa8\x7e\x23\x18\x21\xc1\xe8\x9f\x3b\xb8\x4c\x02\x73\x80\xf2\x4d\x3a\x71\xa4\x8e\x22\x89\x6b\x12\x55\xac\xcf\x02\x99\x0e\xc8\x8b\xd0\xc8\x97\x6a\x55\x50\x7b\x3e\x97\x78\xc4\x0f\x8d\x1b\x67\xdc\x48\xb3\xb9\xc0\x9f\x92\x65\x43\x7e\x68\xf0\x31\xef\xa9\xd7\x71\x99\x6e\x23\xc9\x1b\x23\xbb\x4c\x82\x2e\xb9\xec\xc6\x99\xf8\xd3\x11\xdc\x33\x6d\x50\xdf\x18\x02\x88\x88\x69\x37\xcd\x50\x92\x60\xf9\x5a\xe9\x68\x12\x36\x18\x25\x75\x3d\x5d\x22\x89\x56\xc6\xc2\x49\x32\x1d\x45\xd5\xfa\x4a\x6d\xa3\x18\xdd\x24\x9b\xe6\xf9\x95\x83\x1d\xba\xe7\x60\xf1\x46\x33\xea\x8a\x86\xd6\xd6\x80\xd6\xca\xd3\x48\x6f\xbd\xa8\xdc\x42\xd2\xb9\x9f\x9a\x60\xd5\x55\x1a\xd5\x50\x4c\xb4\x02\xa4\x51\x85\x5e\xcb\xfa\x6a\x5b\x25\x2a\x89\x8e\x8a\xe0\xa6\xbd\x9e\x46\x15\x6e\x20\x74\xc6\xc0\x76\x28\x5a\x45\x96\x10\xf2\x04\x55\x9a\xff\x15\x64\x64\x9a\xab\x8a\xc5\x32\xcb\x78\x66\x31\x41\x14\x1f\x33\xa9\x24\x1b\x0e\x06\x83\x7b\x5f\xde\x7b\x6a\x22\xbb\xfa\xb2\xb7\xf5\xe5\xd7\xbb\x5f\x7e\x7d\xcf\x44\x84\x06\x5a\xc1\x3a\x18\xcf\xac\xc0\x46\xa8\x20\xf4\x74\xdd\x90\x41\x5e\xf6\x91\xb1\x63\x6a\xde\x04\x94\xdf\x88\x52\x4c\x6f\xae\x79\x59\xb5\x69\x62\x87\x71\x0b\x8d\x91\x75\xed\x00\x30\x84\xe3\x59\x34\x49\xa7\xd8\xa1\x21\xf5\x89\x0d\xf7\xde\xe1\xde\x9e\x4e\xf6\x89\xad\x1f\xaf\x1d\x1c\x11\xea\x93\x82\xbe\x77\x5a\xec\x8f\xd7\xec\x76\x44\x7b\x25\xf5\xad\xfb\x60\x18\x37\x1c\x32\x2c\x0b\x50\x21\xdf\x91\xe7\xd8\xe3\xf2\xc9\x16\xdb\x4f\x7c\x50\x4e\x0e\x23\x86\xfa\xce\xc2\xef\x5f\x0e\xfa\x09\x87\xb0\xde\x49\x5f\xca\xc7\x50\x55\xd7\xf1\x3c\x44\xe1\xa6\x85\x53\xf3\x9b\x59\xd9\xbc\xf6\xce\x22\xef\x06\xac\xa3\xe5\x63\xed\x8e\xa8\x4c\x18\xaf\x78\x96\xa9\x79\xa8\x7f\xe5\x27\x89\x1f\x9e\x1b\x31\xff\x98\xf9\x31\xf7\x0c\x03\x7c\x0b\x70\x81\x7a\x0d\x51\x16\x49\xdb\x8c\x3b\x1f\x01\x7a\xf4\xb7\xc4\x34\x1b\x27\x16\x6b\xdf\xdb\x22\x1c\x0b\x06\x05\x9c\xa1\xac\xe5\x9e\xa4\xe0\xed\xe7\xd4\xc1\xca\x2d\x40\x68\x45\x34\x05\x8e\x35\x86\x78\xfc\xff\x88\xcb\x12\xf8\xa2\xa7\xff\xae\xd7\x65\xf7\x1f\x65\x5d\xe2\x28\xe0\xff\xb1\x22\xa4\xa0\x6f\x1c\xd6\x59\x31\x72\xad\xf4\x17\x35\xbf\x70\x35\x19\xaf\x6e\x17\x0c\x54\x4a\xf5\xf7\x9c\xa7\xa5\x42\xf6\x60\x06\x53\x91\x92\x4e\xe9\xa5\x5c\x24\x43\x4c\x65\x87\xbd\xc3\x68\x7f\xef\xf4\xcd\xe1\xc1\xdb\x03\x44\xe8\xe1\xba\x66\x8d\xbe\x74\xd8\x1b\x67\xdc\x5a\x71\xab\xfe\x8b\xed\x83\xb5\xc5\x15\x4e\xe9\x5b\x87\x8c\xd3\xc9\x5b\x67\xda\xce\x70\x35\xd5\xf8\x75\x45\x48\xe3\xdb\xb8\xa9\xc9\x2f\x7b\x66\x37\x8a\xc8\x0e\x8e\x0f\x1d\xe5\xbd\xfb\xb5\xb3\x76\x4d\xd7\x61\x9d\xe1\x68\x32\x85\xd5\x14\x64\x12\x02\xf5\xfa\x21\x76\x04\xb3\x24\xd7\x98\x90\x31\xf6\x1d\xf6\xd2\xc1\x2f\x1d\xec\x38\x84\x88\x59\x5b\x9d\x12\x21\xf0\x38\xcc\x77\x88\x2d\xaa\x1c\x68\xed\x4c\xe4\xc8\x0f\xcb\x42\x8c\x3e\x72\xe8\x6b\x87\xe4\xf9\x1b\xf9\x44\x5b\x6e\xb6\x83\x39\x89\xba\x08\x74\xec\xb0\xe5\xbe\xea\x6b\x39\xc3\x76\xe4\xd0\xa7\xc7\x2f\x5e\xfc\x74\x7a\xb4\xf3\x7c\xe7\x70\xff\x74\xff\xed\xde\xe1\xce\xdb\x83\xc3\x23\x7b\xdf\x29\xe8\x1d\x87\x1d\x3b\xbd\xb5\x52\xf4\x99\xb3\xf1\xaa\xe5\xab\x55\xea\x5d\x46\xae\xb7\x90\xa1\x6b\x42\xa3\x75\x50\x63\x2f\x52\x7c\xc7\xa1\xf2\x72\x64\x80\x87\x34\x24\xd2\xee\x26\xa5\x31\x58\xdd\xbc\x89\x26\xf1\x94\x3d\x73\x68\x5a\xd0\xe7\x25\x18\x25\x0d\x78\xc9\x73\x8c\x4e\x4f\xa1\xce\xd3\x53\xe4\x87\xcb\xa2\x2d\x9c\x42\x67\x48\x21\xe8\x7e\x1a\xdf\x2c\x71\xca\x2a\xc8\xab\xa9\x33\x9e\xa9\x50\x1a\x51\xdc\x72\xd7\xbd\x6a\x82\x88\x0e\x10\x6d\xef\x34\x99\x12\xca\x59\xb8\x16\x69\x75\xfd\x1e\x67\xed\x74\xa0\xb2\x16\x7d\x8f\x43\xb2\x1a\xee\x09\x2c\xe0\xab\x08\xb8\xeb\xd7\x56\x76\xc1\x48\x33\xe1\xa9\x81\xac\x52\x91\x6d\x21\xc3\x49\x0c\xc7\x28\xfb\x8c\x48\x81\x63\x42\x85\xfc\xa3\xfa\x1a\x13\x3b\xec\x95\x03\x61\x31\x0d\x21\x8c\x80\xb6\x7c\xf9\xb8\x61\xe9\x9f\x42\x7a\x3b\xcc\xd0\x17\x6b\x5b\xe2\x97\xcd\x90\xf2\xae\x9d\xcf\xa3\x0e\x59\xbe\x72\x70\x48\x39\x55\xb2\x86\xb6\xaa\x5f\x99\x99\x94\xc1\xb5\xf3\x52\x13\x77\x09\x4a\xb2\xa7\x2a\x06\xaf\xe1\xe9\x74\x6f\x92\x4e\x47\xc9\x95\xaf\x56\xc0\x75\x12\x8e\xc4\x56\x44\x36\x3c\x82\x0a\x50\xbf\xf0\x30\x8d\x7d\xf1\xb6\x7e\xc1\xb4\x66\xf2\x16\x56\x06\x4e\x9f\x91\x8f\x14\x05\x9d\x35\xc1\x9f\x2e\x04\x0c\x7a\x75\x6c\x49\x2f\x98\x37\x79\xe1\x4c\xf3\xdc\x5b\xbd\xc4\x1f\x99\xa6\x37\x89\xa6\xf4\x92\xc1\xe8\x2e\xf2\x3c\x10\x2c\xe9\x9c\x29\x2f\x1d\x10\x03\xc7\xeb\xa9\xbe\xe7\xf9\x85\x98\x88\xb9\x69\x62\x57\xa0\x99\xb9\x5a\x70\xc0\xd0\x62\x5d\x5b\xf1\x8d\x0b\x17\xb0\x4c\x53\x60\x25\x57\xa0\xa4\x8f\x02\xd7\x3c\x77\xc6\xcf\x1d\xec\xd2\x8f\x0e\xb1\x5b\x34\x6e\xae\xe8\xb0\x69\xbe\xc1\x2e\x7d\xe1\xd0\x5f\x1c\x02\xfb\xd5\xa5\x33\x30\x49\x26\x54\xcf\x2d\xac\xd3\x85\x69\xea\xf7\x0e\x63\x17\x10\xc1\xc6\x34\xf1\x82\x75\x06\xf4\xb2\x05\x48\x2e\x6a\x86\xb8\x05\xa1\x30\x39\x1d\xc6\x2e\x45\x7b\x9e\x68\xef\x12\x50\x02\x9f\xb2\x4b\x1a\x11\x7f\x86\x13\xb6\x94\xf5\xdb\x01\xd6\x2d\x11\x2a\x56\xda\xf6\xc7\x97\x22\x11\x56\x9d\x50\x35\x51\x22\x45\xaf\x37\x29\xa8\x03\xf6\x2a\x99\x00\x9d\x84\xe0\xa7\x4e\x9e\x2f\xf2\xbc\x23\x13\x3c\xb8\x65\x92\x62\x8f\x66\x34\x99\x64\x53\x15\x6d\xb3\x66\xdb\xc6\xd7\x5c\xa5\x40\x0d\x05\xad\x2c\xef\x92\x82\x7e\xe3\xe8\x4b\x50\x3f\x3a\xcd\x4b\x50\x72\x29\x2b\x08\x21\xf4\x27\x87\xbd\x73\xb0\x54\xa6\x6a\x77\x2c\x2b\x86\x96\xdf\x38\x75\x23\xe2\xd5\x2a\xa8\xea\xda\x1c\x5c\x22\x87\x1e\xbf\xb6\x07\xf4\x83\x1f\x42\x40\xc9\x95\xcb\x40\xd2\xd4\xea\x47\x47\x19\xfe\xc2\xe5\x1a\x28\x4d\x43\x96\xf6\x44\x21\x5a\xba\xd7\xb7\x2c\x7d\x3d\x87\xe7\x79\xbc\xcd\xb4\xcd\xcf\x18\xeb\x42\xfa\xb2\xe4\xb2\x6e\x94\xac\x2c\x9c\x07\x05\xb1\xe5\x42\x30\x16\x8e\x55\x8e\x58\x9b\x3f\x17\x76\x05\x33\xe5\x57\xb0\x1e\x2a\x33\xa8\xc4\x89\xf4\x0e\x52\x7d\x28\x2a\x78\x23\x23\xf0\xae\xa1\xd8\x47\xa6\x5d\x6d\xd0\x77\x61\x09\x03\xe2\xb1\x84\x11\xf1\x52\x42\x02\xa0\x9c\xef\x36\x50\x31\x1a\xe9\xd5\x7c\xee\xb4\xb9\x5c\xc1\x82\x17\x6d\x46\x24\x8f\x3b\x8c\x85\xa6\x79\x83\x23\x56\x63\x2d\x88\x69\x46\x1d\x88\x30\x53\xed\xc1\xe7\x0e\x84\x62\x17\xf4\xed\x5b\x87\xa1\xc9\x49\x7a\x12\x9e\x5c\x9e\xcc\x4e\x62\xe3\xff\xfe\xdf\xff\x9f\xff\xf5\xd7\xdf\x7e\xfd\xf5\xb7\x5f\xff\xe5\xb7\x5f\xff\xf5\xb7\x5f\xff\xdb\xdf\x7e\xfd\xef\x7e\xfb\xf5\xbf\xff\xed\xd7\xff\xe1\xb7\x5f\xff\xc7\xdf\x7e\xfd\x9f\x7e\xfb\xf5\x7f\xfe\xed\xd7\xff\xe5\xb7\x5f\xff\x8f\xdf\xfe\xe5\x7f\xfb\x7f\x7f\xfd\xf5\x24\xdb\x1a\x6c\x3d\x86\xdf\xaf\x4f\xb2\x19\x9f\xcd\xa6\x88\x7e\xef\x30\x1d\xbc\xe4\xcf\xc8\xfa\xd6\x11\xff\xd0\x57\x88\xd0\x1f\xca\x0f\x3a\xf1\x0e\x22\xf4\x67\xe7\x53\x7e\x9c\xa4\xde\x59\x1f\x96\x60\x5e\x99\x14\x0c\xc1\x83\x52\x08\x06\x8a\xd2\xb4\xe6\x7b\x87\x22\x44\x08\xdd\x5a\xfb\xf2\x83\xfa\x12\x16\x05\x4d\x5d\xb6\x4c\x52\x27\x4e\xed\x9f\x1d\xb8\xce\x16\x7a\xe2\x69\x8b\xc8\xa0\xc0\x3f\x3b\xf8\x1e\x29\x28\x77\xd9\x59\xda\x9b\xd1\xd0\x85\xdb\xca\xb1\xcb\x76\x7b\x33\x1a\xb9\x2c\x75\x21\x8e\x03\xf5\x5d\x16\xf5\x54\x88\x2a\xc7\x65\xbe\x5b\x43\xb3\xae\xcb\xd0\x6b\x7d\x2a\xb5\xc0\x2f\x52\xec\xb8\x84\xd0\xc4\x6d\xbb\x60\xda\x3c\x1a\x61\xe7\x70\x69\x48\x9a\x56\xad\x3a\x62\xcc\x4c\x33\xd3\x22\xcd\x96\x40\x47\xf7\xef\x31\xc6\x30\x67\x38\x63\x91\x8b\x33\x42\xea\x86\x2e\x03\x42\xf2\x1c\x0c\x7d\xa4\x09\xc7\xe3\xc7\x22\x73\xc8\xb2\x7a\xa6\x2d\x91\x69\xb8\x35\xa8\x1b\x2d\xbd\x76\x5e\x17\x3a\xd2\xef\xfd\xc7\xb2\xbc\xa2\x6d\x8d\xb2\x43\x22\x29\x9d\xf1\xf0\x21\x50\x36\xe3\xeb\xc7\x76\xcc\xb6\x68\xc4\xee\x7f\x3d\x3a\x8b\xb9\xf3\x61\x04\xc9\x8f\xbe\x96\x9f\x87\xc3\xa1\x1d\xb3\xc7\x34\x62\x0f\x1e\xa8\xef\xfa\xf4\x5d\xb6\x6c\x65\x70\x62\xe5\x30\xec\xb3\xac\x34\x78\xd2\x4a\x16\x6d\xbb\x37\x72\x95\xcb\x93\x84\xf9\xf5\xee\xb8\x84\x3c\xb9\xff\x38\xcf\x93\xed\xa8\x36\x92\x51\x79\x5a\xaf\x2c\xa9\x7c\x1a\x6b\x93\x0d\x2b\x2b\xc4\x3c\xef\xa6\x58\x2f\x17\xed\xf8\x2e\x46\xc6\x20\x1a\x22\x92\xe7\xf0\x32\x38\x83\x67\xf1\x68\x0d\xae\x87\x10\x76\x44\x6b\xf4\x32\x97\x06\x2d\x8b\xba\x26\x80\x3e\x19\x8e\x07\x36\xe0\xb9\xba\x61\x7b\x9d\x85\x0b\x5c\x41\x4b\xdd\x71\x53\x74\x72\x5c\x69\x07\x7b\xa0\x9c\xae\x08\x76\x95\xd8\xba\xb3\x1d\xb6\xc0\x21\x21\xe3\xef\x1c\xa0\xbc\xbe\x8b\x13\x17\x42\x25\x85\x34\x70\x89\x0d\x2f\x05\x9d\xb9\xcc\x19\x73\x17\xfb\x2e\xb1\xd1\xab\x9d\x1f\x4f\xdf\xed\xbc\x3c\xde\xa3\xaf\xf6\x5f\xab\xa7\xd7\xce\x6b\xfa\x7a\xef\xc5\xce\xdb\xfd\x77\x7b\xa7\xfb\xaf\x9f\xef\xbf\xde\x7f\xfb\x13\x7d\x73\x70\xb4\xdf\x4c\xd9\x7b\x73\xb4\xff\xf2\xe0\x35\x84\xc6\x0f\xfd\x94\x53\x3f\xd9\x0f\x53\x7e\xce\x63\xea\x27\xa2\x12\x3f\x39\x72\x66\x5c\xa7\x89\xa6\x8e\x76\x9e\x8b\x0a\xde\xee\xbd\xd8\x3b\x84\x16\x1b\x09\xb0\x24\xcf\x83\xc8\x49\xa9\x5e\x9d\xaa\x4e\xa4\xe3\xb0\x50\x44\xe8\x42\x2c\xfd\xcc\xd5\xb0\xbf\x70\x47\x0b\x01\x04\x57\xd8\x77\x69\xe6\xb2\x99\x3b\x59\xb8\x53\x62\x9a\x9d\x2b\x1c\x88\x14\x81\x12\x5d\xf9\x48\x43\x57\xe6\x22\x64\x14\xd4\x36\x29\x73\x5c\xea\xb8\x0d\xd9\x33\x70\x29\x4f\x71\x44\x4b\x60\x08\x54\x48\x1f\xcf\x5d\xbf\x84\xf1\xbe\x24\x63\xa8\x26\x69\x48\x6b\x7f\xd3\xc4\xdc\x62\xe8\x1c\xbc\xb6\xfb\xe7\x61\x14\xf3\x5d\x47\xba\x6b\xb6\x18\xf2\x21\x79\x9e\x05\xa9\x1f\xf8\xa1\x4e\x9d\x43\xaa\x17\xa5\x3b\x81\x2e\x9f\x40\x52\x16\xfa\x6e\xe4\xe9\x6c\x19\xa4\x25\xa9\xef\x7e\xb8\x51\x49\x37\x82\xdd\xa8\x79\x8a\xbd\x70\x1b\x16\x1f\x0a\xed\x82\xed\xad\xe8\xfa\xa5\x4b\xe7\x2e\xbd\x71\xd9\xf2\xf8\xf5\xd1\xf1\x9b\x37\x10\xad\xe3\xf4\x27\x7b\xdd\xb8\x3b\x65\x17\x2e\x46\x0e\xa2\xa2\x89\x6a\x8c\x81\x93\xa4\xfb\x82\x48\xb3\x2d\xaa\x5c\x44\xf5\xf8\x35\x17\x59\xcf\x5c\x0f\x81\x39\xfa\xd3\xc3\x83\xef\xf6\x5e\x9f\xee\xee\x1c\xee\xbd\xdd\x58\xf3\x9f\x63\x44\xd1\xf9\x67\xd6\x9d\xa4\x31\x92\x77\xe1\xce\x5d\x45\x4a\xea\x51\xa9\xaf\xb9\x4b\xcf\xdc\xcd\x76\x42\x57\x2e\x3b\x77\xe9\x8e\xcb\xf0\xa5\xcb\xfa\x4e\x9f\xce\x5d\xd6\x3f\xfb\xaa\x7f\x4e\xcf\x95\xaf\xa3\x4b\x97\x22\x07\x91\xf2\x7d\xae\xde\x07\x82\x21\x74\xab\x9e\xe5\xb9\x48\x99\xd7\x52\x08\x3d\x72\xd9\x8d\xdb\x6b\xcc\x67\x9e\xdf\xb8\xbd\xfa\x34\xd0\x03\x97\x95\x8a\xa0\x3e\x26\xe3\x71\x5f\x0d\x0d\x91\xc9\x70\x3a\xc2\x3b\x6e\x9e\x1f\xb8\x79\x7e\x24\xc0\x17\x5f\xdd\x42\x2c\xa4\x8d\xbe\xc3\x8e\x5c\xd3\xf4\x15\x30\x50\x97\x79\xaa\xe7\x3e\xa1\x02\x35\x4a\xb7\x94\x34\x63\x03\x1a\x54\xf1\xf7\x04\xcb\x0d\x06\xcc\xd8\x65\x6e\x49\x20\xd1\x0d\x02\x0a\x59\x05\x37\x3a\x47\xa2\x17\xae\x02\xe3\xa0\x32\x76\x55\x78\xd9\xaf\x8f\xbf\xf6\x02\xaa\xf0\x8e\x5f\xc1\x77\x9e\xfb\x75\x60\x47\x27\x32\xcc\xc8\xa4\x56\xa6\x3b\x84\x18\x15\x09\x43\x78\x6c\x1b\xc8\x4a\x2c\x44\x10\x0d\x18\x32\x90\x15\xd0\xcc\xb2\x08\x95\xde\x3c\x4b\xde\x02\x8f\x6d\x9d\x4d\x50\xd6\x03\x57\x12\xfc\x7a\x16\xf8\x7e\x07\x8f\x3b\x27\x27\x89\xca\xb6\xe3\xc2\xa5\xc4\x46\xd7\x63\xa6\x17\xdc\x19\x87\xb6\x4f\x03\x42\x9d\x71\x3c\xc6\x71\xcf\x0f\x17\x59\xca\xd4\x5f\x35\xea\x8c\xd0\x78\x32\x98\x32\xf1\x53\x4b\x92\xd3\x56\xaf\xb8\x3e\x25\x96\xcc\xae\xec\x92\xed\xda\x17\x36\xb0\x45\x9f\x62\x08\x2f\x52\xa5\xfa\x0a\x8f\x8c\x55\xc5\x56\xad\xbc\xcd\xe5\x70\x63\xd3\x2c\xaf\x86\x0f\x4d\xf3\x4c\x0d\x22\x06\xd7\x6a\x74\xf5\x92\x79\xc4\x86\xa3\x68\x2d\x02\x6f\x77\x6b\x14\x59\x16\x29\x55\x90\x95\x36\x34\x9a\x9a\x26\x8e\x27\xd1\x94\x69\x0f\x8a\x42\xee\x52\x57\x30\xf6\x5c\x76\xe5\x36\x3c\x39\xca\x49\x5f\x77\xe5\xd8\xef\x49\x18\xef\x30\xb6\xe7\x16\x74\x29\x9e\xed\x3d\x57\xd5\x73\xed\xde\xce\xfd\xd5\x38\x62\xea\x37\x78\x40\xea\x30\x37\xc5\x21\xa1\xae\x98\x73\x65\x7e\xaa\xe0\xfb\x89\xb4\x50\x76\xc7\xe9\x18\x21\x25\x17\xd8\x38\x6e\xf2\x0a\x0e\x21\xda\xe8\x38\xde\x7e\xf0\xf0\xde\xf0\xeb\x3c\x77\x2c\xb1\x2d\xdc\x3c\xc7\xd1\x4a\x66\x6b\x28\xb2\x3f\xbc\xb7\x35\xc8\xf3\x68\xfb\xc1\xa3\x7b\xf7\xef\x8d\xd3\xb1\xaf\xad\x9e\x1d\x62\xc7\xb6\x78\x97\x00\xe1\x50\xc7\xda\x22\x76\xd4\x85\x12\x16\x8e\xbb\xd0\xd2\x93\x27\xc3\x01\xb1\xc0\x46\xb9\x28\xe8\xa9\xcb\x96\x2e\x54\x6f\x5f\xbb\xb8\x33\x24\x54\x56\x06\x6f\x03\x52\xd0\xf7\x2e\x3b\x75\x55\x0b\xf4\x83\xab\x65\xba\x5d\x77\x45\xa6\x93\xd3\x52\x13\xea\x46\xef\x1c\x65\x5c\x44\x91\xf6\x96\xd8\x50\xec\x7e\x70\x1b\x12\xdd\x6a\x05\x54\x72\x9d\x76\xb9\xe1\xb5\x5c\xd7\x2e\xd0\x51\xce\x76\x5d\xed\x61\x08\x3c\x17\x40\xd3\x42\x46\x81\x72\x7a\x5d\xe2\x6d\xa6\x4f\x3e\xc7\xed\x32\x9b\x8d\x53\xf6\xde\x05\xad\x11\x55\x85\xad\xd2\x9c\x5f\xcb\x79\x69\x29\x8b\x95\x4e\xdd\xdf\xb8\x2b\xde\x41\xde\xba\xab\x2a\x68\x49\x73\xfa\xbd\x7e\x45\x69\x04\x28\xae\x53\xf5\xc9\xb4\x46\xcb\xe3\x28\x5b\x24\x6c\xe9\xd8\xe8\x11\x2a\x84\xc4\x84\x1e\x09\xd4\x85\x50\x89\x36\x53\x8a\xee\x3c\x71\xb6\x25\xcd\x3b\x74\x19\xba\x33\x40\x8c\x31\xe4\x54\x59\xfa\xbd\x3e\x15\xc9\x84\xbe\x94\xfd\x54\x1f\x10\xa1\xaf\x5d\xd6\xe9\xf4\x7b\xfd\xc9\x4b\x77\x6a\x9a\x48\x94\x54\x6f\x92\xea\x42\xa9\xfd\x4d\x83\xc1\x63\x9b\xf4\x41\x8a\x16\x43\x19\xad\x8f\xa8\xbc\x8c\xa7\x6c\x31\x81\x66\x94\x57\x14\x75\xf8\x06\xe4\x9c\x69\x56\xab\xf4\xf3\x62\x6c\x81\xd8\xa8\x63\x6d\x23\x07\xc1\x4d\x92\xc1\x34\xcf\xd1\x99\x7c\x1e\xc2\x29\xc0\xb1\xdb\x72\x1f\x5c\xda\x35\x7f\x0f\xfa\xf3\xb5\xc3\x00\xe5\xa3\xa7\x3c\x1a\x01\x5b\xdf\xf5\x4e\x3f\x2a\xe8\xa3\x0e\x43\x68\x92\x4e\x65\x18\x0a\xea\x32\xc7\x34\x5b\x2b\x03\x4d\x6b\xdf\xd1\x6b\x8b\x60\x30\xca\x3f\x02\xc6\x21\x5b\x16\x64\xc5\xf5\x88\x0c\xef\xa6\x13\x26\x6f\xdc\xb6\x2e\x84\x22\xdb\x2c\x70\xce\x13\x86\x10\x0d\x45\x3f\xc5\xea\x44\x53\x42\xc3\x8d\x73\xcd\x3a\x03\x2a\x35\xf7\xa2\x00\xf8\x5b\xea\x70\x01\xa8\xfe\x0c\x77\x9c\x3c\xef\xb8\x79\x5e\x42\x80\xea\x62\xe7\xad\x9b\xe7\x9d\x43\x37\xcf\x5f\xbb\x24\xcf\x1b\xfd\xef\xec\x97\xf7\x93\x64\xe3\x34\x63\xa1\x60\x51\xc5\xcc\x34\x55\x35\x2b\xa1\xa3\x25\x4f\xc4\x04\xe2\x1d\x8b\x99\x8b\xc6\xea\xc6\xba\xbe\xc6\x9d\x68\x13\x6c\xb1\x68\x85\xbd\xf2\xb5\x54\xe1\xf2\xfa\x57\xd0\x80\x2c\x0f\xf7\xde\xbc\xdc\xd9\xdd\x3b\xfd\x6e\x6f\xef\xcd\xd1\xe9\x9d\x81\x7d\xe8\xd2\xc3\xbd\x17\x7b\x3f\xbe\x39\xd5\x9f\x8e\x8e\x9f\x1e\xbd\xdd\x7f\x7b\xfc\x76\xef\xe8\xf4\xf8\xf5\xb3\xbd\xe7\xfb\xaf\xf7\x9e\x9d\xee\xee\xbc\x79\x7b\x7c\xb8\x67\xbf\x76\x0b\xc1\x52\x64\x82\x56\xcd\x58\x26\xb8\x1f\x9e\xe2\x55\xde\x8d\xa6\x82\x18\xf3\x14\xaf\x72\x7b\x34\xa2\x5b\x8c\xf1\xf6\x10\x99\x33\x6d\x94\xad\xae\xcb\x17\x6d\xc7\x3b\x8d\x4c\xa4\x20\x45\x6c\x9a\x6f\xd6\xda\x11\xd3\x8d\x92\x0b\x67\x8e\x28\xa0\xe4\x3b\x75\x94\xfc\x6c\x15\xf4\xab\x99\xb7\x70\x38\xbe\x23\x99\x70\x4d\xb4\x87\xa4\xa0\xaf\x5c\xd6\x7a\xd7\x59\xee\xdf\x76\xab\xdd\x7a\xb8\x43\xd9\x63\x4e\xda\x0d\x62\xd6\x95\xf6\x72\x38\x86\xa8\xdd\x90\x5e\xe8\x0d\xd9\x43\xee\x19\x49\x24\x52\x04\xde\x8f\xc0\x00\x30\xbd\x70\x42\xc3\xd1\xd6\x0d\x46\x14\x43\x54\xd7\x8a\x33\x8f\xc1\x00\x57\x91\xf9\x0e\x63\x0b\x9c\xb6\x78\x32\x95\xdf\xbf\x80\x16\xc1\x2b\xb0\x67\x44\x42\xca\x85\x1b\x7f\xa9\x7f\x16\x70\x23\xe6\x2e\xf7\x2f\x79\x5c\x55\xbd\xe7\x56\x43\x2b\x46\xc7\x2e\x46\x73\x19\xa8\x67\xb8\x0a\xdf\xe5\x85\xc2\x75\x05\xd1\xa5\xa2\x40\xf2\x00\x51\x00\x87\x22\xfc\x7c\x92\x4e\xd7\x8e\x61\xe3\x71\x5c\x02\x3f\xb1\x6b\x5c\x23\x27\x02\xe1\x28\xca\x17\x0a\x61\x63\x95\x07\x8f\x59\x08\xb1\x0e\xe5\x7d\x67\x7f\x86\x63\xe9\xf9\xa2\xbc\xf5\x26\x9d\x9c\x48\x1c\xf8\x5e\x06\x8a\xd3\x94\x54\x17\xe9\x44\x8a\xbf\xd3\xa5\x5e\xb9\x38\xa2\xbe\x36\x35\x89\xb4\xc8\x37\x8a\xea\x9c\x62\x69\x46\xe4\x52\xf0\x71\x93\xb1\xc1\x48\x9d\xd8\x60\x97\xa9\x2a\x88\xba\x43\x58\xf2\xeb\xee\x64\x30\x25\xa3\x64\x92\x4d\x59\x40\x81\xc4\x08\xe9\xb2\x5e\xf1\x33\x17\xfb\x34\x4b\xeb\x69\x84\x3a\x84\x08\xbe\x5b\x1f\x3d\x08\xe6\x30\x1b\x8b\xd6\xec\xa4\x98\x6a\xc2\xfb\xdc\x5d\x3d\x89\xf9\xe8\xb6\xb8\xc7\x7e\xea\xb2\x9f\x1c\x39\x2f\x49\x39\x88\x17\xae\xe1\x87\xc6\xa5\x82\xef\x5f\x5c\x16\x4d\x5e\xb8\x53\xfa\xce\x65\xbf\xb8\xa6\xf9\x4b\x4d\x50\x17\x33\xf6\xce\x05\x0d\xd6\x3b\x77\xf2\xdc\x9d\x76\x18\x7b\xea\x42\xf4\xb1\x37\xf8\x9d\x4b\x9f\xbb\xf4\xa9\x5b\xbb\x29\x28\x33\xb1\xa7\x6e\x21\x4b\x7c\x74\xa7\x79\x0e\x39\x3f\xba\xf4\x85\x4b\xe8\x65\x28\x9a\x2a\x6f\x8e\x7e\x03\x3d\xf9\xc9\x21\x32\xfb\x37\xd0\xc0\x4f\x8e\x78\xa8\x1a\xf9\xc6\xa5\x2a\xa9\xd1\xd0\x37\xee\x54\x65\x2d\x0a\x10\xae\x7f\x5c\x9b\x92\x9f\x36\xd0\x6f\x01\x75\xc7\x87\x2f\x31\x3a\x1b\x3b\x6c\x68\x9e\xb1\x2d\xd3\x65\xf7\x54\x00\x20\xbb\xdf\x77\x90\x54\x91\x27\xb5\xf8\x71\x34\x6c\x28\x1b\x74\x50\x70\x86\xdc\x2f\xb7\x06\x1e\xa2\xad\x11\x45\x94\xd3\x17\xf0\xcd\x89\xd1\x19\x22\x34\xb4\x58\x6c\xa5\x82\xa8\x76\x38\x98\x81\xe5\x79\xd9\x6a\x1f\xaa\x82\x2e\x89\xee\xc0\x69\xfb\x45\xcc\x67\x79\x8e\xe0\x0d\xc2\x87\x60\xe4\x22\x41\xa9\x1c\x06\xe6\xc7\x7a\xbf\xc8\x11\x35\x02\xde\x21\x51\x13\x22\x24\xcf\x3b\x7c\xf2\xa3\x58\x09\xc5\x4c\xe8\xd1\x43\xb8\x23\xd1\xf0\x9f\xce\x10\xa9\x47\x62\x3e\xab\x65\x6b\x54\xd9\xda\x8c\xc3\xce\x84\xf4\x0a\x7d\x73\xa0\x6f\xd7\x61\xb7\xcb\x87\xce\xcd\x99\xbb\xd6\x9e\xdd\xef\xff\xdb\xbf\xfe\x97\xff\xeb\xdf\xfe\xe5\xdf\xfe\x15\x11\xf0\xbd\x9a\xe7\xe8\x8b\x2f\x9f\x0d\xbe\x7c\x3a\x6c\xcb\xec\x7c\xf1\x5f\xfe\x4f\x91\xd1\x49\x80\x19\x1a\xba\x30\x13\xa1\x68\xa4\x2d\xfb\x35\x52\x46\x1d\xb2\x6e\xf0\x3f\x56\x06\x18\x92\xf6\x3b\xf4\xdb\x32\x41\x9a\x58\x97\x06\xee\xdf\xbb\xac\xf3\x9d\x9b\xe7\x4d\x90\xf1\x67\xd8\x31\xcd\x61\x87\xb1\xef\x5c\xbc\x3c\xb3\x87\x05\xfd\xce\xc5\xdf\xba\x78\x59\x50\xc1\x2a\x2e\x9b\xee\x2b\x56\xfc\x3e\x7c\xab\x18\x7e\x74\x86\x34\x1b\x7d\xaf\xe1\xf0\x42\x30\xd3\x82\xb0\x9f\xd9\x5b\x05\x21\xbd\xb3\xca\xc9\x9c\x84\xd5\x65\x41\x39\xb0\x4d\xea\xae\x2c\xae\x34\x36\x93\x70\xca\x1e\x51\xd0\xfc\xf0\xd9\xf9\x85\xff\xfe\x43\x30\x0f\xa3\xc5\xc7\x38\x49\x4b\x0d\x1e\xda\x60\x61\x02\x31\x55\x60\x7e\x1e\x75\x60\x60\x05\x4d\xc9\x24\x04\x20\x69\xab\xaf\xc3\x8e\x53\x2c\xf3\xf1\xf2\x62\x09\xf0\xde\xe3\x4d\xf7\xec\xa5\x15\x47\xbc\xa6\x90\xa5\x11\x1b\x52\x9f\x5d\xa5\xbd\x19\x75\x59\xd6\x9b\x8d\xe2\xed\x68\x54\xe2\x84\x84\x06\xac\xee\x4a\x37\xb2\xac\x29\x01\x57\x6b\xc7\x29\x0e\xaa\xc8\x51\x38\x20\xc4\x86\x24\xba\x60\x33\x5d\xb7\xc7\x06\xa3\xc5\xb6\x37\x22\x09\x9b\x4d\x3c\xcb\x9a\x52\xc1\x80\x29\x32\x17\x50\x88\xe9\x1a\x4e\x92\x29\x0b\x26\x49\xfd\xd2\xbe\xfd\x9d\x4b\x7f\xf8\xc4\x19\x81\x1a\x51\xd2\xe6\xc2\x46\x2c\xf2\x58\xfc\xd8\xca\xdb\xc1\xfa\xb0\x03\x96\xb5\x87\x48\xa0\xb3\x4a\x39\x15\xd0\x05\xdb\x8f\xb0\x4b\x60\x24\xfe\x0c\xcf\x4c\x13\x07\xcc\xe7\x38\xa0\xd9\xf6\x56\xad\xf8\x56\x59\x7c\xab\xbc\xde\xb3\xc8\xf3\x84\xc9\x8b\x62\xa6\xf9\x32\xc2\x0b\x02\xd3\x2a\xb5\x33\x09\xe6\x2c\x4b\xb1\xd6\xe4\x12\x32\xe2\xdb\xde\xc8\xb3\x2c\xe2\xb0\xd9\x38\xc0\xee\xc4\x9b\x52\x8f\xd8\xf2\x6f\x88\x43\xea\x51\x47\x9d\x84\x8a\x5a\x7c\x86\x23\xb6\x50\x4e\xe2\x08\x81\x03\x65\xa5\x1b\x4a\x46\x1d\x29\xe5\x83\x0f\x2e\xed\x9d\x5c\x57\x7d\x1c\xe1\x88\x06\x74\xa2\x08\x34\xf5\xa6\x82\xa7\xb3\xcb\xd7\xb2\x29\xbd\x1a\xaa\x87\xcc\xa3\x61\x41\x7f\x76\x59\x7f\xf2\xe7\x93\x41\xf7\x24\x1b\x0c\x1e\xed\x4d\xfb\x34\x4d\x58\x7f\xd2\x3b\xc9\xee\x0d\x06\x5b\x27\xd9\xf3\xe7\x83\x3d\xf1\xfb\x70\x38\xed\x9f\x53\x9e\x30\x74\x70\xc9\xe3\x59\x10\x5d\xd9\x06\xa8\x8f\x8c\x90\x73\x2f\x31\xae\x7c\x8f\xc7\x86\x2f\x35\xdc\x70\x45\x44\xfb\x90\xa4\x61\xc2\x5e\x39\xe9\x45\x6f\x16\x44\x51\x4c\xe3\x44\xab\x32\x67\x71\x34\xdf\x55\xba\x08\x1a\x25\xad\x6e\x7a\xac\xad\x2d\xeb\xd1\x83\xaf\x70\xfa\x64\xeb\x21\xdc\x0b\xde\x60\x1e\x23\x79\x88\x94\x85\xe3\x30\xc1\x69\xff\xd1\x60\x40\xec\x74\x7b\x7b\x48\x53\x8b\x41\x0a\x27\xa3\x74\xfb\xfe\x83\x07\xa3\xd8\x62\xf7\x1e\x92\x54\xa6\xde\x7b\x50\x4d\x4b\x82\x63\xeb\xde\xc3\xaf\xd2\x3e\x4e\xad\x7b\x8f\x05\x87\xe4\x24\xed\x10\x2b\x3d\x13\xe0\xf4\x36\x4f\xd6\x03\x38\xf1\x55\x0a\x9c\xf0\x49\x3c\xaa\x42\x00\xd4\xf4\x2f\xa1\x65\x01\xdf\x14\x6d\x33\xd0\xa4\x98\x66\xf4\x84\x81\xd2\xc6\x34\xc3\x27\xb1\xbe\x60\xba\x5e\x06\x14\x30\x8c\xe1\x87\xf7\x1f\x0c\xb7\x4c\x9f\x8c\xd5\x55\x56\x75\x45\x3c\x22\x52\x27\x23\xdf\x7c\xa5\x9c\x01\x1b\x3a\xc8\x16\x11\x1a\x76\xbb\xfa\xda\xab\x4e\xab\xae\xfb\x82\x7f\x6c\xb5\xb1\x7c\x36\xdc\x7a\xac\x5c\xc0\x3c\xda\x82\x79\x96\x1e\x45\xca\xe1\x71\xcb\x22\x38\x64\xe9\x84\x4f\xc9\x93\xe1\xd6\xe3\xd2\x2b\x43\x9c\x08\x56\x73\x24\xa5\x3c\xad\xd3\xa3\x19\x93\xcc\x52\x52\xe6\x43\x5d\x44\x46\xd9\x93\xa8\x64\xf1\xb6\x86\xf7\x1f\xdd\x7f\x7c\xef\xe1\xfd\x47\x9f\x6a\x6f\x9b\xf9\x62\xaa\x02\xd8\xc7\xea\xea\xf1\x8c\x65\xd6\x50\x4c\x6b\xd0\xf5\xb7\xc3\x04\xe3\xaa\xba\xae\x43\xfa\x33\xcd\xdf\x1f\x3a\xe1\xb9\x62\xf0\x79\x22\x8d\xd9\x1d\x8b\x89\x52\xe4\xab\x19\xf5\x59\x40\x5b\x1a\x16\x14\xab\x1c\xac\x6f\x9a\x96\xe5\x6c\x57\xf5\xb7\xd7\xec\xcf\x70\xc8\x98\x5f\x01\xc9\x82\x39\xd4\x63\xf7\x1e\x8e\x46\x1e\x80\xa3\xbc\xe3\xc8\xbc\x27\xcc\x1d\x0f\x6d\x6f\x9b\xb9\xd6\xd6\xc3\xf1\xd6\x43\xdb\xeb\x82\xfc\xb4\x78\x72\x41\xe4\xb1\x22\x9c\x73\xb0\x45\xf7\x82\xce\xd9\xbd\x87\xdd\x8b\x51\x35\xd5\x51\x82\x2f\xac\xcb\x2f\xe7\x84\x08\x9c\x1d\x26\xf8\xb2\x3f\x27\x45\xe3\xfb\x82\x80\xbe\xc1\x4f\xb0\x43\x67\x34\x63\x0c\xdc\x94\x0d\xa8\x65\x65\x45\x61\x59\x0e\xb5\x2c\xbf\x28\x19\xfe\x92\x0c\x51\xb7\x65\x27\xc8\xa8\x0f\xa3\xf6\xb8\x59\x7c\x4d\x84\xaa\x1b\x57\xad\x07\x84\x28\x4d\xb8\x78\x19\x04\xa3\xa0\x49\xd2\x70\x53\x9b\xc9\x57\x15\xd5\x1f\x11\x1a\x24\xab\x2c\xe9\x2c\xd1\xda\xc4\x45\xb2\xa2\x4d\x5c\x61\xac\x10\xa1\xde\x27\xb2\xd4\xac\x49\x2e\x12\x26\x7d\x83\x5c\x26\x12\xff\xe3\xfb\x84\xce\x5b\x51\xd6\x65\x32\x49\xbb\xc3\x69\x9e\x63\xf5\x54\x9a\x0d\x60\x3c\xb6\xbf\x9c\x9c\x9c\x78\xca\x61\x08\x59\x22\x2b\xb5\x50\x41\x10\x45\xe7\x3e\x12\x23\xbe\x49\x36\xb8\x1a\x6e\x73\x22\x92\xd6\xc2\x8b\xd4\x2f\x37\xb7\xad\x55\xe5\xe3\xe4\x22\x01\x07\x27\x34\x64\xf7\x3f\xe1\xa4\x84\xd7\x24\x02\xf0\xe7\x12\x8e\x08\x67\xe5\xc1\x13\x16\x1c\x6b\xb7\x4b\xe8\x4d\xcd\x3d\x56\x51\xd0\x33\x41\x3f\x3a\x77\x31\xf9\xcf\xd3\x5c\xde\x5f\xbf\x4a\xd8\x12\x75\x90\x8d\xbe\xdc\x1a\x22\x8a\xee\xc2\xd3\x23\x44\x11\x86\xa7\xc7\x88\x22\x02\x4f\x5f\x23\x8a\xfe\xb3\x78\x7a\xb4\x87\x28\xfa\x72\x6b\x80\x6c\x64\xa1\x82\xee\xb4\xce\xf4\x15\x58\xec\xd2\xa3\xd6\x8f\xf2\x52\xc7\xca\x7c\x95\x5d\x3f\x4b\xe8\x4e\x42\x0a\x7a\x90\xac\x3b\x91\xe6\x25\xaf\x04\xcc\x09\xe3\x9a\xd9\x33\x11\x51\x7e\x48\xa2\x32\x4c\x21\x0e\x59\x34\xf1\x05\x0f\xa5\x92\x64\x9c\x74\x5d\x84\xc1\x99\xa6\xf4\x9f\xf3\x81\xdf\xd8\xe7\x09\x8e\xcb\x28\x86\x4a\x1f\x05\x69\x72\xab\x31\x24\x83\xb8\xd1\xbd\x15\x38\xb8\xf0\x13\x6d\xa0\xa6\xa9\xf7\x80\x1e\x24\xb8\xfe\x01\xbc\x15\x5d\xb7\x0c\x28\x7d\xb2\xbe\x1b\xd1\xeb\x28\x35\x78\x18\x65\xe7\x17\x55\x00\x27\xb1\xd3\x4f\x05\xb1\x5e\x75\x49\x37\x4b\x1a\x7a\xf5\x4d\xfb\x84\xea\x9d\x68\xbb\x09\x5e\x24\x62\xc2\x55\xdf\x48\xdd\x72\x0a\x55\x05\xd6\x85\x47\x2f\xa9\x19\x51\x81\xe5\x54\xc8\xd2\x9e\xae\x18\xb8\x22\x2c\x9d\x77\x49\x75\x44\xc9\xd4\x28\xdf\x9f\x2a\x9d\x69\x23\x29\xc6\xc7\x71\x4f\x4c\x7d\x65\x19\x05\x49\xda\x0c\x4a\x7c\xa3\xea\x75\x4a\x28\x78\x7f\x78\x9f\xd4\x15\xa0\xda\xd1\xe5\xfb\x84\xae\x23\x91\x91\x3a\x29\x58\x33\x76\x59\x37\xd4\x6f\x5a\xe4\x2b\xe6\x32\x90\x07\x9e\x33\x75\x1b\x6c\x96\xe0\x60\xc3\x2c\xa3\xd2\xf0\x6e\x46\xb3\x85\xe7\xa4\xfc\xf8\xf0\x65\x5d\x16\x2a\x54\x72\xbd\x90\xbd\x97\x14\xda\x10\xbf\xc3\x58\x46\xfc\x19\xbe\xc1\x19\x21\xad\x3a\x39\x9c\x0a\x9c\x9e\x11\xcd\xd6\x82\x97\x68\x40\xc7\x99\x62\x48\x81\x11\xd5\x1e\xdd\xca\x30\x39\x40\x12\xc1\xb4\x05\x47\xcc\x4d\xf0\x7b\xac\x26\x94\xa8\x62\xa4\xc9\xba\xe6\x39\x76\x57\xd9\xd9\x3c\xef\x94\x29\x52\xef\xb4\x06\xb2\x7b\xd7\x0b\x88\x14\x6a\x24\xfc\x63\xc6\x43\x97\x1b\x57\x7e\x7a\x61\xc8\xf9\x35\xb6\x10\x19\xcd\x6a\x5b\x4d\xe9\x65\x2c\x84\xd4\x3e\x73\xcb\x84\x42\x31\x3e\xc0\x84\x18\x7e\x68\x64\xe4\x0a\x67\x34\x21\xa6\x59\xaf\x21\x51\x05\xb3\x49\x32\x85\x52\x92\x59\x3f\x48\xf0\x8c\xae\x1b\x30\x8d\xd1\x58\xc0\x56\xa6\x8f\xce\x06\x64\xac\x0d\x7d\x86\xc4\xce\xec\xcc\x02\x4a\xfa\x21\x61\xef\x93\x9a\x0a\xe8\x7d\x84\x3f\x24\x74\x29\xa3\x61\xac\x38\xb6\xb8\x4e\xf0\x9a\x98\xb3\xa5\x2f\x2c\x2f\xd4\x46\x19\x85\x25\x66\xa8\xba\x9e\x56\xc3\x96\x03\xa6\x61\xaf\x04\x1a\x4c\x0a\x2a\x95\x26\x0d\x05\x72\x5b\x6b\xc3\xea\x8a\x1f\x2f\x5b\x84\xc3\x30\x8d\x74\x62\x06\x6d\xad\x38\xea\x22\xe1\x24\x02\x8b\x7d\xc6\x58\x3c\x96\xe8\xd0\xe5\x38\xa2\x43\x62\x47\x96\x35\xe2\xcd\xde\x34\xa4\xfa\xdf\xd3\x95\xb2\x1b\xa1\xec\xc6\x8a\x1b\xb5\x58\x9a\x53\xf1\x49\xac\x3b\x53\xb9\xe0\x11\x69\x4d\x14\x02\x87\x1b\xe7\x3c\xdd\x59\xf1\xa8\xf8\x57\xf4\xa6\x74\x61\x56\x76\x29\xb2\x2c\xc2\xab\xc9\x09\x4b\x1e\x18\x12\xe5\xae\xa9\x54\xd3\xf4\xc2\x49\xfe\x90\x99\x51\xd3\x62\x59\xab\x13\xd3\x19\x68\xf3\xd4\x61\x41\x93\xc6\xba\x6c\x02\xc9\x5a\xfb\x42\x38\x2a\xc1\x24\x62\x71\xd9\x0b\x9f\x75\x86\xd4\x91\x5d\x71\x19\xec\x4a\x79\x67\xb4\x24\xa5\x89\x64\xea\xa3\x49\x32\x25\xaa\x4f\x8e\x69\x62\x7f\x1c\x69\xe8\x49\xba\x5d\x01\x3f\x18\x42\x81\x68\x3c\xef\x12\x32\xf2\xf3\x3c\xaa\xef\x7c\xbd\xe1\x0b\x42\xe3\x26\xa0\xc1\xdd\xe1\xf5\x73\x5e\x7a\x4b\xbf\x23\xb5\x89\xe5\x20\xa3\x8a\xfc\x86\x6c\x30\x0a\x9f\x94\x87\xf4\x42\x2c\x5b\x4a\x21\xd4\x9f\x84\xda\xeb\x62\x08\x32\x83\x90\xf0\x26\x1c\xa6\x7a\x1b\x2e\x2b\x91\x65\x39\x2a\x4e\x07\x34\x25\xd2\x68\xb0\xe0\x12\x24\xd4\x68\x52\xc1\xbd\x37\xfa\xaf\x94\x4d\xed\x0e\x06\x69\xb8\xbe\xfa\x31\xf3\x39\xfe\xdc\x60\x92\xf4\x1e\x59\xdb\xc8\x31\xc6\x9c\x85\x52\x4d\xa4\x34\x0a\x1c\x68\xa6\x3c\x5f\x92\x06\xe2\xed\xf6\xfb\xa7\x8a\x6b\x50\x46\xc3\x05\x55\xf6\xe5\x9f\xc8\xad\xed\x8a\x8b\x8a\xe0\xdd\x5e\xa0\xb2\x42\x2f\x56\xd4\x85\x05\x1c\xb2\x7d\x48\x68\x90\xd0\x0f\x49\xc5\x8c\xc8\xc4\x5a\xcc\xc5\xb6\xc8\x05\x29\x6d\xdd\x4d\xeb\xce\x1a\x49\xca\xe4\x56\xd2\x3e\x11\x8f\x12\x2c\x57\x19\x1c\xa2\xc0\x9b\x22\x87\x15\xbb\x22\x19\x3e\x13\x81\x4f\xdf\xd5\x4e\xc7\x1c\xb7\x72\x1b\x2b\x6e\x77\xb5\x2f\xdf\x9f\xdc\x82\x2e\x57\x32\xdb\xef\x05\xe5\xff\xc9\x6d\x8d\xf5\x94\x24\xad\xc9\x59\x92\xe7\x7f\xb9\xef\xe0\x9a\x42\x8f\xd5\x8e\xa6\xd6\x41\xcf\x34\xf1\x0d\xe6\x8d\xb0\xeb\xf2\x8e\xbc\xbc\x27\xb8\x3e\x6e\xc6\xd8\x5e\x24\x5d\x87\x81\x85\xb8\x8a\x2c\x0b\x5e\x9b\xb3\xa4\x0a\x35\x2b\x0f\xbc\xb2\x04\x14\xda\x18\xb9\x51\x98\xf2\x30\xed\xca\x0b\x3c\x79\x1e\x0b\xc1\x70\x25\x99\x22\x67\x21\xf6\x21\xc4\x61\xea\x5f\x77\xaf\xae\xae\xba\xb3\x28\x9e\x77\xb3\x38\x90\x22\x84\x37\x52\xb7\xb3\xd9\xf1\xdb\xe7\xdd\xc7\x70\x76\xf1\x22\xc5\x9c\x2e\x45\x67\xed\x00\x0f\x68\x75\xaa\x46\x55\x4f\x20\x19\x9c\xc0\x12\xaa\x36\x33\x27\x84\x26\x49\xdd\x62\x21\x2a\x83\xb7\xee\x26\xf4\x4d\xc2\x5a\x96\x50\x90\xa3\x23\x70\x51\xbe\x48\x0a\xfa\x36\x81\x53\x5a\x50\x03\xd1\xc3\x84\x45\xbd\xe3\xc3\x97\xf4\x65\xc2\xde\x24\xbd\x95\xb2\xf4\x35\xa4\xea\xe2\x74\xbf\x14\x8c\x8f\x5b\xa4\x5e\x44\xe8\x9d\x86\x92\xee\x99\x7a\x5b\x44\x57\xf4\x95\x90\xe7\x76\xba\x3f\x3b\xdd\x5f\xa6\x7d\xfa\x5c\xbc\x9d\x78\x56\xb7\x57\x26\x7d\x14\xc2\xb1\xd7\xa7\x4f\x13\xd6\xff\x33\x1e\x5c\xe7\x83\x1f\x49\x9f\xbe\x10\x6f\x93\x41\xf7\xd1\xd4\xba\xd3\xa7\xbf\x88\xb7\x13\x4f\x3c\xbe\x83\x0f\x27\xde\x4e\xf7\xb9\x10\x84\x45\xd2\x37\x50\x69\x36\x18\x0c\x06\xf0\xfb\x35\xfc\xee\xc0\xef\x33\xe3\x8b\x2f\xfb\xf6\xf8\x4f\x93\x93\x93\xe9\xb4\x4f\x7f\xbc\x3d\x6b\x2d\xe7\x4f\xb2\x1d\xc8\x0a\xda\xcd\xe1\x73\x63\x6a\xe5\x6b\x29\x77\xfa\xe7\xf4\xbb\xb2\xd6\x46\x7d\xd3\xfe\x39\xfd\x76\x55\xa2\x2a\x25\x43\x50\x7d\x4c\x10\x63\xbc\xe2\xf9\x64\x1c\xf1\x29\xea\x54\x89\x1a\x4f\x74\x87\xda\xe3\x12\xda\x0f\x2f\x9d\xc0\xf7\x8c\x8b\x28\x49\x11\x9c\x9b\xe2\x90\xfd\x20\x20\x59\x31\x8c\x54\x64\xde\x90\x3d\x85\xb3\x17\x16\x96\x86\xec\x4e\x06\x0e\x0c\x05\x45\xbf\x4d\x5f\xb9\x72\xfb\xbf\xb2\xf4\x49\x28\xea\x21\xa2\x45\xd6\x1e\x22\x35\x9d\x5b\x54\x57\x7d\x09\xea\xcc\xa7\x54\x31\x2c\x3f\xbb\x32\xaa\x4e\x48\xc6\x70\x24\x85\x2c\x27\xc1\x21\xb1\xab\x80\xb3\x5a\xac\xed\x21\x02\x8e\x58\xbf\x49\x64\x09\xbe\x79\x22\x94\x73\x08\x1c\xb2\xef\x13\x91\xef\x33\xa6\x40\x0c\xfc\xc7\x4f\xd4\x2c\xe5\x19\x60\x83\x7e\x70\x45\x57\x24\x99\x8b\xeb\x5c\x59\x68\xb1\x28\x03\xcb\x40\x9a\x66\xa4\x6a\xa3\xa0\xdf\x6f\xd0\x03\x57\x02\x1f\x4b\xeb\xd3\xe7\xcf\x70\x52\xaa\x03\x10\x62\x2c\x99\x94\x76\x89\xc3\xa9\x69\x26\xca\x09\x2e\xe6\x4c\xa7\x93\xed\xfb\x95\x5b\x57\xd9\xdb\x8a\xd0\x00\x1f\x0b\x80\x85\x20\x82\x40\x02\x0e\x28\xcb\xec\xfe\x0c\xfb\x6c\x38\xa0\x51\x0d\xc3\xa2\x01\xd2\x8e\x25\x00\x2e\x05\x27\xc5\x9e\xaa\x59\x8a\xc8\x78\xf8\xd0\x7e\x4c\xa3\x92\xb9\x79\xcc\x98\x3f\x1e\xda\x5b\x84\xc8\x93\xf4\x88\x38\x62\xf9\xb5\xeb\x49\x3c\x1c\x88\x0c\xbf\x24\x36\x64\x7c\x91\xd8\xef\x12\xa2\xeb\xaa\x3a\xe2\xb0\xf2\x2a\x42\x44\x7d\x52\x84\x3a\x80\x00\xdc\x7d\xa8\x0f\x46\x40\x2d\x0b\x27\xb1\x18\x22\xe3\xdd\xa1\x3c\x07\xdc\x66\xcf\x12\xbc\xf5\xe0\x21\x7d\xd0\x2d\x17\x52\xb2\xe5\x25\xa8\x6f\x6f\x3d\x78\x50\xff\x02\x73\xe5\xb2\x50\xcd\xa8\x6c\x23\xac\xf3\xff\xae\x05\x0d\x7d\xa5\xaa\xbe\xd7\x8d\x4b\xf8\x74\x0b\xfa\xc3\xa7\x97\x76\x32\xa0\x8d\xff\xa7\xca\xee\x18\xee\x73\xcf\xd8\x80\x2e\xda\xee\x68\xea\xa9\x9f\x11\xb8\x88\x81\x6c\xb8\x2f\xa3\xf0\x83\x2d\x68\xae\xce\x51\xa2\x85\xd1\xcc\x62\x5b\x34\x60\x96\xba\x2c\x32\x5a\x60\x22\x85\xeb\xc7\x42\x74\x57\x99\x74\x79\xa8\x4c\x6e\x54\xc9\x89\xde\x37\xcd\x77\x6a\x81\xc5\xb7\x11\xe1\x6c\xf8\xf0\x2b\x5e\x39\xda\x15\x13\x34\x7c\x48\xe8\xcc\xb2\x68\x68\x59\x50\x53\xaf\xd6\xad\x41\x25\x05\x80\x2e\xa2\xcb\x42\x9a\x6d\x3f\x2c\x7b\xa7\xd6\xb0\xec\x55\x24\xa7\x20\xde\x1e\xa8\x00\x5f\xba\x36\xd3\x8c\x9f\xdc\xaf\x8d\xca\x02\xf7\xa1\x1f\x6b\x9d\xab\xd7\x39\xfa\xd8\xe8\xf5\x12\xc0\xb9\xd9\xe9\xf2\x0a\x37\x8b\x48\xc4\xfc\x12\x30\x07\x22\x41\x55\x15\xb1\xe1\xe0\xab\xc8\xf2\x0b\x38\x4e\xa9\xc0\x04\xda\x07\x2b\x91\xad\x07\x0f\xbf\x12\x0f\x56\x44\xb7\x3a\xcc\xb2\x62\xd3\xbc\xdf\x61\x71\x9e\x67\xb2\x87\xe2\x45\x17\x92\xec\xf8\xea\xc2\x89\x99\xeb\x88\x17\x99\xab\x04\xcb\x2a\x69\x94\x4c\x32\xcb\x9a\x32\x5e\xa2\x26\x65\xc8\x12\xd4\xba\xa3\xd6\xb8\xa8\x7f\x95\xb7\x83\xb2\x6e\x40\x33\xf6\x68\x34\xe8\xb0\xcc\x34\x9d\xed\xc1\x88\xb8\x4c\xf4\x99\x26\x93\xac\xdb\x9d\xb2\x64\x12\x58\x4e\x77\x28\xde\x03\xab\xdb\x75\xa6\xca\x69\x9e\xe8\xc5\xe3\x4e\x05\x25\xd5\xa5\xc9\x9f\x37\x42\x38\x00\xc0\xaa\x8b\xc1\x54\x03\x95\x3c\xc5\x12\x70\x05\xa2\x0d\xef\x65\xa1\x54\x5c\xa6\x5f\x6e\x3d\x78\x48\x68\xca\xee\x24\x38\xed\x8b\xe7\x2a\x38\x42\x85\xef\x5b\x42\x27\x57\x75\x03\x22\x6e\x3f\x3c\x03\x90\x0a\xd9\x50\xd9\x3b\x09\x44\xad\x94\xae\x8f\x47\xbe\x65\x11\xe9\x1d\xde\x9f\x8e\x71\xb4\x1d\xca\x40\x3c\x34\x64\x11\xa9\xe5\x27\xb6\x26\x23\xe0\x0f\x97\xf9\x84\x5a\x56\x54\xf9\xe2\x6f\x96\x83\xc3\x2e\x35\xd4\xc7\x30\xd4\xc8\x34\xc1\x43\x18\x9c\xd7\xe3\x08\xdc\xa7\x75\x86\xa2\x05\xc6\xc2\x31\xe6\x16\x0b\xc7\xc8\x16\xff\xdb\x88\x46\xac\x23\x1a\xe4\x16\xe4\x6f\x78\xd0\xa7\xe1\x93\x47\xea\x22\x8b\x8d\xaa\x30\x2e\x95\x97\xd2\x52\x69\x4f\xd3\x0c\x2c\x11\x32\xf6\xbd\xb4\x15\xc8\xe8\x12\x19\xc8\x1e\xd2\xbb\xe8\xae\x3d\xa4\xe8\x89\x78\x46\xdb\xf0\xfb\x9f\x90\x3d\x2c\xc4\x86\x50\x99\xb9\xc8\xfc\x05\x7c\x1a\xc3\xef\x12\x7e\x0b\x99\x2d\xd6\xd9\x42\x91\xad\x0f\x9f\x6c\xf8\x1d\xc1\x2f\x83\xdf\x3f\xc1\xef\x04\x7e\x4f\x4e\xe0\xcf\x14\x7e\xff\x0c\xbf\xb9\xac\x2b\xca\x5a\xcd\xfc\xde\x26\x38\xa5\x83\x4a\xb6\xd9\xbe\xb7\x65\x9a\xe1\x93\xe1\xd6\x23\xb8\xb6\xc4\x69\x4a\xc6\xa9\xdd\xaa\x90\x2f\xa8\x9f\xb1\xe5\x2c\x5d\xd8\x5b\x43\x0a\xb1\x65\x61\x11\xc1\xdc\xe4\xf1\x80\x4a\x13\x9a\xfb\xf7\xef\xd1\xab\x44\xbc\x5f\x25\xf0\x56\x50\x27\x6b\x3d\x10\xc0\x7e\x46\xd3\x5e\xe2\x5e\xf0\x39\xb8\xe3\x6f\xcb\x85\x00\xf7\xd6\xcc\x71\xe0\x7d\xe1\x24\xc9\x55\x14\x7b\x05\x4d\xda\x0a\x75\x52\x65\x4c\x93\xf6\x5c\x27\x0c\xa3\xf4\x29\xdf\x79\xea\x24\x42\x2c\x57\x41\x71\x05\x94\xab\x96\x0b\x9a\xb5\x4e\x54\x69\x82\x5c\xb9\x72\x37\xcd\x57\x0a\xf9\xa5\x35\x1e\xd2\x34\x25\xda\xc1\x61\x83\x4a\xe4\x79\x87\x9b\x26\xca\x91\xc0\xd3\x05\x0d\xb2\x8d\x91\xff\x8c\xb4\xc6\x0a\x64\x59\xe9\x62\x1d\x8c\x19\x4c\x13\xd7\x7a\x90\xe7\xa8\x8f\xe4\x55\xcb\xb2\x2d\xb8\x39\x29\xe0\x80\x41\xd4\x4f\xa9\xd8\x14\x0f\x5f\xc0\x03\xd8\x0e\xb6\x9e\x31\x2d\x9c\xf4\x02\xb4\x83\x8a\xfe\x76\xc2\xf5\xd9\x31\xcd\x21\xe8\x38\xb2\x0c\xf3\xc9\x00\x6c\x15\xf2\x9c\x4b\xfa\x5d\xd0\x45\xeb\x92\xf5\x90\x8c\xf3\x8f\xbe\xdc\x92\xb6\xc5\x4d\x56\xb6\xa0\x1e\xec\x9f\x0b\xf8\xbd\x84\xdf\x39\xfc\xde\xc0\xef\x39\xfc\x9e\xc1\xef\x15\xfc\xee\xc0\xef\x11\xfc\x1e\xc0\xef\x1e\xfc\x5e\xc3\xef\x29\xfc\xbe\x87\xdf\x0f\xf0\xbb\x0b\xbf\x6f\xe0\xf7\x2d\xfc\x1e\xc2\xef\x4b\xf8\x7d\x9d\x6d\xb2\x15\xaf\x1d\x08\x84\x79\xee\x65\x34\x60\x03\x3a\x13\xf8\x4f\xb9\x30\xe8\x0c\xe9\x05\xeb\x0c\x25\xcb\x97\xe7\x58\xcf\x92\xc8\x52\x41\xa9\x7c\xd3\x30\x2a\xdf\x24\x77\x2a\x76\x4b\x0a\x21\xa1\xcb\x67\x27\xbd\x10\xc8\x3b\xed\x81\x7b\x1b\x9d\x3c\x8b\x9d\x73\x21\x6d\xeb\xf7\x55\x30\x16\x3d\xa9\x1f\xee\xfd\x94\xc8\x7b\xc5\xf5\xb4\xef\x20\x8d\x46\x92\x87\x1e\x05\x4f\x58\x75\x10\xa6\xaf\xd1\xfa\x2c\x9a\x04\x53\x9a\xa9\xfb\xb3\x5e\x66\x2b\xdf\xab\x1d\x0d\xe9\xbe\xa4\xa5\xe1\x2a\xa7\x2e\x07\x8e\x46\x19\xbb\xcc\x46\x42\x48\xf7\xc3\x8c\x17\x33\x8b\xf9\xcd\xd5\xa6\x19\xbb\xc8\xea\x97\x70\x2f\xa0\x0d\xdf\x34\xf1\xf3\xb2\x89\x3c\x47\x16\x62\xcc\xcf\x73\xd4\x55\x7f\x05\x10\xf9\x84\xac\x57\x58\xb2\x13\xc0\x57\xf9\xb7\xf7\x0e\x16\x4f\x74\x51\x2c\x65\xd5\x4d\x51\xc4\x34\xa5\x28\xd6\x61\x80\x88\x66\xa4\x02\xfe\x99\x69\x62\x37\x83\x60\x9c\xa5\x83\x56\xb1\x68\xa4\x6d\x7f\x28\x64\x43\x6a\xbc\x58\x09\x16\x33\x5a\x6a\xb0\x2f\x23\xdf\x93\x0d\x9a\xa6\x9f\x4d\x74\x96\xa9\xae\xdb\x34\x71\x0d\x32\x08\x91\x5d\x5f\x6d\x6e\x9c\xb1\xd3\xcc\x56\xd5\xc0\xcd\x2b\xd5\x52\x3d\xc7\x5c\xe5\x18\x67\xec\x2a\xb3\x01\x61\x44\x93\xc0\x1a\x4e\xc7\x38\x63\x37\x19\x0d\x2c\x8b\xd8\xb8\x0d\xa8\x06\x0a\x22\x95\x9d\x07\x12\xab\xf7\x36\x23\x45\x6d\xf9\x2e\x25\x88\xc4\x79\x1e\xaf\x55\x60\x9a\xe8\x0b\x58\x93\x0d\xab\x01\x56\xca\xad\x85\xc0\xdc\xa2\x9c\x36\x3d\x2a\xbd\x3f\x62\xd9\x29\xa5\xd9\x2d\xf7\x4a\x2c\xff\xd6\xb7\x0b\xec\xb5\xb6\x71\x65\xec\xa5\x82\xc2\x22\x63\x7a\x56\x75\x3b\xe3\xd3\xcc\x3e\xaf\xa0\x58\x0e\x74\x0e\x03\x45\x7d\x31\x20\x40\xbb\x1d\x35\x8b\x64\x99\xb1\x5a\xee\x22\x63\x3b\x30\xa7\x75\x20\xbf\xd1\x85\x61\x60\x19\x3b\xaa\x1a\x7f\xb3\xda\xd0\x39\xe4\x5d\x1f\xbc\xcf\xd8\x6e\x42\x6a\x68\x25\x2e\x1f\xeb\xe8\x25\x2e\x1f\x35\x9a\x89\xe1\x8f\x46\x34\x31\xfc\xf9\xbc\xa9\x2c\x99\x53\xd9\x73\x4d\x56\x7c\xd3\x94\x5a\x8b\x8c\x9d\x65\x55\x9e\x31\x8c\xee\xef\xd3\x41\xd8\xc6\x87\x59\xb5\xf9\x25\xa0\x2d\xff\xe8\xd6\xe5\x6e\x00\x69\xb5\xb1\x74\xc5\xdf\x75\x5d\x56\x40\x5c\x00\x73\x7d\x4f\x9e\xc9\x3d\xe9\x48\x94\x25\x41\xd6\x34\xc5\xda\x69\x04\x29\xd3\xfe\x76\xd3\xd5\x9c\x0b\x01\xdf\x52\xba\x12\x7b\xa1\xbe\x0f\xae\xa0\x67\xb0\x43\x1a\x3b\x69\xa6\x99\x97\xc0\x1a\x12\x52\xee\x87\x95\x5d\xb4\x53\xdb\x82\xb5\xf1\xc0\x76\x2a\x1b\xaf\xe5\x3f\x92\xf9\xff\x24\x77\xdd\xc2\x34\xf1\x8c\xa1\x2f\xef\x0f\x90\x35\x23\x14\x7c\xef\x38\x82\x18\xce\xaa\x13\xb0\x4b\x36\x18\x5d\x56\x51\x98\x2e\x2d\x4b\xb2\x02\x73\xe6\x4c\x2e\xa7\xa5\xf4\x3e\xcf\xf3\x0b\xf9\xe1\x86\x45\x19\x9e\xd3\x38\x23\xa3\x8b\x71\x35\x6f\x16\xbb\xb1\xab\xb9\xb5\xd8\x8d\x9c\x8e\x0b\xd6\x19\x14\x02\x91\x97\xb2\x27\x6c\x6a\xc5\xc5\xf9\x8a\x59\xf3\x15\xaf\xb6\xbe\xdf\xc4\xd2\x2d\xa4\x52\x6a\xb6\x8a\x54\x9d\x2c\xbd\x88\x62\x3f\xbd\x41\xa3\xa0\x2b\x87\xa5\x86\x61\x0d\xa9\xa2\x7b\x07\x6a\x59\x04\x15\xad\x4f\xec\x41\x26\x1d\x61\xec\xc1\x84\x85\xa6\xb9\x4a\x67\xc4\x24\x7f\xc8\x1a\x04\x53\x92\xdb\x3c\xf7\x94\xcc\xff\x7b\xc7\xa1\x88\x56\xeb\x58\x2a\x85\xa2\xca\xb0\x89\x00\xd7\x88\xac\xcb\xbe\x15\x92\xcc\xac\x54\x3d\x81\xe9\x9d\x1a\xf8\x6e\x56\x52\xde\x6a\x10\xa0\xfd\xf5\xc7\x1e\xeb\x0c\x6c\x34\x95\xfd\xc3\x1e\x08\x8b\x62\x82\x4a\x1d\xc0\xed\x5d\xbc\xb5\xdd\xeb\x8c\x86\x8c\xed\x69\xc1\xbe\x0e\x9c\xd7\x72\x93\x7e\x6c\xf2\x55\xbf\x6b\x1e\xf3\x3c\x54\x8a\xc5\x0e\x9b\x11\xe5\x79\xbf\xd4\xbd\xcc\xe8\x70\x00\xda\xcc\xf3\xed\x87\x0f\x1e\xdc\x7b\xb0\x3a\x02\x31\x81\x68\xa4\xf6\xb1\x5a\x8d\x73\xc6\x58\x9d\x1b\x91\x57\x6b\xce\x01\x7e\x8a\x1a\x63\x35\x12\x53\x5a\xcd\x64\x5b\xcd\xc5\x2a\x90\x9d\x36\xe9\x9a\x04\x31\xba\x42\x59\x48\xc6\xde\x57\x58\x5d\xb0\x15\x32\x5f\xa7\xa4\x83\x02\x14\xdf\x34\x41\x51\x53\xc6\x15\xfc\xf4\x7b\xe8\x9b\xa6\x5d\x9f\x5f\xc5\x26\x0a\x14\x64\x58\xeb\x65\x83\xea\x2e\x00\x01\xe9\xe0\xd3\xb5\xcf\x60\x7f\xac\xd1\x96\xdf\x3d\xb2\x36\x0a\x51\x87\xbe\xf7\x35\x86\xa4\x9a\x7c\xb9\xcb\x25\x67\x12\x57\x58\x20\xae\x98\xdb\x0d\xa3\x33\x4d\x9c\x65\x58\x76\x49\x89\x85\xe3\x3a\xeb\x58\x7e\x21\x76\x63\x30\x2b\x23\x95\x7d\xfb\x20\x25\x82\x95\x9d\x20\xbb\xb8\xba\x25\x54\x68\x26\x10\x48\x67\x82\x21\x79\x53\x63\x48\x60\xdf\x82\x0d\x9d\x6c\x13\x21\xda\x00\xe0\x72\x87\xb7\xef\x61\x14\x44\xae\x13\xc0\x46\x87\xdb\x46\x51\x22\xb9\x72\x55\x17\xa9\x2a\x2b\xb1\x4c\xd1\x90\x7c\xea\xd0\xbf\x0b\x83\xaa\xd0\x9f\xe8\x29\x5d\x25\x65\x65\x69\x3d\x84\x10\xc6\x2b\x3e\xa9\x97\x2f\x4a\x12\xee\x77\xd8\x6e\x22\xe6\xbd\xaa\x88\xac\x54\xb0\x0e\x03\x23\x95\xde\x04\xe1\x5a\x37\xdf\xdc\x32\xf7\x25\xd6\x11\xf3\x8d\x57\xd6\x41\x22\xa2\x1e\xc8\xfa\x38\x11\xff\x66\xa4\x29\xa8\x11\xa9\x01\x80\x1c\xa2\xf2\x9e\x52\x07\x24\x32\x5d\xbf\x8d\x31\xec\x81\x55\xc4\x50\x36\xbe\x22\x91\x10\x7b\x21\x56\x7e\xfc\x99\xd9\x6d\xdc\x2a\xb1\x41\x1e\xad\xd4\x01\x50\x2a\x57\xba\xb9\xe4\xb3\x8a\x55\x19\x10\x0b\xd9\x88\x34\x44\xa4\x19\x21\xb4\x55\x50\x83\x13\x1c\x39\xa9\x2b\xf3\xa6\x62\x2d\xd6\x7a\x00\x27\x40\x52\x51\xa2\x76\xcd\x88\xa8\x0c\xca\xf8\x74\x24\x2b\x19\xe3\x95\x95\x24\xb6\xac\x15\xfa\xbc\xba\xf6\xa4\xa4\xfd\x51\x86\x7d\x1a\x66\xa4\xbe\xf0\x6f\x33\xfb\x13\x95\x8e\xdb\xea\xb4\x35\x18\x96\x7d\x55\xd5\xa7\x19\x69\xd4\x7f\x98\xd9\x25\xfc\x8e\x75\x21\x74\xb7\xb6\x56\x63\xd5\xae\xc5\xc0\xbe\xd8\xae\x5e\x65\xf3\xe8\xcb\xad\x7b\xc8\x2e\x2b\xb7\xdb\xba\x53\x6f\xf1\x65\x56\xeb\x9c\xce\xa9\x7a\xc7\x33\x42\x8a\xc0\xb2\x8a\x82\xee\xb7\x28\xc3\xe0\xd8\x55\x5b\x8e\xee\x67\x54\x9d\xb2\x47\xeb\x76\xa1\xed\x96\x38\xd5\xd5\x5a\x42\x5d\xb6\x9f\xe0\xb8\x66\x16\x8a\x0a\xd2\x08\x52\x02\xfe\x1b\xa3\xba\xcf\xad\xfd\x8c\x70\x76\x9c\xe0\x88\x94\xb8\x2c\x64\xaf\x33\x0c\x77\xdd\x54\xcd\x11\x59\xbf\xe7\x1c\xaa\xbb\x0a\xaf\x33\xec\x52\x1f\x0e\x5d\x28\x6f\xcd\x26\xef\x74\xb8\x8d\x4b\x9c\x70\x59\xe9\x65\x42\x33\xf6\x3a\xc1\x09\x19\x65\xbd\x75\x8b\x54\xec\xca\x45\x21\x34\xab\x4c\x9b\xea\x07\x68\xea\xbb\x1e\x7f\xa2\x38\xb6\x82\x3a\x79\x8e\x63\xb8\xb1\xc9\xee\x64\xca\x25\x0c\xa1\x71\x2f\x8a\xfd\x73\x3f\x64\xcf\xea\x69\x60\x5f\xe9\x46\x01\x7b\x55\x4f\x2d\x25\x95\xe7\x8d\xbc\x5a\x52\xf9\x58\x4f\x85\xfd\xfa\x74\x35\x05\x4a\xbf\x68\x94\x16\xbc\xcf\x2f\xcd\xfa\xd4\xdd\xd5\x77\xf5\x54\x39\x4f\xec\x9b\xf5\x34\x35\x77\x3f\x36\xda\x72\x92\x0b\xf6\x53\x99\x42\x0a\x7a\x9c\xb1\xfd\xac\xe6\x28\xe0\x4e\xb6\xee\xe2\xe3\xb8\x6e\x3b\xad\x64\xfe\xb0\xa6\xec\x86\x2b\x49\xa5\x34\x16\x29\x8a\x44\x7d\xc5\x0b\x53\x47\xab\x70\x5d\xa6\xb6\x0e\x9c\x6c\x6b\xc8\xa7\x19\xe3\x02\x61\xd5\x0d\x26\x05\xf4\x8d\x71\x66\x31\xd4\xef\x23\xea\x4a\x1e\x50\xbc\x87\x16\x8e\xc7\xc8\x46\x56\x0c\xb1\x85\xd1\x9f\x10\xa1\x99\xc5\x7e\x4e\xe0\xee\x91\x2c\xe9\xcb\xac\x22\x97\x4f\x88\xad\x31\x1e\x57\xc9\xfd\xbe\x2c\xb3\xae\x7f\x19\x3b\x93\xc1\xd4\xd6\x42\x96\xc0\xdc\x96\x8a\xd0\x80\xfa\x88\xd8\x82\x4a\xcb\x16\x5c\x55\xd5\x18\x59\x6e\xd9\x6c\xa2\x12\xbf\x40\x56\x42\x68\x56\xd0\x67\xbf\x63\x2e\xc5\x44\x01\x69\x3f\x0b\xa2\x33\xd1\x59\x52\xbb\x44\xa1\xef\xcb\xf2\x92\x59\x51\xd0\xb9\x1a\xed\x15\x81\x0f\x02\xcd\xf5\x2a\xfe\x94\x6b\x34\x26\x66\xb9\xdf\x47\xd6\xcf\x89\x22\x1c\xc4\xd2\x07\x85\x70\xf2\x64\x85\x62\x4e\x6d\x55\x09\x7d\x95\xb5\x1c\x40\xeb\xfe\xab\xbe\x8b\x75\x2b\xe8\xf3\x5b\x73\x6a\x30\x29\xe8\xc7\x5b\xf3\x55\x67\x25\x4f\x3f\x35\x71\x00\x5f\xe5\xb4\xd5\xe0\x06\xac\xf0\x11\xb2\xd5\x73\x38\xfe\x39\xc1\x9c\xd8\xf0\x6b\xc1\x10\x0b\xfa\xe2\x96\xda\xa1\xe6\x95\x0a\xc1\x2b\x92\x98\x33\x52\xd0\x5f\x6e\x2b\xdb\xd2\x19\x28\x5b\x05\x32\xa4\xef\x3e\x35\x32\xb1\xc0\xd5\x69\xcb\x1a\x80\x72\x01\xa0\xbc\x0e\xa0\xbc\x01\xa0\x05\xfd\xe6\xb6\x1e\x4a\xd9\x42\x57\x3f\x16\xf0\x9b\x42\xa9\x1f\x6f\x5f\xeb\x1a\x42\x29\xe8\x4f\xb7\xb5\xa0\x37\x75\xad\x91\x2f\x74\x23\xdf\xad\x1e\x5f\xc9\x3c\xcb\x73\x9e\xda\x29\x55\xb1\x9a\x56\x02\xf2\x37\x4d\x18\xc1\xe6\xc1\x31\xcd\x3b\x29\x3e\xce\xe8\x52\x20\x6d\xfb\xbb\x0c\xdf\xc9\xd6\xa3\xc7\xf3\x6a\x5e\xc3\x1a\xd1\x8b\x81\x5c\x51\x49\x90\xd6\x5d\x80\xc4\x64\xf4\x1a\xec\xa5\x6a\x23\x26\x6d\xe4\x86\x2b\x72\x53\x10\x42\xe5\x5e\x14\x1d\x79\x96\x11\xaa\x69\x84\x78\x7f\x75\x6b\xc7\x46\xd0\x95\xda\x05\x36\x1b\x51\x2f\x83\x2a\xf5\x9e\x11\x95\x3c\xff\xd4\xe8\x7e\x70\xab\x5b\x70\xd2\x5d\x46\x92\x61\x4e\xc8\x92\xd7\x4f\x7a\x46\x55\x04\xec\x35\x63\x16\x5e\xd3\x08\x45\x19\x96\x16\x34\x19\x29\x44\x57\xf4\xb6\x14\x5d\xf9\xf8\x57\x74\xa5\x76\xcc\x74\x7b\x57\x2a\x55\xd5\x6a\x57\xc4\xe6\x14\xdd\x78\x7a\xfb\xb4\xf2\x96\xc3\xd4\xe6\x54\xd3\x03\x39\xcd\x9a\xf6\x8a\x4a\x5f\xfc\xd5\x95\xee\xc9\x4a\x05\x1a\x10\x15\xfe\x72\x7b\x85\x30\x31\x79\x2e\x8d\xaf\xd2\x5a\x68\xec\x31\xaf\x8e\x57\x6c\x68\x22\xa5\xd7\x19\x91\x75\x2b\x26\x40\xd4\xff\xee\xf7\x77\x58\x51\x10\x36\x99\x52\x59\xb1\x85\x10\xdd\x55\x75\x4b\x98\x17\x35\x7f\x73\x7b\xcd\x6d\x3d\xae\x0e\x05\x6d\x29\x80\xa5\x0d\x23\xb1\x94\xa5\xe5\xa5\x15\x42\x79\xc5\xc7\xab\xf1\x1d\x66\x84\xd0\xdf\xbf\xf3\xea\x99\x45\xc7\x7f\xcc\x08\x15\x3c\x8e\x78\xfe\xe9\x53\x83\xe8\xac\x0c\x02\x03\x3b\x7f\x7b\xbf\xeb\x7c\xbd\xea\xfa\x4b\xc1\xf2\xf3\xe6\x41\x68\x21\x66\x94\x72\xc0\x52\x28\x8d\xbe\x3d\x3a\x78\x8d\xda\x22\x41\x68\x86\x53\xbb\x53\x6f\x33\x33\x97\x55\xb4\x59\x94\x7f\x6e\x25\x87\x2a\x6a\xd6\xb7\x19\x3b\x4c\x7a\x6e\xcc\x9d\x94\x4b\x5f\x1a\xc7\x87\x2f\xe9\xf7\x90\x1a\xf3\xcb\xe8\x43\x95\x3a\xfa\x36\x03\xd7\xea\x42\xc4\x58\x29\x80\x5a\xe3\x99\x7e\x9b\x29\x13\xe4\xc3\x86\xcb\x34\x42\xe8\xf7\x55\x4d\x2b\x8d\xb4\xd7\xf4\xfd\xa6\x9a\x8a\xd2\x5f\xeb\x0f\x59\xdd\x4e\xa4\x1e\xab\x45\x5e\x1c\x6e\x0d\x1d\x21\x1d\x71\x24\xfa\x66\xff\x6d\x79\x44\x35\x1c\x6c\x7c\x62\x15\xfd\xab\x1e\xa0\xb9\xec\xe9\xa7\x22\x54\x80\x3b\xab\x6a\x31\xc0\x6a\x5b\xda\x2e\xaa\x11\x86\x95\x63\x65\x23\xac\x86\xf7\x73\xd6\xb4\x5d\x1a\x8e\xf8\x9a\x23\x4a\x79\x67\x5c\x4e\x80\xe4\xe1\x2a\x71\x8f\xd7\xa3\xf4\xf0\xa9\xbd\x2c\x46\xfc\xcb\xad\xf1\x0f\x99\x9a\x18\x1c\x12\xda\x19\xb4\xb9\x18\xe1\x64\x79\xa6\x6c\x0d\x20\xfc\x30\x29\xe3\x55\x6f\x1a\x64\x32\x6e\xf3\xca\xe2\xf3\x04\xa7\xf4\x53\x45\x71\x48\x88\x5d\xef\xd5\x86\x2e\xb5\xfa\x7d\x81\x5e\x7e\x6a\x05\x42\x21\x65\x0a\xd0\x29\x4d\xa2\xca\x49\x4e\x03\xdc\x72\xbf\x92\x2c\xcb\x48\x7f\xe5\xf5\x05\x07\x1c\xad\xba\xd4\x65\x0e\x75\x58\x67\x48\x46\xe0\x0a\xcf\x08\xda\x3c\x8a\x84\xe3\xb0\x27\x43\x71\x26\x76\x38\x0a\x78\x6a\xcc\xe0\xa0\xdd\x34\xd3\x5e\xcc\x43\x88\x92\x8a\x03\xf5\xc8\x74\x1a\x0d\x7a\x49\xea\xa4\xbe\x7b\x08\xaf\xcf\x43\xb0\xfc\x6d\xa6\xd0\xa0\x77\xea\x46\xf3\x85\x1f\x70\x8f\x75\x06\x34\x82\x8a\x74\x0f\x9c\x80\x75\x06\x84\x50\x59\xfd\x69\xe2\x46\x0b\xbe\xef\xb1\x98\x50\x7f\x8c\x67\x0d\x45\x82\x40\x6a\x79\x0e\x57\x7c\xef\x5c\x86\xe0\x28\xb9\xf6\xd2\x4b\x92\x78\x37\x0a\x53\x7e\xad\x33\x2d\x9c\x98\x87\xa9\xca\x24\x5f\x9a\x05\x1b\x69\xb5\xf2\x24\xcf\x51\x15\x11\xb5\x9c\xa2\xd3\xd3\x77\xc7\x7b\xa7\x47\x47\x87\xa7\xbb\x07\xaf\xdf\xee\xfd\xf8\xf6\xf4\x34\xcf\x71\xca\x5a\xd2\x09\x85\xf8\x84\x25\x7a\xa3\x09\x28\xa1\x61\x36\x4f\x63\x7e\xee\x27\x29\x8f\xb9\x57\x9a\x7e\x25\x1b\x3f\xf4\x1c\xcf\xc3\x3e\x29\xc4\x2c\x26\x49\x7c\xa8\xb2\xb0\x19\xb1\x39\x1c\xbf\x39\xe3\x86\xa3\x9d\x5a\x9b\x99\xf2\x7a\xd7\xbb\x13\x47\x51\xda\xbb\xa3\x96\xb7\x97\x5c\x38\x5e\x74\x75\x18\x45\x29\x59\xf1\x99\x57\x2f\xed\x82\xcf\x01\x42\x67\xc4\x9f\x35\xd6\x8b\x2c\x25\x18\xa5\x4c\x83\xc3\xa8\x84\x8b\xa6\x47\xd7\xa6\x0b\xbe\x90\x50\x08\x6b\x4d\x0a\xa9\x25\xae\x6a\x39\xe3\xb3\x28\xe6\xbb\x80\xae\x47\xcd\x57\x96\x8e\x27\x65\x24\xfd\x94\xce\x88\x3d\x99\x4d\x2b\xd4\x13\x73\x5c\x29\x93\x36\x5d\x06\xa2\xc9\x85\x33\xb7\x3b\x8e\xbc\x14\x64\xef\x67\x85\xde\x09\x3c\x60\x4b\xe0\x4a\xd0\xce\xa5\x93\x3a\x31\xb8\xb5\x5d\x24\xb6\x54\x2d\xc9\x5f\xe5\x60\x55\xbb\xaf\x47\x9e\x7f\x09\x57\x49\x7d\x0f\x6e\x76\xb7\x39\x69\xe9\x81\x5b\x3b\xdc\xc7\x9e\x7f\x99\x27\x0b\x27\x24\x7d\x52\x14\xc0\x1b\xbf\x16\xad\xb5\x57\x8c\x64\x0e\xdf\xdb\xfc\xfd\xca\xf7\xd2\x0b\xf5\x59\x05\x24\xd0\x21\xc2\x64\x04\x74\x99\xf5\xfe\x56\x51\x50\xcf\x49\x9d\xf5\x9b\x62\x4b\x07\x06\x7a\x04\x0e\xa3\x6d\x84\x68\x10\x39\x1e\x44\x20\x1f\x14\x10\x5d\x7e\x91\xa5\xdc\xb3\x7f\xce\xf0\xcf\x19\x5e\x16\xf4\x59\x88\x27\xe8\x9c\xa7\x6f\xa3\x0f\x3c\x44\x53\x42\xe8\x12\x2e\x95\x09\xba\xe0\xb5\x5c\x44\xab\xc1\x9b\x94\x88\x7a\x32\xaf\x9c\xdf\x24\xcf\x45\x3b\x84\x5e\x89\x09\xb2\x97\x6a\xbc\x4d\xe1\x0a\xaa\x48\x78\x7a\x9c\xf0\x18\x82\xe8\xd3\x79\x94\x85\x69\xb3\x39\x04\xfe\xca\x44\x4e\x59\xc7\xb8\x59\xaa\xfa\x40\x6c\x78\x51\xc3\x64\x9d\x61\x41\xa5\x87\xc4\xc4\x5e\xaa\xec\xeb\xb7\xb6\xa4\xf3\x7e\x81\xfe\x1a\x65\x07\x72\x3b\xd5\xa7\x10\xec\x61\xa4\xd3\x01\x98\x12\xd3\x94\x3d\x2b\x49\x1c\xbf\x32\x94\x83\x0e\x1a\x33\xbc\x3e\x3d\x09\x8f\x2f\x79\x9c\xe7\x57\x7e\xe8\x45\x57\xbd\x20\x92\x57\xaf\x94\x9e\x84\x58\xa8\x1f\xf3\x79\x94\xf2\xde\xe2\x62\xd1\xf7\x9c\xcb\xbe\x6c\x3d\xe9\x23\xab\x36\x4a\x0b\xf5\x87\x5b\x8f\x7b\x8b\xf0\x1c\x8d\xc2\x9e\xbc\x3c\x8d\xd1\x8e\x3c\xc0\xfe\x05\x6a\x44\x14\x3d\xe5\x4e\xcc\x63\x43\x95\xd4\xab\x2a\x68\xbb\x2e\xf1\x63\xf7\x90\x7f\xcc\x78\x92\x72\xaf\xfb\x83\x9f\x5e\x20\x8a\x7e\x7c\xf5\xf2\x9b\x34\x5d\xa8\x74\x44\x28\xdc\x74\xc3\x31\x5d\xea\xbb\x5d\x61\x41\x7a\xe9\x05\x0f\x57\x82\xca\xcd\x70\xda\x8b\x3e\x94\xb7\x21\x7a\x67\x41\x74\x86\x81\xcd\xb9\x3f\xb8\x0f\x07\xce\x82\x50\x64\x49\x2d\x4a\x74\x19\x21\x9a\x97\x57\xdb\x21\x8b\xe1\x46\x1e\x37\x50\x89\x07\x74\x49\x41\x22\x5b\x9a\xe6\xb5\xe5\xa6\xbc\xb9\x5e\xe9\x58\xcd\xf4\xf1\xe1\xcb\x55\x96\x12\xa7\xa0\x8a\x20\xa4\x27\xd5\x53\x2b\x95\xae\xae\x7b\xa3\x19\x81\x50\xa2\x80\xf7\x38\x0c\xe1\x2e\x8c\xc4\x50\xdf\x0d\x59\xd2\xf0\xe7\xce\x39\xdc\xb2\x37\xc4\xaa\x19\xe8\xae\x1e\x10\x57\xcb\x48\xef\x22\xdb\xb8\x0b\x31\x03\x78\x92\x38\xe7\xe0\x0f\x57\x9d\x3c\xad\x40\x71\xa1\xbc\xfa\x06\xeb\x3a\x0d\xe9\x0e\x95\xa5\xbd\x3b\x72\x7c\x7b\x01\x07\x75\x65\xc8\xd2\xde\x69\xc2\x83\x59\xef\xd4\xcd\xf3\x9a\x6d\xac\x82\xdd\x71\x88\xd3\x1e\x28\x53\x97\xa9\x73\x6e\x23\x57\x13\x21\x54\xd0\x49\xaa\x1b\x1f\x87\x18\x45\x6e\x37\x59\xf8\x61\xc8\x63\x44\xe1\x8a\x31\x92\x23\xec\xaa\x3c\x88\x26\xe9\x4d\xc0\x6d\x24\x11\x96\x80\xb8\x1e\x3c\x5a\x68\x71\x3d\x32\x2e\xb8\x7f\x7e\x91\xae\x26\x23\xea\xa4\x69\x2c\xb6\xa5\xff\x0b\xb7\x51\x32\x77\x82\x00\x51\xe4\xc4\xbe\xd3\x0d\x9c\x33\x1e\x20\x3b\xed\xdd\x81\x8b\x7a\xd7\x29\x46\x2f\x55\x53\x42\xc2\xb6\x65\x9f\x1c\x85\xc4\xd7\xba\xc4\xbd\xb2\x72\xd9\x23\xd5\x2e\x4d\x62\xd7\x4e\x1b\x0b\x4b\x91\x58\x8a\xae\xa0\x0a\x48\x19\x9c\x08\x9c\x5d\x14\x64\x4a\x87\xc4\x4e\x7b\xa7\x1c\x93\x62\x14\x06\xbd\xd3\x2b\x3f\xbd\x10\x48\x7a\xb1\x00\xc6\xa6\x0a\xcb\x10\x07\xff\xd4\x6c\x7e\x14\xfc\x21\x6c\x7e\x1c\xfc\x23\xb2\xf9\xf5\x5e\xfd\x1d\xd8\x7c\xc9\x97\xf8\x15\x5f\xe2\xba\x82\xf8\x25\x2f\xfd\x24\x3d\x8c\xae\x10\x2d\x37\x65\x62\x2f\x25\x51\xb5\xd3\x00\x2f\x25\xff\x65\x87\x01\x5d\xe1\xbe\xed\xc9\xb4\x50\x0e\x4f\x28\x0f\xf4\x53\x67\xb8\xfe\xd4\xf8\x43\x0a\xcd\x0a\x39\xb2\x07\x8a\xeb\x90\x23\xaa\x71\x1d\x83\xcd\xac\x86\x9b\xc5\x82\xbf\x3e\x8c\xd4\x35\x86\x3a\x83\x11\x05\x58\xfe\xd3\x3c\x86\xd8\x68\x88\xa2\x52\x8d\x0a\x24\x4b\xf0\x1b\xc7\x21\x2e\x67\x01\xd1\x09\x82\xf0\xab\x88\xa2\x84\x07\x40\x22\xca\x6f\x9a\x39\xf1\x13\x95\x74\xa4\x72\x6c\x62\x53\x56\x6b\x28\x23\x62\x48\x2a\x2f\x53\xc9\x76\x17\x1c\x3f\x88\xac\x2a\xe3\x4b\x81\x8c\xd6\xbc\x26\x48\x6e\xa4\xc2\x4f\xb2\x75\xe3\xcb\xa5\xa1\x6a\x32\x8a\x5a\xf8\x93\x7a\xde\xfd\x30\xe5\xf1\x22\x0a\x9c\x94\xe3\x94\x96\x13\x5e\xef\x45\xcf\xf3\x93\x45\xe0\xdc\x00\x2a\x02\x17\xd5\x05\xa1\x12\xbb\x37\x86\xa7\x09\xbb\x60\x6b\x92\xdd\x6a\xfe\x31\xa9\xd8\x9e\xfa\xd4\xbf\x12\x53\x9f\x5c\x44\x57\xaf\x24\xbd\x81\x49\xbc\xb3\x32\xe3\x6f\x0f\x5e\xbc\x78\xb9\x77\x7a\xb4\xf7\x72\x6f\xf7\xed\xfe\xc1\xeb\xd3\x9d\xdd\xdd\x83\xe3\xd7\x6f\xcb\x19\x77\x2f\x9c\xf0\x9c\xc3\x3a\x6f\x60\xa5\x34\x12\x89\x71\x1a\xf7\xe6\x4e\xfc\xa1\xda\x41\x86\x9e\xc1\x5a\x34\xb4\x34\xee\x5d\xc5\xce\xa2\xb6\xcd\x42\xe5\x72\x6b\x44\x94\x5d\x7d\xd8\x5b\xc4\xfc\x92\x85\xd2\x9f\x8e\x34\xae\x1f\xe8\x38\x8b\x8b\x48\x91\xd4\x5e\xaa\x39\x1c\x91\x8d\xdd\xa3\xef\x1d\xbc\xd4\xb1\x7e\x79\xaf\x01\x6d\x8a\x15\xa3\x70\x8d\x5d\xaf\xc2\x69\x96\xf9\x9e\xcd\xcb\x75\xf0\x3d\x2a\x00\xf0\xd4\xf7\xec\xb4\x10\x72\x84\x68\xf7\x9e\xbd\x35\x80\x38\x2b\xe0\xe9\x8a\x87\x29\x51\x0c\xca\x18\xa2\xb4\x89\xed\xd1\xab\xa2\x39\xf7\x44\x05\xfb\x1e\xe5\xbd\xda\x06\x61\x1c\x92\x93\xde\xcc\x0f\x3d\xdc\xa6\x5e\x12\x6d\x33\xc6\x22\x81\xa6\x6d\xde\xab\x2d\x1a\x5e\xa6\x7e\x1a\x70\x9b\xd7\xa0\xef\xb9\x23\xc4\x6d\x23\x8d\x0c\xb9\x38\x86\xa8\xbd\x87\x08\xf5\x78\xe2\xda\xb1\xea\xdf\x5b\x7e\x9d\x52\xf9\x68\x23\x4f\xe4\x8b\x91\x1e\xd4\x03\x1d\xc2\xd2\x2b\xc3\x57\x86\xbd\x24\x85\x6b\x29\x05\x81\x70\xaa\x84\x28\x67\x35\xab\xe0\xd6\xbe\x39\x6e\x85\x02\x8e\xcb\x9b\xe4\x9b\xa1\x80\xaf\x42\x01\x97\x50\xc0\x37\x41\x41\xda\x80\x02\xae\xa1\xe0\x43\x0d\x0a\xd2\xcf\x86\x82\xb4\x06\x05\xb5\xb5\xf7\x67\x78\x6b\x30\xec\xc0\xf5\x24\xde\x58\x7e\xc1\x34\x42\x8b\x5f\x57\xf7\x27\x05\x88\x08\x80\xa0\x11\x8b\x21\xe0\x50\x9d\x3d\x88\x48\x79\x0b\x29\xaa\xc7\x2d\x28\xb3\x95\x35\x3e\xd6\x36\x65\xfa\xa6\xa1\x73\x16\x67\x0b\x88\x39\x01\x47\xa8\xaa\x77\x8f\xc5\xf0\x6a\x50\x96\x7e\x26\x94\xc5\x35\x78\x4d\x26\x83\xa9\x82\xd9\x82\xa8\x7a\xbf\x5e\x07\x0e\xae\x81\x03\x2e\xfa\x14\x84\x72\x0d\x21\x85\x8a\x40\xe1\xfc\xf5\xbc\xaa\xe4\xf3\x52\xc1\xae\x74\x63\x41\x0e\x27\xf5\x14\x97\x0b\x8e\x51\x25\xb9\x17\xdc\xfd\x70\x16\x5d\x23\xba\x54\xac\x9f\x0e\x77\xb0\x46\x20\x28\xb0\x97\x76\xda\x5b\x47\xf3\x14\x5d\xf8\x1e\xd7\xfc\xa7\x90\xc1\xa3\xd0\x56\x08\xcf\x6e\xe1\xb9\xd2\xde\x26\x6c\x89\x4b\xf0\x21\x85\xe2\x26\x69\xda\x3b\xbd\xc4\xd2\xfb\x60\xeb\x30\x4a\x86\x56\x8d\xa0\xc9\x9b\xb6\xd0\x86\x3c\xaf\x92\xa3\xf0\x4d\xcc\xe7\x7e\xc2\x93\x23\x67\xae\xc6\x24\xf2\x68\x2d\x43\x1d\x9c\x95\x66\xe1\xde\x83\xcf\xe9\xd9\xd2\x8b\xe6\x6f\x94\x9e\x84\x5f\xa7\xbb\xd2\x7f\x88\x60\x8d\x13\xfc\xe9\xe6\x01\x7b\xfc\xf5\xd5\x37\x06\x8d\xba\xe8\x6f\x54\xed\xdc\xf1\x83\x4f\x56\xa5\x20\xec\x2c\x4b\x53\x21\x57\x2f\x25\xcb\xb5\x1b\x38\x49\x62\x23\x55\x53\xd2\x95\x71\xe2\x25\x48\x75\xd3\xd8\x3f\x17\xd8\x55\x8b\x21\xbe\xf7\x89\x9c\x5d\x21\x1c\xd5\x16\xe8\x52\xc8\x41\x02\xd8\x6c\x14\x3b\x57\xa8\x28\xa0\x17\xc9\xc2\x59\xeb\x40\xf6\xa1\x3b\x0b\xf8\xb5\xa1\xfe\x76\xe7\xbe\xe7\x05\xdc\x58\x69\x4d\x61\x05\x78\x93\xf2\x9d\x18\xef\x49\x68\xa8\xff\x44\xf3\x30\x33\x35\xf4\x31\x6e\xbc\xd5\x97\xa0\x21\x99\x29\xce\x07\x6a\x26\xc4\xaa\x57\xaa\x67\xd3\x77\x61\xe2\xd4\x64\x48\x56\x97\x5f\x2f\x9c\xd0\x3b\x9d\x47\x31\xd7\x62\xdf\x85\xef\x79\x3c\x44\x36\x4a\xe3\x8c\x23\x05\x9b\xd3\xf5\xc5\xf1\xe2\x68\x51\xdb\x25\xe2\xb5\xeb\x7b\x68\xd3\x14\x8b\xef\x5e\x74\x15\xae\xce\x71\x1a\x9d\x9f\x0b\xa9\xf5\x8b\xdf\xb5\x32\xf3\xc8\xe3\x36\x72\x03\xdf\xfd\x20\x18\xd8\x20\x4a\x78\x37\x0a\xbb\x32\xc1\x46\x88\x6a\xb5\xfa\xd2\xe3\x81\x73\xf3\x8d\xef\x71\x7b\x50\xa8\x05\xcc\x82\x96\xe5\x0b\xfc\x44\xc8\xdc\x69\xef\x34\xc0\x0a\x63\xd3\x36\x01\x2f\xc4\x28\xf0\x95\xb8\xcb\x05\x51\x82\x2a\x25\xae\xba\x1d\x2a\xcb\x19\xd0\xcb\x1f\x62\x04\xde\xab\xc5\x3e\xf1\x63\xee\xa6\xfe\x25\x4f\xec\x89\x5a\x1a\x31\xc4\x00\xd1\xd8\xb9\x82\xc5\x46\x97\x5d\x95\x52\x46\x90\xa9\xc0\x82\xf2\xeb\x45\xcc\x93\x04\x40\xb5\x96\x8e\x8a\x29\x6d\x74\x29\x72\xbb\xb1\xe3\xf9\x91\xde\x46\x6a\xf5\xa4\x55\x1f\x7c\x41\x05\xad\x36\xad\xf2\xde\x47\x01\xaf\x73\x81\xbe\x4e\x3f\xe2\x95\x96\x49\x03\x3d\x4f\xea\xdc\x63\x93\x0e\xf2\x5a\xb8\x8f\xb0\xe9\xa4\x42\x71\xb2\x58\x4c\x28\x29\xa6\x15\x2e\xa8\xc0\xb8\xb6\x3f\x1a\xbb\xa0\x01\xeb\x02\xda\xa7\x04\x84\x54\x3a\x10\x4f\x7f\x1b\xb4\x9a\xf9\x9e\xd4\xfc\xfe\x2d\xb1\xde\xf9\xef\xac\x74\x15\x60\x45\xd5\x5d\x97\x0b\x39\x46\xe2\x12\x5d\xb1\xfa\xbb\x57\x2a\x98\x6a\x9b\x5f\x2a\x69\x64\x06\x48\xeb\x2a\x3d\x14\xa2\xed\xa0\x2b\x99\xaa\xae\x1f\x7a\xbe\xeb\xa4\x51\x5c\xe5\x6f\xe0\x91\x98\x3b\xde\x0d\xaa\x23\xcc\x24\x73\xa5\xe7\xf5\x8d\xca\x24\x45\x9f\x0c\x3f\x31\x74\xa5\x35\xbd\xd2\xc6\x0e\x7b\x7e\xf2\xfb\x7a\x5c\x15\x68\x74\xd9\xe3\x8b\x98\xbb\x42\x98\x6b\xf4\x5b\x71\xe4\x9f\xd5\xed\xb2\x66\xa2\xd1\x24\x1d\x92\x62\xe4\xdc\xa6\xa7\x72\xff\xb9\xf5\x54\xc9\x1f\xa3\xa7\x72\xff\x21\xf5\x54\xee\xff\x1f\x7a\xaa\xac\x55\x4f\xb5\xa2\xa4\x6a\x6a\xb0\xea\xda\x2a\xe7\x56\x6d\x95\xff\x57\x68\xab\x34\x1d\x91\xd1\x31\x9a\xda\xaa\x52\x07\x95\x68\xed\x53\x43\xdb\xe1\xc4\x7c\x27\x08\x74\x8a\x16\x11\x40\xd7\xa1\x35\x28\x49\x80\x13\xad\x3e\x69\x94\x95\x0c\x84\x2c\xe3\x47\xe1\x4e\x10\x94\x3a\x12\xf9\x69\xad\x66\xb1\xcf\x57\xf5\x37\xeb\xb5\xd4\x84\xa8\xe0\x6f\x22\x44\xc1\x21\x66\x5d\x76\xaa\xb8\x27\xc9\x2e\x0a\xbe\xc5\xf3\x2f\x7d\xb1\x4c\x48\x73\x9b\x25\x19\x80\x78\x89\x2b\xc2\xd7\x26\x71\x4c\xd7\x9b\x5c\xc4\x7e\xf8\x41\xd4\x2b\x29\xfc\x05\x77\xbc\x5a\xc5\x9b\xc5\xb5\xf6\x05\x29\x65\xb6\x35\xbe\xd3\x09\x02\x38\x5f\x49\x10\xb9\x55\x7a\x4b\x7b\x9b\xd7\xe4\xb3\xc4\xa0\xdb\x07\xf6\x79\x85\xeb\x45\xe8\xad\xb4\xba\x1a\xe7\xb1\x32\x79\x44\xe4\xd3\x94\xfa\xaf\x68\xe6\x99\x64\x6c\x8c\xbf\x43\x53\x7b\x42\xec\xfa\x83\xdb\x38\x94\xe2\xc8\x5f\xc6\xdb\x84\xd1\x55\xec\x2c\xaa\x13\xaa\xd6\x25\xff\xec\xf5\xf3\x3d\x43\xb9\x99\xfa\x87\xe8\xcf\x8b\xdf\xd5\x9f\xbf\x49\x93\x7b\x9a\xc9\xaa\x73\x2b\x1b\xda\x55\xc8\x46\x49\x43\x1a\xc1\xb7\x9a\xe0\x85\xb8\xe2\xbd\x84\x10\x25\x91\x52\x93\x71\xd3\xe9\x20\xc6\xf9\x9e\x9e\xc2\x52\xeb\x5e\x40\xb8\x59\xd5\x25\xc9\x44\x05\xb7\x31\x51\xb3\x7f\x6e\x26\x6a\xf1\xc7\x30\x51\xb3\x7f\x48\x26\x6a\xf6\xf7\x65\xa2\xc4\x8c\x79\x15\x0b\xb5\x58\x6c\xe6\x9c\xea\x6c\x53\x70\x2b\xdb\x94\xfd\x2e\xb6\xa9\x64\x86\x16\x01\x96\xff\x5a\x58\x22\x3f\xd9\x0f\xfd\xd4\x77\x02\xff\x17\x21\xa1\xa0\x73\x9e\x96\x14\x33\x8a\x35\x77\xb4\x7a\x50\xb7\xf1\x80\xae\xe4\xd1\x36\x9c\xcb\xad\x55\xaf\xcf\xdf\xaa\xba\x76\xc0\x24\xe8\xb3\x0f\xf6\x24\x98\xea\x6a\xfc\x28\xdc\x0f\x67\xd1\x5b\x7e\xbd\xee\xfb\x5c\x9d\xe2\x85\x25\xa6\xfa\x72\x69\x38\x73\x79\x7c\x67\xe8\x7a\x0d\x75\x58\xb9\xf1\x5b\xa2\x8c\x82\xda\xbb\xfd\x79\xa7\x80\xf3\xea\x10\xb0\xbd\x9a\x82\x14\xd4\x71\xa5\x6a\x69\x6d\x18\x93\x29\x95\x47\x6f\xeb\x93\x91\x44\x73\xde\xa6\xfb\xef\xac\x8a\xeb\x02\x0d\x86\xbf\xb3\x12\xa3\xa5\x92\xd2\x1d\xa2\x69\xea\xd8\x2f\x0d\xf5\xa7\x1a\x44\xa5\x94\x92\x09\x4a\xbc\x47\x9a\xd3\x6b\x1e\xaf\xca\xea\x11\xa1\x17\x4e\xe8\x05\x3c\xb6\x6b\x56\x58\xba\x97\x05\xa1\xe1\xef\x6c\x53\x89\xd1\x1b\x1a\x7d\xa6\xbe\xae\xb4\xaa\x0a\xd5\x9a\x15\x54\xa4\x14\x17\x16\xad\xb2\x82\x5f\x6e\x29\x44\x51\xb3\xdf\x88\xa2\x95\x2a\x61\xef\x6c\x3a\xef\xad\x6a\x12\x72\x82\x32\x6d\xbc\x08\x58\xcd\x86\xb5\xb4\x09\x0e\x9d\x4b\xff\xdc\x49\xa3\xd8\x34\xfb\xf3\xc4\xe7\xc6\xe4\x61\xf7\xeb\xe9\xc9\xc9\x59\x5f\x39\x2f\xd6\xdf\xe1\xe0\x6c\xe7\x9c\x87\x2b\xbe\xe5\x48\x45\xf9\x2e\x83\x6a\xdd\x81\xbe\xb0\xed\xa6\x25\x9f\xec\x49\xc8\x2e\x82\x31\xef\xcd\xb9\xe7\x3b\x79\x8e\x94\x91\x22\xb2\x53\x1a\xb3\x9b\x40\x3a\x95\x84\xbf\x6c\xe9\x7b\x09\xb8\x2c\x3f\xe2\xa9\xb4\x20\x02\xcc\x26\xef\xe3\xc4\x3d\xdf\x4b\xc0\x91\x79\x4a\xc8\x52\xbe\x39\x9e\x27\xc8\x63\xc0\x45\x2b\xbc\x97\x80\x05\x8f\xc8\xcd\x7b\x73\x67\x61\x9a\x38\xb4\x18\x3a\x09\xfb\x5f\x7d\x61\xc8\x6f\xc7\x87\x2f\x19\xb2\xe0\xab\xca\x9d\x4c\x06\x53\x0b\x19\x5f\xf5\x11\x5d\xcd\xfc\xca\x59\x2c\xfc\xf0\x5c\x94\x01\x0b\x87\xba\x67\xf4\xf7\x49\x14\x8e\xce\x9c\x84\x3f\xbc\x4f\x91\x75\x96\x46\x0e\xce\x42\x9e\xb8\xce\x82\xe3\x16\xcf\x8e\xdf\x1e\x1d\xbc\x56\xf1\xf2\xfd\xd9\x8d\xec\x1e\x21\x84\xc8\x96\x09\x8d\x7b\x5c\xca\x6c\x70\xa7\x57\x3d\x33\x2f\x72\x81\x70\xf6\x1a\x62\x1d\x46\x30\x35\xf5\x52\x60\xb5\xc5\x90\x00\xd2\xbe\x9b\x24\x88\xaa\xe9\x36\xcd\x2a\x4b\xc2\xd3\x9d\x34\x8d\xfd\xb3\x2c\xe5\x18\xc1\xe7\x32\x9f\x0e\x89\xc3\x18\x9b\x07\xa6\x89\xe7\x41\xd5\xb6\x60\xec\xf2\xbc\x7c\x3d\xe7\xa9\xea\x47\xf2\xf4\xe6\xad\x73\xfe\xda\x99\x73\x2c\xb9\x3f\x32\x19\x4c\x09\x9d\x07\xca\x9a\x70\xf7\xc2\x0f\xbc\x6a\x34\x84\x50\xd9\xf1\xa3\x0b\xce\x53\xe4\x87\x46\xf5\x29\xee\xc9\xd5\x96\x3b\x35\xac\x8f\xac\x2a\xd2\x73\x13\x38\xb0\x66\x65\x6e\xc5\x0e\x3d\x95\x86\xef\xda\x79\xc6\x49\x88\x94\x0b\x3b\x6d\x61\x2c\x81\x25\xf1\x7f\xe1\xdd\x21\xe5\xab\xd3\x2a\xea\x7c\x1d\x79\x5c\xb4\x0b\xa1\x2e\x54\xcb\xae\xe8\xbf\xf8\x90\x8c\xa2\x49\x3a\xad\xcf\x65\xcc\xe7\xd1\x25\x97\x03\x14\xdf\x48\xe9\x6b\x7a\x5c\x65\xf2\xc3\x84\xc7\xe9\x53\x30\x66\xc6\x9c\x42\x3e\xbb\xfa\x5c\x9f\x24\x4e\x8a\xa2\x90\x61\xb1\x05\x2c\xcf\x03\xb5\x89\x6f\x02\xb6\xd4\x1b\xfa\x3c\x60\x5e\x00\x2a\x80\xb3\xbf\xad\x0a\x00\x1e\xd6\xc4\x0c\x37\x0a\x53\xc7\x0f\x79\x6c\x64\x1f\xba\x0b\xc7\x03\x5b\x3b\x29\xad\x5f\x0c\x3f\xa5\x57\x5e\xd3\x50\x26\x6b\x92\x45\xba\x81\xaa\x6d\x0f\x94\x96\xf8\x3c\xf6\x3d\xcd\xbb\xeb\xac\xdd\x12\x7f\xfb\xe1\x2c\x5a\xd1\xba\x36\xcf\xbb\x4a\xd9\xe8\x3c\x4b\x53\x1e\x6b\x7b\xc2\xe6\xb9\xd9\xad\x83\x58\x63\x16\xd6\x65\xa3\xba\x1a\x45\x13\x10\x79\x14\xd5\xae\x0f\x5e\xa5\x3a\x88\xc2\x7d\x07\xef\x28\x88\xd2\x44\xb4\x9b\xe1\x89\x1c\xb1\x3e\x14\x99\x85\xeb\x4c\xce\x2d\x07\x7f\x73\x27\x3e\xf7\xc3\xee\x35\x0c\xb6\x1b\xfb\xe7\x17\x29\xfa\x5c\x99\x6c\x47\x76\x6e\x83\x0c\xf8\xa9\x13\x3b\x21\xc7\x81\x16\xee\xfa\x46\x06\xc4\x50\x42\x97\xac\xb3\x75\x1c\x46\x29\xd2\x41\xa6\xfa\x11\x17\x8d\xeb\x32\x5d\xfd\xac\x55\x9e\x75\x01\x75\x5e\x5b\x7e\x38\xc4\xee\x0e\xbb\xc3\xf2\xec\x33\xe0\xb3\x14\x51\x17\x72\x2c\x6b\x13\x24\xe7\xe7\x2c\x4a\xd3\x68\x8e\xec\xd8\x1a\x82\x3d\xb2\xea\x48\xc9\x2e\x56\x67\xb5\xbc\xe5\x08\x16\x0c\x81\x6c\x34\xe7\x61\xe6\xa7\x7c\xae\x95\x4b\x81\xef\x7e\xb0\x79\x4f\x31\x08\x45\xcb\xd1\xea\xda\x11\x12\x8c\x66\xe5\xf0\x48\x1f\x20\x41\xf8\xbb\x72\x5a\xa7\xd2\x05\x45\x67\x48\xef\xdd\x7f\x70\xef\xde\xe3\x7b\x5b\x8f\x1e\x13\x7d\x2c\xaa\x8c\x53\x1b\x9b\xac\xc1\xba\x8f\x27\xab\x02\x72\xb5\xa2\x25\x53\x5e\x89\xd8\x62\x49\xd5\x09\x08\x18\xd1\xc6\x88\x4c\xe9\x96\xe8\xd3\xe8\xac\x45\x22\x96\x68\xea\x2a\x60\x35\x51\xe5\xac\x5d\x54\x69\x30\x8e\xa9\x69\xa6\x18\x09\x0a\xdb\xbd\xec\x7a\xf7\xef\xbb\xde\xfd\xad\xc7\xa7\x03\x01\xdd\xea\x96\xc2\x49\xf8\x5f\xf3\xff\xfd\xaf\x8c\xb7\x07\xcf\x0e\x6c\x63\x67\x96\xf2\xd8\xd0\x61\xd0\xcf\xfd\xf4\x22\x3b\xeb\xb9\xd1\xbc\x1f\x5d\x85\x6e\x10\x65\x5e\xf9\xd0\xf5\x78\xe2\x9f\x87\xdd\xe4\x26\x49\xf9\xbc\xbf\xc8\x82\xa0\x7f\x7f\xf8\xd8\x38\xe7\x69\x62\xcc\x79\x7c\xce\xbd\x93\x30\xbd\xe0\x31\x37\xae\xa2\xf0\x6e\x6a\x9c\x71\xc3\x09\x0d\x7e\x9d\xc6\x8e\x21\x50\x83\xe1\x84\x1e\x88\x17\xd5\xf7\x90\x73\x8f\x7b\x86\x13\xde\x88\xfd\x6a\x7c\xd5\x3f\x09\x7b\xd5\x41\x95\xc6\x75\x25\x8a\x3a\x4b\x43\x63\x5b\xd6\xb5\x14\x70\xa9\x8e\x39\x6d\x43\xec\xab\x91\x48\x71\x02\xd1\x45\x01\xfa\x89\x6d\xc8\xc3\xbf\xd1\x49\x58\x34\x87\xec\xbd\xcf\x92\xd4\xf0\x43\xe3\xe0\xd9\x91\x6c\x53\x1d\xd7\x03\xd3\x2d\xf6\x8e\xac\x5e\x19\x8a\x0f\x1f\x0c\x16\xd7\xb2\x16\x44\xe7\xce\xc2\x5e\x5e\xf2\x18\x8e\x92\xef\x51\xc5\xaf\xd9\x13\xd4\x07\x7b\xb3\x7e\x90\x7d\x70\x92\x0b\x3f\x4e\xfb\x8b\x38\x12\xb2\x77\xd2\x8f\x5c\x3f\x29\x89\x44\x3f\xf3\xfb\x95\x3c\xdd\xdf\x59\x2c\x7a\x97\x19\x47\x53\x2a\xb0\x97\x00\x44\xd1\x82\xe0\xf0\x12\x1b\x8d\xfe\xd8\xff\x76\x76\xac\xe7\x3b\x23\xeb\xd9\xce\xee\xce\x68\x47\xfc\xec\xed\xec\xee\x50\x67\x67\x47\x3d\xcd\x9f\x8a\x47\xf8\x32\xda\xd9\xd9\xdb\xa1\x57\x55\x02\x64\xf8\x49\xbf\x22\xe9\x16\x1c\xe9\xd1\xe8\x69\xd1\x68\x7d\x82\x9e\xa4\x7c\xbe\x10\x62\xe4\xb6\x98\xd8\x27\x9e\x7f\xb9\x2d\x11\x8b\x78\x34\x00\x17\xb2\x93\x4d\x24\xfe\x04\x6d\x6b\x2c\xf4\xe4\x62\x68\x5c\x82\xba\x91\x9d\xa0\x92\x4c\xdc\xd5\xe4\xfa\x2e\x39\x41\x46\xbf\xca\xad\x48\xb6\x71\xd9\xf5\x67\xec\x64\x4d\xfa\x97\xd4\xdd\xd8\x36\x06\x27\xc8\xf8\xc0\x6f\x6a\x59\x9a\x54\xfd\x04\x19\x92\x64\x8b\x1c\x02\x4d\x9f\xa0\x7a\xa7\x6b\x24\xbe\xd6\x57\xc3\x78\x02\xa0\x5a\xf6\x77\x8d\x78\x37\x3a\xdb\x98\x96\xaa\xff\x35\x12\x5e\x36\xb9\x91\x76\x37\x5a\x87\x1a\xf4\xbc\x1b\x97\xdd\x24\x88\x52\x5b\xd2\xac\xed\x55\xac\x2e\x7b\x5a\x1b\x52\x0b\xd1\x3e\x41\xed\x53\x0f\x5d\x58\x99\xf9\xfa\x08\x04\x95\x06\x85\x3d\x3b\xa9\x53\xe7\x96\xfc\x4f\xfa\x0d\x30\xb9\x65\x18\x6a\xe0\x6b\xed\xc9\x16\xe5\x20\xd7\xbf\x19\xc6\x65\x77\x16\x89\x45\xc4\xb2\x02\x6a\x80\x79\x35\x11\xc8\x40\x55\x79\xd2\x42\x14\x0d\xc3\x96\xd0\x21\xf3\x48\xda\xb8\x21\xa3\xef\x55\xf9\x7c\xaf\x3d\x53\x49\xb4\xd9\x89\xa0\xda\xed\x99\x04\x25\x67\x27\x25\x29\xdf\xd0\x9c\x5e\xb2\xa5\x71\xb7\x9d\x93\xb8\x6b\xcb\x31\x1a\x96\x31\x34\x3a\x8c\x19\x4d\x86\xc2\x28\xda\x2b\xae\x81\x42\x3b\x07\xd3\x5e\xec\x4f\xc0\x6a\x54\x33\xa0\x38\x8e\xb6\xcc\x2d\x6b\x67\x18\xcb\xa5\x51\x9f\x63\xa3\x28\x5a\x56\xb8\x5f\x2e\xf1\xe7\xc1\x0f\x14\xa8\xed\xa3\xfa\x96\xeb\xd7\xf7\x1c\x64\x14\x08\xa3\x4a\xa9\x01\x1e\xa0\x90\x06\xef\xd2\xdc\xec\x0d\x26\xc6\xb0\xf5\x6b\x6d\xbf\x36\x91\xd3\x7a\x67\x9f\x94\x5c\x8d\x71\xd9\x85\x1b\x56\x3a\x7b\xd5\x4f\xfd\xd4\x28\x7e\x12\x3e\x91\x2a\xdd\xed\x93\xd0\x9f\x2f\xa2\x38\x35\x96\xc6\xdc\x59\xbc\x80\x08\x62\x09\x15\xcf\x6a\xa3\xc2\x33\xc4\x1b\x33\x0a\x63\x16\x47\x73\xe3\xee\x65\xc6\xaf\xef\x96\x05\xeb\x1a\x5e\x95\xa1\xd7\x2f\xc9\x57\xfd\xab\xc0\xf5\x77\x4f\x42\x7e\x0d\xe5\x94\x0e\x45\x92\x4e\xe0\xc5\x8d\xbb\x3b\x8b\xc5\x5d\x2a\xde\x6b\x2a\x64\x63\xd9\x6c\xa2\x28\x33\x80\xce\x57\x96\x37\x8c\x5e\xaf\x57\x0d\xa0\x86\xe1\xa9\x31\xb9\xdb\x58\x84\xbb\xd4\xb8\xbb\xa6\x9d\xbd\x3b\x25\xb4\x5e\x0f\x0c\x78\xa5\x96\x55\x6a\x20\xcb\xc8\x52\x7a\xbc\x06\x26\xba\x43\x86\x71\xab\x3e\x58\x66\x2a\xca\x1a\x36\xd0\x9a\x4d\xf5\x6d\x50\x0f\xb7\xd7\x5a\x23\x21\x8d\x0a\x95\x6e\x21\x76\xc2\x44\x00\x86\x67\x30\x63\x45\x75\x7c\x77\xa3\x7a\x58\x4c\xe3\x66\xdd\xf1\x5d\xda\xde\x4d\xa5\x3c\x3e\x09\xdb\xc6\xd4\xaa\x45\x2e\x3b\x47\x0d\xdd\x9a\x7d\x5b\xdd\x46\x41\x56\x27\x41\x61\xb0\x96\xa1\xeb\x2f\xcc\x98\x4c\x9b\x5f\xfc\x64\x27\xbc\x51\x35\x2b\x8d\x69\x39\x3d\xed\x8a\x64\x7d\x43\x86\x6d\x1b\x9d\x76\xd3\x31\xb2\xb9\x09\x95\xe3\xb3\x5b\xd8\xd8\x80\x6e\xc2\x9f\x19\xb8\x6d\x0c\xb5\x29\x28\x27\x46\xe9\x96\xeb\x28\xd0\xf7\x6c\xe3\xee\x67\x2a\xb7\xef\xd2\x7a\x49\xa9\x73\x6e\x2e\x28\xbe\x2b\x3b\x78\x97\x34\xb2\x6a\xfd\xb3\xd1\xa2\xf6\xae\xf2\x15\xe5\xb4\x15\x9b\x87\xa7\x27\xe0\x6f\x39\x3a\xa5\xbe\xfe\x9c\xe1\xa9\xd9\xbd\x75\x7c\x2b\xda\xf0\x4f\x0c\x50\xed\x0b\xcd\x64\x84\xea\xb3\xa1\xd0\x9f\x56\xcb\x37\xb1\x9f\x42\xd9\xab\xd8\xaf\xc4\x7d\x62\xcf\x36\xa7\x59\xa4\xac\x74\xec\xee\x94\x54\xed\x28\x75\x7d\x6d\xeb\xac\x69\xeb\x21\x33\x48\x3b\x4f\x4e\xfa\x25\x55\x11\x14\x26\xbd\x09\x04\xb1\xf9\x0f\xd9\xf1\x2f\x92\x1d\x9f\xf4\xf5\x04\xa2\x69\x41\x41\xc5\xad\x1c\x89\x42\xc0\xfd\xf3\x0d\x47\xa4\xc1\xca\xf1\x28\x68\x5b\x77\x02\xb6\xdb\x9b\xd1\xa3\x80\x45\x3d\x79\x24\xaf\x7c\xb9\xb5\x38\x51\x39\x0a\x4c\x13\x77\x30\xf2\xd4\xa9\xaf\xf8\xe8\x87\xc6\x51\x50\x39\xaa\x24\x79\x5e\xfa\x29\x3d\x0a\x30\xe9\xd5\xf2\x12\xa9\xcd\x3d\x08\x20\x00\x4f\x8b\x96\x77\xf5\xe0\xfd\xc9\x50\xd7\xc6\x18\xab\x87\xd3\x1f\xcb\x54\xed\xc1\xaf\xfe\x89\xa8\x83\xc1\xba\x7b\xd4\xbd\x00\x62\xc7\x1e\x05\x38\x25\x76\x59\x61\x3a\x16\x1d\xb4\x21\x55\xc7\xea\x02\x27\xba\xa6\x89\x0f\x82\x09\x9f\xb2\xce\x80\x50\x5e\x8c\x8e\x52\xbc\x17\xd0\xa3\x40\x4e\xd8\x75\xc0\xf6\x6a\x03\x66\xf5\xd1\x8f\xae\x83\xfa\xbd\x26\xb6\x27\x35\xda\xa7\x01\xbb\x0e\xca\x58\x61\xf4\x7d\xc0\x90\x9c\x6a\x9c\xf2\x24\x25\x88\x69\x77\x57\x47\x01\x46\x29\xb8\x21\x20\xf4\x43\xc0\xfa\x7f\x96\xd9\x4e\x30\xee\x7d\x45\x4e\xc8\xe4\xcf\x64\x6a\xdd\xe9\x8f\x76\x02\x7c\x1d\xd0\xc6\x32\xd0\xe5\xaa\x87\xbe\x46\x90\x75\x3d\xc3\x32\x14\x2d\x91\xee\x24\xc0\x02\xed\x60\x86\xa5\x0f\x09\xca\xd9\x69\xa0\x1c\xa4\xc0\x91\xd4\x15\x3e\x08\x68\xe9\x31\x1f\x21\x15\x88\xfe\x7d\x30\xd6\x71\x4b\x1f\xd1\xee\x90\xd8\x55\xc0\xa0\x0f\x01\x45\x77\x86\xa8\x31\x9b\xa1\x5e\xab\xb0\x28\x36\xf9\x30\x19\x14\x74\x29\x47\x6a\xef\x05\x05\x29\x52\x8e\x91\x9f\xf2\xd8\x49\xa3\x18\xa9\x90\xb9\x01\x0b\x38\xdc\xeb\xda\x17\x22\x08\x7d\x13\xb0\xce\x80\xbe\x0d\xd8\x0f\x1c\xa3\x32\x19\x91\x51\xed\xc5\x0f\x27\x53\xd3\x04\x1b\x49\x3c\x24\x55\x61\x5c\x77\xd6\x25\x2a\x1a\x16\x44\x76\x2d\x75\x62\x31\x6d\x08\xca\x20\xe9\x32\xb0\xd6\xd1\x37\x41\x9e\x77\xde\x06\x05\x5d\x96\x75\xb5\x39\x48\xd9\x55\x2e\x66\x3e\x37\x0e\x37\x28\xa4\xdf\x85\xcd\x71\x88\x41\x1f\x06\xac\xf3\x2e\x6a\x9e\x43\x43\xd7\x7a\x82\x99\xc6\x29\x29\x08\x19\xb5\xf4\x3b\x49\x9d\xb4\xd6\xed\x43\xe8\x71\x1c\xcd\xed\x1f\x5c\x15\x81\xf8\x65\xc0\x7e\xe2\x18\xc1\x32\x22\x42\x5f\xcb\x79\x94\xaf\x74\xb9\xb3\xbb\xbb\x77\x74\x74\x70\x78\x24\x2a\x19\xd8\x03\x3a\xb4\xb7\x0a\x42\xf7\x03\xf6\x7d\x8a\x51\xb2\xe0\x2e\xc4\xdf\xa6\xc7\x01\x9b\x4c\x25\x2c\xd0\x3b\x81\x0c\x21\x3c\x77\xae\xdb\xba\xb4\x3a\x95\x9d\x97\x62\x2e\x5f\x8b\x9e\x41\x79\x7b\x43\xd0\x5d\xea\xb3\xb9\xf2\x62\xe8\xb0\x2c\xc5\x3a\xfe\x3a\xa1\x2e\x5b\xa4\x38\xa5\x0e\xa1\x89\x78\x2a\xb7\x35\x1f\x3b\x36\xa7\x0e\x80\xf0\xeb\x14\xfb\x10\x5e\x6d\x2d\xf8\x35\x0e\x99\x5f\xdf\xaa\x24\xcf\xc3\x0e\x63\xd0\x5b\xd3\xec\xbc\x4e\xe1\x06\xae\x46\x6a\xe3\x1b\x08\x47\x5d\x45\xab\x0d\x27\xfb\x81\x8a\x62\xad\xd6\xd0\xd6\x4f\x34\x64\xaa\x9e\x1a\xf2\x0a\x4b\x47\xf1\xc7\x6a\x8f\xf9\xd4\xa5\x09\x51\x51\x36\x43\x7e\x55\x0d\x20\x1c\x43\x69\x3b\x24\xf8\x4e\x80\x93\xae\x4b\x07\x44\x46\xb0\x75\x9f\x24\x23\xd7\xb2\x68\x64\x59\xc4\x15\x94\xc3\x37\x4d\x2f\xc4\x30\x4d\x13\x77\x5a\x0b\xc4\xab\xa2\xd6\x47\x34\xd6\x31\xa7\x9f\xa9\x15\x5f\xa8\x25\x7f\xa5\x96\x7c\x71\xfb\x9a\x3f\xaf\x96\x95\x7e\xd4\xcf\x7e\xf8\x59\x4b\xfc\x4c\x2c\xf1\x2b\x58\xe2\xc5\xed\x6b\xac\x42\xaf\xee\xa7\x6a\xa9\x33\xb1\xd4\x65\xac\x5c\x1a\xc8\xa5\xce\x08\x9d\xad\xd1\x88\x91\x8c\x0b\xca\x66\xe3\x90\xc5\x6c\x60\x0f\xe1\x19\x87\x6c\x40\x63\x96\x75\x03\x62\xe3\x90\xcd\xba\x5b\x34\x66\x1f\x03\xfc\x3c\xc0\x6e\x8a\x39\xa1\x03\x42\xc5\x47\x42\x33\x2b\xec\xc6\xdb\x5f\x0f\x06\x8f\x86\x5f\x7f\xbd\xf5\xe0\xfe\xa3\xfb\x83\xaf\xbf\x1e\xae\x39\x20\x45\xaf\x9c\x6b\x7f\x9e\xcd\x0d\x27\x08\xa2\x2b\xee\x19\x4a\xe7\xc1\xaf\x5d\x60\x1e\x54\x14\xe5\x88\xb9\x1c\x27\x34\x26\x2a\x88\x65\x0c\x41\x2c\xb1\xc3\x02\xcb\x27\x7e\x68\x24\xb0\x60\x62\xc4\xc9\xc4\x99\x02\x8c\xea\xa3\x55\x16\xd3\xf0\x49\x2c\x6d\xd1\x7c\x16\x8c\xfc\x27\x59\x57\x16\x77\x99\x6f\x85\x14\x3b\xcc\xb7\x62\xa8\x64\x9c\x4c\xdc\x29\x13\x35\xd8\x1e\x0f\x78\xca\x0d\x91\x30\x92\x25\xb3\x91\xbf\x9d\x75\x63\x2b\x1c\xf9\xdd\x2e\x29\xbf\xfb\xdd\xe1\xb4\x8a\x12\xb0\x1d\x13\x95\x5b\xb4\xb1\x1d\x40\x5e\x68\xa7\x3b\x54\x2d\x75\x87\x9f\x6e\x4b\x0c\x31\x84\x3e\x26\x13\xdf\x0a\xa6\x35\x22\xed\x5b\x5b\x65\x4c\x78\xbd\x56\x0c\xfa\x45\x23\x0d\x93\x4f\x25\xef\xf1\x22\x60\xcf\x15\x64\xd4\x3c\x5e\xff\x12\xb0\x17\x35\xa2\xf9\x4e\x90\xc3\x93\xe4\xab\xd2\x3c\x03\x4f\xfe\x6c\xe0\xe9\x57\xa4\x3f\x72\x4c\xb3\x83\x11\xd8\xf1\xfa\xa1\xf1\x22\x20\xa6\xf9\x34\xc0\x2f\x02\x2a\xd3\x3e\x49\x1a\x6b\x1e\x9d\x7f\x09\x6a\x3e\x1b\x95\x9f\xab\x77\x01\x99\x0c\xa7\x6b\x2e\x9d\x51\xa1\x87\xf1\x4d\xc0\xb2\xde\x8c\xfe\x18\xb4\x05\xa9\x5c\xbd\xdc\xad\xa0\x9e\xcd\x65\x58\xea\xe3\x14\x03\xb0\x68\x28\xa0\x2e\x1b\xd0\x84\x4d\xa6\x23\x7f\xdb\x1d\x41\x08\x6e\xd7\xb2\xa6\x54\x8c\xf1\x1b\xd5\xb9\x98\x86\x24\xcf\x95\xf4\x92\x8e\x27\x21\x8d\x27\xe1\x74\x6a\x8b\x5f\x52\x85\x82\x2d\xe8\x4f\x01\x5b\xf2\x30\x8d\x7d\x9e\xd8\x3f\x06\x58\xb0\x33\x40\xf3\xe5\xdb\x90\x14\x92\x05\x48\x1a\xbb\x59\xda\xf9\x95\x44\xa4\xa0\x4b\x55\xa6\x65\x70\x3f\x05\xe0\xc1\x4a\x4e\xc3\x77\x01\x3b\xe4\xe7\x7b\xd7\x8b\xda\x22\x7e\x1b\xb0\xef\x6a\x8b\xf8\x7d\xc0\x7c\xbc\xee\x2a\x13\xf5\x9d\xfe\x19\xea\xb0\x6f\xd5\x00\xcb\x93\x31\x07\xd1\x59\xe0\x9c\x27\x36\x3a\x43\xd2\x6e\xf5\x87\x80\x55\x5e\x37\xa1\x84\x58\xe3\x11\xfe\x3e\xc8\xf3\x1f\xc4\xca\xf3\x14\xaf\xf5\x62\x83\x9f\x4e\xc9\x12\xbd\x2f\xbd\x3c\x6b\x9f\xa3\xca\x74\x06\xac\xc3\x7a\xd0\xbe\x66\x68\xfa\x10\xca\xb5\x8f\x2c\x95\xb5\xc2\xd9\xa6\x99\xd6\x39\x4e\xd9\x05\x80\x4b\xa8\x40\x00\xe6\x77\x01\x19\x7b\xae\xe6\xb0\xec\x10\x7c\x82\x66\x61\xe2\xcc\xa4\x3f\x50\x98\xc4\x9f\x83\x15\x5f\xcc\x2a\xb6\x2d\xcf\x73\xbe\xad\x83\x78\x12\x08\x68\x5b\xbe\x95\x6e\x7b\x25\xd2\x13\xac\xae\x64\x7a\x38\x19\x85\x4f\x38\x04\xb9\x15\xb0\x01\x21\x6b\x4b\x1a\x21\xef\x5b\xa4\x4d\x1f\x84\xfe\x0c\x4b\x06\xc3\x4f\x64\x15\x25\xff\x67\xfc\x0c\x6b\x0d\x85\xf8\x5a\xa1\x36\x5b\x2c\xc9\xd1\x99\xa6\xfc\xdb\xd3\x0c\x1d\x48\x3c\xd2\x0a\xb5\xaa\xbc\xc9\xd5\x48\x4e\x73\xb6\x32\x13\xfe\x4c\x37\x26\x2d\x8d\xea\x81\x86\x6b\x7d\xa4\x9c\x8c\x1a\xc6\xca\x25\x1c\x94\x70\xa8\xd7\x40\x47\x43\x17\x6c\xac\x5e\xe2\x03\x1d\xc4\x18\xd6\xb4\xce\x22\x00\xb5\x6f\xa4\x00\xec\x11\x8a\x5e\x39\x0b\x28\x90\xe7\xe8\x88\xcb\xb2\xe3\xc6\x88\x04\x8d\x54\x88\x51\x65\xec\xff\x19\x8f\xed\x63\x3f\xdf\x27\x61\x8a\xc7\xf6\xe3\x7c\xf8\x30\xbf\xb7\x45\xf0\xd8\xde\x0d\x9c\xf9\x82\x7b\x44\xd6\x70\xa7\x5f\x46\xdd\x57\x83\xd3\x92\x9e\x9c\xa5\x78\xc6\x1a\xf6\x72\xda\xd5\x58\x8d\x72\x95\xf1\xbe\xd2\x94\xcf\x17\xa9\x91\x46\x46\xb2\x88\xb9\xe3\x19\x61\x04\x42\x2a\xe0\xc5\x12\x7a\x7b\x27\xe1\x7e\x68\x44\xb1\xc7\x63\x91\xf5\x8c\x1b\x3a\x0b\x85\x02\x8e\xe8\x96\x21\x63\x3d\x27\xc6\x5c\xc8\xb0\x17\xce\x25\x37\x1c\x63\xb2\xb2\xd2\x53\x4c\x94\x36\xa2\x87\xd4\xa2\x46\xb3\x36\x1c\x99\xce\x20\xf2\x0a\x97\x7f\x42\xf9\x27\x9e\x61\x52\x50\x67\x56\xf1\x1f\xee\xac\xe4\x3f\x68\xa2\x9e\x67\x41\x14\xc5\x34\x9b\xb1\xfe\xc9\x1d\x3c\xb9\x63\xde\xfd\x4f\xd3\xfc\xc4\x3b\xf1\xc6\xf9\x93\xc9\x9f\xb7\xa7\x5f\x6d\x93\xfe\x39\x0d\xd6\x3f\x93\xfe\xf9\xe8\xd8\xc5\x48\x89\x2e\x88\x6e\xd5\x4f\xed\x1b\x41\x5d\x59\xdc\x3b\xdc\x7b\xb1\xf7\xe3\x9b\xd3\xc3\xbd\x37\x2f\x77\x76\xf7\x4e\x8f\x8e\x9f\x1e\xbd\xdd\x7f\x7b\xfc\x76\xef\xe8\xf4\xf8\xf5\xb3\xbd\xe7\xfb\xaf\xf7\x9e\x9d\xee\xee\xbc\x79\x7b\x7c\xb8\x47\x7d\x28\x20\x73\x7e\xb7\xb7\xf7\xe6\xe8\xf4\xce\x80\x3a\x2c\x1a\xa3\x3b\xc8\x46\x77\x06\x3a\xa0\x42\xed\xfe\x6e\xd5\xd6\xa5\xc2\x46\x3e\x93\xfb\xbe\x12\x9f\x26\x69\xb9\x77\x4b\x09\xdb\x1f\xfb\xca\xf9\x24\x8d\x68\x2c\x44\x31\x78\x2b\x23\x7e\xc0\x28\x6a\x77\x81\x53\xd1\x90\x3f\xc3\x9d\xc8\x34\xfd\x3c\x5f\xdb\x48\xb1\x69\x76\x87\xe0\x1f\x43\xfb\x0a\x72\x94\xd0\x9e\xb0\x10\xbc\x2a\x83\x60\x13\x03\xe3\x92\xf4\xbc\x28\xe4\xa4\xa4\xf1\x40\x26\xc0\xe8\x3b\x13\x48\x55\xb0\x6d\x1a\xa3\xc2\x90\x66\x6d\x7e\x59\xe3\xd1\x2c\xcf\x71\xac\x73\xc6\x44\x6e\xde\x05\xcb\x7a\x52\x4e\x14\x2d\x2d\x64\x1f\x3c\x96\xf5\xb2\xd0\x77\x23\x8f\x8f\xb2\x5e\xe0\x24\x29\x08\x4b\x6c\x50\x68\x04\x78\x21\x08\xe7\x48\xe6\xbe\x64\xaf\x5c\x9c\xd1\x40\x86\x38\x91\x9c\xfb\x25\x91\xe1\x5e\xfc\x19\x56\xf1\x77\x2e\x09\xed\x2c\x54\x2a\xc8\xab\x1a\xb3\x4f\x06\xc0\xdf\xd7\xdb\x79\xe6\xe2\x80\x66\x69\x3d\x8d\x50\x8f\x90\xb2\xf9\x39\x05\xdf\xd9\xe7\x6c\x40\xcf\xd8\x60\x74\xf6\x44\x07\xe8\x19\x9d\xc1\x0d\x02\x76\x31\x39\x9b\x96\xd8\xfa\xaa\xd1\x16\xdd\x61\xce\x0c\xbb\x33\xc1\x9f\x5e\xca\xe9\x27\x34\x28\x59\xe0\x01\xa1\x47\x6c\x32\xa5\x07\x6c\x38\x3a\x78\x72\xa9\xeb\x3d\xb0\x2c\x72\xa4\x46\xa2\x69\x11\x9e\xb3\xcb\xc9\xc1\x94\x8c\xe7\x5a\x3f\x32\x57\xb3\xba\xc7\x2e\x7b\x70\xdd\x04\x9c\x3f\xaa\x00\x70\xd7\x6c\x72\x55\xba\x20\x3d\xa2\x3b\x62\xc6\x4a\x00\xdb\x33\xcd\x6b\x59\xfd\x9e\xac\xe2\xb4\x5c\x29\x75\xaf\x42\x09\x3d\xd7\xda\x91\xdf\x29\x73\xf1\x15\x0d\xe8\x0e\x3d\xa2\x7b\x02\x52\x76\xb6\xd9\xb9\x69\xe2\x1b\x8b\x05\x0a\xdf\x9e\xd3\x1d\x62\x9d\xd2\x73\xb6\x63\x5d\xe9\x01\xea\x5b\x03\x37\x56\x99\x8b\x14\xd3\xda\x5d\x5e\x9c\x56\x3e\x81\x65\xc7\x5d\x16\x5b\x9a\x06\xd2\xa4\xe2\xa0\x32\x16\xcc\xd6\x77\x0a\xc4\x53\xda\x17\xf2\xa0\x90\x2e\x66\x84\xaa\xbd\xe2\xd0\xac\x61\x99\xa5\x2a\xcf\x46\xca\x05\x8f\x53\x0b\xd4\x0d\x0e\x78\xc4\x2e\x56\xb4\xe2\x0e\x02\x77\x31\xc8\x2c\xbd\xc4\xa4\x32\xe1\x3f\xd5\x7d\x0a\xa9\x50\xdc\xb1\xf4\x2d\x83\xee\xae\x7d\x73\xd5\x97\x27\xc8\xce\x98\x3f\x71\xb4\x67\x73\x41\x96\xa6\x2a\x40\x91\xf6\x7d\x0a\x77\x24\x99\xe5\x68\xb1\x27\xd0\xfb\x0f\xec\x82\x83\x6d\x75\xe7\x66\xc6\x92\x19\x0e\xfa\xc3\x2a\x4c\xbb\x94\x91\xb8\x3d\x7b\xc2\x92\x71\x09\x2b\xd1\x64\xd6\x1d\x4e\xc7\x4e\x15\x76\xdc\x96\x49\x56\x3d\x89\x17\x19\x8b\x26\x81\x90\x20\x1a\xf3\xca\x18\xcb\xc6\x08\xd9\x59\x01\x46\x75\x12\x42\x66\xb3\xb5\xe8\xd8\x62\xd5\xc8\x32\x5d\x8d\xe3\x2d\xbd\xe6\xb0\xd2\x6a\xb3\x7e\xb9\x28\xd6\xae\x82\xb6\x07\xa6\x89\x1d\xc6\x2d\x34\x46\xd6\xb5\x23\x30\x04\x0d\xc7\xb3\x68\x92\x4e\xb1\x43\x43\xea\x13\x1b\x9d\x4b\xa2\x9b\x96\xc9\x3e\xb1\xf5\xe3\xb5\x23\xf0\xa0\x4f\x0a\xba\x98\xad\x69\x1c\x29\x5f\x0f\xd0\x34\x30\xcd\x12\x6a\x1a\x3a\xc7\xfa\x8b\xbd\x2c\x20\xf0\xb9\xf2\xb2\x34\x2e\x9f\x6c\x84\x68\x2c\x3e\x48\x99\x83\x46\x0c\xf5\x9d\x85\xdf\xbf\x1c\x54\x07\x9f\x2b\x26\x6a\x3e\x5b\x16\xd4\x61\xcb\x62\x0d\x68\x79\xef\x2c\xf2\x6e\xc0\xdd\xbd\x7c\xac\x19\x32\xcb\x84\xf1\x9b\x38\x9a\xfb\x09\xef\xc5\x5c\xde\xeb\xa9\xbc\x8c\xbe\xf2\x93\xc4\x0f\xcf\x0d\x7d\x3b\xd8\x30\x16\x4e\xec\xcc\x79\xca\x63\xdb\x10\x65\x11\x21\x36\xe6\xbd\x3b\xe0\xb6\xff\x8d\xfe\x96\x98\x66\x7d\x1d\xd6\xbf\xb7\x5d\x1c\x12\x7c\xd9\x24\x9d\xb2\xf5\xdc\x93\x74\x2a\xd8\xf6\xd9\x0c\xa3\x45\x24\x46\x1b\x5a\x11\x4d\x41\xe2\x87\x38\x47\xde\x3f\xdc\xa2\xc8\xd0\x06\xff\xbe\x97\xa5\xc2\xbb\x17\xb3\x7f\xea\xeb\x7f\x97\xb3\x3f\xe4\xfa\xdf\xc5\xec\x1f\xf1\xfa\x5f\xbd\x57\x7f\x4f\x97\xfe\xf3\x3a\x0c\x8d\x9a\xd2\x22\x6b\x4a\x8b\x32\xf8\x1b\x63\xe9\x9a\x2c\xd1\x2a\x9b\xe6\x39\x0e\xd7\xa5\xc4\x4e\x5a\x8b\xf2\xbb\x59\x58\xbc\x99\xfd\xe5\xc2\xe2\x5f\x20\x26\x42\x67\x5a\x24\xc5\x56\x11\x18\x32\xff\xf5\x32\xe3\xca\x50\x0b\x21\x71\xe7\x39\x37\xcd\xd4\x34\x91\xba\x13\x5d\x4d\x8c\xe6\xc5\x96\x21\xe0\x36\x15\xf5\x2f\x66\x03\x1a\xd5\x91\xb4\x46\x88\xcb\xc4\x8e\x68\x9b\xdd\x7b\xbc\x5d\xea\x26\xc6\x4b\x21\x23\xd8\x9d\x41\x61\xab\xa7\xa1\x76\xaa\x34\x89\x2d\x6b\x5a\x14\xb4\xe9\x54\x53\x4a\xb0\x69\x41\x67\x76\x54\x14\x9f\x2b\xcf\x4a\x28\xe1\x7f\x5f\x81\x56\x4c\x8e\x4f\x1d\xd6\x19\x50\x97\x75\x86\xd5\xac\xd4\x66\x24\x6c\x81\x64\x21\xd6\x86\xeb\x47\x73\xd2\x87\x27\x2e\x19\x36\x87\xa5\x20\x60\xd1\x74\x75\x8e\x5c\xd1\xa4\xcf\x60\x92\x56\xd4\x98\x8e\xde\x40\x61\x4f\x56\x93\xe7\xfa\x09\x93\x62\xe6\x87\x4e\x10\xdc\x40\x00\x5b\xa5\xe1\xf6\x8b\xa2\xa8\x76\xaa\x82\x93\x3f\x50\xe9\x04\x21\xa7\x67\xf2\x4e\x70\xb2\x70\xe4\xf1\x1f\xe8\x1a\xb9\xad\xf4\xb4\xe0\x4c\x97\x56\x76\x04\xe0\xfb\xbf\x72\x7c\x52\xc0\xc5\x84\x44\xe6\x5a\xb5\x86\x01\xf3\xfb\x73\x69\xe9\x55\xd6\xd7\x7a\x8d\x53\x7e\x2b\x68\xc3\x00\xac\x3d\x6b\xad\x2b\x50\x79\xd3\x5a\xab\xad\x8c\x42\x26\x52\x71\x5a\xbb\xd5\x4f\x7a\x49\x14\xa7\x18\x37\x51\x56\xd9\xd0\x26\x9f\x82\xc0\x57\x6c\xfa\x38\x4e\x7b\xbe\x07\x8e\xf5\x03\xbe\x1b\xcd\x17\x4e\xac\x9c\x7b\xd9\x9b\x2b\x5c\xcb\xbe\xd9\x9b\xa1\x60\xd2\xda\x5d\x94\xb4\x4f\x96\xd3\xb4\x3a\x83\xa0\xb4\x9b\x2e\x2c\x57\x17\x7c\x97\x41\xe4\x78\xbb\xab\xcb\x05\xa0\x38\xa0\x62\xb1\xe6\x73\x3f\x25\x18\xbd\x3c\xd8\x79\x76\xba\x7b\xf0\xfa\xf9\xfe\x0b\x04\xfe\xd0\xaa\xb5\x69\xeb\xce\xdf\xcb\x15\xab\x44\xf8\xa2\x8f\x10\x73\xd3\xf3\x93\x85\x93\xba\x17\x95\x47\xd6\x18\x23\x88\x2b\x50\xdd\x17\xd3\xee\x55\x4b\xf7\xa2\x90\xf3\x41\x99\xf3\x10\xfc\x40\x97\xce\x6a\x43\x8c\x8e\xf6\xde\x9e\xee\xbf\xde\x7f\xbb\xbf\xf3\x72\xff\xe7\xbd\x67\x48\x30\x16\xf2\xf3\xc3\x5b\xdc\x95\xd6\x3d\x95\xd2\x46\x1f\xfe\x92\x09\x93\xf2\xf7\x1f\x3d\x6d\x8b\x08\xe3\x08\x9c\xb9\x46\xa9\x32\xdb\x24\x6d\x9e\x6e\xef\xd3\xc5\xac\xf2\x74\x1b\xdd\xe6\xe9\xb6\x74\x68\x7b\x5f\x3b\x33\xf6\x57\xbc\xd9\x8e\xb1\xc3\x7c\xe5\xcc\x58\x3b\xe1\x50\xb3\xae\x5c\x9c\x1e\x21\xea\xe4\xf9\x64\x4a\x88\x1d\xe3\x86\x5b\x69\xaa\x5c\x14\xd7\xfc\x12\xc3\x54\x97\xc6\x9f\x3d\x24\x3d\x13\xfb\xb7\x79\x26\xa6\x4b\x31\x60\x79\x16\xf0\x17\xac\x2b\x40\xcc\x3f\xc3\xa2\xee\x3a\x7f\xc4\xa2\x9e\x65\xa1\x17\xf0\x72\x4d\x0f\x0f\x5e\xee\xfd\x05\x0b\x2a\xfd\x0b\xff\xb1\xab\xb9\xee\x20\xab\xcd\xef\xb8\x9e\x64\x31\xdf\x8a\xe2\xc1\x84\x03\x2d\x1d\x85\x1b\xfc\x4a\x8d\xb9\x1c\xbe\xf4\xdf\xbb\xf7\xac\x06\xdb\x93\x29\xb1\x37\x7f\x8d\x66\x38\xae\xe8\x18\x29\x68\xd3\x5a\xf0\x2f\x87\x3b\x19\xe0\x8b\x06\x7f\x35\xfc\x6d\x02\xbc\x48\x4f\x0a\x44\x3e\xae\x81\x1f\x75\xd8\x64\x2a\xe0\xd2\x6f\xc0\xa1\xcb\xe6\x33\x1c\xad\x11\x2d\x01\xa0\xd0\xec\x7d\xea\xf6\x12\x5c\x2e\xaa\x3f\xc3\x38\x61\x6e\x2f\xc4\x84\x48\x8d\xb8\x76\x62\x3d\x7c\x58\xf9\xc5\xee\xe0\x8c\x29\x15\x39\x59\x35\xcd\x2d\xf3\x0f\x36\x79\xbd\xd6\x51\xfa\x11\x1d\xde\x57\x0d\x0f\x07\x2b\xa4\x63\xb8\x45\xbd\x1a\x36\xf4\x3f\xc3\xef\x37\xdc\xfd\xcc\xc0\x4b\x50\xa3\x47\x70\xec\x2b\xf5\x20\xa7\x73\x27\xf9\x60\x2f\x17\x4e\x7a\x91\xd8\x13\xd4\xb4\xa9\x45\xd3\xa2\xdc\x82\xc3\x2d\xbd\x07\x83\xb5\x3d\xa8\x83\xc7\x04\xd1\x39\x46\x2f\x22\x3f\x3c\x17\x1b\x4a\x29\x5a\xe0\x06\xee\xf1\x9b\x67\x3b\x6f\xf7\x4a\xcf\xfb\xf4\x72\x86\x2f\x67\x78\x59\xd0\xac\xe1\x53\xa5\xd6\x3f\x42\x88\xed\x28\x03\x5e\x3d\x9c\xac\xe7\xf9\x95\xbb\x52\x5a\x6d\x4e\x3b\xa8\xed\xd4\xb2\xc7\xf7\x6d\x35\x75\x0f\xeb\x51\xe0\x87\x0f\x75\xf2\xd6\xb0\x91\xfe\xd8\x56\x00\x30\x7c\x4c\x79\x2f\x1d\x30\xae\xe2\xe8\xdc\x27\xd4\xed\x09\x2e\x2a\xd5\x04\x79\x6b\x58\x2d\x0e\x14\xd9\x1a\x52\xb7\x37\xc3\x10\xaa\xd2\x0f\xfd\xe4\x02\x6f\x0d\x75\xde\xfb\x60\xb3\xa2\xa3\x5b\x9b\xe6\xa7\x51\x91\xdc\x7a\xa5\xa5\xb7\xc2\x46\xce\x64\x30\xfd\x4c\x84\x44\x9d\xd2\x20\xed\xf7\xb7\x57\xa2\x3f\xb4\x1b\x65\x81\x67\x84\x51\xaa\x73\xcc\xb3\x20\xf5\x17\xb5\xac\xe8\xd6\x5e\x84\x18\x1d\xee\xd5\x09\x6c\xe5\x56\x5c\x73\x3e\x5b\x8f\x3e\x81\x35\xe5\x8d\xe1\xc9\xe4\x3e\x1d\x3e\xa6\x5b\x43\xba\x75\x7f\x3a\x2d\x31\xe9\x8a\xfd\xf2\x7f\x20\xa9\xdb\x91\xd4\x7f\x5d\x38\x6a\xf8\xb7\xc4\x51\x7f\x01\x0e\x1a\x16\xff\x8e\x51\x90\xda\x59\x7f\x3f\x1c\xb4\xd2\x60\x1b\x12\xd2\x59\xfe\xc1\xb0\x50\x41\xe7\x59\xea\x28\x39\xb7\x26\xc0\xae\xc6\x05\x54\x9b\x81\xf1\x82\xae\x88\x7a\x6b\x39\x6b\x1a\x09\x9d\x5d\x77\x7e\x2d\x6f\x79\x79\x50\x65\x04\xc6\x77\x2d\x17\xf0\xb5\x22\xcb\xa6\xf8\x0e\x6d\xc6\x9b\x6d\xa2\xbd\x36\x1c\xe0\x64\x14\x6e\x77\x87\xe3\x96\x2c\xd2\x1a\x14\x87\x32\xe0\xd8\xda\x67\xd8\x50\x42\xb6\x6f\xe5\x44\xd7\x7a\xbe\x5a\x5e\x0c\xa2\xb9\x95\x37\x74\xbd\x84\xa4\x36\xc3\xf0\xb5\x90\x21\xe0\x80\x9e\x90\x51\xad\x5c\x35\x0e\x50\x45\x6c\x02\xa2\xa6\x7e\x73\xbd\xbf\x13\x81\xa1\xe8\xd9\x6c\xd5\xd7\x30\xa2\x75\x97\x5e\x88\xfa\x6e\x14\xda\xe0\x04\xa9\x7b\xe9\x3a\xb1\x87\xa8\x9f\x3c\xf7\x03\xbe\xe7\xf9\x69\x14\xdb\x9d\x21\xe5\xd7\x29\x0f\x13\x00\xb4\xc9\xb4\x54\xd3\x3a\x8b\xc5\x7e\x38\x8b\xec\xb3\x19\x8d\xa3\x2c\xad\xf9\xbd\xaf\xea\x16\xb8\xd3\x46\xfd\xa6\x83\x3e\x67\xb1\xb0\xaf\x82\xa2\x98\xd2\xd0\xb9\xdc\x87\xcb\x2c\x93\xf5\x3e\xba\x51\xf8\xca\x49\x79\xec\x3b\x81\x7d\x36\xeb\x89\x77\xd9\x8e\xbd\xb1\x15\x6d\x6d\x20\xb2\x7b\x14\xf5\x11\x29\xc0\x7b\x7e\x14\x73\xfb\x7c\x06\x27\xc9\xff\xcd\xff\x17\x00\x00\xff\xff\x50\xd0\xa5\xac\xad\xd3\x01\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\xbd\xe9\x76\x1b\xb7\xb6\x30\xf8\xbb\xbf\xa7\x20\xeb\xfa\xd4\x05\xc2\x2d\x9a\x74\x86\x93\x14\x8d\xf0\xca\xb3\xe3\x31\x96\x6c\xc7\x61\x78\xb5\x4a\x24\x28\xc1\x22\x01\x06\x05\x4a\x96\xc9\xea\xf7\xe9\xd7\xe8\x27\xeb\x85\x0d\xa0\x26\x96\x6c\x9f\xf3\x0d\x6b\xf5\x1f\xb2\x0a\x85\x71\x03\xd8\xd8\x33\xe6\x7c\x21\x24\x27\x64\xb1\x91\x33\x23\x94\x24\x74\x1b\x6d\x32\xde\xc9\x8c\x16\x33\x13\x8d\x2e\x53\xdd\x31\x2c\xda\x48\x97\x71\x1e\x75\x99\xb9\x5e\x73\xb5\xe8\x9c\x2d\xd5\x69\xba\x3c\x3e\x17\xd9\xb8\x7c\x4c\xda\x72\x5e\x09\x39\x57\x57\x63\xf7\xd7\x9a\xc3\x55\xe0\xeb\x69\xcd\x91\xf1\xe5\x62\x6c\x7f\x92\x6d\x3e\x0a\x9d\xed\x70\x62\x80\xd3\xad\xe6\x66\xa3\x65\xc7\x10\xce\xb6\xfc\xd3\x5a\x69\x93\x25\xdb\x3c\x07\xde\xf7\x6f\xb4\x7c\xcc\xed\x88\x24\xab\x0e\xd9\xd0\xad\x4d\xe4\x6c\x3f\xe5\xd5\xe9\x47\x3e\x33\xfd\xb5\x56\x46\xd9\x9e\x80\x64\xbc\x7f\x9e\x66\xaf\xae\xe4\x6b\xad\xd6\x5c\x9b\x6b\xd0\x2c\x0a\x05\x23\x16\xfa\x7b\x74\xbd\x3a\x55\xcb\xb1\xfb\x4b\xb6\x39\x28\xa6\xfb\xc2\x70\x9d\x1a\xa5\x77\xbb\xe8\xbf\xfe\x2b\xbc\x44\x20\x98\xee\xa7\xd9\xb5\x9c\x3d\xad\x7e\xaf\xa5\x44\x90\x32\xdd\x37\xea\xc8\x68\x21\xcf\x8e\xd3\x33\xcc\x52\x79\x8f\x4a\xa0\xcc\x2c\x50\x40\x82\x76\x83\x50\x8c\xc7\x31\x2f\x87\xd0\x11\x32\x33\xa9\x9c\xd9\x5e\x2e\xc7\x3c\x59\x82\x08\xc3\x9c\x69\x9e\x1a\x4e\x54\x99\x99\x42\xca\x24\xbf\xea\xbc\x22\x7a\xb7\x9b\x4c\xe9\xc8\x83\x5a\xf4\x4f\x84\xbc\x54\x17\x55\x98\xd9\x46\x5d\x93\x9a\x45\xd9\x26\x5b\x73\x39\xe7\xf3\x23\x93\x6a\x13\x85\x72\x45\x6e\x05\x82\x6e\xc5\x82\x44\xfc\x13\x9f\x6d\x8c\x90\x67\x11\x63\x4c\x53\x73\xae\xd5\x55\xc7\x36\xf9\x50\x6b\xa5\x49\xf4\x98\x4b\x07\x82\x8e\xc8\x3a\xe9\x52\xf3\x74\x7e\xdd\xd1\x1b\x29\x6d\x11\x3a\xb2\x55\xcc\xd4\x6a\xbd\xe4\x86\xcf\x5d\x15\x58\x2d\xd6\x63\xdf\x95\xaf\x52\x84\x2e\x3c\x24\x34\x5f\x28\x4d\x64\x7f\xc5\xcd\xb9\x9a\x33\x05\xb2\x9f\xea\x33\x26\x46\x23\xd7\xfd\x94\xc9\xfe\x9c\x2f\xf9\x59\x6a\xb8\x6d\x20\x75\xc9\x33\x76\x4a\x52\x90\xd8\xe6\x0c\x5b\x99\x31\xc6\x36\x74\xa6\xa4\x11\x72\xc3\x43\x03\xb3\x3c\xb7\x3d\x90\xfc\x93\xb1\x1d\x08\xed\x50\xd9\xcf\xb8\x34\x4c\xf6\x4f\xfc\x7f\xaa\xcf\x46\x7c\x99\xf1\x4e\xad\xc3\x45\x7e\x1c\x47\x03\x8e\x15\x18\x69\x56\x19\xb8\x1b\xc2\x48\xf6\xe7\x22\x5b\xa7\x66\x76\xfe\xf0\xd3\x8c\xaf\x11\xd2\xf8\x85\xe6\xb6\xa1\xc8\xf5\xb0\xda\x4a\x1c\xcb\x7e\x7a\xaa\x37\x6b\x43\xc2\x57\x57\x17\x1d\x69\x56\x99\x1c\x44\x04\x4b\x96\xf9\x69\x46\xb8\x4b\xa5\x57\xe9\xd2\xd6\xb6\xec\xe3\x62\xb1\x3d\xd6\x16\x78\x4a\xf2\x71\xa5\x77\x49\x39\x8c\x0f\x82\x2f\xe7\x11\x2c\x11\xe2\x2d\xd0\xdb\x5e\xa6\xcb\x0d\x4f\xf0\x3b\xd8\x7a\x12\x57\x5d\x9e\x97\x10\x72\xad\xc5\x31\x69\x82\xc0\x4f\xa8\xcf\xe9\xa7\x75\xe9\xc6\x9f\xe7\xc4\x80\x84\x94\x82\xc8\x8b\xad\x12\x86\xb3\x35\xfa\xda\x63\x91\xad\xad\x3b\x09\x63\x83\x54\x9f\x25\xa6\x3f\x4b\x97\x4b\x62\x33\xe6\xf9\xcc\x42\xd7\x22\x88\x5a\x76\xdf\x22\xe6\xce\xf3\xdc\xf4\xaf\x74\xba\x66\x33\x84\xda\x86\x55\x51\xd6\x92\xd0\x6d\xd9\x81\x45\xed\x6d\x6d\xdf\x6c\x91\xb9\x2d\x32\x9f\xa8\x29\xab\xe0\xe5\x80\xe5\xce\x45\x96\x63\xc5\xe7\x61\xdf\x9e\x71\xf3\x3a\xec\xd8\x57\x0b\xb8\x64\xe7\x71\x7c\x4e\xce\xc9\x21\x99\x4c\x29\xa5\xa3\xcb\x38\xbe\xec\x32\x8b\x07\xa4\x1b\xca\x25\x28\x1a\xc7\x64\xce\x2e\x29\xd6\xb4\x62\xeb\x72\xcf\xb3\x65\xe5\xb9\x8e\x19\xe6\xb4\x1c\xc8\xb5\x05\xc2\xc4\x2d\x73\x08\x00\x08\x6b\x68\xda\x5f\x28\xfd\x30\x9d\x9d\x57\xd0\x2c\xa7\x5b\x33\xe1\xd3\x1a\x96\xad\x8c\x29\x60\x14\xc2\xc1\xd0\x3c\xa7\xb4\x84\xcb\x99\x43\xf3\x88\x5a\x46\xd5\xbc\xac\x8e\x4f\x8a\x02\x69\x09\x2e\x8b\x4a\xaa\xc8\x5e\x43\x4a\xb7\xdd\x22\xa7\xb6\x25\x21\x85\x99\xab\x7e\x63\x57\xf8\x44\x4d\xc1\x80\x70\x8b\xdc\x0d\xac\xcb\xd8\xc6\xaf\x71\xb7\x11\x36\xb8\x40\x17\x6c\xd9\xc7\x05\x5b\xe0\xb7\x38\x8e\x14\x82\xac\x3c\x0a\x16\x05\xd8\x17\x10\x9d\x9c\xa4\x57\xa9\x30\x11\x1d\xf3\xbe\xe6\x99\x5a\x5e\x72\xb2\xe8\xfb\x54\xda\x37\xe7\x5c\xd6\x4f\x26\xed\x31\x09\x18\xec\x65\x4e\xa1\xf9\xd9\x83\x3e\x7c\xa7\x49\xa5\xe6\xb6\x1a\x7d\x97\x99\x81\x94\x2c\xf7\x2b\x74\x03\x69\xa9\x37\x9f\x91\x8d\xdb\x4b\x08\x33\x0b\x48\x9b\x1a\x0a\x30\x3d\xd6\xae\xb5\x14\x52\x9a\xa4\x84\xe6\xe5\x0c\x9e\x96\x33\x28\x99\x29\x0e\xc2\x09\xf7\x7b\x76\x6a\x61\x7d\xa9\xc4\xbc\x33\xb0\xc8\x09\x31\x09\x2f\x90\x30\x93\x9b\xe5\x12\x4a\x04\xc0\xab\x28\xb2\xac\xad\xef\xba\x12\xc7\x84\x17\xa8\x20\xe0\x34\x8e\xb8\xc0\xb5\x00\xae\x37\x6d\x15\x52\x3f\x9a\xcd\x88\x37\xb1\x89\xab\xc1\x2e\xa7\xe3\xeb\x35\xf7\xa7\xd3\xf1\x39\xef\x84\xe6\x3b\x73\xc5\xb3\x8e\x54\xa6\xb3\xd6\xea\x52\xcc\x79\x27\xed\xfc\x27\x16\xfe\xcf\x8e\xab\x2b\x2a\xa0\xb5\xc9\xdd\x39\x99\x11\x09\xe5\x00\x5c\x1b\xd5\x75\x67\xf1\xbd\x5b\x77\xbe\xe0\x0d\xdd\xd2\xb8\x1c\x9b\x10\xdb\x8c\x1c\x01\x80\x5f\xc3\x12\x55\x63\xe5\x10\x34\xe1\x13\x63\x57\xca\x66\x69\x5e\xa6\x2b\x3e\x65\xca\x2d\x0c\xe0\x7d\xbb\xe2\x98\xc1\xbf\xe7\x6a\x56\xec\xea\x6e\x09\xa9\x1a\x90\xdd\x02\xad\x82\x98\xee\xf7\x85\x26\x2a\x21\xdf\x06\xd5\x02\xa2\xae\x77\xf6\xe4\xb7\x60\x4d\x65\xc7\xef\xad\xb6\xea\xcb\xc5\x76\x55\xd2\x6f\x16\xb1\x3f\x57\xb3\xc4\x4c\x06\xd3\x7c\x34\xec\x08\xd9\x31\xd8\x75\x44\xe3\xcf\xd5\x8c\x99\xc9\x70\x4a\xe1\x4e\xf9\x65\x21\x64\xba\x5c\x5e\xbb\x6f\x77\xa6\xb6\x87\x0b\xc3\xb5\x7b\xff\x7e\x4a\x01\x11\x90\xd1\xd7\x0f\xa5\xd1\x82\x67\xfd\xf5\x26\x3b\x27\xbc\xd2\xfe\x51\xd9\xbe\xe9\xfb\x03\x4a\x28\xb9\xdb\x6d\xf3\x11\xc7\xd9\x64\xc5\xf9\x62\x47\x61\x78\x07\xc1\x00\xd5\xdc\x8c\x97\x15\xbe\xb2\x15\x36\x9a\x65\x93\x30\xb6\x48\x2b\x65\xa2\x7c\x0a\xa6\x40\xba\x57\xd8\x49\xdf\x55\xcd\x33\x6e\x48\x77\x50\xe9\xe1\xa1\xad\xd0\xee\x9d\xa2\x9f\x13\x85\x5b\xb0\xb2\xce\x10\x63\x19\xb7\x18\xf7\xe9\x5b\xb7\x38\x42\x6e\x63\x73\x75\x45\xf6\x32\x7d\x49\x4c\x7f\xc9\xe5\x99\x39\xa7\x81\x16\x3c\x18\x82\x60\x15\x92\x9d\x6e\x2d\xf9\x35\xea\xf5\xf4\xdd\x90\x77\x44\xc5\x82\x78\x24\x69\x40\xd3\xb2\x17\x1e\x55\x4d\xb4\x9d\x08\xbb\x6c\x59\x77\x08\x05\xba\x0d\xdf\xfd\xbe\x0e\x39\x06\xc0\xf3\x92\x52\xc5\xc5\x2c\x72\xbf\xf5\xb6\xf6\x35\x79\x58\xc1\x4d\x0f\x8b\xc3\xc2\x13\x1f\xbe\x36\xa4\x3e\xba\x83\x50\xb0\xb3\xa8\x1c\x8b\xab\xfe\x4c\xc9\xcc\xe8\xcd\xcc\x28\xcd\xd6\xb0\xae\xbd\x2f\x60\x3d\x49\xa7\x6c\x81\xd4\xd8\x32\xbd\xb6\xdb\x8b\x95\x94\xec\xa3\x00\x4d\xbb\xf5\xb3\xbd\xe4\x16\x36\xa4\x6d\x02\xe2\xd8\x54\x1b\xf5\xe3\xed\x76\x2d\x61\xc4\x19\x63\x8b\xdd\xae\xa5\x49\xc6\x98\x45\xac\x65\xbf\x76\x3b\xde\x97\xe9\x8a\x53\x9a\x83\xe9\xaf\x52\x7d\xd1\x76\x40\x7b\x32\x20\xab\x11\x1a\xe3\xd6\x54\x62\x60\x4d\x13\x62\xfa\x27\x27\x08\xaf\x93\x13\xb6\x86\x14\xf7\xd7\x6e\x47\x8c\x05\x4c\x4b\xbf\x28\x05\x73\x23\xd9\xb1\xa2\x60\x6c\xef\x52\xa4\xaa\xf6\xbb\xb7\xf5\xe7\xa7\xa5\xbd\xe0\x9a\x9c\x55\xf9\x97\xca\xcb\x44\xdc\x48\x4f\x81\xe9\x1f\x56\xf9\x2d\x66\x37\x23\x72\x60\x65\x09\xe4\xa9\x00\x09\x8d\xe2\xa4\x12\x71\x4c\x04\x7b\xad\xd5\x4a\x64\xdc\xd1\x52\x8e\x61\x3a\x23\xb3\x50\x80\x5a\x52\x22\x34\xd6\x36\xe1\x44\xd2\x71\x9a\xa4\xb8\x50\x49\x2b\x0d\x10\x0a\x23\xde\x36\x6e\xd1\x17\x05\xec\x21\x0c\xd7\x16\x48\xab\x3a\x70\x23\x58\x7d\x81\x84\x84\x55\xc1\x4f\xee\x67\x89\x26\x0e\xd3\x76\x8a\xca\xa6\x91\x05\xd2\x05\xbf\xce\x5a\xd6\xe7\x64\x3a\xb2\x7b\x1a\x8f\x77\x9c\x69\xca\x1d\x5a\x94\xb4\xdc\xaa\x9a\x5f\x72\x9d\x71\x42\xa1\xd8\x7a\x32\x20\x03\x5e\x20\x02\x8f\x34\x78\x7f\xad\xd6\x04\xb1\x8f\x76\x35\x06\x7a\xce\x6f\x79\x0d\xb2\xc0\x07\x32\x2f\x3e\x06\x04\x20\x73\xdb\x5d\xcc\x9a\xb1\x43\x78\x55\x59\x5b\xdb\xca\xae\x49\x5e\x01\xa2\xc7\xa4\x3a\x26\x8b\x18\x2d\xe2\x5c\x6b\x7e\xc9\x06\x0e\x89\x22\x12\xf1\xcf\xc8\xbe\x39\x32\x14\x1f\x3d\xbe\xc0\x94\xd0\x25\xf7\x52\x3b\xa2\x30\xa9\x7e\x64\x62\x52\x85\x30\x69\x1e\x2d\x01\x9f\x1f\x51\xe8\x1a\x1a\x40\xcc\x11\x20\x16\xc1\x47\xc6\x51\x2f\xb3\xf3\x54\x1f\x1a\x32\xa0\x05\xa9\x69\x3f\x03\xa7\x71\xec\xb1\x72\x8f\xf7\xb3\xa5\x98\x71\x32\xa4\x96\xf2\xb7\x9f\x2d\x2d\xee\x4f\xeb\x1c\x32\xa3\xd6\x49\x65\x19\x54\x06\x33\xf0\x42\xa0\x46\xe7\x26\x83\x69\xe5\xb8\xaa\xd3\x2c\xc6\xd1\x2c\x8e\x51\x35\x55\xea\xc3\x9d\x48\x97\xe9\x32\x87\x3d\x56\xb5\x75\x12\x6c\x1f\x42\x45\x23\x7f\x58\x9d\x8b\x6c\x54\xa1\xe0\x51\xd4\xe1\xeb\x4f\xfd\xf9\x1a\x18\x32\x84\xae\x09\x24\x8d\x04\xfd\x55\xc2\xa5\xdb\xd5\x79\x80\xb4\x6a\x0e\xda\x2f\xd3\x83\xe1\x48\xfd\xca\x06\xa3\x83\x03\xe5\x16\xac\xd8\x83\x8e\x9a\x42\xca\x44\x13\x42\x78\x54\x5b\xbc\xd1\x77\x87\x37\x2d\xc9\x6d\x2e\xe7\x4e\x9e\x11\xbe\xdd\x65\xc5\x2a\x0c\x02\x08\x3f\xb9\x02\xa2\x40\xbf\x44\x14\xb2\x4a\x72\x49\xbc\xb8\xba\x66\x71\x9c\xd5\x17\xf4\x5d\x51\xd0\x3e\x65\xe3\x65\x1a\x74\x07\x58\xb0\x9a\xbf\xac\xb4\x5a\xa2\x92\x9a\x07\x29\xc6\xec\x5f\x6e\x0b\x8b\xda\x42\xdd\x6c\x5f\xf6\x63\xf4\x75\x27\x33\xa9\xe1\x2b\x2e\x4d\xe7\x4a\x98\x73\xb5\x31\x1d\x2c\xde\x51\xba\xe3\x7b\x10\xfd\x1b\x1d\xce\xf3\x1c\x9c\xd8\x23\xa9\x0a\xb0\x1c\x36\x72\x18\xe8\xc6\x99\xd7\x6e\xe6\x0b\xf1\x5a\x73\xe6\x35\x52\x52\x6a\x7f\x16\x8b\xcd\xa9\xea\x13\x15\xc7\x65\xe7\x55\xb5\x9b\x7e\x69\xa9\xd1\xa9\xe6\xe9\x45\x9e\xdb\xd3\x26\xc2\x67\xdc\x64\xbb\x5d\x14\xa4\x27\xf8\x4e\xe3\xb8\x5c\x3b\x3c\x8e\xf9\x5d\x56\x1d\x35\x1e\x55\x16\x13\x85\x73\x4a\x8c\xab\xeb\x33\xd9\x16\x34\x93\xdf\x44\xc6\x6f\x1f\x0e\x62\x4c\x6e\xc2\x5e\x8e\xba\xaa\x34\x63\x29\x7d\xfc\x12\x44\x33\x24\xa5\x39\x84\x97\x06\xb8\xbf\x0d\x6b\x54\xc6\x8c\x59\x9a\x03\xc7\xc4\x71\xd9\x1d\x2c\x9b\x54\xa4\x5d\x3e\x07\x29\xb0\x0f\x2b\x30\xaf\x71\x94\x77\x75\x74\x81\x67\x2c\x2b\x74\x9b\x33\xa9\x48\xbc\x8c\x97\x41\x71\x8f\x4c\x5d\x3e\x4e\x61\x93\xc3\x42\x48\x91\x9d\xd7\xb0\x59\x81\xba\x6f\x5e\x56\xdc\x2d\xab\x92\x4b\x6e\x2c\x2b\x8e\xcb\x4a\x56\xf9\x13\x3b\xe7\x55\xbc\x5a\x40\x5c\x56\xe6\x15\x64\xc1\xc0\x50\x38\x22\xd2\x76\x31\x07\xdc\x44\xff\xbb\xba\xe8\xd6\x20\x76\xcf\x1f\xe7\xf2\xc6\xa3\x42\x57\xc4\x2a\x81\x53\xb5\xbd\x0c\x47\xba\xca\xf3\x3d\xbc\x20\x96\xf6\x5c\x5d\x7a\x4c\x90\x1a\xc3\x57\x6b\x13\xd1\x1c\xc2\x81\x8b\x52\xc6\xa4\x29\x9a\xae\x82\xaa\x38\x9a\xb7\x81\xd9\x4c\x2c\x53\x04\x25\x3f\x9c\x70\xf0\xfc\x6f\x22\x73\x28\xc4\xb9\x95\x95\x12\xa6\xbe\x7a\x7a\x58\xd8\x9a\x9c\x98\x42\xf3\x30\x72\xa2\xc5\xb3\x40\x47\xbd\xd9\x48\x23\x56\x9c\xf1\x52\x92\x58\xd0\x81\x91\x46\x09\x5a\x33\x6f\x87\x75\x74\x44\x2d\x8b\x99\x53\x0a\xba\x55\x80\x66\xb9\x81\x17\xa9\x39\x67\xcc\xfe\xc6\xb1\x41\x8d\x03\xd9\x13\x46\x95\xaa\x9a\x38\x2e\x9f\xe9\x6e\xd7\x92\xd7\x29\x6c\xe2\xd8\xfd\xb7\xe7\xc9\xf8\x72\x11\xc7\xf6\xb7\xfd\xbb\xed\x18\xdd\xed\x2a\x43\x2c\x27\x21\xa2\x84\x56\x58\x43\x64\x72\x0b\x39\x6c\xb7\x6b\x49\xdb\x86\xb4\xd5\x72\x63\x90\xb2\xae\xa8\x29\xac\x7c\x95\xff\xec\x06\xb6\xc1\x69\x8f\x82\x82\x86\x6c\x73\x18\xc2\xf6\xac\x4a\xe5\x95\x85\xf2\x9c\x4e\x86\x53\x0b\xd8\x19\xdb\xe6\x96\x4c\xc4\x42\x4f\xb3\x87\x72\xb3\xe2\x3a\x3d\x5d\x72\xc8\x2a\x82\xd6\x8a\xe6\xe7\x01\xcf\x66\x5a\xac\x8d\xd2\xb0\x61\xdb\x45\x92\xc5\x71\x77\xe6\x30\xfc\x76\x98\xdc\xc9\x61\x48\xc7\xfb\xb4\x72\xe6\x68\x33\x43\xab\x1c\x1b\xef\xf3\xa2\xb9\x3c\x99\xe5\xb0\x64\x75\x44\xe9\x19\x9d\x32\x57\xd2\x25\xc3\xd8\x50\x98\x29\xb9\x10\x67\x9b\x90\x76\xc7\xa6\x5d\x69\x61\xfc\xfb\x0f\xf6\xdd\xf1\x0b\x3c\xcf\x61\x61\xc7\x18\xc8\x7e\x68\xe3\xa5\x3a\x8b\xc0\xf9\x7b\x82\xf1\x67\x38\x18\xda\xad\xc5\xa2\xa8\x9f\xad\x97\xc2\xc0\x39\x6b\x83\x7f\xd7\xc1\x88\x44\x9f\x23\xda\x0a\x46\x32\xb0\xac\xca\x78\xbf\xc9\xc8\x75\x27\x62\x6c\x4d\x0c\x1d\xcf\x83\x1c\x20\x8a\x68\xe2\x2b\x35\x34\xf7\x8f\x70\xc9\x1a\x64\xa2\x3d\xd2\x2c\xaa\x71\x68\xa2\x22\x46\xba\x9f\xca\xff\xb4\xe4\xc2\x72\xe9\xe5\x6f\x1d\x25\x3b\x51\xcf\x94\xdc\x58\x0e\xab\x36\x10\x9c\x93\x4b\x62\x90\xab\x6a\xf9\xba\xbf\xc4\xc7\xb6\x07\x5d\xc6\x4c\xd2\xc6\xa7\xe7\x70\xc6\xf6\x0e\xbd\xee\xb5\x6d\xa0\x90\x9e\x20\x3a\x05\x8d\x12\x98\x38\xde\xaf\x85\x48\x7b\xe0\xf8\x69\xb3\x44\xfd\x35\xea\x59\xfc\x44\x15\x15\xe9\x76\x61\x0d\x96\xc6\x35\xf0\x6a\xf1\x95\xc2\xdd\xff\xb9\xe6\x6f\x9a\x02\x25\x2f\xb9\x36\x5e\x7a\xd7\x31\xaa\xb3\xd6\x62\x25\x8c\xb8\xe4\x1d\xec\x97\xc5\xdd\xa7\x76\x69\x36\x54\xab\x57\xad\xbb\xa0\x73\x1a\x56\x08\xa7\x39\x1c\x31\xd5\x9f\xab\xd9\xc6\xd2\x88\xf0\x8a\x5d\x93\x23\x1a\xc7\xd7\xe4\xc8\x0b\x0f\x1e\x2e\x91\x7a\xa4\x70\xd8\x2a\xd7\x18\x37\xf2\x11\x43\x51\x75\xfc\x90\x75\x53\xcb\x3c\xfd\x4b\x88\xe6\x90\x44\x73\x71\x19\x51\x88\xd2\xe8\x4b\x08\xa7\x9f\x5a\x7c\xf3\xe9\xab\x58\xe5\xc4\x62\x95\x74\xfc\x69\x9f\x68\x32\x6c\x65\x4f\x2b\xce\xce\x08\xb7\x64\x34\x3c\xa4\x25\xea\xec\x7c\x72\xa0\x29\x90\x67\x2e\x16\xe4\x0a\xd3\xc2\x54\x2d\x49\x77\xd3\x5f\x94\x60\x04\x33\xe1\x53\x9a\xe7\xf0\xb1\xb9\xbb\xdc\x4a\x6d\x4e\xac\x5b\x0a\xc4\xd0\x5e\xd4\x22\x9d\xad\xec\xaf\xfb\xed\xa0\x82\x0b\x37\xb4\xfb\x7b\x87\xb4\x58\x90\x8f\xf5\xa1\x7d\xb4\x34\x4b\x6d\x7c\xf7\x7d\xe6\xfa\x08\xa3\x33\x6e\x22\x21\x3b\x72\xb7\x8b\x32\xff\xb8\x8f\x14\x0e\x67\x33\x9e\x65\x4a\xbb\x4e\x67\x9b\xb5\x3d\xa6\xf9\xbc\xe8\x74\xe4\x16\xa4\x2d\x6c\xcf\x77\xcb\x24\x7b\x91\x03\x05\x93\xe7\xf0\x9a\xa5\xe3\x1b\x08\x8b\x8b\xfe\x02\x53\x96\x64\x08\x92\xd2\xfc\x46\x02\x04\x2b\x05\x93\xc3\x71\x63\x7d\xdb\x31\xbe\x26\x0a\x2a\xd3\x27\xe9\x56\x4d\xcc\x94\xf1\x40\x10\xf1\x1c\xde\x30\x35\x89\x4e\x4e\x66\x4a\xf3\x83\x8f\xd9\x49\x76\x9e\x6a\x3e\x3f\x39\x89\xa6\xbb\xdd\x31\x69\xfb\x00\xdb\x9c\xc2\x73\x16\x4e\xe1\x62\x2f\x8f\xca\xbd\x5e\x58\x5a\xbc\xe9\x0b\x99\xad\xf9\xcc\x1c\xa9\x8d\x9e\x59\xfa\xb6\x91\xd2\xb6\x8f\x9e\x07\x64\x90\x3b\xe6\xe2\x25\x3c\x85\xb7\x70\x8b\x35\x8a\xc2\x03\xa6\xfa\xef\x79\x7a\xf1\x22\x5d\xc3\x8b\x36\xb1\xe6\x83\x38\xbe\x2d\x53\xc4\x0c\x33\x35\xe7\xb7\xfb\x86\x67\x86\xdc\x22\x0f\x28\x85\x47\x4d\xab\x8d\x92\xcc\x6a\xc7\x13\x6f\x26\x66\xba\xdb\x11\xfb\xe7\x09\xb4\x2e\x63\x7c\xcc\x93\x6d\x4e\x73\x4a\xa2\x4b\xae\x33\xa1\x64\x16\xc1\x64\x4a\x9d\xc0\x6a\xeb\xd3\x92\xe8\xfb\xfe\x4f\xfd\x1f\x23\x58\xa9\x39\x4f\x22\x47\x2a\x45\x30\x53\xeb\x6b\x2d\xce\xce\x4d\x12\xfd\xbf\xff\x4f\xe7\xce\xe0\xce\xa0\xf3\x80\x4b\x91\x75\x5e\x6f\xb2\xf3\x8b\x54\xf3\xcb\x0e\xf9\xbc\x54\x42\xab\xd9\x45\x5f\x6f\x68\x64\x1b\xa2\xf0\x37\x1b\xc0\x3d\xa4\xcc\xfa\x3a\x95\x73\xb5\x22\x14\x1e\xb7\x9d\x2d\xce\x5e\x84\x44\x3d\xbf\xc1\x0a\x41\xa3\x19\x47\x51\x62\xb7\x1b\x3d\x89\x7a\xa4\xd7\xfb\xbb\x77\x8f\x16\xd3\x48\xbe\xff\x89\xe6\xf0\x99\x3d\x22\xd1\x05\xbf\xce\x22\x0a\xef\xda\x26\xe9\xb3\x03\x87\xfd\x63\x8f\xdd\x01\xf7\x84\x6d\x73\xf8\xa3\x9c\x14\x7b\x06\xbc\x70\x94\xca\x07\x94\x63\xfe\x01\xcf\xd8\x07\x8b\xa1\xe0\x37\xf6\xc1\xa2\x67\xf8\x9d\x7d\xe8\x67\xdc\x8c\x5e\xb6\xc3\xfc\x77\xb7\x12\x3e\xe0\x1a\x06\x9e\xc3\xd3\xb6\xae\x3c\x2b\x72\xd1\xdd\xce\xe2\xdb\xb7\x6d\xb9\x7e\x2b\x73\xe5\x4e\x50\x60\x3b\xf6\x9e\xbd\x23\x11\x8a\x05\x22\x3a\x7a\x32\x79\x3f\x65\xdd\x01\xdc\xd0\x9b\xd7\xc4\xc0\xfb\x2f\x75\xc4\xa2\xc5\xf7\x74\x6c\x26\xef\xa7\xc9\x8d\xfd\x70\x99\x72\xd4\xd9\xfd\x09\xc6\xb0\x6d\xc6\x4d\xf2\x12\x2c\x86\x7f\x0a\xe7\x69\x96\xbc\x05\x2e\x17\x4a\xcf\x78\xd2\x52\xfc\xad\xa5\x6a\x9e\xda\x93\xe5\x25\x31\x76\x2b\xe6\xb6\xa4\xe1\xfa\x91\xd2\x6d\xf9\xab\x1a\x73\xa4\x0c\x46\x0e\x0f\x73\xba\xdb\x11\xc9\x9e\x12\x4e\x29\x72\x4d\xdd\x56\xb2\xe7\xa9\xb4\xbc\x56\x6a\xc4\xe9\x92\x77\x34\x9f\x71\x71\xc9\x35\x58\xc2\xa7\x17\x75\x34\xff\x7b\x23\x74\x05\xdf\x75\x64\x9e\xe7\xc0\x4d\xbb\x45\x94\xc1\xd3\x09\xa4\x7d\xf0\x23\x04\xcd\xfc\xaa\xf3\xf4\x80\xa3\x0a\x49\xa0\xe2\xe8\xe8\x86\x6d\x09\x02\x0a\x4b\x9a\x2e\x9e\xae\xdd\xb4\xbf\x91\x59\xba\xb0\x14\x76\x91\x52\x92\xb8\xb0\x29\x53\xa5\x3a\x4e\xf5\x19\x37\x8f\xb9\x19\xb5\xa0\x0d\x94\x8c\x64\xae\x03\x05\x26\xe3\xbb\xdd\x15\x11\x10\xc9\x74\xc5\x23\xba\xdb\xbd\x2e\x5e\xec\x8a\x90\x44\xd0\x7e\xe6\x30\x9a\xee\x7f\x54\x42\x16\x35\x14\xd5\x5a\x5c\x11\xa1\x6e\xa2\xcb\x98\x1a\x93\xd9\xb8\xbb\x89\x63\x8b\xbf\xe3\x98\x64\xac\x3b\xa0\x89\x57\xe0\xd9\x34\xc8\xc6\x88\xda\x45\xf2\xda\x8d\x97\xd2\xa4\x48\x3a\x26\x36\x21\xa7\xa4\x40\xc2\xa5\x51\x59\x14\x36\x72\x04\xfb\xe4\x46\x1b\x4d\x89\xec\x1b\x47\x46\x22\x8c\x61\xb7\xbb\xe5\xde\x73\x8a\x28\x47\x1a\xa6\x40\x9b\x36\x24\xd3\x52\xe1\xd8\x78\xad\x57\x0e\xca\xb4\x6f\xa5\x54\x9f\x21\x8d\x15\xe4\x01\x77\xef\x8c\xb5\x21\xd2\x4c\xcc\xd4\xb2\x7e\x86\xd8\x63\x8a\x26\x98\x10\xc7\xf8\x37\xe1\xd3\xdd\x4e\xe1\xbb\x72\xaf\x39\x08\xe3\xf0\xe0\x8c\x8b\x25\xa4\xfe\x65\xb1\x54\x4a\xc3\xac\xad\xb7\x1d\xaf\x55\x64\x3d\x43\xc7\x83\x84\x98\x5f\x07\xe3\xd4\x24\xc2\x50\x7b\xda\x40\xe6\x6b\x58\x09\x09\x9b\xd6\xf2\xb6\x40\x66\x08\x32\x11\xf0\xcb\x60\xf0\xcf\xe1\x2f\xbf\xdc\xf9\xf1\x87\x7f\xfe\x30\xf8\xe5\x97\x21\x4d\x06\x39\x2c\x43\x1d\xe9\x27\x58\x54\xea\x5b\x37\x21\xe1\xa4\x1e\x58\x53\xb1\x7b\xee\x0e\xc6\x4b\x43\x64\x8f\xc3\x80\x26\x0b\x43\x24\x12\xa5\xf3\xd6\xae\xd4\x55\x49\x5e\xe6\x01\x82\xad\x08\x1a\xda\x6d\x0c\x11\x41\x79\x0a\x33\xb6\x36\x68\xac\x82\xc2\xcd\x38\x96\x5d\x26\xbd\xb2\x24\xfd\x75\x86\x0a\x53\xa2\x98\x98\xcc\x7a\xbd\x29\xed\x32\x45\x0b\x0e\x19\x85\xb1\x45\xc6\x59\xaf\x87\x79\xcd\x6e\x37\xeb\x08\xd9\x11\x34\x8e\xc5\x64\x36\x45\x33\x8b\x00\xa2\xdd\x6e\xb6\xdb\x0d\x02\x43\x6a\xe2\xf8\x60\x98\xe7\x70\x6e\xd8\x56\xc8\xd9\x72\x33\xe7\x59\x32\x47\x15\x32\x08\x39\xe7\x9f\x5e\x2d\xf0\xd5\xb2\x85\x97\x86\x9d\x9b\xbe\x4f\x85\x55\x2b\xc4\x40\x3b\x6a\x55\xb1\x01\x88\xa0\x2b\x42\x3d\x91\xa6\xdd\x2b\xf2\x04\x24\x8d\xe3\x2b\xa2\xf1\x5f\x14\x8a\xa3\x9a\x62\xe8\x57\x35\xa2\x98\x85\xf1\x89\xb2\x43\x8e\x63\xf2\x7f\x5f\x1a\x22\x40\xd2\xdd\xae\x28\x54\x1a\x28\xe6\x70\x6d\xd8\x24\xaa\xe8\x7a\x22\x88\xea\xec\x45\x04\x91\xc8\x2a\x9a\xcb\x08\xa2\x36\xbe\x35\xb2\xfb\xf3\xb9\x9a\xa5\x4b\x1e\x76\x69\x65\xc3\x46\x9e\xb1\x8a\xa6\x70\x66\xd8\x35\xea\x64\x67\xa9\x21\x91\xeb\xb7\xab\xd3\xb5\x10\x51\x38\x35\x96\xee\x6d\xa5\xfb\x5f\xa6\x2b\x9e\xed\x76\x2d\xcb\x66\x65\x88\x81\x33\x7b\x06\xc2\xd5\xcd\xe5\x1d\xe9\x90\xe5\x70\x64\x98\x32\x24\x7a\xc3\x17\x4b\x4b\x8d\x43\xa4\xae\xe4\x33\x24\x0b\xea\xb5\x3b\x0c\x7f\x6a\xfa\x8e\xe2\xa6\x20\xd9\x95\xe9\x2f\x8a\x95\x3d\xe6\x61\x2c\x36\x3b\x4d\x78\x0e\xaf\x9a\xf3\x5b\x68\xfd\xd8\x91\xb1\x8b\x58\xb3\x8b\xfe\x02\x14\x3b\xe9\x2f\x40\xb0\xc1\x48\xdc\x95\x41\xb3\x27\x7a\xbd\xc2\xbc\x72\x22\xa6\x23\x7b\xa8\xa6\x28\x34\x32\x90\x82\x22\x1c\x52\x6a\x87\x78\x68\xd8\xed\xff\xd8\xfd\x55\xa2\xc7\xbf\xfa\xb7\xe1\x61\xfb\x56\x3c\x31\x93\x4f\x76\x37\x4e\x8b\x4e\x33\x76\xdf\xec\x76\xb2\xcb\x3e\x1a\x7b\x24\xec\xa3\x3a\x3e\x16\x84\xd3\xa4\xdb\xb5\xdb\xf4\x93\x61\x0f\x4d\xdf\x49\x75\xc5\xe7\x56\xca\xb6\xe0\x74\xfa\x9a\xaf\x97\xe9\x8c\x93\x43\x03\x51\x3f\xb2\xd4\xd7\x73\x75\xc5\xf5\xfd\x34\xe3\x84\xe6\x70\x82\x75\xcd\x53\x93\x5a\x9a\xea\x23\xbe\xbd\x3c\x3c\x7e\xfa\xee\x21\x8b\x5e\x46\x70\x1f\x13\x5e\xbf\x7a\xfe\xe1\xd1\xd3\xe7\xcf\x59\xf4\x3a\x82\x0b\x9b\x04\xaf\x0d\x42\xeb\xf8\x86\xad\xe3\xac\xd3\x20\xb3\x1c\x38\x9e\x80\xb0\x61\xa6\xef\xe8\x51\x58\x32\xd3\xb7\x94\x10\x8a\x5d\xd9\x66\xac\x92\xe5\x58\x4d\x32\xe4\x03\x32\x4b\x69\x24\xc4\xbd\x6e\x73\x5a\x51\x8a\xdb\x59\x43\xad\xaa\x63\x26\x53\xc6\x27\x7a\x0a\x82\x99\xea\x31\x3b\x26\x33\xf6\xda\xa0\x72\x8d\xc6\xf1\xcc\x2b\x9d\xa5\xcd\xd9\xbd\x30\x64\x33\xd6\x49\xd6\x23\xcb\x71\xd4\x8f\x92\xe8\x3f\x22\xda\xd3\xce\x00\x65\xc6\xe7\x34\x8e\x0b\x72\xdb\x99\xf9\x7a\xe0\xa7\xe5\x81\x5d\x1a\x7e\xbe\x32\x24\xb5\x47\x23\x31\xfd\xec\x3c\x5d\xed\x76\xc2\x62\x01\xfb\x48\xe3\xf8\x35\x49\x21\xb2\xcf\x11\xf2\x82\x1c\x3b\x04\x29\x52\x84\xf0\xc6\xb0\x6e\xf7\x4b\x9b\xe1\x06\x0e\xbe\x1b\x08\x18\x47\x6d\xbb\x03\xf3\xb9\x61\x6f\x4c\x1c\x77\x5d\x22\xb6\x1f\xc7\x51\x86\x6f\x4d\xbb\xee\xd2\x62\xeb\xa5\x61\x87\x5a\xa7\xd7\x7d\x91\xe1\x7f\xdb\x06\x8e\xf0\x8b\x17\x6f\xe5\xf0\xb4\xf5\x6c\xf0\x82\x2e\x2f\x78\x7a\x6b\x02\xdf\x6c\x09\xfa\x9b\xb1\xc2\xb5\xad\xf0\x96\x61\xe9\xb8\x8d\xcd\x16\x3c\x6b\x88\x0e\xec\x46\x2f\x55\xf5\xa0\xd9\x5b\xdc\xb6\x8a\x69\xbf\x4d\x71\xd7\xaa\x5f\xc5\x88\x3a\x6e\x56\x32\x3d\x11\xbd\xde\x14\xf8\x44\x4e\xab\x8c\xfd\x03\x87\x65\x82\xe4\x25\x82\xe2\xd1\x4b\x52\x22\x0a\x2f\x8c\x25\xd5\x9f\x3e\x3c\x79\xfd\xe6\xd5\xf1\xab\x88\xc2\x23\x53\x35\x35\xc8\xe1\xef\x56\xfa\xe4\xae\x13\x80\xfc\x8a\x14\xeb\xdd\xbf\x6e\x87\xd7\x1c\xee\xd5\xca\x5b\x6e\xf9\x4f\x16\x9a\xed\xcf\xd5\x2a\x15\x32\x8e\x2d\xdb\x72\x38\xb3\x2c\xe4\x1f\x41\x24\x79\x6e\x56\xcb\x85\x58\xf2\xa8\x2a\x32\x40\xad\x36\xf0\xd1\x3d\xc3\xfe\xac\x49\x25\x4d\xff\x4a\x0b\xc3\xc9\xdf\x86\x38\xe2\xaf\x3f\x5b\x2a\xbb\xc9\x83\xfe\xb9\xbf\x4e\x35\x97\xe6\x3d\xca\xc5\xfb\xae\x91\x02\x34\x4e\xd9\xcf\x73\xf2\x27\x4d\x08\xe1\xec\x90\x44\x62\xa1\x91\x04\xa5\xfd\xcc\x5c\x2f\x0b\xf3\x1b\x16\x49\x25\x79\x04\x0f\x4c\x3f\x5d\xaf\xb9\x9c\xdf\x3f\x17\xcb\xb9\x9d\x0f\xde\xcf\xf4\x2c\x90\xd9\xd1\xc7\xf4\x32\x75\x30\x48\x22\x0a\xc4\x30\x44\xcc\xa6\xec\x41\x00\x01\xed\xab\x35\x97\xc4\xf6\xb8\x1c\x41\x01\x9f\x47\x7e\x49\xd5\x86\x04\xa6\xff\xa8\xb2\x22\xec\x01\xe6\xf1\xb5\x3c\x38\x18\x51\x4f\xdd\xde\xab\xd8\xe6\x4c\xae\xcd\x44\x4e\x0b\x8c\x7b\xcf\x10\x9a\x8f\x9e\x4c\x5e\x98\x69\x30\x15\x78\x6c\xea\xf6\x3b\xd5\xe5\x5b\x60\xb6\x02\x63\x7b\xd9\xe9\x98\x3c\xaa\x1a\x00\xa1\x0c\x48\x22\x0b\xfa\xc8\x40\xed\x13\xc2\x57\x62\x83\x86\x26\x92\xd9\x1e\x40\xc1\x28\xf3\xb1\x4c\x6e\x05\x32\xec\xb3\xc1\xf3\x0d\xde\x99\x9a\xdc\xfb\x89\x61\x5f\x51\x76\xc4\xf1\xcd\x67\xf4\xf8\xe6\x4f\xc4\xab\x4a\x92\xc9\x14\xfe\xc0\xa3\xba\x65\xe3\x3e\x31\x71\x5c\xd8\xd7\xb8\x19\x9c\x46\x8c\xbd\x33\x41\x86\x32\x6e\xd7\x88\x74\x3e\xa3\x1c\xbc\xa1\x12\xe9\x3c\x31\x5e\x50\x4f\xf3\xdc\xf2\x98\x9f\x0d\x59\x21\x12\xc9\xe1\x83\x61\x8f\x48\x74\x75\x91\x45\x14\x9e\x19\xa6\xfa\x0e\x7b\xc1\x6f\x86\x3d\x37\xe3\x67\x26\x79\x66\xe2\xf8\x99\xe9\x7b\xcd\xfa\x11\x32\xa5\xbb\xdd\x63\xf8\xbd\x15\x45\x5d\x91\x0f\x06\x19\x76\x62\x11\xe5\x15\x79\x66\xdf\xc6\x1f\x2c\xa5\xcf\x9e\xd9\xdf\xc4\x3d\xff\x66\x99\x41\x87\x27\xa3\x9e\x25\x2c\x30\x39\x87\xf7\x08\x91\xdf\x4d\x0e\x7f\x1a\xa4\x13\x4c\x9b\xcb\x8d\x34\xbe\x9b\x96\xd9\x0d\xcf\x6c\x9b\xd3\xd1\x15\x9a\x86\xef\x76\x7f\x1a\xfb\x00\xde\x5a\xef\xbd\x25\x60\x0c\xb5\x5c\x35\xe7\x58\xad\xe4\xec\x77\x43\xa2\xaa\x77\x0c\x05\xbd\xef\xaa\x62\xb1\xfd\x15\x31\x4c\x8e\x4d\x52\xf3\xf1\xe1\x34\x8e\x39\xb7\xd8\x8f\xc3\xb6\xae\x60\x19\x14\xca\x14\x9a\x83\xe2\x4d\x69\x69\x8b\x3c\x6d\x9f\x43\x6f\x13\x9e\x16\xbc\x41\x4d\x7a\x2a\xf6\x3b\x2d\x16\x44\x71\xbb\x39\xca\x15\x5f\xea\x11\xb2\x2b\xe1\x65\x86\xb3\x34\xe3\x9d\x41\xd2\x64\x3c\x2a\xb6\x64\xce\xa7\x81\xe6\x23\xcc\x3a\xdc\xcb\x2a\xf7\xf2\x82\x0c\xb9\xef\xec\xe7\xae\xd8\xe0\x94\xf9\x41\x87\x12\xdf\xb7\x95\x00\xd5\x5a\x06\x14\x2d\x8d\x2e\x5b\x7a\x9e\xae\xd7\xcb\x6b\x4b\x2f\x06\x8e\xd4\xae\xf5\xd4\x4d\x7a\xb6\xe6\x33\xc1\xed\x82\x9f\xf1\x36\x82\x2a\x00\xf7\xa5\xdd\x4b\x35\x0a\xb1\x5b\x55\x76\x54\xd8\x06\x8a\xe4\xa4\x3b\xe5\xe3\xb8\xfb\xd2\x90\x0a\xeb\x4e\xc7\xd7\xc4\x72\x2d\x4e\x07\xc5\x88\x64\x72\x92\x72\xe4\x4e\x64\xd0\x09\x27\xc5\x13\x48\x7e\x55\xb1\x72\x1f\x63\x9d\x89\xa4\xc4\x21\xae\x41\x62\x71\x56\xc6\xd9\x64\x8a\xfc\x0c\x6c\xda\xf6\xc7\x90\x31\x7b\x2c\xdf\xb1\x7f\x9a\x7d\x6f\xff\x14\xfb\xc1\xfe\x09\xf6\x93\xfd\x4b\xd9\x8f\x68\x1c\x22\xf6\x9c\xae\x66\x90\xc1\x06\x96\x25\xd9\xbe\x80\x35\xcc\xd9\x53\x43\x66\x14\x2e\xd9\x39\x99\x53\x58\x31\xc1\x89\xcd\xf6\x3d\x85\x6b\xcb\x92\x5e\x16\x2c\xe9\x19\x1b\xc0\x29\x5b\xee\x76\x33\x0e\x57\x8c\x8f\x4f\xc9\x0c\xae\x69\x22\xf1\x61\x40\xbd\x04\x61\x74\xfd\xeb\xd9\xe8\xcc\x73\x9d\xe9\x6e\x77\x66\x09\xcd\x4b\x0b\x91\x35\x5b\x91\x05\xbb\x9c\x9c\x4d\xe1\x0c\xe6\x14\x0c\xa5\x68\x72\x7c\x35\x39\x9b\xb2\x75\xe1\x0a\xb5\xa6\x7e\x19\x1b\xbf\x8c\xc3\xda\xe9\x0e\xdc\x5a\xfa\xb1\x58\x4b\xee\xfd\xa7\xf0\x7e\x16\x56\x67\xe6\xcd\x97\xaf\x60\x51\x1a\x27\x15\x2c\xf2\xb0\x60\x12\xc7\x07\xc3\x44\xef\x76\x6a\xac\x92\xab\x3c\x87\x25\x67\x5b\x6f\x72\x97\x6c\x38\x19\x50\x58\xa5\x6b\xfb\x34\xa4\xb0\x10\x4b\xc3\xb5\x7d\xb9\x43\x21\x53\x2b\x6e\x1f\xbf\xa7\xc0\x2f\xb9\xbe\xb6\xcf\x3f\xd8\x3c\x72\x6e\x1f\x7f\x74\x8f\x4f\x2d\x57\x6c\xdf\x7f\xa2\x39\x2c\x38\x5b\xf2\x60\xd0\x07\x6b\x6e\x29\xa3\x73\x31\x9f\x73\x19\x51\x98\x07\x8c\xf5\x3a\xe8\xc5\x22\x0a\xe7\x28\x7e\xcb\xb8\x81\xcb\x20\x88\x73\x32\xc3\x80\x5d\x23\x0a\xab\x16\x17\xc5\x6b\x5e\x62\xfa\x33\x8e\x54\xda\x6f\x47\xaf\x5e\x46\xe0\xc5\x5b\x62\x71\x6d\x39\x51\x8e\x6c\xc7\x95\x43\x99\x47\x9c\xfd\x61\x0f\xca\x57\x9c\x6d\xfa\x0b\x38\xe4\xf6\xe0\x70\xb4\xaf\xdd\x4b\x0f\xf1\x5d\xad\x0f\xca\xa4\x4f\x2e\x0b\xd6\x78\x60\x94\xff\x72\xa0\xf9\x99\xc8\x8c\xb6\x2d\x9c\x54\x2a\xc1\x1c\x2e\x6f\x25\xc7\x47\x5e\x9e\x4f\xf7\x6d\xaf\x7f\xf7\x3a\xde\x0b\xce\xba\xf7\xf9\x6e\xd7\xbd\x5f\x71\x5c\x6c\xbc\xf6\x2d\x88\x91\x62\x82\xd7\x9c\xa5\x71\x7c\x93\xae\xee\xb1\x21\x57\x9c\x6c\xf3\x2f\x69\xe5\xae\x9c\x30\xcd\x65\x71\x18\xfe\x9f\xa8\xa7\xcb\xa9\xd3\xd6\xed\xe9\x7c\x9c\x5d\xcb\x29\x27\x2b\x0e\x9c\x8e\x74\x1c\x7b\x5a\x69\xc5\x27\x7c\x0a\x57\xdc\x67\x04\x1d\xc7\xa6\xcb\xd8\x8a\xc7\xf1\x95\xcb\x6d\xb1\x62\x72\xc5\xe1\xb8\x15\x43\xb1\x43\x8e\x02\x7a\x43\xae\x2b\xa3\x2d\x4e\x85\x73\x4e\x24\x78\xaf\x33\xbf\x0c\xc0\xa4\x67\x89\x81\xb9\x57\x1c\x0a\x25\xed\xf1\x04\xa9\x3d\x40\xfb\x95\x54\xc6\x29\xc8\x1c\xde\x70\x7b\xfa\xb7\xd0\xdd\x4d\x5e\xc7\xe4\x6d\xe4\x4b\xa1\x91\xaf\xf8\x91\x5e\xf3\x1c\x9e\xb7\x1c\xb0\xcc\x8d\xfb\x39\x27\x0f\xb9\x83\x06\x32\x20\x0e\x76\x5e\xbf\x17\x06\x86\x6a\xbe\x2b\x72\x68\xc1\x33\x26\xb2\x22\x07\x1e\xa3\xf2\x72\x6d\x4f\x65\x33\x59\xf3\xe9\x44\x4f\x51\x35\xe7\x1e\x59\x77\x68\x29\xc5\xc7\x96\xe6\xab\xda\x47\x2c\xc9\x00\xba\x43\x74\x88\x0a\xe5\x77\x3b\x9c\x96\xb5\x53\xd1\x6d\x2d\xd7\x57\xd6\x32\xa0\xf0\xda\x7e\xd5\x20\x29\x4d\xae\xc2\x63\x0e\x2f\x9b\xd3\x54\x8c\x41\x3a\xc9\x1d\x72\x51\x92\x06\x69\xc9\x03\x5e\x15\x44\x2d\x38\xd1\x50\x73\x82\x4b\xe3\xb8\xfb\xd4\x23\x28\x4b\xa6\xee\x76\xcf\xfd\x62\x41\x1d\x2c\x45\x63\xf7\xa7\x6d\xa8\xff\x8c\x18\xe4\x82\x25\x7b\xc5\x6b\x66\xbe\x41\x72\x87\xef\x1e\xe8\x08\x4a\xb4\x00\xbe\x42\xe8\xa3\xdd\x6f\x97\xc8\xdd\xce\x12\x3d\xae\x1c\x3e\x63\xb6\xdd\xce\x27\x3a\x30\x9f\x8b\x0c\x01\xc3\xa7\xf6\xf8\xb3\x0c\x69\xfb\x5a\x45\xb9\x5e\x39\x95\x62\x41\x24\xae\xf5\x50\xb1\xc6\x8a\x1f\xda\x87\x60\xe2\x75\xca\x91\x58\x08\x5d\x56\xf5\xac\xd2\x75\x40\xfa\x69\xd9\xed\x88\xaa\xac\x04\x9c\x25\x95\xe7\x70\xab\x0d\x3c\x47\xdc\x51\xbe\x20\xd9\x64\x5a\x81\x3f\xaf\x7b\xb8\x61\x6b\x06\x5b\x7b\x82\xff\xd2\x49\x0f\x8d\x93\x9b\xe7\xf0\xa0\xad\x72\xb7\x96\x41\xda\x56\xf8\xf8\x21\x4f\x5c\x53\xba\xde\x94\xac\x37\xd5\x2d\xda\xe2\x38\x0f\x2b\xf7\xa2\x5d\x83\xb8\xd1\xb1\x51\x9d\x5b\xd0\xbd\x31\xbb\x1d\xe1\x86\x90\x6b\x5e\x65\x73\xbd\x71\x6b\xa7\xb6\xdf\xf6\xd5\x3e\x0e\x19\x94\x04\x65\x55\xf2\x49\xbd\x09\x77\x53\x86\x5f\x91\xd3\x14\x9f\x26\x83\xe9\xd8\x53\xa8\xd5\xb4\x70\xbc\x03\x47\xdd\x21\xd4\xdd\x54\x2a\xeb\xce\xdb\x85\x3c\xb4\x43\x85\xea\xa2\x72\xcf\x76\x62\x71\x59\x92\xca\x22\xc3\x3d\xfc\xda\xe3\x60\xb7\x3b\x2d\x07\x53\xd8\xa3\xc6\xf1\x05\x8f\xe3\xd7\x1e\x7d\xee\x91\xe4\x19\x37\x89\xcc\x29\x1c\x7b\xe7\x51\xfa\xad\xba\x95\xce\x65\x50\xa2\x98\xf4\xcc\x4e\x04\xb7\x58\x17\xa2\x1a\x43\x14\xb5\x3a\x48\x1e\x73\x82\x70\x70\xab\x66\xd3\x5f\xb0\xa7\x1c\x2e\xfa\x0b\xf6\x9c\xc3\x49\x7f\xc1\xde\x72\xb0\xac\x27\x1e\xab\xec\x16\x87\x2b\xfb\xff\x80\x83\x65\x57\xda\x98\xab\x63\x4e\x7e\x37\xbe\x42\x48\xe3\xd8\x9e\x59\xd5\x03\x00\xa2\x0a\x26\x8f\xf6\x61\xd0\x7e\xae\x15\xe3\xab\x14\xce\x73\x1c\xe7\x8a\xdf\x24\xee\x7e\xca\x61\xeb\xf4\x72\x49\x77\x90\x53\x4a\xe1\xd8\x90\xad\x0f\xce\xd0\x1d\xc0\x95\x4e\xd7\xf6\xdf\x09\xfb\x92\xee\x1b\x03\xd9\x79\xba\xb2\x0f\x39\x6c\x7d\xc8\x83\x6b\x7b\x04\x2d\x38\x79\x6b\xc8\x47\xde\xf0\x31\x35\xdc\x6f\x36\x5b\xaf\x93\x6a\x96\x87\x59\x66\x52\x53\xaf\x3d\x07\x4b\x95\x25\x2d\x1b\x3e\x30\x52\x23\x34\x70\xf9\xc4\x2b\x16\x2e\x9f\xec\x31\xec\xb1\xf4\x35\x27\xe5\x01\x8a\x1f\x98\x84\x13\x3e\x91\x53\xc6\xed\x86\xbf\xe0\xd7\x4d\x55\xac\x58\x90\xee\x1b\xde\x66\xfa\x62\xaa\x5c\x9b\x3f\x32\x7d\x07\x4e\xec\xea\x0b\x1d\x38\xe1\xc8\xf4\x6e\x32\xee\x96\x51\x75\x76\x2c\x7d\x33\x70\xdf\xc4\x6a\xbd\xe4\xcd\x6f\x43\x3b\x47\x55\xe0\x78\xc9\x4d\x0b\x70\x3c\xe8\xd3\x1c\xb6\x4e\xda\x92\xb4\x6a\xef\x2a\xf2\x91\xc7\x68\xe4\xf4\x92\x13\x7c\x70\xea\xaa\x9a\x71\x4e\xf2\x9c\xc3\x9e\x1c\xf1\x25\x87\x9b\xec\x94\x92\xb7\xfc\x9b\xbb\x9b\x23\x05\xd6\x94\x9b\x24\xb7\x9a\xb5\x7b\x01\x6e\xf2\xe0\x1b\xab\xae\x13\x7f\x76\xb3\x91\xa1\xf3\x8c\xda\xb6\x57\xdc\x26\xdf\xb0\xa5\x9e\x1a\x27\x3c\xa1\x70\xe6\x4f\xb9\x17\x9c\x75\x2d\x6a\xae\x37\xe1\x10\xea\x35\x27\x85\xe1\xd0\xc4\x32\x81\xd3\xa8\xcb\xce\x38\x71\x4a\xd1\x68\x9b\xbb\xd7\x6d\x9a\x98\xbc\x9a\x50\x10\x51\xb6\x8f\xa3\xea\xf8\x1c\xa9\xde\x18\xdd\x0b\x9e\xc3\xb6\xa0\xde\xf7\xec\x8a\x0a\xa7\x05\x50\x6c\x62\xa6\x20\xd8\x70\xd4\x44\xf5\xbf\x8a\x11\x55\xee\xdc\x29\xd1\xba\xe8\xf5\xa6\xce\xc7\x8a\x71\x20\xce\xc2\xa0\x38\x11\x2c\x7f\xec\xf7\x40\xc9\x34\xa3\x0d\x42\x93\x16\x68\x77\x11\x45\x57\x1b\xa6\x2b\x84\x0a\x5a\xa0\x81\xad\xb3\xdc\xa7\x76\x7e\xd5\x64\x68\x77\xe2\x19\xf7\xac\x3d\x4a\xf8\x94\x9d\x84\xbc\x8a\x02\x27\x73\x3e\xdd\xed\x5e\xd7\xd1\xe2\xdc\x32\x3c\x15\xae\x20\xd8\x39\x82\xe6\x88\xca\x0b\x56\xe9\x89\x3d\x6b\x82\x88\xf2\x11\x87\xbf\x39\xdc\x73\xdc\x91\x4c\x2f\xc5\x99\x73\x98\x8b\x36\x19\xd7\x87\x67\x28\xbe\xde\xed\xa2\x08\x1e\x5b\xb6\x64\xad\xd5\x8c\x67\x19\x7c\xe6\xec\x31\x8f\xe3\xc7\xbc\x1f\x2c\x87\xe0\x1d\x67\x9f\x79\x1c\x7f\xe6\xfd\xcb\x9f\x47\xef\xf8\xf8\x6f\xce\xc8\x23\xce\xde\xf1\x60\x15\xd1\x8f\x28\x9d\x0c\xa6\xbd\x47\x7c\x32\x9c\x26\xf7\x38\x12\x61\x8f\x38\xbb\xc7\xfb\x2b\x94\xe4\xdd\x7e\x38\x3f\xe3\x7f\xdd\x26\x7f\xcd\x7b\xf4\x36\xa5\xbb\x1d\xe6\xfc\x95\xfd\xf3\x07\x7b\x48\xd6\x72\xde\x3f\xd7\x6a\x55\xc9\x1b\xc7\xe4\x6f\xce\x30\xbf\x3b\xe1\x9f\x70\xf6\x37\x8f\xe3\xde\xdf\x1c\xfe\x68\xca\x43\x3e\xb4\xaa\xb7\x9e\xf0\x5f\xd9\x8f\xc3\xdd\xae\xbb\xbf\xba\x79\x49\xda\x10\x5e\xf3\x6f\xdd\xe6\x74\xf2\x07\x6f\xf1\x2c\xdc\x2e\x94\x4a\x86\x79\x0e\xc3\x2e\x63\x16\xff\x91\x7b\x4a\x2d\x79\x2a\x69\x7f\xa1\x14\x6e\xc7\x67\xfc\x06\x8b\xc0\xdf\x38\xdb\xe6\xf0\x3b\x6f\xd0\x15\xe8\x0b\x92\xc3\xfb\x96\x35\x77\x45\x7e\xab\x22\xdc\xdf\x6c\x83\x23\x8e\xeb\x73\x9b\x07\x0a\x7d\x32\xb5\x3b\x42\xb3\x6e\xf7\x8a\x70\x88\x0e\xef\xdf\x7f\x78\x74\xf4\xea\xcd\x51\x44\xe3\x98\xf7\x8b\x57\x50\xcc\x7e\x1f\xd0\x31\x9f\x0c\xa6\xc9\xef\x1c\x66\x98\x30\xb4\x09\xc3\x69\x90\x6d\x54\x9b\x62\xdd\xae\xdc\x53\x30\xd9\xbd\x14\xc7\xdd\xb4\x50\xc7\x7b\xca\x6b\xeb\x76\x61\x72\x30\xcc\x47\x7a\xfc\xcc\x12\xfc\xc3\x1a\xbb\xe2\x8f\xf0\xdf\x79\x4e\x13\x63\xf7\xc3\x10\x0a\x87\x68\xe5\x03\x30\xc0\x9f\x4e\x88\x80\xa2\x08\x30\x92\x7d\xe0\x24\x72\x6f\x11\x05\x2e\xd9\xfb\xca\x7b\x0d\xab\x38\x0d\x14\xe0\x36\xa9\x22\x64\x63\xd9\x01\x2e\xed\x09\xeb\xe4\x1b\x2d\x4b\xe4\x4f\x1e\x76\xef\x1e\x4e\x19\x8e\x4b\x5c\x52\x00\xc9\xee\x5b\x07\x7c\xd9\xca\x33\xe0\x8c\x14\xc6\xef\xb2\xc9\xb8\xfb\x51\x3b\x2d\x4a\x45\x75\x10\x16\xc3\x30\x07\x8f\xd9\xb5\xac\x8a\x54\x94\x64\x52\x92\xc8\xbf\x46\x14\x52\x0f\x8f\x22\x61\x26\x99\x92\x71\x9c\xca\xf1\xa4\x88\x4f\xd2\x36\x60\x2d\xff\xd5\x01\x7f\x0b\xac\xcb\x36\xbb\x6c\x26\x1d\x4d\x83\x3d\x98\x49\x0f\xaf\x4c\xa2\x48\x66\x23\x1b\xf6\xf5\x99\x74\x67\xd9\xe8\x5b\x8e\xd8\x74\xb7\xdb\xc8\x0a\x51\x70\xe3\xa1\xdd\x4a\x26\x64\x92\xac\x3c\x51\xe0\x3b\xb5\x94\x37\x84\x78\x3a\x43\x9a\x0a\x5d\x51\xc7\x4e\x57\xa8\xc1\xf2\xdc\x96\x7b\x36\x96\xa3\x96\xf9\x17\x3b\xfc\xf5\x2e\x66\xed\xfe\x49\x50\x31\x28\x71\x76\x06\x47\x86\x68\x0a\xa8\x77\x9f\xb1\xc1\x28\x18\xd1\xfc\x3a\x1b\xd1\xe2\x34\x23\x92\x29\xa2\x81\x07\x93\x19\x1a\xc7\x4b\x49\x52\x17\xcd\x28\xf0\x19\x61\xd0\x8b\xe6\x14\xbc\x35\xdf\x3e\x05\x0b\x3b\xb9\x17\xfc\xba\x95\xc6\x78\x6b\x4a\x0a\x03\x9b\x5a\x4b\xb6\xbd\x7f\x74\xf4\x66\xb3\xe4\xcf\x45\x66\x92\x01\xdc\x3f\x3a\x3a\x32\xd7\x4b\xfe\x80\xcf\x96\xa9\x4e\x51\x9e\x83\xa9\xef\xec\xd1\x16\x32\x2d\x05\x97\xe6\x0d\x9f\x19\x9f\xf0\xe0\xd5\x8b\xfa\x9b\x23\x8e\xcb\xf7\x63\x75\xc1\x25\xbe\x0e\xe1\x41\x6a\xd2\x63\x9d\xca\x6c\xc1\xf5\x53\xc3\x57\x3e\xd7\x23\x51\x74\xe2\xc9\xf1\x8b\xe7\x87\xcb\xe5\x7d\xb5\x5c\xf2\x99\xef\x82\x4d\xdb\x4b\x78\xa4\xf4\xca\x6b\x7c\x7d\xca\x11\xb7\x39\xca\xb4\x17\x7c\x2e\x52\x5f\xed\x0b\xb1\xe2\x96\x94\x76\x92\xef\x01\x58\xea\x6f\xfe\x52\xcd\xf9\x8b\x74\x6d\x5f\xd5\x9c\xfb\x2e\xbe\x4e\x85\x1d\xdf\xdf\x1b\x9e\x85\x41\xbd\x5e\x6e\xce\x84\x2c\x1e\x42\x1d\x47\xef\x1e\x3f\xc7\xf9\xf6\xd9\x8e\xde\x3d\x7e\xb9\x59\x9d\x72\x5d\xbe\xbf\x4e\xcd\xf9\x11\x3f\xab\x24\x28\x21\x4d\xf9\x5a\x83\xd5\xd1\xbb\xc7\x0e\x36\x4a\x07\xc0\x38\xeb\xe5\x7b\x9b\xc5\xa2\xac\xd5\x4e\xd1\xd1\x39\xe7\xa1\x9a\x63\xfe\xc9\x1c\xeb\x74\x76\x71\xbf\x98\xa4\x22\x29\xbc\xab\xcd\xcc\xf7\x32\x2f\x74\xae\x73\xb4\x84\x5a\xfb\x7d\x75\x2e\x99\x9a\xcc\xe5\x14\x2e\x25\x3b\x97\x71\x7c\x5e\x51\x36\x60\x8c\x1c\x19\xc7\x97\xb2\xc4\x24\x6c\x26\xa9\xb3\x1a\xbf\x94\x50\xe0\x3a\x98\x55\x8d\xe3\xcb\xfc\x16\xf1\xa0\xde\x7b\xb5\xbf\xab\x03\x3d\xe6\x76\x74\xbb\x83\x83\xcd\xea\xc5\xa3\x12\xea\x87\x57\x93\x1f\x2d\x7d\x90\x06\x78\xa2\x05\x93\xf7\x6b\xf9\x85\x68\x82\xdf\x16\x01\xf0\xeb\x31\x06\xb7\x2e\x40\xd6\x99\x64\xe4\xeb\x99\x0b\x14\x71\x2d\xc7\xd7\x32\xd9\xe6\xb4\x7f\x72\xf2\xee\xed\xc3\x93\x07\x0f\xdf\x1d\xbf\x7a\xf5\xfc\xe8\xe4\xf1\xf3\x57\xf7\x0e\x9f\x9f\x3c\x79\xf5\xea\xd9\xc9\x49\xe9\x79\x7e\xea\x71\x67\xc5\x52\x83\x18\xda\x12\xf9\xaa\x02\x5d\x62\x26\x72\x0a\x92\xd6\xe2\x5b\x5d\x55\x31\x44\x50\x88\xb7\x44\x92\x32\x38\x77\x47\xcd\x63\xd5\x79\xb5\x06\xbf\x42\xe7\xb6\x7a\x32\x3b\x17\xcb\xb9\xe6\xb2\x11\x4a\x03\xfd\x7f\x7d\x16\x9d\x5e\xbd\x50\xf3\xcd\x92\x33\xef\x81\xe4\xad\x89\xb8\x8b\xb1\x85\x8f\xac\x8d\xb2\x97\x63\x49\x68\x22\xbd\xe9\xf6\x2b\xc9\xb6\xd2\x72\x71\xeb\xd4\xa2\xbf\xa6\x64\x22\xcf\x47\xaf\x64\xbf\xcc\xd0\x3f\xe3\x66\x9f\x72\xec\x76\x1b\x7d\xaa\x94\xc8\xe1\xa8\xb2\x0b\xfa\xe9\xdc\x89\xfd\xdb\xa0\x50\x0c\xdb\xb9\x4c\xd4\x0b\x6a\xbe\x52\x97\xbc\x59\x96\x6e\x83\x09\x6f\xb3\x82\x46\xf1\x33\x6e\xf6\xcb\x06\xa5\xe4\x57\xca\x9e\xa7\xd9\xcd\x65\x43\x38\x87\xb2\x82\x46\xe9\xcd\x7a\x9e\x9a\x26\x61\x7c\x13\xb4\x98\xa9\xbc\x80\xe9\xa7\x58\x26\x0b\xce\xaa\x95\x32\xfe\x0b\x2b\xf2\x50\x30\xfd\xd5\xc6\xa4\x37\x15\x28\xbe\xb1\x4a\x3e\x5b\xc8\xa9\xa6\xda\x8a\xf8\x2f\xac\xc8\x43\x1b\x63\xf3\xbb\x65\x1f\x3a\xa7\x92\xd4\x81\x82\x92\xb1\xb6\xb2\x8f\xb1\xe6\x2f\x82\xa7\xe8\x60\x51\xeb\xde\xb7\x1b\xab\x3f\xc4\x5a\xbf\x58\x7d\x01\xe3\x96\xea\xfd\xb7\x1b\xab\x7f\xe1\x01\xf9\xc5\x06\x2a\xb3\xd2\xd2\x44\xf1\x15\x1b\xb9\xc1\x12\x8c\x54\x1b\x87\x57\xd2\x91\x1f\x87\x12\x1e\xb6\x34\xed\x94\x74\x5c\x93\xc9\x14\x0c\xaa\x51\x46\x0f\x1b\x7b\xa1\x75\x29\xf7\x35\x9f\x6f\x66\x35\x57\x82\x6a\x80\xd6\x62\x0f\x11\x4e\xf3\x10\x9e\x4a\x29\xdb\xeb\x66\xf5\x2f\xc3\x1a\x6e\x93\xc5\x87\x72\xa3\x2f\xb5\x5b\x31\x60\xe8\x11\xc2\x59\xb9\x83\x89\xa4\xb4\xb2\x49\xc6\xb2\x17\xdd\x8e\x92\x28\xb2\x7d\xb2\xbf\xf5\xce\xb4\xec\xbe\x32\x7e\xa0\x09\xb6\xdc\xe8\xf8\xee\xb2\x5a\x62\x54\xf7\x57\x38\x37\x59\x11\xb5\x45\xa1\xc1\x73\x91\x8c\x12\x46\x59\x76\x49\x05\x3e\x76\x64\x48\x61\x78\xab\x28\xd4\xb2\x94\xd5\x4e\xd4\x94\xe6\x39\x4e\x4f\x00\x06\xec\x81\x31\xcc\xe2\x0d\x14\x3c\xc6\x51\x29\xcd\x11\xd0\x66\xa1\x3b\xa0\x3e\x68\x9c\xe4\x57\x9d\x23\x34\x55\xa7\x23\xf4\x40\xf2\x54\xf5\xb8\x68\x90\x29\x17\xe8\xe1\x8c\x1b\x12\x8c\x90\x06\x70\x30\xa4\xb4\xc0\xd1\xc4\x4c\x4c\x11\x3f\x60\x0a\x8a\x8e\x78\x18\x01\xae\xe4\xe2\xad\xaa\x22\x43\xb3\x90\x72\x09\x9a\x0a\x34\xb8\x3f\x3a\x1b\x33\x24\x5b\x46\x5a\x5b\x2c\xfb\x5d\x04\xc9\xea\x7d\xd3\xf5\x05\x32\xd2\x71\xac\xc3\xa9\x1a\xc7\xb5\xd3\x83\xc8\x66\x0f\x44\xf6\xc6\xf7\x80\xcf\xff\xfd\x3e\x94\xb1\x92\xc2\x79\x61\x5b\xc2\xf9\xf8\xd4\x16\x16\xac\x3e\x81\xc6\xa2\x5f\xb6\xcd\x29\x74\x0f\x65\x1c\xdf\x4c\xf8\x04\x23\xb7\xfe\xbb\x0d\x8f\xe3\x86\xd4\xdb\x16\x35\x8c\xb1\xc3\xe0\x1d\x30\xea\xfe\x8f\xdb\xdf\x75\xff\xc7\xff\xd5\xf9\xae\x73\xb9\xe1\x9f\x3a\x97\xdf\xf7\x7f\xec\x0f\xf1\x9d\xcc\xa8\xf3\x81\x7b\x78\x99\xca\xce\x07\xb5\xc1\xd4\xff\xb2\x23\x94\x19\xef\xbc\x78\x7a\x6c\x13\x6e\xff\x8f\x46\x13\x8e\x3a\x27\x26\x48\xd1\x2a\xa2\xb2\xc9\x60\x4a\x7f\x65\x77\xa8\xe9\xaf\xc4\x27\x21\xc9\xf6\x94\x2f\x94\xe6\xf7\x9d\x64\xdb\x32\xca\x85\x1b\x18\xda\x61\x16\x13\x70\x22\xa4\x30\xa3\xbd\x94\x3a\xd0\xf6\x21\x65\xfa\x98\xcb\xfd\x8d\x27\x72\x1a\xd6\x9a\x4b\xa1\x96\xcc\xad\x0a\x30\xab\x31\x2d\x4b\x29\x30\x4e\xef\x2d\x85\xda\x95\x6c\x64\x89\x28\xa5\x7d\x3c\x92\x5b\xf8\xdc\x1a\xc0\x2d\x64\x73\xff\x84\x26\xfe\x29\x09\xf6\xa5\x71\x1c\x9e\x7c\x35\xe1\x7c\xf5\x95\x36\xbe\x5a\x7c\x70\x28\x99\xa1\x39\x29\xe7\x97\x16\x94\xdd\x1a\x99\xa6\xbd\x0d\x3f\x99\x06\x7d\xbc\x6d\x5e\x8b\x99\x29\x73\x68\x8c\xb1\xdb\x1d\x06\x82\x71\xa6\x56\x2b\x61\x8c\x90\x67\x45\x88\xab\x93\x40\x44\xdc\x4c\x66\xba\x1c\x47\x9b\x53\xcb\xd7\x9f\x5a\x62\x20\x60\xad\x93\x92\xa0\xb8\xb9\xf8\x95\x4e\xd7\x6b\x3e\x7f\xec\x09\x89\x9b\x33\x7a\x4c\x82\x88\xeb\xa1\x44\x55\x5a\x35\xbd\x38\x50\x5e\xa4\xeb\x2f\xd4\x92\xb5\xf5\xf3\xca\xb2\x52\x5c\xbf\x7b\x81\x95\x1f\xca\x50\x73\x7a\xc1\xd1\x31\xc4\x77\xee\x7e\x3a\x3b\x6f\xc6\xae\x2b\x03\xee\xb8\x48\x41\xe0\x43\x45\x85\xe8\x57\x90\xb2\x10\xbb\x65\x65\x57\x70\xf5\x5b\xbb\x23\x96\x08\x41\x84\x9c\xff\x7b\xa5\xf4\x4d\x3c\x5d\x5a\x29\x81\x26\x0d\x9e\xbe\xb7\xb3\xcd\xf4\xc8\xb9\xe4\xd5\x80\x85\xf8\xdd\x33\x03\xaf\xbd\x38\x6c\x06\xe5\xbc\x55\x72\x51\xb8\x08\x19\xec\x69\xb5\xcf\xfd\x98\x6a\x80\x76\x54\xfb\x91\x52\xc7\xd0\x9f\xf3\x4b\xa3\xd4\x32\x1b\x97\x8f\xc9\xa1\xec\x3b\x26\xa2\x48\xa2\x75\x3c\x75\x86\xbe\xd9\xfd\x13\xff\xf9\x89\x52\x17\xec\x4c\xc2\x99\xec\xf3\x95\xc5\x24\x16\x51\x25\x76\x03\x47\x60\xa8\x4d\x56\xd2\x27\x1a\x9d\x5e\x72\x6f\x8e\x94\x1a\x1e\xd5\x4d\x33\x4c\x70\xf2\x38\xb2\x1f\x7d\x6f\x4d\xbf\x58\x13\x4d\xba\xa6\xde\x60\x58\xcd\x91\x9b\x19\x0a\xdb\xb5\xe6\x6b\x2e\xe7\xc8\x03\x57\xeb\x71\x24\xe5\x97\x6b\x73\xdb\xa6\xbd\x2e\x9a\x7b\x5f\x3f\x38\x91\x6c\x8b\x23\x69\xe3\xbb\x0a\x54\xf5\x71\x8f\xcb\x0f\x2e\x5b\xc4\xd0\xbb\x03\x8b\x08\xe2\xd8\x9e\x67\xd8\xc4\xd8\x9e\xa8\xd9\xb9\x58\xa0\xa2\x90\x07\xeb\x88\x32\x6e\x1f\x09\xa2\xdc\x6a\x35\x23\xf9\xeb\xc1\xd0\x1e\x94\x16\x9b\xcf\x38\x91\x30\xac\x62\xcb\xfb\x81\x4d\xfb\x0a\xca\xf8\x2a\x52\xf8\x36\x8c\xf0\xcd\xdb\xbe\xc1\xf9\xbe\x46\xca\x11\x57\x7a\x7d\x99\xa3\xe1\xcd\x85\xfb\x5a\x0d\xf6\x7a\xd1\x24\xaa\xfa\x27\x97\xab\x51\xc1\xee\xb0\x6d\x8e\x35\xfd\xab\x98\xa2\x39\x4a\x10\x6c\x9b\x8f\x4e\x25\x51\x35\x4a\x49\xd2\xad\x98\xc8\x69\x3b\xa2\x68\xb1\x9d\xc5\x20\x42\x68\x24\xd1\xca\x26\x5c\x93\xa2\xe3\x20\x6f\xb2\x95\xc3\x11\x4e\xe4\x34\xaf\x4b\x80\xd0\xd3\xdd\x47\x16\x2b\x37\x70\x26\x96\x5c\x9a\x51\x33\x81\x75\x07\x80\xf5\x78\x84\x4a\xb6\xf3\xd4\xa4\xc9\xf6\xd6\x2d\xb7\x98\xb9\x8b\x18\xb6\x31\x7c\x9e\x88\x9c\xc2\x5e\xf9\x14\xc2\x71\x55\xc7\x0c\x58\x69\xff\x16\x22\xec\x36\x7b\x40\x87\xbf\x6c\x63\x7d\xdf\x56\x2d\x00\x36\xb5\x44\xc1\x76\xce\x39\x1a\x38\x64\xd7\x72\xe6\x46\x86\x66\x4e\x6e\x9b\xd8\xa9\x11\xe6\xfc\x3e\x62\xdc\x7a\x13\xf5\x8a\xd1\x51\xc1\x22\x90\x43\x89\xd1\xc1\x8e\xc5\xec\xa2\xad\x4b\xba\x7f\x6b\xce\x33\xa3\xd5\x35\xc6\xf2\xac\xac\xad\xd7\x32\x5c\xe5\x00\x45\x9c\xc1\x6e\x70\xa8\xb3\x07\x47\xb9\x44\xab\x1c\x13\x71\xf1\xf9\x75\x85\xc5\x71\xe8\xb2\x65\x4b\x4c\xd2\xe9\x0d\x9b\x65\x92\x4e\x99\xa6\xd0\x15\x71\xdc\x55\xc1\x6f\xfb\x18\x17\x5d\x9d\x88\xcd\x98\x9c\xc8\x0a\x11\x7b\x33\x80\x0e\x65\x3f\xe3\x06\xcd\x90\xb5\xdb\x6f\x48\xcc\xbb\xc0\xeb\xda\x39\xb5\x7c\xda\x3f\xc5\xfc\x95\x12\x18\xea\x12\x14\xdb\x86\xe3\x31\xd1\xf6\xd0\x08\x2f\x4d\xc3\x72\x07\xae\x37\xe1\x1d\xa3\x31\xae\xd3\xeb\xa5\x4a\xe7\x30\x63\xa2\xef\xc9\x35\xc8\x98\x40\x67\xfa\xe2\xfa\x86\x38\x9e\xe1\x8e\xdf\xed\x48\xc6\x78\x0f\x05\x1c\xa1\x15\x92\x81\x8f\x66\xb7\x12\x06\xdb\xf7\x8f\xff\xd3\xad\xb7\x36\xeb\x2a\xb7\x8d\xc2\x8c\xe6\x85\x3d\xd4\x4d\x1c\xbe\xc2\x2d\x6b\x77\x6f\x82\x7b\x57\x8f\xdb\x76\xaf\xcf\x92\xb7\x6c\xed\x3d\x15\x6b\xf7\x26\xdc\x35\xe1\xd3\x70\x08\x6c\x73\xe4\x9d\xbc\xdb\x50\x4d\x18\x5a\x08\x7d\x5a\xc8\x02\xe5\x7c\x19\x8a\xb5\xa4\x29\xfa\x32\x84\x98\x87\x3e\x5d\xd3\x51\x3b\xa2\x92\x20\x6e\x46\x50\xbe\xd9\x89\x6a\x41\x52\xee\x48\xbf\x71\x54\xac\x08\x26\xfb\x85\x4c\xb9\x0b\xb0\x93\x83\x3f\x7a\xdb\xfb\x71\x2c\x89\x3f\x56\xf0\xe6\x88\x9c\x82\xca\xd1\xd9\xd5\x72\x97\x4d\xf1\x0f\x69\xa0\xf5\x6e\x7d\x17\x80\xc6\x70\x27\xe5\xe1\x88\xbe\xf5\xcd\x14\x4b\xcd\xfb\x40\x26\x35\xba\xa6\x0c\xad\xed\xfb\xe3\x36\x9e\xed\x4c\x4f\x02\x87\x8d\xb3\x42\xac\x4b\xbc\x9a\x3d\x0a\x81\x79\xed\x22\x1d\xcb\xc4\x96\x54\x78\x1b\x8e\x9c\x2f\xb9\xde\xed\xf8\xe8\x86\x3e\xfb\xf3\xbe\xe8\x71\xf9\x7e\x53\x7f\x83\x63\x7c\xd1\xef\xca\x9e\x2f\x29\xe7\xb0\x0b\xfd\x36\x81\xb0\xf6\x75\x71\x86\xb9\xe9\x09\x83\xb6\x1d\xf7\x13\x99\x94\xe7\x9c\x4d\x45\x72\x2f\xf1\x93\x95\x97\x06\xb5\x44\x31\x41\xdb\x22\x62\x75\x14\x86\x69\xde\xed\xca\xe8\xcf\xc5\xa5\x0b\xc2\x2d\xb0\x0a\x6d\x3a\xf6\x31\x4f\x1b\x97\x61\xf8\x38\x97\xd5\x9c\x55\x02\x90\x6b\xad\x74\xe4\x82\x97\x50\x6a\x8f\x41\x9c\x31\x0d\xaa\x39\x5f\x6e\x50\xdf\xb0\x82\xf0\xba\x84\x06\x65\x61\x77\x72\x90\x3c\xb5\x7c\x6b\x13\xf3\x49\x52\x80\xb4\x94\x9e\xfa\x94\x8a\xa0\xf7\xc6\xf5\xe5\x44\x1b\xd5\x3b\x39\x04\xdd\x86\xc3\x2e\x70\xe0\x82\x3a\x4f\xa0\xea\x81\x78\x5c\x27\x70\xf8\x57\xc4\x8d\x76\xa7\xa2\x41\x65\x51\xc1\x9b\x26\x21\x8c\xaa\x17\x7b\xa8\xfb\x2b\x65\x24\xe3\xc0\x99\x01\x13\xa2\x91\x7a\x5b\x7b\x03\x1e\x7b\x27\x1c\x3c\xee\x4e\x64\x9e\x9f\x48\x37\xec\x76\xa5\x86\xa7\x36\x2e\x57\x0d\x8a\x03\x8a\x62\x59\x43\x8e\x9a\xc3\xa7\xaa\x58\xe9\x06\xb6\xae\x14\xdf\x81\x62\xc5\x90\xc0\x62\x4d\x14\xee\xa6\x4c\x55\x0e\x1b\x37\x00\x51\x0c\x20\xcd\x21\x63\x0d\xfe\x7b\x22\xa6\xa3\x52\x7c\x7f\xc3\xf1\x9d\xb5\x33\x77\x86\xa4\x21\xe8\xc8\x1e\x0b\x1d\x5c\x13\xbf\xc2\x16\xce\xaa\xf4\x00\x6d\x00\xe1\x06\x6e\xb8\x0c\x41\x0a\xda\x03\xc1\x39\x32\x23\x08\x04\xd3\x05\x08\x52\x0f\x02\x55\x80\x40\xe4\x10\x18\xde\x80\x8c\xdc\xfd\x07\x33\xe7\x70\x79\x83\xe0\xa2\x1c\x0d\x1a\xcb\xdc\x10\xa4\xdd\x89\xac\x72\xfa\x95\x41\xfb\x7c\x24\x05\x59\xa1\x85\xea\xee\xc9\x19\x9b\x95\x96\x27\x01\xcf\x58\x8c\x38\xeb\xaf\xd2\xf5\x0d\xc0\x14\x08\xc4\x64\x36\x19\x4c\x49\x19\x79\xde\xd2\xd9\xbe\x86\xe6\x76\xc9\x9a\x21\xe7\x7d\x24\x32\xd9\x06\x82\x2f\x0e\x1d\x03\xcd\x7e\x7d\xe4\x98\xed\xc6\x81\x3b\x29\x41\xc3\x62\xf8\xdf\xea\x0e\x62\xd0\xf6\xee\x54\x91\x08\x66\x2b\xbb\xe3\x4c\xba\x2b\x1d\xf2\xd6\xca\x39\xfa\xd4\xd6\x96\x66\xb1\xd2\xdb\x19\x30\x64\xbb\xf7\xf6\x04\x4a\x6d\xda\xab\xd9\x53\x35\xd5\x2b\x6b\x8d\xdc\xe3\x45\xa4\x89\xc9\x13\x73\x93\xc4\x6d\xbf\xc9\xab\xbd\x1d\xd5\xd0\x0b\xd4\x30\x58\x21\xff\xfa\x12\x67\xb5\x7f\x28\xd8\x69\x74\x02\xa7\x4f\x75\xb5\x44\x29\x63\xb9\x49\xaa\xfd\x45\x44\xc4\xf7\x71\x2a\x33\xf9\x1e\xe2\x08\x4a\x01\xaf\xe4\xde\x1b\x6c\x5d\x10\x6a\x39\xbf\xbd\x00\x50\x4e\x52\x3c\x31\x53\xda\x94\x7c\x15\xda\x09\x8b\x76\x82\x88\xac\xd4\x9b\x83\x69\x14\x40\xe9\x3f\x05\x14\xb2\x64\x5c\x5f\xba\xe1\x97\xc2\xb3\xb2\x68\x73\x18\xa5\x76\x63\x6f\x20\x35\x90\x7d\x7b\xe7\xcb\x1a\x4b\x29\xe9\x0d\xa0\x76\x58\xd6\xb2\x7d\xc5\xf9\x5e\x65\xfe\x2c\x63\xef\xd4\xe7\x44\x42\x4d\x97\x81\xe7\xc1\x7d\x19\xe4\x54\x9f\x1a\xda\xf0\x96\xa1\x04\x2f\xb4\x6f\x1d\x45\x55\xe7\x82\x81\x35\xea\x6d\x28\xf3\xf6\x26\xb5\x79\x01\x07\xa7\xae\x33\x45\x47\x31\x22\x7d\xbd\x9e\x0a\x60\x6e\x52\xec\x54\xe4\xe2\xa3\x7d\x41\xf9\x00\x0c\x69\x11\xa0\xf3\x9b\x15\xb5\xd5\xf6\xe1\xc4\x2b\x6a\x9f\x4b\xf6\x60\x4f\x62\x18\x18\xb0\xb0\x5b\x6f\x59\xc4\xd6\x8e\xed\x02\xf5\x7e\xc1\xaf\x91\x6c\xbf\x4c\x97\x23\x39\xd1\x35\x23\xde\xca\x98\x9c\x4a\x21\x70\x2f\xb5\x34\xbf\xb9\x47\xe5\xfd\x41\x9a\xbd\x90\x55\xcd\x04\x44\xab\x74\x7d\xe4\xe4\xab\xce\x39\xa3\xab\x03\x8d\xc9\x4b\x46\xbf\xa8\xbd\x4c\x09\xbc\xa9\x5f\x0b\x2d\x74\xf7\x58\x55\x3d\xdf\x40\xd2\x84\x23\x9b\x67\xc7\xd2\xb7\x74\x33\x43\x01\x29\x48\xfb\xf3\xf2\xff\x00\xd0\xca\xb8\xe9\x93\x29\xc8\x3d\x17\x2b\x17\x47\x03\x7d\x4d\x4a\xd3\x51\x39\x1d\x55\x2e\x19\xf0\x70\xf5\x1a\x80\x12\xac\xa2\x0d\xac\x81\x5f\xcc\x0a\xd0\x8a\x00\x5a\x8d\xf7\x4d\x38\x40\xba\xca\xbe\x0c\x47\x67\x6c\x8f\x80\xb4\xc0\xf3\x74\x37\xa7\x34\xd1\x95\x6f\xa1\xf1\x89\xaa\x66\xc9\x0b\x18\x3f\xfd\xdf\x00\x63\xc5\x4c\x4f\x41\x13\xd2\x28\x8f\xd8\xed\x5a\x80\xe2\xd9\x95\xa8\x62\x0d\xde\xb2\x62\x6f\x5e\x27\x6f\xff\xff\xb4\x4e\x02\x3d\xfc\xb5\x95\xe2\x88\x89\xaf\xac\x93\x50\xd9\xff\x81\x95\x52\xaa\x23\x6e\xb5\x06\xc5\x2b\x93\x6a\x11\x95\x08\xba\x6a\xda\xcf\x39\x31\x74\xdc\xfc\x36\x36\x37\x91\xc2\xdb\x0b\x7e\x9d\x18\xb8\x4c\x97\x89\xb1\x9d\x48\x1a\x76\x7a\xf5\x62\xbc\x56\x8c\xbb\x62\x96\x81\xb4\x25\x27\xd3\x92\x85\x7c\x70\x53\x44\xbf\xe6\x09\x56\xc6\xa1\x1c\x7b\xb6\x32\x8a\x68\x12\xdd\x76\xd7\xe8\xf9\x2b\x7b\x78\x71\x62\xd2\x38\x26\xbc\xc7\xa2\xdb\x11\x05\xe3\x2f\x1b\x2d\x1a\x7d\xb1\x17\x43\xb8\x5d\x66\x2b\xa7\xc8\x37\x3c\x92\xe8\xfc\xb1\x91\xd9\x4c\xad\xd3\xd3\x25\x3a\x80\xfc\x2d\x7d\xa8\xaa\xd2\xa0\xd4\x85\xad\xf8\x5b\x4e\x1e\xc9\x69\x1c\x5f\xf4\x17\xe4\x6f\x09\x8f\xe4\x4d\x41\x4f\x1e\x1b\xa7\xa4\xf0\xa6\xcb\xf7\xea\x36\x09\xae\x1a\x74\x8c\x18\xe4\xf0\xd8\x19\xe7\x0b\x39\x87\xcf\xd2\x9e\x82\xef\x82\x7b\x02\xde\x73\xe3\xfe\x85\x9c\x4c\xe3\xd8\x4d\xe5\x90\x62\xee\x1a\xf5\x61\x4b\x0e\x9b\x8e\x82\x37\xd8\xd7\x7f\x96\xbb\x5d\xf7\x9d\x73\x65\x90\xf3\x36\xdb\xeb\xc7\xff\xb2\x5d\x7f\x4e\xe1\x9e\x2c\xfa\x8c\x1e\x36\xb2\x1a\xef\xf0\x0f\xc9\x26\xd3\xe2\xed\x83\x64\xdd\xee\x1f\x32\x8e\x87\xb7\x27\xc3\x22\x99\x0c\xe1\x60\x40\xef\x0e\xe0\x99\x73\x50\xf0\xc9\x11\x85\xdf\x1c\x44\x42\x02\x6c\x0b\x6f\x14\x3b\xac\x61\x32\xc8\xbf\xc9\x89\xe3\x83\x1d\xf8\x33\xfb\xf3\x9b\x1d\x7d\x88\xd0\xd8\x02\x80\x0f\x72\xfc\x87\xac\x6e\xe6\x32\x82\xca\x6e\x37\x48\x9e\xfc\x1b\xf0\x41\xa0\xfc\x2e\x99\x2c\x77\xf7\xfb\x8a\xd6\xc2\xc5\x7c\xb5\xdc\x9b\x57\x32\x4f\xc4\x94\xa4\x14\x2c\x63\x8b\x6b\x6a\x2f\x9c\x11\x56\x8d\xbb\x7d\xe6\xae\x3b\xe3\x24\xa3\x49\x53\xc6\x96\xf9\x6b\xd2\x50\x42\x84\x61\x79\xe5\x17\x03\x6e\x56\x69\x9b\x2a\xf2\xfd\x32\x77\x5c\x91\xe4\x97\x51\x67\x64\x05\x91\xa5\xb6\xad\xf7\x92\x08\x1c\x6b\x0a\x33\x08\x57\xe3\x54\x64\x4e\xb3\xfd\x4c\xe1\x6a\x55\x9a\xa7\x24\xc0\xd2\x62\x4a\xe7\x2c\xa4\xbf\xaa\xce\x2b\xe3\x75\xa1\xfa\x0c\xf7\x4f\x73\xce\x28\x68\x36\x18\xe9\x32\x00\xa3\xee\xf5\x28\x1e\x4a\xe5\x54\xea\xe9\x68\x2f\xaa\x8e\xc5\x3b\xc0\xf5\x5e\x5c\x91\x32\x68\x78\x69\x01\xa3\x2b\x74\x7b\x88\x68\x85\xbd\x99\xa2\xb2\x46\x17\x51\xc1\x8b\x22\x5a\x37\xe7\x1a\x0d\x72\xca\x0c\x4a\x7f\xab\x2d\x74\x51\x44\xb4\x75\x23\x84\xd9\xbd\xb1\x27\xa9\x2e\xb4\x1c\xae\x19\x43\xc5\xa2\xb8\xc0\xa4\xdb\xc2\x7e\xe0\x70\x69\x09\xfb\x01\x68\x56\x86\x4b\xbb\xab\x47\xb2\xd7\xa3\xbc\xe2\xbe\xe4\x6c\xbd\xed\xf9\x5b\xc4\x64\x2d\x2c\x01\x0d\xdd\x03\x70\x3d\x3a\x69\xe1\xfc\x85\x8e\x6a\xd5\x4a\xd5\x14\x94\x5d\x3b\xb8\xa5\x34\xdb\xfa\xc3\x30\x91\x1a\xfc\xa3\xf3\x54\x68\x41\x01\xf5\x59\x72\xd9\x9a\x10\x02\x91\xdd\x58\xbe\x32\x23\x5d\x9c\x4a\x17\xfa\x08\x2d\x39\x2a\x1e\x82\xfe\x6b\x2d\x8c\x52\xab\x18\xbd\x96\xa5\x1f\x1a\x6e\x5c\x6d\x59\xa4\xfb\xde\x3d\x52\x7a\xf5\x20\x35\x69\xdb\xf8\x5a\x8c\xde\x42\xf6\x38\x36\xd5\x18\x0a\x21\x39\xaf\x03\xed\x9d\xe0\x57\xdf\x58\x71\xa5\x94\x3f\xc4\xdc\x4b\x5f\x64\xb6\x96\xf1\x7e\x12\x31\x34\x41\xb3\xae\xd3\x62\x9c\xee\xa9\xda\xb1\x4a\x31\xdb\x37\xb7\xe9\xda\xba\xb4\xc7\x29\xdb\xec\xce\xb8\xae\x2d\xbb\xc4\x2f\x8d\xec\x6e\x11\x26\xca\x2e\x9d\xb7\x61\x88\x89\xb6\xaf\x0f\xea\xce\xe4\x7b\x4b\xc8\x7e\x6f\x59\x3b\x8f\xc4\xf2\x8b\xc5\xec\xf7\xb6\x25\xb7\x54\xa7\x5f\x2a\x66\xbf\xb7\xb5\xe6\x4b\x24\x42\x3b\x58\xf1\x74\xd5\xb6\x6e\x95\x5b\xac\x16\x55\xf4\xd7\x62\xcd\xb1\xf0\xdb\x37\xcf\x8f\x78\xaa\x67\xe7\xaf\x53\x9d\xae\xda\xfc\xb5\xda\xa6\xbd\x51\xaa\xb1\xac\x1a\x5f\xdd\x0c\xa6\x72\x9e\xea\xf9\x3d\xad\xae\x32\xae\x1f\xca\xcb\x7d\x65\x61\xd5\x4f\xa5\xf4\xb3\x08\x8e\xc9\xbb\x5d\xf4\x86\xa7\x33\xf3\x12\x6f\x46\xb0\x04\x64\xf1\xc9\xe2\x8f\xf9\x66\x66\x51\xa4\xfb\x7a\x84\xde\x73\x37\xe6\x39\x6a\xfd\x82\xa1\xd0\xbe\x60\x30\xda\xf6\xad\x88\x3a\x99\x43\x70\x65\x4c\x35\xac\xb8\x3e\x2b\xe7\xbf\x63\x8a\xa3\xb7\x7a\x09\xbe\x8f\x17\xb7\x87\xd4\x39\x86\xf6\xd9\x4b\x96\x63\xfb\x81\x19\x82\x71\x6a\x91\xe5\x47\xff\xc2\xf2\xb2\xbe\x01\xa8\x7d\x8e\x4a\xdf\x55\x78\xe8\xa5\x9a\x54\x8f\xbc\x8a\xc3\x1f\xcf\x61\xce\xf9\xfa\xc5\xff\xb1\x3e\xb7\x64\x33\x64\x9b\xdb\xef\xff\x6b\x86\xc3\x3f\x19\x2e\x6f\xbc\xfa\x2c\xd5\xb5\x60\x38\xdc\x0e\xc8\xf9\x6a\xb6\x62\x67\x3e\x36\x9a\x38\x19\x8b\x0f\x4b\x64\xb4\x68\xdd\x5e\x85\xe1\x1c\xb9\xfd\xdf\x7f\x65\xdf\xdd\x86\x28\x2a\x03\x26\xdf\xfe\x2b\xfb\xee\x16\x26\x55\x6d\xd2\xb2\xea\x41\xcf\xe5\x4c\xcd\xf9\xdb\x37\x4f\xef\xab\xd5\x5a\x49\x77\x11\x4f\x59\xc1\x3f\x7e\x18\xdc\x3e\x13\x10\xfd\x57\xb5\xd6\x7f\x7c\x7f\x88\x89\x49\x2d\xf1\xce\x0f\xb7\xcf\x20\xba\x55\x4f\xbb\x8f\x19\xa1\x9e\x38\xb0\x19\x7b\xb5\xb4\x1f\xef\x61\xc6\x49\x3d\xf1\x01\x26\x4e\x23\x6f\xa9\xb2\x6f\x4e\x8f\x17\x27\xd5\x6f\x73\xc2\xdb\x94\x24\xd5\xcc\x72\x96\x45\x68\xbb\x99\x3d\x08\x1a\x18\x02\x63\x21\xb0\x92\xbc\x22\x15\x1b\x67\xc5\x26\xd3\xd1\xac\xd0\x9b\xd6\x23\x19\x59\xe2\xc5\x53\x2e\x71\xec\xaa\x2e\x98\x62\xcb\x48\x4e\xa6\x51\x82\x94\x0b\x54\x6a\x30\x75\xbd\x0a\x96\x7a\xe0\x84\xa0\x63\xd4\x79\xaa\xa7\x47\xaf\x42\x47\x12\xfc\x5c\xc4\xaa\x40\x4a\xe8\xb7\xa3\x57\x2f\xfb\x45\x28\x0a\x34\x0b\xf4\x61\x25\x32\x4d\x38\xed\x45\x2c\xea\xe1\xd4\x3a\x55\x1e\x86\x48\x52\xfe\x7a\x85\x38\xa2\xb9\x58\x10\x5d\x12\xd5\x81\x47\x8a\xfe\x23\xa2\xa3\x83\x61\xd7\xdd\xa8\x6c\x3b\x12\xa4\xcc\xa8\x4d\xef\x31\x72\x30\x44\x1f\x84\xa2\xc0\x38\xa2\xe3\x68\x1c\x25\xb6\xd2\x9e\x2e\x6c\x36\x2a\x0b\x6c\xa9\xc3\x3d\xb6\xde\x44\x21\x63\x93\x69\xbe\xd4\x55\xd1\x7a\x76\x83\xe6\xa6\x56\xcc\xdf\x0c\xb3\xd8\x2c\x17\x62\xb9\xe4\xf3\xc4\x80\xe6\x16\x26\x7c\x8e\x81\xd6\xea\x99\x03\x3f\x9f\x43\xad\x29\x2c\xb0\x2f\x8b\x0e\xc5\xf0\x92\x04\xd2\x4c\x72\xd7\x75\x36\x6a\x0a\xbe\x9c\x8d\x79\x2c\x66\xb8\x5a\x47\xdd\xbc\xd5\x93\x6a\x3c\x8e\xbd\x25\xae\x63\x38\x16\x9a\x2d\x35\xac\xf7\xd7\x75\xb0\x88\x2a\x2b\xaf\xc6\xb7\xc2\x00\x6f\x0e\x6c\x1e\x3b\xcc\xdb\xee\x26\xec\xa2\xd0\xae\x6b\xfa\x27\x27\xf7\x0f\x5f\xde\x7f\xf8\xfc\xe4\x84\x56\x66\xe9\x5c\x17\x9e\xfd\x95\x1b\x1e\x33\x6e\x8e\xc5\x8a\xab\x8d\xe9\x9c\xa7\x2e\xd8\xce\x29\xe7\xb2\x13\x0e\xa1\x0a\x1d\x7f\xd9\x5a\xc1\x6c\xc9\x53\xfd\x95\x2a\xd0\x11\x56\xb3\x73\x0d\xd7\x9a\x5d\xea\xb2\x4f\x67\xda\x7b\x2a\xac\x34\x63\xac\xec\x4b\xd8\xe2\x65\x0a\x31\xe0\xc2\x9e\xb9\xac\xe7\x7a\xb7\xeb\xae\x2c\xad\xbb\x5f\x68\xa5\x2b\x35\x41\xb3\x8a\x4a\x98\xdf\x95\xc6\x24\xcf\x19\xf3\x5a\x08\xe0\x95\xae\x72\x02\xb5\x5c\x8d\x1c\x9e\x93\xb7\x4c\x7a\xde\x82\xda\xaf\xd1\x14\xcf\x77\x21\x8e\x49\xad\x77\x14\xda\x4b\x54\x81\x1a\xc7\xe4\x5a\xb3\x6a\x8a\x93\x05\x9c\x6a\xb8\xd2\x6c\x32\x85\x23\xcd\xba\x43\x78\xa5\xd9\xc1\xb0\x84\xec\xa1\x9d\xac\x23\x1d\xc7\xa7\x3a\x8e\x89\xcb\x72\x1a\x62\x8f\x8f\xaf\x34\x3b\xd5\x41\x74\x78\xa5\x69\x82\xa5\xe1\x4a\x17\xe1\xca\x1e\x6a\x52\xb5\x07\xb1\xaf\x88\x7d\x8f\x74\xf0\xc5\x38\xd3\xe4\x50\xd3\x91\xad\x7a\x30\x2a\x65\xae\x45\x1d\x23\x3e\x72\xfc\xf3\xa9\x66\x57\xbe\xaf\xa3\x5e\xef\x95\xbe\xcb\x47\xf4\x14\x7b\x36\x79\xa5\xa7\x7d\xbd\x91\x84\x8e\x5c\x07\x2a\xc5\xf3\x53\xed\x02\x50\xbb\xbe\x57\x97\xbb\x58\x58\x88\xb0\x3a\x4c\xc2\x16\xaa\xa4\xf9\x78\x55\x2e\xf3\xa5\x5d\x31\xd7\x76\xc5\xb4\x15\x6b\x40\x18\x9a\xd5\xd8\x95\x71\xad\xcb\xa8\xd0\xf5\xc5\x72\x5d\x5b\x2c\xfb\x4b\xe5\x5a\x37\x5c\x5b\x72\x52\x73\x70\xf9\xa4\x2b\x9e\xb5\x8b\x8d\x64\x26\x5c\x58\xae\xd3\x6b\xc6\xf3\x4f\x55\xac\xa4\x37\xb2\x16\x9b\xdd\x97\xa9\x46\xf4\x29\x0b\x57\x11\xc0\x89\x9d\x43\xdc\x8b\x1f\x35\x3b\xd1\x70\x1f\x7f\x2f\xf0\xf7\x35\xfe\x1e\xe3\xef\x1b\xfc\x7d\x6e\x7f\xdd\x15\x63\x9a\x5d\xcb\xfe\x9a\xeb\x85\xd2\x2b\x4b\x7c\xef\x76\xdb\x1c\x9e\x6a\xf6\x52\xf7\xa5\xba\xda\xed\x5e\xea\xfe\x4a\x7d\x7e\x19\x1e\xb3\xf0\xa4\xc2\xc3\x15\x3f\xbd\x10\x06\xdf\xf6\xe9\x71\x8b\x4b\xec\xc1\x48\xfb\x67\x6e\x5f\x10\x8f\x2d\xdf\x6a\x16\xbe\xe1\xfb\x2d\xcd\xb6\xc1\xbc\xb7\x25\x46\xd9\xcd\x02\x9a\x83\x21\xae\x83\x7d\x59\x5b\x45\xc4\x30\x1c\xc9\xbb\xfb\x9a\x82\x5e\x8f\xf2\x89\x3c\x18\x36\x54\x05\x57\x3e\xae\xa0\x6d\xd2\xcf\x1d\xc5\x48\x3c\xc5\xea\xdd\xed\x8e\xf4\x6e\x77\xa6\xc9\x43\x4d\x73\x30\xc2\x2c\x79\x12\x9d\x3a\xb6\x24\x02\xff\x90\x74\x07\xc0\xe5\x65\xb2\xcd\x21\xd5\x67\x97\xc9\x64\x0a\xc5\xa5\x68\x51\x78\xcc\xec\x67\x25\x93\x8f\x1a\xd2\xf9\xfc\xb9\xc8\x0c\x97\x5c\x27\xf7\x35\x28\x39\xe3\xc9\x85\x06\xb5\x58\x24\xaf\x35\x38\xb7\xb9\x22\xc3\x71\x48\x39\x5c\x2e\x43\x62\x96\xbc\xd1\xc0\x57\xc2\x24\xcf\x35\x9c\x0a\x39\x6f\xf2\xbb\x7b\xd8\xdd\x07\x64\xea\xfb\xcc\x21\x1e\x5b\xe5\x36\xbf\x1c\x66\x57\xf3\x7d\x36\x2b\xba\x1d\xe5\x30\x3b\x9f\x0b\xfd\x6d\x0d\x60\xd6\xd6\xea\x37\xab\x34\xbb\x68\x31\xfa\x1c\xe4\x70\xae\x8d\x58\xf1\x96\xb5\xd0\x1f\x0c\x86\xdf\x3d\xf5\xbb\xee\xa5\xa6\x20\x2b\xd7\x1f\xb9\x48\xa2\xd5\xf7\x7f\x0c\xbf\x1b\xf2\x5f\xca\x78\xe0\x71\x4c\xe4\x01\x33\x93\xc1\x14\x88\xb6\x0f\xc3\xa9\x77\xde\x38\x38\x00\xdd\x63\x36\x33\x85\x89\x04\x3d\xcd\x61\xbd\x4c\x8d\xdd\x19\x95\xf9\xd5\x7c\xc9\xd3\x8c\xdb\x99\x73\xf2\x7d\xfb\xb4\x59\xd7\x3b\xbb\xb7\x01\x0e\xde\x6a\x7a\x7b\xc8\xbf\xcf\x73\x78\xd0\x94\x4c\xde\x40\x58\xba\x60\xe0\x8e\xd2\xd0\x7d\xa3\xde\xae\xd7\xe1\x9e\x14\xcb\xc0\xd7\x53\x8a\x5b\x16\xa1\xb8\x4a\x4b\x4f\x9d\x93\xe7\x8b\x26\x49\x52\x0b\x19\xfe\x85\x4f\xc6\x7b\x0b\x30\x0e\xce\x53\xc8\x72\x17\x4c\x52\xb0\x7c\x0a\x86\x14\x61\x1a\x9f\xb3\xb5\x92\x19\x67\x0a\x8c\xa5\x9e\x3f\x09\x95\xe1\x02\x70\xee\x09\x46\x59\x62\xb7\x25\xca\xd5\x8a\x67\x59\x7a\xc6\x9d\xf7\xab\x7f\x01\x99\xae\x7c\x8a\x7d\xaa\x45\xe3\x75\x4e\x5d\x65\x02\x38\x51\x8c\xcf\x8d\xcf\xb0\x10\x4b\xfe\xb2\xa8\x22\xbc\xc1\x52\x48\xfe\xb2\x92\xbb\x7c\x87\x99\x5a\x6e\x56\xb2\xfa\xb1\x9a\x02\x99\x49\x67\x17\x49\x30\x2b\x99\x5d\x84\x39\xf7\x39\xed\x33\x58\xb0\x84\x84\x39\x77\x57\x57\x97\xbb\xc0\xd0\x02\xb0\x39\x3c\xd2\x6c\x12\xa5\x67\x3c\x82\x28\xdd\x98\x73\xa5\xc5\x67\xef\xec\x14\xf9\xcb\x28\x0e\x8a\x1b\x8f\x42\x02\x5e\x7a\x04\x11\x37\xe9\x99\xfd\xfb\xb4\x16\x9a\x67\x11\x44\x0b\xad\x56\x11\x44\xe7\x2a\x33\x11\x44\x62\x71\xb0\x52\x73\xb1\x10\x7c\x7e\x90\x09\x39\xe3\x2e\x6d\x23\xf7\x52\x97\x69\x66\x8a\xbc\xf6\x5d\xcd\x42\x1f\x56\xe9\xa7\x83\x85\xd2\x57\xa9\x9e\x67\xee\xce\xa5\x4f\xd7\x07\xcd\x8e\x6a\xbe\xe0\x9a\xbb\x4b\xb6\x8d\xbe\x3e\x40\x3b\x34\x1f\xf4\xed\x20\xc5\xa8\x6f\x53\xf8\x5b\x33\x64\x7b\xf6\xa5\x36\x84\x8e\x1b\x0a\x05\x03\x9c\xdd\x26\xab\x4c\xf0\x9d\xd1\x62\xce\xa5\xa1\xb7\x85\xbb\xb2\xb2\x14\xb1\x14\x21\xe5\xec\x7e\x2f\x6e\xe3\xa8\xdf\x3a\x1b\xa5\x51\x45\xad\xa0\x4b\xc3\x8a\xc2\xc5\x1d\x8d\x53\x2d\xcd\x76\x68\x8c\x16\xa7\x1b\xc3\x49\x74\xae\xf9\x22\x02\x6d\xf1\x86\xec\xdb\x17\x0a\x37\x66\xd9\xda\xa7\xc4\x65\x73\x2a\xa4\x99\x5a\x26\xde\xd2\x64\xa6\x96\xe3\xf2\xb1\xe4\x7d\x13\xc7\xb6\x5b\xbc\x6f\x27\xcb\x16\x57\x99\x25\x5e\x2d\xfb\x9a\xd8\xb6\xec\xc3\x38\x3c\x54\x85\x00\xe3\xb2\x64\x9a\xd9\xbc\xf6\x6f\xec\xfe\x2a\xf9\xfe\xa3\xd6\x00\xee\x21\xd7\x08\x6e\x22\x8b\x6e\x6d\x1f\x95\x36\xb0\x4e\xcd\x39\x7e\x8f\x6e\x47\x8c\x31\xd9\x0f\x09\x41\x95\x3a\xa0\xe3\x32\xd1\xe6\xea\x95\xaf\xc5\x7d\x02\x86\xe9\xe0\x1d\x1b\x56\x8f\x87\x5c\x53\x9f\x2f\xc3\x32\x40\x5e\x98\xd3\xb1\xc5\xd0\x49\xe1\x26\x52\x82\x0b\xf9\xd2\xf0\x12\xc7\xae\xfb\x98\x68\x1f\xf2\x9c\xd0\x7d\xec\xda\x1d\xe4\x70\xef\x4b\x0b\x6d\x8b\x17\xb8\x24\xfb\x38\x0e\x44\xb8\x45\x6b\x32\x1d\xa5\xde\x37\x0f\xb9\xee\x16\x19\x8a\x25\x00\xb0\x0d\xef\x72\x2d\x69\x1c\xfb\x32\x61\x3b\xb2\xa8\x17\x30\x3d\x91\xb4\x6f\xd4\xe3\x17\xc7\x81\xff\xf7\x85\xfd\xab\xae\x14\xb6\x70\x65\x51\x4f\xd7\x73\xa8\x4a\x0e\x77\x1b\x0f\x8b\x7a\x8a\x42\x77\xc0\x90\xb1\x0f\xdf\x32\x3e\xdb\x68\x1e\x51\x28\x77\x83\x52\x17\x82\xb3\xd4\x0b\x0a\x46\x1d\x7b\xc4\x6a\x9e\xce\x5b\x4e\xd1\x46\x21\x1f\x1c\xd1\x0e\xe2\x0d\x3f\x7b\xf8\x69\x4d\x22\xf2\xdf\xbb\xd1\x5f\x7f\x65\xdf\x51\x82\x57\x08\x51\x46\x26\xff\x3d\x9a\x7e\x47\xa3\x32\x2c\x37\x1f\xcf\xf9\x3e\xb8\x26\xdf\x4f\x69\x82\x6e\x5b\x9e\x4a\x49\xf6\x18\x76\x77\xb1\x8e\x81\x28\x02\x0b\x33\x4b\x6a\x12\x7a\xf0\xf3\x4f\x3f\xf0\x1f\x69\x9e\x27\xcd\x79\xa3\xdb\xe6\x38\x6a\xaa\x94\xfd\x76\xe8\x36\xcf\xe1\x71\xeb\x25\xff\xed\x4a\xca\x9a\xef\xe1\x3c\x35\x29\x28\xbb\xf4\x78\x3a\xe7\x3a\x1b\xe1\xf4\x04\x55\x07\x4e\xa1\x3f\x65\xd5\x24\xba\xef\xd1\xf4\xb1\x45\xd3\xce\xd2\x44\xb8\x4b\x5f\x5f\x3c\x7f\x62\xcc\xda\x47\xdf\x42\x3b\x93\xbe\xc5\xa5\x61\xe5\xb9\x37\x44\x6c\x76\x73\x61\xa0\xcc\x59\x48\x5d\xa7\x59\x76\xa5\xf4\xdc\xa6\x8e\x54\xff\xb0\x8a\x83\x59\x74\x2f\xcd\xc4\xac\x13\xf5\x4e\x8d\x4a\x49\xda\x8b\x92\xa8\x37\x73\x9c\x38\x5e\x4d\xc1\x48\xc6\x4c\xff\x34\xcd\xf8\xdb\x37\xcf\xf1\xa6\xb3\x8d\x5e\x42\x16\xc7\xdd\xdb\xff\x4d\x26\xe9\xc1\xe7\xa9\xfd\xf9\x6b\xfe\x57\xef\xaf\x83\xbf\xfa\xd3\xef\x12\x3a\xfe\xeb\xf6\x5f\xb7\x03\xd2\xdd\xd4\xe3\xf4\x97\xe2\xc5\x71\x45\x40\xf9\xd7\xed\x9e\x43\x6b\x3d\x8b\x23\x78\x15\x69\xdd\xee\x39\x74\x64\x72\x92\xc1\x86\x26\x1b\xa4\xd0\x85\xbb\x56\xc9\xf4\xdd\x2d\xf2\x75\xf2\x05\x36\x9a\x2c\x01\x5d\xf1\xd3\x55\x56\x3c\x1c\x71\x2d\xd2\xa5\xf8\xcc\x35\x45\xcf\x51\xd1\x37\x8e\x6d\x63\x26\x3c\x81\xe8\x2b\x69\xd7\xc6\x35\xda\xc1\xcd\xce\x53\x79\xd6\x0c\xfc\x2d\xe2\xf8\x07\xbb\x77\xfa\x98\x0f\x4d\xea\xe2\x98\xe0\xbd\x6a\x68\x3d\xb7\xc9\x76\x3b\x51\xd0\x31\x6f\xdf\x3c\x8f\xe3\x81\xcf\x5f\x24\x95\x32\x33\x4b\x55\x24\x11\xa5\x85\x4b\xdd\x19\x37\x87\xcb\xe5\x1b\x9f\xf7\x89\x5b\x33\x91\x90\x1d\x31\xde\xdb\x77\x0e\xfd\x54\xec\xa1\xcc\x98\x54\xe9\xbf\x10\xc5\xe1\x2f\x19\x35\x8c\xb7\x31\xbe\x6c\x45\x74\x97\x44\x14\xb8\xc5\x7d\x46\x8b\x15\x71\x6e\xd1\x46\xa3\x0b\x58\xe3\x56\x3d\x90\xfb\xd9\x74\x6f\x48\xa9\x57\xdc\x2a\xbc\x89\xf5\x91\x2e\xea\xe6\xf4\x57\x36\x08\x76\x4e\xf6\x2b\x8b\x32\x6e\x0e\x1c\xa6\x40\xed\xd1\x18\x0b\x8d\xed\x4f\x32\x99\x16\x41\xfb\x27\x72\x4a\x93\xe2\x4b\x2f\x82\x4e\xd4\x93\x89\x44\xe3\x25\x45\x13\x95\x13\xd1\x6f\x85\x16\xa1\x0e\x63\xa0\x63\x62\x6a\xd2\xa4\x24\x2b\x8f\xd1\xa5\x24\x32\xfc\x13\xaa\x63\xea\x1f\xc6\xe5\x1c\x25\xe5\xe3\x31\xff\x64\xc0\x4d\x6c\x12\x66\xd8\xbf\xdb\x4f\x45\x1a\xe6\xf3\x7b\x3c\xd1\x05\x69\x07\x9e\xba\x4d\x44\xde\x74\xc6\x0a\x73\x5e\x38\xd2\x5e\xa6\x4b\x31\x4f\x0d\xda\x21\x6f\xb2\x51\x57\xef\x76\x9a\x48\x5f\x3f\x1d\x1b\x22\x69\xc2\xc9\x0b\x4d\x22\x8f\x07\x3a\x8b\x54\x2c\xf9\xbc\x73\x25\xcc\x79\xc7\x65\xc3\x3b\xba\x2d\xa4\x42\x57\x43\xed\xe0\x2e\xe9\x0a\xd4\x36\x5e\x87\x8e\x91\x72\x14\x05\xe1\x1c\x63\x73\x5c\xff\xe9\xa9\xd2\x35\xcf\x19\x61\xe9\x9c\x5a\xb3\x98\xc5\xd2\x7b\x06\xa2\x87\xf7\x5f\xbd\x7c\x79\x78\xef\xd5\x9b\xe3\x87\x0f\x22\x94\x0d\x8b\x20\x23\xb5\xb5\xa1\x25\x7f\xb5\x36\x57\xd3\x4b\x6e\xae\x94\xbe\x70\x64\xad\xad\x07\x7b\x57\x96\x76\x85\xc3\x06\xdd\x33\x1a\x89\xfc\x97\x8e\x5a\x74\xa2\x5e\xb1\x7f\x7b\xd1\x2a\xeb\xf0\x4f\x33\xce\xe7\x7c\x1e\x8d\x8a\x74\x6c\xe5\x85\xe3\x0a\x30\x04\x72\xeb\x17\x0a\xd8\x37\xfe\xa5\x51\xe5\x70\x23\x81\xe0\xfa\xb6\x60\xf7\x34\xac\x19\x71\x57\x78\xdd\xd7\xdc\x92\xa0\x22\x5d\x66\xbb\xdd\xdf\x9a\x2c\x29\x7a\x36\x7d\xca\xf4\xe2\x3e\x6e\x00\xcb\x51\x8c\x17\x88\x4b\x48\x33\xbd\xb8\xbe\x67\x1d\xc7\x44\x4d\xdc\x67\xb7\xc6\xed\xe7\x29\x5b\xa3\xec\xde\x6e\x27\x3f\x31\xee\x23\x62\x8b\x38\xae\x60\x02\xd5\x54\x52\x54\xe3\x89\xd4\x79\x03\xcf\x0d\x56\x76\xfc\xb8\x38\x9e\xf8\xd4\xae\xf6\x46\x6b\x3e\xbe\xbf\x27\x3b\x0a\x85\xf5\x3e\x00\xe8\x6e\x47\x44\x33\x91\x75\xbb\xfb\x19\xa1\xbe\x2f\x31\x9a\xa2\xa8\x25\x35\x76\x6e\x29\x47\xb3\xf0\xf8\x98\xe1\xdd\x51\xac\x59\x0b\x4a\x14\x78\x9b\xe8\xd5\xf4\x95\x7c\xa0\xae\xe4\x52\xa5\xf3\xd7\x5a\x9d\x69\x9e\x65\x71\x2c\xfa\xe9\x7c\xfe\xf0\x92\xbb\xb0\x94\x5c\x72\x27\x85\xc0\xaf\x11\xb4\x95\x69\x95\xd2\xda\x8c\x6f\xd7\xcd\xaa\x37\x98\x52\x3e\x7d\xb5\xad\x7a\x15\xe8\x8a\x9c\xca\x19\x5f\x62\x10\x51\x34\xcf\x28\x5f\x2d\xed\x8b\xc6\x59\x0d\x2f\x22\xe3\x36\xb3\xe8\xe3\x06\xb6\xc8\xdc\x72\x94\x61\xbf\xd2\xca\x0d\x66\x2e\xce\x8c\x8b\xdc\x60\xe7\x5c\xce\x89\x76\x12\x80\xcf\x9a\x6d\xeb\x74\x4a\x12\xa5\xeb\xf5\x52\x38\xd2\xfd\xf6\xa7\x83\xab\xab\x2b\xcb\xf8\xad\x0e\x36\x7a\xe9\x28\xe0\x79\x54\x91\x2e\xbe\xf3\x32\xcc\x6e\x73\xc1\x50\x5c\xb3\xb5\xa4\x26\x45\xe4\x44\x13\x8d\x44\xc6\x1d\xb9\xf2\x44\xc3\x1f\x9a\x6d\xd3\x79\xba\x36\x5c\x27\xa4\x55\x7d\x5e\x27\xa4\x2a\xb1\xd5\x6f\xe9\xca\x1d\x80\x5e\xd8\x84\xd6\x0d\x37\x5a\x5d\x39\xa1\xd1\x2d\xbc\x8c\x95\x3c\xd1\xec\xb1\xa6\xf0\x44\x53\x30\x21\x54\xa9\x6f\x24\x99\xb4\x52\x40\x0f\x34\x46\xbf\x9e\xcd\xf8\xda\x44\x14\xdc\x6b\x6d\x64\x7e\x4f\x15\xb4\xa2\xa1\xbb\x5d\xa9\x54\x2c\x0c\x70\x7c\x62\xf3\xdd\x59\x5e\x94\xef\x8f\xc4\x92\x57\x72\x2f\xd5\x29\x6a\x18\x93\x66\x8d\xde\x2a\x66\x1c\x0c\x61\x92\x56\x15\xa9\xa1\x63\xf2\x0e\xbb\xfc\xd5\xc9\x1f\x59\x6e\x30\xe3\x86\x6d\xcc\xe2\xe0\xe7\x88\xa2\x1c\xa7\x60\x68\x1a\x1a\xcd\xb6\x5a\xed\x86\xde\xab\x64\x5f\xeb\x99\x98\x7c\x5a\x05\xbe\x3f\xca\x27\x0d\xc2\x67\xdf\x48\x07\x11\x8c\xd7\xa3\xae\x6d\x2b\xb5\x4b\x1d\x4b\x45\xe6\x14\xfc\xa9\x91\x0c\xa0\x8e\xaa\x93\xe8\x8f\xa3\x37\x8f\x0e\x8e\x5f\x3d\x7b\xf8\x32\x82\x3a\x9e\x4e\xa2\x3f\x0e\xaa\x5f\x57\xe9\x27\x3f\xcb\xcf\x43\x00\x72\xa8\x9f\xfc\xad\xea\xfc\x5f\xd9\x9d\xc1\x20\x8e\xcd\xdd\xef\x07\x83\x3c\x1f\xfd\xa1\x03\x43\xc1\xb6\x33\xb5\x5a\x29\x99\x6c\xdd\x5a\x4a\xf6\x60\x07\x1d\x4b\xf0\xdc\x5e\x2f\x53\x21\xa1\xf3\xdd\xed\xef\xa2\x3c\xaf\x6a\xa0\x27\x91\x43\xf1\x11\x58\xf2\x33\x82\xc8\xd6\x1c\x4d\xeb\x24\x63\xd9\xe0\xc4\x4c\xd9\x36\xf7\x28\xbf\xac\x63\xed\x64\x47\xeb\x0d\xfe\x5a\xe8\x7d\xb9\x8a\x99\xee\xa3\x65\x0a\xf9\xac\x8b\x38\x25\x1f\x34\xfb\xa3\xa2\xf5\x7b\xa6\x5d\x00\x91\x2f\x60\x3a\xc4\xea\x4f\x17\x7e\xab\xf1\x39\x71\xb8\xe0\xb7\x56\x76\xed\x99\xf3\xae\x2a\x20\x57\x3c\xa1\xa2\xc2\x5f\x15\xbd\xd6\xc4\x73\x6d\xc5\x67\xbb\x62\x1b\x9b\xba\x5a\x4d\x31\x92\x22\xa9\xef\xa6\xc4\x57\x5b\x0c\xda\xb3\x2b\xd3\x7a\x3a\xfd\xfa\x5c\x40\x1b\x74\x21\x72\xad\xd4\xc0\xcc\xcb\xe0\xa9\x45\xbb\x7c\x8a\x21\x9e\x4c\xdf\xa3\xc6\xdd\xee\x83\x0e\xcf\x94\x18\xda\xe2\x6c\x5a\x03\x18\x2f\x00\xe3\x9e\x80\xb7\x03\xc6\x6d\x38\x74\x8e\x87\xb6\xda\xe6\xda\x5d\x56\xe1\x6b\x75\x21\xfc\x5c\x21\x4b\x95\x15\x2f\x95\xe6\x6a\x49\x50\x79\xff\x52\x07\x28\x85\xd2\x3a\x19\xf1\x8a\x53\xad\xc3\xef\x4d\x69\x39\x67\xa8\xa3\x1a\x55\xc2\x66\x4c\xa2\x8d\x5e\x46\x10\xb9\xa9\x42\x60\x5b\x84\x17\x41\x64\xbb\x10\x4d\x41\xb1\x49\xe4\x5b\xf7\x92\xd7\x20\xdd\x8c\xa6\x20\xd8\x24\xf2\xbc\x72\x04\xbe\xa6\xe6\xd2\xa9\x27\xb9\x3e\x17\xed\x94\x5c\xaa\xcd\xe6\xd0\x4d\xe4\xae\x3f\xaa\x90\x48\xb6\x61\x37\x7f\x28\x39\x2d\xa9\x9c\x08\xa2\x3a\x66\xf2\x09\x25\x3a\x8a\x20\x6a\x12\x13\x98\xd4\xa4\x65\x9c\x04\xb7\x86\xa9\xdc\xd5\xfa\x15\x44\xe5\xf2\xbc\xe1\x73\xa1\xf9\xcc\xd8\xd7\x73\x63\xd6\xee\xb2\x0e\xf7\x9c\x85\x97\xca\x9e\x8d\x20\xca\xd4\xec\x82\x9b\xd7\xa9\x39\x8f\x6a\xd6\x34\xba\x8e\x30\x8a\xc3\x99\x3b\x63\x0c\x17\x43\x38\x5c\xd1\x75\x03\x81\xab\xbd\x0d\x8d\x3f\x52\xf8\x44\x4f\xe9\x18\xad\xac\x67\xba\x5f\xd8\x96\x11\x33\xd1\x53\xc0\x8f\x49\xa5\x19\x3d\x75\x59\xed\x53\xfd\x64\xfa\x42\x35\x95\x1a\x8c\xbb\x09\x0f\xf3\x05\xad\x49\xb5\xa3\xa2\xde\xd1\x9b\x5a\xfe\x62\x7d\x3e\xa2\x93\x2e\x83\x70\x56\x02\x34\xcc\xaa\xb7\x94\xa3\x77\xd4\x8d\xee\xd8\x68\xbf\x93\x56\xe2\x85\xe5\xa5\x30\xae\xd2\xe5\xd9\xff\x82\x2e\x83\xac\x10\x80\xef\x75\x21\xba\x9b\xf3\x45\xba\x59\x9a\x2c\xe8\xb1\x85\x34\x5c\xdb\x43\x4c\xd9\x73\x2d\xb0\xce\x92\x5f\x75\x16\x1a\x0a\xe6\xdc\xbd\xe7\xf9\xfb\x9a\xb6\xdb\x6b\x91\xaa\xe3\xdc\x3f\xea\xc7\xa4\x72\xe5\xda\x64\xe8\xef\xe1\xdf\xe8\x65\xed\xb6\xb5\xc4\x30\x83\x38\x9a\x18\xf6\xbb\x26\xb5\xae\x82\xa1\xd4\xe3\xf1\x71\x40\xe8\xac\x22\x88\xaa\x70\x4e\x49\xad\xe0\x7e\xa1\x96\xaf\xcd\x0a\x42\x5e\x3c\x0c\xfc\x65\xe7\x93\xdf\xb4\x27\xd4\xa7\x20\xf7\x62\x9d\xf8\xdb\xe4\xf7\xc0\x19\x00\xd4\x1e\x08\xa0\x12\x5f\xae\x5f\x58\x55\x21\x1f\xe6\xac\xaa\xca\x58\x12\x8d\x3a\x3d\x3a\xbe\xa1\x52\x27\x0b\xbf\xb1\xc6\x51\x11\xa3\x88\x4a\x26\xdd\x31\xc4\xfb\xae\x1f\x78\xe5\xba\x7b\x2a\x23\x26\xe4\x50\x9b\xf3\x33\x6e\xde\x6a\xd1\x1a\xf6\xb8\x6d\xde\x60\x63\x8f\xf6\x8d\xfe\xb2\x70\x70\x5f\x65\xf2\x0d\xc4\x12\x44\x3e\x04\x49\x93\xe6\xa9\xf6\xd7\x62\xaf\x36\xf7\xb4\x8e\x0f\xf0\x8c\xf3\x43\x0a\x6a\xc2\x91\x0f\x5b\xb7\x02\x12\x03\x1b\xbd\x44\xab\xcf\x7f\x87\xf4\xfa\x52\x37\xaa\xf7\x44\xb7\x76\x44\xb7\x75\x04\x50\xb4\x26\x7d\x7f\x70\x69\xfe\xa9\xd9\xfb\x0a\xf5\x66\x54\xb1\xcf\xbd\x46\x96\x99\xdc\xa8\x16\x4e\x6a\x5f\xa1\x1b\xdd\xc7\xf3\x22\xea\x91\x6a\xf9\x71\x94\x74\xa2\x5e\x35\x05\x43\x44\x43\xad\xd2\xd2\xa8\x2d\x5c\x2d\xc5\x15\x33\xaa\x62\x36\xac\xc8\x57\xaf\x06\xb7\x28\xa6\x72\x93\x23\xff\xc4\x67\x1b\xa3\x74\x67\xb5\xc9\x4c\xe7\x94\x57\x6e\x07\xef\x7b\x37\x34\x1f\xa2\xdf\x73\xde\xec\x86\xe0\x1e\x96\xe4\x30\x01\x5e\xd2\x07\x56\xa8\x67\x90\x7d\xcd\xd3\xcc\x12\x8f\x24\x3c\x62\x6d\x5c\x21\xd5\x54\x24\xba\xf0\x17\xb2\x06\xcf\x06\x31\xdc\x72\x67\x65\x28\xec\x43\x1d\x95\x29\x39\x48\xd5\xcf\xf0\x56\x8d\xa6\xbc\x2d\x68\x3c\xb7\xc6\x1e\xdf\x88\x7e\xa5\x6a\x04\x27\x61\x68\x8f\xec\x4e\xf9\xc4\x78\xbf\x29\xad\x98\xac\x00\x5e\xa9\xba\x11\xce\x9f\xda\x5d\x5b\x69\x34\xf9\xb3\x05\x95\x97\x41\x9f\xec\x71\xe4\xcc\xa8\x89\x84\x6a\x56\xe0\xb8\x13\x8a\x6f\x78\x9d\x2e\x6a\x4d\x14\x53\x8a\x7c\xd0\x74\x24\x54\x1f\xad\x08\xd8\x9f\x1a\x84\xf2\x4a\xde\x36\x94\xa1\x14\xf9\x5d\x13\xa1\x6a\x98\x3e\xb7\x65\xdc\x5a\x64\x5c\x95\x2f\x48\xc8\x30\x8d\x29\x22\xf3\x19\xe6\xd8\x42\xba\x5c\xb6\x55\x5f\x8d\x15\x63\x5c\xbd\xd9\x5a\xf3\xb4\xf5\x02\x82\x16\xe2\xd9\x54\xed\xb6\x78\xf0\x4c\x4b\x15\x13\x0a\x66\xf6\x77\x94\x16\x5d\x67\x33\xe5\xae\x2f\x52\x2c\xad\xc0\x7f\x83\xf0\xcf\x54\xfb\xb9\xb0\xa9\xeb\xb0\x5a\xee\x29\x2c\xb8\x9b\x9a\x06\x29\x8e\x0d\x52\xef\xad\x1f\x59\x74\x8f\xa7\x9a\xeb\x4e\x54\x84\x71\xa6\x2e\x7a\x16\x4e\xd3\x52\xb1\xc9\x14\x35\x8c\xb0\x50\xec\xbc\xeb\x89\x17\x58\x2b\x74\xcc\xb4\x1f\x22\xb4\x12\xff\x16\xaf\xcb\x85\xda\xed\xba\x6b\x95\xc3\xd6\x96\x6b\x63\xa2\x97\x3e\x52\xc1\xca\xc5\xc0\x28\xc5\x5d\x66\x1c\x41\x94\x98\xc2\x7d\xf2\x5c\xb1\x25\xef\xaf\xd2\x35\x5c\x2a\xbc\xd2\x6b\x95\xae\x23\x0a\x2b\x85\xee\xa1\xf8\xf2\x4d\x97\x79\x5d\xda\x2e\xad\x6c\x97\x56\xe9\xba\xad\x47\xe7\xea\xdf\x74\xf0\xbc\x46\xbd\xcf\xb5\x9a\xb8\x5b\xca\x1d\x1e\x3d\x4e\xcf\x22\x3a\x65\xd1\x67\x47\x2a\x9c\x29\x56\x48\xb4\x3e\xa3\x2c\xcb\x4b\x5d\xae\x15\x85\x53\xc5\xf6\x8a\xc2\x95\x62\xd1\x61\x68\x35\x62\x6c\xdd\x12\x55\xa6\xe8\x55\x4e\x28\x85\x23\xc5\xce\xd4\x78\xbd\xaf\x14\xb6\xe7\xca\x68\xcf\xab\x70\x1c\x15\xd2\xbd\x28\xf1\x57\xf4\x9b\x71\xf4\x72\xb3\x5c\x46\x49\x93\x5c\x23\x7b\xd7\xaa\x94\x96\x94\xe8\x08\x5e\xca\x68\x72\x12\x62\xb7\x5a\x94\x72\xaa\x28\x1d\xcb\xe4\x4a\x8d\xd7\x84\xd3\xe2\x5a\x28\xc6\x88\x66\x36\xa5\xdd\xf3\xcd\xb9\xf4\x71\x3e\xae\x80\x20\xd1\x39\xbc\xc2\x21\x6e\xf3\xe2\xb8\x6a\x31\x62\x0b\x60\x8e\x7a\x47\x6e\x46\x69\x2f\x9a\x46\xf9\xe8\x4c\xed\x76\xdc\x90\xbd\x1b\xe1\x2b\x77\xe0\xbe\x52\xb5\xbb\x5d\xdd\x1d\x10\x8a\xa9\xbe\xc7\x18\xf0\x50\xed\x99\x81\x17\x7e\x29\x1d\x21\x3b\x9c\x72\x83\x51\xe8\x78\xdd\xf7\xc4\xe4\xf0\x49\x35\xae\x1c\x3c\xd9\xaf\x4b\x2c\x48\x97\xd4\x1c\xa6\xf8\xfe\x15\xab\xd1\x53\x39\x53\x5a\xbb\x21\x12\x39\x96\xbd\xa8\x83\xf7\x33\xf4\x22\x21\x2f\x83\xd1\x4f\xb5\xe9\x8f\x76\x81\xc2\x7d\xd7\x01\x61\xb8\xc6\xeb\x1c\x29\x5c\xa8\xa6\xcf\x3b\xbc\x56\x6d\x38\xb0\x64\x28\xe2\x98\x7c\x54\x7d\x2c\x65\x97\xcb\x6e\x77\xa1\x26\xf7\xd5\xd4\x3e\xd3\x1c\x8e\xf7\x9a\x78\x53\xaf\xaf\xe2\x4e\x5a\x2c\x9e\x63\x35\xdd\xed\xcc\x24\xfa\xaf\xff\x2a\xca\x4d\x77\xbb\x8f\x6a\x62\xa7\x8f\x4e\x73\x78\xde\x04\x14\x3a\xe6\x94\xeb\x4f\x8f\x39\xf9\x48\x24\x9d\x58\x22\x7c\x32\x9c\xd2\x84\x13\x59\x31\xe8\x0d\x41\x83\xbd\xe2\xd3\xc1\xb3\x18\x92\x8a\xe3\x8f\x24\x84\x4d\x41\x84\x98\xc3\x4b\xc5\x1a\xa4\x82\x3b\x29\x1b\x5b\xc0\x59\x8f\xa9\xf5\x9a\xcf\x03\xd7\xa4\x79\x66\x91\x3e\xcf\x47\xc4\xf4\xf9\xa7\xb5\xd2\x26\xab\x16\xab\x5b\xa9\xc0\x0c\x50\xb1\x0f\x0b\x58\xc3\x9c\x09\xee\x02\xa2\x8e\xef\x24\xce\xfa\x55\xd0\x94\x19\xe7\xf0\xd2\x4a\x23\x91\x19\x7b\x63\x81\xd4\xb2\x48\x8e\x11\x1d\x06\xe3\x4c\x84\xec\xe9\x92\xbb\xbb\x78\x5f\x2b\x32\xa3\x6e\xe5\x66\x6c\x00\x1b\xb6\xb1\xbc\x86\x77\x8c\x1e\x6d\x7e\xcd\x46\x59\xaf\x47\xc5\x82\x90\x25\x53\xe3\x39\xf9\x48\xd6\xcc\x4c\xb2\x29\x42\x78\x8d\x10\x9e\x13\x4c\xa0\x71\xbc\xac\x2f\xd7\x80\xde\xab\xbe\xe3\x9c\x74\x87\x34\x4f\xd9\xac\xf4\x33\x56\x9a\x2c\x58\x8a\x91\x7f\x47\x5d\xb2\x66\x0b\xf7\x29\xa5\x14\xfd\xda\x47\x55\x6f\xe3\x02\x07\x2d\xd9\x73\x45\x52\x98\xc3\xda\xb9\xc7\x83\xc2\x0e\xfc\x0b\x7d\xa0\x38\x5f\x37\x99\x8f\x70\xd2\x1d\xa0\xa9\x37\xa5\xf0\x74\x6f\x29\xbf\x55\xac\x3b\x1c\x05\x6f\xfd\x5b\x8a\x0d\xe0\x81\x72\xd6\xcd\xfb\x58\x68\x6b\x47\x91\x74\xbb\xb7\x54\xaf\x97\xe7\xe0\x12\xab\xd9\x6c\x6d\x83\x3c\x1f\x3d\x50\x93\xa7\xaa\xe5\xb2\x50\xa4\x07\x73\x70\xfb\x73\xa1\xd5\x8a\x3c\x50\xb5\x50\xcc\x6e\xc6\xef\xec\x87\xc5\x7b\xa1\xe0\x91\x82\xbf\x15\xdc\x53\xfb\xb7\x82\x76\x79\x1c\x77\xdf\xaa\x70\x01\xe7\xd0\x13\xbf\x95\x81\x69\x34\x62\x68\xef\xd4\x17\x07\x2b\x71\x40\x79\x0e\x86\xe8\x16\x99\xbd\xcc\xe1\x71\x13\x05\x7e\x56\xec\x36\x11\xeb\x73\x25\xf9\x4e\xac\xd5\x7c\x27\xd6\xe9\x9c\xf6\xbf\xb3\xe4\x15\x77\x06\xe8\xc1\x78\xe5\x1e\xa7\xf0\xce\xa2\xe2\x60\x98\x06\x4f\xec\x5b\xc6\xcd\xd3\xd5\x8a\xcf\x45\x6a\x38\xfc\x61\x53\xd0\x0b\xa0\x4c\xfb\xa0\x2a\x57\xd4\x3e\xb3\x2f\x5e\xc5\x7c\xff\x3c\x95\x92\x2f\xe1\x37\x9b\xf6\x20\x44\x4d\xfd\xdd\x4e\xeb\x7b\xc4\x97\x7f\xee\xa1\xae\xf7\xaa\xe1\x85\x6e\xb7\x9e\x47\x0d\xef\xd5\xc4\x4c\x47\x5e\xde\x8b\x2f\xc0\x09\xb5\xd0\x68\x65\x8a\x2b\x30\xfc\x53\xa1\x63\x01\xf0\x7a\x46\x9b\x8c\xa2\x56\x9a\x83\xac\x7f\x52\x7d\xcb\x65\xfa\x71\x10\xd3\x8b\x22\x78\xa7\x0a\x23\xbb\x5e\x74\xfb\x76\xd4\x7b\xa7\xd0\xc0\x8e\xe6\xa3\x27\x2a\x8e\xff\x50\xbb\x1d\x79\x52\x1f\x50\x23\xe4\x4e\xcb\xa5\xc8\x72\x44\x79\xf3\x52\x64\x89\x97\x22\xfb\x51\xbc\x57\x93\x5e\xef\xf7\xfa\x4a\x69\x8f\xc3\x67\x92\x47\x65\xd3\xd4\xd3\xcf\xe1\xce\x7c\x9a\xc3\x0b\x45\x7e\x57\x14\x7e\x57\xb9\x9d\xc5\x6a\x37\xab\x20\xcd\x21\xd8\x9e\x23\x41\xf4\x41\xd1\xf1\x8b\x7a\xee\x0f\xaa\x8c\x26\x6e\x04\x3a\xda\x25\xbf\xa9\x38\xfe\x4d\xf5\xa5\xba\x6a\xe6\x76\xa9\x45\xc6\x67\x2a\x8e\xbb\x9f\xd5\x98\xfc\xad\x18\x79\xe4\x2e\xf9\x79\xa6\x28\x5a\x58\xde\x81\x47\x0a\x1f\x86\x7d\x25\x03\x0f\xcd\x05\xbc\x50\x16\x6d\xff\x5d\x9b\x12\xbb\xf9\x86\x94\x26\x5d\xb5\xa7\x4a\xde\xed\x5a\x38\xdd\x4a\xd1\xdd\x4e\xf5\xc5\xca\xb6\xe3\x3c\x95\xb3\xdd\x4e\x10\x29\xa8\x2d\x87\xf6\x49\x8c\xb1\xca\x5c\xdb\x01\x45\xfb\x76\x52\x91\x90\x9d\x43\x12\x39\x93\xea\x88\xd6\xcc\x95\x1e\x20\xf7\xc2\xa5\xbf\x82\xa8\x92\x8d\x7e\xc5\xe2\xea\x81\xa9\x5d\xf3\xe3\xe8\x76\xbf\x7a\x6b\x44\x67\xd5\x7d\xcb\x82\x16\x06\x34\x4f\xc8\x0b\xc5\xa4\x80\x7d\x90\x90\xc8\x83\x33\x02\x2e\xa0\x3b\xa4\x9e\x25\xd7\x02\x94\x00\x21\x20\x15\x30\x13\x90\x09\xd8\x08\x58\x0a\x58\x08\x66\x5b\x48\x9e\x28\xe7\xf1\x93\xfc\xa1\x72\x58\x0b\xbc\xed\x74\x2e\xd8\x02\xed\x22\xe0\x5c\xd8\xad\xee\xc3\x81\xbd\x3a\xc5\xa0\x82\xda\x42\xf7\x3d\x3f\x7d\x26\x4c\xf3\x0b\x5c\x8a\x0a\x9e\x58\x89\x0a\xcd\x77\x2d\x58\x6d\xd5\x5d\x0a\x0a\x67\x82\xad\x05\x51\x10\xfd\xbd\xe1\x1b\xfe\x42\xcc\xb4\x32\x69\x76\x11\x51\x38\x15\xec\x4c\xc4\xf1\x99\x70\x47\xd4\xe8\x54\xec\x76\xa4\x2a\x18\x2b\x6c\xa3\x51\x36\x78\xed\x3c\x3a\x2f\x45\xdf\x99\x84\xa2\x4d\x0a\xff\x24\x0c\xa1\x23\x25\x46\x74\xcb\x99\x12\xfd\x85\x04\x25\xec\x03\x9e\x97\x16\x53\x5b\xdc\x52\xa0\x58\x77\x14\x28\x31\x4e\x05\xa1\x89\x10\xcc\x6f\x2c\x93\xe7\x95\x17\xac\xd9\x72\x9b\x84\xe6\x70\x6d\x33\xd7\x3a\x25\xca\x8d\xa3\x05\xcd\x93\x73\xe1\x37\xc3\x4c\xb0\xee\x00\x32\xd1\xb4\xce\x3e\xe6\x9f\xcc\x4b\x35\xe7\x24\x8a\x28\xd8\xad\x72\x2e\x6c\xc9\xbe\x72\x20\x25\x99\x80\xed\xec\x3c\xd5\xe9\xcc\x70\x8d\x11\x29\xf0\xa2\x8f\x7a\xb3\x99\x70\x1a\x26\xdb\xc8\x4c\xe4\x34\x59\x89\x38\x5e\x89\x20\x42\x1d\x93\x8d\x60\xe5\x6b\x08\x07\x03\x4b\xc1\x36\x02\x85\x94\x8d\xfa\x96\xfe\xfe\x97\x8d\x00\x3b\x0a\x9a\xd4\x3f\xcf\x8b\xeb\x61\xf0\x2b\xae\xb3\x2b\x01\x47\x02\x5e\x09\x38\x14\xf0\x50\x30\x3b\x61\xfb\x94\xdf\x76\x21\x13\x03\x78\xfc\xb9\x3e\xe4\x23\x81\xf6\x1b\x0e\x6c\x8c\x53\x50\x76\xa6\x95\x60\x1c\xec\x34\x50\x10\x82\xf1\x1c\x3e\x89\xfd\xc0\x88\x20\xf7\x05\x54\x35\xc9\x93\x8f\x46\x5d\xca\xf7\x2b\xc6\x11\x72\x9f\xd6\xbb\x97\xce\x83\x4c\xa3\x53\x89\x0c\x12\xd1\x11\x67\x06\x24\xd3\x85\xc4\xd8\xc3\x91\x29\x4e\x78\x91\x84\xbe\xb7\x0a\x69\x66\x38\x11\x6c\xdb\x1a\x1d\x09\xdd\xa6\x84\x3b\xa9\x3e\x8a\x7d\xc2\xe2\xa3\xdd\xe7\xd7\x84\xbb\x78\x2c\x95\xeb\xd0\x59\x49\xeb\x73\x4f\x6d\x9c\x88\x3e\xde\x89\xe2\x7d\x69\x06\x68\x0a\x87\x1d\xa3\xb6\x5b\x85\xcd\x4c\x0e\xf7\xeb\xd0\x2b\x89\xfe\x2d\x1a\xb3\x25\xdd\xa1\x0f\xbe\x65\xec\x59\xdb\x88\x96\x14\xf2\x84\x00\x5d\xc6\x12\x27\x17\x05\x86\x78\x2d\x1a\xd4\xc8\xb1\x60\x91\x07\x63\x04\x6f\x04\x33\x18\x71\x11\x9e\xe3\x93\x2d\xf1\x32\xa4\x19\xae\x1f\x29\x4d\x8e\x05\x85\xa7\x82\x1d\x2a\x78\x6b\x11\x46\x31\x23\x70\xcb\xbe\x86\xed\x02\x0f\xaa\xa8\xe5\x85\xc0\x5b\xf5\x17\xdc\xe0\xad\xdb\x8f\x04\x42\x03\xfe\x16\xec\x91\x80\x7b\x0d\x54\xf3\x40\x50\x78\x2c\x58\xb7\x4b\x6e\x89\x38\xbe\x25\x82\x5f\xc4\x25\xde\x7f\xa5\x8a\xf8\x74\x98\x40\xe1\xb3\x60\x17\x86\x1c\x0b\x68\xdc\xb9\xde\x25\xb7\xc8\x53\x41\xbb\x85\xd0\xe1\xa9\xa0\x14\xbf\xfc\xf4\x13\x63\xec\x09\x2f\xef\x63\xb7\xb9\xef\x89\x2a\x4f\x5e\x9c\x52\x1e\x34\x6f\x70\xbd\x08\x25\x5d\xa3\x85\xc5\xbe\x58\x10\x77\x5d\x7e\x1c\xdf\x96\x18\x6b\x03\xed\x1f\x6f\x3b\xf2\xcd\xb6\x58\xa3\x39\x0d\x7b\x5a\x6e\xeb\x21\x85\x46\x24\x52\xd2\xb8\x75\xa4\xfe\x4a\x83\x99\x6d\x3d\x8a\x0e\x5e\xbd\xff\x5a\x4c\x19\x87\x2e\x31\x4d\x55\x3a\x16\xac\xf1\x09\x76\x5b\xbc\x13\xec\xb3\xd8\xed\xba\xf7\x54\x9d\xe1\x7b\x2a\xbc\x78\x70\x2f\x38\xbd\xeb\x00\xa5\xf0\xa4\x65\x6b\x8f\x0a\xb7\x6e\x17\x9a\xaf\x85\x67\x43\x93\xc7\x73\x2e\x2d\xef\xc2\x73\xf8\x43\xb4\x47\x4c\xe8\x4b\x65\xd0\x95\x87\x6e\xcb\xe7\x20\x46\xc7\x9b\x06\xb8\x8f\xce\x3d\x7a\x58\xbf\x8e\xbb\x88\xa4\xe4\x62\x2d\x6e\x38\x08\x36\x64\x2c\xc4\x2b\x4d\xd9\x60\x14\x5c\x1e\x7f\x4d\x47\xfe\xf2\x12\xc7\x88\x32\x3d\x49\x7b\xbd\x29\x2c\x98\x18\x2f\xfb\xea\x22\x59\xf6\x17\xa9\x58\xc2\x9a\x2d\xc3\x64\xc1\x1c\x9f\x51\x36\x78\xce\x96\xfe\xdc\xc2\x43\x69\x31\x26\x16\x07\xde\x41\x01\xa5\x0e\xeb\x24\x8e\x7f\x17\x2e\x10\x70\x25\x91\x0d\xbd\xe3\xc3\x62\x3c\x63\x2a\x21\xe7\x71\x7c\x1e\x4e\x27\x98\xb1\x05\x51\x14\xce\xe3\x98\x9c\xfb\xc3\x10\x36\xac\x3b\xa0\xf6\x13\x63\xcb\x80\x1f\xc6\x73\xf2\x56\x90\xb0\x67\x0f\x66\xe7\xa9\x90\x9d\xd9\xf5\xcc\xf2\xb9\x34\x21\x19\x7b\x22\x2c\xa3\x3b\xce\x1c\xd2\x9f\x59\x26\x9b\x26\x6b\x9b\x96\xcc\x89\xaa\x9c\xa0\xe7\x71\xdc\xdd\x60\x17\x5c\x6b\x18\x32\x37\xaf\xc0\xd8\xd2\xc8\xd5\x69\x18\x82\x8c\xe3\x6e\x6d\x94\xcf\x44\xf0\xf6\xcf\x73\xf8\xb0\x3f\xab\x38\x6f\x20\x46\x8f\xc5\x98\x10\xcd\xea\xbb\x99\x44\xf8\x67\x89\xb0\x70\x2a\x70\xd0\x85\xce\x01\x34\xde\xb8\xe7\xb2\x1a\xe8\x0e\xd1\x6c\xbe\x81\x00\x88\xa6\x34\xd1\x6c\xeb\x2b\x48\x38\xb8\xe2\x89\xcc\x81\x08\xa6\x26\x91\x92\x51\xcf\x4c\xe9\x58\x10\x4d\x93\x68\x23\x5d\x20\x84\x79\x31\x88\xc8\x5d\xff\xd7\x30\x50\x45\x9c\xad\x70\xa3\xa9\x25\x1f\xe1\x65\x58\x88\x5a\xe3\x98\xa0\xde\xba\xc1\x37\x8c\xfd\x67\x62\x68\x52\x3c\x02\xa7\x34\x27\xd1\xdb\xd0\x66\xc7\xf7\xb2\x53\x36\x8e\xb1\xb0\x9f\x35\xcf\x96\x8b\xe2\xc8\xde\x8b\xbc\x8c\x37\xab\x38\x32\x4b\x2c\xc8\x6f\x02\x4f\x1f\x22\xd9\xfd\xfa\x7e\xb8\x27\xc6\x0f\x84\xbf\x3b\xa2\x18\xf3\x9b\xb2\x59\x0d\x86\x26\x1f\x04\x69\x03\x08\xd8\xb3\xd8\x6e\xf6\xea\xda\xbd\x27\x76\x3b\x6c\x6d\x7c\x27\x19\x82\x1f\x62\x90\xc1\x48\x1f\xba\x8f\xd2\x1c\x7e\x6b\xe5\xfd\x86\xde\x20\xb6\x58\x39\xdd\x70\x57\x61\x0e\xbf\x7f\xdb\xf0\xab\x43\x2a\x2a\x7a\xe2\x3a\x1f\x85\xe1\x14\x1f\xce\x8b\x0f\xe0\xe1\xe5\x6c\x70\xde\x37\x17\x69\x45\xfd\x58\x7c\x50\x16\x1b\xa3\x71\xba\x85\x44\x0e\x7f\xb6\x15\xe2\x28\xb5\xd9\xed\x88\x7b\xb0\x04\xa3\x46\xeb\x6e\x4d\x43\x93\x4c\x82\xc7\x40\xec\x0e\xfc\x81\x7b\xc5\x2e\x62\x9a\x83\x49\x5b\x6a\x74\x38\xd0\x56\x16\x6a\xaf\x56\x8a\xe8\x46\x2c\x88\x61\x25\x41\x54\x41\x05\x9d\x59\x2a\xff\x13\x95\x83\x1e\x69\xcd\x3b\xc2\x64\x7c\xb9\x88\xc2\x15\x62\x4f\x04\x91\x74\xa4\xc6\x0d\xd4\xe9\x05\x20\x4e\x78\x33\xcc\xb1\x19\x2f\x1b\x94\xf0\x5e\x10\x93\x02\x4a\x77\xa9\x7d\xf9\x53\xf8\x97\x80\x48\x24\xdd\xfe\x29\x50\xfc\x8b\xb7\xa0\xe5\x16\x09\xed\x8f\x7e\x58\x8c\x7e\xb8\x57\xb2\x68\xd9\xd7\x90\x8f\x3e\x5b\x2a\xf3\x69\x7d\x1d\x9d\x78\x4d\xc5\x53\x01\x96\x04\x51\x18\xa4\xfb\x4a\x94\xf1\x0a\xbc\x1a\x94\xbd\x11\xfe\x15\xad\x2a\x89\x1f\x00\xc6\x86\x2e\x46\xe0\xde\x2a\xb8\xf0\x4f\x11\xc2\x47\x23\xb1\x47\xae\xea\x8d\x3f\xf7\x9f\xdd\xad\x11\xc7\x02\x7c\x97\x21\x20\x47\xfb\xec\x96\xb3\x7d\x2a\x30\x68\x32\x99\x42\xb1\x22\xed\x17\x77\xfd\x4c\x20\xce\x3c\x55\x4d\x73\x5a\x4a\xa3\xd9\x43\x45\x9e\x8a\x8a\x74\x7a\x6b\xcf\xcd\xa4\x05\x3d\x39\xa9\x2a\x7b\xe9\xc7\x0b\x29\x7b\x24\x08\x91\xec\xa9\x28\x15\x4b\x44\xb1\x8f\xee\x73\x2d\xf2\xde\x6e\xe7\x74\x1f\x44\xb3\x8f\x44\xd1\xc9\x63\x35\xa5\x63\x99\x28\x6e\xd1\x69\x21\xe9\x48\xfb\xea\x82\xb5\x29\xa9\x77\x3b\x03\x29\x1e\x92\x6d\xd7\x98\xf2\x38\xe6\x90\xfa\x33\x92\xb9\x5d\xeb\x5e\xfc\x80\x41\xf8\xad\x6f\x57\xb7\x28\xcf\x1b\x2f\x76\xa1\x30\xe8\x7a\x67\x26\x1e\xc7\x7f\x78\xd0\x23\x97\x0c\x69\x49\x26\xcf\xea\x77\x7c\x35\x6e\x5e\x47\x3a\x28\x70\x81\x18\xb6\xf5\x68\x9f\x1f\x45\x26\xe4\x4a\x80\x5b\x34\xb4\xce\xa0\x98\x3a\xf7\x10\x36\x42\x83\x85\x08\x5b\x82\x23\x1f\xd1\x5f\xb0\x47\x37\xd8\x83\x30\xf6\x54\xec\x76\xf6\xff\x95\x18\xe3\x4d\xca\xb6\xc9\xe4\x6f\x64\x2f\xda\xec\xf6\x0f\x55\x1c\x93\x43\x4b\x69\xd7\x34\xec\x5c\x02\x37\xa4\x9a\x08\x91\x4d\x8d\xf6\x7c\x2c\x4a\x0d\x7f\x85\x9d\x79\x2a\x9a\x41\xad\x0f\x45\xd8\xeb\xfe\x24\x77\xb0\x0b\x97\x4c\x56\x54\x43\x6d\xbd\x7c\x21\xe2\xf8\xd8\x90\xed\xd9\x52\x9d\xa6\x4b\x17\x28\xa2\x72\xbb\x56\xa1\x89\x1c\xe4\xb0\x45\xfa\xbf\x6d\xc6\x3e\x0a\xf2\x54\xc0\x0b\xe1\x45\x64\xaa\x12\x85\x16\x31\x8a\x8b\xf6\x5b\x36\x71\xa5\xd3\x75\x35\xce\xaf\xc8\x61\xeb\xb1\x60\xf2\x54\xe4\x14\x34\x27\x88\x27\x70\xcd\xec\x33\xb6\xca\x5d\xbc\xc0\x2e\xfa\x8b\x51\x1a\xc7\xdc\x52\x35\x93\x4f\x6a\x1a\xc7\x92\x70\xf8\xa4\xf6\xa3\x1d\xdf\x70\xad\xd8\xb9\xc8\xf2\x9c\xe6\xc8\x14\xbd\x42\x26\xc7\x3e\x55\x34\xb3\xc7\x02\xb7\x7c\xb3\xb3\x6e\xf1\xb4\x78\xb2\x3e\x0a\xc8\x2b\x70\x8f\x7e\x9d\xb9\x29\x2a\xd6\x33\xf0\x62\x1f\xe4\xdf\xd6\x1e\x2e\xe2\x1b\x60\x5f\x44\x7b\xf9\x4a\x55\xef\x6c\x55\xe9\x72\xd9\xd2\x6f\x1f\x45\xf7\x91\x70\x31\x2b\x0a\xde\x16\x14\x3e\x23\xe1\x2c\x9a\x34\x8a\x27\xb2\x38\x29\xac\xc7\x28\x08\x4b\x74\xa6\x6c\x00\x33\x36\x1c\xbd\x54\xcd\xe8\x64\xee\x0a\x9c\xb4\xd7\xb3\xb4\xf1\x70\x24\x1c\xca\x08\x12\x92\x59\xaf\x07\xfe\x82\x30\x8b\xc8\x5b\xdc\x4f\x36\xbb\x1d\xd9\x20\xda\x99\x64\x53\x66\xe0\xe0\x60\xb6\xdb\x69\x22\x2c\x73\xe3\xae\x96\x2a\x93\x2a\xe6\x88\x22\xd0\x7e\x8a\x78\x19\x57\x8d\x63\xd7\xe9\xac\x2d\xb8\x47\x0b\x50\x10\x10\xaa\x0d\x10\xaa\x0e\x88\x96\xb1\xab\xe6\xc8\x4a\x28\x6b\x7f\x1b\x4d\xe8\xaf\x0a\xfd\xd5\x44\xed\xf7\xd7\xcb\x80\x78\x0a\x32\x05\x9d\x82\x4a\xf7\x9d\x4c\xea\x32\x7f\x10\x29\xab\x85\x59\x87\x34\x6d\x8b\x64\x6f\x90\x65\x60\x83\x11\xbf\x7b\xe7\xc7\x9f\x46\xbd\x1e\xa7\xc6\x7b\x78\xff\x23\xea\x11\xc2\xef\x0e\x7f\x1a\x47\x03\xa7\xb9\xad\x04\xb8\x1b\xfe\x84\x7e\x9e\x15\x27\xda\x8a\x2a\xd7\x32\x47\x69\x83\x42\x2c\xe3\xe1\xa0\x19\x37\xba\x16\xb8\x31\x64\xe3\x96\x3b\x54\x13\x34\xad\x1e\x8c\xf4\xdd\x22\x3a\x6f\xaf\xa7\xe9\xcd\x36\xa3\x15\x8b\xbf\x2c\x65\x5b\x0c\x51\x74\xac\x7c\x68\xd4\x59\x0a\x69\x96\x89\xb3\xe6\xa9\xec\xcb\x34\x0c\x60\x5b\x2e\x24\xab\x58\xde\x4d\xe4\x94\xf1\x89\x9c\x82\x71\xf7\x92\xc1\x4c\xad\x4e\x85\xe4\xad\x55\x4f\xca\xcb\xc8\xf1\xc0\x99\xa9\xd5\x3a\x6d\xe0\x91\x8a\x86\x63\xab\x4e\x3f\x26\x5b\x95\x98\x1c\xd6\x5a\xad\x93\x48\x45\xf9\x14\xa4\x9d\x23\x07\x0c\x5e\x05\x46\x85\x83\x9e\xe8\x29\x5e\x1d\xa6\x4e\x3f\x4e\xf0\xa0\x59\xdb\x3d\x59\x1d\x17\x5a\xfa\x0e\x46\xb3\xbb\x69\x59\xc5\xac\xd8\x9e\x93\xd9\x14\x36\xcc\x6e\xb1\xd1\x5e\x78\xcb\x4d\x11\x1f\x78\x13\xc7\x68\x02\x2c\x0b\x13\xe0\x0d\x46\xbc\xf7\xc1\xf5\x6c\xe7\x85\xeb\x78\x96\xe3\xf2\xb5\xc9\x1b\x4a\xf3\xbd\x68\x2f\x6e\xd4\x23\x53\x98\xae\x8c\x68\x79\x21\xbc\x5a\xa3\xd7\x30\xc7\xd1\x70\x37\x1a\xd4\x33\xa7\x44\xd2\x8a\x29\x83\x05\x8b\x62\x83\x91\x2a\xe3\x63\xf7\x7a\xaa\x5c\x23\x72\x62\x0f\x88\x10\x50\x69\xa2\xa6\x74\x54\xab\x93\xe9\x3c\xcf\x51\xc2\x98\x83\x8b\x24\xb0\x17\x73\x33\xf8\xe4\x97\x8e\xe7\xbd\xdb\x67\x10\x75\x9c\x86\x3a\x12\x99\x3a\xf8\xf9\xe7\x1f\x7f\x39\x18\x62\x38\x8b\x20\x41\xd4\x95\xc8\x93\x93\xc1\xc1\x2f\xe9\xc1\x62\xba\xbd\x93\xdf\x3e\x13\xb0\x91\x3c\x9b\xa5\x6b\x5e\x8b\x16\xd7\x12\xc6\xa0\xaa\x9b\x0c\xb5\xe6\x39\x38\x07\xa9\xbd\x6e\x8a\x05\x41\x63\x99\xa0\x1d\xaf\x87\xb1\x64\xe8\xfe\x1f\x65\xd7\xab\x53\xb5\xac\xaa\xbb\x34\x3b\xc2\xb4\x1b\x5d\xd5\x0c\x4d\xf6\x6e\x42\x30\xe8\xe8\xe7\xd1\x80\xa1\x14\x6e\x82\x82\x1b\x28\xa9\xda\xc7\xfe\x63\x53\x80\xe3\x07\x04\x47\x8b\x91\x79\xf4\x8f\x3b\x3f\xfd\xe3\xce\xf7\x51\x0f\x1d\xab\x9e\x4a\x43\x42\x20\xc9\x3b\x14\x86\x3f\xd1\x5e\xf4\x8f\xef\xef\x45\x78\x17\x45\xb1\xfe\xa3\x08\x04\x1b\x8c\xc4\x5d\x5d\x2e\x84\x22\xc6\x86\xc6\xe0\x22\xf7\xd5\x9c\x1f\x1a\x22\xe8\xe8\x87\x1f\x19\x63\xe9\x6e\xf7\xc3\x4f\xee\xff\x17\xff\x3e\xbc\xe3\x13\xd2\x5f\xd9\x0f\x3f\xc7\x71\x7a\x97\xfd\xf8\x4f\x7c\xfb\xe9\x47\x7c\xfb\x65\x80\x6f\xbf\xfc\x13\xdf\x86\x77\xee\x8c\x55\xcf\xd7\x8e\x35\x27\xe9\xdd\xe1\x9d\x9f\x6d\x62\x9a\x4e\xd2\x69\x92\xde\xbd\x33\xf8\x21\xbc\x0f\x7f\xb9\xb3\x4b\x7f\xfd\xf5\xa7\x69\xcf\xbe\xdc\xf9\x79\xf7\xd3\xf7\x31\xe6\xf9\xf1\xc7\x3b\xbf\xfc\x84\x15\xff\xf8\xcf\xef\x7f\xf8\xc1\x67\xbf\x73\xe7\x07\x9b\x7d\x78\xa7\xc8\x6f\x0b\xc7\x3f\x7d\xdf\x28\x4f\x44\x8f\x0d\x21\x65\x3f\xfd\xf8\xe3\xf7\x3f\xf5\x08\x19\x0e\xee\x7c\x1f\xa7\xf4\xee\xdd\xe1\x60\x87\xcf\x8d\xd1\x53\xf0\xf5\xff\x30\xc0\xfa\x7f\xae\xd6\x3f\xbc\x53\x6d\xa0\xb5\xc1\x62\x2f\xab\x2f\xc6\x18\x77\x01\x23\xf7\x03\xb1\xd3\x38\xee\x76\x49\x23\xce\xf8\xbf\x1c\x40\x1c\x03\x3f\xbb\x40\x21\x5f\x0a\x37\xed\x72\x7c\x8b\x4b\xa6\x45\xe3\xab\xf4\xfa\x94\xbf\xa8\x19\xdd\x79\xa5\x81\x48\x51\x83\x5e\x9e\x60\x05\x3a\x36\x65\x5c\x7e\x36\xa4\x1e\xe1\x79\x17\x8f\xca\x89\x14\x36\x84\x6b\xa7\x19\xa8\xb8\x22\x4a\x28\xf7\xce\xa8\x2d\x8e\xbd\x0c\xdd\xe1\x34\xa8\xbc\x25\x2d\x0c\x6f\xba\xbc\x05\xe2\x41\x68\x3e\xe1\x20\xa7\x23\x82\x5e\xba\xb5\xc3\x77\xb7\xd3\xfd\x74\xb9\x54\x57\xaf\x03\x6c\x32\xba\xdb\x75\x55\xea\x20\xb3\x67\x87\x86\x02\x61\x82\x77\xdc\x74\x07\xc5\x6a\xe0\xf9\xd7\x3b\x50\x1c\x85\x32\x88\x37\x8a\x40\x3c\x38\xa4\x38\xee\x22\x86\x8f\x63\xa2\xd8\x2c\xc5\xc8\xc6\x14\xfc\x27\xfc\x32\x26\xb2\xc5\x6f\x40\x82\xbf\x86\x38\x0d\xe4\x96\xa2\x21\x3a\x2d\xc7\x3b\x21\x5b\x42\x3b\x8b\x38\x96\x37\x44\x7c\x56\x53\x66\x88\xc0\x49\x49\x0a\x28\xe7\x18\xfe\x17\x3f\xe2\x6d\x43\xbc\x7e\x15\x8d\x6c\xa1\x1a\x78\x79\xf3\x84\x3d\x7c\x0a\x4a\xaf\xd2\xcd\xd0\x9a\xfd\x03\x81\x0d\xda\x04\x81\x0e\x71\x8a\xe6\x39\x6c\x52\x8f\x6a\xf7\xef\xde\x83\x65\xca\x7c\x08\xe4\x45\xca\xb6\x6f\x1e\xdd\x1f\xfe\xf3\xfb\x9f\x93\xc8\x3f\x44\xf0\xe6\xd1\xfd\xef\x7f\xf9\xf9\x27\x4c\xb1\x0f\x51\x0e\xeb\x94\x65\x69\xdf\xd1\x42\x64\xeb\x8d\x7f\x93\x45\xda\xf7\x59\x00\x03\x31\xfa\xeb\xa7\x43\x8d\x2d\x3c\xc8\x26\x0d\x57\x1b\x2c\x53\x0c\xc0\x9c\x17\xad\xb5\xe4\x2e\x0e\x8b\x3c\xcf\x61\x91\x52\x98\x7f\x9d\x7e\x3d\x4f\xd9\xf6\x54\xa7\xb3\x0b\x6e\xda\xdd\x5b\x7b\xd1\x64\x1a\xb9\x6b\xbc\xd3\x04\x1d\x1b\xd3\x08\x84\x9c\x8b\x19\xcf\xda\xc9\x3c\x5b\x24\xea\x71\xb4\xb3\x04\xcd\xd7\x3c\x35\xad\x35\xe7\x39\x5c\x36\xa9\xe7\x55\xda\x34\x42\xc4\x95\x01\xd7\x4d\x3a\x77\x95\x86\xcb\x59\xe0\xd2\x2e\xdd\x31\x4f\x26\x7c\x4a\x73\x38\x4b\x19\x06\x1b\xaa\xe2\xa0\x22\x4e\x33\x9c\xa6\x6c\x9d\x06\x6b\x6c\xb8\xb2\x14\xec\x7c\xfe\xfb\x86\xeb\xeb\xd7\x9a\x2f\xc4\xa7\xa4\x3b\x04\xdc\xa6\x0f\x94\xc9\xec\x8b\xf7\x6e\x4e\x22\xe7\xde\x1c\xde\x8f\xb8\x34\x42\xf2\xa5\xcd\x32\xe7\x4b\xb1\x12\x86\xeb\x24\x8a\xa3\x40\x3a\x20\xbf\x6f\x9f\x74\x92\xa5\x7d\xf7\xe8\x53\xde\x59\xb6\x23\x7b\x25\x97\xd7\xb6\xb4\x5b\x09\xc9\x69\x5a\xae\x89\x64\x9d\xf6\xcb\x05\x32\x39\x4d\xa7\x05\xc0\xbb\x43\xc8\x82\x47\xcc\x0d\x97\x0e\x74\xce\xd2\x12\xdb\x66\x17\x62\xfd\x72\xb3\x5c\xba\x92\x46\x8b\x99\xb1\xaf\x28\x1c\x16\xf2\x0c\x85\x8b\x47\x25\x6c\x03\x9a\x74\xb7\xd1\xd4\x0d\x12\xdd\x26\x3b\x87\x4b\xe6\xb0\xe6\xbe\xc8\x63\x36\xbe\x64\x33\x22\xe1\x92\x26\x97\x55\x1b\x3c\xdb\xd1\xf1\x25\x5b\x92\x4b\x1a\x56\x90\x8b\x64\x70\x99\x92\x4b\x8b\x87\x2e\xed\x6e\x09\x07\x03\xb9\x6c\x23\x57\x3a\x66\xaf\x46\xa4\x9b\x4c\x4e\xa9\x8f\x84\x05\x11\xa5\xe0\x4d\x97\x2f\x1d\xaa\x0a\x78\x3e\x8d\xe3\xee\x7a\x9c\x12\x09\x57\x61\x32\x34\xcc\x21\xba\xe0\xd7\x11\x4d\xe4\xe8\x92\x45\x51\xde\xe2\x82\x4e\xce\xd9\x25\xdd\xed\xf6\xee\x83\x38\xdf\xed\xa2\x53\xa5\x96\x3c\x95\xf5\xc4\x26\xf1\x87\x19\xc5\x99\x90\xa6\x96\x96\xa5\xe5\x39\x7b\x59\xdc\xc3\x96\x8e\x27\x0b\xb2\x1e\xcb\xe4\x86\x8e\xba\x88\xe1\x0b\x92\x92\xcb\xc6\x67\xe4\x64\x23\x4a\xa7\xc9\x64\x41\x64\xc8\xe7\xf1\xc1\x25\xa5\x2e\x62\xd5\x0a\xae\xd9\x04\x49\xfc\x42\x0c\x7a\x59\x84\xcf\xc5\xe4\x94\xcc\x28\x5d\xb1\x59\x19\x56\xfd\xac\xc6\xdd\x5c\xd2\xd1\x8a\x65\xe3\xb3\x7e\xa6\xb4\x21\x19\x4d\xce\x8a\x48\xfc\xa7\xff\x1f\x7b\x6f\xba\x1d\xb7\xad\x35\x0a\xfe\xef\xa7\x60\x21\x0e\x0d\x84\xa8\x49\x1e\xc3\x12\x54\x47\xb6\x65\x47\x89\x6d\x39\x1a\x32\x95\xea\xe8\x52\x24\x4a\xa2\xcd\x22\x2b\x1c\x34\xa4\xc8\xbb\x72\xbf\x9e\xfb\x11\xfa\x4f\xf7\x1b\xf4\xea\x1f\xfd\x02\xfd\x04\xf7\x7b\x84\x4e\xbf\x48\x2f\x6c\x00\x1c\xaa\x58\xb2\x93\x73\x72\xfa\xac\x73\x6f\xe2\x55\x22\x41\x0c\x1b\xc0\x06\xf6\x80\x8d\xbd\xd9\x60\x74\xbe\x3d\xaf\x18\xc3\x73\x89\x30\xd7\x6c\x3e\x39\x9f\xd2\x23\x76\x35\xb9\x9e\xca\xe0\x6a\x52\xc9\xda\x61\xec\x48\x66\x39\x60\x80\x08\xe3\x16\x94\x8a\xc7\xb1\x18\x0b\x62\x87\x76\x68\xe1\x6c\x8c\x7a\xc8\xba\xb6\xc5\xfe\x72\x2d\xf6\x17\x32\xba\x75\xf0\x2d\x4d\xf1\x11\x3d\xd8\x80\xb5\xa4\xf4\x67\x77\x5b\xd0\x03\x87\xad\x91\xda\xd5\x1d\xb1\xb9\x21\xb5\xaa\x97\x59\x4a\xd7\xcc\x01\x3b\xa5\x61\xc3\xb5\x33\x2a\x2d\x9b\x59\xaa\xa7\xc9\x34\x2b\xa1\xba\x4a\x6b\x53\x22\xeb\xaf\xed\x37\x9e\xf6\xe4\x47\x70\xd4\x9d\x46\x1b\xae\x3c\xb1\xb4\xa7\x36\xaa\x3c\xbf\x76\xf4\xf3\xa8\x6e\x45\x52\xe6\x30\x4d\xb5\xb7\xad\x24\xd6\xc4\x8d\xfa\x97\x76\xa8\x8e\x2f\xb9\xa1\x32\x18\xf2\xc2\x5d\x79\x23\x8b\xfb\xe9\x25\x8f\x0d\x68\x83\x1a\x55\xad\xd4\x88\x62\xa3\x72\x04\xa2\x6f\x5e\x55\xdb\xf3\x0a\xb8\x72\x47\x94\x63\xed\xa9\x2d\xae\xb1\x51\xd2\x32\x4f\x3b\x8c\x27\xe1\x87\x30\xba\x0e\x0d\x99\x49\x83\xb9\x88\xa3\x2b\xdf\xe3\x9e\x18\xbb\xb0\x6c\xa6\x90\x12\x5d\x73\x23\x0e\x85\x1c\x7c\xed\xa8\x9b\xbb\xda\xe8\xa0\xd5\xb3\x8c\xcc\x92\xe7\x57\x0e\xd6\x2f\x44\x72\x5c\xe5\x2b\x5d\x25\x3d\xeb\x3b\x4a\xda\x6b\x66\x19\xaf\x26\xd8\xd7\xce\x4a\x4a\x8d\x7a\x55\x97\x3b\x7a\x65\xe2\x58\x14\xa8\xe8\x5b\xa7\xf6\xa9\x24\x75\x7c\x8d\xc8\xb5\x41\xb6\x92\x67\xbc\x96\x62\x57\x88\xa7\x93\x6a\xa4\xb2\x06\x5c\x99\x28\x80\xab\x72\xd4\x3e\x68\xa2\xda\x06\x87\xfc\x34\xd6\x0f\xf6\xf5\x0a\xb5\x8d\xed\xd6\x09\x52\x1f\xcb\x72\xb1\x5d\xdb\x51\xd7\xe8\xf4\xe6\x86\xab\x4c\xe3\xf5\xa4\xaa\xce\x2a\x8d\xca\xe9\xb7\xa3\x1a\xbd\x8f\x57\x88\x7a\x2b\xc4\x8d\x2c\xe3\x95\x77\xd1\x52\x23\xa1\x46\xf9\xdb\x80\x2f\xbf\x8e\x6b\xcf\x50\x89\x7e\xa1\x62\x8b\xdf\x00\x49\x14\xa7\x63\xf9\x47\xfa\x73\x6b\x61\x2c\x5a\x1b\x5d\xcb\x36\x6e\x4b\x04\x30\xd6\x52\x41\x85\x34\x6a\x0b\xba\xa9\x16\xd4\x38\x66\x78\x40\xf5\x1b\xc1\x08\x09\x46\xff\xca\xc1\x65\x12\x98\x03\x94\x6f\xd2\x89\x23\x75\x14\x49\x5c\x93\xa8\x62\x7d\x16\xc8\x74\x40\x5e\x84\x46\xbe\x54\xab\x82\xda\xf3\xa5\xdc\x47\xfc\xd0\xb8\x74\xc6\x8d\x34\x9b\x8b\xfd\x53\xb2\x6c\xc8\x0f\x0d\x3e\xe6\x3d\xf5\x3a\x2e\xd3\x6d\x24\x79\x63\x64\x97\x49\x00\x92\xcb\x2e\x9d\x89\x3f\x1d\xc1\x3d\xd3\x06\xf5\x8d\x21\x80\x88\x18\x76\xd3\x0c\x25\x09\x96\xaf\x95\x8e\x26\x61\x83\x51\x52\xd7\xd3\x25\x92\x68\x65\x2c\x9c\x24\xd3\x51\x54\xcd\xaf\xd4\x36\x8a\xde\x4d\xb2\x69\x9e\xdf\x3a\xd8\xa1\x47\x0e\x16\x6f\x34\xa3\xae\x68\x68\x6d\x0e\x68\xad\x3c\x8d\xf4\xd2\x8b\xca\x25\x24\x9d\xfb\xa9\x01\x56\xa0\xd2\xa8\xb6\xc5\x44\x2b\x48\x1a\x55\xdb\x6b\x59\x5f\x6d\xa9\x44\x25\xd1\x51\xb7\x12\xb5\xd7\xd3\xa8\xda\x1b\x08\x9d\x31\xb0\x1d\x8a\x56\x37\x4b\x08\x79\x82\x2a\xcd\xff\xca\x66\x64\x9a\xab\x8a\xc5\x32\xcb\x78\x66\x31\x41\x14\x9f\x32\xa9\x24\x1b\x0e\x06\x83\x07\x9f\x3f\x78\x66\x22\xbb\xfa\xb2\xb7\xf5\xf9\x97\xcf\x3f\xff\xf2\x81\x89\x08\x0d\xb4\x82\x75\x30\x9e\x59\x81\x8d\x50\x41\xe8\xee\xba\x21\x83\xbc\xec\x23\x63\xc7\xd4\xbc\x09\x28\xbf\x11\xa5\x98\xde\x9c\xf3\xb2\x6a\xd3\xc4\x0e\xe3\x16\x1a\x23\xeb\xc0\x01\x64\x08\xc7\x49\x34\x49\xa7\xd8\xa1\x21\xf5\x89\x0d\xf7\xde\xe1\xde\x9e\x4e\xf6\x89\xad\x1f\x0f\x1c\x1c\x11\xea\x93\x82\xee\x39\x2d\xf6\xc7\x6b\x76\x3b\xa2\xbd\x92\xfa\xd6\x7d\x30\x8c\x1b\x0e\x19\x96\x05\xa8\x90\xef\xc9\x73\xec\x71\xf9\x64\x8b\xe5\x27\x3e\x28\x27\x87\x11\x43\x7d\x67\xe1\xf7\xaf\x06\xfd\x84\x43\x58\xef\xa4\x2f\xe5\x63\xa8\xaa\xeb\x78\x1e\xa2\x3e\x5b\x16\xd4\xa9\xf9\xcd\xac\x6c\x5e\x7b\xe7\x91\x77\x0b\xd6\xd1\xf2\xb1\x76\x47\x54\x26\x8c\x57\x3c\xcb\xd4\x3c\xd4\xbf\xf1\x93\xc4\x0f\x2f\x8c\x98\xff\x9c\xf9\x31\xf7\x0c\x03\x7c\x0b\x70\xb1\xf5\x1a\xa2\x2c\x92\xb6\x19\xf7\x7e\x06\xec\xd1\xdf\x12\xd3\x6c\x9c\x58\xac\x7d\x6f\x8b\x70\x2c\x18\x14\x70\x86\xb2\x96\x7b\x92\x82\xb7\x9f\x5d\x07\x2b\xb7\x00\xa1\x15\xd1\x14\x38\xd6\x18\xe2\xf1\xff\x33\x4e\x4b\xe0\x0b\x48\xff\x8b\x9e\x97\xb3\x7f\x96\x79\x89\xa3\x80\xff\xd7\x19\x21\x05\x7d\xef\xb0\xce\x8a\x91\x6b\xa5\xbf\xa8\xf9\x85\xab\xc9\x78\x75\xbb\x60\xa0\x52\x0a\xde\x0b\x9e\x96\x0a\xd9\x83\x19\x0c\x45\x4a\x3a\xa5\x97\x72\x91\x2c\x40\x79\xee\xb0\xef\x30\xda\xdf\x3b\x7b\x77\x78\x70\x7c\x80\x08\xfd\xb0\xae\x59\xa3\xef\x1c\xf6\xde\x19\xb7\x56\xdc\xaa\xff\x62\xfb\x60\x6d\x71\x8d\x53\xfa\xdc\x21\xe3\x74\xf2\xdc\x99\xb6\x33\x5c\x4d\x35\x7e\x5d\x11\xd2\xf8\x36\x6e\x6a\xf2\x4b\xc8\xec\x46\x11\x09\xe0\xf8\x83\xa3\xbc\x77\x1f\x3b\x6b\xd7\x74\x1d\xd6\x19\x8e\x26\x53\x98\x4d\x41\x26\x21\x50\xaf\x1f\xe2\x58\x30\x4b\x72\x8e\x09\x19\xe3\xd0\x61\xef\x1c\xfc\xce\xc1\xb1\x43\x88\x18\xb5\xd5\x21\x31\x4d\xcc\x1d\x16\x3a\xc4\x16\x55\x0e\xb4\x76\x86\x3b\xf2\xc3\xb2\x10\xbd\xe7\x0e\x3d\x76\x48\x9e\xbf\x93\x4f\xb4\xe5\x66\x3b\x98\x93\xa8\x8b\x40\xaf\x1d\xb6\xdc\x57\xb0\x96\x23\x6c\x73\x87\x3e\x3b\x79\xf5\xea\xc7\xb3\xa3\xdd\x97\xbb\x87\xfb\x67\xfb\xc7\x7b\x87\xbb\xc7\x07\x87\x47\xf6\xa1\x53\xd0\xb7\x0e\x7b\xed\xf4\xd6\x4a\xd1\x7d\x67\xe3\x55\xcb\x93\x55\xea\x5d\x46\xae\xb7\x90\xa1\x6b\x42\xa3\x75\x54\x63\xaf\x52\xfc\xd6\xa1\xf2\x72\x64\x80\x87\x34\x24\xd2\xee\x26\xa5\x31\x58\xdd\xbc\x8f\x26\xf1\x94\xed\x3b\x34\x2d\xe8\xbd\x12\x8d\x92\x06\xbe\xe4\x39\x46\x67\x67\x50\xe7\xd9\x19\xf2\xc3\x65\xd1\x16\x4e\xa1\x33\xa4\x10\x74\x3f\x8d\x6f\x97\x38\x65\x15\xe6\xd5\xd4\x19\x2f\x54\x28\x8d\x28\x6e\xb9\xeb\x5e\x35\x41\x04\x00\x44\xdb\x3b\x4d\xa6\x84\x72\x16\xae\x45\x5a\x5d\xbf\xc7\x59\x3b\x1d\xa8\xac\x45\xdf\xe3\x90\xac\x86\x7b\x02\x0b\xf8\x2a\x02\xee\xfa\xb5\x95\xe7\x60\xa4\x99\x70\xb8\xaa\xaf\x15\xd9\x16\x32\x9c\xc4\x70\x8c\x12\x66\x44\x0a\x1c\x13\x2a\xe4\x1f\x05\x6b\x4c\xec\xb0\x57\x76\x84\xc5\x34\x84\x30\x02\xda\xf2\xe5\xc5\x86\xa9\x7f\x03\xe9\xed\x38\x43\x5f\xae\x2d\x89\x9f\x37\x63\xca\xb3\x76\x3e\x8f\x3a\x64\x79\xe2\xe0\x90\x72\xaa\x64\x0d\x6d\x55\xbf\x32\x32\x29\x83\x6b\xe7\xa5\x26\xee\x0a\x94\x64\x6f\x54\x0c\x5e\xc3\xd3\xe9\xde\x24\x9d\x8e\x92\x6b\x5f\xcd\x80\xeb\x24\x1c\x89\xa5\x88\x6c\x78\x04\x15\xa0\x7e\xe1\x61\x1a\xfb\xe2\x6d\xfd\x82\x69\xcd\xe4\x2d\xac\x0c\x9c\x3e\x21\x1f\x29\x0a\x3a\x6b\xa2\x3f\x5d\x08\x1c\xf4\xea\xbb\x25\xbd\x64\xde\xe4\xa5\x33\xcd\x73\x6f\xf5\x12\x7f\x64\x9a\xde\x24\x9a\xd2\x2b\x06\xbd\xbb\xcc\xf3\x40\xb0\xa4\x73\xa6\xbc\x74\x40\x0c\x1c\xaf\xa7\x60\xcf\xf3\x4b\x31\x10\x73\xd3\xc4\xae\xd8\x66\xe6\x6a\xc2\x61\x87\x16\xf3\xda\xba\xdf\xb8\x70\x01\xcb\x34\xc5\xae\xe4\x8a\x2d\xe9\x85\xd8\x6b\xee\x39\xe3\x7b\x0e\x76\xe9\x0b\x87\xd8\x2d\x1a\x37\x57\x00\x6c\x9a\xef\xb0\x4b\x5f\x3a\xf4\x67\x87\xc0\x7a\x75\xe9\x0c\x4c\x92\x09\xd5\x63\x0b\xf3\x74\x69\x9a\xfa\xbd\xc3\xd8\x25\x44\xb0\x31\x4d\xbc\x60\x9d\x01\xbd\x6a\x41\x92\xcb\x9a\x21\x6e\x41\x28\x0c\x4e\x87\xb1\x2b\xd1\x9e\x27\xda\xbb\x82\x2d\x81\x4f\xd9\x15\x8d\x88\x3f\xc3\x09\x5b\xca\xfa\xed\x00\xeb\x96\x08\x15\x33\x6d\xfb\xe3\x2b\x91\x08\xb3\x4e\xa8\x1a\x28\x91\xa2\xe7\x9b\x14\xd4\x01\x7b\x95\x4c\xa0\x4e\x42\xf0\x1b\x27\xcf\x17\x79\xde\x91\x09\x1e\xdc\x32\x49\xb1\x47\x33\x9a\x4c\xb2\xa9\x8a\xb6\x59\xb3\x6d\xe3\x6b\xae\x52\xa0\x86\x82\x56\x96\x77\x49\x41\x5f\x39\xfa\x12\xd4\x2f\x4e\xf3\x12\x94\x9c\xca\x0a\x43\x08\xfd\xce\x61\xcf\x1c\x2c\x95\xa9\xda\x1d\xcb\x8a\xa1\xe5\x2b\xa7\x6e\x44\xbc\x5a\x05\x55\xa0\xcd\xc1\x25\x72\xe8\xf1\x1b\x7b\x40\x3f\xf8\x21\x04\x94\x5c\xb9\x0c\x24\x4d\xad\x7e\x71\x94\xe1\x2f\x5c\xae\x81\xd2\x34\x64\x69\x4f\x14\xa2\xa5\x7b\x7d\xcb\xd2\xd7\x73\x78\x9e\xc7\x3b\x4c\xdb\xfc\x8c\xb1\x2e\xa4\x2f\x4b\x2e\xeb\x46\xc9\xca\xc2\x79\x50\x10\x5b\x4e\x04\x63\xe1\x58\xe5\x88\xb5\xf9\x73\x61\x57\x38\x53\x7e\x05\xeb\xa1\x32\x83\x4a\x9c\x48\xef\x20\xd5\x87\xa2\xc2\x37\x32\x02\xef\x1a\x8a\x7d\x64\xda\xd5\x06\x7d\x16\x96\x38\x20\x1e\x4b\x1c\x11\x2f\x25\x26\xc0\x96\xf3\xd5\x06\x2a\x46\x23\x3d\x9b\xf7\x9c\x36\x97\x2b\x58\xf0\xa2\xcd\x88\xe4\x71\x87\xb1\xd0\x34\x6f\x71\xc4\x6a\xac\x05\x31\xcd\xa8\x03\x11\x66\xaa\x35\x78\xcf\x81\x50\xec\x82\xbe\xfd\xe0\x30\x34\x39\x4d\x4f\xc3\xd3\xab\xd3\xd9\x69\x6c\xfc\xdf\xff\xfb\xff\xf3\xbf\xfe\xfa\xdb\xaf\xbf\xfe\xf6\xeb\x7f\xfa\xed\xd7\x7f\xfb\xed\xd7\xff\xf6\xb7\x5f\xff\xbb\xdf\x7e\xfd\xef\x7f\xfb\xf5\x7f\xf8\xed\xd7\xff\xf1\xb7\x5f\xff\xa7\xdf\x7e\xfd\x9f\x7f\xfb\xf5\x7f\xf9\xed\xd7\xff\xe3\xb7\xff\xf4\xbf\xfd\xbf\xbf\xfe\x7a\x9a\x6d\x0d\xb6\x9e\xc2\xef\x97\xa7\xd9\x8c\xcf\x66\x53\x44\x7f\x74\x98\x0e\x5e\xf2\x57\x64\xfd\xe0\x88\x7f\xe8\x0b\x44\xe8\x37\xe5\x07\x9d\x78\x0f\x11\xfa\xb5\xf3\x31\x3f\x4e\x52\xef\xac\x0f\x4b\x30\xaf\x4c\x0a\x86\xe0\x41\x29\x04\x03\x45\x69\x5a\xf3\xa3\x43\x11\x22\x84\x6e\xad\x7d\xf9\x46\x7d\x09\x8b\x82\x7e\xeb\xb0\x65\x92\x3a\x71\x6a\x7f\xed\xc0\x75\xb6\xd0\x13\x4f\x5b\x44\x06\x05\xfe\xda\xc1\x0f\x48\x41\xbf\x77\xd8\x79\xda\x9b\xd1\x9f\x1c\xb8\xad\x9c\xba\xec\x43\x6f\x46\xb9\xcb\xbe\x75\x20\x8e\x03\x0d\x5d\x16\xf5\x54\x88\xaa\xd8\x65\xa1\x5b\xdb\x66\x23\x97\xa1\xb7\xfa\x54\x6a\x81\x5f\xa5\x38\x76\x09\xa1\xbe\xdb\x76\xc1\xb4\x79\x34\xc2\x2e\xe0\xd2\x90\x34\xad\x5a\x75\xc4\x98\x99\x66\xa6\x45\x9a\x2d\xb1\x1d\x3d\x7c\xc0\x18\xc3\x9c\xe1\x8c\x71\x17\x67\x84\xd4\x0d\x5d\x06\x84\xe4\x39\x18\xfa\x48\x13\x8e\xa7\x4f\x45\xe6\x90\x65\xf5\x4c\x5b\x22\xd3\x70\x6b\x50\x37\x5a\x7a\xeb\xbc\x2d\x74\xa4\xdf\x87\x4f\x65\x79\x45\xdb\x1a\x65\x87\x44\x52\x3a\xe3\xf1\x63\xa0\x6c\xc6\x97\x4f\xed\x98\x6d\xd1\x88\x3d\xfc\x72\x74\x1e\x73\xe7\xc3\x08\x92\x9f\x7c\x29\x3f\x0f\x87\x43\x3b\x66\x4f\x69\xc4\x1e\x3d\x52\xdf\xf5\xe9\xbb\x6c\xd9\xca\xe0\xc4\xca\x61\xd8\x67\x59\x69\xf0\xa4\x95\x2c\xda\x76\x6f\xe4\x2a\x97\x27\x09\xf3\xeb\xe0\xb8\x84\x6c\x3f\x7c\x9a\xe7\xc9\x4e\x54\xeb\x89\x46\x97\xd2\x92\xca\xa7\xb1\x36\xd9\xb0\xb2\x42\x8c\xf3\x87\x14\xeb\xe9\xa2\x9d\xd0\xc5\xc8\x18\x44\x43\x44\xf2\x1c\x5e\x06\xe7\xf0\x2c\x1e\xad\xc1\xcd\x10\xc2\x8e\x68\x8d\x9e\xe3\x52\xb7\x65\x52\xd7\x04\xd0\xed\xe1\x78\x60\xc3\x3e\x57\x37\x6c\xaf\xb3\x70\xae\x6b\x9a\x38\x72\xc7\x4d\xd1\x29\x76\xa5\x1d\xec\x81\x72\xba\x22\xd8\x55\x62\x6b\x60\x3b\x6c\x81\x43\x42\xc6\x5f\x39\x40\x79\x43\x17\xfb\x2e\x84\x4a\x0a\xa9\xeb\x12\x1b\x5e\x0a\x9a\xb8\xcc\x19\x7f\xef\xe0\xd0\x25\x36\x7a\xb3\xfb\xc3\xd9\x77\xbb\xaf\x4f\xf6\xe8\x9b\xfd\xb7\xea\xe9\xad\xf3\x96\xbe\xdd\x7b\xb5\x7b\xbc\xff\xdd\xde\xd9\xfe\xdb\x97\xfb\x6f\xf7\x8f\x7f\xa4\xef\x0e\x8e\xf6\x9b\x29\x7b\xef\x8e\xf6\x5f\x1f\xbc\x85\xd0\xf8\xa1\x9f\x72\xea\x27\xfb\x61\xca\x2f\x78\x4c\xfd\x44\x54\xe2\x27\x47\xce\x8c\xeb\x34\xd1\xd4\xd1\xee\x4b\x51\xc1\xf1\xde\xab\xbd\x43\x68\xb1\x91\x00\x53\xf2\x32\x88\x9c\x94\xea\xd9\xa9\xea\x44\x3a\x0e\x0b\x45\x84\x66\x62\xea\x13\x57\xe3\x7e\xe6\x8e\x32\x81\x04\xd7\x38\x74\xa9\xe3\xb2\xc4\x9d\x64\xee\x94\x98\x66\xe7\x1a\xbb\x22\x85\x98\x66\xea\xca\x47\xfa\x93\x23\x73\x11\x32\x72\x6b\x8b\x94\xc5\x2e\x8d\xdd\x86\xec\xe9\xba\x94\xa7\x38\xa2\x25\x32\xb8\x2a\xa4\x4f\xe0\xae\x5f\xc2\x78\x5f\x92\x31\x54\x93\x34\xa4\xb5\xbf\x90\xa0\x2c\x86\x2e\xc0\x6b\xbb\x7f\x11\x46\x31\x7f\xee\x48\x77\xcd\x16\x43\x3e\x24\xcf\xb3\x20\xf5\x03\x3f\xd4\xa9\x73\x48\xf5\xa2\x74\x37\xd0\xe5\x13\x48\xca\x42\xdf\x8d\x3c\x9d\x2d\x83\xb4\x24\xf5\xdd\x0f\xb7\x2a\xe9\x56\xb0\x1b\x35\x4f\xb1\x33\xb7\x61\xf1\xa1\xb6\x5d\xb0\xbd\x15\xa0\x2f\x5c\xea\xb9\xf4\xd2\x65\xcb\x93\xb7\x47\x27\xef\xde\x41\xb4\x8e\xb3\x1f\xed\x75\xe3\xee\x94\xcd\x5c\x8c\x1c\x44\x45\x13\x55\x1f\x03\x27\x49\xf7\x05\x91\x66\x5b\x54\xb9\x88\xea\xf1\x1b\x2e\xb2\x9e\xbb\x1e\x02\x73\xf4\x67\x87\x07\xdf\xec\xbd\x3d\x7b\xbe\x7b\xb8\x77\xbc\xb1\xe6\xbf\xc6\x88\xa2\x8b\x4f\xac\x3b\x49\x63\x24\xef\xc2\x5d\xb9\x8a\x94\xd4\xa3\x52\xdf\x70\x97\xce\xdd\xcd\x76\x42\xb7\x2e\xbb\x72\xe9\x85\xcb\xf0\xc2\x65\x7d\xa7\x4f\x3d\x97\xf5\xcf\xbf\xe8\x5f\xd0\x2b\xe5\xeb\x68\xe1\x52\xe4\x20\x52\xbe\x7b\xea\x7d\xd0\x61\x6c\xe1\x56\x90\xe5\xb9\x48\xf1\x6a\x29\x84\x9e\xbb\xec\xd2\xed\x35\xc6\x33\xcf\x2f\xdd\x5e\x7d\x18\xe8\xb5\xcb\x4a\x45\x50\x1f\x93\xf1\xb8\xaf\xba\x86\xc8\x64\x38\x1d\xe1\x0b\x37\xcf\xaf\xdd\x3c\x3f\x17\xe8\x8b\x6f\xef\x20\x16\xd2\x46\xdf\x61\xe7\xae\x69\xfa\x0a\x19\xa8\xcb\x02\x05\xb9\x4f\xa8\xd8\x1a\xa5\x5b\x4a\x9a\xb1\x01\x0d\xaa\xf8\x7b\x82\xe5\x06\x03\x66\xec\x32\xb7\x24\x90\xe8\x16\x01\x85\xac\x82\x1b\x5d\x20\x01\x85\xab\xd0\x38\xa8\x8c\x5d\xd5\xbe\xec\xd7\xfb\x5f\x7b\x01\x55\x78\xc7\xaf\xf0\x3b\xcf\xfd\x3a\xb2\xa3\x53\x19\x66\x64\x52\x2b\xd3\x1d\x42\x8c\x8a\x84\x21\x3c\xb6\x0d\x64\x25\x16\x22\x88\x06\x0c\x19\xc8\x0a\x68\x66\x59\x84\x4a\x6f\x9e\x25\x6f\x81\xc7\xb6\xce\x26\x28\xeb\xb5\x2b\x09\x7e\x3d\x0b\x7c\xbf\x87\xc7\x9d\xd3\xd3\x44\x65\xbb\x70\xe1\x52\x62\x03\xf4\x98\xe9\x09\x77\xc6\xa1\xed\xd3\x80\x50\x67\x1c\x8f\x71\xdc\xf3\xc3\x45\x96\x32\xf5\x57\xf5\x3a\x23\x34\x9e\x0c\xa6\x4c\xfc\xd4\x92\xe4\xb0\xd5\x2b\xae\x0f\x89\x25\xb3\x2b\xbb\x64\xbb\xf6\x85\x0d\x6c\x01\x53\x0c\xe1\x45\xaa\x54\x5f\xed\x23\x63\x55\xb1\x55\x2b\x6f\x73\xd9\xdd\xd8\x34\xcb\xab\xe1\x43\xd3\x9c\xab\x4e\xc4\xe0\x5a\x8d\xae\x5e\x32\x8f\xd8\x70\x14\xad\x45\xe0\xed\x6e\x8d\x22\xcb\x22\xa5\x0a\xb2\xd2\x86\x46\x53\xd3\xc4\xf1\x24\x9a\x32\xed\x41\x51\xc8\x5d\xea\x0a\xc6\x91\xcb\x6e\xdd\x86\x27\x47\x39\xe8\xeb\xae\x1c\xfb\x3d\x89\xe3\x1d\xc6\x8e\xdc\x82\x2e\xc5\xb3\x7d\xe4\xaa\x7a\x0e\xdc\xbb\xb9\xbf\x1a\x47\x4c\xfd\x06\x0f\x48\x1d\xe6\xa6\x38\x24\xd4\x15\x63\xae\xcc\x4f\x15\x7e\x6f\x4b\x0b\x65\x77\x9c\x8e\x11\x52\x72\x81\x8d\xe3\x26\xaf\xe0\x10\xa2\x8d\x8e\xe3\x9d\x47\x8f\x1f\x0c\xbf\xcc\x73\xc7\x12\xcb\xc2\xcd\x73\x1c\xad\x64\xb6\x86\x22\xfb\xe3\x07\x5b\x83\x3c\x8f\x76\x1e\x3d\x79\xf0\xf0\xc1\x38\x1d\xfb\xda\xea\xd9\x21\x76\x6c\x8b\x77\x89\x10\x0e\x75\xac\x2d\x62\x47\x5d\x28\x61\xe1\xb8\x0b\x2d\x6d\x6f\x0f\x07\xc4\x02\x1b\xe5\xa2\xa0\xbb\x2e\x5b\xba\x50\xbd\x7d\xe0\xe2\xce\x90\x50\x59\x19\xbc\x0d\x48\x41\xf7\x5c\xb6\xeb\xaa\x16\xe8\x8d\xab\x65\xba\x33\x77\x45\xa6\x93\xc3\x52\x13\xea\x46\xcf\x1c\x65\x5c\x44\x91\xf6\x96\xd8\x50\xec\xde\xb8\x0d\x89\x6e\xb5\x02\x2a\xb9\x4e\xbb\x5c\xf0\x5a\xae\x6b\x17\xe8\x28\x67\x67\xae\xa2\x85\x21\x78\x2e\x80\xa6\x85\x8c\x02\xe5\xf4\xbc\xc4\x3b\x4c\x9f\x7c\x8e\xdb\x65\x36\x1b\xa7\x6c\xcf\x05\xad\x11\x55\x85\xad\xd2\x9c\x5f\xcb\x79\x69\x29\x8b\x95\x4e\xdd\xdf\xbb\x2b\xde\x41\x9e\xbb\xab\x2a\x68\x49\x73\xfa\xbd\x7e\x45\x69\x04\x2a\xae\x53\xf5\xc9\xb4\x46\xcb\xe3\x28\x5b\x24\x6c\xe9\xd8\xe8\x09\x2a\x84\xc4\x84\x9e\x88\xad\x0b\xa1\x72\xdb\x4c\x29\xba\xb7\xed\xec\x48\x9a\xf7\xc1\x65\xe8\xde\x00\x31\xc6\x90\x53\x65\xe9\xf7\xfa\x54\x24\x13\xfa\x4e\xc2\xa9\x3e\x20\x42\x8f\x5d\xd6\xe9\xf4\x7b\xfd\xc9\x3b\x77\x6a\x9a\x48\x94\x54\x6f\x92\xea\x42\xa9\xc3\x4d\x9d\xc1\x63\x9b\xf4\x41\x8a\x16\x5d\x19\xad\xf7\xa8\xbc\x8c\xa7\x6c\x31\x81\x66\x94\x57\x14\x75\xf8\x06\xe4\x9c\x6b\x56\xab\xf4\xf3\x62\x6c\x81\xd8\xa8\x63\x6d\x23\x07\xc1\x4d\x92\xc1\x34\xcf\xd1\xb9\x7c\x1e\xc2\x29\xc0\x6b\xb7\xe5\x3e\xb8\xb4\x6b\xfe\x16\xf4\xe7\x6b\x87\x01\xca\x47\x4f\x79\x34\x02\xb6\xbe\xeb\x40\x3f\x29\xe8\x93\x0e\x43\x68\x92\x4e\x65\x18\x0a\xea\x32\xc7\x34\x5b\x2b\x03\x4d\x6b\xdf\xd1\x73\x8b\xa0\x33\xca\x3f\x02\xc6\x21\x5b\x16\x64\xc5\xf5\x88\x0c\xef\xa6\x13\x26\xef\xdd\x36\x10\x42\x91\x6d\x16\x38\x17\x09\x43\x88\x86\x02\x4e\x31\x3b\xd1\x94\xd0\x70\xe3\x58\xb3\xce\x80\x4a\xcd\xbd\x28\x00\xfe\x96\x3a\x5c\x20\xaa\x3f\xc3\x1d\x27\xcf\x3b\x6e\x9e\x97\x18\xa0\x40\xec\x3c\x77\xf3\xbc\xf3\xc1\xcd\xf3\x63\x97\xe4\x79\x03\xfe\xce\x61\x79\x3f\x49\x36\x4e\x33\x16\x0a\x16\x55\x8c\x4c\x53\x55\xb3\x12\x3a\x5a\xf2\x44\x4c\x6c\xbc\x63\x31\x72\xd1\x58\xdd\x58\xd7\xd7\xb8\x13\x6d\x82\x2d\x26\xad\xb0\x57\xbe\x96\x2a\x5c\x5e\xff\x0a\x1a\x90\xe5\xe1\xde\xbb\xd7\xbb\xcf\xf7\xce\xbe\xd9\xdb\x7b\x77\x74\x76\x6f\x60\x7f\x70\xe9\xe1\xde\xab\xbd\x1f\xde\x9d\xe9\x4f\x47\x27\xcf\x8e\x8e\xf7\x8f\x4f\x8e\xf7\x8e\xce\x4e\xde\xbe\xd8\x7b\xb9\xff\x76\xef\xc5\xd9\xf3\xdd\x77\xc7\x27\x87\x7b\xf6\xb1\x5b\x08\x96\x22\x13\xb4\x6a\xc6\x32\xc1\xfd\xf0\x14\xaf\xf2\x6e\x34\x15\xc4\x98\xa7\x78\x95\xdb\xa3\x11\xdd\x62\x8c\xb7\x87\xc8\x9c\x69\xa3\x6c\x75\x5d\xbe\x68\x3b\xde\x69\x64\x22\x05\x29\x62\xd3\x7c\xb7\xd6\x8e\x18\x6e\x94\x5c\x3a\x73\x44\x61\x4b\x7e\x5b\xdf\x92\xf7\x57\x51\xbf\x1a\x79\x0b\x87\xe3\xb7\x92\x09\xd7\x44\x7b\x48\x0a\x7a\xe2\xb2\xd6\xbb\xce\x72\xfd\xb6\x5b\xed\xd6\xc3\x1d\x4a\x88\x39\x69\x37\x88\x59\x57\xda\xcb\xee\x18\xa2\x76\x43\x7a\xa1\x37\x24\x84\xdc\x33\x92\x48\xa4\x88\x7d\x3f\x02\x03\xc0\xf4\xd2\x09\x0d\x47\x5b\x37\x18\x51\x0c\x51\x5d\x2b\xce\x3c\x06\x03\x5c\x45\xe6\x05\x43\x8c\xd3\x16\x4f\xa6\xf2\xfb\x67\xd0\x22\x78\x05\xf6\x8c\x48\x48\xb9\x70\xe3\x2f\xf5\xcf\x03\x6e\xc4\xdc\xe5\xfe\x15\x8f\xab\xaa\x8f\xdc\xaa\x6b\xc5\xe8\xb5\x8b\xd1\x5c\x06\xea\x19\xae\xe2\x77\x79\xa1\x70\x5d\x41\x74\xa5\x28\x90\x3c\x40\x14\xc8\xa1\x08\x3f\x9f\xa4\xd3\xb5\x63\xd8\x78\x1c\x97\xc8\x4f\xec\x1a\xd7\xc8\x89\xd8\x70\x14\xe5\x0b\x85\xb0\xb1\xca\x83\xc7\x2c\x84\x58\x87\xf2\xbe\xb3\x3f\xc3\xb1\xf4\x7c\x51\xde\x7a\x93\x4e\x4e\xe4\x1e\xf8\x5e\x06\x8a\xd3\x94\x54\x17\xe9\x44\x8a\xbf\xd3\xa5\x4e\x5c\x1c\x51\x5f\x9b\x9a\x44\x5a\xe4\x1b\x45\x75\x4e\xb1\x34\x23\x72\x29\xf8\xb8\xc9\xd8\x60\xa4\x4e\x6c\xb0\xcb\x54\x15\x44\xdd\x21\x2c\xf9\x75\x77\x32\x98\x92\x51\x32\xc9\xa6\x2c\xa0\x40\x62\x84\x74\x59\xaf\x78\xdf\xc5\x3e\xcd\xd2\x7a\x1a\xa1\x0e\x21\x82\xef\xd6\x47\x0f\x82\x39\xcc\xc6\xa2\x35\x3b\x29\xa6\x9a\xf0\xde\x73\x57\x4f\x62\x5e\xb8\x2d\xee\xb1\xdf\xb8\xec\x3b\x47\x8e\x4b\x52\x76\xe2\xa5\x6b\xf8\xa1\xb1\x50\xf8\xfd\xb3\xcb\xa2\xc9\x4b\x77\x4a\x9f\xb9\xec\x67\xd7\x34\x7f\xae\x09\xea\x62\xc4\x9e\xb9\xa0\xc1\x7a\xe6\x4e\xee\xb9\xd3\x0e\x63\x6f\x5c\x88\x3e\xf6\x0e\x3f\x73\xe9\x3d\x97\xbe\x71\x6b\x37\x05\x65\x26\xf6\xc6\x2d\x64\x89\x17\xee\x34\xcf\x21\xe7\x0b\x97\xbe\x74\x09\x5d\x84\xa2\xa9\xf2\xe6\xe8\x2b\x80\xe4\x3b\x87\xc8\xec\xaf\xa0\x81\xef\x1c\xf1\x50\x35\xf2\xca\xa5\x2a\xa9\xd1\xd0\x2b\x77\xaa\xb2\x16\x05\x08\xd7\xbf\xac\x0d\xc9\x77\x1b\xe8\xb7\xc0\xba\x93\xc3\xd7\x18\x9d\x8f\x1d\x36\x34\xcf\xd9\x96\xe9\xb2\x07\x2a\x00\x90\xdd\xef\x3b\x48\xaa\xc8\x93\x5a\xfc\x38\x1a\x36\x94\x0d\x3a\x28\x38\x43\xee\xe7\x5b\x03\x0f\xd1\xd6\x88\x22\xca\xe9\x0b\xf8\xe6\xc4\xe8\x1c\x11\x1a\x5a\x2c\xb6\x52\x41\x54\x3b\x1c\xcc\xc0\xf2\xbc\x6c\xb5\x0f\x55\x01\x48\x02\x1c\x38\x6d\xbf\x8c\xf9\x2c\xcf\x11\xbc\x41\xf8\x10\x8c\x5c\x24\x28\x95\xc3\xc0\xfc\x58\xaf\x17\xd9\xa3\x46\xc0\x3b\x24\x6a\x42\x84\xe4\x79\x87\x4f\x7e\x11\x33\xa1\x98\x09\xdd\x7b\x08\x77\x24\x1a\xfe\xcb\x39\x22\xf5\x48\xcc\xe7\xb5\x6c\x8d\x2a\x5b\x9b\x71\xd8\xb9\x90\x5e\x01\x36\x07\x60\xbb\x09\xbb\x5d\x3e\x74\x6e\xcf\xdd\xb5\xf6\xec\x7e\xff\xdf\xff\xed\x3f\xff\x5f\xff\xfe\x9f\xfe\xfd\xdf\x10\x01\xdf\xab\x79\x8e\x3e\xfb\xfc\xc5\xe0\xf3\x67\xc3\xb6\xcc\xce\x67\xff\xf9\xff\x14\x19\x9d\x04\x98\xa1\xa1\x0b\x23\x11\x8a\x46\xda\xb2\xdf\x20\x65\xd4\x21\xeb\x06\xff\x63\x65\x80\x21\x69\xbf\x43\x7f\x28\x13\xa4\x89\x75\x69\xe0\xfe\xa3\xcb\x3a\x5f\xb9\x79\xde\x44\x19\x7f\x86\x1d\xd3\x1c\x76\x18\xfb\xca\xc5\xcb\x73\x7b\x58\xd0\xaf\x5c\xfc\x83\x8b\x97\x05\x15\xac\xe2\xb2\xe9\xbe\x62\xc5\xef\xc3\x0f\x8a\xe1\x47\xe7\x48\xb3\xd1\x0f\x1a\x0e\x2f\x04\x33\x2d\x08\xfb\xb9\xbd\x55\x10\xd2\x3b\xaf\x9c\xcc\x49\x5c\x5d\x16\x94\x03\xdb\xa4\xee\xca\xe2\x4a\x63\x33\x09\xa7\xec\x09\x05\xcd\x0f\x9f\x5d\x5c\xfa\xef\x3f\x04\xf3\x30\x5a\xfc\x1c\x27\x69\xa9\xc1\x43\x1b\x2c\x4c\x20\xa6\x0a\x8c\xcf\x93\x0e\x74\xac\xa0\x29\x99\x84\x80\x24\x6d\xf5\x75\xd8\x49\x8a\x65\x3e\x5e\x5e\x2c\x01\xde\x7b\xbc\xe9\x9e\xbd\xb4\xe2\x88\xd7\x14\xb2\x34\x62\x43\xea\xb3\xeb\xb4\x37\xa3\x2e\xcb\x7a\xb3\x51\xbc\x13\x8d\xca\x3d\x21\xa1\x01\xab\xbb\xd2\x8d\x2c\x6b\x4a\xc0\xd5\xda\x49\x8a\x83\x2a\x72\x14\x0e\x08\xb1\x21\x89\x2e\xd8\x4c\xd7\xed\xb1\xc1\x68\xb1\xe3\x8d\x48\xc2\x66\x13\xcf\xb2\xa6\x54\x30\x60\x8a\xcc\x05\x14\x62\xba\x86\x93\x64\xca\x82\x49\x52\xbf\xb4\x6f\x7f\xe5\xd2\x6f\x3e\x72\x46\xa0\x7a\x94\xb4\xb9\xb0\x11\x93\x3c\x16\x3f\xb6\x3c\x8a\xca\xd6\xbb\x1d\xb0\xac\x3d\x44\x02\x9d\x55\xca\xa9\x80\x2e\xd8\x61\x84\x5d\x02\x3d\xf1\x67\x78\x66\x9a\x38\x60\x3e\xc7\x01\xcd\x76\xb6\x6a\xc5\xb7\xca\xe2\x5b\xe5\xf5\x9e\x45\x9e\x27\x4c\x5e\x14\x33\xcd\x77\x11\x5e\x10\x18\x56\xa9\x9d\x49\x30\x67\x59\x8a\xb5\x26\x97\x90\x11\xdf\xf1\x46\x9e\x65\x11\x87\xcd\xc6\x01\x76\x27\xde\x94\x7a\xc4\x86\xbf\x41\x88\x43\xea\x51\x47\x9d\x84\x8a\x5a\x7c\x86\x23\xb6\x50\x4e\xe2\x08\x81\x03\x65\xa5\x1b\x4a\x46\x1d\x29\xe5\x83\x0f\x2e\xed\x9d\x5c\x57\xfd\x3a\xc2\x11\x0d\xe8\x44\x11\x68\xea\x4d\x05\x4f\x67\xeb\xd7\xaa\x29\x3d\x1b\x0a\x42\xe6\xd1\xb0\xa0\x5f\xbb\xac\x3f\xf9\xeb\xe9\xa0\x7b\x9a\x0d\x06\x4f\xf6\xa6\x7d\xfa\xad\x48\xe9\x9d\x66\x0f\x06\x83\xad\xd3\xec\xe5\xcb\xc1\x9e\xf8\x7d\x3c\x9c\xf6\x2f\xe8\xf7\x2e\x43\x07\x57\x3c\x9e\x05\xd1\xb5\x6d\x80\xfa\xc8\x08\x39\xf7\x12\xe3\xda\xf7\x78\x6c\xf8\x52\xc3\x0d\x57\x44\xb4\x0f\x49\xfa\x93\xcb\xde\x38\xe9\x65\x6f\x16\x44\x51\x4c\xd3\x44\xab\x32\x67\x71\x34\x7f\xae\x74\x11\x94\x27\xad\x6e\x7a\xac\xad\x2d\xeb\xc9\xa3\x2f\x70\xba\xbd\xf5\x98\x14\x34\x4c\x36\x98\xc7\x48\x1e\x22\x65\xe1\xf8\x27\x17\xa7\xfd\x27\x83\x01\xb1\xd3\x9d\x9d\x21\x4d\x2d\x06\x29\x9c\x8c\xd2\x9d\x87\x8f\x1e\x8d\x62\x8b\x3d\x78\x4c\x52\x99\xfa\xe0\x51\x39\x2c\x3f\xb9\x38\xb6\x1e\x3c\xfe\x22\xed\xe3\xd4\x7a\xf0\x54\x70\x48\x71\xd2\x8e\xb1\xd2\x33\x01\x4e\xef\xf2\x64\x3d\x80\x13\x5f\xa5\xc0\x09\xb7\xe3\x51\x15\x02\xa0\xa6\x7f\x09\x2d\x0b\xf8\xa6\x68\x87\x81\x26\xc5\x34\xa3\x6d\x06\x4a\x1b\xd3\x0c\xb7\x63\x7d\xc1\x74\xbd\x0c\x28\x60\x18\xc3\x8f\x1f\x3e\x1a\x6e\x99\x3e\x19\xab\xab\xac\xea\x8a\x78\x44\xa4\x4e\x46\xbe\xf9\x4a\x39\x03\x36\x74\x90\x2d\x22\x34\xec\x76\xf5\xb5\x57\x9d\x56\x5d\xf7\x05\xff\xd8\x6a\x61\xf9\x6c\xb8\xf5\x54\xb9\x80\x79\xb2\x05\xe3\x2c\x3d\x8a\x94\xdd\xe3\x96\x45\x70\xc8\xd2\x09\x9f\x92\xed\xe1\xd6\xd3\xd2\x2b\x43\x9a\x08\x56\x53\x86\x9e\x61\x5a\xa7\x47\x33\x26\x99\xa5\xa4\xcc\x87\xba\x88\x8c\xb2\xed\xa8\x64\xf1\xb6\x86\x0f\x9f\x3c\x7c\xfa\xe0\xf1\xc3\x27\x1f\x6b\x6f\x87\xf9\x62\xa8\x02\x58\xc7\xea\xea\xf1\x8c\x65\xd6\x50\x0c\x6b\xd0\xf5\x77\x7e\x72\x31\xae\xaa\xeb\x3a\xa4\x3f\xd3\xfc\xfd\xa1\x13\x5e\x28\x06\xff\x7b\x57\x1a\xb3\x3b\x16\x13\xa5\xc8\x17\x33\xea\xb3\x80\xb6\x34\x2c\x28\x56\xd9\x59\xdf\x34\x2d\xcb\xd9\xa9\xea\x6f\xaf\xd9\x9f\xe1\x90\x31\xbf\x42\x92\x05\x73\xa8\xc7\x1e\x3c\x1e\x8d\x3c\x40\x47\x79\xc7\x91\x79\xdb\xcc\x1d\x0f\x6d\x6f\x87\xb9\xd6\xd6\xe3\xf1\xd6\x63\xdb\xeb\x82\xfc\xb4\xd8\xbe\x24\xf2\x58\x51\x64\xbc\x62\x8b\xee\x25\x9d\xb3\x07\x8f\xbb\x97\xa3\x6a\xa8\x79\x82\x2f\xad\xab\xcf\xe7\x84\x88\x3d\xfb\x27\x17\x5f\xf5\xe7\xa4\x68\x7c\x5f\x10\xd0\x37\x84\x09\x76\xe8\x8c\x66\x8c\x81\x9b\xb2\x01\xb5\xac\xac\x28\x2c\xcb\xa1\x96\xe5\x17\x25\xc3\x5f\x92\x21\x1a\xb5\xac\x04\x19\xf5\x61\xd4\x1e\x37\x8b\xaf\x89\x50\x75\xe3\xaa\xf5\x80\x10\xa5\x09\x17\x2f\x83\x60\x14\xd4\x4f\x1a\x6e\x6a\x1d\xf9\xaa\xa2\xfa\x23\x42\xdd\x64\x95\x25\x4d\x12\xad\x4d\xcc\x92\x15\x6d\xe2\x0a\x63\x85\x08\x0d\x3e\x92\xa5\x66\x4d\x32\x4b\x98\xf4\x0d\xb2\x48\xe4\xfe\x8f\x1f\x12\xea\xb5\x6e\x59\x8b\x64\x92\x76\x87\xd3\x3c\xc7\xea\xa9\x34\x1b\xc0\x78\x6c\x7f\x3e\x39\x3d\xf5\x94\xc3\x10\xb2\x44\x56\x6a\xa1\x82\x20\x8a\x2e\x7c\x24\x7a\x7c\x99\x6c\x70\x35\xdc\xe6\x44\x24\xad\x85\x17\xa9\x5f\x6e\x6e\x9b\xab\xca\xc7\xc9\x2c\x01\x07\x27\x34\x64\x0f\x3f\xe2\xa4\x84\xd7\x24\x02\xf0\xe7\x12\x8e\x08\x67\xe5\xc1\x13\xf6\x12\x2c\x36\x11\x7a\x59\x73\x8f\x55\x14\x74\x9e\xb0\xfe\xa4\x73\x1f\x93\xff\x38\xcd\xe5\xfd\xf5\xdb\x84\x2d\x51\x07\xd9\xe8\xf3\xad\x21\xa2\xe8\x3e\x3c\x3d\x41\x14\x61\x78\x7a\x8a\x28\x22\xf0\xf4\x25\xa2\xe8\x3f\x8a\xa7\x27\x7b\x88\xa2\xcf\xb7\x06\xc8\x46\x16\x2a\xe8\x45\xeb\x48\xdf\x82\xc5\x2e\x3d\x6f\xfd\x28\x2f\x75\xac\x8c\x57\x09\xfa\x3c\xa1\x17\x09\x29\xe8\x75\xb2\xee\x44\x9a\x97\xbc\x12\x30\x27\x8c\x6b\x66\xcf\x44\x44\xf9\x21\x89\xca\x30\x85\x38\x64\xd1\xc4\x17\x3c\x94\x4a\x92\x71\xd2\x75\x11\x06\x67\x9a\xd2\x7f\xce\x07\x7e\x6b\x5f\x25\x38\x2e\xa3\x18\x6a\xa7\x83\x22\x4d\x2e\x35\x86\x64\x10\x37\x7a\xb4\x82\x07\x97\x7e\xa2\x0d\xd4\x34\xf5\x1e\xd0\xeb\x04\xd7\x3f\x80\xb7\xa2\x83\x96\x0e\xa5\xdb\xeb\xab\x11\xbd\x8d\x52\x83\x87\x51\x76\x71\x59\x05\x70\x12\x2b\x7d\x37\x61\x27\xce\xaa\x4b\xba\x24\x69\xe8\xd5\x37\xad\x13\xaa\x57\xa2\x1d\x25\x38\x4b\xc4\x80\x2b\xd8\x48\xdd\x72\x0a\x55\x05\xd6\x85\xc7\x20\xa9\x19\x51\x81\xe5\x54\xc8\xd2\x9e\xae\x18\xb8\x22\x2c\x9d\x77\x49\x75\x44\xc9\xd4\x28\xdf\x9f\x2a\x9d\x69\x23\x29\xc6\xc7\x71\x4f\x0c\x7d\x65\x19\x05\x49\xda\x0c\x4a\x7c\xa3\xea\x75\x4a\x28\x78\x7f\xd8\x4b\xea\x0a\x50\xed\xe8\x72\x2f\xa1\xeb\x9b\xc8\x48\x9d\x14\xac\x19\xbb\xac\x1b\xea\x37\x2d\xf2\x15\x73\x19\xc8\x03\xcf\x99\xba\x0d\x96\x24\x38\xd8\x30\xca\xa8\x34\xbc\x9b\xd1\x6c\xe1\x39\x29\x3f\x39\x7c\x5d\x97\x85\x0a\x95\x5c\x2f\x64\x1f\x25\x85\x36\xc4\xef\x30\x96\x11\x7f\x86\x6f\x71\x46\x48\xab\x4e\x0e\xa7\x62\x4f\xcf\x88\x66\x6b\xc1\x4b\xb4\xf4\x64\xaf\x18\x52\x60\x44\xb5\x47\xb7\x32\x4c\x0e\x90\x44\x30\x6d\xc1\x11\x8b\x12\xfc\x1e\xab\x01\x25\xaa\x18\x69\xb2\xae\x79\x8e\xdd\x55\x76\x36\xcf\x3b\x65\x8a\xd4\x3b\xad\xa1\xec\xde\xcd\x02\x22\x85\x1a\x09\xff\x39\xe3\xa1\xcb\x8d\x6b\x3f\xbd\x34\xe4\xf8\x1a\x5b\x88\x8c\x66\xb5\xa5\xa6\xf4\x32\x16\x42\x6a\x9d\xb9\x65\x42\xa1\x18\x1f\x60\x42\x0c\x3f\x34\x32\x72\x8d\x33\x9a\x10\xd3\xac\xd7\x90\xa8\x82\xd9\x24\x99\x42\x29\xc9\xac\x5f\x27\x78\x46\xd7\x0d\x98\xc6\x68\x2c\x70\x2b\xd3\x47\x67\x03\x32\xd6\x86\x3e\x43\x62\x67\x76\x66\x01\x25\xbd\x49\xd8\x5e\x52\x53\x01\xed\x45\xf8\x26\xa1\x4b\x19\x0d\x63\xc5\xb1\xc5\x41\x82\xd7\xc4\x9c\x2d\x7d\x61\x39\x53\x0b\x65\x14\x96\x3b\x43\x05\x7a\x5a\x75\x5b\x76\x98\x86\xbd\x12\x69\x30\x29\xa8\x54\x9a\x34\x14\xc8\x6d\xad\x0d\xab\x2b\x7e\xbc\x6c\x11\x0e\xc3\xf4\xa6\x13\x33\x68\x6b\xc5\x51\x17\x09\x27\x11\x58\xec\x33\xc6\xe2\xb1\xdc\x0e\x5d\x8e\x23\x3a\x24\x76\x64\x59\x23\xde\x84\xa6\x21\xd5\xff\x1e\x50\x4a\x30\x42\x09\xc6\x8a\x1b\xb5\x58\x9a\x53\xf1\x49\xac\x81\xa9\x5c\xf0\x88\xb4\xe6\x16\x02\x87\x1b\x17\x3c\xdd\x5d\xf1\xa8\xf8\x37\x40\x53\xba\x30\x2b\x41\x8a\x2c\x8b\xf0\x6a\x70\xc2\x92\x07\x86\x44\xb9\x6a\x2a\xd5\x34\xbd\x74\x92\x3f\x65\x64\xd4\xb0\x58\xd6\xea\xc0\x74\x06\xda\x3c\x75\x58\xd0\xa4\x31\x2f\x9b\x50\xb2\xd6\xbe\x10\x8e\x4a\x34\x89\x58\x5c\x42\xe1\xb3\xce\x90\x3a\x12\x14\x97\xc1\xaa\x94\x77\x46\x4b\x52\x9a\x48\xa6\x3e\x9a\x24\x53\xa2\x60\x72\x4c\x13\xfb\xe3\x48\x63\x4f\xd2\xed\x0a\xfc\xc1\x10\x0a\x44\xef\xf3\x2e\x21\x23\x3f\xcf\xa3\xfa\xca\xd7\x0b\xbe\x20\x34\x6e\x22\x1a\xdc\x1d\x5e\x3f\xe7\xa5\x77\xc0\x1d\xa9\x45\x2c\x3b\x19\x55\xe4\x37\x64\x83\x51\xb8\x5d\x1e\xd2\x0b\xb1\x6c\x29\x85\x50\x7f\x12\x6a\xaf\x8b\x21\xc8\x0c\x42\xc2\x9b\x70\x18\xea\x1d\xb8\xac\x44\x96\x65\xaf\x38\x1d\xd0\x94\x48\xa3\xc1\x82\x4b\x94\x50\xbd\x49\x05\xf7\xde\x80\x5f\x29\x9b\xda\x1d\x0c\xd2\x70\x7d\xf6\x63\xe6\x73\xfc\xa9\xc1\x24\xe9\x03\xb2\xb6\x90\x63\x8c\x39\x0b\xa5\x9a\x48\x69\x14\x38\xd0\x4c\x79\xbe\x24\x0d\xc4\xdb\xed\xf7\x77\x15\xd7\xa0\x8c\x86\x0b\xaa\xec\xcb\x3f\x92\x5b\xdb\x15\x17\x15\xc1\xbb\xbb\x40\x65\x85\x5e\xac\xa8\x0b\x0b\x38\x64\xbb\x49\xa8\x9b\xd0\x9b\xa4\x62\x46\x64\x62\x2d\xe6\x62\x5b\xe4\x82\x94\xb6\xae\xa6\x75\x67\x8d\x24\x65\x72\x29\x69\x9f\x88\xe7\x09\x96\xb3\x0c\x0e\x51\xe0\x4d\x91\xc3\x8a\x5d\x91\x0c\x9f\x89\xc0\xa7\xef\x2a\xd0\x31\xc7\xad\xdc\xc6\x8a\xdb\x5d\xed\xcb\xf7\x3b\xb7\xa0\xcb\x95\xcc\xf6\x9e\xa0\xfc\xdf\xb9\xad\xb1\x9e\xfc\xa4\x35\xd9\x49\xf2\xfc\x8f\xfb\x0e\xae\x29\xf4\x58\xed\x68\x6a\x1d\xf5\x4c\x13\xdf\x62\xde\x08\xbb\x2e\xef\xc8\xcb\x7b\x82\xeb\xfd\x66\x8c\x1d\x45\xd2\x75\x18\x58\x88\xab\xc8\xb2\xe0\xb5\xd9\x49\xaa\x50\xb3\xf2\xc0\xcb\x49\x40\xa1\x8d\x91\x1b\x85\x29\x0f\xd3\xae\xbc\xc0\x93\xe7\xb1\x10\x0c\x57\x92\x29\x72\x16\x62\x1d\x42\x1c\xa6\xfe\x4d\xf7\xfa\xfa\xba\x3b\x8b\xe2\x79\x37\x8b\x03\x29\x42\x78\x23\x75\x3b\x9b\x9d\x1c\xbf\xec\x3e\x85\xb3\x8b\x57\x29\xe6\x74\x29\x80\xb5\x03\x3c\xa0\xd5\xa9\x1a\x55\x90\x40\x32\x38\x81\x25\x54\x2d\x66\x4e\x08\xf5\x93\xba\xc5\x42\x54\x06\x6f\x3d\x4b\xe8\xfb\x84\xb5\x4c\xa1\x20\x47\x47\xe0\xa2\x3c\x4b\x0a\xfa\x3c\x81\x53\x5a\x50\x03\xd1\x0f\x09\x8b\x7a\x27\x87\xaf\xe9\xbb\x84\xbd\x4f\x7a\x2b\x65\xe9\x31\xa4\xea\xe2\xf4\xb0\x14\x8c\x5f\xb7\x48\xbd\x88\xd0\xb7\x49\x5d\x49\xb7\xaf\xde\x16\xd1\x35\x3d\x11\xf2\xdc\x6e\xf7\x27\xa7\xfb\xcb\xb4\x4f\xef\x89\xb7\x53\xcf\xea\xf6\xca\xa4\x17\x42\x38\xf6\xfa\xf4\x4d\xc2\xfa\x7f\xc5\x83\x9b\x7c\xf0\x03\xe9\xd3\x97\xe2\x6d\x32\xe8\x3e\x99\x5a\xf7\xfa\xf4\x67\xf1\x76\xea\x89\xc7\x67\xf0\xe1\xd4\xdb\xed\xbe\x14\x82\xb0\x48\x7a\x05\x95\x66\x83\xc1\x60\x00\xbf\x5f\xc2\xef\x2e\xfc\xbe\x30\x3e\xfb\xbc\x6f\x8f\xff\x32\x39\x3d\x9d\x4e\xfb\xf4\x97\xbb\xb3\xd6\x72\x7e\x27\xdb\x81\xac\xa0\xdd\x1c\xbe\x34\xa6\x56\xbe\x96\x72\xaf\x7f\x41\xbf\x2a\x6b\x6d\xd4\x37\xed\x5f\xd0\x1f\x56\x25\xaa\x52\x32\x04\xd5\xc7\x04\x31\xc6\x2b\x9e\x4f\xc6\x11\x9f\xa2\x4e\x95\xa8\xf7\x89\xee\x50\x7b\x5c\x42\xfb\xe1\x95\x13\xf8\x9e\x71\x19\x25\x29\x82\x73\x53\x1c\xb2\x6f\x04\x26\x2b\x86\x91\x8a\xcc\x1b\xb2\xa7\x70\xf6\xc2\xc2\xd2\x90\x3d\xce\xc0\x81\xa1\xa0\xe8\x77\xe9\x2b\x57\x6e\xff\x97\xb2\xf0\xb7\x2e\x45\x3d\x44\xb4\xc8\xda\x43\xa4\xa6\x73\x8b\xea\xaa\x2f\x41\x9d\xf9\x94\x2a\x86\xe5\x6b\x57\x46\xd5\x09\xc9\x18\x8e\xa4\x90\x15\x27\x38\x24\x76\x15\x70\x56\x8b\xb5\x3d\x44\xc0\x11\xeb\xab\x44\x96\xe0\x9b\x07\x42\x39\x87\xc0\x21\xfb\x31\x11\xf9\x3e\x61\x08\x44\xc7\x7f\xf9\x48\xcd\x52\x9e\x01\x36\xe8\x1b\x57\x80\x22\xc9\x5c\x5c\xe7\xca\x42\x8b\xf1\x0c\x2c\x03\xe9\xb7\x09\xa9\xda\x28\xe8\x8f\x1b\xf4\xc0\x95\xc0\xc7\xd2\xfa\xf0\x09\x41\xae\x54\x07\x20\xc4\x58\x32\x29\xed\x12\x87\x53\xd3\x4c\x94\x13\x5c\xcc\x99\x4e\x27\x3b\x0f\x2b\xb7\xae\x12\xda\x8a\xd0\x00\x1f\x0b\x88\x85\x20\x82\x40\x02\x0e\x28\xcb\xec\xfe\x0c\xfb\x6c\x38\xa0\x51\x6d\x87\x45\x03\xa4\x1d\x4b\x00\x5e\x0a\x4e\x8a\xbd\x51\xa3\x14\x91\xf1\xf0\xb1\xfd\x94\x46\x25\x73\xf3\x94\x31\x7f\x3c\xb4\xb7\x08\x91\x27\xe9\x11\x71\xc4\xf4\x6b\xd7\x93\x78\x38\x10\x19\x7e\x4e\x6c\xc8\xf8\x32\xb1\x9f\x25\x44\xd7\x55\x01\xe2\xb0\xf2\x2a\x42\x44\x7d\x52\x84\x3a\x80\x00\xdc\x7d\xa8\x77\xc6\x9f\x61\x87\x85\x93\x58\x74\x91\xf1\xee\x50\x9e\x03\xee\xb0\xfd\x04\x6f\x3d\x7a\x4c\x1f\x75\xcb\x89\x94\x6c\xb9\x46\x75\x67\x67\xeb\xd1\xa3\xfa\x17\x18\x2b\x97\x85\x6a\x44\x65\x1b\x61\x9d\xff\x77\x2d\x68\xe8\x0b\x55\xf5\x83\x6e\x5c\x45\x91\x2f\xe8\x37\x1f\x9f\xda\xc9\x80\x36\xfe\x9f\x2a\xbb\x63\xb8\xcf\x3d\x63\x03\xba\x68\xbb\xa3\xa9\x87\x7e\x46\xe0\x22\x06\xb2\xe1\xbe\x8c\xda\x1f\x6c\x41\x73\x75\x8e\x72\x5b\x18\xcd\x2c\xb6\x45\x03\x66\xa9\xcb\x22\xa3\x05\x26\x52\xb8\x7e\x2a\x44\x77\x95\x49\x97\x87\xca\xe4\x42\x95\x9c\xe8\x43\xd3\x7c\xa6\x26\x58\x7c\x1b\x11\xce\x86\x8f\xbf\xe0\x95\xa3\x5d\x31\x40\xc3\xc7\x84\xce\x2c\x8b\x86\x96\x05\x35\xf5\x6a\x60\x0d\x2a\x29\x00\x8e\xc6\xba\x2c\xa4\xd9\xce\xe3\x12\x3a\x35\x87\x25\x54\x91\x1c\x82\x78\x67\xa0\x02\x7c\xe9\xda\x4c\x33\xde\x7e\x58\xeb\x95\x05\xee\x43\x5f\xd4\x80\xab\xd7\x39\x7a\xd1\x80\x1a\x7c\xa0\xb2\x26\xd0\xe5\x15\x6e\x16\x91\x88\xf9\x25\x62\x0e\x44\x82\xaa\x2a\x62\xc3\xc1\x17\x91\xe5\x17\x70\x9c\x52\xa1\x09\xb4\x0f\x56\x22\x5b\x8f\x1e\x7f\x21\x1e\xac\x88\x6e\x75\x98\x65\xc5\xa6\xf9\xb0\xc3\xe2\x3c\xcf\x24\x84\xe2\x45\x17\x92\xec\xf8\xea\xc4\x89\x91\xeb\x88\x17\x99\xab\x44\xcb\x2a\x69\x94\x4c\x32\xcb\x9a\x32\x5e\x6e\x4d\xca\x90\x25\xa8\x81\xa3\xe6\xb8\xa8\x7f\x95\xb7\x83\xb2\x6e\x40\x33\xf6\x64\x34\xe8\xb0\xcc\x34\x9d\x9d\xc1\x88\xb8\x4c\xc0\x4c\x93\x49\xd6\xed\x4e\x59\x32\x09\x2c\xa7\x3b\x14\xef\x81\xd5\xed\x3a\x53\xe5\x34\x4f\x40\xf1\xb4\x53\x61\x49\x75\x69\xf2\xeb\x8d\x18\x0e\x08\xb0\xea\x62\x30\xd5\x48\x25\x4f\xb1\x04\x5e\x81\x68\xc3\x7b\x59\x28\x15\x97\xe9\xe7\x5b\x8f\x1e\x13\x9a\xb2\xb7\x09\x4e\xfb\xe2\xb9\x0a\x8e\x50\xed\xf7\x2d\xa1\x93\xab\xba\x61\x23\x6e\x3f\x3c\x03\x94\x0a\xd9\x50\xd9\x3b\x89\x8d\x5a\x29\x5d\x9f\x8e\x7c\xcb\x22\xd2\x3b\xbc\x3f\x1d\xe3\x68\x27\x94\x81\x78\x68\xc8\x22\x52\xcb\x4f\x6c\x4d\x46\xc0\x1f\x2e\xf3\x09\xb5\xac\xa8\xf2\xc5\xdf\x2c\x07\x87\x5d\xaa\xab\x4f\xa1\xab\x91\x69\x82\x87\x30\x38\xaf\xc7\x11\xb8\x4f\xeb\x0c\x45\x0b\x8c\x85\x63\xcc\x2d\x16\x8e\x91\x2d\xfe\xb7\x11\x8d\x58\x47\x34\xc8\x2d\xc8\xdf\xf0\xa0\x4f\xc3\xed\x27\xea\x22\x8b\x8d\xaa\x30\x2e\x95\x97\xd2\x52\x69\x4f\xbf\x4d\xd8\xb2\xa0\xdf\x27\xec\x47\xb0\x01\xf8\x36\xa1\x4b\x64\x20\x7b\x48\xef\xa3\xfb\xf6\x90\xa2\x6d\xf1\x8c\x76\xe0\xf7\x3f\x20\x7b\x58\x10\xfa\x93\xce\xfc\xbd\xc8\xfc\x19\x7c\x1a\xc3\xef\x12\x7e\x0b\x99\x2d\xcd\x54\xb6\x9f\x44\xb6\x3e\x7c\xb2\xe1\x77\x04\xbf\x0c\x7e\xff\x02\xbf\x13\xf8\x3d\x3d\x85\x3f\x53\xf8\xfd\x2b\xfc\xe6\xb2\x2e\x9e\xb5\x9a\xf9\x3d\x4f\x70\x4a\x07\x95\x6c\xb3\xf3\x60\xcb\x34\xc3\xed\xe1\xd6\x13\xb8\xb6\xc4\x69\x4a\xc6\xa9\xdd\xaa\x90\x2f\x68\x98\xb1\xe5\x2c\x5d\xd8\x5b\x43\x0a\xb1\x65\x61\x12\xc1\xdc\xe4\xe9\x80\x4a\x13\x9a\x87\x0f\x1f\xd0\xeb\x44\xbc\x5f\x27\xf0\x56\xd0\x38\x6b\xd3\xf9\x5f\xe3\x30\xa3\x69\x2f\x71\x2f\xf9\x9c\x93\x82\x46\x6d\xb9\x10\xec\xbd\x35\x73\x1c\x78\x5f\x38\x49\x72\x1d\xc5\x5e\x41\xfd\xb6\x42\x9d\x54\x19\xd3\xa4\x3d\xd7\x09\xc3\x28\x7d\xc6\x77\x9f\x39\x89\x10\xcb\x55\x50\x5c\x81\xe5\xaa\xe5\x82\x3a\xad\x03\x55\x9a\x20\x57\xae\xdc\x4d\xf3\x44\x6d\x7e\x69\x8d\x87\x34\x4d\xb9\xed\xe0\xb0\x41\x25\xf2\xbc\xc3\x4d\x13\xe5\x48\xec\xd3\x05\x75\xb3\x8d\x91\xff\x8c\xb4\xc6\x0a\x38\x59\xe9\x62\x1d\x8c\x19\x4c\x13\xd7\x20\xc8\x73\xd4\x47\xf2\xaa\x65\xd9\x16\xdc\x9c\x14\x78\xc0\x20\xea\xa7\x54\x6c\x8a\x87\xcf\xe0\x81\x14\x34\x69\x69\x9b\x49\xb3\x2d\xd0\x0e\x2a\xfa\xdb\x09\xd7\x47\xc7\x34\x87\xa0\xe3\x70\x32\xcc\x27\x03\xb0\x55\xc8\x73\x2e\xe9\x77\x41\xb3\xd6\x29\xeb\x21\x19\xe7\x1f\x7d\xbe\x25\x6d\x8b\x9b\xac\x6c\x41\x83\x4c\xac\x9f\x19\xfc\x2e\xe0\xd7\x83\xdf\x4b\xf8\xbd\x82\xdf\x39\xfc\xde\xc2\xef\x05\xfc\x9e\xc3\xef\x35\xfc\x1e\xc1\xef\x01\xfc\xee\xc2\xef\x1e\xfc\xde\xc0\xef\x19\xfc\xbe\x87\xdf\xe7\xf0\xfb\x01\x7e\xdf\xc1\xef\x71\xb6\xc9\x56\xbc\x76\x20\x10\xe6\x79\x90\xd1\x80\x0d\xe8\x4c\xec\x7f\xca\x85\x41\x67\x48\x2f\x59\x67\x28\x59\xbe\x3c\xc7\x7a\x94\x44\x96\x0a\x4b\xe5\x9b\xc6\x51\xf9\x26\xb9\x53\xb1\x5a\x52\x08\x09\x5d\x3e\x3b\xe9\xa5\xd8\xbc\xd3\x1e\xb8\xb7\xd1\xc9\xb3\xd8\xb9\x10\xd2\xb6\x7e\x5f\x45\x63\x01\x49\xfd\x70\xef\xbb\x44\xde\x2b\xae\xa7\x7d\x05\x69\x34\x92\x3c\xf4\x28\xd8\x66\xd5\x41\x98\xbe\x46\xeb\xb3\x68\x12\x4c\x69\xa6\xee\xcf\x06\x99\xad\x7c\xaf\x76\x34\xa6\xfb\x92\x96\x86\xab\x9c\xba\xec\x38\x1a\x65\x6c\x91\x8d\x84\x90\xee\x87\x19\x2f\x66\x16\xf3\x9b\xb3\x4d\xc5\x68\xd7\x2f\xe1\xce\xa0\x0d\xdf\x34\xf1\xbd\xb2\x89\x3c\x47\x16\x62\xcc\xcf\x73\xd4\x55\x7f\x05\x12\xf9\x84\xac\x57\x58\xb2\x13\xc0\x57\xf9\x77\x43\x07\x93\x27\x40\x14\x53\x59\x81\x29\x8a\x08\x62\x23\x44\xb1\x0e\x83\x8d\x68\x46\x2a\xe4\x9f\x09\x22\x92\x41\x30\xce\xd2\x41\xab\x98\x34\xd2\xb6\x3e\xd4\x66\x43\x6a\xbc\x58\x89\x16\x33\x5a\x6a\xb0\xaf\x22\xdf\x93\x0d\x9a\x66\x98\x4d\x74\x96\xa9\xae\xdb\x34\x71\x0d\x33\x08\x91\xa0\xaf\x36\x37\xce\xd8\x6e\x66\xab\x6a\xe0\xe6\x95\x6a\xa9\x9e\xc3\x53\x39\xc6\x19\xbb\xcd\x6c\xd8\x30\xa2\x49\x60\x0d\xa7\x63\x9c\xb1\xcb\x8c\x06\x96\x45\x6c\xdc\x86\x54\x03\x85\x91\xca\xce\x03\x89\xd9\x7b\x9e\x91\xa2\x36\x7d\x0b\x89\x22\x71\x9e\xc7\x6b\x15\x98\x26\xfa\x0c\xe6\x64\xc3\x6c\x80\x95\x72\x6b\x21\x30\xb7\x28\x87\x4d\xf7\x4a\xaf\x8f\x58\x02\xa5\x34\xbb\xe5\x5a\x89\xe5\xdf\xfa\x72\x81\xb5\xd6\xd6\xaf\x8c\xbd\x53\x58\x58\x64\x4c\x8f\xaa\x6e\x67\xbc\x9b\xd9\x57\x15\x16\xcb\x8e\x7a\xd0\x51\xd4\x17\x1d\x82\x6d\xb7\xa3\x46\x91\x2c\x33\x56\xcb\x5d\x64\xec\x02\xc6\xb4\x8e\xe4\x97\xba\x30\x74\x2c\x63\xe7\x55\xe3\xef\x57\x1b\xba\x82\xbc\xeb\x9d\xf7\x19\x3b\x4b\x48\x6d\x5b\x89\xcb\xc7\xfa\xf6\x12\x97\x8f\x7a\x9b\x89\xe1\x8f\xde\x68\x62\xf8\xf3\x69\x43\x59\x32\xa7\x12\x72\x4d\x56\x7c\xd3\x94\x5a\x8b\x8c\xcd\xb3\x2a\xcf\x18\x7a\xf7\x8f\x01\x10\x96\xf1\x87\xac\x5a\xfc\x12\xd1\x96\x7f\x76\xeb\x72\x35\x80\xb4\xda\x98\xba\xe2\x1f\x3a\x2f\x2b\x28\x2e\x90\xb9\xbe\x26\xe7\x6a\x4d\xca\x2d\x4b\xa2\xac\x69\x8a\xb9\xd3\x1b\xa4\x4c\xfb\xfb\x0d\x57\x73\x2c\x04\x7e\x4b\xe9\x4a\xac\x85\xfa\x3a\xb8\x05\xc8\x60\x85\x34\x56\xd2\x4c\x33\x2f\x81\x35\x24\xa4\x5c\x0f\x2b\xab\xe8\xa2\xb6\x04\x6b\xfd\x81\xe5\x54\x36\x5e\xcb\x7f\x2e\xf3\xff\x45\xae\xba\x85\x69\xe2\x19\x43\x9f\x3f\x1c\x20\x6b\x46\x28\xf8\xde\x71\x04\x31\x9c\x55\x27\x60\x57\x6c\x30\xba\xaa\xa2\x30\x5d\x59\x96\x64\x05\xe6\xcc\x99\x5c\x4d\x4b\xe9\x7d\x9e\xe7\x97\xf2\xc3\x2d\xe3\x19\x9e\xd3\x34\x23\xa3\xcb\x71\x35\x6e\x16\xbb\xb5\xab\xb1\xb5\xd8\xad\x1c\x8e\x4b\xd6\x19\x14\x62\x23\x2f\x65\x4f\x58\xd4\x8a\x8b\xf3\x15\xb3\xe6\x2b\x5e\x6d\x7d\xbd\x89\xa9\x5b\x48\xa5\xd4\x6c\x75\x53\x75\xb2\xf4\x32\x8a\xfd\xf4\x16\x8d\x82\xae\xec\x96\xea\x86\x35\xa4\x8a\xee\x5d\xab\x69\x11\x54\xb4\x3e\xb0\xd7\x99\x74\x84\x71\x04\x03\x16\x9a\xe6\x2a\x9d\x11\x83\x7c\x93\x35\x08\xa6\x24\xb7\x79\xee\x29\x99\xff\xf7\xf6\x43\x11\xad\xd6\xbe\x54\x0a\x45\x95\x61\x13\x01\xae\x11\x59\x97\xfd\x20\x24\x99\x59\xa9\x7a\x02\xd3\x3b\xd5\xf1\xb3\xac\xa4\xbc\x55\x27\x40\xfb\xeb\x8f\x3d\xd6\x19\xd8\x68\x2a\xe1\xc3\x1e\x08\x8b\x62\x80\x4a\x1d\xc0\xdd\x20\xde\xd9\xee\x41\x46\x43\xc6\x8e\xb4\x60\x5f\x47\xce\x03\xb9\x48\x5f\x34\xf9\xaa\xdf\x35\x8e\x79\x1e\x2a\xc5\x62\x87\xcd\x88\xf2\xbc\x5f\xea\x5e\x66\x74\x38\x00\x6d\xe6\xc5\xce\xe3\x47\x8f\x1e\x3c\x5a\xed\x81\x18\x40\x34\xd2\xeb\x58\xce\xc6\x85\x10\x92\x6b\xdc\x88\xbc\x5a\x73\x01\xf8\x53\xd4\x18\xab\x91\x18\xd2\x6a\x24\xdb\x6a\x2e\x56\x91\x6c\xb7\x49\xd7\x24\x8a\xd1\x15\xca\x42\x32\xb6\x57\xed\xea\x82\xad\x90\xf9\x3a\x25\x1d\x14\xa8\xf8\xbe\x89\x8a\x9a\x32\xae\xec\x4f\xbf\x87\xbe\x69\xda\xf5\xe9\x55\x6c\xa2\x40\x6e\x86\xb5\x5e\x36\xa8\xee\x02\x10\x90\x0e\x3e\x5e\x7b\x02\xeb\x63\x8d\xb6\xfc\xee\x9e\xb5\x51\x88\x3a\xf6\xed\xd5\x18\x92\x6a\xf0\xe5\x2a\x97\x9c\x49\x5c\xed\x02\x71\xc5\xdc\x6e\xe8\x9d\x69\x62\x27\xc3\x12\x24\x25\x16\x8e\xeb\xac\x63\xf9\x85\xd8\x8d\xce\xac\xf4\x54\xc2\x76\x23\x25\x82\x95\x95\x20\x41\x5c\x5d\x12\x2a\x34\x13\x08\xa4\x33\xc1\x90\xbc\xaf\x31\x24\xb0\x6e\xc1\x86\x4e\xb6\x89\x10\x6d\x20\x70\xb9\xc2\xdb\xd7\x30\x0a\x22\xd7\x09\x60\xa1\xc3\x6d\xa3\x28\x91\x5c\xb9\xaa\x8b\x54\x95\x95\xbb\x4c\xd1\x90\x7c\xea\xd8\x7f\x06\x9d\xaa\xb6\x3f\x01\x29\x5d\x25\x65\x65\x69\xdd\x85\x10\xfa\x2b\x3e\xa9\x97\xcf\x4a\x12\xee\x77\xd8\x59\x62\x9a\xf5\x8a\xc8\x4a\x05\xeb\x38\x30\x52\xe9\x4d\x14\xae\x81\xf9\xfe\x8e\xb1\x2f\x77\x1d\x31\xde\x78\x65\x1e\xe4\x46\xd4\x03\x59\x1f\x27\xe2\xdf\x8c\x34\x05\x35\x22\x35\x00\x90\x43\x54\xde\x53\xea\x80\x44\xa6\xeb\xb7\x31\x86\x35\xb0\xba\x31\x94\x8d\xaf\x48\x24\xc4\xce\xc4\xcc\x8f\x3f\x31\xbb\x8d\x5b\x25\x36\xc8\xa3\x95\x3a\x80\x4a\xe5\x4c\x37\xa7\x7c\x56\xb1\x2a\x03\x62\x21\x1b\x91\x86\x88\x34\x23\x84\xb6\x0a\x6a\x70\x82\x23\x07\x75\x65\xdc\x54\xac\xc5\x1a\x04\x70\x02\x24\x15\x25\x6a\xd5\x8c\x88\xca\xa0\x8c\x4f\x47\xb2\x92\x31\x5e\x99\x49\x62\xcb\x5a\x01\xe6\xd5\xb9\x27\x25\xed\xe7\x19\xf6\xe9\x4f\x09\xa9\x4f\xfc\xf3\xcc\xfe\x48\xa5\xe3\xb6\x3a\x6d\x8d\x86\x25\xac\xaa\xfa\x6f\x13\xd2\xa8\xff\x43\x66\x97\xf8\x3b\xd6\x85\xd0\xfd\xda\x5c\x8d\x55\xbb\x16\x03\xfb\x62\xbb\x7a\x95\xcd\xa3\xcf\xb7\x1e\x20\xbb\xac\xdc\x6e\x03\xa7\xde\xe2\xbb\xac\x06\x9c\xce\xa9\xa0\xfb\x3e\x21\xa4\x08\x2c\xab\x28\xe8\x61\x8b\x32\x0c\x8e\x5d\xb5\xe5\xe8\x61\x46\xd5\x29\x7b\xb4\x6e\x17\xda\x6e\x89\x53\x5d\xad\x25\xd4\x65\x87\x09\x8e\x6b\x66\xa1\xa8\x20\x8d\x20\x25\xe0\xbf\x31\xaa\xfb\xdc\x3a\xcc\x08\x67\xaf\x13\x1c\x91\x72\x2f\x0b\xd9\x71\x86\xe1\xae\x9b\xaa\x39\x22\xeb\xf7\x9c\x43\x75\x57\xe1\x38\xc3\x2e\xf5\xe1\xd0\x85\xf2\xd6\x6c\xf2\x4e\x87\xdb\xb8\xc4\x09\x97\x95\xde\x25\x34\x63\xc7\x09\x4e\xc8\x28\xeb\xad\x5b\xa4\x62\x57\x4e\x0a\xa1\x59\x65\xda\x54\x3f\x40\x53\xdf\x75\xff\x13\xc5\xb1\x15\xd4\xc9\x73\x1c\xc3\x8d\x4d\xf6\x36\x53\x2e\x61\x08\x8d\x7b\x51\xec\x5f\xf8\x21\xdb\xaf\xa7\x81\x7d\xa5\x1b\x05\xec\xa4\x9e\x5a\x4a\x2a\xf7\x1a\x79\xb5\xa4\xf2\xa2\x9e\x0a\xeb\xf5\xcd\x6a\x0a\x94\x7e\xd9\x28\x2d\x78\x9f\x9f\x9b\xf5\xa9\xbb\xab\xcf\xea\xa9\x72\x9c\xd8\xab\xf5\x34\x35\x76\xbf\x34\xda\x72\x92\x4b\xf6\x5d\x99\x42\x0a\xfa\x3a\x63\x87\x59\xcd\x51\xc0\xdb\x6c\xdd\xc5\xc7\xeb\xba\xed\xb4\x92\xf9\xc3\x9a\xb2\x1b\xae\x24\x95\xd2\x58\xa4\x28\x12\xf5\x15\x2f\x4c\x1d\xad\xc2\x75\x99\x5a\x3a\x70\xb2\xad\x31\x9f\x66\x8c\x8b\x0d\xab\x6e\x30\x29\xb0\x6f\x8c\x33\x8b\xa1\x7e\x1f\xd1\x48\xf2\x80\xe2\x3d\xb4\x70\x3c\x46\x36\xb2\x62\x88\x2d\x8c\xfe\x82\x08\xcd\x2c\xf6\x75\x02\x77\x8f\x64\x49\x5f\x66\x15\xb9\x7c\x42\x6c\xbd\xe3\x71\x95\xdc\xef\xcb\x32\xeb\xfa\x97\xb1\x33\x19\x4c\x6d\x2d\x64\x89\x9d\xdb\x52\x11\x1a\x50\x1f\x11\x5b\x50\x69\xd9\x82\xab\xaa\x1a\x23\xcb\x2d\x9b\x4d\x54\xe2\x67\xc8\x4a\x08\xcd\x0a\xba\xff\x3b\xc6\x52\x0c\x14\x90\xf6\xf3\x20\x3a\x17\xc0\x92\xda\x25\x0a\x7d\x5f\x96\x97\xcc\x8a\xc2\xce\xd5\x68\xaf\x08\x7c\x10\x68\xae\x57\xf1\xa7\x5c\x6f\x63\x62\x94\xfb\x7d\x64\x7d\x9d\x28\xc2\x41\x2c\x7d\x50\x08\x27\x4f\x56\x28\xc6\xd4\x56\x95\xd0\x93\xac\xe5\x00\x5a\xc3\xaf\x60\x17\xf3\x56\xd0\x7b\x77\xe6\xd4\x68\x52\xd0\x17\x77\xe6\xab\xce\x4a\xde\x7c\x6c\xe0\x00\xbf\xca\x61\xab\xe1\x0d\x58\xe1\x23\x64\xab\xe7\x70\xfc\x75\x82\x39\xb1\xe1\xd7\x82\x2e\x16\xf4\xe5\x1d\xb5\x43\xcd\x2b\x15\x82\x57\x24\x31\x66\xa4\xa0\x3f\xdf\x55\xb6\x05\x18\x28\x5b\x05\x32\xa4\xcf\x3e\xd6\x33\x31\xc1\xd5\x69\xcb\x1a\x82\x72\x81\xa0\xbc\x8e\xa0\xbc\x81\xa0\x05\x7d\x75\x17\x84\x52\xb6\xd0\xd5\x8f\x05\xfe\xa6\x50\xea\x97\xbb\xe7\xba\xb6\xa1\x14\xf4\xbb\xbb\x5a\xd0\x8b\xba\xd6\xc8\x67\xba\x91\xaf\x56\x8f\xaf\x64\x9e\xe5\x05\x4f\xed\x94\xaa\x58\x4d\x2b\x01\xf9\x9b\x26\x8c\x60\xf3\xe0\x98\xe6\xbd\x14\xbf\xce\xe8\x52\x6c\xda\xf6\x57\x19\x7e\x9b\xad\x47\x8f\xe7\xd5\xb8\x86\x35\xa2\x17\x03\xb9\xa2\x92\x20\xad\xbb\x00\x89\xc9\xe8\x18\xec\xa5\x6a\x3d\x26\x6d\xe4\x86\x2b\x72\x53\x10\x42\xe5\x5a\x14\x80\xec\x67\x84\x6a\x1a\x21\xde\x4f\xee\x04\x6c\x04\xa0\xd4\x2e\xb0\xd9\x88\x06\x19\x54\xa9\xd7\x8c\xa8\xe4\xde\xc7\x7a\xf7\x8d\x5b\xdd\x82\x93\xee\x32\xfc\x0c\x73\x42\x96\xbc\x7e\xd2\x33\xaa\x22\x60\xaf\x19\xb3\xf0\x9a\x46\x88\x67\x10\x1f\x9d\xa6\x19\x29\x04\x28\x7a\x59\x0a\x50\x5e\xfc\x0d\xa0\xd4\x8e\x99\xee\x06\xa5\x52\x55\xad\x82\x22\x16\xa7\x00\xe3\xcd\xdd\xc3\xca\x5b\x0e\x53\x9b\x43\x4d\xaf\xe5\x30\x6b\xda\x2b\x2a\x7d\xf9\x37\x57\x7a\x24\x2b\x15\xdb\x80\xa8\xf0\xe7\xbb\x2b\x84\x81\xc9\x73\x69\x7c\x95\xd6\x42\x63\x8f\x79\x75\xbc\x62\x43\x13\x29\x3d\xc8\x88\xac\x5b\x31\x01\xa2\xfe\x67\xbf\x1f\x60\x45\x41\xd8\x64\x4a\x65\xc5\x16\x42\xf4\x4c\xd5\x2d\x71\x5e\xd4\xfc\xea\xee\x9a\xdb\x20\xae\x0e\x05\x6d\x29\x80\xa5\x0d\x23\xb1\x94\xa5\xe5\xa5\x15\x42\x79\xc5\xc7\xab\xfe\x7d\xc8\x08\xa1\xbf\x7f\xe5\xd5\x33\x0b\xc0\x7f\xc9\x08\x15\x3c\x8e\x78\xfe\xee\x63\x9d\xe8\xac\x74\x02\x03\x3b\x7f\x37\xdc\x75\xbe\x5e\x81\xfe\x2e\x23\xc4\xe6\xcd\x83\xd0\x42\x8c\x28\xe5\xb0\x4b\xa1\x34\xfa\xfa\xe8\xe0\x2d\x6a\x8b\x04\xa1\x19\x4e\xed\x4e\xbd\xcd\xcc\x5c\x56\xd1\x66\x51\xfe\xa9\x95\x7c\x50\x51\xb3\x7e\xc8\xd8\x87\xa4\xe7\xc6\xdc\x49\xb9\xf4\xa5\x71\x72\xf8\x9a\xfe\x08\xa9\x31\xbf\x8a\x3e\x54\xa9\xa3\x1f\x32\x70\xad\x2e\x44\x8c\x95\x02\xa8\x35\x9e\xe9\x0f\x99\x32\x41\xfe\xd0\x70\x99\x46\x08\xfd\xb1\xaa\x69\xa5\x91\xf6\x9a\x7e\xdc\x54\x53\x51\xfa\x6b\xfd\x26\xab\xdb\x89\xd4\x63\xb5\xc8\x8b\xc3\xad\xa1\x23\xa4\x23\x8e\x44\xdf\xec\xbf\x2b\x8f\xa8\x86\x83\x8d\x4f\xac\xa2\x7f\xd5\x03\x34\x97\x90\x7e\x2c\x42\x05\xb8\xb3\xaa\x26\x03\xac\xb6\xa5\xed\xa2\xea\x61\x58\x39\x56\x36\xc2\xaa\x7b\x5f\x67\x4d\xdb\xa5\xe1\x88\xaf\x39\xa2\x94\x77\xc6\xe5\x00\x48\x1e\xae\x12\xf7\x78\x3d\x4a\x0f\x9f\xda\xcb\x62\xc4\x3f\xdf\x1a\x7f\x93\xa9\x81\xc1\x21\xa1\x9d\x41\x9b\x8b\x11\x4e\x96\x73\x65\x6b\x00\xe1\x87\x49\x19\xaf\x7a\x53\x27\x93\x71\x9b\x57\x16\x9f\x27\x38\xa5\x1f\x2b\x8a\x43\x42\xec\x3a\x54\x1b\x40\x6a\xf5\xfb\x02\x50\x7e\x6c\x06\x42\x21\x65\x0a\xd4\x29\x4d\xa2\xca\x41\xfe\x36\xc3\x2d\xf7\x2b\xc9\xb2\x8c\xf4\x57\x5d\x5f\x00\x47\xab\x2e\x75\x99\x43\x1d\xd6\x19\x92\x11\xb8\xc2\x33\x82\x36\x8f\x22\xe1\x38\xec\xc9\x50\x9c\x89\x1d\x8e\x02\x9e\x1a\x33\x38\x68\x37\xcd\xb4\x17\xf3\x10\xa2\xa4\xe2\x40\x3d\x32\x9d\x46\x83\x5e\x92\x3a\xa9\xef\x1e\xc2\xeb\xcb\x10\x2c\x7f\x9b\x29\x34\xe8\x9d\xb9\xd1\x7c\xe1\x07\xdc\x63\x9d\x01\x8d\xa0\x22\x0d\x81\x13\xb0\xce\x80\x10\x2a\xab\x3f\x4b\xdc\x68\xc1\xf7\x3d\x16\x13\xea\x8f\xf1\xac\xa1\x48\x10\x9b\x5a\x9e\xc3\x15\xdf\x7b\x57\x21\x38\x4a\xae\xbd\xf4\x92\x24\x7e\x1e\x85\x29\xbf\xd1\x99\x16\x4e\xcc\xc3\x54\x65\x92\x2f\xcd\x82\x8d\xb4\x5a\x79\x92\xe7\xa8\x8a\x88\x5a\x0e\xd1\xd9\xd9\x77\x27\x7b\x67\x47\x47\x87\x67\xcf\x0f\xde\x1e\xef\xfd\x70\x7c\x76\x96\xe7\x38\x65\x2d\xe9\x84\x42\x7c\xc2\x72\x7b\xa3\x09\x28\xa1\x61\x34\xcf\x62\x7e\xe1\x27\x29\x8f\xb9\x57\x9a\x7e\x25\x1b\x3f\xf4\x1c\xcf\xc3\x3e\x29\xc4\x28\x26\x49\x7c\xa8\xb2\xb0\x19\xb1\x39\x1c\xbf\x39\xe3\x86\xa3\x9d\x5a\x9b\x99\xf2\x7a\xd7\xbb\x17\x47\x51\xda\xbb\xa7\xa6\xb7\x97\x5c\x3a\x5e\x74\x7d\x18\x45\x29\x59\xf1\x99\x57\x2f\xed\x82\xcf\x01\x42\x67\xc4\x9f\x35\xe6\x8b\x2c\x25\x1a\xa5\x4c\xa3\xc3\xa8\xc4\x8b\xa6\x47\xd7\xa6\x0b\xbe\x90\x50\x08\x6b\x4d\x0a\xa9\x25\xae\x6a\x39\xe7\xb3\x28\xe6\xcf\x61\xbb\x1e\x35\x5f\x59\x3a\x9e\x94\x91\xf4\x53\x3a\x23\xf6\x64\x36\xad\xb6\x9e\x98\xe3\x4a\x99\xb4\xe9\x32\x10\x4d\x2e\x9d\xb9\xdd\x71\xe4\xa5\x20\xfb\x30\x2b\xf4\x4a\xf8\x3e\x63\x4b\xe0\x4a\xd0\xee\x95\x93\x3a\x31\xb8\xb5\x5d\x24\xb6\x54\x2d\xc9\x5f\xe5\x60\x55\xbb\xaf\x47\x9e\x7f\x05\x57\x49\x7d\x0f\x6e\x76\xb7\x39\x69\xe9\x81\x5b\x3b\xdc\xc7\x9e\x7f\x95\x27\x0b\x27\x24\x7d\x08\x6e\x9f\xf0\xf8\xad\x68\xad\xbd\x62\x24\x73\xf8\xde\xe6\xef\xd7\xbe\x97\x5e\xaa\xcf\x3a\x20\x81\x0a\x11\x26\x23\xa0\xcb\xac\x0f\xb7\x8a\x82\x7a\x4e\xea\xac\xdf\x14\x5b\x3a\xd0\xd1\x23\x70\x18\x6d\x23\x44\x83\xc8\xf1\x20\x02\xf9\xa0\x80\xe8\xf2\x8b\x2c\xe5\x9e\xfd\x75\x86\xbf\xce\xf0\xb2\xa0\xfb\x21\x9e\xa0\x0b\x9e\x1e\x47\x1f\x78\x88\xa6\x84\xd0\x25\x5c\x2a\x13\x74\xc1\x6b\xb9\x88\x56\xc3\x37\x29\x11\xf5\x64\x5e\x39\xbe\x49\x9e\x8b\x76\x08\xbd\x16\x03\x64\x2f\x55\x7f\x9b\xc2\x15\x54\x91\xf0\xf4\x24\xe1\x31\x04\xd1\xa7\xf3\x28\x0b\xd3\x66\x73\x08\xfc\x95\x89\x9c\xb2\x8e\x71\xb3\x54\xf5\x81\xd8\xf0\xa2\xba\xc9\x3a\xc3\x82\x4a\x0f\x89\x89\xbd\x54\xd9\xd7\x6f\x6d\x49\xe7\xfd\x62\xfb\x6b\x94\x1d\xc8\xe5\x54\x1f\x42\xb0\x87\x91\x4e\x07\x60\x48\x4c\x53\x42\x56\x92\x38\x7e\x6d\x28\x07\x1d\x34\x66\x78\x7d\x78\x12\x1e\x5f\xf1\x38\xcf\xaf\xfd\xd0\x8b\xae\x7b\x41\x24\xaf\x5e\x29\x3d\x09\xb1\x50\x3f\xe6\xf3\x28\xe5\xbd\xc5\xe5\xa2\xef\x39\x57\x7d\xd9\x7a\xd2\x47\x56\xad\x97\x16\xea\x0f\xb7\x9e\xf6\x16\xe1\x05\x1a\x85\x3d\x79\x79\x1a\xa3\x5d\x79\x80\xfd\x0b\xd4\x88\x28\x7a\xc6\x9d\x98\xc7\x86\x2a\xa9\x67\x55\xd0\x76\x5d\xe2\x87\xee\x21\xff\x39\xe3\x49\xca\xbd\xee\xf7\x7e\x7a\x89\x28\xfa\xe1\xcd\xeb\xaf\xd2\x74\xa1\xd2\x11\xa1\x70\xd3\x0d\xc7\x74\xa9\xef\x76\x85\x05\xe9\xa5\x97\x3c\x5c\x09\x2a\x37\xc3\x69\x2f\xfa\x50\xde\x86\xe8\x9d\x07\xd1\x39\x06\x36\xe7\xe1\xe0\x21\x1c\x38\x0b\x42\x91\x25\xb5\x28\xd1\x65\x84\x68\x5e\x5e\x6d\x87\x2c\x86\x1b\x79\xdc\x40\xe5\x3e\xa0\x4b\x0a\x12\xd9\xd2\x34\xaf\x4d\x37\xe5\xcd\xf9\x4a\xc7\x6a\xa4\x4f\x0e\x5f\xaf\xb2\x94\x38\x05\x55\x04\x21\x3d\xa9\x9e\x5a\xa9\x74\x75\xde\x1b\xcd\x88\x0d\x25\x0a\x78\x8f\x43\x17\xee\x43\x4f\x0c\xf5\xdd\x90\x25\x0d\x7f\xee\x5c\xc0\x2d\x7b\x43\xcc\x9a\x81\xee\xeb\x0e\x71\x35\x8d\xf4\x3e\xb2\x8d\xfb\x10\x33\x80\x27\x89\x73\x01\xfe\x70\xd5\xc9\xd3\x0a\x16\x17\xd2\xab\xef\x4f\x2d\x3a\x0d\xe9\x0e\x95\xa5\xbd\x7b\xb2\x7f\x7b\x01\x07\x75\x65\xc8\xd2\xde\x59\xc2\x83\x59\xef\xcc\xcd\xf3\x9a\x6d\xac\xc2\xdd\x71\x88\xd3\x1e\x28\x53\x97\xa9\x73\x61\x23\x57\x13\x21\x54\xd0\x49\xaa\x1b\x1f\x87\x18\x45\x6e\x37\x59\xf8\x61\xc8\x63\x44\xe1\x8a\x31\x92\x3d\xec\xaa\x3c\x88\x26\xe9\x6d\xc0\x6d\x24\x37\x2c\x81\x71\x3d\x78\xb4\xd0\xe2\x66\x64\x5c\x72\xff\xe2\x32\x5d\x4d\x46\xd4\x49\xd3\x58\x2c\x4b\xff\x17\x6e\xa3\x64\xee\x04\x01\xa2\xc8\x89\x7d\xa7\x1b\x38\xe7\x3c\x40\x76\xda\xbb\x07\x17\xf5\x6e\x52\x8c\x5e\xab\xa6\x84\x84\x6d\x4b\x98\x1c\xb5\x89\xaf\x81\xc4\xbd\xb2\x72\x09\x91\x6a\x97\x26\xb1\x6b\xa7\x8d\x89\xa5\x48\x4c\x45\x57\x50\x05\xa4\x0c\x4e\xc4\x9e\x5d\x14\x64\x4a\x87\xc4\x4e\x7b\x67\x1c\x93\x62\xf4\x53\xd6\x3b\xbb\xf6\xd3\x4b\xb1\x49\x2f\x16\xc0\xd8\x54\x61\x19\xd2\xe0\x5f\x9a\xcd\xe7\xc1\x9f\xc2\xe6\xa7\xc1\x3f\x23\x9b\x5f\x87\xea\x1f\xc0\xe6\x4b\xbe\x24\x0c\x4a\xbe\xc4\x75\x05\xf1\x4b\x5e\xfb\x49\x7a\x18\x5d\x23\x5a\x2e\xca\xc4\x5e\x4a\xa2\x6a\x7f\x9b\xe1\xa5\xe4\xbf\xec\x9f\x32\xba\xc2\x7d\xdb\x93\x69\xa1\x1c\x9e\xd0\xef\x33\xfd\xd4\x19\xae\x3f\x35\xfe\x90\x42\xb3\x42\x8e\x84\x40\x71\x1d\xb2\x47\x35\xae\x63\xb0\x99\xd5\x70\xb3\x58\xf0\xd7\x87\x91\xba\xc6\x50\x67\x30\x78\x80\xe5\x3f\xcd\x63\x88\x85\x86\x28\x2a\xd5\xa8\x40\xb2\x04\xbf\xf1\x3a\xc4\xe5\x28\x20\x3a\x41\x10\x7e\x15\x51\x94\xf0\x00\x48\x44\xf9\x4d\x33\x27\x7e\xa2\x92\x8e\x54\x8e\x4d\x6c\xca\x6a\x0d\x65\x44\x0c\x49\xe5\x65\x2a\xd9\xe9\x82\xe3\x07\x91\x55\x65\x7c\x2d\x36\xa3\x35\xaf\x09\x92\x1b\xa9\xf6\x27\xd9\xba\xf1\xf9\xd2\x50\x35\x19\x45\x2d\xfc\x49\x3d\xef\x7e\x98\xf2\x78\x11\x05\x4e\xca\x71\x4a\xcb\x01\xaf\x43\xd1\xf3\xfc\x64\x11\x38\xb7\xb0\x15\x81\x8b\xea\x82\x50\xb9\xbb\x37\xba\xa7\x09\xbb\x60\x6b\x92\xe7\xd5\xf8\x63\x52\xb1\x3d\xf5\xa1\x3f\x11\x43\x9f\x5c\x46\xd7\x6f\x24\xbd\x81\x41\x7c\xbb\x32\xe2\xc7\x07\xaf\x5e\xbd\xde\x3b\x3b\xda\x7b\xbd\xf7\xfc\x78\xff\xe0\xed\xd9\xee\xf3\xe7\x07\x27\x6f\x8f\xcb\x11\x77\x2f\x9d\xf0\x82\xc3\x3c\x6f\x60\xa5\xb4\x4f\xc1\x10\x7f\x1b\xf6\xe6\x4e\xfc\xa1\x5a\x41\x86\x1e\xc1\x5a\x34\xb4\x6f\xc3\xde\x75\xec\x2c\x6a\xcb\x2c\x54\x2e\xb7\x46\x44\xd9\xd5\x87\xbd\x45\xcc\xaf\x58\x28\xfd\xe9\x48\xe3\xfa\x81\x8e\xb3\x98\x45\x8a\xa4\xf6\x52\xcd\xe1\x88\x6c\xec\x01\xdd\x73\xf0\x52\xc7\xfa\xe5\xbd\x06\xb6\x29\x56\x8c\xc2\x35\x76\x3d\x0b\x67\x59\xe6\x7b\x36\x2f\xe7\xc1\xf7\xa8\x40\xc0\x33\xdf\xb3\xd3\x42\xc8\x11\xa2\xdd\x07\xf6\xd6\x00\xe2\xac\x80\xa7\x2b\x1e\xa6\x44\x31\x28\x63\x88\xd2\x26\x96\x47\xaf\x8a\xe6\xdc\x13\x15\xec\x7b\x94\xf7\x6a\x0b\x84\x71\x48\x4e\x7a\x33\x3f\xf4\x70\x9b\x7a\x49\xb4\xcd\x18\x8b\xc4\x36\x6d\xf3\x5e\x6d\xd2\xf0\x32\xf5\xd3\x80\xdb\xbc\x86\x7d\x2f\x1d\x21\x6e\x1b\x69\x64\xc8\xc9\x31\x44\xed\x3d\x44\xa8\xc7\x13\xd7\x8e\x15\x7c\xc7\xfc\x26\xa5\xf2\xd1\x46\x9e\xc8\x17\x23\xdd\xa9\x47\x3a\x84\xa5\x57\x86\xaf\x0c\x7b\x49\x0a\xd7\x52\x0a\x02\xe1\x54\x09\x51\xce\x6a\x56\xd1\xad\x7d\x71\xdc\x89\x05\x1c\x97\x37\xc9\x37\x63\x01\x5f\xc5\x02\x2e\xb1\x80\x6f\xc2\x82\xb4\x81\x05\x5c\x63\xc1\x4d\x0d\x0b\xd2\x4f\xc6\x82\xb4\x86\x05\xb5\xb9\xf7\x67\x78\x6b\x30\xec\xc0\xf5\x24\xde\x98\x7e\xc1\x34\x42\x8b\x5f\x56\xf7\x27\x05\x8a\x08\x84\xa0\x11\x8b\x21\xe0\x50\x9d\x3d\x88\x48\x79\x0b\x29\xaa\xc7\x2d\x28\xb3\x95\x35\x3e\xd5\x36\x65\xfa\xa6\xa1\x73\x1e\x67\x0b\x88\x39\x01\x47\xa8\x0a\xba\xa7\xa2\x7b\x35\x2c\x4b\x3f\x11\xcb\xe2\x1a\xbe\x26\x93\xc1\x54\xe1\x6c\x41\x54\xbd\x5f\xae\x23\x07\xd7\xc8\x01\x17\x7d\x0a\x42\xb9\xc6\x90\x42\x45\xa0\x88\x83\xbf\x99\x57\x95\x7c\x5e\x2a\xd8\x95\x6e\x2c\xc8\xe1\xa4\x9e\xe2\x72\xc1\x31\xaa\x24\xf7\x92\xbb\x1f\xce\xa3\x1b\x44\x97\x8a\xf5\xd3\xe1\x0e\xd6\x08\x04\x05\xf6\xd2\x4e\x7b\xeb\xdb\x3c\x45\x97\xbe\xc7\x35\xff\x29\x64\xf0\x28\xb4\xd5\x86\x67\xb7\xf0\x5c\x69\x6f\xd3\x6e\x89\x4b\xf4\x21\x85\xe2\x26\x69\xda\x3b\xbb\xc2\xd2\xfb\x60\x6b\x37\x4a\x86\x56\xf5\xa0\xc9\x9b\xb6\xd0\x86\x3c\xaf\x92\xa3\xf0\x5d\xcc\xe7\x7e\xc2\x93\x23\x67\xae\xfa\x24\xf2\x68\x2d\x43\x1d\x9d\x95\x66\xe1\xc1\xa3\x4f\x81\x6c\xe9\x45\xf3\x77\x4a\x4f\xc2\x6f\xd2\xe7\xd2\x7f\x88\x60\x8d\x13\xfc\xf1\xe6\x61\xf7\xf8\xdb\xab\x6f\x74\x1a\x75\xd1\xdf\xa9\xda\xb9\xe3\x07\x1f\xad\x4a\x61\xd8\x79\x96\xa6\x42\xae\x5e\x4a\x96\xeb\x79\xe0\x24\x89\x8d\x54\x4d\x49\x57\xc6\x89\x97\x28\xd5\x4d\x63\xff\x42\xec\xae\x5a\x0c\xf1\xbd\x8f\xe4\xec\x0a\xe1\xa8\x36\x41\x57\x42\x0e\x12\xc8\x66\xa3\xd8\xb9\x46\x45\x01\x50\x24\x0b\x67\x0d\x80\xec\x43\x77\x16\xf0\x1b\x43\xfd\xed\xce\x7d\xcf\x0b\xb8\xb1\xd2\x9a\xda\x15\xe0\x4d\xca\x77\xa2\xbf\xa7\xa1\xa1\xfe\x13\xcd\xc3\xc8\xd4\xb6\x8f\x71\xe3\xad\x3e\x05\x0d\xc9\x4c\x71\x3e\x50\x33\x21\x56\xbd\x52\x3d\x9a\xbe\x0b\x03\xa7\x06\x43\xb2\xba\xfc\x66\xe1\x84\xde\xd9\x3c\x8a\xb9\x16\xfb\x2e\x7d\xcf\xe3\x21\xb2\x51\x1a\x67\x1c\x29\xdc\x9c\xae\x4f\x8e\x17\x47\x8b\xda\x2a\x11\xaf\x5d\xdf\x43\x9b\x86\x58\x7c\xf7\xa2\xeb\x70\x75\x8c\xd3\xe8\xe2\x42\x48\xad\x9f\xfd\xae\x99\x99\x47\x1e\xb7\x91\x1b\xf8\xee\x07\xc1\xc0\x06\x51\xc2\xbb\x51\xd8\x95\x09\x36\x42\x54\xab\xd5\x97\x1e\x0f\x9c\xdb\xaf\x7c\x8f\xdb\x83\x42\x4d\x60\x16\xb4\x4c\x5f\xe0\x27\x42\xe6\x4e\x7b\x67\x01\x56\x3b\x36\x6d\x13\xf0\x42\x8c\x02\x5f\x89\xbb\x5c\x10\x25\xa8\x52\xee\x55\x77\x63\x65\x39\x02\x7a\xfa\x43\x8c\xc0\x7b\xb5\x58\x27\x7e\xcc\xdd\xd4\xbf\xe2\x89\x3d\x51\x53\x23\xba\x18\x20\x1a\x3b\xd7\x30\xd9\xe8\xaa\xab\x52\xca\x08\x32\x15\x5a\x50\x7e\xb3\x88\x79\x92\x00\xaa\xd6\xd2\x51\x31\xa5\x0d\x90\x22\xb7\x1b\x3b\x9e\x1f\xe9\x65\xa4\x66\x4f\x5a\xf5\xc1\x17\x54\xd0\x6a\xd1\x2a\xef\x7d\x14\xf6\x75\x2e\xb6\xaf\xb3\x9f\xf1\x4a\xcb\xa4\xb1\x3d\x4f\xea\xdc\x63\x93\x0e\xf2\x5a\xb8\x8f\xb0\xe9\xa4\x42\x71\xb2\x58\x0c\x28\x29\xa6\xd5\x5e\x50\xa1\x71\x6d\x7d\x34\x56\x41\x03\xd7\x05\xb6\x4f\x09\x08\xa9\x74\x20\x9e\xfe\x3e\xdb\x6a\xe6\x7b\x52\xf3\xfb\xf7\xdc\xf5\x2e\x7e\x67\xa5\xab\x08\x2b\xaa\xee\xba\x5c\xc8\x31\x72\x2f\xd1\x15\xab\xbf\x7b\xa5\x82\xa9\xb6\xf8\xa5\x92\x46\x66\x80\xb4\xae\xd2\x43\x21\xda\x8e\xba\x92\xa9\xea\xfa\xa1\xe7\xbb\x4e\x1a\xc5\x55\xfe\xc6\x3e\x12\x73\xc7\xbb\x45\xf5\x0d\x33\xc9\x5c\xe9\x79\x7d\xa3\x32\x49\xd1\x27\xc3\x4f\x0c\x5d\x69\x4d\xaf\xb4\x11\x60\xcf\x4f\x7e\x1f\xc4\x55\x81\x06\xc8\x1e\x5f\xc4\xdc\x15\xc2\x5c\x03\x6e\xc5\x91\x7f\x12\xd8\x65\xcd\x44\x6f\x93\x74\x48\x8a\x51\x1c\xdc\xa1\xa7\x8a\xfe\xb5\xf5\x54\xfe\x9f\xa3\xa7\x8a\xfe\x29\xf5\x54\xd1\xff\x1f\x7a\x2a\xa7\x55\x4f\xb5\xa2\xa4\x6a\x6a\xb0\xea\xda\xaa\x38\xb8\x4b\x5b\x15\x06\x7f\x5c\x5b\xa5\xe9\x88\x8c\x8e\xd1\xd4\x56\x95\x3a\x28\x5f\x6b\x9f\x1a\xda\x0e\x27\xe6\xbb\x41\xa0\x53\xb4\x88\x00\xba\x0e\xad\x41\xf1\xb5\xee\xa4\x51\x50\x72\x0f\xb2\x80\x1f\x85\xbb\x41\x20\x0a\x49\xd1\xc7\xfd\xbb\x88\x3e\x70\xf4\x58\x97\x78\x2a\x9e\x47\x32\x79\x82\xdb\xf0\xfc\x2b\x5f\x0c\x2e\xd2\x3c\x62\xb9\x79\x43\x94\xc3\x15\x91\x69\x93\x10\xa5\xeb\x4d\x2e\x63\x3f\xfc\x20\xea\x95\x74\xf9\x92\x3b\x5e\xad\xe2\xcd\x42\x56\xfb\x30\x96\x92\xd6\x1a\xb7\xe8\x04\x01\x9c\x8a\x24\x88\xdc\x29\x73\xa5\xbd\xf5\x71\xfe\x24\xa1\xe5\xee\x0e\x7d\x5a\xe1\x7a\x11\x7a\x27\x65\xad\xfa\x77\xa2\x0c\x14\x11\xf9\x38\x5d\xfd\x1b\x9a\x79\x21\xd9\x10\xe3\x1f\xd0\xd4\x9e\x10\x92\xfe\xe4\x36\x0e\xa5\xf0\xf0\xc7\x38\x91\x30\xba\x8e\x9d\x45\x75\x9e\xd4\x3a\xe5\x9f\x3c\x7f\xbe\x67\x28\xa7\x50\xff\x14\xf0\xbc\xfa\x5d\xf0\xfc\x5d\x9a\xdc\xd3\x2c\x51\x9d\xb7\xd8\xd0\xae\xda\x64\x94\xec\xa2\xb7\xe3\x56\x83\xb9\x10\x57\x9c\x92\x10\x79\xe4\x66\xd4\x64\xb3\x74\x3a\x08\x5d\xbe\xa7\x87\xb0\xd4\x91\x17\x10\x1c\x56\x81\x24\x59\x1e\xf7\x2e\x96\x27\xf9\xd7\x66\x79\xb2\x3f\x87\xe5\x49\xfe\x29\x59\x9e\xe4\x1f\xcb\xf2\x40\x24\x9e\x8a\xe1\x59\x2c\x36\xf3\x39\x75\x26\xc7\xbd\x93\xc9\x71\x7e\x17\x93\x53\xb2\x2e\x59\x80\xe5\xbf\x16\x06\xc6\x4f\xf6\x43\x3f\xf5\x9d\xc0\xff\x45\xc8\x13\xe8\x82\xa7\x25\x19\x8e\x62\xcd\xcb\xac\x1e\xab\x6d\x3c\x4e\x2b\x39\xaa\x0d\xa7\x68\x6b\xd5\x17\x54\x6e\x4f\x07\xb3\xa3\x95\x3a\x3f\xf9\x20\x4e\x22\xaa\x3e\x76\xf3\xa3\x70\x3f\x9c\x45\xc7\xfc\x66\xdd\x57\xb9\x3a\x75\x0b\xcb\xbd\xea\xf3\xa5\xe1\xcc\xe5\x71\x9b\xa1\xeb\x35\xd4\xe1\xe2\xc6\x6f\x89\x32\xe2\xd9\x04\xf8\xa7\x9d\xdb\xcd\xab\x63\xbb\x4d\x15\x15\xa4\xa0\x8e\x2b\xd5\x41\x9b\x18\x42\x70\x34\xd8\x3e\x2e\x6b\x3b\x4a\xdd\x21\x5b\x53\xd6\x2e\xaa\x80\x55\x31\x0b\x77\x06\x34\x62\xe1\xf6\x9d\xb0\x95\x5e\x6a\x4d\x53\x45\xc0\x6a\x6a\x29\x15\xdc\x95\xee\x48\x26\x28\x29\x1c\x69\xd6\xae\x79\x0a\x2a\xa1\x41\x84\x5e\x3a\xa1\x17\xd4\x6d\xad\x6a\x5a\x17\xc9\xd1\x69\xa5\x3c\xc8\xcc\x58\x9d\x71\x46\xbf\x13\x18\x25\x06\x6f\x80\xe6\x85\xfa\xfa\x07\xc0\x19\x02\x38\x5c\xfc\x68\x31\xa0\x5c\x81\xab\x92\x80\x5f\xae\x3f\x44\x51\x4b\x6d\xad\xa7\xac\x87\x7b\x47\x7b\xc7\xfa\xb0\xe0\xa8\x3a\x3f\x80\xcc\x9b\x8e\x7a\xab\x96\x30\x29\xa8\x34\x9c\x7c\xc1\x93\x34\x8e\x6e\xd7\xf2\x6e\x6a\x00\x93\xa2\x50\xf6\x90\xb3\x80\xd5\x0c\x5f\x4b\x43\xe2\xd0\xb9\xf2\x2f\x9c\x34\x8a\x4d\xb3\x3f\x4f\x7c\x6e\x4c\x1e\x77\xbf\x9c\x9e\x9e\x9e\xf7\x95\xc7\x63\xfd\x1d\x4e\xdb\x76\x2f\x78\xb8\xe2\x90\x8e\x54\x04\x78\x11\x54\x48\x0b\x64\x8e\xed\x34\xcd\xff\x94\x05\x04\x9b\x05\x63\xde\x9b\x73\xcf\x77\xf2\x1c\x29\xcb\x46\x64\xa7\x34\x66\x97\x81\xf4\x44\x09\x7f\xd9\xd2\xf7\x12\xf0\x73\x7e\xc4\x53\x69\x76\x04\x1b\xac\xbc\xc4\x13\xf7\x7c\x2f\x01\xef\xe7\x29\x21\x4b\xf9\xe6\x78\x9e\xa0\xd2\x01\x17\xad\xf0\x5e\x02\x66\x3f\x22\x37\xef\xcd\x9d\x85\x69\xe2\xd0\x62\xe8\x34\xec\x7f\xf1\x99\x21\xbf\x9d\x1c\xbe\x66\xc8\x82\xaf\x2a\x77\x32\x19\x4c\x2d\x64\x7c\xd1\x47\x74\x35\xf3\x1b\x67\xb1\xf0\xc3\x0b\x51\x06\xcc\x22\xea\xee\xd4\xdf\x27\x51\x38\x3a\x77\x12\xfe\xf8\x21\x45\xd6\x79\x1a\x39\x38\x0b\x79\xe2\x3a\x0b\x8e\x5b\xdc\x41\x7e\x7d\x74\xf0\x56\x05\xd9\xf7\x67\xb7\x12\x3c\x42\x08\x91\x2d\x13\x1a\xf7\xb8\x14\x19\xe1\x22\xb0\x7a\x66\x5e\xe4\x02\xfd\xee\x35\xa4\x4a\x8c\x60\x68\xea\xa5\xc0\xd4\x8b\x21\xb1\x32\xfa\x6e\x92\x20\xaa\x86\xdb\x34\xab\x2c\x09\x4f\x77\xd3\x34\xf6\xcf\xb3\x94\x63\x04\x9f\xcb\x7c\x3a\x8e\x0e\x63\xcc\x0b\x4c\x13\x7b\x41\xd5\xb6\xe0\x2f\xf3\xbc\x7c\xbd\xe0\xa9\x82\x23\x79\x76\x7b\xec\x5c\xbc\x75\xe6\x1c\x4b\x26\x94\x4c\x06\x53\x42\xbd\x40\x99\x20\x3e\xbf\xf4\x03\xaf\xea\x0d\x21\x54\x02\x7e\x74\xc9\x79\x8a\xfc\xd0\xa8\x3e\xc5\x3d\x39\xdb\x72\x7b\x08\xeb\x3d\xab\x8a\xf4\xdc\x04\x4e\xb9\x59\x99\x5b\xed\xa1\xcf\xa4\xb5\xbc\xf6\xb8\x71\x1a\x22\xe5\xf7\x4e\x9b\x25\x4b\x64\x49\xfc\x5f\x78\x77\x48\xf9\xea\xb0\x8a\x3a\xdf\x46\x1e\x17\xed\x42\x7c\x0c\xd5\xb2\x2b\xe0\x17\x1f\x92\x51\x34\x49\xa7\xf5\xb1\x8c\xf9\x3c\xba\xe2\xb2\x83\xe2\x1b\x29\x1d\x54\x8f\xab\x4c\x7e\x98\xf0\x38\x7d\x06\x0b\x19\x73\x0a\xf9\xec\xea\x73\x7d\x90\x38\x29\x8a\x42\xc6\xd2\x16\xb8\xec\x05\x6a\x11\x5f\x06\x6c\xa9\x17\xf4\x55\xc0\x82\x00\x34\x10\xf3\xbf\xaf\x06\x02\x1e\xd6\xa4\x1d\x37\x0a\x53\xc7\x0f\x79\x6c\x64\x1f\xba\x0b\xc7\x03\x03\x3d\xa9\x2c\xb8\x1c\x7e\x4c\x19\xbd\xa6\xd6\x4c\xd6\x04\x9c\x74\x23\xf1\xda\x19\x28\xe5\xf2\x45\xec\x7b\x5a\x88\xd0\xf4\xb3\x5b\x92\x0d\x3f\x9c\x45\x2b\xca\xda\xe6\x31\x59\x29\xa4\x5d\x64\x69\xca\x63\x6d\x86\xd8\x3c\x6e\xbb\xb3\x1b\x6b\x3c\xcb\xba\x90\x26\xab\x51\x47\x6e\x39\x5a\x3b\xd1\xaa\xeb\x79\xca\x43\xc6\x52\xbf\xd2\x3c\x07\xfc\x54\x19\xee\x79\xc0\x9d\xd8\x28\x81\x83\xe8\x7a\xa0\x56\x09\x7c\xf7\x83\x9d\x6e\xa4\x0e\xad\xba\x95\x3a\x80\x9a\xf0\xca\x23\xb8\x76\x3d\xf8\x2a\xb5\x46\x14\xee\x79\x78\x47\x41\x94\x26\x02\xd6\x0c\x4f\xe4\x94\xe9\xee\xce\xc2\x75\xd2\x7c\xc7\x81\xe7\xdc\x89\x2f\xfc\xb0\x7b\x03\xb3\xd5\x8d\xfd\x8b\xcb\x14\x7d\xea\xc8\xec\x4a\xe0\x36\x48\xd3\x1f\x3b\xa9\x14\xe3\x03\xda\xc7\x9b\x5b\x19\x08\x44\x89\xaf\xb2\xce\xd6\x7e\x18\xa5\x70\x0c\x99\xea\x47\x7b\x34\xae\x4b\xc7\xf5\xe9\x97\x67\x7c\xc0\xd5\xac\xe1\x2f\x1c\xde\x77\x87\xdd\x61\x79\xe6\x1b\xf0\x59\x8a\xa8\x0b\x39\x96\xb5\x01\x92\xe3\x73\x1e\xa5\x69\x34\x47\x76\x6c\x0d\xc1\x0e\x5b\x01\x52\xb2\xdd\xd5\x19\x35\x6f\x39\x7a\x06\x03\x28\x1b\xcd\x79\x98\xf9\x29\x9f\xa3\x3a\x1e\xf1\x9e\x62\xac\x8a\x96\x23\xe5\xb5\xa3\x33\xe8\xcd\xca\xa1\x99\x3e\x38\x83\xb0\x7f\xe5\xb0\x4e\xa5\xeb\x8d\xce\x90\x3e\x78\xf8\xe8\xc1\x83\xa7\x0f\xb6\x9e\x3c\x25\xfa\x38\x58\x19\xe5\x36\xf6\x89\x86\x10\x34\x9e\xac\xaa\x1a\xaa\x19\x2d\xc5\x9b\x4a\x59\x21\xa6\x54\x9d\xfc\x80\xf1\x70\x8c\xc8\x94\x6e\x09\x98\x46\xf3\x16\xdd\x82\xdc\x69\x6f\x03\x56\x13\xfa\xe6\xed\x42\x5f\x83\x71\x4f\x4d\x33\xc5\x48\x30\x09\xdd\xab\xee\x60\xeb\xe1\x97\x5f\x6e\x7d\xf9\xf4\x6c\x20\xb0\x5b\xdd\xce\x38\x0d\xff\xb5\xfe\xef\x7f\x61\x1c\x1f\xbc\x38\xb0\x8d\xdd\x59\xca\x63\x43\x07\x84\xbf\xf0\xd3\xcb\xec\xbc\xe7\x46\xf3\x7e\x74\x1d\xba\x41\x94\x79\xe5\x43\xd7\xe3\x89\x7f\x11\x76\x93\xdb\x24\xe5\xf3\xfe\x22\x0b\x82\xfe\xc3\xe1\x53\xe3\x82\xa7\x89\x31\xe7\xf1\x05\xf7\x4e\xc3\xf4\x92\xc7\xdc\xb8\x8e\xc2\xfb\xa9\x71\xce\x0d\x27\x34\xf8\x4d\x1a\x3b\x86\xd8\x2c\x0c\x27\xf4\x40\x6c\xab\xbe\x87\x9c\x7b\xdc\x33\x9c\xf0\x56\xac\x60\xe3\x8b\xfe\x69\xd8\xab\x8e\xec\xf4\x0e\x59\x6e\x5a\xe7\x69\x68\xec\xc8\xba\x96\x02\x53\xd5\x81\xaf\x6d\x88\x95\x36\x12\x29\x4e\x20\x40\x14\x8b\x21\xb1\x0d\x79\x0c\x3a\x3a\x0d\x8b\x66\x97\xbd\xf7\x59\x92\x1a\x7e\x68\x1c\xbc\x38\x92\x6d\x2a\xc3\x05\x10\x5f\xc4\x6a\x92\xd5\x2b\x93\xf9\xe1\xa3\xc1\xe2\x46\xd6\x82\xe8\xdc\x59\xd8\xcb\x2b\x1e\xc3\xa1\xfa\x03\xaa\x98\x50\x7b\x82\xfa\x60\x79\xd7\x0f\xb2\x0f\x4e\x72\xe9\xc7\x69\x7f\x11\x47\xef\xb9\x9b\x26\xfd\xc8\xf5\x93\x92\xee\xf5\x33\xbf\x5f\xe9\x2a\xfa\xbb\x8b\x45\xef\x2a\xe3\x68\x4a\xc5\x7e\x26\x50\x53\xb4\x20\xd8\xd6\xc4\x46\xa3\x7f\xd0\x7f\xbb\xbb\xd7\xaf\x76\x47\xd6\x8b\xdd\xe7\xbb\xa3\x5d\xf1\xb3\xb7\xfb\x7c\x97\x3a\xbb\xbb\xea\x69\xfe\x4c\x3c\xc2\x97\xd1\xee\xee\xde\x2e\xbd\xae\x12\x20\xc3\x8f\xfa\x15\x49\x4f\xe9\x48\x77\x4b\x8f\x8f\xde\xf1\x27\x68\x3b\xe5\xf3\x85\x90\xd3\x77\xc4\x08\x6f\x7b\xfe\xd5\x8e\xdc\x73\xc4\xa3\x01\xdb\x24\x3b\xdd\xc4\xc0\x9c\xa2\x1d\xbd\x41\x6d\x5f\x0e\x8d\x2b\xd0\xe9\xb2\x53\x54\x52\x90\xfb\x9a\x09\xb9\x4f\x4e\x91\xd1\xaf\x72\x2b\x76\xc4\xb8\xea\xfa\x33\x76\x8a\x36\xf1\x2e\xc6\x8e\x31\x38\x45\xc6\x07\x7e\xcb\x4e\x37\xf0\x2c\xa7\xc8\x90\x0c\x89\xc8\x21\xf6\xf0\x53\x54\x07\xbb\xc6\xc0\xd4\xa0\x35\x8c\x6d\xc0\xda\x12\xe2\x35\xd6\xa4\x01\xae\xca\xbe\x93\x6f\xf7\xe1\x6f\x2d\xbd\x1a\xb0\xaa\x67\x92\x32\xb5\x0d\xc7\x0a\xab\x01\xa3\x52\xd2\x10\x76\x2a\x88\xc8\x29\x32\xfe\x02\x14\x83\x9d\x6e\x14\x7c\x57\x81\xeb\x37\xa1\x68\x05\xaa\xc6\x8c\x94\xe3\xb3\x91\x0b\x69\x0c\x15\xd4\xa0\xd1\xc4\xb8\xea\x26\x41\x94\xda\xb2\x8f\x3b\xab\xf4\x49\x0e\x6b\x6d\xfc\x5b\xd8\x0f\xd1\xe7\x36\x4c\x01\x10\x56\x10\xa5\xde\x03\xc1\x6f\xc0\x21\x0e\x3b\xad\xf3\x19\x2d\xf9\xb7\xfb\x0d\xac\xbe\xa3\x1b\xaa\xe3\x6b\xed\xd5\x27\x72\xfd\x9b\x61\x5c\x75\x67\x91\xc0\x38\x2c\x2b\xa0\x06\x18\xc8\x13\xb1\x89\xa9\x2a\x4f\x5b\xc8\xbb\x61\xd8\x12\x95\x65\x1e\x49\xe5\x37\x64\xf4\xbd\x2a\x9f\xef\xb5\x67\x5a\x43\x9d\xb6\x4c\x82\x27\x61\xa7\x25\x53\xb2\xa1\x39\x3d\x65\x4b\xe3\x7e\x3b\x4f\x74\xdf\x96\x7d\x34\x2c\x63\x68\x74\x18\x33\x9a\xac\x91\x51\xb4\x57\x5c\x43\x85\x76\x5e\xac\xbd\x58\xb9\x04\xd4\x08\x28\xde\xa9\x2d\x73\xcb\xdc\x19\xc6\x72\x69\xd4\xc7\xd8\x28\x8a\x96\x19\xee\x97\x53\xfc\x69\xf8\x03\x05\x6a\xeb\x68\xe3\x12\x84\x8c\x62\x7f\xab\x52\x6a\x88\x07\x3b\x5e\x83\x0b\x6b\xee\x4c\x0d\x76\xcc\xb0\xf5\x6b\x6d\xbd\x36\xf7\xd2\x75\x60\xb7\x4b\xfe\xcc\xb8\xea\xc2\x1d\x39\x9d\xbd\x82\x53\x3f\x35\x8a\x9f\x86\xdb\x52\xcd\xbf\x73\x1a\xfa\xf3\x45\x14\xa7\xc6\xd2\x98\x3b\x8b\x57\x10\x03\x2e\xa1\xe2\x59\x2d\x54\x78\x96\x11\xe3\xc4\xd3\x9b\x2c\x05\x4c\x4c\x8c\xc2\x98\xc5\xd1\xdc\xb8\x7f\x95\xf1\x9b\xfb\x65\x35\xf5\x33\x00\x95\xa1\xd7\x2f\x89\x70\xfd\xab\x20\x54\xf7\x4f\x43\x7e\x03\xe5\x94\x7a\x4b\x32\x00\x20\x63\x18\xf7\x77\x17\x8b\xfb\x54\xbc\xd7\x0e\x19\x8c\x65\xb3\x89\xa2\xcc\x00\xa7\x02\xb2\xbc\x61\xf4\x7a\xbd\xaa\x3b\x35\xf2\x44\x8d\xc9\xfd\xc6\x94\xdc\xa7\xc6\xfd\x35\xfd\xfd\xfd\x29\xa1\xf5\x7a\xa0\xfb\x2b\xb5\xac\x6a\xa6\x65\x19\x59\x4a\xf7\xd7\xc0\x44\x03\x64\x18\x77\x9e\x18\xc8\x4c\x45\x59\xc3\x46\x42\xb9\xa9\xc6\x0d\x07\x08\xab\xf5\xae\xd1\xbf\x46\x85\x4a\xf1\x13\x3b\x61\x22\x10\xc5\x33\x98\xb1\x72\xb8\x70\x7f\xe3\x01\x82\x18\xc8\xcd\xa7\x0b\xf7\xa9\x71\xf7\xf1\xc2\x69\xd8\xd6\xab\xd6\x73\x86\x12\x3c\x6a\xe8\xf6\xec\xbb\x6b\x37\x0a\xb2\x3a\x10\x6a\x57\x6b\xe9\xbe\xfe\xc2\x8c\xc9\xb4\xf9\x45\x57\xaf\x74\xe8\x55\xf5\x6c\xc3\x1c\x28\x45\x9b\xbe\xfd\xc4\x76\x8c\x4e\xbb\x59\x20\x69\x4c\x97\x6e\xcf\x4f\x76\xc3\x5b\x55\x99\x6e\xd3\x60\x9b\xc1\x10\x4c\xd4\xc6\x0a\x54\x4b\x77\x95\xdf\xbe\x7b\x14\xab\x29\xf2\x67\x06\x6e\x03\xae\x36\x96\xe5\x08\xab\xa3\x8b\xfa\xfe\xea\x7b\xb6\x71\xff\x13\x0f\x55\xee\xd3\x7a\x49\x79\xa4\xd1\xc4\x0d\x7c\x5f\x76\xed\x3e\x69\x64\xd5\xc7\x1b\x62\x86\xd9\x8e\x2c\xd2\x76\xac\x91\xc6\x19\x27\x55\xc1\xa2\x7c\x2e\x36\xf7\x57\xcf\xda\xdf\xb3\xbb\xea\xd8\xe6\x53\xfa\xab\x86\xfb\x0f\x76\x78\xe6\x04\xc9\x47\x7b\xac\x16\xa1\xe6\x71\x42\xf5\xd9\x50\xfb\xad\x3e\xff\x69\x6e\xb7\x8a\x62\xac\x6e\xb7\xe5\x66\x2b\xb6\x88\x16\x88\x56\x77\xdb\x92\xc4\xac\x54\xb4\x89\x4b\xbe\x3f\x25\x15\x64\xea\x98\xa8\xb6\xae\xd7\x4e\x89\xaa\xcc\x8d\xd3\xa2\xd5\x22\x9b\x0f\x8b\xa0\x02\x90\x4b\xb7\x4f\xfb\x25\x1d\x15\x34\x35\xbd\x0d\x04\x79\xfd\xaf\x52\xfe\x1f\x92\xf2\xb7\xfb\x7a\x00\xd1\xb4\xa0\x70\xc2\xa2\x9c\xdf\x16\xa4\x20\xf4\xaa\xdd\x50\x60\x11\xac\x18\x09\x80\xb2\xff\x22\x60\x1f\x7a\x33\x7a\x1e\xb0\xa8\x27\x0d\x53\x94\xff\xc1\x16\xc7\x3f\xe7\x81\x69\xe2\x0e\x46\x9e\xb2\x7d\x10\x1f\xfd\xd0\x38\x0f\x2a\xe7\xaa\x24\xcf\x4b\xdf\xba\xe7\x01\x26\xbd\x5a\x5e\x22\x0f\x13\xae\x03\xf0\xa4\xdb\x72\xc8\xb0\x6a\x7e\xb2\x3d\xd4\xb5\x31\x56\xb3\x3c\x19\x4c\xc7\x32\x55\x7b\x9d\xac\x7f\x02\x17\x93\x62\x76\x6b\x2e\x7d\x8f\x02\x88\x77\x7c\x1e\xe0\x94\xd8\x65\x85\xe9\x58\x00\x68\x43\xaa\x8e\x2f\x07\x8e\x9f\x4d\x13\x5f\x07\x13\x3e\x65\x9d\x01\xa1\xbc\x18\x1d\xa4\xf8\x28\xa0\xe7\x81\x1c\xb0\x83\x80\x1d\xd5\x3a\xcc\xea\xbd\x1f\x1d\x04\xf5\xbb\x78\xec\x48\x1e\xa8\xec\x06\xec\x20\x28\xe3\xdb\xd1\xbd\x80\x21\x39\xd4\x38\xe5\x49\x4a\x10\xd3\x2e\xda\xce\x03\x8c\x52\x70\x9d\x41\xe8\x4d\xc0\xfa\x7f\x95\xd9\x4e\x31\xee\x7d\x41\x4e\xc9\xe4\xaf\x64\x6a\xdd\xeb\x8f\x2e\x02\x7c\x10\xd0\xc6\x34\xd0\xe5\xaa\x57\xc9\x0b\xde\x62\x02\x21\xc3\x27\x13\xe9\x02\x05\xec\x2f\x0f\x66\x58\xfa\x3d\xa1\x9c\xed\x06\xca\xa9\x0f\x9c\x88\x5e\xe3\xeb\x80\x96\x51\x1e\x10\x1a\x49\x3b\xa0\xbd\x60\xac\x63\xed\x3e\xa1\xdd\x21\xb1\xab\x20\x57\x37\x01\x45\xf7\x86\xa8\x31\x9a\xa1\x9e\xab\xb0\x28\x36\xf9\xdd\x19\x14\x74\x29\x7b\x6a\x1f\x05\x05\x29\x52\x8e\x91\x9f\xf2\xd8\x49\xa3\x18\xa9\x30\xcf\x01\x0b\x38\xdc\x45\xdc\x17\x42\x17\x7d\x1f\xb0\xce\x80\x3e\x0f\xd8\xf7\x1c\xa3\x32\x19\x91\x51\xed\xc5\x0f\x27\x53\xd3\x04\xbb\x5e\x3c\x24\x55\x61\x5c\x77\x30\x27\x2a\x1a\x16\x44\x82\x96\x3a\xb1\x18\x36\x04\x65\x90\x74\x73\x59\x03\xf4\x7d\x90\xe7\x9d\xe7\x41\x41\x97\x65\x5d\x6d\x4e\x7d\xce\x94\x5b\xa4\x4f\x8d\x1d\x0f\x87\x09\xcf\xc2\x66\x3f\x44\xa7\x3f\x04\xac\xf3\x2c\x6a\xda\x70\x00\x68\x3d\x21\x30\xe0\x94\x14\x84\x8c\x5a\xe0\x4e\x52\x27\xad\x81\xfd\x01\x20\x8e\xa3\xb9\xfd\x8d\xab\xa2\x66\xbf\x0b\xd8\x8f\x1c\x23\x98\x46\x44\xe8\xb1\x1c\x47\xf9\x4a\x97\xbb\xcf\x9f\xef\x1d\x1d\x1d\x1c\x1e\x89\x4a\x06\xf6\x80\x0e\xed\xad\x82\xd0\xc3\x80\x7d\x9b\x62\x94\x2c\xb8\x0b\x31\xe3\xe9\xeb\x80\x4d\xa6\x12\x17\xe8\xdb\x40\x86\xbd\x9e\x3b\x37\x6d\x20\xad\x0e\x65\xe7\x9d\x18\xcb\x63\x01\x19\x94\xb7\x37\x04\x8a\xa6\x3e\x9b\x2b\xcf\x9b\x0e\xcb\x52\xec\xeb\xa0\xbf\xd4\x65\x8b\x14\xa7\xd4\x21\x34\x11\x4f\xe5\xb2\xe6\x63\xc7\xe6\xd4\x01\x14\x7e\x9b\x62\x1f\x42\x02\xae\x05\x6c\xc7\x21\xf3\xeb\x4b\x95\xe4\x79\xd8\x61\x0c\xa0\x35\xcd\xce\xdb\x14\x6e\x8d\xeb\x4d\x6d\x7c\x0b\x21\xd4\xab\x08\xcb\xe1\xe4\x30\x50\x91\xd7\xd5\x1c\xda\xfa\x89\x86\x4c\xd5\x53\xdb\xbc\xc2\x32\xb8\xc1\x6b\xb5\xc6\x7c\xea\xd2\x84\xa8\xc8\xb0\x21\xbf\xae\x3a\x10\x8e\xa1\xb4\x1d\x12\xfc\x36\xc0\x49\xd7\xa5\x03\x22\xa3\x2e\xbb\xdb\xc9\xc8\xb5\x2c\x1a\x59\x16\x71\x05\xe5\xf0\x4d\x33\x08\x31\x0c\xd3\xc4\x9d\xd6\x82\x47\xcb\x41\x62\x11\x8d\x75\x9c\xf4\x7d\x35\xe3\x0b\x35\xe5\x27\x6a\xca\x17\x77\xcf\xf9\xbd\x6a\x5a\xe9\x0b\xfd\xec\x87\x9f\x34\xc5\xfb\x62\x8a\x4f\x60\x8a\x17\x77\xcf\xb1\x0a\x17\xbc\x9f\xaa\xa9\xce\xc4\x54\x97\xf1\x9d\x69\x20\xa7\x3a\x23\x74\xb6\x46\x23\x46\x32\x96\x2d\x9b\x8d\x43\x16\xb3\x81\x3d\x84\x67\x1c\xb2\x01\x8d\x59\xd6\x0d\x88\x8d\x43\x36\xeb\x6e\xd1\x98\xbd\x08\xf0\xbd\x00\xbb\x29\xe6\x84\x0e\x08\x15\x1f\x09\xcd\xac\xb0\x1b\xef\x7c\x39\x18\x3c\x19\x7e\xf9\xe5\xd6\xa3\x87\x4f\x1e\x0e\xbe\xfc\x72\xb8\xe6\x34\x17\xbd\x71\x6e\xfc\x79\x36\x37\x9c\x20\x88\xae\xb9\x67\x28\x2d\x0f\xbf\x71\x81\x79\x50\x91\xbf\x23\xe6\x72\x9c\xd0\x98\xa8\xc0\xab\x31\x04\x5e\xc5\x0e\x0b\x2c\x9f\xf8\xa1\x91\xc0\x84\x89\x1e\x27\x13\x67\x0a\x38\xaa\x4f\xf6\x59\x4c\xc3\xed\x58\x5a\x64\xfa\x2c\x18\xf9\xdb\x59\x57\x16\x77\x99\x6f\x85\x14\x3b\xcc\xb7\x62\xa8\x64\x9c\x4c\xdc\x29\x13\x35\xd8\x1e\x0f\x78\xca\x0d\x91\x30\x92\x25\xb3\x91\xbf\x93\x75\x63\x2b\x1c\xf9\xdd\x2e\x29\xbf\xfb\xdd\xe1\xb4\x8a\x6c\xb1\x13\x13\x95\x5b\xb4\xb1\x13\x40\x5e\x68\xa7\x3b\x54\x2d\x75\x87\x1f\x6f\x4b\x74\x31\x04\x18\x93\x89\x6f\x05\xd3\x1a\x91\xf6\xad\xad\x69\x19\x4a\x57\x77\x11\xe0\xa2\x91\xc6\xc9\x37\x92\xf7\x78\x19\xb0\x97\x0a\x33\x6a\x5e\xda\x7f\x0e\xd8\xcb\x1a\xd1\x7c\x26\xc8\xe1\x69\xf2\x45\x69\x1d\x84\x27\x7f\x35\xf0\xf4\x0b\xd2\x1f\x39\xa6\xd9\xc1\x08\xac\xd9\xfd\xd0\x78\x19\x10\xd3\x7c\x13\xe0\x97\x01\x95\x69\x1f\x25\x8d\x35\x2f\xe4\x3f\x07\x35\x3f\xa3\xca\x37\xdb\xb3\x80\x4c\x86\xd3\x35\x37\xe4\xa8\xd0\xdd\x78\x15\xb0\xac\x37\xa3\xbf\x04\x6d\x81\x55\x57\x1d\x12\x28\xac\x67\x73\x19\x4a\xfd\x24\xc5\x80\x2c\x1a\x0b\xa8\xcb\x06\x34\x61\x93\xe9\xc8\xdf\x71\x47\x10\x36\xde\xb5\xac\x29\x15\x7d\x7c\xa5\x80\x8b\x69\x48\xf2\x5c\x49\x50\xe9\x78\x12\xd2\x78\x12\x4e\xa7\xb6\xf8\x25\x55\xf8\xe2\x82\x7e\x17\xb0\x25\x0f\xd3\xd8\xe7\x89\xfd\x4b\x80\x05\x3b\x03\x34\x5f\xbe\x0d\x49\x21\x59\x80\xa4\xb1\x9a\xa5\xb5\x6b\x49\x44\x0a\xba\x54\x65\x5a\x3a\xf7\x5d\x00\x5e\xd7\xe4\x30\x7c\x15\xb0\x43\x7e\xb1\x77\xb3\xa8\x4d\xe2\x0f\x01\xfb\xaa\x36\x89\x3f\x06\xcc\xc7\xeb\xee\x5d\x51\xdf\xe9\x9f\xa3\x0e\xfb\x41\x75\xb0\x3c\xd5\x74\x10\x9d\x05\xce\x45\x62\xa3\x73\x24\xad\xb7\xbf\x09\x58\xe5\x29\x16\x4a\x88\x39\x1e\xe1\x1f\x83\x3c\xff\x46\xcc\x3c\x4f\xf1\x1a\x14\x1b\x7c\xcb\x4a\x96\xe8\x7d\xe9\x99\x5c\xfb\xc9\x55\x96\x5b\x04\x8c\x5b\xa0\x7d\xcd\xd0\xf4\x21\xfc\x70\x1f\x59\x2a\x6b\xb5\x67\x9b\x66\xda\x08\x22\x01\x20\x00\x5e\x42\x05\x02\x31\xbf\x0a\xc8\x38\x70\x35\x87\x65\x87\xe0\xc7\x36\x0b\x13\x67\x26\x7d\xd8\xc2\x20\x7e\x1d\xac\xf8\x0f\x57\xf1\x98\x79\x9e\xf3\x1d\x1d\x78\x96\x40\x10\xe6\xf2\xad\x74\x35\x2d\x37\x3d\xc1\xea\x4a\xa6\x87\x93\x51\xb8\xcd\x21\x30\xb3\xc0\x0d\x08\xb3\x5c\xd2\x08\x79\xdb\xe8\xdb\x26\xd2\xfa\x33\x2c\x19\x0c\x3f\x91\x55\x94\xfc\x9f\xf1\x35\xcc\x35\x14\xfa\x7e\xad\x50\x9b\x29\xa0\xe4\xe8\x4c\x53\xfe\xed\x69\x86\x0e\x24\x1e\x69\x8b\x5d\x55\xde\xe4\x6a\xa4\xbb\xb2\xd5\x91\xf0\x67\xba\x31\x69\xe8\x56\x0f\x8e\x5d\x83\x91\x72\x32\x6a\x98\xec\x97\x78\x50\xe2\xa1\x9e\x03\x1d\xc1\x5f\xb0\xb1\x7a\x8a\x0f\x74\xe0\x6d\x98\xd3\x3a\x8b\x00\xd4\xbe\x91\x02\xb8\x47\x28\x7a\xe3\x2c\xa0\x40\x9e\xa3\x23\x2e\xcb\x8e\x1b\x3d\x12\x34\x52\x6d\x8c\x2a\x63\xff\xaf\x78\x6c\x9f\xf8\xf9\x3e\x09\x53\x3c\xb6\x9f\xe6\xc3\xc7\xf9\x83\x2d\x82\xc7\xf6\xf3\xc0\x99\x2f\xb8\x47\x64\x0d\xf7\xb4\xdd\x24\x19\xab\xce\x69\x49\x4f\x8e\x52\x3a\x63\x0d\xe3\x4d\xed\x1e\xaf\x46\xb9\xca\x18\x75\x69\xca\xe7\x8b\xd4\x48\x23\x23\x59\xc4\xdc\xf1\x8c\x30\x02\x21\x15\xf6\xc5\x12\x7b\x7b\xa7\xe1\x7e\x68\x44\xb1\xc7\x63\x91\xf5\x9c\x1b\x3a\x0b\x85\x02\x8e\x00\xcb\x90\xf1\xc9\x13\x63\x2e\x64\xd8\x4b\xe7\x8a\x1b\x8e\x31\x59\x99\xe9\x29\x26\x4a\x01\xd2\x43\x6a\x52\xf9\xac\x6d\x8f\xfc\x36\x80\x68\x41\xdf\xcb\x3f\x3f\xc9\x3f\xe9\x0c\x93\x82\x86\xb3\x8a\xff\x88\x67\x25\xff\x41\x23\xf5\x3c\x0b\xa2\x28\xa6\xce\x8c\xf5\x4f\xef\xe1\xc9\x3d\xf3\xfe\x7f\x98\xe6\xa7\xde\xa9\x37\xce\xb7\x27\x7f\xdd\x99\x7e\xb1\x43\xfa\x17\xd4\x5d\xff\x4c\xfa\x17\xa3\xd7\x2e\x46\x4a\x74\x41\x74\xab\x6e\x71\xd1\x08\x44\xcc\xe2\xde\xe1\xde\xab\xbd\x1f\xde\x9d\x1d\xee\xbd\x7b\xbd\xfb\x7c\xef\xec\xe8\xe4\xd9\xd1\xf1\xfe\xf1\xc9\xf1\xde\xd1\xd9\xc9\xdb\x17\x7b\x2f\xf7\xdf\xee\xbd\x38\x7b\xbe\xfb\xee\xf8\xe4\x70\x8f\xfa\x50\x40\xe6\xfc\x66\x6f\xef\xdd\xd1\xd9\xbd\x01\x75\x58\x34\x46\xf7\x90\x8d\xee\x0d\x74\x10\x90\xda\x9d\xf3\xaa\xad\x2b\xb5\x1b\xf9\x4c\xae\xfb\x4a\x7c\x9a\xa4\xe5\xda\x2d\x25\x6c\x7f\xec\x2b\x87\xa9\x34\xa2\xb1\x10\xc5\xe0\xad\x8c\x52\x03\xbd\xa8\xdd\x5f\x4f\x45\x43\xfe\x0c\x77\x22\xd3\xf4\xf3\x7c\x6d\x21\xc5\xa6\xd9\x1d\x82\x4f\x17\xed\xdf\xca\x51\x42\x7b\xc2\x42\xf0\x04\x0e\x82\x4d\x0c\x8c\x4b\xd2\xf3\xa2\x90\x93\x92\xc6\x03\x99\x80\xab\x0f\x99\xd8\x54\x05\xdb\xa6\x77\x54\xe8\xd2\xac\xcd\x97\x70\x3c\x9a\xe5\x39\x8e\x75\xce\x98\xc8\xc5\xbb\x60\x59\x4f\xca\x89\xa2\xa5\x85\x84\xc1\x63\x59\x2f\x0b\x7d\x37\xf2\xf8\x28\xeb\x05\x4e\x92\x82\xb0\xc4\x06\x85\xde\x00\x2f\x05\xe1\x1c\xc9\xdc\x57\xec\xc4\xc5\x19\x0d\x64\x58\x1e\xc9\xb9\x5f\x11\x19\xa2\xc8\x9f\x61\x15\x33\xea\x8a\xd0\xce\x42\xa5\x82\xbc\xaa\x77\xf6\xc9\x00\xf8\xfb\x7a\x3b\xfb\x2e\x0e\x68\x96\xd6\xd3\x08\xf5\x08\x29\x9b\x9f\x53\xf0\xf7\x7e\xc1\x06\xf4\x9c\x0d\x46\xe7\xdb\x3a\xa8\xd4\xe8\x1c\xee\xd1\xb0\xcb\xc9\xf9\xb4\xdc\xad\xaf\x1b\x6d\xd1\x23\x16\xce\x70\x3c\x13\xfc\xe9\x95\x1c\x7e\x42\x83\x92\x05\x1e\x10\x7a\xc0\x26\x53\xba\xcb\x86\xa3\xdd\xed\x2b\x5d\xef\xae\x65\x91\x03\xd5\x13\x4d\x8b\xf0\x9c\x5d\x4d\x76\xa7\x64\x3c\xd7\xfa\x91\xb9\x1a\xd5\x3d\x76\xd5\x83\x4b\x57\xe0\xb0\x54\x05\x2d\xbc\x61\x93\xeb\xd2\x6d\xee\x01\x3d\x12\x23\x56\x22\xd8\x9e\x69\xde\xc8\xea\xf7\x94\x1c\x5e\xce\x94\xba\x5d\xa4\x84\x9e\x1b\xed\x7c\xf2\x8c\xb9\xf8\x9a\x06\xf4\x88\x1e\xd0\x3d\x81\x29\x47\x3b\xec\xc2\x34\xf1\xad\xc5\x02\xb5\xdf\x5e\xd0\x23\x62\x9d\xd1\x0b\x76\x64\x5d\xeb\x0e\xea\xbb\x33\xb7\x56\x99\x8b\x14\xd3\xca\x16\xdc\xc5\x69\xe5\xc7\x5a\x02\xee\xb2\xd8\xd2\x34\x90\x26\x15\x07\x95\x31\x77\xb6\xbe\x52\x20\x06\xd8\xbe\x90\x07\x69\xc6\x9c\x19\xa1\x6a\xad\x38\x34\x6b\x58\xd5\xa9\xca\xb3\x91\x72\x1b\xe5\xd4\x82\xcb\x83\xd3\x28\xb1\x8a\x15\xad\xb8\x87\xc0\xc5\x11\x32\x4b\xcf\x46\xa9\x4c\xf8\x0f\x75\x3f\x58\x2a\x7c\x7c\x2c\xfd\x21\xa1\xfb\x6b\xdf\x5c\xf5\x65\x1b\xd9\x19\xf3\x27\x8e\xf6\xc6\x2f\xc8\xd2\x54\x05\xd5\xd2\xfe\x7a\xe1\x66\x11\xb3\x1c\x2d\xf6\x04\x7a\xfd\x81\x59\x7a\xb0\xa3\x6e\x9e\xcd\x58\x34\xc3\x41\x7f\x38\x28\xf9\x41\x29\x23\x71\x7b\xb6\xcd\x92\x71\x89\x2b\xd1\x64\xd6\x1d\x4e\xc7\x4e\x15\x2a\xdf\x96\x49\x56\x3d\x89\x17\x19\x8b\x26\x81\x90\x20\x1a\xe3\xca\x18\xcb\xc6\x08\xd9\x59\x01\x06\x91\x2a\xb2\xd5\x6c\x2d\xa2\xbb\x98\x35\xb2\x4c\x57\x63\xcf\x43\x76\x87\x95\x46\xc3\xf5\x2b\x76\xb1\x3e\xe9\xd9\x19\x98\x26\x76\x18\xb7\xd0\x18\x59\x07\x8e\xd8\x21\x68\x38\x4e\xa2\x49\x3a\xc5\x0e\x0d\xa9\x4f\x6c\x74\x21\x89\x6e\x5a\x26\xfb\xc4\xd6\x8f\x07\x8e\xd8\x07\x7d\x52\xd0\x6c\xb6\xa6\x71\xa4\x7c\x3d\xa8\xd8\xc0\x34\x4b\xac\x69\xe8\x1c\xeb\x2f\xf6\xb2\x80\x60\xfd\xca\x33\xd8\xb8\x7c\xb2\x11\xa2\xb1\xf8\x20\x65\x0e\x1a\x31\xd4\x77\x16\x7e\xff\x6a\x50\x1d\xee\xae\x98\x17\xfa\x6c\x59\x50\x87\x2d\x8b\x35\xa4\xe5\xbd\xf3\xc8\xbb\x85\x10\x0d\xf2\xb1\x66\x47\x2f\x13\xc6\xef\xe2\x68\xee\x27\xbc\x17\x73\x79\xbb\xad\xf2\x8c\xfb\xc6\x4f\x12\x3f\xbc\x30\xf4\x8d\x76\xc3\x58\x38\xb1\x33\xe7\x29\x8f\x6d\x43\x94\x45\x84\xd8\x98\xf7\xee\x41\xa8\x89\x77\xfa\x5b\x62\x9a\xf5\x79\x58\xff\xde\x76\x7d\x4e\xf0\x65\x93\x74\xca\xd6\x73\x4f\xd2\x29\x04\xb1\x98\x61\xb4\x88\x44\x6f\x43\x2b\xa2\x29\x48\xfc\x10\x9b\x2b\xf8\xa7\x9b\x14\x19\x8e\xe3\xbf\xec\x69\xa9\xf6\xdd\xd9\xec\x5f\xfa\x12\xec\x62\xf6\xa7\x5c\x82\x9d\xcd\xfe\x19\x2f\xc1\xd6\xa1\xfa\x47\x86\xa1\xf0\xea\x38\x34\x6a\x4a\x8b\xac\x29\x2d\xca\x80\x85\x8c\xa5\x6b\xb2\x44\xab\x6c\x9a\xe7\x38\x5c\x97\x12\x3b\x69\x2d\x32\xf5\x66\x61\xf1\x72\xf6\xc7\x85\xc5\x3f\x20\x26\x02\x30\x2d\x92\x62\xab\x08\x0c\x99\xff\x76\x99\x71\xa5\xab\x85\x90\xb8\xf3\x9c\x9b\x66\x6a\x9a\xca\xc6\xb4\x36\x30\x9a\x17\x5b\x86\xb0\xb7\xa9\x48\x95\x31\x1b\xd0\xa8\xbe\x49\xeb\x0d\x71\x99\xd8\x11\x6d\xbb\xb3\x10\xef\x94\xba\x89\xf1\x52\xc8\x08\x76\x67\x50\xd8\xea\x69\xa8\x1d\x81\x4d\x62\xcb\x9a\x16\x05\x6d\x3a\x82\x95\x12\x6c\x5a\xd0\x99\x1d\x15\xc5\xa7\xca\xb3\x12\x4b\xf8\x3f\x56\xa0\x15\x83\xe3\x53\x87\x75\x06\xd4\x65\x9d\x61\x35\x2a\xb5\x11\x09\x5b\x30\x19\xc4\xda\xf5\xa3\x39\xe9\x77\x16\x97\x0c\x9b\xc3\x52\x10\xb0\x68\xba\x3a\x46\xae\x68\xd2\x67\x30\x48\x2b\x6a\x4c\x47\x2f\xa0\xb0\x27\xab\xc9\x73\xfd\x84\x49\x31\xf3\x43\x27\x08\x6e\x21\xe8\xb2\xd2\x70\xfb\x45\x51\x54\x2b\x55\xe1\xc9\x9f\xa8\x74\x02\xc9\x6c\x26\x6f\xc6\x27\x0b\x47\x1e\xff\x81\xae\x91\xdb\x4a\x4f\x0b\x0e\xa0\x69\x65\x88\x00\xf1\x2a\x2a\x67\x3d\x05\x5c\x2a\x49\x64\xae\x55\x4b\x22\xb8\x3a\x71\x21\xad\xd9\xca\xfa\x5a\x7d\x97\xca\x6f\x05\x6d\x18\xb9\xb5\x67\xad\x81\x02\x95\x37\x2d\xd2\xda\xca\xa8\xcd\x44\x2a\x4e\x6b\xbe\x2d\x48\x2f\x89\xe2\x14\xe3\xe6\x96\x55\x36\xb4\xc9\x0f\x26\xf0\x15\x9b\x3e\x8e\xd3\x9e\xef\x41\x30\x88\x80\x3f\x8f\xe6\x0b\x27\x56\x0e\xe9\xec\xcd\x15\xae\x65\xdf\xec\x81\x53\x30\x69\xed\x0e\x7a\xda\x07\xcb\x69\xda\xd5\x41\x20\xe5\x4d\x97\xf6\xab\x0b\xee\xcb\x20\x72\xbc\xe7\xab\xd3\x05\xa8\x38\xa0\x62\xb2\xe6\x73\x3f\x25\x18\xbd\x3e\xd8\x7d\x71\xf6\xfc\xe0\xed\xcb\xfd\x57\x08\x7c\xf8\x55\x73\xd3\x06\xce\x3f\xca\x7d\xb0\xdc\xf0\x05\x8c\x10\x27\xd6\xf3\x93\x85\x93\xba\x97\x95\x17\xe1\x18\x23\x88\x85\x51\x5d\x57\xd4\x2e\x81\x4b\x97\xb8\x90\xf3\x51\x99\xf3\x10\x7c\x97\x97\x0e\x96\x43\x8c\x8e\xf6\x8e\xcf\xf6\xdf\xee\x1f\xef\xef\xbe\xde\xff\x69\xef\x05\x12\x8c\x85\xfc\xfc\xf8\x0e\x17\xbb\x75\xef\xba\xb4\x01\xc3\x1f\x19\x30\x29\x7f\xff\xd9\xc3\x96\x45\x18\x47\xe0\x80\x38\x4a\x95\x69\x2a\x69\xf3\xce\xfc\x90\x66\xb3\xca\x3b\x73\x74\x97\x77\xe6\xd2\x09\xf3\x43\xed\x80\xdb\x5f\xf1\xc0\x3c\xc6\x0e\xf3\x95\x03\x6e\xed\x8a\x46\x8d\xba\xb6\x6d\x42\xd4\xc9\xf3\xc9\x94\x10\x3b\xc6\x0d\x57\xe8\x54\xb9\xd5\xae\xf9\xd2\x86\xa1\x2e\x0d\x5c\x7b\x48\x7a\xd3\xf6\xef\xf2\xa6\x4d\x97\xa2\xc3\xf2\x2c\xe0\x0f\xcc\x2b\x60\xcc\xbf\xc2\xa4\x9e\x39\x7f\xc6\xa4\x9e\x67\xa1\x17\xf0\x72\x4e\x0f\x0f\x5e\xef\xfd\x81\x09\x95\x3e\xb1\xff\xdc\xd9\x5c\xf7\x5a\xd6\xe6\x2b\x5f\x0f\xb2\x18\x6f\x45\xf1\x60\xc0\x81\x96\x8e\xc2\x0d\x5e\xd5\xc6\x1c\x6f\x76\x1f\x41\x6c\x2e\x07\x47\x26\xed\xbd\xa8\x61\x3e\x9f\xe1\xb8\xa2\x63\x25\x94\x0d\x03\x45\xbb\x95\xae\x7d\xcc\x93\x7f\x15\x99\x8e\x06\x74\xf6\xb7\xfb\xf5\xaf\x86\x26\xaa\xe3\x9f\xaf\xc7\x06\x62\x75\xd7\xb0\x90\xba\x6c\x32\x15\xe8\xe9\x34\xd0\x31\x61\xde\x0c\xfb\x6b\xb4\x0b\xe4\x4a\xd1\xec\x43\x9a\xf4\x12\x5c\xce\xad\x3f\xc3\x38\x63\x49\x2f\xc4\x84\x48\xc5\xf8\x52\x45\x12\x18\x3e\xae\x5c\xba\xe3\x80\x65\x92\x2d\x20\x2b\x96\xcd\x1d\xc6\x6a\x45\x06\x4d\x9f\xed\x61\xe9\xb3\xdd\x8d\xc2\xd4\x0f\x33\x8e\xe8\xf0\xa1\x6a\x7b\x58\x2d\x3d\x55\x7a\x8b\x06\xb5\x7d\xd1\xf9\x04\xaf\xf5\x70\x83\x37\x00\xaf\x59\x0d\xa8\x6c\x5e\x50\xa9\x10\x39\x9b\x3b\xc9\x07\x7b\xb9\x70\xd2\xcb\xc4\x9e\xa0\xa6\x81\x2f\x9a\x16\xe5\x5a\x1c\x6e\xe9\xc5\x38\x5b\x0d\x71\x10\x63\x74\xf2\xee\xc5\xee\xf1\x5e\x19\x16\x82\x2e\x66\x78\x31\xc3\xcb\x82\x06\x0d\x17\x42\x55\xf3\x84\xd8\xae\xb2\x15\xd6\xb0\x06\x3d\xcf\xaf\x3c\xe9\xd2\x6a\x0d\xda\xb3\xda\x82\x2c\xe1\x79\x68\xab\x71\x51\xf3\xa0\x92\x1f\xeb\xe4\xad\x61\x23\xfd\xa9\xad\x26\x78\xf8\x94\x86\xbd\x74\xc0\x42\x15\xe2\xe9\x21\xa1\x49\x8f\x63\x91\xa6\xaa\xde\x1a\x56\x23\x0f\x45\xb6\x86\x34\xe9\xcd\xb0\xc0\x91\x99\x1f\xfa\xc9\x25\xde\x1a\xea\xbc\x0f\xc1\x34\xc5\x55\xbc\x8f\x69\x46\xed\x3b\x0e\x1f\xd7\xf6\x1c\x69\xda\xad\xa9\x48\x0f\xd5\xf7\x23\x65\x07\x5d\x7d\x94\x7b\x92\x3b\x19\x4c\x3f\x71\x5b\xa2\x6e\x69\x96\xf6\x47\xc0\x49\xee\x84\xa7\xdc\x24\xf9\x18\x3d\x8f\xb2\xc0\x33\xc2\x28\xd5\x35\xcc\xb3\x20\xf5\x17\x2b\x55\x55\xb9\x74\x55\x2d\xd9\xee\xec\x4f\x7c\xd7\xde\xa6\xa6\xe1\xc9\x47\x62\x55\xc8\xdb\xe3\x93\xc9\x43\x3a\x7c\x4a\xb7\x86\x74\xeb\xe1\x74\x5a\x46\x27\xa0\x73\x6d\x72\x6d\x2f\x6b\xac\xe8\x6a\x54\x3a\xb5\xe0\x18\x2f\xe8\x0a\xd3\xb6\x96\xb3\x26\x5b\xe8\xec\x1a\xf8\xb5\xbc\xe5\xc5\x27\x95\x11\x48\xd8\x5a\x2e\xa0\x50\x22\xcb\xa6\xe8\x02\x6d\x66\x58\x6d\x4c\xba\x3e\x02\x14\x02\xdd\x4e\x77\x38\x6e\xc9\x22\xed\xba\x70\x28\xc3\x5d\xad\x7d\x86\x65\x2b\xb8\xf4\x56\x9a\xb2\x06\xf9\x6a\x79\xd1\x89\xe6\x7e\xb1\x01\x74\xa7\xba\x47\xb2\x6e\xe2\xb9\x16\xb0\x02\xdc\x9f\x13\x32\xaa\x95\xab\xfa\x01\x42\xc5\x26\x24\x6a\x6a\x2a\xd6\xe1\x9d\x88\x6d\x90\xce\x67\xab\x9e\x6e\x11\xad\x3b\xa4\x42\xd4\x77\xa3\xd0\x06\x6f\x3a\xdd\x2b\xd7\x89\x3d\x44\xfd\xe4\xa5\x1f\xf0\x3d\xcf\x4f\xa3\x58\x88\xbb\xfc\x26\xe5\x61\x02\x88\x36\x99\x96\x0a\x17\x67\xb1\xd8\x0f\x67\x91\x3d\x9f\xd1\x38\xca\xd2\x9a\xd7\xf5\xaa\x6e\xb1\x41\xdb\xa8\xdf\x74\x38\xe7\x2c\x16\xf6\x6d\x50\x14\x53\x1a\x3a\x57\xfb\x60\x96\x3e\x59\x87\xd1\x8d\xc2\x37\x4e\xca\x63\xdf\x09\xec\xf9\xac\x27\xde\x65\x3b\xf6\xc6\x56\xf4\xb9\xa1\xc8\xee\x51\xd4\x47\xa4\x00\xdf\xed\x51\xcc\xed\xab\x19\x9c\x09\xfd\x37\xff\x5f\x00\x00\x00\xff\xff\x41\x14\xb2\x49\x85\xd1\x01\x00") // FileAccountsJsMap is "accounts.js.map" var FileAccountsJsMap = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\xfd\x8b\x76\x1b\xb9\xd1\x28\x8c\xbe\x0a\xac\x6f\x7e\x93\x1c\xf3\x62\xcd\x3d\x54\x14\xc7\xb1\x65\x8f\x12\xdb\xf2\xb6\x14\x67\xe7\x48\x5a\x32\xc8\x06\x49\x8c\x9a\x0d\xa6\xd1\x94\xcc\xd8\xda\xef\x73\x5e\xe3\x3c\xd9\x59\xa8\x2a\xdc\xfa\xc2\x8b\xec\xf9\xf2\xed\xdf\x59\x2b\x23\xa2\x81\x02\x50\x28\x14\xaa\x0a\x55\x85\x4f\x7b\x37\x22\xd7\x52\x65\x7b\xc3\xef\xbb\x7b\x13\x99\x8a\xbd\xe1\x1e\x1f\x8f\xd5\x32\x2b\x74\xff\x37\xbd\xd7\xdd\xd3\x6a\x99\x8f\x85\xde\x1b\x9e\xef\xf5\xfb\x83\x4c\x25\xe2\x6a\xae\x92\x65\x2a\xf4\x20\x17\x53\x91\x89\x9c\x17\x2a\xef\xe5\xcb\xac\x90\x73\x31\xa0\xff\x62\xdb\x72\x83\xb1\xca\x45\xef\x37\x3d\x90\x59\x21\xf2\x8c\xa7\x7a\x30\x4d\xd5\x88\xa7\xdb\xd6\x9e\x70\x99\xea\x6d\x2b\x27\x42\x8f\x73\xb9\x28\x54\xbe\x75\x13\x35\xfa\x4d\x8c\x8b\xde\x22\x57\x0b\x91\x17\xab\x9e\xd4\x3d\x91\x2d\xe7\x22\xe7\xa3\x74\xeb\x29\x8d\x73\xc1\x0b\xe1\x81\xf8\x71\x6c\x0d\x21\xe5\x5a\xab\x49\x2f\xe7\xb7\xdb\x36\x91\x59\x22\x3e\x8a\xa4\x87\x33\xd8\xb6\x55\x2e\xfe\xb5\x94\xb9\xa0\x56\xbd\xb1\x12\xf9\x58\xee\x30\xd5\x42\xf5\xee\xd7\xb1\xd4\x3b\x36\x28\x54\x6f\x91\xcb\xb9\x2c\xe4\xcd\xd6\xa3\x9b\xf1\xed\x69\x45\x8d\x97\x73\x91\x15\x3d\x5a\x3c\x91\x0a\xf3\x73\xeb\xe9\x88\x5f\x7a\x89\x9a\xf7\x12\x31\x91\xd9\xd6\xe3\x23\xac\x4f\x45\xd1\x53\xb7\xd9\x97\x10\x0c\xcf\x76\x44\x27\x75\x8d\xe3\x75\x3d\xef\x48\xe1\x99\xca\x82\xed\xb1\x33\x14\x2d\x8a\xde\x6e\xdb\x5f\xcf\x78\x2e\x92\x9e\x2e\x54\xbe\x35\x92\x65\xa6\x17\x66\xaa\xc8\xc6\xb6\x6d\x95\x71\x43\x68\xbd\x5b\xc1\xaf\x7b\x73\xbe\xd8\x81\xac\x17\xcb\xed\xc7\x86\xf3\xd9\xb6\xf6\x52\x6e\x5d\x95\x10\x75\x2d\xb6\x5e\x8c\x99\x4c\x12\x91\x99\x16\x5b\xef\x19\xfb\x57\x4f\x17\xbc\xd8\x7a\xce\xb9\xd8\x6d\x93\x2c\x78\x31\xdb\xfa\x30\x11\x45\x6f\xb4\x94\x69\xd1\x93\xd9\x4e\x2c\xac\x10\x53\xb1\xf5\x66\x2b\x54\x2f\x15\xd9\x74\xfb\x61\x15\xaa\xc7\x47\x5a\xa5\xcb\x42\x20\xbb\xdc\x7a\x5b\xe7\x39\x5f\xf5\x64\x36\x4e\x97\x89\xd8\xf5\x10\x33\x4b\xd9\xb3\xa5\xdb\xb6\x35\xdb\xb9\x37\x5a\x4e\x77\x22\x84\x26\x3e\x96\xf1\xf9\xce\xa3\xae\x00\xd1\xab\xf9\x48\x6d\x7f\xe8\x9b\xb6\xbb\x8c\x7d\xac\x16\xab\xde\x58\x65\xba\xc8\x97\x63\x23\xc7\x50\xc7\x72\xfb\x91\x4b\xdd\x9b\xa8\x7c\xbc\xfd\x46\x16\x1f\x17\x2a\xdf\x9a\x55\x13\x2b\x42\x3c\x6c\xcd\x2b\xb4\x6d\xd1\xe3\xba\xb7\x03\xe7\x90\xba\x07\x54\xb7\x03\x6d\xdf\xeb\xe4\xb9\x07\x7d\xc5\x87\xd5\x0e\x0b\x34\x2b\xe6\x5b\x23\xce\x4a\x42\x70\xc2\x7d\x95\x0d\xd0\x13\x1f\x77\xdb\x83\xb7\x22\x4d\x7b\xd7\x99\x81\xb4\xdb\xa2\x57\x1a\xf6\x6e\x73\xbe\x58\x6c\x4f\x98\x84\xe1\x7b\x0f\xc0\x9c\xe8\x85\xea\xe9\x22\x97\xd9\xb4\x57\xf0\xe9\xd6\x8c\xae\x37\x59\x66\xe3\x42\xaa\xad\xd9\xb6\xad\xdf\x1b\xc9\x2c\x31\x1b\xb8\x10\x1f\xb7\xa6\x41\xe4\xab\x46\x2e\x90\x42\xef\xb8\xd6\xc4\x93\x0b\xa3\xf6\x6c\x1c\xaf\xfd\x2d\x74\x7f\x37\x4c\x8a\x6c\x6a\x56\x62\xa9\x45\xde\xe3\xd3\x1d\x24\x51\x6a\x78\xf3\x4b\x8f\x14\xbb\xdd\xe6\x35\x17\xc5\x4c\x25\xbd\x19\xd7\x0e\x3d\x7a\xb9\xd8\x85\x5d\x45\x70\x96\x5a\xe8\xde\x96\xe7\x65\x80\x2b\xe4\x40\x13\x99\x16\xdb\x9f\xca\x51\xbf\x52\x03\x11\x6e\xcf\x95\xb0\xf5\x44\xe5\x3d\xc1\xc7\x3b\x0f\xf4\x7e\xcd\xb4\xda\xa4\x26\x07\x4d\x88\xc9\x7e\x05\x5d\xa1\xa4\x9e\x7e\xc5\x11\x6c\x60\xc8\x55\x58\xbb\x1c\x02\x46\xbd\x82\x5d\x37\x4a\x37\x71\x7e\xfb\xfb\x56\x8c\xfa\xa6\xd9\x58\xa5\xa9\x00\x6e\xa1\x37\xac\xd5\x9f\x47\x7c\x24\x52\x6b\xc3\x18\xcc\x44\xba\x10\xb9\xe5\x8b\x6f\xd7\x62\x2c\x57\x69\xba\x5c\xf4\x16\xe9\x72\x2a\xb3\x9e\xf9\x44\xca\x8d\x1e\xe8\x7c\xbc\xd6\xce\x71\xb3\x14\x1f\x07\x89\xd4\x05\xfc\xd5\x17\x7a\xbe\x35\xd9\x26\x89\xd9\x5e\xcb\x4c\x8f\xd5\x62\x07\xcc\x04\x7b\x2c\xdb\x70\x3a\x54\x9a\x80\x04\xdb\x53\x93\xad\x30\x18\x58\x88\x06\x6b\x44\xdf\x06\xbc\x73\xbd\xca\xc6\x67\xea\xa5\x05\xe1\x1a\x2f\xa5\xab\xb3\x2c\x1a\x4d\x42\xfc\xa3\x54\x7a\x90\xca\x91\xab\x3c\x6a\x9c\xae\xaf\xbb\x1b\xc0\xa5\x4c\x93\xbf\xbf\x7b\xb5\xa9\xbe\xc1\xe6\xe0\xd8\xac\xdb\x58\x98\xad\xf2\x9a\x67\xbc\x51\xe5\x28\x35\x2b\x72\x9e\xe9\x89\xca\xe7\xcf\x79\xc1\x37\xb6\xe0\xd9\x58\xa4\x03\xa9\x9f\xc1\x1f\xf5\xd5\x17\xb9\x1a\x0b\xad\x7b\x42\xff\x34\x18\xe5\xea\x56\x6f\x1e\x89\x9d\x70\xa6\xf2\x39\x4f\xe5\xbf\xc5\xaf\x82\x27\x22\x7f\xc3\x9b\x78\x58\x69\x12\x22\x9b\x99\x01\x1d\xe5\x79\x13\xa7\x2a\x35\x40\x36\xb5\x7d\x7d\x2d\x8a\xa2\xc9\x70\x55\x9d\x86\xd4\x4f\x49\x23\xdb\x62\xf1\x6c\xa3\xb1\x9a\x8f\x64\x66\x5a\x6c\xa4\x0f\x18\x12\x10\xc7\x8b\x65\x9a\xbe\x6d\xd4\x61\xab\x9d\x2c\x78\xae\x09\xb9\x5b\x53\xa1\xd4\x7f\x7f\xf7\xea\x94\xcf\xc5\x49\x2e\xa7\x4d\xaa\x6f\xdd\x7c\xd4\x75\xa3\x18\xed\xab\xf3\x84\x2f\x0a\x53\xff\xe3\x6c\xe3\x52\x24\x62\xc2\x97\x69\xb1\x1d\x7e\x12\xa9\x17\xbc\x18\xcf\xde\x89\x7f\x2d\x85\x6e\x38\xab\x4b\x6d\xe6\x22\x9f\x8a\x67\x2a\x9b\xc8\x06\xe1\xb2\x54\xff\xa9\xf9\xb9\xe5\xa6\x59\xb7\x65\x1a\x2a\x9f\xa9\x6b\xb1\x35\xbe\xf5\x22\x17\x7c\x23\xff\xe1\x9b\x46\x1c\xf3\xd1\x80\x15\xf2\xe5\xce\x32\xd6\x6f\x6a\x93\xa5\xa4\xd2\x64\x07\x73\x58\xa4\x0b\xec\x2a\x48\x92\x11\x7c\x47\x1d\xcc\x75\xb9\xab\x2c\xb2\x65\xc3\x8a\x5e\xbe\xc8\xd5\x5c\x6a\x11\xda\x10\x76\x35\x85\xf5\x78\xba\x93\x8a\x45\x92\xf9\x0e\xc6\x61\x99\xe9\xc2\xd0\xeb\xd6\x56\x80\x02\x0f\xdc\x5d\x6c\x20\xa1\x62\xa4\x72\x92\xc4\x77\xb1\xdc\xdd\xb3\xe9\x98\xa7\x69\xef\x56\x16\xb3\x9e\xe6\x13\xe1\x35\xb3\xde\x38\x55\x7a\x87\xf5\xc4\x86\xdb\xdf\xf2\xcc\xc4\xf8\xba\x37\x56\x79\x2e\xc6\x45\x66\x4e\x53\x35\xd9\x56\x2d\x0c\x96\xd3\xea\xa0\xbb\x53\x0f\x69\x7a\x52\xf7\x1a\xf9\x45\xcd\x8e\xe4\xfa\x7a\xdb\xba\x73\x39\xce\xd5\x2e\x0d\x32\x71\xeb\xb7\x03\x5f\xf0\x91\x4c\xe5\xf6\xd7\x01\xb6\x65\x2e\xb4\x4a\x77\xb8\xe4\x51\xba\xe8\xe5\xc2\x70\x96\x9e\x30\xd2\xc2\xd6\xb8\x58\x88\xdc\x48\x55\x5b\x33\x0a\x1a\x60\x7d\xfd\x7f\x6d\x14\x1e\xa9\x86\xe9\x92\x37\x1d\x90\x54\x07\x19\x91\x9c\x34\xe0\x8e\x6a\x81\xa4\xb0\xb6\x46\xe5\xa4\x18\xa7\x52\x64\x05\xc8\x4a\x32\x9b\x96\x8f\x92\x8d\xa6\x52\xa0\x75\xb3\xc4\x85\x2a\x56\x0b\xd1\x9b\x8a\x62\x07\x0d\x3d\xb0\x92\x79\x10\xdb\x33\x78\xc7\x93\xcc\xa6\xdb\xf5\x32\xd6\xf1\x96\x7b\x6c\x34\xde\x5b\x28\xad\x25\x5d\x71\xe1\xb8\x77\x9c\xb3\xbe\xe7\x9c\xe9\x7c\xb0\xa3\xdf\x55\x53\xdb\xaa\x59\x78\xa1\x33\x13\xb9\x2c\x7a\x72\xd2\xa3\x8b\xe1\xad\x99\xf0\xed\x4c\x16\x42\x2f\xf8\x78\xfb\x63\xc9\x4a\x06\xb9\xdc\x7e\x0b\x66\xcb\xf9\x48\xe4\xfd\x7b\x9d\xb5\x53\xf1\x71\xd1\x9b\xa4\x7c\xba\xf5\x08\xa9\x8d\x2e\xe4\xf8\x7a\xd5\x23\x29\x6b\xc7\xc6\xe2\xa3\x18\x6f\x3d\x3d\x6c\xd3\xdf\xdc\xa6\x82\xc5\xf9\x32\x2d\xe4\x68\xb5\xe9\xf8\x0a\xed\x91\x28\xec\xec\x4a\x23\x13\xf9\xb1\x47\x53\xab\x9a\x9b\x53\x35\x95\x5b\x8f\x9c\x27\x37\x46\x24\xb1\x12\xe2\x4e\xac\x28\x40\x6e\x8f\x8f\x74\x91\xf3\x4d\xa6\xbe\xea\xcc\xe7\x46\xf5\xb8\xbf\x21\x69\x57\xc4\x91\xb8\xb8\xcc\x77\xbd\x8a\xe0\x5a\xcb\xe9\x8e\x66\xdc\x49\xae\xb6\xb6\x21\x11\xfe\x17\xcb\x6c\x35\x56\x89\x30\x12\x34\xd7\x63\x29\xef\x23\xba\x6d\x8f\xce\x65\x9e\xf6\xb4\xe0\xf9\x78\xd6\x5b\xf0\x9c\xcf\x77\x30\xe9\x85\x28\x34\x67\x9a\x9a\x2f\x54\x26\xb2\x42\x0f\xac\xe3\xd2\xe0\xe9\x0d\x2f\x78\xde\xbf\x59\x8a\x7a\x73\x9b\xf5\x56\xea\x39\x0b\x9f\xd4\x85\xb7\x6d\xf4\x1c\xcc\xfe\x7c\x53\x4f\xf4\xc7\x2b\xa9\x8b\x77\xea\xd6\x77\xb9\x45\xfd\xa6\xca\x4f\x17\x8b\x5d\x87\x2e\x33\x3c\x67\x8a\x55\x2a\x9c\x49\x67\xbe\xe3\xdd\x84\xb5\xe4\xde\xe3\x5a\xe3\x9e\x27\xd4\x44\x66\xc9\x36\x3b\xbf\xda\x70\x23\x81\x57\x9a\xe8\x54\x6e\x52\x80\xaa\x6d\x16\x3b\x35\x72\x97\x58\x59\xa3\x59\x6c\x9d\xe2\xba\xc5\xc5\x6b\x55\x6f\xbd\xe1\xe9\x72\x07\xb3\x2f\x1d\x31\x1b\xb4\xdd\x26\x7b\xac\x19\xe0\x2b\x79\x2d\xce\xd4\xd3\xe6\xb1\xae\x6b\xfc\x0f\x59\xcc\xd4\xb2\xf8\x55\x35\x9a\xaa\x1b\x5a\x5b\xd3\xff\x7d\x7a\x5e\x66\x64\x7a\x10\xc9\xf1\x17\x80\xc9\x54\x66\x9b\x9f\xae\xb1\xe4\x34\xb4\x2e\xd4\x33\x95\xe9\xe5\xdc\x34\x5f\xd3\x77\xf3\x79\x95\x8b\x45\xca\x03\x62\xf4\xe2\xbc\x63\x2e\x15\x79\x1f\x3c\xa5\xaa\xc5\x7c\x01\x26\x9c\x4b\xe7\xdc\xf9\x4c\x65\x85\xc8\x8a\xbd\xe1\xf9\xde\xe0\xdb\x6f\x2f\x32\xf6\x2d\x7b\xa6\x16\xab\x5c\x4e\x67\x05\x6b\x8f\x3b\xec\xbb\xc7\xfb\x3f\xf4\x16\xb9\xd0\x22\x2b\xba\xec\x05\x1f\x8b\x91\x52\xd7\x5d\x76\x9c\x8d\xfb\xa6\x3a\x34\x39\x9b\x49\xcd\x10\x22\x33\x47\x09\x93\x9a\x99\xfd\x93\x69\x91\xb0\x65\x96\x88\x9c\x15\x33\xc1\x5e\x1f\x9f\xd9\x62\x36\x51\xcb\x2c\x61\x32\x33\x1f\x00\xc6\xab\xe3\x67\x47\x6f\x4e\x8f\xd8\x44\xa6\x82\xca\x59\xae\x54\xc1\x12\x69\x94\x0f\x95\xaf\x98\x9a\xb0\x22\xe8\xa9\xc8\x85\x80\x31\x0c\x2e\xb2\x8b\xec\x86\xe7\x8c\x50\xcf\x0e\x59\xdb\xee\x48\xd6\x46\xa7\x0b\xdd\x61\x9f\x2e\x32\xc6\x2e\xf6\x96\x5a\x30\xbc\x23\xbc\xd8\x3b\x30\x2d\x19\x33\x6d\x4f\x16\xec\x90\x9d\xe0\xd6\x72\x12\xfb\x81\xfd\x3a\xe3\xfa\xe4\x36\x33\x35\x16\x7d\xfc\xdb\x5e\x0a\xb9\x2a\x66\x9e\x46\x68\x4f\x0e\xd8\x60\xc0\x5e\xab\xdc\xe0\x62\x6e\x50\x07\x2a\x04\x2b\x66\x3c\x63\x37\x4a\x26\xec\x71\xdf\xb6\xf9\xe6\x14\xb8\x28\x3b\x64\xa6\x37\x35\x61\xf6\xf7\xe1\x21\xbb\xd8\xb3\x73\xb8\xd8\x63\x4f\xec\x97\x21\xfb\x74\xe7\xba\xb4\xcc\xd7\x41\x21\x78\x8e\x2b\xb3\xcf\x9f\xd9\xc5\xde\x9f\xff\x6c\x7f\xc3\x8c\xb1\x2d\x5c\xb1\x1c\x37\x01\x88\xbe\x5a\x28\x51\x61\x00\xaa\x50\xa7\x40\xa9\x67\x7c\x5a\x01\x14\x7c\xb3\x60\x82\x22\xb7\x02\x6e\xb9\x6e\x73\xbe\x68\xcb\x2c\x13\xf9\x8b\xac\xcb\xd4\xb2\xc0\x3f\xb4\x48\x27\x5d\x56\xe4\xab\x57\x6a\x0c\x47\x28\x2d\x27\x33\xb8\x3e\x9e\xd8\x8a\x6c\x91\xab\x1b\x99\x88\x84\xf1\x2c\xb1\x85\x7e\x39\x0d\x5d\x72\xe6\x6e\x95\xba\x86\xc8\xb2\xba\x6a\x64\x35\x53\x13\x5f\xb9\x8f\xdd\x99\xf9\x42\x45\xf7\x81\x1d\xba\xde\x1f\x3e\xdc\x12\x18\x7b\xe2\xda\x0c\x7d\xe9\x81\xef\x62\x1a\x40\x27\xa2\x44\x85\xb6\x1d\x77\xee\xfb\xe9\x04\xad\xc9\x2b\x82\x1d\xb2\x4c\xdc\xb2\x67\xf8\xab\x1d\x60\xcf\x2c\xc5\xf9\x65\x87\x90\x0f\x48\x3c\x9b\x09\xd6\xbf\x92\xd9\x8d\xba\x16\x0c\x0d\x71\x6c\x99\xc9\x89\x14\x1a\xf6\xa2\x9c\x2f\xd0\x35\x16\xcc\x5c\x1a\x37\xa3\x60\xfd\x4c\x7c\x2c\xba\x0e\x4a\xbf\x98\xe5\xea\xb6\x0b\xe8\xef\xe7\xa2\x58\xe6\x19\x01\xd3\x84\x40\x37\x33\xd7\xd9\x21\x9b\xf3\x6b\x71\x0c\x3f\x5e\x43\x5d\x4f\x00\xb8\xee\x34\x1f\x3f\x5e\x82\x3c\x8d\x30\x77\x67\xfe\x8f\x76\x7b\xdf\xd0\x11\x3b\x04\x72\xa2\x56\x66\x8e\xf9\x6a\x30\x36\xd2\x3f\x43\xe6\xcc\x0a\xc5\xe6\x32\x93\x73\xf9\x6f\xc1\x12\xa1\x16\x85\xf9\x13\x27\xd8\x67\xef\xa0\x13\x43\x31\x66\x1f\xa7\x02\xb6\x22\x02\xca\xc5\x58\xe5\x09\x4b\xe5\xb5\xb0\x83\xeb\x17\xf9\xea\x28\x2b\x72\x29\xf4\xb9\xbc\xec\xfb\x26\x7d\x64\x8f\x70\xee\x4f\x38\x70\xc8\x65\x9a\x10\xa0\x19\xbf\x11\x6c\x24\x44\xc6\xda\x06\x65\xb7\x5c\xb3\x45\x2e\x6e\xa4\x5a\xea\x74\xd5\x61\x89\x30\x2a\x80\x48\xcc\x40\x0b\x7e\x2d\xcc\x58\x52\xa5\x97\xb9\x30\x25\x23\x41\x50\x10\x91\x09\xbb\xc5\x43\x96\xf1\x7c\x0a\x4e\xcd\xba\xcb\x46\xcb\xc2\x70\x53\x9e\xa6\xb0\x5c\x63\xae\x85\x66\xb7\xe6\x8f\x5c\x30\x3e\x32\xb5\x6f\x2d\x18\x9e\x9a\xc3\x6d\x85\x83\xe2\x19\x13\x1f\xa5\x2e\x64\x36\xb5\xe4\x70\x2b\xd8\x2d\xcf\x0a\xd3\xf5\x98\xa7\x69\x97\x69\x65\x80\xe6\xa2\xa5\x59\xa6\x58\x26\x84\x9d\x96\xa9\x01\xe4\xca\x38\x90\xa0\xdb\xde\x24\xbb\xb0\x7f\x98\x11\x64\x4c\xdc\x08\xb3\x8a\x05\xe3\xb7\x7c\x05\xc3\x67\x5c\xeb\xe5\x5c\x66\x53\x0b\x69\xe6\xa8\xd1\x20\x40\x33\xf1\x91\x8f\x8b\x74\xc5\x54\x26\xdc\x3c\xbb\x4c\xcb\x6c\x0c\x2c\xb6\x60\x33\xbe\x58\x88\x4c\x23\x82\x58\x91\x2f\x3d\x96\x4c\x7f\xf9\x0a\x90\x00\x83\xbf\x15\x2c\x51\x59\xab\xc0\x19\x1b\x1c\xab\xe5\x78\x06\x7d\x3a\x14\xba\x21\x9f\xcd\x2c\x20\x95\xa5\x2b\xc6\x93\x44\x9a\x29\xf1\xd4\x20\x57\x8d\x81\x6a\x98\x35\x9f\x18\x4e\x03\xf8\x76\x64\x40\x34\xd3\x65\xb7\x33\x39\x9e\xb9\xe5\x37\xe4\xa5\x0b\x23\x1b\x30\x3d\xe3\x0b\x01\x3b\x47\x2b\x36\x53\x0b\x31\x59\xa6\xe9\x8a\xe9\x99\xa1\x17\x33\x97\xf1\x4c\xf0\x85\x19\x26\x75\x08\xa7\x9f\xc7\x6d\x91\xaf\x9e\x19\xe2\x6e\x4f\x0c\xe7\x1c\xfd\xd6\x35\x93\x70\x7c\xb2\xc8\x57\xf6\x4f\xb7\x7f\x3e\xc1\xb1\x33\x64\x17\x7b\xa8\x01\x5d\xec\x41\x9b\x21\x9b\x64\x7d\xb3\xc2\x6d\x0f\xe5\x8e\xd8\xcb\x1d\xc3\x0d\xd4\x16\x79\xde\x59\x03\x10\xf8\x80\x83\x27\xf2\xdc\x43\xa0\xbd\x6a\x4f\x8f\x97\x22\x3b\x2d\x78\x21\x4e\x97\x7a\x21\xb2\x44\x24\xa7\x05\xcf\x0d\xef\xba\xd8\xd3\x51\x51\x70\xe2\x54\xda\xfc\x53\x8a\x34\x89\xdb\x40\x51\x4d\x9b\xa3\x8f\x62\xbc\x04\xb2\x36\xd5\x85\xfd\x55\x53\xf3\x19\x2e\x9e\x40\xc0\x63\xfb\xcb\x1d\x5a\x83\x01\xf1\x08\x03\x0c\x24\x13\xa4\x15\x66\x94\x14\x64\x9a\xc8\xc7\x60\x9d\xcd\x6f\xcd\xe7\x82\x89\xc9\xc4\x54\xe2\x9a\x60\x8c\x72\xc1\xaf\x0d\x08\xb3\x19\x89\xad\xda\x1b\x52\xa6\x6f\x25\xfc\xc7\x8c\x07\x02\x13\xec\x20\x0d\x57\x97\xd9\x52\x9c\x0a\xf3\x5f\x61\xce\x5c\x90\x0c\x08\xe8\xf3\xe5\x7c\xbe\x62\x81\xbd\xcc\xd1\x89\xc6\x6d\x72\x2b\x98\x91\x84\x68\x60\xa1\x65\xcd\x90\x20\x41\x89\x0c\x6e\xfe\x48\xf3\x9e\x98\x6c\x52\x85\x4c\xb4\xe0\xce\x28\xbb\x6b\x00\x37\xba\xcf\x5e\x40\x93\x34\x65\x7a\x21\xc6\xb8\x43\xa4\x39\x20\xbb\x6c\xa5\x96\x6c\x0e\x8c\x40\xcf\x80\x87\xc0\x75\xaf\xe1\x76\x2b\xb5\xb4\x70\x0c\xc3\x9e\x48\x91\xb3\x4c\x01\x2b\x9a\xf3\x6c\x0a\xe2\x95\x60\xe0\x76\x49\x28\xd4\x82\x15\xb7\xca\x8f\x2d\xde\x2b\x6e\x70\xed\x0e\xfb\x74\x57\xff\xe9\x05\x95\x6c\x51\xe5\xad\x45\x0d\xd5\xb5\xe7\x0d\x30\x7e\xb3\xc5\x17\x2a\x5d\x4d\x64\x9a\x02\xbe\xfe\x1f\x2b\x43\xb9\x66\xff\x0f\x94\x8b\xec\x46\xe6\x2a\x43\xb6\x63\x50\x49\x60\x90\x47\xa1\x1d\xc9\x30\x04\xd4\x69\x98\xf4\xc4\x50\x01\x68\xa9\x81\x55\x3f\x9d\xc7\x52\xe3\x25\x3b\xf4\x13\x6b\xbb\x2d\x4d\x8b\x68\xa8\x1a\x0f\xd7\x40\x54\x9e\x8a\x02\xa0\x79\xd9\xc4\x96\x18\xf8\x27\x13\xb7\x91\xde\xc0\x90\xeb\x06\xe7\x40\x3c\x7c\xe8\xfe\x6e\xbb\x3f\x50\xb5\x6d\x9f\x5f\x76\x3a\x28\xd6\xc8\x09\x6b\x37\x01\x7b\xf8\xd0\x32\xa1\xa6\x1a\x0f\x0e\x8d\xdc\x1e\x54\x44\x09\x1e\x59\x5c\x43\xa3\x6e\x49\xb8\xee\x84\x02\x27\xac\x6b\xb0\x5a\xc4\xc7\x71\x85\xea\x96\xf7\x00\xf6\x9a\x2c\x40\x18\x14\x3c\x71\x90\x68\xbb\x5b\xf2\x20\x19\xa9\x0e\x63\x0d\xe3\x3c\x28\x73\x53\x23\xf5\x34\xd3\x67\xb0\x89\x0f\xb1\xaf\x1a\x51\xb2\x22\x73\x56\x7a\xc5\x55\xa9\x74\x13\x81\x78\xb9\x88\x98\xca\xba\x51\xd5\x43\xf3\x83\xde\x00\x67\x43\xf3\xf3\x8a\x7e\x72\x59\x99\xbc\x9b\x81\x61\xbc\x29\x5f\xbd\xe1\xa0\x46\x5e\xec\x55\x6a\x84\xdc\xff\x57\x94\x22\xcd\xde\x05\xdd\x0f\xcf\x01\x2b\x14\xaf\x13\x86\x69\xe1\x09\x8e\x53\xb4\xbc\x90\x68\x34\x60\x91\xcf\xa1\x22\x37\xe2\x8d\xe1\x71\x25\xf9\x3c\x66\x69\xa8\x7d\x5a\x50\x28\x48\xeb\xb6\xd7\x0f\x2c\xfd\x9e\x5f\xec\x99\xe1\x99\xb3\x39\x38\xa6\x2f\xf6\x70\x80\x17\x7b\x97\xfd\x89\xca\x8f\xb8\x91\x23\x2c\x03\xc4\xee\x82\xe3\xde\x41\x3d\xc7\x4f\x21\x13\x69\x87\x52\x47\x89\x95\xd8\x09\x10\x44\x94\x2d\x0e\x6c\x55\x27\x21\x74\x42\xaa\xb6\x12\xbd\xd4\x95\xb5\x08\x7b\x9d\x8a\xec\xc5\x32\x73\x1d\x83\x1a\x84\xf4\x42\xaa\x35\x56\xa8\xaa\xd6\xc0\x81\xcc\xa7\x90\xcc\x0e\x22\x2e\x38\xa6\x53\xcc\xfc\x7b\x42\x60\x0f\x6b\x08\x91\x7d\xfe\xec\xa7\x3d\x18\xc0\x49\x87\xe7\x12\x30\x86\x6a\xfd\xa0\x47\x50\x46\xd9\x48\xe8\x02\xc5\xf3\x2c\x82\x94\x28\x90\x28\x15\x03\xef\x03\x26\x0b\xcd\xc0\xd6\xc8\x9c\x37\xaf\xaf\xde\x86\xd3\x3a\x24\xe4\xcf\x9f\x61\xd0\xd0\xa2\x43\x18\xa8\x21\x6c\x0b\x62\xc8\x26\x3c\xd5\x22\xe2\xfb\x76\x15\xe6\x3c\xbf\x5e\x83\x76\xc3\xa8\x89\x77\xe8\xe8\x4c\x08\x28\xa2\xf6\x3b\x01\xea\xae\xd9\xc7\x1d\x27\x82\x8a\x54\x0b\x0f\x8f\x56\xef\xea\x0a\xa8\xf2\xea\x6a\x33\xab\xb1\x23\x7d\xd0\xae\x9a\x2e\x64\x46\x00\x3b\x11\x11\x63\x59\x2d\x2b\x69\xe4\x12\x44\xd5\x81\xd8\xeb\x06\xdb\xcc\x6b\x5f\x2e\x3a\x07\x65\x25\xf7\xc5\x32\x8b\x16\x63\x30\x60\xff\x90\xc5\x8c\xac\x64\x23\x95\x80\x6d\x8c\x67\x2b\xb4\xea\xb8\xd5\xe9\xb2\x0f\xfc\x96\xcb\x82\x7d\xfc\x00\xe4\x63\xfd\x49\x41\xa1\x24\x40\x1f\x56\x20\x3a\x07\xfe\xba\xef\x28\x90\x9b\x83\x2d\xe6\x63\xe7\x03\x29\x7a\xbc\x40\xa3\x1c\x19\xd9\x8c\xfe\x56\x08\x6d\x85\x94\x0f\xe1\xa1\x0a\x07\xb8\x61\x2a\x57\x57\x30\x80\x8b\xbd\xce\x07\x43\xbd\x89\x30\x4c\x4d\x66\xc2\xa0\xdf\x00\x83\xce\x45\xc2\xa0\x01\x93\x56\x24\x9e\x0b\xd2\x33\x47\x82\x01\x00\x81\xcc\xce\x52\x21\x27\xf5\xbe\x96\xe7\x38\x5d\x84\x3a\x1f\x1a\x2e\x43\xcc\xe5\xae\x6c\x6f\x7a\x1a\xda\xb4\xda\x53\x6f\x1a\x7a\x8b\x4e\x1f\xc7\xf3\x45\xea\x20\xbb\x56\x55\x2e\xd6\x65\xe4\xbe\x62\xfe\x30\xeb\x19\x50\x0f\x98\x26\xd1\x62\x70\xe8\xb5\x34\xd7\x97\xe5\xa1\x5d\x16\x74\x1f\x31\x46\x43\xab\x08\xa0\x8f\x34\x03\x3b\x98\x78\x77\x89\xd7\x9a\xbe\x6d\xe5\x98\xbb\x96\xb6\x8d\x1d\x97\x5e\xa6\x46\xdb\xf2\x4d\x0e\xe2\x1a\xb8\x34\x87\x54\x13\xaf\x1d\x82\x2a\x66\x6c\x58\xc5\xcb\x57\xf8\x8f\xf8\x2e\xb5\x87\x21\xa3\x0e\x00\x4c\x37\xae\xbb\x81\x78\xa2\x39\xba\x15\x0e\x96\xa8\x4f\xd8\xc7\xc6\x7d\x6a\xd9\xe9\x17\x33\x91\xf9\x73\x0c\x3e\x96\x60\x31\xbb\x98\xfe\x58\xa4\x01\x94\x17\xf4\x20\x6c\x76\xd7\xf5\xc4\x17\xab\xc2\x25\xa0\xee\x84\x15\x79\xbe\x09\x66\xf8\xf3\xee\x22\xab\x1c\xa1\x8d\x13\x2e\x4f\x74\x99\x51\x00\x58\x69\x5c\x86\x71\xcc\x44\xc6\xb8\xdb\x78\x04\xd2\xb0\x07\x82\x98\x74\xe1\x78\x99\xc8\x8c\xa7\xb4\x78\x23\x31\x56\x73\xa1\x4b\x90\x40\xd2\xc1\x0a\x24\xc6\x12\xb0\x3f\x7e\x42\x0c\x26\x2a\x13\x77\x7f\xb2\x24\x36\xc1\xc3\xb0\x04\x64\xbc\xcc\x73\x23\x41\x7b\x07\xba\x78\xa1\x3d\xcd\xb1\x43\xe6\xa6\x75\x50\xaa\x04\x98\xc0\xca\x11\x0e\xe3\x45\x52\xe5\x65\x42\xdb\x31\xa7\xc5\x08\xb0\x71\xcb\xb5\xc5\x90\x39\x97\x73\x75\x8b\xac\x0f\xea\x19\x06\x30\xe2\xe3\xeb\x12\x24\x99\x15\x0a\x4d\x47\xc0\x83\xbd\x05\xd7\x71\x0d\xad\x8c\x0a\x60\xf8\xe6\x48\xb0\x19\xcf\x92\xd4\x30\xe2\x99\xc8\x45\xbf\x86\xba\x6b\x29\x48\xad\xa7\xa1\x80\x82\xfc\xb1\x13\x1a\xae\xd1\xb4\x48\xd3\x74\xe6\x54\x37\x42\x91\xfd\x6b\x29\x96\xb1\x78\xe6\x51\xe6\xaa\x99\x6d\x8a\xf6\x5a\x73\x0c\xa1\xa8\xf9\x34\x4b\x9e\xe6\xd3\x76\x9d\xe4\x97\x89\xdb\x90\x74\x3d\x99\x36\xb3\xcc\x60\x0b\xad\x65\xb2\x8d\x73\x2f\x19\xa6\x4a\x33\xb7\xf2\xbf\x27\x02\x9a\x39\x68\x72\x60\x8f\x35\x73\x14\x09\x1b\x89\x89\xca\x05\xdd\x14\x04\x06\x50\x38\x56\xcd\x49\x98\x46\x90\x78\x9a\xba\xbe\xec\x9c\x75\x60\xe5\xb5\x7b\x8c\xe0\x42\x2f\x46\x6b\xc0\xb9\x76\x23\x58\xf6\xd0\x45\xba\xd6\x0c\x2c\xb6\xe9\x2d\x5f\x69\x96\x88\x54\xde\x08\xb0\x33\x66\x64\x67\x04\x17\x3d\xa6\xf2\x44\xe4\x7d\x76\x3c\x89\x20\x85\x93\xcb\x54\xd1\x3c\x41\xa3\xa1\x6a\x26\xe7\xe6\x94\xc5\x89\x46\x70\x4c\x13\x1a\x2a\x93\xf3\xb9\x48\x24\x2f\x44\xba\xea\x3a\xc3\xb3\xc1\x0a\x58\xb2\x0c\x8b\x31\xb5\xcd\x3e\x31\xe8\x9a\xc8\xbc\x61\x76\x6b\x77\x8c\xb5\x9b\x29\xb0\x78\x2c\x33\x59\xac\x40\x8c\x88\x87\x65\x04\x9f\x4c\x8c\x85\xd6\x3c\x5f\x31\x2d\x8a\xe5\x02\x6c\xde\x66\x25\x12\x39\x46\xeb\xea\x2d\x5f\x91\x25\xde\x95\x82\x97\x6a\x04\x49\x6a\x76\x3b\x5b\x85\xbc\x2c\x32\xa1\x99\x61\xce\x72\x95\x81\x75\x9e\x10\xa1\x0d\xb7\x8c\xb1\x0d\x26\x45\x95\x3b\x04\xa0\x06\x68\x00\xc7\xe2\x99\x8e\x01\xd6\x00\xa1\xeb\x54\x22\x16\x33\xac\x89\xcc\x75\x81\x32\x51\x9f\x9d\x82\xd5\xfb\x36\xb8\x9c\x61\x1a\xfe\x8c\xd1\x53\xea\x34\x52\x2d\x63\xcc\xeb\x2e\x91\x80\x00\xff\x64\x9e\x96\x46\x15\x52\x06\xd8\xed\xc1\xea\x09\xb7\xc5\x5d\x34\xe6\x1b\x3a\x98\xce\x0c\x14\x32\x85\x6b\xb8\x6a\x08\x18\x5c\x79\x2b\x3e\x29\x97\xe0\x59\x16\x72\x82\x66\x7e\xd3\x2d\x31\xe1\xa7\x70\xc1\x6a\x94\x22\x3e\xe5\x40\x8a\x13\x2e\xd3\xa5\x19\x46\xa1\xfc\x86\x44\xae\x60\xa8\x7f\xc5\x52\x5e\x88\xbc\xc2\xcb\x6f\xc8\xa2\xef\x2e\xba\x9c\xa3\xcb\x76\x03\xf3\xb5\x3a\x6c\xb8\x96\x61\x1e\x94\x18\xf5\x60\xc0\x9e\x83\x2a\x0f\xdd\xe2\x15\x5c\x62\x2f\xac\xec\x55\x88\xd9\x39\x52\xb3\xa5\xc6\xbb\x21\xbf\xfe\x5b\xdc\xc7\xb5\xb5\x10\xf5\xd6\x82\x0e\x4d\x2e\x54\xd5\xd9\xa1\x65\x1f\xa1\x52\x5e\x6f\x6c\x88\x84\xe9\xf2\xd5\x64\xc3\xc7\xf3\x9a\x8b\xe8\x1d\x6c\x92\x5e\x27\x88\xe0\xb3\xc3\xb8\x3f\xaf\x38\xbd\x51\x05\x5d\x14\xe1\x56\xa9\x6c\x0f\xc3\x66\x1d\x3e\x45\x62\x78\x59\xa1\x16\x4c\x4d\x08\x40\xdc\x0f\x59\xb5\x0f\xcc\x62\xad\xd8\x6f\x4b\xed\xec\xdf\xdc\xb1\x10\x92\x7c\x98\x95\x95\x2e\xfc\xd5\x16\x4a\x59\x24\x21\x2d\x72\x95\x2c\xc7\x48\x95\x15\x92\x73\xaa\x0f\x0c\x37\x50\x7d\xb6\xb8\x2c\xaf\xd7\x66\x8c\xe4\x1e\x94\x83\x88\x8e\xfe\x09\x1d\x16\x95\xb3\xb2\xbc\x60\x7d\x0f\xe8\x82\x39\xd6\xa1\x2c\xe5\x6f\x7d\x93\xef\xf6\x70\xd0\x29\x16\x55\x2e\x7c\xd7\xd8\x82\xda\xd4\x43\xc7\x1b\x6a\x60\x88\xb1\x7f\x00\x18\xe3\x03\x35\xcb\x91\x94\xc0\x2b\x89\xca\x2e\x1f\x42\x11\xec\xaa\x76\x59\xca\x26\x81\xb3\x56\x37\x21\xc9\xd5\x88\xc0\xec\x49\x2c\xc7\x46\x20\xab\x02\x4c\x45\x45\xdd\xf6\x76\x3c\x34\x7d\xc1\x7d\x11\x1a\x42\x6a\x2e\xd7\xca\x68\x5d\xa3\xd7\x06\xb3\x33\xf4\x42\x70\x0f\x0f\xab\xd7\x69\x11\x1e\x50\x66\x36\xc4\x01\x81\x9c\xed\xc0\x44\x02\x6b\x40\x37\xcd\xf9\x32\xcb\xe0\xee\xad\x56\x76\xab\xef\xd0\xdd\xca\x45\x1d\x9a\xba\xc4\x1c\x9b\xb5\x63\x3b\xae\x58\xc9\x8d\x34\xad\xc1\x80\xfd\x05\x76\xec\x54\xde\xc8\x6c\xda\x65\x86\xeb\x7e\xf7\x63\xff\x7b\xfc\x9f\x3d\x0d\xcc\xf1\x38\x8c\x5a\xcd\x8a\x62\xa1\x87\x83\xc1\x42\xa8\x45\x2a\xfa\x73\xf5\x6f\x99\xa6\xbc\xaf\xf2\xe9\xe0\xff\xfc\xa6\x72\x91\x25\x2a\x9f\x4c\x06\x42\xff\xd4\x4b\x72\x3e\x29\xfa\xb3\x62\x9e\xfe\x97\x16\xe3\x9e\x23\x47\x43\x25\x73\x51\x11\x9f\x0d\x0d\xbd\x03\x02\x6a\xd7\xa2\xc9\x3a\x20\xd8\xe9\xd3\x21\x71\x50\xfe\xce\xf3\x29\x3b\xa4\xb9\xbb\x4d\x3a\x93\xa9\x60\xed\x22\x2f\xe9\xc5\x86\x86\x12\x91\x8a\x29\x92\x91\x05\x61\x8b\x4a\xfa\xbf\x2d\x2e\x21\x3b\x04\xf2\xce\xda\x19\xe6\x7c\x35\x22\x72\x7e\x4e\xdf\x5c\xfb\xc8\xd3\xc3\xc3\x09\xbb\x78\x57\xb7\xe7\xea\xaa\x00\x19\x94\x2f\x49\x3b\xd0\x81\x29\x39\x88\xdb\x5b\x54\x47\x20\x62\xe5\xbc\x81\x60\x4c\xcf\xe5\x15\x00\x02\x44\x6b\x42\x55\xe3\x3c\xc5\x18\x1c\x87\xd3\x2b\x6d\xce\x6d\x73\x46\x98\xbe\xc7\xfe\x7e\x4f\x4d\xd8\x5f\xf8\x48\xa4\xad\xb2\xe2\xed\xbc\x4d\xa1\x65\xec\x98\x13\x8b\x27\xd4\x05\xd4\x3b\x2c\xf5\x78\x18\x12\xc6\x41\x38\x25\xb2\x14\x35\xce\xac\x7e\x6b\xd5\xef\xd6\x98\xf1\x54\xd6\xad\xcc\xa7\xdc\xe6\x2e\xad\x0f\xee\xdb\x78\xc0\xd1\xda\xd4\x4d\xdb\x5e\xa2\x1f\x7d\x1c\x0b\x70\x6e\x6e\x07\x00\x3a\x3b\x4d\xd9\x5e\x8e\x94\x26\xe0\xe0\x8d\xf2\xe5\xa2\x68\xfb\x7a\x5d\x56\xea\xaa\x76\xa8\xe5\xd9\x3b\x5e\x1a\x8d\xad\xde\x7c\xd8\xec\x22\x15\x2e\x48\xd5\x6a\x68\x3d\x3d\xea\x4d\x21\xe6\x88\x25\x64\xa1\x0b\x4b\xae\x6e\x33\xf4\x67\x70\x1d\xde\x0a\x96\x0a\xa3\xd1\xba\xd5\x2e\x01\xaa\x7a\x5a\x18\xf1\x33\x55\x6a\x01\x76\x13\xa0\x75\x9e\xa9\x62\x26\xf2\x40\xd2\x8e\x28\xd7\x62\xc6\x2d\xa5\xca\x44\x4c\x11\x4f\xaa\x34\x13\x57\x18\x36\x78\x89\x1c\xc4\xc4\x12\x60\x09\x18\x64\x2d\xd7\x28\x51\x6d\x2d\x13\x29\x11\xa1\xb5\x42\xc7\x2d\x41\x02\x18\x06\xc6\xd6\x6e\xfc\xdd\xcc\x73\xd8\x38\xeb\xbb\x26\x9a\xdd\xce\x38\xbc\xed\x76\x33\x1a\x88\xf5\x3f\x31\x87\x9d\x27\x09\xa3\x2e\x29\xb5\x30\x4b\x0a\x2b\xc9\x73\x70\xe3\x45\xc3\x57\xd9\xb2\xb7\xd5\x2e\x44\x9b\x02\x1f\xa9\x1b\x51\xcb\xba\xdc\xa1\xe6\xa6\x74\x50\xbb\x01\xe1\x6c\xab\xb5\x61\xdf\x95\x2d\x62\xa1\x1e\x33\x18\xb0\x67\x66\x00\x96\xf1\x3b\xcf\xd9\xf3\x78\x00\x97\xf1\xa0\x0d\x3d\xa3\x01\x2f\xb8\xc5\x45\x21\xaf\xcb\x84\x04\xca\x1e\xad\x88\x06\x60\x03\xb0\x4f\xd6\xac\x0c\x22\xe1\x9d\xb3\x8a\x92\xab\x10\xc1\x70\x67\xae\x1d\x47\x97\x29\x00\x35\x57\x89\x9c\xac\xc2\x73\x83\x30\x63\x86\x12\x8c\xad\x4b\x80\x74\xe9\x94\x71\x80\x0b\xc5\xb2\x65\x9a\xa2\x4a\x98\x07\xee\x4b\xa2\x42\xf7\xfd\x92\x18\xba\xcd\xc1\x1d\x0a\xa1\x6e\xed\x36\x62\xf7\xc0\x6b\x24\x01\xdb\x75\x1e\xd5\x01\x15\x1b\x05\x8c\xb4\x5a\x83\x19\xab\xd3\xde\xce\x04\x4a\xf1\x15\x04\x92\xd1\x8b\xda\x04\x60\x2c\xfe\xd0\xa2\x86\xf7\x52\xbc\x20\x6f\x57\x30\xfe\x7e\x0b\xc4\xde\x2f\xcb\x51\x81\x5c\x64\x30\x79\x10\x0b\xac\x5b\x9f\x98\xa4\x8b\x0e\xd9\x79\x70\xf7\xce\xe6\x46\x83\x1c\x09\xd4\xec\x0d\xa3\x3c\x3a\xfd\x9e\x2d\x78\xae\x71\x31\xe7\x0b\x5e\x48\x0a\xaf\xae\x97\xc1\x3c\x8e\x03\xb0\xb5\xcc\xbe\x19\x5d\x9c\x45\xde\x0a\x5d\x36\x95\x37\xe0\xbe\xc2\xcb\x7b\x1c\x72\xbb\xc0\xbd\x74\x2a\x78\xc6\x96\x8b\x4d\x9b\xd8\x0e\x69\xcd\x2e\xf6\x8e\xf4\x61\x9d\xad\xe5\xc6\x32\x73\xdf\x41\x84\xb1\x98\xa9\xeb\xcb\x11\xb8\x99\xf3\x54\x24\xe5\xc9\x99\x8d\x5c\x81\xe5\xe7\x6b\x70\x14\x98\xf2\x53\xb0\x9d\xf1\x82\xa9\x1b\x91\xe7\x32\x41\x63\xcf\xd9\x6a\x81\x89\x6f\xd8\x48\xa4\xea\xb6\x5f\x2b\xa3\x96\x77\xe9\x56\x52\xea\x56\xec\x34\x5e\x06\xa3\xbc\xb9\x01\x45\xe6\xb8\x8b\xbd\xb3\xc0\x3a\xc1\x12\x25\xd0\xac\x4c\xce\xf7\x8c\xb3\x16\x00\x6f\x11\xfd\x34\xa8\x77\xeb\xe7\x13\x5d\x5c\x54\xc5\x1f\x4b\x99\x15\xb2\xaf\x48\x5e\x9e\xb5\x6c\x73\x4a\x6e\x81\xa8\x8d\x67\x4e\x33\xa3\xd8\x79\xe2\x32\x9b\xa8\x72\x27\x7e\x42\x0f\xe0\xfb\x97\x8c\xbe\xb4\xc8\x7b\x6e\x51\xe9\x78\x92\xb8\xb2\xdc\x7a\x6e\x87\x4b\xf9\x95\xa6\x69\x26\x62\xa6\x01\xd2\x4e\x89\xd3\x43\x04\x2c\x5d\xbd\xc1\x78\x48\xfd\x9e\xc8\x4c\xea\x99\x48\x58\x78\xac\x99\x0f\x85\x98\x2f\x54\xce\xf3\x55\x00\xe5\x86\xe7\x12\x1d\xac\x17\x62\x8c\xd6\xd4\xd1\xca\x13\x0e\x42\x06\x3f\x19\xb2\x8c\xe2\x07\x10\x16\x3b\x65\xee\x7f\x5e\xd3\xee\x92\x1d\xc2\x42\xb8\xbb\xf1\xa0\xf3\x77\xa0\xd3\x93\x39\xdf\x1c\xa3\x74\xe5\x91\x08\x0d\x7e\xe2\xce\x73\x7c\x8b\xbe\xc1\x64\x14\x1e\xa7\xe6\xf7\x2b\x35\x8e\x7b\x3c\x9e\x94\xc9\xe0\x96\x6b\x4f\x08\x10\x11\x10\xb1\xfe\xe0\x26\x32\x00\xe3\x84\x3e\xcb\xac\x04\x1a\xd1\x82\x6b\x1a\xc8\x26\x26\x12\x86\x2a\x45\xba\x0a\xef\x9d\x02\x01\x30\x1a\x85\xbd\x63\x9f\xa8\x7c\x2a\x8a\x88\x1a\xd1\x87\x5f\x16\xee\x0e\x2e\x80\x75\xb1\x37\x86\x20\x3a\x91\x98\x19\xac\xea\xcf\xae\x7e\xfd\xdc\x23\x30\x5e\x41\xe3\x69\x4a\xd7\xba\x0a\x92\x67\xf1\xd4\x49\x13\x20\x93\xa2\xff\x31\x90\xae\x8f\x53\xb3\x80\x4a\xa8\xe8\xaf\x91\x00\x1e\x34\x2b\x90\x35\xdb\x15\xf1\xd3\xc8\x94\xab\x67\xa3\xdb\x47\x65\xff\x0e\x20\xbe\x1e\x7a\xf7\x04\x3b\x28\xbc\xfa\x88\xb0\x18\xf8\x14\xb2\xf0\x16\x7a\xa2\x6a\x6e\x28\xce\x6a\x65\x07\xa9\xdd\xce\x04\x9f\x21\x5a\x64\x23\x38\x90\x94\x0a\xd8\xbc\x95\xc5\xcc\x41\xaa\x21\x2c\x1a\xc3\x7a\xfe\xb2\x8e\xbb\x78\xe1\x9e\x6e\x52\x6a\x9c\x5c\xfb\x9f\xe0\xa6\x04\xef\x47\x10\xd8\x5d\x74\x35\xe6\x85\x72\x7b\x07\xe3\xae\x44\xa2\xcb\x18\x18\x6d\xfd\x7d\x08\xfa\x72\x99\xef\x2f\x17\x1b\x5d\xc7\x42\xc7\xd2\xa7\x41\xa8\x18\xc5\x7f\x90\x9c\x6a\x97\xa5\x30\x6a\xbf\xf5\xde\x97\xf1\x6d\x84\x93\x86\x09\x9a\x8f\xff\x0b\x2c\xbd\xda\x5e\x00\x9b\x1f\x45\x9f\x9d\xaa\xb9\x60\x14\x40\xae\x5b\x0d\xe1\x5e\x04\xd0\x81\xf3\x6e\x6c\xe3\x19\x97\x86\x5a\xe8\x22\x3a\x5d\x05\x77\x52\xc5\x4c\xea\x2e\x1b\xf3\xa5\xb6\x9a\x46\x7d\x6c\x00\xe8\x26\x70\x3d\xed\xa9\x94\xf4\x23\x1a\x6e\xdf\xba\x5e\x6b\xbc\xd2\x33\x12\x94\x11\x3f\x30\x86\x67\xb1\x10\x68\x45\x00\x2b\x9b\x70\x26\xd9\xa9\x2c\x66\xcb\x51\x7f\xac\xe6\x83\x09\x05\xb0\xc6\xf9\x29\xb5\x5e\x0a\x3d\xf8\xee\xe7\x1f\x40\xe2\x9e\xab\xdc\x10\x77\x01\x4f\x8e\xd0\xe2\x35\xfb\xcc\x6f\x76\x99\x7f\xb9\x70\x51\x90\xeb\xda\x5d\xec\x9d\x13\x1a\x1c\x76\x2e\x89\x13\x54\xae\x04\x16\x4b\x3d\x3b\xc3\x78\xb3\x55\x3b\x55\x63\x1d\xe9\x5d\xc2\x14\xb3\x43\xf6\x89\xae\x59\x86\xe6\x94\xd1\xe7\x8f\x2f\x03\x03\x82\x61\x54\xfb\x86\xde\xa3\xd6\x0c\xdb\xf6\x21\xc6\xe7\x95\x1a\xb3\x43\x6c\xba\x7f\x59\x77\x6a\x7f\xd7\xd8\x1e\xae\xb5\xd2\x55\x00\xe1\xbb\xcb\x83\xb8\x0a\x9f\x14\x22\x0f\x2a\x7c\x5f\xe9\x02\x6e\x21\x7d\x54\x5d\xdf\x4c\xba\x0d\x8d\x23\xff\x60\x87\x94\x5c\x68\x51\x38\xac\x60\xc5\x10\x2d\x4e\x88\xa4\x39\xfa\xd0\xac\xcf\x9f\x6d\xb4\x04\x63\x91\x90\x18\xd8\xcb\xe8\xb3\x61\x46\x85\xa8\x4a\x7d\x15\x98\x56\x68\xab\x1d\x6a\x4d\x48\x66\x1c\x5f\x40\xb1\xcf\xb8\x92\x44\x16\x6d\x0c\x1c\xc2\x20\x10\x0e\x01\x5d\x2e\x2c\xc8\x87\xfe\x61\x7c\x96\x03\xa5\x72\xc6\x19\x2d\x07\x1b\xa5\x6a\x7c\xdd\x01\x6d\x4e\xb3\x25\xc4\xa5\xa4\x1c\xf5\x37\x08\x18\x47\x13\x45\x64\xf6\x73\x80\x52\x77\x21\x7e\x3b\x13\xe8\x8c\x90\x0b\x94\x0f\x99\xc8\x28\xe5\x5a\x3c\xa8\x7e\xed\x3a\xb2\x43\x76\xee\x29\xf3\x62\xcf\x4c\xf4\x62\x8f\xdd\xd9\xf5\x0f\x70\xe2\x3c\xd1\x43\x7a\xef\x02\x40\x2b\x86\x02\x70\x58\x79\xbc\xc4\xa8\xf3\x1c\xbf\x16\x2b\x1d\xee\x3c\xc4\x67\x44\x1b\x54\xe5\xdc\x0e\xc2\xf0\x81\x36\x7d\x30\x54\x5e\x6a\xc2\xa0\x01\x52\xe4\xb5\x58\x75\xc2\xd0\x36\xfa\x96\x8b\x1b\x91\x6b\xd1\x8e\x82\x6c\xdf\x71\x30\x0d\x41\x28\x78\x60\x1c\xca\x1c\xe3\x86\x08\x48\x06\x72\x9e\xd5\x70\x6e\x05\xbb\x16\x62\x11\x1c\x98\x32\x9b\x6a\x77\x7b\xed\xac\x38\xe8\x69\x6e\x5a\x7a\x26\x0f\xa7\x44\x3f\x62\x33\xee\x23\xde\x3f\xfa\x19\xd1\x55\x10\x0c\x1e\xd3\x76\x57\x6e\x84\x0c\x32\x0e\x69\xea\x6a\xd1\x2e\x1b\x9b\x9b\x70\x65\xfe\x99\xde\x9c\x1f\xdf\xb5\x58\x1d\x54\x3e\x82\x5d\xec\x30\x70\x3d\xb7\xff\x9c\x17\xd9\xc7\xa2\xc1\xac\x17\x88\x3c\x67\x8a\x71\xb8\xc4\x06\x77\x6a\xc2\x6e\x10\xab\x89\x83\x03\xac\xc2\x65\xbd\x51\xe6\x03\x4f\xc6\x00\x12\xb8\x4c\xc0\xa0\x82\x70\x37\x35\x99\xd4\xe0\x99\x56\x8f\xd0\x0d\x67\x54\x08\x28\xd5\x2a\x3e\xb2\x20\xa8\xd5\x86\xb1\xdd\xca\x34\x25\x25\x4b\x65\x2b\x08\x45\xc6\xeb\x68\xba\xe4\xb1\x90\x42\x24\x19\x52\x2f\xeb\x59\x01\x7e\x1a\x7c\x9d\x29\xac\xca\x66\xd4\x88\x1c\x01\x2a\x85\x71\x86\x81\xd7\x56\x42\xb5\xf5\xca\x27\x62\xe4\xab\x1c\xb7\xaa\x73\x09\x8c\x6b\xa0\xdf\xaf\x1b\x42\xd3\x5d\x30\x39\x14\xdb\x7a\xa4\x0e\x95\xe2\x39\x1a\x7b\x1b\xa5\xa2\x09\xf0\x03\xa9\xdf\xf0\x37\x6e\x00\x96\xfc\x2b\xf4\x2f\xd9\x21\xeb\xed\x77\x19\xe9\x61\x8d\x5b\x29\xd8\x4e\x8f\x1e\x49\xf6\x47\x56\x86\x5c\x77\x7d\x19\xba\x40\xdb\xfa\x5d\x26\xcb\xbe\xcf\x95\xcd\xe4\x57\xe4\xf2\xa0\xb6\x62\xe3\xc6\x6a\xde\x5c\x2c\x36\x25\x55\x2e\x37\xa2\x01\xd4\xdb\xeb\x6a\xc8\x75\x8b\x4d\x7d\x50\xe3\xf5\x9c\x05\xaa\x6f\x54\xbf\xec\xe2\xea\xe2\x71\xcd\x9e\x77\x32\x2a\xf0\xd4\x4c\x11\xf5\xc7\xcc\xf0\x13\x00\x1c\x06\x57\xec\xfe\x7a\xc0\x9f\x1f\x74\x2a\x1e\x12\x88\xf2\xb6\x0a\xef\xe7\x2b\x31\x08\x74\xe1\xe3\x70\xd4\xa5\x2b\x1e\x83\x92\xf8\x2a\x82\x64\x82\x28\x34\xe4\x93\xd3\x84\xac\x0f\xe2\xd0\xd6\xeb\x7a\x1f\x0e\x2d\x8a\xa1\x3f\xdd\xf4\xb5\x5c\x9c\x89\xf9\xe2\x9d\x29\x0f\x88\x07\x4e\xca\x45\x2e\x6e\xd8\x21\x7b\x7c\x10\x95\x12\x72\x7d\x29\x1a\x2e\xee\x7f\x51\xbd\xed\x25\x35\xf4\x4e\xb7\xd1\xe8\x74\x46\x3f\xaa\x34\x05\x9f\x6b\x49\x19\xbf\x34\x1a\xe5\xe1\x73\xb3\x86\x0d\x9f\xab\xca\x75\xf4\x39\x10\x42\xad\x44\x12\x09\x9b\x9d\xd2\x1d\xc0\x83\xa6\x35\x08\x04\x0b\x88\xde\x92\xa8\x2e\x54\xcd\xf3\x6f\x54\xc1\x20\xcd\x03\xa6\x68\x40\x1f\xd8\x42\xce\xcd\x09\x96\x27\x22\xf7\x41\xce\x63\x95\xe1\xe1\xa6\x87\x21\x0c\x33\x0c\x48\x46\x35\x9e\xf1\xfc\x69\xd1\x7e\x6c\xe3\xbe\xea\xa2\x2f\xe2\xf8\x0b\x54\xd7\x30\x56\xac\x5a\x93\x78\xe5\x23\x00\x0e\xa9\xb5\xda\xfb\x9d\x2a\x93\x32\x40\xce\x33\x32\x8e\xd5\x73\x88\xbb\xfa\xc3\x1c\xfe\xe3\xa8\x5b\x17\x6a\x31\xac\x51\x9a\x62\x82\x28\x31\x18\x90\xf6\x95\x2a\x8e\x48\x11\x2a\x2d\xe2\xf9\x63\xcf\x29\x6d\xd5\x77\x56\x39\x70\xed\x02\x61\x3e\x0e\xc4\x71\xb5\x37\xdd\xb7\xe2\x2d\x55\x50\x3f\x34\x12\x57\x0d\xe1\x28\xca\xde\x70\x67\x21\x75\x48\xa8\x5c\xa1\x06\x18\x71\x76\xba\x92\xa7\x96\x43\x4f\xcd\x90\x5c\x9b\xba\xd1\xc4\x09\x64\x9c\x36\xcb\xc2\x00\x00\x34\x19\x1a\xcd\x13\xf4\xfa\xe9\xac\x28\x1d\xbb\xb1\x0e\x55\xbd\x6a\x08\x6f\xdc\x6b\x86\x53\x31\x79\xa6\x91\x95\x93\xec\x6c\xd5\x8e\xa3\xab\x2d\x42\x9a\x48\x82\x0b\xec\x5b\xae\x69\xc0\x6c\xb4\xb2\xca\x12\xea\x45\x65\x57\x62\x70\x88\x77\xf7\x34\x41\xc5\xe0\xe6\x37\x80\xec\x8c\xa0\x21\x98\x6d\x0c\x7c\xdb\x5c\x7f\xd5\x05\x03\x3d\x78\x40\x33\xa9\x5b\x44\xc7\x66\x64\x95\xfc\x49\x08\x61\x3d\xb6\x7f\xc0\x24\xfb\x93\x61\xfc\xac\xd7\x93\x15\x71\x47\x34\x6c\x9f\x48\xd0\x58\xab\x59\x57\xd6\x0c\x2b\xa0\x8a\x67\x5d\x6b\x40\xff\xab\x2e\xa3\x23\x76\xab\x8e\xaa\x65\xa1\x65\x22\x6c\xa8\xa3\x19\x1b\xae\x07\x2e\x10\x58\xc9\x70\x69\x4a\x90\x64\x01\xd6\x48\x4d\x66\xec\x40\x49\x8f\xa2\x97\x44\x56\xc8\x5c\x04\xf9\x54\x54\x85\x22\x6c\x20\x90\x5b\xf6\xba\xc0\x1d\xda\x1c\x17\x7b\x22\x8b\xae\xbe\x6a\x1c\xc7\x22\x74\xfc\xf1\xd0\x9f\xd1\x35\x9e\x74\x33\xae\xe1\xea\x8b\x1d\x46\xdc\x5a\xa0\x4e\x7c\xb1\x67\x6d\x36\x71\x97\xae\xed\x0b\xb2\x01\x34\xb4\xf6\x16\x1b\x6c\x5f\x3e\x4b\x5c\xef\x0f\x1f\x06\xd0\x6a\x05\x59\x2f\x68\xfc\xb1\x64\x4e\xaa\x11\x65\x63\x9c\xc5\xd5\xbb\xcc\xab\xf4\xfe\x5f\xe0\xf6\x52\xed\xc9\x4f\x63\xcb\xbe\x82\x06\x55\xf9\x37\x3a\xad\x7c\xb7\x16\x17\xff\x91\xd9\xaf\x1b\xd5\x6e\xab\xf2\xbb\xe3\xaa\x22\x12\x94\x7d\x82\xeb\x4d\x58\xc8\x6a\x55\x6e\xcd\x56\x65\x82\xde\x4a\x6e\x40\x8f\xbc\xe0\x9c\xc4\xa4\x1e\xa5\x80\xb6\xff\x36\x2e\xb9\x76\xb3\xaf\x8d\x86\xad\xdf\xa1\xd5\x60\xdb\xed\x97\xd7\x0c\x9a\x3e\x5a\x01\x09\x5a\x44\x48\x86\xa4\x44\x1b\xcc\x2d\x66\x52\x11\xa0\x78\x50\xed\x40\x3c\x02\x70\x17\x7b\x51\x82\x04\x0a\x11\xa6\x1a\xf6\x76\xa8\x3a\xb9\xb0\x8b\x00\x7d\xe6\xb4\x8c\x2b\x9a\x92\x3f\x1e\xc6\xf5\x1b\xb0\x60\xc4\x84\x69\xe6\x83\xaa\x90\x37\xe2\x52\x4a\xbc\x44\xcc\x55\x6a\xaf\xbf\x7f\x5b\xce\xc1\xe7\xad\x50\xa1\x07\x4c\x60\x14\x75\x67\x13\xdc\x41\xbb\x2c\x73\x70\x3c\x05\x47\x44\x09\xeb\xd1\x6d\x79\x49\x02\x73\x47\x6a\xd4\xe6\x49\x3c\xb9\xe0\x24\x1b\x7a\x0b\x76\x59\xfe\x8a\xd2\x1e\x44\x82\x57\xec\xf8\x5b\x5e\xce\x92\xe0\xb8\x56\x8b\x8a\x15\xc9\x86\x15\x38\xa8\xc8\x30\x8d\xbe\x2c\x0d\xd2\xb1\xcd\xc1\x45\xae\x1c\x9d\x8a\xa4\x6c\x2b\x04\x1b\xdf\xe6\x5d\xb3\x17\x0e\x25\x39\x79\x3b\xd7\x49\x12\xe5\xd7\x8a\xf1\xf5\xd0\xea\x29\xbf\x5a\x2f\xa4\xff\x32\xde\x09\xad\x75\xdd\xaf\xf3\x01\xad\xbd\x73\x76\x5a\x86\x65\x59\x6b\x5c\x27\xcb\x8b\x5e\xe3\xbc\x15\x8e\x8f\x24\x9e\xed\x06\x67\xef\x55\x8c\x40\x51\xb3\x34\x31\x64\x5b\xe1\x1e\x6e\x44\x8e\x34\xf0\x66\x3a\x20\x8c\x5a\xd6\xf0\x9f\x38\x12\xc2\xdb\xb2\x43\xb7\x7b\xaa\x8c\x3b\xde\x02\x65\x59\xbb\x5b\xba\x58\xeb\x94\x83\xe4\x2b\x97\x63\x75\x56\xf6\x35\xde\x65\xcd\x87\x2d\x09\x9f\x17\x7b\xe1\x79\x9b\xff\x0f\xc0\x6c\xa0\x68\x54\xc6\xc3\xb6\x50\x5e\x7c\xcd\x5d\xbc\xac\x29\x2b\x2e\x6a\x2d\x0d\x5b\x6b\xab\x35\xb9\xab\x59\x20\x04\xbb\xc5\x45\xc8\xcc\xa7\x26\xc5\xd3\x88\x36\x32\x78\x98\x42\x0a\xcb\x91\xb0\x3e\x00\x74\xef\x64\x8f\xb3\x00\x8c\xcd\x83\x69\x95\xac\x3c\x17\x7a\xa1\xb2\x04\xe2\x69\x39\x83\x57\x20\x58\xdd\x69\x57\x95\xf6\x64\x9a\x8a\x29\x4f\xa9\x36\x2f\x0a\x31\x5f\x04\x0e\x65\x81\xb9\x23\xf4\x82\x0a\x48\xca\x5b\xc5\xbd\xef\x15\x1a\xe3\xe3\x95\x2d\x1b\x04\xc3\x30\x31\xb2\x0a\x0f\x2b\x97\x21\xdd\xf0\x70\xb2\xd0\x87\x61\x4f\xbe\x02\x75\x39\xb4\x7f\xb8\x15\x28\x9d\xa6\x11\xff\x6c\x0a\x0a\x02\x2f\x95\x54\x8e\xe0\x11\xaa\x74\x65\x9d\x66\x8c\x24\x91\x72\x5d\x30\xb0\x88\xa2\xa2\x6a\x63\xe6\x6d\xde\xd2\x08\x08\x1f\x8f\x65\x22\xb2\x02\x24\x99\x05\xd7\x9a\xc9\x02\x83\x57\x23\x3f\x9f\x7e\x89\xc3\x6e\xf4\x2b\xda\xc2\x91\x2f\xca\x4c\xf4\x4e\x4c\x79\x9e\xa4\x42\x83\xd3\xc8\xed\x4c\xd0\x95\xa7\xd4\x0c\x5f\x19\x80\xf8\x72\x1f\x1a\xa2\x19\x67\xcf\xd4\x7c\xae\xb2\xbf\x9e\x32\xcc\x7e\x4e\x90\x14\xe4\x78\x8c\x82\x34\x6d\xf2\x21\xba\x71\x0b\x10\x32\xe6\x19\x4b\xc4\x38\xe5\x24\xd3\x59\xaf\xbf\x0b\xeb\x9c\x5f\xce\x6f\x64\x53\x27\xa0\xf3\x91\x1e\x2b\xa3\x1f\x40\x72\x56\x74\x0d\xd3\x38\x66\x1c\x51\x29\xdd\x2e\xa5\x0b\x11\x5c\x4b\xb3\x8f\x56\xec\xc3\x48\x66\xa1\x4f\x89\x61\x5e\xf8\x7a\xbf\x7d\xb6\x81\x26\xdf\xff\x4d\x7f\x80\x25\x88\x23\x5a\x01\x7d\x77\x6d\xea\xe0\x78\xb2\x1b\xbe\xba\x90\x5e\x10\xff\xee\x13\x44\x02\x45\x1e\x42\x35\xd3\x87\x64\x99\x0b\x3e\x16\x7d\x76\x62\x96\xe8\x16\xb2\x1d\x84\x59\x7b\xcd\xfe\x5c\x5d\x84\x1e\x3a\x7d\x76\x84\xc1\x0d\xb7\x7c\xd5\x0d\xbc\xca\x20\xe7\x83\xbd\xc2\x4e\x53\xe7\xc0\x5e\x28\x26\x33\x59\x48\x78\x5c\xe3\xc2\x87\x3d\xd7\x0c\xc7\x79\x69\xd2\xfd\x28\xc6\x5c\x23\x1e\x26\x32\x45\xba\xa5\x1b\x40\x5a\x93\x52\x4e\xa1\x27\x25\x0c\x80\x4c\x7c\x91\x75\xd0\x9c\xe1\xf2\xdf\xd6\xf4\x7d\x68\xe9\xea\xe0\x22\x73\x09\x6e\xfd\x7e\x3a\x85\x6c\xf1\xaf\x55\x62\x6d\xa9\x36\x05\x24\x8d\x83\x3c\xb4\xac\xeb\x12\xc6\xb4\x1a\xf2\xc2\x34\xf3\xa6\x9a\xb0\xc9\x92\x31\xd4\xc5\x2d\x8e\x96\x53\xcc\x20\x19\x7b\x79\xdd\xaa\xfc\x9a\x2d\x33\xd8\x44\x5a\x19\x0e\x02\x10\x35\x9b\x4b\xed\x92\xa2\x26\x7d\xf6\xd7\xa5\xcb\xbf\x25\x33\xc8\x6b\x6c\x67\xd2\xff\x4d\xc7\x1c\x21\x5f\x62\xea\x87\x68\x4c\xb4\x6f\x84\x1e\xf3\x85\x1d\x54\x50\x81\xa1\xc7\x16\x67\xf8\x88\x31\x7b\x11\x26\x80\x21\x5f\x2c\xb4\xbb\x8d\x55\x36\x16\xf2\x86\x8f\x0c\x03\xe3\x98\x14\xc5\x0c\x6a\x02\xc4\x0a\x6f\x0c\xb0\x53\x31\x5e\xe6\xb2\x58\xb1\xb7\x2a\x95\x63\x60\x74\x23\x99\x68\xea\xe4\x85\xcb\x59\x46\x29\xab\xc9\xec\xaa\x43\xba\xc1\x9b\x78\x06\x0f\xb8\xda\x10\x35\xc5\x26\xf2\x23\xa2\xd6\xcd\x37\x9a\xc4\x22\x57\xa3\x54\xcc\xad\x77\xea\x60\xc0\x56\x6a\xd9\xba\x11\x31\x32\x21\xc5\x2c\x1b\x2d\xb3\x24\xc5\xc4\xe0\x13\x95\x8f\x45\x04\x88\x67\x09\xe3\x8b\x45\x2a\x45\x82\x7a\xe0\x60\xc0\x9e\x9d\xbe\xa5\xca\x23\x99\x04\x93\x30\x75\x4d\x37\xb9\x00\xba\x30\xbb\x82\x34\x48\x33\x5a\x0a\x11\x02\xfa\x56\x6e\x86\x34\x50\xdd\x65\x8b\x54\x98\xb5\x44\x27\x34\x1c\xd9\x32\x93\xff\x5a\x0a\x4a\x5e\xc2\x81\x66\x20\xc7\xc9\x4b\x59\xfc\xba\x1c\x31\xf0\x61\x83\x3d\xe2\x02\xe2\x2f\xf6\x72\x9b\xd9\xb1\x8e\xe2\x2f\xf6\x3a\x6d\x22\x16\xb3\x43\xee\x2e\xb2\xbd\xee\x1e\x18\xff\x21\xc5\x60\x98\x81\x41\x5a\x2b\xbb\xbb\x4f\x37\x52\xbb\x2c\xfa\xaf\x79\x31\x63\x87\x87\x0c\xfe\x0b\x45\x06\x12\xec\xb7\x20\x24\x3a\xf0\xbf\xfb\x77\xaa\x64\xae\xc6\xd7\xfe\x39\x14\xf4\xbd\xfb\xe5\xa7\xff\x82\xbf\xc6\x6a\x6e\xa6\xd6\xdb\xdf\xff\xf1\xe7\x1f\xff\xf0\xf8\xbb\x5f\x2e\xb2\xd2\xa6\x3e\x24\x64\x09\x9d\xca\xac\xe8\x25\x52\x1b\xae\xd1\x33\x07\x6b\x2f\x95\x99\x41\x77\x0f\x4e\x33\x53\x0f\xa6\x62\xfd\x06\x90\x88\x81\x68\x0f\x0f\x59\x0b\xf9\x46\x0b\xf2\x3f\xba\x2f\x1d\xd2\xd3\xa2\x86\xb7\x32\x4b\xd4\x6d\xb9\x11\x96\xd6\x36\x00\xdf\xcc\x52\x75\x53\x56\x5b\x99\xf6\x56\xed\x90\x6c\x83\x0d\xf3\xcd\xc4\x6d\xcf\xac\x56\xb4\xfc\xad\x40\x71\x6e\x75\xc0\x59\x67\xaf\xbb\x57\xc6\x26\x0b\x1f\xca\x10\x56\x8a\x0a\x92\x85\xbb\xdb\x06\xf3\x99\x5c\x7e\xc2\x24\xe0\x41\x52\x2d\xdb\x61\xee\x73\x85\xdc\x1d\x38\xb2\x32\x6c\x41\x83\x38\x0c\x79\x61\xda\xad\x7e\x3f\x7c\x5e\xcc\x7c\x6d\x75\x2c\xe9\x9c\xcd\x78\x76\xdd\xd2\xec\xf8\xe8\x17\x50\x1c\xe0\x14\x58\x66\xd9\x8a\xc5\x4f\xb2\x57\xc9\x83\x3d\x00\x50\xed\x4a\xfe\x10\x1a\x1d\x65\x5b\x8c\xc1\xb4\x3f\xdd\x75\xd9\x7e\x97\x7d\x62\xd3\xf0\x2e\x1d\xda\xda\x86\x3f\x1f\xb0\x3b\x76\xd7\x39\xdf\xbf\x64\x0f\x0e\xd9\xcf\x86\xd0\x09\xa7\x2d\xff\xa4\x48\xeb\x00\x5f\x22\xc1\x8c\x9f\x16\xfc\xb1\x3e\xca\x96\x73\x14\x34\x21\x33\x73\x7f\x51\xf3\x85\x9a\x4e\x45\x11\x3c\x2f\xf2\xdc\x3d\xb2\x1f\x65\x5b\xae\xad\x61\x91\xf7\x86\xeb\x99\xca\x33\xf6\x7f\xd8\x5f\x9f\xff\xed\x17\x36\x5a\x4e\x11\xf2\x9b\xa7\xa7\xbf\x9e\xbc\x7b\x73\xf5\x97\xbf\xbf\xc4\x14\xcc\xf5\xfd\x3c\x7c\xc8\x1e\x34\x8f\x1f\xad\x92\x9f\xd8\xfe\x90\x7d\xc7\x0c\xd6\xdc\x9a\x7d\x28\xbf\x9e\x52\x3b\xcb\x0f\x56\x0f\x89\x5d\x02\x22\x86\x51\x8c\xbf\xff\x43\x9f\xb8\x86\x54\x03\x31\x9e\xf3\xef\x7e\xfa\x6e\x00\xd9\x12\x54\x53\x27\x52\x0b\xd7\xc9\x45\x66\x7d\x37\x26\xec\x30\x9a\xf7\x93\xc0\x89\xb6\x66\x74\xed\xf7\x44\x2d\x98\xbb\x20\xc0\x7d\x13\xba\xe8\xba\xfc\x3d\xee\x0c\xb7\x5b\x92\x08\x9f\xfe\x57\x5f\x84\xeb\x7d\xc7\x86\x6b\x48\x65\xe3\x8e\x1d\xc9\x62\xce\x17\x94\xb0\x30\x26\x73\xda\x92\xbe\xb7\x21\x7b\x40\xf5\xd9\x43\xb6\x6f\xd5\x1d\x7b\xfe\x55\x6a\x7c\x67\x6b\xdc\xe6\xb2\xa8\x7c\xfd\xc1\x7e\x25\xf7\x16\xe7\x3b\x77\x77\x10\xed\xf9\xc0\xef\xf9\xd3\x9d\xf3\x82\x06\x82\x59\x33\xad\xf2\x71\x63\xdb\x59\xdf\xa8\x0e\xf9\x1d\xfc\xd2\x65\x3d\x20\xbf\x7b\x70\x19\x38\xe8\xf0\xa1\xe9\xc6\xda\xf4\xbd\x97\xf3\x5b\xe2\x4c\x90\x5a\x65\x91\xca\x82\x1d\xb2\x56\x0b\x5e\x09\x2b\x2c\xf9\x4f\x6c\xba\xb3\x09\xe8\x2d\x19\xbd\x8b\x0c\x6f\x84\x1c\x9d\x7e\x0f\x12\x81\x29\xf6\x4b\xc2\x54\x9a\xb0\xf7\xbf\x30\x7c\xe7\x49\xd7\xe1\xa4\x9e\x95\xd9\xbb\x48\x0d\x01\xfb\x10\x30\x28\x33\x96\xcf\x64\xa6\xba\x4c\xd7\x7b\xbe\x53\x42\x92\x01\xd4\xb2\xc7\xee\xf7\x3f\xfc\xb4\xc5\xf1\xe2\x1f\x30\x1d\x2d\xa5\x11\xf6\x75\x48\xea\xb8\xeb\xdb\xad\x7f\xb7\x3a\xb5\x1b\xbe\xfd\x18\x96\xa8\x13\x6e\xbd\xca\x12\x13\xaa\xa1\xdc\x9c\x84\xb8\xe0\x2d\xf6\x04\xd1\x6d\x57\xbe\xcb\x5a\xad\x0e\x1b\x12\x23\x34\xb5\x69\x13\x61\x01\x92\x81\x61\x45\xef\x70\x41\xb1\xf8\x99\x12\xf9\x58\x02\xef\xb1\x6f\x46\x32\x33\xce\xdd\x18\x0f\xd1\x08\xf2\x9f\xb1\x05\xb9\x1d\x21\xa3\x53\x24\x8b\x63\x9a\xd1\x42\x12\x46\xdf\x3d\xe3\x59\xab\xc0\xe8\x23\x62\x92\x2a\x63\x17\x7b\xec\x11\x93\x45\xc4\x5f\x9c\x9c\x85\xd3\x2d\xd4\x49\xe0\x3f\xbc\x89\x10\x1d\xb9\xc1\xcb\x01\x59\x22\x3e\x8a\x84\xda\x37\xed\x04\x89\xb5\x88\xf9\xba\x0d\x94\xd7\x62\xb9\x11\x0a\x95\x12\x94\x9e\xc3\x21\x6d\xae\x1d\x38\x42\x34\xea\x76\xfd\x30\x4c\xa3\x80\x39\xec\xc2\x6f\xac\x9f\x29\x68\x98\x4e\x2a\x7b\x62\x4a\x1e\x1c\xe2\xbd\x0d\x1b\x96\xab\x59\x78\xad\x98\x21\x49\xbd\x09\xb7\x3a\x44\x2b\x9e\xa4\x67\xea\x6d\x2e\xe7\xd2\x1c\x0c\x5f\x44\xb3\x85\x5a\x58\x38\xd0\x86\x9e\x1f\xb0\x1e\x0f\x47\xa7\x3f\xe1\x23\x1c\x37\x22\xd7\xa0\xb6\xdc\x0a\x96\xc8\xc4\x50\xa1\x0f\xdf\xf9\xf3\x9f\x0b\x3f\x1c\xd2\xc8\xc8\x3f\x1a\x52\x21\x89\xb1\x32\x8a\x91\x35\x14\xf6\xd8\x24\xe5\x53\xd6\x33\xaa\xca\x44\xe4\x46\xb5\xf2\x6f\x6f\x21\xed\xad\x5f\xeb\x6c\xb1\x2c\xba\xec\xed\xbb\xa3\x17\x47\xef\xde\x1d\x3d\xbf\x3a\x3d\x7b\x77\xfc\xe6\x65\xb0\x93\x1e\x58\x9c\x62\xdd\x4e\xc7\x07\xab\x2d\x96\xe8\x0e\x03\x47\x41\x06\x27\xe3\x81\x6d\x56\x86\x68\x0e\x66\x5a\xc3\xf6\x24\x83\x18\xce\xc5\xb2\x70\xa7\x14\x32\x22\xb7\xaa\x20\x16\xb9\x8e\xf1\xfe\xc4\x3e\x93\x43\xc3\x70\xe3\x08\x7b\xad\xe9\x01\x4e\xcb\x93\xc9\x57\xea\xe0\xc1\x7f\xff\xbc\x1a\x39\x97\xca\x6e\x44\x5e\x04\xe1\x5c\x8e\xfc\x48\x44\xd8\x2b\x1d\xd7\xf1\x5b\x7a\x28\x26\x54\xde\xd7\xdb\xc0\x1a\xba\xec\x5a\xac\xe2\x1d\x1c\x83\xf0\xa7\x07\xc5\x6a\x04\x03\xb0\xda\x57\xc3\xe6\xc4\xcf\x8e\xe1\xed\xbc\x99\x41\x8c\x54\x63\xdc\x19\x87\xd4\x5b\xdf\x96\x1c\xc0\x46\xa2\xb5\xb2\x85\x94\x08\xfe\x88\x76\x9f\xd4\x9e\x03\xc9\x0c\x44\x86\xe3\x23\x04\x7c\xf4\xbf\x8f\x4f\xcf\x4e\xcd\x02\xdb\xe5\xb3\x30\x3a\xa0\x8c\x97\x4b\x63\xc8\x3b\x33\x5d\xea\xee\x49\xc3\x48\xa1\x3e\x5d\x43\x07\x08\x7e\x7e\x74\xfa\xec\xdd\xf1\xdb\xb3\x93\x77\xa7\x8d\x58\xf3\xe2\xb1\x17\xce\x76\x12\xe4\x22\x8c\x35\xf6\x42\xc3\xee\xd1\xd3\xf0\x02\xeb\x7f\x1d\xa5\x33\x9c\xa6\xd9\x51\xf7\x51\x42\x63\x74\xb6\x12\x79\xd3\xea\x74\x59\x8b\xb7\xba\x56\x9c\x5f\xaf\x9d\x82\x00\xde\xe9\xf3\xb2\x7e\xfa\x25\xcb\x50\x27\xd1\xbd\x26\xf3\x6b\x03\x18\x3a\xde\x6d\xcb\x9e\xd4\x81\xcc\x5b\x5a\xb3\x5a\x35\xb7\x41\x1a\xc7\x55\x73\x60\xfd\x68\x1d\xcc\x42\x6d\x27\xce\x14\xaa\xd7\x20\xd1\x84\x27\xdd\x9a\xd6\x8e\xad\xb9\x86\x33\xde\x4c\xac\x33\xee\xf1\x79\x7c\xf4\xcb\xd5\xf3\x93\xd7\x57\xcf\x8f\x5e\x1c\xbf\x39\x6a\xe6\x23\xe2\x97\x5e\xa2\xe6\x3d\xa4\x90\x80\x99\xa0\xb6\xf8\xf2\x8b\x6d\x04\x1f\x36\xd4\xb3\x6a\xfa\xae\x7a\xf9\x54\x14\xea\x36\xb3\x8b\xe4\xd7\x28\xd6\xc8\x43\x6a\x7c\xb2\x69\x4e\x01\xc5\x37\x2a\xe1\x27\x5d\xf6\x96\xb6\xd8\x09\x3b\x2c\x13\x42\xfb\x04\xa5\xe7\xb7\xf0\xc9\xad\x70\xfb\x6d\xe8\x63\x67\xce\xd2\x78\x75\x3a\x35\x76\xb0\xf5\x63\xc5\x71\xd4\xdb\xc8\xd8\xe0\x5b\xbc\x51\x61\xdf\x0e\x70\xaf\x92\xd7\x1e\x36\x72\x87\x6c\xd3\xc6\x68\x3f\x68\xde\x8b\xfd\x09\x9e\x71\x00\xa9\xcb\x4e\xce\xdf\x5e\x76\xbe\x50\x0c\xdd\x56\xad\x09\x84\xb1\xc2\x87\x01\x94\x25\x04\x14\x3d\xa0\xe5\x23\xd6\xaa\xa4\x15\x69\x59\x9c\xd5\xe8\x37\x5f\xc2\xbd\xee\xbf\xdb\xe0\x89\xdc\x6c\x03\xce\x78\xf6\x55\xf8\x47\xb8\xb3\x9f\x47\x47\x82\xdf\xcf\xf1\x51\x51\xde\xc5\xf1\xd7\xfb\xee\x5d\x84\xb2\x70\xa7\xdc\xa6\x1d\x5b\x1a\xeb\xb0\xfc\x16\x95\x3b\xd8\x0c\x59\x76\xd9\xd3\xa2\xc8\xe5\x68\x59\x08\x1b\xef\x62\xf1\xbb\xd5\xf6\x74\x95\x03\x30\x3b\xef\xdb\xe7\x1b\xc6\xb5\xcb\xce\x6d\x4d\x05\x8a\x64\xbe\x3d\xfb\xfc\x99\xb5\x74\xa5\xb8\xaa\xea\xb7\x9e\x8e\xc7\x42\x6b\x95\xe3\x3e\x70\xaf\x94\xb7\xfc\x94\x5a\x20\x30\x57\x20\x99\xad\xcd\x0e\x83\xa2\xe0\x41\x16\x2b\x5c\x7c\x9d\xbd\x13\xaf\xe1\x76\x67\x3e\xb6\x71\x67\xf4\xef\x76\xd8\xd7\xb0\xa7\x98\x40\x3d\xb3\xb2\x01\xbf\xd7\x62\x55\x6b\x28\xad\x9b\x66\x7f\x12\x37\x6b\x64\xc9\xfb\x16\xa4\xb5\x43\x6d\xd1\x2f\x7e\x38\xbf\x16\xab\x4b\x1b\x52\x18\xae\x9e\xb2\x96\xac\x7b\x2b\x29\x38\xda\x37\x2a\xf3\xa7\x44\xc0\x4f\xd6\xe2\x3b\xb6\x4f\xc6\xeb\xb8\xf6\x48\xa8\xcc\x32\xd8\x81\x6b\xc6\xd3\xc6\xa1\x47\x58\x5a\x77\xc3\x84\xd5\xab\xb8\xbb\x0b\x34\x54\x28\xba\x37\xf2\xb4\x28\x5e\xae\x6f\xa0\x45\xd1\x0b\x1a\x61\xb3\xd3\x5f\x9f\xbe\x3b\x7a\xce\x0e\x59\xeb\xea\x8a\xae\x36\xaf\xf4\x8c\xe7\x22\xb9\xba\xb2\x77\x42\x98\x62\xc1\x2a\x81\xe7\xd8\xe4\xd2\xf0\x0c\xd7\x69\x1b\x0b\xbb\xec\xd3\x5d\x03\xca\x01\x88\x9f\x9c\x85\xd9\x30\x54\x18\x41\x0f\x2a\x05\x83\xb5\xcb\x76\xe6\xad\xf3\xee\xfd\xc3\xc8\x46\x8f\xd9\x06\xb4\xcd\x77\x33\xca\xd5\xb5\xc8\x0c\x47\xfa\xf0\x7d\xff\x87\xfe\x7e\xcf\xfc\xff\x0f\x1f\xec\x53\xca\x63\xb0\x01\x2c\xb5\x60\x1f\xb0\xe3\x0f\xd4\xf0\x22\x0b\x0c\x21\x30\x98\xbe\xcc\xf4\x42\x8c\x8b\x53\x7c\xc9\xff\x41\x68\x90\xa0\xc5\xae\xab\x57\x2b\x84\x54\x32\x1b\x9c\x95\xaf\x0b\x5c\x34\xfc\x5d\x33\x4a\xe3\x9e\xee\x6d\x1f\x28\x0d\xb7\xc9\x9a\x0a\xb5\x7a\x1a\xaa\x05\x0b\xf3\x0f\xc1\xaf\x5f\xc3\xc3\x66\x64\x28\xa0\x82\x7a\x52\x20\x84\xba\x46\x15\xb3\xce\x80\xde\x1d\x1c\xab\x44\x0c\xfa\x85\xd0\x45\x3b\x1a\x60\x9b\x9a\x76\x1a\xef\x86\x29\xce\x96\x70\x71\x7c\x7a\xf5\xf6\xef\xef\xd6\x88\x51\xba\xb7\x58\xe6\x5e\x7e\xda\x99\x38\xdb\xbb\x70\x18\x5a\x75\x68\x8f\x1c\xe1\xf3\x67\xd6\x0e\x7e\x12\x83\x00\x93\xad\x33\xbb\xb3\x27\xcc\x66\xe1\xc7\x3d\x76\xd7\x69\xb7\xc8\xfc\xa9\x5b\x5d\x76\x7e\xd9\xc1\xb4\x1e\x78\x0b\x88\x1f\x86\xac\xf5\x7d\xff\xa7\xfe\x8f\x2d\xb8\xf5\x9a\xab\x44\x0c\x1d\x32\x9e\xb0\x16\x4c\x9a\x0d\x59\x8b\xa8\x01\x6a\x8d\xd5\x62\x05\x0f\xa3\x0c\x59\xeb\xff\xf7\xff\x65\xdf\x3d\xfe\xee\x31\x7b\x2e\x32\xa9\xd9\xdb\xa5\x9e\x5d\xf3\x5c\xdc\xb0\xb6\x75\x87\xe8\xe7\xcb\x4e\x2b\x56\xd8\x65\x42\x11\xd9\xa0\x85\x2b\x5d\x4c\xe4\x47\x86\x9e\x16\xfd\x9c\x67\x89\x9a\xb7\xb7\xe1\xca\x31\xb2\x5a\x98\xad\xa1\xdd\x62\x8f\x18\x89\xe4\x90\xd3\xa3\x84\xa1\x96\x99\x0d\x34\x7e\xc4\x5a\x9d\x2b\x53\xbb\xfd\xe8\x91\x4c\xd8\x23\x3b\x92\x8e\x63\x14\xed\xef\x7f\x2a\xa9\x1a\xb8\xb0\x1b\xd6\xdd\x11\xc9\x52\x36\x57\x5d\xca\x24\xd8\x1d\x94\xa3\x05\xdb\xb7\x5b\xe6\xe7\x56\x07\x53\x8c\x02\xd3\xcc\x93\x8b\xff\x75\x68\x46\x02\xd5\xd7\x5d\x1a\x7c\x0a\xe6\xf9\xe6\xe9\xd9\xf1\xfb\xa3\xab\x7f\x1c\x3d\xfd\xdb\xd5\xeb\xa7\x6f\x1b\x67\x81\xbb\xb0\x77\x2b\xf8\x75\x6f\xce\x17\x6e\xe6\xbf\xab\xe9\xf1\x77\x14\x04\x0c\x68\xec\xe9\xd7\x2d\x8d\x1e\xb8\x64\x7f\x13\xcd\xdd\x12\x33\xb8\x16\xbe\x8b\x99\x4c\x12\x91\xfd\x0d\x17\xbd\xa1\x0f\xa8\xd2\x0b\x28\x61\x03\x17\xa5\x13\xbe\xcb\xa6\xe6\xff\x66\x5c\xbb\x46\x22\x43\x7f\xaf\x75\x06\x50\xa3\xab\x9b\xb2\x27\xa6\x39\x99\x3b\x35\xfc\x65\x0f\xec\x3b\x07\x6f\x2a\x8a\x42\xe4\x2f\x40\xc4\xf5\x10\xcf\xfe\xf9\xf6\x28\x86\x59\x7b\xa0\xb9\x17\x3c\xc8\xc5\xb6\xa2\x67\x13\xab\x43\xf7\x66\x1a\x4c\xa7\xef\x1e\xbb\x0e\xba\xa9\x53\xc6\x5b\xc7\x99\xcd\x24\x9c\x42\x2a\x2b\x21\x6f\x44\xde\x65\x66\x9f\x9b\xa6\xa0\xa2\x13\xc6\xad\x4a\x12\xc8\x58\x7e\x64\x77\x6e\xca\xf0\x40\x77\xbc\x1f\x02\x47\x0a\x7b\x10\x64\xe2\xd6\xae\x0e\x79\x12\x99\xaf\xb7\xf3\xa9\x28\xdc\x39\x3c\x15\x45\xf0\x05\xcd\x6a\xf8\x05\x97\xcb\x7e\xd1\x41\x1b\x4d\x6d\xb0\x2c\xbe\x1b\x98\x8b\x82\x27\xbc\xe0\x0e\x1f\xd0\x14\x65\x03\x68\xdd\x65\x51\xb5\x38\xbd\xa0\x2d\x76\xd3\x05\x1b\xec\x06\x41\x04\x26\x54\xea\xa1\x13\x24\x19\xc3\xff\xc7\xa9\xad\x87\x33\xe3\xba\x0c\xc7\x23\x3e\x08\xb2\x04\x11\xf4\xec\xe9\xd9\x91\xe3\x8f\x7f\x13\xab\x76\x0b\x56\x8a\x16\xd0\x6f\xa7\x73\xa8\x79\x19\xa6\x11\xda\x0a\x71\xeb\xe4\x78\xd3\x00\xc0\x7e\x5d\x4c\x3a\x36\xe3\x3b\xe8\xc0\x3d\xac\x9d\xc3\x70\x57\x9c\xd6\x41\xdc\x20\x1f\x7e\x22\x0c\xc1\x66\xef\xd2\xc0\x87\xc0\x42\xa8\xcf\xa1\xf9\x3f\xf8\x41\x6c\x64\x68\xff\xb0\xd5\x91\x17\x0c\xfd\x9f\xff\xf3\xf4\xbb\x5d\xac\xd8\x3b\x6b\x49\x5f\x24\x1c\xa3\x9f\x02\x56\x80\x67\x0b\x36\x18\x23\xec\x5f\x3d\x4f\xff\x8e\x29\x47\x70\xd8\x61\x1d\x5c\x62\x41\xc1\xa9\xb0\x4d\x23\xaa\x4a\x0d\xcf\x8e\x5e\xbf\x7d\x85\xfb\x91\xc4\x24\xba\x7c\x45\x9f\xa1\xb6\x75\x70\xd9\x2c\xf7\x9e\x84\xca\x71\x17\xb2\xc0\xa8\x4c\x07\xcc\x75\x99\x69\x3e\x31\xa3\xa2\x4f\xec\x09\x7b\xf0\x80\xfe\xee\xd3\xc7\xf0\x45\x6f\x58\x3f\x4c\x1e\x57\xdf\x26\x70\x50\x2a\xb7\xcb\xd4\x19\xcf\xa7\xa2\x78\x09\x3b\xb7\xae\x71\x58\x23\x6c\x1d\x68\x80\xf6\x41\xe0\xaa\xce\x17\x55\x43\xc1\x94\xb5\x34\xb9\x02\x3d\x7c\xc8\x1e\x98\x13\x98\x10\xd1\xca\xf8\x5c\xb4\x3a\x9d\xb5\x6c\x29\xaa\xeb\xae\x7f\xd1\x31\xae\xba\xb2\xf6\x2d\x5d\x6d\x29\xd4\xae\x62\xff\x37\x25\xb3\xa6\x71\x3d\x81\x92\x21\x6b\xb5\x3a\x3e\x75\x14\xbc\x83\x0e\x72\xb5\x75\xe4\x0d\x26\x88\xd8\xef\xb0\x93\xaa\x21\x83\x21\x53\xf7\x06\x81\xb2\x61\xc4\x32\x32\x32\x7b\xb8\x00\xcb\x07\xb8\xd2\xae\x1f\xca\x53\x89\x5d\x54\x2a\x87\xab\xf4\xf0\x21\xd5\x72\x6d\x1d\x75\x84\x9e\xbc\x1b\x87\x0e\xd0\xd7\x2d\xc6\x49\xd9\xcc\x33\x18\x30\x9e\x24\x6c\xc2\xaf\x85\x33\x40\xfc\x97\x73\x19\x9c\xa8\xdc\x3d\x6b\x0a\xf1\x10\xf4\xf6\x2f\x19\xb7\x35\x1b\x84\x79\xb1\x34\xfa\x3e\xd9\x6f\xe0\xec\xf4\x4a\x3d\xe7\x7a\xc6\xa4\x7e\xc3\xd1\x03\xe6\xae\xd3\x76\x86\x0e\xe7\xd4\xd6\x65\x2d\xdb\x67\xab\x1b\x66\xff\xa0\x8d\x5b\xeb\x1b\x54\x58\x2f\xf2\x48\xe1\x2e\xf3\x17\xf0\x0d\x75\xf4\xf4\xf9\x73\xcc\x02\xdb\x36\x8f\x65\xa8\xf6\x6d\x7f\x14\xd4\x9c\x54\xf8\xd5\x03\x5b\x80\x7b\x7e\x03\x28\xf3\xf1\x1e\xba\x08\x5d\x8d\xb8\x50\x90\x90\x57\xd9\x18\x9e\x5a\x94\xb9\x00\x9f\x18\x6d\x4f\xfc\x87\x61\x14\x86\x76\xb7\x49\xb5\x73\x01\x4c\x5d\x5a\xf6\xb8\x5b\xeb\x90\xe4\x82\x4b\xff\xc8\xbe\x63\x4f\xfc\xc8\xdb\x06\x01\xe7\x0e\xc8\x25\x48\x68\xfe\x2b\x59\xe9\x82\xef\xb8\x39\x86\xac\xd4\xce\x2c\x7c\xa9\xc8\xbe\xe8\x6e\x20\x56\xe0\x78\xef\xfe\x9a\x16\xb1\x26\x3d\x16\x32\xb5\x3a\xbf\xf9\xdb\xba\x46\xa4\x0a\xf4\x0a\x28\x87\x1f\x81\xe3\x98\x21\xc0\xa9\xc8\xbf\xd0\x6d\x4c\x22\x94\xb5\xf8\xb7\x08\x2e\xc5\x86\x40\x7a\x30\xe7\x0d\x76\xc8\x1e\xf9\x7a\x4f\xd8\x63\x36\xf4\x0d\xd9\x9f\xd8\x63\xf6\x84\xa6\x33\x84\xd9\x76\x3c\xd4\xb2\x27\x31\x4d\x6c\xfd\xa5\x3e\x54\x09\xe8\x74\x2e\x33\x8b\xa8\xb9\xcc\x02\x34\xbd\x02\x9a\xf8\x42\x2c\x21\x61\xdd\x03\x49\x25\x0c\xcc\xcd\xe9\x62\x27\xe8\x9b\x74\xd9\xe3\x8f\xfb\x2f\xc2\x7f\x46\xe3\x7c\x7c\xc0\x06\x03\xf6\x1d\xfb\xf6\x5b\xf6\xe3\xf7\xac\xc7\xf6\xcd\x86\xfa\xc3\xe3\xc7\x3f\xef\xff\xe1\x0f\xdf\xfd\xf8\xc3\xcf\x3f\x3c\xfe\xc3\x1f\xf6\xbf\x0a\xee\xb8\x33\x38\xcd\xf9\xc7\x83\x75\x08\xfd\x15\x0d\xc4\xf0\xb0\x17\x5b\xa8\xc5\x32\x05\xef\xd0\x05\xa5\x60\x85\xc0\xb4\xf8\xe5\xc4\xc1\x80\xbd\x12\x05\xa3\x5e\xd9\x48\xb0\x27\xcc\x11\x6f\x1b\xbc\x33\x3a\x7d\xa8\x76\x3c\x71\xb5\xfe\xc8\x1e\xe3\x6b\x04\x94\xcb\x7e\x24\xcc\x20\xdb\x6d\xda\xe0\x8f\x6c\x45\x83\xb9\xce\x01\x9e\x48\xa5\xea\x32\x6b\x53\x25\x03\x09\x92\x71\xf6\x37\xb8\x23\x26\xe2\xa3\xab\xeb\xc5\x2e\xe9\x50\x5a\x94\x86\x1d\x39\xea\xfa\x91\x9b\x75\xe6\x1f\x6d\xef\xec\x11\x81\x34\x43\x65\xc3\xda\x81\x55\x77\xc0\x97\x3a\xb7\x20\xd5\xaf\x6b\x8a\x5d\x07\x4d\x9e\x8e\x20\xda\x4e\x40\xe7\xeb\x5a\x72\xaa\x88\xbd\x07\xce\xac\x4f\xf3\x9c\xaf\xc2\xc4\xfb\x0c\x6a\x9c\x4c\xba\x8c\x62\x64\x35\xbb\xfb\xe0\x8e\xee\x72\x5c\x88\x57\x79\x5c\x12\x5a\xbf\x3a\xc7\xa7\x57\xc7\x6f\x9e\xbd\xfa\xfb\xf3\xa3\xd3\x26\xbb\xca\x37\x18\xa0\x21\xd2\x2e\x24\xb4\x86\x79\x44\x96\x96\x3a\x87\x91\x6f\xc2\x1c\xd3\xa6\x52\x6a\x31\x67\x91\xd8\x3e\xe9\xfb\x65\x62\xee\xb9\x16\x44\x52\x09\x6d\x6d\xd7\x71\xb8\xb6\xb6\x51\x28\xfd\x0d\x06\x0c\xd0\xf5\x5f\x0e\x33\x4b\x2d\x34\x3b\xe5\x73\xf1\xde\x54\xfb\xff\x88\x5c\x31\xf1\xaf\x25\x4f\x65\xb1\x62\x3c\x9d\xaa\x5c\x16\x33\x9f\xa5\x7b\x9d\x1b\xbf\x16\xe9\xa4\x07\x86\x9f\x5c\x78\x61\x34\xc0\xa0\x39\x99\x44\xca\x1e\x1c\x32\x91\x76\x6c\x02\x5b\x9a\xf8\x9f\x70\x6e\x51\x7a\x60\x4c\xff\x7a\x72\x0e\x5f\x1e\x3d\xba\x0c\xd3\x87\xee\x36\x10\x1c\x8a\x35\xd7\x5b\x33\x7f\x39\x9e\x2c\x42\x0f\x50\x10\x93\x90\xc4\x47\xb3\x99\x4a\x85\xee\x96\x71\xd7\x63\x99\x2a\xac\xf5\x0a\xb8\x01\x24\xa1\x38\x88\xe7\x74\xc0\x68\x02\xa5\xcc\x30\x11\x6a\x40\x78\x33\x8b\x2b\x33\x76\xd2\x41\xa1\x19\x0a\x2e\x41\xca\x37\x08\xb3\xbe\xe9\x75\xad\x3e\x7f\x76\xd9\x55\x9d\x1d\xed\x41\x09\xf5\xbd\xfd\x92\x51\xad\xde\x12\x51\xb7\xa5\xec\x8c\xbd\xe7\x47\xf4\x26\xed\xba\x53\x8c\x37\x80\x02\x89\x9f\xfe\x1e\x46\x1b\x10\x13\xad\x77\x9b\xc7\x02\x4b\xf3\x55\x86\x92\x88\x8f\xf8\x5c\x36\x01\x2d\x0d\x04\xd4\xcb\x4e\xd9\xa1\x78\x2b\x0b\xc6\x97\x73\x53\x4b\x82\x8d\xce\x41\x10\x75\x61\x51\xd8\xea\x58\xc4\x7c\x89\x79\x7b\xcd\x39\x65\xfd\x0d\x40\xa6\x0c\xce\xa9\x3a\xee\x46\x19\xda\x9d\x5a\x2f\x5d\xf2\x5f\x8c\xea\xa0\xa7\x7a\x29\x1b\x3e\xdd\xbd\xc0\xdf\xb0\x7f\x28\xcf\xfb\x49\x07\x15\x72\x3f\x13\xf2\xc4\xc6\x14\x81\xa4\xef\xc1\x4f\x7a\xff\x3a\xce\x97\x3f\x18\xb0\xe7\x2a\x6b\x15\x10\xa4\xc6\x46\xcb\x29\x7b\x48\x58\x81\x4b\x1a\x53\x85\x78\x10\xcc\xa9\xef\x77\x6d\x27\x74\x9d\xc3\xa4\xf4\x50\xe5\x5c\x3e\x7a\x74\xe9\x9d\xd0\xfe\x0f\x61\xbc\x6d\x5f\x66\x84\xe1\x7c\xfe\x5c\x3f\x9c\xbb\xe0\xf4\xc8\xed\xfb\xbf\x3e\xc6\xe6\xf8\xe8\x97\x1e\x66\xdd\xf0\xe3\xc5\x61\x56\x16\xe5\xdc\x40\x6a\x05\xca\x29\xde\x08\xb6\x62\xaf\x74\x2a\x94\xfa\xad\x25\xf8\x93\x09\x95\xd5\x39\xfa\xd1\xa7\x42\xbd\x52\x63\x9e\x0a\xab\xb0\x52\x61\xf4\x93\xe2\x0b\x5a\x17\xd9\x65\x70\x9f\x48\x64\x85\x24\xb0\x96\xee\xc8\x99\xc7\xcc\xae\x67\x4b\x1d\xd9\x9b\xc9\xff\x65\x39\x5d\x0b\xc0\xd4\xe9\x8d\x96\xd3\xf2\xcd\x4c\x44\xf3\x01\xa0\xfe\x58\x65\x63\x5e\xb4\x5b\x24\x7d\x74\x01\x05\x88\x94\x56\x25\xbe\x34\x76\x02\x7d\x63\x16\xfe\xeb\x78\xab\x02\x0d\xc5\x6e\x6f\xcd\x5d\x1a\x3a\x6a\xf0\x4b\x85\xef\xed\x93\x92\x5e\x54\xc1\xbf\x21\x5e\x8f\x91\x40\xda\xdb\x38\x00\xbc\xc5\xd5\x81\xd5\x40\x14\x7f\x59\xca\xb4\x38\xce\x9a\x55\x78\x51\x60\xf8\x5e\x4f\x66\x5e\xed\xaf\x8e\x7b\x3b\x47\x2f\x03\x4d\xdd\x66\xde\x41\x0b\x70\xd7\x00\x97\x86\x7b\x4f\xc8\x1a\x5b\xdf\xd7\x2b\x13\xcd\x4c\xa9\x7d\xf9\x01\xf6\x6c\x20\x78\x96\x22\x32\x79\x96\x30\xea\xb0\xce\xbe\xe2\xd0\xdc\x6e\xbd\x13\x93\xd4\xf4\xd1\x65\x2d\x75\x0b\x2b\xd8\xea\x44\x34\x41\xa5\xfe\x0e\x22\xb8\xc3\x6e\xc4\x7b\x7f\xd2\x76\x8e\x8e\x14\xbf\x86\x0d\x6b\x31\x5a\x81\x14\x61\xba\x3f\x09\x35\x91\x7a\x00\x4f\xf0\x35\x0f\xda\x7f\xb5\x75\xd0\xaf\x17\xfc\x01\x74\x25\x78\x67\xab\xb3\x96\x30\xd1\xbc\xf2\xb7\xc1\x21\xb7\x2e\x04\xfe\x9e\x14\x54\x13\x29\xf0\xb5\x9c\x1b\xd7\x1e\xc9\x05\xd8\x58\xbb\x0c\xed\x7f\x55\x2a\xb0\x14\x42\xdf\xdd\x5a\x27\x65\x1f\xe0\x7a\x1f\xc5\x06\xda\x78\xbe\x4d\xd4\x7a\x04\x23\xca\xcc\xf6\xf8\x80\x49\xf6\x47\x16\x3c\x03\x73\xc0\x64\x20\x1b\xdf\x44\xef\xc0\xf8\xc4\x6b\x60\x57\x36\x47\xb2\x9d\x35\xb8\x52\x94\x3d\x81\x83\x8f\xdd\x66\x6f\x7e\x44\x08\x81\xf8\xa2\x54\x12\x28\xcf\xc0\x2b\x47\x64\x8e\x1a\xfc\xd7\xe7\x8b\x0b\x2f\x64\x5e\x5c\xf4\x07\xae\xa6\xd4\x2f\x54\x3e\x16\xb1\x8a\x39\x11\xbc\x58\xe6\xa2\xcb\x12\x51\x88\x71\x90\x69\xdd\xe9\x6e\x66\x85\x78\xc1\xcf\x31\xa5\xa1\xfc\xb7\xb0\x6d\x3a\x97\xe1\x0e\x74\xf7\x1e\x6f\x4f\x5e\xfd\xf3\xc5\xf1\xab\x57\xec\x09\xe8\x36\xd6\xae\xe8\xbe\xe3\x45\x3a\x7b\x82\xd7\x27\xf6\xb3\x0d\x13\xb3\xa3\xa8\xd8\x51\x31\xe4\xc8\x8f\xd2\x36\x7c\xf0\xc0\x95\x45\x2e\x0a\x6e\xb8\x10\x41\x86\x33\xef\x87\x85\x1e\x07\x9a\x22\x07\xc3\x03\x8d\xcc\xe3\xf4\xa9\x4f\x58\x6e\x07\xd8\xee\xb2\x56\xbf\xd5\xe9\x1b\x91\xe5\x56\xe4\xcf\x38\xbd\x86\xe4\x47\x60\xb0\x16\x76\x4e\xbf\xe1\x4a\xd7\x7b\xd8\x84\x35\x5c\x49\xeb\x8d\x75\xab\x74\xd8\x0c\xaa\x05\x65\xad\xb7\xad\xfa\x7d\x6a\x2b\xdf\xf7\x1a\x76\xcd\xae\xbb\x3f\x7b\xea\x4f\x7e\xff\x4b\xde\x5c\xe0\xa6\x5c\x13\xa7\x5d\x0a\x84\xb8\xd7\x75\xef\x58\x2d\x56\xcf\xbc\x0c\xfc\xd6\x3f\xa2\xd4\x38\x7e\xb5\x58\xf5\x02\xb1\xb9\xe7\x1f\x5e\x0a\xdc\xa0\xdc\x16\x6d\x74\x83\x82\x9b\x3d\xeb\x39\x36\xf8\xd6\xd0\xac\xbd\x9e\x44\xfe\x83\x3a\x7e\x0f\xdf\xe0\x20\xbb\x24\x7d\xa1\x6c\x62\x41\x13\xa2\x0a\x6a\x42\xd5\x24\xa6\x55\xa3\x6f\xd5\x46\xba\xe0\x85\x4d\xb3\xd7\xa3\x24\x6f\x8c\x6b\xf0\x9d\x91\x63\x67\xeb\x32\x7d\x03\xc0\xb0\x2d\xf0\xa6\x9a\xb6\xfe\x61\x98\xb5\xcd\x73\x61\x47\x6b\x9a\xc3\xaf\x72\x4b\xe0\xf8\x66\xfc\x1f\x16\xcb\x5c\x7c\xb0\x6e\x8e\x21\x14\xc4\x61\x69\x10\xe2\x46\x64\x86\xd1\xc3\x0b\x58\xe8\x5b\x4a\x9c\x0e\xa2\xbb\x6f\xb8\x4c\x6d\xca\x3d\x0b\x67\x24\xb3\xc4\x8f\x06\x7e\xd9\xd1\xdb\x27\x7b\xe9\x48\xb0\x0e\x47\x5b\x0c\xee\x36\xe7\x0b\x0f\x14\x7e\x45\x57\x81\x10\x78\x6c\x06\x0b\xd6\x67\x5a\xa4\x85\x4a\x31\x6b\xd8\x4e\x5d\xd1\x05\x3a\x75\xb5\xd4\x98\x5c\xd0\x3e\xbe\xe6\xf3\xb7\xa9\x89\x0b\x95\x0c\xa3\xec\xe9\x1a\xf6\x51\x25\x82\x34\x20\x95\x19\x9f\xfb\xc9\xf0\x24\x61\x1c\x23\xe8\xe9\x35\x4c\x9b\xf0\x35\x5d\xb1\xc9\x32\x85\x79\xac\x26\x32\x4d\x75\x08\x24\x10\x61\x23\x9a\x09\xca\x17\x35\x7d\x87\xf7\xc0\x3d\x8b\x33\x48\x40\x41\x79\xdf\xc0\x5d\x05\xb2\x48\x12\x9d\x7d\x3b\x58\x6f\x85\x40\xc0\x35\x32\xcf\xd9\xd3\x77\x2f\x8f\xce\xbc\xd7\x00\x6d\x45\x27\xc4\xbc\x7c\x75\xf2\x97\xa7\xaf\x82\xef\xee\x32\xd3\xbb\x37\x1d\x3f\x0b\xbe\x9b\xad\xe4\xbe\xbe\x38\x79\xf7\xec\xe8\x79\x97\x45\xf2\x05\xfe\xb0\x38\xb7\x63\xf2\xbf\x93\x30\x2a\x12\x25\x18\x1c\x85\x0f\x63\xc3\xdd\x1e\xdc\xac\x46\xf7\xe8\x38\xa6\xa6\xda\xe7\x38\xe5\x92\x87\x3f\x16\x5a\x87\xc1\x72\xae\x7c\x07\xa2\x5d\x85\xf1\xe9\xae\xe3\xe5\x96\xf8\x5a\x1e\x9b\x75\x22\xf3\x4c\xb4\x02\xac\x34\x79\x76\x48\x05\xde\x3f\x00\x21\xd5\x50\x46\x60\x16\xdd\x32\x23\x52\x20\x01\x3a\x9b\x70\xbc\x18\x20\xd4\x36\x64\x48\x0a\xed\xe1\x84\x9d\x4a\x63\x2c\x08\x07\x8f\x14\x10\x9c\xeb\xb4\x96\xce\x3f\x83\x08\xf0\x91\x5d\x36\xf6\xc4\x88\x27\x6c\xc8\x5a\xff\xd5\xea\xb0\x47\x48\x32\x31\xfb\xeb\x78\xb3\xf3\x58\x65\x05\x07\xf7\x68\x99\x05\x4c\x97\xe4\x5e\xea\xfc\xe1\xc3\xf2\x48\x1f\xc4\x29\x5f\xe2\x17\x7a\x28\x20\xa2\xb4\x30\x87\xce\xb3\x3f\x86\xd5\x71\x0f\x28\x3b\x9c\x36\x1e\xb1\xed\x32\xa9\x97\x40\x85\xa9\x5b\x31\x13\xe5\x6e\x6c\x27\xa6\x15\xe0\x60\x9f\x3f\x5b\x32\x74\x53\xa9\xa0\x03\x6a\x86\x6f\x45\xad\x73\x17\x29\x4f\xa1\x65\x1a\xb7\xe2\x57\x31\xfc\x04\xc4\xc7\x42\x64\x09\xed\x3c\xeb\x28\x83\x78\x8f\x95\x8e\x32\x58\xeb\x50\xf5\x45\x6a\x46\x35\x1f\xc0\x83\x75\x86\x9b\x75\x19\x02\x06\x03\xf6\x6c\x96\xab\xb9\x60\xdf\xff\xc2\xb0\x3e\x28\xda\xee\x69\x65\x9f\x54\x0b\xd3\x6d\xd8\x13\x6b\xdb\x9c\x88\xf6\xf6\xc1\xfa\xa5\x61\x44\x40\xa7\xec\x88\x42\xde\xbc\xa7\xff\x7c\xfd\x97\x93\x57\x9b\x7c\xdb\xd1\x64\xd2\x84\x8c\x08\xd4\x2e\x43\x35\x68\xc2\xf1\x01\xe5\xec\xd8\x94\x76\x11\x01\x70\xef\x01\x82\xef\x16\x8e\x37\xf0\xb4\xd8\x39\x15\xd8\x60\xc0\x3e\x1c\x6b\xb8\xfc\xf8\x22\x2f\x02\xa9\xe1\xa2\xa0\x06\x6d\x78\xb1\x22\xb1\x8f\xc8\xb4\x44\x65\x6d\xff\x9a\x49\x29\x8d\x16\x7c\x30\x13\x85\x7a\xa5\x8c\x44\x5f\x37\x6b\x13\xba\x53\x20\xb0\x2f\x74\xa7\xb0\x62\xf4\xce\xee\x14\xeb\xf3\x40\xb9\x36\xe5\x90\xf8\xff\xb0\x45\x3c\x30\x69\x9b\xd2\xfb\xda\xb0\x1b\x2e\x21\x02\xc8\x11\xed\x5c\x83\xe5\x79\x1b\xdb\x74\x30\xaf\xce\xff\xbc\x90\xe2\x7b\x04\xe7\xab\x9d\x16\xba\xba\x4a\xd1\xf0\xe5\xfd\x6f\x1d\xa2\x38\x7b\x29\xea\x56\x2f\x8e\x66\x6e\xe8\xbf\x31\xe2\xde\x48\x00\x27\x5d\xe6\x7f\x35\x04\xdc\x87\xb6\x48\xbf\xf4\x41\x33\x57\xcb\xb9\x3f\x84\x76\x41\xef\x0a\x83\x5e\x0f\x8f\x2b\xd7\x85\x0d\x3e\x04\x0d\x31\xd7\xee\x32\x0f\x2d\x8b\xe4\x55\x10\xce\x03\xfd\x54\xd7\x04\xbb\xdf\xe7\x22\x64\x83\xa1\xdf\xa6\x0d\x6a\x75\x99\xfb\xfb\x28\x48\x1d\x44\x3d\xdf\x83\x1e\x2b\xeb\xb9\xd3\x56\x08\xad\x22\xf7\x63\x41\xf7\xbc\x86\x86\x66\xc5\xbc\xd9\x18\x64\x3e\xfa\x49\x12\xca\x9e\x7d\x71\x8e\xa6\x7b\x45\x92\x61\xb3\x97\x46\xf1\x6c\xfd\xc9\x9a\x0c\x5f\xc1\xcf\x3f\x3a\x0b\xe2\xbb\x93\xb3\x13\x08\x7c\x3a\x0c\x2f\x1e\xe9\x2b\x6e\x44\xf3\x09\x19\x5a\xcb\xe5\x16\xb9\x82\x86\x71\xc8\x8d\x2d\x0d\x3a\x3f\x9a\x2f\x8a\x50\x4c\x8f\x0e\xb4\x4a\x7a\x09\x9f\x67\x14\x7a\x3b\xe3\xd3\xa8\xfe\x18\x93\xa9\xc7\xfc\xfb\x95\x51\x6b\x68\x9c\x8f\xcc\x64\x1f\x31\xaa\xc7\x1e\xe1\xc7\xd6\xa0\x15\x57\x09\xf3\x74\xe3\xd2\x44\x6f\xd0\x83\x4f\xf6\x87\x6c\x99\xa6\x1f\xbc\xf5\x68\x08\xf6\x8f\xa7\x63\x23\xf2\xfd\x6f\x16\xa6\x9c\x1c\xa7\x02\x62\x3e\xbd\x59\x1d\xed\xb7\xcb\x34\x85\xdb\x6d\xac\xfb\x5e\x72\xdb\x38\x3a\xd3\xb1\xec\xb9\xcb\x5d\x86\xbc\x2a\x2e\xed\xdf\xe6\xb2\x10\x6d\x87\x94\x76\xab\x45\x57\x03\xe5\x8a\xe3\x54\x91\xa1\x99\xde\x61\x11\xf3\x05\x3b\xac\x54\x5b\xf0\x5c\x64\xc5\x3f\x20\x89\x77\xdf\xa5\x0f\xad\x80\xb3\xcf\x74\x81\x92\x04\x0f\xcb\xcf\xc5\x5c\xe5\x2b\x96\x0a\x7e\x1d\x3a\x39\x8b\xf9\xe2\xfe\x38\x95\x93\x9c\xcf\xc5\xfd\x50\x7a\xfc\x02\xda\x96\x88\xea\xc2\x3e\x53\x90\x73\x3d\xeb\xb2\x5b\xae\x0b\xba\xdd\x54\x89\x9a\xaf\x86\xec\xf8\x88\xbd\x7c\x86\xb9\xa1\x89\x8b\x4f\x08\x4e\xed\x8e\x6d\xb7\xf0\x7b\xcb\x23\xf6\xaf\xe6\xf0\x6f\xfd\xc6\x6f\x78\x44\x5b\xad\x61\xeb\x20\x86\xf9\xdc\xa7\xbb\x63\x54\xd4\xd7\xc5\x2a\x15\xfd\x44\xea\x45\xca\xcd\x66\x6e\x65\x2a\x13\xd8\xd0\xb0\x8f\x3e\x5f\x2c\x44\x96\x3c\x9b\xc9\x34\x69\x63\x13\xe7\x34\xb2\x43\x5a\xf9\x1f\x7e\xfe\x31\xec\x33\x1f\xfb\x78\x9c\xbf\x9e\x76\x82\xf1\x04\xcb\x4d\x95\x69\x03\x11\x81\x24\xd5\x29\x38\x4a\x52\x0b\x91\xb5\xeb\x80\x55\x69\xd6\x65\xce\x7b\x71\x78\x42\x67\x41\x6d\xc3\x90\x86\xad\x8c\x16\xd7\x78\x11\x11\x1b\x64\xec\x9f\x28\xcf\x6d\xfb\x89\x9a\x73\x99\xe1\x93\x05\x40\xd1\xec\xa3\x4d\x33\x83\x39\xc2\x15\xcb\x04\xbe\xd0\x61\x08\xd0\xd5\xe1\x8b\x45\xae\xf8\x78\xc6\x6e\x67\x22\xab\x80\xa3\xbc\x4d\x5a\x20\x90\x86\x54\xc3\x42\xf7\xf4\x4c\xce\xf5\x40\xe8\x1f\xe1\x2f\xbb\x1c\xfb\x3f\x3e\x86\x76\xe0\xf1\x8f\x97\xe4\x93\x3a\x00\xd7\xb2\x18\xf3\xf9\x28\x97\xc9\x54\x78\x20\x63\x35\x9f\xcb\x62\xf0\xc3\xe4\xe7\xef\x7f\xe1\xe3\xc7\x3f\xfd\x04\xd9\x8b\xdd\xbe\x0c\x08\x1a\xce\xe3\x78\x1f\x1f\xd4\x6e\x9f\xba\x5d\x13\x64\x2e\x19\x7c\x6b\x8d\xc7\xc4\xb7\xa8\xd5\xb7\x03\xfc\x5e\xe5\x15\x65\x84\x3d\x7c\x08\x41\xaf\x51\xf3\x76\xcb\x50\xf8\x44\xa6\xc2\xa5\xbd\xaa\x49\x38\x84\x9e\x8d\x2e\xe3\x50\x75\xe0\xe5\xce\x9f\x34\xb3\xdb\x2a\x8b\x1d\x36\x32\x92\x76\x8d\xd0\x17\xba\xea\x04\xb2\x5f\x24\xdd\xf5\x7a\x1d\x6b\xed\x2e\x81\x3e\x77\xe7\xeb\xe5\x79\x00\xe9\x1c\xdb\x5d\x46\x77\xa4\xa5\xa6\xc1\x7d\x61\x10\xbf\x6a\xcf\xd8\xcb\xf0\xe5\xef\x40\x4e\x47\xd9\xe1\xbe\xd2\x39\xb6\x6e\xd6\xa8\xe8\x89\x9c\x50\xa7\xc2\xa2\x5a\x91\xdb\x3b\xd4\x39\x1b\xf3\x89\x4b\x22\xec\x2c\x61\x65\x11\x21\x40\x99\x59\xe9\x92\xd8\xce\xbc\x8b\x1e\xbc\xaf\x55\x6a\xdc\xb6\xb5\xd6\x43\x0d\x5e\x9f\x24\x03\xe0\xc5\xde\xd5\x15\x1c\x37\x57\x57\x17\x7b\xc0\x4e\xbc\x11\x2b\x70\x52\x73\xa6\xc0\x70\x2c\xd1\xa2\x9c\x84\x96\x6d\x37\xd6\xba\xb5\x75\x0b\x1f\x4a\xc1\xa5\x6c\x14\x04\x60\x58\xd5\x71\xac\x5f\x5f\xac\xb1\x7c\x55\x9f\xf9\xba\x7c\x7f\xe8\xff\x75\x4f\x0f\x29\xb8\xe1\xb5\x3e\xa8\x8d\xd9\xf1\x21\xc6\x1d\x8e\x1e\xdb\xd9\x16\x6f\x91\x80\x57\x72\xa3\xc3\x9a\x41\xf6\x93\x35\xdf\xdb\xf6\x41\x93\x21\x3a\x7e\xba\x5b\xee\x7f\x44\xe3\xa8\x09\xae\xde\x2e\x4b\x22\x76\xe2\x22\xd8\xd7\x3e\x21\x12\x4c\x9d\x72\xfd\x47\xf6\xd9\x6a\xbe\xfd\xe3\xa3\xfd\x7d\xc3\xfb\xa7\xab\x75\x2e\x7b\x20\x58\x91\x9c\x63\x4e\x46\xec\xa6\xbc\xd5\xc1\xef\x6e\xad\x6b\x5f\x39\x31\x44\xb8\x52\x0f\x1f\x56\xdf\x2b\x80\xe5\x3a\x27\x59\x10\xd1\x79\xd9\xc2\x09\x3f\x29\x61\xd8\x54\xb7\x8e\x1b\xcd\x58\x2c\x3b\xf4\xca\x8a\x71\x6b\xc7\xac\x57\x3b\xa5\x6c\xd9\xd6\xef\x6b\x9b\xd4\x2e\x5f\x62\x6a\x36\x6d\xff\x7e\x6a\x1b\x5e\x3d\x3d\xbd\xfa\xfb\xf1\xf3\xe6\x1e\xb5\x6d\xdc\xe3\xba\x17\xa7\x96\xf9\x87\x48\xd3\xbf\x65\xea\x36\x23\x03\xfd\x29\x25\xac\xb0\xb9\x66\x6e\xaf\xfd\xac\xc8\x26\xef\xb2\x8b\xe0\xef\xc8\x6d\xa3\x04\x8e\x1d\xd6\x0c\xf3\x89\x05\x34\xb4\x7f\x3c\x7c\x68\x6d\xd5\xf4\x12\xf6\x29\xde\xbe\x7e\xfe\x6c\x30\xb9\x4d\x34\x64\x98\x96\x73\xc6\x75\xbb\x76\x5a\xe8\x22\xde\x89\x22\x92\xe3\x15\x20\xff\x6d\x6c\xe4\xaa\xd7\x02\x83\x10\x46\xc3\xf2\xb1\x10\x7f\x86\x91\xcc\xeb\x5b\xd5\xa2\xab\x4d\x59\x8a\xfa\x46\xad\xc8\x9c\xe4\xef\xe2\x26\xd6\x80\x8c\xf7\xc0\x6d\x65\x19\xea\x29\xc3\xd4\xeb\xc1\x4b\x96\xf1\x45\x46\xc8\x0f\x4a\xb0\xee\x13\x63\xbb\xed\xb6\xa1\x38\xe7\xd2\x34\x37\x58\x4b\x2b\x73\xe8\x11\x98\x06\xe3\xeb\xce\x66\x57\x3a\xb7\xd6\x50\xe0\x9b\xa7\xaf\x8f\x02\xa9\xc7\x21\xdd\x20\x81\x76\x09\xdc\x12\x86\xbf\x0f\xdd\x3d\xb8\x23\x5a\x4b\x76\x00\xae\xe2\x40\x18\x7e\xed\x7a\x9f\x44\x78\x85\x66\x1d\xe2\xfa\x13\x1c\x1f\x50\x52\x89\x57\x7e\x0d\xcc\xec\xb4\xc0\x5f\x48\x97\xe0\x4e\x71\x42\xd9\xfe\xaf\xce\x9e\xbe\xac\xd2\x67\xdb\xc5\x04\x9c\xf1\xe9\x36\x19\x7d\xbb\xec\xec\xe9\xcb\x2e\x8b\x3c\x1a\xe8\xd5\x12\x9b\x78\x01\x5e\xbd\x71\x77\xe7\xd2\x48\x64\xb2\x08\xe3\xe8\xa3\x31\x75\x82\x54\x04\xd1\x0a\x42\x5f\x61\xcd\x2e\xfb\x54\x7a\x87\xc8\x08\xf5\x5d\xbb\xaa\x66\x7e\x77\xe5\xeb\xd9\x6d\xb3\x13\xfb\x37\x3a\xea\x72\x0c\x6e\x9d\xa7\x98\xf9\x96\xeb\x13\x15\x87\x71\xf1\x0d\x66\xe0\x5e\x04\x0b\x44\x19\xbc\x83\xe6\x29\x1b\x58\xcf\x22\x7a\xb9\x17\x1c\xa6\x36\x3d\x98\x31\xc9\xba\xf0\x58\x62\x29\x48\xd5\x87\xb2\x4f\x32\xbf\xc5\xe0\x55\xc5\xc3\xd8\x2b\xc1\x86\x4c\x62\x52\x09\x7d\x2b\x41\x30\x8b\x80\x31\x8c\xe1\x7d\x3c\xac\xc6\x57\x06\xd7\xf9\x0e\x10\x4a\x3e\xa6\x2f\x77\x53\x7f\x10\x80\xd9\xaf\x01\xc3\xd7\xc3\xe9\x32\x5e\x0b\xea\xbb\x3a\x50\x5d\x36\xda\x08\xcd\xd4\xa9\x03\xf8\x7d\x03\xc0\x2e\x1b\x6f\x03\xd3\x54\x8b\xc0\x86\x61\x45\x1e\xe2\xe0\x5b\xd6\xef\xf7\x79\x3e\xd5\xec\xdb\x41\x25\x91\x65\xd6\xe7\x8b\x45\xba\xb2\x60\x6d\x22\x83\x4e\x14\x1f\x78\xbf\xc4\xde\xd8\x04\xaf\x94\xd7\xb4\x80\x3b\xe9\xaf\xca\xb0\x4e\xdf\x1e\x3d\x3b\x3e\x3a\xad\x63\x55\x7a\x21\xc6\xf6\x36\x23\x08\x19\x3e\xc5\xe2\x67\xa4\xcd\x7f\xc1\xd5\x32\xcc\x86\x7a\x69\x54\xef\x03\x27\xb6\x5c\x4e\x65\xc6\x53\x18\x45\x4d\xe8\xf7\x33\xb7\x9b\xec\x45\x7c\xd4\xc2\x73\x3e\x70\x57\x0b\x3f\xf5\x03\x37\xc5\xc0\xb7\x28\x57\x5a\xf7\x72\xc1\xd3\xb9\xd3\x6a\x2e\xca\xe9\x70\x9e\x55\xd3\x8d\xb4\x9f\xc1\x4e\x76\xfe\x01\x76\x34\xcf\x3c\x53\xee\x74\x3a\x30\x8a\xf2\xfb\xce\xce\x85\xcd\x65\x95\x7b\x16\xfa\xe5\x98\x26\xcf\xce\x69\xc9\x7c\x5c\xaf\x69\x80\x7d\xa2\xf5\xa2\x0e\xf2\x5d\xc4\x1f\x33\x71\x6b\x9b\x84\x2a\x3d\x0e\x79\xc8\x9e\x75\xec\xdd\xa0\xa9\xf1\x98\x12\x44\xd4\x86\xbf\x83\xeb\x68\xa3\x2f\x0e\xa1\xa5\x67\x6a\xf5\x88\x79\x06\xb9\xa3\xbe\xe0\x8d\xab\xc0\xe2\xd6\x68\x3b\xf8\xf2\x38\x7b\x5e\x21\xf8\x0d\x71\xa5\x44\xcd\x74\x4f\x16\xec\xb3\xc5\x52\xcf\x20\x76\x13\xc2\x1b\xd7\x04\xe1\x4f\x54\x7e\xc4\xc7\xb3\x2e\x83\x27\x04\x27\x32\x2d\x44\xde\x85\xd7\x86\xbb\x4c\xdc\x88\x7c\x65\x0a\xb3\x04\xff\x1f\xa3\xff\xef\x1b\xa5\x1f\xe4\x23\xbc\xc1\x3c\xb2\x98\x2f\x13\xef\xdc\x0e\xd9\xfe\x41\xf0\xe9\xc5\xf1\xab\xb3\xa3\x77\xc1\xd7\xef\xc2\xaf\xa7\x27\xaf\x8f\x82\x6f\xdf\x87\xdf\x8e\xde\x1f\xbd\xfb\x67\xf0\xf1\x87\x18\xec\x9b\xe7\x57\xc7\x6f\x9e\x1f\xfd\xef\xa0\xc6\x4f\xae\xc6\x9b\x93\xab\x5f\x4f\x5e\x01\x7f\xb2\x1f\x7f\x34\x7b\x2a\x6a\x79\x50\xcb\xcb\x29\xc1\xc0\x98\x76\xae\x3f\x8e\x61\x8d\x26\x72\x8c\x0b\x5a\x93\x73\xa0\x29\xd9\x00\xbe\x1f\xcb\x6a\xdf\xb0\xc0\x1a\x23\xb5\xcc\x92\x40\xd6\x30\x74\xdf\xae\x8e\xe0\xfb\xf5\x29\x0c\x4c\x3f\x6b\xb2\x18\x3c\x0e\xca\xc6\x96\x28\xe3\x49\x41\xce\x9c\x0a\xed\x06\xed\x9c\x43\x2b\x2d\xfa\x13\x6b\x2c\x25\xac\x59\xe6\x3a\x0c\x96\xbe\x5c\x07\x12\x64\x94\xf9\x8c\x8b\xbe\xe9\x86\xf6\x55\xb6\x29\xc2\x1f\xb4\x5d\xbb\xd6\x61\x50\x3f\xbe\xcf\x5b\xc9\x6e\x60\x8a\x29\xd0\xff\xc0\x1f\xfe\x64\xd1\x8c\x56\xc1\x26\x1b\xa3\x84\x21\x27\x9d\x88\x6d\x96\x52\x72\xba\xdc\x0b\x90\x28\x93\xbc\x59\x6d\x3e\x01\x3b\x21\x73\x36\xcc\xf9\xc2\xb7\x71\x5c\x1b\x2b\x74\x9c\xac\x56\x81\x5e\x11\x66\xc0\x4e\xce\xa2\x7f\x83\x01\xec\xf6\x4a\xa3\x1f\x87\x71\x36\xf5\x72\x23\xc3\x0f\x2a\x8d\x7e\x1a\x7a\x67\x22\xc0\x78\x4d\x23\xa0\xe7\x4a\xcb\xef\x86\xc0\xb3\x48\x90\x22\x57\x4d\xca\x11\x86\x2d\x0d\x67\xf2\xcd\x02\xff\x6b\xbb\xe7\xbd\x08\x0b\xf9\xe6\xd0\x4b\xd0\xb0\x30\xdb\xea\xee\x22\x74\x17\xf5\x89\x1a\x02\xa6\xf0\x84\xf5\xf6\x91\x0a\x81\xc5\xe0\xd6\x47\x8e\xf2\xc4\xff\x39\x64\x81\xdb\xfa\x7d\x32\x35\x10\xd7\xfd\x0a\xd9\x11\x26\x2a\x17\x7c\x3c\xbb\xc0\x00\x3e\x03\xb4\x94\x1d\xe1\x71\x73\x8e\x86\x39\x5f\x7c\x85\x11\x10\x6d\xce\xf9\xa2\xd4\xf3\x7e\x73\xcf\xb8\x9a\x5f\x63\xfa\x8e\x2c\xf0\xaf\xd2\x10\xbe\x6b\x1e\x82\x21\xfa\xaf\x30\x00\xbb\x77\xcc\x7f\x4b\x9d\x7f\xdf\xdc\x39\x90\xe5\x57\xe8\xdd\x91\x37\xfc\x51\xea\xff\x87\x75\xf8\xcf\x92\xaf\x82\x7d\xe4\x01\xe6\xbf\xa5\xce\x7f\x5c\xdf\x39\x30\x81\xaf\x34\x02\xc7\x50\xdc\x8f\xd2\x58\x7e\xf2\xc9\x41\x6a\x1e\xe9\xfe\xa6\xd9\x57\x0a\x36\xf2\x3d\x33\x75\xdf\x37\x18\x7f\xd7\xf4\xfa\xf7\xf5\xc2\xfc\x4f\x9a\xdb\x77\x71\xab\xdf\xc5\xa4\xb6\xb3\x4a\x7b\x0f\xb5\xf9\x5e\xcf\x41\xdd\x43\x79\xf8\x8f\xbd\x61\xf7\x7b\x3c\xc9\x87\x64\x44\x2e\xd9\xeb\x15\x1b\xeb\x60\xee\x35\x9a\x7b\x3a\xed\x56\xa3\x73\x7f\xaf\xcc\x16\x00\xf7\xe8\x23\x82\xb8\x1f\xe4\x9e\xf8\x58\xf2\x27\xff\x3d\x93\x67\xfc\xdf\x93\x59\xe1\xe6\xf7\x7f\x7c\xf2\x7f\x4a\x74\xf5\x4e\x97\xaf\xff\x5d\x6f\x29\xec\x72\x81\xfb\x65\xf6\xc1\xdf\xfd\xce\xab\x7a\x1d\xdb\x74\x58\x02\x19\x36\x8f\x52\x8b\xe2\xcc\x5f\xab\xac\x0d\x86\x2f\x54\x0f\x33\x23\xf4\x0a\xba\x80\xb9\xf9\xf2\x2c\xe6\x20\xb4\x90\xb0\xbf\x29\xef\x58\x41\x46\xd2\x56\xc7\xea\x1c\xce\x44\xf4\xeb\xf1\xf3\xe7\x47\x6f\x62\xbf\x65\x5c\x7e\x7f\xc9\x6d\x85\x03\xba\x8b\xdd\xce\x55\xfa\xec\xe4\xea\xed\xbb\xe3\xd7\xc7\x94\xa3\xa1\xe6\x4e\xea\x6d\xe5\xd0\xd1\xdb\xe5\x64\xd7\x2e\x27\xfb\xf6\x49\xdc\x31\xd3\x7e\x1b\xe7\x62\xfb\xc3\xa3\xc8\xb9\x33\x39\xbf\xae\xc0\x39\xca\x62\x7a\xed\x4d\xff\x37\xb8\xbc\x72\xb2\x2a\xc5\x0b\xfc\xf5\xf4\xe4\x4d\xab\x6b\xf3\x83\xcb\xc9\x6a\xad\x2f\xd1\xae\xd9\x5a\x6e\x9a\x5f\x8a\x6c\xcc\x12\xb3\xc9\x8f\x69\xcd\x99\x56\x6a\xff\xb6\x86\x21\xb3\xc3\x35\x7c\xda\xb5\x7f\x9a\xa6\x3e\x69\x91\x75\xab\x28\x9f\x4e\xa5\xb5\xa9\x36\x50\x8b\xca\x89\x46\xdb\x51\x61\xe5\x77\x62\x2a\x75\x91\xaf\xc2\x4e\x68\x1b\x2a\xcb\x24\x72\xaa\x53\xf2\xe8\xb0\x3b\xbb\x0e\x04\x36\xf4\x7b\xba\x02\x62\x17\x07\x92\xff\xe5\x24\x3b\xa2\xab\xff\xe5\xdc\xcf\x5d\x4a\xbc\x25\x26\x81\x2f\x44\xae\x99\xcc\xd8\xff\x2a\xd8\x29\xd0\x42\x77\x17\xef\xe7\xfd\x9f\xbf\x0f\xa4\xf6\xa3\x33\x34\xab\x3e\xb0\xfd\x7f\xfe\xec\xfe\x0e\x3d\x03\xeb\x8b\x41\xdf\x02\x77\xec\x5a\xff\x2b\x95\x26\xec\x69\x96\xe4\x4a\x26\x7e\x88\x63\x95\x88\xfe\x54\xa9\x69\x2a\x60\x9c\x8b\xc1\xcd\x2f\x76\x6c\x89\x28\xb8\x4c\x9f\xc8\xe4\xf0\xa7\x5f\x7e\x76\x9c\x00\xb1\x17\xed\x89\xd2\xc3\xda\xeb\xdf\xd5\xae\x4a\x9b\xed\xda\x87\x3f\x3f\xdd\x6d\xfb\xae\x76\x6d\x73\x34\x4b\x22\x00\x7b\x4d\xfd\x33\x3c\xbd\xed\x5e\xe1\x8e\x9e\xe1\x8e\x1e\xa4\x6c\x78\x0c\xb5\x86\xfe\x23\x3c\x6c\x7a\x78\x38\x6e\xea\x9e\x21\x06\x87\xd3\x26\xb0\xce\x63\xb7\x54\xe3\xfc\x2d\x1a\x3b\x77\x78\x34\x75\x6d\x3f\xe0\x98\x08\x5e\xaf\xa5\x2a\xce\x66\x59\xdf\x53\x65\x4e\xdd\x66\x14\x79\x0f\x01\xe7\x39\xf7\xbc\xfa\x66\xae\x95\x35\x4a\x79\xba\xa6\x3e\x19\x44\x9c\xdf\x49\xdb\x23\xc0\xf3\xaf\xf3\x82\x4f\x2f\xdd\x82\x44\xb4\x46\x27\x46\xb0\x6d\x70\x54\xe5\x33\xae\xad\xc9\x8b\xc5\x7a\x21\x40\x20\x08\x9e\x53\x5d\x2a\xe2\xd3\xa1\xf9\xbf\xae\xf5\xa1\x70\xa3\x1b\x86\x3f\x9c\x3b\x0b\x39\xd0\x04\xbb\xa5\x43\x83\xef\x07\xd5\x83\xb4\x0b\x98\x0d\xca\x3f\xa3\x67\xcf\xb6\xbb\x20\x1b\xd6\x5a\xf7\xb5\xe6\x77\xb2\xbc\xd3\x45\x1c\x6b\x1d\x3f\x90\x5a\x6e\x15\xbc\x6e\x25\x33\x5d\xf0\x6c\x6c\x80\x7c\x73\x5a\x1d\xd8\x37\x15\x87\x9d\x1d\x1f\x1e\xf6\xaf\x73\x54\xe8\xf1\x9b\x32\x84\xda\x23\xa9\x76\x0b\x34\x44\x57\xde\xfb\x51\xe3\x19\xd7\x6d\x4f\x76\x36\xa1\x5a\xe0\xb5\xf7\x20\x78\x05\xd8\xab\x24\xa5\x2c\x13\x0f\x28\x4d\x2a\x0a\x7d\x9d\x4e\xe3\xa6\xc6\x0a\xeb\x1f\xbb\xfd\x74\xd7\xf1\xd7\x1a\x27\xe7\xd8\xe4\xd2\xbe\x05\x12\x24\x6a\x8e\xb3\x9a\x44\x4f\x9d\xd3\x40\x30\x85\x72\x08\xa1\x53\x85\xe8\xdf\x8f\x31\xff\x82\x87\x96\x6b\xb7\x9f\xff\x6e\xf8\xb2\xc7\xc8\xb0\x79\x4e\x8f\xbb\xd8\x47\xc7\xee\xa2\xf0\x9d\xb3\xea\x79\xe4\xde\x30\xa9\xbe\x19\xbd\xe1\x9d\xe9\x9a\x56\x4d\x04\x2d\x63\x3f\xeb\x7b\x47\xf6\x2e\x42\x70\x65\x8f\xe1\xba\x20\xdf\x6a\x28\xb0\x07\xd1\xb1\x39\x22\xbf\xa9\x4f\x12\x19\xd4\x44\x80\x56\x4f\x69\x63\xc2\xcd\xba\x17\x19\xab\x3c\xcb\x08\x1f\xdf\xd4\x49\x93\x78\x3b\xe4\x3b\xb1\xbb\xa1\xb2\x5d\x09\xd3\x8b\xba\x90\xe1\xbb\x4e\x5d\xe4\x30\x2d\x81\xbb\xe0\xdc\x26\xaa\x63\x73\xd0\x42\x0d\x79\x9e\x74\xd8\xb0\xba\xd4\xed\xda\x9a\x75\x31\x0d\x34\xd0\x3a\xf4\x84\xc3\xae\xfb\xde\x7e\x1f\x9c\x69\xe5\x67\xd6\xdf\x87\x1c\xe9\x86\xa2\x89\x1d\xdc\x66\xc1\xdf\xba\x3e\x19\x59\xe8\x6d\xe8\x61\x26\x75\x1d\x6f\xb5\x6e\xc5\x21\x4b\x7b\xdb\x71\xde\x85\x8d\x8c\xb6\x53\xba\xdd\x0b\xf0\x1f\x0c\xd4\x48\xad\x90\x7d\x92\x86\xe3\x0a\x4a\xdd\x7d\xfe\xcc\x7c\xb5\x80\x15\x99\x02\xc7\x7d\xde\x5e\xb2\x27\x2c\x7a\x06\x8b\x58\x5b\xb0\x0c\x6b\xd2\xff\x35\xc4\x0e\xc4\x6c\x24\x7c\x1f\x11\x3c\x2b\xcb\x3b\x74\xfb\x53\x84\xfc\x34\xb7\xc4\xb9\xcd\xc9\xbd\x16\xeb\xb8\xbb\x82\xa7\xa6\xd0\x9a\xb2\xbd\x3c\x2a\xc3\xfc\x4f\x66\x80\x71\xba\xa7\xc6\x41\xb5\x67\xf4\x34\x5f\xb0\x36\xb2\x88\xcf\x89\xc0\xb3\xd4\x25\x8d\x8a\x68\x36\x7e\xb7\xca\x3d\xf4\x1e\x64\xfb\x6a\x5c\xc8\x4a\x98\xcb\xba\xd4\xce\xa8\x18\xcf\x83\xf3\x68\x9b\x60\x8d\x93\x20\xad\x6f\x39\xd7\xba\xe3\x9a\x00\x76\x2d\xdb\x5c\xbb\xae\xe5\x9c\xec\x9d\x86\x9c\xe7\x11\x47\x8c\xb2\x9e\xd7\x62\xc7\x6b\xe4\x0d\xf8\xb1\xc7\xc1\x49\xec\xee\x73\xf2\x97\xbf\x1e\x3d\x3b\xbb\x0a\xad\x47\xb5\xf2\xd7\xc1\xf6\x58\xad\x83\xfa\xa4\xc9\x82\x30\xac\xd9\x5d\x5f\x63\x11\x9a\xd6\xa0\xfd\xa0\x6e\x78\xc4\x7b\x2a\x6a\x0d\x2c\x50\xe4\x5c\xea\x97\x2a\xd0\x3b\xfc\x41\x66\xbd\xec\xd6\xad\xde\x60\xc0\x3e\x60\xcb\x0f\x61\x72\xc4\xad\x7d\x26\xc9\xe6\x11\x35\x05\xba\x8b\xae\x0f\x69\xd4\xde\x54\xe6\x70\x65\xf3\x4a\x45\x2f\xfb\x99\xa3\xa1\x2a\xdc\x77\xaa\x2f\xd4\x12\x3c\xe7\x7f\x1d\x26\xd3\x0f\x5d\x95\x62\xdd\xe6\x41\xe5\xcd\x2f\x70\x4f\xa2\xb2\xf3\xc7\x97\x95\x63\xda\xff\x3d\xb4\x81\xe1\x61\xfd\x4e\xe4\xc9\x34\xa5\x47\xa2\x43\x55\x31\xf2\xda\x82\x70\x9d\xf8\x41\x34\xff\x5e\x79\x84\x84\x5a\xdd\x03\x01\xe0\xb1\xda\xc4\x98\xa3\xa7\x00\x3d\x11\x56\xce\x33\x5b\x68\x39\x67\xd7\x8c\xbf\xd3\x89\xcf\x39\xd2\x64\x63\x29\xbb\x4e\xec\x45\xf0\xa0\x27\xaf\x53\x0f\x70\x70\x65\xb7\x6a\x33\xc6\x92\x15\xc7\x1b\xa4\x3a\xf5\x62\x76\x79\x8b\x40\xd7\xf5\x61\x02\xf6\x65\x56\x83\xfb\x3b\x1f\x20\x8b\x81\x79\x39\x5f\x54\xd5\x7b\xe7\xbc\x83\xbb\x87\xb2\xc4\x55\x95\xf7\x2d\x5f\x06\x0c\x53\xac\xd7\x3d\xff\x57\xf0\xa9\x67\xb6\x75\x5d\x76\x59\x2b\x8a\xf8\x0a\x3b\x6b\x57\xed\x12\xf1\xec\xca\x04\x59\x37\x55\xdb\xf1\x3a\x3b\x2d\x3b\xac\x17\x2d\x01\x42\xbd\x69\xd9\x34\x49\xca\x36\x16\xb6\xd1\x8a\x6d\x9a\x35\xd5\xa9\x01\x10\x65\xc7\xdf\x64\xad\xae\xc2\x86\x0a\x35\x60\x4b\xa9\xf2\xab\x0d\xfd\x23\x0b\xa6\xf1\xfa\xd8\xa2\xa6\x48\xbc\x78\xa9\xca\xf7\x21\x50\xb1\x1b\x86\xb8\x51\x67\xa5\x1d\xe3\x80\xd5\x27\xbf\x30\x5c\x7c\x60\x96\x4e\x69\x9e\xf6\x10\x76\xaf\x64\x23\x6a\xb0\xb0\xd5\xd2\x7c\xd0\xd4\x5b\x48\x59\xdd\xde\xb3\x9f\x62\xf3\x69\xd0\xbe\x1d\x39\x25\xae\xdf\x26\x65\xc3\x54\xe8\xb7\xd7\x09\x58\xc9\x03\xf2\x93\x89\x0e\x4c\xda\x50\x15\xbe\xd1\xf0\x94\x4a\x3d\xa9\x1b\x0e\x83\xf9\x7e\x71\x7e\x81\x4d\xc0\xda\x16\xcd\xfa\x7c\xd3\xfe\x44\x96\x7b\xcb\x82\xcc\xea\xda\xbf\x31\x73\xe8\x90\xc5\xe7\x64\x97\xe9\x19\x9f\x97\x4b\xd9\x1d\xe1\x17\x97\x61\x68\x0f\x44\xca\xc4\x78\x91\x39\x49\x24\xd0\xc9\x6b\xaf\x1a\x3a\xdd\x7a\x02\xac\xbd\x00\x6d\x5b\x8a\xb3\xbd\xb4\x3f\x91\x5b\xa3\x33\x42\x42\xa2\xea\xf5\x53\x72\x83\xf7\x92\x46\x7f\xa2\xee\xe3\xda\xa7\x5d\x63\xd3\xa8\x35\x51\x79\x6b\xd8\x20\x74\xc1\x39\x6b\x83\xe6\x89\x0d\x07\x69\x66\xed\x71\x58\x7f\x29\xd4\xa5\xa6\x5e\xa3\xac\xaf\x77\x8e\xd5\x2e\xc3\xb3\xdd\xca\x37\xb4\x42\x36\xed\x3d\x55\x59\x0f\x87\x1d\x7a\xf3\x2a\xd4\xae\xbd\x6f\x3a\xc7\x3a\x50\xdb\x26\x02\x08\x76\x4d\x00\xe1\xae\x5b\x42\xfb\xb5\x58\xbd\xf8\x12\xcc\x5f\x8b\x15\x21\x1f\x21\x0d\xa3\x74\x81\x2f\x54\xde\xd6\xab\x79\xac\x7d\x58\xe3\x30\x7c\xa9\x0a\x70\x7a\x35\x8f\x03\xe8\x82\x9b\xf4\x68\xa1\x6a\x51\xd1\x65\x08\xd5\xae\x52\x23\xbe\x2e\x03\x7c\x2c\xb5\xc0\xe3\xb3\x7c\x93\x13\xdd\x7e\xa1\x1f\xb4\x6f\x01\x71\x0c\x6b\x5b\x90\x4f\xf1\x5d\xed\x76\x69\x51\x1a\x9f\x6d\x36\x8c\xe3\x01\xa1\x30\x14\x6e\xa2\x86\xf4\x25\x5b\xaf\x66\x29\x81\x89\x4d\xaf\x3b\xb4\xc6\xad\x6e\xa9\xa3\xf8\xec\xbe\x7f\x87\x51\x3e\xc3\x55\x55\x5e\x28\x5b\xbd\x56\x6b\x07\x22\xef\xf5\x8c\x5d\x63\x6a\x45\x56\x31\xa0\xd6\x18\xe1\xca\x03\x6a\x12\x4f\xee\x3f\xb0\xf8\xa5\xa9\xc0\x2d\x73\x9d\xc4\x34\x6c\x16\x94\xbe\x98\x1a\xeb\x28\x6f\xed\xcb\x5a\x5f\x36\xe3\xcc\xa6\x20\xa9\xe9\xa3\x32\x4d\x28\x5d\xbf\x26\x74\xf8\x7d\xad\xe1\xb9\x37\x9f\x1a\xc4\xc4\xca\x10\x4f\x6d\x83\xbb\x8e\xcf\xc2\x65\xd3\x36\xf3\x2c\x61\xdf\xff\x61\xd3\xc8\xd1\x0f\x16\x2c\xb6\x64\xd6\xd3\x91\x76\x3e\x5a\x4e\x75\x7f\x6c\x80\xca\xe5\xbc\xaf\xf2\x69\xc3\x05\xfa\xf7\x3f\xfc\xf0\xfd\x2e\x74\x50\x73\x85\xbe\x5e\x36\x6e\xef\x77\x0e\xd8\x5d\xc7\x51\x4c\x03\x86\x36\x98\x84\x64\x51\xa3\x2f\xad\xe9\xd4\x85\x47\xb9\x77\xb0\xee\x42\x6c\x7f\xf8\xeb\xe9\xc9\x9b\xbe\x73\xb2\xb1\x84\xc0\x46\x62\xc6\x6f\xa4\xca\x31\xd9\x8b\x5b\xd7\x2d\x89\xe3\x37\xad\x32\x0f\x14\x2d\x1e\xde\xd3\x27\x30\x6a\x61\xc6\xf7\x2b\x33\x08\x0a\x65\x3f\x7e\xf1\x4f\x76\x58\xde\x64\x9f\x3f\x37\x79\x2c\x34\xc8\x15\x1d\x1f\x16\xfa\xfa\x94\x1d\x25\x53\x41\x69\xbe\x0b\x6d\x2b\x83\x96\x0d\x8f\x5c\x98\xde\x19\xd7\xec\x53\x1c\xd8\xe2\x07\xdc\xb6\x42\x45\x07\xe2\xdf\xcf\xb3\x65\x9a\xda\xcc\x33\xd0\xc7\x3f\xc4\xe8\x6f\xb2\xd8\xa2\x0b\xd3\xd2\xb6\xfb\xfc\x39\xec\xe2\x13\xe3\x43\xdb\xee\x0e\xfb\xf9\x74\x17\xf6\xf1\xfe\x17\x14\x0f\x80\xd6\x47\xea\xa3\x08\x9e\x58\xab\x03\x48\xcb\x8e\x75\x3a\x0e\x62\xac\xca\x46\xe4\x4e\x2e\x57\x75\xc4\x5e\xbf\x4e\x77\xdd\x40\xa5\x5a\x9f\x4f\x7c\xa9\x45\xd2\xbb\xe1\x39\x0d\xd6\x0d\x33\xa0\x77\x3f\x74\x09\xef\x98\xc0\x03\x48\x79\x97\xc1\xd3\xee\x51\x4c\x59\xce\x20\xe4\xfb\x90\x9d\xcb\xc2\xc7\x93\x85\x31\x77\xfb\x51\xe9\x37\x16\x98\x2b\xa5\x9c\x6b\x15\x43\x97\xcb\xad\x6b\x3a\x40\xd3\xa1\x37\x64\xd9\x54\xba\xde\x6e\xe4\x00\x83\x1b\x61\xa9\x0f\x12\xf0\x5c\x56\x6d\xfc\x4c\xa6\xf8\x92\x09\x0d\xc2\x8e\x89\x76\xe1\xa1\x38\xba\x33\x60\xf8\x64\x26\xfd\xd4\x56\x68\x57\x99\x6f\x5b\xea\x0e\x63\x97\x5d\x6f\x1d\x16\x0c\x31\x52\x06\xac\x9d\xa9\x1c\x4d\x47\x6e\x07\xc1\xd4\xe2\x94\x0f\x36\xa4\xcf\x55\x08\x2f\xb0\x02\xb8\x07\x31\x58\x2f\xea\x92\x79\x2b\x8e\x8e\x73\xaa\xaa\xfb\xcb\xac\xc0\xf9\xfe\x65\x1d\x66\x2b\x1b\x94\x02\xfd\xcd\xee\x82\x40\x7f\x5d\x35\xf0\xde\xc5\xd6\x5c\x1f\x02\x73\xfe\xe7\x3f\x07\x57\x42\x97\x3b\xe7\xbb\xd3\x25\x78\x3d\x03\xcf\x9d\x45\x64\xed\xad\x5a\x08\xce\x43\x2f\xcf\x4b\x5a\x85\x75\x0f\x39\xd4\x19\x19\x42\x18\x5d\x56\xad\xd1\xa7\x37\x4c\x09\x01\x8d\xd3\x77\xce\xb8\x97\x1f\x82\x07\x6e\xbe\x04\x01\xb8\x34\x05\x9f\x5e\x64\xb1\xbb\xaf\xb7\xd6\x79\x87\xd2\x28\x2d\x21\x59\x55\xfd\xfd\xd3\xef\x97\x93\x3a\xe3\x37\x72\xca\xe1\x65\x59\xd6\x5a\x6a\x91\x3f\x9d\x42\x96\x64\xb3\x1d\x5b\xad\xfb\x66\x01\x73\x80\xd6\xe4\x90\x9e\xca\x4c\xf4\x4c\xc5\x1e\x9f\xda\xc4\xcc\xce\x59\x7f\x2c\xb4\xf6\x6e\x8d\x54\x40\xc0\xe9\xa5\x0a\x8d\xee\xa2\x50\xf3\xe1\x43\xfb\x67\xdf\x7e\xb5\x95\x7f\x61\x87\xbe\xc5\xc3\x87\xee\xef\xfe\xcd\x2f\x54\x65\xce\x8b\xf1\xac\x6b\x3f\xc0\x28\xe0\x0d\xf1\x5f\x88\x22\xe1\xbb\x81\xf2\x4b\x5f\x2f\x52\x59\xb4\x5b\x7d\x9b\xbb\x16\x9b\xb0\x43\xac\x73\xfe\xf8\x92\x3d\xa2\x3f\xf7\x21\x83\x94\x0f\x30\x75\x18\x29\x01\x75\xe5\x7d\x28\x69\x0f\xcc\x41\x7d\x71\x31\x68\x5f\x5c\x24\x8f\x3a\x83\xc0\x21\x0b\x5b\x7c\xfe\xec\x3a\x60\x7f\x3a\x64\x3f\xff\xe0\x98\x57\x23\x44\x94\x26\xcb\x30\x11\x2a\x54\xe9\x54\x26\xb2\x7f\x79\x10\xda\xa9\x2a\x14\x64\xeb\x3f\x7c\xc8\x1e\x79\xbc\xed\xf8\xd8\xc9\xd7\xf1\xf7\x7f\xff\xcb\xd5\xfb\xa3\x77\xa7\xc7\x27\x6f\x36\xd1\xda\xcd\x2f\x3d\x1a\xeb\x7d\x92\x89\xac\xc9\xf2\xf1\xfa\xe8\xec\xd7\x93\xe7\x57\x41\xd6\x2a\x90\x87\xd8\x98\x5b\x07\x5c\xb8\xa9\xb1\x0f\x9c\xf9\x77\x17\x65\x66\x44\x1a\x2d\xb3\xb1\x30\xe7\xe1\x98\x2f\x35\xaa\x36\x83\x01\x4b\x84\x5a\x14\x72\x2e\xff\x8d\xe9\x6d\x21\xe1\xb2\xc8\xa5\x5a\x6a\xb6\x10\xf9\x44\xe5\x73\x6e\x9a\x25\x62\x9a\xf3\x84\x17\xfe\xe9\x96\x1d\xdc\x7a\x7f\xfa\xf9\xe7\xe0\xda\x2f\xc0\xe4\x9f\x0e\xd9\x8f\xfb\xe0\xf8\xb0\x56\xe6\xe4\x14\x29\x77\x1e\x1a\xb8\xc6\x51\x7e\x72\x5e\x4e\x56\x62\x5f\x65\x24\x43\xb0\xcb\x28\x6a\x53\x84\xd4\x25\xd2\x0d\x0e\xbc\x4f\x6c\xa2\xd4\x90\xed\xbb\x53\xf2\x2e\x36\x6e\x41\x7f\xe7\xc1\x8a\x5c\xb6\xff\xa2\x54\x2a\x78\xd6\xe9\x4f\x94\x02\xd7\xd1\x7d\x2f\x00\x7e\x85\xa7\x28\xbe\x76\x10\x62\x43\x8e\xb5\x5a\x4b\x8b\x0d\x42\xe2\xe3\x99\xb0\x88\xa5\xd0\x3d\x23\x27\x97\x24\x1e\xd0\x9b\xc8\xc0\x26\x8b\x03\xd6\x10\x71\x5e\x4b\xd8\xfe\x79\x23\xef\xf8\x38\xe3\xba\x0d\x5d\x77\x59\xb8\x05\x9c\x58\x03\xdf\xa2\xb5\xf0\xdc\xcc\x41\xa3\x3f\x3c\x59\x00\x4b\xb6\x99\x3f\xce\x2f\xab\xed\x21\x08\xe0\xd9\xb3\xa3\xd3\x53\x5c\x2a\x33\x0c\xf7\x5a\x5c\xcb\x7d\x69\x75\xd8\x13\xf7\x0a\x97\xaf\x3f\x0c\x2e\x29\x49\x8c\x06\xd9\xf6\x71\x19\xd2\xe3\xa0\xbd\xe1\xec\x43\x8b\xd3\x4a\xd3\xfd\x72\xd3\xfd\xb0\xe9\xfe\x65\x29\xe7\x44\xb0\xe5\xaa\x18\x82\x17\x9f\x68\xfa\x6b\xde\x76\x42\x2c\xfa\x59\x99\xaa\xd1\x3d\x4f\x98\xac\xe1\x22\x4a\x16\xf2\x89\x32\x65\x0c\x59\x6f\xdf\xdd\x13\x95\xe0\x55\x92\xe5\x9d\x74\xd9\x7e\xd9\x15\x12\xd5\x23\xd0\x9b\x2c\xb5\xb9\x6b\x0e\x38\xf7\x4e\x50\x76\xdd\x77\x7d\xe0\xbc\xe8\x5a\xda\xa7\xa3\x7a\xec\xff\xdc\xef\x54\xf6\xe6\x97\x84\x5b\x7f\x83\x11\xfd\xbb\x44\x38\x41\x83\x30\x97\x0e\x06\x80\xff\xca\x35\x25\x26\x39\xc5\xdc\xe7\x1b\x60\xe2\x54\x7b\x33\xae\x5d\x82\x1d\x4a\x9a\x1e\x67\xea\x41\xe8\x7f\xd7\x42\x9f\x6d\xca\xf5\x13\x01\x36\x27\x45\x2f\xce\xfe\x43\x21\x59\x4f\x4f\xaf\x88\x97\x5e\x9d\xfe\xfd\xed\xdb\x93\x77\x67\x96\x0d\x37\xcc\xa4\xdd\xc2\x49\x03\x90\xc1\x00\x4d\x05\xfb\x3f\xf4\x18\x9c\x12\x2e\xee\xe3\xf4\xea\xec\xe4\xea\xd5\xd1\x9b\x97\x67\xbf\xc6\x00\xc3\xc1\x47\xb0\xea\xf3\x05\x95\xf3\x36\x7c\x61\xd6\x86\xc1\x00\xed\x33\x3c\x49\x8c\x5a\x48\x48\x66\x6a\xc2\xfe\xfc\x67\xc2\x7c\xc9\xa4\x85\x2f\x59\x75\xf1\x3d\x84\x8a\x69\xb3\x0e\x7f\xe6\x20\x2c\x61\xc0\xea\xfd\x36\x65\x84\xdb\xa1\x58\x10\x64\xd0\x61\x83\x6f\x59\x17\x24\x80\xa7\xf9\xb4\x26\x47\x1b\xd1\x68\xbb\x9a\xfb\xa7\x46\x35\xdf\x67\x4f\x02\x37\x94\x98\xb5\xc4\xa6\xad\xfa\x9d\xf3\x05\x0f\xd1\x35\x1c\x0b\xa5\x77\xb4\x36\x72\x6f\xfb\x68\x5c\xc0\xe4\x1a\x79\xdc\x26\x93\x8a\x16\xa9\xd0\xba\x67\x70\xd6\xcd\x54\x0f\xb8\x50\x2f\x85\xed\x9c\x56\x39\x8e\x53\x8d\x31\xcb\x7d\x98\x76\xbd\xed\x0f\xc6\xfd\x03\xb3\xb6\x5b\xf2\xa1\x2f\x89\xa0\x2c\xb1\x80\x63\x7d\x0a\xb0\xb7\xdb\xfe\x52\xf7\x68\x28\xbf\x2f\x37\x39\x3d\x7b\x77\xfc\xec\xec\x0a\x57\x31\xde\xf6\x76\xc0\xed\x16\xcd\x29\x4c\xed\xb0\x2d\xb3\x08\x5a\x36\x70\x8b\x38\xcb\x4d\x25\x5b\xd8\x97\xa6\xbc\xa9\x90\x79\xfb\x41\x3c\xe7\xea\xde\x8f\x82\xb0\xec\xb5\xfa\xc6\xfd\xee\x76\x3b\x35\xf8\x2a\xdb\xfd\x0e\x52\xac\x07\x44\xf5\x85\xe7\xe5\x76\xf4\x3c\x51\x79\x4f\xec\xb4\x6c\x5f\xbe\x4e\xdb\x73\x70\x8f\x0f\xf6\xe0\xd0\xcd\xc8\xf1\x6b\x9b\xe0\x88\xfe\x58\xcb\x2d\xb7\x97\x33\xb4\x9a\x6f\xca\xb3\x17\x72\x01\x53\xfd\xff\x55\x2c\xc0\x4c\xe8\x1e\xfb\xdf\x35\xab\xa7\xa2\x38\xbf\xd2\x17\x65\x57\xda\x41\x02\xd8\xb4\xff\x1d\x2d\x61\xbe\x26\x6f\xbc\x57\x73\xb1\xcb\xb9\x0f\xf5\xbf\xfe\xa9\xbf\xdb\x86\xdf\x41\x79\xfd\x7d\x9e\xc0\xd8\x22\x39\xcc\x36\x39\x43\x5c\x78\xf8\x7d\xd4\x78\x6c\xf9\xe2\xe9\xf1\xab\xd3\xab\x93\x37\xde\x9e\x7c\x0a\x4e\x1b\xd5\x3b\xce\x0d\x11\x0b\x78\xc9\x49\xe3\x71\xaf\x49\x97\xa3\x93\x6a\xba\x2b\x3f\x3f\xb3\xd9\x79\xe0\xeb\xb8\x0e\xec\x72\xe7\x6b\xdf\x47\x5f\xe3\x81\xd2\xec\x84\xb0\x39\x9e\xc5\x46\x7b\x6c\xf1\x0c\x48\xe8\x55\x5c\x7d\xc5\x22\x08\x1a\x59\x2f\x12\xdf\x3b\xc9\xd1\xd7\xcc\x4f\xf3\xb5\x13\x26\xad\xcf\x4a\x0c\x63\x89\x6e\xaa\xbc\xf0\x6e\x21\xfe\xad\x12\x29\x14\x05\xe1\x84\xd5\x64\x46\x91\x7e\x8d\xef\x71\xda\x1e\x83\x56\x6b\xfc\xbf\x1f\xc7\xfe\xdf\x60\x4b\x40\x08\xe7\x01\x80\x4b\x76\xe8\x2e\xce\xee\xee\xc1\xfa\xee\x6b\xef\x53\xb7\xeb\xd3\xdf\x18\x16\x15\xe5\xbe\xf9\x72\xbe\xf9\xfb\xe7\x5a\x8a\xd7\x62\x5b\xaa\xab\x3e\x6c\xdb\x34\xd2\x7b\xbf\x70\xbb\xc6\xdb\x69\x33\xcf\xba\x07\x8f\x6a\xf6\x3e\x09\xea\xb4\x2d\xb9\x57\xf2\xf0\xc6\x6c\x88\xaa\x05\x06\xb8\x35\xb1\x7e\x5b\xa4\x6c\xb1\x50\x6c\x78\x2d\x52\x62\x9c\xcf\xd7\x85\x20\x39\x2b\xfb\x4d\x43\x22\x5e\xd8\xfe\x49\xec\x30\xef\xdc\x02\x82\xd7\x79\xbd\x47\x80\x33\xc6\x27\xdb\x0c\xbc\xe1\x15\xde\x38\xe4\x24\x80\xf4\x20\x7e\x4b\x20\x26\x49\xf7\x42\x57\x69\xd4\xd1\x2d\x77\x35\x82\xe9\xfe\x92\xd1\x3d\x12\xee\xe1\x21\xb5\x73\x82\xb9\xed\x6d\x32\xf7\x91\x52\x80\x42\x9c\x44\xf2\x95\xdf\x0a\xdf\x41\x6c\xa8\x19\xb6\xdd\x8b\x06\xd6\xb0\xf4\xae\x78\xd5\xc7\x2b\x98\x4e\xb3\x43\xd7\x5e\x77\x6f\x30\x60\xa0\x6a\x8d\x52\xc1\x9e\x9f\xbc\x66\x63\x95\xa6\x78\xdf\x86\xce\x5b\x93\x94\x4f\x59\x8f\x7d\xb0\x95\x3e\xe0\xa3\xe5\x13\x3e\x16\xac\xc7\x5a\x22\x2b\x72\x29\x74\xab\xcb\x5a\xb0\x4a\x5d\xd6\x42\x1f\x26\xf3\x97\xb5\x57\xd8\xe4\xe5\x4d\xf9\x7a\x9f\x9d\x9e\xbe\x5b\xa6\xe2\x95\xd4\xc5\x90\x3d\xee\x52\xd1\x69\xb1\x4a\xc5\x73\x31\x4e\x39\x2a\x82\xc1\xa7\xf7\xa6\x8b\xa8\x7a\x2a\x45\x56\xbc\x13\xe3\x22\x2c\x7d\x7e\xf2\xba\xa6\x08\x1d\x0b\x4a\x85\x67\xea\x5a\x64\x58\xb6\x8f\x65\xbc\xe0\x67\x39\xcf\xf4\x44\xe4\xc7\x85\x98\x87\xf5\x5f\xc8\x78\xb0\xbf\x9e\xbd\x7e\xf5\x34\x4d\x9f\x39\xd4\x85\x1f\xea\x4b\x5f\xa8\x7c\x4e\x2f\xbc\x86\xc5\xa7\xc2\xd4\x2d\x7d\x78\x2d\x12\xc9\xc3\xfe\x5e\xcb\xb9\x38\x5b\x2d\x04\x28\x66\xb6\xf0\x0d\x9f\x8b\xe4\x8d\x4a\xc4\x6b\xbe\x70\x65\x2a\x11\xe1\xa4\xde\x72\x69\xb0\xf4\xaf\xa5\xd0\x11\x56\xde\xa6\xcb\xa9\xcc\xe2\x5f\x11\xf0\xd3\xf7\x2f\x51\x09\x0d\x5b\x9d\xbe\x7f\xf9\x66\x39\x1f\x89\xbc\x54\xf8\x96\x17\xb3\x53\x31\x2d\x97\x2a\x99\x15\xa5\xb2\xea\x52\x9c\xbe\x7f\x89\x58\x57\x79\x84\xf2\x53\xb5\xcc\xc7\xe2\x2f\xcb\xc9\xa4\xd4\x9d\x21\x92\xd3\x99\x10\x11\xe8\x33\xf1\xb1\x38\xcb\xf9\xf8\xfa\x59\x4c\x26\xae\x3c\x2a\x54\xcb\xb1\x9d\xd7\x17\x3c\xe5\xf6\xfc\xe4\xf5\x31\xed\x91\x66\xf6\x94\xa8\x79\xcf\xee\x24\xfd\x25\x76\xa4\x9b\xdf\x2f\x99\xe2\x45\x06\xa9\xdc\x4d\x0f\xcf\x4e\x5e\xbd\x3a\x7a\x76\x76\x7c\xf2\x06\x4c\xd2\x46\x74\x0d\xa7\x19\x3e\xcd\xe1\xa8\xdc\xf9\xa1\x9c\x97\x5a\xfb\xeb\x48\x5f\x39\x4c\x07\x17\x80\x78\xf8\x30\xf8\xe5\x8d\x13\x07\x74\x67\x0f\xe6\x23\xf2\xfa\x75\xce\x2a\x33\x7e\x23\x98\x99\x57\x18\x2f\xe5\x9e\x4d\x50\x59\xb4\xcb\xad\x5c\x5e\x37\x92\xa8\xf3\xb7\x65\x1b\x1d\x9c\xbb\xf4\x77\x27\x7c\x81\x71\x9d\x27\x56\x0d\xbc\x80\x3d\x76\x1d\x3c\x4a\x69\x52\xfb\x42\xe3\xba\x31\xb9\x11\x05\x7e\x28\x7b\xdd\x3d\x77\x46\x5c\x95\xee\x27\xd5\xe8\xb7\x1a\x7d\xc6\x20\xe4\xda\x29\x28\xae\xe3\xda\xab\xf4\x00\x44\x9c\xba\x7f\x48\x8f\x03\xd8\xc2\xca\x15\xe8\xc5\xe6\xb0\xb6\xdb\x5c\x16\xbe\xf8\x22\x0c\x45\x8b\xf3\xdb\xa8\xd1\x6f\x36\x63\x8d\x77\x0a\xbc\x8b\xee\x8c\xd5\xe8\xb7\x83\x26\xbf\x9c\x12\x5a\x0e\xf6\xba\x7b\xf8\xd1\x28\x66\xdc\xc8\x85\xd6\xb7\x91\x58\x81\x59\xfb\x8b\x3d\xef\x48\xb9\xc7\x9e\xd8\x4f\xc3\x8b\x20\xbf\x3e\xb3\xa9\x98\xe0\x41\x89\xba\x56\xf0\xa1\xbe\x0d\xbd\x29\x5a\xd7\x8a\x3e\x0d\xe9\xf1\x36\x73\x7c\x7f\xfb\xe0\x22\x63\xdf\xb2\x9b\xa5\xf8\xc8\x6e\xbe\xef\xff\xd8\xdf\x87\xdf\xed\x71\x87\x7d\xf7\xf8\xbb\xc7\xec\xe8\x86\x67\xec\x9f\x6a\x09\xa5\x7f\x4e\xe5\x58\x64\x5a\xb0\xd7\xc7\x67\xa6\x60\x70\x91\x39\x1a\x01\x87\xc8\xd7\xf2\xa3\xcc\x58\xfb\x7d\xa4\xe3\x7a\x77\x27\x64\xf7\xe6\xb3\x75\x1c\x0b\x7c\xbc\x28\x6c\xdb\x52\x92\x6d\xf5\xa7\x43\xf6\x9d\xa3\x25\xd3\x72\x6e\xfa\x68\x7f\x62\x23\x31\x51\xb9\x78\x46\xa1\x32\x66\x02\xc7\x99\x2c\xea\x17\x7a\x30\x60\xea\x46\xe4\xb9\x4c\x04\x93\xa6\x16\xcf\x12\x26\x33\x90\x38\x61\xea\x50\x08\x4e\x6d\xc9\x32\x17\xae\x91\xe1\x64\xfb\xfd\x8f\x6c\xc4\xc7\xd7\xb7\x3c\x4f\x34\x1b\xab\xf9\x82\x17\x72\x24\x53\x59\xac\xfa\x5e\xbc\xbf\x02\x08\x87\x30\x42\x6f\x0d\x85\xd2\x03\x3f\xf6\xd2\x97\xd8\x4e\x10\x79\x7c\x58\x89\xdd\x7b\x6c\x1c\x1e\x32\x78\x2f\xfb\x31\xab\xb8\x71\xd8\x06\xd6\xff\x82\x60\x87\x3f\x3d\xa9\x3c\x61\xe7\x16\x59\x97\x36\x39\x50\x58\xb3\xe3\xab\x7a\xb4\x3a\x2d\x02\xc6\x1d\x3a\xe0\xda\x61\x47\x0e\x42\xb4\x87\x06\xdf\x7e\x0b\xa5\xdf\x9a\xc9\x13\x92\x67\x4a\x5d\x77\x09\xf7\xc2\x2c\x42\xa1\x98\x39\x96\x5c\x7e\x01\xed\xeb\x69\x96\x4a\x5d\x20\x96\x0d\xb1\xc1\x95\x82\x45\x98\x5b\xf1\xd8\x4b\xca\xa3\xc6\x8c\xaf\xff\x0d\xfd\xf6\xee\xf9\x1a\x52\x3c\xe2\x00\x5c\x94\xad\x41\xb5\x45\x02\x54\x08\x96\x01\xe1\x68\xca\x0c\x49\xbb\x2c\xaa\x0c\x8b\xe3\x5d\x96\x43\x5c\x47\xf5\xda\x11\x6e\xa3\x4f\x71\xfe\xad\x70\x38\x0b\x9e\x8b\x0c\x5e\xf3\x8b\x4b\x68\x48\x8d\x03\xad\xad\x5d\x17\x17\x7b\x13\x3e\xf7\x52\x65\x22\x2d\xc7\x43\x60\x62\x4f\xdc\xeb\xbb\x66\x0e\x55\xfe\x56\xaa\xce\x1c\x8b\xc3\x5f\x43\xa4\x58\xb4\xe8\xdd\x14\x4a\xa5\xbf\x2a\x75\x6d\x3a\x86\x11\xf4\xaf\xae\xde\xff\xfd\xe8\xea\xf9\xd1\xfb\xb3\x93\x93\x57\xa7\x57\x2f\x5f\x9d\xfc\xe5\xe9\xab\xab\x5f\x4f\x4e\xfe\x76\x75\x85\xc2\x85\x0f\x57\x86\xe6\x28\x6d\xb2\x76\x88\x0c\xf0\x79\x0a\xc0\x07\x79\x21\x89\x32\xa1\x76\xff\x2a\x1e\x42\xf0\x8b\x36\x55\x50\xd2\x17\x73\xc3\xa8\x0c\xd5\x0d\x0d\x81\x82\xe6\x65\xba\xac\xa9\xaa\x32\xaa\x58\xe4\xfc\x46\x50\x02\x52\x5e\x88\x28\x41\x00\x4e\x18\x22\xa9\xdd\x1a\xe2\xb0\xc8\xfd\x9c\x82\xac\x83\x6a\x71\x28\x05\x56\xd6\xcb\x91\xd1\xce\x47\x22\xd0\x47\xe7\x4b\xbc\xb0\x45\xe5\x50\x04\x79\x77\x6a\xa7\x63\xab\xb7\xba\xac\xdc\x92\xe2\x34\xd9\x27\xb6\xc8\xc5\x42\x64\x49\x18\x61\x5d\x33\x88\xa7\xf4\x72\xa1\x7f\x82\x6f\xbc\xc3\x40\xb0\x72\xab\xcb\xe2\x56\x6b\x07\x81\x6e\xf6\xc0\x68\xbe\x65\x2f\x45\xc1\x8a\x99\x60\x13\x99\xeb\xc2\x28\xa6\x73\x78\x50\x89\x2d\xb8\xd6\xf0\xa1\x10\x20\xbc\x7d\xcb\x46\x2b\xa6\xc5\x58\x65\x89\x77\x51\xb0\x83\x36\xdf\xf1\xb8\x5b\xf0\x9c\xcf\xd9\x27\x50\x65\xee\x80\x17\x45\xe5\xf6\x05\xa1\x3b\x36\xc1\x72\xeb\x35\xf9\xed\x5d\xf9\x74\x9c\xc8\x2c\x61\x6d\x03\xa1\xcb\x26\xf1\x1d\x35\xb0\x38\xf2\x4a\x99\x98\x53\xb0\x34\xa7\xe7\x42\x2c\xd8\x58\x2d\x56\x30\x81\xa9\xbc\x11\xd6\x00\x0c\x1e\x9d\x32\x11\x10\xa1\x31\x96\xf9\x78\x99\x62\x98\xf5\x72\x5c\x2c\x73\xd1\x87\xe6\x67\xe0\x0c\xeb\x72\xa3\xf1\xf1\x4c\x68\xc6\xd3\x94\x65\x42\x1b\x06\x8c\xa0\x34\x9e\x88\x85\x39\xe0\x16\x52\x68\x6c\x7b\x0c\xc9\x20\xd1\x83\x56\xd7\xf4\xd0\x05\x77\x5b\x80\x99\xd0\x10\x15\xe3\x70\x4a\xc9\x6c\x62\x76\x89\x60\xa9\x52\x8b\x7e\x05\xa5\xdf\xde\x99\x8e\xab\x58\xfe\x23\x4a\x8b\x7f\xba\x43\xa8\x9b\xd0\x9a\x08\xb1\x78\x66\xfa\x45\x79\x12\xda\x04\x3c\xc0\xba\x6a\x86\x47\xa7\xf5\xde\xa4\xb7\xd2\xe1\x48\xf8\x6d\xa9\x0b\xf7\x0c\xd2\xc4\x8c\x8c\x49\xcd\xe4\xdc\xec\x06\xa3\x05\x80\x70\x68\x81\x9a\xaf\xf6\x29\x3d\xf6\xf9\xb3\x3b\x10\x46\xbf\x21\xff\xb3\x66\xaa\x92\x41\x05\xa7\xeb\x4e\xc6\x41\xd0\xd1\x4c\x16\x5d\x83\x68\x48\xb2\x53\x83\x66\x2b\x48\xcd\x50\x62\xc0\x27\xc3\xc0\x11\xd4\xef\xb3\x71\xc0\xe3\xc6\x7d\xfb\x78\x21\x0c\xd4\x88\xb0\x61\xb2\xd1\x59\xd5\xda\x33\x33\x67\xba\x5a\xac\x82\x11\xa2\x73\xf1\xc2\xa8\x82\x78\x51\xec\xde\x4c\x34\xb2\xfd\x13\x76\x7e\x69\x79\x39\xcc\x66\xb1\xc4\x9d\x07\x4d\xe0\x50\x47\x44\xf3\x02\x37\x23\x55\x1b\x09\x70\xbb\x66\xb7\x82\xdd\xf2\xac\x30\xf4\x92\x8b\x89\x80\x54\x6a\x32\x63\xb9\x18\x2f\x73\x2d\x6f\x84\x5b\x59\xd3\x0e\x20\x61\x6c\x94\x15\xdc\x69\x7e\x43\x33\x39\x92\xfb\x4d\xcf\x43\xe6\x66\x61\x19\x54\x60\x7d\x83\xa1\x5b\xa5\xa7\x5d\x9f\xa8\xc0\xb4\xb7\x3a\x81\x1d\x43\xdb\xea\x09\x96\xc2\xca\x69\x61\x10\xeb\xd0\x73\xb4\x75\xad\x7e\x05\x99\x96\x61\x1c\x15\xbe\x80\x35\xc0\x20\x45\x44\x3c\xb1\xf9\x62\xb6\x1e\xb9\x7f\x7f\x34\x18\x29\xdc\x1f\x05\x2c\xd2\x35\x72\x2f\xa8\xb4\xbd\x96\xe6\x69\x14\x68\x18\x48\xfb\xe1\xc3\x90\xb4\x0f\x03\xd2\xae\x42\x7c\x9b\xab\xb9\xd4\x02\x12\x27\xc5\x20\x6f\x78\x08\xe9\x86\xa7\xfd\x62\x26\xb2\x8a\xc0\x14\x03\xe4\x5a\x8b\xbc\x60\x6d\xc3\x9f\x25\x9e\x04\x73\x3d\x0d\x0f\x77\xf7\xc5\xbb\x92\x65\xe2\x96\x61\x12\x83\xf6\xc5\x1e\x88\xb8\x97\xec\x62\x8f\x3d\x82\xa6\x1d\x27\xed\xf8\x7c\x8b\x3c\x2f\x24\x4f\xf1\x1d\x5e\x9e\x4f\xe3\x71\xd7\xf8\xc7\x79\x2c\x9b\xda\xa1\x04\x35\x18\xb0\xbf\x70\x2d\x58\xc2\x0b\x4e\xdb\x16\xd6\x1c\x0e\xc7\x96\x66\xa8\x39\x76\xd9\x82\x8f\xaf\xf9\x54\x50\x88\xab\x9a\x9b\xed\x41\x99\x45\x81\xff\x5a\xe3\xb0\xd9\x7b\xee\xb6\xc9\x8d\x84\x4a\xda\x39\xbf\x7d\x4d\x00\xf3\x65\x56\x48\x97\x34\x04\xe4\x3f\x2a\x62\x87\xf6\xa3\xdd\xa1\x98\xda\x1c\x7a\x1d\xcf\x64\x9a\xe4\x22\x83\x13\xd2\xb5\xbc\x72\xc5\xce\xff\x9d\x52\x69\xc2\xab\xa1\x31\x1c\xb3\xd7\x71\x17\xd2\xec\xec\x99\x74\x3b\x93\xe3\x19\x1c\xb8\x22\x31\xa7\xec\x22\x57\xd3\x9c\xcf\xe7\xf8\xe6\x17\x76\xe4\x66\x60\x46\x69\xff\xf6\x69\xdd\xf8\xad\x7d\x20\xc0\x7d\xec\x83\x24\xe0\x39\x76\xc3\x20\x5a\x1a\x45\x06\xd7\x95\x26\x40\x56\x11\xf7\xb0\xe3\x57\x59\x9f\xb8\x2f\xed\x0e\x1b\xba\x1f\x10\x98\xf5\xe9\x2e\x4a\xad\xe7\x74\xb8\xa7\xe3\xb1\xd0\x5a\xe5\xa0\x86\x61\xe6\xbb\x05\x07\xf3\x7b\x5d\xc2\x2b\x76\x47\xee\xdf\xd5\xf6\x7d\xdf\xb6\x8f\x52\x78\x53\x9e\xf4\x07\x0f\x4a\x08\x0c\x9a\xda\x31\xd2\x07\xaf\x6a\xf2\x04\x13\xc0\x87\x70\x5d\x19\x06\x66\x22\xf6\x42\x32\x72\xc4\x60\x99\xe1\xdc\x2e\x52\x43\x2f\xb9\x98\xab\x1b\x51\xe9\x28\x2c\x0e\x18\x2d\xe5\x2f\xaf\xe9\xaa\xb9\x87\xa9\x28\x2a\xe0\x5d\x59\x00\xdb\x3a\xe3\x57\x61\x37\x82\x9e\x71\x5d\x01\xed\xca\xaa\xa0\xc9\xca\x15\xf7\xd0\x08\x7c\xb9\x48\x4a\x19\x6a\xa9\xc4\xef\xe4\x08\xf3\x75\x8b\x1b\xed\x05\x5f\xec\xce\x74\xff\x11\x45\x67\x1d\xbc\x94\x1e\xc3\xa4\xef\x11\x40\x2a\xf3\xa9\x37\x63\x90\x56\x29\x68\x06\xea\x6a\x44\x60\x5d\x69\x13\x60\x7c\xeb\xa3\x19\x2c\x7d\x8f\x80\x52\x99\xb3\x54\xd6\xe3\x9c\x8e\xca\xca\xa2\x46\xe5\x6d\x77\xd4\x86\xc7\x70\x3b\x5e\x56\x38\x90\x9b\x89\x92\x5a\xbe\xac\xe4\x10\x8c\x3f\xf8\xae\x6c\x2a\xc1\x9a\x79\x3a\x3c\xd4\x0c\xa7\x52\xd9\x8e\x6b\x0b\x2c\x3c\xb5\x86\xf5\xf2\xe0\x9e\xba\x97\xe8\xd7\x0c\xae\x4c\x50\x6b\x07\x47\x95\x77\x18\xdc\x6b\x22\x92\x9a\xe1\xb9\x4f\xeb\x07\x58\x25\xcf\xb5\x43\x74\xd5\x6b\x06\xd9\x90\xd7\xa6\xcd\xca\xa3\xef\xd6\x1d\x03\xfe\xda\x18\xab\x47\x97\x1a\xa5\x63\x3c\xf8\x66\x36\xc4\x3b\xa5\x8a\x88\x15\x0c\x06\x0c\x1f\x2b\x11\x39\xcb\x95\x2a\xec\x29\xdb\x7e\xbf\x14\x1f\xfb\x78\xfc\x59\xd3\x9b\x3f\xfb\xa9\x45\xfb\xfc\xb2\xcb\x22\xa8\x36\x5d\x7a\x89\x90\xeb\x6e\x49\xca\x47\x90\xf9\xd9\x5e\x70\xf7\x92\x3a\xf1\x40\x53\xd2\xcf\x45\xb2\x1c\x47\x96\x07\xea\xad\xc6\xa9\x6c\xee\xc8\x17\x76\x1f\x70\x55\x52\xec\x71\xf0\x4a\x15\x9d\xed\x86\xf7\xc6\x32\xc0\xd2\x38\x7d\x79\x38\x60\x08\x92\xb0\xe2\x86\xeb\xea\x60\xe3\x5c\x1c\x9b\x8d\xa7\xe3\x40\xd5\x4d\x28\x0e\x8f\x74\x10\xd8\x23\x8b\x9a\x90\xa7\x3f\x81\x83\xe4\x11\x6b\x0d\x5a\x6c\xc8\x5a\x2d\x8b\x0e\xf8\x6b\x23\x1e\x9a\x8e\x95\x6f\xf6\xeb\x29\x0a\xbf\x02\x69\x38\x24\x94\xa8\x64\x2b\xf2\x70\x64\x19\x9d\xf2\x54\x06\x78\xef\xb2\x46\x11\x95\x52\xb2\xce\xa4\xfe\x66\x9f\x56\x23\x88\x8f\x66\x4e\x78\x0d\x35\x76\x2f\xd1\x52\x7c\x9d\x65\x04\x6d\x1b\x85\x2e\xb2\x9b\xfe\x9b\x93\xe7\x47\x57\x47\x6f\xde\xa3\x12\xbe\xc8\x55\xb2\xa4\x04\x12\xae\x6b\x54\x2b\xde\xd9\xb1\x95\xc7\xda\x39\x28\xa9\xbf\x99\xf0\x62\xaa\xd1\x2e\xa8\x59\xcd\xe4\xbc\xa3\x9e\xa1\xa4\xf0\x69\xfc\xf8\x6c\x83\x9d\x7c\xe8\x01\xd7\x5c\x55\x80\x88\x89\x26\x5f\xa2\xd6\xa9\x28\x10\xae\x4e\xe5\x58\xb4\x1f\x77\x59\x6f\xdf\x25\x6b\x25\xeb\xae\x95\xe7\xa0\xe2\x79\x38\x8a\x1e\xdb\xbf\xec\xfa\x1e\xa3\x49\x86\x4c\x86\xcc\x41\x48\xa5\xba\x46\x08\xc0\x0f\xf5\x3c\xb6\x52\x2d\x34\x4d\xe4\xfc\x16\xc6\xf6\xba\x86\x37\x30\xa2\x05\xcf\xba\x60\xec\x74\x2d\x61\x6a\xc2\x02\x45\xed\x23\xa4\xfb\x9b\xbd\x6d\xb6\x4c\x56\x47\xbc\x41\x69\x99\x6d\x6c\xbd\x10\x3e\xdb\x7b\xed\x02\xb8\x3a\x63\x12\x48\x68\xd9\xca\xbc\xc3\xeb\xb7\xa6\x34\x8a\x3e\xdd\x95\xd8\x31\xde\x5b\xa5\xa2\x7f\xcb\xf3\xac\xed\x2f\x1e\x9c\x72\x5c\xe4\x2b\x99\x4d\x59\xa1\x42\x0c\x10\x77\x6b\x81\xe6\x8c\xec\xe9\x62\xaf\xd5\x25\xb5\x4e\x6a\x50\xa9\x43\x60\x99\x2a\x1c\x11\x89\xe4\x62\xcf\x7e\xab\x75\x15\x0b\x68\xcf\x4f\xb3\x5f\x66\x11\x95\xba\x84\xad\x40\x97\xb0\x08\xdb\xb8\xe4\x52\xbf\x73\x83\x0b\x17\x3d\x2a\xff\x1d\x97\x3d\x3a\x65\x60\x16\x56\xaf\xa0\x03\xf0\x2e\xbe\xd5\xb0\xaa\x01\xf2\x26\x34\xfe\x5b\xc2\xf7\x9b\xd8\x0b\x43\x5f\x87\x07\x36\xb2\x07\x1a\x0e\x5d\x0f\x21\x71\x80\xb8\x11\x0c\x8c\x4e\xa2\x76\x04\x24\x6e\x5f\xcf\x5c\x5c\x83\x3a\xe6\x82\x1e\x24\xa4\x69\x35\xd7\x24\x42\x8a\xc6\x13\xed\xaa\x4a\xba\xa1\xdd\x37\xd2\x9a\xcd\xd4\xb0\xa1\x78\x92\x30\x0e\x67\x46\xfd\x7e\x62\x46\xbf\x84\x8d\x93\x2a\x9e\xc8\x6c\xda\x2d\xed\x2b\xf3\xaf\x35\xe7\xd9\x92\xa7\x54\x09\x52\x72\x0a\x91\xb8\x7b\xb5\x78\x9b\x05\x5b\x2d\xde\x42\xd1\x07\x5a\x29\x5f\xaf\xc2\x6d\xfd\xa7\x66\x94\x06\x95\x2a\x0b\x43\x7a\x76\x0d\x0f\x08\xaf\x1b\x2d\xb9\x3f\x45\x43\x1f\xf9\xf1\x21\x6d\x0e\x6b\xf2\xb0\x97\x5e\xa8\xa2\x8c\x50\x91\x09\xc7\x26\x07\x15\x1f\x17\x70\xb3\x3c\x8c\xed\x8b\x4e\x34\x47\x33\xd5\x57\xec\x98\x7d\xfe\x8c\xb3\x6c\x57\x2b\x91\xc1\x34\xb6\x80\x2e\x45\x7f\xc6\xb3\x24\x85\x4c\x57\x51\xaa\xab\x35\x73\x60\xce\x84\x8c\xd6\xc3\x8b\x3d\x82\x71\xb1\xc7\x6a\xe7\x89\x73\x3a\x5b\x2d\x84\xf3\x93\x24\xcd\x71\x58\x42\x3f\x74\xe9\xb4\xa2\xda\xaf\xa4\xd6\x0d\x23\xec\x55\x78\x57\x89\xb7\x54\x84\xc1\x1a\xbb\x76\x30\xca\x4d\x96\x79\xd8\xe7\x0e\x16\xbd\x3c\x55\xbe\xd7\xa5\x54\x11\x00\xf5\xc4\x79\x02\x04\xbd\x58\x1b\xd3\x3a\x21\x86\x2c\xe8\x25\x6a\xe8\xb2\xe8\xe5\x3b\x4b\x35\xc1\x66\x8a\xba\xed\xd3\x67\xa4\xa4\x60\xcb\xcc\xf9\xb5\x40\x04\x4a\x95\xbd\x16\x5a\xf3\xa9\x65\xc3\x60\x8b\x43\xf5\x92\xba\x8c\x41\x5a\xba\xe8\x54\x36\x58\x18\x40\x1d\xad\x49\x5d\x6f\xac\xb1\x3b\xd7\x81\x3f\x0b\x47\xcb\x09\xfa\x94\x03\xe7\x62\x7a\xa6\x96\x69\xc2\x46\x02\x6d\xeb\xb6\x01\x7e\x1c\x2d\x0b\x76\x71\x71\xb1\x17\x31\xbb\x3e\xfc\x02\xd7\x38\xf3\x13\xbf\xd7\x0a\xcc\x7f\x0a\xc4\x65\xd3\xed\xa3\x43\x03\xd4\x5b\x98\x1d\x68\x6c\xf5\x9b\x92\x19\x78\x0e\x75\xca\x80\x81\xdf\x04\x10\x50\x6a\x61\xed\x38\xf5\xa4\xcb\x0b\x47\xa3\x0c\x35\xc2\xd1\x72\x12\xb0\xab\xf7\x4b\x01\x89\xf1\x46\x32\x4b\x18\x64\x12\xd2\x05\x4f\x53\x17\xb3\x49\x1e\x17\xfe\x0d\x0d\x28\x28\x79\xf4\xd4\x2b\x3e\x3b\xf9\xf8\x0c\x06\xec\xe9\xb2\x50\xb6\x7f\xd3\x18\xaf\x0d\x8d\x10\x96\xa8\x4c\xb0\x95\x40\xdf\xa6\x0f\xe8\xa4\xf1\x01\x72\xe0\x7c\x78\xbf\x14\x1f\xfa\x04\xe0\x4c\x31\x9e\xa6\xea\x16\x32\x57\x69\x7f\x61\xcb\x97\x10\x11\x03\x80\xd1\xea\x22\x33\xba\x2d\xe0\xda\x67\x75\x85\xdc\x4a\x63\x95\x88\x80\x12\xc0\x5b\x21\x61\x33\x91\x8b\x3e\x3b\x15\x82\xfd\xd7\xcf\xdf\xef\x3b\x19\xef\xfd\x52\x04\xfc\xaf\xde\xb1\xc4\x54\xc0\x2f\xfd\xf7\x41\x86\x40\x1a\x4e\x3b\xf8\x74\x50\x12\x21\xef\x27\xff\xb4\xdf\x1b\x6a\xbf\xd8\x9b\x2f\x75\x01\xe1\xa0\xe0\x9d\xb5\xd4\x02\xcc\x2b\x1d\xf2\x2d\x43\x9f\x4c\x73\xa4\x73\xe7\x35\x84\x3e\x4a\xfd\x8b\x3d\xbb\xf5\x08\x20\x4d\xcf\x5e\x84\x95\xe6\x67\xfa\x02\x3f\x33\xf2\xaa\xd5\x8c\xbb\xaa\x0b\x95\xae\x26\xd2\xac\x26\x5a\x94\xd9\x28\x57\xb7\x5a\xe4\x35\x7d\x94\x9e\x61\x01\x32\x33\xa0\x71\x70\x30\x99\x91\x80\xf9\x88\x04\x8f\x89\x62\x26\x40\x0c\x51\x0b\x91\xf3\x42\x79\xa0\x81\x9a\xbb\x00\x0f\x1a\x1d\xba\x0c\x61\xc9\x01\x52\xa7\xfb\x1e\x52\xa7\x6f\x74\xee\xb5\x1b\x6d\x03\xaa\xbd\x6b\x93\x29\x20\x38\xf6\x6b\x08\xc6\xb5\xb0\x69\x82\x88\xcc\x2c\xba\xe9\x85\xfe\xf8\x52\xe7\x6a\xac\xe6\x73\x59\x14\x98\x4d\xde\x27\x18\xc2\x8f\xde\xc0\xdd\x74\x89\x15\xd6\x3b\xb5\x9e\x2b\x79\x30\x17\xac\x10\x1a\xb5\xd7\x83\xa2\x47\x26\x5e\x3a\x73\xf5\xfa\xea\x24\x2a\x45\x56\x05\xaf\xbc\xb4\x23\x8f\xba\xa8\x85\xb3\x6f\xbd\x86\x97\x50\xd7\xf7\xa2\x9b\x67\x76\xcb\x8b\xf1\x4c\xe4\xef\x5f\xd3\x10\xde\x2f\x45\x3b\xea\x8e\x5f\x8b\x57\x6a\xcc\x53\x9a\xd1\x33\xf2\x99\xa8\xef\x90\x96\x0c\x98\x23\xae\x0c\xb0\xa0\x44\xea\x05\x38\x22\x17\x0a\xdc\x55\x3d\x91\x90\x23\x9d\x65\x81\x18\x47\x35\x29\x17\xb9\xf6\x87\xe6\x6b\xdf\xfe\xf4\xaa\x34\x76\x85\x5f\xf1\x87\x9f\x42\xd0\xd8\x71\xe5\x91\x5a\x66\xc9\x73\xfb\xa1\x4d\x66\x5c\xbe\x32\xd2\x75\xd9\x58\x69\xdb\xa3\xa7\xa3\xc6\x8d\x16\xb7\xb8\xc8\xac\xb7\x23\xf4\xe8\x86\x13\xf7\xf7\x0c\x8b\xe3\xde\xca\xe9\xbd\x02\x1f\x02\x53\xbb\xb9\xd3\x6e\x64\xf3\xbd\x0b\xf7\x0b\xec\xa3\xb9\x4a\xc2\xbb\x4f\xda\x5b\xb4\x0b\xfd\x8e\xb7\xb7\xa2\x11\x71\x81\x71\xaa\x7c\xcf\x0a\xae\x98\x81\xfd\xb9\x1f\x1e\x03\x3c\xd5\xca\xbb\x6c\xa4\x2b\x67\x07\x40\x07\x23\xbd\x1c\xf5\x02\x8d\x6f\x30\x00\xb2\xa0\x00\x21\xac\x42\x07\xfb\xd4\xbd\x98\xad\x65\x22\x6a\x37\x15\xf0\x7b\x3c\x0e\x48\x73\x45\xf7\x53\x18\x6f\x97\x39\xab\x66\x34\x9b\x4e\x3c\x11\xc9\x53\xf9\x6f\xbc\x35\x46\x22\xbc\x99\x07\x86\x8d\x5c\xe8\x85\xca\xb4\x1c\xa5\x02\xf4\x4f\x53\x2d\x17\x86\x4b\xdc\x48\xcc\x8e\x3f\x18\xb0\x36\xcd\xd9\xce\xb3\xbc\xf5\x39\x7a\x08\x2f\x8d\x48\x14\x3c\xad\x89\x92\x85\x16\x05\xb0\xec\xf7\xaf\xc3\xc1\x07\x83\x04\x1f\x6a\xcb\x5a\xc1\xf0\x81\x7f\xd6\x48\xc6\xf8\x25\x10\x80\xb1\xa0\x8d\x12\x86\x0f\x40\xc3\x05\x5f\x6a\xf1\x1c\x5d\xee\x42\x36\x9f\xd8\xa2\x07\xa5\xd7\xb5\x2a\x15\x86\x70\x3e\xe2\xa5\xb6\x2b\x75\xf2\x4b\x00\xbd\xec\xe1\xf7\xd6\x8f\xaa\x64\xa6\xab\xbf\x4a\x07\xe1\xe8\x13\x22\x66\xe7\x7b\xf4\x6f\xf6\x91\x7c\x37\x5c\xa2\x23\x9d\xdc\xcc\xfb\x57\x09\x2f\x78\xff\x9b\x6f\xe8\x74\xd9\x08\x56\x97\xc0\xde\x7c\xb1\x1d\xa6\x0d\x87\x97\x39\xc2\x31\x52\xbe\xe2\xfd\xd9\x31\xdc\x53\x7c\x5c\xa4\x72\x6c\x36\x22\x7e\x22\xea\xc5\x41\x05\x07\x3a\x4e\x00\x48\x2c\xb0\x80\x55\x19\x13\x95\xb4\xaf\x90\xb7\x5c\x39\xe6\x72\x55\x66\x4b\x75\x32\x2b\xd1\xea\x78\x26\xc6\xd7\xa4\x0f\xf6\x74\xb1\x4a\x05\xc1\x8d\x59\xfa\x32\x93\x93\x15\x9e\x1b\x10\x6b\xb5\xa6\xd3\x20\x58\x96\x42\x7a\x0c\x67\x77\x81\x3b\xd6\x34\x07\xcd\xe8\x23\xfd\x0a\xbe\x7b\xa9\xd9\x7c\xf7\xce\xdf\x76\x54\x73\x7f\xdd\xf8\x89\xde\xef\x8e\x38\xec\xd0\xf5\xe0\xf3\x23\x8a\xac\xc8\x57\x9e\x5d\x5a\xb1\xe0\xdc\x34\x0c\x92\x2c\x42\xb5\xaf\x64\xb3\x15\x25\x47\xa6\x65\x06\xe9\x58\xfd\xf0\x71\xe8\x4e\xb5\xea\xac\x33\xb7\xba\x63\x5f\x16\x33\x3c\x8f\xea\xd2\x7f\xc1\xf0\xab\x9c\x06\x17\x15\x62\xb6\x0a\x95\xb3\x36\x99\x1d\x82\x31\x53\x49\xdb\x1e\x8c\x35\x3a\x69\xad\x54\x82\xd5\xc8\xaa\xda\x81\x53\x6c\x86\xaa\x89\x75\x25\x5d\xe4\xe2\x46\x64\x05\x46\x98\x9a\xde\x65\x76\xc3\x53\x99\x90\x7e\x32\x61\x1e\x1a\xd3\xab\x6c\x3c\xcb\x55\xa6\x96\x3a\x5d\x81\x0c\xac\xd9\x32\x73\x15\xa8\xb3\x2a\x23\xd5\xcb\x51\xc0\x45\xf5\x72\x14\x78\x4f\xd3\xdd\x04\xb1\x69\x3f\x15\xb3\xb6\x64\xf3\xd9\x6e\x85\xd9\xc3\x87\x58\xdf\x92\x67\xe0\xcd\xaf\x65\x2a\x32\xd8\x35\x81\x13\x62\x8d\xb1\xd1\xd1\x42\x13\x0d\xa0\x1e\xcb\x4e\x01\x1e\x81\x07\xfd\x6f\x24\x84\x75\xc4\x49\xfa\x91\xa1\xb1\xf5\x77\x2d\xc8\x61\x1a\x32\x37\x5a\xb4\xf0\x54\x16\xe4\xe2\x22\xd8\xcd\x52\xf4\x2c\xcf\x27\xdb\xe3\x06\x96\x53\x27\x7d\xb9\xb2\x32\x07\xb8\x27\xb3\xb1\xf0\x76\x63\x37\x5f\xc6\x64\x6c\x5f\x7c\xfc\x65\x2c\x84\x54\x94\xff\x04\x03\xa1\xa1\xef\xc2\x3e\x60\xf3\xfa\x40\xc5\x06\xed\xc9\x0e\xe0\xbf\x75\x3f\x9b\x1d\x4d\x9e\xf3\xcd\x1b\xba\x8f\xda\xbc\xd9\xbf\xbe\xd5\x66\x3e\x40\xcd\x5c\x04\x43\x1d\x33\x08\xa3\x2d\xbf\xea\x6d\x9d\x5d\x36\x58\x46\xb3\x11\xc9\x22\x41\xcb\x17\x70\x51\xb3\x8a\xfe\x12\x20\x5e\x7e\x51\x36\xc0\x5f\x94\x5f\xce\x45\xa6\xef\x53\x5f\x5d\x50\xc8\x0e\x19\x27\xfa\x46\x11\xc1\x3a\x73\xbe\x08\xb0\xe5\x4f\x01\xe7\x42\x5e\x3e\x05\xd8\x5d\x87\xf0\x3d\xc4\x6e\xce\x1f\x5f\x86\x67\x44\x20\x91\x19\x1d\x94\x7a\x0c\xfa\xc8\x85\x56\xe9\x8d\xe8\xb2\x5c\x44\xf9\x3f\xe8\x99\xdd\x62\x26\xb2\xb8\x76\x78\xab\xec\xe9\x95\xf9\x4b\xe6\x66\xaa\xdd\x96\x94\xf8\xa4\x10\x79\x48\x49\x5b\x53\x13\xb4\xdc\x40\x4c\xb0\x54\x55\x82\xba\x3f\x51\x6d\x41\x58\x30\xae\x8d\x74\xb5\x86\xb6\x58\x78\xc1\xe4\xfe\xa0\xc5\x83\x65\xb1\x44\x18\x9a\xd4\xe3\xe0\xe4\xdf\x6f\xc1\xa0\x9f\x7b\x2d\x18\x4e\xb3\x6e\xc1\xba\x88\xbd\xff\xec\xba\xe1\x1f\xbf\xc3\xba\x41\xaa\x0f\x9a\x60\x49\x92\x6b\x3a\xef\x5d\xf7\xe1\x81\xef\x0b\xc1\xc3\x3e\x56\x2d\xdc\x4b\x52\x99\xc8\xe5\xf8\xd4\xc7\xb0\x65\xdd\xaa\xa0\x18\x5a\x3d\x36\x0c\xa0\xea\xea\x58\xfe\x54\x33\x18\x30\x89\x2c\x47\xda\x87\x3f\x4e\xca\x11\x0a\xec\x09\xb3\x11\xc7\x43\xf3\xf5\x8e\x99\xff\x1c\xac\x9b\x8a\x81\xd8\x6d\x3a\x2d\x37\x4f\xe9\xb6\x2c\x40\x61\x41\x1b\x6d\x25\x5d\x36\x1e\x55\xad\x48\x4d\x12\xd4\x17\x28\xa8\x36\xc0\x93\xfc\x5b\x23\xa4\x38\xd3\x33\x0d\x56\x65\xe9\x8a\xf1\xf1\x58\x2c\x0a\xcd\xb8\x1b\x79\xa8\xa2\x96\x94\x70\x67\x88\xec\x7f\x03\x7f\x96\x72\xea\xf8\xf7\xc6\x6c\xca\x66\xbf\x05\xe9\x97\x75\x9d\x85\x3c\xc2\x21\x4e\x9a\xf0\x1a\xaa\xd7\xb1\x0b\x5b\x50\xde\x8e\xc3\x15\x9b\xf0\xba\x8d\x5a\x65\x39\x59\xd9\xde\x00\x76\x39\xb4\xb5\x05\x99\x8f\xeb\xc6\x8b\xb6\xa6\x6a\x3c\x48\xe9\x4b\xd5\xf5\xae\x4c\x1e\x3b\xdd\x35\x05\x2f\x33\x19\xc0\xb8\xf4\x78\x77\xd6\x32\x6b\x83\x85\x0c\x7c\x5e\x2e\x0f\xbe\xc2\x95\x4c\x1c\x65\x06\x1e\x39\x70\x45\x83\xb3\x83\xee\xec\x0d\x07\x77\xcf\x52\xe5\x8c\x67\x14\x9f\x56\xb9\x2e\x29\x5d\x2d\x76\x59\x6b\xcc\xb3\xd0\x5d\x09\x4d\x7c\x81\x73\xed\x68\xc5\x96\xda\xc0\x8d\x51\x6b\x1f\xa0\xb9\x0b\x57\xdd\xd9\x19\x43\xc7\xb5\x8a\x37\x61\x9d\xc9\xd2\x07\xa6\x74\x19\xb9\xf9\x44\x10\xad\xbf\x51\xa7\xeb\x2f\x64\x72\xa1\x45\x7e\x23\x82\x30\x60\xf0\xdd\xd3\xa2\x20\x63\x50\xa1\xac\xaf\x0d\xed\x88\x7e\xbf\xdf\x60\x75\xf4\xfd\x37\x53\x9d\xf7\x08\xab\xd2\x5d\xe5\x5b\xe8\x3e\xb5\x9e\x09\xfd\x5f\x49\x50\xb5\xcb\xee\x91\x80\x90\x0f\xb6\xe5\x07\xde\xbf\xcc\xb2\xa0\xa9\x28\xde\x80\x7f\x94\x7f\x55\xdb\xb3\xb9\x46\xc7\xcf\xf7\x4b\xd1\xc7\x28\x9a\x76\x00\xae\x5b\xef\x88\x16\x98\x62\x42\x92\x70\x76\xd9\x7a\x22\x98\x71\x5d\x5d\x7d\x5f\x18\x2e\xfb\xff\xed\x8b\x1b\x9d\x4a\x76\x8d\x43\x1f\x41\xec\xa2\x11\x53\xaa\xf8\x7b\xc5\x1d\xdb\x17\xb6\x33\x71\x7b\x12\x31\xe3\x12\x31\x39\x07\xba\x93\xd0\x16\x5a\x5a\xa8\x2e\xd8\xbf\x9b\x97\x2b\x20\xbc\x70\x18\x61\xb1\x0f\xa4\xf0\x37\x68\x74\x8d\x5a\xbe\x59\x0d\x08\x3a\xae\x67\xdf\x38\x99\x64\xd1\x9d\x61\x54\x29\x02\xb3\x21\xb4\xa2\x34\x8d\xba\xc8\x8a\x6f\xf6\x29\xb6\x22\x70\xf6\x8f\xa5\x2d\x14\xeb\x50\xe4\xaa\x3e\x9d\x63\xca\xfb\x90\x11\xf1\x64\x02\x28\xf8\x63\xe0\x69\x52\x63\x92\xa3\x34\x03\x56\x26\x7e\x02\x80\xfb\xcb\x4c\xcf\xe4\xa4\x30\x00\xec\x97\x21\x7e\x81\xd0\xe4\x20\x98\x64\x5d\x14\x29\xe4\x87\x34\x87\x7f\x69\x4c\x81\x1b\xbc\x64\x7f\x32\x3b\xdd\xab\x03\x50\x57\x2f\x80\x0b\x48\xf7\x5c\x42\xc9\xaf\x2e\x90\x0b\x2c\xd9\x30\x7b\x89\x38\x53\x56\x7d\xa6\xc4\x17\x9b\x2f\xc9\xa9\xe2\x36\x97\xe0\x54\x75\xeb\x5b\x70\x0b\x7a\xa7\x4b\xed\xf0\xde\x92\x92\x4e\x38\xf1\xc9\x5e\x54\xfa\x2b\xc5\x9a\xfb\x42\x42\x45\x70\x61\x18\x8f\x83\x02\x22\xec\x1e\x0b\x4e\xd8\x9b\x79\xe5\x24\x8d\x81\xcd\xf0\xaa\xb1\x69\x19\xde\xbf\x66\x35\x0d\xfc\x3e\x54\x69\xf2\x7e\xee\xa6\x75\x75\x33\x2f\x5d\xaa\xe3\x09\xbf\x58\x8e\x52\x39\xb6\xc7\xbb\xc7\xa3\x0f\x92\xf3\xd1\xf8\x38\xee\xff\x3f\x7b\xff\xc2\xdd\xc6\x8d\x2c\x88\xe3\x5f\x05\xf2\x64\xdc\xa4\xc5\x87\x64\x27\xb9\x09\x15\x8d\xa3\xc8\x72\xa2\x19\x5b\xf2\x4a\xf2\x64\xee\x4a\xba\x76\x93\x0d\x8a\x6d\x35\xbb\x79\xbb\x9b\x7a\xc4\xd2\xff\xec\x87\xd8\x4f\xb8\x9f\xe4\x7f\x50\x55\x00\x0a\xe8\x6e\x92\xf2\x23\x77\xf7\x9e\x5f\xe6\x9c\xb1\xd8\x78\x15\x80\x42\xa1\x50\xcf\x24\x1b\x85\x89\x51\xae\xea\x80\x0a\x66\xda\x0f\x52\xf2\x23\xa4\x95\x2d\xae\xdd\x7a\xae\xa2\x47\x55\xa8\x81\xcd\x31\xb8\x73\x5b\x71\xe9\x80\x3a\xcc\xdc\xf6\xaf\xdf\xc7\x48\x13\xba\xbf\x32\x13\x89\xbc\x92\x79\x78\x21\x21\x68\x45\x12\xfe\x71\xdb\x55\x13\x54\xe4\x67\x2a\x47\x93\x30\x8d\x8b\xa9\x69\x1b\xc5\xb9\x1c\x95\x22\x4e\x21\x97\x89\x65\x64\x0a\x29\xae\xe3\x24\x11\x89\x0c\xa1\xcf\x51\x92\x15\x73\xb5\xd4\xc8\x6e\xc1\x9d\xa1\xf6\xa6\xc7\xa0\x50\x1f\xb5\xeb\x38\x44\x2f\x70\x0f\x3a\x58\xdd\xe0\x43\x48\x87\x90\xd7\xdd\x41\xb4\x23\x33\x86\x4c\xaf\xe2\x3c\x4b\x55\x0d\xea\x5e\xcf\x4e\x7b\xdc\xd2\x28\x48\xd9\x74\xa8\x19\xd1\x18\x51\xcd\xc1\x06\x3f\xb6\x1a\xc4\x0c\xad\x7d\x5c\x19\xa4\x43\xcb\x48\xb2\x40\x15\x35\xa1\xd7\x74\x40\x2c\x07\xad\xce\x6a\x75\x3d\xb4\x5f\xa1\xe2\x52\x8c\xc5\x12\x18\x82\x18\xbf\x6d\x3c\xcb\x65\x2e\x25\x35\x28\xe6\x33\xb5\x50\x85\xb8\x0e\xf3\x34\x4e\x2f\x0a\x0c\xcb\xa1\x96\x2c\x24\x2d\xc5\xbc\x90\x98\xd5\x2d\x8c\x22\xa9\x73\x87\x83\x8d\xda\x78\x9e\x5e\xde\xea\x30\x44\x10\x21\xac\x30\x44\x03\xf5\x21\xdb\x5c\x85\x8d\xdf\x00\xe6\xca\x57\x7e\xc7\x99\xc5\x61\x86\x32\x5a\xc1\x1d\x96\xe1\xc0\x2e\x30\xbd\xea\x06\xd6\x54\x49\x98\xa5\xd4\x1b\x3b\x30\x7f\x31\x6e\xac\x6e\x7c\x03\x1e\x4d\x51\xa6\x10\x86\x84\x19\x79\xc0\x46\x28\x88\x90\x36\xc1\x25\x47\x44\x51\xd5\x61\x4a\x3d\xd5\x12\xf3\x46\xbc\xce\x22\xa2\x82\x15\x2b\x3a\xc0\x72\xe7\x9d\x68\x29\x94\x39\x43\xa4\xbf\x51\x87\xeb\x02\xa2\x74\x69\x2b\x0f\xbc\x82\x23\x41\xaf\xf9\x82\xb5\x2a\x33\x8c\x49\xab\x05\x08\xb9\xec\xca\xab\x30\x99\xa3\xc4\x5f\x4d\xc2\x31\x83\xef\x99\x1b\x8f\xe8\xca\x42\x56\x1a\x6e\x6f\x38\x9f\xfe\xcb\x5a\x51\x2d\x2b\x99\xf3\x94\x1b\x6a\xc5\x53\x79\x53\x9e\xc4\xa3\xcb\x7a\x81\x03\x76\xfa\x4d\x24\x8b\x32\xcf\x6e\x5b\x4c\xda\x5f\x09\x7d\xc1\xaf\x18\x43\xe5\xd5\x4d\x72\xcc\x1f\x78\xda\x2d\xd2\xa5\xfb\x71\x71\x84\xfe\x60\x6b\x8c\x5f\x37\xc4\x33\x65\x4e\x8e\xde\x4d\xc5\x5d\x1d\xcd\xf3\xe3\xcc\x73\xe8\x8a\xb9\xff\xe1\x34\x9c\xe9\xbd\xae\xf8\x21\x3a\xfb\xde\x7c\x37\x9f\x9a\x16\xe7\x8a\x57\xfa\x72\xaa\xa9\x68\xae\x38\x1b\x70\x13\x31\xf0\x82\x66\x8a\xbb\x4f\x9e\x3d\x32\x46\x39\xcc\x83\x52\x1b\x06\xfb\x46\xc1\xfd\xa0\xdd\xf6\x75\x5a\xab\xcd\x8c\x05\x3a\xe0\x7e\x30\xf8\xd0\xa6\x93\x4d\xd9\xa5\x61\xf3\x1e\x3f\x16\x6b\xfc\xac\x2c\x7d\xde\x79\xb8\x51\xfb\xb6\xb3\x1e\xab\x0a\xcc\x85\x4e\x65\x2b\x1f\x95\x4f\x15\x44\x5b\x94\x01\x58\xe2\x94\x4f\x6f\x75\x27\x19\xbb\xdd\x78\x46\xc7\xb1\x4c\x22\x6b\xd1\xcd\x46\xd0\xb6\xdc\xe2\x3a\x2c\x74\xd4\xc6\x48\xa6\x62\x78\x2b\x42\xbd\xe1\xc6\xb6\xb5\x50\x2d\xd4\xf6\x89\xb0\x5c\xc9\x3e\xdc\xd1\x03\x2c\x16\x85\x2b\x3a\x51\x80\x2c\x86\x3d\xaf\x2d\xa0\xfa\xef\x1e\x0b\x52\xc6\xbd\x11\xf5\x39\xc6\xeb\xd2\xb8\x0b\x8f\xb2\xb4\x94\x37\x25\x24\xff\x25\x06\x6c\x17\x3f\x69\xea\xc1\xfc\x8e\xf9\xd9\xa6\xf6\x9e\x6f\x7c\x6d\xd4\x37\xce\x3a\x39\xa4\x24\x3a\x41\x9d\x37\x3f\x59\x97\xf2\xd6\x78\x2d\x93\x58\x47\xf7\xed\x03\x04\xcd\x79\x90\x38\x98\x9b\x77\xf7\xbb\x70\x36\x06\x84\xf3\x61\x24\x6d\x3c\x16\xa3\xa3\x2c\xfa\x47\x0f\x1a\xa0\x85\x88\x58\xda\x8f\x46\xb7\xd3\x1f\xee\xee\xe8\x8b\x37\x35\x02\xc7\xb1\xad\xa4\x36\xab\xcc\x06\x59\x55\x36\x1b\x2d\x8d\xff\xcc\x15\xa7\x7e\x1b\xd6\x5b\x0f\xb2\x1c\x3e\xf4\xd1\x62\x51\xc1\xd4\x6f\x17\xba\xda\x47\x91\x4f\x94\x1c\xff\x5b\xea\x84\x1e\x39\xa2\x26\xec\x9e\xc2\x64\x84\x2e\xfe\x43\x5a\xcb\xdf\x0e\xc9\x01\x3a\xe6\x0d\x02\x79\x95\x89\x8c\x3e\x51\xa4\xa5\x9c\xc8\x5c\xa2\x07\x03\xc7\x7b\xe0\xfc\x14\x07\x09\x78\x90\xa5\xf0\x9e\x73\x02\x67\xf9\x87\x47\x34\x9d\x1e\x7b\xdd\xa6\x19\x8f\x1b\xc0\xae\x57\x45\xff\x82\xad\xea\x89\xd5\x9c\x1e\x4d\x67\xe0\xf4\xf0\x9c\x08\xaf\xe1\x8b\x38\x7f\xbd\xdc\xb2\xce\xe4\xb4\x2d\x3e\xc9\x48\xce\xb7\x53\x51\x1d\x79\xd6\x70\xbe\x3d\x1c\x54\x71\xa3\xa1\xba\x27\x4f\x95\x93\x21\x0c\xbf\x34\x74\xf2\x60\xc8\xcd\xa5\x25\x24\x60\x5d\xeb\x28\x6c\xab\x68\xce\x8c\x6a\x1e\x78\x01\xc1\xad\xea\x4a\x2a\xd0\x56\xa6\xe1\xbe\x69\x32\x76\xc1\x8d\xac\x9a\xbc\xb4\xcc\x5c\xf1\x6a\xe8\xe8\x97\x43\x93\x59\x0c\xfe\xe7\x3a\x55\xba\x57\xc6\x59\xca\xeb\x78\xb8\xd1\xaa\x5a\x8e\xe3\xeb\xc0\xbc\x0f\xa6\x71\x59\x8f\x5e\x64\xab\xf9\xff\x21\xd7\x57\x41\x2e\xcf\x96\xf3\x93\xd0\xab\xce\x1c\xef\x2b\x22\x18\x47\x8b\x26\xaf\x02\x47\x3c\x68\x9f\x06\x15\x2a\xac\x3d\x4a\xb5\xa4\xfc\x22\x2b\x4b\x99\x8a\x24\xfc\x23\x4e\xb4\xc5\xbb\x8e\xd8\x58\x4e\xe4\x2d\x4a\x4b\x86\x92\xde\x80\x10\xdf\xed\x6a\x4a\x8a\xa7\xb3\xb4\x5e\x32\x11\xcb\xa2\x05\x2b\x65\xc4\x11\xc6\x0f\xd5\x15\x4f\x30\xf4\xb7\x4b\xf0\x7c\x91\xd4\x42\xc7\x82\xe2\x9e\xcf\x0d\x62\x0e\x5f\xda\x55\xb9\x2e\xda\xa6\x17\xfd\x6c\xd7\x46\xe8\xcb\x65\x28\x1e\x8b\xcf\xc4\x93\x9a\x85\x33\x7d\x9f\xd5\x44\x8e\x84\xd5\xa9\x73\xdc\xe4\x00\x57\x2f\x38\x1e\x0f\x71\x91\x4c\x8f\x3d\x6f\x1c\x1e\x85\x56\xef\x4d\x9e\xdd\xdc\xfa\x19\x8c\x20\x2c\xfb\x9b\xac\xe0\xa7\x8e\x3f\x50\x5d\x2f\x5e\x67\x37\xea\xfc\x78\x3d\xcf\x59\xf5\xa0\xba\x8c\x67\xc4\x00\xe8\xe8\x02\x24\x22\x20\x77\xc6\x29\xfa\x0e\x4d\xd4\x4f\x1f\x2d\xb4\xb6\xc9\x3e\x9e\x34\xbc\x6d\x8c\x5f\xc9\x96\xa8\xe2\x20\x8c\x12\x95\x9b\x32\x0f\x47\xae\x88\x14\x4e\x24\xa7\x5d\x50\x48\xfc\x1b\x1b\xce\x8c\xb5\xe5\x74\xb9\x03\x3e\xff\x10\xfe\xbf\xcc\x30\x56\x2f\xed\xdc\x4c\xad\x70\x8f\x55\x7d\x01\xe7\x43\x84\x85\x1e\x59\x27\xd0\xd0\xa7\x8d\xd5\xbd\x96\x22\xca\x60\x45\x74\xc0\x54\x12\xa0\x48\x67\x0c\xed\x3c\x58\xc6\x53\x69\x86\xaa\x17\x14\xf2\x7d\xef\xd8\x49\x76\x38\xf1\x5b\x26\x2f\xa4\x3e\xc8\x82\x95\x09\x0d\xab\x62\xc3\xaa\x18\xa6\xed\xbe\x5c\x97\x21\x2d\xbe\xa1\x0d\xc8\x35\x6a\xbb\x15\x3b\xaa\x4a\xe8\xdd\xf7\x8e\x58\xf8\x2e\xb0\x8c\xa4\x36\xe6\xad\xbf\x44\xd4\x55\xd6\x6a\x28\xda\x16\xa7\xa4\x8b\x45\xa3\x4a\x54\x1c\x19\xd9\x31\xca\xc3\x35\x38\xbf\xd1\x5b\xa6\xe5\x1b\x4a\x13\x60\x8e\x9b\x18\xc0\x68\x69\x0e\x33\x76\xae\x71\x0a\x77\x5f\x43\x9f\x38\x6d\x87\x31\xe3\x93\x76\x0b\x56\x9a\x32\x02\xd2\x38\x61\x32\x59\x15\xdb\xb5\x53\x37\x68\x6b\x19\x75\x5c\x0d\xf3\x0e\xb1\x12\x28\x64\xb4\xb0\x98\x1e\x27\x8c\xbc\xe3\xad\x84\xa5\x5a\x90\x6e\xef\x5d\xb8\x0d\xf8\x3a\x1b\x9e\x2f\xcb\xca\x5f\x75\x6b\x57\x0c\xcf\xab\x1c\x6b\x01\xb1\xb9\x1d\xf4\x7d\x23\x3c\xeb\x74\x12\x30\x69\x93\xd8\x5c\x16\x5c\x26\x83\x2b\xa1\x2d\x74\xeb\x0c\x2d\x2b\xe2\x3c\x37\x16\xbe\xc7\xab\xe6\xb2\xe8\x8d\x3c\xeb\x2b\x99\xe7\x0e\x33\x54\xed\x87\xc7\x6d\x07\x06\x29\x00\xb3\x48\xce\xd0\x60\x5c\x5e\x99\xe7\x96\x04\x10\x80\x4e\xc4\x2b\x0e\x88\x7f\x4b\xd6\xe3\xad\x0e\xaa\xe8\xe0\x6d\x1e\x5e\xff\xea\x3c\x94\x99\xfe\xb7\x4e\x4b\xe5\xb1\x7c\x5f\xd6\xdc\xde\xca\x34\x89\xc2\x5f\xca\xdb\xd5\xdd\x75\x16\xc0\xeb\x58\x04\xf2\x72\x37\x03\x82\x5d\x53\xbd\x2a\x46\x1e\xe7\x50\x8a\x7e\x9f\xae\x40\x86\x8f\xc2\x3b\x01\xb6\x92\xa3\xf3\x11\xc2\xe1\x73\xfa\x7d\x7c\xac\x3b\x1d\xb9\x1a\x4a\x5d\xc5\xe9\xc6\x78\xb2\xba\x5b\xed\x2b\x2e\xdc\xe9\x19\xbd\xcc\x42\xbb\x41\x34\x4c\x70\x54\x03\x8e\x0d\xf2\x67\xee\x3d\x59\xa2\x10\x2c\xd6\xe4\xa1\x23\xce\x1e\xd1\x95\x0d\xf4\x5f\x62\x8a\x19\xe6\xb4\x27\xb2\x79\x09\x9e\xae\xe6\xed\x40\x74\xad\x60\x56\x6c\x78\x08\x3a\xe2\x23\xc4\x21\x37\x49\x36\x6f\xd3\x51\x25\xfd\x81\x13\x03\xd1\x32\xa2\x64\xc6\xe8\x08\x42\x16\x46\x3c\xa4\xea\x6e\x54\x71\xf8\x68\x94\x83\xe4\xb3\xea\x0f\xec\x3f\x32\x97\x38\x3c\x83\x95\x03\xc5\x21\x27\xe6\x90\x42\x44\xf4\x1c\x56\xd1\x3e\x30\xdd\xe7\xa7\x7d\x9b\xb2\x77\x60\xc9\x38\x35\xf3\xf9\xf3\x2d\x8d\xc8\xac\x09\x7b\x67\x66\x4d\x1d\xd1\x3a\x7b\x84\xf1\x4f\x0a\x6d\x61\x14\x52\x96\x09\x98\xfb\x70\x5e\x8a\x71\x36\x4f\x23\x7a\x13\xb2\x8e\x4c\xcc\x91\x76\x9d\x15\xd2\x62\xaf\x22\xb3\x96\x26\x83\x4c\xa3\x5a\x4a\xb4\xde\xfd\xd3\x49\xcf\x45\xb1\x38\xd4\x57\x98\x8b\x13\x6c\xe3\x0b\x10\x40\x4b\xfb\x03\x22\x84\x61\x92\xcb\x30\xba\xd5\x10\xc9\xa8\xe7\x85\xda\xb0\x61\x44\x28\x6e\x05\x28\xcf\xb3\x74\x24\x7b\x26\xd0\xd5\x62\x6a\x09\x93\x81\x39\x41\x35\x9b\x88\xaa\x45\x01\x43\x1c\x59\xe5\x11\x20\x3d\xe5\x2a\x88\x24\xf9\x7f\x5f\xe7\x31\x3c\x7d\xe3\x14\xc0\xfb\x50\x80\xb6\x49\x11\x2a\x88\xe8\x35\x31\xde\xb6\x3c\x63\x05\xa6\x1f\xbc\x17\x9c\x57\xed\x52\x3c\x87\xc0\x7d\xb6\xd8\x46\x88\xf4\x77\x94\x53\x04\x7a\x2d\xc4\x5f\x88\x55\x0f\x0a\x4c\x5a\x32\x0a\x53\xb4\x5c\xb3\xb4\x1e\xc0\x44\xe3\x6a\x22\x22\xea\x19\xaf\x49\xab\x82\x16\x06\xe8\x88\xdb\x6c\x0e\xed\xa3\x0c\x54\xe3\x25\xd8\x44\x60\x34\x7a\xbf\x55\x9c\x8a\xb8\xec\xd5\x80\xa7\x13\x6d\x80\x22\x2a\x9c\x69\x55\x56\x9a\xe5\x53\x90\xf1\x5a\xed\x63\x6d\xb8\x54\x9c\x15\x63\x1d\x91\x65\xa1\x17\xe6\x43\x65\x35\x71\xf1\xcf\x30\x89\xa3\xd7\xe1\xac\x45\x1d\x57\x1c\x25\x11\xfb\x34\xce\x69\x88\x07\xea\xaf\x99\xa4\x95\x91\x10\xde\x90\x24\x1d\x32\x2e\x27\xd2\x9a\x03\x92\x69\xe0\xa1\xcd\x30\x4b\xb8\x65\x66\xcc\x46\xaf\x79\xdf\xe6\x72\xec\x30\xab\x18\x13\x30\x97\xe3\x9e\xab\xaf\xb8\xa2\x7c\x90\xe3\xde\x55\x98\x98\xe7\x63\x4e\x61\xa9\xf8\xdd\x0e\x90\x6b\x32\xee\x09\xf6\x9c\xf0\x0d\xdf\xf8\xc6\x50\xc2\x7d\xde\x7b\xf5\x78\xf8\x6c\x7d\xea\x7d\x89\x82\xed\xc3\xc4\xba\x35\x91\xe0\x7e\xb9\xb5\x7b\xcf\xfa\xed\x88\x40\xaf\x7a\xe0\x08\x55\x5c\x11\xdd\x9a\x13\x68\x5e\xff\xd7\x28\xf6\x12\x66\xaa\xae\xf2\xcc\x9b\xad\x60\x73\xf5\x2a\xfa\xd3\xbd\xf7\x58\x4e\x1b\x95\x6d\x41\x0e\xaf\x2b\xf5\x58\xb0\x19\xcf\xe8\x96\xd4\xe2\x0e\x2e\x7a\xc2\xbb\xf2\x2a\x4c\x28\x04\x9e\x16\xa9\xf4\xfb\x62\x1a\xe6\x97\xc8\x08\x10\x47\xa8\x8e\xa4\x76\xab\x75\xf1\xa0\x07\xd5\x98\x19\x8a\x31\xdc\xb5\x6c\xb2\xce\x2f\xfc\x09\x54\x8d\x59\x6a\xaa\xfa\x9a\x07\xf9\xd2\xa4\xcd\x5a\x0e\x3e\x90\xba\xbd\x47\x00\xdf\xb3\x6c\x05\x05\xcb\xea\x44\x64\x2e\x2e\xa1\x1f\x6a\x13\xa6\xe5\x44\x93\xc0\xa2\x27\xfe\x9d\x68\x20\x49\xcf\x0d\x9b\x05\x71\x69\x32\x11\xa6\xb7\x22\x03\x02\x00\xd4\xd1\x4a\x4f\x8c\xcb\x8a\x28\x66\x72\x14\x87\x49\x72\xdb\x81\xce\x52\x89\x56\x67\x90\x48\xca\x19\x4c\x8c\xf3\x6c\x8a\x0b\x09\x47\x96\xb9\xbd\x38\xc9\x8b\x6a\x09\xeb\x6b\x66\x5d\xb9\x2a\x71\xf5\xc3\x9d\x7f\x49\xfa\x6a\xfb\x5e\x4e\x62\x5f\xdb\x88\x81\x5f\x96\xcc\x5a\x20\xfe\x44\x4a\x6b\x65\x40\xf5\x5a\x94\xd3\xf3\x8e\x48\x20\x35\x8a\xb1\xeb\x73\xe5\xa1\x26\x97\xbb\xaa\xd6\xed\x8a\x36\xb4\x3c\x85\x46\xe7\xbc\x19\x7d\x72\x85\x87\x3a\x71\x99\x46\x58\x48\x04\x83\xa8\x05\xf4\x95\x43\x64\x02\x7a\x70\xba\xce\x02\x20\x7d\x71\xb2\x6e\x76\xfa\x8b\x92\x76\x33\x0d\x8f\x64\x7b\x33\xf9\x64\x8a\x0d\x7c\x20\x91\xec\x53\xec\xd4\xe4\xbb\x54\x5b\xd3\x76\x28\x37\x45\x5e\xb2\x8d\xcc\x0a\x00\x39\xaf\x6b\x78\xff\x15\x68\x33\xe7\x38\xed\x33\xf9\x8b\xd2\x65\xa7\xdb\x85\xd4\xc9\x9a\xf9\xae\x4a\x9b\xdc\x44\x16\x5f\x92\x32\xe9\x9e\x97\xd3\x25\x23\x89\xfb\xb2\x54\x69\x81\x76\xe3\xf3\x68\x52\xbf\x2f\x4e\xb8\x55\x9b\x0d\xd9\x81\xd2\x03\xd0\xb2\x55\x37\x40\x77\x9b\x78\x8a\x51\xec\x7a\x31\xb1\xd3\x12\x23\xcf\x3c\xcc\x76\xa3\x16\x7f\x35\xda\x40\xab\xed\x50\x06\x87\x06\x34\x44\x22\x7e\x28\x2a\xb4\xd4\x4c\x75\xce\x1d\x97\x97\x75\xc7\x5b\xa6\xb4\xc5\x46\x24\x8b\xbb\x0a\x13\x47\x05\xdb\x00\x2c\x97\x27\xb9\x63\xff\xdf\xce\xeb\xd9\x20\x7c\x13\x1d\x3c\xe2\x4b\xd3\x13\xed\x4a\xf2\x50\x2e\x4f\x83\xf6\x25\xf8\x3c\x33\x4d\xb2\xf5\xf8\xbf\x8d\xcf\xdb\x19\x3d\x94\xcb\x73\xb3\xee\x7c\x49\x4a\xaa\x7b\x5e\x4e\x49\x09\xea\x2f\x4d\x49\x35\x00\x7f\x22\x77\xb7\x53\xb5\x87\xfd\xf3\x78\xbb\x0b\x59\x5a\x04\xb5\x39\x8e\x6a\x79\x3b\x16\x39\x89\x53\x1b\x27\xf8\xe5\x17\xe7\xef\x68\x9f\xbf\x28\x77\xc7\x26\xe2\xf1\x77\x95\xb9\x7c\x19\x0e\x4f\x77\xbb\x80\xc7\x33\x41\x3d\xbf\x0e\x97\x37\x8c\xd3\x48\xf1\x6e\xf6\x1a\x45\x7a\xa9\xe8\xf0\x34\x9c\xfd\xeb\x5f\xff\x62\xe9\x27\x52\x4d\x79\x44\x31\xca\x66\x32\xea\x00\xcd\x32\x17\x8d\x9c\x42\x86\xe2\x78\x3a\x33\x99\x15\x6b\xe9\xb6\x47\xa0\x9b\x89\x10\xba\x73\x19\x24\x88\x7e\x93\xc9\x0c\x79\xbb\x1a\xf2\xc3\xa4\xff\xe8\xee\xe2\x48\xd4\xe0\xaf\x9e\x9a\x2d\x78\x87\x71\xac\xe9\x50\x65\xce\x83\xd1\xdf\x8b\x1b\xb8\x8f\x49\xf3\x6b\x71\x23\x4e\x9f\xe8\xef\xfa\x06\xb0\x59\x64\x09\xa5\xf7\xeb\x40\x93\x24\x4d\xd3\xe1\xab\x43\xa8\x4e\x37\x3b\xe2\x69\x47\x3c\x3b\x6f\x8b\xed\xbf\x89\x53\xf1\x11\xb5\x78\x9b\x10\x2e\x7d\x20\x36\x51\x3b\x03\xdf\x9e\xd2\xb7\xa7\xec\xdb\x33\xfa\xf6\x4c\xdc\x8b\xf3\x6a\xef\x1f\x43\xe8\x6a\x08\x8d\x47\x03\xf1\xec\xde\x1d\x26\x08\x83\x9a\x81\x82\x61\x50\x33\x54\x30\x0a\x2a\x83\x39\x79\x95\xef\x08\x23\xcc\x44\x1b\x50\xc5\x20\x03\x07\x55\xb4\xa6\xe1\x8c\x5b\x1b\x71\x89\x41\x38\x6b\xfb\x3a\xc7\xd3\xf3\x33\xcf\x0f\xd6\xf5\xd6\x56\x6d\xb0\xc1\x73\x05\x8f\x17\x5a\xca\xd5\x3e\xb5\x68\x86\xe0\xce\x06\x33\x54\x77\x02\x6c\xa7\x89\x2e\xc5\x4d\x91\x54\xdf\x0f\xec\x70\x1a\xce\xf0\xda\xd0\xbd\x3a\xfa\x82\x7f\x62\x80\x32\xc5\x66\x49\xb8\xec\x30\x03\xf7\x34\x9c\x89\xb8\x10\x10\xbe\x4c\x5d\x7b\x69\x56\xfa\x09\xae\x2b\x4b\xfd\x4b\x96\x25\x32\x4c\x2b\x6b\x6d\x97\x93\xaf\x74\xe3\xd2\x89\xbb\x3b\x93\xc4\x97\xd6\xd2\xd3\x70\x40\x43\xc6\x78\xa1\x96\x4a\x94\xd7\x19\x91\x24\x45\x8b\xc3\x38\x65\x0c\x1e\xe6\x9f\x0d\x67\x3d\xc5\x70\x81\x99\x5f\xea\x1c\x10\xb7\x22\xe4\xf0\x55\x9f\xa1\xbb\xa0\xe0\xfe\x8f\x49\x42\xda\x4c\x13\x7c\xbc\xd2\x16\x06\x6a\x4a\xa5\x9e\xba\x8b\x66\x4a\x1a\x31\x94\x65\x7d\x33\xee\xed\x15\xff\x6b\x2e\x40\x33\x4b\xec\xc4\x2d\xb0\x50\xae\xb9\xc1\x0b\xf4\x15\x32\x05\xff\x64\x53\xcd\xdc\x5f\xdc\x51\x0b\xec\xc8\x85\x35\x71\x70\xee\xe9\xde\x68\x12\xe6\x3b\x65\xcb\xb7\xa8\x13\x5d\xb1\x89\x86\x6b\x41\x9f\x0f\xc8\x9e\x75\x50\x54\xa7\x05\x13\xe3\xd4\x9f\xdb\x19\xcf\x4c\x4c\x38\x71\x2c\xc3\x5c\xb1\xc7\xe6\xd6\x21\x16\xc1\x72\x21\xf0\xca\x34\x80\x29\xc0\xa9\x4a\x9a\x95\x42\xde\x40\xe6\xfa\x59\x1e\xa7\x25\x45\x9e\x9a\x62\x2e\x89\x5a\xed\x91\xe1\x6b\xaa\x17\xd6\x04\xee\x9d\x4f\xbf\xcb\xb8\xaa\xbb\xc2\xda\x58\x7f\x77\x18\xa5\x6a\x2b\xe9\x30\x47\x2b\x39\x84\x7d\x12\xb7\xed\x31\x4b\x4d\x4f\x52\xbd\xc0\x06\x7c\xb5\xd4\xa8\x31\x8e\x53\x7c\xa0\xe2\x44\x40\x5b\xdc\x6a\x0f\x3c\xb7\xb8\x76\x35\xe0\x80\xce\xd0\xa4\xd3\x52\xef\xe6\x32\x8a\xcb\x62\x20\x86\x59\x9e\x67\xd7\x90\xa6\x3f\xa2\x6d\x1f\x8f\xb2\xe9\xb0\x9f\xcb\x68\x7e\xd3\x4d\xb2\x8b\x0b\xb5\x2d\x6c\x81\x91\x63\x78\x05\x05\x9c\x33\xc7\x44\x7d\x72\xec\x25\xe9\x83\xf0\x9b\x1f\xef\x99\xef\x77\x92\x84\xb3\x42\x46\x26\x42\x3b\xfd\xa6\x6c\x00\xac\xdc\x49\xcf\xcf\x9a\x99\x37\x31\xa4\x0c\xc2\x08\xa5\xd8\x19\xfe\xa0\x9e\x74\x09\xef\xc6\xd4\xae\x73\x8f\x02\x2d\xcd\x2f\x10\xcc\x8b\x7e\xec\x8c\x4b\x27\x98\x21\x8c\xcc\xc2\x77\x96\x79\x98\x16\xe3\x2c\x9f\x1a\x08\xd8\x17\x02\xc3\xa9\xc3\x61\x71\x1b\x7b\xd6\x16\xbe\xa1\x05\x1f\x55\x43\x7c\x52\x19\xbd\xa6\x84\xa0\xa8\x6d\xc3\xa1\xa9\xef\xd4\x59\x26\x6e\x36\x3d\x2f\x39\x44\xf8\x74\x7b\xc9\xb7\x82\x7f\x22\x18\xdc\x5a\x7c\x70\xaf\x7d\xd5\x2b\xcc\x5f\x13\x7f\x23\xb0\x5e\x75\x41\x2a\xdf\x1d\x50\x1a\x17\xa3\xae\x3b\x07\x28\x06\x4a\x38\x72\x96\x22\xc9\x2e\xb8\xf6\x46\x01\xc1\x3f\xd1\xf8\x6e\x2d\x3e\xb4\xd7\xde\xc1\xf5\x24\xbb\xb0\x12\x03\xea\x99\x3e\xd8\x7e\x4d\x0d\xaf\x57\xdb\xd2\xef\xf3\xc2\x2c\x17\xfe\xb0\x7d\x5d\xf8\x0b\x63\x6a\x13\xed\x72\x0d\xd6\x39\x0e\x73\x9b\x33\x8c\xe9\x2e\xaf\xb4\xbd\x40\x24\xe5\x6c\x37\x9b\xdd\x72\x8b\x78\x6b\x35\xcd\xee\x5e\x06\x02\xcb\x9a\x52\x31\x55\x34\xf7\x9f\xed\x80\x2f\x23\x8f\x98\x82\x03\xda\xb8\x82\x4d\x64\xa0\xf2\x76\x4e\xe5\x4d\x59\x03\xbf\x03\xb9\x1e\x9c\xe2\x4f\xda\x2e\xcd\xe4\x3b\xb6\x1f\x3f\xae\x23\x10\x33\xc5\xbb\x94\xa5\x8c\x4e\x30\xb1\xe9\x85\x2c\x5f\xf2\x4f\x2d\xd7\x2f\xc4\x69\xc2\x12\x26\xd7\x9c\x65\x03\x4c\xb5\x07\xba\xb1\xc5\x36\x24\xbe\xa1\x4e\xd0\x34\x49\xff\x34\x2e\x2b\x0e\x80\xce\xbc\x41\x27\x9f\x97\x3a\x71\x15\xee\x5c\x47\x77\xde\xb1\x04\xdc\x05\x00\xeb\x29\xc4\x6b\x05\x7f\x1d\xc1\x42\xe1\x06\x04\x1d\x11\x8c\xb2\x24\xcb\x07\xe2\x2f\x3f\xee\xa9\xff\x6d\x89\x71\x96\x96\xdd\x6b\x19\x5f\x4c\x4a\x75\x73\x25\x51\xd0\xe1\x54\xb4\x65\x96\xb9\xbd\x70\x10\x3d\x2b\x3e\xc4\xc6\xb3\x9d\x1f\x5f\x7e\x5b\x3f\x44\x65\x89\x17\xf6\xae\x36\xb8\x3a\x85\x6f\x77\x77\x5e\x7e\xb7\xb1\x7c\x0a\x0c\x3d\x9c\x41\x64\x1a\xb9\x4b\xeb\xf9\x28\xdb\x1f\xfc\xa0\x99\xde\x6a\x83\x1e\x38\xa7\x65\x67\xb4\xe4\xac\x34\x7a\xec\x56\xcf\x8b\xea\x92\x93\x74\xaf\xea\x17\x46\x7c\x13\xdb\xb3\x42\xb5\x69\xdc\xc5\x28\x4f\xa2\x61\xf2\xcf\x1a\xfd\xa9\xe8\x8e\xc3\x3d\x18\x0f\x77\x6a\xa6\xb5\x0c\x41\xaa\xdb\x5f\x13\xb6\x82\xcf\x49\x2c\x9a\x14\x0b\x90\xca\x9b\x6c\xdb\x2a\xfa\x21\x4f\x33\xbe\xc8\xb3\xf9\x6c\xd7\x2d\x1c\x38\x85\x3c\x54\x45\x1a\xc1\x5b\x80\x47\xff\xe5\xe3\xa0\xd5\x8d\x07\x5e\x63\xdc\x6d\xb6\xe6\x6e\xd5\xaa\x6d\x71\xe4\xcd\x5d\x47\x65\xb3\x60\x70\x88\xf7\xd2\xa8\xb5\xca\xa8\xc1\xff\xf9\x5f\xff\xfb\xff\xfc\xaf\xff\xad\x3e\xa9\x31\x04\xfe\x0c\x1a\xa0\xf0\x51\xdf\x48\xa7\x81\xe1\xc4\xe3\xa1\x5e\xcf\x2f\x20\x0f\x08\x17\x3f\xb6\xce\x1e\x89\x9f\x4d\xd0\x8b\xa8\x05\x3e\x3f\x17\xb2\xfc\x2d\x9b\xe7\x45\xab\xdd\x11\x4f\x29\xe4\xc1\xa0\x5a\xe7\x75\x9c\xce\x4b\xb9\xac\xd6\xb1\x1c\x65\x69\xe4\xd4\xea\xd5\xf5\x95\x24\x71\x61\xab\x3e\x6b\xb7\x2b\x86\xc1\xb9\x9c\xc9\x10\xbc\xb3\xf3\x0e\xcc\xca\x8b\x00\xdc\x52\x53\x44\xd9\x06\x94\x8a\x75\xb1\xd9\x6e\x63\xec\x86\xa2\xcc\x2b\xfd\xcd\xc2\x48\xb4\xd2\xf9\x54\x3d\x75\x6f\x5e\xc1\xf3\xd9\xed\x10\x07\x6c\x05\x1b\x01\xab\x22\xba\x22\x9d\x4f\x7b\x65\x86\x6f\xcd\x56\x9b\x5e\xde\x6a\x6a\xe9\x7c\xca\x52\xfd\x41\x44\x36\xed\xfb\x0d\xd1\xbb\x06\x94\x67\xed\xcc\x46\x14\x1b\xe8\x3f\xe0\xe3\x95\xcc\x8b\x38\x4b\x07\x22\x78\xd6\xfb\xae\xb7\x19\x74\xea\x25\xa6\x4b\x44\x9d\x0b\x44\xa7\x0b\xe4\x9d\x50\xd4\x20\xdb\x1d\x34\x15\xb0\x46\xf8\xbc\x1b\x38\xbf\x74\xc4\x3e\x79\x03\xce\x6c\x91\x1c\x87\xf3\xa4\xc4\x95\xd9\x32\x9f\x3f\xea\xf4\x73\xbc\x69\xa7\x71\x48\xb3\x62\x1c\x78\x3e\x47\x77\x31\xac\xd5\xa9\x82\xe5\x51\xe7\x11\x44\x1f\x93\x49\xf2\x8f\x34\xbb\x4e\x8f\x6f\xa7\xc3\x0c\x35\x40\x90\x4e\xaf\x15\xf4\x7a\x7d\x9d\x2c\xae\xe8\xab\x7a\x5d\xd0\xf6\x76\x0b\xa8\x09\x47\xd0\x4a\xc1\x1b\x1b\x52\x82\x09\xac\x65\x1a\xb9\xee\x73\x26\x22\xe6\xc2\x2e\xb0\x4d\x57\xfb\xf5\x05\x6d\x93\xf3\xe8\xed\xc1\xf1\xee\xe1\x9b\x9d\x5f\x5e\xed\x1d\x8b\x6d\x7f\x4a\xad\x60\x9e\x16\xa3\x6c\x16\x0e\x13\x59\x18\x00\xe0\x78\xbc\xd1\x51\x11\xc5\x36\xc9\x04\x4d\x9c\xc4\x2d\x7a\xec\x7b\x9f\x4f\x7f\xfe\x99\xf5\x76\x0e\x55\x26\x65\x39\x2b\x06\xfd\x7e\x39\x7a\xf6\x63\xef\x22\x2e\x27\xf3\x61\x2f\xce\xfa\x72\x34\x0d\x9f\x7e\xff\xb4\xff\x97\x42\x8e\xba\xa1\xdb\x4d\xd7\xe9\xe6\x2c\x55\x97\xbe\x0b\xd1\x29\x9b\xd3\xb9\xe0\xb9\xa4\xe8\x68\xd6\xad\x60\x6f\xec\xf5\xd2\xe1\x4b\xd3\x61\xb2\x13\x2f\x01\x54\x47\xbf\x35\x92\xb9\xd4\x88\x8b\x61\xea\xce\xdc\xe0\x14\x7d\x4a\xc3\x7c\x29\x21\xf9\xc4\xb2\xd5\x21\x35\x15\xa2\xb7\xab\x18\xb1\xf1\x33\x16\x4c\x5c\xab\x1e\xe9\xd5\x45\x78\x1b\x60\x62\xa7\x3c\x1e\x95\x01\x6d\xe7\x37\x8d\xc8\x83\x63\x9b\x7d\xff\x66\x1c\xa7\x51\x63\x65\xd8\xa6\x2e\xa6\xd2\x00\xd1\x53\x4f\x55\xa7\xa6\x61\x14\x9d\x64\x6f\xed\xfc\x9a\x7b\x89\xa2\x6e\x99\x75\xeb\xd0\x0e\x06\x78\x0d\x96\x68\x6f\x0b\x59\x9c\x64\x44\x4b\x17\x03\x84\xa6\x6b\xdd\x79\x21\x0b\xd5\x31\xd2\x59\x86\xff\x2f\xf7\x0f\x5e\x88\x6d\x11\x28\x60\xf5\x8a\x1c\xff\x63\xff\xcd\xf1\xbb\xdf\x0e\xf1\x4c\xd0\x02\xd2\x71\x39\xde\x3b\x7e\x77\x72\xf8\xee\xd5\xde\xc1\xaf\x27\xbf\x81\xae\xb5\x16\xaa\x96\xea\xb7\xad\x4f\xc2\x31\x38\x15\xa4\x41\x89\x7e\xc6\x93\xcc\x60\x2e\x0c\x1f\xa7\xe2\xf4\xbc\x4d\xd7\xce\x66\xfb\x54\x7d\x3c\xf7\x7c\x88\x5c\x98\x30\xc9\xa4\xf6\xdc\xee\xf7\xc5\x7b\x0f\x9d\x60\xf1\xdf\x93\xe1\xde\xa7\x1e\x35\xe8\xe4\x2c\xfd\xa6\xf5\x91\x7c\xa2\x07\x22\x80\x71\x02\x8a\x8a\xaa\xbd\x80\x20\xa6\x5a\x34\x70\x80\xbc\xbb\x13\x6b\xde\x6a\xdd\xd3\x31\x52\xdd\x32\x77\x5e\xf5\xb3\xa5\x58\xab\x61\x38\xba\x1c\xa7\xa2\xff\x44\x74\x44\x39\x09\x4b\xc1\xd3\xc0\x3d\xe9\xfb\x7a\x1d\xc0\x47\xd2\xb7\xda\xe6\x9d\x8a\xd6\x5c\xfc\x4d\x6c\x8a\xe7\x4c\x2b\xbe\x79\x2e\x06\x8c\x28\x18\x7e\xc8\xac\xe6\x17\x20\x4b\x3e\xc6\x1b\x84\xf8\xdc\x43\x48\x31\x5a\x97\x9d\xc3\x74\x94\xcc\x23\x75\x7a\x74\x50\xd7\xea\x29\xda\x2f\x8e\x75\x4a\xc6\x15\x4e\x50\x5c\x74\x09\xe4\xaf\x7b\x20\xd3\xb0\x8c\xaf\xe4\xbe\x99\xe5\xe9\x39\x9b\x01\x56\x39\xd8\xfb\x75\xe7\x64\xff\x9f\x7b\xef\xfe\xe7\xde\xd1\xa1\xd8\x16\x6b\x6b\x6e\xa3\xc7\x8f\xc5\xa6\xe8\x8b\xd3\x4d\xd3\xb4\xb5\xd9\x11\xdd\x0d\x08\xb4\xab\xcf\xf8\xc9\xd1\xfe\xee\xc9\xbb\xd7\x7b\x27\xbf\x1d\xbe\x70\xcf\xb1\x5e\x97\x56\x40\xad\xcd\x8c\x57\x3e\xfd\xa6\x65\x47\x7c\x14\x3b\xbb\xbb\x7b\xc7\xc7\x87\x47\xc7\xfa\xb8\x6c\x0e\xc4\xc6\xa2\xb3\x4b\x8d\x3f\xfb\xf8\x42\x3f\xd9\xf8\x21\x27\xd8\x5d\x5a\x75\x86\xdd\x85\x5a\x70\xaa\x09\xea\x01\xb7\x2a\xc0\xc5\x2f\x40\xdb\xb3\x97\x48\x75\xfc\xf0\x78\x8f\xf3\x6c\xba\x4f\xbc\xed\x46\xcd\xd9\x76\xe0\x60\xc6\x2b\xa3\x2c\xbd\x92\x79\x29\xba\x1b\xea\x0e\x5d\xdf\xd0\x45\xcf\x5d\xbc\x71\x6c\x31\xcc\xc1\x07\x55\xa5\x69\x32\x30\x67\x49\x3b\x52\x70\x30\x3f\x93\x8c\x3c\xea\x3c\xaa\x5c\xe0\xfa\x54\x9c\x3d\xca\x25\x04\x8c\x0e\xcb\x2c\xef\xe6\xf3\x54\xbd\x34\xd0\xd1\xf2\x51\xe7\x11\xb3\x3e\xbb\x4d\x47\xbf\xea\x7a\xc7\xa5\x9c\xb5\x2e\x64\xda\x11\x5e\x1e\xa2\x8e\x78\x97\xca\x1b\xf5\x0f\xf8\x37\x53\xa4\xd5\x30\xbf\xa8\x3e\x22\xf1\x41\x31\xce\x40\xd0\x91\x02\x83\xd0\x52\x15\x5d\x4b\x26\x70\x5f\x53\xd5\x7a\xf0\xc3\x7b\x68\x3a\x79\x72\xea\xb2\xb3\xe0\x06\xfa\xce\x8e\xd0\x5f\x94\xa5\xdc\x21\x18\x1d\xc5\x31\xeb\x39\x8d\xc2\xfd\xb0\x7d\x8f\x72\xac\x88\x79\x96\x9c\x29\x37\x3c\x68\xdf\xc1\x02\x9e\x64\x66\x09\x17\xa8\x63\x1d\x91\x71\x21\x13\x9d\xfd\x97\xc5\x91\x20\xe3\x2c\xb3\xfd\xce\x74\x1f\x98\x32\x4a\x7b\x44\x41\x66\x98\x94\x90\x55\x0d\x0b\x1b\xe7\x44\xf2\xb0\xd3\x51\x53\xa6\x45\xe0\x82\xac\x4f\x45\x93\xb3\x47\xea\xf7\xd9\x23\x4a\xb6\xdf\xe6\xf6\x4f\xd5\xc1\xa1\x51\xc5\x0d\xff\xd3\xc7\x86\x3f\xd4\xe0\x8e\x8f\x3e\x1b\x1a\xa7\xeb\x9d\x2e\x1b\xcf\x50\x73\xd5\x95\x43\x56\xd9\xf5\xad\x47\x9d\x47\x5a\xed\xbc\x03\x2e\xb4\x05\xd8\x4e\x50\xbe\x0d\x34\x9f\xa0\xc0\x43\x71\x21\xe4\x74\x06\xd9\x75\xab\x4a\xe4\x6c\xf8\x81\x4c\x3b\x14\xe9\x81\xa8\x43\x72\x74\x09\x42\x25\xa3\x1e\x2e\x2a\x56\x15\xf4\x3c\x65\xc6\x15\xd8\xc7\x9e\x1a\x47\xb4\xb2\xe1\x07\x17\x27\xb9\xf1\x88\x2a\xd4\xc4\x67\x7b\x5b\x11\xca\xc7\x8f\x15\x18\xbd\x51\x96\x16\x65\x3e\x1f\x95\x19\x2a\x29\x0e\xc9\x22\xeb\xbe\x8e\xbd\x58\xf4\x94\x00\xf3\x24\x9d\xe4\x68\xc7\xd0\x8c\x4a\x14\xe9\x3c\x9c\xb9\x67\x84\x4e\x83\x95\x96\xf8\xd4\x52\x6f\xd8\x38\xcb\x45\x4b\x07\x99\xdf\xd8\x12\xb1\xf8\x09\xa3\x6f\x91\x45\xa3\x88\xd7\xd7\xb9\x13\x7b\x7e\x51\x9c\xc6\xae\x11\x63\x7c\xde\x60\x69\xc0\xa8\xfc\x4e\x7e\x61\xcf\x0e\xe1\x47\x2d\xb3\x85\x17\xf9\xd0\x7f\xc9\xf4\x51\xb3\x5d\xf4\x55\x49\xa0\x4d\xe9\x74\x94\x2c\x92\xd3\x0c\xd4\x5d\xa9\x36\x15\x6e\xe4\x79\x19\x27\x85\x42\x99\x50\x24\xf1\x30\x0f\xf3\x5b\x01\x99\x89\x20\x13\x80\xd6\x94\xeb\x25\x2c\x44\x9a\xa5\x5d\xb0\x76\x18\xc7\x23\x85\x40\xe1\x4d\x9c\x15\x1a\x1e\x3d\x82\x8d\x77\x6e\x6f\x71\x5d\xe6\x98\x8b\xbd\x50\x08\x3c\x8d\x53\x30\xe9\x08\x89\x6c\x2b\x58\xc8\x42\x47\x55\xaa\xc5\xe2\xab\x30\x01\xfb\x7e\x6c\x51\x66\xa2\x94\x45\xe9\xa1\xf0\x90\x50\x58\x9c\xe4\x73\x18\xa0\xd2\x7d\x07\xed\x98\xaf\xe3\x42\xe2\x5b\xa4\x6a\x43\x84\x68\x71\x65\x02\x5f\x68\x0d\x2a\xcd\x06\x65\xa9\x50\x0c\x6a\xb6\x53\x3a\x82\xd0\xec\x3c\xf0\xdd\xa4\x9b\xe6\x6b\x08\xc4\x97\x9d\x70\x69\x1a\xf0\x31\x56\x98\xf5\x5b\x5d\xb7\x66\xe6\x9e\x1d\xa9\x55\x2c\xae\x3a\xd9\x50\xfc\x32\x1f\x8f\xd1\x5c\xe5\x6b\x6c\x2e\x75\xbf\xc2\x34\xb1\x62\x75\x8e\x0a\x00\x88\x78\x35\x4f\x12\x32\xf4\xf6\x56\xe4\xf1\x63\xf4\x5f\x65\x14\x6c\x51\x03\x5e\x91\x0c\xec\x28\x32\x03\x2e\x25\x2f\xef\x69\xb8\xfc\x64\x69\xd5\x31\x7b\xce\x14\x56\x5e\x7f\xc2\xfe\xaf\xbb\x0b\xce\x20\xab\x1e\xb4\xa6\x0d\x59\xe9\xb8\x61\xe3\xd5\x0f\x5d\x28\x5e\x66\xf9\xf4\x45\x58\x86\x5f\x6f\x0d\xf4\x08\x2b\x2c\x80\xae\x5a\x9d\xbd\xd6\xe7\xeb\x1a\x68\x1f\xc5\x35\xfa\x8f\x1f\x0b\x72\xe5\xc1\xa4\x00\xac\xf2\xea\x68\x21\xae\x62\x79\x2d\xc0\xcf\xe3\xcf\x40\x90\x86\xe1\x1e\x86\x2a\xff\x8c\xe5\x35\x5b\x30\x9b\x85\xd5\x5a\x98\xd1\xe2\xb1\x46\xf5\xeb\xc7\x2a\xf4\xe2\x42\x75\xcc\x4d\x70\x29\xb3\x6b\xb5\x92\x3e\x7a\x3e\xdf\x6f\x9a\x18\x82\x01\x84\x60\x08\x6d\xfd\xdf\x7c\xe3\xd8\x10\x55\x4b\x34\x33\xb9\x15\xb7\x14\x8f\xcd\x57\xdb\x42\xec\x7e\x85\x2d\x23\x0d\xd1\xd2\xdb\x84\xec\x43\x57\x9f\xe0\xc1\x7c\x3a\xfc\x8a\x38\x8a\xdd\xaf\x30\x41\xac\xb8\x7c\x82\x29\xd4\x5b\x7d\x82\xa9\xe1\x8a\xbf\x16\x89\xc2\x8e\x56\x98\x22\xd9\x46\x2f\xbd\x2d\xfd\x29\x23\x8d\x7e\xc0\x9e\xbe\xa0\x50\xd6\x5f\x65\x47\x5f\x80\x1d\xd1\xd2\xc9\x82\x7e\xf8\xc1\xf7\x90\x6a\xf5\xa0\x0b\x28\x4e\xbe\xde\x4c\x55\xe7\xab\xdc\x3b\x71\xf2\x09\x33\x55\xad\x1e\x32\xd3\x5f\x92\x6c\xf8\xf5\x18\xbe\x24\x1b\xae\xc2\xee\x25\xd9\xf0\xe1\x33\x55\xad\x1e\xb4\xa7\x34\xe0\xd7\xdb\x57\x1a\x60\x95\xbd\xa5\x3f\x3f\x61\x7f\xa9\xe5\x43\x66\x7e\x5c\xe6\x32\x9c\x7e\xcd\xcb\x46\x86\xd3\xd5\x2e\x1b\x19\x4e\xab\x73\x76\x49\xd8\xe3\xc7\xde\x02\xf5\x66\xf1\xac\x1a\xd9\xaa\x79\xba\x6f\x8f\x5e\xa1\x03\xc0\x1b\x74\x65\xcd\xbe\x2a\xa1\x6e\x18\x6e\x95\xc7\x9c\xdb\xb0\xf1\x8e\xf2\x07\xf0\xb8\x24\x7a\x7f\x70\x56\xc5\x6b\xe1\x2f\xdd\x49\x1e\x4f\x85\xbc\x19\x41\xfa\xa9\x49\x5c\x92\x3d\x7e\x36\xc6\x97\xe9\x50\x5e\xc4\x69\x0a\x01\xde\xd2\x08\x4c\x7b\xb2\xb1\x49\x2b\x59\x59\x46\xed\xcf\x50\x94\x39\x2c\x23\x49\x1a\xd4\x3a\xe6\xf1\xd4\x5b\x47\x5d\x99\x55\x1c\xe7\x52\xc2\x08\x15\x80\xfc\x15\x53\xfd\x81\x95\x8c\xb3\x48\x45\x99\xeb\x2c\xc7\xad\xfe\x7f\x9c\x9d\x15\x4f\xfa\x1d\x11\x04\x6d\xfb\x51\x7d\xfb\x06\x3f\x2e\x44\xa2\x6b\x19\xe4\x52\xe4\x73\x9c\x7b\x9c\xc2\x9c\xc3\x34\x0a\xf3\x48\x0c\xf3\xec\xba\x90\x39\xcf\x63\x66\x56\xe2\x64\xa2\xf0\x20\x49\xb2\xeb\x02\xc5\x2e\x90\x29\x6d\x9e\x62\x17\xd7\x72\x28\xae\xb3\xfc\x52\x71\x2b\xe8\xf4\x18\x8e\xca\x2e\xaa\x13\xd0\x9d\xe4\x97\xac\x9c\xf0\x8e\x0b\x48\x0e\x96\xe5\xa5\xf8\xd7\xeb\x57\xbf\x95\xe5\xec\x48\xfe\xe7\x5c\x16\x25\xc6\xd8\x03\xaf\x89\x79\x92\xdc\x5a\xe0\x50\x8e\x54\xf4\x0c\x44\x76\xcc\x62\x00\x1f\x34\x2a\x5d\xc7\x69\x94\x5d\x8b\xee\xdf\x5c\xc9\x86\x29\x8f\xb2\x11\x48\xc5\x2a\x35\xa0\x16\x07\x9d\xfa\x4d\xc3\xab\xf8\x22\x54\x4f\x5e\x72\x0b\x51\x2d\x83\x23\x55\xf1\x00\xea\x05\xe8\x0a\x08\x7f\x17\xa3\x3c\x9e\x95\x8b\x1a\x62\x9b\x63\xa8\x17\x88\x2c\x17\xc1\xc1\x71\x50\x47\x48\x70\xe6\xbf\xe0\xae\xec\xa5\x57\x2d\xe6\xae\x61\x3c\x9c\x68\x84\xba\x03\xd3\xaa\x8e\x0f\x64\x96\x43\x2e\xee\xee\xb8\x29\xe2\xd2\xff\x1a\xba\x74\xe7\xf4\x85\xfa\x3c\x0e\x2a\x7e\x88\xa8\xb4\xf7\x1f\x26\x14\xa4\xd0\xdd\xff\xea\x82\x38\xb5\x0c\x16\x78\xf5\x54\xa5\xca\x11\xda\x07\x93\x0c\x09\xb9\x8b\xea\x5d\xe3\x45\x9c\x5e\x65\x97\x40\x4f\x98\x56\x3e\xcb\x85\x0c\x47\x13\x88\x9e\x60\x31\x77\x7f\x2c\xde\x67\xc3\x0f\xef\xb9\xa8\xc2\x68\xdf\x6d\x40\x7e\x8c\x9d\x38\x0b\x8b\x82\x48\x92\x15\xa9\x75\x50\x2f\x88\x87\x6d\x94\x4d\x67\x89\x2c\x25\x6a\x52\x17\x0c\xaa\x98\xe1\xc0\x61\xbc\x1f\x3a\x2a\xea\xc5\xf8\x98\x74\x63\x9b\x41\xb5\x79\x54\xaf\xe1\x2a\xd2\x21\x26\xb2\xe1\x07\x20\x90\x99\xd1\x06\xa0\xd9\x8b\x6c\xf4\x21\x84\xea\x06\x5e\xd5\x40\xad\xb8\x74\xe7\xeb\x1f\x23\x1d\x8f\x20\x1b\x7e\xe8\x08\xa3\xbb\xea\xf7\xc5\x8b\x2c\x0d\x4a\x31\xc4\x50\x12\xf1\x58\xa4\x19\x5d\x77\xb3\x3c\xbb\x8a\x29\x15\x21\xe4\xd1\x1b\x7e\x00\x74\x84\x07\xc6\xdd\x9d\x46\x1f\xfd\xb9\xce\xb7\xa1\xaa\xbe\xeb\xf7\xc5\x4b\xc8\x99\x17\xa6\xb4\x4b\x30\x64\x69\x62\x69\xda\xb0\x8e\xb0\x0c\xc3\x44\x7a\x07\x5d\x8d\xb7\xc6\x1e\x34\x66\xb0\xfe\x13\x59\x24\x71\xaa\x68\x66\x17\x56\xad\x9b\x4b\xb5\x79\x17\xe9\x60\x43\x2d\x85\xaa\x03\xc0\x0a\xc5\x5d\x9d\x57\x94\x8a\x24\x64\xce\x86\x1f\xec\x61\xeb\xf7\x3d\x8c\x07\x90\x61\x7d\x8a\x3a\x95\x44\x47\x24\x62\x1b\xb4\x2a\x46\x23\x21\x7e\x12\x89\xaf\x98\x18\xa7\xc8\xf0\xa1\x2f\x77\x36\xfc\x70\x1a\x9f\x77\x44\x0c\x7f\xba\xc6\xcd\x8e\x30\xc3\x87\x86\x50\xe6\x52\xde\xfa\xc0\x5c\xca\x5b\x75\x1f\x59\x85\x90\x20\x8b\xf6\x8a\x42\x60\x12\x16\x87\xd7\xa9\x36\x5f\x43\xb0\x00\x47\x2e\xe5\xad\x6b\xe4\x5e\x05\xfa\x52\xde\x9e\xd3\x51\x60\x80\x0b\x37\x1f\x84\x47\x40\x76\x20\xd6\x49\x21\xae\xc2\x1c\xd4\x3e\xe8\xbe\xab\xf6\x1b\x50\x57\x2b\x6a\x48\x2b\x16\xa6\x86\xc1\x2a\x27\x12\xbd\x67\xe3\xe9\x74\x5e\x86\xc3\xe4\x56\x4c\x65\x7e\x21\x31\xac\xca\xcc\xe4\xe3\x00\xe6\x42\x75\x45\xab\x63\x43\x0f\x14\x24\xb7\xb1\x27\xf2\xf7\x09\x44\x22\x4a\xca\xd8\x86\x22\x28\xb4\x03\xb1\xcd\xc1\x06\x46\x76\x13\x29\x92\xb0\xb4\xab\x1e\xa7\x86\x26\xd8\x6c\xa8\x49\x5c\x90\x87\x71\x19\x5e\x42\xae\xd5\x91\x8c\x64\x3a\x92\x76\xcc\xbd\x9b\x50\x51\x8c\x81\xf9\xf0\xfe\xfd\xfb\x0f\x18\xb1\xca\xca\xcd\xc4\x36\x4e\xae\xf5\x71\x9c\x65\x03\xb1\xf9\xf4\xd9\x7d\x47\xe0\xdf\xdf\x7e\xf7\x3d\xea\x2d\x9f\x18\xdf\xcb\x24\xbb\x68\xd1\xd4\xc6\x59\xd6\xde\x52\x88\x92\xcd\xcb\xd9\xbc\x2c\x54\x75\x3d\x4a\x23\x4f\x9c\x0d\x3f\x6c\x32\x6d\x24\x8c\xec\xb1\x72\xba\xea\x11\x82\xa7\x58\xc4\x24\xc1\x9a\x6c\xed\x7d\xa2\x83\x73\xe8\x3f\x81\x11\x00\x49\x9e\xc2\xff\x3f\xeb\x88\x5e\xaf\x67\x2d\x35\x9c\x89\xeb\x6c\xba\xd6\x74\x41\x9d\x61\xcc\xaa\x7b\x15\x26\x5e\xc6\x2f\x4b\x18\xb0\x03\xb2\x54\x64\x04\x62\x81\x30\xc4\x0d\x3c\x6f\x5b\x13\xe0\xec\x1b\x28\xb6\xdb\xae\xff\x73\x43\x5b\x1b\xa4\xea\x9e\x91\x98\x3a\x3a\x51\x89\xc8\x52\x47\x2d\x34\xe1\xe6\x2a\xcc\x0e\x5f\x94\x55\xc5\x93\x2f\x8d\x8b\xc0\x7f\xce\x31\xbf\x2f\x6e\x9f\xc9\x37\x18\xc5\xe3\xb1\xcc\x15\xb6\x8a\xa1\xc4\x40\x6d\xa1\xa2\xa6\x22\x97\xf4\x1d\x31\x3e\x13\x59\x1e\x5f\xc4\x69\x98\x98\x23\x13\x17\xe2\x52\xce\xd8\xc9\xfa\xb9\x90\x92\x23\xd2\x9f\x85\x71\x91\x94\xb3\xd7\xff\xaf\x62\x9d\x05\x7e\x09\xe6\xb1\xf1\x3f\xa1\xf3\x8f\xf7\xff\x0d\xb0\x79\xef\xa6\x94\x69\x54\x18\x2a\x2f\x86\xb7\x42\xdf\x0b\x61\x14\xd1\xa3\x34\x2e\x6b\x6e\x07\x6a\x32\x6c\xe2\xcc\xee\x45\xe8\x71\x64\x43\x29\x24\x8c\xa7\x0d\x34\xbc\xfa\x43\xaf\xfe\x28\x9b\xdd\xf2\x41\xc7\x79\x36\xad\x6d\x48\xd6\x06\xfe\x70\x71\x6a\x43\x70\x89\x32\x3b\xab\x8b\x19\x00\x6d\x70\x6d\xd4\x64\x91\x67\xb3\xb3\x0b\xfd\x93\x81\x13\x68\x85\x1d\x31\xf4\x2d\x34\xf4\xa6\x0c\x3b\x0f\xc1\x7f\x02\xbd\x06\xcf\x8d\xb2\x94\xdb\x62\x68\x84\x02\x2b\x11\xe8\x51\x03\xd1\x80\x87\x61\x13\x0a\x3a\xfe\x42\x61\xa3\xf1\x0e\xbe\x10\x91\xab\x1b\xe8\x3f\x3a\xec\x23\x6a\x77\x06\xee\x4f\xaa\x60\xcb\x9c\xcf\x5a\x9d\x37\x60\x7f\x57\xbb\xfc\x67\x2c\xaf\x07\xd5\x4f\x54\x91\xcc\x3f\xcc\x5f\xf4\x19\x55\x17\x03\xf3\x17\x7d\xc6\xdd\x1e\x98\xbf\xe8\xb3\xd1\x6b\x0f\xf8\x0f\x2a\x7c\x01\xbe\x39\xf8\xaf\x06\x3c\x4e\xe0\x13\x48\xa3\x69\x8a\x49\x36\x1c\xd0\xbf\xba\x16\x6d\xdc\x80\xfd\x6d\xa1\x96\xe1\x74\x60\xfe\xd2\x70\xb8\xb2\xa7\x41\xf5\x93\x69\xef\x3f\xe2\x07\xb5\x5f\x3b\x0c\x21\x07\xfa\x0f\x74\x12\x52\xc4\x6b\x80\xff\xc0\x07\x43\xd1\x06\xf6\x4f\x28\x40\x54\x1f\xd0\xbf\xf0\xa9\xcc\xe3\xe9\x80\x64\x54\x8b\x6c\x79\xd0\x0e\xc7\x31\xe6\xe9\xf5\xfa\xf0\x95\x0c\x79\x98\xa7\xdd\x28\x8b\x6a\x64\xf6\xf8\xfd\xed\xd1\xfe\x6e\x36\x9d\x65\xa9\x4c\x51\xd2\xd9\xd3\x4f\x22\x92\x53\xfd\xf5\xdb\x8d\xfe\x45\xdc\x11\xc1\xcf\x41\xb5\xec\xd9\x0e\x96\x0d\x6a\xca\x9e\x7e\xdb\xbf\xe8\x88\xe0\x9b\xba\xa2\x5d\x6c\xd6\xa9\x2b\xdb\x80\x66\xeb\x35\x45\xdf\xfd\x82\xcd\x4e\xeb\xca\x5e\x60\xd9\x79\x55\x9c\xf6\xcb\x3c\x4e\x22\x14\x89\x42\x02\xe3\xd9\x4c\x62\x90\x30\x0a\x2a\x48\x99\xc2\x64\x5a\xb5\xa7\x29\x48\x32\x38\xcf\x51\x1a\x3b\x0c\x0b\x20\x5e\x90\x08\x3f\x4f\x44\x4b\xf6\x2e\x7a\x1d\xb0\x53\x1e\xf4\xfb\xd7\xd7\xd7\xbd\x8b\x2c\xbb\x80\x40\x6b\xd3\xb6\xd3\x53\x46\xd4\xf0\x14\x07\x3d\x87\xee\x2c\x00\xea\x0d\x01\x70\x55\x4c\xeb\x0a\x26\x9c\x34\x4e\xa9\x6a\x70\x22\x9c\x0b\xec\xdc\xd4\xbc\xdf\x1e\xbd\x6a\xcd\xf3\xa4\x43\x63\xe9\x7f\x8f\x65\x1e\x43\xe0\x1e\x2d\xb7\x5c\xfe\x2a\x85\xa8\x53\xd8\xda\x17\xf2\xcc\xf3\x84\x3f\x53\xd1\x9e\x94\x06\x88\x8c\xb4\x17\xbb\x68\x18\x5f\x54\x5a\x40\xc2\x11\xb7\x2e\x35\x76\x14\xe8\xaa\x4f\xc0\xfb\x5e\x55\x76\x4d\xd5\x97\x0f\xc1\xbc\x12\x6b\x94\xf3\x94\x4f\xbc\xc4\x38\x85\xc6\x4e\x15\x47\xd5\x97\x92\x5e\x5f\xeb\xdf\xab\x07\xab\xde\x4b\xb8\x12\xfa\x1e\xf2\x04\x15\x35\xb6\x52\x35\xc1\x5c\xeb\xcc\x47\xf9\x52\x58\x4b\x34\xa7\x31\x06\x73\x54\xff\xbf\x2e\x82\xd3\xf3\xc0\x76\xe3\xdd\x6a\x3a\xac\x2d\xc4\xe4\xab\x1b\xcc\x9d\x3d\x4c\x91\x39\x88\xe6\x85\xa4\x3b\xb9\xe2\xac\xae\x21\x44\x9d\x69\xc5\x41\x5d\x5d\xa4\xbd\x32\xdb\x3f\x3e\x74\x76\xc4\x81\x92\x77\xa3\x95\x34\x75\x1d\xfd\xfd\xf8\xf0\xa0\x87\x07\x28\x1e\xdf\xb6\xae\x6a\xdd\xb4\x05\xee\x2d\x26\x45\x23\x62\x09\x9b\xb5\x2e\x82\xed\x40\xac\x1b\x02\xca\xa2\x04\xb8\x79\xf4\x16\x21\x57\x59\x50\x0e\xf4\xc7\x41\xdb\x17\xe5\xf8\x2d\x1c\x63\xd3\x49\x58\x4c\xa6\x61\x7e\xa9\x1d\x06\xe6\x79\x62\x1c\x3b\x82\xbf\x04\x3c\x4d\x99\x5b\x75\x6d\x7b\x5b\x74\x37\xd9\x6a\x28\x42\x85\xed\x4d\xaa\x46\xa7\x45\x25\x4a\x81\x6a\xb0\xbe\x2d\x5a\xce\x90\xcf\x03\xd4\xf9\x75\x37\xc5\x73\x11\x3c\x0f\xc4\x40\xa8\x39\x89\xf5\xfa\xa3\xee\x66\xd3\x41\x02\xf1\x85\x2e\xb4\xfd\xb4\x94\xf9\x48\xce\xca\x2c\x7f\x1d\xa6\xe1\x85\xcc\xb5\x9c\x1d\xa2\x49\xea\x34\x4e\xfa\xb0\xba\x62\x1d\xf0\x46\x4c\xe5\xb5\x88\x6d\x2f\xfa\x06\x28\xca\x70\x74\x59\xb9\x03\x98\x48\x73\x9e\x8c\x63\x90\xb6\x02\x31\xb6\x8c\xaf\x0e\xb6\xf6\xbe\x9c\xc8\xf4\x3d\xbc\x3a\x42\xf1\x9e\x4c\xe3\xdf\x37\xf4\x86\x66\xe2\x0b\x3a\xc3\x0a\xb5\xdd\xb9\x9c\x36\x32\x62\xf7\x62\x27\x15\xfb\x2f\xc4\xbc\xc0\xf0\xb9\xb9\x9c\x66\x57\xd2\x99\x27\x08\x86\xe8\xde\xa8\xae\x22\x93\xb6\xa9\x1d\x62\x37\xc9\x1c\x0c\xfc\x69\xf2\x1d\x03\x79\xdd\xaa\xe3\x31\xd2\xaf\x28\xdd\x66\x60\xff\xec\x9c\x31\x2f\x0a\x55\xa2\xff\xaa\xf2\xcc\x6e\xc7\x36\x4e\xdb\x96\xf6\x8e\xb6\xd1\xf6\x60\xaa\x61\xea\xcc\xd6\x04\x0b\xae\xdf\x57\xbd\x6a\x31\xee\xc0\xfe\x0b\x94\x23\x5c\x87\x05\x8d\x8f\x51\xbf\xdf\xcf\x69\xcd\x97\xad\x19\x4c\x83\xaf\x1a\xfa\x89\xc4\x11\x57\x02\xf1\x19\x9d\xc6\x91\x4d\x7d\x57\x29\x11\x78\x31\x18\x37\x8f\xad\x66\xf5\x46\x92\xc0\x34\x75\x66\x3e\x19\xf1\x65\x28\x5c\x8d\x20\x65\x35\x88\x0b\x20\x4e\xf1\x68\x9e\x84\x79\x72\xab\x76\x78\x3c\x4f\x30\x45\xd1\x65\x3c\x9b\x29\xf6\x88\x74\x27\xe8\x18\xc0\x7b\xc4\x85\x9a\x86\xb7\x62\x12\x5e\x49\x31\x94\xa3\x6c\x2a\xc5\x7b\x05\xee\x7b\x10\xf8\xab\xd6\xef\x11\x7b\xab\x8f\xd7\x8a\x8a\x80\xe3\xbe\x6a\xcd\x14\x04\x76\xd0\x55\x76\x80\x2e\x23\xbe\x07\x26\xbc\xb1\xd6\x24\xb8\xd7\x96\xb3\xea\x9d\x4a\x33\x4a\x86\xd9\x9a\x38\x2f\xca\x89\xb1\x5f\x72\x44\xe5\xad\x49\xbb\xf2\xfc\xbb\xaf\x77\x45\xa8\xce\xe2\xb3\x28\xa3\xd5\xa0\x53\x34\x16\x14\x93\x85\x65\x48\xb4\x23\x47\x55\xad\xa0\x1f\xc5\x2c\x4b\x8b\x26\x4b\xa2\x3b\xad\x0d\x87\xf6\x27\xba\x23\xe4\x51\x6d\xf4\x1c\x57\xc0\x40\x3a\xa2\x89\x0c\x23\x45\x79\x55\x2b\xfd\xb7\x82\x00\xb1\xd3\xc0\xc0\x21\xf0\x42\xa4\x72\xe4\x28\xc4\x8e\x28\xe2\xf4\x22\x61\x28\x92\xe5\x5a\x95\x37\xb6\x6e\x06\x1e\xc7\xfc\xc4\x97\x39\x30\xa8\x61\x32\x4b\x39\x67\xd3\x00\x2c\x6c\x23\xb0\xc8\xa5\xf9\x74\x14\x60\x2b\xf3\xcc\x2e\xb6\x8d\x53\x8e\x63\x66\x10\x8b\x9c\x02\xd7\x7a\x5b\x61\x93\x33\x2a\xcb\x22\xcb\xe8\xa3\xaa\xb2\xe0\x5a\x6d\x9e\x5f\x5c\xec\x86\xe9\x48\x26\x8e\x67\x15\x75\xba\xb6\x86\x5f\xc9\x80\x63\x2e\x7b\xef\xde\xed\xee\x1c\xec\xee\xbd\x7a\xf7\xae\x6d\x47\xeb\xf7\x45\x31\x89\x31\xb0\xf2\xbc\x80\xd7\x14\xc6\x66\x14\x71\xaa\xed\x12\xc0\x63\x44\x3d\x99\x22\xb0\xe2\xd0\xde\x9c\xe4\xc8\x39\xca\xa6\xfd\x48\x02\x4c\x7f\x64\xd3\x61\x2c\xfb\x69\x16\x41\xb8\x06\xd5\x4d\x7f\x98\x64\xc3\xfe\x34\x54\x04\xad\x4f\xfd\xf5\x3e\x14\x0e\x23\x40\x51\x31\x8e\x65\x79\x12\x4f\xb3\x79\xd9\x62\xd4\x34\xcf\xae\xe1\x9a\xdf\xc3\x80\xea\x05\xd4\x91\xd9\xbc\x84\xd4\x0e\x69\x56\x62\x7a\x07\xc3\x61\x23\xa3\xe0\x77\xbd\x9b\xc8\x30\xd7\x0d\x17\x74\x3f\xe2\xf5\x16\x0d\x00\x01\x30\xc2\xd1\x44\x46\xc7\x16\xa2\xed\xca\x4c\xb6\x78\x4d\x07\x88\xed\x3a\xd0\xb6\xd0\xaf\x9e\x1e\x10\x68\x78\xd1\x63\x53\x6e\x90\x76\xd5\x00\x62\x1b\x21\xbc\xd5\x6e\x9d\xa9\x2e\xec\xd8\x83\x7b\xe4\x02\xec\x85\xa8\x99\xa7\x54\xd4\x1a\xcf\x53\x87\xdc\x56\xa1\xdc\xe6\x70\x3a\x6c\x7f\xbf\x8f\x11\x69\xc9\x70\x05\x95\x5d\x71\x2a\x8a\x30\x95\xa2\x88\xcb\x79\xa8\x09\x86\xf3\x98\x62\xdd\xa9\xe1\x3b\x62\xc3\xcb\x76\xd8\xef\x2b\x50\xd8\x8a\x5e\x87\x45\x1a\x94\x22\xbc\x0a\xe3\x24\x1c\x26\x12\x8c\x60\x14\xeb\x90\x84\x90\x6c\xc2\x1a\xa9\xe8\x3c\x1b\xb5\xd3\xf0\xf7\x1d\x5c\x8d\xfd\x9a\x60\x7c\xd6\x30\xe1\x65\x5b\xf8\xc0\x79\x32\xbf\x59\x9a\xf6\xf5\x44\xa6\xf8\x7f\x45\x36\x95\xc3\x2c\xba\x05\xfc\x2e\x46\xb9\xbc\x96\x11\x2a\x65\xd8\xba\xa0\x2d\x90\xd8\xef\xed\xf5\xc4\x34\x8c\xa2\x54\x16\xd5\xd5\xf6\x81\xf6\x61\x41\xbf\xdb\x96\x6c\x33\x50\x3c\xc8\x08\x3a\x50\x8c\x5e\x4b\x11\xe6\x8a\xd1\xc5\x61\x15\x08\xc0\xf5\x81\x6d\x8b\xcd\xe4\x22\xaf\x42\xc5\xba\x17\x04\x5d\x94\x49\xd8\xc2\x32\x9f\x17\xd8\x80\x1c\xdf\x48\x30\x0d\x73\x26\xe3\x0a\x44\xaa\xe4\xd6\x1d\xbf\x61\x36\x5c\xfb\xec\x4e\xac\x71\x72\x34\x1b\x50\xe2\x86\x85\x08\x87\x8a\x9b\x05\x8c\x52\x40\xc4\x65\x00\x0e\x10\x18\xe2\x48\xdd\x7c\x30\x01\x64\xc2\x14\xf0\xc0\x85\x55\x67\xa0\x48\x73\xa0\x38\x9c\xa0\x23\x26\xd9\x0c\xcd\xb3\xb2\x79\x2e\x28\x0b\x80\x18\x65\x79\xae\x2a\x5a\x9b\x40\x1d\x77\x1a\x09\x5c\xa8\x3b\x04\x5f\xe7\x07\x4c\x1e\x5d\xcb\x6b\x26\xcf\x1e\x9a\x2e\xbd\xcd\xe7\x29\x27\x17\x2d\xf5\x38\x65\xb2\x21\x4b\x07\x76\x7d\xf2\xc3\xc9\xca\x17\xa1\x05\xa3\x1a\x38\xea\xa8\x81\x43\x08\x3f\x95\x1e\x54\xa6\x53\x77\xf1\x58\xa2\xb0\xeb\x4c\xf6\xf1\xe3\xe6\xd9\xaf\x42\x82\x1f\x3c\xf1\x3f\x93\x3c\xd4\xa1\x83\x4b\x20\xc4\x9f\x44\x21\xbe\x14\x89\xe0\x33\xe2\x44\xc2\x9d\x5c\xf3\x04\xff\x9f\xa0\x12\xbd\x0a\xbc\xc7\xea\x71\x48\x60\x15\x06\x2e\x80\x46\x6b\xf2\x4b\x91\xcf\x13\x49\x99\x31\x39\xca\x5e\x15\x0c\x7b\x1e\xb4\xb4\x48\x82\x6a\x96\xd6\x21\x41\x86\x27\xfb\xcf\xb9\x84\x10\x10\x20\x31\x82\x80\x63\x79\x18\xa7\xe8\x9c\xac\x4d\x18\x81\x23\x9b\xe7\x0a\xde\xff\xa1\xaa\x6f\xb1\xa6\x5a\x4a\xd7\xdd\x74\x65\x55\x6a\x36\xe9\xdb\xd9\x81\xbc\x29\x4f\xe2\xd1\xa5\x9b\xee\x7c\xcd\x0c\x02\x27\x9c\x75\xdd\x2c\xf0\x25\xf8\x6b\xc0\x33\x74\x92\xf5\x63\x42\xec\xb1\xee\xf4\x54\x9d\x7a\x94\x74\x05\xca\x9a\x14\x9d\xa2\x66\xaa\x0c\x24\x35\xf6\x7f\x36\x0d\x0a\xf0\xc2\x50\x2d\x46\x53\x5c\x1e\x90\xd7\xe1\xcb\xa4\xe7\xba\x74\x51\x74\xd0\x46\x24\x76\x8c\xa5\xf4\x76\x41\x43\xc0\x16\xd1\xc4\xbb\xd2\xfd\x60\x2e\x22\x3e\x1f\x6a\x04\x59\x88\x5a\x89\x4c\x5d\x72\xcb\x16\x53\xb7\xdb\xaa\xae\xf9\xe9\x39\xfb\x48\xf9\x8c\xd6\xd7\xd9\xb2\xfe\x24\xfc\x9e\xeb\xb6\xb5\x52\xc1\x07\xe1\xd4\x76\x79\xde\xcb\xe7\xa9\x17\xd2\xd5\x91\x7e\xdf\x2f\xdb\x5f\xf5\x5f\xe3\x72\x50\x6b\x6f\xfe\x46\x72\xd5\x88\xa9\xfe\x85\x4f\xfb\x46\xcf\x24\x3f\x80\x44\xaa\xcf\x0f\x7f\x1c\xac\x14\x92\x01\xf2\x3a\xb0\xd3\x51\x17\xe0\xc6\x35\x1f\xe4\x26\x23\x9b\x26\x76\x83\x6f\x32\xe2\xd8\x49\xe2\x7f\x18\xc6\x41\x0d\xd8\x10\xca\x41\x78\x36\x87\xb4\xe0\x28\x32\x55\x53\xd8\x2f\xe5\x14\x99\x61\xcc\x7e\xb4\x55\x7f\xb2\x80\x51\xd8\x04\xcf\xf1\xfa\xb3\x61\x31\xdf\x9e\x29\xf7\xd8\xf5\xfb\xe2\xea\x07\x91\xc4\x97\xb2\x10\xb3\x5c\x46\xf1\xa8\x8c\x87\xd6\xb6\x90\x4b\xdb\x19\x4c\x79\x78\xeb\x0a\x2c\xc7\xf3\x14\xe5\x0a\x5b\xec\x23\x1a\x9f\x52\x9c\x28\xdc\x4f\xd5\x09\x13\xd4\xe5\xba\x99\x1f\x89\x46\x77\x4a\x41\x2e\xf0\x7e\xb4\x9d\x6a\xf9\x03\xa1\x07\x9e\xf7\x12\x22\x41\x06\x24\x23\x08\xdc\xe2\x59\x12\x96\x20\x11\x6b\xac\xa1\x7d\x28\x0c\x0d\x60\x65\x32\xbd\xd2\x26\x57\xec\x6b\x98\x5f\x5c\xe9\xb3\xcc\x3e\xeb\x9b\x17\x12\x90\xa8\x8b\x0f\xa2\xaa\x90\x83\x0a\x04\xbf\x80\xc8\xee\xb9\xbc\x90\x37\x33\x11\x17\x05\xd8\xe6\x56\x3b\x28\x6a\x86\xcc\x65\x22\x43\x90\xc9\xfb\x25\x18\x9b\x51\x17\x38\xa9\x59\x32\x08\x5f\x72\xcf\xc2\x88\xaa\x06\x00\xa1\x2a\xf4\x26\x15\x45\xaf\xe2\xa2\x94\x29\x2c\x45\xb5\x3c\x4b\x47\xb2\xbe\x60\x3c\xae\xfd\x8e\xea\x87\x85\x7d\x62\x95\x9d\x24\xd1\xb5\x8a\xda\x6a\x12\x53\xd4\x52\x41\x95\x38\x50\xce\x2f\x48\xc1\xd2\x2c\xa2\xd1\xa9\x43\x74\x86\xb0\x18\x85\x34\xe4\xd4\x62\x25\x34\xd5\xfe\x47\xd7\x11\x86\x23\x24\x96\x23\xe8\x07\xa2\x86\x46\x8d\x26\x51\x9c\x8b\x56\x14\xe7\xcb\x81\xc0\xba\xf5\x20\x6c\x55\xbb\x9e\x4f\xc3\xe2\x92\x83\xb0\xb1\x25\x74\x7c\x4d\xd0\x72\xd4\x88\xd6\x2e\xe7\xd3\xf0\x2a\x2e\xb4\xec\x4c\xcb\xd5\xba\x93\x5c\x91\x5a\x47\xbc\x06\x3a\x3e\x10\xae\xc1\x91\x91\x39\xd8\x19\xe0\x86\x93\xd4\x87\x7f\xbc\xbb\x03\xac\xf2\xea\x1e\x64\xd7\x62\x5b\x4d\x9b\x7d\xeb\xa5\xd9\xb5\x26\x4a\xe8\x62\xc2\x0b\xa7\xd9\x1f\x07\x54\x5e\x53\x58\xe8\xb2\x9a\xc2\xcc\x94\xd5\x14\x5e\xcb\xe1\x65\x5c\x42\x0d\x2c\xd4\xcb\xd8\x6a\x7f\x74\x22\x1e\x63\x50\xe7\x76\xef\x02\x39\xcc\x56\xdb\xac\x29\x05\x2a\x93\x18\x2c\xb9\x0c\xa7\x33\x01\xc9\x43\x93\x32\x84\xf2\x42\x4a\x6d\xf3\x91\x66\x91\xfc\x50\xf4\xb2\xfc\xa2\x1f\xce\xe2\xbe\xde\xe0\x49\x39\x4d\xfe\x42\x3f\xde\xe9\x7f\x71\xe9\xab\xdb\x8b\xdf\x21\xa2\x7e\x9c\xcd\x8b\x13\x3d\x68\xdb\x98\x7f\x8e\x92\x6c\x74\x49\xf1\xa8\xdd\x35\x47\x6e\x97\x7d\x6b\x3f\xd9\x94\xdd\x67\x67\xc6\x0c\x03\x22\x43\x8b\x6d\xf1\x3a\x2c\x27\xbd\x71\x92\x65\x79\xcb\xf4\xd6\xd6\xd5\xd2\x30\xcd\x6a\xab\xda\xba\x7f\xdd\x54\x3d\xff\xd8\xd6\xaa\xac\x2a\xb4\xd6\xca\x42\x77\xa4\xff\xea\x8a\x4a\xed\xd3\x0d\x4a\xd9\xea\x0e\xcd\x7f\xd5\xb5\xda\x3c\xb7\x57\x22\xab\xfb\xd3\x06\x8f\xa5\x8f\xdf\xba\x5d\xfd\x81\x77\xba\xbe\x2d\x36\xe5\x8f\x5c\x4f\xc3\x64\xdf\xa7\x54\xab\xc3\x5a\x9c\xb3\xc0\xd4\x10\x17\xfd\xa4\x26\x2c\x78\xe5\xc0\xce\x4a\xc4\x28\xbb\x83\xc8\x20\xd5\x35\xd6\x59\x27\xc7\x96\x29\x87\x6a\x5d\x3b\x1e\xd7\x8a\xaa\x8a\x7d\xb1\xb9\xb1\xb1\xe1\x11\x2c\x1d\x24\x1a\xc6\xd4\x1c\xd3\xc0\xfc\x85\xf6\x65\xea\xba\x1c\xe0\x3f\xf0\x81\xc8\xc3\x40\xff\x81\x86\x69\xe9\xd5\x40\xfd\x1f\xfc\x50\xd7\xdd\x00\xfe\xdf\x8d\xb4\x4d\x7f\xf0\x8f\x85\xf9\x8a\xe6\x74\xaa\x1a\xd5\x60\xf7\xcb\x80\xff\xa0\x7a\x23\x39\x80\xff\xc7\x9f\xe3\xf1\x40\xfd\x5f\x07\x67\xcd\xef\x91\x81\xf7\x9b\x55\xe1\xf7\xc8\xa0\xe6\x1b\xce\x6c\x1a\x97\x03\xf8\x7f\x9c\x3d\x5e\x06\x03\xfd\x07\x46\xe5\xbe\x8e\x06\xea\xff\xf0\x87\xa2\xd4\x03\xfc\x07\x3e\x00\x2d\x1e\xe0\x3f\xf0\x01\x4f\xef\x80\xfe\x85\x4f\x9a\xeb\x18\x98\xbf\x08\x4e\xb8\xc5\x07\xfa\x0f\x1c\x00\x2e\xf0\x01\xfd\x8b\x43\xcc\xb0\x47\xfc\xf7\xa1\x76\x13\xae\x6e\xb0\x59\x09\x64\x72\xb7\xfd\x06\x3a\xa6\x83\x70\x2a\x5b\x46\xc9\x65\x0a\xa3\x03\x7b\xab\xba\xda\x2c\xab\x10\x33\x66\x3f\x48\xe7\xb0\xbf\x16\x79\xa0\x39\xb7\xb2\x4e\xc5\x86\x1a\x54\x67\x0c\xc5\xce\xaa\xa2\x5e\x99\xbd\x9d\xcd\x64\xbe\x1b\x16\xea\x00\x6d\x57\x2a\xba\x15\xd8\xb9\x27\x80\x4e\xdd\xea\x64\x99\xcb\x9e\x63\x91\x04\x47\x38\x53\x5d\x55\xaa\xd5\xdc\xd6\xad\xb9\xd6\xb5\xbe\x9d\x41\x42\xc2\x30\xc5\xab\xdd\x7a\x27\x50\xb8\x33\xc8\xf2\x05\x3b\x4a\xb9\xda\x46\x59\x24\xb5\xaf\x2d\xaa\x3f\xab\xaa\x71\xe8\xea\x9e\x1a\x9c\x4c\x24\xfd\x55\x66\x62\x0e\xc3\xd5\x27\x7a\x23\x16\x10\xbc\xed\xe0\xcf\x5e\xad\x0d\xe3\xa9\x82\xe0\x9c\x75\x0b\x59\xc8\x5a\xa0\x6c\x47\x5f\x9f\x8e\x08\xf6\x76\x0f\x0f\x0e\x76\x7e\x39\x3c\x3a\xd9\x7b\x81\x56\x96\xd5\xf1\x4e\x49\x95\x7b\x4e\x6a\x56\xf8\xd1\x58\x15\xe7\xaa\xeb\xb2\x99\x33\x8d\x2d\xcd\xdb\x80\xd6\x5b\xaa\xa1\x95\xe9\x44\x5d\x76\xc8\x56\x41\x9b\x8e\x59\x6f\x5c\xe9\x5c\xbb\x27\xeb\x41\x09\x53\x70\x00\xc3\x36\xe3\x1f\xc6\x3a\x51\xb5\x35\x28\xa5\xab\x46\x98\x6c\x23\x92\xdc\xb2\x09\x0b\xb5\x56\x7b\x5b\x8f\xb7\xc5\xcb\x70\x60\x28\xc4\x3f\x59\x69\x5c\xec\xdc\xc4\x59\x81\xd8\xe3\x08\x20\xb0\xbc\xcc\xfe\x7e\x7c\x78\xc0\xe6\xdc\xf2\xad\x2e\x0d\xe2\xf7\xfb\x42\x1b\x28\xeb\x4f\x94\x7c\x63\x80\x8f\x27\x9d\x54\xc4\x5e\x88\x53\x5d\xa4\xfe\xec\xb0\x8e\x5e\xc7\xa3\x3c\x2b\xb2\x71\x69\x4f\x0b\x8a\x49\x81\xe6\x43\x13\xf6\xc5\xf6\x48\x56\xe1\xd8\xa7\x35\x0c\xd7\xbd\x66\x7f\xc4\x49\x12\xea\x2f\xe3\x38\x81\xf4\x04\x54\x5f\xff\x34\x2d\x92\x38\x95\x07\xbc\x47\xfb\xc1\xd4\x19\x65\xc9\x7c\x9a\x3a\xb5\xf8\x27\x53\x0f\x8c\x7f\xa8\x02\xfc\xcd\xe1\xda\xc1\x78\x84\xba\x47\xa4\xc4\xd4\x97\x21\xc7\x58\x16\x49\x53\x12\x51\xba\xe8\x7b\x13\x76\xd1\x1a\x55\xab\xbd\x5b\x62\xea\xc6\x71\xd7\xb5\xeb\xe0\x25\x9e\x6d\xc7\x2e\x66\x4d\x58\x44\x6f\x58\xea\x98\x2a\xe1\xd1\x88\xba\x98\x00\x69\x5a\xa1\x73\xf6\x58\x62\xb1\x30\xd5\xe4\x7f\x2b\x0a\x84\xd9\x0c\xa2\x55\x29\x11\x56\x47\x42\x54\xd9\x81\xc5\xa4\x08\x90\x81\xb0\xc0\x3e\x12\x9d\xbc\x39\xc6\x56\xff\xe1\xe4\x6e\x09\x16\x32\xb8\x5d\x24\x64\x05\x81\x9f\x5e\x1b\x22\xdc\xa2\x09\x0f\xb9\x33\x91\x55\xa2\x36\xf3\x48\xcd\xf8\x90\x7f\x6a\x5e\x2c\xb2\xff\xa2\x88\xb9\x62\x87\x19\xc5\x4c\xc2\x52\x7f\x37\x1e\xb3\x10\x11\x79\xa1\x15\x65\x4d\x17\xe8\xf0\xd7\xd8\x83\xb6\xc7\x37\xe0\x56\xb0\x63\xe1\xae\x17\xb2\x2c\x13\xe9\xc7\x3a\xae\xdd\xe1\x2b\x4a\x5e\x7c\x0c\xeb\xc1\x2e\x03\xa2\x31\x3d\xb7\x82\xb9\x8a\xd6\xbc\x86\x77\x77\x5e\x57\x2d\xd3\x11\x2e\x75\xbb\x12\x66\x9a\xe3\x42\x35\xe2\x1c\x98\x27\x72\xf4\xd5\xc4\x2e\xa0\xd0\x1e\x62\x1c\xc6\x89\xd1\xe2\x21\x14\x70\x64\x03\xb1\x2e\xbc\xc1\x0d\xa5\xf4\x66\xc7\x6e\x08\x4a\xd5\xe3\x54\xd2\x68\xeb\x17\xe0\x6f\x9b\x5c\x75\x19\x3b\x66\x42\xa6\x14\x26\x47\xb4\x4b\x1c\xdf\x1e\xbd\x82\x40\x0a\xc3\x22\x4b\xe6\x35\x01\xc3\x7c\x4f\x0f\x55\xff\x01\x71\x53\x1b\x07\x6a\x8a\xb8\xb3\xc8\x38\x6b\x87\xda\x92\xef\x86\x8d\x81\xb0\xa3\x7b\x1f\x65\x69\x11\x47\x60\xea\xa9\x07\x52\x90\xc4\x25\x86\xc9\x29\x70\xcb\xce\x1e\xfd\x54\x8c\x26\x72\x2a\xff\x36\xe8\xf7\xcf\x1e\xa9\x73\x7b\xf6\x08\xfe\x6a\x81\x2c\x76\x94\x25\xdd\x5c\x26\x10\x09\x44\xf5\x8c\x5e\x35\xfd\xbe\x38\x7a\xb9\x2b\x9e\xfd\xf8\xc3\xf7\xa4\xb6\x2e\x04\x76\x03\x7c\x03\xa8\x1e\x45\xa1\xf6\x2d\x85\xf0\x3c\x62\x34\x09\xf3\x70\x54\xca\xbc\x60\x41\x7a\x00\x80\x50\x24\x90\x59\x08\x6e\x9d\x71\x96\x24\xd9\x35\xea\xc0\xfb\x7d\xf0\xc4\x49\x6f\xc5\x28\x9b\x0e\xe3\x14\xf3\x20\x66\x63\xaa\x5f\x74\x44\x14\x5f\xc4\x65\xd1\x11\xb3\x64\xae\xfe\x5f\xe6\x71\x16\x75\xd4\x0c\x26\xb7\xb3\x89\x4c\x7b\x8c\x38\xf6\xff\xa3\x75\x1a\x76\xff\x38\x57\xff\x77\x76\x16\x9d\x9d\xad\x9f\x9d\x75\xcf\xce\x7a\xe7\x4f\x06\xed\xe7\x67\x67\xfd\xb3\xb3\x7e\x3f\xee\xa9\x9d\x84\xd5\x5c\x81\xb9\xc7\xcb\xb6\x20\x4b\x71\xf2\x1b\x42\x48\xd1\xdf\xd8\xdb\xf0\xa2\x11\x9d\x14\x59\x54\xed\x8d\xf3\xd0\xdb\xa3\x57\xb5\x15\xf5\x3e\xe8\xca\x7c\x5f\x16\x78\x04\x21\x50\x08\xc5\xf2\xab\x0a\x2b\x2b\x80\x5b\x04\x58\x87\x0f\xec\x27\xf1\x32\x05\x78\x1a\x9f\xeb\xd9\xf0\x20\x46\xfd\x75\x0a\x62\x24\xd6\x41\x30\xba\xce\xdb\x39\x21\x90\xfa\xeb\x58\x11\x3b\x1b\xe8\xce\x96\x5c\x53\xce\x69\xf0\xde\xb9\x3a\x7c\xb5\x53\xc7\xe6\x99\xb2\xb3\x6d\x68\xc7\x6a\xd4\x72\x5b\x0b\x11\x40\xef\xac\x61\xc4\x88\x94\xc9\x48\x2d\x2b\xf4\x92\xa5\xc9\x2d\x2a\xe7\xfd\x72\x2d\xfa\xd5\xd1\x44\xc2\xd4\x9e\x63\xb5\x6e\x3a\x00\x0c\x6b\x57\xa1\x2b\x8a\x19\x15\x2c\xc7\x1b\x62\x47\x65\xa4\x79\x5a\x66\xf3\xd1\x44\x46\xcd\xdc\xde\x03\x90\x94\x75\xac\xd7\x1c\xd9\x01\x8b\xad\xe8\x58\x0c\x2b\xbb\x0a\xe2\x8e\xe7\x49\x22\x66\x61\x39\x59\xcd\x9f\xed\xe5\x3c\x49\xde\x84\xe5\x84\x23\xb0\x05\x8a\x99\xda\xeb\x49\x61\x7c\x65\x4e\x52\x9d\x06\xfe\xa3\xaa\xe1\x8c\xb0\x16\x35\x8e\xdf\xb6\xf4\xb3\xbd\x5c\xfa\x7d\xf1\x1b\x59\x4e\x5f\x4f\xb2\x42\x8a\x68\x3e\x4b\xe2\x11\x62\x63\x2e\x45\x7c\x91\x66\x39\x7a\x26\xa4\xf0\x10\xe9\xf7\xc5\xa8\x37\xee\x19\x15\x80\x27\x90\x56\x9f\x51\x1a\xad\xfe\x7a\x47\xcc\xe5\x3b\x12\x7e\xd0\x19\x83\x3e\x5f\xe8\x81\x30\x03\x8d\x9a\x60\x10\x5e\x40\x62\xd5\x70\x5e\x4e\xb2\x3c\xfe\x83\x65\x72\x4d\x4b\x99\x96\x3a\x91\x0d\xfb\x52\xde\xce\xa0\x89\x2c\xc3\x0b\xcc\xc2\x17\xc8\x9b\x59\x9c\xcb\x42\x7d\x1d\xe7\xd9\x54\xfd\x3b\xc9\x8a\x52\xfd\x1b\x8f\xbb\xd3\x2c\x02\x3a\xda\x2d\xe2\x74\x24\xe9\xe3\x3c\xf5\x3f\x43\x4f\x49\x58\x94\xa6\x81\xaa\x9a\x64\x23\x03\xd3\x34\xbc\xe9\x8e\xb3\xfc\x3a\xcc\x23\x18\x6b\x96\x67\x37\xb7\x5d\x0f\x74\xe8\x06\xe3\x44\xe4\xaa\x52\x2e\xcb\xfc\xb6\x1b\x8e\x4b\xfc\x39\x2f\x64\xde\x0d\x2f\x64\x5a\x06\x67\xe9\xb9\x43\x12\xde\x84\x79\x61\xad\xda\xe3\xb4\xcc\x6c\xd4\x17\x1e\x23\x05\xd9\x11\xf0\x6c\xfe\x5d\x46\x1d\xf1\xf4\xdf\xc4\xce\xfc\x42\x3c\xdd\xd8\xfc\x56\x6c\xfc\x30\xf8\xee\x87\xc1\xb7\x3f\x8a\x5f\x5f\x9f\x20\x9d\xa1\x55\x3b\xb9\x9d\xc9\x81\x08\x67\xb8\x03\x71\x96\xf6\x3f\x14\x18\x13\x52\x55\x49\x25\x79\x3b\x5f\x4a\x39\xeb\x86\x49\x7c\x25\x99\xbd\xbf\xcc\xbb\x7b\xe9\x28\x43\x39\xe6\x68\x32\x4f\x75\x7a\x86\xba\x50\x2a\xda\xb8\x5f\xcf\x43\xe3\x5a\x2a\xa5\x8e\x45\x30\x94\xe8\xbf\xe7\x3b\xa2\xea\x17\x95\x6e\x82\x95\x6a\x56\x62\xe1\x21\x86\x56\xd4\x85\x16\x21\x32\x66\x99\x3a\x75\xb2\xd8\x5f\xca\xdb\x2d\xc6\x4c\x9b\xbf\xe3\x2d\xeb\x4a\xb7\x66\xbb\xd2\xc7\x12\xbb\xda\xd2\xf2\x9a\x5a\xe1\x65\xaf\x98\x25\x71\xd9\x0a\xce\xce\xd2\xa0\xed\x3b\x30\xe6\xad\x24\x66\xb9\x5b\x62\xb1\x0d\x82\x09\xeb\x12\x37\x30\x5e\x78\xe8\x56\x89\x43\x40\x40\x40\xa8\x58\xcc\x87\x45\x99\xb7\x36\x3a\x22\x6e\xb7\x7b\x65\xf6\x2a\xbb\xd6\x62\x4b\x93\x7d\x26\x69\x6e\x17\x63\x1e\x4e\x27\x57\x77\xd5\x8b\x14\xa7\x89\x31\x08\x1e\x3f\xae\x9e\x65\x03\x2e\x34\xfd\xdb\xb6\xd8\x58\xe2\x4d\x6a\xbb\x86\x59\x41\x9c\x65\x59\x76\x47\x59\x76\x19\x4b\xd7\x15\x95\x8f\xbd\xed\x82\xf2\xdc\x29\x1c\x88\xd3\xf3\xb6\x36\x32\x02\x97\xd2\xf6\x02\xcf\x53\xb7\xdb\xe6\x5e\xd7\x85\x3a\xb3\x62\x1d\x96\x71\xc0\xe2\x2f\x78\xa1\x9d\x3c\xb7\x09\x42\x8c\xcf\xa5\xd4\x15\x1c\x6f\x59\x34\x6b\x08\x06\xf8\xdc\x04\x17\x3b\xae\x09\xe1\x58\xa0\x51\x1c\x5c\x88\x3a\xd6\x22\xf9\x9a\xef\xbc\xd9\xc7\x33\x8a\xae\x7d\xf4\x2a\x21\x03\x4c\xf3\xda\xd1\x32\x1e\x62\x15\xa8\x2d\xd8\x0b\x62\x24\x1c\xc5\xbb\x93\x86\x49\x68\xd2\x49\x06\x7b\x2d\x9e\x97\xb8\x21\x8c\xa1\xd0\x19\x9d\x8b\x58\x8a\x6d\xd1\x6f\xa9\x3f\xee\xca\x3c\x8e\x64\x5a\xb6\x35\x8f\x6d\x83\x03\x2a\x6a\xba\xa3\x88\xa9\xdd\x6c\x58\xda\x3c\x51\xc4\x34\x4e\x2f\x0e\x50\xb4\xaa\x23\xfb\xf5\xe8\x31\x8a\xc9\xa8\x5a\x41\x18\xb8\x0d\x71\x12\x78\xcb\x1a\x21\x1e\x90\x67\x21\x0c\x85\x0e\x35\x0f\x12\xc5\xc5\x08\x5c\xd8\xc0\x32\x72\xa4\x83\x1c\x90\xb8\xcf\xb4\xf2\x29\xa3\xf7\x00\xe4\xd4\x10\xeb\xfb\x04\x91\x0a\xfa\x46\xb8\x69\x59\x32\x78\x85\xbb\xaf\x38\x3b\x9b\x49\x2e\xc7\xe8\x97\x5b\xc9\x69\xaf\xd6\xd5\xb3\x65\x16\xfb\x7b\x80\x00\x85\x08\xcb\x32\x8f\x87\x8a\xf1\x2a\x64\x29\xca\xeb\x78\x04\xf1\x61\x8d\xd6\xc3\x8d\x3a\x64\xfe\x73\x57\xbd\x57\xc8\x72\x47\x77\xd4\x0a\x14\x2c\x41\x07\x40\x72\x2d\xc5\x2c\x90\xbc\xb1\xfa\xda\x94\x12\xfd\x21\xe3\x38\x13\xf4\xd0\x82\xc2\xfa\x21\x47\xfb\x36\x4f\xde\x62\xe6\x99\xb4\x94\xf9\x38\x1c\x49\xd1\xd5\x1a\x78\x70\x6c\x9e\xc9\x51\xef\x7a\x12\x96\xd7\x17\xc0\xf9\xfc\x65\x9e\x27\x70\x12\x7d\x42\xe7\xda\x6c\x29\x38\x06\x75\x93\xeb\xf0\x5a\xfa\xad\x5c\xa9\xa9\x0b\xc4\xf3\xa6\x12\xfb\x00\x1a\xe8\x67\xd2\x40\x04\x81\xd3\xbd\xe2\x85\xaa\x40\x64\x4c\x28\x22\x40\xa9\x1d\xe6\xa3\x49\xa5\x1e\x7e\xae\x02\x80\xdf\x9d\xf7\xd7\xf3\x46\x00\xc2\xa2\xda\xb1\xfa\x58\xed\x56\x7d\x65\x9d\xfe\x65\xd1\x9c\x50\xc9\x50\x33\x2f\x47\xe5\x00\x0b\x9c\xe5\xd5\x15\x50\x1f\xdd\x5a\x61\x39\xc1\x3e\x5b\x7e\x55\x2a\xe9\x8d\x26\x61\xbe\x53\xb6\x36\x28\x3a\x75\x3f\x00\x92\x2b\x44\xe3\x29\xd0\x2d\xc5\xc0\xad\x86\x2f\xd9\x86\xca\x0c\xf1\xeb\x02\x23\x18\x2a\x85\xa2\x3e\x4d\x02\x30\xc8\x69\xcf\x90\x5d\xff\x0c\x30\x42\xe6\x05\x91\x56\x5d\x15\x93\x30\xa7\xb3\xe0\xd1\x73\xf5\xc9\xa7\xe9\x4b\x48\x1c\x7b\x51\x56\x45\x5d\x1e\x91\xab\x48\xbb\x9a\xa1\xa9\x13\x75\x39\x94\xd1\xcf\xb0\x85\x01\x3b\xc2\xa9\x3c\x84\xf6\x2d\x0b\x57\x85\x58\x1a\xbe\xb0\x65\x2f\x58\x88\x0e\xc1\xda\xb4\xc5\x73\xbe\xe0\xbc\xb7\x01\x9b\x73\xd5\xf1\x81\x18\x17\x7b\x9e\x15\xf6\x98\x6d\xb4\x9f\x75\x40\x5a\x8b\x91\xd0\x4c\xe1\xb4\xd7\x44\x7d\x62\x1c\x8e\x09\x16\xd1\x6a\x2b\x4c\xa3\xab\xfb\x80\x5d\xb6\x2e\x1f\xd0\x62\xa1\x92\x3b\x4e\x80\xe3\xb6\x48\xc2\xd1\xa5\x66\x05\x88\x4b\xa8\x5c\xe1\x69\x96\x36\x07\x23\x5e\x65\x27\x6a\x58\x44\xad\xa1\xac\x4e\xe9\x2c\xad\x4f\xf1\xfa\x5f\xc8\x48\x69\xf6\xc9\x72\x16\xc0\xbd\x3e\x8c\xd5\xa9\xde\x18\xd7\x79\xac\xde\x75\x2c\x45\x5c\x5c\x4a\x30\x68\xe8\xe8\x80\xbb\xf4\xd8\xed\x00\xb9\xea\x88\x28\x9b\x86\xea\x64\x14\x72\x34\xcf\x7d\xbb\x6d\x94\x52\x29\xc0\x7c\xd3\x70\x41\xdf\xc9\x34\x58\x9d\x31\x37\x1a\x89\x1f\xb6\x69\x2e\xdb\xee\x85\xea\xc6\x5a\xa1\x7c\x23\x04\x9c\x1f\x2a\xc5\x1d\x4d\xbf\xd7\x61\x34\x63\xa8\xa4\x9b\xf6\xca\xec\xd7\xd7\x27\x3a\x34\x8b\xcb\x2c\xdc\x37\x03\x40\x0d\xd4\xa2\x2c\x19\x5d\x55\x81\xa1\xa1\xee\x03\xfb\xc7\xe5\x5e\x32\x02\x56\x82\x31\xa8\xfe\xb2\x51\x70\xf7\xe0\x8c\xab\x53\xb0\xb8\x7b\xac\x1c\x2c\xec\xd4\xc3\x4b\x30\x2f\x80\x2e\x30\x56\xcc\x96\x70\x9a\xdf\x77\x78\xeb\x5c\x86\x3c\x91\xb4\xfa\xe9\x9a\xbe\x5a\xe4\x9a\x82\x17\xd1\xb6\x3f\x5c\x0f\xbe\x83\x0d\xe4\x91\xbc\xd8\xbb\x99\xb5\x82\xd6\x7f\xdc\x6d\x9d\x9d\x9d\x9d\x15\x4f\xda\x2d\xd8\x77\x42\xb9\xf6\x76\xeb\xf4\x3f\xb6\xce\x9f\xb4\x03\x6f\xaf\x35\xe9\xc4\x21\x9e\x8b\x48\x56\xd0\x12\x8a\x4e\x9f\x9d\x2b\xf2\x0b\xd1\x12\x16\x4c\x69\x9a\x5d\x49\x67\x52\xea\x43\xdd\xb4\x40\x05\xcf\xcf\x5d\x10\x74\x00\x43\x7b\x69\x76\xdd\x6a\x8b\xae\xf8\xe1\xfb\x6f\x37\xd4\x7f\xb5\xc1\x7e\x1e\x48\x8a\xff\x34\x4a\xbc\x94\xc8\xb4\xc5\xc7\xfb\xce\x62\x24\x60\xb2\x0f\xf0\xbf\x10\x6e\x83\xfa\x25\x46\x0b\xf1\xea\xe2\x7c\x1e\x51\x47\xd3\xd3\x12\x4d\xf3\xdd\x4a\xa3\x2c\x97\x7d\x2c\x33\x55\x75\xa4\xb2\x4a\x65\x93\xa0\x92\x2a\xb8\x2d\xb4\x2c\xd8\x13\xef\xc3\x08\x4e\x05\xd3\x8c\x4b\x9f\x1a\x07\xe3\x95\x4c\x4b\xef\x86\x6c\x6c\xec\xd5\xb3\xda\x88\x06\x75\x3b\x81\x5b\x55\xba\x37\x8b\xd0\x6e\x26\xf9\x4e\x14\xce\x4a\x99\xb7\x50\xc7\xea\xea\x6d\x6a\xb3\xf2\x46\x71\x31\x53\xc7\xf1\x5f\x93\x9c\x94\xbb\x8d\x79\x7a\xd1\x32\x1f\xea\xbc\xc0\x68\x14\xa4\xa7\xa6\x70\x13\x5e\x1d\xbb\x9a\x54\x8d\x44\x6b\x8e\xd8\x4a\x93\x69\x93\xb5\x8e\x0d\xc0\xa9\x35\x99\xe6\xb9\x5d\x9f\x06\x5c\x4c\x1a\x9c\x83\x73\xc5\x2b\x89\x1e\x99\xfa\xb0\xaa\xb7\x70\x5c\x1a\xa9\x4f\x05\x4c\x32\xb1\x70\x73\x57\xb4\xec\x9d\xd9\xef\x8b\xdf\x4e\x4e\xde\x88\x61\x58\xc4\x23\x11\xce\xcb\x89\x4c\xcb\x98\xb3\xd3\x68\x1e\x06\x53\x54\xc5\x9e\x4c\x64\x5e\xc8\x1c\x88\xa6\x59\x07\x55\xa9\x67\x3e\xdf\xdd\x89\x20\x70\xa4\x19\xb3\xb0\x28\xae\xb3\x3c\xf2\x5a\x98\xcf\x6e\x0b\x77\x49\x7a\x3b\x5c\xac\x2d\xb6\x45\xf0\x0b\xc0\xad\x48\xf7\xb0\xcc\xc2\x96\x19\x77\x5d\x04\x03\xbc\x4d\xb1\xdb\x4a\xb0\x2f\x05\xca\xd8\x1e\x24\x57\xc9\x42\x80\x19\x45\x08\xfd\x26\x35\x2a\x83\xab\x97\xcd\x64\xaa\xab\x63\x8c\x21\xd7\x4e\xb3\x63\xc3\x11\xea\xd1\x4c\x77\x3a\x74\x9e\xf3\x93\x45\x08\xec\xe0\xad\xcb\xf7\xea\x98\xb6\x5f\xef\xae\x76\xfb\x8b\x53\xf1\xfa\xd8\x85\xcc\x7a\x04\x52\xff\xa5\x71\x80\x36\xdd\xa1\x91\x30\xf8\x7e\x51\x78\xff\x12\x33\x1b\xf0\x19\xa6\x50\x04\x25\xa3\x49\x98\x5e\x38\x21\xb2\x30\x88\xd0\xab\x0c\xe9\x30\x97\xa2\xae\x69\x18\xef\xee\x4c\x5f\xd0\xd3\xb1\xea\x09\x2c\x61\xbf\x5d\x31\xc0\x5f\xbf\xcf\x0d\x9e\xd0\x76\x48\x46\x42\xcd\x2e\x4c\x23\x71\x2d\x45\x14\x47\x69\x50\x8a\x0b\x59\xb2\x48\x3f\xa4\x2b\xa4\x8c\x11\xac\x33\x04\x1a\x94\x49\x59\x8a\x96\x48\x71\x5a\x94\x32\x8c\x58\xa5\xdf\xe3\x72\xa2\x8a\x21\x15\x0e\xd9\x01\x9a\x65\x9f\x84\x25\x85\x7f\x19\x43\xe4\x56\xfd\x56\xea\x88\xa9\x7a\x15\xd1\xe9\x2c\x58\x77\x00\x85\xc9\x92\x03\x36\x25\x61\x21\x36\x84\xbc\x02\x3d\x69\x36\xbf\x98\x68\x5f\xe6\x62\x3e\x1a\xc9\xa2\x18\xcf\x13\x3d\x20\x5f\x57\xbd\x96\xd4\x89\xc9\x15\xbd\xd6\xb2\xab\x8c\xf3\x27\x35\x60\xcd\x67\x2b\xcb\x07\xf0\x29\xc4\xdd\x46\x7b\xf5\xfd\x78\x93\xcb\x59\x98\x4b\x42\x46\x6e\xbc\x62\x02\x77\xc3\x37\x4b\x26\x83\x0b\x59\xee\x24\xc9\x91\x5b\x10\x28\xd4\xd5\xcb\xfa\xdc\x55\x93\x68\xc0\x6b\x1b\xb6\xda\x9a\xbf\xda\xaa\x1b\x97\x48\xf8\x1a\xe1\xbe\xfe\xac\x28\xa9\x42\xc8\xba\xcf\x20\x3b\x29\xe5\x4d\x19\xc0\x83\xda\x5d\xb4\x13\x79\x53\xda\xe7\x74\xcf\x31\x6c\xf5\xc7\xd6\xc1\x8d\x89\xb6\x43\x3c\x62\x0e\x17\x63\x4f\x70\x13\x6d\xbf\x9e\x51\x91\xae\xa0\x46\xf7\x2b\xa9\x6f\xac\x22\x5d\x3f\x03\x7f\xe5\x59\x95\x1a\x93\x7b\x87\xc8\x0e\x7c\x74\xbb\x67\x4f\xab\xa5\x96\x5f\x5b\x0e\x7e\xec\x26\x32\x4c\xc5\x7c\xe6\x77\xc9\xae\x25\xbb\x75\xf7\xce\x75\x84\x61\x00\xf5\x05\xa7\x1b\x8c\x20\x72\x53\x82\x84\xbf\x15\x16\x22\x9b\xcd\x32\x0a\xf9\x17\x8a\x69\x98\xce\xc3\xc4\xa9\xd4\xf6\xc9\x58\x38\x54\x4f\xe3\x0a\xed\xda\x51\x9f\x9b\x88\xd7\x8a\x07\xa2\xc6\xa8\xcc\x18\x93\xc1\xb0\xa0\xb6\xd5\x96\x8b\xae\xad\xa7\x51\xb3\xb7\xbf\xf4\x12\x26\xd9\xb5\x48\xe4\x95\x4c\x44\x2a\x4b\xc5\xcc\x23\xe5\x2c\xfc\x85\xd1\xb6\x98\xde\xc2\xe0\x3c\xda\x8e\xbd\xf5\x91\xd4\x01\x0f\x50\x2d\x3f\x89\xa3\x48\x5d\x20\x79\x36\x15\xf3\x42\x11\x54\xc6\x9c\xb0\x76\x7a\x90\x62\x92\xcd\x93\x08\x2d\x44\xc6\x71\x4e\xd6\x5b\x01\x5a\x9c\x30\x18\x17\x2d\xec\x01\x55\x44\xae\xd1\x2e\x2b\x7a\xcd\x7e\xad\xc5\x2c\x79\x30\x06\xbb\x76\xf6\x96\xf5\x56\x4f\x7b\x22\x7b\xfc\x12\xd5\x07\xd8\x5f\x93\xb5\xb1\x22\x3b\xd4\x4d\x36\x06\x5e\xc6\xbd\xb1\x15\x33\x33\x2d\xe0\x1e\x52\x8f\x2e\xcb\x1c\x31\xd6\xac\xa6\x5f\x07\x77\xeb\xc7\x6d\x6e\x5c\xd5\x8c\xd6\x6c\x45\x4d\xbb\x46\x2c\xaf\x50\x9b\x2f\xb7\x43\x3b\x51\x24\x6e\x8a\x7c\x4c\x34\xd0\x7c\x87\xc0\x8f\x71\x81\xd8\x16\x65\x28\x57\x5e\x39\xa3\x5c\xcf\x32\x5d\x94\xc9\x3f\x4c\x92\x5b\x30\x5f\x32\xe9\xe9\x2a\x39\xe5\x90\x91\x72\x52\xca\x55\x24\x36\xd5\x67\xb1\x87\x23\x28\xad\x68\x7e\xa8\x51\x79\xe0\x2d\x60\xed\x32\x60\x8f\xea\x33\xc4\x25\x16\xdb\x06\x63\xae\xe3\x72\xb2\x9b\xcb\x48\xf1\xfb\x61\x02\x76\xb6\xbe\x38\x54\x73\xac\x6d\x8c\xb9\x83\xed\x54\x5f\xbb\x00\x01\xb8\x2f\x3d\xe7\xf7\x0b\xc0\x05\x5c\x5e\xab\xb6\x76\x9b\x2b\x1c\x4c\x9c\xe7\x2d\x37\x94\xb3\x01\xd6\x23\xbe\xce\xdb\x88\x75\x6f\xfd\xb8\xce\xc5\xb6\x9d\x6a\x8d\x4e\xdc\xc1\x18\x6d\x0a\x42\x41\x70\x1d\xac\x53\x60\x04\x85\x2c\x8f\xf8\xa0\x9c\x55\xe1\x61\x86\x1d\x03\x0b\x17\x4c\x27\x2c\xb6\xdb\x5b\x5d\x74\x6c\x2f\x73\x09\x7b\x8b\x56\x73\xe6\x5d\xca\x5b\xd7\xb4\x02\x2b\x39\xf6\x48\x9e\x0c\x09\xe8\x37\x44\x8c\xe5\x0f\x4b\x35\x26\x84\x5f\x8c\x0b\x27\xcb\xa0\xf9\xaf\xfe\x71\x7a\x29\x6f\xcf\xab\x11\xaa\xfd\xf1\x0e\x8d\x66\x24\x34\x4b\x5e\xbb\xe2\xce\x26\xf7\x2a\x8b\x05\x49\xac\x58\x52\x14\x87\x32\xdd\x57\x1e\x77\xb4\xc5\x3e\x8a\x43\x74\x60\xa4\x26\xf1\x98\x44\x58\x76\xc3\xd7\x4c\x38\x75\xbd\x0a\x0d\x47\xa5\xed\xc8\xb1\x10\x62\x7f\xa8\x6d\xb1\xb6\x56\xdf\xba\x01\x56\x87\x15\x5d\x0c\x68\x0d\xf3\xca\x20\xf2\xe2\x41\x55\x18\x59\x60\x75\xeb\x18\x60\x66\x99\x62\xc2\x30\x79\xca\xf8\x3d\xc8\x06\x26\x23\xf1\xe2\xf0\xf5\x9e\x7e\x16\xa1\xbb\x7f\xaa\x2e\x7f\xfd\xee\x01\x2a\x39\xca\xa6\xb3\x10\xc3\x6b\xb8\xe2\x07\xf1\x0a\x98\x92\xa7\x3d\xa7\xef\x5f\xe6\x25\x3d\xd8\x46\x61\x2a\x86\x12\x64\x8b\xb9\x2c\x14\x8f\x07\xc1\x9a\x3e\x14\x59\x1a\x40\xb4\x78\xf5\x72\x8a\x4b\x5d\x8f\x74\x64\xc3\x5b\xe3\x09\x1c\x98\x18\xa3\xfa\xd1\x10\x98\x83\xd8\x73\x0f\x5b\xdd\x43\x00\xd2\xd7\xc1\x68\x15\x21\x6c\x9e\x5d\x0b\x59\x8b\x83\xd5\x5d\x25\xc6\x61\x96\x67\x17\x39\x04\x08\xad\xee\x24\x1d\x75\x02\x22\x4b\x5f\x64\xd7\x69\x92\x85\xd1\x1b\xdd\xa6\x31\x5f\x8b\xde\xd6\x30\x8a\xf6\xae\x64\x5a\x6a\x77\x5f\x88\xb5\x00\x6d\x0d\x67\x54\xd3\x6f\xdd\x81\x39\x00\xbb\xdc\xc4\xee\xa1\x56\x26\xcd\x67\xaa\x29\x3c\x54\xb5\x15\x49\x1d\xec\x6f\x67\x0b\x20\xe7\xef\x50\xec\xaf\x66\x2e\x58\xb0\xe2\x94\xdc\xe1\x2a\x13\x62\x7b\x8b\x8f\x82\x93\xec\xd2\x89\x30\x64\x37\x88\x3f\x1a\x74\x69\xb5\x69\x4f\xbb\xd3\x94\x13\x99\x5a\x01\x63\x96\x62\x48\x59\x45\x2c\xe0\x8f\x0a\x39\xaf\x7d\x4a\x54\x1e\x13\x9e\xaa\xc4\x6c\x2f\x3e\x4e\x1c\xdd\x2d\xb2\x61\x38\xd8\x96\x73\x84\x9a\x58\xa8\x06\x26\xaa\x8e\x72\x32\x09\x83\xb9\x79\xcc\xad\x50\xdd\x33\x7a\x66\x73\xce\xcc\x91\x56\xa5\x51\x95\xd4\x5b\x22\x9f\x46\x8e\x40\xd4\x06\xfb\x7d\xa0\x85\x9a\x2b\x80\xaf\x71\xf0\x76\xab\x6b\x3e\xaa\xa6\x22\xf1\x54\xaa\x9b\x17\x7b\x2f\x77\xde\xbe\x3a\x79\xb7\x7b\x78\x70\xb2\x77\x70\xf2\xee\xe4\xdf\xdf\xec\xe9\x97\xbd\x2b\x99\x1d\x88\x80\x9b\xb0\xde\x74\xaf\xaf\xaf\xbb\x8a\xfa\x74\xe7\x79\x82\x7a\xcb\x28\xd0\x41\xb1\x39\x43\x40\xbd\xa8\x4e\xf6\xc7\x6f\xd3\x42\x96\xd6\xbb\x9c\x87\x28\x6e\xb8\x9d\x8c\xed\xe7\xe3\xc7\xa2\xb1\xd4\x97\x22\xdb\xcb\xab\xa1\x82\xe3\x37\x5e\x09\x56\x76\x21\xcb\x17\x48\x65\xb5\x2c\x9e\x59\xb1\x86\xf8\xc9\xb8\x72\x11\x89\xf0\xa8\xff\x5a\x43\x92\x0f\xcc\x3d\x6a\xe9\x8f\xda\xfc\x7f\xfd\x76\xa4\x7b\xc5\x4a\xf4\xc3\xdd\x50\xfa\x58\xf4\x6f\x26\x79\x50\xc9\x92\x42\x50\xe8\x38\xcd\x35\xf9\x87\x2b\x59\x37\xdd\xbc\xef\xd4\xd2\xcb\xfd\x4e\x5f\xcf\x2b\x13\x48\xb3\x48\x02\xf0\x20\x58\x7f\x00\xf4\x93\xb2\x9c\x05\x55\x3b\x7b\xbb\xaa\x26\x20\x07\x5d\x74\x26\x8d\x16\x55\x19\xd4\x6d\x0f\x69\x1c\xd9\x95\x48\xc2\x9e\xd3\x6a\x48\x6e\xad\x1f\x70\x83\x70\xeb\xf9\x2d\x8c\x9c\x10\x60\xe6\x50\xa3\xc0\x5d\x5c\xd9\x41\x39\x1e\xef\xab\xa2\x31\x51\xa0\xb4\x59\xa2\x66\x27\xd1\x0b\x26\xef\x6a\xac\xb3\xa4\x98\x32\xe0\x37\x15\xbf\x8c\x13\xd9\xdc\x75\x92\x0d\xb1\x10\x4b\xaa\xaa\x4d\xa6\x36\xba\xaf\xce\xcf\xcb\x3d\x86\x5d\xd5\x77\xd2\x1b\x42\xb5\xe6\xbe\xfc\xf4\x3f\x7e\x5f\x4b\x28\xcd\x72\xe2\xb5\x35\x9a\x28\x1e\xab\xdc\x9e\x97\xe3\xee\x0f\x4c\x47\xcf\xa1\xf4\x52\x09\xd5\x42\x4a\x49\x6b\x3e\x07\x40\xc5\x97\x2d\x83\xc7\xcb\x7f\x13\x99\xcb\xc5\x00\xe5\xef\xd1\xfd\x79\xf5\x98\x20\x47\xd8\x70\x4e\xb0\x90\xd0\x43\x9f\xff\x15\x32\x1c\x33\x82\x14\x99\x97\x1d\x82\x1a\x34\x33\xf1\x14\x1e\x1f\xe6\x05\xec\xae\x33\x27\x8f\x63\x17\xfd\x27\x62\x1f\xcc\xe1\xc5\x93\xbe\x17\x78\xaf\x71\xde\xda\x0c\xef\x89\xd8\xe1\x4a\xa5\x69\x9c\x24\xb1\x8e\x21\x54\x66\x28\xcc\xb4\x99\x15\x7a\x62\x7f\x8c\xe6\xb8\x99\xd8\x10\x2d\x22\x4b\x6d\x11\x52\x5f\xa6\x27\x7a\x11\xa0\x8b\x39\xb2\xe0\xb8\x22\x54\x63\x20\x36\x08\x10\x57\x60\x30\x10\xc1\xbf\x8e\x8f\x5e\x76\x4f\x0e\xff\xb1\x77\x80\x42\x24\xf7\xc9\xaf\x2a\x74\xdd\x2a\xaa\xd2\x34\xbc\x21\x8c\x7a\x05\xae\x3a\x03\xd1\xdd\xec\xe8\x2c\x5d\xdc\x99\x98\x59\x06\x78\x5e\xc6\xe4\x5c\xec\xf9\x49\x91\xd6\xe5\x6f\xdb\xe2\xe9\x06\xa8\x5d\xe8\xc3\x4f\xe2\x19\x04\x26\x62\x49\x4b\x34\x91\xd6\x9a\x61\x4d\xac\x47\xd9\x74\x9a\xa5\x03\xdd\xb1\x26\x9c\x83\x2a\x9e\x77\x44\x29\x6f\xca\xfe\x2c\x01\x5b\xaa\x27\xfd\x27\x81\x33\x80\x2b\x79\x38\x0d\xf0\xa1\x1e\x74\x40\xd5\x02\xee\x46\x32\x8c\x82\xf3\x6a\x7e\x8f\xd7\xa0\xa8\x3c\xc8\x80\xc0\xa2\xd6\x92\xe6\xe9\xc3\x7c\x8a\xa5\xe7\xda\x33\x85\x7c\x0a\xfc\x91\x67\xe4\xd7\x34\x9b\xe3\x3f\x0a\x19\x9b\x07\xfe\x3d\x2e\x27\x0f\x1a\x1a\x87\xc3\xa4\xbf\x75\x6c\x59\xdb\x42\x56\x31\x1f\xd0\xdd\x7e\xa6\x55\x87\x93\x1a\xc3\xad\xeb\x14\x31\xc3\x09\x7c\x18\xf8\x56\x0f\xf0\xb1\xaf\x4b\x4d\x75\x76\xa3\xf3\xea\xfa\xb3\x9f\xf1\x44\x3d\x44\x0b\x11\x8a\xf7\xd8\xcd\x7b\x08\xcc\xcd\x35\x24\x26\xb8\xb3\xf1\xd2\xeb\xf9\x19\x47\xe1\x35\xbb\x3f\xde\x65\xcd\x8e\x74\x65\xd7\xc2\x62\xc9\x63\xaa\xe6\xb1\x44\x7d\xdb\xfe\xda\x0e\x3b\x69\xdc\xd7\xc9\x3c\x83\xe5\x6a\xd1\x39\xa9\x64\x7e\x25\x75\x8a\x8d\xd2\x04\xd8\x98\x83\xeb\x37\xb2\x36\x55\xc7\xce\xac\x29\x2e\x07\x2a\x6c\x63\x9d\x72\x70\xae\x65\x0a\xee\xdb\x84\xdb\xff\x92\x25\x09\x3a\x6d\xea\x60\x0f\xd8\xda\xa4\x74\x5a\xea\xf4\xa5\xad\x4f\x34\x5b\xe5\x2c\xea\x2a\xcb\xbf\x65\x2c\xb5\xf6\xd2\x62\x9e\x5b\x3f\x3c\x79\x13\xe3\x73\xca\x35\x3e\xa9\x58\xa3\x60\xd0\x42\xdb\x8d\x4d\x95\xa3\xd7\x9b\x12\xc3\x70\x63\x17\x08\xcb\xc3\x33\xc1\x38\xdb\x1c\x59\x0d\xa6\x3b\x96\xfb\xd1\xe7\x29\x55\x21\x9b\xcf\x4b\x08\x10\x9f\x0a\xe3\x90\x59\x33\x15\x7e\xec\xeb\x06\xec\x21\x25\xc5\x39\xd6\x82\x74\xea\x58\x66\x9c\x2f\xa8\xc9\xc1\x73\xa9\x1b\xd6\x6e\xa2\xae\x8a\xda\xd5\x11\x3f\x70\x0d\x55\xd0\x05\xe7\x34\x9e\x1b\x1b\x1b\x6f\xb0\x5d\x80\xc1\xa5\x83\xc2\x8a\x5c\xbd\xc9\xd0\x2c\x38\x27\xa3\x41\x66\xaf\x2f\x66\x57\x43\x1f\xee\xee\x2c\x71\xb5\x8f\x89\xea\x0b\x43\x63\x5d\x45\xc4\x41\x6f\x09\x88\x83\x32\x87\x98\x4c\x5e\xbc\x8f\x07\x61\x73\x05\x11\x49\x6b\xae\x31\x91\x85\xc9\x58\x80\x8d\x5e\xad\x6a\x88\x8d\x89\xa7\xff\xae\xe2\xa5\x13\x72\xc3\x00\x67\xd3\x5a\x5b\x0d\xff\x3d\xbb\xca\xd8\x72\x7c\x40\x07\xd5\x96\x62\xf3\x32\x37\x7b\xcb\x9a\xc9\x35\x44\x85\x9c\xb9\x7b\xc8\x5a\x2d\x5f\x2d\x2d\xb4\x51\xc3\xa0\x9c\x4d\xfd\xd5\xab\x6c\x11\x4e\xce\x29\x5b\xbc\xc0\x4d\x0d\x3a\x8b\x2a\xf8\xcb\xbe\x7c\xe9\xf5\xf2\x13\x2b\xeb\x89\x91\x68\x3b\x88\x04\xf7\x48\xfc\x45\x8b\xfa\xa9\x12\xa3\xfa\x3c\x62\x78\x1a\xbb\x14\xe2\x62\x84\xa9\x8c\xbb\xd6\x20\x75\x12\x8f\x26\xc4\xc3\xea\x10\x09\x38\xb3\xae\x75\x02\x86\x3c\xe7\x32\xbf\x80\x6b\xeb\x3a\x33\xd7\x16\x45\xfa\xa0\x7c\xfc\x65\x76\x01\xee\x8b\xcd\x29\xce\xb1\xdd\xe6\x82\xb2\xa7\x0d\x7e\xca\x07\xf2\x5a\xe7\x38\xb0\xa9\xc0\x40\x41\xaf\xe1\xa2\xf6\x18\xb0\xc0\x0c\xb3\xf0\x26\x83\xa5\x20\x6a\x45\x6d\xb4\x2c\xf6\xa9\x8d\xd3\x82\xcf\x9f\x6e\x14\x17\xe1\x30\x91\xdd\x54\xde\x94\xdd\x24\x4e\x65\xf5\x41\x64\xe9\xfd\x53\x43\xaf\x9e\x9a\xcb\x4a\xd4\x86\x78\x36\x9e\xd0\x73\xf9\x32\xcf\xa6\x08\xcd\xd3\x7f\xc8\x5b\x48\x79\x19\xcc\xf3\x04\xdc\xe1\x81\x48\x22\x21\x56\xaf\x61\xf5\x97\x42\xda\xe0\xdc\x74\x0c\x93\x79\x21\xe5\xec\x8d\xf1\x18\x34\xbd\x10\xfa\x6a\xef\x7f\xe3\x50\xcf\x9a\x13\x2d\x3d\xc9\x3c\x08\x88\x9d\x27\xa3\x41\x70\xab\x47\x90\xfc\xab\xd0\xfb\x46\x1a\x0a\x03\xb1\xb5\x00\xd4\x5a\x73\x6d\x1e\xa0\xea\x78\xda\x24\x00\x14\xe9\x11\xfa\xf5\x5b\x3d\x86\xfa\xed\xbe\xa6\x4c\x7f\xee\x1b\x4a\x55\xf4\x05\xea\xf8\xcd\xd7\x1b\x98\x0e\xfc\xf7\x95\xaa\xee\xbe\x9f\x28\x34\xc1\x91\x8c\xe2\x5c\xe1\x3c\xdc\x98\x65\x39\x03\xc7\x58\xd3\x0f\x44\x6f\xa0\x4f\x22\x60\x1c\xa4\xfa\x59\x64\xa3\x4b\x59\x82\x21\xb3\xaa\x7e\x5e\x7b\x3d\xd7\xe1\x43\xc7\x79\xd4\x39\xc5\xad\x59\x9e\xcd\x1c\x4a\xed\xe8\x31\x9e\x9e\xaa\xf2\xf3\x46\x19\xa5\xc6\x5a\xaa\xb6\xed\x36\xab\x44\xd3\xac\x82\xdb\x80\x7b\x1d\xef\xa8\xb9\x35\xaa\x40\x7b\x02\x15\x07\x8a\x76\x33\xb4\xd8\xcc\x64\x63\xd7\x47\x19\xcb\x3b\xee\x64\xbc\x74\x18\x5f\x69\xa9\x1a\x13\x1b\x3b\xa0\x7d\xea\x94\x96\xcd\x61\xf3\xd3\xe6\xb0\xb9\xf2\x76\xd7\xd1\x0a\xb6\xd7\x7e\xf1\x9f\x82\x9d\x7f\xde\x5a\x00\x57\x7a\x13\x67\x9a\xbc\xd6\x9d\x55\x6c\xa7\x63\x24\x34\x1c\x8f\xb6\x5b\xab\x6e\x55\xf9\x98\xe0\x8f\x49\x63\x1e\xea\xab\x59\xb5\xbf\x94\xb7\x85\x3e\x2c\xba\xcf\x71\x9c\x28\xde\xd7\x8a\x2a\xe0\xf7\x8e\x06\xdb\x0b\x3d\xa1\x39\x66\x5d\xec\x86\x99\xc0\x44\xd1\xc6\x9d\xa4\x16\x25\x0c\x70\x9c\xa7\xd4\xdf\x5e\xfc\xf7\x46\x08\x13\x6c\x88\x82\xcf\x7e\x4e\x24\x8a\x46\x07\x9a\x05\xee\x33\xd5\x04\xb4\xee\x00\xd5\x72\x2b\xa0\x71\xdf\xf2\x6e\x3b\xaf\xd0\x34\x62\x6c\x93\xdb\x80\x15\x34\x04\x3c\xa5\x64\xdd\x45\x19\x52\xb8\x39\x1d\xb3\xb5\x9e\x5f\xd4\x35\x77\xad\xe8\x43\x5b\x43\x10\x1f\xa5\xe5\x1d\xba\xa6\x2f\x0e\x82\xfe\x5b\x6e\x3f\x46\x54\x01\xe1\x6f\x8d\x84\xca\xad\xb4\x65\xaa\x38\xc9\x92\xb7\xad\xe4\x94\x14\x4e\x90\xea\xa5\x26\x89\x79\xc7\x7d\xf5\x35\x57\x3c\xa3\xb0\xb3\x4b\x64\x48\x4b\x98\x6a\x2e\x17\x32\xbc\x3e\xae\x4e\x5c\x18\xb9\x08\x92\xa2\x48\xc7\x39\x63\x0b\xd0\xa6\x95\x83\x05\xe3\xd9\x5d\x0c\x66\x30\x67\xb3\x1a\xc1\xcf\x72\x35\x41\xbf\x2f\x76\x92\x24\xbb\xc6\x34\xc6\xb0\x2f\x01\x45\x8a\xed\x2b\x9e\xf2\x54\x5f\xd5\xe7\x6d\x11\x8a\x24\x14\x63\xa9\x16\x60\xe7\xcd\xfe\x59\x5a\x43\x25\xea\x95\x0c\x86\xbd\xb6\x19\x7b\x36\xcf\x19\x0b\x2e\x98\xd7\x8b\x53\x6b\xe3\xbc\x26\xac\xa6\x17\x58\x9a\xf5\x43\x2f\x39\x53\x81\x3f\x25\x9c\x75\xd5\x93\x62\x52\xa2\x63\xa9\xd1\x97\x44\x38\x9e\x34\xd2\x13\x9c\x38\x5f\xad\x1c\xc4\xf8\xe5\xf8\x81\x88\x38\xe5\xe3\x90\x2c\xeb\xb7\xae\x72\x73\xf7\x0d\x9d\x80\x18\x89\xaf\x50\xbf\x2f\x7e\xcb\xb2\x4b\x31\x9f\xb9\x59\xc7\xa7\x71\x14\x25\xf2\x3a\xcc\xa5\x79\x19\x4d\x42\x70\xc5\x3b\xf5\xe8\x4e\xc7\x9a\x6a\xd8\xe7\x0a\xd9\xad\x88\x6d\xf6\x86\xc6\x30\xa9\xee\x72\x57\x4e\xb0\x46\x68\x9b\xc7\xd9\xa4\x79\x48\x8b\x49\x3c\xd6\x26\x7a\xec\xa4\x2a\xfa\x61\x7e\xd8\xe5\x53\xe0\xf6\xa8\x11\xaf\xd1\x63\xc9\xf5\xf9\x67\x93\x68\x7f\xcb\xb9\x3d\xea\x20\x24\xa9\x43\x05\xc4\xd9\xbc\x98\xe8\xa7\xd5\x8a\x00\x82\x1b\xf3\xa7\x43\x47\x69\xcd\xb0\x2f\x2f\x15\x9c\xdd\x03\xc7\x8a\x08\xeb\xe2\xb2\xb4\x3b\xc2\xf9\xd9\xe6\xa8\xa1\x23\x38\x61\x63\x93\x60\xdd\xa7\x40\x17\xb2\x7c\x9b\xc7\x9c\x00\xe1\x17\x97\xfe\x3c\xec\x24\x9a\xc1\x8d\x1f\x9b\x25\x0b\x2b\x7b\xb2\xd5\x05\x64\x31\xb3\x00\x6f\x22\x08\x7a\x23\xc2\x24\x0e\x0b\x4a\x88\x68\xd2\x03\x19\x92\x8c\x47\xa7\x58\x55\xf1\xa5\x5e\xb0\x60\xa0\x58\x3c\x4c\x07\x66\xe8\xb3\x6a\xd2\x4d\xc3\xa9\x2c\x34\x61\xf6\x16\x9c\xa9\xa8\x4c\xb4\x7a\xb6\x2c\xbe\xee\x10\xd6\x58\x5f\x09\x5c\xb8\xcd\x69\x66\xc7\xb2\x57\xd8\xfb\x80\xfe\x35\x12\xb5\x79\x8e\x21\x79\x34\x97\xd9\x36\xe1\xd8\xbf\xa2\x76\xee\x0b\x2c\x0a\x1a\x95\xfc\x29\x4b\x63\x3e\xa0\xf3\x95\x95\x95\xd6\xac\x56\x45\xe8\x05\xf3\x59\x12\x29\x77\x87\x69\xde\x0a\x1b\x06\xd0\xea\x99\xd0\x24\x16\x82\xa0\xaa\xd2\x99\x24\x09\x20\x9a\xb7\x82\xc1\x20\x13\xfe\x8d\x92\xb0\x28\x6a\x42\x8f\x6e\xbb\x21\xe9\x79\x30\x7a\xce\xba\x91\xa4\x79\xea\xf8\x7d\xf0\x0c\x08\x70\xd8\xb5\x5f\x07\xd0\x14\x6c\x52\x63\xf2\xc4\xa9\x87\x35\xe9\x70\x3c\xad\x03\xd2\x5d\x8a\x75\xba\x37\xf5\x28\xcf\x45\x30\x00\xff\x15\xe7\xeb\xc0\x39\xed\x95\x81\x6d\x9a\x7d\x9e\x0e\xa2\xb2\x2b\xd8\x6e\xc1\x7b\xa1\x46\xdd\xda\x67\x4a\xd6\x9a\xbd\x03\x41\x53\xdd\x06\x92\x61\xf1\x9c\xdc\xcb\x6a\x5d\xd0\xb2\xb1\xb3\xb1\x0b\x37\xd3\x86\x6d\x97\x37\x72\x34\x2f\x75\x96\x13\xfd\x83\xdb\x26\xd7\x6c\x2c\xc0\xd9\xd2\xb5\x99\x4e\x96\xb8\x3c\xd3\xcf\x5a\xbd\xb5\xb0\x4d\xc7\x76\x72\x3b\xd3\x5e\x54\xa6\x11\x24\xc9\x1d\xaa\x17\x87\x01\x23\x70\x2e\x1f\x72\x6d\x54\x2c\xc3\x1b\x73\x01\x11\x7e\xd9\x8b\xad\xd6\xfd\x9e\x8a\xf7\x68\x2c\xed\x3d\xe8\x07\x6c\x7f\x63\x7a\xa1\x0f\x5b\x15\x31\x42\xa9\xd6\x80\x58\x2f\xcc\x26\xa2\xfb\xb4\x7a\xb5\xba\x53\x40\x0b\x05\x4a\x69\x4f\x4d\x83\x26\xb3\xbe\xd2\x5c\x87\x26\x76\x95\xe7\xee\xf3\xdf\x37\x75\xe5\xdd\xd3\x52\x78\x47\x72\xab\x6e\xbe\x2e\x58\x4c\x97\xf1\xa5\x54\xfd\xbb\xae\xf9\xb2\x3e\xe9\x9e\x6e\xde\x39\xf1\x15\xbd\x3d\xc3\x36\xa4\xd1\xce\x1a\x22\x6a\xb1\x12\xd7\x04\xc6\x66\x50\x40\x25\x85\x7f\xce\xb2\xb4\x0c\xe3\x54\x2b\x53\xdc\x63\x19\xa6\x11\xc3\x49\x68\xd0\xe1\xa9\xa7\x31\xd6\x34\xae\x04\xc6\xe4\x72\xda\xd7\xad\x41\x91\xcd\xf3\x91\xe3\xbe\x8e\x5f\x9c\x84\x65\x9a\xce\xb8\x78\x67\xf7\x14\x4f\xa3\xcd\xc8\xa3\xf1\x70\x64\xd9\x49\x4d\x89\x46\x76\x4f\xfd\x88\x27\xd0\xef\x00\xff\xe9\xf0\x66\x03\xfa\xd7\xdc\x52\x8b\xc8\x21\xc0\xb2\xe4\xaa\x3a\xbe\x4d\xcb\x70\x54\xc6\x23\x51\xcc\x2f\xc2\x1c\x78\xab\x38\xbd\xca\x2e\x15\xb1\x67\x0b\xac\xd6\x5b\xde\xcc\x42\x4c\x13\x19\xa6\x98\xc7\x14\x9f\xa0\x26\x0f\xac\xa1\x72\xbb\xa8\x7a\x57\x83\x8e\xc2\x42\x8a\x6b\xf0\xeb\x1c\x82\x8d\x84\xfa\xf8\x5e\xd3\x3c\x86\x78\x90\xdc\xf4\xbd\xed\x43\xbc\x7f\xff\xfe\x03\x52\x4a\xc6\x8b\xb4\x6e\x3a\xe2\xb6\x23\xfe\xa0\x08\x2d\x4f\x9c\x84\xb7\xa7\x9b\x1d\xf1\xb4\x23\x9e\xc1\xf3\x46\x35\x73\x32\xa6\x42\xf6\xd8\x2d\xd3\xb7\x19\x08\x5c\xf9\xdf\x17\x33\x75\xb2\xdf\xe3\x33\x9f\x9e\xd3\x9a\xd4\xe7\xb2\x7b\x9d\xc7\x65\x29\xd3\x7a\xf0\xb0\xad\xd9\x75\x0e\x63\xbb\x65\x80\xaa\x1b\xbb\x7a\x07\x28\xf4\x1d\x86\xa3\x4b\x4f\x7f\x67\x2a\x2c\x4f\xc2\x81\xc0\xe8\x7e\xdc\xcb\x99\xc5\xcf\x09\x67\xad\x30\xcf\x2b\x91\xbe\xa9\x99\xb7\x72\x39\x63\x8c\x3e\xc7\xfa\x7e\x18\xa7\x51\xbd\xb9\xbd\x2a\x31\xd5\x80\xc9\xf2\x12\xb0\x64\xb9\xec\xc3\xf7\xe5\xf2\x33\xa8\xeb\x0b\xd1\x1a\xed\xa8\x9a\xcc\xa8\x6c\x72\xa1\xd5\x05\x6d\xd4\xd5\xc3\xe4\x6c\x7a\x9b\xc5\x47\xe8\xfc\x5e\xec\x34\x8b\xf7\xf8\xfd\x8f\xca\xe6\x7d\xaa\xd6\x72\xc6\xe6\x34\x8b\x52\xd6\x53\x42\x68\x10\x18\xb9\x75\x6d\xf0\x68\x3d\xe4\x36\xec\x54\xab\x41\x88\xd5\xd1\x7d\x32\x61\xcc\x6e\x36\xbb\x45\x69\x94\xad\xaf\x8e\x3b\x9b\x28\x89\xba\xe5\x4d\x29\xd3\xc8\xc8\x12\x3b\xfe\x13\xa1\xb1\x77\x3d\x91\xd5\x7a\xf5\x3a\xa1\x25\xd6\xe5\xe6\x22\xed\xeb\x7d\x2e\xd9\x66\x99\x75\x40\x9b\x2e\x3c\x65\xea\x9e\x37\x3a\x0b\x45\xbf\x6b\x97\xbf\x30\x11\xeb\xf7\x6e\x66\x59\x21\x09\x97\x81\xed\x03\x1b\x59\x10\xdd\xe1\xcf\x38\x9d\xc8\x3c\xa6\x89\xe0\xda\x69\xcc\xd7\xcf\x0c\xe8\xe9\x65\x38\x2a\xb3\x1c\xa9\x2d\x8c\xaa\x68\x30\x47\x91\x42\x37\x47\x98\xaa\x99\x98\xea\x25\xb7\xfa\xcc\xbb\x13\xe1\x0f\x7f\xec\xd5\xbe\xfc\xbd\x6e\x9c\x67\x3a\xcd\x97\x38\xed\xc7\xfc\x12\xd2\xe0\xd5\x71\xe1\x64\xf3\xc8\x98\x71\x5e\xf7\x84\x6e\xd8\xa6\x06\xa8\x0e\xb6\xad\x6a\x0d\x2b\x6b\xed\x2a\x39\xcc\x61\x92\xf4\x91\x6e\xea\x7e\xc2\x24\xe1\xab\x48\x8e\x1e\x8a\x2f\x2b\xdc\xc5\xd3\x62\x33\xa7\x06\x2d\x0b\x76\x85\x1d\xd7\x53\x3d\x2c\x6b\x0a\x6e\x15\x72\x24\x40\x99\xaf\xa2\xba\xd9\xd8\x22\xea\x14\x9c\xf0\x0a\x75\x8b\xdf\x88\x38\x05\x1e\xfe\x18\x12\xd1\xf9\xfd\xe9\x5d\x64\xfd\x3e\xea\x3c\xaa\x8c\xc9\x80\x4c\xe2\x61\x3f\x24\x8a\xfb\xa8\xf3\x88\xc6\x42\xf4\x07\x93\x91\x00\x4b\xcf\x6a\xd2\x43\xc7\xa9\x22\x88\x3b\xf3\x72\x82\x3b\x88\xdc\x2c\x2d\x1d\x6d\x55\x9d\x34\x71\x5e\x98\x57\xfd\xf6\xdf\x1a\x35\x5b\xc6\xc6\xcf\x8b\xf8\xd4\xa8\x8b\x32\x6c\xbe\x63\xef\xb4\xb8\x33\xf1\xfe\x17\x19\xe6\x32\x17\xdf\x7c\x84\xa6\xf7\xef\xcf\x2a\x56\x48\xfc\xe6\x84\xce\x90\xa5\x03\xe2\x52\xbd\x24\x15\xf5\xf8\xc6\xd3\x46\xc1\x2a\xa4\x61\x52\xf4\x71\x09\x99\x36\x2a\x92\x37\x32\xc2\x9b\xa5\xb1\x51\x8c\xb5\xc8\xc6\xc8\x1a\x24\x67\xab\x35\x2f\xb3\x6e\x43\x0f\xc0\xdf\xa1\xcc\x67\x1f\x02\x49\x2e\xe8\x05\xea\x76\x51\xda\xd2\x8d\x8b\x2e\xcd\xd8\x7a\xcb\x61\xbc\x83\xbf\x67\x28\x97\x3e\x87\x80\x8e\xa6\x70\xef\xf8\xd9\xbb\xe3\x93\xa3\xfd\x83\x5f\x8f\xc5\xb6\x37\xed\x35\xad\xa2\x25\xa8\x54\xbd\xdd\x93\x77\xaf\xf7\x4e\x7e\x3b\x7c\xa1\xb3\xe9\xbb\x50\xb6\x02\xd5\x7b\xd0\x11\x41\xc7\x9e\xf3\xf7\xe0\x51\xc3\x6e\x32\x55\xe7\xbd\xd0\x6a\x83\x7e\xdf\x64\x0a\x29\x47\xcf\x7e\xec\x51\xc6\xf0\x38\xeb\xcb\xd1\x34\x7c\xfa\xfd\xd3\xfe\x5f\x0a\x39\xea\x86\x35\x9d\x9c\xa5\xdf\xb4\x3e\x8a\x32\xcc\x2f\x64\x39\x10\x01\x8c\x13\x74\x30\xe4\xd3\x00\x24\x16\x1d\x45\xb7\x47\x32\x1a\x38\x33\xbd\xbb\x13\x6b\xee\x6c\xb4\x04\x4b\xf5\xca\x1c\x0f\x20\xf8\x65\x21\x15\xa3\xc1\xa5\xd2\x3a\xae\x9d\x59\x59\xf4\x46\xf3\x36\x1e\x9e\x65\xed\x8e\x30\xed\x5d\x97\x4d\xf1\x5c\xad\x92\x18\xd8\x72\x6b\x89\x5d\x1f\xe9\xf0\x41\x28\xfc\xcd\x34\x9c\x2d\x41\x9a\xb8\x24\x11\x49\xd0\xee\x4d\xc3\x59\x15\xf9\x7e\x0b\x0b\x88\xb0\x21\x8b\x63\xf2\x38\x5e\x09\x0b\x27\x61\x81\xa6\x7a\xb2\xe8\x92\xac\xb8\x0e\xb5\xdf\x16\xb2\x38\xc9\xd0\x4a\x69\xb5\x8e\xe7\x85\x2c\xba\x65\xa6\x93\xbc\x58\x1c\xff\x6d\xe7\xf8\xdd\xf1\x9b\xbd\xdd\xfd\xbd\xe3\x77\xc7\x6f\xdf\xbc\x39\x3c\x3a\x71\x11\xb4\x32\x93\x56\x30\x0d\xd1\xa5\x4f\xdd\xf1\x2f\xbf\xfd\xb1\x2b\xe2\xa2\x98\x4b\xec\xef\xed\xf1\xde\xf1\xbb\x93\xc3\x77\xaf\xf6\x0e\x7e\x3d\xf9\xcd\xed\x8a\x83\x6d\x7b\xa9\xc7\xf4\x69\x38\xfb\x6c\x44\x9f\x86\x33\x68\x8b\xf9\xcb\x22\x78\x03\xb2\x64\x0c\x3f\xff\x4c\x4b\xfd\x90\xc3\xb0\x56\xb7\x60\xea\x54\x78\x13\xd7\xc7\x62\x1a\xce\xd8\xa9\x98\x86\x33\xf3\xc4\x19\xa7\xa2\xff\x44\x60\x78\x80\x9d\xfc\x42\x3c\xe9\xfb\xa7\x44\x21\x22\x1c\x85\x8e\xb0\x8d\x3a\xec\xe5\x8a\xbb\x29\xfe\x26\x36\xc5\x73\x57\xe5\x39\x60\x0e\xce\xfe\xd9\x50\xdb\x74\x2d\x93\xe4\x1f\x69\x76\x9d\x1e\xdf\x4e\x87\x99\xef\xd0\x61\x91\x48\xd5\xeb\x5e\xaa\x8a\xdd\x02\x6a\x32\xd4\x39\x39\x24\xb2\xf0\xee\x64\xe7\x57\xb1\xed\xf7\xd9\x0a\xb4\xa8\xf5\x24\xb4\x6f\x99\x12\xb5\xc9\x64\xfe\xa8\x7e\x9d\x3a\xfd\x9c\x8b\x6d\x11\xfc\x11\xd4\x73\x16\x24\xb9\x2d\xc1\xf3\xdc\x71\x5c\xfd\xe3\x3c\xb0\x93\x73\x3a\x64\x58\xdd\x78\x99\xa0\x60\xba\x5b\x86\x17\x95\x53\x07\x2c\x6f\x36\x3e\x0a\xaf\x1b\x3b\xa0\x2a\xdd\x3c\xbc\x36\xcd\xfe\x4b\xd6\x57\x71\x86\xc7\xcf\xc4\x75\x9e\xa5\x17\x62\x22\x73\x3a\x92\xbb\x87\x47\x47\x7b\xbb\x27\xef\x76\x8e\x7e\x7d\xfb\x7a\xef\xe0\x44\xdd\x57\x76\x5a\x56\xea\xc3\x83\xce\x1a\x64\xda\x12\xf7\xad\xb6\x5a\x6c\x75\x2e\xe8\x5b\xa0\x4f\xed\x98\xb0\x12\x58\xfc\xfd\xbd\xcd\x4d\x81\x4c\x9c\xd8\x81\x60\x7f\xe2\x85\x4c\x63\x9d\x7d\x55\xbb\x1c\xdd\xfe\x2a\x1d\x73\x82\x56\x5c\xf2\x90\x31\xcc\x49\x50\xbf\x7d\x4a\x1b\x97\xc5\xfa\x04\xaa\x2e\xc9\x2f\x50\x4e\x67\xe5\x2d\xb9\x05\x1a\xb6\xfe\x42\x96\xf0\xde\x28\x43\x32\x14\xde\x3b\xfe\x7e\x5d\xbc\x6f\xf4\x8a\x7e\x5f\x83\x6e\xf5\x78\xf4\x9c\xe3\xc4\xc0\x99\x08\x7b\xbe\x1e\x76\xd4\xd0\x1d\x32\x57\xe6\xc2\xb2\xb8\xac\xde\x66\x6f\xad\xeb\xf6\x40\x57\x48\xe7\x49\xa2\xca\x0e\xe6\x49\x12\x9c\x69\x1f\x83\x9f\x7f\x66\xbb\x0e\x62\x2a\x2c\x1a\x08\x62\x35\x5b\x6a\xc6\xdb\xb4\xd0\xad\x43\x63\x2d\xa6\xc0\xeb\xb8\x53\xa2\x7d\x25\x23\x0a\xf1\x5c\x41\x6c\x06\x1a\xce\xe3\xa4\x8c\x53\x7f\x94\x2a\x32\xf1\xf5\x68\x1d\xb6\x4d\x07\x0a\x15\x0d\x1a\x19\x54\xd1\xfd\xb4\x70\x61\x5c\x54\x3c\x24\x88\x10\x62\x70\x63\xa7\x59\x1d\x02\x9f\x20\xa5\x70\x23\x70\x3c\xe7\x58\x09\xa1\x0c\x69\xb5\xeb\xc5\x3d\x5f\x89\x38\x2c\xa3\x0c\xec\x9a\x6b\xc6\x3f\xba\xec\xd4\xdb\x08\x73\xe6\x50\xec\x8e\x15\xef\xbe\xac\xda\x31\x02\xfe\x00\xbc\xfe\x78\x6f\x35\x66\x83\xe5\x1a\x33\x4d\x7b\x21\xb8\x1b\xce\x14\x19\x37\xb1\x2e\x02\xa0\xc7\xf7\x5f\x87\x26\xe7\x12\x4f\x4b\x63\x73\x5d\x81\x3d\x2c\x8c\x22\xb0\xbe\x05\x4e\xa5\x6b\xc6\x7d\xc8\x96\x7d\x89\x3d\x02\xf7\x9a\xda\x35\x32\x8b\x8e\x53\x6a\xf9\xe0\x74\x84\xb9\x07\x82\x8e\x99\x68\x47\x7c\x14\xf3\xb4\x08\xc7\x12\x19\x18\xa3\x84\xa1\xed\xb8\x48\xb2\x61\xd8\x7c\x2d\x61\x71\xd3\x03\x1f\x4b\x7b\x56\x71\x46\x9d\x3e\x6c\x5f\x16\x49\x83\x5b\xc8\x8c\x75\x44\x91\x8f\x3a\x82\x2c\x1e\x68\x25\xd4\x5d\xd3\xa2\x5c\x72\x22\x4e\x55\x95\xb6\x5d\x1e\xdd\x10\x82\x6b\x15\xf9\x08\xee\x0e\xdb\x05\x27\xc4\x58\x75\x21\xb1\xb8\x90\xe5\x2f\x8a\x0e\xee\xa7\xcd\x4b\x25\xcb\x2e\xd0\xca\x2e\x8b\x10\x8e\xc0\x90\xbd\xef\xed\x6b\x98\xe7\x32\xdc\xc3\x36\x5d\xca\xf8\x74\xfb\x85\x58\x09\x8c\xfa\x72\xbc\x7b\xb4\xff\xe6\xe4\xf0\xe8\xb8\xb1\x75\x24\x0b\xb8\xba\xb3\xbc\x60\x2c\x08\x31\xba\x75\xcc\x07\xf1\xce\xcb\xb7\x72\xf7\xf0\xe0\xf8\xe4\xe8\xed\xee\xc9\xe1\xd1\xbb\x83\x9d\xd7\x7b\xec\x92\xdc\xcd\xd2\xa2\xcc\xe7\x23\x78\xe1\xb1\xc5\xae\xb6\xe1\x8e\x2a\x6c\x65\xd1\x17\xba\xb2\xd4\xbd\x31\x4b\x27\xc8\x67\xff\xf8\xb1\x33\xe6\xe3\xc7\x62\x8d\xfd\x3e\xa5\xe9\x9e\x1b\x46\xdc\xed\xbc\xc5\xea\x76\xf4\xda\x74\x7c\xd3\xe1\x79\x1e\x0e\x13\x3a\x76\xc6\x66\x03\x5e\x16\xb5\x9c\x16\x28\x7f\x8d\x6c\xa6\xcd\x75\x8d\x75\x82\x2e\x97\x6f\x72\x00\x62\x19\x16\x80\x9c\xb4\x62\x2b\x12\xce\xc6\xbc\x6e\xdb\xd3\x75\x32\x15\xfa\x7e\x3a\xca\xf2\x5c\x93\x75\x4c\x57\xf2\xdc\xa4\x90\x10\x01\x5a\x3e\xa8\xbf\xe3\xf4\x4a\x67\xec\xd4\xa6\x81\x86\xc3\xd9\x6a\x9e\xc0\xc7\xfb\x2f\xf5\x0a\x01\x71\x13\x3c\xc4\xb3\xdc\x77\x85\x63\xa2\x26\x5d\x83\xa1\xf5\xfe\xc9\xde\xd1\xce\xc9\xe1\x51\x1d\x5e\xeb\xfa\x56\xab\xa3\x9e\x83\x6f\x8c\x72\x60\x5b\x78\x4f\x55\x7d\x51\x8c\x26\x72\x74\x29\xac\x03\x04\xd6\x13\xba\xbf\x85\x67\xc4\xb0\x8e\x96\x47\x5c\x73\x78\xc4\xc7\x8f\x45\xcb\xcc\xb5\x87\x3d\x2b\x26\x31\x86\x50\xe4\x2e\x88\xa7\x7a\x7a\xe7\x54\xa5\xed\x5e\xc5\x0f\xe1\x5a\x3e\x65\x8d\xbf\xd4\xfb\x67\xe5\x5d\x5a\x6d\x69\xd5\x99\x80\x75\xe5\xb1\xbf\xec\x1b\xc3\x2c\x1a\x1e\x8c\xbb\x3b\xf5\x31\xf8\xf9\x67\x33\x92\x2d\x30\x0b\x72\xaa\xd9\x9e\xb8\x6c\x9f\xbb\x8b\x1c\xa6\x4b\x64\x98\x61\xca\x65\x97\x88\x41\x61\x92\x88\x22\x53\x5c\x85\xe2\x55\xb2\xd4\x20\x8f\x28\x4a\x39\xa3\xdc\xfd\xe1\x58\x8a\x51\x92\x15\x54\x85\x1e\x57\x0b\x57\x00\x3b\xe9\x88\x71\x6a\x72\x1b\xed\x1d\x9c\x1c\xed\xef\x1d\x37\xbe\xba\xa8\x5c\x3c\x17\xe3\xb4\xa5\x27\x43\xd9\x89\x4e\x37\xce\xa9\x9f\xd3\x4d\xc8\x08\x33\x4e\xa9\x64\x8b\x14\x5f\xff\xd6\xfb\xb6\xf7\xbd\x59\xa7\xdd\x24\x2b\x24\x03\x63\x94\x29\x1e\xd7\xc4\xb3\xae\x3c\xea\x10\x10\xe4\x28\x14\x30\xaf\xb5\x79\xb1\xee\xe2\x34\xc0\x82\xe0\x9c\x45\x59\x72\xea\xae\xb9\x21\xde\xcc\x04\x78\x25\x14\x3d\xea\x3e\x4d\x4e\x1c\x0a\x88\xa8\x60\xf1\x88\xf1\x27\xec\x2b\xa5\x3d\x57\xe7\x53\xaf\x86\x99\x4d\xc3\x59\x2a\xba\x5c\xc6\x98\xe5\x24\xc2\x63\xbc\xec\x12\xc1\x9f\x2b\xe6\xab\xd5\x5f\xf3\xea\x1a\x51\xba\xaa\x56\x97\xf4\x8f\xa6\xe9\x85\x2c\x57\x04\x5c\x31\x42\x4d\x30\xab\x95\xfe\x3d\x2e\x27\xc7\xe1\x58\xee\x6b\xd9\xe9\x2e\x21\x71\x23\x1d\x0a\x93\xa4\xab\x70\xbe\xab\x70\xde\xca\x5c\xbb\x84\xfd\x8c\x54\x1c\xe9\xc7\xa4\xc5\xfa\xa2\xcc\x66\x33\x19\xe9\x17\x38\x37\x20\xa4\x22\xb1\x2d\xe8\x2f\x6b\xfb\x65\x5e\xa5\xce\x4b\x92\xf6\x11\x00\x00\xbb\xc3\x25\x87\x6d\x98\x48\x3c\x6c\x68\xe0\xb3\x73\xfc\x8e\x8e\x53\x47\xec\x1f\xbf\xd3\x94\x86\x31\x42\xc3\x6c\x9e\x46\xda\x58\x42\xab\xb1\xeb\x3a\x10\xcf\xc5\x53\x31\x10\x9b\x4c\xf9\x6d\x8e\x95\xfa\xeb\x65\xda\x11\xa0\x1a\xe9\x08\xc4\x01\x3d\xff\x8e\x48\xe5\x8d\x62\xa8\x4b\x39\x63\xcc\x51\x15\x1c\x61\x89\x0e\x1d\xb8\x61\x22\x6b\x4c\xff\x71\x34\x64\xdb\x5c\x0c\x31\x6b\xd0\xde\xaa\x28\xc2\xa8\xd5\x9a\x6b\xd3\x57\xe1\x42\x4e\x80\x35\xd7\x21\x96\x74\x7f\x26\x28\x56\xbf\x0f\x0c\xfd\x34\x2e\x42\x6d\xeb\x4b\x96\x3d\xe6\x26\xb2\x23\xd7\x1e\xbf\x16\x02\xc2\x7d\x30\xe1\x5d\x01\x6b\x27\xb6\xc5\x86\x5e\x3f\xb1\x6d\x0e\x9c\x99\x97\xb6\x84\xdf\x12\x46\x00\x0b\xed\xb6\xf0\x9f\xf5\x75\x2f\x3c\x01\xa1\x94\xdd\xc5\x33\x16\x47\xe0\xb9\xbb\xf9\x96\xd6\x02\xc9\xb7\x5b\x70\x0a\x7d\x9f\x23\xf1\x55\x65\x8a\xf6\xf2\x8e\x06\x5e\x47\x7e\x43\x16\x56\x13\xc9\x25\x80\x05\xb1\x15\x0a\x6e\x3d\x90\x8d\xe9\x38\xb5\x59\xd8\x08\x2d\xc3\x42\xdf\x3a\x96\x9d\x08\xab\xb6\x20\x47\x64\xdb\x0b\x92\xe6\xe2\xd1\xcb\x94\x11\x5c\x83\x1d\x64\x6f\x98\xa2\xa9\x87\x6e\xd2\x53\xbf\xa1\x9c\x3c\x10\xd6\xf4\x72\xa8\x02\x9f\x70\xf7\xa2\x2c\x75\xec\x2f\x49\xb0\xb4\x80\xe8\xb0\xdb\xc8\x59\x35\x5c\xda\x1e\x5d\x92\x76\xc7\x6a\x50\x59\x8f\xb3\x2d\x82\xcc\xca\xab\x3e\x6d\x59\x17\x2e\x29\x52\x20\xa2\x3e\x40\xbc\x1c\x8a\xe3\xd0\xb7\x6a\x37\xa8\xbe\xa0\x4a\x2e\x8f\xf2\xa7\x32\x69\xf0\x9c\xdc\x79\xb9\xf7\x6e\xf7\xd5\xe1\xf1\xfe\xc1\xaf\x6a\x0e\x6a\x86\xa8\x07\xd0\xfc\x87\xbe\x2c\x80\x3a\x6f\x54\x88\x9c\xda\x4e\xb4\xbb\xb4\xae\x78\x29\xe4\x11\x71\xde\x56\xae\x65\xab\xf8\x08\x81\xf2\x07\x62\x6d\x0d\xbb\x5e\x5f\xb7\xe9\xd1\xb4\xd3\x3e\x31\x14\x0d\x1d\x79\x80\xb3\xf4\x99\xf7\xda\xc0\x4c\xd4\x00\xc9\x39\xf1\xba\x8e\xf9\x13\xd0\xf6\xb3\x24\xe8\x04\x10\xcb\x6e\x02\xa3\x81\x45\x25\xbe\x47\xc6\x79\x36\x6d\x55\x41\xe8\x78\xaf\x4e\x24\xb5\x4f\xb7\x48\x20\xb4\x4c\x9e\xbe\x90\xb1\x94\x37\x72\xd4\x11\xc7\xff\xd8\x7f\xa3\xd7\x86\x3f\x3f\xf9\x77\x78\x69\xf3\x45\x34\x87\x40\xe3\x00\xee\x33\xae\xd7\xfe\xe1\x01\x93\x10\xda\x1a\x8c\x4b\x05\x8f\x68\xcd\x88\x19\xe7\x3e\xfc\xb2\x6c\xd5\xeb\x12\xf5\x2d\x40\xa2\x1a\x44\xaa\x03\x13\xa5\x6c\xb5\x61\xb4\x59\x7e\x07\xf5\xaf\x5a\xb6\x16\x82\xda\x5e\x4d\xab\x61\x00\xa8\x0c\xfc\x59\x8f\x0e\x68\xc2\xb8\x8e\x86\x36\x5d\x7b\x53\x7f\xc1\xd7\xdd\xca\xa2\xa5\x7e\x5f\xbc\x27\x0d\x34\x13\x61\xbc\x17\xe1\xb0\x28\xf3\x70\x54\x5a\x7f\x85\x95\x05\xb1\x34\xc0\xc8\x76\xb7\x10\xcf\x0f\x3b\xcc\x42\xd2\xc8\x50\x98\x18\x4b\x6c\xdb\x17\xc6\x61\xbb\xc7\xfa\x35\x98\x7d\xcc\x25\x8f\xbb\x9e\x06\xe8\xee\x4e\xb4\x8e\x79\x27\xbb\x6d\x26\x8b\xf2\x94\x45\x55\x50\xc4\xc0\x6e\x63\xeb\xd8\x23\xf2\x26\x71\x7f\xb3\xf9\x43\x7a\x11\xa7\xb2\xab\x2a\x76\x43\x08\x5b\xd2\xf0\xa8\xee\xb7\xe2\xd9\x24\x4b\xe5\x5d\x3c\xcb\xa2\xbb\x78\x16\x46\xed\xde\x93\x70\x36\x4b\xe4\xb5\x1c\x5e\xc6\x65\x3f\xee\x95\xe0\xeb\xa4\x87\x64\x0a\xe7\xd5\x05\xce\x90\xc4\x2e\xac\x46\x37\x62\x2f\x96\x90\x1b\xe7\xae\x28\xce\x70\xd4\xb3\x9f\xf1\x20\x9a\x94\xd3\xe6\x69\xa8\x42\x3f\x4d\x24\x6a\x73\x9a\x05\xaf\x94\xcf\xb5\x8b\xd5\xbb\x12\xeb\x5b\xe9\xcb\xf1\xbb\xfd\xc3\x66\xb9\x2d\x6d\x5e\x5c\x74\xb5\x8d\x31\x36\xd3\xe9\xc3\xad\xb8\x5e\x7f\xb1\x29\x3d\x6d\x59\x21\xcb\xfd\xe9\x54\x46\x71\x58\x4a\xb3\xac\x32\xcc\x6d\x0d\xf8\xe9\xd7\xd1\xe1\xa7\x4d\x2d\xfa\x40\xc5\x94\x3e\x67\x77\x12\xa6\x29\xd8\x36\x52\x2d\xf7\xbb\x16\x52\x6b\x97\x77\x53\x4d\x7f\xd1\x00\x65\xf3\x14\x43\xc1\x6d\xd0\x97\xff\x9c\x4b\xc8\xfe\x02\xf4\x1f\x94\xae\x07\x47\x7b\x3b\x2f\xfe\xfd\xf8\x64\xe7\x64\x6f\xf7\xb7\x9d\x83\x5f\xf7\x84\xe2\xce\x2a\xc9\xfe\x02\x2b\xa6\x97\x39\xf8\xa8\x2a\x40\x3a\x90\xbc\xde\xac\x60\x3e\x4f\xdd\x97\x5d\xb4\x62\x50\x28\x2d\x87\xeb\x92\x0a\xb5\xd0\x57\x22\xc0\xdb\x9b\x84\xc5\xe1\x75\x6a\x64\xca\x71\xd4\x76\x44\x1e\x63\x35\x2a\xd4\x3c\x8d\x4d\x5c\x3c\x8a\x9d\xe7\x7f\x1e\xa7\xad\xb6\xeb\x9c\x42\x80\xa7\x32\xaf\x87\xdd\x37\xa8\x67\xbc\xc8\x3c\x55\xd5\x1c\x83\x79\x42\x25\xca\x59\xe0\xde\xfd\x57\xea\x7c\x53\xa7\xf3\x14\x7f\xf7\x74\x04\x5f\xdb\x78\x96\x15\x65\xe3\x32\x66\x49\x24\x10\x81\x0b\x31\x09\xaf\x24\xbc\xf6\x4c\x56\x7d\x4c\xc1\xae\xaa\x6a\xec\xca\x8a\x92\x70\xa7\x15\x47\x62\x1d\xf2\x05\x9b\xea\x26\xb5\xfb\xba\x08\xfa\x90\xf3\xdf\xe6\xe7\xa7\x14\xee\xc6\x3a\xe0\x20\x8b\x64\xef\x43\x21\x36\x7a\x3f\xae\x8b\xc7\x62\x7f\x6f\x73\x63\x1d\x7c\x8e\xf8\x41\x60\x39\xf0\x07\xa4\xa1\x53\x87\xe6\xee\x4e\xac\xc1\x69\xa0\x79\x14\xae\x3d\x03\xef\xa1\x35\x4e\x9d\xbd\xd5\x0e\x1f\x7a\xff\x80\xb5\x15\xdb\x42\x47\x57\xa1\xc7\x4e\x8d\x81\x4f\xdc\x86\xc6\xe8\xcf\x6d\x2d\x7d\xe2\xf5\x75\xf3\xb0\x43\xe4\x58\x5f\xa7\x73\xd2\xc8\xfc\x2c\x41\xdf\x54\x5e\xc3\x85\xaf\xab\xeb\xe7\x8e\xc2\x4b\x4f\xf7\x3e\x4e\xc5\x40\x98\x8b\x67\x9c\xb6\xdb\xe4\x7f\x61\xae\x2b\xe6\xbe\xc2\x18\x20\x38\x76\x2d\x82\xd3\xba\x91\x91\x3d\x2a\x7c\x65\xec\xb0\x26\x44\x4e\xac\x49\x4b\x8a\x2c\x42\x35\x1c\x13\xc3\x54\xdb\x4d\xff\xa1\xab\x8f\xa4\x16\xe0\xb2\x70\xf8\x10\x1c\x4d\xfd\x08\xb8\x1a\xa8\xe9\x40\x09\xf4\x84\x57\xf5\xe1\xd1\x7a\x12\x8f\x2e\x5b\x78\x02\xe1\x68\x3b\x53\x87\xbc\x5b\x13\x99\x4b\xd1\xfa\xfb\xb1\xb8\x08\xa7\x92\xd0\xbf\x6d\xc9\x1f\x05\xbc\x60\x61\x1c\x4c\xd1\xe3\xc7\xa6\x5a\x2f\xcd\xae\x57\x05\x8f\xb7\x59\x04\xda\x2f\x3a\x49\x01\xc8\x99\x5d\x22\xdd\x11\x71\x3a\x4a\xe6\x91\x2c\xc4\xef\x72\xf8\x3b\x26\xd1\xd6\xc4\x10\x92\xe6\x88\xf8\xf0\x58\x74\x0d\xfb\x45\x9c\xd7\x28\x9b\xf6\xff\x48\xb2\x38\xcf\x46\x97\xe0\xe0\xd2\xfd\x50\xf4\xc1\x5c\xb0\xe8\x7f\xff\xf4\x5b\x6f\xa6\xde\x85\xa1\x1e\x0d\x78\xfd\xf1\xa8\x06\x74\x97\xa8\x27\xae\x5b\xdf\x04\x69\x27\x7b\x4b\xaa\xdb\x53\x3f\x9f\x6e\x39\xed\xe1\xdb\x66\x2f\x4b\xad\x2f\xb1\xa6\x72\x5b\xee\x9a\x82\x24\x0e\xd2\x81\x33\xea\x83\x37\x45\x47\x8b\xe1\x2a\x6b\xe7\x54\x2d\x2e\xe3\x59\x75\xd1\xf6\xf7\x7e\x00\x82\xe3\x54\x1d\xce\x4b\xcc\x1c\x58\xdc\xa6\x23\x61\x8c\x5f\xe2\xd2\xa9\x27\xe2\xc2\x88\x1c\xbc\x05\x44\xd8\x89\x5c\xfa\x39\x67\xc4\xe3\xc7\x24\xe1\xa6\xe4\x11\xac\x4b\x3f\xb1\x0d\x56\x5c\xa3\x9e\xd0\x86\x1e\x6d\xbb\x0a\x5b\x0a\x7c\x58\x4b\x75\xd3\x36\x1f\xab\xe4\x18\x1d\x78\x21\x25\xab\xaa\x52\xc1\x5a\xd5\x7e\x6b\x21\xe0\xad\x80\xb6\x49\x91\x7b\xfa\xd6\x11\x4c\xe4\x84\xeb\xd9\xf5\x16\xa3\x86\x1b\x88\x53\x97\x2b\x6b\x05\xa8\xf5\x0e\xda\xab\x1e\x26\xc5\xe1\x29\x2a\x27\xd3\x68\x77\x12\x27\x51\xab\xa9\xbf\xd3\xea\xf0\x8d\x24\x99\xba\xc5\x34\xee\xd8\x2d\x18\xd2\xb0\xd7\x24\xbf\x9e\xab\x8f\x4a\xc8\x82\x56\x94\x70\xa1\xf2\x3c\xbd\xae\xc8\x76\xc9\xd4\x0a\x59\xea\x04\x8f\x96\x4a\x74\xc4\x86\x4b\x28\x74\xb8\xeb\xaa\x62\x97\x2e\xc3\x81\xfa\xbf\x8e\xa1\xdc\x03\xfc\xc7\x79\x93\x3c\xec\x31\x70\x21\x4b\xc6\x30\xbd\x30\x86\x0a\xcb\x0c\x2a\x2e\x64\xd9\x55\x4f\x4f\x6d\x51\xd1\xb5\x36\x0e\x41\x1b\x4c\x04\x3e\xf5\xf9\x30\x0d\x47\x79\x56\x86\xc5\x65\xb3\x0e\x26\x2c\x2e\x83\xb6\xe2\xab\x3f\x8f\x8d\x7f\x3d\x47\x3b\xb0\xc3\x21\x05\x0f\xb7\x4c\xb4\x5f\x72\x77\xa7\x8b\x7e\x97\xc3\x7f\xc4\xa5\x5f\x61\x35\x9e\xdd\xba\xad\x57\xac\x7c\x68\x1a\x07\x87\x2f\xf6\xac\xd9\x5e\xfd\xcd\xb9\xe5\x70\x59\x9b\x9b\xa2\x98\x64\xd7\x05\xa4\x5a\xcb\x63\x30\x6e\x4b\x7e\x0f\xf3\x94\x54\x98\xda\x56\xf3\x3d\x5c\xdc\xaf\x63\x5a\xdc\xf7\x8c\xcb\x37\x1f\x9d\xed\x6f\xc2\x8c\x16\xc2\xde\x11\x81\xdb\xd8\x6c\xa0\xfb\x59\x33\xdc\x75\x83\x3c\x7e\xdc\x58\xd6\xd3\x29\x85\xe8\xcd\x9a\xcc\x8b\x09\x26\x98\xe9\x88\x24\x2c\xca\x8e\x62\x67\xe3\xf1\x6d\x47\x94\xd9\xc5\x45\x22\x3b\x90\x45\xa7\xa3\x03\x08\x74\x44\x39\x91\xa9\xe6\x48\xa7\x59\x24\xf3\xd4\xe5\x86\x3d\x28\xb5\xb5\x19\x70\xa2\x6e\x99\x36\x8d\x52\x20\xd4\x13\x19\xd8\xfa\x30\x97\x69\xd9\x11\xe3\x94\x49\xb3\xf5\x8e\x3e\x7e\x2c\x5a\x58\x01\x23\xfa\x00\x47\x13\x65\xd3\x30\x4e\xdb\x6d\x6a\xda\x93\x37\xb1\xcd\xdc\x45\xdc\xaa\x9a\x30\x57\xa3\xa8\xf7\x8b\xfa\xd6\x1b\xdb\x4c\x60\x13\x74\x25\x83\xcf\x46\xb4\x2f\xaa\x39\x41\xcc\x83\x46\x88\x46\xbd\xb0\x06\x1c\xc7\xc5\x25\x76\xb2\x89\x01\xc9\x53\x1b\x20\xb6\x9d\x7c\x9c\xba\xdc\x57\xf0\x32\x61\xdd\x7d\x53\x3b\x35\x20\xae\x81\x5d\x8b\x14\x52\x11\x19\x1e\xd3\xe5\x32\xcf\x52\x67\x79\x59\xbe\x21\x05\x6f\xd3\x45\x50\xe1\x24\x61\x47\x2b\x9c\xda\xd0\xe5\xd4\xbc\x83\xde\xf9\x64\x8e\xec\xd9\xb3\x1f\x7d\x8e\xcc\xa7\x32\x35\x3c\x19\x62\xb7\x2b\x16\x87\x7c\x51\xdb\x42\x0b\x37\xc8\xc3\xf3\x44\xde\x94\x6a\x7d\x5a\x81\x4d\xa9\xa4\xd8\x38\x6f\x10\x9a\x75\x2f\xc3\xdf\x2d\x3c\x36\x1f\x15\xf3\x96\x87\xa3\x52\xe6\x2f\x20\x02\x8e\xb5\x6b\x5c\xbe\xb0\xaa\x0b\x13\x18\x5c\xc3\xbb\x86\x7f\xf9\xab\xcb\xf2\xe5\xd2\x0a\x4f\xc3\xdb\xa1\x7a\x1c\xa5\x5d\x32\x5d\x90\xc9\xad\x20\x3b\x29\xe4\xda\x20\x77\x81\x3a\x3b\x44\x2e\xbd\x65\xd4\x54\xf5\xf1\x63\x3f\x60\x19\x4f\xb4\xe5\x15\xc1\xd8\xd9\xbc\xc4\xb8\x05\xf8\xe4\x43\xe4\x85\xa0\x13\x3a\xc7\xbf\x78\xf5\xab\x62\x2f\x0f\x8f\xc5\x53\x62\x7f\x1b\x83\xa3\x79\x3e\x21\x02\x28\x90\x17\xc0\x6b\xa5\xe5\x54\x15\x4d\x1e\x31\x24\x66\xf5\x98\x3a\xce\x28\x72\xa9\xbb\xaa\x5d\x76\x85\x0e\xc3\x42\x46\x22\x4b\x07\xd4\xa4\xeb\x3c\xa1\xcd\x47\x97\xd7\x37\x9f\xaf\xe3\x34\xca\xae\x19\x73\x6e\x4a\xaa\x62\x1f\x3e\xc0\x89\x4d\x7d\xed\x32\x49\x8b\x27\xde\xef\x8b\xa2\xcc\x55\x67\x62\x7f\x4f\xac\x8b\x6b\x39\x9c\x85\xa3\x4b\x11\xc9\x2b\x9d\xde\x63\x38\xbf\x10\x5d\xf0\x78\xc5\x15\xc2\xbb\xc8\xa8\x6a\xcd\xc4\x79\x69\xed\xf2\x35\x72\x5a\xde\xbd\x70\x77\xc7\x60\x35\x12\x07\x30\x15\xc1\xcb\xed\xa3\x18\xa7\x03\xb0\x47\x40\x35\x87\x95\x26\x93\xe2\x6a\x2c\x5a\x8a\xee\xb5\x81\xfa\xf5\x48\x17\xab\x1a\x9b\xe2\x35\x87\xca\x13\x39\x37\x35\x84\x4b\x86\x0d\x15\xa5\x0a\xcd\xf6\xb5\x0f\xd6\x3e\x38\x4c\xca\x6e\x38\x0b\x87\x71\x12\x97\xee\x76\xed\xb2\x15\xf0\x52\xfb\x37\x05\xf9\xd9\x65\x5e\x30\xdf\x7c\x63\x1a\xa9\x3f\x41\x4d\xc3\x5d\x7a\xf5\xe9\x5c\xf3\x45\xf8\x58\xd7\x37\x3d\xaa\xd8\x36\xfc\x12\x46\x86\xcb\x62\x9a\x82\xa0\xed\xc6\xd3\x11\xdb\xc2\x40\x62\x4a\x48\xb9\xa3\xe1\xe2\xa1\x58\xb4\xf9\x0a\xb5\xb5\x0a\x01\x4d\x68\x78\x2d\xea\x87\x57\xd2\xea\x28\x23\x23\x7b\xfa\x5d\xef\xdb\xde\x66\xef\x3b\x71\x20\xaf\x2b\x0b\xde\xda\x6d\x57\x3c\xb5\xc7\xb5\xbb\xc0\x34\xd2\x75\xbd\x7c\xb6\x02\x4b\x07\xd7\x5e\x64\x50\xe5\x35\x49\x6b\x26\xd4\xd8\x3c\x95\xd7\x5d\x42\x96\xee\xc8\x54\x5f\xc1\xec\xb9\x23\x6e\xb4\xe3\xb8\x55\xeb\x98\x03\x65\x62\x82\xdf\x40\xaa\xcb\x1b\xae\x34\x02\xed\xd0\xae\x51\x91\xde\xf8\x61\x2f\x1d\xa8\xeb\x26\xd3\x1b\xeb\xa1\xd8\x19\xb0\x74\x9e\x55\xe4\x08\xa6\x6f\x89\x1b\xc7\x4a\xbe\xda\xc6\x8d\xd8\xf8\x25\x1c\x0a\xec\xaa\x85\x1d\x31\x74\x83\x80\x14\x59\xc2\x5e\x23\xf4\xc1\x2c\xa3\xae\x80\xa9\xdc\xd5\x9f\x3d\x97\x5b\xac\xc8\x52\xd5\xda\x6e\x8a\xe7\x6e\xf5\x56\xd8\x16\x03\xff\x93\x02\x65\x75\x73\x6c\x79\x23\x47\x8d\xd6\x94\x1f\xf1\xb6\x1e\xa0\xd0\x82\x8c\x27\x07\xa8\x09\x6e\x6b\x72\x5f\xcf\xee\xfa\x3d\xa0\x3d\x87\xee\x00\x78\x80\x7b\x0f\xca\xcf\xf2\xdf\x3f\x7e\xf7\xe6\xed\xd1\xde\xa2\xd3\x34\x9b\xe7\xd6\xb3\xe6\xc1\x4f\xf9\x4f\xf2\xa7\x38\x00\x7f\x71\x1e\x52\xad\xf6\xa8\x42\x2d\x7b\x5a\x3d\xe2\xfa\x69\xae\x43\xfa\xc3\x4e\xd2\x3c\x4b\x5d\xa7\x1b\x26\x76\xae\x8a\xc9\x60\xae\x7a\x4d\x6d\x0b\xc9\xdc\x8e\xba\x25\x73\x95\x2d\x64\x49\x7a\xef\x85\x8d\xb9\xb6\xfc\x13\x09\xe2\x27\x19\x01\x84\xe9\xbe\x8d\xbb\xd3\x48\xad\xb5\xf9\xd3\x67\xa9\x6b\xe3\x54\x4d\xb2\x3c\xd6\xa1\xce\x9a\x82\x4a\x40\xad\x2e\xc6\x3f\xb3\x8d\x8d\xd9\xe6\x22\xe3\x75\x06\xe0\x44\x8e\x2e\x77\x91\xb9\x4f\x65\x51\x1c\x8e\x8d\xf1\x58\x33\xd0\xaa\x4d\x77\x64\x1b\x75\xb3\x31\x0f\x12\xa0\x77\xb4\x62\xc6\xd0\xbc\xb3\x14\x05\xa0\x0e\x89\x1f\x26\x79\x9a\xc6\xcb\x84\x55\xd3\x8a\x7c\x84\x8e\xd0\x91\xb9\x39\xea\x1b\xea\x93\x46\x37\x87\xd5\x91\x67\x45\x79\x24\x15\x5d\x01\x9e\xa7\x19\x7f\x55\xc5\x6e\x0e\x35\xbb\x40\xcb\x8a\x85\x97\xf4\x12\x47\xaa\x05\x57\x35\x4c\x4a\xe6\x90\x6e\xaa\x71\x36\x58\xee\x06\xd6\x4f\xc3\xe4\x58\xbd\x20\x96\x0c\xad\xff\xea\xc2\x73\x83\x9d\xc5\x97\x10\x37\x60\xd1\x59\xc4\xc8\x02\x5f\xd0\xdd\xeb\x9f\x3f\xbc\xfb\xe7\xde\xd1\xf1\xfe\xe1\xc1\x32\x71\xe3\xd5\x0f\xdd\x2b\x99\x17\x2e\x73\xbd\xa2\x61\x0e\xf0\xe1\x47\x87\xaf\xf7\x8f\x41\xc9\x4e\x7b\xc5\x1c\xe7\x9c\xe5\x83\x10\x29\x95\xe5\xec\x5d\x18\x2c\x2d\x56\x6b\x60\xd1\x9a\x8d\x40\x63\x2f\x19\xa8\x94\xf9\xcb\x2c\x6f\x11\xcc\x6d\x57\xde\xe9\x1e\x49\xe7\xba\xd1\x7e\xc3\x9a\x83\xb7\xcc\x88\xf9\xa4\xcd\x09\x48\xda\x61\x6b\xe8\x2f\xab\xc9\x5e\xbf\xc1\x90\xf7\x8e\x27\x5c\x00\xdf\x96\xb1\xae\xcd\x87\xc5\xc8\xb9\x53\x79\xfd\xab\x4c\x65\x1e\x8f\x56\xed\xe0\xc1\x22\x5f\x30\xe3\xd8\x3f\x7e\xb3\x73\xb2\xfb\xdb\xbb\xbd\x7f\xee\x1d\x9c\x88\x6d\xb1\xb6\xd6\x32\xeb\xf2\xf8\xb1\x2f\x11\x02\x3d\x8f\xfa\xae\x17\x8c\x74\x95\xf0\x5d\x4f\xfa\xed\xc1\x6f\x3b\x07\x2f\x5e\xed\xbd\x78\x77\xb4\xf7\xf7\xbd\xdd\x13\xc4\xec\x60\x9e\x4e\xc2\x34\x4a\x64\x94\xeb\xa4\x75\x1a\x08\x53\xed\x1d\x35\x54\xd5\x4d\x2d\x6a\xa5\x2b\xbf\xd9\x3b\x78\x81\x66\x9d\xda\xae\xe4\xe5\xdb\x57\x2f\xf7\x5f\x61\xb3\x4d\xa7\x4b\xf8\xf4\x74\x4b\x87\x4e\xd1\x7d\x6f\xfa\x80\xb2\x5a\x1a\x1b\x3b\x02\x45\xd5\xee\x1a\x77\x34\x02\xfe\x9e\x87\xb3\x99\x04\x2f\x3e\x85\x7b\x27\x5a\x34\x0c\xf0\x1c\x1e\xed\x42\x9f\x9a\x9c\x68\x24\xee\x54\x85\x14\xaa\xfe\xaf\xaf\x0e\x7f\xd9\x79\xf5\x6e\xf7\xf0\x68\xef\xdd\xdf\x8f\xdf\xd9\x53\xea\xdc\xa3\xad\x2a\xea\xb7\xe1\xf1\x4a\xde\xde\x35\xc5\x56\x1c\x50\x3f\x04\x17\x66\xfd\xf3\x07\xf1\x7d\xef\x7b\xd1\x3a\xc8\x22\x29\x36\x37\x20\x14\xe7\xee\x24\xcf\xa6\x52\x7c\xff\x7d\x1b\x05\xdc\x21\x08\x4b\x40\xc4\x86\x57\x08\x64\x72\x9b\x17\x65\x36\x05\x11\x53\x38\x4c\x64\x61\x7a\xd4\x82\xcc\xe1\xfc\xa2\xe8\x8d\x54\x57\xf1\x7c\xda\xcb\xf2\x8b\xfe\xac\xaf\x7f\x6a\x49\x66\x24\xcb\x30\x4e\x9e\xc7\xd1\xf6\x0f\xcf\x36\xbe\xfb\xfe\x3b\xd3\xc9\xef\x10\x1e\x33\x28\x45\x24\x4b\xc5\x24\xc5\x10\x86\x4c\x35\x4f\xb3\x79\x91\xdc\x76\x44\x91\x89\x0f\xf3\xa2\x24\x7f\x3e\xa2\x8f\xcc\x9f\x80\x93\xd7\xed\x6d\x98\x8c\xb6\xe3\xb5\xf2\xcf\x7e\x5f\xbc\xd5\x88\x26\x0c\xe6\x15\xa2\xcc\xc3\xd1\x25\x8b\x43\xd3\x01\x79\xf1\xdf\x8f\x8d\x44\x40\xcb\xfc\xe2\x92\x8c\xe0\x4c\x94\x1a\x08\x9d\x62\xc1\x58\x63\x82\x7b\x52\xe8\xbe\xd1\xb7\x36\x0d\x87\x87\xcb\xf3\xb5\xf0\x61\xbd\x27\xa9\xd8\xef\x52\xa4\x52\x1a\xd1\xc4\x5f\xc6\x71\x1a\x26\x09\x78\x58\x97\x13\x29\x14\xd3\xaf\x17\x03\xa4\x7a\xb3\x1c\x4c\x7e\xd4\x5c\x6c\xe4\xc4\x59\x96\x60\x32\x4d\x26\xfe\x86\xe7\xc4\xe3\xc7\x62\xad\x8a\x50\x2c\xc0\x7a\x40\xe3\x05\xe7\x55\x10\xf9\xb6\xa9\xa7\x8d\x5d\x92\xb1\x0c\x4b\x05\x18\x6e\x26\x46\x70\x53\x98\x57\xc4\x8a\x2d\x8d\x4b\x31\x0a\xe7\x85\xd4\x3a\xf7\x48\xa2\xd7\x08\x85\x4a\x53\x18\x49\x77\x3e\x70\xb1\x91\xbc\xc8\xc3\x28\xd4\xe0\x33\x8c\x5b\xc5\x98\xe1\xdf\x7e\xd4\x73\x66\x08\xf2\xb7\x6d\xf1\xdd\xa6\x9a\x3c\xbd\x4d\xc4\x28\x8b\x64\x1f\xad\x24\x6b\xce\x57\x8d\x55\x74\xbf\x2f\x5e\x20\xa6\x32\xee\x52\x64\x63\x51\xcc\x87\x40\x8f\xd5\x06\xc0\x09\xb2\xab\x42\xb8\x75\xd6\x94\x2c\x83\xef\x80\x7e\xf4\x33\x8f\xa2\x97\xe1\x25\x7b\x6a\xd5\xbe\x70\xc9\x88\xd9\x35\x2d\x77\x8c\x96\x7d\xbb\x73\xa7\xb0\xcd\x0c\x73\xf4\x33\xdf\xde\xbe\x5a\x1a\xed\x7e\x25\x23\xef\x51\x8d\xbb\xb6\xd8\xe6\x30\x73\xe1\xc5\x5a\xcb\xc9\x4d\xb1\x08\x24\xee\xa8\xc1\x7a\x6b\xdb\xa0\xfa\x40\xcd\x0f\x74\x00\x14\x63\x8a\xad\x46\x47\x02\x0d\x96\x61\xcd\xaf\x87\x56\xd5\x4b\x8c\x96\xb3\x66\x5f\x1c\x4f\x99\xd3\x60\x84\xf9\x0d\x16\xce\xc0\x42\xaa\x50\x17\x43\x35\x6a\x36\xf4\x84\xa8\x69\xbd\x6b\x2c\x3c\x2a\xb4\xec\x5f\xbb\xc4\x16\x36\x6e\x0c\xa3\x31\x2d\x52\x19\xc4\x25\x2c\x69\xbb\x62\x14\x06\xe5\x03\x83\xc1\xd6\x12\xb0\x46\xb0\x6e\x94\x07\xc0\x35\x77\x44\x5c\x1c\x71\x79\xab\x3a\x4c\x50\xd2\x83\xb6\xb1\x75\xd8\x05\x40\xdd\x22\xae\x7f\xba\x62\xf9\x64\xb0\x56\x2e\x43\xa4\xc0\x50\x6e\x1e\x3c\xad\x06\x4d\x29\x88\x57\x4c\x63\xad\xe7\xd5\xa5\xd9\xa5\x29\x2a\x90\xe7\xdc\xb6\x3c\x03\x37\xed\xd3\xce\x64\xf6\x52\xb8\x0a\xf3\x18\xf6\x81\xa4\x51\x5d\x46\xd6\x28\x63\x85\xa3\x5c\xe5\x99\x57\xb4\x9b\x19\x53\x47\xa0\x80\x22\xd4\x6f\x77\xa8\x7d\x4a\x4e\x68\xe7\x5b\xbc\x16\xde\x45\xea\x20\x65\x97\xe2\xb9\x69\xd4\xcb\x2e\x21\x6c\x0e\xfd\x52\x57\xce\x96\xdb\xb9\x7d\x01\x52\x1d\x57\x26\xad\xab\x19\x89\x83\xa9\x65\x04\xd4\xba\x12\x2a\x93\x79\x25\xfc\xe2\x0f\x08\xde\x8a\x0a\x8d\x3a\x42\xde\xc4\x25\xd3\xdd\x7a\xda\x62\xd0\x02\xe3\xbc\x3c\x7f\x0d\xb8\x20\xb3\x4b\xef\x2b\xc7\x28\x73\x27\xc3\x25\x6e\x18\xb7\xb6\xc8\xd2\xdf\xa0\x4b\x73\x7d\x7b\x58\xca\x35\xcd\xea\xbf\x4a\x77\x9a\x2f\x74\xea\xdd\xfb\xd0\x99\xfd\xd8\x46\xbc\x6d\x5b\xbf\x35\x8e\x6e\xf8\x1f\xd7\x4f\xf1\x4e\x48\x3d\x4f\x2b\xeb\x68\xa4\xed\x7f\xa6\x5f\x1a\x52\xbb\x6a\x0b\xf0\x38\xa7\xf0\xf8\xcd\x7d\x7b\xc3\x0a\x33\x18\x37\x05\x60\xa0\xc2\x8e\xb9\xca\xe0\xda\x45\xa8\xac\x88\xf1\xa7\x63\x08\x42\x4b\x5f\x81\x82\x32\x26\x33\xad\xca\x1b\xfd\xee\x87\x63\x3f\xba\x1d\x25\x32\x68\xbb\xe0\x39\x99\xb1\x90\x88\x19\xba\xa8\xbd\xe8\x2a\x23\x59\x4d\xa7\xc6\x4c\x4f\xa5\x54\x3b\x86\xbe\x55\xad\xdb\x5d\xa5\x02\xf3\xa7\x5f\xd5\xe2\x81\x0e\x90\xe2\xa5\x70\x99\xdb\x8d\x9b\x41\xfd\x63\x3f\x15\x2b\x07\xfc\xc7\xa3\x8c\xdc\x30\xb9\x42\x5a\x2d\x43\xa2\xd5\x17\x48\xa9\x01\x18\xef\x08\xa8\x33\xb4\xf8\xf4\xdc\xbb\x36\xe2\xce\xa3\xcf\xb9\x20\xd2\x70\xca\x0d\x66\x9c\x44\x0d\xaa\x25\xb0\xa0\x1d\x8d\xd9\xe6\x79\xe2\x3e\x42\x2d\xcf\x42\xfd\xd7\xbd\x41\x5b\x01\xfc\x63\xb4\x70\x68\xcf\x5e\xc9\x71\xe5\x94\x9a\xe4\x18\x2c\x4d\x84\x2e\x8b\xd3\xb8\xc4\x8e\x71\x0e\x24\xf8\x87\xa3\xee\x5a\x3b\x3a\xb3\x27\xbb\xfa\x2d\xa6\x97\xd6\x50\x7f\xd4\x30\x0c\xfc\x05\x19\xd0\xbf\x4c\x9d\x6b\xc9\x3d\x8e\x72\x1a\xa8\xdb\x79\x1d\x02\xb9\x9c\xb7\x0d\x29\x60\xa3\x99\xb3\x01\xb1\x5e\x1c\xa2\x68\x9f\xdd\xed\x8a\x68\xaf\x15\xd8\x77\x8e\x5e\x2d\xfb\x1e\x37\x5b\xe6\xec\x37\x43\x8f\x05\xec\x80\x56\xa6\x54\x55\xe5\x9f\x72\x67\xef\x1f\xbf\xe3\xaf\xf3\xb8\xb0\x18\xea\x90\x75\x7b\x07\xb9\x36\x52\xec\x86\x60\x6e\x84\x44\x59\xe9\x15\x51\xc7\x4d\x08\x51\x6f\x07\x84\xff\x69\x7b\x1f\x39\x8d\xcb\x96\x15\x68\x1c\xb1\x05\x24\x57\xe4\x99\x65\x47\x3d\x52\xe2\xe2\x4f\xcd\xa6\xb1\x03\xe4\xd3\x1b\xfb\x27\xb7\x61\x2e\x26\x90\xf8\x22\xcd\x4a\x51\xe6\xf1\xc5\x85\xcc\xc5\x7b\xb3\xa7\x78\x3b\x46\xef\x09\x2f\xe3\xb1\x7a\x66\x5d\x87\x85\xd0\x3b\x3a\x91\xb9\x34\xcf\xda\x2e\x75\xa6\x87\xa9\xde\x96\xfa\x19\x7b\x77\x57\xb3\x29\xe2\x39\x93\xa9\x0c\x2a\x37\xab\xbd\x36\xb4\xd6\x0f\xb5\xed\xf4\x8d\xe3\xc0\x7d\x0d\xdd\x61\xe3\x79\xa1\x23\x2c\xfa\x11\x37\xec\xc3\xbd\xb6\x6d\xee\x79\x46\x02\xd1\x32\xcc\xc3\x75\x8f\x9d\xf8\x42\x18\x5f\x8f\x53\x2e\x3e\xf9\x7b\x16\x54\xd0\xa8\x16\x85\x2a\xd2\x33\x86\x40\xec\x70\xd5\x92\x72\x72\xac\xe3\xf6\x28\x7e\xeb\x8e\x98\xa7\xd7\x79\x38\x6b\xf2\x48\xc2\xce\xf5\x9c\xc6\x69\xe5\x95\x40\x27\x82\x7a\xa9\x71\x58\xd2\x72\xee\x23\xcd\x95\x36\xbf\x38\xdc\xbe\xfc\x67\x07\xc6\x15\xa8\x3c\x39\xd4\x67\xce\xe1\x40\xa6\x6f\xea\x81\x1e\x04\xd4\x23\x6b\xa4\xc9\x93\x45\x4a\xe7\x05\x61\x04\x8c\x50\x44\xe6\x34\x3e\xb4\xfa\xf6\xa8\x9b\xaa\xe6\xd3\xff\x6b\xe7\xca\x38\x74\x30\x99\xd4\xf7\xe7\x36\x4d\xbc\x6a\x0f\x73\xf6\xc8\x18\xc3\xc0\x4b\x68\x68\xb8\xa7\x48\xc4\x65\x21\x93\xf1\xd9\x23\x4e\x9c\xab\xac\x9b\x43\xd4\x34\x77\xc7\x0e\xc5\xc2\xd7\x9e\xee\xf6\x1a\xe5\xaf\x70\xcf\xa2\x93\x37\xdc\xd8\x8e\x47\xb7\xf7\xfc\xe0\xcc\x21\xae\xad\xcb\x3a\x82\xeb\x88\xb7\x41\xec\x30\x5c\x6b\x89\x2f\x9e\xfd\xc5\x8d\x3f\x80\xa5\x61\x53\x5b\xde\xd4\xbd\x21\x1a\xf9\x49\xe1\x9d\x92\x56\xb5\x6f\x68\x54\xf3\xea\xb9\xaf\x5c\x1f\xf7\xde\x0b\xa5\x09\xe3\x6d\x99\x46\x1d\xff\xd9\xdc\x88\xfa\xd5\x00\x23\x0d\x93\x6b\x9a\x96\xb7\xad\x75\xd3\xe3\xf1\x83\xb9\xf0\x69\x96\x25\xb7\xe3\x38\x49\xd0\xf4\x1a\x85\x3d\xd6\x89\x11\xec\xa4\x9e\xf5\x36\x4d\xa6\x38\x93\xd4\xae\x5e\xb4\xc3\xcf\x68\xa5\x89\x31\x5b\x31\xca\x75\x0a\x00\x5e\xed\xa7\x23\x98\x2a\x0b\xda\x18\x6b\x2e\xd3\x1d\x95\x68\x1d\x04\x05\xdb\x67\xae\x25\xa0\x7a\xa3\xbd\xf0\x75\x76\x4e\x45\x07\xf7\x4d\x7e\xb0\x7a\x14\x47\x88\x09\xad\xeb\x31\x99\x57\xb1\x58\xd4\x80\xad\xde\x96\xb2\xb6\xb4\x8b\x2e\x5e\x18\x3b\xde\x05\x5e\x8e\xf3\x74\x5e\xc8\xa8\x7b\x15\xa2\x9f\x8c\x9e\xf7\x4a\x7b\xe3\xab\x2a\x09\x20\x6b\x1c\x7b\x3b\x93\x03\xbd\x39\x36\x6b\xa7\xc5\xbe\x8e\x83\xeb\xb1\x8c\xfc\xef\xc8\x47\xf8\x5f\xcd\x4b\x6d\x20\x4e\xcf\xd9\x57\xba\xe4\xfd\xea\xb0\x40\x03\xad\xde\xea\x58\x21\x0b\x58\x0e\x19\x0b\x45\x5a\x39\x2e\x92\x35\xe8\x32\x63\x51\x0f\x99\x1d\x4c\x8d\xe8\x9a\xc7\xa3\xb5\x3a\xa0\xf7\xda\x00\x99\x27\xea\x93\x2c\x83\x85\x70\x35\x3b\x8b\x62\x36\xcc\x6a\xbb\x3a\x33\x66\xcc\x3c\x60\xf1\x44\xa6\xad\x2c\x7d\x69\x53\x1d\x67\xe9\x91\x4e\x70\xec\x0a\xcf\x6a\x70\x9f\x6b\x93\x3d\x37\x2c\x4f\xdc\x56\xa7\x34\x6d\x55\x6d\x3c\x1a\x4f\x30\x93\x4f\x70\x79\xdc\xb6\x96\xb5\xb2\x29\x54\xc4\xac\xbc\x6c\xe0\x0a\x5b\x1c\x69\x1e\xef\x4d\xaf\x41\xc5\xdb\x8f\x95\x55\x7b\x31\x62\x3b\xcd\xa9\x3f\xf7\xdc\x43\x78\xb2\x01\x8f\xcc\x1b\x87\x12\x07\x40\x4f\xf0\x80\x4e\xcd\xfa\x67\xdb\xe1\xee\xf9\x6d\xb1\xb6\xad\x91\xd9\xb8\x7d\x38\xa4\xc0\xb9\x22\x84\x8d\xb2\xe4\xca\x92\x34\xa9\xe8\x2c\xc2\x52\x20\x44\x5f\x08\x4d\xa1\x2f\xec\x83\xc4\xf8\x3c\xd0\x4c\x2d\x66\xf2\x04\xc2\x80\xcc\xcc\xa1\x9a\x35\xa8\x3c\x6d\x44\xad\x8e\x79\x81\x43\x90\x63\x04\xad\x0f\x40\x6b\xa5\xcb\xc1\x7b\x49\x78\x46\xd5\xee\x62\x7b\xb6\xc9\x4b\x18\x23\x87\xe1\x70\x0d\x96\x17\x73\x45\xfc\x2a\x47\x36\x7a\x81\x59\x44\xc3\xf9\xad\xb5\x61\xf6\x02\xb7\xd4\xdc\xe9\x77\x77\x6e\x19\xa9\xf3\xf5\x86\x3e\x87\x05\xae\xdb\x1c\x30\xa4\xc6\x4a\x83\x45\x36\x1a\xda\xa0\xf7\x9e\x05\xef\x5b\x63\xda\x55\x3a\xe4\x9e\xa1\x64\x6d\xea\x5c\x6b\x61\xe0\x9b\xba\x78\xc4\x75\x4b\xe7\x82\xed\xf7\x81\x2b\xa4\x96\x46\x45\x0c\xac\xf8\x38\xd3\x89\x92\x44\x08\x6e\xcb\x7a\xc0\x42\xaf\x1c\x45\xe6\x6e\x18\xa9\x23\x02\xd5\x4f\xd0\xf9\x24\xfa\x0d\x29\x57\x59\x06\x5d\xb6\x57\xdc\xe2\x9c\x11\x63\x27\x70\x9a\x23\xc8\x75\xe2\x41\x99\x35\xd2\x3c\x53\xb8\x48\xf4\x7b\xdf\xee\x2d\x04\x7a\xab\x42\x43\x56\x51\x29\x7f\xbb\xa1\x69\x55\x6d\x34\x77\x77\x6f\xd0\x76\x08\x25\x1f\xec\x29\x84\x68\xa1\x2d\x8b\x5c\x7c\xf8\xa6\xf5\x91\xc4\x83\xda\xac\x58\xa6\xf3\xa9\xe4\xf1\xab\x4d\xde\x1b\x1c\xb6\xb3\x72\x18\x09\x8f\xc1\x52\xff\x01\x0c\x8c\xf6\xc1\xef\x56\x9c\xce\xe6\x25\x66\xc2\x89\xd3\xb8\xe4\x69\x70\xd8\x66\xba\x06\x89\x35\x0c\x48\x87\xe6\x48\x11\x28\xb4\xe4\xc4\x98\x7f\xb7\xab\x52\xf0\xb6\xe3\x65\x53\x5d\x0c\xb5\xac\xfe\x32\x90\xa6\x57\x2f\xc4\x1b\x2d\x91\xad\x02\x64\x94\xb1\xae\x1d\x70\x2d\xe8\xd6\x9c\xc7\x95\x12\x5b\x0b\x60\x6e\xb6\x76\x96\xba\x44\xc6\x35\x18\x73\x2a\x82\xbb\x52\x58\xc6\x23\x2f\xc7\x91\x19\x50\x95\x2e\x99\x23\xbf\x21\x11\xef\xf9\xc5\xf8\xc0\x6b\x11\x3b\x40\xb9\x8f\xfa\x8b\xa1\x03\xa9\x2c\xdc\x00\xc0\xa3\x65\x46\x6a\x0e\x87\x36\xe2\x8e\x0d\x90\x26\x01\x0e\x2f\xbb\x3d\x2b\xe1\x46\xea\xdc\x1a\x6c\xb6\xa4\x07\xac\x9a\xa6\xc5\x77\x77\x8b\x17\x10\x10\xf8\xb3\x56\x10\x7a\x38\xb3\x0e\x1b\xce\x1a\x6a\x17\x0e\xef\xe2\xf2\xce\x0f\xbf\x38\x26\x71\x51\x73\x73\x89\xe7\x75\xd7\xdc\x80\x1e\x6e\x37\xed\x4f\x5e\xa6\x1a\x03\x8a\xba\x85\x0a\x93\xe4\x33\x16\x29\x4c\xc0\x43\x30\x4c\x92\x81\x9b\x0d\xd3\x33\xbc\xb0\xf1\xdb\xd8\x0d\xb2\x1a\xde\xed\x7a\x1a\x03\xe2\x6d\x46\xf5\xbe\x35\x9e\x9a\xbc\x82\xa8\x15\xed\xc3\x32\xad\x02\xd8\x8b\x56\xcc\xb4\xad\x08\x60\xb7\xe7\xf8\x7d\x09\xae\x24\x71\x54\x7d\xda\x02\x87\x07\xd7\xe2\xaf\x1d\xc5\xe1\x63\x94\xe6\x4d\xcb\x99\xa3\xc9\x3c\x0f\x76\xec\x4b\x1d\x2b\x02\x36\x6d\x0c\x41\x23\xad\xaf\x6f\xb9\xe5\x94\xa3\x7e\x57\x07\xff\xe4\x1a\x47\xf3\x6e\xa5\xb7\x42\xc5\x8f\x15\x31\x9d\x40\x75\xba\xf6\xd6\x08\x09\xc2\xae\x15\x84\xfb\x86\x41\xae\xf4\xd9\x3e\x44\x1c\xf0\xda\x6e\xce\x7c\xfc\xcf\x9f\x40\x45\x01\x8e\x33\xa0\x70\xbc\xb5\x7a\xfe\x6e\xd7\xae\x37\x38\x14\xe2\x69\xc5\x86\x8e\x08\xae\x8e\x05\x31\x7f\xae\xd4\xcd\x3d\x97\x98\xba\x4a\x14\x4d\x89\x99\x16\x65\x45\xb2\xd9\xa9\xd0\xbb\x70\xf4\x59\xc4\x2e\xc4\x64\xc9\xea\x5f\x4e\xe6\xc2\x91\xfc\x7a\x47\xf9\xbf\xf2\x8c\x3e\xf4\x64\xad\x86\xde\x55\xa2\xb4\x00\x7f\xbe\x0a\x62\x34\x66\xe6\x24\x87\x91\xb0\x30\x89\xca\xd8\x23\xc4\x0d\x95\xe7\x86\xd3\x37\x89\x38\xe8\xb7\xed\x4b\xde\x9c\x90\xa9\x5b\x93\x79\x57\x48\x1d\x18\x22\x68\x72\x0a\xc5\x40\x01\x45\x2c\x7e\x12\x4f\xbf\xfb\x7e\x4b\xac\xaf\xc7\xce\x7a\x53\x8a\x49\x45\x84\x82\xbf\x42\x86\x94\x96\xaa\xbb\xf9\xbd\x78\x2e\x82\x0d\x9b\x1d\x25\x36\x59\xa2\x5a\x9b\xdf\xb7\xdb\xbd\x32\x7b\xab\x6e\xd5\xdd\xb0\x90\xad\x36\x7b\xb8\x3b\x8b\x17\xd2\x3c\xee\xb1\x8a\x0e\x7b\x38\x9d\x85\xa3\xf2\x7f\x50\xac\x43\x1b\x05\x8d\x7d\xc7\xc8\x82\x06\x50\xb2\x1d\xc3\x70\x83\x36\x47\x64\x95\x24\x97\x72\xaa\xdd\xc9\x7b\xb3\x6c\xe6\x58\x90\x5c\x61\x84\x5d\x0c\xca\x3d\xed\x65\xc3\x0f\xa7\xf0\xc7\x2c\xcf\x66\xe7\xe6\xf5\x21\xdc\x20\xeb\xad\x6c\xf8\xa1\x6a\x43\xc3\xa6\x01\x94\xf1\xd4\x6d\xef\x6c\xc0\x07\xdc\x80\x0f\xe2\x27\x35\x3a\x41\xaf\xf6\xe1\x43\x8d\x29\x92\xf3\xc6\x51\x10\x7e\x38\xc7\x70\x53\xb5\xd9\x94\xdd\xff\x0c\x40\xb8\x9b\xd8\xba\x6a\xcf\xe4\x19\x2a\xb1\x4d\x33\x20\x54\x97\x07\xae\x39\xea\xbe\xaa\x38\x71\x82\x35\xc2\x9e\x9f\x64\xc6\x65\xcf\x72\x2b\xbc\xa0\x85\x3e\x6d\x7e\x2a\x2c\xbe\x4b\x54\x02\xd2\xbc\x19\xc9\xd5\x92\x30\x26\xd7\xe3\x42\x3c\xd7\xc7\x8b\x52\xab\xa7\xf3\x24\x69\x8b\x81\x0d\x9e\x5c\x77\x06\x70\x58\xb6\x0b\x71\xc5\xb0\x81\x56\x1f\x6b\x9e\xc6\xcb\x37\x00\x96\x4a\x2d\x91\x69\x52\xbb\x44\xce\xc9\xc8\x86\x1f\x1c\xb5\x27\x24\x7b\xe7\xab\x05\x1f\x6c\xd6\xb0\x86\xd5\xea\x3f\xa1\x37\x2b\xc4\xe9\x0c\xf3\x70\xda\xcd\x65\x58\x14\xf1\x45\x3a\x10\x1b\xe2\x49\xdf\x12\xbe\x35\xec\xa3\xee\x2d\x6a\xf2\x86\x39\x90\x56\xd6\x02\x17\x42\x7b\x5a\xfa\xcb\xa6\x0f\x0c\x76\x56\x63\x77\x06\xdf\x11\x37\x09\x94\xaa\xe9\x07\x8c\x89\xa9\x12\xac\x08\x88\x3e\x6c\x37\x8d\xae\x21\x68\x31\x8c\x69\xd5\xa2\xcc\xdd\x9d\x41\x25\xc8\xff\x6f\x32\x0c\x15\xed\x36\x18\x3b\x4f\xc2\x02\x6f\x9c\x6a\x52\x3a\x82\xb9\xf6\xf8\x21\x84\xa7\x58\xe5\x7c\xa9\xad\xa0\xaf\x5d\x74\x36\xe3\xd4\xdd\x73\x0f\x97\x1e\xb0\x77\x6b\xb4\x6e\x77\x77\xde\x42\x36\x6e\xa3\x0b\xc1\x79\x6f\x94\xa5\xa3\xb0\xf4\x76\xcb\x8c\x61\xd0\x96\x72\x5b\x6c\xbb\xb0\xd4\xe0\x04\x18\x96\xe8\x6f\x75\xeb\xe9\x76\xe7\x12\x0c\xbd\x2c\x4e\xe2\x3b\x6f\xca\x35\xe3\x2d\x1a\x8e\x88\x01\x99\x29\xbb\xd6\xec\xd3\x8e\x88\x6b\xb1\xcc\xa0\x88\x06\x28\xae\xc7\x09\xf4\x6b\xcd\x31\x99\xc8\xd4\xac\x8e\x4b\x1d\x78\xc7\xac\xb2\x8f\xfb\xd8\x83\x97\x98\x21\x76\x6b\xc6\x7e\x9d\xc6\x8b\xc2\x00\x22\xb6\x1d\x32\xb3\x8f\xb3\x86\xff\xf7\x56\xd9\x41\xe4\x5a\xec\x75\x3b\xc7\x63\xae\xba\x5a\xe5\x02\x6a\xec\x90\x43\xaa\x3a\x5b\x70\xa4\xdc\x87\xd3\x82\xa3\x41\x85\x74\xc0\x2f\xe5\x6d\xa1\x71\xa3\x97\xcb\x68\x3e\x92\x0c\x0f\xc2\xd1\x88\xa7\xf2\xb5\x1b\x6b\x4c\xf3\x90\xe2\x53\x3a\x5f\x97\x20\x1a\x44\x31\xbd\x54\x76\x24\x1c\x61\x3a\x47\xb3\x11\xfa\x83\xb1\x6d\xa9\xd9\x87\xfa\xe5\x62\x5d\xf9\xcf\xb0\xfb\xca\xca\x84\xa3\x91\xd1\x1a\xf1\x43\xe7\x9a\xe2\xe0\x3d\xe2\x5c\xe1\xf0\xe5\x38\x4e\x2f\x12\x49\x3e\x77\x2e\xb5\xf2\xa5\x34\x9f\xbe\xca\x6c\x3e\xee\x22\x2f\x9a\x4a\x59\x33\x8b\x48\x8e\x30\x74\x17\x37\x87\xcb\x3b\xf4\x1d\x83\x65\xe7\x85\x2c\x1d\x0e\xa4\x28\x21\xe3\x44\x36\x2f\xdf\x24\xf3\x02\x6c\x30\xf3\x5e\x2e\x67\x89\x7a\xa7\xf5\xcf\xce\xd6\xfb\x17\x1d\x11\x88\x80\xbf\x2c\xa8\x1f\x3c\x83\x71\x91\x75\x7f\xf8\xe1\xbb\x1f\xbb\x9b\xee\x39\xec\xf7\xc5\x3c\x95\xc5\x28\x9c\x49\x91\xca\x2b\x99\x53\xfc\xab\x8e\x48\x33\x51\xe6\xb7\xbd\x1e\xaa\xd7\xc0\x75\x4d\x46\x83\xca\x7c\x5d\xc8\x2c\x4c\x7f\x3d\xdd\xe8\xfe\x18\x76\xc7\xe7\x1f\x9f\xde\xf7\x2f\xe2\x8e\x19\xc6\x51\xaa\x21\x00\xe5\xb8\xfb\x03\xfe\xf2\x0c\x80\x68\x0c\x5c\x9a\xb7\x47\xfb\xbb\xd9\x74\x96\xa5\x32\x2d\x5b\xee\xb0\x55\x03\x87\xba\x7b\xc4\x6d\xb3\x55\xc3\x2b\xca\xd4\xdf\x1b\xfc\xa2\x77\x08\xf2\x02\xec\xa5\x0d\x1b\xd5\xef\x8b\x93\x49\x5c\x80\x0b\x1a\x18\x6c\x62\x7c\x6d\x70\xf2\xbb\xce\xe3\xb2\x94\xa9\x18\xde\x8a\x5f\xf2\x38\x4c\xc5\xef\x93\xb8\x94\xa2\x35\x2d\x46\xe0\x70\xa2\x78\xc3\x72\x22\x45\x9c\xf5\x3e\xa8\x1e\x72\x08\x4e\x98\xdf\x62\xd4\x0a\x91\xc4\xc3\x3c\xcc\x6f\x7b\x66\xa0\xfd\x12\x9e\x74\x43\x29\x53\x11\x46\xe1\xac\x24\xbb\x50\xe8\x08\x1f\x7f\x32\x17\x61\xa4\xbe\xa5\x23\x29\xca\x4c\x1c\xbd\xdc\x15\xcf\x7e\xfc\xe1\x7b\x8b\x21\x0a\x89\x58\xd0\x96\x8d\x86\x45\xab\xbb\x68\x0b\x9d\xed\xd7\x96\x73\xfe\xac\x44\xbf\x8b\x40\x3b\xce\x3b\xb7\x9c\x6e\x8a\x4e\xef\x35\x79\x7f\x91\x4c\x15\x65\xee\x99\x3f\x79\x23\xac\xb1\xdc\xda\x0d\x23\xe0\x03\x91\xf7\xc4\xaf\xe7\x95\x4e\x08\xad\x03\x22\x6f\x0b\xbb\x6e\x33\x3c\x9f\x1b\x44\xff\x16\x11\x9d\x05\xba\xda\xa8\xf1\xab\xc0\xd4\xce\x7f\x7d\xfa\xfd\x5f\x9f\x3e\x53\xef\xdb\x99\x82\x61\x3f\x2d\x5b\xdf\x6c\xf4\x8a\x24\x1e\xc9\xd6\xd3\x76\x47\x6c\x7e\x0f\x29\x40\xff\xfa\xec\x97\x60\xab\xe6\x56\x71\xf6\x22\x9b\x2b\xee\x24\x08\x16\x3d\x33\x70\x5d\x9b\x9e\x19\xf0\x7e\xc4\xcd\x84\xe5\x9f\x84\xf9\x6e\x16\xc9\x9d\xb2\x15\xb7\x2b\xf7\x88\x3b\xa1\x11\xa2\xce\xcd\xd3\x17\x10\xf9\xcd\x2d\xbc\xbb\xb3\xe5\x7b\xaa\xbc\xd7\x58\xfe\xdd\x4b\x55\xfe\xae\xb1\xfc\xdf\xa0\xfd\xff\xaf\x52\xde\x1a\x89\xbf\xa9\xf2\x67\x1b\x10\xa2\x48\xfc\x04\x3f\x7e\x6c\xab\xda\x1b\xdd\x1f\x1b\xeb\x7f\xbb\xc9\xea\x7f\xb7\x03\xf5\xc3\xee\x1f\x8d\xf5\xbf\xe7\xf5\xff\x0d\xeb\xef\x74\xff\xa7\xad\x5f\x7d\x86\xcd\x4b\xb1\xee\xac\xa9\x5e\x4f\x67\xfd\xb2\xb4\x8c\x53\xff\x7e\x74\x57\x7c\x24\x7e\x12\x1b\x37\x3f\x54\xb1\x09\x77\x1e\x06\x32\x52\x99\xd3\x91\xcf\xd0\x3d\x64\x88\xc5\x63\xb4\xcc\x20\x1b\x37\xbb\x1b\x02\x57\xe7\x6f\xe2\xfb\xf6\x39\x07\x40\xf5\x83\x65\x8f\xd5\x5e\xbc\x6c\x57\x5e\xfd\xab\x43\xf4\xe2\x87\x8d\x0d\x44\x03\xd8\x85\xbd\x8d\x07\x40\xb8\x67\x21\xdc\x7c\x5a\x0f\xa2\x86\xdf\x40\xfa\x85\xe7\xa1\x10\x60\x93\x95\xaa\x43\xb6\x71\xb3\xb9\xb1\xb1\xb1\x01\xa2\x2d\xd3\xf7\xcb\xb6\xf8\xe9\x27\xb1\xb9\xd1\x56\x03\xd6\x1d\x43\x53\x8f\xc3\x40\x28\xc6\x20\x7e\xc9\xe6\xfc\x43\xfb\xdc\x05\xb7\x71\x01\x36\x9f\xda\x15\x58\xb1\xc9\xf7\x0f\x68\x61\x17\xb0\x81\xf9\xcd\xe6\xae\x4d\x3f\xc9\x76\x6a\xa4\x71\x9e\xfa\xe0\x8a\x25\x29\x39\xfd\xff\xb3\xf7\xae\x6b\x6d\x1c\x4b\xa3\xf0\xad\x34\x39\x30\x1a\xa3\x13\x38\xb1\x1d\x61\x99\x60\x2c\x12\xde\x10\x60\x03\x4e\x56\x5e\x60\xe1\x41\x6a\xd0\xc4\x62\x46\x99\x19\x19\x58\x31\xef\xf3\x7c\xfb\x16\xf6\xdf\x7d\x13\xdf\x8f\xef\x3e\xf6\x7b\x0b\xfb\x4a\xbe\xa7\xab\xfa\x50\xdd\xd3\x23\x09\x70\xb2\x96\xb3\xec\x27\x4f\xc4\xcc\x74\x57\x9f\xaa\xeb\xd4\xd5\x55\xbf\xb3\xf4\xec\xd7\x0e\xfb\x9d\xa5\x1d\x29\x10\xdf\x82\x9d\x76\xdc\x61\x41\x1a\xb0\xdb\x13\xcb\xbe\x7c\x9e\xdb\x86\x32\x1f\xd9\xa4\x06\x3e\x3f\xd5\xa4\x16\x3e\x5b\x95\x9a\xdf\xbc\xf7\x0e\x53\xad\x13\x03\x2d\xc8\xa7\xe9\xd9\xaf\x74\xad\x7d\x06\x3c\x51\x6e\xaa\x05\x4f\x82\x66\x5d\x28\x7a\xf4\xab\x4b\x1a\xa4\xee\x20\xb6\xcf\xd9\xaf\xae\x44\xcb\x6c\xa6\x0e\xe5\x1c\x9d\x4f\xbc\x13\x6c\x38\x99\x8c\x46\x98\x92\xef\x3c\x6f\xc2\xf9\xcb\xee\xb9\x58\xaa\x10\x6a\x34\x96\xbd\xba\x9f\x34\x8b\x0a\xcd\x4c\x2e\x5d\x7a\xf6\xab\x5a\x31\xd1\xeb\x5b\x9f\xb2\x06\x4d\x40\x25\x01\x7f\x8a\x06\xe6\xa0\x9a\xc7\x9c\xbb\xea\xa0\xa1\x52\x54\xe8\x05\x96\x7d\x7e\xd1\xbb\xb6\xf2\x01\xaa\x77\xb0\x40\x7e\xfd\xa2\x4a\xa4\x81\x1a\x30\x87\x47\x32\xb7\x1a\x82\x3a\x09\x9c\x56\x5f\x4e\xce\x9d\x48\xf2\xea\x9d\xd5\x2a\xde\xc2\x3d\xfb\x95\xd8\x54\xc4\xd3\x2c\x83\x0a\x3d\xf9\x73\xb7\xe2\xc2\x82\x68\xc1\x0a\x0d\xb0\xb8\xc8\x9c\x57\x4d\xdd\xc3\x29\xdf\xd0\x54\xed\xee\xeb\x33\x8c\x0d\x47\xf7\xb5\x78\x45\xe3\x12\x1a\xc3\x8f\x36\xf9\xa8\x50\x81\xc4\x40\x19\xdd\x9c\xf1\x1f\x23\x6b\x65\xd4\x3b\x81\x19\x75\x46\x52\xc3\x50\x5b\x8c\xc0\x9a\xd2\x36\xbe\x8c\x64\xbe\xda\xa3\x13\xdf\x96\x23\x24\xe1\x5d\x34\xd2\x3b\x0e\xc9\x7b\x09\xb7\x11\x18\xe2\x28\x26\x6e\x3e\x8a\x4f\x42\xaf\x83\xbf\x1e\x2a\xd6\xb1\x55\x23\xb5\x5a\x89\xc2\xf4\x5b\x7f\x70\x47\x1d\x88\x91\x98\xa7\x3a\xf6\xa3\xf4\xc5\x54\x96\x58\xfc\xad\xeb\x8d\x21\x56\xa0\xa3\xfe\xa8\x5b\xfb\xa5\xa3\xfe\x90\xaf\x51\x17\xeb\xc8\x5f\xf9\x12\xb5\xa4\x8e\xfc\x95\x2f\x15\x1e\x74\xf4\x5f\xfa\x03\x62\x7d\x47\xff\x25\x3f\xa8\xf5\xeb\xe8\xbf\xd4\x07\x9e\x5d\xf0\x0e\xfe\x54\x05\x61\x54\xc1\x04\x41\x2e\xd7\xb2\x3f\xd9\x8a\xf2\x93\x89\x55\xd6\xe7\x49\x71\x78\xc5\x93\x02\x03\x00\xb6\xbe\x5c\x69\xb7\x2e\x34\xa4\x49\x11\xdb\xb1\xc1\x5a\xe2\x0d\x4d\x1d\xb0\x99\x66\x97\xe0\x1c\x27\x17\x60\x7f\x73\x63\xf9\xe9\xe3\x67\x1d\x16\xc8\xbf\x82\xba\xfe\x20\x14\x2f\xfc\x20\xfe\x0a\x2a\xd7\x52\xb4\xd1\xc4\xe5\x91\x82\x36\x41\xae\x40\x6a\xa0\x41\x47\xb6\xdd\x94\xf0\xea\x16\xce\x5e\x46\x45\xc1\xb3\xbc\xe3\xe2\xa5\xee\xdf\xf4\xc3\x78\x0b\x2f\xe5\xa4\xd1\x3b\x38\xee\xd4\xd5\x59\xb0\x14\x94\x08\x71\xbd\xd4\x36\x4e\xc1\x1d\xda\x96\xda\x9b\x73\xa5\xb2\xb4\x83\x14\xa1\x97\x2d\xe2\xcc\x1c\x27\xd3\x4e\x43\x61\x25\xab\x16\x57\x14\xc0\x59\x74\x8a\xc8\x97\x26\x08\xdf\x9c\x67\xaa\xe4\x1c\x6a\x2f\xe3\xe7\xf1\x35\xb8\xa0\xaa\x84\xff\x72\xfc\x67\x59\xd4\x7f\xcb\x8b\x9c\xcc\x90\x7a\x55\x1b\x43\x2d\xbf\xd7\x9e\xf8\x22\x34\xc5\xa3\x93\xc0\x71\xbc\xee\xa7\x97\x97\x51\x87\x05\xf0\xab\x50\x31\x4e\x06\x71\x9f\xd3\x56\xe4\x1b\xd9\x48\xd9\xf0\x55\x6e\x49\x68\xad\x82\x3d\x2f\xb1\xa0\xd4\x68\xc6\xc7\x3c\xb2\x9d\xce\xc4\x8b\x99\x43\xf0\x59\x63\xaa\xcf\xa1\x61\x03\x63\x26\x06\xfc\x64\x66\x5f\xbc\x26\x25\x0e\x53\x05\x83\xd8\xf7\xb2\x4c\xda\x33\x77\x33\xf8\xaa\xbb\x25\x6a\x48\xff\x46\x28\x44\x78\x06\x29\xbc\x66\x55\x66\x1d\x76\x44\x9f\x4f\x6c\x3e\x55\xa4\x5b\x07\xbb\xac\xcb\x5e\x81\xb7\x3e\x91\x0b\xb6\x0e\x76\x11\xc1\x89\x65\x10\x76\xb7\x26\x2b\x12\xdf\x8e\xf4\xb6\x3f\x59\xb5\x0a\x52\xda\x3f\x18\xfc\x8f\x09\xcf\x24\x7e\xd9\x17\x55\xe0\x64\xe9\x55\x0a\xa8\x45\x5e\x4b\xe3\x47\x87\x05\x60\x7f\x0b\xec\xd7\x07\x10\x79\x8a\x8f\xec\x3a\x03\x3e\x8a\x2f\xe3\x42\xd0\xf4\x60\x31\x70\x88\x3f\xb8\xa1\xd1\x57\x59\x07\x37\x5a\xd3\x62\x0b\xf8\xf0\x13\xb8\xca\xec\x26\xa3\x1b\xbb\x05\x1c\x73\xc7\x9e\x0b\xeb\x1b\xb4\x2e\xa7\xa6\x69\xa8\xdd\x91\x55\xe3\xc4\x5c\x3e\x18\xf0\x71\xc6\xfb\x51\xa1\x2e\xe2\x98\x1d\x40\x9a\xcd\x79\x16\x47\xa3\xf8\x1f\xfc\x15\x5c\xe9\x21\xb9\xe6\xc8\xfb\xda\xc0\x5c\x21\xb6\x50\x18\x16\x13\x49\xe4\x80\x78\xd6\xab\x3d\x91\xbf\x8d\xc7\x3b\x93\xd1\xc8\x6d\x13\x88\x92\xf8\x00\xb7\x87\xe3\xe4\x42\x7e\xb7\xf7\xc0\x4e\x9a\x88\x32\x71\x3e\xdc\xcb\xc4\xe4\xc7\xf6\x25\x54\x6f\x81\xda\x3b\x57\x94\x52\x32\xbc\x34\xcb\xa1\xd1\xcc\x0c\xc4\xc8\x8f\xb2\x44\x32\xb9\x3c\xe3\xd9\xb4\x12\x67\x69\x3a\xe2\x51\x32\xad\x88\xb4\xfe\x4d\x03\x12\x5f\xc4\x49\x61\x4b\xbf\xd8\x39\x27\x92\x91\x7e\x29\xb9\x62\x4a\xc5\x1a\x49\xba\xf0\xe1\x02\x89\x2b\x5f\x37\xf4\xb6\x72\xc2\xdd\x05\xb2\xd1\x57\xa1\x5d\x3c\x2a\xf4\x43\x9e\x66\x85\xbb\xaf\x7c\x38\xe4\xa2\x6c\x05\xf2\xdb\x9b\xee\x38\xf1\xb9\x1d\x9c\x11\xd7\x28\xa2\x8e\x61\xb7\x70\x1a\xcb\x57\x10\xe4\x1c\x89\x29\x84\x72\x9a\xbc\x13\xad\x92\x58\x55\x45\x51\x12\x9e\xeb\x95\x8b\xe8\x08\xca\xde\x0d\x7e\x48\x9e\xe9\xc7\x3e\x22\x1b\xa2\x47\xa0\x25\x57\x16\x6c\x05\x69\x86\x96\xe5\x41\x27\x9c\x25\x35\x88\x96\x51\xe5\x9f\x36\x0a\x67\xdb\xda\xc3\x99\x25\x66\xb0\xb2\x9e\xa8\x4b\x85\xcd\x5f\xd3\x38\xa9\x05\xf5\xc0\x6b\x67\x86\x71\x49\x2d\xb9\xe4\xa7\x50\xc6\xca\x2a\xa3\xb1\x44\x4b\x0c\x4f\xe3\x20\x12\x5b\x53\x9f\xf5\x4a\x2b\x2e\xd1\xe4\xce\x81\x45\x9d\x05\x6f\xf9\x4d\x10\xb2\x8e\xcd\x7c\x99\x6b\xbe\xc2\xf5\xd0\x86\x65\xe7\x68\xdb\x47\x77\x40\x39\x7d\xff\x5e\xae\xa1\xad\x09\xba\x03\x97\xdd\xaa\xb2\x59\xfc\x24\x8f\x34\x3d\x23\x95\xb2\x48\xe7\xee\x43\x5e\xf5\x4e\xec\x91\xde\xa6\x35\xd5\x30\x58\xdf\xbb\x42\xd2\x31\xdf\x54\x6b\x80\x91\xd3\x9a\x02\xfc\x08\xc2\xd0\xe3\x77\xe3\x6f\x55\x49\x47\xe5\x36\xa5\x0c\x0c\x13\x58\xb2\x9e\x95\xfd\x8d\x4b\x54\x42\xa1\x5e\x95\xbf\x10\xc5\xe8\xdc\x7b\xb8\x70\xf6\xeb\x0f\xfc\x26\xf7\x38\x51\x20\x61\x29\xed\xe0\x1f\xd0\x92\x85\x5f\x6d\xfa\xe0\x28\xdd\xb3\x6d\x5e\x06\x9c\xa0\xbb\x6c\x0d\x0d\x5e\xe2\xef\x9a\xf8\x9f\xc0\xe0\xb7\xa6\x73\xb7\xd3\x4c\x79\x12\xd4\x54\x63\x1e\x5a\xca\x64\xc9\xb2\x35\x4f\x1d\xb2\x13\x53\x99\xb3\x95\x15\x1f\x91\xa6\xb1\x09\xf7\x6f\x7b\x36\x87\xe9\x58\xf6\x47\x51\x50\x8b\x68\xda\x90\xd6\x14\x4f\xad\x24\xbd\xf4\x5a\xab\xa7\x90\x2d\xfa\x2b\xa2\x60\x37\xd2\x31\x0a\x40\x4d\x33\x3e\xb6\xc6\x82\xa6\xd2\x06\x3a\xae\x66\x60\x9f\x1c\x11\x61\x5c\xfa\x49\xd7\x4b\x4c\xdd\x8c\xbd\x1c\xeb\x41\xcf\x85\xf3\xbe\x9a\xdd\xab\x7f\x95\x6c\x5f\x17\x70\xd8\xbf\xfa\x67\x8b\x01\xea\x9f\x25\x0e\x68\x10\x46\x2c\x50\xff\x5c\xf1\x40\x17\xf5\x88\x09\x1a\xb6\x23\x2e\xd8\x3d\x29\x89\x0d\xea\x9f\x16\x1f\xd4\x8b\x4a\x07\x58\xbd\xcf\x69\xd4\xc8\xec\x12\xfa\x73\xa0\x56\x63\x77\xac\xc2\x95\x69\xb6\x5b\x59\xa8\x96\x8e\x8b\xdc\xb1\x47\xd2\x37\x8c\x9e\xe2\x23\xc5\xf4\x72\xc8\xb1\xa1\xa4\x96\x41\xb9\xf4\xc1\x24\x04\x32\xae\x46\xa5\x42\x15\x02\x11\x46\x46\x49\xb8\x95\x2d\x48\x1e\xe7\x83\x36\x5f\xa4\xec\x8c\xb3\x48\x8f\xbb\x59\xe6\xe7\x32\xf2\x25\x9e\x1b\x63\xcb\xea\xf1\xfd\x7b\xc3\x15\xe4\xbb\xb2\xd8\x66\xd5\x70\x3c\x39\xf5\x80\xed\xef\xa0\x9e\xf9\xbf\x55\x1d\x5a\x7b\x47\x7a\x38\xe4\xba\xeb\xe8\xc7\xc3\x2e\x27\x39\x04\x84\xe1\x31\xa4\x10\x83\xa6\x84\xda\xab\xa0\xd6\x59\x9a\x31\xc2\x3a\x7c\xb3\x71\x3e\x55\x5f\xf5\x0d\x5f\xd6\x98\xe6\xc7\x8a\x29\xb1\x94\xc7\x52\x59\xdd\xab\x53\x48\xbe\xa0\x82\x9e\xf1\xbf\x4e\x20\x9a\xbf\xea\xb0\x9c\x82\x71\x96\xbe\x8b\x07\x7c\xd0\x0c\x2a\x2c\xb4\x7a\x7c\xa4\x45\xdb\x50\x6b\x66\x01\x6f\xf8\x78\xb4\x53\xfc\xd3\xb0\x0c\xa8\x22\x25\x78\x83\x35\x16\xd3\x2c\xcd\x9a\x4f\xe0\xc7\xa8\x5e\x92\x35\x98\x52\xf6\x8c\xe8\x86\x48\x89\x0a\x02\x41\x3d\x9e\x1c\x9b\x02\xed\x8b\xfd\xcd\x56\x08\xd9\x9a\xb7\x4c\xc7\x0c\xd3\xfe\x42\x88\x19\x31\x55\x58\xad\x69\x86\xe3\x88\x32\x6c\x8d\x00\xd5\x85\x3a\x6c\x61\xc1\xae\x47\x9a\xd0\x66\x0f\x25\xae\x95\x3e\x19\xd3\x87\x67\xcb\xaa\x8f\xfe\x21\xbb\x85\x3a\x25\x82\xa0\x3e\x91\x66\x89\x51\x85\x36\xa8\x5f\x4f\x1b\xb4\x29\xd4\x71\x6a\x91\x06\xb4\x81\xa6\x44\x2d\xfd\xa3\x90\xdf\x3a\xae\x8c\x5b\x02\x99\xf9\x60\x96\x30\x74\xcd\xfe\x5a\x02\x5b\xee\x2a\x35\x0e\x95\x1b\x20\xaa\xc0\x94\xee\x93\x52\xa5\x16\xbd\x8c\x14\xb7\x45\xa7\xcc\xdf\x4b\x66\x27\xfb\xb3\x63\x3a\xa2\xfd\xb5\x3e\x55\x4c\x8b\x5d\x86\x74\xb5\x4a\x4e\x20\xd6\x24\xab\x2d\x2d\x7b\x7a\x27\xc5\x7c\xa6\x4d\x78\x04\x1f\x21\xc9\x38\x90\x21\xd9\xbb\xbf\xf3\xe2\x53\x07\x98\x35\x05\xe1\x31\x6c\x59\x00\x4b\xdf\x2b\xfa\x5c\x2e\x47\x3b\x5f\xfa\x2a\x29\x5a\xf5\x41\x19\x09\x0a\x82\xe6\x23\x66\xc9\x2a\x15\x36\x17\x78\xad\x45\xa2\x19\x92\xd0\x6a\xb5\xee\x64\x48\xbe\x57\x51\x93\xf7\x00\x66\x9b\x75\x28\x35\x27\x55\x56\x2b\x0c\x3f\x41\x50\x65\xf4\x21\x7c\x83\xc0\xa9\x66\x1d\x95\x8d\x79\x55\x3e\x3a\x11\x52\xd3\xab\x56\x51\xe9\x89\x35\xdc\x8a\xa8\xb2\x98\x28\xff\xb9\x92\x4d\x42\x1f\xb1\x6c\x52\x06\xad\x64\x4b\x2d\x3d\x91\x22\x2c\x4e\xfc\x87\x32\xe5\xfb\x68\x9b\x96\x08\x50\x6e\x86\x5a\xd2\x64\x6b\x81\xb4\x33\x07\xa2\x99\x92\x48\xec\x81\x2a\xcb\x0b\x9d\x4a\x57\xed\xb0\x00\xcf\x4f\x82\x4a\x45\xda\x86\xa4\xab\xfa\xa6\xc7\xab\x1f\xfa\xa7\xe0\x88\x80\xb5\x17\x6d\x41\xae\x77\x85\xda\x5f\xa1\xcc\xbb\xc2\x3e\xa0\x12\xaa\xf0\x65\x30\xa8\xe0\x5b\xa5\xfe\x40\x0d\xdf\x96\x39\x75\xab\x54\x95\x57\x0a\xff\x5d\xb5\x79\xf5\x27\xd5\x7d\xc5\xcc\x54\x6b\xbe\xaa\xa5\xb2\xf2\x7b\x67\xb5\x57\x8f\x64\x96\xfa\x5b\x1a\x72\xc5\x77\x29\x16\xac\x39\x2f\xb2\x32\x03\xa0\xb5\xbc\xea\x32\x5d\xdb\x8a\x4f\x55\xea\xb3\xae\x3a\x45\x8d\xd6\x6d\x57\xa8\xd3\xf6\x00\x2a\xd5\x6a\x55\x6c\x0e\xf5\x1a\xfc\xb2\x52\x50\x4b\xd1\xd5\x0a\x0d\xc2\x0a\x82\x96\xca\xe8\x3d\xe8\xb1\xda\x81\x7a\xc8\x65\xa1\x1a\x82\xc2\xac\xb1\x60\x0d\x2f\xbe\xae\xfa\xb6\x91\x23\x59\x96\xd4\x28\xa7\xdc\x74\x6f\x67\x26\x03\xcf\x24\x25\x8f\xfb\x60\xf1\xf3\xe5\x76\xbb\xfd\x78\x35\x08\x21\x79\x00\x3b\xfe\x0c\x62\xd9\xc4\x7d\x26\x5a\x2e\x6e\x8e\x3f\x63\x19\x1f\x67\x3c\xe7\x09\x66\x1b\x67\xe9\x39\x8b\x30\xcb\xcf\x65\x94\xbd\xb5\x1b\x51\xe6\x24\x54\x70\x9f\x75\xd1\x21\x1a\x5a\xf8\xf2\xf1\xcb\xc5\x60\xe6\x05\x93\x8a\x5e\xfe\xdf\xff\xfd\xbf\x82\x70\x46\x53\xbd\x95\x2f\xbf\xd9\xf8\xf2\x9b\xc7\x76\x2b\x7e\x85\x08\x57\xd5\x5c\xf2\x6d\x1b\xfb\xf3\x92\x5a\x72\xb9\x34\xd3\xfc\x52\xa6\x7a\x1c\x7c\xf8\x2b\xda\x9e\x13\x62\xff\x29\xb0\x73\xed\xd0\xf9\x28\x60\x6e\x0b\xcc\xed\xb0\x95\xf6\x03\xce\x8d\xa5\x2b\x82\x7d\x94\x6c\x1d\x11\x5b\xee\x44\xde\x63\xe6\x01\x1f\x17\xc3\x0e\xfb\x5a\x39\x32\x5c\x24\x69\xc6\x2b\x0f\xbd\x21\x84\xd9\x38\xe3\xc5\x0e\xe2\x68\x4f\xa0\x68\xec\x0e\x10\x6e\xa8\xf2\x82\x67\x72\x90\x02\xfd\xcc\xa7\x1c\xa9\x6b\x6e\x1d\x6d\xd3\xfb\x9b\xf7\x39\xcf\xad\xe8\x97\x7b\x1f\xc8\x3d\xbf\xb5\xee\xfb\x2c\x7e\x5e\x3b\x3e\x1e\x2c\x85\xab\xad\x0b\xfb\xba\x41\x9d\xe1\xb9\xed\x41\x91\xf9\xa4\x26\xe9\x12\x75\x9e\xa5\x97\x1b\xd2\xb7\xb8\xa6\xaf\x1f\xe8\x9a\x75\xb6\xdc\x0e\xad\x58\x05\xa6\xfb\x66\x56\xd4\xf1\x8c\x75\x32\x57\xbe\x10\x2c\x0f\xe6\x88\xb1\x4e\xbb\x91\xca\x43\x68\x7a\x9f\x1a\xf0\x44\x1a\xcf\xb5\x1b\x69\x50\x0f\x42\xf6\xc2\x75\x22\x35\x06\xcd\x66\x3e\x1e\xc5\x85\xf7\xf0\xcd\x14\xa2\x79\xb7\xe1\x92\x4e\x9c\xb3\xab\x61\x54\xb0\x33\x15\x93\xfd\x2a\x1e\x8d\x58\x3e\x39\xbb\x8c\x0b\x76\x35\xe4\x98\x94\xeb\xff\xfe\xef\xff\x05\x98\x1d\xc1\x75\x9a\xb4\xdf\x9f\x64\x39\xc8\x8d\x08\x29\x1a\x8f\x47\x71\x1f\x88\x5d\xeb\xba\x71\x75\x75\xd5\x10\x2c\xa7\x31\xc9\x46\x48\x9a\x06\xec\x2c\x1d\xdc\x40\x1e\x2c\x01\x0d\x5e\x0a\x35\x26\x3d\xc7\x94\x5f\xd1\x05\x64\x28\x2f\x30\x94\x08\x80\x14\xef\x21\x89\x26\xf4\xd1\xb2\xc3\xe9\x5e\x61\x2f\x0b\x3e\xc0\x92\x82\x70\x44\x70\xf3\x8c\x8f\x8b\x86\xe6\x56\xa2\x7f\x45\x91\xc5\x67\x93\x82\x8b\x16\x0d\xb4\x26\xdb\xcb\x78\x3e\xb9\x8c\xce\x46\x37\x2c\x1a\xe5\x29\xe6\xb7\x4a\xc1\x06\x28\xeb\xe7\x18\xf9\x6d\x90\x42\x94\x7a\xd9\x49\xdd\x43\x6b\x5e\xea\x2c\x9f\xf4\x87\x2c\xca\xd9\x24\x6f\x44\x79\x3f\x8e\x9b\x8a\x4a\xa5\xc6\x5e\xe2\xa5\xf3\xc1\xea\x6c\x6e\xa3\x57\x8d\xe7\x9c\x45\x19\xc7\xa9\x43\x1f\xb4\x86\x9a\x67\xa0\x45\x2c\xed\x17\xa2\xe7\x9a\x0d\x89\xb9\x26\x1c\xa8\x8e\xce\x1f\x11\xbc\x87\xe1\x09\x50\x82\x24\xf3\xbc\x60\x51\xbf\x98\x60\x42\xb6\x5c\x82\x93\xc0\x9b\x2a\x6d\xad\x63\x01\x72\xd9\x49\xf5\x60\x24\x53\x22\x7b\xe8\x27\x75\x6c\xa7\xf7\x0f\xbc\x06\x7a\x86\xdb\x14\x4b\xe0\xcd\xb3\xea\xa0\x04\x3a\xb8\x00\xf4\x50\xa8\xcf\x07\x05\x55\xd7\x4a\x64\x92\xad\xd9\xb4\xe4\xef\xc7\xc7\x6b\xad\x3a\x04\xd5\xe8\x90\xcb\x5c\x02\x1c\x10\x61\x02\xcb\xa6\x96\xb0\x89\xb7\x92\xf3\x38\x89\x8b\x1b\xb6\x46\x0c\xf3\x9d\x8a\x1a\x54\xf6\x89\x50\x23\x57\x3d\x96\x7b\xb8\x24\x2f\xd5\xb1\x13\x56\xbc\xcc\xb7\xf1\x78\x4b\x86\x3a\x6a\x2c\xc3\x94\xff\xc0\xf9\x18\x13\xff\x09\x3c\xbf\x82\x7b\x70\x62\x65\xc5\xf2\xb0\x5c\xad\xd7\x55\x94\xb3\xf3\x74\x92\x0c\x0c\xac\x78\xb5\xd2\xac\x4f\x45\xa6\xd5\xbb\x09\x5d\xa0\x9c\x10\xc5\x04\x06\x5b\xa9\x96\x28\xc8\x50\xea\x28\x3e\x31\x74\x0f\xb0\x2b\x08\x3d\x77\xf3\x7c\xf5\xa0\xd8\xb4\x6e\xd1\x7f\x66\xa8\x92\x8b\x57\xdf\xab\x2e\xb5\x41\x76\xf5\x3c\xf0\x89\xa4\x39\xfb\xea\x35\x93\x06\x2e\xb5\xc0\xb1\xef\x6e\x3a\xeb\x3a\x53\x8a\xd4\x41\x45\x9e\xc8\x79\x21\x36\x78\xae\x68\x17\x88\x38\xec\x2c\xe3\xd1\xdb\xf9\x6f\x0b\xdc\x6d\x0d\xc1\x9a\x02\x93\xa3\x3b\x7f\x47\x15\x51\x6d\x0a\x35\x36\x57\x37\x15\xdf\xa5\x3f\x68\xef\xb7\x49\x34\xca\xf7\xd2\x5c\x96\x35\x08\x73\xd2\x0d\xdc\x00\x33\x63\x28\x56\xae\x09\xb7\x32\x84\x28\x6b\x01\xe8\x02\x15\x28\x95\x5e\x82\x3b\x4c\x25\x4d\xba\x2e\x19\x2b\x9d\x85\xb1\x06\x5e\x9a\x00\xa9\x7b\xeb\x2d\x2e\x5d\x37\xa2\xac\xa8\x53\x83\xf6\x5c\x8e\x1b\xf2\xce\x4a\xa5\x8a\xcb\xd6\xf0\x04\xb1\x63\x2c\x45\xac\x52\x93\xa8\xee\x98\xbc\x90\xd9\xae\x8b\x79\x0c\xef\xdb\x4d\xc7\xa1\xa9\x8c\xd1\x8e\x54\x45\x9b\x1e\xe3\xf4\x87\x86\x07\xd4\xcb\xf5\x49\x06\x49\xe4\x58\x3f\x45\xd5\x5b\x53\x5d\xb9\x72\x86\x6b\x6a\x4e\x1f\xa6\xf4\x6d\x99\xbd\x95\xc3\x69\x97\xfb\xa4\x48\xa8\xb9\x54\x95\x54\xbc\xb8\xc8\xe6\x56\x5b\x71\xb2\xab\x40\xb9\xb7\x85\x4a\x5d\xb2\x77\xc2\x91\xd8\x4b\x65\xa9\x93\xb4\x43\xae\x93\xb0\x35\x70\x01\x3e\x61\x1d\x67\x47\x94\x1a\xd1\x27\x9a\xe0\x43\xe4\x8d\xc1\x60\x8c\x4d\x12\x71\xd4\x0d\x19\x6d\x1b\x62\xee\x50\xbc\x58\x4d\xe0\x94\x3a\xc5\xe6\x88\x00\x04\x48\x59\x8e\x9a\x84\x09\x13\xa1\x0f\x1a\x27\xa5\x37\x75\xbe\x27\xaa\x0c\x2c\x29\x65\xc4\xa3\x73\x15\x02\x42\x7e\x47\xff\x69\xd6\x29\xa1\xbd\xa5\x40\xf8\xef\xe5\x59\xd9\x1a\x1b\x6c\x59\x10\xe7\x17\x40\xa4\x1b\x8d\xb2\xb5\x0f\x87\x44\xdf\x64\x69\x5a\x98\x34\x8e\x65\xf3\x1f\x7e\x87\x0b\x5a\x27\x96\x66\x42\xd4\x41\xdf\x8a\x81\x71\x5b\x5d\x56\x12\x63\x9e\x6b\x7d\xa8\x6c\x75\xa7\x48\x52\x74\x48\x20\x42\xed\xe3\xb8\x44\xf7\xd5\x4d\xe3\xb6\xba\x69\x06\xe3\xa0\x5f\xe0\x6f\x33\x87\xb2\xdc\x49\xc0\xd6\xb0\x18\x52\x9e\xe5\x3a\x20\x7f\x07\xde\x79\xda\x55\xe1\x26\xb5\x02\xa9\x3b\x02\x0a\xa4\xe7\x1e\xe1\x82\x67\x32\x61\x87\x9b\x11\x88\x8e\xf8\x03\xc5\x48\x71\x97\xb5\x3b\x88\x53\xee\x54\x10\x69\xa5\x5c\x79\x21\xce\x77\xa2\x9d\x1a\x26\xf7\x2c\x7f\x96\xf3\x03\xa7\x10\xba\x33\xde\x62\xd2\x1d\x4f\x66\x09\xed\xce\x2c\x8f\x93\x24\x30\xd4\xfb\xb9\x56\x31\x23\x58\xed\x39\x31\x0d\x6a\x4b\x8c\xd3\xfd\x29\x73\x75\xe4\x0b\xec\x03\xd7\x50\x55\x7c\x4c\x31\x91\xfe\x69\xf4\x03\x3d\xd2\x83\xad\xaa\x5d\x41\xfa\x24\x15\x10\xfb\xd1\x13\xd6\x5a\x45\xb4\xb6\xe3\x85\xf9\xa9\x94\x6c\xd4\x21\x53\xea\x00\xaa\x4a\x97\x12\xdf\x6b\x17\xf1\x3b\x9e\xfc\x20\xc5\x96\x59\xb4\x0b\xf0\x55\xd5\xf0\x18\x1e\x5c\x4b\x83\x10\x41\xb3\x28\xc9\x41\x21\x1f\xa4\x85\x90\x3c\xd1\x08\x5a\xa4\x4a\xa0\xd2\xef\x0c\x79\xb4\x45\x0f\xea\x58\xa7\xda\xa6\x51\x5e\x9a\xb5\xa3\xbf\x37\x8f\x4e\x96\x42\x88\xf6\x72\xf4\xc5\xf2\x09\xc8\x6b\xaa\x28\x8d\x58\x7e\x08\x8a\xed\x05\xbf\x66\xfd\xe1\x24\x79\x9b\x53\x3d\x47\xdd\x2b\x62\x5d\xd6\xaa\x1d\x1f\x1f\x1d\xfd\xfd\xe8\xf8\xf8\xe4\xe4\xd1\x49\xd8\xa2\xca\xe4\x30\x1e\x0d\x3c\x45\x2e\x68\x33\xdf\xf1\x42\x5a\x32\x32\x9e\x14\x56\x80\x10\x7e\x71\x89\x99\x29\x8c\xa4\x31\x96\x16\xd4\xc5\x45\xdd\x87\x26\xa4\xb9\x16\x8c\xd0\xd6\x0e\xb1\xaa\x02\x02\x8e\x9f\x46\x18\x93\xaf\x9b\x72\x1b\x82\x13\x28\xed\xd5\x41\x11\xe5\x43\xd2\x2f\x99\x43\x8f\x5f\xc7\x79\x91\x57\x9d\x4b\x32\x23\x07\xf0\xa4\x70\x83\xe4\x6c\x9d\xb3\x2b\xb0\x3e\x60\x2e\x61\x48\xca\x2e\x48\xb6\x3c\x2a\xce\x15\x3e\x81\x01\x41\xda\x87\x01\x3a\x98\x19\xae\x20\xdd\x5f\xfa\x8e\x67\x57\x59\x5c\x70\x59\x89\xa6\x75\x47\xf3\x6e\xcc\x73\x9b\x1f\x2d\x78\xf9\xc3\xe2\x22\x9b\x12\x18\x4e\x0e\xc0\xab\x64\x2e\x54\x85\x9b\xab\x76\x93\x9f\x73\x8b\xc3\xa1\x07\x5c\x79\x95\xed\x7b\x76\xc8\x76\x9a\x8e\xc1\x35\x6b\x72\x31\x44\xfc\xca\x78\xc2\xa2\xf1\x98\x27\x60\x16\x2b\x52\x58\x34\x0c\x1e\x3a\x49\x8a\x78\x24\x26\x7d\x18\x17\x68\xfc\xa5\x2b\x17\x93\x40\xca\x32\x1a\xa7\x17\xcf\x6a\x06\x0f\xa1\x41\x83\x6f\xa1\xe5\x67\x08\x07\x88\x14\x80\xad\xdf\xb9\x71\x1c\xee\xbb\x36\xb2\x37\x47\xcb\x27\x16\x97\xfd\x73\x16\xab\xbc\x54\xa6\x3b\xbe\xe5\xda\x02\x2b\x65\xc6\x83\x9c\x45\x32\xf8\x33\x28\x03\xbf\x4e\xf2\x82\x45\x83\x01\x18\x50\x21\x66\x54\x9c\xb3\x11\x3f\x2f\xe8\xe9\x94\x04\x6d\xf5\xd5\x34\xac\x5d\x85\xe5\x34\x38\x3b\x5a\xfb\x0f\x33\x0f\x0b\x20\x82\xa9\x3c\x4d\x9d\x42\xcf\xfd\xae\xae\xf0\x71\x9a\x9b\x2b\x2d\xf0\x21\x5d\x5c\xa5\x42\x55\x76\x71\xa5\x1f\x2a\x5d\x5c\x69\xa1\xbb\xb8\xb8\xbe\xe2\x77\x72\x71\xfd\x0b\x7a\xab\xb2\x92\x89\xcf\x37\xc0\x29\x8e\x76\xaa\x48\xc7\xaa\xe1\x06\x90\xa0\x7e\x19\x7f\xbc\x2b\x63\xe9\xec\xae\xd4\x90\xf9\x58\xe1\xa2\xe9\x14\xea\x38\x7d\x30\x9f\x68\xb3\xe4\x54\xd0\x6a\x51\xbf\xb7\xae\x10\xea\xb6\xcc\x67\xda\x8c\x7e\xfb\x2f\xed\xa3\x29\x0f\x30\xad\xc6\xe0\xac\xca\xdf\x04\x7c\xa2\x80\xc5\x0b\xcb\xe5\xd3\xe3\x3e\xa9\x76\xb7\xdf\xd5\x4e\x7d\xed\x94\xad\x33\x14\xee\x3c\xae\xa4\xea\xe0\x8d\xdc\xd3\x52\x11\x4d\xac\xd2\xa1\x69\xdb\x78\x99\x96\x5d\x4f\xeb\x96\xa0\x34\x2d\x65\x4d\x7c\x39\x1e\xc5\xfd\xb8\x68\xf4\x53\x9e\xf5\xe3\x34\xa9\x8b\xb7\xfc\xba\xc8\xa2\x06\x48\x0d\x39\x1d\x0a\x1c\xf7\xd6\xec\x71\x8c\x65\xa8\x3a\x8d\x5c\x18\x41\x97\x7e\xc2\x24\x65\x6c\x8d\x2d\x91\x0f\x56\xbf\xc7\xc5\x90\xf4\xd9\x73\x90\x8c\xfe\x58\xa5\x93\x13\xe5\x90\x41\x2b\x57\x1e\x33\xd3\x7e\x57\x1f\xfa\xfa\xb0\xa7\xb2\x34\x19\x44\x55\x19\xd2\x35\xf7\x6c\x9b\x76\xc8\x73\x92\xe3\x6e\x57\xa7\x08\x69\xdb\xfe\x62\xb7\x68\x8e\xcc\x15\x10\xad\xd6\x2e\xa8\xb5\xa1\x35\xac\xc3\x74\xab\x87\x54\xa6\xf2\x4e\x93\x55\x82\x76\x8f\xbc\xff\xb8\x9c\x52\xd5\x51\x9f\x73\xce\x57\x76\x3d\x2d\x4b\x27\x96\x63\x90\x8e\xbe\x08\xdb\x43\x3d\x81\xb8\x61\x2e\x60\xeb\x42\xd3\x2f\x06\xde\xcf\x3e\x65\xf9\x45\x15\xfc\x72\xbc\x0b\x16\x89\x52\x74\x48\x49\x88\xd6\xe8\x99\xa8\x73\xe2\xe9\x1e\x4a\xde\xd7\x6c\x66\xa4\x5a\x4c\x00\x01\xda\x18\xa8\x1b\xa0\xa6\x45\xc9\x80\xe5\xbc\x98\x8c\xe1\x95\x10\x45\x50\x47\xf3\x68\x8b\xd4\xc5\x51\x8e\x2d\x9c\x12\x7a\xf1\xed\x7c\x3e\x89\x6f\xbd\x57\x0e\x13\x7e\x85\x53\xa7\xcd\x1c\x35\x38\x78\x91\xed\x4a\x7b\xb0\x16\x7d\x2b\x26\x38\x2c\xf9\x06\xcb\x23\x09\x88\xf1\x0b\xa6\x68\x6c\xa8\x3a\x9a\xb5\x44\x07\x6d\x91\x86\x58\x6c\xd2\xc1\x73\x9a\xdf\x13\xbd\xcc\x4f\x7c\x9f\xf4\x6b\x1d\x4c\x05\x06\x68\x17\x82\x57\xf3\x87\x64\xa9\x8e\x8c\x24\x4b\xe9\xb0\x11\xd4\xc5\x47\x9a\xa1\x89\x0f\x0f\xf4\xab\x63\xfe\xd4\x03\xd4\xc1\xed\x15\x77\x63\x8f\x5a\xc7\xd9\x71\x12\x5f\x8a\xf6\x58\x74\x1d\xa7\x39\x3b\xcf\xd2\x4b\x16\xc0\xdf\x01\xf9\xf8\x9b\xfa\xf2\x1b\xbe\x1e\xf1\x82\xe9\xbc\x9f\x01\xbc\xc2\x6e\x63\x5e\x64\x76\xc1\x8b\x57\xea\x73\x2d\x64\xdd\x17\xec\xf7\x63\x48\x76\xa8\x34\x0d\xf8\x28\x5e\xdd\x96\xea\xe6\xb4\xee\x17\x58\x92\x82\xd0\xed\x7e\x31\x0d\x8a\x72\x8b\xe8\xb2\x1a\x66\x97\xa9\xb3\x49\x36\xaa\x83\x47\x4b\x1d\x83\xd3\xee\x29\x4e\x90\x43\xfa\xa9\xcb\xba\xa8\x7a\x1e\x5f\xd0\xc6\xb0\x2e\x04\x94\x16\x7f\x34\x8b\x74\x3b\xbd\x52\x79\x3a\xb0\x88\x98\x0b\xcf\xde\x72\x9a\x20\x85\xe1\xcb\xeb\x0c\xce\xd6\xb2\x11\xbe\x17\x84\x8f\x6c\x35\xa1\xff\x87\xaa\x0f\xcc\xa9\x21\xf4\xcb\x35\xa1\x80\xfe\x86\x14\x1b\x3d\x71\xfd\xed\xdd\xe2\x4f\xab\xe5\x69\x79\xc9\x6d\x51\xba\x6a\x2e\xc9\xae\x5c\x46\xe3\x1a\xec\xee\x17\xea\x56\x2c\xdc\xee\xf6\x78\x88\x38\x6d\xc3\xbe\x0e\x55\x54\x81\xc5\x20\x0c\x31\xef\x89\x19\xaa\x58\x05\x32\x3e\x15\x7c\x5a\xa0\xdd\x11\xce\xf4\x49\x4d\x75\x56\xad\x99\x5c\x1c\x39\x2e\x63\x2f\x57\x4b\x24\x28\xc6\x05\xc7\x90\x71\xf3\xc1\xf5\x41\x9c\xb7\xae\x35\xf7\x02\x7b\x42\x17\x9e\xc6\xcb\xd6\xa3\xee\xbd\xff\x01\xac\x47\xcc\xf3\x0f\xbe\xdc\x1f\x30\xee\xfd\xd6\xa3\x47\xb2\x05\xf9\x23\xb7\x4d\x87\xed\xa7\x23\x7e\xc0\xb3\x77\x71\x9f\x9f\xae\x83\x45\x5b\xbc\x39\x4c\x5f\xe7\x3c\x93\x65\x27\xd9\x68\x7a\xb9\xd7\xfb\xdb\xb2\x28\xce\xdf\xf4\xd2\xa7\x87\xbf\xec\xf5\x54\x37\xa2\xab\xd3\x99\xe0\x4f\xf7\xd7\x7f\x3e\x35\x6d\x7c\x0b\x92\x1d\xba\xac\x35\xe4\x78\x5a\x25\xba\x30\x0d\x20\x11\x67\x6a\x5a\x4c\x04\x42\x7c\xab\x91\x0a\xa1\x68\x1a\x64\x8a\x35\x25\x39\x42\x71\xc0\x7d\xd9\x31\x24\x51\xd1\x0d\x84\x84\x38\xe3\x40\xc2\x97\x86\x62\x8c\x23\xa1\x1d\xb0\xa0\x15\x8d\xe3\xd6\xbb\x76\x4b\xf9\x88\xb4\xf0\xac\x01\x12\x58\x36\xa2\xc1\x20\x30\x55\xc4\x34\x38\x24\x67\xcf\x1e\x92\xf9\x0a\x56\x7f\xf3\x4a\x9a\x91\xd5\x66\x0e\x04\xa8\xe0\xc4\xb6\xed\x90\x4d\x06\x13\x4e\xfb\xaf\x6a\x58\x14\xa8\x02\x68\xb7\x02\xa8\xdc\x7d\x76\x5e\xc9\x9a\x10\x6c\xa4\x7d\xe5\xc7\x38\x07\x33\xb6\xe4\xa6\x03\xa2\x31\x74\xa0\x4b\x41\x18\x4e\xe9\x40\xf3\x0b\x97\x5e\x9a\xb6\x29\x15\x9f\x56\xa3\x94\xe9\xc2\x94\xde\x89\x2e\x39\x81\xc8\xdc\x05\x38\xb2\x4a\x9e\x38\xcb\x3f\xbd\xb0\x02\x7a\x1b\xae\x5a\x03\xd4\x21\xef\x60\x07\xd7\x82\x71\x9a\x17\x41\x5d\xa1\xea\x12\x20\xd1\x7c\xfc\xcf\xcf\x51\xe7\xd9\x8a\x74\x07\x85\x0e\xcf\x9f\x0f\x7b\xef\xd8\xae\xa0\x19\x53\x1b\x85\x59\xb8\x3b\x60\x67\x2c\x55\xd4\x60\xfa\xde\xfa\x70\xb4\xe2\x1e\x44\xe0\x2f\x88\xef\x16\xba\xdf\x49\xec\xb2\xc4\x4e\xb9\x17\xb4\x9c\xf3\xe7\x0a\x40\xb7\xf3\xf3\xdd\xed\x38\x2f\xc4\xf3\xba\x59\xe0\x2a\xd6\xeb\x29\x3a\x9d\xfb\x7a\x2a\xcc\x64\xc0\xbe\x3a\x0f\xe5\xc1\x1e\x98\x1f\x37\x1b\x1e\xc5\x92\xe0\x7c\xe2\xc3\x9f\xf8\xf0\x1f\xcd\x87\xa7\xec\xc8\xfb\xb3\x62\x8d\xc1\x77\x6f\xfb\x43\xb1\x63\x3f\x39\xfb\x28\x39\x32\xa1\x07\x7f\x41\xd4\xff\x77\x63\xc9\xfb\xfc\x32\x7d\xc7\xc5\x9b\xcd\x2c\xbd\x9c\xa6\x0c\x97\x4b\x4e\x67\xc8\xe5\xf2\x33\xf9\xb1\xa7\xca\x43\xd9\x71\x19\xe4\xc7\xcd\x8d\x33\x18\xcf\x27\x7e\xfc\x89\x1f\xff\x29\xfc\xb8\x7a\x47\xde\x9f\x1d\x13\x14\xbe\x73\xe3\x1f\x8a\x1f\x7b\x89\xd9\x47\xc9\x8e\x2d\x82\xf0\x17\xc4\xfd\x7f\x07\x86\xfc\x72\x92\x0c\x0c\x6e\x7e\xc7\x0b\x7c\x41\x39\x71\x45\x91\x32\x0b\xae\x28\xe8\xe5\xbd\x55\x65\xef\xc3\x74\x2b\x60\x7d\x7c\xdc\xf6\x0c\xfa\xdd\xb8\xe0\x9f\xb4\xde\x4f\x5c\xf6\x8f\xe3\xb2\x33\xf6\xde\xdd\xd8\xab\x83\xb3\xf3\xb7\xf6\x10\x7e\x5a\x4d\x92\x3e\x1a\x46\x5a\xda\xeb\x7f\x41\xb4\xfe\xf7\x63\xa0\x07\xd1\x3b\x3e\x8b\x83\x9a\x32\xb3\x58\xa8\x29\x39\x07\x0f\x25\x85\x1f\xce\x44\x0d\xb0\x8f\x96\x8b\xe6\xd1\x27\x65\xf5\x13\x1b\xfd\xd3\xd8\x68\x79\xfb\xdd\x8b\x8f\x6a\xac\xbd\x43\x7b\x1f\x8e\x93\x5a\xa4\xe9\x63\x63\xa5\x64\xc3\xff\x05\x71\xfb\xdf\x8f\x97\xae\x0f\x06\x07\xb8\xc4\x87\xe9\x2c\x9e\x5a\x2e\x3b\x8b\xb7\x96\x6b\xcc\xc1\x63\x3d\x95\x1e\xce\x6b\xcb\x40\x3f\x56\x9e\x0b\x3e\x13\x0d\xf9\xf2\x13\xef\xfd\xc4\x7b\xff\x24\xde\x5b\xbd\x2d\xef\xc3\x83\xcb\x58\x7c\x8f\xf6\x3f\x1c\x4f\xf6\x92\xb6\x8f\x8c\x37\xfb\x08\xc3\x5f\x70\x0f\xfc\xfb\xf1\xe8\xed\x38\x97\xb6\x97\xbc\x9a\x39\x93\x42\xb3\xb8\x32\x29\x3a\x07\x3b\xa6\xa5\x1f\xce\x87\x09\xb4\x8f\x97\x01\x7f\x72\x99\xfa\xc4\x79\xff\x44\xce\xeb\xd9\x81\xf7\x63\xb9\x53\x1c\xa5\xa6\x53\x88\x0f\xc3\x64\x6d\x12\xf5\xd1\x71\xd7\x4f\x8e\x51\x7f\x2d\xb6\x8a\x3e\x02\x52\xec\xdb\xcc\xd2\xcb\x59\xfa\x6f\x45\x85\x59\xec\xb6\xa2\xda\x1c\xac\xb7\xaa\xe6\xc3\xd9\x70\x05\xe4\x8f\x97\x25\xa3\x9b\xc4\x27\xb5\xf8\x13\x73\xfe\x93\x99\xf3\x8c\x3d\x7a\x3f\x46\xed\xc1\xe6\xfb\xf6\xe3\xc3\xb1\xef\x6a\xf2\xf7\xd1\xb1\x72\x2f\xb5\xf8\x0b\x6e\x8c\x7f\x07\xa6\xee\x73\xc3\x9f\x79\xed\x68\xce\xcb\x46\xf3\x5f\x31\xfa\x70\x17\x8b\x3e\x42\xbd\x38\x4b\x3f\x69\xc5\x9f\x18\xef\x3f\xe5\x22\xd1\x3d\x35\x62\x07\x63\xe7\x6d\xeb\x43\x5f\x17\xfa\xa8\xf4\xe0\xd2\x2e\xff\x0b\x22\xf4\xbf\x03\xc3\x84\xb8\x4f\xc4\xad\x0f\x9e\x29\xc3\xf4\x16\x28\x33\x4c\x6f\x31\x2f\xc3\xf4\x97\xbc\x0f\xc3\xf4\x42\xfa\xf8\x18\x26\xc6\x4c\xfd\xe4\x83\xfc\x89\x61\xfe\xa1\x0c\x73\xea\xbe\xbb\x1b\xc3\x74\x30\x76\xde\xb6\x1e\xc2\x30\xab\xc8\xd0\x47\xc3\x30\x4b\xbb\xfc\x2f\x88\xd0\xff\xb6\x0c\xf3\xe5\xcd\xeb\x24\xfe\x6d\xc2\xb7\x06\x3c\x29\xe2\xf3\x98\x67\xf9\x4c\x1e\xea\xa9\x33\x27\x5b\xf5\xd4\x9c\x9f\xd3\xfa\x2a\x7f\x30\xe6\xeb\x01\xfe\x31\xf3\xe3\xc6\xd9\x4d\x63\x02\x03\x6a\xc4\x66\x44\x9f\xb8\xf4\x27\x2e\xfd\xe7\x72\xe9\x29\x7b\xf6\xbe\x8c\x7b\x0a\x6a\x3f\xa0\x53\x1f\x9c\xc3\xfb\x89\xe4\x47\xc8\xf4\xa7\x92\x92\xbf\xe0\xae\xf9\xb7\x13\x05\xb6\xe3\x1c\x51\xb6\x9a\xf3\x9b\x22\x33\x18\xbd\x29\x38\x9b\xaf\x93\xb2\x0f\x66\xe3\x06\xd6\x47\xcb\xb5\x3f\xd9\x9d\x3f\x31\xe8\x3f\x8f\x41\x97\x37\xdf\xbd\xf8\xf1\x14\xd3\xf3\x34\xba\xf0\x41\x38\xad\x45\x94\x3e\x36\xc6\xfa\xc9\xfe\xfc\x97\xe2\xa1\x07\xd1\x3b\x3e\xdd\x00\xad\x4b\xcc\xe0\xa0\xba\xdc\x6c\x06\x6a\x8a\x3e\x98\x7f\x6a\x50\x1f\x2d\xfb\xfc\x74\x85\xf7\x13\xfb\xfc\xf3\xd8\x67\x69\xeb\xdd\x8b\x7b\x4e\xb9\xc0\x3b\x85\x26\x7c\x10\xe6\x49\xc9\xd1\xc7\xc6\x3b\x3f\x5d\xde\xfd\xd7\xe7\x9d\x9f\xd5\x3f\x83\xf4\x2b\x51\x3c\xb2\x93\xaf\x34\x5b\x90\x85\x2a\x89\x46\x79\x0b\xbe\x56\x65\x61\x59\x80\xaf\x35\x93\xe8\x28\xc4\xc4\x2c\xfa\xc5\xa6\x78\xc3\x5a\x8f\x18\xbf\x1c\x17\x37\xec\x51\x0b\x53\xf6\x6d\x9a\xcc\x99\x4d\xc0\xcb\x6c\xd2\x2f\xd2\x8c\x61\x2e\xa3\x55\x32\x51\x72\x46\x2f\x78\xa1\x33\xd6\xed\x9e\x03\x91\xdd\xac\xc9\x44\x9f\x04\xd8\xea\x71\x22\x48\x4e\x22\x47\x36\x8c\xaa\xc7\x35\x8c\x72\x9d\x80\xa6\x48\x75\x36\x74\x7f\xe1\x22\x6d\x60\xd2\x20\x5d\x25\x1f\x46\x19\x1f\xfc\xc0\x6f\x2a\xeb\x60\x89\xc6\x5b\x6e\x32\xe1\x6c\xec\xee\xef\xf7\x36\x0e\x4f\xf7\xf6\x77\x0f\x77\x05\x99\x38\xfd\xae\x77\x78\xd8\xdb\xaf\x84\xd1\x4f\xb3\x8c\xf7\x8b\x86\x1e\x60\xe3\x82\x17\x05\xcf\xe4\x7a\x08\x98\x5b\x3d\x04\xc7\xba\xa6\x4f\xb5\x40\xbd\xd5\x4d\xe3\x00\xf5\x1c\x1a\x5c\xa5\x73\x77\x9c\xb4\x5a\xec\x8d\x77\xca\xdf\x48\x49\x08\x8a\x0c\x8b\x62\x9c\x77\x5a\xad\xa2\xff\xf8\x9b\xe6\x45\x5c\x0c\x27\x67\xcd\x38\x6d\xf1\xfe\x65\xb4\xf2\x64\xa5\xf5\x79\xce\xfb\x72\xbe\x04\x14\xdd\x42\x7a\xee\x41\xa1\xca\x39\x59\xf3\xaf\x3d\xeb\x90\xbc\x5a\xbb\x12\xdf\xc4\xe8\xd5\x22\xd6\x76\x31\xc5\x91\x4c\xca\x5f\xdb\xad\xeb\x39\x0a\x43\x8d\x56\x47\xea\xdd\x89\x2e\x2c\x53\x2c\xed\xda\x18\x69\x65\xec\x5b\x5c\x64\xbb\x2c\x4e\xf2\x22\x4a\xfa\xa5\xb2\xa1\x4a\x4a\xa4\xda\xa0\x1f\xad\x79\x66\xec\x56\x17\xb2\xc0\x21\x16\xae\x95\x56\xab\xa3\xf6\x85\x3f\x21\x93\x58\x60\x67\x96\xaa\x30\x0a\x97\x05\x6c\x86\x06\xa9\xd2\x73\x8d\x27\x98\x60\x6b\x27\x4d\x7a\xc9\xe4\x92\x67\xd1\xd9\x88\xef\x61\x06\xe3\x6a\x4c\xc7\x3a\x8d\x24\x4d\x1a\x5c\xd7\x6a\xc8\xc4\xc7\x06\xfb\xe7\xdd\x8d\x57\x7c\x34\xfa\x21\x49\xaf\x92\x83\x9b\xcb\xb3\x74\x54\x59\x47\x94\x6b\xbc\x15\x05\x1b\x39\x94\xd4\x10\xb6\x0e\x4e\xf7\x5e\xef\xf7\x2a\x6b\xc6\x79\x63\x3c\xc9\x38\xdd\x45\x87\xbd\xfd\xf5\xc3\x5d\xb1\x13\x9d\xe6\x6b\x41\x0c\x69\xc5\xd2\x4c\x83\x7f\xf9\xfa\xbb\xef\x7e\x39\x3d\x58\xdf\x5c\xdf\xdf\x3a\x55\x35\x0f\x98\x4c\x82\xa7\x61\xe2\x0a\x1f\x0e\x63\x3b\x17\x9c\x20\x88\x72\xf1\x8b\x61\x9c\xaf\xb2\x5b\xbd\xf3\xbe\xdc\x92\x4d\xe9\x95\xfc\xf2\x8d\xce\x56\x36\xe7\xbe\xfb\x52\x75\x57\x2f\xef\x97\x0d\x05\x02\x46\xea\x36\x51\x67\x04\x6f\x20\xa3\x9f\xa7\x48\x44\xdf\x43\x7f\xc5\x8e\x39\x3a\x01\x56\x27\x11\xdf\x2a\x03\xb9\xb7\x91\x11\xe2\x76\x6c\xb5\xd8\x41\x74\x1e\x65\x31\x7b\x06\x98\x70\x36\xb9\xb8\xb8\x61\xaa\xb3\x39\xbb\x6a\xa5\xec\x4d\xc2\xaf\x8b\x37\x6a\x3f\x2e\xd4\x02\xf1\x1c\xb0\x38\xb1\x61\x87\x61\xf5\x12\x14\xd9\x04\x77\x18\x4d\x76\x3f\x73\x80\xac\xeb\xec\x9f\x9a\xf3\xe8\xb4\x4f\x92\x8a\xcf\x86\x2d\x78\x94\x4b\x6c\xc3\xf2\x3a\xb0\xee\xec\x7e\x22\xed\x10\x82\xa3\x5c\x01\x0f\x14\x4b\x59\xf1\xb5\xf2\xbb\x46\xb8\x95\xaf\x9b\xcb\xcd\x95\xe6\x72\x73\x99\x79\x50\xef\xe8\xdb\x6f\xd5\xf2\x9c\xd4\x42\x6c\x6f\x41\x6d\xad\xc5\x45\xb6\x20\xa8\xab\x07\x57\xd4\x72\xa8\xd4\xd7\x53\x48\xca\xb4\xea\x75\xb2\x81\x20\x17\x5d\x75\x1e\xb8\x12\x94\x8e\x07\xcd\x45\x41\x3f\xda\x74\x2a\xde\x4f\x23\xb7\xbe\x89\xad\x20\x36\x0a\xc5\x1b\xfd\x54\xd0\x9c\xa6\x6f\x55\x0d\xe9\x9d\x45\xb9\xb1\x94\x43\xaf\xd5\x7c\xbe\xe2\x79\x3f\x8b\xc7\xb8\xff\xa6\x12\x6b\x45\x9d\x1b\x03\x5d\xc5\xc8\x36\xbc\x38\x4c\x0f\x20\x83\xd7\x61\x74\x51\x2d\xe0\xf0\xa2\x51\xa4\x0d\x4c\xf5\xd5\x28\xa2\x0b\x43\x7f\xf5\xae\x9e\x39\x29\x84\x06\xdf\x8d\x5e\x4e\xc9\xb6\xa9\x9a\xdf\x30\xec\xb7\xce\x76\xd6\x7f\xec\xd5\x99\x20\x28\x12\x2d\x45\x93\x87\xbb\xa7\x07\x87\xfb\x5b\x3b\xdf\x9d\x1e\xae\x7f\xc7\xba\x50\x48\x48\xd7\x7a\x04\xc1\x2a\xc5\xaf\x0d\x1f\x3f\x67\x5d\xb9\x08\x3e\x64\xfe\x1d\x5a\xec\x54\x2e\x53\x6d\x59\xf5\xe9\x16\x89\x8a\x3d\xf7\xfe\xa1\x58\xbd\xae\xcb\xd4\xab\x40\xf9\x42\xab\xbb\xf9\x91\x55\xf2\x04\x56\x43\xcd\x31\x15\xb2\x3d\xad\x18\x59\x03\x92\x5e\xe6\x33\x04\xe4\x38\xa7\x02\xf2\xd4\xd5\x89\xd5\x02\x00\x3d\x51\x90\xe1\xf5\xe2\x22\x8b\x0b\x9d\x41\x5d\xcb\x53\x98\x44\xdc\x24\x10\x3f\xfe\x6c\x23\x4a\x02\xc8\x86\xc8\x8e\x3f\x63\x4b\x0c\xe7\x0b\x40\x88\xc5\x8b\x72\x16\x31\xbd\x3e\x32\x47\xa6\x96\xb8\xe2\xc2\x1e\x5b\x94\xcc\x18\x5b\x94\xb8\xc2\x7f\xb4\x97\xe6\x79\x8c\x74\x6c\xc6\xee\x8f\x1a\x63\x59\xb6\x61\xf7\xc8\x92\xb5\xf3\x0f\x22\x6b\xe7\x8e\xac\xdd\x6a\xb1\x9f\xd3\xec\x6d\xce\xae\xe2\x62\xc8\x4e\x4f\xe1\xe3\xe9\x29\x4b\x93\xd1\x4d\x93\xed\x8e\x06\xec\xdd\x33\xd6\x87\xa9\xbc\x4a\xb3\xb7\x58\x0c\x92\xc9\x42\x49\x29\x79\xe4\xcd\xe3\xa4\x9c\x1f\x33\x49\x71\x3c\xec\x51\xcb\xb3\xda\xde\x61\xb1\xf7\xef\x59\x2d\xd0\xdd\x00\xbe\xfe\xfb\x2d\x5b\x63\x25\xf5\x91\xea\x4a\x07\x4a\x43\x52\xc2\x95\x4a\x3d\x0b\x09\x2c\x65\x5e\x5a\x49\xb5\x0a\x8e\xf9\x64\x8b\xec\x46\xe1\x0e\xbe\x35\x5d\xba\xe0\xc5\xee\x55\xe2\xd9\x88\x2e\x87\xae\x33\xd2\xd5\xb0\x89\x29\xe1\x0d\xc4\x66\x3f\x1a\x8d\x6a\xa2\x17\x75\x76\x74\xa2\x04\x82\x52\xa7\xa1\x9b\x44\xc2\x07\xb6\x2e\xf1\xb1\x1f\x15\xfd\x21\xab\x71\x81\xd3\x5e\x2d\x59\x22\xac\x9e\x1e\x7b\x3a\x85\x62\x03\xfd\xd3\xfb\x44\x61\xb2\xd2\x80\x98\x07\x51\x6b\x58\x85\x08\x30\x76\x9f\x43\x6b\x7c\xba\x09\x59\x1e\x84\xaa\xdd\xa6\x41\xa5\x2e\x7e\x5f\xb5\x15\x1f\x1c\xa0\xd8\x66\xb5\x90\x75\x88\x3c\x52\xc9\x4e\xbf\xa8\xdc\x40\x88\x54\x0e\xbf\xf3\x10\xac\x59\x0c\x4f\x71\x9c\x06\x51\xca\x34\xd4\x0f\xa4\x3c\xe5\x77\x02\x93\x4f\x01\xf3\x30\xfe\xfb\x07\x2a\x71\x19\xc7\xb5\xac\x84\xa3\x0a\xfc\x93\xd4\xb9\xfb\x88\x1f\x56\x9d\x8d\x34\x9b\x5f\x96\x33\xfa\xa3\x47\x1c\xb4\x40\x56\x4a\x7d\x95\x9a\x8c\x5d\xdd\x5f\x6c\xf5\x1e\xda\xeb\x0f\xbd\x5f\x04\xf8\x40\xe8\x66\x6a\xfb\xfd\xb4\xbe\xfd\xba\x07\x6f\xd1\x7c\xab\xde\xf7\x76\x0e\xf7\xb7\xf0\x03\x4f\x8a\x2c\xc6\x2f\x7f\x84\xb8\x76\x36\xe2\x4a\x46\xf3\xca\x3c\x42\x48\xaa\xb3\x57\xbd\xcd\xf5\xd7\xdb\x87\x75\x81\x12\x07\xbd\xc3\x3a\xdb\xdc\xdd\xdf\xe8\xbd\xb2\x14\x0d\x4f\xf5\x99\x12\xa1\xcc\x22\x2e\x49\x01\x96\x8e\xd3\xe4\x47\x95\xe1\xd8\x74\xf6\x87\xad\x9d\x57\x9a\xe0\x0a\xf2\x29\x5e\xc0\x11\x91\xec\x9b\x10\x62\x64\xd2\x78\xad\x2f\x6a\xab\xaf\xfd\x9e\x10\xe1\x85\x0a\x34\x58\x5c\x64\xd0\x40\x2c\x85\x34\x4a\xca\x43\x4b\x7c\xa3\x5f\x8e\x44\x1d\x95\x70\x3c\xbf\x8a\x81\xcf\x58\x3d\x67\xac\x1f\xe5\x1c\x70\xa1\x53\xe2\x33\xa8\xb5\x9b\x75\x4c\xf8\x95\x6f\x51\x6a\x62\x7d\xeb\xd0\xbf\x10\x97\x99\x40\x46\x8c\x2a\xc3\x46\xfc\x7a\x28\x74\x89\x97\x65\xf0\x12\x4b\xef\x0d\xff\xb6\x04\x71\x5e\x50\x1a\xc8\x2d\x41\xa6\x39\xf5\x0b\xd8\xc3\x3b\x8a\x11\xe3\xd4\x9d\x42\x59\x57\xec\x29\x2d\xb5\x22\x14\x67\x23\xee\x98\x18\x21\xc9\x7c\x54\xc4\xef\x38\xb1\xc9\x94\x51\x45\xe1\xda\x09\x4e\xc0\xfb\xf7\x9e\x32\x81\xb1\x04\x04\xa6\x1c\x41\xf8\x72\x15\xf9\xf1\x44\x77\xc5\xc1\x7d\xd6\x65\x53\x70\xde\xe9\xf7\xfb\xf7\x9e\x6d\x59\x93\x4d\x84\xba\x89\x28\xb9\xd9\x71\x07\x8c\xb3\xd8\x65\x01\x48\x5e\x01\x5b\x2b\xf7\xb5\x29\x91\x46\x34\xe3\x34\xdc\x71\x5e\xe8\xa6\x36\x26\x59\xc6\x93\xc2\xa3\xf1\xa1\xe8\x2e\x30\xab\xf7\x8b\xc4\x84\x56\x8b\x9d\xc7\xd7\x12\x94\xd2\x7c\x4a\x9d\xd5\x7b\xb3\x0a\x76\xd9\x48\x55\x82\x81\x52\x9b\x46\xd3\xb3\x11\xaf\x85\x96\xb5\x6a\x3e\xeb\x94\x58\x82\xaa\x5e\x34\x89\x0a\xad\xa9\x17\xb1\x0a\x39\x5d\xac\x02\x83\x47\x37\x9e\xd7\x1a\x30\x82\xb6\x45\x2a\xeb\x33\x73\x05\xe2\xea\x45\x29\xb7\xb3\x6a\xe0\x90\x7c\xe9\xf2\x08\xa0\x0a\x90\xd9\x2c\x6c\x81\x9e\x0b\x38\xdd\x9a\x66\xf0\x9a\xd2\xc7\x0a\xbb\x97\xee\xa6\xfa\x53\xff\xd1\x6a\xb1\x03\x5e\xb0\x6f\xbf\x2d\x88\xb4\x58\xa4\x12\xd1\x8c\x6d\x55\x95\x77\x6c\x0b\xd5\x5d\x71\x0c\x0c\x45\x36\xb1\xec\x0b\x1a\x99\x70\xd5\xc3\x3b\x18\x1c\x64\xef\x6f\xad\x8d\x01\x5b\xf3\xf3\xdf\x91\x35\xd4\x99\x21\x36\xb7\xcd\x24\xba\xe4\x82\xf9\xfd\xf4\x8c\xb5\xd8\xe6\xa6\xda\x3c\x8a\xf4\x74\xbb\x4a\x74\x29\x13\x8d\xd2\x1b\x04\xb6\xa0\xeb\xe8\x55\xab\x22\xbd\xda\x96\xcc\x3c\xd4\x6b\x1a\x47\xf3\xec\x49\x9b\x45\xe8\xe1\x4b\x61\x5a\x0d\x58\x8d\xcf\xec\xa8\xf7\xef\xb5\x8c\xe3\xa5\xb3\x14\x23\xbb\x65\xc1\x43\x8e\x70\xa6\x09\x96\xc2\xa4\xa8\xe8\x02\x54\xdd\xa7\x46\x26\x31\x5b\x62\xa9\xcb\xd2\x8d\x1c\xa4\xf4\x70\x88\x06\x83\x58\xcc\x58\x34\x52\x44\xd2\x59\x4e\xdd\x5d\xf9\x59\x99\x77\xc5\x3f\x9c\xe5\x8e\x8f\x0f\xc8\xd5\xac\xab\xa2\x42\x7c\xe9\x48\x09\x91\xad\x95\x96\xce\x0b\x43\x08\x42\x06\x82\x64\x08\xde\x92\x52\xf4\x08\x25\x36\x13\xda\xaa\xd6\xe9\x3c\xcd\x98\x00\x28\xf0\x56\x8e\xc4\xa1\x97\x15\x8c\x4f\xf0\x5e\x2f\x2a\xbe\x7f\xcf\x16\x14\xc4\xb2\x18\x68\x51\x1f\xa5\x7e\xf9\x96\xf5\x87\xde\x2f\x9a\x3f\x1d\xfd\xd0\xfb\xe5\xc4\x6c\xe7\x5b\x25\xfe\x00\x29\xfc\xa2\xf6\x3b\x2b\xa2\xec\x82\x17\x1d\x29\x25\x03\x6b\xe8\x48\x4a\x70\x9e\x66\x7d\x3e\xa8\xb2\x9a\x57\x0f\xe3\x56\xb7\x1e\xd2\x6d\x20\x77\x8d\xfc\x34\xf5\x90\xb3\x48\xb7\x92\x01\xbf\xe6\x83\xd9\xe7\xf5\x31\x16\x2c\x99\xee\x06\x83\xc3\xf4\x75\x92\xf7\xd3\xb1\x98\x9d\x6a\x15\x31\x1a\x0c\x84\x76\x3d\x31\x45\x1f\xa6\x5f\xca\x6f\x07\x45\x54\xf0\x1f\x41\x19\xaa\xae\x2d\xff\x6a\xe4\x05\x35\xf5\xe3\xc2\x12\x12\xe4\xaf\x8d\xc5\x1a\x96\xde\x87\x00\xd6\xf7\xf7\xd7\x7f\x39\x25\xca\x22\x0a\x45\x96\x30\x2a\xed\x0f\x56\x77\x85\xdc\x58\xee\xbe\x34\x89\x29\x9d\x69\x8e\x0a\xe8\xbb\xb0\x99\x66\x35\xbb\x27\xc6\x1c\x0a\xfd\x21\xbe\x21\x72\x23\xde\xd9\x20\x1a\xf9\xe1\xf8\x1b\x11\xf4\xe2\xc1\x2d\x08\x20\x7e\xf0\x48\xb9\x1e\xdc\x00\x82\xf1\x36\x41\x0f\xea\x1e\xda\x4e\xc3\xc0\xc2\xb6\x36\x80\x75\x58\xc7\x91\x6f\x98\xc2\xb6\xbb\x36\x86\x7c\x08\x9a\x34\xad\x94\x4c\x03\x36\xa2\xd7\xa0\xed\xba\x92\xe0\xeb\xd6\x51\x82\x28\xc2\x07\x75\xf6\x36\x4e\x06\x92\x0e\xba\xd8\x2b\x15\x3d\x75\x96\x00\xa7\x83\x36\xfe\x49\xba\xaf\x28\x9e\x43\x64\x74\x2b\x61\x5d\x30\x33\x2c\x25\xa9\xbe\x28\xd7\x61\xed\x3a\xab\xfc\xd7\x6a\x81\x85\x01\x8b\x62\x2d\xd1\xd7\x0e\xfc\x7f\x5a\x2d\xf1\x1d\x88\xa4\xd8\x1d\xe0\x1c\xe0\x3f\x12\xfe\x12\x04\xf2\x3b\x2f\xfb\x97\xd6\x22\x8c\x6d\x68\xc7\xc9\x6d\xdd\x6f\x95\xcf\xe5\xf6\x76\x77\xbc\x94\x6f\xb4\x75\x1e\x26\x89\x75\xb1\x7c\x13\x1f\xf5\x57\x18\xba\xfa\x26\x1e\xf4\x17\x98\x25\xfd\x09\x9e\x96\x96\xb4\x83\xce\x82\x04\xfb\xfe\xbd\x2c\xf8\xa2\x2b\x5b\x92\x9e\x73\x9a\x13\xd2\x66\x19\x39\x10\xb7\xed\xd4\xbf\xa3\x54\x41\x0c\xd4\x75\x36\x48\x13\x8e\x7c\xce\xc8\x6a\xd8\x3a\xf6\x5a\x19\xce\xc2\x12\x10\xe8\x92\x02\x00\x5a\xbb\x84\x60\x55\x96\xf6\xb5\x72\x75\xec\xec\x11\x40\x39\xf1\x81\x71\x2b\x1c\xc9\x06\xad\x8a\x9e\x9a\xb7\x75\xd3\xaa\x22\xb4\x51\x76\x31\x81\x9c\x9f\xdb\x71\x5e\x50\xf2\xc1\xe2\x9c\x21\xa2\x01\x82\x9d\x62\xc5\x2f\xef\xb8\xc1\x27\xc9\x65\x34\x1e\xf3\x81\x6e\xe6\x8e\x3e\x2c\x08\xa5\x02\x86\xe6\xbe\xcd\x75\xf5\x89\x5a\x4b\x9b\xea\x88\xe5\x01\x14\x90\x30\xfd\xe3\xc4\x95\x18\x6a\x12\x01\x56\x7d\x9f\xc8\x44\x97\x3f\x2a\x13\x6a\x78\xef\x83\xd5\x0f\x74\xc8\x00\x53\x73\x19\xbd\xe5\x39\xcb\x27\x67\xfd\x51\x84\x7e\xea\x70\x08\x28\x5d\x0e\x41\x8a\xbd\xca\x60\x09\xd8\xd9\x24\x1e\x15\x8d\x38\xc9\xa7\xda\x71\xbf\x40\x42\x3b\x98\x5c\x5e\xde\xd4\xd9\xcf\x50\x37\x23\xb4\x63\x87\x5f\x1d\x02\xae\xd6\xcd\x9f\xb6\x67\x8b\xd8\x29\xb8\x43\x5b\x2d\x16\x17\xac\x1f\x25\xd8\xa9\x34\x19\xdd\xc8\xe3\x49\xd4\x6d\xdf\x38\x27\xa6\xfa\x68\x8e\x4e\xcd\xe2\xa2\x06\x76\xc5\xd9\x30\x7a\xc7\x93\xa0\x60\xfd\xf4\x72\x3c\xe2\x05\x1f\xdd\xe8\xb1\x8e\x33\xde\xe8\x1d\x3c\x61\x57\xd1\x0d\x8c\xfb\x02\x9d\x99\xd9\x9b\x84\x5f\x49\x2a\xf2\xa6\xce\xf2\x94\x09\x89\x54\x8c\xd2\xf0\x92\xf4\x9c\xd5\xf4\x68\x04\xef\x12\xa3\xb7\xbd\x02\x5d\x17\x42\xac\x6c\x2a\x09\xc5\x4d\xce\x96\xfe\xaa\x8f\xc5\xcb\x33\xc5\xba\xa6\x2e\x75\x28\x2a\x01\xb6\x6d\x3c\xb2\x05\x53\x43\x94\x0e\x5d\x13\x8a\x5c\xc3\x32\x8c\x90\xd2\x20\x28\x65\x04\x75\x41\x50\x18\x1e\x43\xb1\xf4\x9c\x45\xa3\x91\xa0\x51\xf1\x80\x4d\x92\xb8\x9f\x0e\x38\xbb\x1a\xc6\x05\xcf\xc7\x51\x5f\x0a\x30\xf6\x59\x72\x43\xb0\x9c\xc6\x48\xe8\xc1\x97\xd1\x75\x63\xc4\x7d\xc7\x05\xc1\xf1\xf1\xa4\xdd\x6e\x7f\x83\x3f\xeb\xf8\xf3\x12\x7f\x36\xf0\xe7\x15\xfc\xac\xb4\xe1\x67\x5d\xfc\x2c\x3f\x79\x26\x7e\x56\xda\x6d\xf9\xb3\x8c\x3f\x2b\xf8\xf3\x18\x7f\xbe\xc2\x9f\xaf\xf1\xe7\x09\xfe\x3c\xc5\x9f\x67\xf8\xf3\x0d\xfe\xac\xc3\xcf\xca\x26\xfc\x7c\x2d\x7e\x1e\x2b\xd0\x2b\x58\x72\x45\x94\xdc\xec\x6d\x6e\x06\x66\x8f\xcb\xfd\x89\x0b\xba\x91\xf2\xac\x1f\x9f\x4d\x91\xfe\xe5\xdb\x86\xf2\xf7\x51\x15\xcc\x81\x9a\x99\xcd\xea\xc3\x34\x53\x86\x28\x00\xe6\xad\x98\xd1\xa3\x80\x2d\x59\xc0\x96\x58\x70\xa2\x74\x80\x51\x91\xc5\x97\xac\xcb\xf6\xf9\x45\xef\x7a\x5c\x0b\xfe\x6e\x17\x76\x1f\x82\x47\xe6\x84\xd0\xae\x39\xad\xce\x17\xc4\x13\x02\xed\x52\x44\xe0\xfd\x9d\x09\x40\x75\xf8\xff\x41\x11\x65\x05\xfe\xd9\x4b\x06\xf8\xc7\x36\x3f\x97\xaf\xf6\xe3\x8b\x61\xc1\x6e\xdf\x68\xbb\x41\x2c\x76\xb8\xe0\x0c\xa0\xb8\xd3\x33\x51\xcf\x89\xce\xe1\x2f\x7b\x3d\x49\xa5\x4a\xb6\x7f\x40\x74\x2d\x55\xa0\x00\x04\x68\xde\x55\x3e\x27\xfe\xc5\x95\x15\xa9\xe5\x15\x6e\x85\x2c\xb2\xe5\xd0\x80\xc0\x3f\x9a\x19\x1f\x8f\xa2\x3e\xaf\x8d\x70\xbc\x41\xe0\xa9\xb6\x52\x5d\x2d\x73\xab\xc9\x51\x60\x31\x73\x14\xef\x3f\x86\xfb\x5d\xda\x68\xaa\xe6\xdf\xcc\x32\xac\x01\x99\x65\x59\x71\x1e\x0e\x9b\xbb\xb0\x05\xbc\x5c\xc0\x03\x81\x5d\xfc\xd1\xb1\x16\xa8\xb6\x8c\xc6\x98\x29\x1d\x83\x45\xd7\x28\xf1\x01\xfb\xc5\x51\xee\xe6\x42\x48\xb7\xfa\xb4\x32\xa5\x4f\xa2\xa2\x91\xc1\x1f\xd6\x01\xf4\x60\x89\x2f\x9d\xe6\x1f\x87\xd3\x2c\x23\xaf\x7a\x07\x1b\xfb\x5b\x7b\xf2\xec\xb8\xca\x32\xa0\xbc\x5d\x8c\x5d\xe2\x62\x94\x9e\x45\xd5\x87\xf2\xf8\x59\x97\x8e\xf3\x4d\xb0\xfd\x4c\x13\x57\xd0\x3a\xf4\x00\x87\x81\x79\xfd\xc4\x41\x6e\x49\xab\x25\x20\xf9\xbd\x91\x45\x57\x66\x00\xc9\x90\x67\x71\xb1\x75\xbe\xaf\xee\xe4\x55\x1b\x61\xa0\x64\x23\x3e\x6f\xa8\xfb\x7b\xe4\xbe\xc8\x5e\x16\x5f\xc6\x20\x89\x4c\x31\x41\x8d\x55\x21\x5d\x71\xde\xab\x36\xf7\x76\x07\xb5\xdd\x9b\x76\xa2\xcb\x29\x3c\x82\x78\xb3\xa4\x57\x89\xf1\x08\x4d\x44\xad\x20\x6c\x9e\x7b\x61\xce\xe1\x62\x5a\x05\x98\xba\x9a\x6a\xe8\xb8\xf8\x33\xdd\x53\x24\x4c\x69\xdc\x32\x6e\x29\x1a\x8e\xe4\x3a\x15\xae\x32\xd2\x47\x26\x8b\x2f\x83\x10\x36\x99\xe6\x89\x3b\xaf\x7f\x7c\x09\xae\x5a\xc1\xce\xe4\xf2\x8c\x6b\x23\x18\x1e\xac\xe1\x3b\xa1\xf0\xc2\x46\x38\xc2\xd2\x27\xaa\x0c\x7c\xb5\x24\x33\x52\xab\x7c\xb5\x66\x77\xcc\xb3\x88\xfd\xd7\xf2\x0a\x7a\xc0\x67\xe9\x5b\xae\x6e\x38\x7d\xae\xce\x70\xa4\x57\xc8\xfe\xee\x0f\xbd\x9d\xd3\x8d\xed\xf5\x83\x83\xdd\x4d\xd6\x55\xc8\x5e\x93\xae\xa6\x4e\xcb\x21\x48\x99\xd8\x39\xcd\x51\x0f\x53\x2c\xf5\x86\x45\x67\x79\x91\x45\xfd\x82\x89\x59\x93\x3c\x71\x4e\x0a\x55\xa4\x09\x00\x51\x88\xaf\x27\xc4\x30\x49\xa5\xa1\x11\x51\x3f\x2e\xe0\x42\x8e\xde\x25\xba\x8c\xf4\x56\x35\x96\x82\xf3\x38\xcb\x05\x19\x1f\xc6\xd9\xa0\xce\xb2\x68\x10\x5f\xd7\x85\x18\xb8\x91\x0e\x78\x9d\x0d\xe2\x8b\xb8\xc8\xeb\x0c\xd5\xfb\xba\xd2\xb1\x85\x50\xe9\x5e\xdb\x11\x4d\x76\x59\x80\x2b\x1d\xa0\x2b\xa9\xb9\x50\xb7\x62\x7c\x36\xa0\x6b\x59\x7c\x59\x8b\x0b\xc5\x31\xa1\x13\xac\x2b\x6a\xf4\x87\x51\x26\xda\x5e\x2f\x6a\x6d\xca\x87\x65\x91\x6e\x97\x7d\xf5\x98\xbd\x7f\xcf\xc8\xf3\xd7\xc4\x00\x0f\xe3\x28\x41\x5a\xb1\xcf\xcd\x64\xa1\x6e\x97\x3d\x7b\x26\x60\x99\xe7\xe5\x95\xb6\xb6\x0c\xec\x44\x3b\xab\x82\x8f\xe0\x8c\xd7\x82\xa5\xf6\xf5\x72\x10\xb2\x7c\x98\x4e\x46\x03\x76\xc6\x45\x81\x3a\x4b\x47\x03\xf6\xd3\x33\x76\x1e\x5f\x5b\x16\x7c\xa7\xcb\xcf\x48\x17\x95\x3f\x88\xdd\xc5\x65\xfb\x18\x01\xbc\x2c\x9e\x3c\xe9\xe0\x1f\xdf\x3c\xeb\xe0\xd2\xb0\x2e\x5b\x59\x55\xcb\xc3\xba\xec\xab\x6f\x56\xd9\x59\xc6\xa3\xb7\xd0\xd3\xf3\x28\x2f\x18\xff\x6d\x12\x8d\x84\x1a\xd0\xfa\x7b\xfb\xec\xa8\xbd\x7c\xb2\xf4\x45\x2b\x76\x00\x3f\xfd\x46\x02\x5e\x5e\x5e\x36\x90\x9f\x51\xc8\x5f\x7f\x3d\x15\x72\x7a\xd4\x6e\x3c\x75\x40\xcb\x83\x1e\xed\x14\xb2\x14\x17\xee\xf9\x06\x93\x18\x85\x2b\x94\x8f\xe2\x3e\xa7\x8b\x23\xd1\xa5\x2b\x4b\x49\xf4\xd1\x9f\xe1\x60\x47\x99\xa8\xda\xab\xd2\x08\xf5\x5c\x56\x93\xcf\x4b\x4b\xf6\x44\xe2\x70\x24\x40\x32\xe1\x50\x98\x9e\xef\xb6\x5a\x6c\x1c\x65\x39\xdf\x4a\x0a\xfc\x23\x37\x5a\x55\x91\xb2\x48\xa2\xdc\x24\x89\xde\x45\xf1\x08\x9c\x70\xd1\x4f\xce\x02\x71\x36\x29\x98\xda\xf8\x0a\x57\x0c\x42\x09\xbc\xd0\x40\xfb\x69\x52\x44\x71\x92\x7b\x40\xe6\xf6\x21\x3c\x0c\xe2\x39\xfb\x0a\xb0\x15\x1e\x5e\xa8\xa5\xb2\xd0\x55\xcf\xb6\x7a\xa9\x06\x54\x53\x1b\x19\xd6\x3a\xb4\x8e\x82\xed\xe5\x32\x97\xa1\x14\xf1\x22\xba\xf4\xdc\x54\x0b\x69\x56\xc3\xaa\x2a\x06\xa2\xe4\x97\x1a\x92\xca\x3a\x5b\xa0\x04\xbb\x16\xb0\x76\x2a\xf6\xd8\xfb\xf7\xee\x87\xf6\x99\x7c\x6f\xbf\xc6\x3d\x19\x52\x23\x07\x7c\x51\xea\x3c\x21\x93\xb2\x0a\x18\x88\x2c\x8d\x02\x08\x92\xb6\x72\x29\x92\xf5\x9c\x2d\xb3\x35\xd6\x66\x1d\x34\xf7\xad\x9a\xf2\x60\x61\x10\x34\xcc\x9c\xa9\x2b\xf7\x32\xf8\x42\xbc\x8d\xad\xce\x10\xaf\x81\xfe\x90\xf7\xdf\xb2\x34\x61\xcb\x4d\x6a\xaa\xa8\x9d\xa7\x69\x08\x1b\x53\x95\x5d\x5c\x64\x35\x87\x15\xad\x31\xcf\x9d\x5f\x97\x13\xe2\x69\xc5\xee\x39\x9e\x7d\x43\xbf\xc2\x55\x76\x1b\xb2\x8e\x66\x64\xf8\x92\x2d\x28\xb6\x15\x1a\x94\x5b\x2b\x8b\x69\xe0\xd3\x62\xcd\xbd\x62\x45\x82\x8c\x87\xda\xea\x64\x8d\x58\x34\x47\x8b\x69\x5d\x48\x6e\x65\xb0\x45\xe3\xc5\x6d\x2a\x3e\xaf\xf9\xa4\xa8\x1a\x6d\x5c\x00\x36\x86\xaa\xde\xc1\xe3\x0e\x3e\x04\x3f\xae\xff\x0d\x4f\x3c\xeb\x3f\x6e\xed\xc8\xbf\x04\x99\xde\xe9\x7d\xb7\x7e\xb8\xf5\x53\xef\x74\x6b\x67\x73\x6b\x67\xeb\xf0\x97\xfa\xde\xee\xc1\x96\xfd\x26\x60\x4b\x04\xe4\x4a\x7b\xf9\x6b\x41\x6c\x60\x39\xea\x62\x17\xa2\xea\x26\x9d\xf9\x65\x01\xb5\xcf\x85\xa2\xdb\xcf\x4d\xa0\x89\x33\x7e\x9e\x66\x3c\x54\xdd\xea\xed\x1d\x6c\x6d\xef\xee\xd4\xe3\x7c\x33\x4e\xe2\x82\xd7\xe3\x7c\x2b\x29\xf8\x05\xcf\xea\x71\x2e\xfa\x17\xe7\x07\xd1\x39\x57\xef\xc4\x28\x0e\xd6\x37\x45\xdf\x0e\x7b\xdf\xf5\xf6\x4d\xd7\x02\x31\x2c\xeb\x13\xec\xf0\xcd\x51\x1a\x15\x75\xb5\xd9\x0d\xf4\x00\x6c\x4c\xcd\x7c\x3c\x8a\x8b\x5a\x50\x0f\xc2\x3a\xfb\x55\x90\xce\xba\x98\xf6\x55\x66\xdf\x79\xff\x75\x95\xfd\x4a\x88\xa7\xba\xbe\x4b\xe7\x1d\xea\xb1\x2e\x54\x3c\xfa\xf5\x24\xd4\xb7\xd0\xac\x65\x87\x52\x94\x9d\xd9\x22\xa6\xa7\x70\xbd\x52\xc6\x2d\x37\x1f\x86\x8e\x23\x0b\xb3\x91\xce\xba\x18\xe4\x6c\x8b\x55\x53\xda\x6c\x15\xfb\xfe\xbb\x05\x4b\xda\xdc\xe4\x89\x3e\x8a\xa0\x75\xa6\x68\x97\x8d\xeb\x78\x43\xce\xaf\x1c\xde\xf1\x8a\x0b\xd2\x5f\xb4\xdf\x10\xdd\xf4\x7c\x14\x5d\xe4\x6f\x18\x9e\xe2\x96\x6c\x2c\x73\x52\x66\xa1\x14\x64\xfc\x82\x97\x21\x4f\xb5\x2d\x13\x0a\x5b\x0c\x23\xa0\x98\xea\xb2\x83\x7d\xf2\x94\xf1\x7c\x32\x12\xdf\x83\xc0\x48\x88\xc3\xa8\x68\xe2\xec\x85\xaa\xc0\x52\x97\x05\x17\x4e\x91\xf8\x22\x49\x33\xbe\x11\xe5\xdc\x2a\x16\x3b\xc5\x2e\x27\xa3\x22\x1e\xc5\x89\x5d\xea\xd2\x29\x35\x48\x8b\xf5\x91\xdd\x5e\xee\x14\x91\xe6\x51\xab\xcc\xc4\x29\x93\x17\x71\xff\xed\x8d\x55\xe4\x26\xa0\xb6\x58\xfc\x50\xe9\x35\x51\xa5\x77\x5a\x71\x1d\x84\xdc\x10\x9d\xf1\x51\xe3\x32\x4e\xe2\xf3\x1b\x56\x64\x51\x92\x8f\x63\x41\x6d\x94\xfd\x2f\x0a\xea\xa2\xe5\x90\x35\x5e\xb0\x56\xd4\xba\x61\x51\x32\x40\x13\xfd\x44\x48\x2a\x07\x37\x49\x11\x5d\xc3\xf5\xac\x3a\xc0\xcb\x53\x76\xc5\xc1\x5e\x1e\x25\x78\x5c\x7c\xc9\x07\xb1\x50\x68\xd5\xa2\x36\x8f\x13\xbd\xbe\xfb\xbd\x5a\x5e\x67\xe7\xb6\x19\x4e\x36\x0d\x1f\xd4\xfd\x4f\x89\x1b\xcd\xd7\x3b\x07\xaf\xf7\xf6\x76\xf7\x0f\x7b\xaf\x4e\x7f\x01\x2f\x59\x6f\x1c\x8a\x0f\x3a\x30\x83\x62\xac\x2b\x7a\xac\xab\xca\xe5\x68\x8e\xa2\xbc\xd8\x92\xe2\xe1\x8a\xbd\x46\x4d\x7e\xcd\xfb\xb5\x20\x3a\xeb\x0f\x02\x60\x7a\xea\x3e\x3f\x2e\x80\x1a\x96\xe2\xb5\xeb\xfb\xbd\xc3\xa9\xa3\x52\x5b\xed\x6c\x72\xf1\x8f\x78\x34\x8a\x9a\x97\x29\xfe\xa6\xd9\x45\x2b\x1f\xa6\x57\xa7\x67\x93\x8b\x66\xff\x22\x5e\x8b\x07\xdd\xa7\x4f\x1f\x3f\x79\xf6\xb4\xd4\xfd\xbf\x67\xa2\xff\x17\x77\x1a\x40\x5e\x64\xe5\xfe\xfb\x89\x0e\xee\xf2\x4d\xb1\xb5\x6d\xcc\xc3\x0f\x0d\xd8\xf4\xe6\x54\x0b\xf0\xfc\x7b\x3e\x1a\xf3\xcc\x5f\x1e\x4b\x34\x86\x58\x84\x58\xb5\xf1\x48\xa8\x77\xcd\xfb\xda\xea\x4c\x5d\x3f\xae\x79\x1f\x4f\xd0\xe1\xaa\x42\x34\xba\x8a\x6e\x04\xa7\x3c\x17\xed\x14\x29\x2b\x86\x5c\x3b\x4c\x5a\x24\xad\xce\xce\x38\x20\x81\x28\x02\x00\x50\x41\xff\x5c\x1a\x5e\xd9\x38\x1d\xdd\x9c\xc7\xa3\x11\x03\x44\x69\xb6\xce\xe3\x6b\x49\xda\x1a\xa5\xbb\x2c\x8d\x51\x7a\x11\xf7\x9b\xbf\xe6\xb8\x3b\xae\x86\x71\x7f\xc8\x46\x69\x34\xc8\x41\x8e\x63\xe7\xf1\x88\x4b\xae\xcd\xc6\x51\xd1\x1f\x82\xd4\x3f\xe4\xd2\xa4\xd8\xa4\x23\xdd\x97\xed\x2b\x1b\x34\x19\xac\xec\x9a\x9e\x1a\x00\xc5\x07\x72\x6e\xcc\x44\xe9\x02\xaf\xf7\x5e\xad\x1f\xf6\x0e\x4e\xb7\xd7\x0f\x0e\x4f\xb7\x76\x5e\xf5\xfe\x76\xfa\xf3\xfe\xee\xce\x77\xac\xcb\xca\x78\x87\xab\xba\xcc\xba\x62\xa3\x10\x8a\xbb\x22\xde\x9c\x3d\x6a\xa1\xb1\xd9\xb4\x82\xd2\x5f\xc6\x97\xeb\x2c\x88\x24\x96\x95\xbf\xae\x90\xaf\x1a\xdd\x96\x09\x2e\x2e\x74\xbb\xac\x2d\x64\xef\x8c\xaf\xb8\xaf\x01\x05\x6b\x06\x17\x5c\xba\x60\xa1\x95\x43\x35\xde\xbf\x77\x3e\xd3\xdd\xa7\xe8\x62\x92\x26\xe3\x28\x2b\xe2\x7e\x3c\x8e\xe0\x4c\xb0\x1f\x8d\x8b\x09\xe8\x4f\x17\x59\x3a\x19\xd7\x59\x3f\x1d\xc7\x7c\xc0\xce\xb3\xf4\x92\xf1\xfc\xeb\x46\x3e\x8c\x2f\x83\x5c\x21\x0b\xc8\x3e\xb8\x0e\x72\x11\x77\xf6\x36\xbe\x3b\xdd\xda\xd9\xd8\x7e\xfd\xaa\xf7\x4a\xcc\x5c\x2d\x5c\x5b\x6b\xc9\xfd\x15\x84\x47\xcb\x4e\x18\x33\x3d\xb6\xbd\xf5\xc3\x8d\xef\x59\xb7\x7a\xcd\x84\x7a\x62\x01\x7f\xff\xde\x9e\x10\x1d\xb8\x01\x40\xc9\x55\xb5\x71\xc4\xdc\xa4\x10\xfd\xc9\x8b\xcc\xd2\x55\x80\x76\x10\xc5\x03\x4e\x8a\xd4\x8a\xd4\x59\xc6\x37\xd2\xf1\x4d\x9d\x5d\x0a\x90\x75\x16\xaf\xd2\x73\x13\x31\xd3\xa2\xf7\xd6\x1a\x2c\x2e\x0a\xda\x82\x1f\x49\xe9\x73\x4d\x35\x34\x0d\x51\xe8\x12\x52\xa0\xe9\x24\xeb\xa3\x89\xb4\x89\x7f\x93\x8f\x42\xd7\xce\xd7\x07\x03\xb0\xf1\xb6\xad\xae\x64\xa2\x9b\x78\x92\x22\xbd\x54\xa5\xb3\xb9\x64\xb6\x5a\x72\x54\xfd\x80\x5f\x7d\xe2\x12\xdc\x04\xf4\xbc\x45\x1a\x88\xa0\x08\x68\xf5\xbb\xe7\xb5\xe0\x22\x08\xc1\xf4\xd2\x58\xb6\xcc\x01\x08\x90\x08\x1f\x52\x92\xd4\xc6\x19\xdd\x37\x79\xbe\x24\x56\x40\x1a\x2a\x28\x81\x36\x6d\x0b\xba\x34\x19\xa3\x83\x6d\xd2\x1f\xa6\x42\xfc\x97\x93\x7d\xc6\x87\xd1\xbb\x38\xcd\x9a\xb4\x9f\x16\x99\x7f\xc1\xda\xa0\xe3\x2d\x64\xdc\x88\x35\xb8\xd5\xc8\xf3\xe2\xa2\xe8\xd7\x91\x55\xb3\xc1\x24\x9e\x06\xc7\xc7\x49\x60\x1b\x8f\xf4\xb2\x04\xb5\xb5\x0e\x0b\xd8\x92\x7a\xb3\xc4\x82\x30\x20\x26\x0f\x33\xda\x00\x8b\xe1\x33\x29\x61\x16\x51\xfa\x01\x31\xc7\x01\xfe\xef\xb5\x35\xb6\xc4\xb2\x6b\xb6\xc4\x42\x16\xe7\x2c\xe1\x7c\xc0\x07\x75\x26\x34\xa7\xf4\xf2\x2c\x4e\x80\x96\xa3\xd2\x94\xa7\x97\xc0\xa4\x98\x98\xcf\x38\xb9\xa8\xb3\x22\x25\xa0\xf2\xf8\x72\x32\x12\x12\x8a\xa0\xbb\xc1\x4d\x00\x8b\xa5\xe7\x0e\x71\x5b\x50\x51\x7e\x65\x4e\x45\x6b\x6b\x1d\x77\x7c\x75\x5c\x64\xa2\x26\x18\x04\xb3\xb6\x27\x99\x33\x3f\x70\x1b\xf2\x17\xb5\xb5\x85\xe3\xe3\xe3\xe3\xdc\xd7\x84\x6a\xa0\x8a\x36\x84\x8c\xf2\x76\xba\x92\x7a\x03\xc0\xa6\xb5\xb8\x04\x6e\x39\x89\x4c\x6b\xaa\x93\x1d\x96\xf1\xba\x5a\xaa\x70\xfa\xfe\x11\x2f\x01\xae\x85\x1f\xf0\xa6\x19\x27\xe3\x89\x10\xd4\xc9\x93\x44\x74\xb3\xe8\xd4\x3e\x06\xe5\x8e\xda\x27\xaa\xca\x51\xfb\x64\x76\xf9\x66\xec\x1f\xb2\x2a\x64\xe1\xf4\x12\x81\xec\x98\xfe\xa4\x59\xd5\x91\x91\xda\xab\x25\xa3\x6b\x25\x71\x5e\x5c\x64\xee\x4c\x38\xd0\x32\x2e\x95\x14\xb6\x66\x75\x7e\xc9\xed\x15\xeb\x30\x77\x2c\xb7\x15\x38\xa6\x9b\xd5\x7f\x18\x85\x9b\x52\xa6\x56\x8b\x6d\xc6\xd7\xec\x2c\x4b\xaf\x72\x21\x18\x5d\x0d\xd3\x9c\xb3\x37\x82\x09\x98\x63\xf5\x41\x8a\xfe\x33\x49\x1e\xe7\x05\x4f\x8a\xd1\x8d\x62\xd8\x6f\x34\xb7\x7a\x43\x20\x9e\xa7\xc8\xed\xea\x6c\x14\xbf\xe5\x6c\xab\xf7\xac\xc9\x76\x76\x0f\x7b\x1d\x14\xc5\x06\x29\xcf\x93\x00\x1d\x7c\x44\xd1\x56\xad\xb9\x16\xae\xb5\x14\x00\x4b\xd8\x41\x54\x54\xf3\x60\x38\x4d\x49\x46\x91\x64\x16\x2c\xb5\xac\xcb\x96\x57\x59\xcc\x9e\x97\xcd\x6b\x0d\xb6\xb2\xca\x62\xc7\x56\x2b\x2f\x66\xa9\xb2\x47\x71\x29\xf6\x27\x76\x40\xbc\x2f\xf9\x14\x5a\x84\xe9\xb6\xb4\xfb\x95\x93\xbb\x00\x60\xce\xe4\xbd\x47\xf2\x84\x21\x3f\xfc\xbe\x3c\x47\xb6\x5e\x75\xf4\x0a\xd2\xaa\x28\x23\xe5\x69\xea\xf9\x1f\x20\x21\x0a\x2a\xbc\xff\x5b\x4d\x14\x5a\x80\x0b\xc0\x1f\xb7\xd2\xcb\x56\x3c\x74\xe0\xff\x76\x38\xbe\x22\x95\x76\xa1\xe9\x7e\xfb\x68\x3a\x32\xe7\xc7\x1f\xce\x7b\xa6\xd2\xd3\x44\xa8\xe1\x7b\x69\x9c\x14\xeb\x45\x9d\x45\xf7\xf7\x25\xd9\xd8\xdd\xf9\xa9\xb7\x7f\x78\xaa\xaf\x41\x4d\x75\x2c\xa9\xb3\x71\x6a\x7b\x97\x1c\xdc\xd1\xb1\x04\x64\xfc\x34\x87\x6b\x35\x70\xe2\x26\x27\xb8\x26\x00\x53\x91\x27\xfe\x07\xe8\x0b\x36\x59\x23\xe7\x6f\x39\xef\xa7\xc9\x80\x9c\x77\x69\xa8\xcf\x51\xf6\xd6\xcf\x2f\xba\x00\x4d\xdb\xfd\x4b\x43\x66\x6b\x2c\x08\x68\xd4\x07\xe7\x90\xed\x80\x9e\x82\x28\xb0\x8e\xef\x0a\x96\x7d\xce\xda\xd7\xaf\x9e\xb5\xdb\xe6\xbc\xed\x85\x78\xf3\x72\x73\xd3\xea\xd1\x12\x5b\x86\x7d\x2a\xba\xa5\x36\xe0\xfb\xf7\xac\x86\x63\xaa\x6a\x51\x54\x0b\x43\x6c\x63\x03\xdb\x90\x15\xa0\x91\x4d\xbc\x6c\x86\xff\xd6\xbc\xa3\x44\xb0\x74\x10\xac\x83\xfd\x34\x35\x3b\x15\x35\x91\x71\xa9\x8a\x75\x3a\x98\x15\xb0\x2e\xe3\x78\x1b\x6a\x06\x9e\x3f\x67\xcb\xed\x90\x2d\xe9\x51\x35\x64\xbf\xc5\xbb\xf6\xf5\x72\xbb\xdd\x6e\xdf\xdf\xd5\x87\xa0\xff\x87\x70\x62\x11\xe0\xc6\x02\x5c\x04\x33\xd1\x87\x89\x77\xbc\x59\xf0\x18\xb8\xda\xa1\x26\xaa\xea\x89\xec\x44\x3f\xbd\x6c\x5d\x46\xc5\x30\x8e\xf2\xb3\x9b\x84\x27\x79\xcb\x03\x02\x5a\x87\x35\x72\x5a\x87\xbb\x8c\xd3\xdc\x69\xb0\xd6\x2c\x7f\x02\x10\x91\xcf\x6e\x0a\x1e\x84\x12\x17\xfe\x85\x6e\xfb\xc8\x7b\x98\xf4\xba\x0f\x4e\xd1\x3f\xe1\xbe\x8f\xd3\x97\x6a\x5a\xfc\xa0\xab\x2c\x2e\x22\x5a\x77\x59\x9c\x4b\x25\xd8\x70\x5d\xcd\x89\xf7\x5a\xc9\x1d\x2e\x94\x38\x03\x94\x37\x4a\xb0\x43\x1d\x13\x9f\x4a\x5d\x24\x39\xb6\xae\x8f\x1c\x5b\xd7\x3c\xb0\xf0\x07\xbb\xe7\x81\x7d\x98\xeb\xa2\x87\x78\x73\x8f\xcb\x1e\xc4\x31\x31\x2a\x84\x32\xaf\xfd\x0e\x2b\xae\x74\xe8\x6f\x40\x24\xb4\xbd\x5b\xdf\xe9\x90\xeb\xa8\xee\x74\xdc\xe5\xb6\x06\x40\x64\x5d\xb9\x7f\x6b\xb9\x5c\x65\x72\xd8\x4e\xfa\x21\x04\x7e\xa8\x40\xd9\xa2\xdb\x1a\x14\xf0\xdc\xaa\xf0\x1b\x3e\x5b\x2d\x76\xb8\xfb\x6a\xb7\xc3\xf6\x21\xed\x3f\x5a\x85\xde\xf4\xd3\x8c\x37\x7e\xcd\xbf\xfd\xea\x0d\xcb\xe3\xa4\xcf\x59\x5c\x04\x39\x13\x05\x06\xac\x48\xe1\xba\xe9\x0d\x36\x94\x1f\x27\x74\x9f\xcb\x33\xbf\x16\xcf\x9b\xf2\xd0\x44\xcb\x6a\xf7\xf3\xad\xbb\x8b\x03\xda\xc3\x03\xf7\x60\x9f\x7b\x77\x11\x41\xff\xc0\xf0\x45\x92\x2c\xee\xf5\x36\x30\xa4\x4d\x29\x54\x4e\x3e\xe6\xfd\xd8\x72\x98\xde\xef\xed\x6d\xaf\x6f\xf4\x4e\xa5\xc9\x0a\xef\xb1\xbe\x3a\xfd\x6e\x7f\xf7\xf5\xde\xc1\x94\xf8\xd7\xad\x16\xd3\x66\xe2\x84\xf3\x41\xae\xaf\x50\xb0\x5c\x1a\x6b\x84\x8a\x92\x44\x97\x7c\x80\x76\xc4\xbc\xa9\xea\xa1\xba\x76\x05\x81\xdb\x60\x71\x95\x19\x3a\x2e\xd8\xaf\x93\xbc\x30\xd1\x75\x38\x8a\xdd\x78\x02\x94\xd7\x19\x7f\xc7\x13\xb1\x93\xe2\x82\x0d\x23\xe5\x07\x1b\xb1\xe3\xcf\x2e\xb2\x74\x9c\x1f\x7f\xc6\xd4\x74\x34\xad\xb3\x80\x56\xb3\xa5\x0e\x00\xb8\x63\x04\xac\x39\xd6\x3f\x79\xb6\x76\x74\xa2\xc5\x35\xf1\xa6\x89\x23\x10\x22\x06\x8b\x3a\x2c\x78\x1a\xe8\x7b\xd1\xee\x21\x15\xb3\x2f\x33\x05\x81\x71\x63\xe6\x75\x16\x7c\xf1\x3c\x7a\x11\x60\x68\x88\xe0\x69\x60\xce\x47\x5a\x2d\xb6\xd5\x63\xcf\xbb\x6c\x79\x99\xc9\x0a\x39\xfb\xa2\x8d\x66\x1d\x31\x11\x57\xc3\x74\xc4\x95\xdd\x31\xca\xe5\x2c\x5c\x45\x39\xfb\x62\xd1\xa2\x95\x79\x11\xf5\xdf\xa6\xef\x78\x76\x3e\x4a\xaf\x40\x8a\x80\x54\x04\x71\x9a\xe4\xad\x27\xed\x95\xaf\x9e\x3c\x79\xd2\x92\xd7\x3f\x1a\x31\x6f\x14\x69\x43\xb6\xd7\x88\xd0\xb8\xdf\x10\x6d\x36\x8a\x21\x6f\x8c\x80\xa8\x8e\x54\x00\xae\xb6\x8d\x32\x3f\xf4\x7a\x7b\x07\xa7\x5f\xb4\xbd\x96\x74\x35\xfc\xc8\x8c\xbf\xd5\x6c\x89\x09\x68\x4b\xbb\xa1\xf8\xcb\x35\x6e\x4b\xd0\x3e\xd4\x95\x50\x02\xc9\x45\x64\xa4\x5d\x31\x61\x8f\x9b\xed\xe6\xe3\xda\x5a\xc8\xf2\xc9\x59\x5e\xc4\xc5\xa4\xe0\x39\x4b\x8a\xa1\x34\x64\x8b\xa9\xe3\x19\x67\xc9\x8b\x4b\x9c\xcd\x28\x91\x51\xe8\x72\xe2\x8e\xb8\xdf\xfb\xae\xf7\xb7\xbd\x53\xb3\x1d\x5e\x1e\x1c\x6e\x1d\xbe\x3e\xec\x1d\x9c\xbe\xde\x79\xd5\xdb\xdc\xda\xe9\xbd\x3a\xdd\x58\xdf\x3b\xc4\x30\x5d\xe5\x01\x0b\xfa\xde\x6a\xb6\x8e\x24\x84\x13\x37\x56\x36\xfd\x26\x0f\xd6\xcc\x54\x04\xe6\x22\x9e\xd2\x0f\x64\x50\x1c\x3d\x3d\xad\x16\xdb\x18\x66\xe9\x25\x67\x5f\x2f\x83\x73\x65\x24\x03\x0c\x1f\x7f\x06\x16\xf8\xe3\xcf\x1c\x45\x4e\x0c\x5b\x1d\x31\x7e\xae\xd5\x58\x63\xfb\xc2\xe8\x89\x9c\x5f\xb3\xff\x38\x00\x80\xe7\x59\xfa\x0f\x9e\x98\x7d\xac\x39\x69\x6e\x6e\x06\x65\x37\xac\x25\xc3\xfa\x5d\x29\xa7\x1b\xa4\x39\xdb\x5b\x87\xa7\x3f\xef\xee\xff\x70\x70\xfa\xf3\xd6\xe1\xf7\xa7\xbb\x3f\xf5\xf6\x7f\xde\xdf\x3a\x3c\xec\xed\x9c\xf6\xfe\xd6\xdb\x98\x42\x4a\xcc\x36\xad\xad\x75\x42\x73\xec\x92\x66\xf1\x45\x9c\x44\x23\x4d\x5d\xd5\x49\x57\xe5\x46\x56\x93\x47\x6b\x36\xa3\xf1\x78\x74\x23\x25\x1a\x6d\xf9\xd0\x81\x2a\xec\x13\xf5\xe8\x2c\x90\xbe\x1c\x19\x0f\xcb\x67\xd0\xca\xb6\x22\x26\x72\x05\x8d\xc8\xe2\xf5\x51\x5b\x1a\x8a\xa3\x80\xbc\x54\xd6\xe3\x33\xb2\xcb\xa7\x9c\xff\x43\xe8\x02\xe5\x05\x2a\x06\x57\x67\xf9\x30\xba\x24\x73\x74\xf0\xcb\x8f\x2f\x77\xb7\x3d\x7b\xe3\x87\xde\x2f\x34\xbe\xd7\xab\xde\x76\xef\x3b\x30\xd1\x09\x8d\x4c\x55\xaa\x9a\x7d\xb4\xaf\xa3\x80\xa3\x2c\x02\xfd\x68\x34\x92\x7e\x72\x0d\xa4\xe0\x02\x8d\xc6\xf4\xfe\x01\x36\xb5\x6b\x02\x54\x32\xb6\x7b\x84\x8d\x9d\x54\x2d\xcb\xd3\x55\x97\x6a\x06\x01\x44\x69\xa8\xed\xc2\x89\xeb\xd3\x55\x2d\x27\x7a\xc7\x22\xf1\xc8\x37\xbe\xc5\xc5\x19\x03\x74\x07\x73\x3d\xb6\x47\xdb\x44\x63\x8e\x1a\x98\x78\xda\x88\x46\x23\x38\x5a\x31\x01\xaa\x28\xb2\xc2\x01\xa1\x31\x27\xfc\xd0\xfb\x05\xf7\x32\xe0\x4f\x60\x5b\x1e\x7f\xe6\x32\x0a\xe9\x04\x4c\xac\xd1\x08\x05\x07\x06\x84\x49\x09\x4c\xea\x40\x7e\xc0\xd3\x71\x11\x5f\xc6\xff\x90\xf6\x18\x0d\x25\x4a\x06\x2c\xe7\x59\x9c\x4e\x72\x36\xe6\xd9\x79\x9a\x5d\x46\xa2\xea\x80\x5f\x64\xd1\x00\x37\x3d\x44\x92\x21\x75\x3c\x4a\xe5\x3f\x46\x69\x9c\xa5\xfd\xb7\x2d\x29\xb4\xb5\xe2\x3c\x9f\xf0\xbc\xf5\xb8\xfd\xc4\xd8\x6d\xe9\xc2\x02\x20\x9c\xb4\xa3\x6f\xbf\x85\xf1\x9d\x48\xdb\x66\x81\xb3\x27\x18\x14\x8c\x28\xc8\x91\x63\xe3\xdc\xd6\xc1\x59\x13\x15\x7d\x14\x5f\x72\x3a\x1c\x38\x0b\x48\x13\xde\x14\xf3\x23\x84\x08\x21\x2a\x12\xde\x2f\xcd\x84\x72\xae\x80\x9c\x01\x14\x75\x72\xac\xaa\x13\x6b\xb3\xed\x6a\x44\x46\x60\x7f\x3b\x92\x32\x52\x25\xaa\x66\x9c\x46\x64\xcb\xa4\x03\x8f\x71\xba\xc1\xb7\x04\xe1\x05\x79\x97\x4f\x65\xc3\xa8\x9f\x58\x59\x38\x06\x91\x78\x74\x78\x9d\xc9\x68\xb4\xaa\xc3\xac\xd1\x96\x6a\xa5\x4b\x50\x0b\x06\x8c\xbd\x7d\xcc\x55\xd3\x05\xdf\x8e\x79\xff\xde\xf7\x11\xb6\x98\xfa\x64\x70\x5a\x31\x5f\xd8\x67\x35\x35\x01\xd3\x65\x47\x75\x5b\x93\x95\x05\x06\xf3\x69\xe1\x2e\x7c\x17\x2b\x85\xa1\xa7\x83\xb8\xe9\xa0\x7b\x33\x59\x11\xf8\x61\x5a\x62\x9f\x32\xc4\x0b\x0c\xd7\x36\xcf\xf2\x8a\x8a\xa2\x26\x70\x0f\x1c\x1f\x63\x81\xba\x22\x64\x54\xc7\x46\xa0\x3f\xca\x8d\x80\x5a\x00\x9c\x2a\x01\x1b\x5a\x91\x66\x66\xa4\xbc\x58\xca\x39\x56\x22\xfa\x10\x0c\xd2\xe8\x1a\xa5\x18\x62\x95\x24\x71\x4a\x13\x72\x17\x1e\x1a\xef\x10\x8b\x0b\xb0\x68\x94\xf1\x68\x70\xc3\x06\x7c\xc4\x2f\xc4\xd6\x15\xbb\xf3\xdb\x6f\xe5\xd7\x9a\xb9\x24\xac\x41\x29\x77\x11\x3e\xd0\xd3\x10\x0a\x9e\x16\xe5\xd2\xc3\x3b\x4e\xce\xc1\x3b\x93\x65\xbc\x3f\xc9\x72\x74\x91\xb2\x40\xfc\xcc\x59\xf4\x2e\x8d\xc1\x3f\xe9\xec\x86\x0d\xe2\x8c\xf7\x8b\xd1\x0d\x50\x19\xbd\xed\xb1\xb7\xba\x2b\xda\x81\xc4\x40\xd2\x2a\xae\x51\x9f\xeb\x4a\xdd\x2d\x2f\xb6\x3a\x78\x77\x56\x28\x24\x14\x80\x9c\x7c\xcc\x03\x9d\xc2\x05\x78\x0a\xb8\x0b\xf7\xd6\x10\x13\x0b\x26\x0d\x8b\xc0\xf4\xb1\x83\x6f\x33\x75\x4a\x6f\xea\xa6\xe8\xfc\x7b\xab\x73\xa7\xd2\xb2\x5b\xa1\xed\x73\xa0\xb1\x8c\x75\x75\x10\xa6\xf6\x89\xc5\x38\x2f\xf8\x75\xa9\xc8\xf2\x09\x21\x74\xd2\x13\xd4\xb5\x9a\xc9\xd0\x4e\xb4\x11\x43\x07\x65\x1d\xd7\x31\xaa\xce\xd4\xee\x54\xb7\x1e\xba\x6c\x85\xf0\x9f\x95\xe5\xe6\x4a\xf3\xeb\xe6\xb3\x92\x47\xd5\xd1\xb7\xdf\x4a\x82\x77\xa2\xed\x2b\xf2\x05\x24\x2b\x0b\xcb\x40\x96\x97\x7d\x50\x90\x55\x6a\x18\xa3\xf8\x32\x2e\x74\x65\x1a\x15\x5c\x95\x88\xb2\x0b\x8b\x09\xe9\xe9\xd2\xa8\x84\x87\xfa\x4a\x98\x15\x62\x6c\xb9\x33\x4f\x7c\x7d\x01\xcd\x51\xf5\xc5\x33\x82\x6f\xbc\x03\xe0\x51\xe6\xa9\xd5\x29\x75\x7d\xde\x5e\x9b\x0e\x5b\x01\xb2\xe0\x68\x1d\xa4\xdd\x69\x71\xdc\x4a\x1d\x94\xe4\xb9\xce\x02\x51\x39\x30\x11\xfc\xfe\x10\xb3\xb7\x8c\x4c\x34\x78\x27\x84\x2e\x69\xc3\x4c\x06\xfc\xfa\x41\xb7\xcf\x22\x04\x27\x6d\x98\x18\x42\x67\x8a\x96\x70\xa0\x6f\x88\x69\xd7\x5a\xaa\x6e\xab\xe3\xf4\x9a\x8a\x4b\xb0\xa6\xec\x84\xaa\x62\x68\x4e\xd8\x97\x43\x3b\x4d\x80\xef\xb6\xa9\xf7\x8a\x69\x85\xd1\xcb\x73\xd8\x6a\xbc\xac\x7b\x70\xce\xfe\x80\x89\x42\xe0\x28\xa5\x4f\x99\xa0\xfd\x3a\x3b\x20\x3a\x93\x14\xbc\xf6\x8d\xea\x48\x2e\xd4\x69\xce\xea\x89\x73\x69\xe9\x85\x5c\xbb\x8a\x00\x78\x72\x88\x28\x21\xc9\x92\xa0\xef\x29\x37\x73\x7a\x65\xce\xce\xee\x20\x8f\x9d\xa9\xa4\x2c\x17\x90\x0f\xc0\x85\xa7\x00\xe7\xc8\xb4\x18\x72\x70\x06\x4f\x58\xa4\x2e\x51\xb2\x34\x03\xe9\x30\x70\x3c\x63\x3c\x56\x28\xb3\xb3\xd4\x85\x94\x7d\x69\x77\x92\xa7\xde\x95\xd9\x27\x02\x6a\x34\xe8\xa3\x84\x0a\xaa\x45\x3f\xbd\x1c\x47\x05\x9c\x4e\x67\xbc\xcf\xe3\x77\xf2\x14\xdb\x0d\x74\x67\x10\xc4\x9e\x35\x94\x68\xfd\x1b\xf3\x3c\xbe\xc6\x66\x7f\xb6\xb5\xdb\xed\xf4\x22\xae\x36\xae\xce\xf6\x48\x35\x71\xf1\xee\x9e\x05\xa3\x48\xb7\xd5\x7d\xb9\xca\xd3\x7c\xdc\x4e\x7f\xc8\x61\x3e\x46\xf3\x73\xc9\xcd\x94\x78\x7e\x50\x54\x59\xeb\x60\xbb\xd3\x3d\xdb\x9b\xdf\x50\xdd\x50\x1b\xd5\xec\x63\xc9\x41\x18\x4c\xea\x71\x32\x75\xb9\x6a\x01\x94\x0d\xea\x6c\x99\x4a\xc4\x3f\xae\x1f\x6e\x7c\x5f\x57\x22\x12\x5a\x32\x2f\xa3\x9b\x33\x2e\xd4\x17\xbc\x86\x62\x93\xb3\x23\xad\xbf\x97\x8f\x4f\xa1\x05\x7a\x82\x7a\xff\xd3\x5c\x00\x25\x8f\xf0\x55\x67\xe1\x9d\x94\x09\x43\x1a\xa4\x13\x8d\x1e\x15\xbe\x0b\x85\x15\xd1\x16\xf4\x05\xd0\x61\x33\xed\xe9\x69\x65\xaf\x62\x6b\xe4\xef\x8e\x2c\x71\x04\xd3\x74\xb2\xea\x48\x86\x0a\xd0\x82\x03\x40\xbe\xb7\x65\xd8\xdd\x90\x75\xa8\xa7\x9d\x1c\x87\x04\x2d\xa5\xab\xda\xae\xb9\xe9\x53\x37\x33\x5d\x29\x3b\xdc\x6b\xb2\xdd\x9b\x30\x0d\x09\xcd\x99\x6e\xff\x4c\x67\x70\xb7\xdf\x41\x91\x9a\x85\x3f\x6a\xc4\xf6\xcc\xa3\xfa\x94\x37\x85\x30\x1d\x12\xe2\xd8\x54\x57\x0d\xad\x56\xae\xe9\x65\x1b\xd9\x11\x6b\x11\x89\xd3\x8a\x6a\x87\xb6\xb4\x90\x5d\x93\xcb\x37\x8a\x02\xca\xed\x56\xcb\xae\x25\xf5\xa3\x10\xcf\x27\xa3\xd1\x6b\xc9\xa3\xbb\x2c\xbb\x56\x37\x65\xcc\xaa\x5f\x7b\xfd\xf0\xb0\xf6\x3a\x3d\xa1\x90\x2a\x6c\xa9\x10\xe1\x05\xe2\xdf\xd5\x30\x1e\x71\x56\xab\x69\xa6\x56\xea\x62\x58\xce\x4b\x64\x61\xf1\x41\x91\x51\xe7\x1d\x69\xf9\xa4\x0e\x89\xeb\x47\x89\x76\x5e\x3c\x28\xb2\x55\x5b\x49\x35\x40\xc0\xe4\x1d\xba\x63\x2c\x93\x3a\x21\xb5\x28\x1a\x5c\xa3\xa5\xc3\x3a\x9d\x41\xda\x85\xc4\xe7\x45\xab\xcc\x2a\xd0\x72\x9b\xad\x61\x0a\xa0\x0e\x5b\xa7\x4c\xf4\xc4\x49\xad\x7a\xb7\xb8\x21\xaf\x76\x7f\x54\xf1\x68\xab\x4f\x1f\x07\xe9\x25\xfa\x31\x58\xc1\x56\xad\xa8\x87\x3f\x6a\xfb\x42\xc5\x29\x29\xc6\x72\x2b\xe5\xbc\xf8\x03\x13\xa2\x3c\xec\x94\xf4\x1e\xf9\x3b\xdc\x9c\x02\xa5\x1a\x24\x1a\xb8\x3d\x8b\xa0\x9e\x89\xc9\xf3\xcd\xa9\x0c\x30\x0a\x7d\xd2\xb7\x63\x37\x76\xb7\xb7\x7b\x1b\x87\x5b\xbb\x3b\x18\xc1\x37\x4e\xac\xa5\xa4\xe9\x9a\xd2\xd1\x88\xf7\xa5\x1f\x9a\x0c\x96\xe1\xd4\x36\xb9\x00\x4c\x61\x1a\x3b\x83\x80\x58\x5c\x24\x4f\x4e\x5e\x03\xc8\x59\x54\x06\x40\xed\xd9\xe0\xe8\x2d\xcf\x83\xde\x71\x30\xa5\xe4\x10\xff\x8d\x89\xd5\xc4\x0c\xe2\x13\x18\x82\xb6\x58\xa5\x30\xb2\xc3\xf4\x2d\x4f\xb6\x63\xe5\xc1\x55\xd1\x94\x13\x74\x9b\xcc\x6d\x48\x53\x4f\xcd\x08\x04\x5f\x86\x4b\x03\x6f\x53\xa0\xda\xcb\xd8\xc9\x18\xa5\x9a\x99\xde\x45\xab\x83\x65\x77\xe1\x05\x5f\x6d\x3b\x8c\x7b\xf8\x80\x11\x39\xa1\xe4\x1d\x94\xf0\x78\xb0\x53\xfc\x2a\x61\x50\x68\x2e\x6e\xff\xd8\x3b\xfc\x7e\xf7\x95\x46\x4b\x1f\x4a\xdb\xa7\x0c\x1f\x0a\x29\xaa\xd1\x82\x74\x89\x60\x86\xd3\x29\xab\x94\x83\x2f\xf7\x98\x5f\x02\xad\x3e\x47\x7b\xc4\xa1\xbd\x02\x99\xfc\xe8\x64\x0d\x6d\x8e\x81\xb9\x5c\x46\x5d\x96\xbe\xd5\x0c\xe4\xcf\xf5\x44\xf9\x03\x33\x02\xdf\x21\x2d\xba\x80\x3b\xc9\x46\xf2\x9e\xc7\xeb\xfd\xed\x5a\x70\xb6\x16\x75\x97\x17\xcf\xba\x2b\x8b\xfd\xee\xe3\xa0\xce\x02\x21\x36\x76\x5a\x2d\x75\x23\x0e\xfd\xf3\xa2\xac\x3f\x84\xa4\xee\x02\xfa\x24\x1b\x35\xe9\xab\xca\xbb\xcf\xa2\xe0\x38\x2a\x86\x90\xf7\xa0\xcb\x82\xfe\x97\x2b\xed\x01\x7e\xa2\xf5\x4b\xd9\xf4\x19\x46\xa9\xc0\xeb\xee\x26\x91\x9e\xa9\x71\x14\x0c\xf8\x88\x17\x3c\x38\xa9\x05\x67\xe4\xc8\x45\x5d\x51\xc6\x1c\xf5\x26\x70\xc5\xad\x75\x5a\x5c\xa3\x39\x64\x45\x1f\x8b\xf4\x3f\x0e\x76\x77\xa4\xfd\xec\xfd\x7b\xb6\x60\xf5\x2e\x4f\xb3\x42\x7f\x12\xc5\x87\x19\x3f\x47\x55\x5d\xcd\x55\x0b\x46\x06\x33\x29\x66\x51\x97\xb6\xe0\x5c\xf0\xa2\x16\xf4\x95\x77\x09\x29\x25\x65\x36\xb9\x24\x07\xa4\x4e\x2d\x10\x30\x03\x29\xfb\x05\xe2\x6f\x7f\x27\xdd\x2c\x3a\xad\x16\x9a\x0d\x72\x41\x9a\x7a\x83\x0b\xae\xab\xe9\x85\x57\xea\x41\xf4\xed\x59\x10\x36\x27\xb9\x40\x44\x99\x9e\x22\x88\x02\xb7\xbc\xd5\x2b\x6f\x4f\xa3\xee\x59\x10\x86\x38\xca\x48\x8d\xf2\x2c\xd0\xfd\x49\xd2\x82\x8d\x27\xc9\x8d\x10\x09\x07\xd3\xbb\xd5\x69\xb5\xfe\xfb\x7f\xfe\x9f\xff\xef\xbf\xff\x9f\xff\xfe\x9f\x41\xd8\x1c\xa6\xb9\xb4\xdd\x5c\x27\x8d\x06\x5f\x8e\x6e\xce\xfa\x36\x58\x9e\xf7\xa3\x31\x02\x95\xf4\xf5\xc9\x4a\xa3\x12\x74\xf4\xf9\xff\xf9\x7f\x05\xd8\x28\x47\x57\x81\xe0\xf3\x2f\x5f\xb5\xbf\x7c\xb9\x6c\x60\x22\x69\x20\xd0\x9e\x18\x68\xd4\x96\x14\x2d\xf7\x1f\x07\x9e\x09\x47\xef\x97\xca\x0e\x5c\x07\x75\x72\xa7\x83\x8e\x2f\x98\x7e\xa3\xf9\xbe\x31\xf6\xee\x42\xea\xd0\xd4\xf1\x03\x46\x25\x99\x1a\x0a\x4d\x47\x21\x2e\xc7\x68\x43\x3a\x95\xcf\x70\x3c\xae\x0a\xd3\x26\x43\x00\x69\xd8\xea\xc3\x56\x6e\x98\xd2\x7c\xa0\x35\xc8\x38\x27\x32\x34\x31\x20\xcd\x4e\xe3\xe0\xd8\x9c\xe6\x4b\xff\xe0\xc9\xfd\x40\x2f\x50\xaf\xe7\x79\x7c\x91\x98\x9c\xa0\x11\x3c\x57\xc5\xa3\x93\x85\xec\xf7\x6e\x02\x57\x04\x71\xdf\xc4\xad\x58\xdb\xc7\x48\xac\x0e\xbf\x7f\x3f\x25\x22\x80\x8c\xf5\x04\x02\x8d\x8a\x6b\x9c\x66\x03\x9e\xb1\xf4\xdc\x18\x94\x73\x56\x13\xfb\x9e\x9d\x4d\xf0\xbc\x02\x8f\x47\x0d\x5a\xeb\xa4\x39\xd8\x64\xed\x77\x76\xd6\x61\xcb\xec\xb6\x6e\xbf\x76\x22\xaa\xfc\x7e\x0b\x77\xb8\xf5\x39\x9c\x59\x6b\x79\xfe\x87\xaf\xe1\x56\x91\xf7\xc6\x96\x03\x0f\x4f\x70\x82\xb3\xa0\x6e\xab\xda\x70\x86\xf8\xb8\x6e\x5e\xd1\x86\xe0\x50\x50\x8b\x1d\x76\x94\x96\xb0\xce\x60\x24\x2b\xec\x36\x0c\x9b\x67\xb0\xdd\x97\xb5\x39\x42\xe7\xf9\x31\xd3\x68\xf2\xe1\xca\xdd\x80\xee\x25\x64\x8e\x07\xbc\xe0\xd9\x65\x9c\xc4\x79\x11\xf7\xf5\x1e\x91\x53\x5e\xfb\xe9\x99\x9e\x62\x65\x92\x20\xa9\x6a\x5f\x9a\xc7\x69\xd1\x90\x93\xb4\x01\x74\x4a\xcb\x01\x4a\xfa\x91\x72\x88\x91\x10\xa2\xd1\x78\x18\x9d\x71\xe9\xa5\xd5\x1f\xf0\xf3\x8b\x61\xfc\xeb\xdb\xd1\x65\x92\x8e\x7f\xcb\xf2\x02\x99\xfe\xfa\x11\x42\x10\x12\x1c\x7a\x13\xa9\x7a\x2a\x44\x4f\x10\x7a\x84\x81\xfe\x10\xd2\xd3\xbe\x3c\xea\x0f\xb3\x13\xf0\xad\xce\x56\x1d\x96\x6e\xe3\xcc\x6d\x9d\xad\x87\xba\xad\x85\x2e\x7b\x2a\x50\xd7\x50\xb6\x5a\xa9\xf8\xcb\x30\x6c\xfe\x9a\xc6\x89\xe8\x81\xa8\xa0\xfa\x05\xf4\x98\x9e\x05\xe2\x4e\xa9\x15\x32\x8e\x38\xde\x8e\x85\xe4\xb9\xa5\x79\x34\x53\x38\xc9\xf9\xa0\xf1\x2e\xc2\x44\x58\xa0\x42\xc3\x5d\x29\x15\x3f\x06\x60\x91\xb9\xd4\xb1\xf1\x95\x75\xdb\xbd\x3d\x58\xf2\x6d\x5f\xd6\x6f\xbc\x74\x18\x5d\xe8\xab\xe8\x33\x44\xb0\x94\xfe\xf0\x1e\x4a\x8b\x29\x76\x2b\x08\xb0\xac\x2b\xad\x57\x6e\xcf\x5f\xc8\x43\x2d\xf7\x86\x99\x9d\xde\x82\xdc\x77\xc4\xf8\x75\x27\xf4\xe0\x5a\xc6\xc7\xf2\x8f\x6b\x8d\x2e\xea\x41\xd8\xec\xa7\x49\x3f\x2a\x6a\xde\xc2\xb5\x83\x30\x64\x1d\xbb\x02\x8d\x22\xa0\x26\x9b\x04\x85\x22\x9f\x7f\x75\xee\xf0\xbf\xe5\xea\x96\xb8\x1c\xbb\x09\x23\x45\xc8\x0a\x8d\x16\xb5\xb4\x74\x62\x19\x40\x17\x28\xd9\x7b\xff\xde\x3b\xc9\x68\x36\x3e\x50\x01\xa5\x0e\x8f\xde\xf2\x1b\xb1\x03\x0e\xe0\x0f\x8b\xc2\xa8\x9d\x70\x28\x50\x56\xe7\x0d\x5c\x57\x9c\xc5\x2f\x50\x9c\x61\x22\x8c\x0a\xb9\x40\xe2\x7c\x43\x94\x12\xfa\x69\xc1\xaf\x8b\x87\xf0\x4e\x31\x98\x9f\xe3\x62\x08\xa1\xbe\x54\x56\xab\x8d\x51\x9a\xe3\xed\x8d\x0a\x2b\x58\x34\x1a\xa1\xcb\x73\x1e\x9d\xab\x7b\x46\xa2\x57\x7d\xac\x48\x42\x03\x7b\x94\xc2\x69\xfa\x16\x98\xea\x4c\x5a\x66\xe4\x9c\x0f\x39\x5c\xb2\x73\xec\xcf\xb2\xeb\x95\x0c\x79\x3a\xd7\xd7\xcc\xce\x0b\x89\xc9\xd7\x6f\x9a\x9c\xe7\x3c\x4b\x75\x40\xe8\xfb\xc6\xca\x8a\x34\xa4\x69\x87\xba\xe2\x7b\x0d\x8a\x6e\xc7\x6f\x39\x6b\x3d\x62\x75\x76\x19\x8d\xcf\x13\x7a\x49\x19\x8f\x00\xd6\xb3\x0b\xfa\x92\x3d\x6a\x11\xc5\x74\x97\x12\x45\x0d\xcf\xd0\xc5\x0d\xf1\x1d\x0f\x74\x21\x64\x8d\x9d\xd6\x60\x0d\x5f\x76\x48\x86\xf3\x3b\x12\x53\xd5\xe7\x32\x15\x5b\x66\x6b\xe6\xed\xd1\xf2\x49\xe9\x72\xa9\xac\x3e\x46\x44\x46\x40\x6e\x0c\x15\x15\x6c\xd1\x59\xe1\xd2\xaa\xab\xe4\xe9\x94\xbe\xb7\xf5\x1b\xe5\x82\x8c\x6a\x48\x9d\xe5\x05\x1f\xd7\x35\x54\x95\xa6\xd8\x68\xbe\x68\xd9\x87\x9e\x85\x7a\x84\x62\x43\xd7\xe0\xa1\xee\x19\xed\x8a\x35\xda\x15\x6b\xb4\x75\x26\xa3\x95\xb6\x5a\x02\x74\x31\xe4\x2a\xd5\x4e\x9c\x83\x2a\xa6\xec\xe7\x2c\xcd\xf0\x92\x51\x94\x30\x58\x4b\x73\x55\x42\x86\x49\xd5\x9d\x66\x0d\x0c\xd3\xc5\x72\x40\x53\x1d\xff\x11\xae\x64\xd9\xd3\xb5\x40\x91\x07\x9c\x1d\x37\x98\x32\x73\x41\xc4\x5d\x1f\x0d\x70\x80\x84\x21\x09\xc5\xab\x2f\x37\xda\x65\x64\xf2\x79\xc5\x1f\x20\x81\x92\x29\x03\x37\xd7\x6c\x9b\x03\x1a\x54\x36\x6a\xaa\x06\x58\x09\x57\x17\x6a\x62\x79\xe0\xe3\x75\x81\x30\x15\x8c\x30\x84\xd3\x2f\x5f\xcc\x56\x58\x3c\x44\x23\x40\xa8\xb5\xa9\x84\xb3\x66\xd6\x5e\xae\xe8\x91\x68\xb4\x29\x2d\x28\x2a\x9d\x0f\xb8\xde\xb0\x0e\x33\xdf\x56\x6d\x93\xaa\x96\x7d\x15\x66\x49\x47\x16\x8c\x17\x6a\xb3\x1a\x08\x36\x21\xfb\xab\xf9\xa6\x3e\x09\xda\x55\x17\xe7\xfc\x53\x64\x7f\xc4\x89\x1a\x59\xf2\xc2\x7c\x93\x02\xa3\xad\xed\xea\x84\x45\x52\xd4\xe8\x30\xf5\xea\xfe\x03\x44\xc1\x92\x5e\x29\xe8\x32\x73\x71\x70\xbe\xb8\x77\x10\xf9\x2d\x47\xd7\x0c\x8f\x97\xf7\x19\xcf\x8b\x98\xff\x9a\xb7\x94\x49\xa4\xf9\x6b\xde\x3a\x1b\xa5\x67\xad\xcb\x28\x2f\x78\x46\xdf\x23\x7b\xb8\x8c\xae\xb7\xe0\x6a\xe1\xca\xf2\x57\x4f\xbf\x7a\xf6\xf8\xc9\x57\x4f\x21\x34\x71\xf4\x36\x6a\xb2\xf6\xf5\xd3\x4d\xfc\x27\x36\xde\xca\xdf\x1f\x2f\x37\x96\x25\x8b\x8f\x72\x31\x6f\x8f\x9f\x28\xbe\xf6\x63\x9c\x48\x89\x11\x1f\x23\x08\xb6\xa6\x3e\xe7\x6f\xf9\x95\x28\xfe\x4c\x69\xa3\xd1\xa5\x40\xe0\xa7\x70\xbb\x1b\x49\x52\x5c\xc4\xd1\xe8\x65\x0c\x41\xf2\x9f\xae\xd8\xaf\x77\x04\xe8\x95\x67\xd0\xb1\xf6\xf5\xb3\xb6\x52\x69\xc1\xb7\x0e\xce\xd9\x83\x46\x00\x5f\x83\xe3\xe3\xeb\x95\x57\x01\x71\x59\xda\x49\x93\xf5\x83\x8d\xad\x2d\xd6\x65\xad\xa3\xbf\x1f\x1f\xb7\x1b\x90\x48\xe5\x69\xef\xa4\xb5\x8a\x96\x9e\xa4\x81\x05\x20\xde\x0a\xa9\x79\xc0\xc7\x91\x4e\x88\xd8\x3a\x6a\x62\x5e\x94\x95\xe3\xe3\xc9\xe6\x66\xbb\x07\x3f\x4f\x96\x4f\x5a\x17\x00\x66\x7f\x73\x83\x3d\xfe\xea\x9b\x36\xcb\x75\x2d\x04\xb5\xfb\x53\x6f\x7f\x73\x7b\xf7\xe7\xd3\xde\xfe\x3e\x5e\x57\xde\x95\xd7\xb4\x3a\x0c\x63\xc5\xe0\x4d\xba\xab\x58\x68\x58\x32\x4c\x04\xb8\xdd\x8e\xb3\xb4\xcf\x73\x9d\xb4\x5e\x4c\xf9\x8f\x71\x32\xc9\x0f\x71\xae\x61\x09\x1a\x30\xf3\xca\x20\x33\x4a\x81\xea\xfc\x18\x15\xc3\x26\x3c\xe8\x28\x74\x59\x9c\x5c\x6c\x66\xe9\xe5\x86\x8c\x18\x60\xa2\xac\x9d\x93\xb7\xc8\xec\x1f\x3d\x3a\x4e\xd8\x23\x86\x19\xf2\x08\xa9\x95\x81\x95\xb5\x47\xae\x10\x27\xe3\x3e\x06\x4e\xc6\x5b\x9e\x42\x27\xe7\x51\x7f\xc8\xe4\x19\x2d\xc0\x11\xd3\x1a\xf5\x21\xb6\x26\x7a\xf8\x4b\x57\x0c\xf6\x33\x88\xb8\xff\x11\xbd\x8b\x0e\xc0\xb6\x84\x01\xe7\x5e\x6f\x1c\x34\x56\x74\x26\xbe\xd1\x4d\x1d\x80\x60\x34\x39\x25\x1b\x5c\xc5\xa3\x91\xe8\xce\x3b\x9e\x15\x2c\x62\xe3\x28\x06\x73\x40\x3e\xc9\xb2\xf4\x22\x2a\x38\x1b\x46\xa3\x77\x3c\x67\x35\xe8\x4c\x7a\x8e\x81\xe9\x00\x10\x82\x17\xf2\x06\x44\xa2\xce\xd5\x7a\x71\xd3\xcf\x3c\x14\xcd\xa7\xc0\x3a\x92\x0b\xc1\x3a\xf4\x08\xb1\x33\x97\x2a\x92\xdd\xeb\xc3\xcd\xc6\xf2\x93\xa6\x78\xd9\xc2\x99\x9e\xf4\xf3\x95\x01\x97\x27\xfc\x1e\x7f\x49\xc5\x70\xd3\x49\x81\x61\x82\x8e\xcc\xf1\x61\x3f\x9d\x24\x88\xcd\x2e\x63\x66\xce\xe5\x61\xaa\x1d\xa9\x5a\x2a\x5e\xb7\xa5\x16\x29\xfa\x26\x6b\x93\x78\x11\xb2\xda\xd2\x12\x75\x6c\xc3\xe2\x2f\xba\x2a\x3c\xc3\xe2\xa2\x84\xf0\xbc\xab\x22\x54\x2c\x2e\xb2\xca\x16\x81\x7f\x6f\x01\x7b\x66\xc3\xf8\x62\x68\x16\xa4\x0e\x76\x86\x02\x6e\xbe\xc4\x39\x5c\x02\xb9\x2e\xcc\x8c\x37\xa9\x0b\x03\xbf\x2e\xb2\x68\xbe\x3e\xcb\xac\xc2\x58\x63\x91\xb5\xaf\x37\x21\x74\x44\xb7\xab\xa3\x48\x80\x06\xbd\x9d\x5e\x99\xae\x10\x97\x71\x5c\x84\xe6\x78\x92\x0f\x6b\x35\x39\x78\x01\xe5\xf1\xe6\x66\x48\x42\x53\x18\xf0\xf0\x41\x07\xa6\x08\xdd\x30\x4a\xc4\xa8\xa3\x27\x22\x61\x93\xe4\x52\x5e\x69\xd1\x7d\x58\xc5\xcc\x5f\xd1\x78\xcc\x61\x5a\xe2\x1c\x71\x6c\x92\xc4\x05\xc6\xf8\x8a\x54\x7c\x46\x02\x10\xe7\x4c\x95\x13\xf3\x28\x76\x93\x3d\xd1\x90\xa8\x8a\x3c\x8a\xad\x51\x31\x62\x8b\x43\x01\x43\xc3\xe9\x6d\x34\x4a\xa7\x5c\xce\xf0\x2a\xa1\x50\x3e\x87\x77\xf2\xa0\xa4\x89\x7f\xae\x48\x0b\x6e\x5d\x81\x08\x10\x41\xbd\x25\xc9\x9e\xda\x77\x67\x51\x6e\x11\x16\xba\xc3\xa0\xc2\x61\xfa\x12\x8a\xd0\x3d\x06\x1f\x8c\xe1\x90\xb5\x9b\xcd\x95\xaf\x05\x3f\x17\xb4\x14\x29\x7c\xd4\x6c\xfe\x43\x70\xb2\xf5\x66\xf3\x3f\x65\xb1\x95\x27\xcd\xe6\x63\xa7\x58\xbb\xd9\xfc\x86\x0c\x02\x00\xb3\x25\xb6\xb2\xc2\x96\xd8\xd3\xaf\xd9\x23\xd9\x16\x7b\xce\x56\x9e\x84\xa5\xc1\x01\x0f\x8b\x06\xd1\x58\xde\xc8\x24\x46\x1e\x36\xe6\x19\xcb\xa5\x33\xc0\xe3\xe6\x57\x62\xb5\x24\xe3\x58\x81\x31\x1a\xfd\x29\x4d\x47\x79\x33\xe6\xc5\x39\x84\x3e\x1d\x16\x97\xa3\x56\x76\xde\x17\x05\x3f\x97\x00\x1a\x8f\x9b\x5f\x91\x79\x81\x16\xed\x09\xe1\xa3\x22\xaa\x0b\x3a\x0d\x41\x50\xf2\x3a\x5e\xca\x3a\x8c\x2f\x39\xa1\x44\x6f\x35\xbd\x81\xf2\x02\x82\x2a\xc5\xd6\x90\xa5\x20\x24\xd6\x02\xb6\x2d\x64\x21\x7c\x7e\xf1\x42\x5a\x88\xf0\x71\xa9\xeb\x94\xd6\x0d\x23\x7a\xa0\x4c\xa6\xea\x3a\xec\xec\x11\x8a\x0c\x00\x92\xbd\x15\xb0\xce\x20\x5e\xb1\xc4\x39\xdd\x35\xab\x01\x0b\x44\x58\xbe\x4d\x0b\x85\xdf\x8a\x2d\x6c\x37\xb6\xc4\x96\x43\xf6\x88\x29\x30\x12\xde\x12\x48\x29\x61\x79\x41\x09\xb6\x9a\x6c\x70\xca\x8f\x4b\xd9\x51\x6b\xbc\x79\xd1\x14\xf8\x9c\x5e\x46\x71\x02\x57\xe0\xd9\x28\x3a\xe3\xa3\x10\xb2\x1c\x00\xa0\x3d\x29\x7c\x11\x30\x80\x70\x0d\xa0\x06\x12\x92\xc2\xf5\x69\x16\x54\x48\x28\x07\x11\x1f\x40\x9b\x92\x21\xb1\x92\x12\xdb\x01\xf9\xa2\x92\xeb\xc8\x1d\x20\x87\x07\xc4\x04\x05\x92\x38\x91\x6c\x52\xf4\x5c\x71\x7f\x32\x66\xc2\xf1\x81\xb6\xa8\x90\x77\x86\xf9\xc9\x96\x49\x23\x51\x7f\x88\x11\x08\x91\x67\x34\x8d\x2e\x3a\x9e\x14\xdb\x46\x1c\x16\x84\x45\x33\x39\x59\x79\x0b\xa5\xc0\xf8\x1f\x5c\xca\x0f\x8a\x8c\x2b\x1f\x38\x25\x26\x6a\xb6\xa9\xf0\xc5\x30\xd2\x33\x94\x2c\x89\x9c\x69\xd4\xe1\x3a\xeb\x4f\xb2\x8c\x27\xc5\x4f\xc4\x51\xb0\xd5\x62\xdf\x47\xc9\x60\x84\x6d\xba\x14\x09\x07\xae\xe3\xb1\xb5\x31\x1e\x9b\xd5\x7d\x2b\x0e\x1b\x6d\x40\x8d\xf3\x28\x3e\x21\xbc\xd7\x2a\xf1\x1c\xc4\xdc\xd0\x4f\x72\xcb\xd2\x9c\x55\xb9\x14\xc9\x5d\x4f\x81\x18\x83\x9e\x6a\x09\x51\x75\xb6\x05\xfb\xf5\x0c\xcf\x55\xfc\xa3\x7d\x07\x49\xac\xc4\x94\x0c\x36\xf6\x36\x04\xb3\x40\x29\x54\x01\x75\x80\x50\xb9\x10\x82\x9b\xc3\xf9\xc2\x19\xe7\x89\x82\x62\x66\x7a\x33\x4e\xe2\x7c\x48\x66\x5a\xee\x10\xbc\xba\x4f\x24\xfd\x49\x32\xe2\x79\x8e\x36\x00\xb8\xcf\xdf\x54\x3a\x3d\xe9\x88\x9e\x37\x3a\x6b\x1a\x86\xe5\xbb\xde\x6a\xb1\x1f\xc5\x7e\x85\xcd\x23\x5a\x1c\xa5\xe9\xb8\x43\xc4\x2b\x67\xc0\xcf\x29\xc2\x52\xdf\xac\xf5\xd1\x08\x54\x89\xd2\xd4\xb1\xe7\x2c\x29\x0f\x5d\x5d\xb4\x6b\x8a\xa1\x0f\xe4\xc5\xd6\xeb\x82\x8d\xa2\x4c\xf0\xc1\x34\xe1\x1d\x23\xc5\x5d\x82\x86\x2a\xf4\x34\xaa\xde\xce\x85\x77\xb3\x30\xcf\x83\x7b\x2f\xba\x0c\x3c\xd5\x1c\x84\xbc\xb4\x63\x5d\xb2\xae\xbb\x69\x6c\x91\x41\x79\xbe\xc2\xf6\x15\xaa\x72\xce\xd9\x1b\xd8\x96\x6f\x18\x4f\xd2\xc9\xc5\x10\xa8\x0b\x7a\x7f\x4a\x03\x8e\x98\xb5\x2c\xc8\xd9\xf3\xa4\x1e\xbf\x90\x61\x7a\x8a\x94\x3d\xbf\xac\xb7\x5f\xe0\xad\xe2\x8b\x49\x94\x0d\x58\x74\x11\xc5\x49\x5e\x30\x1d\xef\xc2\x4c\x95\xbd\x5c\x7b\xa3\x49\xbe\x0b\x71\x64\x9c\x65\x5c\x92\x9c\x4b\x5a\xb2\x58\x83\x25\xec\x85\x64\x18\x35\xa9\x12\x37\x90\x8a\x84\xac\xe5\x87\x1a\x96\x2e\x7b\xec\x47\xc9\x85\xbc\x4d\x61\x6b\x7d\xa5\xb0\x89\x9a\x63\x62\xdb\x82\x1b\x79\xdb\x50\x96\x22\x81\x00\xda\x99\xf8\x0f\x5d\xfd\xe7\xb8\xf8\x4b\x4b\x8a\x4f\xe3\x6c\x58\x8b\x3f\xe7\x68\x89\x2f\x6e\xa9\x99\x6e\x57\x8c\xda\x16\x98\xf7\xf9\x38\xe3\x39\x4f\x0a\x39\x3d\x10\xee\xe2\x82\x27\x3c\x03\xda\x3f\x10\x0b\x1c\xe3\x19\x18\x12\x31\x29\x35\x12\xf9\x56\xa0\xc0\x6f\x90\x6a\x7d\x54\x44\x44\xb4\x35\x79\x51\xa4\xe2\xbc\xca\x5a\x8f\x58\x92\x0a\x25\x72\x80\x11\xea\x1e\xb5\x7c\x82\x87\x01\x2b\x88\xdd\x5b\xa1\x08\x01\x27\x59\x43\x8b\x47\x87\xd5\xde\x8a\x0d\x03\xef\x96\x50\x86\x59\xc3\x9f\x0e\x7b\xcb\x1a\xf0\x81\xca\xd8\x38\x15\xbf\xb1\xe7\xac\x08\x65\x22\x28\xb7\xa1\xdf\x50\x50\x61\x5d\xf6\x9b\x50\xef\x4b\xdf\x8d\x2c\x43\x8c\x00\x56\xa9\x19\xcc\x82\x4a\xd0\x35\xb1\x17\x54\x8b\x5f\x12\xd8\x61\x68\x77\xfb\x37\x2d\x7d\xa9\xd2\x54\xfe\x0a\xed\x3b\xb3\x7e\x85\x63\x56\x57\x7e\xb3\xdb\x94\x1c\x1b\xe4\x5a\x25\xcb\x7a\x37\x89\xfb\x5a\x20\x17\xe5\x06\x04\xa6\x2d\x17\xe0\xbf\xa5\x25\xbb\x7a\x25\x29\x93\x7b\x62\x55\x3d\x25\x25\x89\x53\x8e\x56\x1d\xf9\x56\xc7\x2c\xac\x16\xd1\x50\x8a\x1b\xd8\x96\x01\x10\x24\x73\x2d\x1f\x15\xe9\x76\x7a\xc5\xb3\x8d\x28\xe7\xb5\x90\x44\x1a\xb2\x6c\x56\x75\x99\x5b\x78\xa5\x17\xe8\x54\x35\x4d\xe2\x7d\x17\xd7\x11\xec\xaa\x4f\x90\xc1\x06\xbd\x34\x05\x3e\xb1\xae\x2c\x62\x68\x89\xec\x38\x2e\xb5\x65\x79\x6b\x16\x3c\x2f\x6a\x52\x18\x5e\x43\x7f\xab\x80\x2d\xc9\x1a\xea\x43\x47\x8a\xcb\xa5\x49\x55\x80\x71\x56\x9b\x81\x73\x81\xf1\x1e\x37\xbc\x3e\xc4\x91\xd8\xb4\x25\xb5\x53\x06\xce\x3c\x99\x51\x29\x9c\xac\xac\x7f\xee\x01\x85\xe7\xb6\xa2\x7b\x83\x4f\x87\xe3\x0b\xd9\x12\x0b\xdc\xa3\x13\x75\x67\x4f\x4d\xab\xbe\xfb\xe2\x3b\xa3\x88\x8b\xb0\xfa\x46\xad\x0e\x06\x07\xc1\xc8\x65\x08\xb8\x3a\xc4\x7d\x63\xfa\xd2\x02\x1b\xf0\x31\x4f\x06\x3c\xe9\xc7\x18\x44\x60\x3c\x39\x1b\xc5\x7d\x26\x93\xc5\x03\xc6\x9d\x61\xca\x1d\x1a\xf8\x84\x9d\xdd\x30\xd0\x7d\x31\xb6\xf2\x1b\xe0\x08\x45\x83\x27\xef\xde\x54\x86\x90\xab\xb8\x1c\x31\x77\x2c\xe1\x0b\x5e\xbc\x9c\xc4\xa3\x62\x2b\x99\x8a\x07\x2a\x44\x92\xae\xf7\xfa\xa0\x77\xba\x83\xf9\xaf\x5e\xef\x6f\x57\xd6\xc5\x23\xf3\xc6\x24\x1b\x3d\x20\xc0\x9d\x7a\x21\xc4\xcc\x59\x95\x1a\xd1\x68\x44\xd3\xea\x1f\x9a\x8b\x13\xd5\x57\xa0\x79\xd1\x28\x52\x75\x8b\xb0\x20\x57\x2c\xf0\x98\x43\xa1\xec\x86\x15\x6a\x65\xea\x49\xb4\xde\x37\x24\x04\x0b\x71\x78\x7b\x70\x24\xd1\x28\xd9\x92\x29\xe1\xa6\x6d\x7d\x95\x36\x8e\xa6\xe1\xdd\xbd\xaa\x5e\x69\x9a\x89\xf7\x01\x7e\x0c\x73\x26\xf1\x7d\xc8\x3d\x55\x95\x4b\x7f\x9a\x33\x82\xeb\x2a\x71\x9f\xdc\xbb\xf6\x39\xd7\x1c\x79\x72\x1d\x4f\x04\x2b\x3f\x6e\x99\x02\xcf\x45\x7b\x3f\x20\xe9\xfe\x50\x97\x9b\xbe\x38\xe7\x98\x58\xc0\x90\x8f\x5a\x00\xef\x74\x33\xdf\xf3\x68\x80\x69\x7f\x68\x19\xf9\xd6\x6c\x85\xbb\xdc\x92\x7a\xbd\xbf\x7d\x7a\xd0\x5b\xdf\xdf\xf8\xfe\x74\x6f\x7d\x7f\xfd\xc7\x03\xd6\x65\x81\xe3\x34\x1d\x54\x95\xa5\x41\x73\xcb\x80\x96\x58\xf0\x21\x23\xe8\x62\x5f\xe6\x8b\xa3\x5b\xea\x4c\x58\x86\xa7\xfa\x76\x4f\x88\x4e\x90\x5e\x70\x4b\x1b\x4d\xe0\x64\xef\xf8\x78\x09\x72\xfc\xe0\x88\x7f\x9b\xf0\xa4\x6f\xae\x93\xd5\xbe\x22\x15\x78\xd6\xe7\x49\x71\x20\xcb\x58\x4c\xff\xec\xa6\xd0\x17\xc7\x54\xa6\x7a\x05\xeb\x08\x3e\x62\x6e\x11\x8c\xe0\xed\xf9\xd0\xd5\x09\x32\x6a\xb5\xb5\xce\x97\x47\xc7\xc7\xc7\xc7\x83\xa8\x71\x7e\xf2\xfb\xca\x6d\xf8\xbb\x90\x97\xb0\xf0\x12\x0b\x6e\x43\xc8\x70\x15\x07\xc4\x58\x49\xfa\xf7\xca\x73\xfe\x24\x5b\x94\x1d\x24\xb7\x73\x94\x8d\x1b\xea\xbc\xde\xdf\xda\x48\x2f\xc7\x69\xc2\x93\xc2\xd4\x91\x72\x83\xf7\x62\x8d\x33\x54\x25\xbc\x99\x3e\x0d\x78\xce\x33\x69\xbc\xab\x14\x92\xf4\x59\x7e\x5c\x68\x71\x56\xac\x4e\x9d\x05\x8c\x88\xac\x38\x01\x5d\xf6\xd5\xea\xdc\x83\x40\xc8\x53\x87\x20\x0d\x3d\x74\x01\x19\xf5\x2f\x90\x47\xf6\xba\x5f\x36\x12\x60\xbd\x46\x23\xac\xdb\xd3\x3f\x4f\xa8\x06\x33\x4b\xe7\xc8\x69\x5a\x47\x0b\x41\x2d\xfc\xaf\x93\xf7\x5f\xae\xb4\x01\x25\x15\xf3\x57\x99\xb1\xa0\x77\xc1\x42\xd0\x61\xc1\x97\x2b\xcb\x01\xb8\x0c\x1f\x7f\x16\x1c\x7f\x06\x2f\x9e\xe2\x8b\xa0\x86\xdf\x9f\xc9\xc7\x10\x1f\xbf\x91\x8f\xff\x05\x8f\x4f\x7b\xf2\xf1\xcb\x95\xb6\x78\xb1\x14\xd0\xfe\xc8\x16\xed\x84\xd8\x34\xcf\x87\x1e\x0f\x94\x3b\xc2\xbb\xe2\x16\x32\xce\x58\x76\x4b\xb8\xb7\x96\x2c\x2e\x8c\x4e\x23\xe6\x45\x87\xe1\xc9\x1c\x6c\x8f\xb2\x9c\x1f\xd8\x77\x88\xe8\xd5\x72\x74\xc7\xf8\x6d\xc2\xb3\x1b\x12\xad\x93\x3e\x4b\x5f\xae\xa2\xc8\xe2\xb3\x09\xa2\x16\x7c\x56\xea\xd2\x62\x40\x5d\x39\x63\xe7\x56\xb6\x55\xb7\x8e\xd1\x8e\x6d\xe7\x4d\x95\x48\xd9\xb4\xd0\x2c\x9d\x98\xea\x6f\x42\xd5\xd5\xe5\xb4\xcf\xaa\x65\xa8\xd1\xdf\xcb\x60\x98\x8c\xb6\x4c\x80\xa8\x51\x74\x03\xaa\x01\x4b\x6c\x06\x2d\xcd\xb2\x71\xbc\xe5\x37\x1d\xba\x5b\x6b\x00\xb0\x99\x0f\xe3\xf3\xa2\x16\x86\x75\xdb\x0c\x01\x2e\xeb\xe5\xd2\xa8\xa3\x75\x83\x90\xa4\xbd\xbd\x2d\xd9\x83\x6e\x4b\xf8\x3f\x19\x0f\xa2\xa2\x7a\x31\xe9\xa2\x15\xc3\x38\x6f\x4a\x2d\xc2\xf8\xd1\xe0\xa2\x94\x50\xa2\x46\x4b\x2b\x64\xb0\xb0\xe8\x5d\x34\x8a\x45\xdb\xeb\x25\x8f\x3e\xd3\xfc\x38\xca\x73\x0e\x78\x88\x79\x68\x09\x3a\xe1\x27\xf6\x9c\x7c\x2b\x05\x56\xd9\x49\x0b\x65\xf2\xd4\x0e\x70\x81\xdd\x0b\x87\x83\x13\xd9\xa8\x52\xfc\x36\x9e\xec\x3a\xf8\xfb\x18\x2a\xd7\xd9\xdb\x38\xb9\x4b\x90\xf7\x6a\x5e\xa9\x02\xba\xcb\x06\x3a\x54\xfc\xaa\xf9\x79\xbd\xec\x44\xa8\x26\x5d\x21\x8e\xe8\x53\x07\xfe\x7f\xac\x6e\xce\xdd\xd6\x89\xc4\x71\xb7\x78\xed\x96\x30\xe0\xc4\x6d\x7f\x8b\xb4\x14\x4f\x89\xc4\x83\xb9\x70\x88\x6e\x73\x32\x54\x3a\x75\xbb\x23\x77\x0e\xd4\x3e\x72\x5c\xda\xc0\xb7\x1a\xde\x61\x78\x09\x75\x7d\x50\x97\x62\x5d\xd9\x72\xb7\xcb\x02\xb8\xc4\xc4\xd6\x10\x58\xf3\x2d\xbf\x61\x1d\xf2\x15\xaf\xa4\x9b\xef\x58\xbf\xc3\x8e\x74\xf1\x3a\xfd\x72\x62\x2b\xee\xa2\x49\x2b\x84\xf4\x1b\x07\x7b\xaa\x73\x8b\xc3\x15\xcb\x31\xef\x37\xaf\x86\x51\x71\x75\x01\x47\xcb\x9f\x83\xb8\x7b\x1e\xf5\x41\x45\xc5\xdb\x7f\xb8\x86\x5e\xd4\xb4\x15\x40\xbd\x66\xee\xbd\xbd\xd6\x23\x38\x6a\x33\xae\xb8\x46\x5b\x93\x28\x58\x0d\xb7\x5e\xc6\x48\xea\xbb\xea\x4f\x2c\xfe\x02\x42\x3c\x18\x07\xd3\xb6\xdf\x9d\x56\x66\xd9\xd5\xb9\xfe\xd4\x8a\xc7\x40\xfd\x89\xc9\xcd\xb6\x8a\x94\x7d\x61\xd1\x43\x16\x56\x69\x4b\x7f\x82\xc7\x1d\xf8\x6e\x25\xa0\xa9\x4b\xc7\xfe\x8a\x1d\x19\x15\xb3\x76\x64\x5d\xd9\xd8\xa0\xa7\x1d\xf5\x87\x7c\x8d\xd4\xf3\xf5\xfe\xb6\x73\x0d\x89\xb5\x1e\xc9\xa0\xd7\x8f\x5a\x3a\xda\x4b\x99\xd4\x76\x3c\xef\x8e\xdd\xa0\xa2\x30\xef\x0b\x76\xda\x28\x92\xd2\x5a\x29\xa3\x50\x8e\x9e\x8c\xcc\x63\xff\x4a\x94\x05\x8c\xb1\x69\x56\xb0\x8a\xa0\x5d\x6c\xb6\xcb\xad\xdd\xc2\x54\xcf\x5b\xc2\xbe\x67\xfb\xd9\x3a\xc7\x04\x16\x36\xd8\x43\xad\x69\x73\x9b\xa1\x18\x8e\x85\x5d\x23\x0f\xeb\xda\x90\xdc\xee\xd1\x28\xaf\xea\x5f\x4d\xa5\x21\xd2\x50\xb0\xc3\x16\x20\xd9\x6b\x1d\x49\x55\x57\xd6\x29\x85\xee\x53\x7b\x61\x6a\x25\xa8\x43\x2b\x78\x18\x64\xef\x7a\xcc\xfb\x05\x1f\x68\x35\x02\xcf\x7d\xe5\xce\x5e\x09\xca\xf3\x24\x78\x3f\x8a\x30\x28\xb7\xc0\xe8\x25\x1d\x5d\x62\x41\xa0\x23\x73\xe2\xc8\xc8\x17\x2a\x8e\xd0\xcc\x66\xe8\xe2\x04\x76\x70\x41\xae\xe3\x04\x28\x4d\xa8\xf2\xb5\xef\x5e\x25\x80\x45\xea\xce\x8c\xaf\x13\x40\xb7\x65\xbb\xa2\x2c\x5e\xab\xb1\x1b\x75\x5d\xa9\xca\x12\x8b\x16\x56\xd4\x26\x00\x82\x07\xe1\x6e\x31\xa5\x0b\x5b\x83\x77\x2a\x4b\x53\x5b\x46\x93\x5f\xd3\x1f\x30\x09\xd3\x72\xc8\xb0\x1b\xea\x67\x89\xe4\xf6\x2c\x4b\x60\x0e\x39\xa6\x01\x4c\xaa\x29\xb5\x15\xc2\xe4\x38\x21\x46\xca\x5a\x15\xbc\xba\xc9\xd7\xe4\x14\xa1\x29\x8e\xc6\x63\x9e\x54\x65\x4a\xf2\x32\xb1\x41\x7a\xe9\xb2\xaf\x06\xba\xd7\x01\xf3\x81\xbf\x08\x75\xc4\x17\xb5\x24\xba\x54\x41\x5c\x89\x4a\xe0\x15\x08\x6b\x2e\xc7\xd1\x77\x16\x2a\x85\x14\x2a\x15\xd1\x48\x55\x28\x7f\xf8\x30\x08\xbc\x86\x2c\xfc\xf5\x21\x2e\xd6\xd7\x44\x5f\xca\x2e\xb7\xf5\xd9\xf3\x8a\xe1\x0d\x1e\x3a\xaf\x08\x05\x94\x47\x19\x2f\xa1\x63\x45\x40\xbe\xbc\xcf\x64\x2e\xdf\x73\x32\x6d\x06\x6e\x4d\xad\x7d\xaf\x0e\x52\x80\xca\xe9\x9d\xa2\xd5\x39\xaa\x9b\xad\x68\x38\xb1\x9a\xe5\x47\x79\x31\x00\xc4\x3c\xb1\x15\x21\xbc\x84\xaa\x28\x94\xb0\x3e\xaf\xc9\x5b\x01\xcb\x86\xf8\x60\x6a\x4d\x54\xf3\x6c\x5b\xc1\xfd\xd7\xf7\x82\x3f\x78\xd3\x5c\x70\x88\x4a\x61\xdf\x69\xbe\xe0\xc5\x07\x59\x57\xb3\x50\xd3\x56\xf6\x41\xeb\x27\xbd\x0c\xfd\xeb\xe7\xbb\x02\x32\x6b\x21\xb5\xa1\xc2\x2a\x42\xef\xba\xd8\x26\x1e\x99\x41\x7e\xee\x05\x5b\x1f\x8d\x3e\xc0\x9a\x45\xa3\x91\x5c\xb6\xf5\xd1\xc8\x5e\x39\x41\x8d\xff\x45\x17\xaf\x9c\x79\xe7\x4f\x5a\x52\x63\x03\xf1\xad\xeb\x6c\xdb\xdd\x1c\x4b\x3b\x8c\xf2\x87\xae\xab\xcc\x76\x34\x8c\x72\xb2\xa2\xc3\x28\xff\x57\x5d\xce\x0f\x46\x4b\x97\x96\xfc\x9b\x50\x47\x34\x70\xd7\xc6\x24\xeb\x98\x67\x69\xf2\x87\x93\xc9\x1c\xc9\x64\x6e\x91\xc9\x5c\x92\xc9\xfb\x8b\x14\x7f\x2c\x17\x3c\x4f\x27\x89\x2f\xb5\x49\xf5\x8a\xbe\x83\x58\x88\x46\x08\x99\x61\x0e\xa5\x36\xd0\x3b\xef\x5a\x65\x78\xb1\x77\xe4\xaa\x8b\x24\x37\x36\x66\x38\x39\x11\x60\x88\x7e\xee\xdb\x68\x58\xfc\x97\x95\xee\x6c\x30\x3d\x41\x04\xcf\x48\xdf\xb4\x9d\xe7\x5d\x34\xf2\xea\x10\x16\x66\x82\xc1\xc8\xe9\x4e\x95\xb6\x20\xa6\xf9\x03\x88\x77\x79\x9a\x3d\x1c\xb1\x65\x58\x2a\xf1\x4b\x51\x3b\xcd\x0a\x3b\x6b\xda\x07\xc5\xce\x56\x0b\x4f\xdb\x3e\x17\xed\x28\xcf\x95\xbc\x80\x2b\xbf\x71\x82\x31\xee\x78\x72\x11\x27\x9c\xe4\x21\x02\x3d\xc7\x20\x8c\xd4\x7b\xdc\x46\xa5\x2d\x2d\xe6\xf9\x16\xca\x60\x50\x8c\x26\x19\xaf\x30\x26\x4b\x14\x36\xc5\xd1\x3d\x8a\x3c\x3f\xc7\x07\x8d\xd3\xe6\x93\x17\xb1\xe1\xf3\x91\x29\x64\x70\x1b\x1a\xa2\xbd\xc4\xa6\xac\x37\xcf\x69\xc7\xad\x4f\x4e\xba\x6f\x4a\x4d\x69\x31\x24\xa9\x2f\x8c\x4d\xd2\x63\xbd\x20\x7b\xc6\x9e\xb4\xb6\x34\x6e\xd9\xaa\xb8\xeb\xc0\xe8\x6e\x05\xab\x33\x72\x60\xdd\x2e\x19\x88\xb3\x35\xac\x26\x1e\x2c\x0d\xcb\x90\x2f\x74\x47\xc8\x57\x04\xb1\x55\x5c\x98\x7e\x34\x1a\x9d\x45\xfd\xb7\x18\x68\x40\x45\x15\xd0\xe6\xcb\x07\xf2\xcc\x33\x41\x07\x36\x55\x9b\xf2\xaa\xbc\x6a\xb2\xee\xb3\x66\x4e\x0b\x0e\x50\x67\x8f\x67\x1d\x4c\x4d\x39\x8d\xaa\x64\xc3\x5e\x02\x4c\xcf\xa0\xac\x51\xd4\x08\x4d\xac\x33\x62\xb9\xa6\x3b\xff\x76\xde\xb5\x7a\xcb\x6f\x2c\x71\x49\x3c\x93\x55\x12\x8f\x35\xf7\xd0\xd9\x13\x2f\x4e\x9b\xdb\x64\xa8\x25\x1d\x4c\x6c\xbe\x5e\xa0\x61\x9e\xf6\x03\xdf\x90\x9e\xe0\x8b\xfb\xf4\x45\x5a\xfd\xe7\xef\x8d\x5c\x07\xda\x1d\x6d\x00\xd6\xfd\x91\x6f\xee\xd3\x21\x59\xd5\x04\xf3\xbf\xad\xb3\xdf\x4b\x41\xae\x58\xf5\x41\xc3\xac\xfc\xc6\x3a\x49\x4b\xb5\x31\xc8\x44\x86\xad\x2a\xa3\x0f\x92\x66\xf7\xa2\xa9\x42\x04\x7b\x03\x96\x79\x59\x60\x89\xfd\x61\x4a\x8e\xf3\xb8\x8f\xe1\x60\xce\xf8\x30\x7a\x17\xa7\xd9\x5c\x83\xd1\x21\x8a\xe9\x69\x96\x7a\x57\xb3\x9c\x7c\xef\x4c\x47\x7c\xea\x52\x79\xf3\xdb\x5b\x7f\xbe\x8d\x3f\x63\xdb\x53\x65\xc9\x3d\xee\x05\x26\xb2\xc4\x82\x6e\xc0\x96\x98\xfb\x91\xda\xb8\x6f\x9d\x94\x8a\x78\x4e\x8c\xe7\xeb\x53\xb1\xce\x76\x5f\x74\xe7\x7e\xf6\xa1\xd1\x71\xf2\x45\xed\x77\x19\xb8\x59\x25\x6d\x82\xfc\x58\x83\x0e\x5b\x70\x1c\x38\x55\xc2\x25\xa7\x91\xce\x14\x03\x28\x3d\x86\xfb\x39\x8b\xc6\xec\x0d\x78\x80\xbd\x01\x8e\xae\xc2\xd5\x99\xa0\x6b\x24\x57\x56\xe9\xd0\xce\xc2\xd5\x39\x12\xf7\x3d\x79\xfa\xd5\x71\x02\x42\xa6\x33\x8c\xc5\x45\x65\x3a\x56\x2e\x6a\x56\x44\x1b\xf3\x59\xbb\xa7\x79\x8e\x55\xca\xb3\x56\x0a\x7e\xa7\xe7\x11\xd7\x4b\x1f\x61\x41\xa3\x94\xc3\x8a\x67\xf4\x73\x47\xe6\x6a\x1f\x0c\x2a\x8e\x15\x65\x90\x6a\xef\x08\x0a\xda\x61\xee\xd1\xf0\x7e\x96\x0e\x6e\xea\x6c\x88\x9d\xb6\xfd\x22\x3c\xec\xd3\x16\x89\x9c\x43\x43\xcc\x3e\x45\x05\xa6\xca\xf3\x2b\xe4\x7b\x83\x1b\x79\x77\xb0\x29\xfe\x2e\x9d\xc5\xa8\x5c\x2b\xe2\x23\x9a\xe3\xcb\xc8\x68\x83\x64\x6a\x20\x0a\xae\x7a\x5c\x03\xca\x2d\x97\xa6\x46\x3f\xa9\xec\x0e\xea\x9b\x2d\x8a\x49\x85\x43\x96\x6d\x0e\xa3\xbc\x16\x80\x53\x6a\x52\x34\xc4\x7a\x07\xee\xa0\x48\x1f\x84\x42\xec\x94\xae\xb3\x20\x1a\x0b\x41\x10\xc8\x60\xeb\xba\x71\x75\x75\xd5\x38\x4f\x33\x50\x18\xa4\x47\xfe\x2a\x04\xcc\xe0\x45\xf7\xf5\xe1\x66\xe3\x59\xe0\xf6\xe7\xd6\xe9\x1e\xae\x01\xfa\x33\xc8\xb3\x94\x52\x87\xc4\x04\x76\x2a\x3d\x4e\x6b\xed\xba\x8a\x6a\x0b\x33\x6d\x3b\xa5\x90\x01\x4d\x07\xa1\xe6\xd3\xe9\xae\xdd\xff\x5b\x8f\x54\xcb\x00\x49\x91\x14\xda\x47\x8a\x9a\xbe\xe1\x96\x73\xd3\xcf\x3a\xf2\x10\x50\x3d\xef\x25\x82\xbb\xd2\x9f\xba\x34\xfa\x01\xd7\xe8\x54\x70\x93\x8f\xc5\x8f\x5f\x06\x7c\xb8\xbf\x23\xff\x7d\x03\xd9\xde\xdf\x91\xff\x6e\xe9\x22\xac\x70\xa0\xf1\x94\x94\x11\xd2\x11\x5b\xba\xf3\x8f\x75\x85\x07\x5c\x20\xb8\xbf\xb7\xfc\x5c\xae\xf2\x91\x8a\x3d\x3b\x75\x40\x58\xca\x54\x12\x2a\xff\x66\x96\x5e\x56\x77\x09\x82\xe9\x9d\x67\xe9\xa5\x71\x47\x87\x58\x20\x77\xca\xe5\x06\x35\x74\x00\x3e\x15\x0d\x68\x6a\x7d\x15\x27\xa9\x51\xa4\x8d\x28\xef\xc7\xf1\x87\xbb\x50\xe1\xec\x66\xef\xe5\x07\xb5\x2b\xae\xf8\x59\x73\x92\x8d\x1a\x28\xa3\x36\x50\x48\xfd\x50\x97\x28\x10\x08\xe6\xd7\x41\xbc\x47\x7c\x6d\xbe\xde\xdf\xf6\xf7\xb5\x7c\x18\x2c\x1d\xaf\x9d\xb7\x65\xef\x6d\xfa\x55\x79\x70\xfb\x41\x29\x6a\xf6\x01\x5c\xd0\x45\x03\x73\x79\x8b\x07\xaf\xf7\xb7\x4d\x58\xeb\xaa\x28\x4a\xe3\xf4\x4a\xbd\x1e\xa7\x57\x26\xa2\xfe\xce\x4f\xeb\xdb\x5b\xaf\x4e\xd7\x5f\x1f\x7e\xbf\xbb\xbf\x75\xf8\x0b\xeb\xb2\x60\x2b\x01\xa3\x2f\x8b\x26\xc5\x30\xcd\xe2\xe2\x46\xb9\xd4\xab\xd2\x07\x1b\xdf\xf7\x7e\xec\xd1\xa2\x79\x7f\xc8\x2f\xb9\x5b\xee\xfb\xdd\x83\x43\x5a\x6a\x98\xe6\x85\x5b\x66\x6f\x77\xdf\x2a\x03\x44\x51\xf7\x6f\x7d\x7b\xef\xfb\x75\x70\x2e\x5e\x6f\xfc\x67\xd4\xf8\xc7\x49\x6b\x95\x7c\xd8\x79\xfd\x63\x6f\x7f\x6b\x03\xbe\x1f\x1f\x0f\x96\x1a\x4d\xa7\xd4\xab\xad\xef\xb6\x0e\xd1\x4d\x7e\xa0\xde\x7d\xdf\xfb\xdb\xe9\xc1\xe1\x3a\xb4\xda\xfa\x7b\xad\x7d\xfd\xbe\xfd\xb7\x50\x7d\xdc\xdd\xc0\xd7\x47\xed\xc6\xd3\x93\xa5\x2f\x34\x1c\x48\xe3\xdd\xfa\xbb\x68\xe4\x0b\x02\x08\xcb\x1e\x1f\x0f\xd6\x1b\x9b\x51\xe3\x5c\xd6\x98\x11\x3f\x58\xc8\x2a\x59\x3a\xc2\x44\x53\x08\x6a\x73\x77\xff\xe5\xd6\xab\x57\xbd\x1d\x98\xb2\xd3\x8d\xdd\x57\xbd\xd3\xbd\xdd\xad\x9d\x43\x39\xb4\x49\xbb\xdd\x6e\xe3\xcf\x37\xf8\xb3\x8e\x3f\xaf\xd8\xe7\x5f\xb6\x3a\x6b\xdf\x82\xc7\xfd\xc9\xc9\x07\x6e\xfd\xb4\xf7\xb7\x8d\xed\xd7\xaf\xb6\x76\xbe\x3b\xdd\xeb\xed\x6f\xf4\xe6\xea\xcf\x83\xbb\xb3\xdd\x5b\x87\x26\xd7\x77\x5e\x9d\x1e\xee\xaf\x6f\x6d\x8b\x87\x8d\xf6\xe9\xc6\xee\xce\xe1\xfe\xee\xf6\xe9\xee\xfe\xe9\xc1\xde\xfa\x46\x4f\x4d\x3e\x74\x06\x03\xa3\x2d\x6f\xb2\x93\xa5\xf7\x9e\x77\x5f\x80\x47\xfa\xdd\xfb\x72\xb8\xfe\x12\xfa\xb1\xd3\xfb\xf9\x74\x7b\x6b\xa7\x47\xc6\xef\x0c\xfc\x44\x5f\xc3\xe8\xed\x6e\xda\x7e\xde\xdf\xa7\xb9\x1d\xdc\x66\x92\x8d\xea\xcc\xbd\x3c\xab\x9c\xbe\x05\xe5\x56\x31\x6f\x4c\x84\x3d\x74\x63\x1b\x4f\x6c\xd7\x19\x16\x1c\x05\xb6\x2b\x1b\x2d\x42\xef\xd6\xb3\x86\x50\x2b\x16\xba\x2c\x38\x09\xf4\x91\x14\xdd\xa7\x96\xc6\xcc\xba\xd8\xf3\xad\xbd\x77\x4f\x24\x18\xe9\x98\x53\x67\x8d\x65\xed\xfb\x85\xa9\xc4\xf0\x96\xc2\x14\x98\x90\x20\x02\xe7\x80\x9c\x43\xb6\x5a\x2c\x1d\x47\xbf\x4d\x38\x90\x85\x63\x13\x45\x11\xa0\xc6\xf9\xc1\x98\xf7\xe3\x68\x24\x26\x2b\xb4\xc6\x78\x07\x74\xc5\xdb\xbb\x38\xd3\x73\x8d\x5a\x9f\x12\x99\x55\x00\xdd\x4b\xf2\x7a\x13\x1a\x86\xe9\x58\x06\xc6\xe4\xad\x6c\x15\xa6\xee\x94\x13\x23\x93\x99\x43\x5e\xbd\xe8\xe1\x8d\x62\x53\x59\x87\x71\xdc\x68\x6f\x20\x66\xee\xd1\x92\x07\xbc\x70\xac\xcd\xfe\x79\xb6\xbd\xb6\x54\xb8\x1b\x29\x4a\xd8\x03\x9a\x3a\xbb\x77\x9e\x4b\x85\x41\x5f\x95\x1b\x51\x65\x74\xf6\xb6\xbb\x22\xcf\x6d\xe9\x32\x85\x68\x68\xea\xe5\xf4\x71\x84\x6a\x8a\x44\xe7\xf2\xa5\x72\x28\xb0\x2d\x0f\x33\x31\x14\x4c\xae\x43\x62\x8a\x8f\x75\x96\x45\x83\xf8\x5a\x7d\xac\xb3\x78\xfc\xee\x2b\xbd\x3b\xa1\xba\xda\x6d\x8b\x8b\x08\xee\xc8\x7a\x8b\x77\xa5\x30\x95\x9c\x5c\x0f\xfc\x3e\x4e\xc7\x35\x72\x79\x9c\xf4\x04\xe7\xd1\x8e\xcc\xab\x5b\xd3\xf1\x69\xbf\x0a\x4d\x3e\x5d\x8c\x59\xc6\xd4\x08\x8c\xc5\xad\x0a\x5d\x09\xa8\x32\xa2\x8a\x8f\xaa\x0f\xf6\xa9\xa6\xea\x85\x1a\x50\xa9\x03\x0c\xa7\x8b\x75\xd9\x72\xdb\xa9\x43\x8f\x0a\xe4\x54\x39\x74\xad\x4d\x7d\x64\x15\x1c\xcd\xba\x11\x17\x45\xb5\x90\xad\xb1\xe5\x27\xac\xc3\x9e\x69\x7d\x96\x74\x59\x52\x2d\x59\xbf\xcb\x9e\x89\xd2\xac\x63\xbc\xdf\x6e\x4b\x63\xb1\x56\x47\xcd\x22\x39\xa0\x70\x9d\x20\x81\x5a\x99\x16\x96\xdb\x6c\x0d\xc4\x85\x0e\xb3\x5a\x15\x82\x45\x47\x0c\x20\x24\x7d\xf7\x4e\x1a\x69\x13\x11\x3b\xc1\xd2\x12\xfb\x9c\x9e\xcb\x55\x46\xbd\x1e\x1f\x08\x22\xdd\x6b\xc9\x75\xf3\x12\x76\x79\xd9\x25\xc4\xae\x85\xa8\x0d\xcb\x6e\x25\x8a\x49\x40\x2f\xba\x42\xfa\xac\xad\x7c\xfd\xa4\xce\xbe\x66\x0d\x5a\xc9\xcc\x80\xf6\x3c\xb2\xd8\x80\x82\xc0\x56\xbe\xfe\xba\x5c\x14\x86\x28\xf6\xa0\xe9\x2b\xd9\x49\x55\x63\x57\x25\xab\x48\x33\x00\x5c\x72\x47\xcf\x1e\x99\x41\x3c\x66\x0d\x19\x5a\xd7\x74\x43\x2d\x24\x52\x84\x5b\x65\x57\xad\x14\x37\x7c\x41\xd0\x34\xcb\x9d\x4a\xc7\xa2\xc1\x20\xe3\x39\xec\xeb\x36\x9c\x6d\xba\xff\x19\xfb\xfa\x38\xe6\xf4\xf8\xf7\x58\xc7\xea\xbc\x1c\x4b\x10\x7a\x2e\x51\x47\x88\x4b\x31\x3c\xe5\x11\xd9\xc8\x26\x8b\x07\x9c\x27\x48\xfe\xf6\x44\x13\x86\x22\xe6\x57\xd1\x38\xc7\x9f\x55\x13\xbc\x4b\x6c\x6d\x6b\x4c\xee\x81\x8f\x25\xb6\xc8\x6e\xc8\xc9\x25\x6e\xfc\xe2\x7b\x0d\xc9\x43\x67\x8a\xd8\x23\xe5\x9c\x8e\xa6\x49\x12\xaf\xd4\xf0\x96\xba\x6c\x45\xbd\xd2\x13\xa4\xfd\x18\xc9\xe4\x98\xaf\x66\x9d\x55\xe0\x52\xe8\x8a\xd5\x07\x3a\xd9\x5d\xf6\xcc\x69\xbc\xba\xff\xf2\x9b\x6a\x76\xc1\xe1\x89\x86\xac\x61\xf7\x49\xb6\x50\x4f\xef\xa7\xf5\x1f\xbf\x26\x45\x9c\xb8\x8e\x48\xca\x37\xa4\xe4\x44\x60\x27\x72\x78\xce\xbe\x12\xd4\xfa\xfb\xde\xdf\x90\x86\xc9\x49\xf0\x84\xa4\xc6\xdf\x47\x82\x32\x2f\x19\x2a\x86\xe5\xeb\x6c\xf9\x49\x38\x65\x54\xd8\x98\xeb\x57\xea\xcc\x5f\xd3\x9d\x3f\xd5\xf5\x2e\x6b\x57\xcd\x1c\x6b\xa8\x11\x5a\x06\x78\xb2\x6e\x2f\xd8\x93\x52\x65\x82\xf1\x56\xec\x1d\x3f\x22\x28\x02\x02\xdb\x82\xee\x2f\x97\x2a\x22\xc0\x17\xac\xed\x58\xb6\x4b\xe3\x84\xf4\x3f\xa4\xca\x73\xc1\xec\xcb\xb3\xc6\x94\x4f\x90\xd3\x7d\xcb\x02\x8c\x39\x36\x84\x4e\xec\x2c\x60\xa9\x92\x1c\x9d\xaf\xac\xd5\xdd\x32\xab\xd2\x8b\xdc\x0e\x4b\x47\x0d\x64\x66\x34\x96\xdb\xb3\x25\xa0\x95\xc7\xe4\xd6\xf5\xac\xb1\x29\x4b\xe0\x99\xbf\x1f\x09\xc6\xbc\xe4\x6b\xc0\x86\x6d\x71\x1a\xab\x9c\x6f\xca\xa9\x71\x1d\xa9\xf2\x91\xc1\xa6\x13\x88\xff\x54\x7e\xfb\x88\xad\x7c\x2d\xb6\x85\x6e\x94\x00\x24\x0b\x6d\x35\xe4\xe2\x4d\xb7\xcb\x56\x20\x8d\x9a\xfd\x4e\x60\x86\x8f\x26\xdc\x96\xb9\x32\xd6\x59\xe8\x1a\xd1\xd1\x78\x4a\x10\xc7\x18\xc2\x8b\xab\xa8\x57\x79\x62\x00\xcd\xd4\xc6\xb0\x80\x97\xc0\x39\xdf\xcb\xf3\xb5\xb4\x74\xa2\xe8\x09\xe1\xf9\x7e\x82\xa9\xae\x35\x0a\x1e\x64\x91\x3f\xd6\xd0\x64\xb1\x44\xf8\x75\xde\x25\x8d\xf4\xe4\xdb\x42\x97\x41\x20\x69\x04\x69\xef\x56\xf1\xce\xbf\xc4\x7a\x22\xca\xdf\x1a\x0d\x8a\x16\x7a\x0c\x4b\xb2\x05\xa1\x20\x94\x6a\x93\x52\x8d\x06\x94\x13\x30\x24\x8b\x65\x4e\x0a\x02\x87\xa2\x2d\xb8\x9c\x48\x05\x50\x42\xd8\xab\xee\x3d\xfe\xed\x34\xb9\xe0\x79\xf1\x9f\x3c\x4b\xbd\x91\x22\xe2\xf1\xbb\x27\x44\x16\x81\xf8\x7a\x38\x89\x96\x24\x71\x19\x5d\x6b\xf5\xc5\x24\x62\xea\x4f\xb2\xec\xa0\x40\xe9\xdc\x2a\x2e\x3e\x6c\xdb\xbc\xa7\xec\x1e\xe0\xf8\x64\x3e\xf3\x48\x6e\xb8\x95\x9f\x28\x91\x6d\x01\x29\x85\xcd\x67\x4d\x53\x2f\x4c\x37\xed\xf0\x90\x66\x50\xba\xc7\xab\xd6\x67\xdd\x57\x03\xad\xbc\xd7\xbc\xa3\x55\x1f\xb6\x5d\x4e\xeb\x53\x2b\x08\x04\x8d\xe3\x14\x6a\x6c\xb1\xf6\xa5\xa5\x52\x6f\x6e\xed\x1d\x33\x7d\xe8\x53\x86\x3d\x65\xc8\x54\xf8\x55\x10\xfc\xa1\x14\x4a\x56\x30\xa1\xd5\x7b\xec\x5f\x52\xe1\x56\x58\x5f\x67\xf1\x45\x92\x66\xbc\xad\x8c\x46\x82\x6e\x1e\xdb\x11\xc7\xd0\x3e\xd0\x65\x01\xd2\xb6\x80\x88\x97\xae\x8f\x7e\x95\x56\xf0\x55\xb5\x8d\xa6\x39\x49\x30\x90\x00\x34\xf3\xa5\x20\xdf\x86\xb5\x49\xd3\x04\x46\x17\x84\x87\x16\x2d\xe0\xf7\x1d\x51\x56\x07\x1c\xcd\x13\x67\xfb\xba\x83\x52\x71\x90\x4a\x83\x22\xc6\x2a\x2d\xf3\x55\x6c\x62\x9c\xec\x19\x73\xe0\xd9\x52\x72\x53\xe1\x0a\x08\x4a\x28\xe0\xa8\xfd\xd5\xc5\xfd\xe5\xc8\x94\x56\x95\x50\xad\x9e\xe3\xb9\xed\xd0\x70\x01\xc9\xce\x8b\xc6\x2c\x13\x19\xf6\x70\x4d\x70\x1e\xd6\x61\x41\xa7\x13\x50\xe6\xa8\x5b\xb0\x5c\x9f\xcb\x71\xed\x0d\x3c\x32\x0a\xed\x77\x55\xa3\x62\x29\xd5\x73\x9f\xb3\xa7\x21\xa9\x1b\x90\xc6\x6d\xaf\x69\xb9\xd4\xc1\x51\xc0\x96\x74\x05\x16\x9c\x04\xb6\x1b\x91\x68\xdc\xda\x22\x95\xf6\x3d\x95\x92\x10\xa8\x73\x16\x5d\x08\x5d\xd1\x53\x26\x32\x49\xfb\x2a\x41\x49\x7f\x85\x80\x05\x1d\xb6\x5c\x67\xc1\xf1\x67\xf2\x8f\xe7\xf2\xf7\x85\xfc\x7d\x23\x7e\xa5\x6b\x10\x2a\xa5\xc5\x70\x7a\x9b\x55\x3d\x53\x4d\x7e\x2e\x21\xaf\xc9\xdf\xdf\xe5\xef\xad\xd3\xd2\x44\x90\x8a\xe4\x3c\x9d\xde\x9a\xaf\x3f\xaa\xa5\x96\x84\xdc\x91\xbf\xab\xf2\xb7\x2b\x7f\xbf\x95\xbf\x47\x6a\x12\x8e\x8f\x8f\xe5\x9f\x27\xf2\xf7\xef\xf2\xf7\x3d\xe9\x9c\x15\xa0\xa8\x57\x8e\x54\x2e\x44\x99\x3a\xcb\x39\xa5\x66\xb2\x50\x5f\x26\x7f\x80\x12\x52\x22\x96\x68\x00\x25\x5e\xb0\xf6\xf5\x4a\x1b\x13\x53\x0c\x30\x74\xf6\x53\xc8\x53\xb1\x30\x8c\xf2\x5a\x2e\x86\x26\xea\x86\x6c\x0d\x95\xe8\x8e\x2f\xe8\x0c\x94\xb0\x89\x2e\xda\xce\x0f\xe0\x54\x4e\xfb\x66\x9c\x17\xe3\x0e\x5b\x59\x06\xbf\x8b\xf3\x78\xc4\x3b\xc0\x53\xe0\x11\xd2\xf0\xb2\x67\x6d\xfd\x90\x77\xd8\x57\x5f\x61\x5a\xcf\xab\x5c\x7f\xb9\xca\xf1\x3d\x6d\x4b\x5b\xea\xdd\x23\x0e\x3b\x58\x0e\x8c\xc7\xea\x56\x1d\xb3\x66\xc3\x83\xdd\xfd\x38\xe9\x8f\x26\x03\x9e\x6f\x64\x7c\xc0\x93\x22\x8e\x46\xf9\x74\xe0\x02\x10\x49\xd7\xcc\x82\x40\x25\xa6\x1e\x47\x79\x7e\x95\x66\x18\x86\x32\xb0\x5a\xe9\x47\x49\x92\x16\xdf\x47\xef\xf8\x6b\x59\x75\x4f\x16\xde\x4b\xb3\xd2\x81\x8d\xdd\xe0\x82\x36\x4b\xcb\x76\x10\xd8\x4b\xbe\xfe\x32\xca\xe1\x40\x5a\xbe\xc7\xe1\xa1\x9b\x5a\x3c\xe2\x76\x0f\xe2\xfc\xe7\x38\x19\xa4\x57\xf9\xab\x2c\x7e\xc7\xb7\xd1\x13\xa5\x9c\x7a\xa5\xce\x92\x34\xbb\xc4\x38\xc2\x34\xb4\x08\x5c\x0f\xa7\x28\x65\xe5\x59\x41\x25\x61\x71\x11\x8f\x4a\x51\x89\x23\x69\x49\xc0\xd4\x2a\xdd\x88\x16\x17\x59\xcd\xdc\xa3\xb7\x0b\x2d\x87\x4a\xe6\x87\xf0\x5f\x0b\xa6\x2b\x20\x18\xcb\x4a\x5d\xb1\x63\x9c\x88\x5e\xb9\x90\x20\xf2\x9f\xe3\x62\x38\xd7\x28\xc9\xc8\x8a\x61\x9c\x4d\x19\x98\xb4\x1a\xfb\x66\x4f\x8d\x10\xed\xbe\xed\x3a\x5b\x09\x43\x18\x9e\x54\x0d\xca\x13\xa4\x22\x02\xd4\x6a\xd0\x6a\x69\xfc\x2b\xa1\xbc\xa3\xde\x82\x09\x90\x85\xc4\x0b\xa0\x1e\xce\xbb\x35\xf7\xc5\xe7\x01\xcc\xb1\x33\x33\xc3\x34\x2b\x78\xf2\x7a\x7f\x3b\xdf\x8b\x9c\x78\x3d\x06\xd5\x14\xf5\x95\xe9\xe5\xc5\x9f\xab\xf4\xfd\x01\xc6\xa7\x12\x7f\x96\x4f\x07\xe4\x67\x31\x74\x82\x86\x0b\x0a\x0d\x21\xbb\xa6\x2a\xb4\xd0\x65\xcb\x90\x3e\xdd\x3b\xa3\xa2\xd8\x51\x5b\xe5\x4b\x0b\xc9\xc9\x00\xf8\x12\x90\x83\x0b\x8b\x26\x40\xf6\xa1\x57\x69\xe1\x84\x72\x03\x4e\xe1\x86\x9a\x83\x97\x38\x5f\xcd\x00\x93\xc4\xc3\x2b\x3b\x58\x30\x16\xf8\x72\xa5\xb4\x89\x5e\xa5\x93\xb3\x59\x6d\xe9\x46\xfc\xb0\x57\x2b\xfb\x63\x75\x48\x77\xc1\xf3\xb6\x29\x7a\xe6\x2b\x6b\xf5\xb8\xd5\x62\xe0\xc6\x91\x77\xb0\xf7\xe8\x4a\xa1\x1d\x12\x34\xbb\xd7\x2e\x16\xfa\xcd\xce\xee\x69\xf9\xe5\xc1\x5e\x6f\x63\x6b\x7d\xfb\x74\xbf\xb7\x8d\x3e\x60\xbb\xfb\x96\x2f\x87\x2e\xb8\xb7\x7e\xf8\x7d\xe5\x47\x55\xdb\xf7\xee\xf4\x60\x7b\xfd\xe0\x7b\x5f\x9b\x1a\x14\x16\xe9\x1d\x4c\x2f\xb4\xf5\xdd\xce\xee\x7e\xcf\x57\xd6\xdb\x27\xe9\x3b\x62\x3d\xef\xac\xdb\xa3\x97\xbe\x23\xfa\x79\x73\x6b\xbb\xe7\x3e\x97\xfb\x0f\x6f\x5d\xf0\x30\x3f\xa5\x55\x10\x6f\xe9\xf3\xc6\xfa\xce\xce\xee\xe1\xe9\xcb\xde\xe9\xfa\xe9\xcb\xf5\x03\x70\xb9\x3b\x75\x0b\xfd\x8f\xd7\xbd\x7d\x6b\x28\x9b\xfb\xeb\xdf\xfd\x88\xce\x13\xbf\x3f\xe0\x64\x00\xdd\x9c\x7c\x5e\x04\x75\xbc\x68\xb4\xfb\x8e\x67\x59\x3c\xe0\x75\x1a\x06\x9e\x5e\x77\xb3\x4a\x09\x54\xa5\xd8\x37\xf5\x18\xe0\x6c\x72\x7e\x8e\xb9\xea\x82\x55\xc3\x7f\x78\x02\xce\x6c\x46\xb0\x57\xaf\x5f\x66\x51\xff\x2d\xf7\x7f\x53\x4c\xf6\x30\x7d\x0b\x26\x55\xbb\x04\xf5\x7e\x40\xa9\x09\x9b\xde\x20\xef\xcf\xa3\x78\x34\xc9\x38\x39\x19\x58\xb0\x46\xa6\x49\x14\x65\xc0\x46\x5b\xb2\x84\x05\xe7\xbd\x16\x17\x9c\xf7\x52\xcd\x23\x7a\x3c\x94\x4e\x5d\xed\x5e\x11\x6a\xaa\x72\x8a\x77\x10\xbc\xad\x5c\x54\x89\xce\xe5\x2f\x25\x79\xc2\xd6\x9f\xd4\x31\x3e\x1e\x7c\xa8\x88\x83\xf3\x7a\xce\xd4\x75\x34\x15\x19\x1f\xde\x0f\xce\x75\x7e\x51\xd5\x44\x8d\x59\xfe\x11\xc7\xe6\xac\x44\xe1\xd3\xf3\x6e\xd9\x33\xc2\xe4\x98\xc1\x23\x22\xe2\xfd\x20\xab\xa9\x59\xcc\xaf\x62\x88\x7f\x09\x2b\x4d\x93\x44\x44\x39\xb7\xf0\xb8\x63\xeb\x70\x00\xd8\x96\x82\x40\x5e\x76\xdd\xe4\x11\xc1\x97\xba\xd0\x13\x0f\x73\x50\xff\xd4\x5e\xc2\x26\xa9\x31\x98\x78\xaf\xf8\xd1\xd1\x06\xa0\xe9\xb9\x05\xbe\xa4\x4c\x6b\xc0\x8e\x8b\x44\xa9\xae\x32\xdb\x7a\x26\xa6\x62\x4a\x6a\xd4\x89\x8e\x4c\x8d\xa0\x0c\xb8\x1e\x5d\x16\x2c\x05\xd6\x63\xc3\x7e\x6c\x96\x5c\xf3\xe7\x9c\x48\xc7\x12\x5c\x36\x2b\xab\xce\xda\x34\xcb\x88\x72\xea\x5f\xcd\xf6\x14\x12\xc2\x8c\x4f\xd5\xc0\x6e\x85\x61\x39\x7e\x94\x22\x6d\x5a\x34\x12\x6d\x78\x34\x10\x04\xaf\xd4\x0a\xb1\xf3\xb5\xe5\xd9\x03\xd5\x27\xfb\x83\x5e\xa7\xa8\x89\xe5\xc1\xef\x3b\x82\x71\xc8\x17\x76\xb3\x74\x74\x31\x0d\xd3\xd4\xed\x10\x6b\x7e\x84\xd0\x6e\xcd\xcd\x91\x69\x06\x9c\x53\xd4\xf0\xc2\x0a\x12\xa7\xfe\x79\x3a\x7c\xeb\x41\x04\x42\x48\x4d\x9f\x7c\xb3\x53\xea\xbc\xda\x28\x82\x5f\xdb\xcd\x90\x53\xa1\xd2\xe0\x20\xa9\x88\xfc\x25\x6d\x10\x55\xb3\xaa\x9d\xa9\xb2\xd4\x7c\x1d\x98\x09\xbb\x24\x33\x55\xc1\x2d\x13\x42\xb6\xa4\xbc\x87\x5a\xd5\x73\x55\x12\xf3\x9c\x45\xf3\x1f\x1c\x96\x4d\x65\xac\x9a\x0d\x95\xe2\x0b\x18\xae\x87\x5e\x28\x41\xe9\x36\x8d\xea\x5d\xa5\xf8\x54\x85\x45\xf3\xd2\xd4\x2a\x5c\x9b\x4e\x6b\x5d\x41\x47\xfd\xfb\xc0\x34\x58\x37\xee\x90\xe1\x05\x40\x55\xa1\x54\x03\xae\x96\xa6\x7a\x71\x11\xe9\xec\x02\xaa\x91\x25\x27\xb9\x52\xeb\x32\x93\xd8\x14\x50\x52\x23\xb5\x27\xcf\x26\x33\x66\xdb\x94\x68\x91\x14\x6c\xa0\x08\x2c\xb7\x1d\xb4\xc0\x14\x54\xd2\x0e\x94\x84\x87\x52\x11\x22\xf9\x38\x6b\x36\x2f\xda\x69\xf2\x20\xa5\x6b\xeb\x63\xe5\xe5\x7e\x53\xcf\x21\x10\x92\x44\xaf\xa1\x12\xd1\xd1\xfa\x0f\x01\x42\xf0\xc2\x66\xb2\xd3\x08\x87\x8f\xf7\x4a\x73\x82\xb4\xfa\xcd\xbd\xcd\xab\x89\x89\xad\x5b\xcd\x3e\xb7\xf6\xec\x77\x05\xdc\x33\xee\x8a\x1d\xe1\x45\xf6\x12\x01\xaa\x1e\x7f\xc5\xe8\xfc\xa4\xab\xb4\xa0\x53\x86\x50\xa2\x28\xbe\xee\x3b\xfd\x56\xc3\x26\xdd\x9d\x63\x5f\xd0\x11\xf5\x76\x37\x3d\x1b\x8b\x28\x1a\x00\x42\x3d\x7b\x36\x97\xd6\x3c\xe4\x06\xc3\xe7\x52\x41\xa9\x8a\x40\x21\x79\x94\xe0\x40\x42\x96\x8d\x50\xd2\xcc\x53\xe0\x83\xec\x63\x9f\x04\x87\x36\x32\xf3\x8c\x26\x32\xb0\xd5\x59\x6c\xb2\x62\xe9\x6d\x9b\xc3\x8c\xb6\xd6\x7c\x74\xec\x2f\x31\xdd\x15\x4c\x0c\xec\x0a\x33\x26\xc5\x4b\xdc\xff\x12\x93\x72\x2f\x5e\x32\x85\x47\xf8\x08\xc8\x47\x3f\x59\x8e\x4d\xd6\x9d\x86\xb9\x08\xa3\x9f\xae\xdb\x5b\xd3\x21\xea\x65\x29\xdc\x25\x09\x36\x45\xa8\xda\xff\x77\x60\x6c\x7e\xea\x73\x07\x96\xf2\xb1\xac\xff\x07\x58\xbb\x4a\xe5\xa3\x53\x96\x8a\xee\xb0\x04\x7a\xee\x17\xf4\x32\xa3\x1c\xee\x38\xf2\x62\xca\xea\x05\xb9\x40\x9e\x6e\xfb\x44\x94\x39\x07\x62\x77\xce\x27\x6b\x2c\x18\x59\x4b\x3d\x22\x0e\xde\x45\xfa\x98\x7f\xae\x67\xca\x3d\xdf\x7a\x8d\x1c\x60\x4a\x0d\x89\x1e\xf3\xe5\x57\x6d\x48\x9b\x53\xd6\xfa\xb5\xd9\xb5\x24\x11\xbb\x96\x52\xcb\x32\x27\x0d\x20\x56\x05\x9d\x59\x94\x64\x4f\x74\x81\x54\xe4\x66\xc5\x7f\x96\xc5\x56\x1b\x29\x36\xc8\x15\xa6\x93\xd5\xb2\x45\x82\xd4\xc0\x83\xc5\xc5\x45\xb6\x50\x32\x0d\x7b\x42\x3e\xf8\xcc\xc7\x1e\x75\xd4\xbb\x5e\xac\x1c\xd5\xe1\x9d\x49\x59\x69\x4d\x5a\xc5\x85\xac\x7a\xa5\x87\x82\x2f\x9a\x85\x67\x3c\x16\xd5\x58\xea\x96\xdb\x76\xc0\x00\x81\xb2\x68\xd2\xcc\x4a\x73\x58\x60\x08\xe5\xb4\x50\xdc\x88\xb1\x16\xc1\x76\xe8\xf7\x9a\xfd\xf8\x79\xe0\x98\xbe\x66\xcb\x7e\xa6\x74\xe5\x46\x00\xfb\x8d\x31\xcb\x95\x2f\x2c\xfa\x77\x29\xf1\xf3\x2e\xe1\xbd\x3a\xf3\x35\xc9\x93\xa7\xcd\x91\xa1\x07\xe4\x26\x1a\x99\x3c\xdb\xc8\x39\x8b\x6c\x09\x18\x9d\xd2\x9b\x9d\xf5\x92\x45\xa0\x64\xeb\x9c\xc3\x4e\x46\xad\x64\xa7\x4e\x6f\xa7\x99\x32\x1c\xcb\xab\xde\x83\xf2\xe8\xc6\xb3\x36\x53\x57\xa4\xd4\xb2\x3c\xa4\x51\xae\xe1\xdf\xa7\x79\x81\x27\x56\x3e\x42\x04\xd1\x2f\xb1\x42\x68\xc2\xa2\xaa\x53\x9e\xf9\x57\x6b\x6f\x77\xff\x70\xba\x89\x54\x74\x5f\xcd\xbe\xc7\xe8\xfa\x2f\xbd\x39\x3c\xc6\xce\x3b\x2d\x89\x17\xc5\x28\x88\x7b\x99\xbe\x3d\x76\xe0\x7f\xce\xda\xeb\x13\xdc\x59\x46\x72\x4f\x8f\xab\xf7\x89\xf7\x76\x86\xbe\x7a\x6d\x1f\x76\x96\x43\xaf\x96\x76\xda\x49\xa9\x92\xed\x16\xc9\x4a\x47\x28\x73\xd8\x5c\x76\x4b\xa7\x5e\xce\xc5\x8d\xe9\x87\x34\xff\x42\xf8\xef\x54\xb0\x16\x6e\xea\xde\x90\x23\x5a\x70\xae\x6f\xe2\x3f\x3c\xd5\xce\x0a\x7a\x4f\x05\x2b\x94\xef\xa9\x48\x07\x1a\x51\xfa\x05\x6b\x5f\x6f\x6e\x6e\x6e\x96\x76\x56\x89\xcc\x58\x72\xbc\x67\x9f\xe2\x97\x6e\x77\xca\xd1\x4b\xc8\xd6\x60\x47\xb1\x0e\x2b\xe9\x00\xd5\xc8\x7f\x7b\x77\x54\x9f\xb1\x5f\xe6\x36\x7e\x3b\x93\xe0\xc5\x4c\xc1\x94\xaa\x2c\x6a\xda\x1f\x8e\x76\x7f\xba\xda\x68\x33\x3b\xd7\x48\xa4\x31\xb7\xe2\x08\xc8\xcb\x3e\xa7\x5b\xf0\xe6\x50\xe0\xee\xa0\xa1\xcf\x65\xd0\x98\xcb\xd4\xf5\x47\xf6\xcb\xc1\xb0\x6a\xfb\xd3\x9c\x16\xa8\x7f\xc2\x1c\xce\x32\x0b\xcd\x38\x3c\xf0\x1f\x87\xa9\x43\xa8\x4a\x9f\x46\x72\x66\x27\xbb\xae\x6e\xb2\xea\xa4\xfa\xbe\x38\x76\x73\xcc\xce\x9d\xe6\x87\xb9\xee\x85\x40\x85\xa6\x6b\x42\x95\x46\x86\x0a\x55\xaa\x7c\x44\x77\x7f\x43\x7c\x35\xe5\xf0\xda\x9a\x66\x50\x88\x3b\xc8\xc6\x53\xce\x88\x66\x52\x11\x14\x97\x3f\x2c\x32\xa0\x88\xe7\x01\xa5\x57\x9c\xb8\x61\x3a\x67\xae\xb4\x48\x58\x16\x41\x66\xe0\x98\xe7\x74\xcc\x59\xba\xaa\xa3\x2f\x3d\xb3\x15\xab\x34\x43\x60\xd0\x2e\xb4\xd5\x22\x84\x67\x92\x16\x4a\x42\xac\x7f\xda\x94\xcb\xc7\x94\xb3\xf2\x2a\x72\x66\x0b\xd6\xd5\xf4\xac\x44\x58\xe6\xe3\xc1\x33\xb9\xb0\x9f\x04\xdd\x49\xae\x9e\x5f\xb2\x36\x3e\x19\xfa\xce\xd1\x28\xed\x47\x23\x08\xd7\x15\x7e\x90\xe1\x56\xc9\x2f\x73\x4c\x44\xb5\x40\x72\x37\x2d\xdc\x34\x30\xd5\x7a\x5d\x41\x42\x4a\xc8\x32\x87\x81\x71\xba\xf2\x5d\xc6\xe2\xe9\x47\x5b\xf7\x3f\x1d\x9a\xd2\x92\xf7\xbc\xe8\x21\xe7\x29\x74\x5a\xca\xf2\xd4\xbc\xb3\x59\x31\x77\x95\xeb\xea\xac\xe8\xdc\xaa\xcb\x83\x94\x13\xcf\xbc\xd6\xa6\xd0\xb1\x59\xba\xbd\xf6\x62\xaf\x26\x5c\xb3\xf9\xba\x07\x2b\x17\xee\x7c\x1c\xcb\xe6\x70\xe9\xb9\xad\x20\x9c\xc4\xf3\xbf\x72\x1c\xff\xd4\x4e\x7a\xfa\x32\xd5\x57\x8f\x5c\xaf\xb8\x33\xa7\xb1\x09\xeb\x74\x4a\x4a\x68\xa4\x7d\x8a\xd2\x86\x28\xe5\x9d\x60\x95\xb5\x5a\xe6\x22\x10\xbb\xc2\x6e\xb0\x81\xe8\x07\x1b\x41\x47\xa6\xca\x78\x8e\xc0\xe0\xe1\x18\x0f\x72\xdf\xb3\xd0\xdf\xdd\x6c\x9e\xdd\xe0\xce\x95\x74\x16\x76\xa7\x5c\xde\xf5\x51\xaf\x8f\xda\x27\xe5\x18\x4d\xa5\x11\xca\xbc\xdf\x53\xb1\xa1\xd2\xac\x53\xa1\x6c\xfd\xb1\xea\xd1\xfd\x75\x95\xe9\x92\xb8\x61\x91\xce\xa1\x06\xb8\xd6\xfb\xee\x52\x86\xb3\x29\x6e\xa5\x1b\x5f\x95\xa8\xfe\x81\xf9\xd9\x3f\x8b\x7b\x51\x24\xac\x98\xd1\x99\xa1\xfa\xa6\x4c\x2b\x8c\xd8\xf5\x11\xfc\x97\x61\xdd\x74\xe2\x8f\x3f\x0b\x8e\x3f\xf3\x31\x48\xb3\xae\x4b\x70\xf7\xe9\x69\x30\xc3\x1c\xfa\x79\x50\xae\xf4\xd8\x53\xc9\x2a\xf3\xa1\x27\x5e\x4d\x49\xc5\xf1\x31\xcc\x85\x35\xb9\x15\x7d\xa8\xba\x08\x1d\x7a\x44\x53\x46\x7d\xd0\xec\x03\xf0\x5b\x72\x57\xec\xcd\xeb\xfd\xed\x3b\xa6\x44\x9f\x64\xa3\x06\xc4\xf4\xd7\x51\x90\xab\xd3\x9e\x8b\x65\xc3\xbc\x06\xa0\xed\xea\xbc\x06\xef\x4c\xb6\x71\x5f\xee\x73\x2b\x75\x85\x8e\x3f\x2c\x6f\x0a\x09\x40\xde\x1c\xe7\xd3\xb2\x02\xe9\xea\x93\x6c\x84\xd7\xf1\x59\x57\x85\xcb\xd7\x62\x8e\x75\x95\xa9\x22\x13\xb9\x4c\x42\x0e\x9d\x52\x61\xf1\x55\xb7\xa0\x60\xdd\x52\x81\xb4\xa2\x5f\x9d\x1d\x1c\x3e\xab\xd8\xe2\xe9\xb9\x33\xfe\xd0\x40\xb6\x33\xa2\xa8\xf8\xcd\x50\x5f\x61\x80\x4d\xa0\x1d\x75\x4e\xac\x07\x05\xf6\xfb\xad\xc9\x18\x20\x60\x18\x34\xb2\x14\x3b\x37\x23\xb5\xfa\x60\x90\x4c\x05\x03\x2c\x37\x97\xe3\x8c\xe8\x49\xaf\xe3\x8d\x70\x33\xa6\x50\xcf\xd2\x7c\xed\xe1\x25\x2f\x2b\xe8\x36\xe6\xc0\x72\x5e\x7a\x32\xfc\xd4\xfc\x10\x3c\x53\x5b\x8a\xc7\x5d\xa3\x15\x10\x4c\x09\x44\xb3\x9c\x27\x1e\x87\x8f\x74\x65\x7a\x2d\xf7\xea\x9d\x89\x35\x64\x20\x18\x84\xb5\x7a\x83\x61\x9a\x54\xc4\x42\x3d\x9d\x0b\x24\xde\xbf\x86\x26\x70\xb8\x39\xcc\xf8\x39\x20\xb8\x8c\x9b\xf2\x7a\x7f\x1b\x73\x93\x8b\xaf\x6a\x55\xa1\x64\x9a\xc5\x17\x71\x82\x73\xb3\x0b\x7f\x57\x14\x84\x24\x43\xfd\x74\x84\x45\xf7\xe4\x53\x45\x61\xe2\x00\x75\xc1\x0b\x75\x35\xbe\x0a\xb2\x71\x82\x12\x90\xe5\x53\x45\x61\x29\xfa\x5e\xf0\xe2\xfb\x34\x2f\xa6\x14\x32\xcd\x7f\x2f\x9f\xaa\x9a\xc7\x13\x17\xd1\x74\x9a\x55\x41\x14\x2c\xdb\x40\xdc\x93\x4f\x15\x85\x71\xed\xb0\x28\xe2\xca\xd4\x82\x1a\xa1\x75\x71\x99\xd7\xa9\x62\x70\x51\x2e\x61\x7f\x1f\xe5\x25\xc8\x6e\x4e\x73\x27\x8f\x79\x75\xee\x72\x2b\xce\x4e\x05\xae\x4a\xe2\x5a\x41\xa4\x4c\xde\x33\x80\xa5\xce\x68\x8c\xa0\x6f\x08\xb4\x41\x0f\xea\x9a\xa2\xbf\x13\x8c\xa0\xfe\x2e\xfa\xbb\x44\x02\xa5\x0a\x99\x7a\xb8\x94\xea\x1c\x8d\xc0\xf3\xdf\x80\x57\x7b\x4e\x4b\x06\xfa\x0b\x91\x81\x28\xd7\xd6\xdf\xd3\x49\x81\xb7\x1d\xe5\x30\x97\x74\x48\x17\xb1\x31\xa1\x7f\xa5\x98\x62\xb2\x8e\x10\x50\x5a\x2d\x25\x9f\x60\x88\x18\xff\x69\x39\x91\x9e\x4c\x5d\xe3\xc7\xc3\x6a\x7a\x9e\x30\xaa\xcd\x92\x99\xb8\x0e\x68\x37\x4b\x2c\xf8\x36\xa0\x34\x9c\x02\xb2\x82\x2a\x59\xb1\x7d\xf4\xe1\xa5\x19\x02\xe9\x3b\x36\xa4\xa6\x97\xc8\x7d\xe5\x53\x32\xcf\x88\xc9\x40\x7c\x77\x34\xd6\x98\x12\x8e\x3b\x34\x28\x81\x18\x60\x0b\x07\x58\x0c\xa5\xf1\xbb\x15\x84\x30\x4c\x3d\xeb\xb8\x9a\xde\x3e\xaf\x89\xba\x66\x85\x81\x17\xa9\x15\xf6\x56\xf8\x5c\x54\xb0\x56\x5d\xda\x3e\xb1\x8c\x15\x3c\x40\x53\xce\x3f\x72\xcb\xf8\x50\xdb\x99\xf4\xb3\x51\x7a\x16\x84\xac\xc8\x6e\x9c\xc8\xa8\x92\x51\xca\xb2\xda\xc4\x2f\x69\xbf\x5c\xc6\x7e\x04\x57\x63\xb9\xe0\xc7\x6e\x68\xd5\x40\xcc\x4f\xb0\x7a\x4c\x23\x81\x95\x74\x77\x0c\xfe\x60\xcb\xf2\xe5\xfa\x2a\x3e\x82\xd9\x36\xad\x96\x95\x3c\x4d\x19\xa4\xa5\xb9\x63\xc9\x41\x45\x83\xea\xe2\x6d\x47\xde\x26\xb6\x16\x63\xcf\x70\xaa\xd2\x72\xc8\xe6\x2b\xd7\xa2\xe9\xec\x67\x0b\xf0\x6b\x43\xb6\xee\x0e\x98\x10\x39\xbb\xb7\x86\xd6\xdd\x1d\x28\xa1\x8c\x16\xd0\x52\x9c\xb4\x7b\x60\xe3\x5d\x88\x2c\x89\x4a\xa5\xe3\xcc\x89\x95\x0a\x10\x8d\x3a\xc6\x79\x41\x7e\xf1\x10\x1f\x55\xd4\xf3\x09\x97\xc3\x90\x9d\xd2\x58\xab\x56\x85\x8c\xa3\x7a\x12\xf5\xe8\x2a\x47\xe1\xef\x55\x69\x25\xdd\x88\x3f\x34\x06\x8b\x16\x32\xaa\x56\xd2\x99\x4a\x77\xc2\xa0\x13\x52\x36\x84\x9b\xb5\x65\x3c\xd2\x12\xca\x83\x96\xdd\xc7\x2b\x49\x84\xa4\x0f\x44\xb1\xad\xae\x1f\x28\x79\xc9\xdb\x71\xc5\xa4\xab\xe7\xce\x10\x76\xd9\x51\xac\xb2\x46\xe9\xfe\x94\x86\xb5\xfc\x75\x0f\x6a\x61\xe7\xfc\xb1\xf1\x12\xe5\x34\xef\x98\x88\x78\x51\x0d\xdc\xc7\x7e\x74\xc5\x35\x87\x47\x95\xc7\x17\xf5\xfb\x3c\xcf\xd3\xcc\xe4\x7e\xb3\x7a\x83\xc9\x7f\x20\xe4\x58\xc1\x33\x7b\xc0\xbf\x8b\x5e\x41\x36\x35\x55\xa4\x23\xcb\xd5\x59\x3f\x4d\xce\xe3\x8b\x89\x95\x08\xb1\x9c\xbc\x52\xf7\x04\x1c\xc9\x4a\x6a\x8a\x9b\x08\xac\x46\x25\x55\x9d\x16\x4f\xda\x2e\x48\x7e\x53\xa1\xd7\xbc\xd1\x23\xcb\xd9\x38\x8a\x33\x5d\x76\x9e\x54\xdf\x0d\x01\x01\x6b\x88\xbf\x3a\x9e\x59\xaa\x51\x29\xb8\x4e\x63\x4d\x66\xfc\xdc\x8a\x53\x3d\xdf\xa6\x22\x65\x5d\xab\x04\x40\xb4\x0a\x79\xf4\x6b\x38\x9c\xd5\x95\xef\xa7\xc0\xb3\xe9\xaa\x2f\xcc\x18\x55\x38\x7d\x8a\xae\x16\x92\xb5\x55\x40\xa5\x1f\x2c\xaf\x13\x4a\x16\x6f\x24\x06\xdd\x6d\x85\xb0\xae\x94\x56\xe1\x6f\xef\x2a\x69\xa9\xab\xba\x17\x4a\x65\x7d\x18\xc6\x28\x28\xd2\xcc\x26\x9f\xaa\xfa\xa4\x84\x0f\x8a\x38\xaa\xce\x3d\x91\xc7\xc6\x04\xc5\x03\x34\x4c\xe0\x8d\x75\x2b\x7c\xc9\x1c\x2b\xa4\xc4\x91\x87\xcd\x8d\x82\x82\xb5\xd4\x53\xd5\xdc\x28\xf9\x89\xce\x8d\xaa\xf3\x80\x8d\x55\x11\x46\x46\x59\xfe\x54\x03\xf6\xce\x99\x1e\xb8\xcf\x12\x5f\x75\xbd\xaa\xa0\x3f\xfe\x4b\x30\xbe\x0c\x3e\xce\xf5\x17\xf7\x5e\x46\x75\x16\x9f\x93\x79\x2e\x8e\xdc\xce\x5c\x75\x25\x2f\x3e\x70\x47\x48\x28\x72\x47\xc8\xa7\xca\x1d\x21\xbf\x5b\x3b\x42\xbe\xfb\xc3\x56\x5d\x37\xf0\x61\x56\xdd\x17\xd2\xe9\x41\xab\x4e\xaf\xf0\xfc\xe1\xab\x2e\xa4\xd5\x07\x72\x4d\x99\x5d\x0b\x63\x15\x57\xad\xb4\x10\x8d\xeb\xfe\xe0\xcc\x77\x5d\x61\x75\x42\xec\x8a\x9b\xe5\xbc\x0c\x3e\xe2\x08\x0d\xd7\xe1\x8e\xc6\x1c\xa4\x50\x59\x0b\x1f\x3e\x45\x86\x14\xaa\xa7\x69\x53\xe5\x92\x42\x55\xe7\x9f\x36\x65\xd0\x78\xdd\x5c\x6d\x99\x3d\x75\x42\x13\x79\x20\x2d\x49\x33\x89\x59\xe2\xaf\x4a\x1a\x92\x66\x16\x66\x61\x6c\xa1\x7b\x4f\xd3\x7d\xc8\x80\xd4\xe0\x1c\x15\xcc\xc0\x94\x0a\x1b\xd8\xdd\xaa\x82\x1e\x81\xa9\xcc\x9e\xfe\x31\x8c\x6c\x6f\x77\x2e\xa6\xad\xac\xd0\x0f\x25\xdf\x08\x45\x91\x6f\x7c\xaa\x26\xdf\xf8\xdd\x26\xdf\xf8\xee\x8f\xc6\xd4\x89\x27\x12\x9e\x8b\xbf\xda\x32\xbf\xc4\x82\xa0\x4e\x3c\xf4\xe6\x98\x4f\x94\x79\x1f\x36\x9b\x08\x03\xeb\xe0\xdf\x55\x33\x89\xd2\x74\xdd\x0a\x2f\x2a\xde\xdc\x73\x16\xf5\x29\x83\x75\x62\x64\xcf\xb2\x2a\x53\x72\x76\x99\xf8\xe3\x09\xfa\x1c\x40\x04\x1c\xa1\x48\x77\xbb\xb2\x49\x12\xfa\xd7\x74\x42\x7e\x92\x19\x1e\xe9\x69\x75\xa5\x9f\x86\xbd\x8e\xb9\x9c\x1d\xf0\x60\x28\x71\xb7\x3f\x5b\x81\xa1\xc0\xee\xa7\xc6\x20\x04\x4c\x58\x4c\xb1\x43\xe5\x34\x9f\x86\x23\x72\x10\xd5\x1c\x2b\xca\x1f\x88\xb5\x02\x82\xe4\x54\x51\x5e\x89\xb1\xdf\x47\xb9\x85\xaf\xa2\xec\x3d\xb1\x55\x9e\x5a\x29\x6e\x23\x00\x59\x98\x8a\xdf\xbd\x78\xea\x0f\x70\xc9\xca\xe1\xe3\xac\x14\x35\xc1\xe7\x80\xb2\x43\x38\x23\x33\x08\x2b\xfb\x01\xaf\x4b\xc8\x5a\xed\xfd\x62\xe3\xea\x10\xe6\x45\xb9\x7c\x18\x74\x3a\xb6\x92\xdb\x97\xd7\xad\x48\xff\xe3\x60\x77\xe7\x0d\xbb\xe4\xc5\x30\x1d\xcc\x76\xc3\x50\xab\x55\xa4\xbf\xe6\x69\x72\x9c\xa8\xa4\xe6\x8e\xb9\x24\x40\xb8\x01\x59\x2a\x7c\x53\x73\x83\x24\x97\x8f\x83\x71\x8d\x6e\xeb\xec\x77\x8f\x15\x27\x5c\xad\x1a\x07\xae\xe3\xfc\x23\x79\xbd\xbf\x2d\x53\x81\xc7\xe7\x71\x1f\x32\xe4\x37\xce\xf8\x30\x7a\x17\xa7\xd9\xb4\x71\x61\x3b\xf6\xc8\x24\x0e\x7d\x90\xb1\x09\x4c\xd1\x09\xc0\x89\x81\x0e\x53\xdd\x6f\x64\x3c\x2a\xf8\x2e\xe4\xce\xc0\x23\x51\x5d\xb6\xd9\xb7\xbf\xad\xda\x35\xf7\xf9\xbb\xf4\x6d\x45\xcd\xcc\xfe\x06\x35\xd5\x1c\x3b\x50\xcd\x04\x5b\x5b\x7b\xc0\xdf\xf1\x51\x3a\xe6\x59\xf3\x32\xfd\x47\x3c\x1a\x45\x30\xc9\x3c\x69\xbc\x3e\x68\x0d\xd2\x7e\xde\xfa\x99\x9f\xb5\xd6\xf7\xb6\x5a\xaf\xf7\xb7\x5b\x0e\x48\x09\x6a\x5a\x0e\xe3\x49\x32\xc9\xf9\xa0\xf1\x2e\xca\x80\x72\x89\x39\xf2\xce\x47\xc8\xe8\xc2\xd9\x0e\x3d\xff\x3f\x7b\xdf\xc2\xdd\xb6\x71\x2c\xfc\x57\x36\xba\xfe\x4a\x2a\xa6\x48\xcb\xae\xeb\x5a\x8c\x9c\x82\x20\x25\xab\xb1\x25\x57\x94\x93\xb4\x96\xaf\x0c\x91\x90\x08\x0b\x04\x18\x00\xd4\xc3\x8e\xff\xfb\x77\xf6\x39\xb3\xb3\x0b\x92\x72\x94\xde\xc6\x75\xcf\xa9\x43\x61\x5f\xb3\xb3\xf3\xde\xd9\x5d\x32\x2a\x5e\x41\x52\xd4\x3c\x4d\xf3\x53\xba\xe3\xe4\x1d\xaf\x1d\xcd\x66\xe9\x0d\xac\x57\x0b\x52\x81\xd4\xe6\xf7\xba\x85\x4c\x82\xe8\xbb\x40\x26\xe9\xf2\xb7\x20\x93\x90\xc8\x22\x64\x92\x51\x31\x32\x49\x11\xba\xfa\x9d\xe0\x92\x0c\xb7\x1a\x2e\x85\x1c\xb3\x1f\xfc\x77\xa1\xd3\xb9\x5b\xc7\xd9\xbd\xe6\x47\xf5\x84\xbe\x8e\x0c\x9f\xe5\xc5\x28\x1e\x6f\xb1\x6f\x5e\x0f\x07\x27\xfb\xf2\xf6\x1f\x31\x5a\x39\x89\xa6\x5b\x0c\x67\xb0\xb0\x4f\x2a\xf0\xfb\xfa\xf0\xc5\x16\xc9\x55\x50\x8f\x68\xac\xb5\xd6\xbe\xab\xe2\xe9\x2c\x8d\xaa\xf8\x19\xaf\xfa\xdd\x48\x3f\x60\xc1\xb6\x92\x72\xfb\x78\x8d\x0b\x8e\xe3\x35\x76\xb9\x91\x9c\x6d\x1f\xaf\xc5\x19\x5f\x8f\xf1\xf1\xda\x33\x89\x90\xef\xf2\xd1\x46\x39\x4b\xb2\x0c\xd2\x9c\x55\xcd\x34\x8f\xc6\x49\x76\x7e\xbc\xa6\xbf\x5f\xc4\x37\xdb\xc7\x6b\xd1\x65\x54\x45\xc5\x86\x53\x5a\x26\x1f\xe2\xed\xe3\xb5\x72\x1a\xa5\x29\x7c\xdd\x8a\x8a\x24\xda\x48\xa3\xd3\x38\xdd\x3e\x5e\xbb\x27\xac\x86\xeb\xaa\xd9\x78\x21\x9b\x37\xd6\x51\xd5\xb2\xba\x49\x79\x17\xef\xae\x92\x71\x35\xd9\x62\xf7\x3e\x8a\x1f\x9f\x66\xd7\x5d\x36\x89\x93\xf3\x49\x65\x7d\x7b\xa7\x9b\x76\xd0\x54\x24\x74\x30\x13\x6e\xb9\xd5\xc2\xcf\xd1\x60\x46\x17\xfd\x6e\x1f\xaf\x89\xff\x62\xa8\x8a\x91\x69\x35\xcc\xe7\xc5\x28\x46\x85\xf3\x32\x2e\x36\xb8\xa9\xbd\x7d\xbc\xc6\x7f\xef\x73\x1f\xc2\x02\xeb\xbb\x8e\x59\x8f\x67\xc7\xd9\x77\x1d\xb4\x56\xdf\x49\xbb\xe2\xd9\x71\x96\x4c\x85\x6b\xf4\x91\x4d\xa3\xd9\xae\x30\xac\x4a\xf6\x89\x9d\x15\xf9\x94\x35\x2e\xe7\xf1\x75\x83\x53\x52\x7c\x2d\x2a\x8d\xe3\xb3\x68\x9e\x56\x92\x2e\x3a\xdf\x7e\x2b\x06\xfb\x96\xed\xec\xfd\xfc\x72\xb0\xc5\xb8\x84\x67\x40\x01\x93\xa8\x64\xa7\x71\x9c\xb1\x51\x3e\x4b\xe2\x31\xcb\x2f\xe3\x42\xf6\x3b\x9b\xe4\x71\x96\x5c\xb7\xd9\x5e\xc5\xca\x49\x3e\x4f\xc7\xec\x34\x66\xd3\xfc\x52\xd7\xaa\x72\x76\xd0\x1f\xb6\x58\x35\x89\x33\x76\x15\xb3\x51\xc4\x39\x6b\x5e\xc6\x2c\xa9\x98\x0a\x46\x7f\x2b\xc7\x8b\xaf\xab\x38\x2b\x93\x3c\x6b\xcb\xaf\x1d\xfe\x1f\xe9\x40\x35\x02\x81\xb8\x86\xb0\xdb\x66\x45\x3e\x2b\xb7\xcc\x56\x86\x82\x9d\x89\x8e\x8e\x26\x31\x9b\x54\xd3\x94\xc5\xa9\xb8\xa1\x9d\x71\x11\x21\xc2\x49\xd5\x24\x66\x12\xfd\xe2\xf4\x4a\x94\x64\x71\xd1\x46\x2d\xdf\x8d\x93\xcb\x16\x2b\x67\x51\xf6\x0e\xbe\x76\xe4\x4f\x99\xb5\x68\x8c\x27\xf9\xa7\xca\xc9\xd3\x1f\x15\x42\xb7\x58\x63\x9c\x5c\x36\x5a\x60\xc9\xa5\xc9\x38\xaa\xf2\x62\x4b\x3f\xbf\xf9\x0c\x5b\x61\x4a\x90\x88\xa2\xf6\x34\xaa\x46\x93\x66\xa7\x39\x4e\x2e\x7f\xe5\x80\xac\x77\xd6\x69\x28\x4a\xf5\xab\x89\x64\x75\xa0\x1a\x6e\x07\xc9\x18\x35\xc7\x68\xe4\xe8\x08\xd2\x34\xbf\x62\xf1\x74\x56\xdd\xa8\x27\x37\xf8\x52\x96\x93\xfc\x8a\x89\xeb\xc7\x27\x79\x3a\xb6\x8e\x34\x68\x5c\xdd\x16\x12\xc5\xa5\x64\x1e\xfb\xf2\xc5\x5a\xfd\xb1\x88\x7f\x99\x27\x05\x17\x77\xe2\x3e\x06\xb7\xd7\x3f\x3f\x54\xbd\x0a\x01\x2b\xca\xc7\x51\x15\xb9\x6f\xd9\xd6\x4e\x78\x18\x57\x7c\x86\xf2\x39\x2f\x2e\x24\xd9\x15\x27\x59\xc9\xe0\x2d\x96\x17\x2c\x37\xe7\xf3\x5a\x2c\x19\xe5\x19\x46\x04\x4b\x4a\x81\x9c\xcc\x8b\x11\xcc\xf6\x1c\x03\xad\x5a\x20\x26\xf9\x55\xc9\x94\x20\x65\x89\x1a\x42\x9c\xbe\x28\x2b\xa6\x84\xa5\x26\x63\xc1\x80\x65\x5c\x5c\xd6\xac\x83\xaa\x2e\x15\x86\x83\x1e\xce\xdd\xf3\x2a\x06\x1a\x68\xb7\xdb\x20\x37\x9a\x6f\x1a\xe7\x5c\x39\x5d\xc4\x59\xe3\xad\x76\x97\x94\xd0\xdf\xf2\xa5\x5a\x1a\x04\x73\x56\x6e\xdf\x2b\xf2\xbc\x6a\xcb\x0d\xcd\xb6\x6c\x26\x39\xb8\x14\x0f\xb0\xf8\xe0\xb9\xe2\xc4\x6f\x80\xd1\xf4\x69\x6f\x67\x24\x7c\x21\x52\x1c\xdb\x16\xa3\x95\x72\x03\x44\x55\x59\x77\xba\x9e\xe6\xf3\xac\xaa\x81\xbb\xd3\x61\xcf\xa3\x6c\x9c\xc6\x63\x5d\x8d\x95\x49\x35\x17\x76\x74\x9b\xbd\x16\x3d\xb2\x29\xd7\x1a\x2c\xcb\x2b\x2e\xdc\xca\xb8\x62\x37\x71\xc5\xca\x5c\x24\x04\x39\xdc\x20\x1e\x89\xe3\x60\x49\x70\x44\x7e\x8d\xe5\x7b\x59\x30\xa3\x9a\x1a\x70\x12\x27\x10\x35\xf4\xd2\xab\x0b\x49\xdc\x29\x0a\xfb\xcb\x27\x15\xbf\x65\x5c\x49\xb2\x48\xe4\x2a\x61\xca\x11\x32\x57\x8e\xac\xab\x76\xb4\x3b\x2d\x60\xd3\x38\xa7\xa0\x03\x2c\xb0\x90\xaa\x08\x13\xba\x70\xf3\xb0\xdf\xf8\x8d\xa8\xa2\x88\x48\xdc\x57\x23\x11\xe4\x39\x31\x54\x3f\x67\xa0\x34\xc7\x37\x15\x79\xf8\x6c\x12\x47\x63\xf9\xb0\x3e\x9f\xf0\x73\xf9\x57\x73\xdd\xae\xa4\x13\xc6\xf9\x1c\x1c\x7a\x95\x2c\xc5\x01\x94\xa7\xb8\xda\x69\x2e\xfd\xaa\x36\xde\x40\xd5\x5d\x49\x37\xdd\x74\x78\x9f\x35\x3a\x45\x3c\xcd\xab\xb8\x3d\x9b\xcc\x3a\xe3\xe8\xb2\x23\x91\x52\x8a\x9c\x0d\x4c\x18\xbc\xea\xe6\xc3\xbf\xb6\x67\xd9\xb9\xc1\x93\x82\x9e\xdb\x90\x71\x36\x6e\x36\x82\x79\x35\xc9\x8b\xe4\x83\x18\xbf\xd1\x62\x8d\x5e\x1c\x15\x71\xc1\x4c\x5f\x9a\x4b\xd7\xeb\x7a\xf8\x79\xe3\x30\xfe\x65\x1e\x97\x55\x3c\xde\xf8\x29\xa9\x26\xbc\x93\x9f\x5f\xbe\x78\x5e\x55\x33\x55\xd0\x30\x6d\xcf\x62\xae\x80\x84\x23\xfe\xd1\x20\xf2\x13\x3a\x1a\xd9\xe6\x6a\xbc\x59\xc4\xe5\x2c\xcf\x4a\xaa\xcb\xe4\x2a\xeb\xc2\x76\x7e\xe1\x9c\xa5\x82\xd7\x16\x65\x15\xee\x9f\x34\xad\xab\xf6\x9d\x83\x5f\xa6\x6e\x59\x45\xd5\x5c\xbe\x27\xfb\xe7\x07\x7f\x76\xba\x96\xdb\xf4\x7c\xc9\xe5\x36\xfd\xbb\xd7\xdc\xd2\x89\x47\x82\xa1\x65\x53\xf1\x86\xdb\xbd\x8f\xa4\xc7\x4f\xef\xea\x00\x70\x27\xce\xe1\x75\x26\xbd\x98\x56\xd5\x29\x05\xec\x88\x59\x0d\x09\xc7\x28\x8a\xf3\x38\xac\xb2\x0f\x0b\x54\xef\x91\xc9\x4e\x87\xe3\xa7\xc5\xb2\x3c\x8b\xd9\x59\x3e\xcf\xc6\xcb\x47\x05\x3e\x5d\x84\x02\x91\xc7\x28\xd3\x18\xfd\x48\x58\xd8\xeb\x32\x34\x71\x6e\xca\xd3\xb8\x1d\xcb\xe5\x13\xab\x48\x35\x5e\x32\x8d\xce\x63\x61\xcd\x71\x16\x62\xc7\x6b\xf7\x3e\x22\x86\xfa\x74\xbc\xb6\xc5\xde\xb5\x98\xe8\xa1\x3d\x8d\xcb\x32\x3a\x8f\xd7\xdd\xc9\xe8\x33\x17\x9f\xb8\x21\x6d\x8c\xe7\xb5\xd6\x9a\x51\x0f\xe6\x1c\x27\xbc\xe2\xa7\x0d\xee\x16\x13\xfe\x45\x8b\xc9\x86\xfc\xbf\xf9\x2c\xde\x1b\xb7\x58\x52\xee\xa8\xf6\x51\x7a\x64\x6a\x4f\xf3\xf1\x3c\x8d\xf7\x44\xf6\xf1\x59\x12\x17\xac\xf3\xad\xd2\xd9\x2c\xcf\xd2\x1b\xf6\x6d\x47\x78\x6c\xe3\xfc\xea\x65\x3e\x8e\x5b\xca\x85\xdf\xcb\xf8\xaa\x73\x1f\xd0\xfe\x7b\x38\x3c\x74\x3e\x89\xc6\x9c\xb8\xb0\xfe\x91\x8f\x94\x42\xc7\x52\x0b\x9d\xe6\x79\x1a\x47\x59\x03\xd5\x16\xa8\xa7\x63\xb0\x6d\xf2\xad\x5b\x5f\x9d\x6d\xa3\x61\xac\x7a\x68\x74\x73\x8f\x56\xa1\x97\x00\xa2\xaa\x3f\xce\xe3\xb6\x30\xfd\xc7\xf8\x24\x15\x53\x7e\x8a\x38\x7a\x95\xcf\xda\xba\x81\x14\xba\xf9\x8c\xe3\x99\x0b\x79\x3d\x53\xb1\x1a\x52\x95\xe8\x65\x6c\xb0\xef\xd5\xf7\xb6\xae\xbf\xa5\x3e\x74\xd1\xf8\x45\x9c\x71\x03\x4e\xb7\x2a\x2d\x3c\xaa\x75\x64\x7f\xfa\x13\xd3\xbf\xdb\xb2\x01\xc1\xa1\x1a\x41\x15\x72\xc0\xec\xea\x5d\x5f\x65\x2e\x81\x92\xd1\xa1\xa8\xb0\x23\xa7\xa3\x5b\x91\x22\x6f\xf3\x13\x6e\xc3\x25\x5c\x99\xea\xcb\xcd\x50\xa5\x4e\xc7\x4c\x29\x4a\x4d\xbf\xb8\x86\x3c\x10\xee\x12\x2d\x99\x19\x1e\x11\xf5\xe8\x19\xf2\x93\x6f\x79\x05\x7f\x8c\xf7\xc6\x18\xad\x8a\x67\x6a\x50\x78\xa2\x8a\xc5\x19\x00\xf1\xcb\xa5\x9b\x34\xae\xd8\x24\xcf\x2f\xba\xb8\x5b\xca\x6b\xa4\x7f\x0e\x8c\xe4\xbc\xd3\x79\x92\x8e\x71\x11\xef\xca\x7e\x34\x34\xcf\xaa\xf8\xba\xf2\xa0\xa2\xd3\x61\x0f\xdb\x8f\x58\x22\xc8\x3f\xc9\x33\x5a\xae\x5a\xb2\x6d\x5a\x80\x0b\x7f\xfd\x95\xf7\x33\x8a\x46\x93\x78\xcc\x46\x51\x9a\xfa\x2a\xf3\xff\x49\xfb\xf0\xde\x65\x96\xcb\xf3\xa5\xe8\xcf\x76\x59\x16\xa1\x06\x53\x76\x28\xce\x3b\x9d\xcd\x97\xf4\x36\x8b\x0a\xee\x19\xeb\xde\xe4\x9f\x74\x0c\xeb\x2b\x1e\xaa\x6b\x53\x96\x17\x3d\x0f\xd9\x55\x52\x4d\x58\x31\xcf\xf6\xb2\xfd\xf8\x4a\x35\x55\x8e\x08\x69\x20\x2c\x43\x8d\x17\x3e\xba\x64\xe8\x93\x93\x1f\x5f\x0f\x4e\x86\xc3\x43\xf1\x3c\xd6\xe0\xe7\xa3\x93\x13\x29\xc3\xcc\x31\x40\x2a\xc5\x9c\x05\xf0\xf5\xd1\xa5\x2d\x3e\x79\x26\x20\xd7\x16\xc5\x3f\x84\xc8\x2f\x7d\x90\x8b\x92\x1a\x40\x44\x19\x44\xcc\x3d\xb2\xdc\x90\xd9\xfa\x4a\x70\x15\xf1\x79\x52\x56\x71\x81\x20\x93\x24\xcf\x12\xd0\x2f\x5c\x3b\x46\xe5\x4d\x36\x62\xa3\xc9\x3c\xbb\x60\x49\x76\x16\x17\x71\x36\xf2\x22\x1e\xe1\x5d\xfd\x6c\x9f\xe8\x51\xe2\xb1\xd1\x7e\xe5\x62\x54\xfb\xdb\xb4\xa3\xf1\xd8\x65\xc9\xc5\x13\xfd\x44\x45\x98\x08\xdf\x9c\xde\xb0\xb2\x14\xee\xb0\x38\x10\x0c\xb3\x4f\x4a\xcd\x43\x51\x36\x66\xa7\xf1\x59\x5e\xa8\xc8\x36\xe9\x26\x8b\x39\xdb\x9f\xc7\x55\x29\xb8\x2d\x1e\xfb\xe5\x4e\x59\x1c\x6a\x14\x6f\xdb\xe2\xc5\x40\x09\x67\x72\x3c\x2b\xaf\xc4\x08\x28\x3e\x3a\xd9\xef\x57\x12\x31\xab\x10\x8f\x18\x42\xf7\xd1\xc2\x5e\xcc\x3d\xa3\x5d\x44\x9d\xc3\x3c\x5f\x89\xbe\xb6\xee\x0a\xb4\x45\x44\xed\xe2\x53\x1e\xea\x92\xbe\x02\xd1\x4d\xae\xd2\xf1\x8b\x63\xc3\x16\x9c\xf4\x91\x86\x42\x74\x92\xb1\xcb\x79\x2c\x5e\x55\xf6\x88\x6b\x6e\x4f\x08\xc7\x2e\x4a\x0f\xb5\xf6\xb6\xd5\xb9\x33\x11\x47\xdb\xa3\x5d\x03\xfe\x85\x3b\x5a\x43\x8e\xa6\x3d\xad\x26\x9a\x93\x16\x5b\x8c\x56\x8e\x05\x89\x55\x5d\xcf\x19\x96\x81\x0f\x65\x43\x8c\x7b\x5f\x80\x75\x67\xe1\x95\x03\xb1\x82\x08\x94\x48\x2e\x84\x1f\xca\x44\x38\x18\x98\x4d\x80\xee\x47\x6c\x7c\x9d\x94\x95\xb4\xf8\x35\xce\x70\xcb\x5a\xc4\x5a\xdd\x6f\x43\x37\xdf\xb3\x37\x6f\xb9\x9f\x3e\x8a\xaa\xa6\xfe\xd8\x62\x92\x80\xb6\xd8\x1b\xfe\xe3\xed\x12\x9b\xc4\x9c\x93\x32\x86\xe0\x27\x4f\x5c\xdc\x75\x01\xba\xc7\x59\xa7\xf3\x3f\xac\x14\xee\xcd\xcb\x68\x36\x4b\xb2\xf3\xd7\x87\x2f\xb6\x4d\xcd\x0d\x83\xad\xf6\xf4\x7d\xd9\x9e\x46\x33\xdf\xbe\x4a\x3e\xda\xa8\xc4\x5e\x56\x91\x5f\xa1\x1d\x07\xf9\x6d\x14\xa7\xe9\x33\x0d\x3c\xff\x3c\x9a\xc4\xa3\x8b\xd3\xfc\x9a\x6d\x89\x10\xf1\xf6\xf1\x5a\x52\x06\xa3\x51\x3e\xcf\xaa\x61\x9c\x0a\xf7\xf6\x78\x8d\xfd\x6d\x34\x89\xb2\x73\x5e\x7a\x74\xb0\xbb\xfb\x62\x70\x32\x1c\xbc\x18\x84\x47\x7b\x07\xfb\x27\x41\x18\x1e\xbc\xde\x3f\x6a\x46\xb2\xd1\xfa\xf1\x1a\xdb\xd2\xfb\x28\xa5\xe8\x41\x75\xf7\x82\x7f\x3c\x5e\x63\x93\x64\x1c\xcb\x9d\x16\xd8\x11\xe9\xf8\x00\xac\x83\x5a\xf9\x6a\xd6\xa6\x86\x1a\xbd\x3d\x4e\xca\x59\x1a\xdd\xec\x47\x53\xf1\xb4\x96\xfe\x9c\x67\xaf\x8a\x78\x9a\x94\x71\x39\x8c\xa6\x0a\x1e\xb9\x07\x22\xbb\x49\xc6\xa8\x8f\x84\xcf\xd8\xec\xb3\x3c\x7a\x7c\xbc\x76\x2b\x40\xd9\xe5\x06\x67\x13\xd4\xe1\x82\xd1\x3b\x2b\x76\x41\xe6\xd5\xd8\x68\xdc\xa2\xf1\x34\x4a\xd2\xda\xea\x16\x35\x9c\xce\xab\x2a\xcf\xd8\x96\xc0\xc7\x3b\xd5\xbe\xdc\x28\xf2\x34\x2e\x37\xe4\x6a\x6e\x54\x45\x72\x7e\x1e\x17\x1b\xf7\x3e\x02\xc2\x3e\xbd\x3b\x5e\x63\xe2\xd6\x09\x18\xd6\xdf\xec\x78\x8d\x5d\x46\x45\x22\xd8\x7c\xfb\x78\xad\x88\xae\xcc\x16\x9f\x00\xa2\x9c\x45\x99\xe9\x69\x7e\xb1\x71\x96\xc6\xd7\x4c\xfd\x77\x63\x9a\x8c\xc7\x69\xcc\xc8\x00\xa3\x79\xc1\x4d\x49\xf1\x97\xd5\x19\x63\x1f\x3f\x32\x55\x7a\x98\xa7\x31\xfb\x1e\xff\x65\xe1\x74\x8b\xc1\x9e\x9f\xa4\x7b\xc6\xbb\x6b\xac\xb3\x4f\x56\xc4\x88\x23\x49\x84\xe6\x15\xdd\xc5\xd7\xb3\x28\x1b\x9f\x4c\xf3\x82\xaf\xa6\xd8\x44\x9c\x24\xe3\x71\xcc\xe7\x26\x8c\x51\x40\xbb\xa4\x1f\x3e\x3f\x40\x79\xc7\xe0\xdc\x5a\x86\x71\x91\xcf\xa0\xd1\x16\xff\x73\x63\xd1\x92\xf0\x0a\xe3\xfc\x2a\x73\xd6\x04\x75\x52\xe5\xe7\xe7\x72\xdb\xf2\x7f\x6e\xb7\xae\xd0\xc7\x34\x1f\xf3\x0e\x46\x69\x32\xba\xc0\xdf\x47\x69\x5e\xc6\x1b\x79\xb6\x21\x4b\x60\x4c\x25\x6c\xb7\x8f\xd7\x3e\xb2\x71\x9c\x46\x37\xcf\x93\x71\xbc\xc5\x1e\xb0\x4f\xd0\x1c\x63\x67\x9e\xe2\xa5\x4f\x93\xb2\x22\xeb\xf9\x5d\x9a\xb0\xcb\x8d\xb3\xbc\xe0\xa4\xc3\x57\x34\xc9\xc4\x3a\x95\x9c\x63\xe5\xbe\x29\xff\x53\xb0\xf0\x33\x5b\xf0\x7f\x27\x45\x4e\x0d\x91\x1a\x0c\x7a\x88\x48\xb4\x16\x2f\xdb\xba\xca\x92\x3b\x13\x82\x8c\xc7\x49\x8e\x51\x02\xa8\x91\xc3\xe5\xa3\x0d\x51\x47\x2e\xb6\xaf\xe6\xe5\x06\x47\x2f\x97\x9a\x88\x46\x7d\x15\x8d\xa0\x2e\x6a\x2a\x80\xb0\x96\x3f\x78\x47\x4d\x85\x96\x75\xb7\x41\xc7\x99\xec\xc7\x8f\x02\xa9\x16\x83\x7c\x22\xd7\x89\x7d\xd7\x11\xf8\xb4\x57\xa7\x93\x26\x16\xb1\xcf\x53\x9b\xd4\x39\x96\x7f\x93\x24\x9d\x27\x63\xb9\x71\x77\x7b\x21\x78\xbe\x72\x53\x44\x82\xbc\x8f\x8d\x51\x9c\x55\x5c\x70\x59\x2c\xca\x85\x00\x4c\x55\xa5\x22\xe8\xb1\xd4\x7f\x07\x3a\x87\x01\x2a\xaa\xbd\x7d\x59\x2e\x3a\xd9\x88\xdd\x5a\x4a\xb8\x14\x71\x34\xbe\xc1\xdf\xb1\xe4\x2c\xe7\x22\xef\xcf\xe2\xf1\x9a\x24\x06\xa5\x72\xb8\x37\xa3\x06\x6b\xac\xdb\xfc\x4b\x78\x42\x06\xae\x37\x92\x6c\x9c\x8c\xa2\x2a\x2f\x5c\x18\x3b\x0b\x91\x11\x5b\xa1\x57\x35\x9b\x71\x3c\x2b\xe2\x51\x54\x2d\x45\x88\xca\xc5\x19\xd7\xcd\x7c\xcc\x89\xba\xb8\xe5\xc4\x75\xa7\xb7\x9d\xb9\x0b\xcc\x22\x5b\x00\x7d\x93\xd6\x97\x95\x48\xb1\x24\x95\xa2\xc5\x7f\xab\x4b\x8a\xa6\xd1\x2c\x90\xd1\x42\xf1\xfb\xe5\xbc\x8a\x64\x80\x91\xa4\x5b\x98\x6e\x92\x52\x06\xf2\x07\x62\x43\x5d\xd7\x6a\xb7\x3b\xed\x76\x67\x12\xa7\xb3\xb8\x28\x3b\xf3\x2a\x49\x4b\xab\x91\x30\xc2\x83\x79\x35\x91\xcf\xe9\xf8\x9b\x45\xf3\x6a\xd2\x58\xfc\x68\xfd\x28\x9a\xc6\x29\xf7\x9d\x51\xe7\x5c\xec\x0c\xe3\xe2\x32\x19\xc5\x27\x41\x59\x26\xe7\x19\xff\x72\x94\xbf\x2e\xe3\xa2\x65\x95\xbe\x48\x4a\x21\xed\x64\x2d\x91\xc8\x44\x40\x19\xa5\x49\x9c\x55\x9d\x32\xae\xb8\x3d\x8e\xe6\x10\xa0\xfd\xc6\x46\xbb\x23\xff\x6c\x5f\xce\xe3\xda\x54\x14\x9d\xef\xa1\x56\x5c\x8e\x7d\xd5\x68\xe9\x77\xcd\x75\x74\x61\x8b\x7d\xd4\xbd\x7f\x52\x85\x76\x5e\x88\xa2\x19\x27\xb3\x40\xae\x83\x27\xb3\xc0\xb3\x2b\x7d\xbc\x3c\x8d\x00\x69\x83\x2d\x91\x44\xeb\xe9\x62\xe9\x56\x3b\xb7\x71\x1b\x2d\xd6\x30\x27\x80\x45\xf8\xda\xec\xbb\xcb\xea\x32\xf7\xd7\x60\xa6\xd1\x62\x6f\x1a\x42\x3b\xf2\x96\xa5\x72\x06\x4c\xa9\x68\xac\x5c\x6c\xea\x31\xd4\x6e\xdb\xd3\x5e\xda\x49\x36\x8e\xaf\x0f\xce\x64\xdc\x50\xbb\x10\xec\x19\xdb\xd8\x54\xd3\x34\x83\xb8\xbe\x84\x35\x8a\xf4\x06\xab\x22\xca\x4a\xce\x6d\x63\xb3\xf1\x4a\xcd\xba\xff\xf7\x51\xaf\x1c\xfb\xd4\x58\x87\xab\xe0\xac\xec\x02\xd5\x48\x24\x46\xcf\xf2\x54\xe4\x44\x9b\xae\x5b\xec\x23\x2c\x3e\x06\xdc\x56\x98\xea\xaa\x6e\xdf\x72\x09\xaf\x13\x63\x49\xef\xb4\x72\xde\x28\x43\x58\x71\xb9\x77\xa9\xdb\xd1\x3d\x78\xb9\x6c\x4a\x4e\x34\xdf\x34\xca\x49\x7e\xf5\x52\xee\x4a\xd1\xb5\x35\x02\x84\xac\x6f\x9d\x3b\x87\x97\x57\x07\xfb\xb4\x2d\xc1\x84\x31\xb1\x87\xb7\xed\x89\x20\x81\xa4\x83\x76\xa5\xf6\x8e\xed\x75\x82\x0d\x5e\x16\x5d\x45\x49\xb5\x50\x58\x34\xd1\x46\xe0\xbd\x71\x3e\x8d\x92\x4c\xe1\xdd\x22\x67\xb5\xad\xde\x82\xca\xa7\xf9\xf8\x66\xcb\xde\x46\x54\x2b\x75\x32\x9f\x27\x63\xb2\x78\xc9\xb8\x85\x6b\xf2\x39\x9e\xf0\x4a\x72\xb2\xd8\xe1\x57\x3f\x3f\xa1\x69\xf9\x76\x92\xb7\xb7\xb7\xd9\xc3\x07\x9b\xd6\xb6\xac\x9a\xbe\xe8\x92\x6d\xc3\x46\x35\x17\x02\xed\xc8\xc8\xbf\x36\x1d\x54\x4e\x17\xb9\x32\x8a\xbc\x05\x7f\xb6\xcf\x92\x6c\x2c\x16\xc5\xd9\x36\xd5\x1b\xe2\xd2\xfa\x13\x20\x39\xf3\x81\x1c\x30\x67\xbf\x57\x32\x2d\x90\x55\xd3\xde\x93\x4d\x2a\x91\x94\x6d\xf3\xd9\x4e\x24\x76\x8c\xaa\x5c\x91\x8c\x1c\xbc\xb1\x6e\x61\x77\x1c\x97\xa3\x2d\x46\x30\x76\x14\x5f\x57\x56\x2d\xf9\x79\x8b\x35\xa4\xca\x6f\x78\x81\xa6\x82\x42\x92\xab\x87\x99\x2c\x79\x71\xa7\x14\xeb\x51\x60\xff\x36\xa2\xbd\x53\xc2\x94\x14\x18\x8f\x15\x89\x59\xe4\x79\x8c\x4c\x3c\xb9\xb3\x87\x2c\x8e\x26\x6e\x49\x6f\xf7\xb5\xd3\x69\xac\xc7\x97\xef\x94\xb2\x31\x0c\x88\x99\xca\x37\x0f\xde\x3a\x0c\xe5\x12\xd0\x71\xcd\xa6\x3d\x09\xaf\x8d\x93\x4b\xea\x36\x30\x15\x97\x18\x27\x97\xc9\x38\x2e\x2c\xd3\x58\x1a\x83\xe7\x45\x3e\x9f\x61\xd7\xc8\x13\xa4\xa3\x25\xc2\x17\x29\x27\x45\x92\x5d\x68\x37\x73\x12\x47\x1e\xc7\x16\x45\xf1\xa8\x27\x67\x7c\xc5\xa8\x88\x83\x34\xd5\xa2\x1f\x22\x7b\x4e\x03\xd7\x88\x56\x7a\x33\x4a\x53\x91\x14\x51\x36\x3c\x3e\x24\xc4\xf4\x68\x09\x38\xa3\x32\x00\xe1\x40\x91\xb8\xee\x70\x87\x78\x95\xfe\x78\xd5\x8a\xd8\xa2\xbd\xd9\x2d\xec\xaa\xc6\x69\x84\xd9\xeb\x53\xa6\x7c\xd6\xbf\xb1\xab\xbe\xb4\x0e\xd8\x1d\x75\x37\x98\x46\x49\x7a\x07\xfd\x1c\x8a\x38\xd7\xb2\x6e\xbc\xa8\xa5\x9e\x72\x96\x5f\x15\xd1\xac\x06\x91\xc9\x98\x65\xc2\x01\xff\x37\x0c\xb6\xfb\x5b\x07\xf3\xe1\x1b\x5c\x67\x12\xd3\xf3\x32\x33\xfa\x6c\x73\xff\x02\xa9\x60\xdc\xd0\x34\x29\x2b\xde\x1b\x06\x5b\xc7\xbd\xb4\xf5\x9a\x64\x26\x10\x6a\x33\x90\x0a\x84\xe9\x58\xa1\xe9\x6c\x41\x64\x8f\xbb\xd0\xb2\x08\x06\xc0\xe5\x9d\x65\xd3\x82\xcf\xca\x0f\x96\x62\x72\x25\xf7\x17\x3b\xba\x35\xa7\x0a\xb4\xb7\x67\x3b\x6d\xe0\xf6\xd9\xdf\x6f\xeb\xff\x35\x5a\x8e\xeb\x27\x67\x45\xfa\x3d\x36\xd9\xb0\x5e\x4f\xb0\x74\x5c\xc1\xa0\x28\xa2\x9b\xd5\x3c\xc1\xa5\x4e\x9c\x6d\xb7\xfb\xe5\x79\xe3\xed\xfa\x71\x6d\xc6\xae\xed\x2d\xd8\xdd\x49\xd9\x6c\x04\x72\x90\xa6\xd8\x01\xa8\x97\xdc\x96\x49\x25\xd4\xb6\xdb\x53\x73\x59\x56\x5c\xbd\x82\x1d\x27\x97\x98\xed\xcd\xb1\x0a\x36\xbf\xd8\x98\x45\x63\x79\xb0\x07\x48\x73\xb2\xe9\xe3\x5b\x33\x51\x9b\x71\x39\x1b\x9e\x17\xc9\x58\xc7\xee\xa8\x6b\x1a\x88\x6c\x6d\xf6\x8c\x3d\x38\x5e\x53\x51\x2a\x5d\x65\xc3\xf0\x69\x92\x9d\xe5\xc7\x6b\xec\x7c\xce\xd7\x08\x4e\x15\xd1\x0d\x0c\xb5\x71\xe1\xd9\xe9\x30\xf0\x96\x1a\x63\x7b\xd9\x59\xce\x0d\x61\x2a\x65\x00\x2d\x00\x7f\x24\x5a\x88\xb0\xaa\x1b\xca\x92\x85\x10\xda\x76\x0d\x07\x93\x7c\x76\xb9\x51\xa6\x79\xb5\x45\x76\x22\x6c\x48\xd1\x94\xa6\x51\x71\x9e\x64\x1b\xd7\x62\xb6\x1b\x45\x72\x3e\xa9\xfc\x22\x53\x11\x9b\x47\x06\xb3\xa5\x7b\x29\xb4\xbe\x25\x4a\x16\x4e\x43\x4d\xdc\x19\x0f\x6f\x71\xb9\x65\x20\x60\x9b\xb2\x83\x16\x13\xc1\x89\x75\x29\x68\x65\xe6\x9e\x27\xda\x6e\xe4\xad\xac\xd3\x96\x56\x90\xbf\xa2\xda\x66\x14\xf5\x12\x8f\xf5\xc5\x48\xa4\x53\xec\x8e\xf9\x2a\x71\x6b\x76\xfb\x78\x6d\x1a\x67\xf3\xa4\x8a\xa7\x35\xc3\xe9\x25\xfb\xc8\x1a\xb0\x6a\x72\xd1\x4e\xf3\xaa\xca\xa7\x8d\x2d\x39\x47\x76\x9f\x6d\x8a\xe4\x27\x35\x4f\x7d\x11\xe0\x27\x7f\xc7\x88\x14\xc4\x2e\xe9\xc6\xe6\xc6\xa6\xd9\xa3\x4b\xe3\xb3\xca\xdf\xec\x6f\x62\x7b\x08\x30\x30\x11\xc7\x22\x0a\x5f\x65\xcf\xda\x89\x6d\x09\x8c\x63\x67\x4b\x82\xd5\xec\xa8\xe9\x12\x2f\xfd\x88\x06\x88\x8f\x2c\xc5\x8e\x79\x4e\x54\xe4\x02\x03\xbe\x20\xc2\x13\x22\x24\x29\xf7\xb2\xa4\x92\x67\x99\x6d\x3b\xdd\xd6\xec\x46\xd9\x62\x7e\xb5\x85\x93\x0b\x2c\xa7\x5d\x71\x56\xa8\x50\x01\x76\x14\x88\xd6\x70\xde\x4a\xed\xe2\xa8\x33\x56\xc1\xf2\xc6\xf5\xe5\x0a\xd8\x68\x5f\x3d\x03\x4b\x0d\x2b\x1d\xbc\x48\x03\xcf\x66\x1e\xc5\x6b\x0f\xf1\x19\x9a\xd1\x5a\x84\x46\x8b\x35\xce\xe3\xca\xe8\xad\xbc\x90\x5a\x72\x69\xdc\x73\x51\xb8\x53\xcf\xb7\x36\xca\xe9\x8c\x48\x43\x14\x35\xba\x66\xe5\xa8\xa9\x64\x4f\x7f\xaf\x48\x85\xac\x16\x20\xcd\x8c\xb8\xfe\x7f\x1f\x59\x24\x21\xf9\x64\x40\x64\x3a\x74\x5c\x5b\xc8\x11\xe6\x05\x53\xce\xea\xf3\x43\xac\x53\x14\x61\xad\xc1\x98\xc9\xb8\x47\x8b\x23\xf7\x49\xdc\xa9\xeb\x92\x6d\xf6\xe6\xad\x5d\x92\x94\x41\x76\xa3\x7a\xee\xab\xfd\x1e\x8d\x1e\x07\xf7\x65\x3e\x8d\x75\xb2\x0b\xdb\x7e\xc6\xbe\xf1\x6f\xfa\xd1\xf3\x40\x68\x08\x55\x63\xe5\x11\x6a\x07\xc0\x31\x1e\xdf\x1c\xac\x30\x8c\x16\xed\xe2\xf9\x27\xfb\x50\xcd\x78\x8b\x35\x6a\xcd\x06\x2d\x1c\xe5\x16\x60\xc3\x8a\xcf\x09\x39\xec\x04\x00\x25\x80\x24\xe0\xa7\x84\xbd\xaa\xac\x4e\xec\x69\xd1\xe7\x8f\xca\xd4\x4d\x4f\x23\xe0\x2e\x67\xa7\xb6\xb4\x56\x99\x9e\xc2\xee\xc2\xf9\xa9\xee\x56\x9c\xa0\xe2\x0b\x6d\x64\x50\xc7\xe0\x36\x86\x7c\x62\x64\x1f\xe7\x59\x1b\xcd\xfc\x0b\x01\xcc\x72\x18\x6a\xb6\x25\xa0\x4b\xb5\x1b\x41\x4d\x78\xae\x60\xaa\x1b\xe1\xf9\x75\xbe\x65\x47\x07\xfd\x83\x2d\x16\x9c\x55\x71\x61\xee\x69\x38\x4f\xaa\xc9\xfc\xb4\x3d\xca\xa7\x9d\xfc\x2a\x1b\xa5\xf9\x7c\x6c\x7e\x6c\x8c\xe3\x32\x39\xcf\x36\xca\x9b\xb2\x8a\xa7\x9d\xd9\x3c\x4d\x3b\x7f\xde\xfc\xab\xcc\xa5\x9d\xc6\xc5\x39\x17\x9f\xd5\x24\x2e\x62\x76\x95\x67\x0d\x71\x42\x32\xca\x58\x7c\x5d\x15\x91\x38\x4d\x2d\x52\x73\xc5\x59\x43\x53\x9e\xc5\xf1\x58\xe4\xec\xde\x70\x63\x52\x1c\x3b\x6c\xc3\x16\xaf\x16\x93\x86\x18\x4e\xab\x8c\x3d\x93\x7d\xc9\x2b\x6e\x65\xa0\x66\x8b\x71\x83\x46\xdc\xa8\x10\xa5\x1c\x44\x6e\x6a\x95\x5b\x4c\xe6\x03\x98\xab\x62\xcc\x94\xc7\xef\xe7\xe2\xe4\x1f\x3b\xe8\x0f\xe5\x98\x2a\xe5\x41\x10\x1a\xb7\xd5\x64\xf7\xea\x40\xf2\xe6\xe3\x07\xb3\xeb\xae\x46\xa6\x42\xe0\x5a\x6b\x4d\x0b\x8c\x83\x74\xbc\x37\x80\x03\x28\x59\x74\x99\x9c\x47\x55\x5e\xd0\x2c\x75\xf6\xa7\x3f\x99\xd3\x10\xd3\x32\x89\xd9\x9b\xbf\x6c\x3c\x7d\x7b\x7c\x7c\x7c\x7c\xda\x91\x4f\xc0\x9b\xa6\x22\xc0\x1d\x9c\xc7\x59\xd5\xae\xf2\x17\xf9\x55\x5c\x84\x51\x19\x37\x55\x22\x2d\xb9\xe5\xc3\x49\xb7\x85\x3c\x4e\x45\xb0\xcd\x64\xac\x4e\x2b\xad\x0b\x39\x35\x1e\x8b\x94\x54\xf4\x59\x65\x3f\x16\xc7\x59\x1a\x57\xec\xf9\x20\xe8\x8b\x2f\x72\x8a\x32\xe9\x5d\xbc\x74\x63\x8f\x6f\x75\x34\x2a\x71\x72\xb8\x6c\x29\x22\x0f\x6c\xdb\x20\xe9\x7b\x5e\xab\x3d\x8d\xc7\x49\x24\xb2\x3b\x94\xb9\xd1\x60\x5b\x2c\x81\xb3\x1d\x68\x54\xf1\x2e\x0d\x1f\xfd\x8d\xe8\xea\x2d\x6f\xd5\xb4\xbf\x6c\xb3\x8f\x2c\xe1\x5c\x97\xc5\x57\x6c\x18\x57\xcd\x75\x35\xa9\x72\x8b\xbd\x79\x2b\xee\xd8\x40\x19\xc6\xdf\xc8\x9c\xe5\x64\x5c\xb6\x27\x51\xd9\x4c\xc6\xeb\x24\x09\x17\xca\xa3\xf1\x98\x97\x5b\x49\xa4\x1c\x3b\x23\x79\x8e\x89\xcf\x44\xa6\x80\x76\x69\xbe\xb2\x98\x64\x34\xf3\x27\x29\xbb\x77\xa2\x8c\x26\x45\x3e\x8d\x05\xd7\x8d\xe3\xcb\x2a\xcf\xd3\x52\xde\x8a\xf2\x3e\xba\x8c\x24\xf7\x6e\x8c\xe3\xd3\xf9\xf9\x39\xf7\xa3\xdd\x1e\x05\x4f\x4d\xa3\x8b\xb8\x54\x39\xa9\xdc\x3a\x2c\x59\x92\x95\xc9\x38\x56\x78\xac\xa2\x73\xce\x77\xc5\x85\x08\x89\xc4\x45\x7a\xc3\x19\x20\x14\x23\xbb\x09\xbb\x63\x71\x55\x6a\xe3\x98\x73\x8d\x4e\x74\x7d\x7d\xf8\x62\xbb\xc1\xee\x33\x35\x39\x35\xf7\x52\x3c\xb2\xc6\x1a\xec\xdb\x4e\xc3\xc9\xe1\x55\xb3\xdd\xea\x74\xca\x2a\x1a\x5d\xe4\x97\x71\x71\x96\xe6\x57\x62\xa6\x51\xe7\xe1\x5f\xfe\xf2\xe0\xd1\x5f\x9f\x3c\xae\x19\xde\x97\xf2\x6c\x43\x84\x52\x6f\xc7\x51\x15\x6d\x45\xb3\x59\xaa\x2e\x3e\xea\xbc\x2f\xf3\xac\x7b\x1a\x95\xf1\x5f\xfe\xdc\x6a\xb0\xfb\x75\xe7\x60\x4e\xab\x3c\x6a\xce\xb3\xb8\x1c\x45\xb3\xb8\x19\x8b\x9b\x3f\x5f\x1f\xee\xc1\x69\xbf\xbf\x0f\x0f\xf6\xdb\xfa\x56\xa5\x1b\xb3\xb2\xeb\xeb\xeb\xf5\x9d\xba\xc8\xf8\x44\x29\x44\x91\xa1\xba\x9b\xc2\x43\x28\x56\x39\xdb\x66\xe3\x7c\x24\x6e\x8e\x51\x87\x41\x07\xb2\xa0\xd9\x10\xf5\x1a\x6e\xaa\xb7\xd5\xbe\xad\x1e\xa7\x69\x70\xf1\xd0\x19\x95\xa5\xbb\x54\x86\x6c\x39\x6f\xae\xd7\x27\xfb\xeb\x1e\xcb\xb8\x0a\xaa\xaa\x48\x4e\xe7\xdc\x24\x17\xad\x1a\x2d\xe0\x6e\x17\x20\x3e\x00\x97\x2b\x62\x03\xc8\x7a\xc1\xcb\x33\x96\xac\x08\x93\x9e\xc4\x91\x38\x27\x6e\x3e\x9c\xc7\x95\x42\x41\xd9\xbb\x39\x8a\xce\xf7\xa3\x69\xdc\x6c\xf0\x6a\x8d\xf5\x37\x0f\xde\x2e\x3f\xe4\xc0\x47\x50\x27\xa3\xc3\x49\x92\x8e\x9b\xf6\x82\x2c\x5e\x3d\x89\xf5\xe1\x24\x8e\xab\x06\x67\xa3\xd5\x16\x53\x0a\x25\x69\xf9\x70\x3a\x5b\xb6\x68\x30\x48\x7b\x54\x8a\x3d\x57\x2d\x0d\xdb\xfe\x63\x48\xfc\x7f\xed\xb3\x24\xad\xe2\xa2\xd9\x93\x07\x3c\xbd\x2b\xa9\x9e\x0a\x38\x3e\xce\x1a\x0b\x26\xea\x3f\x11\xa0\x4f\xcd\x8f\xe3\x6b\x03\x0d\x17\x96\x65\xf2\x21\x66\x1b\x6c\xd3\x99\x93\x72\x67\xe2\xeb\x6a\x5f\xca\x4d\x42\xc9\x47\xaa\xa4\x06\x25\xb2\x79\x96\x8f\xe3\xd2\x8c\xa7\x11\x34\xe2\x0b\xc7\xdb\x96\x5e\x6a\x13\x8d\xde\x08\x50\xdf\xae\x40\xd1\x45\x3c\xcd\x2f\x63\x49\x0c\x56\xd3\xfa\xce\x95\x7f\xb7\x42\xe7\x49\x56\xc6\x45\xd5\x13\x67\x19\x9a\x1a\x19\x2d\xb6\x78\x1c\x91\x9d\xb7\xb4\x6b\x4c\xc4\xba\xe7\x9a\x65\xfd\x54\x77\xc6\x81\x9e\xf1\xf5\x9f\x6f\x38\x2d\xf2\xab\x32\x2e\xac\x33\x0d\x9d\x0e\x7b\x37\xbc\x99\x9e\xe6\x29\xba\xbb\x6e\xac\x6e\x38\x4c\x72\x74\x3f\x3d\x52\x7d\xd5\xe8\xd1\xd3\xb6\xb2\x35\x93\xbc\x13\x8f\xa6\xd1\xc3\xbf\x3c\xec\xfc\x4f\x19\x8f\x36\xca\x05\x9d\x1d\x67\x8d\x79\x19\x8b\x5b\x68\x46\x55\xa3\x2b\xdf\x60\xb8\x27\xf6\xbf\x45\xc4\xbe\xd9\x68\xb7\x3b\x89\xba\x24\xb1\xec\xc8\x49\x8a\x7b\xb3\x78\x45\x7c\x0f\x56\x5d\x93\xb1\xb9\x9b\xb1\x34\xed\xe4\x6d\x5b\xb5\x4d\x64\xb1\xa9\x3d\x89\xca\xda\xaa\x93\x08\x7a\xd5\xbb\xf2\xb5\x95\x93\x72\x43\x5e\x41\x63\x9a\x58\x2f\x3a\xdc\xd4\x36\x94\xad\x36\x64\xed\x8d\x99\xaa\xde\x58\x6f\x9f\xa9\x7e\x46\xf9\xec\x06\x5d\xfc\x05\x4f\x44\xd4\x76\xc9\x5b\x6c\xa0\x33\xd9\xba\xd7\x24\x2e\xd5\xb5\x64\xbc\x5f\x79\xd1\x99\xa4\x06\xb6\xad\xf0\xd6\x96\x7f\xfb\x1e\xaa\x40\x87\x3c\xed\xa6\xd6\xd1\xed\x3f\xfd\x89\x35\xbf\x69\x36\x10\x19\x08\x99\x8b\x5b\x00\xb5\xe8\xb7\xbf\x3b\x1d\x36\x8c\xce\xa2\x22\x61\x9b\x0f\xd9\xe9\xfc\x9c\x7f\xc3\x2d\x9a\xeb\x98\xae\xec\x57\x25\x8f\xb3\x75\x74\x4b\xa1\xc8\x9a\x90\x57\x18\xf5\xa1\xc5\xb0\xca\x8b\x58\x59\xc4\x72\xb8\xab\x22\x9a\x31\x35\x01\x7c\x7a\xfd\x2c\xe7\x08\x2f\x0a\xbe\xd4\xc2\xfe\x12\x07\x62\xcd\x60\xcc\x22\x6f\x39\xa4\xec\xe5\xa7\x82\x73\xb6\x75\xa4\x4c\xc3\xae\xdd\x3e\x49\x14\x30\x0d\xcf\x73\x9e\xdf\xb1\x4d\x71\xbe\xc6\xbc\xe7\xa9\x1e\x66\x06\x00\xbe\x47\xbf\xcd\xf3\x37\xb8\xbe\xbe\x7b\x93\x8f\x56\xc4\x25\x97\x17\x32\x22\x82\x5f\xdb\xb4\x60\xd6\xa2\xe7\x7b\x61\x93\x5b\x78\x47\xe0\x1a\x0f\x5b\x9c\x32\x63\x83\xf1\x79\xcc\x36\x1f\x99\xdb\xb2\x55\x03\x30\x15\xd6\xe5\xa1\x7e\xe7\xbb\xc9\x36\xda\xb2\x91\x41\x66\x69\x2f\x3f\xdb\xaa\x87\x0b\x3d\xd1\x46\x3b\x6c\x34\xd6\x17\x51\xc4\x1b\x89\x9f\xb7\xe6\x4c\x3c\xf6\xc2\x64\x19\x7a\x5f\xb2\x96\x0f\x9b\x16\x36\x5b\x16\xa4\xe8\x29\x33\xf1\x37\x7e\x7c\xd0\x6a\x06\x4c\x61\x6e\xc6\xa4\xdc\x22\xdf\xd2\xb4\xbb\x69\x8f\xac\x57\x68\xad\x2e\xd5\x83\xbc\x30\xb8\xbe\xb3\x90\xab\x66\xd2\x8d\xbe\x43\x94\x5c\xda\x09\xf7\xd3\x5a\xe8\x6f\x54\xe2\xfa\x99\x75\x86\x56\x98\x7f\x5a\x6f\x98\xf6\x45\x7c\x1e\x5f\x73\x67\xb2\xf3\xbf\xb2\xc2\xf1\x71\xb3\xd9\xfe\x76\xfd\xf8\x78\xfd\xcd\xff\xae\xbf\xbd\x7f\xaf\x23\xaa\xda\x42\xb2\x49\xc0\x6a\x31\x4b\x90\x98\x67\x70\x3c\x2f\xee\xc8\x02\xf1\x48\x8f\x61\x40\xd4\xb6\x49\x2e\xe9\x2d\xb5\xd8\xd3\x82\x5d\x5e\x8e\xca\xbe\x97\xc1\x19\x91\xdf\x73\x70\x26\x08\x8f\x7f\xb0\xde\x59\x28\x6d\x24\x6a\xac\xca\x33\xa0\x25\x5a\x76\x06\x37\xf9\x36\x17\x90\x61\x4b\x75\x84\x5e\x87\x6b\x58\x03\xf2\x79\xb0\x6d\xbd\x24\xdf\x2b\x00\xd4\x65\xbd\x4f\x5a\x6c\x63\x93\xc3\xa9\xbe\x16\xb1\xb8\xd9\xaa\x29\x17\xa0\xc5\x1a\xf7\x36\xd1\x0b\xfe\x6a\x00\xd9\xa3\xe0\x10\x22\x51\x78\x89\xf5\xc6\xed\xba\x22\xa3\xfa\x9b\x2c\xe5\xed\xb1\x66\x71\xe4\x72\x6f\xb9\x32\x46\xdf\x9f\xb9\xd6\x5a\x03\xfd\xf8\x53\x9c\xa6\x3f\x64\xf9\x55\x66\x14\x51\x9d\xaa\x17\xfa\xf1\x2a\x4e\xd3\x8d\x0b\x5e\x5f\x99\x1e\x0d\xb8\x91\x57\xf1\x4b\x52\xc5\x45\x54\xe5\xc5\x3b\x06\x95\x15\x86\x6f\x6b\xd6\xe8\xae\x8e\x33\x2f\xb0\xcd\x86\xae\xd0\x50\x77\x71\xfe\x16\x83\xe7\xde\x59\x92\x8d\xf7\x94\xa9\xee\x6f\x21\x1e\xf5\xd8\x90\x83\x72\x86\x58\x6f\x9b\x36\xaa\x93\x68\x3c\x3e\xca\x5f\x67\xe5\x28\x9f\x71\xe6\xa8\xb7\x11\xa2\xf1\x78\xa3\xca\x37\xe6\x50\xd5\x00\x22\x46\x79\x29\xa2\xa3\xaf\xcb\xb8\x3c\xca\x5f\x48\xe5\xb4\x18\x2a\x19\x4e\xdd\x98\x97\x71\xc9\x3b\x96\x0a\x0d\x99\x1b\x3b\x7b\xfb\xfd\x93\xbd\xfd\xfe\xe0\x67\x26\x1e\x48\x54\x70\x6b\x34\x0d\x7f\xd8\x7b\x35\x3c\x79\x7e\xf0\x62\x30\x04\x71\xac\xde\x6c\x1d\x0e\x86\x27\x47\x07\x27\x2f\x06\xfb\xbb\x47\xcf\xf5\xdb\x26\x2e\x80\x4d\x18\xc2\x10\xc5\x50\xdc\x6d\x99\x35\x2a\x56\x5e\x24\x33\x36\x11\x87\xda\x84\x65\x83\xe0\x49\x32\xf6\xe6\xed\xba\x4c\x2b\x69\x6e\xae\xbf\x81\xa2\xb7\x4d\xeb\xea\x39\x02\xa5\xbc\x1b\x07\x5f\x0a\x2d\xba\x40\xd6\xb0\x99\xa6\xf7\x5e\xe8\x45\x14\x18\x79\x7a\x12\x9e\x87\xbc\x53\xb6\x8a\x0a\x21\xeb\x1a\x62\xc4\x46\x4b\xbe\xc2\x44\x39\x13\x83\xfb\xeb\xaf\xe2\xca\x59\x8c\x49\xcd\xb3\x06\x4a\x24\x3b\xcd\xb7\x26\x17\x6b\xa7\xd1\xe8\xe2\x2c\x93\x6f\x9a\xab\x17\xcc\x41\x68\x98\xf7\xcd\x8d\x78\x01\x52\xd6\x37\x0d\x98\x3e\x5a\xb7\x7d\xc3\x1c\x1e\xf1\x35\x68\xfe\x0c\xfc\x6d\xfc\xed\x6f\x88\xd4\x8f\x33\xca\x27\x84\x76\x94\x88\x5a\x99\x77\xc5\x9e\xed\x62\xfe\xe0\x55\x4c\x7d\x91\x58\x1a\x4a\x3b\x33\x8b\xcb\xf2\xe0\x6c\x4f\x33\x75\xbd\x55\xcf\xdb\x6c\x8c\xa0\xd1\x46\x7e\x86\x65\x81\xe1\x97\xbd\xfd\xf0\xe0\xf0\x70\x10\x1e\x9d\xec\x1d\x0d\x0e\x83\xa3\xbd\x83\x7d\xb6\xcd\xbe\x59\x30\x26\xa2\x72\xd1\xe1\x69\xaa\x1f\xb2\x90\x04\xcd\x61\x87\x92\x2e\x5e\x8b\x77\x50\xe3\x33\x69\x9c\x37\xad\x21\xea\xb2\x8a\x2a\x4a\xd3\xbe\xd9\x19\x42\x2e\xf2\xe9\x16\x93\x1d\x7e\xba\x03\x91\xfc\x19\x5e\x5f\x52\x0a\xe0\x17\xb5\x10\xd3\x36\x0d\xaa\x3c\x38\x2d\xf3\x74\xce\x1d\xfa\x45\xb2\xbf\xca\x37\x22\x55\x71\x43\x08\x02\xd4\xc3\x12\x01\x6d\x8b\x63\xd9\x44\x0c\x16\x8f\x97\xcc\xaf\xca\xe5\x58\xf1\x98\xce\x53\xc6\x20\x96\x7a\xb7\xb2\x1a\x72\x6b\x55\xf3\xab\x15\xd5\xbe\x5f\xdf\x13\x2d\xf5\x3c\x92\x8f\xec\xc6\xe5\x70\x3e\x53\xaf\xcc\xac\xa0\xaa\x26\x51\xb9\x51\xca\x76\x1b\xa5\x6c\xf8\x3b\xeb\xc0\xe7\xc1\xf0\x64\xf8\x6a\x10\xee\x0d\x86\x27\xc3\xd7\xaf\x5e\x1d\x1c\x1e\xd9\xea\xcc\x99\x49\xb3\x21\xac\x3c\x03\xd7\xca\xba\x50\xb5\x6b\xb1\x8f\x2c\x08\xc3\xc1\x70\x78\x70\x38\xd4\xac\xf4\x60\x8b\x3d\x68\xb1\xcd\x2d\xf6\x50\xeb\x2e\xa1\x81\x25\x60\x6c\x9b\x2e\x4e\xb3\xa1\xb0\x64\xa0\x90\x96\xe8\x90\x8f\x20\xf6\xfd\xa5\x29\xaa\x0a\xa7\x11\x27\xe2\x97\x51\x35\x69\x4f\xa3\xeb\x5a\xd5\x28\x9a\xfc\x66\xb5\x28\x7a\x11\xad\xcf\x94\x8a\x11\x2e\x7c\x96\x57\x12\x33\x1b\x69\x72\x11\xb3\xc1\xf0\x91\x32\x8f\x4b\xb1\xad\xd9\x3f\x78\xa9\x2e\x0c\x2e\x6f\xa3\x4e\xbf\xf1\xad\xdf\x02\xbd\x2a\x80\x43\x3a\x55\x1a\xec\x65\x15\x15\x55\x8b\xc5\xd9\xd8\x8a\x0c\x1c\x70\xb3\xc7\x66\x4b\xeb\xc1\x10\x5e\x27\xd5\x44\xa8\x59\xbe\x79\xa0\x83\x9a\xa8\xd6\x85\xa8\x60\x49\x15\x3d\xa8\x5b\xf9\x4c\x3c\xd2\x4d\xab\xc7\xd9\xd8\xf1\xc8\xd5\xe0\x5b\x1c\x72\xda\x93\x88\x09\x88\x23\xab\x72\x9d\x15\x11\xcb\x7b\x60\xde\xa9\x9b\x1f\xa3\xf3\x58\xfb\x30\xb2\xd6\xff\x28\x1a\xb8\x12\xdb\xd0\x49\xd5\x28\xd9\x2c\x2f\xcb\xe4\x34\x8d\x01\x40\xeb\x66\x7d\xe9\x94\xb7\x58\x86\xdf\x8a\x97\x12\xb7\x79\x80\xcf\xc7\x84\x96\x5b\x7c\x80\xdd\xe4\x2e\x0a\x64\x8c\x8a\xbc\x2c\x37\x8a\x38\x4a\xa7\x86\x80\xb0\xe7\xa6\xe2\x5d\x56\x6f\x4e\xb8\xcb\x2e\xdd\x96\x3a\x93\xd3\x85\x86\x0c\x55\x40\xb1\x2f\xfb\x38\x8f\x0d\xb0\xc1\x3b\x7d\x85\x08\x9f\x10\xc2\xfd\x2e\xea\x0c\xfd\xf5\x46\x51\xef\xdb\xae\xbd\x45\x42\xa7\x20\x5f\x7f\x5f\x0a\x13\x46\x55\x2d\x16\x68\x81\xb5\x9b\x64\xa0\xb0\x5e\x66\x10\x92\x45\xfa\xd3\x07\x2d\x76\xd1\xe2\x54\xea\x3e\xef\xa7\x4d\x4e\x15\xe3\xca\xe2\x2b\x17\x0a\x4c\xc0\x12\xa2\x2d\x0c\xd0\x7a\x73\x1a\x5d\x37\x39\x0f\x6c\xf0\x61\x1e\x98\xc7\x11\xc5\x43\x86\x99\x7c\xc4\xf0\x82\x7d\xc7\x01\xe8\xb2\x8b\xfb\xf7\x5b\x2c\xbb\x7f\x7f\x5d\x4c\xf8\x42\xe4\x24\xac\x13\x4d\xd8\x34\x24\xda\x62\x07\x6f\x2e\x4c\x38\x4e\x7e\x6e\x1b\x0e\xce\xea\xa3\x4d\x77\x63\xbb\xdc\x85\x5d\xb1\x97\x55\xf1\xb9\x08\x6a\x2e\x30\x0f\x44\x95\xdf\x66\x8c\x2c\xb7\x42\x88\xf5\x11\x39\x42\x66\x89\x66\xd6\x7a\x5e\x2e\xd6\x5d\x59\x31\xff\x35\x36\xc8\xec\x73\x8d\x90\xd9\x6d\xad\x10\xc7\x7a\x10\x1f\x85\x92\x92\x1f\x93\x4c\x7d\x7c\x19\xfc\x7c\x32\x0c\x76\x06\x27\x7b\xfb\x47\x83\xdd\xc1\x21\x67\xd6\xeb\xcd\x1d\xfc\x3f\xa8\xb9\xf7\xf2\xf5\xcb\x93\xe0\xc5\x8b\x83\x9f\x06\x7d\x05\xf7\xc9\xe0\xe7\x70\x30\xe8\x0f\xfa\x6c\x9b\x35\x5e\x46\xd7\xc9\x74\x3e\x65\x51\x9a\xe6\x57\xf1\x58\x2b\xbb\xf8\x7a\x24\x72\x9e\x1a\xf5\x66\xcc\xec\x6e\xec\x98\x99\x31\x64\xc4\x8e\x83\x3c\x85\xc1\x14\x49\xb0\xfc\x8c\xfd\xed\x6f\x8a\x4e\x7e\x57\x8b\x65\x46\x4d\x96\x19\xb6\x59\xc6\x71\x1a\x57\x71\x28\x32\x28\x45\x2c\xa0\xdd\x6e\x8b\xec\x2d\x1c\x03\x00\x63\xa6\xde\x8a\x59\x66\xc2\x44\xa3\x6a\x1e\xa5\x43\x3e\xea\x42\x63\xc6\x6a\xa3\x03\x08\x86\x4d\x68\xa4\x01\x55\x96\x3b\xbc\x62\x26\x2d\x35\x5a\x1f\x26\xd7\x62\x81\x54\x3b\x45\x3e\x6d\xb1\x2a\x47\xd6\x86\x33\xca\xf6\x36\x7b\x60\x1d\x80\x36\x1d\xb3\x6d\xb7\x67\xa1\x51\x94\xfe\x02\x8d\xee\xeb\x74\xb3\xb6\xd3\x07\x46\x13\xfa\xba\xe7\xd8\xdd\xc0\x08\xb4\x87\xab\x03\x94\x40\xb0\xc1\x1e\x2e\x1c\x65\x9a\x64\x42\x75\x1a\x1d\xd1\x44\xb4\xb1\xce\x35\x69\xcb\x85\x64\xbd\x6b\x69\x6e\x3e\x73\x5e\xe7\xbe\x05\xcb\x86\x67\xbc\x67\x0e\xb3\x5b\xe7\xa3\xec\x87\xde\x97\x70\x3b\x01\x22\xd0\xe2\xcb\xd2\x26\xdc\xec\x70\xc0\xb0\x6c\x83\x0b\xb0\x0d\x9c\x8a\xc2\x52\x40\x10\xaa\xe8\x10\x26\xea\xfb\xec\xc2\x7e\xb6\x9e\x57\xf1\xda\x13\x92\x12\x0f\xde\xf0\x1a\x6f\x29\xf0\x60\x4f\xb8\x40\x20\x0b\x19\xa1\xd7\x03\x2e\x86\x54\x4f\x0d\xd3\x8f\x98\x24\x5e\xcc\x05\x53\x35\x93\xbd\x60\xf7\x6b\x61\x12\xab\x96\xab\x4a\x08\x38\x62\x94\x22\x9c\x1c\xbc\xa9\xf2\xb7\xdc\x90\x97\x68\xe8\x92\xbc\x17\x49\x7b\xb2\x96\x6b\x9d\x9a\x49\xa5\x31\x37\xe2\xd8\xb3\xba\xc9\x10\x68\xd8\xc5\xc6\xc6\x3a\xf4\x7d\xc1\x36\xd8\xe6\x5b\x97\x79\x31\x76\x9f\xad\x86\xdd\x7a\x64\x9a\x1e\x34\xea\x39\x08\x2b\x62\x57\x26\xf4\x2c\xc4\x30\xa9\x72\x77\x58\xfe\xe4\x67\x0d\x1b\x9d\x16\xa5\x70\x84\xde\xc7\x93\x7d\x8b\xc5\x90\x28\x7c\xf8\xd6\x26\xf7\x03\x20\xf7\xd5\x56\xd0\x32\xb1\x03\x6a\x5d\xff\x96\x2c\x93\xbb\x48\xee\x50\xfb\x22\x4a\xd5\xe2\x9d\x61\xfd\xcd\xda\xfb\xf5\x56\x46\x5b\xba\x4e\x19\xde\xd4\x95\x51\x9b\x69\x7c\x38\x10\x5b\xb2\xc7\xc7\xe5\xb7\x10\xf3\x7d\xf3\xbf\xac\xf9\xf6\xdb\xf5\x8e\xaa\xb7\x1f\xbc\xe4\xb5\x1a\xe2\x40\xbd\x36\x7c\x74\xef\x26\x8b\xa0\x64\xef\xda\xf2\xe5\x65\x3d\xad\x95\x8d\x1f\x3d\xf2\x86\xe9\x6b\x43\xbe\xbe\xec\xc9\x38\xf9\xa6\x29\xc0\x49\x32\x77\x7e\xda\xe7\x25\x7b\xc8\x4e\xbd\x96\x98\xd1\x6d\x37\x8f\xad\x23\xb8\xc5\x8d\xc7\x57\xad\x5d\x0c\xf4\xda\xa6\x7a\x1b\x4c\xa2\x7e\xfd\xcd\x26\x62\x1c\x26\xde\xe5\x60\xf2\x61\x0e\x9f\x2f\x8c\x76\x81\x3f\xd1\x1d\xd9\x4f\xbf\x99\x82\x25\x69\xfe\x10\xdf\xd4\xef\x11\x2a\xea\xbd\x88\x6f\xca\x3b\x8c\x1c\x6b\x72\xd9\x2b\x07\xe6\x09\xd2\x65\x20\xe8\x36\x1b\x49\xb9\x01\x0f\x97\x1a\x3e\xe2\x86\xb9\x84\xa7\xfd\x91\xc5\x59\x55\x24\x71\xd9\x92\x8f\xb3\x95\xec\x93\x36\xce\x4b\x96\x4c\x67\x32\x0d\x2f\x92\x09\x3c\xe0\x02\x4a\xe7\xc5\x7a\x4a\xe0\xe8\xe0\x64\xb0\x7f\x74\xb8\x37\x18\xda\xef\xaa\xe2\xbd\x92\xa5\x11\xbc\xa4\xb2\x22\x73\x12\xdb\x80\xfa\xe6\x81\x37\xbc\xc7\xeb\x79\x6c\x56\x64\xfb\x59\xd9\x3d\xe6\x25\x70\x35\x86\xfa\xeb\x6a\x92\xa4\xb1\x30\xb1\xe4\x2e\x5b\x82\x88\xec\x22\xbe\x51\xe3\xbc\x49\xee\xdf\x7f\x6b\xd9\x22\xd6\x13\x94\xbf\xfe\xea\x5d\x30\x08\xce\xc4\x37\xeb\x84\x78\x45\xa0\x43\xe4\xcd\x02\x0a\xd9\xf7\xec\xcd\x45\x7c\x23\x62\x22\xf1\xcd\xdb\xb7\x6c\x4b\xfd\xaa\x0f\xeb\xf8\xb2\x70\x3e\x89\xe5\x96\x97\xd3\xb7\x65\xc0\x43\x9c\x74\x38\x56\x6f\x9c\x2a\x22\x50\x24\x50\xf3\xbc\xe9\x22\xd1\x94\x5b\x1d\xf0\x86\xea\xe7\x96\x45\x28\x4d\x71\x07\x59\x8b\x0c\x2b\x09\xee\xf3\x47\x95\xed\x65\x06\x0d\xff\x45\xc6\x14\xdb\xcd\xeb\x12\x09\xb7\xdd\xa0\xbc\xa7\x98\x61\x09\x9f\x55\xb9\xde\x9d\x52\xc0\x50\xf6\xa2\x53\xfc\xbc\x09\x5a\x0e\xac\xec\xd9\xda\xed\x33\xfe\xa8\xc6\x83\xe1\x39\xf9\xa1\x79\xe0\xec\x38\x9b\x82\x15\x62\x68\xfa\x59\xd9\x5a\x6c\xe8\x0a\x10\x8a\xc9\x96\x88\xbb\x28\xa3\x62\xee\x2c\x4a\xd2\x7a\x7c\x8b\x52\xa8\x9b\x46\xe7\xf5\x75\x65\x26\xcf\x86\xa8\x84\x02\x39\x47\x07\x27\xc3\xa3\xc3\xbd\xfd\x5d\x71\x54\x40\xbf\x0b\xad\x7a\x3c\x8c\xcf\x07\xd7\x33\x6c\x53\xc8\x2f\x8e\x45\x21\x03\xae\xc8\x8c\x20\x2d\xdf\x98\x61\xde\x42\xe6\xe8\xc1\xd1\xc9\xee\x60\x7f\x70\xb8\x17\x8a\x2c\x88\x24\x2d\x49\x9e\x84\x15\xcd\xb5\xd5\xe2\x47\x95\xa9\xbc\xc5\x1a\x51\xa3\x25\xa7\xbe\xc5\x1a\xa7\x0d\xf6\x69\x9d\x7d\xb3\xcd\x1a\x9d\xa8\x73\xda\x50\x59\x15\xdc\xf0\xd8\xf9\xf3\x9f\x37\x14\x54\xff\xa3\xa7\x29\xf2\x76\x23\x76\x55\xe4\xd9\x39\x93\xb6\x83\xbd\xf3\xad\x6c\x18\x02\x00\xaf\xc9\xc7\x30\x73\x32\xe4\x4d\xb1\xb3\xf8\x41\xef\x45\xa4\x2e\x57\xcb\xea\x49\x6e\x3d\xa9\xa7\xb5\x11\xee\x7e\xfd\x95\x40\x6c\x14\x8d\x7a\xf6\x98\x42\xd5\x02\xc8\x17\xbc\xff\x2d\xf5\xc0\x21\x37\xa7\xb3\x9a\x10\xcc\x0c\x12\xfb\x0e\xd5\xd1\x20\x2b\x6f\xf4\x8c\x13\x42\x5b\xac\x0d\xde\x2b\x82\x56\xbc\x86\x15\x5e\xff\xd3\x9f\xd8\x21\xce\x30\x95\xa0\x4b\x0b\xae\x21\x49\x97\x1b\x71\x84\xba\xd6\xd9\xf7\x92\x02\x24\x6d\x1c\xae\xb3\x2d\x56\x9c\xad\xdb\x86\x7b\x43\xbc\xc0\x37\x13\xef\xee\xf1\x5f\x67\x92\xc5\x5b\xec\x23\x9b\x67\x65\x74\x66\x3d\x60\xfe\xc9\x7e\x11\xec\x44\x88\xb3\x17\xc9\x45\x7c\x94\xcb\xcd\x98\xa8\x28\x64\xe8\x48\x22\x4b\x07\x21\xd4\xa6\x07\x5f\x13\xfe\xe7\x33\x16\x15\x85\x0e\x4c\xa9\x88\x15\x7c\x51\x29\x71\xc2\xdb\x31\x9a\xb9\xc5\x2b\x3c\x54\x1b\x11\x72\x2c\x11\xa1\x62\x89\x74\x9f\xbb\x2c\x41\x0e\x10\xaf\xfb\x26\x91\x3e\x4f\xf1\x26\x79\xab\xc5\x16\x32\x34\x78\x15\x7d\x1c\xd2\x51\x79\xce\xc4\xba\x4a\x25\xd0\xef\x48\xac\x1c\xaf\xb5\x3b\xb4\xf8\x78\x4d\x4a\x14\x82\xb1\x9f\x92\x6a\x92\xcf\xab\xe7\x79\x1a\x97\x1c\x65\x08\x5b\x32\x02\xaa\xf7\xb6\x78\xd9\x3a\x82\xd8\x41\xf6\xfa\x92\x29\xe0\x91\xba\xd6\xd2\xe9\x84\x13\xdd\x19\xff\x1b\xc1\xa1\xf6\xe6\x54\x02\xc1\x37\xdb\xdb\xec\x78\x0d\xb2\xc2\xd7\x38\xe9\x91\x8c\x40\xe1\xe6\x6a\xbb\x2c\x46\x70\x93\x2c\x97\x05\x20\x13\x98\xee\x0c\xe9\xf3\x4c\x85\x7a\xe3\xf1\x1e\x99\x76\xde\x62\xd3\x24\x7b\x61\x51\xec\x37\xb9\x86\xbd\x4b\xd0\x91\x0b\xbe\x3c\x5e\x53\x32\x67\xad\x7e\x6d\xa0\x5f\x48\xfa\xe5\xce\xbf\x54\xd5\xae\x24\x94\x2c\x9a\xaf\xab\xbc\xd3\xbf\x8a\xbc\x53\x33\x7c\xa6\xc6\x95\xcd\x25\xfa\x73\xbc\xed\xba\x2e\x7a\xb7\x3e\x09\x79\xec\xf4\xf0\x52\xdc\x3e\xf6\xeb\xaf\x4c\x7f\x18\xc6\x15\x9a\x07\x5a\xab\xdc\x1d\x3e\xd0\x01\x04\xd9\x45\xe7\x7f\x9b\xdf\x6f\xbd\x4e\x7e\xdd\x5b\xcf\xaa\xe6\xf7\x5b\x7f\xfd\x75\xf3\x2f\xbf\x3e\x7a\xb8\xde\xfc\x7e\x2b\x4c\xa3\xe9\x2c\x1e\xaf\x7f\x2f\xfa\xbb\xa7\x8f\xf4\x2e\xa0\x65\x0b\x5f\x35\xe4\x51\xbf\x8c\x36\x69\x67\x79\xa6\xcb\x87\xb3\x22\x8e\xc6\x5a\x76\xc3\x73\x98\x10\xd0\x3c\x5e\xdb\xcb\xc4\x73\xd4\x2c\xaa\xaa\x78\x3a\x13\xef\x1d\x97\xa2\x19\xcb\xf2\x6c\x43\xd3\xa4\x11\xbf\xed\xe3\xe3\x6c\x2f\x63\x79\x31\x96\x0f\x79\x9f\xc6\x4c\xd7\x11\xef\x4b\x4a\x1b\x4f\x67\x40\xb0\xe9\xbc\xac\xd8\x24\xba\x8c\x59\xc4\xde\x10\x96\x79\xdb\x5c\x57\x0a\xb0\x2d\x89\xb6\x66\xe2\xce\x84\x2c\xce\xc0\x3c\xee\x63\x0d\x5c\xae\x79\x43\xc8\x55\x1b\x87\xa4\x29\x29\xc5\x0d\xeb\xd7\x81\xf4\x51\x5f\x11\x77\xe7\xcc\x8e\xf4\xe2\x94\xbb\x0c\x5e\xe5\x61\x9e\x95\xf3\xa9\xb8\x26\xc0\xc8\x46\xcb\xb1\xac\x11\xbc\xbf\xfe\x4a\xf1\x60\xbe\x2f\x90\x1a\xba\x8a\x87\xd2\xea\x57\xd1\x01\xb2\xeb\x37\xa0\xcf\x92\x6b\xa9\xc8\x49\x42\xf4\x8b\xfc\x3c\x19\xd5\xdb\xbc\xc9\xb5\xb2\x8e\xdc\x34\xee\x8d\x94\x37\xfd\x2d\xf6\xf6\x67\xec\x22\x7f\x66\xe2\xdc\xad\xf7\xc4\x55\x45\x09\x5f\x98\xc7\xc5\x28\x59\x14\xf3\x50\x5f\x15\xb4\x1b\x23\xdd\x00\xb0\x33\xbe\xe4\x6c\x2e\xc5\xf2\x92\x8c\x71\x59\x75\x43\xaa\x03\xb2\xc1\x5f\x88\x35\x1c\x5c\xc7\xf5\x6b\xa6\xd6\x2b\xbe\x8e\x47\x1b\xd1\x69\x59\x15\x91\xc2\xdf\x6d\x77\x6b\xcf\xd2\x5c\x64\x91\x88\xcf\xe2\x0f\x9d\xf8\xfd\xba\x37\x3c\xda\x3b\x7a\x2d\xae\xc9\x1e\xfe\xf3\x65\xef\xe0\xc5\x90\x6d\xb3\xce\xf1\xf1\xbd\xe6\x9b\x7b\x7f\x6a\xbc\x7b\xfb\xeb\xf1\xf1\xf8\xf8\x78\xfc\xfd\xaf\xdf\xbd\xf9\xdf\x67\x6f\xbf\x7d\xb6\xde\x39\x5f\xd0\xf6\x64\xff\x40\xd8\xd2\x7d\x7f\x27\xb2\xb1\x86\xfe\xe6\x14\xbb\x3e\x9e\xc8\x8e\x62\xcd\xa4\x72\xb2\x49\x92\x0a\xce\x5f\xc9\x28\xcf\x27\xed\x4d\xfc\xed\x6f\xea\x10\x06\x13\x54\x7d\x9c\x2d\xe4\x97\x66\x43\xd5\x6e\xb4\xd8\x43\x64\xd6\x37\x0f\x07\xaf\x5e\x04\xe1\xa0\xa5\xbc\x98\x43\x59\xab\x25\xc1\x0e\xa3\x34\x95\x67\x72\x5a\xac\x88\xa3\x32\xcf\xd0\x29\xb8\xc3\xc1\xee\xe0\xe7\x57\x27\xaa\x83\x13\x83\xa6\xc1\xf0\xe4\xf5\x7e\x7f\xb0\xb3\xb7\x3f\xe8\x9f\x84\xc1\xab\xa3\xd7\x22\x1e\x2c\xdb\xb7\x6f\xd3\xaa\x0b\x43\xc9\xda\x3f\x0c\x06\xaf\x86\x27\xf7\x1e\xe0\xee\xec\x12\xd3\xe4\xf5\xbe\xd8\xc9\x83\xfe\xb9\xb3\x71\x1b\x88\xbf\x67\x8d\x7b\x0d\xb6\xc5\x1a\xf7\x1e\x34\xba\x96\xc9\xfc\xc6\xa4\xa3\xbd\x53\x46\x0b\xd8\x31\x0a\xcb\x38\x3c\xb3\x72\x80\xa6\xac\xe9\x4c\xed\x7a\xc0\x23\x72\xf2\xec\x4d\x19\x47\xc5\x68\xf2\x63\x94\xce\xc5\xea\x88\x8f\xe2\x2f\x72\x0a\xe9\x00\xf8\x8e\x08\x07\xcb\x63\xd3\xe1\x3e\xd1\x8f\x78\xb8\x17\xfa\x67\x0b\x4e\x07\xa2\x6a\x6f\x14\x66\xdf\xd2\x93\x40\xa6\x57\x72\xa8\x52\x87\xf3\xbe\x37\x35\xd4\xf9\x26\x3c\xb5\x03\x32\x3b\x68\xb6\x65\x13\xad\x6c\xab\xb8\xe5\x60\xbd\xc5\xea\x31\xa4\xb7\x7c\x5a\xb0\x94\xd4\x0d\x7e\x63\x18\xec\xed\x67\xad\x26\x75\xd1\x37\x4c\x7f\x64\x3d\xcd\x21\xaa\x9a\x35\xe4\x96\x27\xcc\xb9\xf9\xcd\xad\xa8\x98\x7b\xcc\x84\x45\xf4\x79\x58\xd5\x9f\x32\xe9\xf1\xe0\xf2\xd0\x96\x24\x47\x91\x7d\x88\x0b\xcd\xb3\x0f\x0e\x87\xc9\xc3\x98\x1b\x9b\x66\x85\xac\x90\xad\x0a\x26\xb3\x6d\x2a\x5a\x9a\x44\xf2\x68\x74\xc8\x43\x1d\xbe\x65\x63\x70\x37\x7a\x7b\x9c\x67\xf1\x3a\x0a\xe4\xca\xf0\x1f\x8e\xf7\x5a\xe4\x7d\x8d\x03\x16\x72\x24\x9b\x01\x86\x10\x7e\xd0\xdc\x81\x8b\xe1\x05\x49\x05\x2f\x5c\xf2\xe3\x62\xd0\x64\x70\xda\x91\x6f\xa7\x8f\x75\xd2\xd6\xc4\x3f\xc8\xdc\x31\x20\x70\x02\xfd\xba\x2d\x7f\x5b\x83\xc8\x4f\xce\x02\x9c\xcd\xd3\xf4\x75\x96\xa8\xeb\x6a\x8a\xeb\xf6\x5c\xfe\x81\x10\x5b\x5c\xb7\xd3\xa8\xac\xb4\xc6\x7f\xe0\x6e\x75\xc3\xb6\x40\x89\xf7\x05\xcc\x5e\x80\x08\x5b\x7b\x96\x5e\xee\x23\x80\x3d\xd0\x2c\xae\x5b\x6c\xe8\x59\x54\x51\xd1\x24\x88\x9e\x16\x71\x74\xd1\xc5\xd7\xce\xab\xc1\x65\xf8\x5f\xfe\x41\x7b\xf9\x46\x23\xc0\x6d\x2d\x95\x72\x35\x9a\x0c\xab\x02\xe3\x9a\x77\x83\x8e\x36\xeb\x9e\xa0\xaa\x3a\xeb\x4b\x10\xe4\xda\x49\xcd\x61\x0b\x12\x8f\x70\xed\xf5\x16\x5e\x80\xf5\x3a\x22\x8d\x46\xa3\xf9\x74\x2e\xee\xd2\x3b\xd4\x58\x23\x87\x35\xb3\xf8\xba\x92\x4f\xe9\xbf\xca\xcb\x44\x9d\xe8\x81\xa5\xb2\x63\x46\x32\x38\xa4\x91\xa6\x82\x4b\x56\x9c\x88\xe1\x14\x57\x55\x51\x86\x8b\x3c\x68\x13\xb7\xdf\x2d\xc2\x9a\x88\xfd\x01\x58\xd3\xe8\xba\x39\x4d\x32\x94\xc5\xa3\x76\x6f\x12\x85\x93\xa1\x0e\x81\xb5\xd8\x03\xda\xcf\x28\x9a\x55\x73\x29\x36\xde\xe0\x5c\x81\x4e\x87\xed\x1f\x1c\x0d\xb6\xd8\x91\x38\x74\x5e\x32\xae\xe0\x2e\xa3\x34\xce\xb8\xe3\x6a\xd5\x63\xb8\x13\x35\xb4\x8c\x2e\x6c\xae\xb7\xa7\xd1\xac\x69\x59\x68\xeb\x56\xdb\xd3\x79\x25\x90\x59\xe6\xd3\x58\x99\x1c\xec\x9d\x93\x3e\xac\xb3\x71\x37\x5b\x76\x06\xee\xfa\x3b\xd6\x94\x2f\x0a\xb3\x24\xb3\xfa\xad\x26\xb1\x4c\xd4\x67\xb3\x3c\xbd\x39\x4b\xd2\x94\x5d\x4d\x62\x99\xbc\x9f\x88\x68\xb3\xc8\x60\x17\xce\x5a\xb9\xce\x8e\xd7\xc6\x79\x5c\x66\x0d\x79\x5d\xc0\xf1\x9a\xb8\x60\x46\xde\x65\xf0\x94\x45\xd9\xd8\xea\x7b\x14\xcd\xcb\xb8\x64\x11\x1b\x15\x51\x39\x61\x4d\xad\xac\x66\x51\x59\xc5\xa7\x49\x26\xae\x5a\xda\x7f\xb8\xf9\x8f\x0f\xf1\x3f\x82\x75\x39\x6e\x55\xdc\xf0\x61\xab\x9c\x89\x4b\xa5\x58\x52\xb5\x51\x3a\x88\xa6\xa6\xf7\x6c\x9b\x6d\x76\xd9\x7b\x43\x4d\x86\x98\xde\x73\x62\xd2\x68\x96\x7c\x69\x61\x55\x13\xca\xfb\xb7\xeb\x74\x85\xb3\x68\x1a\x8f\x43\x67\x85\xc4\x4d\x5e\x25\x4d\x23\x71\x25\xa7\x75\x5f\x20\xb6\x60\x82\x42\xec\x76\xbc\x51\x34\x6b\x1e\x86\xd5\x50\xb6\x0c\x8d\x12\x21\xa4\x62\x3d\x16\x58\xdf\xd8\x29\xe5\x78\x0c\x39\x5b\xab\xba\xdd\x1b\x02\x4a\x5d\xdc\xe4\x11\xef\xed\x68\x36\x4b\x6f\xe0\x06\x83\x96\x35\x86\x85\x34\xf7\xa5\x17\x46\xfa\x3f\x8f\xab\xe1\xfc\xb4\xac\x92\x6a\x2e\x0e\xde\x29\x14\xb4\xd8\x10\x4f\x1a\x10\x61\x01\x5f\xaf\x72\x3f\xd9\x8b\x61\x58\xfc\xd9\xb6\x47\x1e\xad\x3b\xcf\xa0\x10\x99\x76\x7f\x9b\x0d\x15\x1f\xba\xad\x01\xce\x75\x76\x1f\xcf\xce\xc2\xac\x57\x0a\x1a\xb0\xee\x6b\x71\x65\x6f\x72\x5b\x33\xf9\x44\x0c\x55\x0f\x98\x0b\xa0\xb4\x12\xe5\xb4\xb4\x5c\xd1\x3c\x3c\x8f\xab\x12\xad\x91\x88\xf4\x6b\x8b\xb0\x76\xfd\xca\xaa\xb8\xcd\x0a\xea\xab\xa7\xcc\xde\x4a\x15\x25\xe9\xab\xbc\x5c\x01\x4b\x42\xda\xb3\x6d\xe0\x69\xa7\x54\x86\x54\x78\x5f\x0b\x1d\x64\x94\x21\xb8\x90\xa5\x0c\xb5\x50\x79\x60\x32\x7c\x6b\x58\x6c\x31\x1c\x5d\xdf\x7e\xbf\xc7\x6b\x40\x18\xd3\x37\x25\x94\xd8\x4d\x16\x48\x6a\xb1\xd1\x84\x38\x57\x0a\x3f\x00\xcd\x55\x22\xf2\x6d\x46\x93\xf6\x68\x12\x15\x41\xd5\x7c\x60\x67\x2e\x88\x47\xea\x1b\xf7\x1a\x5b\x66\xe3\xe9\x5e\xa3\x4b\x8b\xff\x04\xc5\x6a\x75\x9c\x2a\xef\xa0\x4a\x59\x15\x8a\x44\x1f\x20\xbe\xa1\x2d\x8e\xd7\x1a\xc7\x6b\x9e\x36\x8a\x26\x9c\xfa\x8d\xef\x1a\x5b\x98\xd9\xd4\x4c\xc5\x7e\x27\x5a\x88\x37\xa3\x89\xd6\xa6\x22\x56\xff\xd6\xe2\x50\x6d\x7d\xe9\xbf\xd5\xe5\x52\x5b\x9c\x4b\x54\xac\x84\x8a\x4a\xce\xc3\xf7\x47\x13\x57\x20\xeb\x2c\x68\x8c\x18\x4f\xad\x67\x6c\x4a\x64\x0f\xec\x2b\x8a\x90\x50\x33\x63\x1d\xb6\xf9\xc0\x16\xd2\x4a\xbf\x2c\x1d\x43\xd7\xfb\x6e\x9b\x0f\xa3\xaa\x69\x26\x79\x73\x26\xb2\x37\x9d\x28\x0e\x10\x83\xb8\x43\x83\x56\xbf\x6f\x55\x20\xc3\xd5\x42\xf2\xc9\xbf\x38\xa6\xf3\x0c\x67\x92\xba\x92\xce\xb4\x20\xb0\x36\x1a\x00\xa1\x66\x1e\x27\xdd\xa1\xf3\x2d\x79\x4e\x92\x7d\xdb\x39\x2e\xcc\x4d\xe3\xd1\x75\x92\x97\xea\x8a\x71\xf1\xbb\x81\x0a\x7f\xd1\x25\xbf\xc8\xcf\x69\x5c\x31\xf9\xc6\x96\x30\x73\xf9\x27\x75\x13\x99\xba\x2f\x34\xae\xfa\xba\xb8\xb9\x2e\x9f\x92\x2a\x50\x34\x46\xb6\x35\x77\x95\x5a\x6d\x4b\xdc\x56\xbd\xe4\x85\xbb\x30\xe3\xde\x5b\xd4\x4b\x11\xff\x32\x8f\x4b\xae\x58\x9b\x32\x0e\xd0\x62\xf3\x22\x6d\x89\xd7\xbe\x5a\xec\x97\x79\x5c\xdc\xbc\x8a\x8a\x68\x1a\xcb\x2b\xd9\xcf\xf2\x62\xda\x52\x09\x80\x78\xb0\xa9\xce\xfe\x52\x5b\x1d\xd6\x2d\xae\xb2\x0a\xc7\x85\x4a\xdf\x52\x3b\x64\xfc\xaf\x26\x19\x02\x55\x16\x25\xaf\x0b\xee\x07\xce\x8b\x54\x7e\x17\xc7\xc6\x20\xb7\x8b\x3d\x93\x47\x07\xd4\x0d\x4c\x76\x0b\x76\x9f\x35\xbe\x6f\xb0\xfb\xec\x97\x12\xdd\x68\xe9\x1f\x4f\x5d\x19\xd7\xe9\x78\x46\xbe\x4f\x47\xe4\x94\x24\x3a\x96\x05\xdc\xcc\x16\xd9\x60\xcf\x44\x52\xd8\x7d\xd6\x10\xf7\x86\x7a\x2e\xd7\x24\x63\xcb\xf4\xad\x75\x75\x3d\xe1\x9f\x1a\xeb\x9c\x81\x1a\x8d\x75\x98\x2a\x5f\x05\xf7\x7a\x5b\x41\x76\x6f\x24\xa6\xdf\x36\x35\xb0\x7a\xcd\xd4\xe2\xa8\x79\x41\x96\xb5\x5e\x22\xee\xe9\x9d\xc7\x55\x63\xf5\x7e\x7d\x3d\xae\xda\xd6\xc2\x3d\xa7\x9e\x75\xda\x9f\xa1\xcb\xce\xb7\xdb\x9f\xfd\x3f\xd1\xd7\xb7\xcc\xf3\x3f\x51\xf2\xf9\x1d\x4b\xde\xef\x7c\xfb\xad\x1a\x41\x9e\x6e\x28\x59\x64\x1e\x39\x52\x05\x8a\x91\xb6\x18\xbc\x45\x23\xdf\xe0\x93\x2d\x02\xab\xf2\xbc\x48\x97\x54\x7c\x7d\xf8\x42\xd5\x95\x38\x5d\x52\xfd\xe4\xe8\x9f\xaf\x06\x1a\x92\xe8\xea\x64\xf9\x00\x27\x87\xc1\x4f\x27\x30\xca\xdf\x66\x9c\x2c\x05\x09\xb1\x0d\x89\x34\x39\x75\x4b\x5a\x2c\xec\x11\xc5\xff\x9b\x33\x43\xe4\xe2\xd2\x38\x43\x6b\xb2\x1b\x23\x9a\xa0\x5a\x5b\x49\x29\xf6\xbd\xef\xe3\x16\x48\x4a\x2d\x4e\x64\x4f\x92\x94\x48\x4f\xf2\x23\x08\x92\x59\x24\x76\xa8\x1a\x9d\x68\x96\x74\x2e\x1f\xc0\xbb\x10\xe6\xea\x6d\x75\xa8\x11\x9a\x70\x3c\x10\x49\xf4\xca\x9e\x12\x94\x72\xaa\x46\x9f\x84\xfb\x00\x3c\xde\xe0\x5d\x35\xde\xba\x26\xa1\xe2\x1f\x81\x71\x0c\xbf\x6e\x61\x09\xa6\x9a\x4e\xeb\xee\x96\x55\x4c\xf9\xaa\xc8\xa7\x49\x19\xb7\x8b\x58\x1a\x99\xf1\x15\x93\x1b\xe2\x8d\x97\x49\x59\x72\xa7\x58\x3f\xfd\xc4\x00\x80\x2d\x01\x52\x63\x7d\x7d\x01\x00\xed\x7b\x54\x8c\xc2\xd8\x58\xb8\x2f\x6a\xd1\x3e\xcb\x8b\x41\x34\x9a\x34\x5d\xa2\xd9\x8f\xa6\xb1\x75\xad\x2c\x15\x9c\x56\xcd\xb7\x64\xf9\x17\x57\x36\x77\x83\xea\x3b\x43\x3f\x59\x1a\x57\xb1\x71\xb3\x31\xcb\xcb\xaa\xd1\xd2\xa4\x7a\x5f\x10\xd1\x6a\x6a\xd1\xaf\x68\x57\x62\x46\xcc\x42\xeb\xc4\x16\x58\x8d\x7c\x6f\x3b\x30\x97\x1b\x0b\x47\x15\x78\xf8\x8c\x9e\xc9\x6c\xea\x04\xc2\x62\xf6\xba\x3b\x71\xf1\x19\x72\xe0\x0b\x24\x79\x8b\xe2\x6f\x65\x90\x59\x06\xa9\x62\x07\x63\x01\xfd\x7b\x4d\xa3\x4f\xb6\x46\x96\x87\x97\x6e\xa3\x91\x65\x8b\x15\x34\xb2\x55\x71\xb9\x46\xb6\xaa\xaf\xa4\x91\xed\x16\x77\xa1\x91\xad\x1e\xff\xc0\x1a\x59\x1e\x95\xfb\xaa\x91\xbf\x6a\xe4\x7f\x9b\x46\xf6\x32\xe3\x67\x6a\x64\x44\xbe\xb7\x1d\xf8\x2e\x35\x32\x15\x60\x7f\x3c\x8d\x6c\xc9\x81\x2f\x90\xe4\xbf\x44\x8d\xbc\x1b\x57\xb7\x51\xc7\xbb\xe6\x55\xba\x45\xba\x18\x6a\x2d\x57\xc4\x50\x77\x25\x2d\x8c\xaa\xdf\x85\x0a\x86\xee\xfe\xc0\xfa\xf7\x3c\xae\xbe\x2a\xdf\xaf\xca\xf7\xdf\xa6\x7c\x5d\x1e\xfc\x4c\xcd\xab\x09\xf7\x56\x43\xde\xa5\xce\xb5\x04\xd5\x1f\x4f\xe1\x02\xe3\x7f\x81\x34\xfe\x25\x6a\xdb\x17\x49\xc9\xd5\xad\x7e\xd1\x71\x89\xb2\xe5\xb5\x03\xbb\xae\x57\x27\xe2\x7a\xcb\x15\x2e\xae\xbd\x92\xca\xb5\x1a\xdc\x85\xd2\xc5\x1d\xfe\x81\xd5\x6e\x9a\x94\x5f\xf5\xee\x57\xbd\xfb\xef\xd3\xbb\x3e\x46\xfc\x4c\xcd\x6b\x68\xf7\x96\xa3\xde\xa5\xf2\x25\x62\xeb\x8f\xa7\x7e\x91\x00\xf8\x02\x69\xfd\x4b\xd4\xbf\xaf\x67\xe3\x5b\xee\x08\xcb\x16\x2b\xf8\xbc\x56\xc5\xe5\x5a\xd8\xaa\xbe\x92\x1a\xb6\x5b\xdc\x85\x1e\xb6\x7a\xfc\x03\x2b\xe2\xb9\x98\xc7\x57\x55\xfc\x55\x15\xff\xdb\x54\xb1\x97\x19\x3f\x53\x17\x23\xf2\xbd\xed\xc0\x77\xa9\x8e\xa9\x00\xfb\xe3\xe9\x63\x4b\x0e\x7c\x81\x24\xff\xc5\x69\x64\xed\x10\xcb\x33\x16\xf2\x8b\xd1\xc4\xbb\xe2\x23\x36\x16\x77\x51\x35\xa1\x22\xeb\xaa\x28\xc5\x08\xda\xb7\xae\xa2\x51\xbc\x48\xef\xd6\xd6\xc5\x2a\x97\xff\xcf\xa8\xdd\x59\x74\x1e\x0f\xe5\x1b\xc3\x07\x33\x79\x2c\xa4\xcd\x8e\x26\x31\x9b\xaa\x7b\xb6\xb3\xf9\xf4\x34\x2e\x58\x7e\xa6\x66\xca\xaa\xdc\x9c\xb5\xce\xc4\x19\x9c\x22\x2e\x67\x79\x56\xc6\x6d\x7f\xef\x47\xf9\x85\xb8\x02\x14\xba\x0f\xf8\xf7\x24\x8b\xd4\x9d\x48\xbc\x58\xf6\x18\x8f\x65\x5a\x6b\xc4\x66\x45\x7c\x99\xe4\xf3\x52\xbc\x47\xc5\x87\x7c\xb7\x1b\x57\xef\xf8\x00\xe2\x51\xab\x24\x1b\x27\x23\x61\x0d\x89\xfa\xf2\x59\x0a\x79\x52\x95\x95\xe2\x21\x31\xce\xc0\x55\x92\xcd\x7d\x50\x9d\x25\x71\x3a\x7e\x19\x95\x17\xaf\xa2\x6a\x52\xb2\x0d\x31\xdf\x32\x16\x97\x77\x8b\x32\x36\x8d\xca\x0b\x41\x68\xa5\xa7\xb9\x20\x18\x6b\x42\x43\x39\xf2\xa8\x48\xaa\xb8\x48\x22\x36\x2f\xe3\xb1\xb8\xfa\x23\x4e\xe3\x51\x25\x90\x44\x91\x27\xfa\xdd\x3b\x63\x59\xae\xe1\x36\xad\x93\x92\x89\x0b\xc4\xcf\x12\xde\xcb\x24\xce\x18\xc7\x81\xea\xe0\x2a\x49\x53\x76\x2a\x9e\x2f\xd6\x38\x6b\xb3\xa3\x83\xfe\x01\x93\x12\x44\x41\x97\x46\xd9\xf9\x3c\x3a\x17\xf5\xfe\x21\xbe\xc4\xd7\xb3\x22\x2e\xcb\x24\xcf\x38\x52\x33\x76\x1a\x1b\x30\x8b\x58\x5e\x1a\x61\x0e\x24\x9e\x46\xbc\x64\x3e\xcb\x33\x89\xf1\x58\x5b\x9c\x0c\xde\xa7\x55\x48\xe7\x85\xfc\x53\x54\xe5\x45\xc9\xde\x6d\xbf\x6b\xb1\x77\xfb\x07\x47\xfc\x3f\xc1\x7e\xff\x9d\x78\xc4\xe5\xdd\xc1\xa1\x58\x3a\x3c\x6c\x94\xe6\xd9\xb9\xbc\x41\x5d\x9c\xe3\x9a\x9f\x9d\x25\xd7\x7c\x76\xe3\x51\x54\x8c\xf5\xab\x8f\xef\xbe\x7d\x27\x10\xc5\xff\x2f\x16\x49\x5e\x00\x80\xa0\x48\x32\x16\xa9\x39\xc3\x0c\x35\x0d\xcc\xcb\x98\xc9\x27\xe8\xc7\xec\x97\x79\x5e\xc9\xa7\xbd\xcf\xf2\x42\xdf\x38\xa9\x88\x69\x94\xce\xc7\x31\xbb\x9a\x24\x55\x5c\xce\xa2\x51\xcc\x91\xc2\x29\x30\xce\x2a\x36\xe7\x9a\x27\x1e\x55\xf1\x98\x9d\xc6\x93\xe8\x32\xc9\x0b\x03\xd2\x30\x9f\xc6\x2c\xbe\x8e\xa6\xb3\x54\x22\x9e\x43\x14\x15\xf1\x96\xae\xf0\x2d\x93\xc8\x7f\x37\x4e\xca\x59\x1a\xdd\x9c\x64\xd1\x34\xde\x3e\x9a\x7c\xfb\x4e\x91\x01\x04\xd4\xd8\xd5\x24\x2f\x63\x86\x2b\xf2\x1e\xc4\x0d\xea\xa5\x44\xd4\xf1\xda\xd1\xe4\x78\xad\xbe\xdf\x63\xfe\xbf\xb5\xa3\xb8\xac\xd4\xe9\x28\xf9\x01\xc6\x32\x34\x54\x4d\x78\x2f\xaa\xb1\x38\x8b\x40\x70\x71\x9a\xcb\xf1\xe2\xb2\x3a\x5e\x13\x8b\x78\xbc\xa6\xfa\x94\x00\xb8\x16\x7a\x9d\xec\xf9\xcf\x37\xce\x2f\x1f\x74\x24\x66\x7e\x1f\x33\x5c\x8b\xd8\x05\xa6\x38\xd5\x41\xa2\xcd\x49\x29\x1b\xd9\x26\x3a\xf4\xb6\xd0\x4c\x37\x92\xf7\xd6\xa3\x56\xaa\x95\x3b\xac\xea\x6f\xe1\xb8\xb6\x6c\xbd\xcd\xe0\xa2\xe5\x09\x97\xbc\xed\x99\x6a\x6b\x83\x40\xbb\x5e\x08\x87\xe8\xfe\x36\xc3\xeb\x06\xf6\x98\xea\xeb\x7f\xb7\x43\x72\x1e\xdf\xa9\x3f\xb2\xcc\x48\x59\xec\x8a\xd8\xcc\x7a\x8b\xde\x97\xfa\x1b\xf5\x3b\x7a\x0b\x6c\xb5\xff\x58\x4f\x83\x0a\xb5\xaf\x52\xe9\xab\x54\xfa\x83\x49\xa5\x2f\xce\x67\xc4\xe7\x7a\xa4\x31\x76\x4c\x42\xb8\xb6\xa4\x91\x95\x77\x51\x45\x8f\x97\x87\x2a\xb9\xa1\xdb\xda\xaa\xde\xb0\x6d\x7d\xed\x45\x21\xdb\x23\xe4\x1f\x14\xb1\xbc\xa3\x96\x5b\xd0\x32\xc9\xfd\xb8\x26\xa0\x5b\x3b\xd6\x7f\xbd\xbd\xf8\x35\x6c\xfb\x1f\x2a\x8f\xfe\xbd\x61\xdb\xa5\xcc\x78\x97\x76\x12\x95\x0c\x9f\x1b\x98\x5d\x24\x9a\xfe\xa0\xa6\xd2\x17\x41\xba\x5f\x9c\x2a\x45\xfb\xa1\xa0\x49\x6b\x15\xa9\xac\xbb\x0b\xf5\x3c\xea\x0e\xd5\x59\x12\x83\x45\x35\x97\x07\x61\x71\xe5\xda\x28\xac\x98\xc1\xde\x58\x29\xd3\x79\x96\xfc\x32\x8f\x59\x32\x8e\xb3\x2a\x39\x4b\xe2\x42\xdc\x1e\x64\xa2\x88\x22\xfc\x74\xa8\x03\xa6\xa7\x37\xfa\x42\x88\x36\xdb\xcb\x26\x71\x91\x54\x3a\x8c\x3a\x4e\x8a\x78\x54\xe5\xc5\x8d\x5a\x65\xf6\x43\x7c\xd3\x66\xfb\x79\x25\x2e\x05\x13\x8f\x83\xb0\xc3\x38\x1a\x6f\xe4\x59\x7a\xe3\x09\x74\x22\xfd\x2e\x06\x06\xed\x7e\x35\x49\x46\x13\x7d\x43\x4a\xa9\xa3\xc0\xb2\x2c\x97\x51\xe1\x32\x2e\x2e\xe3\x62\xa5\x58\x11\x42\xd1\x1f\x48\xf9\x77\x3e\xca\xd5\x48\xc6\x9f\xee\xc6\x0e\x50\x43\xf0\xff\xe8\x5b\x2b\x9b\x0d\x34\x48\x8b\xbd\xbb\xf7\x11\xeb\x74\x45\x35\x8d\xb7\x9f\xde\xad\xfb\xb5\xbe\xa9\xf1\x3b\x29\x7e\xdd\xff\x42\xdd\xff\xd5\xa2\xf9\x8f\x55\x0b\x4b\x2c\x9a\xa8\x1a\x4d\x7e\x3f\x93\xc6\x23\x19\x57\x34\x69\x28\xeb\xdd\x66\xa4\xe5\xd6\x8d\x98\xf5\x2d\xbb\xfd\x43\x98\x37\xae\xc4\xba\x73\x91\xf3\x45\x70\xc5\x17\x67\x2c\xa1\xb3\x52\xb0\x5d\x5d\x1f\x76\xd8\x8d\xab\x25\x31\x07\x5d\x63\x59\xc0\x41\xd7\x5b\x21\xda\x60\xaa\x7a\x43\x0d\xc9\x78\x41\x6e\x98\xbf\xa3\x3f\x94\x29\xf1\x3b\x1b\x11\x5e\x5e\x4e\x16\x59\x0e\xc9\xef\x67\x34\x24\x4b\xec\x85\x2f\x42\x86\xfc\x1f\xee\xa8\x50\x4e\x5a\x59\xa9\xae\xaa\x4e\x2d\xae\xbe\x93\x2d\x15\x24\x4f\xfe\x08\x6a\x74\x99\x02\xbd\x2d\xbb\x7d\x11\x14\xff\x25\x6a\x4d\x73\xe7\xc7\x2a\xd1\x7a\x59\x79\x89\xe6\x44\x95\x96\x29\x4f\x54\x75\x05\xfd\x89\x6b\xff\x56\x15\x8a\xfa\xfa\xaa\x45\xbf\x6a\xd1\xff\x54\x2d\xaa\xee\x6c\xf8\xdd\x14\xa9\x87\xa5\xee\x5c\x97\x52\x26\x5f\x38\xc0\xc2\xdb\x3e\x16\xc9\x99\xaf\x4a\xf5\x0f\xca\x00\x5f\x9c\x52\xfd\x56\x6a\xd2\xad\x34\x29\xab\x69\x3c\x3d\xe5\x54\xa6\xaf\xfa\x1e\xe7\xa3\xb2\x3d\x4d\x46\x45\x5e\xe6\x67\x95\xb8\x62\x3f\xce\x36\xe6\x65\xe7\xbc\x88\x66\x13\x91\x3b\x2f\x1a\x8b\xc3\x6b\x1b\xaa\xf5\xf7\x97\x49\x7c\xb5\x2d\x6a\x6c\x14\x71\x59\x6d\x6c\xb6\x1f\x1c\x2f\xcb\xc6\x7e\x29\xdb\x1e\x2f\x4a\xc7\x56\x75\x56\xc8\xc7\x56\x35\x57\x4b\xc8\xd6\x95\x6b\xf7\x02\x92\xb1\x15\x73\x4f\xc6\x6e\x15\x94\xb4\xed\x2f\xfc\x9a\x73\xfd\x35\xe7\xfa\x6b\xce\xf5\x7f\x63\xce\xb5\x12\x2f\x7f\x34\xb3\xbd\xa3\xa4\x79\xe7\x5e\x11\x9f\x7d\xb5\xe1\xcd\xe0\x5f\xb3\x34\xbf\x66\x69\xfe\x87\x9b\xa8\xff\xc7\xb9\xe3\xc4\x9e\xba\x8d\x83\xe6\x0a\x9d\xdb\x0c\x78\xa7\xf9\xe4\x60\x6c\xfe\x41\x5c\x35\x9f\xc0\xbe\x2b\x89\xfb\x55\xe8\x7d\x15\x7a\xff\xe1\x42\xef\x8b\xf3\xcb\x99\x76\xcc\xa3\xf1\x58\xb2\xf6\xed\xdd\xf2\x59\xbe\xd8\x2d\xff\x53\x15\x9d\x96\xdb\xbc\xdb\xe3\x85\x81\xf4\x60\x3c\x96\xf2\xf0\xb8\x36\x8c\x6e\xaa\x2c\x0b\xa2\x9b\x8a\x2b\x84\xd0\xa1\x6e\x7d\x00\x1d\x27\xbb\x27\xc2\x93\x8b\xc6\x63\xbb\xde\x92\x9b\x4c\x6a\xc6\xfc\x6a\xb1\x7f\x19\x16\xfb\xd7\x5c\xb7\xff\x50\x91\xfd\x7f\x99\xbd\xef\x48\x96\xdf\xd7\x4c\xb5\x85\xde\xdd\xe4\xf2\x63\x89\xfb\x5f\x6f\xa3\x7e\x11\x0c\xf1\xe5\xda\x30\x45\x3c\xcd\x2f\xe3\xcf\x35\x63\xe4\x2e\xdb\xb2\xfd\x85\x7a\xf3\xe5\x50\x8c\xbe\xcc\x82\xc1\xb5\x96\x19\x31\xb8\xee\x0a\x76\x8c\x55\x7d\xb1\x29\x63\xed\x31\x98\x62\x65\xe0\xec\xf9\x0d\x1e\x89\xdd\xd5\xcc\x1b\x0c\xca\x1f\xd6\xc2\xf9\xa8\xe6\x7f\xc2\x3f\xfe\x97\x9b\x3b\x7e\xa0\x11\x82\x5c\xe0\x0d\x35\x2d\x98\x03\xaa\xf3\x3b\x4d\x05\x46\xf8\x6f\x37\x75\x7e\xef\xb4\x09\x9f\xf8\xf9\x2c\x7b\xc7\xcf\x77\xb7\x1a\xfe\x2e\x53\x2a\x88\xc4\xfe\xa3\x19\x41\x75\x52\xec\x73\xc5\xd0\xef\x22\x09\xbe\x08\xf6\xfb\x32\x0c\x2b\xef\x13\xc5\xa3\x68\x1a\xa7\xe2\x69\xeb\x6f\x3b\xe6\x35\xe2\x8f\x0b\xaf\x47\x6e\x2d\xb9\xbb\xf5\x93\x7a\xca\xb8\xdd\xee\x8c\xd2\x24\xce\x2a\x73\x29\x62\x03\x8d\x70\x98\xa7\x31\xee\x9d\xff\x5d\x7a\xda\x96\x71\x55\x25\xd9\x39\x6f\x0b\xd0\xc7\xd9\x22\xe0\x93\x8c\x2f\x4b\x30\xaf\x26\x32\x6d\x02\x75\x3a\x89\xd3\x19\xe7\x9d\x68\x5e\x4d\x1a\xc7\xd9\x71\xa6\x9e\x44\xae\xa2\x2a\xe6\x8c\xac\xb8\xf8\x2c\x39\xdf\x12\x67\x2a\x5b\x82\xa2\xb3\xa4\x4a\xa2\x34\xf9\x10\x8f\xb7\xd8\x59\x94\x96\xb1\xf8\xac\x67\xb5\xc5\x3e\x7e\x12\x1f\x0a\x3e\x05\xd4\x4e\x66\x2e\xc4\xe3\xc0\x54\x7c\xf3\x96\x4b\x25\x33\xec\x79\x5c\x69\x09\x82\x07\x56\xd0\x3c\x93\x3f\xda\xf2\xb3\x84\xa4\xdc\xc3\xb0\x90\x8a\x08\x4e\x51\xfb\xdc\x3c\x28\x51\x0e\xf3\xa2\xb2\x5a\x7c\xb4\x54\xb0\x22\x64\xb9\xa1\xdf\x94\xbd\xe9\xe9\xad\xb7\xcb\xbc\xa8\x9a\xcd\x68\xb3\xc5\xa2\x87\xeb\xa8\xb1\xe4\xf5\x68\xb3\x9d\x67\xaf\x8a\x98\xeb\xf0\x72\x18\x4d\xd5\x90\x9c\x85\x84\xe6\x8f\x1e\xd6\x96\xaf\xe3\x27\xc9\xf5\x7b\xc0\x9b\xed\x64\xdc\x4e\xf3\x51\x94\xc6\x9c\xce\xa3\x22\x6e\x46\x0f\xdb\xc9\x78\x5d\x57\xa5\x8f\x76\x2f\x00\xc0\xed\xa7\x16\x14\xc3\xeb\x9c\xd3\xe5\xfa\x16\x71\x90\xa6\x40\xeb\x72\x31\x1d\xac\x6b\x3c\x69\x76\xe6\x73\x96\x25\x74\xfd\x55\x0d\x8b\x04\xa6\xf3\x4a\xa4\xf0\x18\x22\x78\x71\x10\xf4\x4f\xc2\x83\xfd\x9d\xbd\x5d\x26\x57\x02\x9e\xcd\x56\xd8\xc2\x64\xc1\xb6\x55\x29\xc0\x3d\x1c\x1c\x9d\xec\xed\xef\x1d\xed\x05\x2f\xf6\xfe\x35\xe8\x9b\x5e\xc4\xea\x92\x4e\x10\xc9\xb0\x6d\x59\xc3\xee\x28\x08\xc3\x83\xd7\xfb\x47\x43\xd3\x8b\x21\x0b\xbb\xa3\x08\x9e\x50\x30\x2f\x4a\x58\x1d\x1d\x1e\xbc\x18\x40\x2f\x82\x55\x48\x17\xe2\x1b\xdb\x96\x65\xd0\xf8\xe8\x60\x77\xf7\xc5\xe0\x64\x38\x78\x31\x08\x8f\xf6\x0e\xf6\x35\x48\x14\x22\xd3\x9b\x44\xac\x56\x4d\xd9\x38\xbe\x66\xb5\x2b\x92\xf0\xe2\x83\xb3\xa6\xee\x83\x2f\x0c\xef\xc3\x6a\xfd\x8c\x6d\x6c\xb2\xef\xeb\xba\x28\x67\xe2\xa1\x7f\xdc\xa2\xc5\xc4\x93\xf6\x35\x0d\x66\xf3\x72\x82\x06\xc4\x48\x92\x93\x1c\xf4\x57\x46\x3b\xed\xdc\x83\x7e\xfe\xdf\xd7\xaf\xfa\xc1\xd1\xc0\xc1\x9c\xcc\x76\xd2\x8d\x57\x41\xa0\x21\xf6\xb3\x24\x1b\x8b\x22\x3d\x13\xce\x10\xea\x67\x3b\x91\xaf\x85\xdb\xdd\x4b\x16\xf6\xd1\x4c\x0d\x0a\x1d\xf8\xf0\x8c\x0e\x07\x98\x3a\x81\x3a\xd4\xdc\x96\xa3\x89\x8b\x62\xf9\x7c\x3f\x30\x63\x34\xb2\x58\x31\xcd\xa3\x71\x28\xb9\xac\xf9\x91\x8d\xf2\xe9\x34\xa9\xd8\x27\x87\x1d\x65\x41\xb3\x81\x38\xb7\x01\xf6\x35\x82\x39\x2a\x6f\xb2\x11\xd2\x26\xd0\x6b\x4b\xa4\x2c\x45\xd5\x68\xc2\x3e\x99\x7e\xa3\xab\x28\xa9\x4c\x41\xb3\x71\x16\x57\xa3\x89\x9e\x41\x63\x7d\x41\x25\xa1\x4b\x75\x0d\x0d\x1e\x11\x0b\x8d\x16\xab\x8a\x79\xec\x01\xd0\x1a\xc7\x07\x23\x67\xdf\xbc\xda\x55\xca\x0b\x00\x26\x7a\xb7\x89\x6a\xb5\xe7\x65\x5c\xb4\xc5\xc6\xea\x3a\x26\x32\x7d\xd5\x2c\xa7\x5b\x31\x93\x45\x86\x47\xd3\x68\x0b\x65\x39\x6f\x61\x40\x94\x40\x9c\x17\x42\x9e\xb6\xe5\x75\x05\x2d\xdd\x82\xfb\x42\x5c\x51\x63\x31\x2f\xf5\x97\xb9\xed\x96\x93\xca\xbc\x14\x94\xfb\xf0\xc1\x26\xd2\x4d\x16\x3f\x08\x09\xa5\x9b\x8c\xa3\x2a\x6a\x63\x86\xa3\x08\xd7\x04\xda\x00\x0e\x66\xbf\xfe\xca\xde\xbc\xd5\xfa\x46\x3f\x8a\xaf\xda\xc2\x42\x96\x93\xfc\xea\x65\x5c\x96\xd1\x39\xf7\xec\x90\x9e\xac\x92\x2a\x8d\xb7\x58\x63\x27\x4a\x52\x99\x7a\x28\x16\xcc\xf4\xdf\x6e\xb4\xa0\xf2\x38\x2e\x47\x5b\x8c\x4c\xf1\x28\xbe\xae\x50\x1d\xf9\x71\x8b\x35\xc6\x51\x76\x1e\x17\x0d\xa3\x67\x5b\xec\xa3\x40\xf0\x96\xa0\x14\x83\xb4\x4f\x35\x24\x23\x2d\xb8\xdf\x83\x5e\x16\x52\x8c\xd7\x90\xbc\x5b\x52\xb9\x3d\xb1\x18\x5d\x66\x51\xca\xe9\x3c\x1b\x0b\xdd\xe6\x23\x15\xa1\x20\x1b\x4a\x35\xfe\x5e\x44\x22\x3a\xff\xf7\x52\x48\x95\x9f\x9f\xf3\x15\xe2\x12\x38\xc9\xb3\x20\x4d\x31\x8d\x28\x13\xb8\xa5\xac\x2a\x20\x0e\x55\xd0\xf6\x5b\x61\xec\x7b\x0b\x77\x8e\xde\x6c\xb4\x38\xfa\xd8\xd6\xf2\x5a\xed\x76\xdb\xd6\x46\x6f\x3d\x22\x51\xfa\x1b\x8b\x65\xa2\xb1\x6c\x7c\xa4\x2e\xa9\xe2\x4c\xac\x86\xa3\x84\x6e\xcd\x09\x67\x79\xc1\x9a\x96\x54\x62\xf9\x59\x8d\xaa\x5b\x27\xd6\xba\x52\xc6\xea\xbf\x03\x31\xb1\xb1\x65\x88\xeb\xa4\x6f\x64\x6f\x13\xe2\x5e\x26\xb4\x2d\x7f\xb0\x89\xba\xbe\x3d\x33\x1a\x76\x84\x0f\xc6\x3a\x23\x5f\x19\x4b\xc6\x5b\xc8\x06\x69\xd9\x85\xf6\x8c\x25\xc5\xe2\x1a\x9f\xac\xfa\xd2\xf4\x10\xc9\x38\xce\x30\x22\x39\x67\x8b\xbd\x69\x04\x56\x97\x8d\xb7\x56\x77\xf0\x87\xf9\x09\xb2\x64\x55\x69\x22\x51\x9e\xa7\xdc\x93\x39\x6f\x36\x76\xf3\x24\x3b\xe7\xdc\xac\x5e\x17\x58\xc7\xf5\x24\xa1\xdb\xa6\x1e\x97\x0a\xac\xdd\xd6\xcb\xdd\xf2\x62\xc1\xf0\xad\x2b\x6a\x18\xa1\x59\x69\xbc\x7e\x84\x15\xd0\xe8\x1e\x27\x32\x0f\x9a\xfb\x52\x2d\x06\x52\xc4\x2b\x5a\xf0\x80\x46\x62\x80\x90\x25\x43\x22\xbf\x0a\xa3\xe6\xb3\xa4\xa0\x0a\x1c\x68\xa8\x5d\x41\x68\x8f\xfd\xe6\xc1\xdb\x3b\x93\x88\xcb\xe6\xf7\xec\xae\x67\xe7\x93\xf3\x8d\x50\xe4\xf4\x67\x79\xa5\x2b\x4f\xe7\x69\x95\xcc\x50\xab\xc6\x5d\x4c\x53\x53\x63\x9d\x99\xde\xf0\x08\x59\x15\x92\xfa\x12\xa4\xec\x37\x5f\xc5\xac\x16\x30\x22\x5e\xf6\x87\x90\xb3\x9f\x25\x3f\xc5\xf4\xfe\x8b\x04\xa8\x8e\x1b\x7f\xa1\x12\x94\x4c\x6f\x89\x08\xd5\xb5\xff\x4f\x65\xa8\x8a\x60\xa8\x7d\x2e\x75\x75\xa0\x9c\xa5\x38\x93\x34\x8b\x46\x5a\xd1\xcb\xa8\xb4\x90\xa0\xc7\x99\x31\xb1\x55\x30\x5b\x84\x3e\xc4\x6f\x13\x93\x14\x5d\xaf\xb5\xd6\x54\x64\xbd\x51\xc4\xe7\x71\x26\x8f\xa9\x6d\x14\xf3\xac\x4a\xa6\x71\x47\xfd\x17\x42\xfb\xc1\x6c\xa6\xe3\xed\x9d\x91\xde\xa8\x28\x3b\xc1\x6c\xd6\xbe\x9c\xa3\x7a\x65\x95\x17\xb1\xa9\x29\xfe\x42\x11\xf9\x68\x36\xdb\xcb\xce\x72\x1d\x8a\xe1\x33\xd9\x62\x8d\xc0\xc2\x2f\x97\x43\x0d\x1b\xe5\xc9\x28\xcf\xb6\x58\xa3\x8a\xaf\xab\x8d\xcb\x51\x54\x8c\xd5\xe7\x72\x27\x49\xe3\xc1\x38\xa9\xf2\x02\x87\xf0\xe3\xeb\x2a\xce\xc4\x71\x3e\x27\x36\x5f\xe4\xf3\x4a\xb8\x70\x6f\x78\x45\x45\x34\x0a\x0c\xba\xcc\x5c\x50\x6d\xb1\x46\x47\xff\x0d\xd3\x46\x32\x2d\x9a\xcd\xb6\x38\x72\xb0\x8b\x74\x9c\xbd\x85\x11\xb3\xe8\x72\xaf\x8a\xa7\x35\x63\x06\x64\x4c\x3e\xd3\x97\x91\x38\xec\x98\x6e\x69\x74\xb5\xf9\x57\x55\x41\x4c\x00\x8d\x5f\x03\xbb\x86\xfe\x5d\xe7\xde\x47\xd3\xcb\xf8\x53\xe7\x9d\x07\x4e\x1f\x8d\xa9\x36\x6a\x03\x84\xe3\xac\x25\x17\x4c\x4e\x46\x91\x5c\x5e\xc4\x92\x98\xde\xb6\xd6\x04\x55\xae\x6d\xbd\x59\x33\x39\x01\x6b\xad\xb5\xf3\x34\x3f\x8d\xd2\xb5\xd6\xda\x28\x8d\xca\x32\x3f\x5b\x6b\xad\x89\x38\x60\x3c\x96\x7b\x13\x6b\xad\xb5\x71\x3e\x9a\x4f\xe3\x8c\xff\xec\x0f\x86\xe1\xe1\xde\xab\xa3\x83\xc3\x21\x6f\x22\x6e\xa5\x1d\xa4\xb1\x2a\xdd\x1b\xfc\xf5\xa4\x7f\xf0\xf2\xa4\x3f\xd8\xd9\xdb\x1f\xac\xb5\xd6\xd4\x51\xc7\x9b\xbd\x72\x90\xcd\xa7\x71\xc1\x99\xf6\x65\x3e\x9e\xa7\x31\xef\x56\xc0\xf0\x4a\x55\x31\x9f\x05\xcc\x6b\xad\xb5\x9f\xe2\xe8\xe2\x65\x34\x5b\x6b\xad\x4d\xa2\x72\xad\xb5\xb6\x1f\x1c\xed\xfd\x38\x38\xf9\x69\x10\xfc\x70\xf2\x32\x78\xb5\xd6\x5a\xcb\x05\x80\xcf\x45\xe9\x5e\x56\xc5\x45\x16\xa5\x43\xce\x64\xa6\xaf\x69\xc2\xb9\x48\x65\x31\xdc\xbb\xf7\x80\x77\x96\x8c\xc7\x71\xf6\x43\x7c\xc3\x5b\x25\xaa\x95\x9c\xaa\xfa\x78\x1e\x57\x07\x57\x99\x86\x8b\xab\x85\xd2\x74\x68\x97\x0d\xc5\x39\xcf\xba\xd2\x7e\x5c\x8e\x8a\x64\x56\xe5\xc5\xd2\x0a\x1c\x94\x72\x27\x2f\x46\x62\x49\xd4\x4c\x87\xff\x7c\xd9\x3b\x78\x41\x11\x95\xc4\x1c\xc6\x2a\x97\xe7\x19\xd7\x5a\x6b\x12\x88\xb5\xd6\xda\xeb\xa1\x6e\x73\x12\x0c\x4f\x5e\xef\xf5\xd7\x5a\x6b\x57\x45\x34\x9b\xc5\xe3\x9f\xe2\x34\xfd\x21\xcb\xaf\x32\x59\xb9\x66\x09\xd6\x5a\x6b\xd1\x8e\xda\xe9\x35\xab\xfb\x52\xe4\x51\xad\xb5\xd6\x4e\x93\x8c\xff\xe7\xd5\xe1\xc1\xd1\xc1\xd1\x3f\x5f\xf1\xe5\xcd\xa2\x2a\xb9\x8c\x77\xeb\x27\x25\x2b\xf4\xe9\x28\xbe\x76\x02\xcf\x7e\xec\x0f\xae\xe5\x2a\x99\x96\xaf\x3c\x64\x25\x28\xc6\x9a\x65\x39\x54\x94\x24\x1b\xc9\x35\x96\x17\x29\xaf\xb5\xd6\xee\xad\xb5\xd6\xb8\xed\x19\x9c\x4b\xda\x1d\xbe\x1a\x84\x7b\x03\x4e\xd5\x3f\xfe\xf5\xe4\xc7\xc1\xe1\x70\xef\x60\x9f\x57\x53\x5b\xe0\x12\xbf\xc3\x93\xa3\x83\x93\x17\x83\xfd\xdd\xa3\xe7\x6b\xad\x35\x28\x1a\x1e\x1d\xee\x85\x47\x27\x2f\x07\x47\xcf\x0f\x38\xda\x77\x82\xbd\x17\xc3\x93\x83\xfd\x93\x57\x87\x7b\x2f\xf7\xf8\x6a\x0e\x0d\x1c\x8a\xca\xfa\x07\x2f\xf7\x2a\x09\xba\xa0\xc4\xd2\xb0\xdb\x48\x83\xa8\xbf\x0d\xa6\x33\x81\xb6\xfc\xf4\xfd\x5a\x6b\xcd\xd4\xbb\x90\x1d\x49\x1d\xcc\xdb\x71\x61\x56\xcc\x47\x9a\x9e\x82\xa2\x88\x78\xb3\xcb\xb8\x28\xe5\x8a\xaa\x5f\xa5\xa8\x9c\x5f\x48\x52\x9a\x15\xf9\x28\x2e\x4b\xcc\x27\x9b\x92\x34\xb8\xac\x31\xbc\x35\x8a\x05\x25\x47\x59\x74\x1e\xf3\xfe\xc3\x28\x1b\xc5\x7c\x49\x82\xeb\x24\xb7\x5a\x3f\xc4\x7f\x3c\x12\x5c\x66\x99\xff\x82\x7c\xe5\x7f\x23\xd5\x36\x81\x11\x74\x57\x71\x59\xc9\x15\x92\x33\x3b\x4b\x38\xad\x4f\xe2\x68\x1c\x8b\x2a\xbc\xb7\xbc\x48\x3e\x44\x8a\x58\x9f\x07\xc3\x13\xb5\x84\x27\xc3\xd7\xaf\x5e\x1d\x1c\x1e\xad\xb5\xd6\x8e\x0e\x4e\xf8\xd2\xec\xef\x9e\x1c\x05\xbb\xf4\x6f\x54\x4f\xa0\xea\x55\x91\x57\x79\x75\x33\xe3\x23\x8a\xa5\x51\xd0\xec\x1d\x0d\x0e\x83\xa3\x83\x43\x2e\x9b\x62\x0e\xd4\x2f\xf3\x78\x2e\x2a\x0d\x4f\xf6\x0e\xf8\xc2\xaa\x44\x2a\x3e\xb1\xa8\xbc\x90\x44\x6c\x09\x24\xd9\x94\x7e\xda\xd7\xc4\xac\x1a\x1f\xdd\xcc\x62\x91\x80\xc5\x69\x25\xbe\x52\x05\x61\x34\x8b\x4e\x93\x34\x91\x9c\xe3\xf9\x6c\xb8\x79\x6f\x78\xb2\x7f\xd0\xe7\x8c\xb9\x73\x70\x18\x0e\x38\x21\x66\x79\x95\x9c\xf1\x86\x89\x98\x90\x90\x89\x71\x71\xce\xff\x2b\x93\x1a\x04\xa5\xf4\xe6\x67\x67\x62\x51\xe7\x55\xc2\x97\x94\x9b\xca\xea\xaf\x52\x48\x64\x2e\x6a\x64\x3f\xd2\xc1\x91\x53\xec\xeb\xdf\x53\x2d\x23\xe6\x05\x6f\xce\x3d\x1a\x89\x26\x9c\x22\x21\x19\x66\x2a\x56\xff\x45\x7e\x15\x17\x61\x24\x66\x2d\xaa\xbd\x16\x0d\x7f\xe1\x95\x70\x58\x39\x28\xcb\xe4\x3c\xe3\x5f\x8e\xf2\xd7\xa5\x00\x71\x86\x3b\xbc\x67\xc0\xb9\x67\x68\x84\x6b\x55\x41\x43\x8a\x4d\x34\x46\x69\xd2\x09\xee\x8b\x8b\x19\x32\xb4\x8e\x68\x4b\x10\xb8\x82\xa3\xc0\x99\x98\xb7\xd0\x7c\x27\x42\x30\x1a\xfe\xc4\xc4\x14\x1e\x1c\x1e\x0e\xc2\xa3\x13\x23\x3a\x4f\x76\x07\x47\x47\x83\x43\x89\x45\x53\xf3\xe0\x0c\x11\x1e\x6e\x2f\xb7\xdb\x8f\x26\x49\x89\x29\x33\x94\xc2\xad\xf7\x7a\x77\xf7\x9f\x27\xc3\x60\x27\x38\xdc\x3b\xd1\xa4\x3a\x94\x04\x67\x77\x5d\x15\x09\xc7\xfe\xeb\x7d\x45\xf7\x83\xfe\xc9\x3f\xc5\xea\x26\xa3\x8b\x9b\xe7\x32\x3f\x83\xd3\xc5\x75\x3c\xe2\x3c\x37\x89\x8a\x80\xe3\xef\x2c\xb9\x3e\x8c\xcf\x07\xd7\x33\x22\x5e\x5f\xe4\xe7\xc9\x48\x40\xc7\x0b\x07\xb2\x95\x60\x24\x0d\xa2\x54\x1d\xa5\xc0\xc0\x0b\xbd\x89\xbc\x1f\xbc\xe4\x14\x1a\xe6\xa9\x8a\x4b\x5b\x7f\x58\x3c\x38\x3c\x79\xf5\xfa\x90\x57\x3e\x4b\x73\xb9\x84\x22\x96\xce\xb9\xdd\xc8\x01\x95\x2f\x25\xad\x84\x83\xab\x4c\xe9\x41\xa5\x42\x5f\x1f\x72\xfd\xf9\xfa\xf0\x85\xbc\xe3\x42\x2c\x7e\xe9\x7e\x31\x1c\x54\xe5\xc1\x30\xdc\xdb\xe3\x92\x49\x2c\x3b\x17\xed\x3f\xec\xbd\x1a\x9e\x3c\x3f\x78\x21\x44\xf8\xde\xbe\x5e\x4c\x89\x6a\xa9\x24\xb8\x2d\xcd\xd9\x20\xba\x16\xc0\x46\xe7\x42\x42\x2d\xd8\x50\xf3\x14\x5b\x31\x05\xb1\x2c\x4a\x09\x40\xa2\x00\x07\x0b\x3a\x28\x14\xe9\xd1\x88\x88\xa4\x2a\x45\xe1\x56\xde\x8a\x2c\xb1\x33\x53\xb8\x56\x10\xc9\x27\xbc\xa7\xbc\xe0\x23\x47\x5c\xfc\x47\x5c\x8a\xd7\xe5\x6c\xf0\x8e\x79\x4b\x2b\xc9\x83\x37\xf2\x6e\x19\x70\xcc\x68\xc7\x66\xad\xb5\x86\x76\x6b\x39\x7a\xed\xcd\x51\x0d\x8e\x2a\xd1\xbe\x97\xfa\xf3\x50\xad\x42\x5d\x66\x02\x20\x08\x7e\x09\x63\x56\xe0\x51\x24\x1c\xf0\x69\x8a\x4d\x6f\xd5\xa5\xb3\x35\xc1\xa9\xc3\x8a\x44\x70\xb1\x66\x6d\x87\x0b\x9e\x50\x9b\xf0\x5c\x24\xd4\x78\x89\x02\x04\x3d\x69\xd8\xd1\x16\xea\x8c\xfb\x97\xd6\xda\x72\xc9\xaa\xdc\x66\xde\x3d\xde\x08\x16\x4b\x6d\xa2\x49\xca\x6a\x31\x4a\x51\x85\x95\x04\x1d\x14\x97\xa2\x40\x87\x2d\x14\x11\xcd\x79\x9b\x71\x54\x45\x9c\xbe\xb9\xdf\x2d\x94\x7b\x39\x32\xc5\x47\xf1\x75\xa5\x06\xd1\x63\x6b\xb1\xa6\xf6\xcd\x04\x67\xd0\xcd\x24\xa1\x42\x70\xdc\x90\x37\xb6\xc2\x03\xb0\x08\x2a\x6a\x63\x50\x29\xc2\x4e\x4a\x56\x97\xca\x74\xc9\x05\x64\x69\x7e\x2e\x70\x01\x31\x19\x89\x1a\x32\x10\x38\xd8\x7c\x10\xe9\x09\xa9\xcf\x1c\xaf\x23\x81\x11\xec\x7c\x0a\xc1\xa6\x7d\x4e\x31\x5b\xee\x31\xc9\xc5\x50\x2e\xa3\xec\x89\xb3\xa6\xf8\x57\x3b\x52\xaa\x3f\xed\xf2\xe9\xb6\xdc\xa1\x9a\x46\xb3\x59\x92\x9d\x97\x6b\x5b\x6b\x5d\xfd\xbf\x30\x08\x82\x6e\x18\x84\xfe\x7f\x02\xfd\xab\xb5\x17\x04\x7b\xad\x83\x20\x38\x90\xbf\x5e\x07\xc1\x6b\xf9\xe7\x20\x08\x06\xdd\x20\x18\xa4\xa1\xac\xc8\xff\x96\x75\xc4\xaf\xdd\x20\xd8\x6d\xbd\x0c\x82\x97\xad\x30\x08\xc2\xd6\x30\x08\x86\xe2\x17\xaf\xfc\xb8\x87\x6a\x8b\x3a\xa2\xb6\xf8\x26\x6a\x8f\x82\x60\x64\x6a\xbf\x0f\xa1\x76\xd0\xfa\x09\x77\x34\xc1\x1d\x09\xa8\x44\x47\xe2\x97\xe8\xf7\x87\x20\xf8\x41\xc2\x0c\xf0\xd8\x63\xf1\x6e\x1e\xf5\x51\x37\x62\x6c\xe8\x46\xc0\xf3\x8f\x20\xf8\x87\x2c\xfd\x67\x10\xfc\xd3\xb4\xbb\xc6\xed\xa6\xbd\x20\x98\xf6\x68\xcb\x28\x08\x22\x59\x9e\xf4\x82\x20\xe9\x99\xb6\x97\x03\xd4\x56\x95\x91\xb6\x3f\x05\xc1\x4f\xb2\x3c\x0e\x82\x58\xb6\x0c\x82\xf0\xfd\x00\x21\x5c\xe0\x55\xd4\x11\x4d\xcc\xca\xa0\x5f\xb0\x26\xa2\x43\xb1\x6e\x61\x10\x16\x7d\xb4\xc0\xbe\x99\x03\x52\x61\x05\xc5\xf4\xc5\x2f\xa8\x27\x7e\x59\xeb\xfb\x7e\x17\xf5\x0a\xb5\x81\x1a\xe0\x97\x59\x69\xe8\x01\xc8\xa4\x8f\xba\x81\xa1\x08\x5c\x80\x25\xa0\x1f\x83\xaa\x3e\x21\x6c\x04\x12\xe0\x4b\xf4\x7a\xde\x0b\x82\xf3\x1e\xc5\x22\xf4\x0b\x03\xd2\x75\x00\x78\x2c\x24\x14\x72\x3d\xf9\xcf\xe7\xb4\x0b\xd1\x04\x26\xa3\x7b\xac\x7a\xf5\x1c\xb9\xf0\x1f\x44\x0b\x82\x54\xc5\x20\xe2\x1b\xf0\xa2\xfd\x8b\x37\x4b\x43\xc0\x2f\xff\xfb\x50\xae\x8b\x6f\xf6\xa2\x57\xd2\x17\xa0\x1b\xe8\x8f\x8c\x04\x70\x20\x96\x11\x3c\x49\xb0\x6f\x40\xea\xd5\xc3\x00\xdf\x3c\xf3\x31\x03\x7c\x08\xc5\x00\xfc\xe7\x0b\xb9\x00\x41\x10\x3e\xa7\x22\xaa\xec\x05\x41\xd9\x73\x56\x5e\xc8\x94\xfe\x67\xd4\xc3\x0c\x2c\x08\x52\xd7\xaa\xc2\xa5\xb5\xf8\xc2\x87\xde\x05\x15\x8d\xd4\xb0\x64\xa6\x01\x97\xa2\xab\xd0\x03\xb0\x9f\xc6\xf1\x87\x1e\x2a\xc6\x20\xe9\x0a\x5a\xe0\x8a\x0a\x0f\x7a\x41\xf0\x00\x57\x08\x82\x70\x73\x01\xb8\xb4\x43\x83\x89\x27\x6a\x58\x24\x07\x11\xf7\x8b\xfa\x5c\xba\x08\x2a\xe8\x53\xb5\x83\x04\xbe\x21\x2c\x0e\xc9\xdf\xe9\xf0\x82\x50\x89\xb4\xb1\xb4\xc9\x25\x5e\x90\x79\x2f\x08\xe6\xaa\x4b\x90\xf1\xc0\x42\xf0\x0b\x7a\xb3\xa5\x8c\x2d\xb1\x1e\x0d\x9c\xce\xd5\xd4\x45\x7b\x35\x9c\x60\x00\x8d\xec\x99\xea\x1b\x06\x00\x6e\x52\xf5\x45\x97\x80\x2a\xdd\xf2\x71\x9f\xca\x35\x8c\x7b\xd5\x16\x51\x6b\x2d\x33\x00\x27\xa9\xc5\x36\xf2\x98\xd7\xec\x84\x54\x68\x2e\x96\xe8\x78\x7d\xa9\x82\xc5\x65\x36\x61\x22\x59\x4e\x21\x11\x73\x55\x88\xc5\x00\x42\x65\xa2\x5a\x9f\xf4\xdd\xca\xa4\x8a\x9e\x14\x06\x08\xfa\x53\xaa\x5c\x13\xd9\xb5\xa3\x45\x80\x3d\x7e\xe9\x05\xc1\x2f\x78\x46\x66\x75\xf0\x42\x0a\xec\x10\x21\x06\xb4\x05\xb2\x10\xba\x31\x2d\x04\xc7\xf6\xe5\xdf\xb0\x04\x80\x6e\xd0\xbe\x16\x0f\x5f\x2b\xe2\xb5\x59\x08\x8d\x02\x20\x81\xa4\x46\x32\xd4\x54\x94\x8a\x01\x64\xb6\xfe\xf6\xca\x4b\x4f\xd0\x3f\x36\x87\xdc\x19\xbd\xc7\xaa\x1d\xb4\xa1\xcf\x70\x03\x23\x11\x56\x49\x03\x91\x0e\x88\xa0\xe0\x1f\xcf\x10\x2b\x8b\x6e\xe4\x22\x4b\x8d\x87\x16\x11\x16\x00\xf0\x03\xc6\x04\x7c\x03\x00\xe4\x9c\x04\xfd\xf4\x65\x73\x83\x17\xfe\x71\x5c\x2f\x9b\x7c\xaa\xdf\xc5\x0a\x56\xc8\x54\x7e\xe9\x3a\x9d\x1e\x95\x17\x20\x19\x60\x4d\x31\xe9\x1b\x11\x30\x90\xe0\xf2\x5a\xfc\xef\x9f\x69\x47\x40\x45\x84\xfb\x66\x8a\xfe\x40\x5a\x28\xbe\x21\x80\x6a\x18\x37\x15\xf1\xf9\x85\x82\xc3\x62\xd2\x2c\xe0\x28\x92\x84\x05\xfa\x9b\xf4\xbf\x58\xf0\x10\xf3\x4f\xd2\x31\x90\x87\xa9\xa8\xec\x0c\xcf\x5a\xd5\xab\x52\x58\x3f\x81\xc2\x1a\xa6\x9b\xe0\xf1\x6a\x6d\x16\xe4\x05\xd5\xd2\x8b\xe8\x5b\xf8\x0e\xb6\x64\xb1\x4d\x78\xcd\x45\x40\x49\x3e\xd6\x26\x80\xd8\x14\x87\x57\x16\xbc\x23\x60\x0d\x9f\xc8\x01\x08\x6b\xe4\x47\xc7\xe9\x15\x48\x5f\xe0\x0f\x1c\xc8\x30\x08\x33\x87\x5a\x88\x74\xb3\x55\x49\x0f\x96\x93\xff\x7d\x8a\xb8\x1d\x26\xe0\xe9\x41\x2d\x10\x91\x0d\xa4\xb6\xc5\xcf\xef\x69\x6d\xf1\xb1\x27\x9d\x20\x01\x84\xa8\x2e\xfe\xe1\x15\x85\xd5\x1f\xca\x62\x9f\x3a\x37\x7a\x1f\x61\x55\x23\xe1\x51\x88\x5c\x6b\x23\xe3\x28\xdd\x91\x6f\xa4\x7f\xd1\xab\x65\x5c\x7c\x18\x50\x68\x80\x36\x00\x1a\x42\x1b\x16\xba\xb3\x3e\x90\x9c\x87\xe2\x1f\xf5\xe8\x00\x3e\x8a\x5f\x34\x40\xda\x47\xd3\xd5\x1f\x4f\xa5\xf5\x11\x04\xe1\x11\x92\xd5\x2b\xe0\xc6\x87\x11\x4b\x2d\x67\x03\xca\xdf\x02\xed\x84\x02\x5c\x97\x36\xc3\xeb\x43\x88\x54\xd7\xd9\xec\x21\xae\x70\x17\xe3\x51\x8f\x8e\x6a\xcb\x25\x84\xa6\xd5\xd6\xe6\x43\xdf\xe3\x34\xff\x4c\x05\x69\x10\x84\x2f\xa8\xa7\x6f\xc5\x13\xae\x7b\xd4\x35\xae\xb5\x12\x90\xa2\x02\x83\x04\x79\x08\xca\xf0\x21\x96\x07\x2c\x19\xf4\xee\x8a\xa2\x0f\x7d\xba\x14\x2b\xc8\x31\x5b\xec\xf8\x82\x08\x0a\x1f\x41\x10\xbe\x92\xd3\x04\xff\x92\x63\x41\x0a\xe2\xcf\x74\xbb\x11\x6d\x0a\x8c\x0a\x30\x0d\x6e\x8d\x41\xf2\x54\xd1\x8e\x44\x94\x34\xfa\x29\x29\xe0\x32\x57\x11\x7b\x3d\x5c\xb3\xb0\xd4\x0d\x20\xe6\x9e\x1d\x55\x52\x5c\xeb\x33\xde\xb0\x2d\x4b\x74\x8f\x85\xd2\xf7\xca\xbe\xf6\xd5\x41\x7a\xdd\xf6\xe9\x9e\xac\xe6\xd3\x85\x41\xf8\x77\xaa\x72\xc5\x38\xa2\x8a\x19\x51\xd0\x2d\xf5\x42\x57\xd1\xd7\x2b\x06\xc8\x6c\x3d\xfb\x64\x80\x10\x2b\x4a\x40\xf0\x83\x46\x04\xff\x01\x90\xcd\x7d\x7b\x27\xce\x46\xa2\x3f\x7c\x52\x4a\x39\x81\xd6\x0c\x57\x8c\xe6\x21\xda\x17\x8d\xf9\x47\xa5\xa6\x40\x97\x05\x41\xb8\xdf\x25\xb1\x2a\xc7\x52\xb7\x65\xaa\xea\xd3\xe8\x3f\xfe\xf7\xbf\x90\x3a\x04\x41\xeb\x0b\x03\xb9\xa6\xed\x66\xe8\x15\x79\x80\x0a\x9f\x04\xae\x1b\x49\x74\xe8\x17\x7e\x8b\x2d\xaa\x95\x82\x7c\xc6\x33\xc7\x3e\x0a\x00\xa5\x42\x42\x7a\x8c\xcb\x90\x62\x76\xb9\x35\xa6\x1c\x34\x58\x6d\x20\x27\x65\x28\xeb\x5a\x97\xd8\x36\x82\xaa\xa2\xe3\xbf\xf6\x82\xe0\xaf\xc4\xc6\xd7\x76\x34\x11\x77\xab\x0d\x02\x36\x94\x6b\xa4\x4d\x42\x24\x9d\x2d\x76\x9d\xf5\x88\xb2\xa6\xa2\x51\xf4\x23\x1a\x53\xf3\xb7\x56\x32\x03\xe2\x6c\xda\x10\xd2\xb4\x47\x2b\x8a\x3a\xf0\x0f\xd5\x6b\x50\xdb\x2c\xb4\xd0\xe8\x3d\x1a\xf2\xf1\x05\xfd\x0d\x62\x43\x5a\x5b\xf7\x53\xf5\x90\x9f\x0a\x21\x74\xcc\x55\x10\x3d\x25\x51\x64\xde\x7c\x40\x9b\xeb\x8e\x9f\x2a\xdb\x0a\x4a\xc4\xb2\x28\x1a\x36\x44\x2d\xaa\xf6\x91\x51\x6a\x85\xbb\xd2\xd0\x88\x84\x9f\xbd\x46\x15\x89\xa6\xc3\xf2\x5b\xec\x7b\xe9\x28\x2c\x9f\x47\xeb\x93\xba\x64\x99\xf4\xe2\xe8\xdd\x07\x60\x96\x5a\x40\x2c\x3a\xec\x84\x08\x5d\x40\xd1\x8a\x29\x0d\xb5\x2a\x7c\x00\x18\x24\xfe\x53\x61\x33\xdd\x07\xa2\xc4\xbf\x40\x5d\x10\x84\x3f\x7b\x27\x8e\x9d\x5a\x4f\x1f\x66\xae\xef\x57\x9f\xab\x45\x59\x93\x7e\xbd\xcd\xe9\x23\x29\xd7\x59\x9a\xf4\xbd\x6b\xee\x47\x4b\x60\xe2\x23\x5e\x97\x0a\x7c\xc2\x15\xb6\x47\x38\x8a\xfb\xb4\x1b\xe2\x04\xda\x5c\xe4\x10\x98\x8f\x84\x8c\x45\xd5\x93\x54\x0e\x91\x9d\x8e\xfa\x42\xa4\x73\x11\xa2\x1e\x09\x24\xa2\x6f\xca\x52\x8a\xc6\xcc\x3e\x57\x57\xee\xe4\xd4\x11\x02\xf6\x08\xc1\x68\xb7\xc7\xe8\xca\x08\x30\xf0\xb2\x27\x22\x84\xe8\xcd\xc0\xfe\x2f\x2f\xd5\x2c\x75\xa7\x1f\x87\x14\x7f\x84\xf6\x5d\xe3\xd3\x27\x73\x2d\x4b\xc0\xf5\x7e\x40\xdc\xd6\xb8\xda\x19\x44\x90\x8f\x88\x4b\x62\xea\xec\x13\x33\xb4\xde\x9e\x13\x48\x58\x20\x52\x51\x3c\x83\x44\xd0\x08\xed\x12\x2a\xae\xf1\xe4\x32\xa7\x1b\x0e\xb7\xda\x7c\x06\xf9\x8c\xa0\x24\x82\x04\xf4\x89\xb5\xc1\xf7\xb4\x47\x95\xf2\x52\x81\x57\x39\x2c\xe9\x9b\x8c\xbd\xeb\x27\xbd\x84\x55\x56\xd9\xd2\x71\xb3\xfa\x55\x26\xfb\xee\xa9\xaa\xb9\x92\x92\x43\x12\x10\xd8\x70\xe9\xbc\xf1\x1e\x13\x52\x6e\x64\x13\x6e\xb6\x4c\xbd\x2d\x25\xed\xf7\x21\xad\x08\xa4\x6d\x3c\x62\xcc\x03\xe7\xfd\x20\x38\xef\xdb\xf4\xf2\xd8\x6f\x76\xf9\x20\x7e\xda\xab\x77\xcb\x7d\x04\x0b\xe6\x23\x59\xed\xc5\xc2\x9f\x0b\xf3\x81\xb7\xff\x45\xb2\xe3\x7d\x58\x6f\x84\xd9\xae\xc1\x02\x23\xac\x46\x20\xb8\x4d\x7c\x4c\x42\x0d\xbc\x5b\x60\xcf\xe7\x4b\x58\x36\xc7\x66\x8f\x36\xb1\x95\x98\x72\x46\x7f\x3b\x06\xc8\x7e\xd9\x45\x18\x04\x17\xa1\x63\xf6\xfd\x1b\xb0\x61\xfb\x4e\xd2\xea\x5d\x22\xb4\xc4\x2f\x41\xe8\x30\x29\x12\xc2\xd4\xf8\x9c\xf4\xeb\xfb\x82\xc5\xf0\x48\x5c\xef\x96\xb7\x57\xf8\xdf\xc2\x5a\xba\x74\x18\xb9\xc6\x81\x98\xd4\x73\x3c\x4d\x2f\x0a\x29\x5b\xdb\x1b\x28\x5e\xff\x22\x84\x2d\x86\xc5\x61\x9a\xa5\x4b\xff\xb8\x87\x2a\x92\xa5\x7f\x4c\x43\x38\x54\x63\xe2\x60\xce\xc0\x49\x8c\x51\x21\x2f\x59\x02\xc5\xce\x36\xcd\xe2\x2c\x05\xef\xc0\xd0\x1b\xd9\xdd\xd7\x82\x3a\x0d\x57\x8a\x04\x11\xff\x1d\xba\x05\x6c\xe9\x1e\x1f\x61\x44\xe5\xbd\x20\xc8\x7b\x78\x0d\x17\xc7\x04\x4c\x46\x97\xcd\x28\x4f\x7b\x5e\xef\xdf\x8e\x5b\x22\xce\x80\x7f\x06\x38\x49\x63\x16\x52\xc6\x84\xa1\xa8\x3b\x0a\x84\x5d\x47\x15\xe4\x1f\x25\x87\x6a\x65\xc0\xca\x43\x41\x86\xdc\xa2\xa1\xde\x87\xbf\x13\x88\x20\x6e\x3c\x92\x86\xae\x24\x8d\x5a\x92\xad\x32\x2b\xe4\x3e\x71\x36\x54\xc1\xe8\x87\x91\xdd\xe0\xd2\x75\xe8\x55\x98\xae\xc9\x64\x51\x5e\x8d\xe2\xab\x7a\x34\x72\x43\x12\x12\x91\x38\xaf\x9d\x20\x08\x0b\x2b\x32\x39\x71\x32\x71\x7c\xa8\xdd\xb5\x73\xb1\x80\x7c\xe1\x97\x85\xe9\x47\x21\x0d\xdc\xc3\xf0\x82\x5d\x3c\xb4\xdf\x45\x39\x0f\xbe\x55\x74\x6b\x17\xfe\xe9\x7e\xc6\x56\x39\x54\xb4\x56\x31\xc5\x88\x27\x41\x57\xab\xb3\xc7\x3d\x1a\x79\x85\x5f\xae\x53\x5d\xf4\xe8\x0e\xb5\x2f\x62\xab\x05\x40\x46\x37\x17\x68\xa4\xd0\x00\xa6\xe8\xc9\xa3\x4e\x48\x28\x15\x07\xae\x88\xd1\x01\x20\x0f\x48\xee\x15\x69\xe2\x22\xe1\x11\x8e\x63\x85\x76\x10\xc7\xa2\x67\xb7\x22\x74\x6b\xb9\x77\x8f\x7b\xc8\x9f\xb0\x04\x7d\xd5\xa3\xce\xa1\x51\xb1\xf5\x16\x00\x19\xca\xea\xf0\xd2\x8b\x37\xa4\x86\xcd\xdf\xfb\x4b\xd4\x81\x27\xc4\x82\x75\xb1\x1b\xff\x4b\x31\xf1\x40\xfc\x0f\xcc\x1e\x50\x83\xa1\x2f\x9f\xc2\x8a\xf9\xe9\xb5\xb5\x03\x79\x68\xfe\x76\xd6\x90\x58\x5b\xc7\x48\x21\x46\x13\xc9\x73\x81\xcc\x1a\x14\xef\x80\x41\xed\xa8\xa7\x3f\x46\xeb\xe3\xef\xba\x54\xb9\x2e\xda\xe1\xaf\xe3\x2a\x24\x4f\x80\xdd\x6d\xbe\x08\x49\xe6\x39\xea\xc6\xe3\x2b\x29\x19\x0e\x21\x17\xdf\x76\x3c\x78\x51\x36\x20\xd2\xfb\x94\xd8\xf7\x31\x03\x49\xdc\xb2\x16\xe3\xd2\x69\x57\xc3\x1b\x13\x55\xd1\x25\xd8\xcd\x9e\xd9\x11\x3a\xf5\xc6\x9d\x3c\x30\x11\xbb\xf5\x7d\x58\xcf\xa1\x56\x3c\x42\x6d\x49\x2f\x61\x53\x53\xfd\xc7\x2e\x71\xac\x97\xf2\xa5\xb6\xa0\x3d\xdb\xd1\x54\x18\x92\x80\xa2\xbb\x61\x30\x81\x70\x9a\x93\x50\xed\x33\xf5\x91\xc7\x07\xec\x6d\xf4\xa1\x22\x6f\x32\xbe\xb1\x1e\x50\xac\xc7\xe7\x2a\x62\x95\xb7\x58\x89\x99\xbd\x5c\x6c\x0a\xc0\x3e\xa3\x66\x2f\x6b\x13\x9e\x24\x8a\x08\xe3\x06\xf1\x52\xad\x48\xb4\x85\x8c\x5f\xa9\xf9\x2a\xde\x4a\xdc\xd6\x52\xdd\x87\x05\x90\x59\xb4\x7f\xed\x40\x56\x13\x2e\x7b\xe4\x84\xcb\x6a\x17\x1b\xe9\x4e\x22\x65\x28\xa4\xf5\xfd\x82\x19\x4a\xf6\x9e\x43\xec\x3a\x3d\x09\xbd\x8d\xad\x45\xd2\x62\x1c\x2c\x0f\xf2\x8f\x11\xbd\x3d\xca\xd8\x64\x9a\x44\xce\x18\xdc\x77\x65\xf0\x4b\xc8\x10\x9f\x70\x23\x34\x6b\x6c\x17\xac\x8e\x6a\xd3\x66\x48\x81\x2b\x1e\x2b\x2c\x5b\x3d\x06\x13\xa1\x8c\xcc\x89\xd2\x79\xa2\xc2\x5e\xf7\xc0\x6c\x74\x2b\xc3\x6b\x05\x6b\x20\xe0\xd6\x00\x5d\x22\xc8\xa8\xf0\x2d\xb7\x2b\xc7\x2d\x5a\x06\x1b\x1a\x62\x3a\xa6\xb1\x12\x02\xa4\x36\x51\xb7\x56\x90\xcd\xda\xd3\x25\x91\x16\x64\xb0\xd5\x06\x14\x3d\x48\x57\x26\x90\x0f\x8d\x68\xaf\xd7\x93\x0e\xf5\x08\x43\xee\xa1\x1e\x85\x76\x80\xd7\x4a\x8a\x5a\x64\x1e\x40\xea\x89\x05\xe5\x87\x1e\xea\x87\x38\x4c\x03\x27\x27\xc8\x4d\x0d\x84\x15\xb7\xa2\x71\x4f\x7b\xb4\x22\xd8\xad\x16\xc8\x9d\x1e\x0d\xfe\x10\x33\x9a\xca\x08\xb2\x87\x65\x92\x03\xfc\xc9\x5c\x8b\xe4\x53\x7a\x9b\xf0\xfa\xe2\x58\xb6\xbd\xcb\xa4\xf0\xea\x5b\x0a\x10\x40\x30\xa0\x8f\x03\xec\x6d\x7d\x6f\x4e\x07\x89\xc2\x18\xc3\xb8\xef\x4d\xa9\x5c\x8d\xcd\xdc\xcc\x03\x9f\x7f\x1e\xda\xf1\x27\x3a\x1e\x4c\xc0\xdd\xb7\x2e\x1c\xff\xd8\x97\x85\xe2\xc6\x1a\x3a\x34\xa9\xa1\x7e\xd0\x45\xac\x73\x89\x0d\x31\xdf\xd1\x14\x22\x73\xc1\xf2\xb1\xa0\xb9\xee\xa3\x6e\x3c\xc1\x03\x6f\x37\x10\xd7\xd2\xf8\x7b\xec\xec\xc2\xc0\xa4\x2c\x87\xc0\x12\xef\x0b\xd5\x39\x71\x92\xb0\x51\xeb\x43\x2f\x98\xdc\x6e\x38\x20\xed\x4b\x1d\x5a\x8b\x54\x1f\x69\x98\x75\xee\x2f\x19\xd9\x45\xea\x53\xa9\xb3\x39\x62\x4e\x25\x5e\x84\x55\x06\xc3\x5b\x53\xeb\xf4\xfe\xef\x50\x52\x0f\xa2\x85\x83\xf7\xab\xaf\x9a\xd5\xee\xe9\x32\x10\x6f\x85\xbb\x2e\xda\x11\x07\x40\xa1\xb3\xab\x30\x08\xae\xdc\xcd\x90\xdb\xdb\x07\x10\xbb\x02\x77\xd1\x4d\xb3\x9a\x84\x7f\x3c\x41\xb8\x5c\xc0\x74\x57\xce\x34\xb7\xce\x2b\x3f\xf6\x9b\x6d\x8b\x88\x63\x13\x4b\x30\xd1\xd8\xb5\xe7\x33\x94\x1b\xd6\x95\x61\xfc\xba\xe8\x0e\x9a\x91\x4e\x0c\xad\x7a\xe8\xd4\x8d\xb1\x96\x94\x41\x4f\x4a\x2c\xab\xab\xa3\xc2\x4b\x20\xe8\xa0\x73\x64\x22\x93\xd8\x36\xd4\x26\xf3\xec\x92\xb4\x35\x98\xac\x65\xc0\xd4\xa4\xad\x11\x0d\x06\x8d\xc9\x78\x6e\x6c\x4e\x1f\x96\xf0\xd9\x38\x5e\xd3\xc9\x67\xe3\x58\xa6\x8b\x6b\xfe\x9a\xa0\xad\xb2\xda\x48\x34\xa6\xc6\x60\x79\xe2\x54\x04\xc8\xc8\xb4\x10\x85\x81\xa9\x42\x0f\xcc\xfa\x03\x55\xc4\xa6\xf5\xc5\x91\x10\xa1\xf9\x24\x01\x88\x50\x3b\x4e\x6c\x4b\x62\xcb\xa4\x5f\xba\x13\x6e\x59\x9e\x35\x81\xfd\x1a\x9b\x6b\xe1\x00\x5d\x14\x9e\xf1\xd5\xa1\x7a\xb8\x76\x01\xea\x77\xd9\x41\x8e\xd7\x42\x62\x21\xe6\xd1\x82\x51\x3c\xbe\x74\xdd\xc8\x9b\x4e\x37\x2f\xdd\x74\x06\x6c\x82\x2f\x8d\x13\x6c\xae\x3e\x17\x57\x61\x5f\xf6\xeb\x47\xb1\xc0\x59\xe4\x6a\xad\xb6\xdf\x4e\x34\x11\x55\xca\x7f\x60\xfd\x03\x89\x64\xd6\xa4\x9e\x38\xf1\x45\xe0\x5a\x8f\x1e\xf1\x46\x89\xcd\x22\x2b\xdb\x96\xec\xe0\x51\x6b\x1c\xcc\x76\xb2\x26\x69\x7d\x9e\x19\x5d\x27\x08\xf3\xb9\xfb\x49\x4f\x7b\x7f\xe4\x75\xaa\xf5\x7e\x68\xe2\x63\xad\x7b\x25\x03\xe6\xbe\x34\xc9\xfa\x28\x06\x09\xaf\x2f\x12\x0e\x33\x55\x7b\xd1\x2a\xbf\xc7\x51\x22\x8f\x9b\xa6\x74\xd7\xf2\x8d\x23\x24\xb4\x09\x9e\xd0\xa1\x78\x20\x2e\xbf\x52\x31\xf1\x3c\x74\xad\x06\x09\x4c\x5b\xf8\x78\xd4\xaf\x0d\x6a\x2a\x2b\x47\xfc\x0d\xfd\x90\x8d\x26\x44\xcf\xe2\x6f\x18\x86\xff\xc2\x31\x8e\x03\xeb\x54\x08\x8a\xc3\x18\x03\xe0\x90\x6a\x23\x22\x93\x5d\x4a\x71\x0f\x46\x7b\x24\x3f\x89\x52\x7c\x86\xe0\x34\x97\x72\x18\x50\x57\x3a\x78\x6b\x4d\xee\xbd\xb2\x6e\x74\xdf\xf4\x70\xbe\x2c\xdd\x0d\x82\xfb\x3d\x84\x63\xdd\xc5\x0f\xca\xaf\x22\xac\x05\xe1\x7b\x6d\x5e\xab\x53\x48\x17\xbd\x20\xb8\xa0\x37\xf3\x28\x99\x04\x7d\xe0\xc4\x13\x12\xda\x5d\xf5\x1f\x64\xb1\x00\xd6\xc5\xb7\xab\x5e\x10\x5c\x39\xa3\xd9\x86\x51\xbf\xdb\xed\x86\xe1\x75\xd5\x0b\xa8\x5c\x01\x3a\x42\xc1\xe9\x41\xdd\x99\x22\xe0\x78\xf2\x8f\x65\xb2\x16\x04\x75\x3b\x68\x1a\xff\x0c\x82\x11\xff\x35\x46\xb3\xfa\xc1\x3e\xbb\x5a\x1b\x7f\x08\x61\x7f\xd4\xd7\x8e\xb8\xe6\xb6\x9c\x52\xd6\xa7\xaf\x1d\xcc\x02\xda\x59\x96\xf5\xb5\xb7\x9d\x70\x8b\xe9\x80\x81\xfc\x08\x23\x7a\x17\x0f\xc4\x9c\x40\x7a\x37\x0c\xff\xf5\x48\x48\xae\x11\x5a\x14\x2b\x52\x84\x2f\xb9\xea\x8a\x6d\x6a\x50\x59\xb0\xf2\xee\x52\xcc\x50\xca\x94\xac\x6d\x25\xc0\xa4\x78\x87\xcb\x9a\xf3\x04\x5f\x4f\x24\x3e\x76\xc3\xf0\xef\x2a\x42\x14\x1b\x48\x89\xac\xd6\x4e\xdb\x2c\x44\x34\x04\x5c\x66\x5f\x52\x42\x94\x1f\xf1\xce\x51\x26\x09\x99\x25\x69\x4b\xfe\xf1\x84\x49\x76\xd0\xdf\x7c\x16\x3b\xb2\x12\xbd\xba\x46\xd6\x22\xf9\x61\x1f\x54\xaa\xb7\xe2\x32\xa2\xc4\x10\xef\x71\x42\xef\x38\x57\xae\xc0\xa1\x3f\x55\x15\xc0\xc3\x77\x30\x10\xab\xc0\xf7\xcb\x33\x61\x11\xb4\xdb\xa1\x82\xe2\x07\xb3\x97\x01\x83\x0b\x1d\x85\x66\x66\x9b\x1c\xd6\xfd\x66\xe0\x86\x62\xc1\x42\x44\x80\x85\xdf\xa2\xef\x5d\x26\x12\x92\x74\x0d\x8a\x4e\x88\x44\x99\x3a\xe0\x2a\xef\x9e\x0b\xff\xf5\xb4\xd7\xfa\x73\xcf\xe6\x07\x30\xa3\x2d\x12\xde\x0c\x6d\x65\x77\x44\x42\x5f\x48\x9b\xba\x7b\x9b\x4f\x7a\xc4\x01\x5e\x58\xbb\xd3\xa3\x0e\xe5\xa2\xda\x8f\x70\x7a\x91\x81\xbb\xeb\x3d\xd1\xaa\x49\xf3\x55\x1f\x8d\x40\x08\x13\xcc\x00\xb4\xfd\x30\xb2\x71\x64\x09\xf2\x0e\x16\xe4\x24\xcb\x83\x50\x98\xc7\xe4\xaa\xe5\x30\x25\x11\x35\xc8\xfd\x3e\x55\x29\xd0\xd0\x4a\x07\x2e\xf0\x96\x48\x02\x8b\xeb\x4a\x8f\x2c\xf4\xaa\xf9\x30\x58\x70\xf7\x83\x4b\xdd\x16\xc0\x4f\xf1\xc7\x1a\x7c\x65\x08\x5f\x82\x54\x0f\x28\x22\xc8\xda\xf8\xb2\xd7\x80\x2c\x06\x76\x1a\x8a\x9d\xf6\x42\xf4\x33\xad\x28\x78\xe0\x47\x84\x85\x07\xbd\x15\x16\x1a\x98\x54\xfc\x82\xcb\x06\xec\xad\x39\xeb\x5a\x2b\x17\x98\x62\x40\xf5\xbf\x2e\xf9\x97\x59\xf4\x17\x7d\xbe\xa2\x0f\xc5\xbf\xd3\x9e\x38\xba\xa2\x4e\x13\x4c\x57\x01\x54\x62\x18\xb4\x20\x3a\x95\x55\x27\x64\xb2\xbe\x19\x7c\x5f\x9c\xde\x5b\x8d\xec\x49\xea\x06\xe1\x2b\x92\xf9\x47\x2a\x5b\xc2\xea\xc3\xc0\x8c\x1f\xf8\x4d\xca\xd8\x86\x09\xd8\x9e\x1c\x1f\x9b\x61\x69\x1b\xd6\x79\xc7\x30\x05\x2b\xe6\x51\x84\x74\xa9\x41\x6b\xea\x3a\x63\x54\x45\x8d\x4d\xc4\x96\x6f\x47\x02\xe8\xb8\xd6\x77\x87\x18\x8f\xcf\x9f\xf5\x89\x0f\xd8\xe5\x35\x06\xc9\x73\x04\x5d\x2d\x44\x64\xfb\xf5\x77\x85\xa8\xb3\x43\xd7\xe3\x3f\x0e\x69\xc5\x73\x2f\x1f\xdf\x84\x41\x70\x43\xf8\xe4\x09\xf0\xc9\xa9\x92\xcc\xa0\x23\x00\x02\x38\x04\x8c\xce\xa8\x1f\xd4\x70\x95\xbd\x65\x62\xd9\x76\xbe\x1c\x44\x0f\x59\x1a\xf0\x2a\x47\x71\x08\x49\x2b\x99\xf2\x39\x47\x9b\xcf\xe9\xed\xe0\xec\x27\x4f\xd8\x70\x57\xf6\x41\x64\x34\xff\x33\x40\x25\x6e\xae\xce\x4c\x09\xad\x9b\x55\x85\x16\x0c\xee\xef\x98\xc8\x7c\x4b\x7a\xa6\x7d\x2c\x3e\xc5\xb8\xe7\x3d\xcb\x90\xc6\xf7\x8b\x85\x35\x86\x75\x7f\xb1\x61\x1d\x8a\x83\x1d\x4e\x0c\xc5\x5d\xc5\xcd\x3e\x12\x7c\xcb\xed\x6d\x15\x7a\x20\x3a\x37\xf4\x1b\xdc\xff\x42\x7f\xf2\x85\x56\xf6\xb6\xba\x90\x60\xb1\x09\x5d\x38\x17\xf0\x1c\x68\x7b\xb6\x8f\x0c\x5a\xdc\x97\x60\x08\xc7\x0b\x1e\x38\x91\xb5\x6c\x97\xae\x0f\xdc\xc5\xe2\x2a\x9c\x0f\x3d\x5a\xdb\xbe\x87\x88\x0a\x8d\x10\xcc\x3e\x53\x32\x90\x8a\xca\xf2\xdc\x36\xb1\xcb\x45\xef\x68\xa8\xd3\x7e\xea\x7a\x46\x24\x1c\x41\xbd\xe8\x6b\x6a\xde\x3b\x79\xb2\xb5\xdd\xc2\x2a\x53\xb4\x85\xce\xd5\x70\xbe\x45\xf6\xf6\xe7\xc1\xa3\x3d\x89\xf7\x4a\xa0\x29\x1b\xff\x7d\x6f\x35\x3d\xee\x13\xaa\xee\xe2\x16\xf8\xb6\xb9\xda\x5b\xc9\x60\x31\xf1\xd1\x54\x23\x9c\x1c\x2c\x5b\x0c\x3c\xa6\xa2\x4b\xdb\x9c\x84\xa2\x2d\xd9\xea\x5e\x31\x6c\xe8\xf9\x39\xa2\x67\xdc\x93\x80\xde\xce\x0a\xa7\xce\xa0\x15\x6e\x7f\xa4\x14\xd8\xa2\xc4\xe3\xf1\x6f\x23\x66\xdf\xd1\xbf\x10\x12\xcb\x56\x27\x78\xaf\x0f\x4a\x27\x66\x75\x9f\xde\x96\xf4\xc1\xa8\x23\x37\x41\x10\xbf\x90\x2a\xd3\x5e\x10\xdc\x10\x82\x78\x82\x4d\x03\x88\x91\xd8\xb9\xc7\xf4\x1f\x20\x67\x5b\x08\xd7\xbb\xca\x5d\x11\xd2\xc6\xbc\x71\xd6\x6f\xdd\x37\xba\x61\x07\xd1\x09\xf1\x84\x89\x29\xab\x29\xe2\x09\x1a\x66\xaf\xc6\x33\xf2\x75\xe2\x17\xa2\x9e\x74\x4f\x81\xf4\x1d\x3a\xdf\xa5\x70\xa5\x34\x35\x0d\x2d\xad\xbb\xbf\x57\x39\x8a\x37\x84\xe0\x54\x08\xce\x40\x64\x0b\x91\x9a\xb1\x2f\xfd\x11\xb4\x87\xbd\x20\x78\x28\xbb\x3b\x94\xe6\x87\x6f\x02\xd6\xc4\x67\xf5\x14\x89\x62\x6a\x01\x32\x66\x16\xcd\xf2\xda\x1f\xa1\x33\x58\xb6\xa6\x4a\x0c\x20\x12\xab\x4a\x43\xe2\x8a\x63\x18\xc8\x8e\x0d\x11\x91\x03\x37\xc4\x24\x0c\x24\x27\xe0\x27\x62\x18\xdd\x30\xfc\xbb\xce\x55\xc7\xf7\x4f\x7b\x2e\x1c\xe0\xbd\x58\x77\x0d\x18\x5e\x1a\x72\xb2\x56\xa8\x85\x6b\xf0\x69\xea\xd1\x40\x27\xdb\xe3\x9a\x35\x1a\xa3\xc2\x27\x47\xf1\x5d\x4e\x75\x21\x0f\xe5\x51\xf9\x82\x31\x81\xde\x39\x40\xa1\x0a\x0a\x07\xc7\xc3\xe1\x0c\x0f\xca\x6b\x1d\x21\xa4\x5b\x3b\x13\x4f\x7a\x4e\xec\x03\x7c\x54\xf0\x38\x61\x7b\x89\xc0\x0e\xdf\x88\xf8\xe0\x16\xe5\xe3\x1d\xde\xda\x5a\xa4\x6e\x18\xee\x56\xf8\x26\xed\xa5\x3c\x72\x8d\x4c\x03\xbc\x3c\x76\xa8\x37\xf0\x96\x00\x65\x8b\x7f\x20\xa3\xda\x17\x18\x32\xba\xc3\xab\xd4\xa8\x6c\xb5\x83\xf1\xce\xf6\x84\x8e\xfc\xa5\x4e\x18\x24\x14\x3a\xfe\x1f\xea\xee\xcd\xcc\xb9\x9a\xb4\x0c\x83\xa0\xc4\xe1\x05\x2d\x84\xc3\xf0\x68\x07\xf5\xe3\xfa\x31\x3f\x93\x45\xa7\x5b\x68\x60\x38\xa0\xd3\xd4\x07\x35\x8b\xd0\x95\xd9\x2f\x30\x2d\xdf\x45\xb6\x80\x4b\x72\x33\x36\x38\x98\x50\x8f\xd8\x80\xc4\x23\x03\xd4\xf9\x2c\x2a\xc7\x5c\x0b\xc3\x1d\x7c\xdf\x09\x81\x8b\xa4\xe1\xa0\x53\x35\x75\x72\xd9\x99\x2e\xd9\x4b\x04\xb5\xe9\x2b\xf0\x4d\xd7\x55\x4e\x4f\x80\x35\x5e\xf5\x89\x07\xcc\x3f\xfe\x23\xeb\x29\xef\x73\xa8\x97\xf0\x47\x2f\xdf\xa2\x20\x31\x41\x39\xff\x25\x6e\xfa\x83\xdd\xca\xb4\x47\x64\x5c\x9d\xa4\x7a\x8c\x88\x38\x80\x3e\xa8\x91\xb6\xbb\x62\x81\x4f\x7a\xcb\x94\x26\x6b\x61\x76\x10\x74\x40\x44\xee\x66\x93\xb5\x38\x2e\xf0\x97\xce\xd1\x77\xb0\x32\xc9\x76\xb2\x8f\xbe\x88\x7b\x5b\x3b\x51\x9f\x45\x87\xbc\x57\xd8\xc4\x77\x6c\x38\xc2\x02\xee\xfd\xb1\x95\xb3\x07\x68\x27\x2c\x7a\xe3\xf3\x3e\x34\x0a\xa1\x1c\x63\x27\xc4\x40\xfd\x9c\x77\x8c\x92\x37\x14\xa5\x59\x1e\x85\xf5\xd0\x8d\xc1\x46\x5f\xb6\xb4\xc9\x1b\x8b\x3e\xaa\xe4\xef\xb6\x3a\x2c\x08\x11\xc8\x56\xfe\xd4\x24\x24\xeb\x0f\xeb\xaa\x46\x20\x94\xe9\xa6\xf6\x58\x9a\xd3\xbe\x69\xc8\x7f\xe5\x67\x1d\x64\x5d\x74\x74\xce\x5e\xcd\x05\x40\x41\xb1\xb5\x24\x97\x8e\x39\xc0\x8b\x07\x92\x47\x3f\x73\xec\x1d\xef\xd8\x21\xe4\xb5\xf8\xa8\x4d\x67\xcb\xbe\xf2\x2d\x22\x7d\xa2\x86\x76\x48\x7c\xa9\x1f\xec\x15\xb7\xf4\xe9\xa3\xcf\x5a\x76\x64\x36\xa3\xaa\xe0\x99\xb9\xab\x5d\xf4\x7f\xa7\xd5\x16\x5c\x3e\xf4\x82\x02\x53\x06\xb4\xd7\x15\x74\xe5\xcd\xb5\x1e\x48\x76\x56\x5e\xfc\xc1\x12\x50\x74\xbf\x93\xd5\x6d\x4e\xe5\x03\x10\xa7\x44\x97\xfc\xb8\x6a\x81\x9c\x03\x2a\xa9\x37\x9f\xec\x3b\xaa\xd5\x14\x8d\x5d\x54\xe8\xd8\x07\xb2\xfb\xc5\xc5\xbb\xd6\xad\xbe\x21\x6c\xf1\xd2\x40\x49\x80\x2b\x5b\x7a\xf6\xd2\xd9\xfc\xac\xb3\x32\xea\x33\x06\x03\xee\x34\x74\x4d\x02\x10\xb5\x7b\x61\x65\x3c\x16\xb0\x9d\xb0\x65\x6d\xd3\x80\xcb\x65\x07\xe7\x29\x0b\x7a\x92\xe8\x54\x0c\xe3\xf6\x7d\x81\xd1\x64\x7b\xc5\xb8\x2f\x72\xa7\x70\x6d\x5f\x50\xcf\xea\xeb\x31\xee\x0b\xa4\x97\xeb\x88\x59\xd7\x69\x10\xa3\xb7\xf6\xe8\x3e\x20\x96\x44\xe1\xb0\xf0\x20\x95\x6a\xcc\xed\xcb\x5d\x8b\x8e\x08\x0d\x10\xd4\xfb\xb6\xba\x7d\x30\x83\x80\xa9\xf1\x4e\x36\x77\x0c\x3f\xe1\x5d\x2b\x33\xfa\x18\x02\x06\x4a\x8e\x01\x92\x6c\x2f\xc0\x6b\xc4\x5a\x4b\xa1\x4e\x94\x21\xc1\xbe\x28\x04\xd1\x41\x42\xa7\x0b\x17\x1b\x93\x0c\x43\x2b\x85\xcf\x52\x52\x3e\x98\x0c\xb1\xf6\xbc\x9d\x91\xad\x09\xd2\x78\x00\x29\xa5\x84\xc8\x2d\x65\x93\x3a\x8f\x9e\x7d\x16\xb2\x54\x6a\xa1\x45\x48\xb5\xac\x6d\x4f\xae\x8f\x84\x03\xd1\x54\x20\xf8\x40\xca\x43\x72\xa7\x86\xfb\x12\x87\xf0\x48\xfe\x18\x98\xd2\xfe\xe8\x03\xac\x4a\xad\x93\x6f\xd4\xb2\x95\xb4\xd4\x0d\xc3\x4e\x6f\x87\x03\x32\x42\x81\x1d\xfe\xd9\x58\xe3\xc4\xa0\xb7\xb4\xb6\xb5\x65\x07\x0a\x18\x60\x06\xbe\xb1\xad\x8b\xae\xbc\x3c\xd8\x67\xfe\x12\xc9\x4a\x92\x0d\x06\x76\x04\x07\xb9\xb5\x84\x59\x61\x85\xa1\x14\xb0\x61\x5f\xe1\x4d\x22\x57\x38\xba\xe5\xde\xf5\xbd\xb9\x43\x29\x98\x0c\x50\x3b\x8a\x1d\x29\xf3\x8f\x52\x5f\xe2\x51\x57\x5d\xb9\xf9\x14\x2a\x87\xf4\x47\xc7\x9b\x06\x50\x2c\x6e\x29\x7a\xd4\xec\xf3\x6c\x0d\xa2\x13\x3d\x28\xca\x46\x7c\x6f\x8b\x1a\x0a\x6f\x76\x01\x5a\x7e\xa2\x58\x7d\xce\x36\xa9\x4c\x02\x3d\x60\x56\xbb\x76\x60\xb6\x63\x10\xf1\x02\xef\x41\x92\xf9\xed\x62\xbf\xda\xbd\x24\xe9\x9f\xab\xce\xcf\x07\x28\xfc\x09\xcb\x46\x3c\x55\xcc\xbf\x1e\x75\x04\xc9\x20\xfb\x2b\xcd\x41\x3a\x95\xbc\x24\x46\xc6\xe4\xaa\xb3\xed\x7a\x33\x6b\x3c\x9a\xb3\x8b\xf2\xe1\x88\xaa\x86\x99\x7a\x33\xeb\x89\x78\xa8\x45\x18\x94\xd6\xc9\x6c\x1c\xce\x00\x23\xd3\x65\x08\x84\xc3\x57\xf8\x09\x04\x38\x1a\x27\x66\x69\x5d\x67\xb6\xe9\x04\x26\x7e\xf0\x78\x9a\xd6\x0d\x06\x1f\x1c\x6e\x17\x7d\xc3\xce\xaf\x8b\x8e\xcc\x7f\x2b\x9c\x6f\x7b\xcd\x9d\xd6\x2c\xa4\xc1\x11\x32\x1e\x11\x94\xf6\xc8\xce\x93\x02\xba\x64\x4c\x23\xe8\x60\xfe\x01\xb3\xc1\x2f\xc0\x12\xb1\x48\x35\x5a\xae\xfb\x28\xd5\x9f\x98\x8d\x80\x53\x0b\xb8\x0f\xce\xb1\x41\x30\x16\x89\x0d\x6d\x49\x31\x7d\x2c\x1f\x4e\x15\xc0\x3f\x36\x60\x64\x35\xd5\x8a\xd7\xda\x21\x24\x44\x48\xec\x41\xf8\x93\xd0\x88\x80\xb0\xb6\x17\xa4\x7f\x7d\xe9\x48\x3e\x2b\x28\x5c\xe8\xd5\x51\xbd\x49\x5d\xbb\xae\x2f\xc5\x5f\xfc\x22\x37\x4f\x1a\x7d\xec\x34\x01\x36\x83\x26\x16\xf5\x3c\x85\x4d\xa4\x27\xbd\x3e\x11\x0d\x22\x86\x55\x52\x97\x41\x9e\x13\x41\x37\xf1\x97\xb7\x4b\xc7\xad\xe5\x37\x97\xea\x53\x7f\x13\xab\xce\xbf\xbc\x0e\x94\xe5\xbc\x5b\xe1\x7f\x6b\x21\x7e\x44\x70\x12\xc1\x3b\xb0\xe3\xaa\x61\x60\x1d\x4c\x83\x6f\x24\xa0\x1e\xda\xc6\x26\x54\xf1\x9d\xb6\x76\x67\xb3\x39\xa0\xab\x47\xce\x6a\xd9\x86\xf5\x92\xd1\x6d\xfb\x98\xce\x2b\xc4\xe6\xb9\xce\x66\x27\x54\xed\x73\xbd\x6e\x31\x9d\xa7\xfe\x9b\xb7\xea\xb6\x6c\x27\x3d\xba\xab\x88\x83\x1c\xfa\x72\xb3\x33\xac\x88\xf1\xfa\x9a\x4d\x7f\xf5\xb7\x4c\x1e\xc5\x11\x4c\xb7\x8d\x3e\x23\xf5\x2f\x3b\xb0\xf1\x33\x55\xe3\x22\xd1\x4a\x99\xc3\x10\x36\x26\x47\xb1\x44\x17\x24\xa8\x1c\x04\xe1\xa3\xfa\x4c\x0f\xd4\x83\xca\x3b\x01\x4b\x96\x26\xa2\x00\x27\x21\x79\x15\xea\x83\x46\x76\xb5\xbe\x04\xd7\x16\x5c\xc6\x67\x90\xfb\x58\x7d\x2f\x18\xf2\xfa\x5f\x5d\xe9\x07\xf5\x56\x12\x9f\x95\x13\x2e\x21\x6f\x96\x85\xb6\x21\x7e\x60\xa7\x49\x53\xe0\x6d\x43\x77\xe0\x64\x59\x78\x8d\x2f\x57\xb4\x5e\xe2\x40\x85\xba\xba\x58\xca\x2e\xc7\x05\x0c\x49\x6c\x43\x00\x88\x9a\x50\xff\x18\xa1\xc3\x0b\x82\xeb\xc4\x76\xc0\x72\x79\xd1\x6f\xfd\xa5\x56\x2e\x5a\x66\xd9\xa3\xd0\x87\x10\x6f\x62\x7b\x08\x5e\x2e\x34\x31\xee\xd6\xbf\xfc\xf9\x1c\xd8\xd9\x12\x0d\xd0\x81\x95\xc8\xcd\x33\x33\x42\x13\xc7\x28\x7d\x3c\x4e\x04\xa4\x27\xb8\xe0\x59\xfd\xeb\x90\xce\x93\x34\x76\x01\xa9\x7a\x5e\x3b\xad\x56\x3c\x89\x3f\x7d\x4f\x9b\x82\x62\xc0\xd9\x2c\x75\xc1\x25\xc0\x1d\x8e\xf5\xe8\xe5\xfd\xb9\x4f\xc3\x6c\xe4\x41\x14\xeb\xfa\x66\x70\x35\xe0\x74\xaa\x6b\x90\x3e\x71\x76\xb6\x08\x6e\xea\x42\xfb\xc0\x0c\x8e\xff\x46\x86\xdf\x53\x29\x2e\xee\xe1\x72\xdb\xe8\xea\xa2\xb7\xa7\xc1\x41\x27\x51\x01\x50\x2c\x56\x54\xe0\xb2\x4f\x63\xb2\x56\x71\xda\xf3\x1a\x3f\x24\x52\x41\x62\x2f\x1e\x26\x72\x22\x2e\xb5\x21\x61\x62\xa3\xf9\xd6\x1a\x0a\x8c\x56\x1a\xd4\x83\x09\xc4\x4b\x02\x8a\xae\xe9\xf1\xb4\x57\xef\x2c\xc0\x37\xdb\x1d\x74\x4e\x93\x90\xe4\x19\xd2\x04\xa5\x69\xdb\x97\xc8\x72\x3a\xcd\x7a\x1f\xf4\x76\xf6\x03\x60\xfb\x7d\xc1\xf6\x0f\xfc\x87\x59\x65\x5a\x4e\x10\x84\xe2\x6e\xca\x44\x3a\x9e\xfe\x8c\xc5\xdf\xf2\x0f\xd5\x28\xc4\x23\x1c\xc0\x35\x48\xb5\x01\x72\x7b\xb1\x15\xba\xef\xb2\xb6\x25\xdc\x1f\x3b\xb5\x7d\xc1\x69\x90\x3e\xe4\x97\x75\x66\xa4\x1a\xf8\xfa\xea\xc2\x46\xb9\x81\x66\xd2\x83\x58\x52\x17\x6d\x89\x81\xef\x63\x1f\xdc\xa7\xf4\xf6\xdb\x12\xbd\xe4\xee\x9c\x19\xb0\x0b\xa7\xe8\x6c\x63\x74\xc1\x28\xc4\xfb\xae\xb7\x0c\x09\x5e\x89\x00\x24\x87\xce\x89\xea\xab\x3d\xfc\xa5\x84\xdd\x9e\xbd\x45\x61\xf3\x3c\x16\x76\x46\xba\x95\x3d\xcd\x30\x0b\xb5\x44\x17\x3d\xb2\x3e\xf2\x9c\xd2\xad\xc9\xf6\xac\xfa\xc8\xe9\x5d\x6d\x16\xd7\x34\x7e\x1e\xa2\x73\x06\x44\x94\xf8\x28\x84\x94\xfa\xe2\x38\x20\x4b\x6b\xec\x8e\x4d\x47\x0a\x42\x45\x58\x10\x48\x45\xd2\xd8\x7d\x8f\xaf\x38\x80\xd3\x21\xa2\x22\xfc\x69\x19\xe0\x33\xc5\x59\xd8\x2c\x24\x6c\x65\x81\x36\x81\x43\x94\xce\x5d\xa0\x84\xa1\xc5\xb0\x70\xd9\x72\xdd\x41\x15\x01\xb8\x82\x02\xdb\x92\x00\x05\x10\x85\x1b\x25\xa8\x81\xc7\x73\xe5\xb4\x57\x6e\xf8\x4e\xea\x7b\xcc\x90\xac\xdf\xa7\x47\x45\x6a\x0c\x58\x5f\x34\xc4\x5c\xa4\x35\xf0\xc6\x0d\x48\x47\x9e\xb0\x5e\x57\x66\x09\xc0\xdf\xf2\x0c\xf5\x85\x81\x48\x8c\x11\xa1\xd8\x04\x75\x67\x0d\xde\x51\xc8\x03\xd1\x05\xf1\xaf\x0c\x0a\xc5\x40\xd6\xd3\x82\x3f\x79\x4e\x8d\x42\xc4\x89\x38\x24\x06\xe3\x2a\xe0\x65\xe6\x7c\xd9\x43\xa7\x3b\x89\xc7\x6b\xed\x48\xbf\x47\x13\xc6\x47\xbb\x57\x8e\x3e\xc3\xcc\xf0\x11\x47\x4f\x24\xb1\x6b\x1f\x10\x7a\x8e\x47\xf3\x49\x0e\x20\x7b\xb0\xd9\x42\xc7\x85\x7c\x8f\x26\x9d\xf4\xfc\x3e\xa4\x27\x3d\xea\x31\x4c\x7b\x07\x03\x02\x87\x50\xc7\xc8\x24\x06\xa0\x70\x2a\xb0\xf3\x9e\x2a\x0c\x68\xef\x2c\xef\xa2\xb0\x57\xe8\xf7\x0d\xc6\x5e\xd7\xc9\x73\xaa\x1c\xf4\xa7\xdf\x9e\xf0\xb8\x7e\x5d\x72\x64\xc7\x17\x11\x55\xf1\x8b\xc5\xd1\xa5\xba\x68\x6b\x5d\xfe\x3d\xe0\xc3\xe7\x20\x91\x18\xac\x6d\x5b\xd4\xf9\x30\x1f\x76\xea\xc4\x0a\x04\x3a\x4e\xfb\xb0\x8b\x48\x51\x28\x1a\x63\x0f\xa7\x1b\x86\x2f\xf5\x41\x31\x02\xaa\xee\xf9\x74\x95\xd2\xa1\x7d\x25\x01\xb2\xb5\xea\xcc\x66\xec\x12\x7a\xf6\x25\xe9\x92\xa3\xa7\x1c\x45\x13\x4c\x89\x22\x26\x6a\xbd\x68\x9e\xf5\xbd\xde\x88\x6d\xa0\x76\x51\xc6\x30\x58\xad\x40\xf1\x20\xcf\xc1\x9c\x24\xdf\x88\x96\x76\xfd\x86\x27\xde\xad\x55\x04\x1c\x4e\x68\x14\xe0\xc5\x38\xdd\x50\xdf\xdb\xe0\xdb\xcc\x18\xda\x89\x48\x2e\xb1\x68\x2f\x92\x34\xb6\xe0\xdb\xec\x79\x39\x0f\x9a\x90\xbb\x15\x8d\xdc\xc4\x80\xb9\x01\x94\x0f\x38\x85\xdb\x2a\x19\x2f\xc1\x07\xbe\x85\x43\xeb\xb5\x47\x21\x52\x69\x84\x9e\x70\x5c\xc7\xdd\x8a\xec\x38\x87\xa9\xc9\x62\xd5\xf8\x6e\xd6\x71\x23\xeb\x39\x5d\x9d\x00\x0a\x32\x91\xe8\x29\x5b\x62\x76\x51\xb2\x2d\xd9\xe1\xa8\xb1\xcd\x1e\xe1\x17\x0b\x88\x21\x49\xa4\xb1\xab\xc4\xf5\x72\xfa\x14\x0a\xe4\x22\x58\x3c\xa8\x57\x92\x98\x4f\x16\x95\x5c\xf7\x68\x1d\x1f\x19\x3a\x71\xce\x90\xc4\xf6\x48\x73\x6b\x08\x8b\x62\xc8\xd1\x38\x34\xbb\x3a\xe2\xf1\x7a\xa6\x62\x22\x20\x17\x50\x02\x0f\x90\xad\xa6\xb1\x94\x1e\x1e\xa2\x5d\xf8\x9c\x7e\xe0\x1a\x40\xae\xe7\xf8\x1c\x76\x36\xc8\xf9\x36\x14\xc8\x0e\x29\x47\xc1\x2f\x6c\x3c\x03\x6b\x8a\x22\xc5\x2f\x76\xb0\x62\xd7\xcb\x2a\x1e\xaa\xc3\x03\x83\x7a\x03\x57\x4f\x7c\x23\x3b\x9b\xa1\x1d\x6d\xf1\x90\x31\x2c\x98\xd3\x8d\x05\xe7\x23\x7f\x08\x09\x30\x48\x32\x14\x40\x90\xc0\x91\x0b\xb4\xdc\xc8\x80\x26\xd6\x2e\xa8\x01\x02\xa8\x6b\xad\xbc\x77\x3c\x7a\xd0\x74\x84\x8b\xdd\xa4\xf5\xd4\x3e\x31\x45\x70\x46\x28\xc8\x45\xd7\x53\x7f\x6a\x15\x7e\xef\x3b\x24\x9b\xd0\x0b\x46\xb2\xc4\xae\xf5\x48\x3d\xb1\xc6\x3d\x06\x87\xe2\x48\xc0\x25\x80\xe4\x2e\xe3\xcc\xbf\x67\x4f\x8e\xb8\xf0\x5f\x49\x4f\x58\xc9\xe7\x8e\x33\xee\x39\x14\x0a\x49\x24\x8f\x07\x7d\x47\x57\x1e\x89\x3f\x7e\xf1\x45\xbe\xae\x91\x73\xfb\x1a\xae\x1e\x40\xd2\xd2\x7b\xcf\x0e\x09\x03\x03\x37\x80\x85\x02\xc8\x23\x68\x94\x92\xaf\x2b\x73\x5f\xbc\x65\x94\x4d\x88\xa5\x10\xc0\x45\x62\x24\x20\xe2\xb9\xc4\x66\xc1\x45\x61\x58\x50\xb8\xda\xe1\x43\x58\x2b\x88\xba\xf4\xaa\x30\xe0\x6d\x57\x56\x77\xe8\xcd\x61\x5e\x75\x7e\x40\x5c\x05\x8c\x08\x6b\x42\xd6\x8d\x07\x66\xfb\x3d\xa0\x37\x3e\x90\x49\x89\x6f\xf0\xfc\xf7\x53\x1c\xbc\xb1\xab\x76\xd1\x8b\x33\x7e\x49\x5a\x63\x40\x15\xda\x5d\x93\x7b\x68\xe3\xbe\xb3\x3b\xe5\x35\x03\x8c\xf4\x0b\x55\xc4\xf6\x1f\x9a\xfe\x1f\xf5\x7c\xf1\xb5\x2e\xba\x4a\x0a\xf5\xfd\x67\xf1\xa0\x79\x22\xff\xe8\x43\x27\x2a\x46\xb7\x47\xf2\xd3\xe0\x80\xa5\x15\x52\xee\x28\x6e\xa0\xb9\x45\x96\xdc\x7a\xbf\x60\x7f\x5e\x41\x44\xca\x07\x9e\xe4\x9b\xe7\x22\x48\x40\x60\xd8\x45\x47\x6e\xc9\x32\x62\xd3\xcd\x1e\x19\xcf\xcb\x0d\xc9\x5c\xee\x48\x82\xaa\x6f\x6f\x15\xf9\x5e\x7e\x09\x61\xa3\x8f\x70\x84\xbf\x53\x10\xa3\x46\x2a\x8d\xf1\xb6\xab\xd8\xb1\x56\x64\x62\xd6\xd2\x30\xf1\xcf\xc2\x41\xfc\xab\x23\xf2\x03\x13\xb2\x71\xee\x27\xa9\x5f\x9e\x5a\x5f\x97\x6c\xf0\x79\x1c\x12\xc7\xe6\xf3\xad\xb7\x2f\x18\x36\xa8\xdb\x8a\xb3\xc0\xbc\xc4\xf7\x84\xf1\x8f\x91\x90\xf6\x7f\xae\xbf\x6a\x42\x99\xe8\xae\xee\x79\x61\xd0\xfc\xa3\xde\xb6\x3f\x47\xa1\x89\x5a\x74\x4e\xc4\xbf\x0f\xc4\x7d\x55\x93\x01\x12\xa8\x70\xa8\x18\xb8\xde\xbd\x2d\x46\xbb\x8d\x17\x75\xb7\xc5\x20\x84\xd6\xef\x6e\xd4\xa2\x76\xb1\x7f\x09\xcb\x04\xfb\xf1\xe4\x1a\x49\xb9\x9d\xcb\xbb\x1e\x29\x7c\xd8\xd2\x14\xdd\x59\x2b\xfe\x21\x4f\x75\x0e\x02\x2b\x03\xab\x86\x38\x36\x07\x9e\x00\xe5\x8f\x7d\x7a\xfb\x95\x25\xc2\xad\x9b\x3c\xc0\x97\x86\xd0\x39\xaa\x08\x54\xbc\xc2\x25\x1e\x34\xb2\xa2\xe8\x8c\x30\xad\x25\xea\xe1\x12\x0f\x15\xda\x12\xb7\xa1\xf9\x97\x13\xd0\x62\x2d\xa7\xda\xc1\x0d\xe1\xba\x5b\x0f\x9e\x26\x8e\xeb\x6c\x07\xcc\x3d\xa0\xcd\x70\x46\xfa\x4b\x78\x2c\x01\x5a\xc3\x58\xa2\xb5\xf6\x4e\xac\xb7\xc6\x89\x0e\xac\x11\x55\x8f\x9c\x67\x2f\x6b\x47\xb1\x0f\xce\x74\xd1\xa3\x19\x8b\xc7\xab\x51\x9b\x4f\x3f\x77\x64\x1b\x86\xec\x96\x30\xd4\x40\xf3\x3e\xfc\xcd\xd0\xd8\x70\x55\x9f\x0d\x57\x0d\x84\x33\x07\xc2\x5d\x4f\xae\x95\xb4\x5c\xba\xf4\xf9\x6c\xe8\x93\x1c\x4b\x14\x05\x6e\xd2\x7c\xcd\x65\x08\x62\x8b\x99\xe6\x0d\xd6\x7a\x7e\xf4\xca\x87\xae\x37\x7f\x10\x84\x91\xbd\xe9\xe7\x28\x1f\x0d\xcb\x21\x15\x22\x44\x4c\x0f\xe0\xaa\x76\x22\x5e\xa1\x8e\x15\x7e\x4c\xb1\x4d\xbd\xe7\xd9\x42\x02\x6f\x05\x50\x08\x7a\xd4\x93\x9d\x41\x5d\x60\x22\xae\xec\x04\x8a\x1d\x14\xba\xf7\xf9\x7d\x03\xb8\x8f\xb9\x6e\xc7\xd0\x13\xe9\x75\x1f\xc1\xb3\x1d\xd1\x3a\x70\x14\x99\x75\xed\x2b\xb8\x69\x72\x62\xed\xd5\x0e\x30\x5d\xb0\x36\x08\xc0\xc4\x22\xd6\x03\x5f\x43\x36\xd5\xa9\x73\x30\xc2\xc3\x40\x34\x43\x5e\x19\x00\x23\x3b\x6d\xdc\x32\x3d\xb2\x05\x16\x92\x4b\x67\x1f\xb0\xe4\x26\xe6\xa1\x5b\xfb\xb1\xa3\xdb\x16\xd5\xb6\x02\xaa\x76\xc2\x8e\x5f\x48\x43\x6d\xb0\x51\x6a\x6a\x5b\x81\xc4\xda\xbe\xed\x78\x14\xb6\x4e\x7c\x49\xf5\xa0\x10\x81\x80\xac\x07\x89\x1f\xf7\xe9\x00\x24\x8e\xe1\x3a\x3e\xd6\x53\xc9\x66\xa9\x9f\xf6\x88\xc5\xe5\x4c\x8e\x84\xd3\x78\xa3\xfb\x3d\xe1\xb9\xe0\x87\x11\x08\xb0\x6e\x4f\x29\x86\xd8\x97\xb0\x43\x8c\xe4\x90\x58\xf8\x44\xa1\xbb\xd6\x69\xea\x1c\x03\x14\x75\x60\x2b\x1a\x6d\xc3\x75\x65\x96\x80\xaf\x3e\xf9\x05\xc8\x1c\x78\x42\xbf\xbe\x0b\x43\x3c\x69\xfc\x1e\xbe\x7f\xb4\x43\x67\x64\xf7\xdf\x45\x1b\x31\x24\xd6\x53\x97\xb7\x4f\x63\x22\x20\x80\x2c\xae\x4c\xb1\xac\xf0\x6d\x7f\x51\xce\x21\xc3\x7b\xde\xf4\xf7\xce\x39\x84\xf8\x19\x09\xcb\x1a\x7b\xa6\x47\x23\x38\x83\xba\x20\xbe\x1b\xbf\x7f\x84\x9d\x6b\x68\x6c\x3a\xec\xa2\x87\x36\x7c\x66\x85\xe5\xee\x3c\xed\xd5\x57\xa4\xc7\x45\x7f\x53\x45\x9f\x6d\x48\xb2\x72\x6c\x51\x14\xa2\x08\x29\xac\x6f\xcd\xa0\x9b\xce\xb3\xce\xf0\x18\xbe\xa8\x0d\xc2\x8c\xd0\x26\xa0\x84\x24\xc6\xb9\x88\xbf\x1e\xf8\x6c\x15\xa3\x23\x76\xa8\xb3\xd6\xf5\x1e\xb7\x30\x66\x52\x5f\xaa\x10\x97\x6e\x36\x9d\x36\x46\x35\x05\x75\x6d\x2a\xa7\x8d\x41\x6e\x6d\x9b\x0f\x4e\x1b\x43\xa4\xb5\x6d\x2e\x9d\x36\x86\x03\x6a\xdb\x5c\xdf\xc9\x38\xc6\x91\xa9\x6d\xf3\x18\x36\x91\x1f\xf7\xe8\xd1\xfe\x89\x08\x5f\xcd\xa9\x19\x83\x2e\xd1\xa7\xf2\xd0\x77\x54\x2f\x0c\xec\xdc\xaf\xc5\x1b\xc9\x17\x3d\xe9\xb1\xed\xd6\x6e\x44\xc3\xd9\xb3\xda\x38\x00\xd2\x20\x68\x93\x79\xd6\x5b\x7a\x05\x02\xaa\x6d\x5d\x81\xe0\x73\x73\x43\xd8\x1f\x16\x6d\x61\xaf\xc7\xd4\xc9\x7b\xc8\xfd\x34\x4b\x4b\xef\x22\x4b\xc3\xba\x90\xa2\x9e\x32\x24\xfa\x92\xc7\x8b\xc4\x2a\xbb\xb9\x21\xef\x25\x48\xd3\xb0\x75\x1e\x9a\x2b\x58\xc7\xf5\x09\xe6\x95\x24\xaf\x58\xd8\xff\xea\x0a\x88\xc7\xbd\xfa\x1c\x76\x85\xdc\xbf\xf4\x44\x36\xd6\x8d\x4e\xf3\x4f\xc2\x9a\x34\xff\xa7\x3a\x02\xf4\x67\x78\xcd\x61\x52\x73\x8b\x29\xaa\x8f\xe6\x0d\x68\x77\xfd\x21\x9d\xa5\xab\xb2\x77\x48\x7d\xf2\x84\x2a\x22\x0d\x7f\x7d\x7a\x56\xa1\x2b\x77\x94\x3e\xaf\x45\x22\xef\x71\xbf\x45\xa8\x19\xc8\xe2\x3a\xac\xbf\xeb\x0a\x31\x1f\xe0\x08\x2a\x82\xba\x30\xed\x2e\x70\x24\xc4\x53\x1e\x10\x4a\x45\x06\x48\x10\x84\xa9\xb3\xc9\xaf\xb6\x02\x94\x55\x48\x4e\xea\x19\xc4\x77\x51\x02\x04\x1f\xea\x17\xf1\x59\xd9\x55\x2f\x34\xb9\x81\xc6\xb3\x25\x77\x77\x85\x2b\x90\x03\xab\x13\xb0\x29\xa1\xbe\xcf\xe6\xf0\x58\x1f\x50\x20\xac\x8d\x1d\xaa\xf9\xe0\x1f\xd7\xaa\x3f\xa5\x1a\xb2\x36\x0c\x61\x6f\x54\x62\x3d\x8f\x76\xc6\xfa\x9a\x6d\x45\x3b\x7b\xb7\xce\x1e\xb8\xd8\x71\x7b\x00\x8d\xb9\xe8\xe6\x64\xb5\x2a\xa1\x85\xbe\x5a\x88\x6d\x1d\xe8\x01\x9b\x58\x85\x56\x06\x8c\x5a\x42\x7b\xa5\xc8\xac\xc4\x2f\xdf\xed\xae\xd7\x34\x94\xa9\x84\x33\xea\x4b\x84\x32\x7a\x34\x4c\x00\xeb\x00\xa4\x60\xe5\x19\x5f\xfa\x1d\x4e\x5f\x02\x17\xff\xf5\x03\xa2\x5c\x60\x9b\x57\x94\x6d\x10\xdc\xa2\xf7\x73\xdf\x66\x69\x17\x6d\x17\xed\x59\xf1\x4b\x1c\x4d\xb4\x83\xcb\x5d\x71\x32\x4e\x14\xc0\x11\x09\xfd\xd6\xda\xe3\x9e\x37\x02\x6f\x5b\x91\x9a\x4f\x89\xdd\x0c\x1b\xa6\x96\xba\x2d\xbc\x07\x3a\xba\x70\x4a\xd0\xe0\x1e\x67\x22\x1b\xdb\xe1\x0a\x6f\x7d\x79\xc2\xcd\xef\x9d\x1b\x3a\x88\x57\x12\x82\x6d\x4c\xf8\xca\xea\x27\xf5\xde\x3f\x8b\x28\x4b\x88\x0b\xfb\x0a\xa3\xb0\x1e\x7e\x50\xe2\xb7\xbd\xe0\x79\x32\xa0\x46\xbb\xcd\x09\x88\x1b\x95\x1a\x59\xca\x68\xb3\xd5\xef\x8c\x06\x82\xb1\x57\x12\xf5\xef\x8a\xad\xf7\xce\xed\x2a\x8b\x2f\x8e\x46\x34\xe6\x3b\x7e\x3b\x80\x7b\x13\x49\xb8\xc1\x93\xc2\xd8\x45\x21\x6a\x12\x97\x20\x70\xdb\x8b\xfa\x8f\x1a\x81\x05\xe6\x90\xff\x7e\xe4\x1a\x01\xfa\x78\x87\xe6\x93\x90\x3f\x49\x68\xcc\x72\x04\x1f\xf7\xe0\xe8\x40\x57\x24\x70\xc2\x74\x16\xcf\xc4\x5e\x8b\xfa\x31\x09\xd4\x8b\x61\xb3\xbc\xbb\x4c\x0d\x67\x24\xa0\x25\xbf\xc8\x1e\x0a\xfc\xb9\xec\x72\xe9\x81\xb3\x87\x52\x39\x69\xde\xde\xc3\xb2\x48\x9a\xb9\x44\x56\xd0\xed\xa0\x17\x35\xab\xbc\xa8\x93\x99\xff\x0a\x1c\x81\x6a\x95\x2f\x0b\x8c\xbd\x42\xd2\xf3\x7b\xef\x9d\x88\xf5\xdc\x07\xba\x06\x38\xdd\x85\xb2\xe3\x3f\x62\x5a\x97\x27\x5d\x93\x9c\x4e\x2a\x85\xb0\x17\x4e\x40\x06\xed\xe2\xbd\xde\xd5\xe6\xd3\x09\xbe\x3a\xc1\xbf\x8b\x5e\xc7\xf7\xd4\xd6\xa8\x5d\x2d\x8f\x55\xd5\x95\xf9\x6e\xb5\x0a\xac\x2e\x53\xda\xbb\xd2\xe4\x32\x95\xa5\xc9\x62\x4f\x96\x64\x3e\x59\x16\x2b\xe5\x3d\x94\x86\x1d\xf8\xab\xd5\xd0\xea\x7b\x6f\xd2\x8d\x85\x78\x98\x43\xed\x93\x70\x4f\xfc\x39\x00\xab\x09\x7f\x6b\xbf\xd7\x10\xc7\x8e\x76\xd1\xc8\xba\x2f\x0a\xd6\x5a\x17\xd4\x81\x13\x20\x28\xa2\x56\x6d\x40\x37\x3e\xe9\xef\x68\x48\x98\x89\x1b\xc8\xaa\x76\xe9\x12\xfa\xba\xf4\xcd\xc0\x57\xaf\x16\x44\x5f\x57\xbe\xb3\x1e\x3e\x49\x4d\xe8\x06\x78\xd1\xd2\x27\xd7\x0b\xa8\x02\x27\x99\xaf\xfa\x96\xca\xb5\xb3\x45\x4e\xc4\x93\x87\x0f\x1d\x75\xff\x19\xf6\x04\x8c\xb7\x02\x21\x10\xb4\x2e\x20\x04\x22\x71\x74\xf0\x32\xdd\xf5\x11\xf2\xdf\x2d\x1f\x8a\x38\x97\x16\xd4\xee\xc3\x8a\xab\xc2\xea\x83\xca\x47\x16\xb0\x32\xb5\x0a\xdc\x5a\x37\x9d\x81\x48\x94\x82\x4b\x30\xef\xfd\x77\x7a\x58\xe7\x5b\x67\x0b\xac\x75\xe7\x41\x93\xda\x7b\x2e\x2c\x24\x99\xcd\x80\x81\x8e\xff\x88\xba\x75\x74\xe5\x17\x14\x35\xa7\x2d\x52\xe7\x31\x13\xb2\xd1\x65\xa9\xb0\xf7\xfe\x8b\xa3\x6e\x45\x62\xb5\x2a\xcd\x67\xae\xb9\xe4\xf3\xc1\x47\x53\x2f\x3e\xc7\x77\xc2\xd1\x25\x27\x3b\xce\x5a\x8d\x0e\x46\x24\x8a\xc4\x20\x84\x59\x39\xf3\xa9\x77\xf5\x02\x6b\xf5\x70\x37\x18\x92\xa5\xab\xfa\xc8\x9f\xaa\x7e\x57\xab\xba\x78\xa1\xc0\xf4\xc4\x77\xb6\x40\x39\xb8\x5f\x35\xbc\x56\xec\xa0\x2d\xab\xd0\x63\xec\xf8\x18\x35\x84\xc8\xa3\x6f\x3f\xfe\x33\xa9\x80\x86\xd8\x78\xe9\xa9\x4c\xc8\x1c\xc0\xed\xa5\xd0\x25\xb1\x72\xb4\x24\x78\xea\x6c\xdd\x82\x0b\x0c\x74\x0d\x61\xd4\xbf\xf4\x82\xe0\x2f\x24\xea\x32\xc1\x1b\x8e\x10\x20\x10\x75\x48\x2c\x5c\x54\x19\xba\x41\x10\x9a\x86\xe0\xdb\xfd\xf4\x35\xb3\x99\x6b\x97\x52\x02\xfc\x23\x2a\xba\xb1\xef\x8e\x7f\x67\xd7\xde\x33\xef\xca\x1c\x1c\xb2\xd5\x48\x1c\x76\x1f\x49\x60\x7d\xe4\xc6\x70\x3b\x03\xaf\x07\x58\x6b\x2f\xf8\x04\x13\x89\x61\x10\x99\x54\x6b\x61\x2c\xf2\x05\xdf\x2b\x1a\xc7\xd2\xdd\x17\x29\xbd\xd5\xcb\x42\x1f\x06\xde\xa4\x2c\xfe\xcf\x0c\x07\x84\x81\x6b\xf1\xf0\x84\x2f\x41\x75\xfa\xf2\x1d\xa1\x0a\x78\xf9\x16\x2c\xe9\x73\x64\xfc\x13\x61\x3d\x08\xbc\x5b\x24\x29\xb9\xcf\xf1\xef\xdd\xd0\xf3\x06\xb8\x71\x3d\xfe\xda\xa3\x89\x84\x8b\xae\x9f\xed\xe0\x34\xac\x05\xb7\xcc\xee\xe2\x3d\xa8\xca\xd1\x2e\x81\x39\xb0\xee\x03\x0b\xdc\x2e\x80\xc7\x0a\x70\x3e\xee\xd7\x63\x85\x30\x4f\x0d\x92\xdc\xc4\x5e\x1b\xa4\x47\x3d\x77\x0f\x47\x34\x40\x9a\xab\x0b\xa7\xc7\x3c\xef\xff\xda\x2a\xa6\x0b\x77\x30\x79\xae\x43\x12\x75\x51\x8c\x18\x69\xc2\x1d\xf7\xce\x2a\x5e\x7b\xda\x73\xf7\xa4\x44\x2f\xe4\x4d\x26\x15\x46\x4f\x7b\xee\x4d\x55\x58\x1f\x6a\x0c\x7c\xe8\x03\x0a\x86\x6e\x82\x34\xc8\x1b\x43\xc2\x5d\x74\x6f\x24\x59\x0e\xd0\xaf\xf0\xad\xc6\xbe\x7e\xb2\x80\x66\x79\xed\x0f\x3d\x9b\x00\x32\x14\x14\x3f\xb7\x23\xfd\x86\xb0\x77\x28\x5d\x47\x58\xdf\x3c\x56\x47\x32\x6c\xae\xec\xa2\xd3\x18\xc0\x63\x82\x0d\x8c\xae\x50\x3c\x26\x68\x76\x19\x1b\xd8\x09\x7f\x7d\x92\x96\x60\xe3\xe0\x95\x6c\x1c\x04\xc1\x48\x19\x16\x02\x0c\xe0\x0d\xe0\x08\x2c\xab\xf1\x11\x08\x22\x49\x3c\x8e\x61\x57\xbe\xac\x63\xeb\x76\xd8\x82\x90\x6f\x00\x70\xa7\xff\x1f\x7c\x60\x7f\x18\x12\xba\xf5\xfd\xb2\x05\x59\xda\x03\x35\x4f\xe0\x09\x50\x89\x5e\x95\xa7\xce\x1c\x34\xc6\xde\x3b\xbb\xa9\xe2\x1e\xa1\x50\x5d\x0b\x43\xa3\xbc\xe7\x3d\xbd\x3d\x49\xe4\x9a\x45\xb8\xda\x6c\x5f\x7c\xae\xe2\xa9\x7f\x68\x3e\x85\x41\x3d\x96\x16\xe3\x6b\x01\x96\x06\x66\x73\xa9\x5b\x97\x5c\xe1\xb1\x2c\xaf\xfd\xc6\x41\x5d\xea\x66\x17\x3d\x2c\x44\x14\x36\x26\x2e\xa2\xb2\x05\xb9\xe3\x68\x9d\x9b\x33\x90\xed\x78\xe1\x58\x74\xe1\xcb\x7b\x7b\x97\x9b\xd4\xb2\xa7\xd1\x95\x19\x83\x9f\x55\xdf\xb5\x56\xf1\x7d\xf0\x14\xd9\xb0\x42\x24\xdc\x66\xa1\xbd\xe3\xec\x08\xf8\x4e\x2d\xfa\x8c\x53\x30\xf7\xe8\xbd\x18\x5d\x38\x49\xb1\x68\x6d\x3c\x41\x03\x0b\x25\x9e\x05\x1f\x50\xa7\x1a\xce\x03\x80\x1c\xf4\x78\xe4\x30\xdd\x70\x95\x76\x76\x50\xbd\x2b\x1f\x90\xad\x63\xa1\x8b\x5e\x3d\x0f\x41\x92\xd7\x6f\x92\x34\x33\xbc\x3d\x68\x40\xda\xa9\x5f\x71\x10\x3a\xb4\x0e\x5c\x9e\x03\x8f\x7f\xd2\x3a\xf8\x48\x2c\x9c\x01\x2c\x9c\x7a\xf8\x74\x34\x24\xd0\x17\xf5\xa8\x2a\xc3\xdf\x01\x55\x20\x0b\x29\x7c\xca\xaa\x15\xbf\xa5\x59\xd1\x85\xfb\x0e\x50\x3d\xac\x81\xe0\x36\xd4\x8e\xe3\xf5\x04\x16\x97\xdd\xd9\xe2\xdb\x79\x19\xe2\x5b\xe5\x31\x77\x7c\xff\x80\x6e\xb4\x50\xa1\xc3\xae\x78\x62\x4e\xd8\x82\x20\x0f\x44\x4c\x50\x33\xf6\x2a\xb7\x8c\xee\xba\x27\x57\xbd\xb8\x23\x49\x32\x03\xc8\x24\x05\x34\xe1\x68\x3b\xef\x63\x0f\x9d\x80\x74\x73\x59\x2c\x81\x43\xe4\xf6\x20\xb0\xce\xc5\x77\xc9\x9e\x44\xed\xbe\x0e\xe8\x53\xfd\x06\xa2\xbe\x2c\x43\x60\xb3\x36\x95\x84\xf8\x42\x06\x2e\xa1\x15\xfd\x3d\xbc\x74\xd3\xcc\x48\x63\xac\x0e\x16\x9a\xfe\x17\xe2\x75\x8f\xdf\xa6\xd4\xa9\x51\x26\x34\x23\x3e\xf2\x47\x6e\xb5\x1d\x7a\xde\x6d\x02\xfa\xb7\x9c\xfb\xcb\x3e\x75\xee\xeb\x36\x55\xbb\x32\xf7\x10\x6a\xd7\x64\x8c\xcf\x7a\xbe\x78\x07\x2e\x81\xdb\x39\x01\xc5\x20\xe9\x89\x4d\x0f\xbf\xc8\xa5\xff\x35\x64\x5f\x60\xd5\x28\x7a\xb5\xb2\x24\x1e\x39\x27\x4a\x3c\xcf\xbc\xd2\xc0\xbc\xef\x68\x0b\x21\x32\x2d\xe3\x37\x07\xb4\x7f\xb0\x55\x48\x63\x72\xc3\x2a\x38\x08\xd6\x02\x75\xfa\x28\x9d\xdb\x77\xaf\x29\x34\x81\xf0\x11\xc1\x9c\x2f\x42\xe0\x7a\x0c\xc5\x0e\x7d\xfd\xc8\x77\xf0\x01\xac\x03\x2b\xaa\xf1\x88\xa4\xde\x1d\x52\x34\x84\xb6\xdb\x67\x2d\xca\x07\x4c\x18\x9e\xeb\x07\x29\x7b\x58\x60\x6f\x2e\x8b\x2d\x86\x01\x7e\x8d\xcc\x17\x3c\x04\xd0\x0f\x69\x9a\x12\x64\x45\x0e\x48\x3a\x14\x16\xcb\xde\xec\x40\x62\xd0\xd4\x67\x10\xba\xfb\xb6\x8f\x77\xcc\x4f\xe7\xee\x34\x68\x42\x6c\x6a\x3d\xcf\x89\x92\x69\x3e\x71\x66\x0c\xb1\x6e\x37\x0c\x67\x47\x1f\x7a\xce\x61\xf9\x30\xb0\xee\x96\x85\x58\x07\xb8\x3a\xe2\xe0\x37\x3d\x40\x97\x2e\xc8\xc2\x44\xbc\x03\x6a\x00\x9a\xdb\xb4\xa6\xa8\x89\xd0\xac\x7d\x97\x1e\x61\x41\x6c\xf6\x83\x6c\xb0\xf2\xb0\xb1\x8b\x6f\x0b\xd2\x43\xca\x41\xc0\xd9\xbe\x83\x5f\x7a\xbc\x6b\x27\xc2\xec\x89\xff\xd5\x17\xe8\x6e\x26\x58\xcd\x71\xe0\x1e\x0a\xcf\x1c\xee\xa1\xac\x7a\x04\xbe\x40\x96\x13\x00\xdd\xc4\xee\x0f\x4e\x78\x04\x8e\xae\xf8\x20\x72\x31\x63\xbd\x8a\x59\x3f\xb4\xbd\xf1\xa1\xe2\x2f\x24\x58\xbc\x02\xaa\x42\x3b\xe0\x48\xa3\x08\xf4\x66\x07\x4f\xfe\xae\x78\x6b\x7e\xa6\x6f\xa2\x18\xde\xe6\x68\xa7\xd8\x04\xc5\x6c\x60\xc5\x87\xae\x43\x2a\x3a\xcc\x7c\xc4\xf4\x5f\x7b\x05\x94\x6b\x15\x4d\x9c\x17\x51\xdc\x1d\xa0\xac\xe7\xdd\x51\x80\xce\xe0\x9b\xd5\x4e\xe3\xdc\x30\x6c\x5f\x62\x00\xc8\x50\x43\x71\xe9\x1c\xea\x25\x64\x6f\xf5\x7b\xed\x3f\xe1\x4c\x8e\x52\x92\x7d\x6f\x72\x9a\xd4\xb3\xe6\x5d\xf2\x40\x25\x95\xd7\x70\x07\xc9\xd8\x7f\xd9\x91\x75\x53\xd9\x23\x4a\xa9\x68\x0e\x41\x10\x9e\x51\x1b\x13\xd6\x19\x0c\x24\x9f\xad\x68\xf5\xa2\x6d\xc5\x87\xbd\x1a\x52\xb1\xaf\xdb\xb3\x2e\x9e\x20\x1b\x71\x44\xb4\x7a\x74\xaa\x27\xc8\xfc\xc1\xc9\x62\x81\x15\x24\x17\xf6\x21\xd1\x0b\x4d\x3c\x5b\x8e\xfe\x6d\x21\x68\x02\x46\x14\x4c\x00\x06\x85\xc6\x24\x28\x43\xce\xd4\x1a\x52\x1a\xac\xdc\x35\xa1\x1d\xdf\xe9\x64\xbb\xc0\x41\xd0\xdd\xf4\x6f\x25\xf7\x3f\xea\x13\xe6\xf7\x2e\x17\xd9\x02\x25\x66\x90\x2b\x14\x9e\x60\xa1\x60\xdf\x7f\xba\xd9\xa3\xc4\x65\xb9\x1e\x1d\xff\xa6\xbe\x8f\x90\x5d\x6a\x7e\xe4\x24\x82\x1b\x27\xe2\x41\x0f\xdf\xb8\x11\x7a\xac\xdd\x41\x50\x73\x9c\x16\x00\xf0\xe0\x5a\x58\x36\xf4\xa0\x3e\xc5\xb8\x25\x9d\xad\x27\xc8\x6b\xb3\x42\x07\x81\xf3\xd0\xab\xa3\x0a\x17\x09\x9a\x6b\xe7\x36\x80\x31\x3e\xcf\x05\x31\xbe\x20\x08\xef\x8b\xfb\x56\x7e\x44\x67\x3d\x64\x53\x9c\x15\xf0\x67\xb4\xd1\xe1\x39\xde\x85\x1d\x37\xb8\xfc\x6a\xde\x0b\x82\xb9\xbf\x51\xc0\xdd\x34\xa2\x81\x44\xbc\xe3\xc1\x82\x78\x07\xe0\x9f\x78\x55\x3e\xf2\xc0\x39\x01\x20\x5d\x2d\x63\x40\x9f\xa0\xa8\x0d\x64\x0a\x72\x90\xc1\xc7\x2e\x3a\x08\x0c\x79\xeb\xc4\xca\x20\xfb\x82\x80\x6a\xb2\x43\xeb\x23\x17\x4f\x81\x18\x93\x3e\x7b\x01\xba\x64\xc7\xb9\x19\x05\x38\xcb\xba\xf1\xb8\xe6\x75\xdb\x55\x44\x26\x91\x22\xc4\x53\xb6\x98\xbe\xe6\x8e\x3a\x9f\xcb\x06\x96\x2f\xf8\x12\xbe\x6c\xcd\x1a\x7f\xb8\xb3\x58\xc9\x1e\xca\x65\xda\x83\xcb\xe3\x9e\xd6\x1f\x66\x7c\xcd\xff\x19\x3a\xb4\x0f\xe7\x5f\xf1\xce\xb5\xe7\xfc\x99\x1c\xeb\x7e\x0f\x6b\x74\x4c\xf7\xae\x79\x76\xed\x38\x6d\xde\xab\xc3\xe1\xcc\x72\x18\x40\x25\x90\x6a\xb0\x32\x84\x4a\x67\x48\x5a\xf5\xe9\x2d\x6c\xbf\x17\x99\x16\x3b\x54\x5a\x87\xd8\x84\x3d\x1c\x03\x87\xff\xfd\xb7\x33\xb8\x3d\x80\xa8\x22\xf6\x29\x0f\x68\x3c\x89\x74\x2b\x36\xd4\xf4\x5b\xda\x16\x33\xed\xef\x10\x6b\x6b\x12\x62\x92\x01\x1d\x25\x76\xce\xbc\x34\x93\x08\xbb\xd9\x43\x35\xee\x7e\x8e\x32\x9a\x77\xea\x88\xc6\x75\x80\x8b\x3e\x91\x93\x2f\xee\x46\x4c\x1e\x48\x98\xcd\xfc\x34\x48\x16\x1e\x3b\x4e\x2e\x29\xb9\xd3\x9c\x50\x60\xda\xf7\x1a\xd4\xbf\x2b\x01\xce\x6a\xe5\xe4\xbf\xe4\xd2\xfe\x0b\x9f\x87\xcd\x7a\xf5\x4f\xaf\x3c\x96\x37\xbb\xf5\x6b\x34\xa1\x27\x98\x3e\xed\x59\x09\xa7\xe4\x1f\xd7\x60\x98\xed\x50\x51\xcc\x4b\x3a\x38\x73\x06\xd1\x8f\xf3\xe4\xcb\x5d\x6d\x74\xd4\x6d\x83\x57\xa1\x67\x33\x48\x1b\xba\x78\x4b\xc6\xc9\x45\x06\xe6\xb4\xb6\x00\x2f\xd1\xed\x2b\xf7\x7b\xee\x01\x47\x9f\x39\xe6\x09\xc2\x3a\xa7\x01\xf5\x0a\xff\xb8\xe3\x5c\xf9\x06\x73\xab\x8b\x41\xe2\x50\x82\xe7\x18\x9c\x07\x80\xc2\x69\x02\xab\x38\x90\x19\x31\xfe\x9b\xe4\x01\x18\xc0\xeb\xad\xf2\xad\x9e\xec\xd2\x33\x6e\x04\x4e\xfb\xf8\x0f\x60\x46\xbf\x0e\x20\x76\x92\x3e\x9b\x64\x56\x21\x0f\x65\x62\xe0\x73\xa8\x82\x3c\x70\x6e\x8e\x75\x06\xf2\x7a\xe0\xb5\xf4\x17\xbd\x43\x69\x3d\xdd\x8a\x6e\x1a\x4f\x7a\xf5\xc7\xdb\x67\x78\x18\xf0\x5b\x7d\xde\x91\x6e\xb2\xe9\x4f\x14\xb0\xbc\x50\xeb\x29\xf9\x55\xee\x99\x81\x2e\xac\x0c\xed\x6b\x7c\x69\x2b\xa0\xc2\xb3\x7f\xd0\x45\x87\xe6\x20\xb8\xee\x27\x23\xf0\x11\x89\x97\x56\x63\x50\xcd\x70\x84\x9f\x1c\x84\x11\x4d\x16\xbf\xe3\xe6\x9e\x71\x79\x3c\xf0\xde\x2a\x52\x9b\x5a\x60\xf3\x73\xda\x93\x02\xf2\x2f\x3d\xb1\x4d\xb4\x40\xf2\x7a\x4f\x43\x79\xc5\x2e\xdc\x28\x09\x1c\x71\xf4\x9b\x65\xe8\x3f\x34\x80\x16\x33\xbc\x5f\xa6\x2f\xad\xda\x9b\x88\x04\x42\xef\xed\xd9\x75\xab\x46\xa3\x8a\x06\x81\xa7\x3b\x5e\xeb\xb2\x8b\x1e\xe5\xf4\x3c\xb5\xa6\x4a\xf0\xa6\x76\x48\x22\xc3\x60\xae\xeb\x92\xf7\xf8\x6e\x79\xab\x24\x5b\x3a\x12\xdc\x30\x87\x68\x62\xc9\x38\x4a\xc2\x5a\x65\x1f\x7a\x74\xd1\x74\x89\xba\xf4\x5b\x9d\xd5\xb2\x8a\xaa\xa5\x80\x7b\xae\xca\xee\x2d\xef\x0f\x98\x46\x97\x8c\x3f\x7f\xb6\xb5\x33\xf2\x5d\x2a\x6e\xbd\x6d\x60\x95\xfc\xfc\xf9\x2b\x51\x5f\x52\x8f\xb8\xfa\xf9\xd4\xf7\xb6\x68\x42\x8b\xca\xea\xa1\x58\xd4\xaa\x1e\x0e\xdf\xf2\x69\xb6\x7a\xd2\xeb\xa3\x0d\x07\x73\xb4\x09\xc9\xa3\x2e\x7d\x60\xd9\x48\xea\x59\x1f\xed\x25\xb9\xdb\x0b\xd6\xeb\xa3\xd8\xdc\xf4\xbd\x61\x66\xed\x40\x77\x70\x04\x0f\x37\xa7\x76\x24\x98\xe3\xe7\x7d\xe4\x2c\xed\xe9\xb4\x01\xd5\x1a\xef\x01\x62\x51\x80\xee\x13\xfa\xa7\xb3\xb9\xf7\xa1\xfe\x8d\x04\xac\x09\x1d\x68\xe4\x0e\xcc\x3f\x71\xc4\x73\x13\x49\x35\x11\xe6\x50\x99\x0c\xe4\xe1\x84\x45\xb6\x9d\xb5\x02\xa0\x06\x2d\x9b\xf4\xff\xb3\xf7\x6d\xcd\x71\x14\x49\xdb\x3f\x08\x22\x84\x10\x42\x28\xfa\xaa\xbb\xba\x67\x24\x0b\x59\x36\x66\x8d\xe1\x6e\x0d\x6b\x8f\x85\x2c\xc4\x20\x64\xa1\x5f\xff\x45\x57\x57\xd5\x93\xf9\x64\x56\xcf\x8c\xec\xdd\xe5\xfd\x62\x7d\xa1\x18\xcf\x74\xd7\x21\x2b\x2b\xcf\x87\xab\x8e\x0d\x15\xe0\x71\xce\x04\x89\xde\xc6\xa7\x75\x35\xb3\x46\x44\xa2\x6a\xf3\x61\x23\xa2\x0b\xea\x41\xb4\x9a\xd3\x24\x2a\xe3\xc5\xbe\x16\x67\x41\x83\xf6\x7f\xa4\x2f\x55\x04\xc2\x75\xe2\xb4\x88\x07\x8d\xf3\xc1\xc0\x0e\xe2\x12\xb4\x73\xea\x37\x88\xd5\x53\x8d\xec\x36\xbc\x59\x4d\xc5\x9c\xff\x25\x8e\x11\x60\xd1\x5d\xa7\x92\xd1\x0c\x39\x28\x10\x97\xf0\x60\xde\xf6\xb1\xac\xd7\x50\x1b\x51\x9c\xcd\x90\xfc\xb6\x8b\x87\x7e\x2a\xdd\xdd\x9e\xc9\xa0\x17\x3a\xbf\x25\xc9\x5a\xe4\x7a\x21\xec\x85\xc4\xe4\xe8\x02\xae\xdc\xd8\x2c\xdb\x61\xe5\x47\x79\xc7\xf9\xcf\x22\xb1\x25\x9f\x09\xb8\x3b\xf0\x43\x93\xfc\x69\xf0\xd3\xe2\xe1\x6a\x9a\xe6\xac\x5d\x7e\xcb\x72\x27\xc6\x7d\x61\xbd\x99\x71\xee\x50\x7f\x06\x74\x06\xce\x9e\x8b\x38\x63\xfc\x19\xd7\x99\x00\xe2\x39\x68\x9a\x8b\x76\xb8\x0b\x6c\x1c\x25\x91\x3b\x9e\xf8\x0f\xb1\xbe\x04\x49\x3a\x24\xf8\xd3\x30\x71\x86\x1f\xa2\xa6\x0c\xd7\xfa\xc5\x88\xb6\x64\x64\x08\xda\xdc\x40\xc1\x08\xe7\xa5\x75\xc9\x08\xd8\x93\xa9\xf0\xfb\xb2\x3d\xef\x45\x36\x47\x5c\xe2\x19\x5c\x97\x17\xba\x70\xa8\x5e\xf6\x78\x26\xc3\xa1\x7c\x52\x4b\xdc\xe3\x1a\x2f\x3b\x57\xbc\x27\x53\x32\xc0\x3c\x9e\xc7\xb8\xd7\x23\x83\x91\x71\xc4\x1f\xda\xf0\xc6\x43\xd5\x71\x73\xd7\x32\x1e\x88\xc2\x8a\xbd\xef\xb4\x5c\x3f\x2e\xf6\xaa\xaf\x2f\xd6\x7b\x2f\xcf\xbc\x8e\x10\x5d\x34\xc3\xf8\xa7\x09\x6d\xee\xfc\x41\x43\xe8\xcb\x3d\x82\x39\x15\x65\x1e\x3f\x3e\x8d\xcf\xac\x12\xbb\xc4\x53\x17\xe3\xa9\x4d\x9d\x05\xc6\xcf\x4f\x35\x93\xfe\x9e\x15\x79\xac\x50\xb8\x2e\xe2\x9a\x6e\xd3\x39\x43\x06\x00\x58\x97\x08\xed\x08\x6d\xcb\x8a\xae\x00\xd2\x78\xdd\x0f\x3b\x56\x49\xb4\x09\x21\x3e\x74\x19\x38\xde\x84\x06\x26\x52\x3f\xbe\xb3\x36\xe9\x39\xf1\x93\x0c\x6d\x26\x87\xfe\x59\x0c\xb0\xa4\xd5\x84\xd6\x9a\xf6\x4f\x4b\xcf\x44\x4c\x77\x22\x5e\xa4\x06\x6e\x5e\x84\xdd\x59\x74\x3e\x79\x9b\x82\xc0\x4c\xef\xa9\xf9\x73\xbf\x10\x5c\xcd\xc1\x1a\x19\xb0\xba\xdb\xce\x8d\xcb\x20\x2b\x8f\x5a\xde\x91\xbf\x3c\xa7\xa0\xb5\xb3\xbc\xd5\xf6\xcb\x1b\x62\xdd\xc5\x89\xf7\xfc\xd9\x27\xb4\x02\x25\xd7\xac\xaa\x20\xd8\x71\xe7\x7a\x47\x88\xc7\x90\x79\x9f\xc6\x22\x4f\xa4\x27\x06\x60\x09\xa1\xa6\x13\x0f\x6d\xb8\x1f\xd2\x3d\x1d\xd7\xfe\x7b\x72\x17\x58\xd6\x79\xdb\x71\xa4\x0b\x2c\x1b\xf4\x43\x0c\x64\x1d\xda\xb0\x17\xc4\xc8\x42\xac\x56\xe3\xde\x75\x4c\x59\xb5\x50\x22\xf8\x5c\x24\x88\xc3\x78\xb8\xe3\xb8\x99\x58\x5f\x28\xa3\xbf\x33\xc3\x43\x9a\x21\x7a\xa9\xce\x22\x1d\xae\x01\x6f\x3c\xfd\x37\x89\x76\x35\xa1\x5d\x1a\xe2\x05\xef\x20\xa9\x0a\xe0\x9b\x4b\x44\xc4\x68\x29\x57\x78\x9d\x46\xac\xbe\x93\x54\xc6\x4b\x8f\xad\x79\x86\x33\x81\x20\xe3\x3b\x79\xf6\x97\xa8\xc4\xe4\x35\x67\x04\xbb\x18\x87\x5b\xee\x99\x1a\x6e\x24\x0e\xc5\x31\xca\x29\x4c\xbf\x3e\xd7\x98\x82\x47\x40\x97\x87\x98\x50\x51\x08\x6f\xb2\x7a\xa7\x64\x0e\x32\x1f\xe1\xf8\xbc\x2c\x50\x21\x60\x84\x76\x58\x0d\x2a\x23\x84\x52\xb5\x97\x25\x30\x68\x19\x85\x4a\x32\xf5\x11\xe0\xca\xa7\x71\xb5\x37\x41\xae\x16\x47\x40\xa5\x4d\x01\xcd\xe7\xf6\xba\x08\x26\xb1\x44\x09\x43\x1a\x86\x2e\x2c\x98\xe8\x50\x92\xa9\x66\x16\x01\x2e\x87\xbc\x3b\x47\xdc\xed\x59\x10\xf5\xe6\xcf\xb3\x1e\x6e\x9c\x75\xf3\xd6\xc7\x59\xaf\xb6\x99\x75\x9c\xf0\xe0\x13\x4f\x08\x12\xa2\xa7\x8e\x58\xb8\x71\xae\xcd\x97\x7c\x9c\xeb\xa6\xaf\xa2\x0f\x5f\x31\x58\x79\x97\x90\xa7\xf0\x33\x28\xc6\x19\xba\xc5\xd3\xb0\x94\xe8\xaf\xd9\xc2\x48\xac\x8e\xe2\xe0\x66\x6c\x2c\xf9\x2c\x52\x58\x6f\x6c\xca\xcd\xd7\xd0\x88\x52\x42\xef\x8e\xfd\xa9\xd6\x3d\x52\xd9\x4d\x67\x02\x91\x8a\x18\xab\x62\xa7\x0f\xbd\x90\x76\x08\xeb\x34\xed\x28\xa8\x77\xb5\xf1\x9a\xc3\xfd\x4f\xa2\xa2\x9a\xfa\xc0\xd4\xd6\x27\x20\x64\x40\x1d\x74\xee\x1a\x9d\xa7\x1d\xcd\xef\x60\x3b\x68\xfd\x1f\x5c\x32\x15\x5c\x84\xf8\xa8\x96\xbc\x37\xb3\x64\x85\xea\x47\x9b\x96\x5c\xc5\x89\x4d\x38\x29\x4d\x89\xb4\x91\xf8\x5d\xe2\x46\x86\x4b\xc5\x45\xd4\x9a\x6e\x0f\xca\x10\x19\xf9\xfa\x5e\xef\xa9\x97\x62\xc9\xa4\xb3\x28\xac\x7e\x50\x58\x3d\xd3\x59\x12\x2b\x01\xd3\x2a\xac\x76\x84\xf8\xb5\xa1\xe1\x14\x12\xe5\x38\x81\xc6\x03\xb8\x0f\xec\xa6\x74\x52\x3d\x47\x60\x1f\x9a\x86\x74\xd0\xef\x07\x61\x71\xad\x6f\xa4\x4a\x1b\xd4\x46\xd6\x33\x4d\xd7\x30\xa3\x90\x43\xab\x3b\xf6\xe4\xd7\xb3\x68\xb6\xc5\xd8\xb3\xdb\x9e\xa6\x3a\x8b\xec\x9d\x52\x5e\x68\x2a\x9c\x11\xfd\x01\x7a\x9d\xc2\xe1\xaa\xa4\xad\x67\x9b\x01\x47\x8c\x0e\x4c\x15\x98\xb8\x84\x43\x90\xd0\xcf\x33\xae\x50\x94\xfe\x10\x95\xf9\x8d\xcb\xa8\xf2\x76\xf2\x99\x91\x78\x7d\x16\x83\x51\x6a\x67\x3a\xfe\x7c\xd5\x6d\x6d\xb5\xc2\x7b\xcd\xb2\x3d\xcf\xf1\xd6\xb8\x18\x74\x38\xb4\x1e\x6c\x79\xe9\x85\xad\xc2\xc6\x51\x60\x68\x58\x26\x6c\x63\x8a\xf5\xde\x75\xc5\x18\xf2\x6d\x1d\x7f\x49\x47\x0a\xad\xa9\x2c\x4e\x54\x8e\xfe\x24\x3d\xde\x43\x5a\xe7\x92\x70\x78\x0e\xc6\xa7\x50\x9c\xd3\xd8\x86\x2f\xaa\x15\x1b\x85\x07\x50\x6b\xe7\x99\xe9\x32\xc0\xbd\x83\x7b\x77\x11\x03\x8c\xe7\x17\xee\x59\x76\x07\xed\x2f\xb2\x56\xc1\xc3\x5e\x6f\xe4\x89\x61\x09\x3e\x32\x93\xfc\xe7\x04\x11\x8f\x38\x72\x39\x43\x8c\x3e\xfa\x30\x97\xe8\xe5\xe9\x39\xff\xe7\xcf\x31\x8f\x60\x92\x63\xb6\x21\x69\xc9\xc8\x75\x6a\x03\x0d\x9a\xb3\xf6\xe2\xe5\x84\xca\xa7\x6d\x78\x16\x9f\xec\xdd\x0d\x2a\xc4\x48\xce\x14\xf9\x4e\x35\xee\x45\x33\xc0\xee\x3f\xc1\x37\xfe\x06\x47\x15\x7d\x0d\x5b\xf1\x5a\xa3\xd8\x91\x76\x03\x6a\x0b\x48\x40\xa6\x8a\x74\xf1\x58\x5a\x13\x3d\x29\x2e\x18\x3b\x42\xfd\xc6\xc3\x74\x84\x5d\x7b\x4f\x5f\x20\xf9\x0d\xc7\x56\xc5\xc3\xf8\xca\x8b\xf6\x22\xb5\x59\x6c\x9e\x8f\x98\x73\x31\x6a\x2f\xf1\xbf\x2f\xda\xf0\x64\x9e\x34\x8c\x8f\xac\xba\xf9\x59\xc6\x67\xf6\x3b\x4f\xa5\x11\xcf\x3c\x2f\x4e\x8d\x91\x9e\x9c\x68\x6b\xf8\x97\xa1\x27\xaf\x5d\x3c\x94\xef\xf8\xd2\xc5\x29\x28\xc5\xac\x88\x66\xa6\x91\x8a\x92\x63\x76\xe0\x7e\x42\x58\x8d\xa7\x77\x76\x67\xac\x91\x30\xc8\x91\x3b\x8e\x38\xa3\x12\x89\xee\x7a\xd7\x4f\x40\xd7\xf5\x74\x44\x87\x71\xda\xe7\xa6\x6b\x21\xde\x26\xcb\xcd\xee\x3b\x5b\x96\xf6\x26\x1b\xbc\x18\x18\x1f\x3b\xa5\xf1\x29\x24\x0b\x58\xbf\x1e\xd8\xae\x4f\x4f\x4d\x56\x48\x12\xec\xb7\x35\xf7\x2d\x11\xf6\x16\xbf\x34\xd6\xb3\xfc\xd4\x91\x51\xc6\x77\x98\xe2\xd6\x98\xf1\x77\x78\xf9\x20\xb8\x9b\x93\xca\x8f\x73\x9c\xc9\x3a\x87\x37\x65\x41\xd2\xed\x26\x56\x96\x56\x50\x76\x05\x16\x6b\xff\xc0\xe2\xec\xd3\x87\xf2\x69\xbf\xe3\x4b\xdd\x30\x3b\x22\xc3\x55\xcf\xb7\x59\xdd\xcf\xcb\xae\x4a\xf8\xc7\x9f\xdf\xb0\xc9\x16\xb7\x06\xce\x46\xb1\x4c\xe0\x24\x1e\x84\x2d\x51\xb8\xbc\xe9\x68\xc8\x42\x00\x2e\xa0\xe9\x75\x2f\xac\xbf\x1e\xc7\xf3\x5e\x0e\xc5\x04\x50\x16\xb1\x70\x79\x1a\x99\x2e\x9d\x35\xe8\xd5\xec\xf7\xcc\xf0\xb6\x58\x8d\x5d\xd7\x55\x2f\x4e\xcb\x5f\x19\x20\x18\x6d\xed\x5d\xf5\x44\xeb\x90\x91\x74\x75\x2d\x33\x99\xb1\x3e\xac\xd9\xd3\xaf\xbc\x91\xf3\xa0\xcb\xf6\xf4\xda\x18\xbd\x3c\xa3\x40\xdc\xe3\x7e\xe7\x52\x54\xd2\xe3\x01\x28\x0f\xd3\x1d\xa9\x26\xc2\x26\xf7\x6a\x02\xd5\xc3\x04\x70\x08\x40\xa3\xa2\x5f\x6b\x98\xab\x91\x7d\x7f\x21\x26\xc9\xd8\xf0\x86\x61\xca\xac\x85\x25\xf7\xf8\x90\x24\x31\xde\x21\x6c\x76\x3d\x1c\xf5\x2a\xc6\x9b\x78\x84\x72\x3d\x1c\x98\x86\x4c\xd8\xaa\x16\x7d\xad\xd5\x7f\xd3\x1c\xba\x30\x4c\x33\xb4\xa7\x47\x4a\xe9\xf6\x1c\xba\x55\x13\x37\x80\x00\x35\x1c\xf9\x63\x67\xb3\x9a\xcb\x84\x63\x37\x86\xac\x49\xba\x5f\x1d\x1f\x67\x76\x06\xdb\x3a\x0d\xa4\x4f\x38\x3e\x68\x42\x32\xf0\xa0\x72\xb2\x2d\xad\x0b\x8c\xce\x76\x96\xe8\x18\x36\xe3\x51\x00\x1c\x84\x65\x4f\x57\x35\xad\xe8\x54\x6a\x45\xb0\xb2\x07\xad\xe0\x64\x8f\xa5\xec\x04\x2e\x6e\x50\x3c\x44\xd2\x66\xb3\xec\xac\xbc\x5e\x56\xcf\x55\xc9\x4f\xa7\xba\x31\xe3\x14\x10\xa0\xd9\xea\xf8\xce\x2f\x62\x07\xe7\x6d\x78\xb6\x8d\x83\x9a\xb8\x17\x99\x4f\x67\x95\xa6\x66\x68\x7f\xb8\x19\x36\xa1\x74\xd5\x8a\xe4\xa0\x5c\x04\xa5\x71\xe9\x7e\x0c\x22\x2b\xf4\xdd\x37\x75\xab\x3f\x16\x7d\x07\xcb\xe5\x1f\x85\xbe\xc7\x46\xab\xdf\x82\xcd\x08\x6b\xc0\x3c\xfa\x42\xa9\x1f\x37\xb7\x30\x92\xea\xa8\x12\xe5\x80\xc6\xf8\xfe\xa8\x9c\xb9\x26\xcf\x2a\xf2\x90\x25\x32\x24\x45\xeb\x68\xab\x20\x09\x6f\x18\x90\xbe\x6d\xb1\xf1\x34\x86\xb8\xd2\x75\x8a\xdb\x39\x6d\xcf\x5e\x49\xcb\x86\xa3\x26\x90\x22\x3f\x5e\xd0\x87\xce\x53\x1f\xdd\x88\x43\x1d\x98\x27\x76\x56\xd5\x93\x68\xed\x17\x31\x01\xab\x56\x9e\x84\xc9\x43\x0a\xb9\x01\xe7\x22\x18\x63\x25\xf0\x73\x9f\xc5\x92\x61\x9e\x60\x46\x55\x38\x2f\x8a\x26\x34\x6a\xd3\xd2\xc3\x92\x90\xe5\x47\x44\xcc\x6e\x7b\xac\x14\x48\x19\x37\xf1\x63\x5c\xd0\x4e\xd8\x41\xa7\xb5\x13\x76\x3c\x2f\x4d\xd2\x19\x3b\x9e\x8f\xd8\x11\x2d\x11\xde\x71\x67\x7a\xfc\x8b\x30\x78\xaa\xa0\xc1\xab\xff\xbb\xc0\x72\xe4\x51\x07\x6c\x7b\x9b\xc0\x56\x3b\x82\x11\x6c\x6f\x3c\x2e\x36\xca\x52\x27\x9b\xf8\x06\x79\xbf\xc9\x2f\x68\xad\x2e\x07\xe9\xfc\x24\x33\xf0\xa4\x76\xa7\x32\x56\x0c\xb2\xea\x37\x2d\x68\xb3\x27\x54\x2f\xe8\xce\x14\x3f\xc5\xbd\xa4\x38\x1d\x7d\x57\xc5\x1f\xab\xfd\xee\x3b\xdb\x24\x6e\x23\xf0\xcf\xd9\xe8\x6a\x23\xc7\xae\x5a\xb9\xbc\x15\x2a\xfd\xef\x61\x86\x77\x2f\xdb\xb3\x1b\xe3\xc1\xf3\x6a\x85\xd1\x01\x79\xba\x0e\x2d\xa9\x4a\x60\xbd\xb5\x66\x38\x3c\x2c\x37\xc1\xa1\x6a\x87\xd6\x71\x96\x73\xf2\xca\xb2\x1d\x6e\x4c\xac\x6a\x20\xc9\xd1\x33\xc0\x91\x34\x49\xd6\xaa\xd3\x12\x1f\x51\xb6\xf3\x64\xd3\x6e\x50\xf2\x83\xa4\x52\x60\x4f\xc5\x9b\xb7\x5a\x3c\xc6\x60\xb9\x6c\x87\x07\x59\xb2\x18\xf2\x0d\x44\x40\xcc\xef\x59\xec\x41\x6b\x9a\x65\x8c\x36\xf6\x64\x22\xaf\x78\x22\xd9\xbd\x97\xd1\xeb\xed\xe9\xf7\xf3\xd6\x09\x6f\x3a\x6f\x9d\x1a\xb7\xd8\xd9\x1a\x99\xf5\xc2\x35\x05\xd4\x9c\x13\xf1\x9a\x6e\xd4\x15\x67\x63\x16\xca\x24\xf1\x00\xe7\x74\x43\x81\xa2\x9f\xe2\x9c\xce\x2b\xe7\x34\xa7\x84\xed\x6d\xbc\x22\x64\xc1\xa0\x54\x57\xef\x04\x37\x8b\x04\xf4\x27\xba\xb5\x06\x57\x16\x25\x0b\x18\xed\xa2\xe6\x02\x2a\x57\x55\x96\x8d\x1e\xb7\x7b\x52\x07\xc6\x50\x14\xbf\xc7\x70\x46\x1c\xba\x88\x83\xfb\x54\x87\x4a\x94\x1b\x27\xeb\xc4\xf3\x44\x86\xba\x11\x81\xab\xfb\x40\x35\x60\x8e\xce\xc4\xac\x24\x52\x29\x00\x5f\x1a\x74\xa3\xc3\x2b\x6b\xdc\x08\xeb\x6a\x18\x67\xf9\x13\x4d\xf3\xa6\x1f\xba\x83\xcf\xc6\xdc\xa0\xd3\xab\x40\xab\x64\x1b\x84\xfc\xe5\xb7\xee\x7b\x08\x60\x1c\x4a\x23\xde\xd9\xc0\x28\xda\x62\xfc\xce\x64\xeb\x8e\x03\x5c\x0e\x96\xa6\x10\xd6\x58\x89\xe7\xd0\x44\x58\x68\x99\x91\x49\x68\xa6\x4f\xf7\xbe\x2e\x13\xcd\x6e\x2f\xa2\x00\x3d\x3b\x62\xf2\x0c\x7a\x77\xd3\xaa\x88\xd7\xdd\x64\xcd\xe1\x80\x73\xb2\x00\xce\x6f\x21\xd3\x8b\x07\xf3\x1e\xdd\x9d\x8b\x36\xbc\x64\x52\x31\x4b\x8f\xa6\xdc\x20\x93\xa1\x43\x31\x0b\xa0\x75\xd0\xdb\x26\x3a\x8a\x03\xde\xd5\x83\xb5\x96\xe4\x72\x57\xdf\xd4\x9d\x29\xcc\xb9\xc3\xcb\x87\xf2\xe5\xdd\x3d\x4c\x97\xc6\xf4\x87\xd1\x84\xa1\x7f\xd9\x0e\xf7\x9d\x60\xce\xa4\x01\x11\x86\x13\x1c\xe7\x29\xc9\x38\xf6\x81\xb4\xf6\x7b\x63\x93\x4a\x39\xc4\x9a\xfb\xe2\x74\x1d\xf1\xb2\x76\xce\xf7\xc6\x5a\xe4\x18\x25\x26\x63\xd9\xad\x31\x4c\x3a\x72\xda\xb5\x7c\x68\x47\x8f\xda\x12\x8d\x73\x20\x61\x3a\xc9\x40\xd2\x09\x49\xb6\xde\x00\xc7\x38\x40\x08\xf9\x94\x52\x0f\x00\x89\x98\x67\x79\x7a\xec\x8b\x67\xe4\xcb\xf0\x4e\x36\xdf\xe2\x6b\xb9\x3d\x88\x16\x4e\xe8\x8b\x36\x93\xdc\xcb\x2c\x64\xd2\x5a\x3c\x2b\x51\x85\x40\x1c\x04\xce\x49\x3e\xd7\x8d\x62\x8c\xf9\x77\xf2\x59\x9d\xb0\x50\x57\x35\xa3\x05\xc8\x59\xd5\x67\x2c\x1f\x7a\xe8\x5c\xb7\x86\x96\x18\x52\x30\x10\x24\x8f\x8b\x71\xad\x5a\xd1\x8d\x76\x80\xf1\xc1\x9e\x9c\x0b\x13\x3d\xd6\xc8\x74\xb2\x61\x89\xc2\xf1\x37\xe2\xf7\x81\xf4\xfc\xe1\xd1\x01\xe9\xbc\xc6\x38\xac\xe0\xfa\xd0\x49\xc3\xa0\x52\xec\x64\xfa\x76\xc2\xb7\x8b\x76\x29\x7b\x1e\x91\xa8\xfa\x02\x1d\xc7\x3d\x04\x22\x08\x3f\x2f\x61\x3f\x85\xf0\x3f\x99\x80\xe4\x38\x94\xeb\xe8\x45\xa9\xc8\x96\xe1\xdd\xf7\x86\x91\x38\x59\x95\x9e\x14\xe9\x86\x10\x2f\x3d\x0b\x7d\x70\x24\xe2\x7c\xa0\xfb\x32\xe0\x88\xa8\xc3\xac\x10\x29\x4e\xf9\x4a\xce\x08\x06\x35\x50\xc0\xa6\xe1\x22\xa1\xb5\x86\x8d\x1f\xe3\x2f\xf9\xe3\x8f\xfa\x2e\xde\x2c\x04\xcd\x00\x70\x52\x0b\x46\xc8\x81\xf1\x53\xfa\x96\x44\x9e\x59\x81\xa0\x1c\xf5\xde\x72\x3a\xeb\x4d\x4b\x26\x9c\x8f\xda\x84\x8a\xdc\x04\xc0\x69\xe2\x0c\x9c\xeb\x19\xed\x89\x0e\xdd\xb9\x23\x9b\x75\xa6\xbd\x19\xd9\x77\xb3\x92\x14\xa3\x91\x42\xfd\x4e\x5d\xb4\xcf\x0f\x3b\x97\x86\x42\x14\x07\xf5\x9c\xb3\x44\xae\x4c\xe0\x28\x5f\x7c\x62\x79\xb8\xb4\xbe\x7f\xc9\x03\x5e\x61\xa9\xb7\x72\x31\x94\x11\xeb\x25\x49\x9d\xc1\x07\x44\x86\x1a\x4d\xda\x23\xba\x87\xca\x8a\xc0\x33\xe7\x72\x7b\xf7\x7b\x5a\xeb\x89\x58\x2a\xe4\xa3\xb9\x24\x02\xeb\x48\x23\xf9\x00\x8b\x9e\xdb\xc8\x5e\x60\x37\x1b\x41\x5f\x5f\xfa\x84\x2b\xc4\xa1\x6b\x0a\x89\xb3\xf3\x23\x0e\xd0\x7c\xfc\xce\xb7\x39\x24\x6f\xa1\x38\x22\xf2\xed\xab\x85\xde\xce\x1d\x11\xa8\x96\x76\x46\xe8\x85\x2a\x8b\xd7\x3c\xd2\x56\xe3\xb0\xab\xc2\xeb\x69\xbc\xf6\x41\x0a\xb3\x4f\x9a\x94\x64\x9d\xb3\x7e\x8d\xda\x59\x63\x33\x52\x86\x27\x75\x1b\xef\x15\x48\x5c\xb3\xec\x3b\x6e\xf6\xa5\x40\x78\xaf\x76\x3d\xb5\x3c\x99\x0f\xa6\xb8\x88\xa5\xd1\x08\xbf\x77\x8c\x95\xb8\x88\x31\x96\x84\xdc\x8e\x4e\x39\x55\x4c\xd8\xf1\x41\xac\xca\xa1\xb4\xb1\xba\xc7\xda\x68\xcc\x9e\x3e\x8b\x13\x78\x81\xd0\x44\xc2\x69\x29\xaf\x9c\x8d\xc2\xd2\xc5\x48\x33\x3d\x19\x44\x0f\x29\x56\x3e\xd5\x9c\x68\xce\x4a\x90\x78\xf5\x98\xc0\x24\xb6\x3b\xa6\xfb\xff\x1d\xd3\xec\x31\x11\x64\xbd\x13\xd2\x67\x55\x0e\xec\x76\x2a\x12\x92\x45\xb0\x66\xd9\x9e\x3a\x26\x25\x0d\xe6\x94\xde\xa7\x82\x5c\x9e\x09\x0d\x29\x56\x08\xf9\xa1\x0d\x3f\xd5\x85\x59\x72\x31\xfe\x10\xc9\x28\x3d\x3d\xc3\x8c\xb5\xd4\x12\xc5\xac\x5e\x88\x59\x79\x51\xdf\xd6\xd5\x36\x4f\xfb\xf3\x0c\xcb\x3c\x49\x01\x96\x24\xd9\x65\x73\x23\x7d\x7c\x2d\x05\xf0\x0d\xb4\xd1\x04\xec\x1a\xed\x9c\xa4\xc4\x01\x1e\xfe\xf8\x92\x17\x67\x7b\x06\x43\x9a\x57\x6e\x40\x71\xd9\x95\xaf\xf0\x7b\x07\x45\xff\xa5\xee\xa4\x23\x1e\x5e\x9a\xdc\x50\x4f\xc4\xa4\x9e\x4f\xe4\xee\x85\x52\x17\x95\xb0\x75\xcf\x3a\x85\x37\x38\x5d\xf6\x26\xbe\x7b\xb6\xf6\xb5\x7d\x2f\xb7\xe2\x05\x5a\xfa\xce\xeb\xf8\x74\x59\x09\x45\x5e\x44\xe1\x93\x74\xfc\xe7\xa4\xe3\x9f\x6b\x1d\xff\x6c\xd4\x84\x37\x1d\x7b\x5c\x59\x11\x07\x92\xb2\x37\x49\xb5\xb4\x40\xf7\x7d\x5b\x01\xc4\xc7\xcb\xaa\x70\x35\x90\xf9\xdb\xb3\x47\x79\xae\x0e\xf2\x21\x7a\x8f\x68\xe4\x9d\x96\x3b\xe5\x3c\xe2\x3d\x3c\x1d\x17\x2f\x4b\xef\x28\xff\xe5\x75\xef\x1e\x90\x17\x02\x81\xef\x88\x26\x22\x5a\x5a\x4a\x3c\x80\x1c\xe4\xba\x1d\xe0\x76\x33\x03\xb7\x6a\xd8\xf2\xfc\x23\x15\xb8\xad\x66\xe0\x26\xed\xff\x0a\x6e\x97\x3d\x0b\xf3\xb3\x60\x8c\x82\x53\xe7\xaa\x1e\xd1\xd8\x73\x81\x7a\x7a\xf4\xf3\x79\xaa\x17\x75\xd3\xb9\xe2\x7b\xf4\x03\x5c\x44\xf2\x55\x3b\xb3\x14\x88\xe3\x55\x6c\xca\x6f\xe7\xbc\x20\xef\xed\xf3\x98\x83\xe0\x9d\xfb\xd9\xc8\xaf\x08\x60\xc1\x8a\xca\xe3\x04\xd7\x9d\x0b\xa9\xb9\xa0\xa2\xc3\x6e\x62\x4f\x64\xbd\x40\xa9\xca\x0b\x2a\xeb\x43\x14\x8e\x42\xb7\x5e\xc4\x10\x65\x1a\x87\x8e\x8b\x4a\x1f\x61\x39\x2f\x74\xa6\xf4\x48\xa0\x5e\x96\x85\x9e\x94\x33\xfa\x16\xab\x19\x7f\x78\xc5\xac\x6f\xb7\x8b\x41\x27\xe2\x12\x94\x38\x76\xad\x0b\x7b\x73\xd6\x9e\xee\x75\x1c\xaa\x3b\xff\x1e\x38\x9f\x57\x5e\xec\x0c\xa1\x44\xe3\x33\xe3\x9e\x7f\x71\xb0\xed\x95\x83\x62\xaf\xb7\x79\xee\xbc\x0d\xbf\x08\xe1\x6a\x98\x4a\x68\xce\x93\xe0\x14\xea\xe9\x19\x95\xab\x71\x33\x55\xb6\x0d\xae\x1a\x2d\x2c\xa7\xed\xe9\x9d\xef\xdb\x9b\xff\xa4\x8e\x7c\x15\xb6\x3e\xf3\x94\x2d\x45\x6b\x24\xcb\x9e\xa3\xd4\xba\x8c\xd7\x33\xb1\xe9\x0b\x6e\x0a\x68\xf9\x61\x12\x5e\x74\xae\x50\x4c\x5b\xee\xd1\x81\x4f\xf4\xdf\x8c\x43\x7b\xf2\xda\x42\x3f\x98\xcc\xe5\x9e\x3d\xf8\xac\xa4\x16\x55\x75\x86\xd3\xd8\x99\x68\x2a\x83\x88\xf5\x7a\x87\xe3\xc5\x1a\x7b\x3b\x1c\x62\x83\x76\x01\x1c\x67\xd8\x54\x5b\x8c\x96\x46\x8c\x2b\x6d\xfb\xfc\xce\xdc\x45\xf2\x1c\x64\x8e\xf4\x8a\x4b\x42\x29\x7c\xba\x9c\x4a\xb6\x45\x83\x42\xce\x3e\x84\xd4\x6a\x0a\x4b\x81\x8c\x40\x50\x5c\xa2\xc5\x15\x96\x00\x71\x78\xd9\x9e\xbe\x76\x93\x66\x3d\x81\xd6\x35\x01\x91\x8d\x4b\xef\x44\xfa\x45\xe6\x1f\x1c\x15\xe3\x2b\xdf\xc4\x09\x42\x55\x32\x3a\x65\xd6\x2d\xa0\xef\xdd\x23\xdc\x80\x8b\xc8\x16\xaa\xca\xab\x13\x42\x17\xd9\xa9\xac\xb5\x90\xd9\xcb\x6b\xb6\xfc\x4b\xab\x35\x0d\x39\xb4\x95\x2e\x22\x99\xdd\xdc\x1a\x23\x54\xd6\xfa\x5e\x4d\x48\xf4\x8f\x11\x89\x5e\x14\x82\xee\x59\x08\x69\xab\x2f\xa0\x82\x56\x9f\xc6\x2e\x9f\x8f\xbb\x14\xa1\xbf\x14\x6a\x97\xcb\x7b\x2a\x03\xb4\x73\xdd\x3d\xa9\x71\x7c\xef\xd8\x38\xd0\x32\x3b\x7d\x83\xa3\x5f\xd4\x1d\x84\x0e\x31\x88\xc6\x41\xe3\x31\x03\x47\x1e\x46\xd8\x05\xa5\xf2\x4c\x77\xe8\x84\x15\xc3\x99\x3b\xa4\xf4\xd0\x9b\x61\xeb\x3b\x44\x3a\xf8\xdc\x1d\x3a\xfa\x2f\xdc\xa1\x9f\x73\x6f\xa6\x28\x6a\x1a\x0b\x36\x78\x07\xd9\xad\xf5\x25\x89\x22\x59\x60\x17\x36\x4e\x89\x98\x16\x86\xa1\x1f\xd2\xf9\x5c\xb4\xcb\xbd\x7a\xba\xb8\xeb\xc8\xbd\x40\xda\xc7\xc7\xdd\x4d\xb0\x69\x7b\x37\xf7\xb7\xbf\x9b\x8e\x6f\x56\x9c\x3d\xd6\xfd\x3c\x8a\x09\xbb\xdd\x36\x52\x5a\x20\x78\x10\xbd\xae\x86\x27\xfc\x50\xea\xd6\xba\x03\x12\x44\xbc\x5b\x58\x1d\xfa\x1c\x89\xaa\xa7\xba\xbb\xc3\x8e\x97\x12\xd7\x63\xe6\x52\x2a\xa9\x64\xb5\xfd\xa5\x9c\xb7\xd4\xa8\x4b\x79\xf0\x89\x2f\x65\x73\xd6\x2e\xaf\x3a\xbe\x4e\xd6\x55\x72\xbb\xe9\xe6\xc6\xdd\xe4\x9b\xab\xf8\x12\x8e\x64\x13\xb2\x93\x7d\xa7\x88\x8b\xd1\x6b\x3f\xc9\x0d\xb9\x26\xc5\xd9\x4c\x69\x2d\x47\x9b\x8b\xce\xc5\xf0\xdf\xa2\xe8\xff\xbf\x22\xcf\x36\x14\xdd\xc5\x8b\xbf\x11\x45\xa7\x3a\x0b\x84\x4a\xaa\x3c\xfa\xcd\x27\xa1\xe8\x1e\x92\x67\x8a\x7e\xbf\x3d\x45\xf7\x42\x07\x71\xf6\x58\xf7\xf3\x71\xdd\x9f\x8a\xa2\x57\x0b\xcc\x5b\x8a\x7e\x1f\xd8\x5c\xfc\xc9\x28\xfa\xcd\x47\x50\xf4\x26\xb4\xbf\x77\x27\x1c\xcd\x87\x5b\x22\x82\x61\x70\x89\x68\x81\xf9\x3a\x49\x53\xd8\xb8\x98\x97\x22\x6a\xd5\xb3\x3b\xe3\xe6\x5c\x94\x5e\x12\x3c\xb6\x97\x34\xe6\x15\xc7\x9d\xff\x84\x3f\x79\xba\xc3\xde\x05\x29\x41\xfd\x13\xae\xc3\x81\x19\x2f\x6b\x68\xc3\xf5\xa2\x1c\xcb\x85\x89\xa0\x55\xa7\x92\xe3\x8f\x67\x01\x6b\xec\x00\x00\xf9\x10\xab\x69\xf2\x64\x32\x03\xab\xfc\x49\x61\x78\x71\xfc\xb9\xa2\x85\x7b\x52\x61\x83\x2f\x5c\xb9\x3f\x2f\x4d\xad\xc8\x7c\x22\xab\x4e\xf0\x5a\x00\xe5\x3c\xfe\x82\x60\x21\x87\x18\xba\xb5\x08\x70\x88\xa4\xf0\x5f\xc4\xf4\x27\x70\x62\xc5\x13\xaf\x92\x71\x13\x26\x05\x4c\xa0\xcf\x32\x46\xa5\x74\xb9\xaa\x77\x86\xe3\x8b\xde\xda\xa7\xa1\x69\xe1\x8a\x2b\x75\xe5\x6e\x26\xc5\xd7\x8f\xb0\xca\x7c\xef\x5a\xd4\x2e\x89\x05\x2e\x63\x8b\xe6\xf7\xc1\x44\x26\xc0\xa4\x48\x99\x3e\x01\x26\x73\x2f\x14\x16\x27\xd4\x46\x8f\x38\x35\x98\xc5\x7b\xf1\x69\x2a\x8e\x8f\x4d\x4e\x5d\x58\xc6\x8f\x47\xa1\xd2\xcb\x10\x82\x3d\xea\x71\x88\xd6\xc8\xb6\xcf\xcd\xad\x0c\xa0\x1b\x7f\xf9\x26\x9a\x13\xf9\x4a\xc7\x3e\x91\x1d\xe1\x84\xe8\xeb\x5b\x7a\xd2\x98\xc6\x34\x24\x2f\x4c\x6d\xf2\xa0\x84\xd0\x8e\x3d\x86\xaf\x16\xb1\x5f\x72\x4b\xc2\x65\xc7\x4e\x94\xdb\x7a\x57\xd8\x17\x68\x0d\xab\x3a\x09\x03\x79\x21\x15\x88\xfe\x43\x5e\xa2\x46\x1b\xfb\x0a\x94\x21\xea\xcd\x85\x89\xc7\xb4\xb1\xf6\x22\x1d\x3b\xfe\x38\x16\x4c\xfe\xa3\x07\x14\xa7\xe9\x85\x54\x90\xa9\x76\xc4\x3c\xee\xb0\xf7\x09\xba\xd4\xa2\xe0\xd8\x38\xca\x99\xd7\x9f\xf6\x70\xab\xfe\xb4\x53\x63\xab\xd8\x6c\xeb\x6f\xd3\x9f\xb6\x40\xee\x84\x1a\xf6\xbd\xe5\x13\x1e\xf1\x71\xdd\x19\x2f\xfb\x5e\x4c\x3b\xf8\x83\x85\xe8\x71\xc8\x1f\x36\x75\xb6\xc6\xf9\xa9\xf7\xf6\x3a\xf7\x69\xac\x59\x77\xa6\xe6\x5f\x83\x23\xd2\x3b\xe8\xe2\xbd\x1b\xef\xc5\x74\x8c\xd5\x66\xca\x16\xb2\xd7\x1b\x9a\x29\x93\xbb\xdf\x0b\x46\xa6\xf5\x59\xc4\xbe\x5e\x7c\x7a\xc4\xd6\x60\xdc\xaa\x11\xf3\x6a\xc9\x53\xc0\xb0\x8e\xa3\x99\x7a\x82\xa6\x46\x94\x40\xf4\xf1\xb7\xa9\xf1\xd8\x74\xbe\x11\x87\x28\x8e\x8f\xee\x01\x80\xad\x48\xe4\x65\x12\xe3\xbd\xd8\x2c\xb8\xbd\x3e\xd9\xd5\xb9\xab\xb6\x76\x5e\x77\x8b\x11\x6c\x3f\xe7\xab\xf0\xa2\x6d\xbf\xe9\xc6\x1f\xda\xbd\xa0\x04\x25\x0c\x4f\xf0\x23\x97\x31\x7d\xe7\x48\x89\x91\x7e\x0c\x9a\xc5\x3d\x65\x4a\x5b\x53\x3d\x6b\x48\x7f\xe4\x77\x93\xc5\x1d\x83\x15\x3a\xc4\x20\x30\x0c\x01\x1a\x96\x57\x67\x3b\xdb\x51\x10\xa8\x78\xe6\x22\xb5\x43\x7f\x35\x41\x98\x1a\xc4\x9d\xd6\x7c\x50\x01\x69\x6d\x8e\xa5\x1c\x37\x53\xa4\xfa\x88\x26\x4d\x9e\xff\x9a\x38\x12\xed\x1c\xc7\xa2\xc6\xdf\xe3\x06\xa8\xa2\x73\x5d\x3c\xfd\xd4\xa7\x33\xb4\xdc\x73\x75\x4f\x7a\xe4\xa3\xab\x32\x20\xd4\x9f\xce\x31\x9f\xf2\x75\x87\xd6\x60\x2c\x17\x07\xe4\xeb\x5d\x38\xd9\x86\xd5\xca\x29\x53\xb3\x74\x48\xcd\x8e\xdd\xc4\xbd\x98\x96\xf1\x27\xa1\x6f\x1a\x0b\x42\xbd\x86\x61\x64\x96\x69\x1b\x1f\x77\x33\xaa\x11\xc6\x53\xbb\xf8\x88\x57\xed\xa8\xf4\xd3\xa2\x28\x1e\xb8\xdc\xa8\x4f\xb2\xa8\x0b\x9d\x4b\xa5\x16\x75\xec\x2f\xca\x11\xa1\xa5\x38\x6a\x37\xf7\x4c\xa8\x16\xa1\x94\x46\x70\x3b\x26\x4e\xd8\x37\x92\xa3\x9b\x70\x35\xe9\x70\x6d\x7b\xd6\x8e\x6f\x4c\x7a\xd7\x9f\x91\x60\x7f\x3f\x7e\xf1\xa1\x8b\x1b\x9e\xf2\x73\xbf\x9e\xba\xe8\xc7\x35\x5d\x08\x05\x2a\x62\x40\xac\xf1\xfe\x63\x24\x89\x3f\x8d\x0f\xbf\xeb\xe2\x05\xbb\x8c\x8b\x9d\xfa\x9c\x4d\x85\xa3\xde\xc9\x7c\xa7\x28\x68\x3e\x19\x1f\xf9\xad\x8b\x01\x17\x87\x71\xbd\xfd\xb8\xba\x6f\x23\x39\x97\x21\xe7\x40\x2f\xf0\x4d\x98\x0c\x42\x0c\x06\xc4\x97\x5a\x47\x93\x77\xc1\xb9\x49\x2e\xc4\xed\xd5\x3e\x90\x7e\x48\x4f\xd6\x20\x0b\x4c\xd5\x3e\xa3\xae\xfd\xbe\x49\x67\x99\x65\x3e\x86\x48\x9f\x39\x3d\xad\xbd\x8b\x4a\x9e\x6e\x4d\x14\x83\x8b\x41\x4d\x08\x4f\xfb\x28\x5a\x40\xc8\x80\x1c\xb6\xd7\x4d\xc6\x01\x32\x9c\x61\xb9\x30\x9c\xb5\x6d\x78\x60\x05\xd0\xfb\x13\x5f\x7e\x3f\xe1\x98\x73\x23\x6f\x05\x85\xbc\x0e\x6e\x88\x02\x19\xde\x84\xd8\x9a\x84\x84\x60\x15\xb7\xf9\xe5\x70\x79\xef\x72\x6e\x92\x5c\x93\x25\x10\x39\xf0\x01\x0d\x9c\x76\x9a\x94\x52\x3c\xf3\xa4\x2a\x6a\x0b\xf3\x11\x53\xf4\x0a\x92\x6b\x7b\xc5\xf4\xc8\xb6\xef\xaa\xed\xdc\x2d\x79\xcb\xf4\x1e\x35\xe6\xf2\x26\xd6\xe8\xe1\x50\xc6\xbb\xc5\x23\x60\x06\xb9\x51\xc1\xec\x50\xc0\xcc\x8f\x6b\x21\xa4\x11\xc1\xa3\x71\x2d\x8f\x41\x1a\xb2\x75\xe6\xb5\x3c\x98\xa8\xbb\xf8\x09\x20\x8b\xe0\x81\x6c\x1a\x95\x5d\x8a\xeb\x0d\xa5\xb2\xd7\x6e\x4b\x92\x82\x87\x6b\x9a\xd0\x12\x5a\x83\xc6\xde\x80\x54\x5c\x2d\x70\x07\xab\xc5\xb1\x82\x12\xe4\xf1\x6f\x4c\x39\x16\xef\x69\x8b\x04\xeb\xe0\x8a\x6a\x9e\xe4\x4e\xdf\x91\x98\x49\x3f\x44\xa0\x52\x0f\xca\xa9\xd9\x34\x24\x37\x9c\x92\x02\xc8\xaa\xfb\x37\xdd\x65\xba\xd0\x20\x9d\xa1\x34\xc7\xfc\xfb\x4f\xfa\x65\xc7\xe6\xe2\xad\xe9\xd6\xec\x52\x1e\x73\x01\x2b\x42\xdd\x5a\x2c\xe4\xa0\xdb\x86\x1a\x20\xa3\x3f\x94\xa4\xca\x4f\xbe\x94\xad\xe8\xd2\xff\x4f\x2b\xd9\x82\x3e\x6e\xb5\x12\x61\x86\x89\xa4\xe6\x31\x6b\xd9\xe2\xaa\x58\xcc\xc6\xb2\x3c\xb7\x96\x15\xb1\xf6\x1e\x73\x89\x37\x92\x6c\x5c\xe3\x78\x24\x20\xca\xe0\xba\x91\xda\xa9\x03\xbb\x7a\x0c\x73\xa5\x13\xc8\x0b\xb9\x36\x17\x3b\xb4\x36\x1e\x66\x68\x4d\x7f\xb3\x2d\x1e\x89\xa8\xb9\xdb\x81\xee\xf4\x47\xb9\x5b\x32\xe9\x57\xcc\x90\xbc\x51\x60\x7c\x10\x72\x61\xeb\xc8\xb6\xac\xe3\xe1\xf3\x2f\x43\xdb\x7e\x69\x3a\x08\xc5\xa7\x7e\x6e\xdb\x9f\x9b\x49\x21\x9d\x79\x4a\x2b\x3b\x89\xe5\x3b\xf6\xe1\x66\xb2\x7a\x68\xbe\x35\x7e\x5a\x88\xa7\xa1\x54\xc6\x94\xb4\x80\x88\x4a\x47\xf8\x68\x42\x69\xe8\xd1\x38\xba\xe4\xc7\xc3\xfb\xc2\xca\xf6\xa4\x10\x25\x5b\x20\x8e\x61\x0b\x86\xa1\x1c\x3f\x57\xfd\xbc\x25\x89\xc7\xf7\x98\x0f\xac\x32\xd3\xd3\x9b\x6d\x68\x4d\x28\xed\xf4\x3d\xa3\xd5\x73\xd6\x6a\xb4\x8c\x24\xa7\xd9\x56\xc1\x24\xb9\x86\x7e\xa5\x37\xb4\xd1\xb6\xe7\x57\x1c\x93\x9a\x6b\x45\xa7\x01\x2d\x08\x6e\x82\x50\x49\xb5\xfc\xe6\x6e\x11\xaa\x32\x73\x02\xa8\xc5\x9e\x76\x09\x47\x9a\x43\x9a\x1c\x08\xef\xf7\x5c\x3b\x64\x7e\xcb\x04\x43\x6f\xe8\x00\xf7\x5c\x46\xb5\x67\xb4\xf9\xc6\xb1\x03\xfe\x5b\xfe\x08\x32\xf5\x4d\x17\x4d\xce\xc2\x24\x42\x72\x73\x01\x41\x33\x99\x5d\x61\x1a\x77\x74\x5d\x7d\x2c\x97\x81\xef\xa0\x27\xc1\xe3\x1a\x6d\xbc\x5f\xb9\xab\x9f\x37\xcc\xb2\xb5\xe9\xd2\xd5\xb3\x51\x27\x72\x28\x3a\xe7\x4c\x14\x60\x7e\x12\x65\xfd\xb8\xef\xf8\x10\xe9\x3a\x6f\x7b\x3f\xc9\x98\xb4\xc3\xfd\x54\xc5\x0c\x09\xf1\xe9\x2e\x5a\x45\xe6\x2e\x7c\x72\x45\x86\xf1\x2c\xfe\x01\x9e\xe5\xfe\xf4\xff\x97\xf1\xcc\xb3\xfc\x6d\xc4\xb3\x55\x0f\x3c\xdb\xbc\x86\xfb\xb0\xf5\x1a\xc0\x16\x1d\xe3\xc8\xff\x90\xfb\xdf\x8a\xdc\x14\x6b\x4d\xbb\x50\x36\xe7\x3d\x37\x8b\x72\x17\x44\x3f\x34\x88\xee\xa1\x11\xca\x3f\x4d\xe1\x30\xb4\x44\x3a\x70\x8f\x21\xea\x15\x36\x93\x2d\xdf\x43\xa3\xea\xa8\x0a\x8d\xae\x19\x8d\xf4\xd8\xdf\xd6\x26\x7d\x45\x27\x33\x42\xe9\xe7\x72\xa2\x97\x9c\x96\x1b\x7f\xbf\x90\xe4\x03\xbe\xdc\x22\x6f\xa7\x5f\xa8\xd6\x5a\x14\xaa\xa6\xff\x23\x74\x22\x86\x68\x06\xd4\x1c\x4d\x0a\x96\xf8\x3c\xfe\x7a\x1b\x36\x8d\xb8\xc5\x2f\xdf\x45\x8d\x51\xfe\x84\x6c\xdd\x2c\x68\xef\xcb\xfe\xcd\xe5\x53\x42\xe1\x47\xff\x52\xdf\x6e\x7d\xd9\xf3\x80\x90\x21\x69\xd3\xe7\x86\x1d\x2e\xe5\x93\x3c\x2c\x9d\xbe\x3c\xfe\xf2\x8b\xb8\x1b\xe5\x53\x23\x6c\xfb\xf5\x6d\x69\x4f\xe3\xf8\xcb\x4f\x13\x32\x35\x21\x5c\xbf\xec\xb7\xb6\x70\x58\x87\x5e\xa1\x1b\xc1\x75\x06\x6b\x32\xdc\xb0\x5f\x75\xb7\x07\xc9\x91\x2f\xc8\xf2\xdf\x67\xc4\x39\x9f\xe5\xfe\x23\x68\xeb\xe7\x3f\x6a\x57\x9e\x63\x70\x11\xbb\x10\xf9\xaa\x11\x97\x06\x52\xa4\x68\xd7\xe3\xaf\x6f\x98\x68\xe6\xd5\xbe\xa9\xaa\x63\xec\x1a\xba\xeb\xec\x6f\x85\x6f\x77\xea\xeb\x38\x83\x0c\x88\xb2\xae\xc2\x55\x2f\xec\xd2\xe4\x62\x94\x46\x1d\x6b\x2c\xcf\x55\xd1\xe4\x5c\x14\x43\xaf\xc4\xaa\x07\xdf\x48\x4e\x51\x1b\x78\xa5\x8d\xf5\x76\x49\x11\x0b\x35\x83\x0c\x84\xbd\x39\x1e\x76\x67\xc2\x05\x76\x50\xd6\x6f\x93\x5e\x96\x69\xc7\x1b\xd7\x27\x5e\x5d\xab\x55\xf4\x8e\x3b\xee\xe4\x86\x3f\x2a\x64\x28\x37\xbc\xc9\xa0\x7b\xed\x76\x80\x73\x34\xdc\x6e\x83\xdb\xde\x33\x71\x90\xd5\x53\xad\x78\xd5\x0b\x21\xd6\xd3\x77\xec\x2b\x47\x5d\x35\x9f\x58\xf0\x99\xbc\xe2\xe3\x4e\x50\x47\x9a\x85\xf2\x10\xd4\x2c\xb7\x26\x68\x1f\x17\x70\xce\x2d\xbd\x0a\x85\xae\x7f\x2f\xec\x4b\xa1\xdd\xd8\x0f\x9b\xce\xcb\x03\x81\x16\x62\x7a\x47\xc8\xf8\x9e\x63\x24\x70\x52\xe6\x6e\x79\x0b\x73\x45\xee\x4d\x84\x84\x89\x45\xfc\x83\x50\x45\xcf\x36\x6a\xe7\x79\x08\xfc\x32\x05\x21\x09\x24\x87\x9e\x45\x13\x38\xaf\x38\xa1\xdb\xf7\xc9\x4e\xd3\xb6\xe1\xdb\x86\x4c\x5c\x1e\x28\xbc\x65\xd3\x4c\xd5\x1b\x47\xb4\xf6\x66\x70\xa1\x69\xc9\xf7\xeb\xc2\xe0\xaf\x06\x9d\x65\x90\x25\xc6\xe3\x8e\x19\x83\x57\x6c\x79\x92\x00\x1e\xa9\x13\x48\x71\x81\x48\x21\x58\x1a\x60\x02\xd1\x46\xe9\x7e\xeb\x6d\xda\x69\x36\x22\xe2\xcb\x8a\x48\xf7\x32\xd0\x56\x49\x71\xb7\x7e\x90\x3a\xa0\xea\xcd\xea\xe4\x3b\x24\xb5\x40\x5d\x9c\xc5\xa3\xc0\x03\xd6\x43\x71\x5f\x4a\x13\xbc\x97\x76\x03\x6f\x8d\x5a\xf7\x6a\x38\x8c\xa7\xfa\xb4\x25\xf6\x47\x1d\xd9\xe3\xb6\xdd\xe0\x76\xfb\x05\xee\x92\x91\x5b\xed\xf7\xb0\x17\x72\x31\xdd\x2a\xda\x10\x98\x06\x0c\x9d\x0a\x10\xfb\x7e\x99\xb1\x22\x25\x27\x4e\x45\xca\xb9\xa5\xa0\x3f\x6d\x50\xe4\x1c\x58\xc5\x68\xde\x24\xd0\xa5\xbe\x5f\x4d\x08\x7b\xe1\x7a\x9b\x18\x9f\x69\x84\x77\x9d\x16\x09\xbd\x6e\x35\x24\x86\x02\x88\x0d\x59\x2b\xe6\x99\xae\x63\x54\x69\x58\xf1\xd6\xf4\x82\xd7\xa0\x20\x72\x64\xee\x1a\x28\xa8\x73\xe1\x26\xa5\x27\x93\xb1\xcb\xae\xaf\x0b\xc3\x2a\x24\x72\xdf\xf4\xd9\x21\xeb\x0c\x76\x4e\x0d\x41\x26\x76\x95\x67\x7c\xd2\xc7\xe4\xa2\x65\xb2\x6d\x08\xd6\x97\x3a\x51\xb8\x22\x6a\x68\xdb\x77\x12\x4f\x86\x51\x4e\x1b\x47\x4e\x54\x38\xb9\x5d\x4f\x53\x8b\xc5\x43\x7f\x98\xf7\xa1\x6d\xdf\xd3\x30\xf7\x69\x98\x39\x81\x3a\xb1\xa7\xf8\x88\xec\x2d\x4e\xce\xde\x23\xa1\xae\xad\xa3\x08\x65\x4a\xea\xa8\xb2\xd9\x0f\xba\x87\x90\x6a\x26\x72\x19\xc4\xb2\x26\xef\x33\xc6\x8b\x2e\x54\x3b\xde\x81\xee\x7c\x8e\xc2\x74\xc3\x54\x01\x94\x3a\x59\x68\xdc\x94\x75\xbc\xd3\xaa\x68\x86\xe6\x45\x3b\x5c\x06\x91\x3a\x47\xc8\x4d\x57\xf9\x7c\x44\xcd\x54\x76\x14\x34\x41\x0e\x9d\x3e\xfb\x3f\x62\xde\x29\x41\xdc\x87\xd4\x54\x71\x6b\xb7\x25\x95\x8a\x5f\x71\x47\xed\xf4\xb6\x54\x9f\xe6\xde\xbf\x0e\x2c\x2b\xe6\x75\x3c\x4d\x63\xfe\xd3\x1d\xb3\xea\xdb\xf1\xe6\xf9\x47\x54\xbb\xbc\x79\xc6\xd1\x9f\x7e\x8a\xd1\xa7\x72\xf7\x4d\x33\xb4\xcb\x27\xe2\x1e\x21\xb7\x0e\xfa\xec\x19\x62\xef\x13\x7a\xc5\x03\x42\x91\xb4\x11\x8c\xeb\x80\x38\x71\x77\xe5\xe7\xd1\x75\xc9\xe8\x20\x07\x14\x77\xd8\xfe\x88\xd9\x5e\xb4\x61\xbd\xa8\x20\xfa\x8b\x28\x2e\x6c\xb3\x10\x17\x09\x24\x2b\xb5\x6f\xad\xdd\x94\x9d\x71\xce\x67\xe6\xe8\xe5\x48\xde\xe1\xd0\xe8\xff\x40\x79\x74\x1a\x7d\x1c\x74\xf9\xec\xf1\x83\xe6\x73\x6e\x86\xf6\xf4\x89\x20\x29\x9e\x2a\x1e\x9c\xe6\xfa\xca\xb3\x9f\xe9\x03\x00\x2e\x92\x1c\x90\x62\x48\xf8\x36\xd2\x9d\x9b\x4e\xe0\x57\x26\xf6\x77\xa6\xf1\x3e\xfe\xab\xce\xfb\x30\x29\xb8\xe7\x6d\x78\x29\xfa\x58\xd0\x02\x45\x1f\x21\x3a\xfc\x82\x37\x9d\xd8\xb7\x87\x20\xa4\xa6\x9d\x97\xe2\x25\xe3\xdb\x27\xf5\x2d\x4e\x4d\x83\xbc\x52\x82\x6a\xfe\x5f\x84\x29\x34\xbf\xb7\xea\x4c\xc9\xbe\x32\x8d\x2c\xd7\x00\xe1\xfd\x45\x1b\x5e\x32\x3c\xc8\xaa\x01\x5a\x88\x0b\x9d\x61\xb4\x1f\xbc\xba\x08\xf1\x66\xae\x4c\x69\x08\x47\xf9\x4f\x27\xa7\xbd\x6a\xd3\x2d\x40\x75\x23\x9c\x0a\x83\x1d\x9b\x7f\xd1\x86\x57\x42\xa6\x02\x70\x31\xea\x3f\x81\x24\x40\x88\x77\xdd\x08\x49\xaa\xc2\x1e\xb4\xd2\x87\x59\x7e\x8e\x35\xa6\xfe\x31\x82\x38\xd6\x56\xa8\x9e\xe1\x8b\x12\x2d\x51\xdf\xfa\x88\x10\xe9\x9c\xb1\x57\xc0\x70\xaa\x1b\x50\xc7\x4d\x1c\x06\xdd\xf2\x21\x96\xa2\x1c\x55\xc1\xcf\x4b\xe2\x83\x1b\x06\x76\x86\x12\x06\xa4\x1d\x57\x53\x06\xbc\xbd\x8a\x7a\x21\xd5\xa7\xf3\xb1\xe6\xaa\x9f\x1f\xe3\x82\x83\xa0\xfb\xcf\x28\x0c\x62\x2c\x1a\xd0\x1b\xcb\x61\x5f\x9d\xe8\xd6\xe2\x19\x4c\x48\x11\x01\x4a\xd0\xc4\x19\x18\xab\xe0\xde\x5b\x6f\x68\x75\x0f\x55\xa3\x3b\x12\x7b\xcf\x73\x4e\xbd\xba\xdb\xde\xa2\x20\x67\x9f\x51\xb3\x35\xc7\x9a\x22\xea\x14\x82\x64\x11\xb6\x0d\x11\x4d\x83\x6e\x9a\xef\x99\x0a\x72\xff\xb5\x23\xbf\x8f\xda\x7c\x56\x15\x11\xcb\x41\x65\x16\x2c\x26\x44\x26\x5e\xa3\x52\xf0\x8f\x3a\xf1\x8c\x53\x12\x7b\x7c\x66\xaa\xeb\x63\x7c\x90\xb8\x72\x6d\xf6\x00\x5c\x30\xe9\x52\x26\xe6\x1b\xf9\x8c\xa3\x61\xc5\xec\x30\xf1\xcc\x37\xfd\x14\x1d\x65\x9f\xba\x17\x4f\x05\x91\x70\xa2\x1e\x7a\xe8\xdc\x65\x57\x07\x72\x63\x14\x46\xac\xb9\xeb\xb8\xba\xc3\x24\x71\xb5\xb1\x3a\x0f\xde\x87\xc4\xa7\x40\x23\xb7\x54\xcb\xa2\x3f\xf6\x41\xa3\x9e\xb9\xf3\x41\xac\x9e\xb9\x95\xcf\xa0\xfe\x82\x7a\xe6\x52\x1e\xa7\x14\xe1\xf4\xaa\xc3\x86\x15\x8d\xdb\xcf\x4b\x22\xf3\x06\xcc\x0d\x13\xa9\xf4\xd4\xc0\x5f\x43\xdb\xfe\x4a\x6a\xe0\x5d\x1f\x47\x95\xf4\x17\x93\x92\x35\x30\x0e\x2f\xd6\x09\x8b\x12\x19\x07\xea\x0a\xed\xdb\xd0\xb6\x6f\x69\x09\xeb\xfe\xf3\xb6\x0d\x32\x31\x11\x08\xe1\xf8\xf3\x27\x35\x7a\x1d\xe8\x70\xf7\xa4\xe2\xa9\x42\x6f\xb3\x1a\x5f\x0e\x28\x16\xa3\xea\x28\x24\x60\xfc\xf2\x0d\x25\x44\xa4\xe6\x70\xf8\x32\x5a\x68\x96\x91\xa7\xe9\x3a\x19\x66\xc8\x68\x2b\x5c\x46\x4c\x84\xec\x43\xc7\x05\x18\x5b\x33\xcb\x30\x65\x04\x9e\x1e\x49\x58\x43\x60\x13\xbe\xab\xd4\x06\x11\x4c\x2d\x42\xcf\x8b\xca\xa3\x42\x17\x67\x69\xdd\xeb\x99\x4e\x14\xc4\x5d\x87\x34\xdf\x35\x43\xbf\x4a\x1e\x99\x9f\x29\x4c\x99\x9a\xc3\xa5\xb1\x84\xe7\x3b\xe9\xe4\x58\x10\x3e\x49\xa7\x5d\x1e\x30\xa4\xbe\x33\x58\x0d\x3e\x55\x9f\x5f\xc9\xfa\x2a\x84\x61\x17\xf1\x84\xf3\xa4\xf1\xff\xdf\x0b\x9c\x3a\x4d\x35\xa8\x73\xbf\xcc\xa5\xee\xe1\x8f\x4f\xc8\xd7\x1a\x26\xa3\x40\x28\x5a\x20\xdd\x34\xa0\x42\x26\x06\x07\x1d\x1f\x7c\xc6\xd2\x3b\xbf\x3a\x08\x0d\xb1\xa4\x9e\x1d\x04\x17\x70\x9b\x25\x74\x47\x8f\xc2\x0d\x71\x9f\x13\x8d\x18\x81\xf9\xaf\xf1\x85\xd7\x6c\xfb\x9e\x2e\x0a\x85\x19\x2c\xdb\xf0\x13\x07\x25\x2c\x21\x6d\x16\x54\x18\xbf\xfc\x8e\x58\xed\xf8\xdd\x4b\xbc\x9c\xf8\x52\x7a\xbd\x4c\x3e\x31\xa2\x34\x3b\x6e\xd2\x90\x8a\xf2\x3c\xe5\x50\x8f\x25\x8c\xf7\x34\x93\xb7\x22\x94\xb3\xc9\x54\xe3\xb8\x53\xd5\x95\x92\xcd\x75\x19\xd5\xa5\xd9\xf5\x6f\xda\xbc\x07\x39\xef\x3b\x8a\xca\x58\x8e\x1a\x81\x7b\x14\xee\xcc\xde\xdb\xf4\xdd\x80\x22\xb1\x21\x3c\x3c\x5d\xc4\x6a\x19\xd2\x4c\x2a\xeb\x6d\x60\x92\x02\xaa\x68\xf5\x34\x95\x64\xbc\x90\x06\x32\x37\x63\xb7\xca\x72\x7e\x24\xad\xeb\x60\x26\xa5\xa6\x2a\x93\x37\x4c\x4c\x05\x7e\xb4\xbf\x23\x35\x95\xc1\xba\xf0\xb4\x55\xff\x73\x21\x4f\x24\x79\x10\x61\xcd\x0f\x1e\x6c\x0a\xc6\xca\x80\xfd\xfe\x11\x01\xc8\xb2\x84\xc9\x8b\x52\xea\x8d\x60\x87\xd3\x3c\x75\xcc\xf7\x3a\xa0\xde\x9c\x12\x84\x31\x15\xc5\x77\x2f\x5d\x7b\xea\x70\x7e\x62\xf6\xee\x09\x2d\x70\x8b\xb9\x11\x8e\xc0\x0a\x50\xfa\x80\x18\x17\x7a\x10\xe2\xb2\xca\x4c\x3b\x34\x0f\x7a\x6a\x6a\x1b\xb5\x4d\x6f\x7e\x9d\x11\x99\x46\x2c\x4c\x71\xfc\xff\x2b\x11\x60\x00\x80\x02\x05\xf2\x73\x07\x52\xee\xa1\x67\x4e\x53\xb8\xd4\xba\x13\x83\x79\x3d\xde\x45\xfe\x07\x22\x4a\x07\x1b\x77\x33\xf9\xe1\xc4\x60\x20\x05\x5a\x71\x4b\xfe\x92\xf8\x8c\xee\x07\xf3\x79\x51\xe1\x9a\x29\xda\x17\x99\x99\xf4\x4c\xa9\x84\x21\x95\x44\x47\x35\x8a\x14\x40\x2e\x6a\x7e\xf5\xdb\x80\x4b\x5f\xc7\xa7\x42\x29\x8c\x99\x31\xc0\x72\xf5\x1c\xe8\xd8\xfa\x31\x01\xff\x28\x1e\xc3\x11\xa4\x38\xff\x1d\xae\xdb\x6a\x21\x1e\x84\x94\x4b\x17\xc8\xba\xb9\x2e\xa5\xff\xe9\x91\x57\x5e\x0d\x78\xdc\x17\xb8\xbc\xde\x2a\xed\xec\x1f\x1a\x0e\x10\x42\x3d\x38\xa8\x3d\x1f\x4a\xb7\x32\x54\x23\xaf\x99\x7e\xa1\xbf\xcd\x14\x8a\x44\xb8\x00\x7a\x0f\x42\xed\x0d\x33\x90\x53\x16\xf0\xb4\x80\xb8\xf5\x2b\xd0\x9c\x2b\x2d\x22\x3d\x18\xbf\x4c\xfa\x93\xb3\x87\x34\x25\xee\xa0\xfa\x65\x2d\x90\x7c\xfc\xff\x4b\x7e\x30\x13\x8f\x3c\x51\xbe\xb2\xbf\xb0\xad\xa1\xd4\x18\x81\xfb\x7c\x3c\xc7\xdb\x6e\xc3\x41\xce\xb8\x79\x95\x4b\xf7\xc8\x54\x07\x04\x3a\x7d\xd6\xb5\xed\x67\xc6\x0a\x6f\xb9\xdc\x35\xf0\xeb\xd5\x56\xf8\xb5\xc5\x3d\x53\x81\x6a\x19\xab\xe2\xcf\xf9\x8c\xb2\x87\xdd\x13\xc3\xcf\x9d\xbc\x46\xb2\x30\xd1\xa4\xb5\xd7\x22\xc9\x1a\x68\x26\xed\x59\xfe\x6e\xc7\xa8\x96\xfa\xc9\x60\xfb\xb0\x01\x87\xd8\x00\x13\x97\x83\x82\x4a\xf0\x32\xb5\x18\x0e\xd4\xf4\xd4\x03\x32\x5e\x29\xa4\xc2\x8f\xf1\x57\x6e\x90\x54\x43\x7a\xdc\xfa\x1b\x53\x5f\x30\x69\x5f\x79\x90\x7b\x13\x8e\x1c\x2d\xc3\xf1\x93\xec\x8e\xa2\x9b\x95\x36\x53\xe5\x37\x08\x8d\x44\x72\xf0\x29\xc9\xa6\xf1\xf3\xef\x5d\xdb\xfe\xde\x49\x71\x14\x73\x81\x05\x62\x26\x3c\x7f\x63\xe6\x42\xac\x7b\x66\x82\xf7\xbb\x05\xe7\x7c\x02\x19\x4f\xa5\x3b\xec\x92\xe7\x03\x99\x2c\xff\xf2\x72\x9b\x1f\xd4\xf6\xbe\x6b\xbc\xd0\x5f\xa0\x0e\x70\x83\x48\x71\x1b\xbd\x10\xf3\x61\x22\xf8\xe4\xd9\x9d\x71\x14\x18\x5a\x09\xa1\x07\x3d\x93\x23\x5a\x61\x85\x4e\xed\xcf\x38\x7d\xc8\xa2\x4e\x4c\x06\xeb\xc2\x7f\xf1\xc7\x46\x7d\xde\x9a\x76\x30\x3b\xcd\xe4\x38\x32\xca\xc1\xa4\x6a\x3e\x9e\x7d\xb7\x89\x71\x7b\xe7\x4e\xee\x26\x06\x94\x97\xb4\x0a\x30\x7d\x16\x49\x84\xf0\x42\x85\x23\x77\xf2\x02\x90\x15\xfd\x5a\x25\x5e\x5c\x8d\x3a\x25\x18\xd0\xaf\xd5\x1f\x80\x88\x9b\xe1\xd7\x4c\x81\x80\x5e\xd4\xf1\xee\x13\x57\x7f\xa0\x43\x27\x7f\xc6\xc8\x2a\x07\x01\xb8\xaa\xe6\xe8\x85\x35\xb9\x69\x56\x4d\x08\xab\xbe\x8f\x54\xf0\xe7\x06\x39\x1e\x40\x36\x91\x3e\x32\x59\xc0\x99\xfc\x9c\x6a\xaf\x09\xc5\x78\x5e\xcb\x0a\x59\xd8\x9c\xc4\x9f\x53\xc7\xed\x62\x8b\xa7\x1d\xc9\x38\x75\x4f\x2e\x24\xf1\x44\xbd\xac\x82\xdc\x95\xd3\xe4\x86\xf7\xe3\x92\xd8\xf8\xf2\x5c\xed\x8b\x3d\x59\xcb\x8f\xce\x30\xb4\xba\x04\x2f\x3d\x38\x94\x32\x8b\x45\x74\xfe\x07\xf7\xfa\x24\xd9\xc2\x5a\x11\x6e\x7a\x2e\xd8\xe4\x18\x73\x9b\x49\x13\x8b\x66\xe6\xb6\xa4\x74\xc7\xe5\xec\x34\xdf\x48\xa0\x25\xdb\xa6\x7b\xad\xdb\xaa\xd2\x42\x12\x4e\x50\x6f\x79\x12\xd0\x69\x03\x5a\xe8\x25\x72\xce\xf2\x59\x91\xf8\x16\xdb\x2f\x04\x3b\xc5\x33\xe0\x90\xf4\x9d\xc7\x7f\xe6\x16\x72\xb7\x61\x21\x75\xdb\xfb\x0e\xbb\x5d\x2d\xe6\x41\xda\x4c\x25\xf0\x1e\x71\x34\x41\x69\x5a\xae\x02\x85\x3f\x45\x47\x4d\x14\x3f\x22\x93\x5d\xc9\xb5\xb4\xb5\x38\x87\xdd\x4c\xd1\xf4\xaa\x1c\xe6\x4b\x37\x6f\x03\x26\x71\x5c\x4c\xca\xb8\x21\xa0\x66\x0c\xbe\xde\x4a\xcf\x80\xd4\x4e\x21\x5f\x2a\xa9\xf3\x4a\xe6\x80\x50\x68\x80\x97\xac\x41\x4d\x64\x3d\xb7\xb8\xde\x53\x33\xd9\x1f\x51\x24\x97\xf6\x78\xa6\xeb\x9a\x94\xd0\xf2\x74\x02\x24\x05\xd1\xd3\x8a\x0a\x1d\x06\xad\xa4\x7c\x27\xce\xb4\x08\x75\x2e\xe1\x9f\x84\xe1\x72\xfa\xca\x00\x4a\xf1\x4c\x01\x6d\x31\x6c\xc0\x6d\xee\x26\xe1\xad\x20\xfe\x37\xf3\xad\xbd\xbe\x1f\x05\xa7\x9d\xd9\xd6\x96\x1c\x2b\x13\xb4\xd7\x02\xc4\x10\x2c\x3d\x77\x3f\x1e\x21\x6b\x5f\x4d\xf9\x68\xa6\xca\x65\xb8\x95\x15\xb1\x7c\xbf\x13\x74\xca\x13\x01\x49\x56\x90\xc1\x6f\xe4\x5a\xcb\xe8\x7f\xdc\x0b\x6e\x43\x06\x25\x8f\xde\x16\x6a\x16\x5c\x94\x02\xf6\x92\x73\x89\x86\x09\x56\xda\x2d\xbb\xbc\x4d\x0e\x97\xb6\x58\x4e\xe7\x17\x67\x65\xcc\x9b\x99\xc5\x79\x9e\xca\x72\xb5\xc2\x6e\x33\x5b\xdb\xd1\xed\xcc\xcc\xa0\x51\xe7\x26\xd7\xf0\x70\x66\x66\x58\x4c\xd5\x0d\xdd\xeb\xea\x53\x59\x83\xd5\x95\x3f\x81\x97\x49\x52\xc5\x2e\x35\xe0\xb1\x2f\x40\x00\xcf\x29\x74\x47\xcb\x38\x81\x21\x5b\x35\xee\xd1\x05\x3b\xd7\x01\xdd\x24\x2b\x93\x43\x36\xaf\xf5\x40\x72\x45\x4c\xb7\xe1\x7a\x08\x02\xac\x01\xdf\xbb\x3b\x3f\xd7\x09\x97\x15\x8d\xf3\x56\xee\xdc\xdb\x20\xb8\x3b\x89\x5c\xda\xf5\xe7\xd9\x24\x7b\x91\xb0\xf7\xe9\x89\xf7\x06\x1a\xa8\xc4\x90\xab\x50\xc7\x86\xa5\x0e\xd0\x70\x34\xc4\x50\x07\xa8\x9a\xe5\x66\x86\x47\x29\x0e\xb1\x3f\xf9\xd8\xa5\x71\x84\xc4\x04\x18\x31\x79\x69\xa0\x59\x2f\xb8\xee\xbb\x63\xc3\x6e\xd0\x69\x60\xfa\x03\xaf\xb9\x73\xad\x12\xa8\xf0\x34\xf4\x19\x47\xc4\x8c\x01\x50\x46\x67\xf7\x52\x48\x70\x0d\x04\xb9\x06\x17\x86\x90\xa5\xd3\x92\x1a\x14\xdd\xe1\x8c\x42\x80\x02\xf7\x01\xf6\xaf\xbc\xba\xbb\xc0\x98\x45\x77\x56\x5d\x05\x69\xda\x16\xf2\x7e\x95\x9e\x01\x99\xf2\x62\x57\xfd\xa7\x1a\x01\x80\x40\xb6\xa7\x13\xf1\xeb\x26\x25\xdb\x9b\xb8\x5a\xd4\x81\x88\x11\xa0\xa8\x56\xdd\x22\xc1\x57\x63\x8f\x8c\x87\xc2\x33\x00\x69\x67\x84\xa0\x29\x58\x30\xc4\x7b\x7a\x8d\xbe\x93\x79\x13\x15\x4d\x70\x75\xc2\x67\x4f\x56\xba\x39\xb4\x5e\x1b\xc4\xc1\xcb\x32\xe4\x8d\x42\xbd\x59\xa3\xc7\xc0\x34\x06\x92\x89\xd4\xad\x58\x6d\x48\x5b\xaf\xab\x02\x34\xfe\xb9\x13\xf9\x0a\x3a\x82\x33\xa0\xd7\x3c\xcf\x81\x67\xd1\x54\x8b\xbe\x5f\x6e\xb1\x68\xb1\xca\x22\x6e\xe7\xe6\x25\x74\x97\xbd\xce\x89\x89\x0d\x90\x92\xa9\xe8\xd6\xed\x89\x98\x03\xbc\x98\x30\xaf\x74\x3b\xe4\xef\xce\x4a\xc5\x25\xed\xba\x17\x43\x39\xfe\xb7\x28\x04\x9f\x78\x97\x3e\x11\x14\xba\xe6\xd9\xe4\xbe\xdf\x31\x4b\xd1\x67\xd7\x88\x92\x03\x5e\xc8\x5d\xf6\x71\xdf\x4a\x6d\xa5\x38\x06\x1a\xb6\x4c\x2a\xf7\xc3\x6d\xc7\xef\xe4\x93\xbb\xef\xf4\x2d\xf8\xae\x21\xc7\x77\x8d\xcb\x30\xc9\x01\x63\x60\x6d\xd5\x9e\x9b\xf2\x88\xb7\x6d\x78\xba\xcd\xb5\x85\x73\x2d\xc3\xfa\xc8\x54\xbc\x57\x4e\x86\x9b\x6e\x9b\x82\x10\x44\xa1\xe2\x27\x59\xc4\x86\xec\x31\x74\x28\x6a\xff\xc7\xc3\x7f\x7a\xff\x3c\x9f\xb7\x19\xb8\x8d\xaa\x9e\x76\xbb\x95\xab\x7f\xc3\x56\xa0\x7b\xc0\x51\x98\xb7\x72\x29\x49\x68\x72\x83\x81\x41\x79\x64\x5b\xb3\xaf\x66\x0a\x08\xf2\xbc\x05\xc2\xa9\x26\xaf\x8f\x9c\xc4\x3c\x9c\x87\x7c\xe8\xd9\x33\xe0\x41\x58\xba\xed\x34\xba\x34\x93\x3b\x0e\x77\xcf\x81\x74\xf7\xf1\x90\x76\x25\x1e\xd7\xfe\x20\xc1\x50\x80\x15\x10\x33\xbf\x8a\x1b\xfe\x0c\x35\x0e\x6e\x7a\x97\xa0\x53\xad\x02\x40\x25\x62\x1b\x68\xbe\x26\x9d\x82\xe2\x16\xd1\x2f\x82\x68\x62\x27\x6f\x7b\x51\xda\xd4\x93\x26\x54\x90\xc5\x41\x1a\x58\x99\xd0\xaf\x3a\x77\xa5\x42\xdc\x23\x13\xb3\x33\xb8\xc0\xd1\x42\xef\x7b\x76\x74\x14\xb1\x8a\xc1\x9e\x44\x05\xe0\x3e\x8b\xbf\x9e\x0b\x91\x3a\x8a\xfb\x49\xad\x4a\xef\xb8\x1f\x3e\xa7\x7a\x85\x54\x4d\x1f\x7a\x0e\x89\x5f\x08\x2e\x2c\x63\x2d\x84\x36\x4e\xd2\xb9\x15\xfc\x92\xd5\xbe\xf0\x96\x37\xfc\xb2\x91\xd6\x68\x0b\x5a\x8c\x0c\x9e\xc2\x58\x7e\xfe\x7e\x03\xb4\x49\x48\xf1\xfa\x01\x00\x0f\x07\xd4\x0d\xa4\x58\x0b\xc8\x27\xb8\xa0\xce\x08\x89\x24\xcc\x2f\x89\x84\x8c\x01\x85\x76\xce\x75\x10\x0d\x51\x05\x08\x1d\x34\x42\x40\x60\x8a\x27\xa2\x91\xcf\x86\xed\x20\x55\x99\x47\x58\x59\xc9\xa0\x17\xe0\x81\xd7\x67\xb3\x0d\xfe\x93\x17\x5d\xe6\x02\x2b\x3b\xf5\x83\x39\x04\x89\x32\x10\x80\xcc\x50\x6a\x89\xb7\xc3\x6e\xcb\x31\x99\xea\x9e\x10\x5d\x96\xc8\x91\x32\x15\x6d\xc4\x5b\xac\xfc\xbd\x50\x2c\x5e\xac\x8b\x35\x3a\x56\xc8\x04\x22\x56\x85\x76\xb2\xa2\x54\x8c\x0b\x57\x03\x67\xec\x2a\x22\x75\xdb\xe1\x22\x37\x53\x92\xb0\x67\x67\xf2\x5c\x4e\x01\xe1\xb6\xe4\x16\xb0\x98\xa5\xdc\x8f\x15\x7e\x77\xd7\x6d\x41\x0f\xd8\xca\x01\x77\x42\xde\x51\x36\xa1\x7b\x59\x54\x53\x00\x67\x15\x81\x3c\xd8\xda\x42\xa2\xc7\x33\x8d\x5d\x9b\x10\x8e\xcf\x92\xa2\x2c\xeb\xc3\x2f\xe3\xc4\xa0\xfa\x53\x81\x8b\x98\x8a\x57\xa2\xcf\xda\x61\xa1\xec\x61\x24\x88\x23\xf9\x70\x89\x0a\x16\x55\x72\x48\x5b\x99\x7f\xc4\x2b\x14\x73\xd6\x86\xa3\xc1\x7d\x46\x07\x84\x34\xa7\xb1\x06\xc6\xd4\x92\x18\xe9\x93\x32\x90\x6a\x19\xa3\x8c\x35\x84\xa7\xec\x00\x7c\x17\x87\x07\x33\x8b\x4b\x68\xce\xda\xe1\x41\x48\x7f\x53\x6d\xbc\xbf\xba\x32\xef\x3a\x90\x62\xfc\x2e\x09\x14\xc4\x15\x81\x8f\xda\x4d\x45\x67\xdd\x0a\x69\x24\x8e\x20\x52\x27\xe2\x62\x0e\x44\x62\x4f\x84\xc3\x17\x58\xcb\x6d\x10\x69\x35\xd8\xe6\x10\x13\xc7\x45\x1e\x0d\x94\xc7\x98\x96\x82\xf3\x95\xe9\x44\xcd\xb2\x1d\x0e\x3b\x15\x62\x86\xe5\x9b\x7a\x12\xda\xeb\x13\xf3\xe9\xfa\x4a\xda\x03\xe9\x70\x67\x51\x4a\x99\xc9\x90\x50\x8f\x1e\x19\x64\x22\x5f\x62\x7c\xf0\xa2\x94\x0a\x9e\x7e\xa1\x02\x3d\xf9\x99\x87\x6e\xde\xaf\x12\x7b\xfd\xef\xfa\x8c\x67\xee\xbc\x40\xa6\xcf\xfc\x33\xe3\xdf\x96\x7d\x82\xe7\x6d\x78\xed\xd6\x0b\xf0\x83\x48\x86\xb6\x74\x1c\x27\x43\x73\x99\x36\x36\xcf\xf7\x6b\x10\x6c\x1c\xd3\xa7\x0c\xef\xfa\xb6\x7d\xd7\x8b\xb3\xba\x88\xad\x3a\x68\x01\x54\x01\xf2\x3c\xf6\x4e\xf5\x56\x51\x75\x72\x4d\x27\xeb\xaf\xc1\xe4\x49\x5e\xc4\x86\xad\xb4\x06\xf2\xfb\xe2\x69\x51\xf0\x85\x0e\xe0\x14\xc5\xdc\x96\x23\x85\x94\xaa\x3a\xc6\x34\x90\x2b\x77\xf6\x5a\x9a\x2d\xb1\x53\x84\x7d\x5f\x94\xdc\x89\xe6\x45\x69\x7f\x41\x16\x58\x2f\xfc\x2d\xae\xe9\x79\x4e\x21\x66\x01\x2d\xdd\xd2\xed\x36\x36\xfe\x5b\xb6\xe7\x0b\x01\xcf\xb2\xe3\x97\x82\x6b\x44\xcb\xd2\x32\xae\x97\x52\xbd\xc6\x27\x8f\x1d\x82\x51\x86\xb9\xe9\x58\xe7\x20\x95\x28\x93\x8e\xe3\x20\x44\x28\x82\x05\x4c\x67\x88\x2d\x9a\x48\xdf\x90\x12\xc9\x33\x1f\x23\x2f\x6e\xa6\x77\x97\x9d\x9e\xec\xa9\xc0\xca\xc4\x12\x4f\x63\xd1\x1b\x1e\xaf\x96\x70\x20\xde\xa7\x04\x03\x9c\x84\xc9\x02\xc3\x12\x96\xb1\x62\x91\xe7\x72\x26\x4b\x38\xce\x64\x88\x4e\x50\x01\xdc\xd0\x0e\x27\xf5\xf5\xc1\x3c\x40\x0e\x7a\x5a\x9f\xbc\x55\x6a\x7d\x47\x5b\xad\x0f\xf3\x1b\x2b\x00\x96\x3a\x94\x5c\x0a\xb9\x74\x1d\xce\x16\xb3\xe8\x16\x0f\x26\xd0\x2e\x2e\xf2\xab\x2e\x37\xe5\x24\x21\xf3\xd8\x6d\x04\xa7\x25\xdb\x7d\xd3\xc9\x17\xa2\x08\xe3\x6d\x33\x25\x40\x2f\x1f\xd5\x07\x63\x8a\x27\x14\x4a\xbd\x57\x2b\x69\x0a\x9c\x89\x13\x9a\x5d\x01\x42\xec\x5e\x22\xf4\xaa\xba\x18\xc8\xe7\xc3\xa6\x52\x1a\x06\xb7\x2c\x57\x26\x3f\x32\xb0\xca\x5a\xe4\x1b\xfe\xe1\x02\x95\xb3\xe9\x97\x44\x81\xa8\xc7\xf2\xb8\x98\x27\xdb\x6c\x49\xa3\x54\x12\x7c\x9d\xc9\x05\xe0\x94\xa7\x6d\x6f\xd3\xd3\x1e\x37\x16\xb6\x93\xfa\x3e\x9d\xbd\x88\x2b\xa6\x9e\x7e\xe3\x32\x40\x2f\x17\xa9\x7a\x51\xb5\xdc\xd4\x4c\xbe\x78\x58\x9a\x4c\x51\x66\xd7\xfb\x39\x0f\x84\x3c\xb0\xed\x80\xe3\xed\x92\x5c\x29\x0e\xea\xc9\x0e\xa7\xca\xd8\x7f\x2d\x2b\x20\x6a\x49\x95\x96\xc3\x4c\x5b\xd2\x4f\x2e\x4f\x1a\x1f\x9d\xbf\x45\x0f\xc6\xd7\x46\x52\x86\x42\xff\x9c\xd5\xa7\x9f\x69\xa6\xee\x01\xf4\xcb\x05\xa5\x22\x61\x6e\x54\xa3\x3f\x76\x2d\xa9\x02\x90\xea\x78\x6f\x64\xc6\xb3\xf1\xbf\x6b\x83\x81\xa9\x60\x33\x17\xa7\x93\x53\x2d\xe7\x41\x75\x60\x8c\xfc\xb8\x09\x74\x27\xf4\x41\x98\x30\xf5\x39\x10\x5b\x23\x90\x05\xf6\xb1\x89\xfc\xb2\x60\xbf\x34\xe3\x00\xec\x57\x7e\x14\xa5\x63\x53\x12\x47\x31\x4f\x24\x02\x02\x18\xe6\x74\xf0\xfd\x61\xfb\x12\xf3\x5b\x64\x73\x29\x8b\xc9\xbd\xb9\x43\x70\x1c\x9e\x1a\x5f\xff\x7e\xc7\x9c\x91\xe4\x09\x61\xc3\xc6\x83\xc2\x74\x20\xb8\x3a\x28\x11\x7d\xb2\xf0\xb9\x94\x91\x3c\xc9\x05\x8b\xd1\xbc\xa4\x24\x6b\x7a\x39\xea\xfd\x15\x49\x06\x85\x91\xb0\x42\x59\x70\x40\x7a\x4a\x52\xf1\x81\x71\x75\x0b\x7e\x5b\x4a\xf5\xf8\x16\x12\x2b\x78\xd9\x91\x2d\x9e\xad\x66\x44\x97\x89\xe3\x5e\x19\xe8\xc5\x38\x3c\x7a\xce\xc9\xcb\xb4\x0c\xd9\xc4\x36\x91\xea\x28\x6c\xcb\x7f\x94\x14\xe6\xdb\xfa\x15\xcf\xbb\x1d\xd8\x8c\xe9\xd9\xa3\xc8\x46\x22\xba\xba\x38\x8a\x2d\xfb\xb4\x49\x7b\x99\xac\x65\xdb\xe6\x71\x78\xbb\x4b\xa8\xe5\xcb\xd9\x6a\x77\x87\x83\xeb\xaa\xaa\x86\xd7\x83\x13\x31\x43\xad\xee\xf3\xcc\xa9\xac\xe6\x8d\x4a\xf8\x4e\xd3\x15\xc8\x0c\xc2\x76\xbe\xeb\x99\xac\xfb\x8f\x3f\x13\x31\xf3\xa3\xe0\xb5\x11\x2f\xb6\x85\x97\x96\x51\xfc\xc6\x55\xff\x39\xb0\x3c\x16\x55\xff\x6f\x5c\xc4\xbf\x37\x5c\x41\xb5\xe3\x73\xa0\xb5\xb7\xc6\xd5\x9b\x28\x43\xd0\xa2\xad\x78\xc0\xa8\xa7\x9c\x7a\x49\x93\x65\xf7\xe3\xbd\x29\x73\x08\x11\x37\xc0\xd6\x47\x36\x5f\xe8\x80\xca\xab\xba\x6f\x12\x05\x08\x6b\xbc\x5c\x0a\x05\xbd\x03\x53\x5f\x0f\xf1\x26\x55\x5c\xd4\x25\xfa\x3f\xff\xab\x2b\x66\x6d\x8d\x89\x37\xff\xc3\xc4\x47\x25\x15\xce\x88\x7f\x9c\x41\xa1\x1c\xe3\x7b\x33\x4d\x21\x54\x2c\xc2\xa5\x09\x49\x2c\xde\xdc\xa4\x8c\x00\x70\xe5\xc1\x09\xe7\x7f\xed\xa4\xc8\x0e\x5d\xa8\x3c\xd6\xf2\x63\xb7\xd4\x6d\x6a\xeb\xd6\xba\x75\x0a\x0f\x79\xb7\xe2\x0a\x95\x19\x4a\xac\x76\x22\xaa\x41\x29\x20\x57\x81\xa5\x5c\xaf\x34\xa8\x15\x91\x57\x46\xd7\x87\x89\xb1\x5a\x5c\x54\xf8\xe1\xce\x6b\x5d\xfe\xb5\x4d\xa2\xbc\xb7\xef\x17\xf7\xc1\x7b\xba\x52\x9e\xc0\x03\x4f\xd8\x6e\xa3\xbd\xd2\x83\x15\xe9\x2f\x03\x42\x52\xbc\x9f\x49\x97\x77\x8c\x68\x00\x98\xe9\x11\x55\xd5\x3f\x07\x38\x45\xab\x93\xce\x2b\xaf\x76\xfa\xbb\xbe\x0e\x77\x1a\xfa\x4c\x96\xb7\x31\x70\x67\x80\x21\xa4\x3f\x0e\x83\x38\x36\x9b\x90\x7b\x60\x9a\x6d\x13\x71\xa9\x9a\x59\x44\x3c\xbb\x77\x83\xe9\x65\x22\xd9\x5f\x74\xc5\xe7\x47\x64\x6f\xc1\x82\x1a\xde\xd4\x35\x16\xa1\x71\x30\xcc\x03\xcc\x4b\x5b\x70\x61\x5a\xb2\x27\x17\xc6\xe9\x3e\x74\x6d\xfb\xc1\x5b\xf2\x8d\x59\x32\xc6\xdd\x75\xc9\x87\x9b\x96\x7c\xd1\xca\x62\x47\x64\x28\x33\xd1\xc1\x55\x56\x83\x4f\x43\x8e\x6d\x73\x7f\x50\x8b\x7b\xe8\xdd\xfb\x4e\x8e\xda\x29\xf6\x41\x6d\x60\x51\x27\xa2\x44\xe3\x2a\x57\xfd\xb2\xff\x28\xd2\x22\x0c\xeb\xda\x4a\xe5\x7a\x27\x9c\x35\x18\x63\xb0\xa0\xa2\x5e\x44\x87\x03\xbb\x85\x07\x12\x86\xcb\xb6\x3e\x19\xba\xcc\xbe\xd6\xa8\x0d\x6c\x0b\x57\x92\xa2\x83\x00\x24\x20\x2e\xea\x59\x1b\x6a\xee\xee\x49\x8f\xae\x13\x85\x78\x88\x18\x0b\x62\x4e\x99\xaa\x11\x75\x7d\x74\x0c\x5c\xe3\x14\x47\x2a\x40\xfe\xce\x63\xef\x1a\xee\x27\x1b\x40\xfe\x71\x6e\xa6\x18\x4b\xfb\x51\x80\x06\x84\xd4\xa8\xf7\xff\x75\x90\xd3\x60\xd9\xb4\xb9\xea\x3e\xfe\x30\x7e\x28\x86\xc3\x28\xb4\x36\x21\x1c\x2c\x6e\x37\x54\x74\xa8\x56\x24\x6b\xa6\xd0\x24\xa2\xef\x0e\x49\x4c\x0f\x06\x25\x01\xb2\xb6\x13\xb4\xe8\xfa\xa2\x54\xa9\xcf\x80\x59\xf5\x4c\x57\x48\x8e\xa0\x18\x2d\x12\x14\xf0\xab\x25\x19\xca\xc5\x08\x2a\xea\xad\x90\x72\x76\xf3\x1b\xa9\x1b\x94\xe8\x77\x14\x4f\xba\x09\xe1\x97\xbb\xad\xe0\x4b\xac\xca\x95\xee\xb1\x73\x1b\xaa\x78\x1b\xd8\xe6\x8e\x35\x4f\xbd\xcb\xf5\x96\xef\x7d\x0e\x13\xdf\x54\x6a\xc3\x7a\xe6\x84\xb1\x2a\x40\x89\xfa\x10\x0c\x48\x06\xc5\xd8\x16\x3d\x36\x36\x9a\x22\x69\x0b\xc0\x9f\x3c\x2c\x83\xf2\x78\xcd\xa2\xec\x4d\x70\xad\x7a\x8a\x08\xdc\xca\x90\xc6\x8b\x92\xd4\xe9\x79\x00\x68\x84\xb2\xba\x78\x90\xc6\x81\x96\x97\x9c\x9d\x85\x88\x68\xf0\xa2\x7d\x02\x54\xb7\xaa\xeb\xa0\xa6\x52\xb1\x40\x24\x59\x2a\x6e\x98\x6c\x91\xc5\x8d\xfb\x70\xe2\x5a\x2e\xef\x18\xd3\xf4\xaa\x1b\x51\x8c\x74\x97\x06\x74\x1c\x18\x4d\xa2\x4a\x1e\xef\xce\xf5\xdb\x4f\xe7\x53\xc5\x14\x82\x85\x96\x06\x85\x02\xc9\xea\x98\x02\xf8\x1b\xf7\x10\x0a\x4d\x12\x7a\x05\x18\x5a\xb6\x0d\xac\x24\xd0\x14\x27\x50\xce\x61\x4d\xbd\x05\x29\x12\x15\xec\xa2\xe5\xbf\x09\xe1\xb6\x3f\xdc\xa6\x16\xcf\x47\xff\xa9\xd7\xa6\x54\x94\xea\x40\x8a\x7d\x2f\x2a\xed\x28\x1a\xaa\xfa\xca\x69\x17\x10\x33\x0b\x4f\xd4\xf0\x5e\xfb\x76\x85\x26\x84\xab\x8d\xf5\x19\x29\x84\xa8\xf8\x49\x0c\x56\x69\x02\x17\xaf\xaf\x09\x0c\x2c\x7c\x4d\xbe\xe8\x64\xc2\xb6\xe2\x6d\x32\x68\x0c\x8e\x0f\xab\x2d\xce\x3a\x57\xb6\x71\x60\x6f\x26\xa8\x0c\x6b\xad\x23\xb3\xc3\x3a\x23\x28\x4b\xa7\xf5\x41\x5f\xb9\x4d\x47\xf9\x3a\x16\xf8\x9f\x08\x87\x7f\x7e\x4f\xa5\xb7\x92\x9c\x35\xbe\xbd\xc4\x5e\xb9\x16\x95\x4b\x87\x09\x5f\xb5\xdd\x4c\xe2\x2b\xd5\xb1\x26\x84\xf4\x8a\x04\x69\xac\x1c\xaa\x44\xce\x5b\xd7\xd4\x05\xfa\x0b\x58\x9a\xf7\x4d\x40\xf4\xf8\xd8\xaf\xfd\x88\x6f\x9f\x09\x83\x74\xcf\x8b\x1a\x1f\x8b\x26\xad\xaf\x00\xfc\x63\x1f\x88\x64\xa0\xc2\xd5\x52\xb7\xf8\x3a\x78\x9a\x26\x3f\xad\x36\xbf\x47\x92\xc5\xc2\xdb\x72\xfc\xf8\x25\x16\x99\x22\x06\x48\x20\x2d\x3f\x4b\x99\x69\x94\xa9\xfe\xe8\xa4\xd4\xda\x84\x70\xd3\x1f\x77\x78\xf9\x3e\x46\x2a\xfe\x11\x3b\x73\x0e\xa9\x1f\xf3\x5f\xfd\x28\x8a\x7c\x3f\x0e\xf9\x45\x17\xe1\x3b\xf9\xb5\xdf\x4d\x0c\x2a\xc4\x8d\xb6\xe2\xf6\x44\xd3\xc4\xd3\xf1\xe3\xfb\x2e\xde\xd0\xeb\xb8\xdc\x2f\xbb\xb8\xfd\xa9\x55\xc0\x67\x31\xbc\x40\x70\xc4\xd3\x44\x3c\x9e\xb7\xa5\x95\x62\xc1\xb7\x38\xc8\xb3\xf1\xe3\xbf\x22\xe5\x98\x9a\x1d\x7d\x88\x27\x7c\x18\xa7\xff\x2b\x5e\x94\xbb\x58\x8b\xec\x34\x06\x18\xc4\x42\xcb\xd1\xb1\xfb\x7d\x3c\xd7\x76\x66\xbc\x37\xd1\xe8\xfa\xd7\x14\x99\x30\x45\xab\xc4\xf1\x62\x50\x7b\x88\xb5\x7e\x2e\xa2\x49\xfc\xd9\xf4\xff\x65\xfb\x6c\xfc\xfd\x79\x3f\x82\xe9\xdb\xc4\xeb\x20\xcf\x42\x2c\x56\x92\xed\x83\x6c\xa0\x5e\x70\xf3\x28\xf9\x99\x2d\x17\x4e\x4d\x40\x3e\x8b\xc6\xb0\x94\x16\xe9\xea\xca\x8e\xc0\xb7\x96\x24\x7c\x24\x9e\xcf\x46\x18\x08\x2e\xcd\xce\x7f\x52\x1f\x1d\x95\x4e\x84\xd4\x8f\xa3\x5c\x4c\xab\x52\x5a\xda\xc1\xc0\x6f\x13\xfb\x52\xb9\x1a\x97\xb2\xc4\xab\x13\x4c\x2e\x04\x60\x72\xdf\xc2\x8a\x8f\x1b\x58\x33\x1b\x47\x99\x78\xe1\x0a\x51\x4d\x08\x6f\x16\x42\x42\x1b\x9f\xb9\x8c\xc4\xed\xcf\x40\xb7\x75\x84\xe1\xef\xf1\xef\xcb\x48\xc0\x17\x38\xca\x5f\xa7\x6a\xac\x39\xbb\x54\xc6\xf7\x90\x6f\x28\xa0\xf8\xd1\xf8\xe2\x75\x90\x05\x54\x85\xcb\xcc\xf1\x29\xdd\x18\x96\x3c\x1e\xea\xb7\x1f\x7f\xa8\xe3\xbb\x1f\x42\xde\x41\x81\x73\x59\x9b\x3a\xdf\xf5\x42\xe0\x1b\x4e\x02\xe8\x17\x4f\x11\xa1\x1e\x2b\xdf\x02\x80\x75\x20\x97\xca\xb3\xae\x85\x76\xae\xcd\x58\xe5\xac\xaf\x37\x9d\xf5\x6f\xf2\x3e\x01\xc5\xac\x40\x72\xdd\x13\x6e\x08\x4b\x78\xdb\x86\x5f\xc4\x6d\x9e\xe4\x93\x7f\xe9\x3a\x90\x0a\x79\xf6\xd3\xe5\xff\xa3\x73\x0a\xae\x90\xa1\x33\x46\x9b\x34\x21\x9c\x1c\x87\xe4\x13\xda\x76\xc1\x62\x49\x22\x07\x47\x5c\x2e\x04\xb7\x90\xd3\x93\x4c\x80\x5a\xd6\x8f\x8c\x64\xc1\xa2\x08\x0e\x0a\xc7\xa8\xd1\xa3\x99\x1c\x3c\xca\xf8\xf2\x94\x9d\x63\xc4\x16\x03\x54\x51\x7c\x09\x0b\x72\x7c\x25\x97\x40\xb8\x0c\x75\x69\xa1\xb0\xb4\x29\x95\xf0\x77\x09\x0a\x67\xd1\x8d\x28\xa5\x4c\xd4\xc6\xb1\xb2\x36\x42\x9d\xa7\x9b\x86\x1b\x81\x1c\x34\xfc\x0a\x5c\xca\x5a\xcb\xb1\x34\xe2\x50\xb1\x17\xad\xbf\xf2\x77\x80\xde\x10\xfb\xdd\xfc\x4b\x21\x04\xcb\xd1\xf9\x52\x1c\x0e\x62\x3e\x1f\x49\x82\xd6\xaf\x1b\x32\xe1\xd0\xb9\xd3\xb5\x84\x6b\x90\x6c\x1a\x78\x97\xd8\xa5\x53\xb0\x28\x22\xc0\xb2\xdc\xdc\xb5\xd4\x48\xe2\x71\x7a\x47\x0b\x78\xcc\x19\xbf\x0e\x64\xfd\x67\x2c\xc2\xf3\x3a\xd0\x2d\x9e\x58\x72\x5e\xd3\x13\x23\x9a\x4f\x44\xe0\x57\x14\x32\x69\x44\xaf\x0f\xcf\x7c\x0f\x25\xa3\xe0\xe2\x7e\x3f\xb2\x9f\xe7\xe2\x32\x81\x54\x6b\x67\xa6\x10\x99\xc7\xe5\x3c\x6d\x23\xe7\x99\xe0\x32\x15\x1f\x91\xb1\xd3\x4d\x08\xed\x5e\x27\xc2\x1d\xa9\xfa\x28\x00\xa8\x2c\x3c\x97\xbd\x8b\xbb\x44\x11\x1d\xb7\x23\x99\x63\xf9\x92\x7b\x7a\xd1\x48\x2b\xdc\xda\xdc\x8d\xf6\xef\xa7\x9c\xa5\xaf\x44\x1d\x03\x41\x15\x89\x21\x88\xa2\xd3\x3f\xeb\xbd\x8b\x60\xc0\x46\x94\xe1\xd2\xc2\x99\xc0\x70\x2f\xc5\xf7\xd2\xed\x18\x71\x63\xc3\x5b\x58\xa5\xc0\x6b\x4f\x84\x58\xa5\x05\x2c\x90\xdf\x0f\x41\xe4\x26\x0e\x54\x48\xdc\x69\x1c\x94\x52\x19\x07\xc4\x29\x47\x58\xea\x36\x29\x4d\x40\xdb\x3b\x1c\x16\xf1\x07\x4d\x09\x93\x84\x6e\xa5\x1a\xaf\xcb\xc3\x55\xd7\x33\xc8\x81\xd4\xd4\x46\x66\xa0\xa4\x0c\x6d\xff\x9f\x16\x65\x2b\x8c\xdd\x48\x43\x2d\xce\x1d\x05\x80\x3c\x84\xc5\x1f\x62\x3e\xb6\x9f\xc0\xe1\xc0\x1c\x08\xfc\x5f\x35\x51\x78\x12\xd5\xcb\x9f\x05\xdf\x6b\x42\x58\x5e\x77\x4c\x82\xa9\x86\xab\x9a\x2c\x35\x7a\xfd\x4b\xc9\x84\x8e\x2b\xc6\x28\xf7\x7f\x75\x15\x20\x37\xc2\xe8\xed\xf1\xa8\xf1\x93\xbc\x2f\xf1\x17\x2d\x2c\xf6\x69\x31\xa1\xb5\x75\x3d\x2c\x21\x7a\x28\x49\x5b\x59\x27\x1a\x44\xe7\xcd\xea\xe6\x85\x0e\xfb\xfb\x36\x7b\xd1\xfe\x1c\xb6\xd4\x94\x65\xb5\xb0\x8a\x24\xca\x4d\x22\x87\xaa\xb6\x90\xd2\xcf\x7b\x37\x0c\x4c\x6f\x15\xb2\x3c\x68\x52\x6a\xa3\x11\x13\x21\xe5\x06\x9e\x6b\x5a\x3e\x38\x3e\xba\x01\x15\x12\xaa\x72\x92\xe7\x71\xf1\xec\x7d\xf4\x87\x6c\x53\x9e\xfc\x8c\xf1\xec\xad\x4e\x55\x81\xaa\x62\x58\x23\x12\x8f\xe2\x1f\xd4\xb4\xa0\x7a\x6f\x6a\xd8\xfd\xc0\xaf\x00\x27\x89\x9d\xe0\x4e\x7a\x61\x2a\x7a\x54\x69\xc7\x56\x91\x27\x2b\xb6\xa0\x37\x52\x6b\x27\x61\x06\x38\xa2\x5d\x99\x26\xe2\xab\xee\x9c\xa3\x07\x9d\xf8\x9e\x84\x70\x8e\xe8\xca\x56\xd3\x9f\x37\xa3\x93\xa7\x4c\xa9\x50\x8f\x5b\xd9\xca\xa9\x14\x58\x5a\x4f\x49\xe2\xa7\x2c\xfd\xd3\x70\x1e\xf3\xd6\x97\x5e\x92\x6c\x0a\x66\x20\x74\xa7\xc8\x04\xef\x32\x67\x68\xec\xf7\xc4\x26\xf5\x96\x2c\x69\x55\xf6\xd3\xfb\x4d\xb1\x61\x32\x6d\xcb\x22\xa8\xca\xeb\x81\x28\x02\xa9\x15\x7b\x00\xb5\x90\x91\x36\x79\xa0\xec\x56\xc7\x68\xc6\x03\xcf\xbc\x15\xe8\x4b\xf1\x50\x98\xb3\x7a\xc1\x48\x33\xa0\x40\x2c\x3a\x8c\x02\xca\x85\x48\x1c\x2a\x98\xd6\x4c\x09\x4b\xf1\xfe\x41\xcf\xf4\x52\x8a\xb6\x20\x43\x58\x12\x6e\x85\x45\xa4\xbb\xa1\x3e\x5d\x3d\xfa\x96\x2a\xdf\xe0\x13\x0a\x15\x57\x24\xca\x63\x53\x5f\x47\x5b\xe0\x1c\x82\x78\x29\x23\x54\x09\x01\x3d\x65\xde\xa2\x56\x72\xba\xb8\xbe\x62\x02\xa7\xf2\xcb\xde\x75\x9e\xc8\xcc\x02\x4e\x75\x7a\x2b\x69\x1d\x99\x70\x4d\x69\xb7\xc2\x3d\x46\x0a\x0c\xd9\x28\x40\x22\xf4\x91\x2c\xea\x77\xe7\xf1\x67\x75\xb7\x60\x26\xb4\xf1\xac\x8e\x7c\xfa\x4a\x6a\x9e\xa3\x0a\x35\xdc\xc5\x8e\xa6\x22\x23\x9a\xe6\x98\x01\x0c\xe6\x3e\xe9\x29\x7f\xf4\xdb\x08\x41\x90\x00\x05\x17\x55\x86\x7c\x69\x3d\x6e\xd0\x48\x70\xce\xcd\x7a\x29\x99\x11\xd5\x9a\x3f\x90\x8c\xbb\x48\xd9\x8d\xc8\xa5\xd4\xe1\xcb\x2c\x04\xe1\xb8\x94\x50\x7c\xe5\x5f\x11\x35\x41\xee\xf7\xed\x35\xbd\x9c\x7e\xf6\xf2\x60\xb1\x65\x91\x90\x29\x84\x3c\x48\xf1\x12\xbf\xb5\x16\x23\xc4\x01\x0c\xda\x78\x7e\x3c\x60\xbb\x4c\x20\x83\x76\x44\x96\x19\x2b\x0c\x1f\x88\x40\x18\xd7\x7c\xd5\x8e\x12\xed\x34\xf7\x67\x24\xf6\xea\x33\x81\x00\xec\x87\x9d\xd3\x7f\x81\xb8\x4a\x0a\xba\x96\x7c\x5a\x9a\x7d\xb4\xac\xe4\x1b\xeb\x08\xc9\xd4\x89\xdf\x70\x44\x73\xf5\x4c\x2a\xed\x0d\x2c\x06\xee\x77\x2c\x8c\xe1\x19\xb9\x74\x8d\x97\xcd\xe4\xd7\x9b\x2f\x48\x9e\xff\x2b\x37\x46\xcc\x53\xdc\x9e\x6d\x0c\x90\x80\xb7\xec\x72\x1e\x72\x4b\xec\xa8\x1e\x5c\x26\x5a\x70\xb0\xa3\xcd\x42\xa8\x79\x7f\x10\x8e\x00\xed\x7e\xd5\xf9\x02\x57\xa6\x1b\x25\x31\x16\xfa\x03\x23\xef\x74\x7d\x1d\x46\x3d\xc1\x8f\x18\x10\x84\x76\xe2\xea\xb3\xd3\x99\x2a\x4b\x30\x97\x0a\x02\xf5\x7a\x5c\x55\x35\xf4\xff\x1e\x86\xc1\x97\xbd\x30\x69\xa5\x86\x97\xfa\xfe\xfe\x38\x3e\xf0\xa2\xbc\x70\x7e\xcd\x01\x06\x07\x32\xbc\x48\x67\xfa\x4f\x98\xfd\x21\xba\x61\x27\xa3\xc1\xd4\x09\xc5\x2b\xd7\x97\xcb\x23\x14\xb1\xad\x15\x4f\xaa\x30\xb0\x94\x29\xf1\x6e\x00\x2e\x5c\x0e\x5e\x88\x53\x23\x52\x6d\x8b\x22\x50\x1d\xf6\x80\x2d\xbe\xed\x86\x7d\x09\x35\x43\x81\x37\x05\xd8\xfc\xb5\x98\x1c\xba\xf6\xc6\xbf\x31\x0c\x45\xda\xbb\x9a\x29\x70\x19\xc0\x20\xdd\x5c\xc9\xf9\xca\x25\x0a\xd3\x8c\x55\xfe\xef\x39\x4b\x5a\x06\x6b\xc0\x04\x36\x28\x93\x78\x23\xf2\x4b\x40\x2b\x26\xd8\xe0\x6d\x4b\xbb\x65\x4c\xfa\xfc\x93\xeb\x8e\x6d\x55\xf9\x97\xef\x5d\x2f\x14\x29\x7a\x35\x0f\x4a\x22\x1f\x80\x5c\xe9\x66\x2c\xbb\x00\x56\xd6\xf4\x13\x33\xcd\xea\xf4\x90\x5e\x51\xad\x7c\x20\xb7\x0d\x66\xf2\x98\x63\xd0\x11\x2b\xee\x2c\x24\x68\xa9\x4d\x3e\x88\x63\x7d\x90\x77\x4b\x5b\xfb\x04\x12\x92\x85\x80\xe2\x84\x6a\x32\x34\x68\xc7\x4c\x7c\x49\x79\x3a\xdf\x78\x47\xe4\x4d\x1c\x6f\x88\x56\xd6\x33\xed\x72\xd6\x4d\x4c\x41\x90\x25\x06\x9e\xb6\xd6\x97\xc8\x66\x94\x60\xd5\xed\xc9\xde\x88\x5b\x5b\xf5\x96\x12\xf5\xc6\x27\xf2\xa0\x56\x4c\x5a\xc9\xa8\x1c\x18\xe9\x29\x7e\x05\x1c\xbd\x21\xdf\x10\xdd\x73\x8a\x89\xa0\xe3\xd1\xb7\x95\xad\x9d\x15\x46\x74\x30\xb8\x9c\xbc\x16\x1c\x2f\xcd\x05\x36\xe9\xe3\xda\x84\x0c\x62\x25\x38\x58\xa2\x2f\x03\x05\x0a\x6f\x45\x26\xaa\x32\xe7\x38\xc4\x7d\xec\x16\x33\x2d\xeb\xed\xc0\x65\x91\x75\x4d\xe3\x40\x7c\xc6\xb9\x55\x49\xc0\x96\xbc\xb6\x6a\x25\xb0\x38\x70\x1d\x08\xc0\xc2\x0a\xe8\x29\x73\xcf\xb5\xb4\x37\x50\x11\x9f\x2d\x16\xca\x43\x6c\xb7\xce\x3d\x6e\xb4\x2e\xae\x32\x2d\x16\xfd\xb8\xc7\x87\xff\x8a\xf1\x4e\xca\xb8\x47\xfc\x10\x2f\xa9\x5b\x7a\x1d\xf8\x12\x3b\xb9\x0c\x13\x59\x13\x23\x12\xf1\x84\xc0\xa3\x98\xb2\x01\xd7\x83\x32\xd0\xe1\x1e\x38\xae\x13\x07\x38\x87\xc1\x83\x06\x8c\x61\x97\x52\xea\x51\xb5\xa2\xb0\x70\xb8\xa3\xb2\x49\xe8\x46\xd5\xcb\xc4\x00\xb9\xae\xcc\x43\xc7\x34\x53\x2f\x5e\x88\x17\x4c\xc3\xe3\xd3\x17\xa8\x2b\x03\x35\x97\xb0\x48\x0d\x76\xd9\x25\x61\x80\x37\xc3\x74\x84\xb2\x92\x34\x4f\xe8\x5d\xa4\x11\xa5\xbd\xcf\xa2\xe1\xce\x98\xa5\x32\x02\x1d\xf6\xdb\xa3\x3a\x1d\xe4\x04\x49\x77\x74\xfc\x91\x15\x88\x14\xfd\xbd\x5a\x7c\x4e\xe5\x7d\xbd\x14\x33\x71\x61\xc0\x2e\x2b\x94\x6a\xe5\xb7\xc0\xab\xd1\x82\x86\x22\xb5\x37\x6c\xde\xeb\x94\x48\x4c\xc0\xa2\xf2\x8a\xe9\x11\x9b\xf3\x91\x08\xf3\x3c\x4b\xc9\xd2\xfa\x51\xa8\xd2\xfb\x89\xad\x37\x68\x1d\x6d\xa3\xcb\xe1\xd4\x7b\x58\x4e\xa7\x7a\x35\xc4\xc4\xcf\x0f\x13\x09\x7f\x1a\x53\x40\xbe\xe8\x79\x9d\x6d\x1b\xf6\x43\x23\xf2\xcc\xca\x35\xff\x35\x7e\xf1\x55\x47\xf4\x6d\x7c\x63\x90\x55\xb9\xe2\x5b\x22\x89\xe0\x6a\xb0\x48\xcd\xb8\x3e\x2a\x85\x7f\x40\xec\x5e\x2d\x76\xd7\x2c\xbe\x5c\xe0\xe1\x83\xc5\x26\x35\xa4\x90\xc8\xb0\x91\x61\x11\x25\x9a\x7e\xf9\x00\x48\x1e\x84\x0c\xd7\xf1\xc9\xdb\x14\xb1\x10\x0f\xc3\x73\xb5\x5f\x2d\x48\x11\xca\x63\xc9\x71\x89\x12\xb7\x23\x48\x1a\x8a\x9d\xf6\xdc\x0e\xc3\x66\xf7\x44\x45\x81\x39\x70\xa3\x40\x74\x7c\xf4\xba\x63\xa9\x42\x98\xda\xc8\xbe\x62\x15\x89\x6b\xf9\x0c\xcc\x10\x45\xee\x7b\x27\xc1\xef\xb9\x00\x70\x2e\x6a\xdc\x43\x13\x9b\x57\xac\x9f\x1d\xc7\x71\x60\x63\xbc\x34\xd0\xb4\x9a\x19\x3a\x29\x54\xe5\xc1\x06\xd5\xf0\xed\x66\x5f\xb3\x4d\x5e\x09\xde\xb7\xa6\xd5\x31\x1d\x57\x80\xe9\x05\x31\xb5\x90\xe3\x02\x74\x75\xf8\x3c\x14\x6d\x49\x1d\x40\x9b\x52\xa5\x4c\x6c\xc6\x8e\x73\xe7\x1f\x1f\x99\xa5\xd5\xca\xf6\x36\x15\x63\xc4\x99\xe4\x5d\xbf\x61\x5d\x31\x63\xcf\xc3\x9c\x98\xe7\x84\x9e\xba\xf2\x12\x73\x3d\x41\x69\x5c\x61\x69\xdf\x38\x0e\xd4\x49\x2b\x45\x86\xc4\x7d\x4f\x4d\x67\xf1\x47\xae\xc1\xd9\x07\xdb\xef\x81\x41\xe4\xa8\x70\x66\x30\xb6\x72\x82\x23\x23\x2f\x00\xe3\x08\xa5\x5b\x0b\xca\xc9\xe2\x37\x51\xee\x17\x1a\xb9\x8b\x16\x2c\x49\x64\x21\xb1\xe6\xf1\x60\xf5\xb8\x86\xdd\x95\x24\x95\xaa\xb3\xb9\xef\x76\x84\x80\x5e\xa9\x83\x52\x86\x35\x37\xf3\x79\x43\xf3\x5e\x59\xac\x46\x68\x95\x4e\xd1\xe8\xcc\xa6\x2a\x8b\xba\xd9\x5e\x5e\x40\xd4\x0e\x34\x04\x2b\xbd\xa8\x28\x2f\x52\xe0\xbd\x3f\x40\x40\xc8\x9f\xe2\xb0\x68\x2c\x4f\x63\xb7\xf7\xea\xc8\xc4\x15\x28\x92\xfd\x9a\x17\xe7\x8a\xdc\x96\x50\xbe\x16\xb8\x5d\x7f\x39\x8b\x44\xfb\xb9\x8c\xbd\x1f\x36\x2a\x54\x54\x87\x94\xe9\xbb\x73\xbb\x29\x17\x16\x57\x3e\x4e\xe0\x48\xf2\xcd\xd4\x80\xd4\x63\x8e\x30\x4b\x83\xc4\x53\xd9\x43\xe0\x95\xac\xbf\x54\xc8\xd8\x92\x55\x42\x45\xf8\xed\x4d\x52\xba\xdc\xad\xdf\x23\xa2\xb6\xe1\xcf\x3a\x61\xee\xb6\xd6\x8b\x1b\x63\xd5\x29\xd3\xb6\xe2\xc5\xaa\x37\xb2\x20\xbd\xb4\x75\x5d\x20\x7b\xd5\x1e\xe0\xca\xb8\x3f\x65\xc0\x84\x95\xd0\xe1\xf6\x8c\x9e\xcf\xd7\xbd\x08\xd1\x65\x6f\x85\x9a\x28\xbb\x4f\x6a\xde\x82\x06\xfd\xb5\x49\x67\xc4\x1f\xc2\x16\xf4\x05\xc1\x9c\x8e\x45\xa8\xe6\x0d\x73\x03\x37\x9d\x55\xdd\xf4\x8c\xe3\x4b\x0e\x2c\x51\x02\xf4\xbe\xbb\x14\x3d\xe6\x6b\xf1\x48\x75\xa0\xeb\x50\xae\xe3\xf7\x7d\x5c\xee\x0e\x70\xd6\xab\xdd\xe3\x28\x61\x29\xa5\xd0\xf3\x9e\x39\x63\x20\x13\x3b\x19\x25\x29\x61\xce\xb3\x85\xe0\xcf\xfc\x23\x15\xcd\xf0\x66\x60\xd2\xde\x84\xf0\xac\x17\xa9\x70\xda\x9d\xca\xa0\x68\xbc\x74\x04\x2f\x58\xc6\x53\x1c\xb4\xc0\x19\xaa\xbe\x42\x29\x15\xcd\x27\xe5\x78\xf3\x09\xbe\x61\xb7\xfa\x63\x8a\x84\x5e\x8c\x00\x9f\x68\xf7\x54\x68\xd3\xd5\x36\xcf\xc7\x3f\xb1\x1d\x77\xcc\xbc\xff\x39\x25\xa2\xb6\x6d\x78\xdf\x45\x55\x29\xfe\xfd\xd7\x94\x95\x0f\xd5\x66\x9a\xa2\xdb\xc6\x71\x29\x84\x91\x79\xc2\xf9\x6e\xa2\x10\x89\x02\xed\x45\xe9\xed\xbd\x59\xf3\xe4\xf2\x1e\x9f\x7f\xbb\x90\xcf\xaf\x16\x9b\x9e\x97\x45\x6f\x5b\xf9\xb0\x17\xdd\x99\xdf\x5d\xdb\x40\x89\x77\x8b\xa8\x59\xa2\xe9\x60\x12\x53\xc3\x44\x77\xe3\x62\x96\xe2\x12\xa9\xbd\x26\x23\xd6\x12\xe1\x1f\x27\x1b\x3c\x72\xbb\xb9\x04\xbd\x34\x0c\xbb\xab\xb4\x8a\x77\xcb\x68\x2c\x48\x45\x7c\xa7\x00\xf5\x2f\x4c\x80\xba\x28\xda\xf2\x65\x17\xb3\x4c\xc7\xa7\xfb\xfc\x6a\x81\x42\x8e\xee\x2d\xab\xbd\x5a\xee\x60\x0f\x60\x45\xbe\x5c\xf1\xe3\x14\x2a\x33\x09\xcb\x88\x22\x28\x86\xc8\x13\xb2\x39\x12\x1b\x4a\x26\x02\xd9\xeb\x91\x1c\x93\x19\x3f\x24\xc9\x17\xd6\xb5\x46\xf8\x51\xe7\xbd\xa3\x9c\xf8\x16\x48\xff\x21\x43\x5b\xd0\xf6\xca\x4f\x31\x78\x24\x0f\xb2\xac\x29\xec\xd5\x05\x1f\x62\x90\x89\xb8\xc6\xbf\x25\x64\x5d\x4e\x79\xa7\x54\x27\x3e\xbe\x9b\x85\x70\x55\x63\x2d\xd9\x99\xe2\x8a\x00\x77\xd3\xcc\x1e\x22\x88\xd7\xbc\x6d\xb5\x64\x39\x26\x0d\x3b\x94\x00\x6f\xd6\x17\x8a\x6c\xf7\x47\x4c\x5d\xf9\x07\xc5\x2f\x3a\xd1\x3d\x77\x81\xde\x8c\xbf\xfc\xd1\x43\x0b\x9b\x5e\x4a\x81\x98\x24\xf1\xdb\xf1\x52\x0e\x40\x0c\xd8\xfb\x3c\xb4\x83\x51\x69\xca\x96\x6e\xfb\x69\x89\x24\xd4\x3b\x0d\x90\x14\x74\x30\xaf\x52\x5a\x54\x45\x26\x42\x19\xd3\x10\xbe\x22\x4f\x1c\xcf\xa4\xb4\x28\x9e\x78\x63\x0a\xd9\x47\x57\x26\x4a\xf0\xe1\xbf\x5a\x8a\x1a\x5c\xef\x19\xcd\x87\x25\x52\x42\x5c\x21\x68\x69\x9d\xc5\x76\x2d\x1b\x83\xc6\xc7\x55\x8c\xca\x3a\xb0\x45\xce\xcb\xdd\xa2\x25\x53\x0a\x49\x99\xda\x88\x15\x88\xcc\x64\x5a\xf2\xa1\x9f\x2e\x0f\xe6\x48\x34\x32\x14\x2d\x45\x97\xe4\x4f\x71\xd7\xc6\x7a\xaf\xe9\xbf\x7b\x8e\x15\x80\x3f\xd4\x97\x2b\xd6\x3c\x97\xe2\xa8\x24\x3b\x85\xe9\xaf\x04\x2c\x3d\x17\x2d\x28\x0f\xa9\xc0\x04\x78\x5a\x02\x1e\x56\xf8\x7d\xec\xfa\xe1\x13\x73\x7d\x5e\x8b\xc9\xc7\xf5\x57\x90\x56\x0a\xba\x57\x6c\x22\xdb\xf4\x8e\x3a\x36\x1a\x38\x75\x46\x92\x9c\x42\x23\xea\x2d\x18\x7b\x22\xd4\xfd\x72\x7e\x52\x51\xac\x8e\xa3\x80\x72\x68\x62\x32\xbd\xa7\x2d\x4b\xbd\x35\x75\x98\x3c\xde\xc1\x36\x26\xaf\xcc\x87\x92\x5a\x2f\x03\xfb\x7b\xbd\xe5\x58\x4b\xdb\x0d\x37\xe6\x13\xc8\xb2\x74\x22\x00\x96\x95\xa0\x8d\x46\x54\x14\xa6\xb1\x9c\x82\x97\x89\x34\x50\x68\x31\x3d\xcd\xf6\xbb\x8f\x7a\x7a\x70\xfc\x07\x42\xa2\xf3\x2c\xde\x5a\x0b\x68\x26\xe7\x00\x08\x32\x60\x32\x20\xd3\x01\x41\x9e\x84\x7e\x64\xd6\x30\x2a\x63\xc5\x3e\x76\xb9\x10\x59\x37\x18\x4d\xd3\xea\x84\x56\xb9\x37\xc2\x2b\x6e\x9f\x0a\x4c\xc4\xde\xed\x2d\xdf\x0b\x25\x52\xf2\x0d\x37\xe6\xdf\x68\x2a\xbf\x0b\x22\x30\x7c\x56\x3f\x4c\x48\xe7\x4c\x90\xee\x60\x14\x8d\x66\x9d\x21\xf2\x19\x4b\x0e\x0e\xbb\xe2\xe2\x7e\xed\xc2\x04\x0a\xef\x73\x2b\x53\x25\x71\x0a\x9b\x19\x7f\xfe\x56\x98\x6e\x64\x56\x88\xda\xd4\xba\x9f\x78\x16\x10\x0f\xe4\xb4\xe6\x4b\x6d\xa6\xba\x0b\x14\x1a\x4c\xc6\x23\x62\xa0\xd6\x76\xb4\x17\xc4\xcc\x17\x8e\x7f\x29\x40\xbf\x40\x6d\xa0\x0d\x01\xf9\x5b\xfb\x76\xc8\x18\xed\xe1\x8b\x3d\xc3\x23\xd3\x02\xc7\x2e\xe2\x96\xfd\x3b\x0d\x02\xd5\xbd\xfb\xa0\x75\xf0\xce\xe5\x30\x16\xed\x55\x6c\x3d\x39\xe8\xbd\x20\x27\xaf\xeb\x8c\x97\x8e\xe7\x5a\x15\x6b\x6c\x54\xf4\xd2\xa7\xa0\xf2\x4a\x8e\xdb\xda\x70\x51\x2d\x5c\x35\x5c\xc2\x50\x39\x39\x6f\x39\xfe\xf5\x68\xc1\x1a\x9c\x23\xe8\x34\xc2\xa3\x44\x11\x5c\x96\x1e\x1d\x1a\xf8\x57\x72\xeb\xf6\xcd\x83\xe4\x45\xf0\x4c\x30\x6a\x4d\x49\xcf\xf7\xf5\x4d\xd7\x0f\x82\x55\x9c\xe9\xa8\x59\x12\x53\x35\xdc\x1d\x93\xfc\xad\x6b\x59\x94\x5e\xff\x53\x6b\xa8\x67\x39\xd8\xa1\x8f\xb2\x05\x25\xa0\x23\x5b\xf4\x48\xb7\xdb\xd7\x5d\xdb\x7e\xdd\xd5\xa8\xc3\xe5\xb2\x8e\x76\xa4\x68\x38\xc2\x5b\xb2\x02\x8c\x1f\xb3\xe9\x4a\xd3\xa8\x43\xe9\xe0\xc9\xa2\xd4\xca\x17\x72\xb6\x11\xa5\x90\x68\xe2\xd5\x24\x63\x3c\x04\x05\xca\xbf\xbc\xe1\xb1\x04\xd2\x83\xee\x11\x8b\x12\x59\x0f\x85\x04\xbc\x5f\xea\xcc\xfc\xc4\xfc\xaf\x02\x5b\x4c\xe2\x27\xa9\xdc\x3b\xf7\x11\x84\xaf\x17\x24\x18\x68\x2a\x8f\x76\x03\x5d\xb1\x63\xa6\xf6\xdf\x64\xc8\x45\x50\x8b\x70\x6b\xba\x40\x85\xe9\xcf\xb9\xc7\x03\x4b\x52\x24\x01\xd4\x78\x49\x83\x8e\x1b\x8d\xd7\x25\x62\x9e\x1e\x12\x62\x2a\x74\xbc\x76\x15\x71\x21\x66\x69\xcb\x00\x93\x20\x71\x77\xab\xd3\x1b\x9f\x59\xe5\x66\xa4\xfc\x8d\x67\x8f\xba\x18\x8c\x60\x29\x94\xa3\x82\x60\x32\xb5\xc9\xa2\xc0\x4a\xf6\xfa\x01\x5a\xc9\x66\x5d\x1e\x5a\x7d\x34\xe3\x5a\x05\x98\xb3\xb9\x6e\x84\xa7\x0a\xea\xcc\x3d\x59\xda\xd8\x9e\xf3\x7e\x47\x82\xc3\x06\xc3\xbf\x25\x7d\x7e\x3b\x0e\xf7\xc4\x29\x79\x7b\x8b\x99\xf2\x32\x8f\x7d\x85\x56\xb3\xf0\x46\xa4\x9b\x7b\xa1\x2a\x4a\x82\xbd\x31\x9d\xe8\xf0\x9e\x65\xa0\x56\x4f\x76\x08\x6e\x23\xdc\xb8\xde\x83\xca\xc2\x9d\x16\xfa\x9b\xb1\x6a\x6f\x64\xc5\x7b\x33\xa9\x05\xd1\x42\xf2\x28\x08\xef\xfd\x4d\x20\x7c\xea\x24\xda\x81\x08\xe9\xc5\x4b\x95\x41\xe6\x3a\x15\x48\x49\xb3\x8e\xa7\x28\x38\xba\xa0\xc9\x4d\xc8\x00\xfa\x85\xdd\xe4\x99\xdc\x1c\x76\xac\xca\x42\xd6\xf1\x84\x2b\x71\x71\xca\x7b\x4d\x4c\x53\x21\xbd\x57\x53\xd7\x04\xfb\x71\xd6\xbd\x5e\xd0\x42\x18\x25\x3d\xc1\x4a\x21\xe7\xfe\xa4\x05\xb5\xe2\x6d\xd8\xc8\x37\xbe\xfd\xd0\x6b\xb3\xe3\x4f\xec\x3c\x52\x84\xe5\x3e\xa9\xf1\x88\x71\xaa\x4e\x50\x61\xc3\x0f\x6e\xea\x22\x18\x32\x88\xf1\xa4\x7c\x12\x6b\xae\x5c\xd0\x1c\x79\xeb\x3d\xc8\x36\xac\xf1\xc1\x8d\x17\xb4\x1a\x6f\xc3\x1c\xb9\xee\x05\xf5\x60\x54\x45\x9f\x8d\xd3\x1f\xf4\xe4\x19\x25\x4a\x01\x72\xd1\x83\x79\xc6\x03\x6d\x60\x61\x97\xb9\x6c\xd4\x18\x49\x77\x39\x92\xb5\x3e\x89\x62\xcc\x73\xd3\xf4\xe6\x7a\x10\x97\xd8\xd6\x07\xb8\x37\xc1\xf1\xde\xfd\xe0\xa7\xb5\x48\xfc\x4d\x71\xae\x56\x5e\x93\xb1\x76\x4d\x8c\xf1\xd6\x49\x18\x87\xfe\x7d\xa3\xd3\x09\x59\xed\xf0\xef\x97\xf7\xb4\x66\xa4\xa6\xaf\xbb\x42\x96\xdc\xd6\x01\xc8\xe2\x61\x87\x73\x8d\xfc\x2e\xca\x94\x74\x43\x05\xe2\x2a\xa7\x9d\x12\x43\xbe\x76\x00\x3a\x20\x4b\x0f\xb2\xac\x62\x1c\xd7\xe6\x97\xbc\xae\x4b\x99\xf5\xa2\x7e\x59\x4b\x7d\x42\xfd\x92\x47\x83\xd1\x60\x80\x85\x90\x7e\xc9\xef\xdc\xca\xbb\xaf\xd6\x76\x63\x7e\xc9\xa4\xe7\x96\x5b\x63\x34\xa5\xbc\x97\x10\x79\x00\x43\xad\x16\x08\x55\x40\x7a\x3d\x74\xd5\xd7\xa1\x71\x1c\x7c\x58\x85\x40\x58\xa4\xba\xa8\x06\x0d\x97\xd2\x26\x0c\x72\x26\x0b\xa8\x5a\xa4\x5f\xf5\x9e\x31\x7b\x29\x5d\xdb\x6a\xcd\xe6\x5e\x5b\x0c\xbe\x5f\xd0\xc5\x99\x9e\x87\xc2\xa3\x13\x68\x04\x84\xac\xf4\xb0\x3f\xf0\x58\x60\xe0\x90\x65\x31\x96\xa6\x42\xcd\x14\x0c\x43\x23\x14\xad\x54\x3a\xea\x03\x47\x8b\x5b\x56\x70\xd4\x33\xcf\xa8\x98\x45\x2d\x73\x71\xa2\x35\xfd\x2a\x28\x74\x80\xe0\x4c\xda\x42\xfe\x5b\x60\xbb\xc7\x46\x02\x90\x57\x4f\x8e\x2c\xa5\x81\x1e\x8b\x12\x13\x8c\x8d\xe0\x49\x11\xbc\x0a\xf3\x64\x05\x03\x97\x32\x53\x45\x47\xb5\xb0\xe3\x4d\x9a\x6b\x7c\x4f\x36\x7f\x2e\x59\xbf\xa6\x20\x11\xce\x02\x44\xc4\x95\xe9\xca\xf5\xf8\x4e\xd1\xb0\xba\x15\x0e\x7b\xa9\x58\xe1\x0e\x4c\xaa\x6a\x79\xb0\xc2\x38\xe6\x8c\x0f\x0f\x3d\x8f\x26\x82\x1b\xe7\xe5\x36\x3b\xd8\x5d\xef\x11\xaa\x77\x83\x8d\x76\x51\x61\x2d\xcb\x4a\x18\xab\xb4\xc1\x01\x41\x45\x5a\x98\xf8\x76\x5c\x60\x92\x46\x20\x1d\xfb\x55\x20\x85\x4d\x48\x3a\x90\xed\x53\x77\x33\xcd\xa6\xf3\xf4\x3f\xc6\xe5\xe5\x30\x25\x50\x85\x81\x02\x64\x0b\x01\x6a\x45\x44\x93\x77\x5d\x4d\xdd\x7b\x2d\x8f\xd8\xd7\xb5\x6e\xb5\x25\x09\x5f\x2f\x5c\x9f\x86\xa2\x2e\xaa\x0e\x4d\xfc\x45\x52\xe2\xb9\x6a\x6d\x7b\xe9\x10\xbc\x9a\xe2\x9a\x51\xd7\xb4\xfc\x3d\xe3\x91\xaf\x6e\x89\x8e\xac\x41\xb3\x00\xc8\xaf\x9e\xbb\x50\x89\xaa\x0f\x9d\xcb\x14\xe3\x1a\x00\xa8\x02\xc2\x75\x34\xe6\xca\xe0\x48\x6f\x06\xd8\x4e\xf0\x9d\xf7\xdc\x40\xed\xd6\x1c\xd1\x80\xa9\x74\xf6\xea\xad\x12\xa4\xe3\x42\x21\xaa\x49\x51\xd8\xb1\xe3\xed\x07\x61\xc6\x72\x4a\x7b\x37\x53\x5d\xb2\x0b\x27\x13\x47\x8b\x24\x0d\x05\xf5\x8f\x08\xfa\x45\x1c\x7c\x13\x6c\xbc\x4f\xe5\xb9\x2f\x84\xa6\x50\xa0\xa3\x9a\x66\x09\xc1\xa0\xa1\x62\x53\x65\x39\x29\x8c\xc4\x87\x0a\x91\xb1\xd6\x60\xe0\x43\x5f\x0f\xeb\x43\xc3\x0e\xb6\x31\x55\x9e\xce\x05\x43\x47\xf8\xec\xf7\x75\xf8\x60\x55\xbb\xc3\xc7\x76\x45\x21\xa2\xa0\x6f\x59\x79\xef\x48\xf2\x93\x42\xa6\x4e\x94\x60\xe6\x8a\x73\xa4\x88\x91\x6b\x90\x08\x94\x45\xb0\x07\xbf\xfb\x00\xcb\x09\x8e\x6e\x29\x4e\x78\x04\xe8\xdd\xc7\x03\x74\x7c\xf7\x07\x17\xaa\xc7\x06\xaa\x18\x92\x54\x17\x05\x55\x55\xe3\x45\xf5\x5a\xf9\xa2\xf7\x88\x10\xc4\x27\xb7\x7c\x3e\x6d\xf9\x13\xe0\x90\x72\x4f\x94\x3b\x36\xf0\x6e\x61\x5b\x9a\xeb\xb5\x72\xec\x97\xcf\x50\xec\xe4\xd2\xc5\xb3\x3f\x55\x70\xab\x07\x0f\x5f\xf6\xaa\x20\xcc\xda\xf8\x90\x6a\xbe\xfa\x86\xeb\x09\xcc\xf9\x90\x94\xc0\x5c\x8c\x9e\x57\x83\x5b\x26\xc9\x89\x01\xee\xdd\x40\x17\x25\x35\xde\x76\x6e\xa0\x8d\x1a\x47\x3d\x53\x89\x51\x4d\x25\xa5\xff\x1c\x38\x2b\x11\x2c\x89\x03\x23\x20\x30\x41\x99\x03\x16\x89\xbb\x88\x07\xe1\xdb\x56\xd6\xae\x2b\x13\x02\x40\xb4\x40\x33\xf9\x34\xa2\xcd\xd2\xba\x49\xbf\x78\x0d\x48\x80\xf3\x55\x09\xc1\xfa\x1d\xf6\x7a\xa1\xb6\x21\x55\xb1\xe8\xe3\xe9\x1d\x6c\x4b\xa1\xee\x5e\x27\x6a\x14\x6a\x56\xea\x00\x61\x15\xb8\xad\x06\x89\xb1\x56\xdc\x79\x30\xb2\x9c\xe6\xc5\x9d\x6b\x90\xf4\x84\xbe\xb9\x59\xd6\x7e\xe9\x70\xba\x02\xd8\x1f\xad\x66\x2e\xae\xe3\x60\x47\x62\xce\x64\xa6\x6a\x82\x50\x64\x66\x65\x74\xa4\x6d\xc9\xcc\xb7\xbb\x50\x99\xbf\x1b\xdd\xd8\xf9\x2e\x7f\xcc\xb5\xc1\x52\x2a\xc8\xb8\xef\xba\xab\xff\x36\x98\x25\xde\x6e\x42\xb8\x7f\x35\xe5\x24\x1c\x88\x1a\x72\x62\x3a\xd0\x24\x55\xca\x2d\xe9\xe2\xbf\xf6\x22\xe9\x86\x6c\xa5\x99\x1f\x1f\x76\xac\xa5\xc5\x4f\xc2\x59\xe3\xd8\x02\x34\xb1\xbb\x96\xd1\x32\x84\xda\x38\x35\x7c\x87\x11\xf0\xc3\x80\x5a\x57\xa8\xe6\x42\xc7\x8b\x97\x09\xf1\x28\x3a\x94\x26\x21\x14\xaa\x56\x8f\xd2\xad\xea\x41\x3b\x93\x3d\x94\x7a\x8d\x6a\x47\x7f\x23\xfa\x7f\x5b\xe5\x4c\xbe\x87\x50\x12\x2a\xf9\xa5\xc8\xbd\xea\x7b\xe4\x99\xd1\x02\x49\xc0\x54\xd6\x80\x4e\xdc\x9e\xd9\x5e\xc7\xa1\xd8\x14\x0f\x84\x59\x3c\x33\x55\xde\xd9\x6d\x52\x57\x9f\x23\xeb\x86\x22\xef\xd5\x42\xf7\x65\x30\xaa\x17\x24\x27\x6a\x9a\x22\xc4\x74\x5b\x94\x02\x88\x2a\xc8\x75\xd9\xab\xea\x04\x8e\x90\x22\x8e\x42\xd7\x0b\xef\xb3\x2d\xc6\x33\x50\x7a\x63\x30\x0d\x98\xa2\x1e\x12\x9e\xc4\x58\xd0\xb6\x0d\xaf\xc5\x56\xb7\x05\xbd\x35\xb7\x1e\x06\xe1\xf8\x83\x85\x50\x1d\x94\x1f\xd7\x17\x87\x41\x64\x86\x23\x83\x37\xa2\xd0\x07\xe1\x0a\xcc\x2a\x9a\x6f\x30\x8d\xf2\x64\x29\x27\x36\x72\xd8\x8d\x88\xd0\xf8\x95\x13\x3f\x0c\xec\x6b\x26\x25\xb2\x72\xde\xc7\x72\x2b\x1e\xb5\xf1\x86\x11\x77\x8b\xce\xc3\xa3\x1d\xca\xd0\xf8\xa6\x7a\x5a\x5f\xa4\x52\x7a\x38\x2f\x22\x07\x35\xed\x29\x8a\x85\x3d\x1b\x84\xf4\x7b\x09\x1d\x61\x81\xd1\xc1\x48\x9d\xbb\x7a\x82\x65\x5c\x8e\x92\x72\x6e\x04\xd0\xf7\x8d\xbb\x80\x29\x97\x8e\x6a\xe6\x55\x2a\xc0\xae\x64\xa8\x30\xd8\xf2\xc6\x05\x3d\x98\x68\x66\xd0\x55\xc2\x5d\xc2\x67\x08\x22\x05\xea\x57\xfd\xc4\x89\xab\xab\xf5\x04\xe1\xbc\x92\xbb\x93\x4c\x81\xbc\xfb\xe1\x98\x30\x83\x88\x1b\x2f\x7b\x6f\x10\x0e\x4f\xe2\x72\x45\xe4\xb9\x49\x14\xa2\x2d\x71\x79\x8f\x38\x72\xcc\xb2\x11\xe0\x7b\x41\x4c\xe0\x1c\xa6\xbb\xfb\x00\xab\x75\x75\x0d\x95\x4e\x5f\xd2\x04\xf4\x6b\xef\x62\x5c\xd9\x42\x3b\x8f\x90\x69\xe5\x98\xa8\x4a\x1e\xd5\xa2\xd7\x7d\x75\xd1\xfe\x84\xf5\x5f\x98\x76\x9d\xb7\x26\x8b\x97\x03\xb2\x35\x93\x15\xa8\x3c\x87\xac\x64\xbf\x19\x50\x7c\x43\x32\x49\x38\x1e\xe7\x48\xde\x81\xf3\x12\x49\xbd\xc0\x12\x1c\x27\x1e\x01\xed\xd7\xe5\x39\x4a\x02\xae\x37\x3b\x49\x39\x9e\xb9\xda\xd1\x49\x4a\xa2\x4b\xbe\x4a\x77\x9d\x9d\xa4\x2a\xf4\x4c\x97\xd2\x70\xf3\x32\xd8\x75\x67\x6f\x38\xad\x58\xab\x7b\xe6\x86\xab\xb9\x5e\xed\x78\x53\x89\xc7\xd5\xa8\xa9\xf8\xaf\x57\x61\xb5\xa0\x52\xef\xda\x56\x88\x62\x29\xd6\xb5\xb2\x12\xa1\x87\x81\x34\xa1\xc2\xc0\x95\x61\xbe\xf4\x89\x04\x5b\x4f\x50\x38\x9b\x09\x77\xbe\xeb\x5d\x52\xba\x79\xba\x44\x6a\xc0\xdc\x71\x36\x8a\x9b\x5f\x77\x62\x7e\x9b\x33\x7a\x33\x13\x90\x48\x1e\x75\xe9\xb0\x72\xb8\x7d\x23\x1c\xa0\xff\x9e\x93\xaf\x02\xa5\x8a\x03\x42\xb9\xd8\x00\x19\x4b\xfa\xeb\x62\x10\xdb\x34\xb0\x6c\x27\x4c\xae\x11\x15\xc4\xe3\x1f\x38\x39\x96\x3a\xbc\x0c\xac\x9d\x70\x31\xc0\x82\x41\x94\x2a\x3e\xad\x82\xf8\xaf\x02\xf3\x54\x0a\x50\x8b\x9f\x44\xbb\x40\x27\xa2\xe1\x6a\xa0\x80\x02\x4c\xdb\xc4\x08\x2b\x0c\x2e\x71\x42\x37\x41\x6f\x42\x16\x4f\x4c\x25\xe3\x72\xb7\x3a\x6f\x99\x0d\x85\x34\x54\x8f\xe1\xeb\x85\xc8\xad\x25\xa7\x0c\x8e\xc4\x71\xb6\x47\x26\x61\x4a\x1d\x42\xa3\x00\x6a\xea\xd8\xb0\xa4\x35\xce\xa3\x93\x2b\x2a\x00\x61\xd4\x2b\x6b\x53\x0d\x11\x77\x5c\xe7\x04\x4b\xf6\x5b\x35\xbb\x78\x71\x76\x16\x8b\xd6\x32\x12\x7e\xe3\xcc\xf7\x33\x33\xdb\xb1\x8f\x36\x49\xe9\x1e\xc2\x7a\x5c\x85\x09\x05\x90\x47\x46\xec\xdb\x8c\xf0\xdc\x77\x09\xf1\x32\x71\x91\x9e\x9d\xc5\x89\xe4\x63\xcd\xcd\x31\x47\xb3\x8b\x77\xe2\x8b\xd5\x4d\x93\xf9\x27\x90\x5d\xf5\xdf\xa8\x60\x7a\x2f\x7b\x1d\x6e\x83\xf6\xaa\xc6\x11\xa6\x5b\x4e\xe6\xa0\x7c\xfd\x6f\x3b\xd6\x44\xf2\x2f\x0f\x8f\xfb\xe5\x2d\x87\x23\x92\x98\xaf\xff\x9b\xa4\xf2\xff\xdc\x4b\xb9\x5c\xf4\x4b\x6e\xf1\x53\x45\xd6\x40\xea\x4e\x7c\x2f\x33\xea\x75\xe7\xaa\x3f\xa7\x8e\x15\x7e\x40\x62\x16\xa6\xa6\x3f\x73\xc5\xc6\x1e\x37\xb5\xb2\xfd\xdd\xf9\x53\xc3\x40\xeb\xc0\x8d\x8d\x9c\x18\xba\xfa\x06\xd9\xfb\xec\x56\xae\x16\x8f\xd9\x0a\x48\x1c\x26\x55\xf2\xca\x5d\x78\xec\xf6\x48\x61\x99\xdf\x5e\x70\xa4\x78\xfa\xf5\x23\xe1\x73\x7f\xb2\x15\x7c\x9c\xe3\x99\x44\x1d\xaa\x59\x4f\x21\x81\xb4\x4c\xca\xe6\x00\x37\xa9\x12\x19\x92\x94\x35\xcf\x18\xb8\x6e\xc5\x2e\x90\x6f\x26\x87\x5f\xe4\xf2\x5b\xc0\x1f\x1a\x99\x85\xc2\x65\xbf\xf5\x30\xb5\x5f\x9b\xc9\x5c\x3e\x3f\x4c\xed\x30\x93\xbe\xfc\xb1\x46\x3a\xf1\x30\xc5\x54\xa8\x9b\x3d\x57\x66\x83\x82\x15\xc8\x37\x41\xe1\x60\x80\xab\xe6\x73\x65\xa9\xd7\x3d\x13\x5b\x6b\x68\x57\x05\x3d\xb6\xe5\x8a\x9e\xf1\xd1\x72\x45\xe5\x93\xc7\xf4\x1e\xfb\xcf\x2b\x3e\xfc\x37\x39\x24\xc4\x80\x55\x43\x34\x53\x70\x78\xa0\xb6\x80\x88\x67\x55\xb1\x10\x39\x96\xf6\x45\x6f\x7b\x16\x22\xc7\x9d\xfb\x8a\xa7\x91\x05\x28\x5e\x64\xc5\x24\x11\x93\xce\xc2\x63\xc8\x17\x8e\xff\x86\x0e\x6e\x40\x10\x66\x62\xef\x9e\xbb\x8e\xf0\x13\x9f\x36\x62\xef\x4d\x6f\xaa\x48\xcf\x1e\xd9\x5e\x47\x36\x94\xa6\x6a\x7a\x27\x01\x4b\xe1\xce\x7d\xbd\xc2\x4d\x23\xfc\x7b\xde\xfd\xa7\x74\x10\x22\xed\x7c\xff\x49\xee\xde\x56\x9b\x88\xab\xa1\x1e\x71\xeb\xb9\x32\x48\xff\xd8\x69\x55\x1e\xb5\x9c\x53\x53\x1e\xa4\x16\xa1\x20\xb5\x9e\xb1\x4d\x11\x6a\xc4\xff\x22\xcd\x81\xbe\x03\x50\xe6\x7f\x75\xf0\x02\x84\x65\xf1\x08\xb2\x4d\x17\x7d\xa0\xde\x39\x3a\xb8\xc8\x0b\x4c\x74\x16\x72\xf0\x51\xf8\xa3\x75\x2e\x19\x6c\x7f\x18\x66\x7d\xae\xb6\x2e\x8a\xd5\x8d\xee\xbb\xdd\x68\x1e\xa9\xec\xf8\x55\xdf\xfe\x46\x54\x92\xf1\x88\x2f\x8d\xea\xd0\x41\x43\x9a\x3d\xdb\x9b\x6b\x17\x45\x59\x16\x3a\x2c\x4b\x3e\xae\xfd\x83\xf9\x81\x7a\x81\xc4\xc1\x10\x7a\x95\x29\xce\x8a\x85\xdc\x62\x57\xb4\x45\x5b\x45\xfa\xd4\x86\x5f\xea\xa3\x95\x5f\xbe\x9c\x82\xa0\x1b\xaf\xae\xe3\x74\xf7\x1b\x51\x56\x05\x61\x37\xcf\xb7\xfe\xa5\x48\x1d\x53\x27\xbf\x46\x17\xf3\x5e\x3f\xeb\xf9\x16\x79\x34\x4d\x05\xba\xe4\xcc\x41\xe4\x5d\xe3\xf0\xda\x36\x1c\xc5\x0a\xb2\xdf\xc4\xbf\xc7\x9d\x67\xfd\x6b\x50\xab\x5c\xc7\xb1\xca\x75\xbb\xbf\xcc\x1e\x71\x14\xbf\x05\x1b\x6f\x10\xfa\xd2\xc4\x3c\x10\x8a\xf3\xd3\x3e\x19\x69\x2e\x52\x59\x0a\x37\x9d\x30\x8d\xc0\x7c\xc2\x42\x61\x62\x76\xf1\x29\xd0\x20\xdc\x13\x48\x7f\xc8\x89\x71\x4c\x95\x83\xe0\x82\xbb\x4e\x3b\x17\xc1\xb4\x66\x17\x45\x43\x91\x06\xe5\x88\x26\x9d\xbd\x20\x48\x37\x21\xc8\xde\xf6\xb1\x4b\xa5\x0b\x4e\x3a\xf7\x54\xd8\x2a\x9f\xfc\xa1\x41\x59\x22\x97\x4a\xd3\xbc\x37\x66\xae\xa5\x71\xbf\x1c\x19\x72\x61\x93\x1d\xed\x3d\x26\x6e\x81\xcb\xaa\x18\xeb\x81\x3f\x7f\xf5\x4f\xa1\xc6\xa6\x05\x32\x05\x4a\x3a\xa6\x29\x29\xb9\x6e\x20\x8a\x35\x26\xb4\x31\x5a\x0c\x07\xf0\x8d\xac\xb0\x31\x9b\xbc\x27\x29\x24\xd5\x4f\x01\x1b\xe2\x26\xc5\xa7\xd1\x6d\x74\xae\xf1\x5f\xb3\xc3\x63\xc9\xf4\x20\xd4\xc5\xdf\xc9\x9b\x83\x5f\x35\x3b\xae\x4b\x4e\x42\x37\xc3\x25\xc4\xe6\x90\xd5\xdf\x52\xbd\x58\x44\xd6\x00\x39\xac\xed\x32\x11\xc1\x73\xc8\x67\x0d\x6a\x04\xc1\x76\x7e\x86\x22\x06\xf1\x17\x9b\x9f\xbb\x99\x8d\x80\x5e\xe4\x77\xf6\xcd\x68\x79\x01\x86\xc1\x14\xf2\xb7\xe2\x79\xfe\x92\xfd\x1d\xf3\xc5\xcf\xeb\x94\x8e\x8e\x3c\xeb\x81\x19\x9b\x3b\xbe\x61\x3d\xe4\xe5\x8e\x9f\xfe\x29\x6b\x68\xaf\x7a\x16\xe1\xd4\x5c\x57\x86\x55\x53\x98\x53\xd1\x3f\x1a\x4e\x40\xf2\xd4\x18\xc7\xda\x60\xee\x67\xfd\x68\x64\xca\x4e\xfe\xad\xd2\x59\x9e\x09\xde\x34\xaa\x29\xed\x37\xa0\xc4\x0b\x00\x40\x06\x87\xcc\xc8\x57\x09\x59\x77\xfb\x39\x93\xf8\xcb\x47\xbd\xad\xaa\xb6\x5c\x86\xfa\x56\x11\xff\x17\x3f\xe5\x59\xaf\x02\xf3\x13\xef\xbf\x53\xf2\x47\x23\x7a\x28\x21\x99\xea\x56\xa0\x14\xc9\x0b\x4d\x74\x1d\x78\x03\x9e\x16\x4f\x9b\xf7\x6e\xc6\xd6\x4b\x7f\x68\xf4\x3f\x94\x57\xb2\x29\x45\x71\xc7\x4f\x0b\x36\x47\x90\xf8\xe3\xfa\xa6\xe0\x11\xd3\x49\x99\xb2\x72\x60\xd5\x5b\x61\x45\x84\xab\xc0\x7e\x28\x10\x4c\x75\x2b\x6e\xcc\x04\xb8\x3e\x8e\xe4\x61\x86\x4d\xb9\x39\x88\xb0\x8a\x72\xc0\xbc\xa2\xb2\x1a\x68\xce\xcf\x24\x95\xf1\x54\x22\xa7\x0c\x57\xcf\xd5\x4e\xed\xde\xee\xb4\xe4\x33\x57\x96\xef\x30\xb8\x22\x95\x52\x76\x1f\x3a\xce\x40\x9c\x33\x55\x54\x54\x63\xcf\x2e\xe3\x2a\x70\xd4\xab\x3d\x87\x4a\x80\x08\x60\x72\xd1\x0a\xd0\x93\x55\x1e\x82\x5b\xbe\x5d\xd3\x53\xb1\x0d\x1d\x70\xb5\x74\x6d\xdd\x75\xd7\x5b\x75\xd3\x92\xbe\x69\x13\xdf\x5f\x33\xc7\xaf\x10\x47\xa5\x4c\x2b\x8f\xf3\x5a\xda\xc3\xb0\x42\x09\x99\x73\x27\xfb\xe1\x31\x30\x2a\xe8\xb0\xe4\xc0\x3c\xcf\xbc\x43\x92\x9f\xd7\x55\xa2\x80\xb1\xdd\xb0\x06\xb2\x5a\xa8\xd5\xe4\x73\x22\x8d\x99\xd6\x45\xee\x65\x6f\x5d\x35\x0f\x34\xd1\x17\x3f\x56\xbe\x6a\x7a\x10\x79\xa8\x44\xf8\x70\x17\x54\x5c\xee\x66\x11\xb7\xea\x06\x2f\xdc\x5b\x10\xd9\xa7\xb3\x01\x78\x0f\x26\xee\x40\xcd\xf8\xd0\x81\xea\x35\x08\xd5\x3a\xfd\x18\xa3\x33\xa6\xc2\x08\x9e\x28\xe2\xd9\xea\x20\x1e\xb9\x90\xd8\xd6\xb6\xe3\xa9\x35\xd6\x12\x76\x64\xec\x72\xf4\xb2\x83\x8b\x9d\x1b\x4c\x56\xb5\x67\x4f\xf6\x00\xb2\xe6\x23\xbb\x0a\x1e\x31\x45\x2d\x1f\x76\x70\xc0\x16\x09\xc4\xcd\x5a\x48\xe7\x12\x05\xf2\xb8\x2f\xc9\xd4\xa0\xc1\xa4\x6f\xab\xbc\xb7\x60\x41\xe4\x4f\x4b\x51\x26\x9a\xa4\xa0\x9d\xfe\x28\x30\xa5\x8a\x38\x22\x72\x95\x56\x53\x80\x11\x90\x56\x91\x08\x33\x03\x2b\xfe\x1f\xd2\x55\xf6\x28\x40\xba\x3a\xae\xbc\x73\x81\xb2\x45\xc5\xe0\x97\xc4\xf1\x42\x83\xd3\xfd\x73\xdf\x17\x0a\x81\xfb\x3b\x64\xac\x43\x3b\xe3\xb6\x01\x22\x96\x6e\x5c\xcd\x08\xe3\xa9\xb1\x1b\x48\xa1\xec\xf4\xa6\xb1\xce\x78\x38\xd5\xcf\x6f\x70\xbb\xcf\x41\xcd\x9b\xc9\xf2\x5a\x25\x5b\x18\x0c\x52\xc7\xfc\xaf\x94\x46\xe9\x3d\xa2\xcb\xd1\x2c\x45\xa4\x11\xd0\x31\xbe\xf2\x59\xd7\xb6\x9f\x51\x07\x96\xa3\x7a\x94\x33\x93\x2e\x4c\x7b\x4a\xcd\x78\x14\x35\xbe\x36\xf1\x75\xde\xa2\xe1\x20\xf0\x7e\xc5\x6b\xde\xaf\xca\xb8\xb0\x3f\xb3\xe1\xf7\x43\xdb\xbe\x27\x4f\xd4\xe5\x72\x1b\x86\x36\xa7\xec\xdf\x98\xf4\xef\x53\x65\x69\x74\x98\x9c\x89\x29\xba\xf7\xa3\xb8\x49\x51\x86\x6f\xad\xc2\xcf\xee\xa5\x29\x9e\x36\xff\x2e\xb4\xed\x3b\x22\xd8\xd7\x03\x0b\x0f\x8e\x11\xcd\x04\xe2\x93\x6a\x4c\x44\xce\x53\xee\x29\x0e\xb4\x6d\xc3\x5e\xa8\x02\xfb\x43\x2f\x50\x49\xcd\x7d\xb9\x15\xa4\x4b\x68\xba\xe4\xfd\x73\x50\xbb\x1e\x76\xdc\xbb\x43\x72\x84\x78\x40\xb1\x91\x18\x2b\xfe\x80\x5b\x4c\x33\x95\x08\x56\x41\x3f\x4a\xcd\xa0\xd5\x09\xdb\xa7\x69\x6c\xe4\x0d\x15\x1b\x9c\xbc\x91\x4e\x26\x3e\xbd\xdc\x4c\xed\x97\x20\xa3\x28\x6b\xd3\xbd\xcc\x76\xf7\xe6\x8f\x3f\x54\xf7\x56\x9c\x01\x72\x4d\xb9\x40\xcc\xcd\x27\xdb\x9b\xdd\xd1\xf1\x42\x1c\xad\x37\x36\xd0\xc6\x1b\xa6\x60\x44\x4b\x28\xd9\x4c\xad\xd4\x1d\x68\xd5\x49\xb2\x47\x39\x79\xec\x0c\xef\x75\x1a\x5b\x5a\xda\x7c\xe5\xaf\xba\x76\xa1\x02\xc9\x19\xc0\x64\xef\x4f\x18\x36\x79\x67\xb7\xa6\xea\x41\x86\x67\x8e\xe1\xd0\xf5\x09\xc4\xac\xf1\x87\xea\x9e\x8b\xf5\x54\xae\x28\x8b\x05\x47\xcb\xad\xf1\xa0\x76\xe4\x2e\x6e\x34\x21\x57\xc5\x7e\x0e\x9e\xcd\x63\x43\xe0\xf4\xd6\xad\x45\x75\x69\xca\x30\x05\x7b\xf0\x52\xfa\xa9\xba\x60\x51\x50\x54\x2e\x19\x72\xd8\xea\x54\xdb\x21\x9e\xba\x72\xcc\xbf\x74\x79\x1f\x6d\xdb\x95\x42\xf3\x23\x8c\x53\xf1\x19\x23\x12\xa9\x55\x5c\x99\x04\xc4\xaa\x2e\xa6\x3d\x81\x6f\xdc\xf7\x48\x37\xb1\x02\xcd\xb1\x09\x9d\xbe\xb0\x0a\x5e\x32\x9c\x54\x2d\x68\x50\x79\xac\xa2\x76\xdc\x91\xa9\x4b\xb2\x11\x67\x2e\xe3\x8c\xda\x7a\x65\xf3\x5a\x67\x5d\x60\xb4\x2a\xf6\xd5\x26\x15\xbb\x1a\x1a\x34\x20\x71\x9a\x88\x99\x10\x9f\xab\xcb\x51\xd5\x8f\x6f\x3a\x5e\x28\x49\x6c\x90\xf1\x92\x49\x88\xcd\x3b\x4e\xe1\x4b\x3d\xc5\x9d\x31\x43\x92\x04\x82\xff\x8a\x38\x8a\xea\xd8\x14\x1c\x12\x3f\x29\xe3\xf6\x7e\xef\x1a\x00\x30\x96\xca\xd2\x5e\xcd\xa4\x35\xca\x86\x93\xd2\x20\x46\xb9\x43\x42\xd5\xf3\xc4\xdd\x01\x65\x92\x6b\x18\xe4\x1a\x00\x8a\xbc\x37\xb3\x42\x72\x4b\xb3\x6d\xd2\xf3\x5a\x7b\xdf\x6d\x98\xea\xbf\x6b\xa3\x70\x0d\x0e\x24\xdb\x63\x2c\x5a\xa1\xbd\x34\x37\xbd\x6f\x89\x80\x38\x8d\xe3\x05\xe7\xc9\x8f\x5c\xd7\x93\xe0\x1a\x11\x59\x00\xef\x61\x45\x71\xc7\xfa\x85\x83\x24\x78\x36\xca\x46\xe4\x63\x13\x80\x09\x6e\x5a\xd5\x6b\x84\xdd\x5d\xbf\xd7\x88\x92\x0f\x1a\x1b\x92\xd4\xb8\xf5\x2a\x8a\xff\x65\x87\x95\x0b\xa7\x8c\x79\x2b\x4b\x52\x07\xdb\x9b\x0e\x48\xe7\x23\xf6\x4f\x18\x6f\x07\x3d\xde\x54\x72\x07\xf2\x3f\xe1\xab\x25\xe8\x87\x75\xae\x0a\x19\xbc\x11\x41\x29\xf4\x4c\x45\x39\x4e\x55\x3b\x59\x49\x4c\x4d\x56\x8b\x9a\x13\x28\x7b\xd2\x7d\x89\xc2\x14\xef\x4d\x89\x8a\xf9\xbc\x55\x00\x08\xa8\x4f\xe9\x50\xd6\xcd\x70\x33\x35\x4f\x69\x9a\x10\xf6\x9f\x4f\x76\x85\x9c\xff\x4c\x54\xf0\xd3\x96\xcd\xf1\x1d\xf9\x75\x9f\x70\xdd\x29\x6f\x93\xab\x36\xc7\x90\xd5\x47\xd3\xe9\x02\xcd\xce\x8e\xfc\x7a\x88\x00\x46\xce\xa0\xfb\x49\x1d\xbb\x9a\x34\x07\xed\x7c\xe8\xda\xf6\x03\xfd\x96\x0b\x51\xe9\xb2\xef\x8d\x28\x4d\x8f\xaa\x3c\xf9\x97\x2c\x88\x16\xdc\x2d\xa3\xdd\x3d\xd2\xe9\x9e\x56\x06\x31\xb9\xe0\x96\xbc\xb9\xa0\x7a\x74\xd9\x9d\x12\xb5\x22\xee\xa0\x70\xa3\xde\x4d\xba\x43\x74\xca\x73\xad\xb3\x12\x53\x53\xc4\xe4\xb0\x77\x3c\x4f\xcf\xea\x1b\xa4\x36\x27\xb8\x3a\x4a\x6e\x38\x36\x5a\xc0\xbc\xb0\x48\x8e\x7f\x62\x8d\x17\x8e\xab\x97\x6c\x0c\x05\xc9\x17\x5e\x82\x27\x3b\x20\x3d\x39\xfc\x91\x49\x1b\xd5\x3f\x02\xe7\x58\x18\x8b\x11\xe2\x81\x1f\x05\x64\x45\xa2\x9b\x89\x0b\x22\x91\x50\x50\xd4\xda\x59\xac\x06\x57\x23\x63\xb7\x2a\x9e\x81\x36\x03\xc0\xcb\x8e\x51\xde\xc1\x9c\xe9\xac\x12\xac\x47\x41\xf0\x50\x2e\x05\x7e\x1b\x8f\x73\x51\x18\xb3\xf7\x5c\xd1\x63\x16\xee\xa8\xb8\x04\x0e\xe1\x25\x9a\xaa\x31\x42\x15\x02\xf7\x2c\x5a\x45\x4d\x30\xb5\x3e\xf3\x99\xbd\xac\xeb\x49\x17\x56\xc9\x6b\x44\xb0\xca\x36\x4c\xd8\x43\xe7\xe1\x91\xd9\x35\x5e\x4b\x57\xfa\xe3\xac\x58\x3c\x3c\xf8\x25\xb1\xbc\xd1\xe2\x77\x6a\x47\x57\xa5\x1a\x96\x03\xa0\x46\x56\xc8\x10\x12\x41\x75\x68\x65\xfb\x5e\x3b\x43\x17\x12\xd9\x38\xa5\xb4\xd2\xea\x9d\x03\x4f\x64\x42\x26\xa0\x7a\x40\x0e\x6d\xa5\x10\x47\x5d\x58\xf9\x64\x27\x79\x67\xb2\x87\x61\x0f\x1a\xa8\x44\x52\x5d\x8d\x20\x42\x51\xc3\x08\x29\xb6\xe0\x3d\x19\x0b\xb1\x9d\xee\x76\xd5\xbb\x6a\x95\xc9\x04\x02\x30\xbc\x71\x89\x29\xc8\x65\xa8\x15\xaf\x17\xbc\x62\x10\x42\x45\xa6\xd6\x26\x81\xec\xcc\xcf\x5a\xba\x37\xf9\xb5\xde\x55\x29\x1a\xd9\x23\x62\x40\xf6\x87\xfa\x0c\xb2\x51\x90\x67\xaf\x41\x23\x27\x48\xd8\x5b\xaf\x97\x2e\x39\x10\x53\xe3\xe9\xa6\x88\x12\xbb\xa3\xfb\x05\xad\xc1\x04\xe7\x24\x13\x47\x3a\x47\xaf\x80\x27\xdd\x1a\x47\x16\xd0\x44\xe4\xa8\x90\x26\xdb\x47\xe3\x36\x28\x32\xe1\x01\xa4\x3c\xbf\xf1\x00\xb5\x41\x20\x12\x99\x85\x53\xe1\x27\xff\xf8\x4b\x3d\xa0\x80\x84\xa6\x38\x66\x12\x2e\xf1\xad\x55\xbc\x2e\x19\xba\xf9\xa5\x8a\xf0\xb3\xea\xeb\x4b\xf0\xee\x5a\x4d\x90\x92\xe0\xd4\x0b\x78\xea\x46\xea\x55\x3f\xa9\x8b\x78\xe4\x17\x1b\x3b\xad\x97\xa3\x72\x6e\x34\x04\xa1\x0d\xc5\x80\xde\x2d\x05\x22\xce\xcb\x9c\x15\x93\xee\xcd\x8e\xe5\x80\xd4\x66\x0f\x3e\x65\xad\xbf\x6a\x87\x51\x4f\x4a\xa4\xa8\x79\x3f\xe1\xd7\xcb\xb4\xc7\xdd\xa4\x51\xd5\xb2\xae\x86\x0d\x76\x39\xe2\x70\x1e\x27\xc4\x1b\x15\xfe\xb7\x32\xac\x24\xc0\x33\xf0\xf1\xbc\x8d\xd6\x4e\x17\x53\xc9\x1d\x57\x3d\xc3\x0a\xab\xf5\xac\xa7\x01\x02\xe0\xb6\xb4\xfa\xf1\xb5\x31\xaf\x06\xb7\x6c\x2a\x5e\xf1\x8a\x61\x9c\xe9\x1c\x06\xef\x61\xfa\x8e\x88\x03\x85\x68\xcd\x33\x18\x9a\x5c\xbf\x11\x49\xcc\x09\x0b\xad\x24\xef\xd7\x94\xde\xc6\x6d\x47\x4f\xc7\x08\xc8\x68\x9d\xa6\x99\xcc\xf4\x52\xba\xa0\xc3\xd5\xce\x30\x79\xae\x95\xb2\x6e\x04\x02\xe5\x83\x3b\xea\xb2\x29\x1f\xdb\x14\xb1\x57\xe9\x37\x2f\xd7\x4a\x3d\x7a\x1c\x54\xac\x99\x82\xe3\x51\xa7\x38\x1f\x81\x00\xcf\x3b\x81\x16\xcd\x54\xac\x27\x47\x0d\xfc\x32\x03\x96\x46\x95\x89\xa9\xaa\xe4\x6a\x65\x75\x90\xe1\x7d\x18\xde\x1c\x0c\x31\x02\x78\x95\xc5\x2a\x52\x51\x29\x02\xa5\xfd\xad\x0d\x72\x17\x5d\xca\x4b\xc9\x08\xb2\xf1\x12\x92\xcd\x36\x52\xe1\x9b\x05\x5f\x36\x95\x31\x7d\x2d\xbc\x25\x13\xb1\xd0\x0b\x67\xf5\xd3\xa3\x22\x8e\x2f\x8a\xec\xe4\xf0\xd6\x0b\x48\xc3\x71\x05\x99\x3a\x76\xe2\xe0\x39\xa1\xc2\x2b\x75\xfd\xca\x2f\x5d\x51\x78\x89\x28\xfd\xe7\x0e\xeb\x69\xd2\x18\x06\xd4\x68\x3e\x03\x3e\xc0\xf3\x76\x5a\x33\xa6\x93\x70\xe9\x11\xab\xaa\x64\x04\xbc\x6a\x47\xf9\xb3\xbe\x9d\x8a\xe4\x7e\x65\xfc\xd9\x85\xd3\x19\xe6\x44\x27\x57\xe8\xdb\x14\x72\xf6\xc8\xfa\xb2\x0f\x43\x9d\x50\x2a\x15\x7e\x5f\x25\x41\x24\xb3\xc8\x16\xd7\xaf\xba\xaa\x72\x34\x7c\x1b\x5d\xf8\x55\xce\xf5\x17\x81\x2c\xf3\x78\x82\xbd\x91\x5c\xe0\x0d\x4f\x0e\x61\xfc\xea\x98\xc2\x92\xf8\xef\xe1\x21\x04\xb8\xcd\xa7\xe8\x57\xbd\xf4\x0e\xb1\xe6\x8e\xdc\x86\xcd\xaa\xb3\xdf\x5f\x7c\xc2\xb3\x27\xeb\x82\x07\x78\x6f\x2d\xa1\x66\x9e\xad\x13\x85\x81\xea\x50\x7b\xf3\x91\x04\x4b\xe0\xd9\x7c\x9d\xcb\xba\xee\xfd\x00\xd6\x38\x82\xe7\x8d\xad\x52\x7c\x35\xea\xc3\x4c\xd7\xfe\xd9\x84\xbe\x32\x51\x33\xe5\x6f\x13\x8e\xaa\x9f\x45\x0c\xb1\x8c\x81\x6c\xfe\xff\x0b\x22\xf6\x66\xfc\xaf\x47\x00\x53\x44\x2b\xf1\xb3\xea\x92\x97\x4e\x08\x5f\xd5\x28\x16\x5d\x0c\x5c\x9f\xa4\x41\x64\xc9\x7f\x26\xbe\xf3\xdf\x19\xc5\x09\x07\x19\x8d\x4d\x25\xa2\x69\x6c\xd1\x7c\x12\x63\xe7\x22\x81\x7b\x6e\xa4\x65\xf3\x1f\x8a\x4b\x85\xbe\x41\x63\x9f\x95\xfc\x14\x6f\xec\xc2\xd3\xe4\xd8\xc5\x63\x3a\xfc\xfb\x63\x47\xb7\xc0\xa5\x42\x8e\x2b\x99\x78\xf4\x4e\xb0\x62\x3d\xb6\xae\x8c\x70\x25\x66\xe3\x44\x88\x17\xda\xa7\x5c\x87\xa6\x67\xea\xc2\xaf\x64\xa9\xd8\x12\xe0\xb7\x09\xf5\xa5\xfb\x1a\xaf\xa6\x6f\xcb\xd0\x8d\xa8\x8f\x2c\x9d\xda\xb4\xe4\xf4\x53\x15\x05\x84\xd7\x59\xae\x69\xfa\x3a\xa2\xef\x93\xad\x43\xc6\xbd\x4b\x53\x42\xc6\x5b\x27\x64\x7c\x6f\x29\x42\x90\x68\xbf\xf1\xbb\x02\xcd\x46\xd4\xf3\x87\xcb\x9d\x56\x82\x66\x2d\xde\x4e\x8b\xe5\x43\xae\x24\x77\x18\xba\x5f\xfe\x5d\x62\x65\x5f\xe8\x58\x59\xf0\x7e\xc5\x87\x6f\x8d\xcb\x2f\x3e\x68\xd8\xba\x9a\xe1\xd8\x24\x34\x40\x6c\xc5\x14\xf8\xce\x9b\xc1\x3a\xcb\xae\x24\x9d\xf8\x14\x86\xa6\xbd\xad\xf2\x7b\xbc\x80\x80\xf8\x5f\x48\x50\x9e\x65\xd1\x6a\xee\x87\xbe\x93\xfb\xa3\x77\xd2\xa2\xed\xe5\xbc\xf2\xe6\x8d\x65\xbd\x01\x37\x32\x00\xdc\xd3\x2f\xc8\xf7\x47\xf2\x7e\xc5\xf6\xb9\xef\x47\x27\x6a\xdc\xd1\x0b\xd9\xf7\x4b\x79\x11\xf5\xf5\xc0\x8e\x65\x12\x4f\xa1\x63\xd4\xfb\x5e\x50\x8c\xb4\xe2\x03\x24\x6b\x43\x21\xad\xf8\x54\x2a\x69\xa9\xe3\x83\xed\x06\x13\xbe\xd0\x2a\x42\x0e\xf0\x7a\x16\x3b\x18\xdb\x02\x5d\x56\x0a\xb8\xd9\x18\x0e\x55\x78\x61\xa4\x7d\x2f\x92\xe8\x90\xa7\x4a\x65\xae\x82\x0e\x3b\x7b\x1d\x51\x6b\x7c\x28\x52\xaa\xf3\xa0\x4d\x48\x3f\x45\x72\x12\x91\xf7\xbc\x29\x6d\x03\x2e\x62\x3f\xbc\x67\xe3\x17\xa3\xca\xb0\x38\x6f\xda\x76\xf9\xec\xf3\xd0\x2e\xa7\x41\x2e\x29\xea\xf8\x65\x84\xcc\x64\xbd\x7b\x1f\x17\x10\x7b\x08\xbf\x88\xc0\xf9\x7e\xfc\xf8\x73\xc4\xcd\x5f\xc6\x8f\xbf\x75\x51\x3a\xb9\x89\x34\xf4\xf7\x10\x7f\x58\xc7\x53\xff\x32\xf5\xf1\x3b\x88\xff\xfb\x23\x5e\x8d\x83\xe1\x5d\xfc\x5f\xdb\xca\x3c\x96\x72\x21\x22\xa5\x79\x36\x3e\x90\x4c\x00\xe7\x6d\x7b\x7a\xd0\x03\x5b\x7b\x3c\x1b\x67\x8a\xd1\x47\x3f\xfe\xd5\x8f\x4b\xf8\x69\xfc\xfc\x0a\xef\x2d\x81\x47\xb1\x71\xfd\x9b\x06\xbf\xdd\xf5\x40\xf9\xb8\xc8\xf8\x44\x34\x3c\x5d\x4d\x3b\xe9\x26\xd3\xd9\x97\xf1\xc1\xb6\xa5\xb1\xa0\x17\x3e\x1d\xff\xfc\x18\x77\x32\x5d\xb5\x97\x23\x08\x63\x3f\xbd\x7f\x9e\x8f\xcb\x7a\x3d\x7e\xbc\xeb\x26\xe8\x2f\xdb\xa7\x5f\x0c\xcd\xb8\x90\xe7\x07\x11\x71\x4f\xe3\xf8\xb1\xe3\x7b\x14\x2b\xbf\x1b\x21\x70\x71\x27\x50\xfe\xf7\x74\x02\x61\x5c\x64\x68\xdb\x9f\xcf\xc7\xb5\x44\xd8\x7f\xe8\x9e\x8c\x6f\xdf\xc7\x15\x7f\xd3\x4d\x6d\xfe\x27\x74\x7d\x96\xe7\x5b\x8c\x20\x1b\x26\xbe\xf6\x4e\x66\x30\x9c\xb5\xed\x9b\x78\x30\x71\x69\x07\x5d\x9c\x78\xbd\xed\xc4\x77\xf1\xc7\x7b\x9a\xeb\x7c\x9c\xab\x9d\xb4\x96\x71\xb8\x27\x5b\x8e\x16\x5c\xf0\xc5\x45\x47\xf0\x4d\x3b\xfc\x2a\x21\xd4\x61\xc0\xac\x4d\xac\x71\x12\xda\x37\x23\xbe\xbf\xed\x9e\x35\x11\xb8\xcb\xb6\xc9\xff\xda\xf6\xb9\xb8\x2f\x7f\x85\xcf\xbf\xea\xda\xf6\x2b\xa8\xc6\x7b\x5d\x1b\xbf\xfa\x2c\x7e\xf5\xc5\x08\x8c\x09\x39\x2f\xbb\x28\x3c\xbe\xeb\x3e\xff\x73\x48\x27\x14\x65\xb0\x9b\x89\xe0\xbc\x02\x02\xff\x00\x63\x77\x04\xdf\xab\xf1\xdb\xdf\xbb\x9e\xbe\x5e\xc5\x5d\x7e\x11\x5e\x95\x9b\x9f\xbd\x5d\xe3\x48\x2b\x71\xd3\xbf\x10\xe6\xf3\x48\x51\xf6\x3b\xa0\xae\xcc\xfc\xf9\x55\x63\x7c\x2c\x2a\xf3\x44\x3e\x8a\x40\xb1\xa1\x6d\x6f\x2b\xa3\x0c\xe3\x20\xf8\xe9\x4c\x27\x49\xc6\x23\x7b\x39\xa2\xcb\x9f\xdd\xfe\xc9\xb8\xf6\x83\x78\x1a\x7f\x24\x2e\xf5\xfe\x24\xdd\x90\x32\xe0\x85\x33\xc0\xe5\x74\x01\x9a\x09\x55\xce\x73\x72\xee\xf6\xd3\x44\x7c\xfa\x6a\x01\x4a\xfd\x6b\x7c\xed\xbb\xf1\xf3\xbf\x12\xa9\x3c\x1b\xcf\x29\x8c\xa3\xbe\x8f\x83\x85\x11\xc5\x81\x2a\x98\xfb\x5b\xcc\x7d\x1e\xad\x52\xf1\x26\xbc\x9b\xa4\x91\xee\x76\x48\x3b\xf2\x68\xcd\x67\x3d\xbf\x7b\x17\xd7\xf9\x57\xd8\x8b\x47\xf5\x10\x91\xf3\x5d\x7c\xea\xc5\xdb\xc5\xe7\xff\x4c\x24\x73\x12\xae\xef\x86\xd7\xe3\xa8\x6d\x0b\x1b\xf6\x3f\xc7\x47\xfa\x69\xad\xcb\x71\x11\xcf\x78\x82\x57\xe3\xe7\xaf\xba\x68\x67\x3f\x8c\x37\xee\x32\x4c\x7b\x39\x6b\x17\xe3\x0d\x58\xe6\xbd\x8d\xc4\xfe\xba\x17\xdc\xac\xd0\xee\x77\x02\xbd\x7e\x1e\x77\x33\x91\xb9\x0f\xdd\x4b\x49\x41\x22\xc2\x1c\xc7\xff\x7c\x36\x6d\x7a\x2f\x92\xeb\xdf\xfb\xe9\xe6\xad\xe3\x3a\x7f\xc9\x9c\xe4\xba\x1b\x59\xc9\x6f\xdd\x08\x99\x5f\xbb\xda\x9d\xfb\xb5\xcf\x06\x99\x7c\xe7\xae\x42\x1b\xbf\xfa\x35\x98\x3b\xf7\x9d\x7b\xe7\xee\xfe\x46\x77\xee\xfd\xff\xee\xdc\xff\xee\xdc\xdf\xe3\xce\xfd\xf1\xa2\x76\xe7\xde\xf7\x6c\x02\xbe\xef\xda\xf8\xd5\x07\xcb\xe7\xbe\x77\xef\xdc\x51\xff\xf7\xb9\x73\x5f\x77\xff\xbb\x73\xff\xbb\x73\xff\xd5\x3b\xd7\x84\x70\xfd\xd3\xb3\xcf\xbf\xe8\x8a\xb9\x86\xf4\xd1\x6c\x59\xba\x49\x2a\x2f\xe9\xc7\xd9\x82\x7b\xdc\xb1\x4f\xed\x85\x2e\xf1\x69\x43\x14\x2e\xa5\x12\x0d\xe3\x01\xba\x70\x41\x7b\xc7\xd0\xe4\xc7\x53\x49\xa1\xf7\xd2\x73\xd4\x84\xd0\x4f\x01\x04\xbf\xf5\x5c\xbb\x3d\xb4\xa6\xcd\x47\x83\x82\xe4\x93\x8d\x92\x2b\x2a\x8b\xa9\x90\x90\x80\x3f\xd1\xd2\x38\x41\x30\xc4\x94\x84\x0f\x1d\x0f\xf0\xb3\xb6\x88\x29\xfb\xc5\xe5\x82\xed\x1e\xda\x82\xa0\x17\x7a\xd5\xb1\x9d\x0b\xcf\x0c\xb1\xc2\x34\xec\x76\x8e\x01\x41\x9a\xf5\x02\x22\xc1\x31\x24\x79\x24\xe1\x2e\x42\x2b\x4a\x58\x94\xe8\xb9\x12\x18\x3c\x33\x96\x3d\xba\x6b\x69\xa1\x20\x93\x55\x41\x7c\x75\x30\x0a\x95\xee\x91\xac\xf6\xfd\xa4\x02\x1f\xc9\x82\xfd\x08\xd2\xb3\x87\x9e\x3b\xca\xa7\x34\x12\xed\x00\x1f\x8f\xfa\x5a\x5a\x1b\x61\xcb\xac\x5a\x6f\xb5\xe5\xcc\xe0\x49\x7c\x50\x9a\xc6\x53\xb1\x98\xf8\x19\xa1\xb1\xed\x08\x41\xf1\x06\xc5\x01\x66\x28\xbf\x16\xef\x69\xbb\x1d\xbd\x16\x2d\x84\x89\x81\x50\x94\x16\x9c\x77\xa8\xde\x18\x7f\x90\x20\x51\xe0\x5e\xc1\x1e\x94\xda\xfa\xa7\x4d\x2c\xa7\x42\x93\xbf\x75\xf9\x0e\xb7\xe2\xb3\x18\x5e\x9d\xc0\xad\x8c\xf3\x49\x03\x9d\xb5\xaa\x25\x0f\xfc\x2b\x32\x0b\x47\x94\xd9\x69\xa6\xa0\xb8\xa5\xea\xfb\x3f\x02\xb1\xb7\x50\xd7\x56\x2a\x35\xa2\x3a\x3b\xdb\x61\x2f\xe8\xd2\xc8\xa1\xd5\xed\xdc\xf6\x02\xdd\xbb\x66\x4a\xe6\x8d\xa3\x7e\xd9\xb5\xed\x97\x9d\x79\x27\xdd\xc5\xa1\x24\xbc\x29\xd0\xdc\x0d\xbc\x91\x77\x1d\xd9\xe9\xe4\x1e\xc4\xe7\x64\x5c\x97\xe7\x28\x3e\x27\x13\x62\xbe\x33\xd7\x61\xba\x34\x6f\xfb\x18\x2a\x97\xa0\x71\x77\x32\x9e\xd8\x1f\x41\xad\xb9\x20\x76\x2c\x2b\xff\x59\xfc\x7b\x1d\xff\xbe\xe6\x12\x15\x1f\x62\x90\xe2\x63\xae\x4b\x14\x8c\x24\xad\x4c\x01\x7c\x84\xb8\xea\x26\x1c\xf6\xe2\x4b\xdc\x07\x90\x48\x55\xdd\xe0\x21\x4d\x2c\xeb\xcd\x15\x93\xe3\xd4\xab\x6b\x42\xbd\x77\x8b\x0c\x12\x58\x9e\xb1\x02\x19\x59\x8e\xdd\x78\x7c\xab\x4c\x2c\xbb\x3a\xc6\x5f\xe4\xde\x10\x71\x16\x2f\x40\x6b\x02\x82\xae\xa6\x25\x5c\xf6\x82\x91\xe9\x62\xb2\xbf\xf6\x13\xd4\x03\x92\x85\x01\x76\xb1\xdd\x06\x69\x9c\x23\x0a\xbc\xee\x23\x6a\x48\xa0\xab\xb8\xcf\x3d\xe3\xc8\x7b\xde\xda\x96\x84\x80\xcc\x99\xcd\xe0\x97\xad\x1d\xb0\x7a\xcf\x2b\x41\xac\x50\xa0\x1e\x18\xc6\xc0\x0c\x43\x91\xba\x5f\xca\xc6\x4e\xfa\xc6\x4b\x4d\x04\xbb\x66\x0e\x4d\x11\x12\x88\x5c\xc9\x92\xd0\x81\x44\x03\x30\x75\x8e\x5d\xc5\x33\x4a\x54\xc7\x1a\x57\xf2\x19\x95\x3d\xf5\x1a\x3f\x34\xd1\xc1\x46\x3e\x0a\xac\x58\x22\xa0\x47\x2e\x75\xcd\x0b\xed\x30\x5a\x2d\x68\xea\xcf\xc9\xd5\x3b\xf8\xf1\xc3\x39\x23\x1a\x5b\x8f\xff\x85\xd7\x52\xb0\x56\x3a\x23\x78\x0d\xb2\xdc\xa8\x84\xc0\xb8\x6e\xdd\x85\x55\x60\xd3\x80\x8c\xbd\x38\xe1\x9c\x84\xb4\xd2\xc9\xcb\x8e\xe8\x98\x84\x56\x1c\x10\x1c\xc3\xb5\x10\x75\xb1\x16\x3d\x0c\x97\x28\x10\xde\x0b\xc6\x0a\x47\x26\x9a\x4e\x5c\x1d\xcd\x13\x31\x9f\x16\x5b\x47\x94\x7e\x99\x76\xa7\xa8\xb5\x10\x1e\x4c\xbd\x80\xec\x73\xf9\x00\x86\xde\x8b\xc7\xa9\x26\xc1\xd5\x84\x79\x57\xfd\x8e\x12\x94\xe3\x09\x6c\xb8\x12\xbe\x16\x6d\x1b\x6e\x33\x42\x7b\xa5\x36\x52\xef\xfa\x47\x33\x94\x5f\x89\xb6\x21\x0c\x19\x98\xee\x33\x19\xd0\x16\x5d\xbc\x0b\x94\x31\x89\xee\xb2\x76\xd3\x0c\xbf\x02\xe8\x10\x15\x2b\x7e\x96\x19\x6d\xba\x2f\xbd\x01\x35\xfc\x70\x80\x00\x05\xe7\x20\xa2\x78\xb2\xf0\x9f\xaa\x48\x8f\x21\x23\x04\x8d\x29\xa5\x89\x38\x8c\x24\xc0\xb4\x89\x11\xab\x17\xe2\x3e\x9e\xa2\x30\x29\x7c\x32\x04\x4d\xaa\xfd\x42\x87\x28\x59\x72\x0d\x76\x9a\x90\xde\x2f\xc4\x5c\xe4\x35\x2d\xf9\x24\x9f\x68\xae\x43\x39\x17\xb9\x7f\x5f\x94\x46\x26\x9f\x66\xae\xe3\x05\xc7\x65\x7a\x48\x6f\xc6\xad\x8c\x26\x39\xe6\x88\x7b\x4f\x18\xf5\xb6\x16\x9a\xe2\xcf\xd2\x0e\xa7\x88\xdc\x8d\x7c\x4a\x0a\xd7\x94\x9d\x12\x90\xe1\xe6\xb1\x53\x81\x73\xd7\x14\xa1\x79\xd5\x5b\xb4\x54\x69\xcd\xb7\x41\x44\x71\xc8\x75\x84\xd6\x8d\x49\x50\x4b\x80\xcd\x6d\xfc\xf9\x7d\xaf\x2e\x49\x5c\x9f\xe1\x2c\x76\xc4\xcb\x65\x05\x08\xa7\x4e\x08\x88\x59\x1c\x81\x42\xa7\xfa\xcb\x91\x4d\xc0\x14\x38\x46\x21\x31\x42\x03\xb5\x6b\x1a\x50\x9d\x5b\x0e\x38\x8e\xf0\x44\xaa\x6e\x3e\x05\xc0\xb5\x27\xdb\x4f\x70\x54\xbb\x90\xb9\x95\xa7\xdb\xc9\xc9\x83\xd1\x72\x2f\x17\x42\x49\x1d\x95\xb0\x5e\xae\x4d\xbe\x36\x8e\x1d\xa4\xc4\x9e\x56\x51\x68\xd3\x69\x7a\xb3\xa8\x0d\x53\x42\x6c\xeb\x0c\x38\x3e\xf2\x24\x8f\xa5\xb7\x25\x5b\x07\xe1\x30\xc5\x42\x56\xb2\xb0\x2a\x2c\x07\x65\xd6\xa4\xec\x49\xa5\x50\xcc\x2a\x94\xc2\x77\x42\x9c\x97\x60\x45\x5c\x79\xd1\xc4\x61\x8c\x16\x32\x94\xc4\x10\x68\x17\x71\x45\xad\xa9\x14\xbb\x3f\x9e\x61\x68\x45\x8c\x6e\x54\x34\xdb\x36\x9c\xb8\x48\x04\x64\x05\x24\x70\x43\xc8\x90\xa7\xa9\x73\x33\x35\xce\x35\xa4\xe4\x94\x2c\x84\x74\x25\xab\xe4\xdc\xb3\x1a\xce\xd2\xd6\x61\xc3\xde\x42\x84\x9b\xc0\xfb\xcb\x9e\x62\x1d\x75\x1e\xc0\x5e\x7a\x6f\x0b\x3d\x1f\xc2\x14\xaf\x26\x9a\x2e\xc6\x67\xa4\x7e\x87\x6d\x68\x51\x2c\x16\xfc\xf7\x6f\xb7\xca\x05\x78\x43\xf4\x66\xd2\x8f\x22\x10\xc1\x2c\x25\x39\x53\xe2\xdb\xbd\xcc\xf8\x80\xf4\x83\xa5\x4c\x1e\x7b\xf1\xba\x3a\xc2\xbd\x14\xda\x02\xea\xe4\x12\xce\x06\xad\x83\xcb\xff\x9f\x0a\x62\x89\x85\x52\x26\xa6\xda\xe9\x5a\xac\xf5\x37\x4d\xb8\x13\x8e\x91\x4a\x67\x78\xc3\x80\xf4\x8f\x48\x32\xc0\xb3\xa4\x50\x34\x1f\x19\xa6\x4e\xf6\xae\x17\xa6\xb2\x72\x05\x56\x31\x2e\x4f\xe2\xa5\x53\x4b\x94\x03\x1a\xf5\x73\x6f\x97\xde\xfe\xa0\xb2\x59\x9e\x74\xbc\x24\x94\x17\x0f\xaa\x83\xb8\x84\x59\xe0\x6a\xd1\x33\x37\x92\xa5\x79\x10\xc1\x79\x38\x45\x88\xa6\xfc\xc4\x55\x74\x9c\xbc\xe7\x9c\xfb\x06\x1d\xc9\x3e\x1b\xe4\xf3\x7b\x83\x7c\xde\x29\x28\x56\x10\x7e\x3d\x78\xea\xfc\x16\x7f\x22\x84\x98\xa1\x72\xc0\x39\xcc\x70\x8e\x82\xd0\x4c\xc5\x28\x22\xf0\x17\x79\xf5\x96\x59\x3d\x48\x79\xba\xd8\x7a\x1a\x51\x85\x0b\x67\x0d\x4a\xa0\x74\xa2\xb5\x24\x99\x8a\x6c\xfd\xc4\x63\x67\x79\xfb\x97\xcf\x6d\x84\x9f\xcc\x83\x04\xa6\x65\x33\xc6\x1b\xb1\xbd\x72\xa9\x7a\xbb\x2f\x35\xe4\x3a\xb0\xcd\x42\x0b\x80\x9a\x76\x1c\xfa\x56\x10\x27\xbf\x2c\x81\xc7\x59\x11\xa7\xf5\x6a\x69\xdc\x58\xa5\xa8\x44\x0e\x19\x38\x14\xfb\x79\x90\x50\xc6\xcf\xa4\x83\xb2\xda\x4e\x37\x13\xa6\x16\x92\xe9\xf5\x3a\x03\xd1\x77\x56\xb9\x48\x6b\xa1\x49\x3c\x42\x60\x81\x71\xd0\xbb\x43\x03\x93\xbd\xa1\xbd\xf4\xe9\x8d\x33\xad\x87\xfa\x80\x74\x52\xde\xf8\xdb\x4d\x92\xbd\x79\xf1\x4b\x8a\xa7\x8d\xe6\x66\xba\xe4\x6d\x1b\xda\xe8\x7b\x7d\x21\xa8\xc8\x32\xf7\x23\x79\x41\x8b\x10\xed\xcd\xa7\x0b\x22\x13\xd2\x6d\x22\xe6\x83\xce\x58\xb7\xe1\xbd\x07\xfa\x01\x65\xaf\xb9\xec\x0f\x3a\x43\x83\xa8\x26\x85\x43\x88\x92\xaa\x03\x40\x01\xd7\x04\x0f\x15\x2a\xd7\xf8\x51\x24\x3c\xfd\x9e\xa4\xe4\xc9\x08\x83\xef\x45\xca\x0a\x5d\x30\x4a\xda\xcb\x39\x41\xc9\x7e\x24\x92\x59\x32\x4b\x7b\x90\x2d\x44\xe3\x8b\xd2\x7e\xf1\x42\x9f\x45\xe1\x18\xbd\xd2\xa0\xa0\x49\x97\x47\xd3\x95\x39\x8d\x61\x06\x42\x30\x07\x90\xa4\x10\x11\x60\x86\x03\x00\x95\x24\xf1\xa6\x1c\xc5\xaa\x93\x4e\x1d\xd4\xf3\xfe\xf0\xa4\x6d\x3f\x3c\x19\x9f\x08\x0f\x67\x42\x60\x57\x31\xb1\x4b\xe1\xc9\x56\x3c\x4d\x51\x12\xb2\xd0\xe2\x69\x0c\x48\x43\xab\x5d\x64\x60\x7b\x63\x79\x23\x58\xa3\xd2\x35\xfb\xad\x0e\x22\xc7\xfb\xb1\x66\x54\xba\x96\x70\xb3\x5d\xe0\xf6\x4d\x1a\x36\xad\x4a\x16\xe0\xa3\x4b\x2e\xa4\x20\xa2\x4a\x4b\x1d\x48\xef\x8d\x7b\x61\xf3\x89\x49\xcf\x6c\xa6\x1a\x67\xff\xee\xa1\x75\x80\x42\xb2\x69\x7a\xf6\xda\x7c\x02\xe9\x12\xfe\xac\x5d\x75\x2c\xa9\x97\xa9\xdb\xe9\x78\x2c\xd8\xee\xcd\x3b\x45\xf2\xac\xbe\x73\x6b\xde\x29\x87\x5d\x7d\xe7\xae\x93\x17\x44\x99\x95\xa2\x34\xd7\x45\xe3\xe6\xef\xbd\xf3\xea\xd5\xa4\xe1\x9f\xc7\x08\x92\x64\x39\xf8\x2a\x7c\xfe\x4d\xd7\xb6\x5f\x78\xcf\x1f\x4e\xcf\xdf\x4c\x59\xd3\x13\x78\xfe\x9a\x3c\xc6\xdf\x78\x86\xfc\x29\x98\xe7\xf4\xf7\x29\xaa\x3c\x3e\x7e\x13\x45\xb4\xf7\x9c\x7a\x19\xd5\x21\xe9\xee\xdd\x60\x70\x2e\x8e\xa7\xfb\xc8\x5e\x4c\x42\x4c\xd9\xa1\x51\x42\x11\xf6\xa0\x4c\xd5\xca\xd2\xa2\x85\xe6\x78\x75\x27\x8c\xfb\xbd\x87\x73\x91\x34\x41\x92\x56\x62\x15\x08\x16\x77\x05\xbd\x75\xac\xd9\xf2\x3a\x93\xaa\x43\x4d\xfe\x07\xdf\x95\x71\x1f\x58\x06\xab\x8a\x22\xb3\x86\x71\x16\x59\x02\x22\x07\x1c\x2d\x55\x6c\x4a\xcb\x4e\x9f\x3b\xd5\x90\x1a\x51\x5c\xb5\x6c\xef\x8f\xc5\xe7\xe8\x70\x6c\x6f\xb2\x2a\xb5\x4b\x71\x12\xda\xa1\xa1\xdf\x3b\x92\xb4\x0f\x29\x91\x04\x22\x4d\x43\x92\x52\x04\x2b\xf1\x0e\xf3\xed\x99\x1a\x8f\xd5\xf9\x48\x07\x55\xe4\xe8\x46\xd4\xd2\x9f\x5d\xe7\x51\x9a\x8f\x6c\x78\xce\x12\x9b\xc9\x5d\xe6\x25\x97\x7a\x74\x14\x4b\xa4\x9d\x92\x79\x1c\x3f\xe4\x42\x37\x0f\xfd\x86\x49\xf0\xf2\xe3\x27\xc9\x09\xa7\xb0\xd8\x07\x63\x21\x3a\xec\x84\xe6\x0e\x6b\x09\x0d\xeb\x30\x3c\x29\x13\xd2\x7b\x4e\xe2\x9d\x3c\x06\x3a\x5d\xac\x89\x84\x01\xba\x61\x03\x9a\x7d\x53\x12\x1c\x89\x0e\xce\x8a\xa7\x4b\x2f\xe8\x8b\x57\x28\xcc\x53\xe2\xbc\xd4\x37\x81\x7f\x00\x6a\xfc\x04\x01\x91\x36\xa0\xf9\x50\x20\xd3\x23\x73\x6b\x75\x40\x1b\x8a\x11\xc7\xb5\xae\x4f\xb8\xc1\x15\x8e\x0e\x64\xdc\x73\xf8\xe2\x57\x52\x57\xbd\xd7\x14\x71\x3a\x5a\x08\x80\xc1\xa9\x02\xd3\xa5\xbe\x30\xcd\xe4\x80\x20\xbd\x9e\x04\x68\xa2\x83\xf4\x49\x09\xbb\xc7\x7e\x71\x21\x45\x86\xd7\x7e\x09\xc5\xd2\x35\x30\x79\x4d\x23\xd2\x38\x11\x0e\xc2\x0f\x05\x0e\x86\x53\x02\x10\x3d\x9d\xaf\x2c\xfb\xb6\x03\x57\x64\x20\x6b\x69\xeb\x64\x5a\x89\x71\x42\x78\xe5\xbe\xe9\xc6\xd3\x55\xa1\xc6\xcb\xb5\xd7\x9a\xc9\x85\x43\x32\x1e\xc6\x1a\x67\xff\xab\x87\x48\x72\xdb\x0b\xd5\x40\x3a\xe4\x74\x33\xfd\x78\x37\x64\x54\xdf\x37\x7d\xdb\x7e\x13\x65\x16\x55\x21\xf0\xd7\xa1\x6d\x7f\x1d\x84\xf8\xf3\xf9\xdb\xbe\x6d\xdf\xf6\xe9\x6e\x91\xd5\x82\x68\x85\xf7\x5d\xb9\xc5\x7f\xf4\x82\x4f\x3a\xcc\x55\x7c\x12\x2a\xa8\x27\x5b\x03\x05\x8a\x22\xd3\x8a\xb1\xe9\x0f\xd9\xb0\xe3\x27\xb8\x23\x2c\x83\xbf\x9d\x64\x89\xc3\x2e\x89\x89\xde\x0b\xe3\xa7\xef\xb2\xdc\xe9\xad\xc9\x52\xe4\xdb\x05\xfb\x36\x60\x91\x01\x6a\x40\x35\x56\xfe\xf3\xc3\xc0\x28\x8f\x33\x57\x35\x4d\x8f\xd9\x68\x31\x35\x76\x31\x32\x92\x8e\x87\x8c\x7c\x69\x4a\xc7\x1d\x5a\x57\x49\xcd\x96\xbb\x4a\x70\xd1\x5c\x95\xa5\x43\x13\x6b\xb4\x34\xf1\x48\x57\x66\x58\xa2\x9a\x10\x27\xd4\xc5\xb8\x0c\xee\x7b\x88\x21\xab\xbc\xb7\xf6\xdf\xa3\x8a\x5c\xf6\xbd\x1b\xff\xbd\xc7\xae\x93\xe4\x58\xfb\xde\xd5\x47\xce\x67\xd5\xc7\x15\xf4\xad\x57\x52\x59\xc7\xd6\x3d\x9a\x39\xa0\x8b\x85\x33\xae\x4b\xfd\x02\x74\x9e\xcc\x26\x45\x1c\xa9\x71\xdf\x17\x0c\xdb\x0f\x9e\xfe\xc8\xb2\x0f\xfe\xeb\x98\x31\x3a\xd6\xaa\x2b\x45\xc5\xaf\x8d\xfb\x9a\x50\x98\x98\xb3\xe2\x63\x97\x46\xec\x82\x73\xe3\xed\x54\x75\xb0\xb2\xc3\x87\xad\x76\x48\x36\x5d\x7d\x57\x3f\xd9\x0e\x89\xf7\x69\x85\x49\x6e\x6e\xfa\x17\xc2\x55\xb7\x60\x1b\x95\x93\xa7\xa0\x07\xb2\x19\x0b\x24\x9f\x78\x23\xa8\x62\x4a\x49\xbf\x9d\xde\xa3\xe2\xba\xe5\x19\x69\x67\x94\x9d\x40\x14\xf0\x0f\xe5\x8d\x22\x13\x9b\xb8\x23\xde\x33\x4a\xd4\xc9\x37\x01\xc2\x2d\xf1\x99\x0a\x72\x1e\x7e\xe4\x7b\x5a\xe2\x15\x76\x51\x8c\x55\xfd\x35\x40\x46\xd6\xfc\x90\x6a\x39\x7c\x1d\x2d\x0e\xff\x4c\xe6\x83\x51\xa6\xf8\xa7\xe0\x82\x93\x69\x54\x7c\x8b\xf8\x97\xb6\x0d\xc7\xc3\x36\xc7\x7c\x5a\x51\x98\xc5\x9f\xb3\x52\x24\x26\x0f\xbd\x96\x16\x16\x48\x97\xb2\x2e\x77\x59\x60\x3f\xed\x20\xbf\x7a\x67\x8a\x20\x67\x8a\xf6\x6a\x5a\x01\x35\xf6\x70\xce\xa4\x11\x5d\x6e\xe8\xd2\x2a\x64\x57\xa5\x23\x89\xa1\x90\x44\xa8\x0f\xc5\xed\x2b\xd5\x4e\xfb\xf0\x4c\x13\x42\x36\xf0\x84\x6e\x32\xa8\x3b\xc0\x6e\x84\xbb\xaf\xc6\x9c\xf5\x54\x07\x72\x6f\x20\x00\x6a\xc4\x3b\xbf\xbd\xa4\xc2\xb5\x5b\xd3\xc8\x50\x79\xc7\x54\x00\x1f\x11\x51\xf2\x7a\x0f\x15\xf3\xa9\xf1\xc6\x79\x2f\x87\x8a\x9e\x90\x46\x80\x2d\xc0\x11\x20\x92\x86\xde\xea\xe0\x17\xec\x97\xac\xf0\x84\xd7\x74\x1a\xb6\xcb\xd8\xaa\x17\xa3\xd2\xe9\x13\xad\xaf\x0e\xe8\xbd\xe6\x59\xa9\x6b\x0c\x44\xec\x5d\x81\xe6\x72\xc9\x1d\x30\xbd\x4f\x0a\x5c\x77\xa6\x17\x26\xfe\x28\xff\x7f\x6e\x9a\x09\x09\x8e\x21\x5e\xc2\x8d\x04\x80\x30\xab\xd6\xe0\xea\x0b\xab\x58\x01\x2a\x65\x25\x41\x5b\x32\x0c\xee\x8c\x7d\x85\x66\xc6\x54\x78\x04\x9b\xb2\x33\xa7\x4e\x50\x0d\x95\x27\x94\x31\x54\x38\x22\x07\x73\x44\xd6\x10\x53\x02\x8f\xd5\x78\x80\xc1\x5d\xa2\x00\x0e\x1e\xba\x7e\x63\x2d\x7d\xbd\xec\xb8\x69\x4e\xd5\xbd\x4e\x9f\x6c\xb4\xf7\x4d\xcf\x63\xe1\x0f\x0d\xe8\x31\x93\xca\xa8\xc7\xa6\xad\x8f\x67\x3a\xe5\x94\x41\x32\x5b\xe2\x72\x55\xd7\xc0\xa1\x4d\x90\xa1\x37\x8a\x71\xa6\x59\xad\x62\x7a\x0a\xde\x57\x7d\x7d\xcc\xc1\xb1\x6d\xcf\x9f\x8b\xb7\x05\x6d\x1e\x6a\xa6\xac\x14\x0f\x77\x0b\x33\x16\x84\xc4\x0b\x78\x50\xc4\xe5\xa6\xe7\xcb\x0d\x55\xb5\x6a\xdc\x01\x2d\xc3\xde\xb3\xc0\x77\x67\x90\xa6\x6a\xb4\xa8\xda\xbc\x2a\xe6\x89\xeb\x5e\xb8\x34\x29\x0d\x83\x64\x18\xe7\xd6\x7b\x13\x37\x53\xd8\x9a\x8e\xb0\xd4\xb8\x30\xd3\x9d\x42\x09\xa8\x97\xae\x9f\x50\xa8\x61\x30\xae\x8d\xa2\x42\xd3\xb4\xe1\x6a\x71\xd8\x4d\x45\x60\x7d\x90\x92\xf7\x86\xf4\x17\x3c\x07\xc0\x95\x33\xff\x3d\x92\xa1\x53\x0d\xbf\x15\x27\xb5\x45\xb3\x5f\x8c\x29\xfa\x49\x6c\xba\x09\xe1\x44\xc4\x16\xec\x19\x97\x32\x05\x14\xaf\x7a\x41\xc5\x6a\xfd\x37\x9a\xc9\xe5\x41\x8a\x35\xb1\xee\x2d\xdc\xcb\xca\x44\xf5\xdc\xc9\xf5\xb6\xb7\xf9\xca\x64\x52\x10\xdf\xd5\x94\xc2\xf8\x81\x00\xed\x40\x7e\x45\x5a\x04\x8e\x80\x2c\xeb\x00\x8f\xc9\x40\xb5\xf8\x98\x6b\xe1\x7b\x2e\x0f\x50\x53\x1b\x96\x72\x1d\x18\x35\x01\x5d\x1a\x10\xdf\xd1\xe2\x0b\xe1\x98\xcc\x97\xf5\x1b\xea\xad\x86\x7e\x05\xd7\x22\x61\xb7\x78\x66\x06\x85\x4e\xb5\x43\x11\x5b\x2d\xd4\x32\xc9\x0e\x33\xaf\x03\x7d\x70\x8b\xbc\x55\xd2\xde\x09\x3c\xb8\x7c\x9e\x63\xc7\x8a\x53\xeb\x13\x8f\x08\x14\x4a\x90\x6e\xd5\xfb\x6e\x3e\x5a\xa0\xdc\x6c\xe9\xc5\x57\xc4\xe6\x68\xbb\x77\x94\xa2\x74\x08\x4b\xd4\x43\xf6\xfc\x97\x5d\xad\x62\xeb\xa9\x0f\xe6\x42\xb4\x6d\x38\x9d\x32\x48\x44\x0a\x53\x7c\x15\x3e\x72\xdb\xb2\x76\x7c\xe0\x9b\xe1\xdf\x11\x25\x4a\xf1\xd4\xa3\x6e\x63\xdc\xe6\x08\xf9\xf4\x48\xa9\xf5\xa2\xaf\x27\xfa\xb5\x5b\xa0\x67\x4e\x6a\x7c\x30\x81\x9e\x0e\xe2\x36\xa2\x9b\xab\x8d\x7e\xfb\xc9\xa1\x59\x7e\x3c\xa7\x56\x29\xa4\xc1\x49\x5f\xf0\x7f\x63\x68\xe7\xac\x34\x29\x6d\x65\x5a\xfc\x98\xf6\x49\x3f\x78\xca\x03\x99\xcf\x00\xad\xed\xa2\x2f\x6f\x8d\x53\xda\x1b\xdf\xaa\x03\x2b\x93\xf1\x59\x95\xa1\x84\x90\x58\x5d\xac\xc7\xaf\xed\xc1\xdf\x05\xcd\x75\x0f\xba\x45\x13\xeb\x0c\x8e\x7f\x7f\x18\xff\x3c\x1d\xff\xfc\x11\x73\xee\x5f\x8d\x7f\x7e\x8b\x3f\x3d\x08\xee\x7c\x29\x7b\x2e\xe3\x76\x90\x86\xdb\xc2\x0a\x1a\x17\xf4\x75\xd7\xb6\x5f\xfb\xfd\x69\x20\xc7\xf1\xbd\xf2\xec\xa7\xea\x26\xbf\x61\xf3\x00\x98\x6d\x29\x5a\xec\x47\x98\x29\xb0\xdc\x74\x75\xb5\x92\x24\x43\xfb\xf2\x9e\x74\x77\x6e\x08\xe4\xf2\x4c\xb5\xe4\x80\xa6\x1b\xad\x79\x72\xa2\x76\x24\xa4\xe8\x34\x13\x01\x74\xd3\xd4\x87\xeb\xed\x90\xad\xd1\x33\xbd\x90\x48\xae\x08\xfc\x03\xb3\xb4\x7a\x4b\xb5\x2a\xa2\x04\x42\x94\xaf\x42\xdb\x7e\x15\x9c\x35\x2b\x59\xd2\x5b\x73\x51\x30\x4c\xd2\x2f\x3d\x38\xbf\x43\x75\xb8\xfb\x26\xb6\xba\x16\x00\xea\x01\x81\xcf\x43\x14\x32\xa9\x5d\x02\x15\x67\x0d\x8c\x63\xbc\xc2\x33\x28\x71\xe0\x58\xff\x1b\xe1\xd0\xab\x5d\x12\xb1\xad\x6a\x58\x02\xe8\x61\x68\x8d\x37\xa8\x99\x0a\xf2\x78\xf4\xdd\xd3\xe7\xac\x2d\xef\xd8\xf7\x39\xc1\x42\x48\xd2\x5d\x70\x74\x30\xcf\x42\xe3\x3d\x52\x28\xa1\xf1\x64\xc1\xb9\x33\x1e\x93\x5f\x5e\x1c\x04\xdd\x61\x09\xc9\x80\xe1\xc1\x81\x1a\xf9\xa9\x49\x6f\x8c\xb3\x48\x44\x47\xd6\xd0\x64\x2f\xb0\xb5\x86\x90\x1a\xc8\xa9\x99\x31\x0b\x93\x84\x01\x95\xe3\xdd\x97\x92\x3e\xe9\xd4\x04\xea\x8a\x00\x70\xe0\x75\x8c\xfd\x96\x77\x2e\x25\x6b\xd9\x9e\xad\x02\x05\x15\xee\x40\x26\x6b\x75\x45\x0f\x8c\x34\x65\x4d\xd6\x97\xc6\x64\x8d\x71\x54\xd8\xfc\x43\xc7\x97\x9b\x14\x63\x05\xba\x5f\xdc\xe7\xe2\x36\xe0\x92\xd0\xc0\xee\xdc\x07\x43\x9b\xbc\xb8\x17\xf5\xe3\x23\x66\x55\xb6\x6f\x4c\x46\x8e\x01\x2c\x91\x4e\x7a\xd0\xb3\x77\xd2\x0f\x82\x11\x7a\x86\x8b\x79\xba\x53\x8b\x35\x9f\x2f\xbc\xd0\xbb\xe3\xcf\xba\xab\x93\xec\x0a\x34\x0e\xad\xe9\xb8\xb7\x01\x47\x9b\x58\x37\x19\x6b\x9a\x30\x54\x0a\x19\xf1\x6b\x51\x23\xa9\x63\xe9\xb5\xc8\xd3\xf2\xa0\x27\xd9\x28\x69\xd4\xf1\x9b\x89\x71\xa7\x21\xb0\xad\x89\x37\x26\xc3\x94\x42\xf0\xa7\x3c\x11\x81\x8f\xaa\x59\xa5\xf2\xe0\x93\x50\x02\x84\x97\xf9\x15\x73\x27\xfd\xe0\x37\x56\x20\xe3\x33\x71\x1d\x32\xb6\x45\xc8\x03\x0f\xbc\x2b\x84\xe3\x25\xfb\xcf\xed\x92\xd5\x7c\xe0\x57\xdc\x3d\x77\x20\x86\x75\xc4\x50\x15\x1a\xda\x0a\xa1\x71\x2c\x8a\x26\xae\x0a\xda\x6e\xaa\x6a\x7d\x73\xf6\xaa\x5e\x2f\xb8\xab\xd7\xb6\x53\xff\x68\x95\xf0\x3a\xe7\x72\x68\xc4\xc0\x11\xa9\xde\xc4\x56\x42\x3a\xea\xb4\x79\xfa\x99\xc4\xe0\xe9\x51\x60\x73\xce\xf7\x4d\x42\x5e\xfc\x15\x48\xbd\x62\xc3\x74\x83\x1a\x70\x24\xeb\x10\xb3\x52\x6f\x28\xeb\x1b\x68\x6c\xf5\x95\x91\xf6\x4b\x76\x4a\xe1\xa4\xa1\x55\x71\x43\x00\xa9\xed\x2e\x96\x4d\x85\xf3\x23\x78\xb1\x3d\x18\xa1\xa1\x68\xd9\x88\x7e\x1e\x02\x81\xea\x7b\x8e\x60\x4f\x52\x21\x76\x9d\x4f\x4c\x39\xf4\xbd\x39\x77\x9a\xc9\x8e\x7f\x33\x30\xad\x5a\x3a\x99\xc2\xc4\x9f\x65\xa6\xbb\x17\x3c\x82\xef\xaa\xe8\x9d\xe7\x5b\x2d\xa6\x8f\xa3\xbe\x7b\x32\x9d\xd0\x6f\xcb\x29\x66\x2e\x1a\x8a\x4e\xab\x86\xa8\x23\x43\x0c\xb8\x8c\x19\x56\x80\x9b\xa1\x84\x05\x9b\x37\xa6\x89\xe6\xdb\x53\x91\x1f\x42\xa3\x91\xd0\xe6\x48\x5b\x0d\x5a\xda\x8d\xdb\x7b\xd2\x6f\xb5\x54\x75\x3a\x36\x70\xcd\xb3\xaa\x0a\x01\x01\x4f\x83\xc7\x58\xa2\x7b\xe5\x87\x1d\xe0\x74\x1c\x64\x71\x36\x77\x69\x38\x0d\xb4\x02\x65\x52\xbb\x09\xc2\x5d\x0b\x34\xf9\x6d\x68\xdb\xdf\x48\x0a\x38\x5c\xb0\x33\xab\xaa\xba\x7b\x48\xba\x77\x2a\x22\x8b\x83\x56\x31\xd4\x92\xf6\xa4\x55\x01\x4b\xfa\x3a\xb4\xed\xd7\xb4\xcd\x6b\x2e\x18\x21\x90\xc6\x73\xee\xce\x81\x6c\x0f\x56\xd7\x9f\xfa\x98\xb8\xfa\xf6\x49\x4c\x99\xfa\x5a\xd6\x45\x20\x49\x91\x9c\x28\xe8\x35\xa5\xca\x50\x3c\x2c\xb0\xae\xc8\xa1\x58\xc1\xa5\x70\x24\xe5\x41\x3e\xe8\x88\xde\x4d\x18\x21\x3d\x30\x8e\xda\x20\xc3\x3c\x28\xf6\x02\x33\xc2\xa5\x41\x06\x38\x27\x32\x6a\x10\xcc\x0d\x97\x12\x2f\x7b\x91\xe6\x24\x13\x63\xf1\x9e\xd5\x88\x50\x22\x38\x9a\x57\x85\x71\xdd\x88\x06\x86\x0c\x59\x4d\x92\xa5\x64\x88\x3b\x4b\xaa\x26\x0e\x71\x8e\x3a\x66\xdd\x80\xae\x3e\x28\x31\x99\x51\x40\xca\xdb\x36\xac\x43\xe3\x05\xb1\xc4\xa7\x3d\x26\x18\x60\xfc\xf4\x70\x81\x44\x39\xc5\xa2\x0f\x3a\x9e\x8a\x2e\x81\x36\xe6\x4e\xc9\xc2\x92\xea\x79\xd7\xa5\x85\x26\x8d\x71\x1d\xb5\x4c\xfb\x5c\xae\x0d\x46\x54\xbc\xfa\x77\x3e\xca\x2b\xf9\xe9\xd2\x7f\x46\x83\xab\xf3\xe4\x5d\xf9\x36\xb0\xb6\xd0\xda\x76\x13\x04\xf4\xa1\x35\x22\xfc\x02\x42\x8c\x67\xd0\x9e\x43\xe1\x07\xf6\x13\xf2\x8d\x79\x4e\xdd\x50\x69\x3e\x90\x20\x5a\x31\x20\xcc\xd9\xd9\xd3\x43\x5e\xb2\x05\x68\x2e\x88\x9a\x3e\x1f\x37\x49\xa3\x89\x9e\x03\x4f\x18\xa6\x5b\x0d\x12\xe0\x1c\x99\x9b\x6d\xd4\x90\x87\xae\x09\x61\x9d\x54\xca\x83\x1d\x2b\x22\x3e\x41\x04\xa7\x78\xdc\x46\xfd\x5f\xf7\x84\xd5\x6f\x27\x75\xea\x37\x53\x8f\x47\x54\x34\x2c\x82\x4a\xae\x8a\x3d\x7e\x5e\x2d\xa9\x3f\xab\x90\x1c\xde\x2d\x51\x3d\x71\xfd\x04\x22\xcd\x6f\x4f\xd2\x00\xbc\x85\xf2\xe6\x10\xeb\x16\xbc\xcf\x85\x23\x7f\xcc\xe1\x16\xad\x28\x4d\xc5\xd1\x13\xe5\xe5\x90\x5f\x06\x93\x21\x23\x4e\x9b\x9f\x18\x5f\xdf\x33\x55\x96\x74\x53\x45\x49\x0f\x85\x00\xfa\x59\x2f\xa7\xc9\x83\x54\x70\xea\x78\xe0\x70\x44\xa5\x1e\x25\x0b\x0b\x86\x34\xeb\x5a\xb6\x5c\x1a\xef\xca\x8f\x1c\xd3\x4b\x1b\xff\x77\x3d\x20\x28\xb6\xcc\x78\x14\xcc\x86\xde\x0f\x72\x43\xf9\xad\xf1\xf3\xbb\xc1\x3b\xaf\x3b\x23\x31\x49\x7c\x18\x9f\x7a\xbb\x94\xef\x41\x84\x05\xea\x9d\xc6\x98\xdd\x84\x79\x79\x6d\xa9\xbd\x3d\x48\xd1\x52\x6e\x47\x40\x77\x1c\xec\x44\xe1\x2d\x7e\x53\xc7\x97\xcb\xb1\x89\xdd\x2e\xe5\x66\x71\xe2\xb5\xe1\x34\x3d\x5b\x72\xb2\xa1\x3a\xcd\x29\xf7\xe6\x79\x6d\xd5\xe3\x51\xce\x4d\xd3\x4c\x75\xca\x74\x0d\xa7\x46\xe7\x0f\x8d\x34\xe2\xb0\x9b\x30\xfa\x70\x2b\x1a\x31\x32\xcb\x74\x8f\xff\xb9\x6d\xe3\x05\x12\x22\x88\xa8\xa1\xf0\xa7\x25\x47\x97\xd2\xe2\x0d\x05\x5d\xfb\x6f\xca\xd3\xb7\xbe\x1f\x58\xd1\xde\xab\x8e\xd5\x55\xb0\x22\xc5\x87\x1f\x3a\x56\xc4\xc9\xb0\x57\x89\x0a\x3a\x9a\xc9\xf0\xab\x71\x60\x13\x5d\x82\x5d\xb2\x33\xda\xf1\xad\x0b\x49\x2a\xde\x96\x28\x92\x5d\xb8\x3c\x3f\xc7\xaa\xac\x4c\xab\x82\x22\x18\xa5\xbd\x93\x60\x06\x45\x0c\x7d\x69\x0f\x03\x3b\x76\xf0\xfc\xd2\xc6\xa1\x24\x8c\x20\x3f\x4c\x1c\x18\xd8\xe6\x09\xb9\x19\x6f\x55\x6e\x6e\x99\x74\x35\xe8\x12\x9b\xc7\x89\x48\x43\x7f\xc4\x5a\xa8\x8c\x3f\x84\x82\xbc\xbe\x63\x69\x1a\xc6\xaa\xe8\xbf\xd5\x40\xbc\xb9\xad\xe7\x1c\x82\x2d\xd6\x05\x60\xe7\x9b\x94\x0a\xa3\xb8\x2f\x53\x2b\x0b\xbc\x9c\x4d\x7d\x59\x08\x25\x0d\x37\xe3\xc2\xfd\x0c\xc0\x10\x72\x4c\xfe\x39\xcc\xa2\xc4\x8f\x6b\xea\x63\x72\x97\xd3\x7d\x66\x3b\xb8\x0a\x5d\xfc\xa1\x17\xd5\x35\xc4\xb3\x28\x24\x0a\x02\x24\xb4\x98\xb7\xd4\x04\x26\x4e\x87\x35\x6a\xaa\xc4\x95\x8b\xf7\x3b\x51\x34\x1d\xd0\x1c\xac\xbb\x43\xc8\x8d\xe5\xb9\x2f\x54\xa2\x27\x1e\x50\x44\xe1\x52\x66\x3d\x29\x96\x92\xfd\xc9\xda\xf2\xd7\x4c\x11\xeb\xe3\xfe\x5b\x39\x3c\x69\x41\x79\xf8\x55\xf0\x2a\x0f\x24\xe1\x9e\x02\xe2\xf3\x6d\xca\x77\x5c\xd1\x92\xef\x3d\xb9\x92\xa5\x65\xef\x13\xfd\x21\x87\xac\xf6\x17\x4c\xa4\x9a\xad\x73\xc1\xd7\x60\x5e\x6f\xf1\x08\x0f\x45\xc1\x6d\xea\x61\x55\xaa\x0d\xa4\x9f\x0a\x89\xdf\x9b\xbd\x91\xab\x2a\x90\x06\x45\x6a\x42\xcd\x21\xcd\x3c\x84\x0c\xae\x55\x72\x42\x67\xa1\x66\xdf\x93\xf1\xaa\x84\xbe\xde\x01\x79\x7a\x30\x90\x93\x48\x4a\x75\x14\x1a\x00\x8f\x68\x1b\x75\x64\xb9\x26\x40\x91\x0a\x0a\x90\xcd\x7a\x40\x0e\x8d\x77\xf6\x73\xaa\xff\x81\x3c\x5d\xaa\xbd\x6a\x69\xce\x83\x29\x19\x53\x3f\xdb\xf8\x8c\x28\xf7\xfa\x52\x19\x91\xd5\x2b\xaa\x9f\xc7\x6f\xc8\xe5\x7c\x1d\x33\xbe\xbf\xf0\x5e\xd9\x97\x67\x88\x75\xeb\xd0\x7c\x4e\xb2\x8c\xcf\x7c\xcb\xd9\xdf\xc0\xbf\x8a\x09\xef\xd8\x8f\x1f\x96\xa5\x6c\x6b\x85\x5e\x04\xc4\x65\x9f\x73\x8f\x15\xce\xd5\x8a\xb9\x5d\x6e\x30\xdf\xaa\x53\x3a\xf2\xc3\xac\xd5\x88\xbf\x78\x16\xe6\x06\x55\x27\xc1\xfa\xf4\x4d\x92\x76\x14\x12\x50\xb1\x6c\x7b\xe5\x6e\xd9\xac\x32\x08\x0e\xf2\x9b\x90\xc8\xbd\x91\x6a\x77\xd9\x15\x21\x2a\xfb\x3d\x1a\x5c\x42\x6d\x09\xfa\x6b\x31\x42\x64\x2c\x4d\x08\xfb\x61\x25\xe3\x6d\x21\xc6\x53\xee\x62\xfc\xef\xbb\xbe\x6d\xdf\xf5\xd2\x3e\x5b\xbd\x8e\x36\xf6\xea\xd8\x14\xb9\x84\x9c\x8d\x03\x23\x2f\xbd\x15\x7b\xaf\xfb\x4f\x70\xab\x75\x71\x74\x1e\xc1\x23\x50\x05\xd8\x3d\xbb\x25\xb0\x44\xd8\x77\xf3\xd3\x37\x1b\x8b\xc2\x7b\x24\x63\x57\x4a\xe4\x90\x4c\x21\x1c\x78\x3d\x22\x14\x44\xaf\xcc\x96\xf0\xcc\x38\xf3\xd7\x5d\xf4\x65\x9b\xc8\xb5\xdd\x81\x58\x21\x42\xb7\x0b\x66\xda\xa8\xbe\xed\x65\x1f\x02\x30\x92\x10\x87\xd6\x54\xda\x85\x1e\xb6\x60\x1e\xef\x15\xda\x76\x56\x66\x7a\x82\x38\xd5\x29\x1a\x0e\x95\x26\xba\xa1\x44\x8e\xb5\x09\x00\xc5\x60\x55\xbf\x15\x99\x0e\xe9\x1c\x0b\x5b\x6e\xa6\x14\x25\x48\xf5\xb8\x60\xf1\x53\xea\xad\x8d\x21\x69\x0c\x9a\x95\x42\x7e\x69\x7e\x1c\x2d\xbd\x51\xee\x7b\x92\xb8\xbc\x90\x75\x6f\xe8\x00\x93\x1d\x91\xb3\xac\x9c\x7c\xcf\x30\xf6\x0c\xc0\xae\x0b\xa0\x7a\x36\x75\xd1\x01\xaf\xe0\x3d\x2f\x08\x7a\x40\x3e\x77\x15\xf0\x9e\x8e\x48\x30\x3d\x73\x52\xca\xe8\x39\x21\x1f\x7c\x1a\xc0\x36\x88\x35\x25\xf9\xcb\x92\xdd\x7b\x37\x72\xb2\xd1\x55\x40\xee\x82\x5f\xb8\x50\xc5\x3e\xa9\x30\x69\x2b\xc0\xbb\xdc\x5b\xb0\xb0\x9d\xde\x9d\xff\x55\x09\x07\x6f\x84\x05\xd1\xbe\xbb\xee\x98\x80\x68\x55\x57\xb6\xe3\xb3\x3f\xdf\xc8\x92\x02\x9a\xfc\x34\x22\xbb\x09\x04\x55\xb4\x60\x68\x90\x46\x22\x39\x48\xe4\xc4\xe5\x81\xbb\x99\xde\x27\x8a\x4e\xa5\xbb\xf0\xe7\xc9\xe7\x17\xad\x29\xa9\xa5\x4f\xfc\x4e\xf7\x9e\x22\x1d\x5c\x15\x6a\x38\x62\x1d\xbc\xfa\x87\x99\xbc\x75\x36\x5e\xef\x60\xb7\x23\x26\xac\x30\xe5\xca\x2f\x15\x54\xb1\x38\x1c\x49\xf4\x26\xef\x2f\x2c\xfe\x02\x81\xbc\x24\x0c\x88\xb9\xe4\xf8\x2e\xb3\x98\xf2\x0a\x64\xea\xf3\xbe\xab\xac\x66\x25\xba\x36\x7f\xc4\x92\xf6\x8c\x7f\x94\x86\x29\xe6\x21\x98\xa2\x83\xc8\xd9\xaf\xb2\x50\x8a\x12\x24\xc2\x74\xe6\xa4\xda\x68\xb3\x2b\x58\xab\x20\x3a\xd0\xf0\x1b\xc4\x10\x79\xeb\x70\xa8\x5f\xc7\x41\x6e\x02\x53\x2e\x6c\x6f\x83\x26\x16\xf4\x00\x03\xd8\x38\xc1\x43\x57\x27\xaf\x55\xaa\x59\xae\x10\x97\xfd\x13\xb7\xe5\x47\x9d\xa1\xaa\x9d\x3c\xe2\xe6\x89\xa9\x28\xe8\x16\x9f\x08\x51\x2c\x3e\xdc\x87\x2d\xd6\xd5\x54\x4b\x03\x9c\x39\x39\x4d\xe5\x93\x11\xdf\x1d\x7e\xd7\x20\x99\x0a\x43\x8b\x1a\xe8\x17\xad\xcd\x31\xa7\xb1\xce\x54\xf6\x08\xe8\x59\x2f\x86\x3d\x8d\x0e\x3b\x6f\x30\xab\xb8\xdc\x98\xc0\xaa\xf8\x20\xd1\xda\xaa\xf9\xa3\x48\x6b\x8d\xa8\x20\x5d\x86\xf1\x17\x61\x9d\xab\x0f\x6e\x7a\x88\x7c\x9b\x80\x89\xe5\x79\x32\xb3\x07\x3c\x35\xdf\xe5\xb0\x2d\x1e\x00\x19\x56\x3d\x62\xdd\x1c\x5c\x3d\xde\x54\xbc\xad\x2d\x05\xde\x05\x3e\x13\x82\x79\x97\xaf\x2d\x3d\x81\x59\x8f\x00\x37\xa7\x50\xa1\xfc\xde\xa5\xb9\x3f\x35\x8d\xb6\xa9\x66\x24\x92\xb4\xe9\x57\xb5\xd3\x1d\xc8\x8c\x2a\x3c\x28\x33\xb2\xa8\x6b\xc3\x90\xa0\x53\x06\xae\x79\xbb\x1c\xac\xad\xba\x11\x85\x7a\x40\x58\x3c\x01\x35\x2f\xf6\x50\xb2\x3d\xbc\xa2\xd0\xfa\xa8\xab\x53\x4a\x19\x45\xf1\xa3\x5f\xb8\xfb\xa6\x67\xd2\xe9\x85\x6c\xe2\x30\x2b\x4c\xfc\xca\xd7\xb6\x01\x7a\xb4\xc1\x76\xc7\x2e\x34\xca\xe8\x68\x64\x07\x61\xc6\xb2\xac\xb5\x60\x8a\x24\x83\x56\x52\x48\x41\x68\xaa\x89\x35\x6a\x5b\xd7\x32\xbb\xf6\x53\x9c\xff\x5d\xfa\x79\xbb\xf3\x3f\x96\xf6\x2d\xf8\x52\x00\x17\x0c\x13\xa4\xce\x7d\xd9\x73\x76\xbb\xf2\xcf\x3e\x30\xd7\xa5\x64\x36\x01\x17\x69\x8d\xfc\x59\xfb\x76\x02\xc5\x9e\x78\x6c\x65\xfc\xf4\xb6\x67\x4a\x49\x7a\x8e\xb1\x24\x94\x6d\x0c\x02\xb5\x41\x82\xa8\xa5\x8f\xa8\xfa\x4b\x49\x29\x0e\x37\x62\xb2\x2c\xa6\x95\x52\xa2\xc7\x1d\xdb\x36\xbc\xe4\xc1\xff\x0e\x28\x41\x3b\x22\xca\xad\x05\xd7\x5e\x88\x6d\x73\x00\x7d\x08\x1c\x1a\xe5\xa1\x20\x48\x90\x10\x09\x3d\x89\x20\xc0\x5e\x4b\xd5\xb8\x82\x36\x65\x98\x38\x51\x45\xea\xf6\x65\xa1\x16\xef\x34\x49\xf3\xa2\xcb\x42\xbf\xd2\x27\x5a\x89\x02\x47\x2e\x29\xe1\x4d\x5c\x74\xf8\x44\x90\xf0\x20\x69\x47\xf6\xe6\x1c\xcb\xa7\x3d\xeb\x2b\xcb\x42\x50\xd9\xb6\x27\xf4\x64\x0f\x99\xf3\x07\x5c\x2d\xc4\xcf\x2c\x21\xd5\x86\x68\xa6\x20\xb1\xe8\xe4\x6e\x73\xb4\x70\x5d\x3b\xd8\xc0\x92\x9c\x55\x3d\xf4\x5c\x93\xfc\xac\xb5\xfd\x9c\x64\xf7\x32\x98\x30\x6d\x24\xce\xd5\x82\xc2\x0d\xe8\xe7\x4e\x98\xe7\x74\xd7\xcc\x3a\xd1\xe4\x8b\x17\xb4\xd3\xc3\x4a\xfa\xdf\xcd\x2b\x29\xae\x40\x2b\xd6\x11\xac\x74\x18\xdb\x6b\xb8\x7d\x81\x0c\x77\xbe\xb0\xa5\xed\x8d\x80\xe5\x58\xa2\x44\x14\x1d\xf0\x21\x7e\x42\xe0\x10\x19\x05\x6b\x86\xb5\x66\xf2\xc4\x7b\x72\x98\x82\xdf\x9b\xad\x85\x2f\xcf\x87\x69\x29\xed\xed\x4c\x93\x1d\x8b\x77\xb7\x26\x8f\x10\x6b\x9d\x2f\x66\x85\xa1\xc7\x4f\x59\x34\xf7\x1e\xb2\xaa\xec\x11\xf7\x71\x14\x76\x11\x9a\xd0\x02\xf5\x00\xf6\xc0\x9b\xb3\x5e\xd4\x7d\xde\xd0\x8d\xdf\x77\x8f\xb8\x46\x14\xc2\x23\x5c\x35\x95\x18\x72\x20\xed\xbe\xd5\x7c\x1e\xec\xc2\x6b\xc6\xb4\xee\xc5\x0e\x2f\x74\x0b\x00\xcf\x85\x50\xf1\x70\x1c\x85\x02\x93\x67\x31\x53\xe2\x43\xaa\x9e\xd5\xb6\xe1\x5f\xe3\x9f\x61\xfc\xf3\xdd\xf8\x27\xd6\x81\x7c\x1e\x6b\x65\xc4\xda\x18\xd7\xf1\xef\x4f\xe5\xcf\x5b\x54\xcc\x88\x32\x67\x5b\x5e\xff\xac\x4b\xd1\xeb\x6d\x1b\xfe\x59\x0a\xdb\xac\x44\xe6\xf2\x3b\xa3\xa0\xd1\x2d\x0a\x3a\x00\x27\x88\xfa\x1b\xff\xb0\x31\xb2\x92\x2b\x8c\x8f\x5f\x0f\x3b\xb6\x5a\x97\x49\xd8\x54\x69\x27\xe7\x81\x27\x2f\xb9\x7c\xc4\x9a\x94\x57\x13\x36\x5c\xec\x56\x95\x27\x33\xfa\x89\xc9\xb8\x25\x79\xd8\x51\xd7\x4c\x61\xb7\xf1\x6d\x51\x16\xb8\xf2\x36\x7b\xf8\xb9\xbe\x89\xc7\x4d\x9a\x29\xd4\xfe\x54\x5b\x93\xab\xc2\x58\x5b\x92\xc4\xd9\x84\x6c\x09\xf0\x9d\xb4\x63\x50\x78\xc0\xd2\x71\x3a\xcc\x3f\x42\xa4\xeb\x37\x2e\x53\xad\x95\xc4\x9a\x99\xe1\x70\xe9\x32\x92\x53\x6d\xcc\xb6\x75\x8d\xee\x29\x18\xf7\xa9\x20\x07\xf2\x1e\xdb\x52\x62\xf7\x81\x6f\xb4\xe6\x52\x92\xe0\x2a\xe5\xff\xa6\x13\x44\xb1\xba\x68\x2a\x28\xad\xc8\xdd\x6a\x83\x69\x9b\x09\xec\xd0\xba\xe5\x9b\xd7\x3b\xfa\x87\xe7\xe0\x63\x5d\x5f\xb7\x3b\xc0\x87\x7f\x21\x77\x19\x06\x27\x3e\x4d\x62\x13\x28\xa7\xb5\x7b\xdd\x99\x7a\x90\xf5\x14\xba\xf9\x93\xc1\x65\x53\xf1\x83\xfb\xe2\xfa\x7c\x7d\x0a\x82\xd7\x44\x8f\x11\x99\x4f\xf3\x52\x7e\xfa\xcf\xfd\x70\xa6\x22\x8b\x1b\xaa\x67\x48\x7b\xa4\x86\x5a\xea\x7c\x56\x41\xda\x0d\x5f\x38\x59\x26\x01\x1e\xba\xea\x0c\xa0\x49\x16\xbf\x55\x75\x15\x89\x65\xc4\x15\x3d\x34\x77\x2e\x6a\x5f\x5f\x85\xe1\x04\x8e\x07\xb4\xe1\x90\x71\xf5\x8b\x74\x24\x3a\xa5\x3c\x66\xc5\xc6\x5b\xbf\x4a\x76\x20\x19\x1e\xcf\x38\x65\x3b\x1b\x11\x34\x40\x86\x65\xf0\x4b\x76\xbb\x40\x92\xf1\x0c\xa2\x56\x54\xba\x95\xce\x1d\x92\x80\x06\x74\x8e\x27\x5d\xc4\x69\x33\xea\x53\xa1\x9a\x7e\x95\xa8\x25\x05\x35\xea\x14\x0b\x6f\xdd\x49\xe9\xf7\x32\x44\xe9\xbd\x39\xf9\xf3\xc8\x93\x50\x5e\xcd\xa7\x3e\xd4\x31\x4d\x7a\x3f\x9d\xa6\x92\x26\x22\xc2\x49\x8f\xd3\x2b\xc9\x35\xe4\x4c\x17\x20\xbc\x3e\xf8\xfe\xfb\x07\xd7\x35\x33\xbd\xfc\x67\xd7\xb6\x7f\xfa\x17\x42\xf1\xcd\x7d\xbf\x6a\x10\xd4\x4d\x12\x96\xa5\x2d\x24\xcc\xba\x06\xec\x3a\x46\x6d\xf0\x2f\x29\x14\x79\xdd\xb3\x94\x6d\xe5\x7e\xd2\xc7\x8e\x9c\x1a\x7f\x43\xb5\x5a\xe1\x24\x65\x09\x31\x54\xec\x06\xb8\x23\x37\x42\x0a\x97\xca\xf4\xb8\x34\xf5\x01\x4e\xe7\x5a\x53\x0b\xfa\x46\xe1\xf1\x85\xdd\x18\x45\x07\x37\x4d\xb8\xf9\x1d\x83\xcf\x91\x9f\x2f\xef\xdc\x82\x86\x63\x99\xbd\xa7\x29\x72\x49\xeb\xdd\xbe\x48\xe1\xe8\x95\x8d\xeb\xbe\xa0\x4f\x2c\x2c\xd0\x38\x18\x1b\xce\x65\x5a\x6c\xfc\x2f\x3d\x07\xe6\x76\xe6\xb8\xcc\x3c\x82\x45\x17\xc9\x09\xa5\x59\xb2\xb0\xa3\x60\xba\x32\xe1\xb9\xd5\x02\x78\x52\x4f\x89\xe7\x1f\x05\x9d\xdc\x89\x2c\x97\x6e\xa4\x0c\x7b\x81\xbf\x96\x28\x14\x4e\x32\xb8\x07\x3b\xdf\x54\xed\x11\xc1\x8c\x64\x8f\x0c\xf3\xb1\x16\x75\xb3\x4d\x94\xae\x34\xe5\x61\x3d\x00\xb2\xde\xa0\x5d\xc5\xa0\xfa\xa0\x10\x50\xdd\x84\xfa\x34\xc4\x6a\xb0\x3b\x50\x09\x94\x4a\x3a\x30\x6d\xd0\x33\x6b\xb8\xe9\x98\x5d\x47\xe3\x60\x2e\x87\x9a\x55\xd2\xc4\x12\xe2\x03\xd3\xe7\x06\xf5\xfb\x34\xae\x98\xb2\x63\xc0\x66\xe5\x15\xdf\x37\x45\x97\x83\xb5\x2b\xa4\x5b\x8e\xd8\x2f\x63\x2c\xb1\x34\x64\xcf\x54\x35\x88\x6f\xc6\x15\x28\x63\x49\xb6\xca\xcf\x47\x48\xba\x44\x8a\x0c\xa3\x95\x08\xc9\x23\x19\x7f\x01\xa4\x74\xb0\x4e\x7c\xaa\x05\x3e\x36\xa2\x62\x3a\xd4\x44\xea\x0d\x4b\x63\x39\x3a\x74\x33\x05\xe8\xc7\x61\x20\x56\x39\x76\x35\x21\x99\x8c\x1f\x5f\x72\xfd\x42\xba\x73\x9e\x8d\x4e\xf1\x92\xfb\x9e\xfb\x2f\xee\x3a\xc2\x43\xef\xf5\xef\x75\xdf\x2b\x3f\x24\x84\x88\xef\x11\x9f\x17\x55\xbb\x80\x3b\xbd\xa8\x48\xe5\xe0\x63\x9d\xc6\xe2\x07\xef\x56\x57\x9f\xd3\xe7\x32\x70\xe9\x7a\x0a\xaf\x74\xd8\xf4\x37\xd1\x5a\x77\xce\x14\x96\x2c\xb6\x5b\xec\x87\x76\x46\xdc\x8e\x68\x6d\x65\x03\xf7\x4b\x37\x98\x48\xde\x57\x4d\x82\x5c\x56\x87\x59\x3d\x33\x31\xa0\x51\xe3\xd7\x4c\xff\xe9\xbe\x91\x01\x22\xaf\xfd\xee\x64\x37\x29\x59\xb6\xc8\x92\x56\x2f\xd5\x52\x24\xd7\x50\xc4\x35\x15\x1d\x49\x1a\xe4\x81\x09\x9a\x09\x2e\x40\x59\x42\x38\x5c\x36\x71\x49\x31\x94\x2e\x07\x99\xe5\xd5\x8e\x2f\x7b\x57\xa7\x9b\xaf\x19\x73\x24\x6d\xf9\x5a\x96\xac\xe3\x16\xc1\x9d\xb0\x6c\xe3\xbd\x38\x36\x8d\x33\x75\x68\x7d\x33\x79\x0d\xca\xa1\x31\x48\xa9\x5a\xb8\x22\xa9\x39\xd4\xe3\x3f\x0c\x3e\x12\x2d\x1c\x68\x36\x22\x8c\x1b\xf0\xab\xa1\x71\xe3\xb6\x3a\xa8\xeb\xe8\xa4\x7f\x93\x0a\x37\x50\x80\x37\x5e\xf1\x6e\x1a\x19\x40\x89\xe0\x10\xfd\xab\x00\x73\x2f\xb5\x61\xb5\xda\xf1\x75\xc7\xd6\xb0\xc7\xa2\x01\x56\x47\x15\x65\x14\x42\xec\x7f\x1a\x84\xc0\xd9\xd6\x11\x42\x1f\xf6\x9d\xe9\xd6\xfa\x9f\x3b\x6c\x01\xf7\x72\x31\x3e\xee\xec\xab\x6f\x28\xb5\xea\xca\x37\x75\xb2\x46\x52\x3d\xd2\xcd\xc4\x52\x5e\xa3\xff\x4b\x47\x5a\x09\x03\xbf\xf9\xfb\x1e\xbb\xe7\x46\xdf\x8c\x05\xd8\xfd\x8e\x56\xef\xff\xdd\xee\x4f\x46\xca\x69\xc7\xd5\x3b\xad\xae\xe5\x8d\xa9\x9b\x83\x85\x04\x78\xf5\x3e\xe2\xbc\xc8\xae\xfd\xdf\x91\x73\x1e\xc1\xa8\x31\x05\x07\x61\x3d\x16\x03\xf0\x34\x1d\x4b\x20\xb3\xfa\x36\xf8\xa2\x79\x68\x83\x2c\xa1\x8f\xa2\x17\xde\x7b\x4e\x94\x85\x69\x74\x57\xc3\x38\xa9\x3f\xe3\xe9\x2d\x64\x8b\x0a\x12\x1c\x87\x62\x99\x7a\x2d\xac\xda\xd6\xf8\x73\xd7\x89\x9f\x83\xa3\x71\xe4\x07\x0f\x3b\xd2\xd6\x1a\x32\xb5\x03\xda\xb4\xc4\x47\x6a\x63\x35\xc5\xe5\x23\xa5\x63\xdc\x37\x6b\xc4\xad\xd0\xa1\x4f\x7b\x75\x1a\x72\x58\x56\x51\x49\x6d\xc9\x5e\x39\x98\xaf\xb4\xe1\xb1\x41\x17\xa3\xcd\xbe\x8a\x3b\x19\x79\x4c\x3d\x5a\x31\x2c\x6d\x08\x17\xc4\x7a\x08\xaf\x06\xbe\x20\x78\xcf\x86\x89\xac\xe4\x75\x72\xa2\x8c\x39\x33\x86\xf6\x5c\x6c\x66\x83\xb8\x39\x5e\xa5\x23\x5c\x3b\xcf\x0a\xcd\xf6\x26\xef\xc6\x61\x52\x2c\xce\x5e\xf8\xcb\x1e\xbe\x99\x24\xcc\x79\x97\x86\x42\x5d\xb5\xad\xce\xbd\x2f\x76\xaa\x03\xc3\x90\x76\xba\x11\x62\x2a\x5c\x06\xcc\x1c\xc1\x09\xd3\xe7\xed\x27\x94\x06\x8a\x35\xef\xe0\x44\x66\x9d\x43\x6b\xfd\x18\xbb\x77\x85\x1c\x1e\x2c\xfe\x23\x0c\xa3\xa9\x67\x09\xd7\xc4\x8f\x66\xf2\x1d\xc5\x57\x60\xd0\xf3\xfc\xa7\x9e\xe7\xc3\x52\xa3\x2b\x93\x68\x11\x9c\x44\x8b\x0d\xf4\x0f\xe2\x8f\x14\x3f\xf0\xa6\x8d\x29\x49\x51\x74\x3c\x99\xa7\xb0\xe4\xe7\x0e\xb7\x9c\xcc\xc6\x0d\xdc\xf9\x93\x79\xc8\x9c\x9f\x3b\xde\x72\x32\xeb\x57\xbe\xef\xd9\x3c\x06\xbe\xab\xeb\x3b\xf1\xc9\xb6\xba\xbd\x87\xd8\x88\xb0\x8a\xfd\x21\x2b\x40\x4a\x6f\x21\x85\xec\xb5\x6d\xd8\x33\xbd\xe2\xdc\x11\xd9\x4d\x59\x2c\x8d\xcd\x54\x1c\x1a\xeb\xdd\xfd\x22\xaf\x7d\xe7\xb2\x22\x35\x57\xbb\xa6\x50\xa9\xbb\xf6\x93\x38\xcb\x8d\x77\xed\xd2\x44\xda\x6e\xbc\x6b\x47\x5b\x65\xfe\x9c\x39\x61\x11\x60\x1f\x44\x87\x6a\xee\x47\x40\x4d\x1a\xa8\xab\x31\xd8\x16\x4a\x87\xdd\x63\x11\x4e\xb8\x76\x66\x9d\x8f\x53\xff\x93\xb6\x0d\xed\xe4\xe5\x09\x62\x42\xc7\x83\x4f\x7a\xc7\xfb\x93\x11\x0a\x3f\x6b\x5e\x9c\x7d\xda\x08\xd7\x86\xfb\xfe\xc8\x8b\x6e\xf4\xbd\xad\x21\x77\xa8\xf9\x19\xb8\x9a\x6a\xc1\xc6\xff\xeb\xfc\x87\x14\xc6\x8a\x5f\xf2\x6a\x6e\xa6\x78\x83\x55\xcc\x86\xdf\xb4\x3b\x0f\xba\xde\x73\x79\xf0\xdb\x9e\xc5\x31\xaa\x59\x1e\x3f\x65\xe7\xe2\xb1\x54\x49\xa1\xe7\x54\xd8\xfb\x43\xc7\x4f\xd3\x22\xd4\xbd\x54\xe9\x3a\xb3\x8d\x89\x1b\x51\x3f\x0e\x8b\xf0\x98\xaa\xc0\x42\x2a\xac\x1c\xac\x2c\x9f\x1e\xc4\xa9\x2c\x2b\x0e\xbf\xc6\x4d\x5f\xf1\xa4\x1d\x6a\xa6\x72\x9d\xdc\x61\x20\x5a\x64\x77\x29\xdf\xbd\x3d\x11\xb1\x6f\x9e\x71\xa6\x3c\x99\x82\xe4\x14\xf9\xda\x1b\x38\xff\x88\x5e\x8c\x9f\x7e\x56\x25\x00\xd3\xf1\xc6\x2f\xab\x4f\x4f\x37\x10\x55\x1d\x40\x92\x16\x42\x57\xc3\xdc\xe3\xeb\x37\x31\xa5\xae\x62\xe4\x43\x50\xbc\x61\x1e\x84\xe7\x0e\x5d\x6f\xa6\xe0\x00\x2c\x79\x66\x0c\x85\x6a\x07\xbd\x13\xc3\xf9\x66\xea\x0a\x1d\x7d\x60\xd4\x72\xc6\xc1\x01\x67\x29\xf7\xb2\x3c\xe1\xf8\xe9\xfd\xd2\x4d\x67\xa0\x9b\xa0\xc7\x70\xcb\x64\x97\x9f\xbf\x2d\x14\x27\x95\x30\xf9\x93\x1a\xd9\xce\xd2\xad\x41\x7b\x56\x26\x86\xd9\x4c\x49\x2f\x71\xdc\x26\x84\x87\x97\x91\x96\xfe\x95\x9c\x67\x2a\xf2\x3f\x46\xf6\x7f\x15\x23\xf7\xef\xe3\xdf\x98\xd8\xf3\xa6\x44\xf2\xb7\x8d\xc8\x71\x2c\xf7\xf6\x6e\x51\xed\x27\x32\x94\xd4\x80\x98\x10\xf5\x2c\xe6\x3a\xcb\x1e\x66\xc5\xce\x74\x35\x08\x50\x2a\x9d\x3e\x05\x4a\x7c\x93\x0b\x6b\x8f\x3f\x4e\xad\xa8\x72\x8e\x64\x09\xe6\x6d\x26\x47\x7a\x1c\x39\x55\x19\x5a\xc6\xb8\x78\xf9\xb4\xae\x03\x38\x9d\xd1\xe5\x8e\x9d\x74\x65\xc7\xba\x4a\xd4\xbd\xa5\x96\x7b\xd3\xca\xbe\x38\xfd\x7c\xeb\xa2\x27\x4b\xc7\xa7\x8a\xf5\x4c\x69\x19\x7e\x38\xea\x7b\xd4\x67\x4e\x26\xa1\xf8\x08\x02\x36\xde\x22\x68\xa5\x11\xc1\xa4\xd0\x65\x55\xc6\xd7\xd5\xcc\xcf\xed\xf8\x73\x53\xad\xc5\xc0\x7b\xc2\x10\xea\xdc\xae\x8d\x98\xa4\xc8\xb1\x4d\x46\x50\x83\x1f\x18\x80\xa9\x9f\xd7\xe6\x67\x45\x2e\xae\xcc\xcf\x6a\x69\x32\x36\x3b\x87\x13\xc6\xa7\xfe\x0c\x6d\xfb\xa7\x34\x97\x8b\xe7\xbe\x0c\x6d\xfb\x65\x6e\xf9\x11\xda\xf6\x0f\xc1\x36\x95\xcf\x3a\xc4\xbb\x13\x9f\x4b\x9f\xcb\x78\xf2\x39\xd9\xda\x54\xa8\x05\x12\x29\x15\x66\x7c\xe7\xdd\x32\x0e\x86\x55\xd6\x5c\x5b\xaa\x9a\x04\x0e\x85\xa2\x2b\x13\xab\xa7\xaf\xbf\xf8\x83\xc5\x0d\x08\xd1\x76\xd4\x58\xb6\x1d\x7a\xe2\x81\x33\xe0\x74\x96\x2a\xab\xfb\xda\x48\xff\x5b\x48\xc2\x8e\x5a\xae\x2f\xf0\x81\xa9\x76\x09\x28\xd9\x35\xac\xf9\x54\xc4\x7f\x95\x07\x25\x95\x58\x10\xbf\x78\xd2\xbe\x95\x90\x14\x10\x13\xba\x79\x32\x0a\xf1\x48\xbd\xc8\xc5\xac\x9a\xb4\xea\x84\xb8\x5a\x85\x23\x13\x89\xf8\x0b\x29\x55\x40\x20\x7d\x3b\x67\x0d\xd9\xf7\xbd\xc8\xe5\x80\x5d\x26\xbe\xe7\x95\xe1\x88\x2f\xcb\x78\xdf\x80\x28\x1e\xb2\x43\x6d\x71\x2a\xf8\xb2\x41\xd5\xb7\xb2\x85\xe7\x31\xcd\xb6\x6a\x55\x57\x55\x9a\xe4\x92\x76\x38\x9c\xed\xb0\x38\x40\xbc\xc6\x8c\xb0\xee\x90\x30\xae\x26\x38\xda\x1e\x45\xd9\xbe\x90\xc9\xcc\x4c\x52\x06\xbb\x8a\x3c\x85\xdb\xbb\x8c\x56\x2a\x52\x71\xcb\xc8\xbd\xa5\x28\x75\xd2\x3d\xf0\x1d\xa9\x47\x42\xb2\xac\x52\x30\xfa\x6e\x0b\x72\xa4\x10\x77\x6d\xec\xff\xee\xdd\x5a\xea\xec\xd6\xf9\x32\x31\xa2\x3c\x18\xe0\x40\x17\xcc\xba\xfb\x6c\xe3\x6b\xb5\x08\x99\x56\x3c\x7f\x63\x01\x76\x7b\x4f\x57\xc6\x91\x5a\x23\xb2\x0d\x3b\x30\x48\x75\xac\xec\xc2\xda\x50\x68\x17\x34\x96\x77\x54\xde\xaf\x1b\x19\xd5\x95\xa9\x63\xe9\x05\x39\x92\x70\x36\xb4\x6e\xc2\x9c\x72\xe3\xd7\xa4\x3f\x71\x69\xe9\x32\x10\xd2\x89\x51\x3d\xf7\x16\xe9\xfc\x05\x31\x4d\x76\x9c\x1a\xec\x32\xf5\xb6\xa4\x60\x41\xad\xc6\x30\x5d\x21\x9b\x93\xb7\x01\xfa\x43\xba\x91\xd6\xd2\xbd\xe3\x5f\xf0\xaa\xbd\x2c\x02\x8b\x69\x6b\x03\x1b\x4f\x91\xb7\x86\xe2\x07\x73\x35\x3f\xd1\x05\xc1\x06\xe6\x3c\xb2\x87\x46\x3a\xaa\x5d\xf8\xc4\x75\x71\x48\x84\x60\x0e\xe9\x11\x8b\x25\x90\x6b\xf3\x47\x0f\x4c\xe0\xb5\x93\xe4\xa5\xde\xb3\x05\xc2\xb0\x1a\xb2\x3a\xa8\x2b\x7c\xd7\x6d\x0d\xe8\xed\x9c\xe0\xaa\x14\x0f\x9d\x3d\x91\xe5\x79\x50\xb9\x0e\xb4\xa5\x53\x97\x40\xc1\xe1\x17\x8f\x4d\x3e\x86\x57\x82\x70\x7b\x92\xea\xc7\x7c\xd2\x28\x2f\xe7\x24\x1f\x6b\x80\x16\x85\x67\x9c\xd8\xe0\x24\x29\xcc\xae\xbd\x71\x8d\xef\xc4\xa6\x71\x95\xbc\x26\xb2\xc4\xec\x33\x88\xb3\x5d\x01\xbf\x00\xf3\x72\xff\x0a\x9b\xea\x48\x14\xe0\xc2\xab\x41\xa0\xf4\xaa\x27\xee\x2c\x84\xe9\x82\xdc\xce\xeb\x39\x35\xde\x53\xfc\xb0\x77\xd2\x49\x7e\x6a\xcc\x49\x97\x52\x40\x57\x17\xea\xd2\x94\x8a\x55\x1a\xf1\xbe\x21\x71\x98\x41\xdd\xa3\x4b\xb9\x05\xaa\xfc\xa3\x56\xaa\x9c\xff\x73\x40\x51\x4d\x02\xa9\x06\x92\x1a\x31\xb7\x38\xbd\x30\xf6\xcf\xdc\x1f\xd0\x6e\xfb\x3a\xfd\x52\xd9\xf6\x61\x87\x94\x83\x49\x72\xf0\xfc\xd3\x10\x80\x2d\xf2\xde\x49\x14\xf2\x44\x0c\xfa\x2f\x31\x29\x45\xba\x0f\x8c\x1b\x96\x04\x9c\x2a\xaf\xc3\x1f\xb5\xb8\x55\xbf\x09\x62\xda\x39\xe2\x82\x60\xb7\x03\x24\x01\x41\x1d\xe0\xb1\x6c\xd6\x88\xa7\x85\x20\x78\xae\x7d\x25\x8e\x38\x9b\xee\x60\x7c\x90\x38\xa0\xa0\x39\x34\x0d\xcb\x3c\x11\x84\x20\xb9\x9a\x63\x49\xd7\x41\x85\xc7\x1e\x49\x67\x80\x07\x9a\x79\x89\x5c\xc1\x7b\xbf\x9f\xac\x4b\x79\x73\xb7\x5d\xdd\x1a\x4d\x36\xe5\x1a\x2e\x95\xb1\xee\x83\xc8\x6e\xda\xf2\xe5\x64\x7c\x43\xba\xee\xae\x48\x77\x1f\x04\x70\xe0\x5c\xc2\x7b\x4e\xa3\xda\xa4\x24\xfd\x2b\xb7\x5a\xe4\x3e\x0f\x6a\x57\xfb\xc9\xc4\xeb\xb5\xbe\xc5\x35\x51\x63\x5f\xf7\xbc\x26\x47\x72\x49\x46\x2f\xea\x77\x9f\x87\xb8\x31\xe7\x02\xe6\xa0\x4b\x83\xd5\x7f\xc0\x1f\xdd\x8f\x21\x59\xe9\x75\x19\xa9\x46\x54\x85\x03\x3e\xd1\xd9\xd1\x77\x83\xb6\xd0\x05\x98\x9a\xbd\x40\x1e\xef\xe5\xfc\xdc\xb5\xe8\x27\xdd\x44\x1f\x37\xc9\x7f\x73\x14\x41\x5d\x74\x97\xee\x78\x28\xa8\x0f\xb9\xab\x4f\xc8\x44\x85\xc4\x39\xbd\x7f\x92\xda\x92\x88\xec\x09\xa5\x0e\xef\x91\x42\x02\x59\xab\xf4\xb5\x90\xf6\xae\x8a\xb8\x74\x2d\x17\x4a\x9c\x93\x26\x50\x97\xf1\xc1\xe8\x89\x1e\x7e\x09\xf9\x04\xa0\xaf\x82\x83\x82\xa6\x88\xd7\x58\x71\xf0\xb0\xe7\x51\xf1\x1e\x29\x5b\x0e\x45\x75\x5b\x27\x6c\x96\x20\xd6\x92\x66\x2a\x03\xfd\xe5\x4c\x29\x10\x53\x73\x40\x1d\xe6\x71\xd8\x51\x66\xad\x74\x36\xbe\xf1\x9f\x51\xe3\xdc\x75\x3b\xca\xd0\x1b\x02\x4f\x28\xbe\x84\x74\x21\xc5\xe3\x8e\x8c\x4d\x25\x38\x66\x05\x2d\x7c\xf8\xdc\x57\x25\x04\x5f\x05\x4e\xc7\xd5\x89\xdb\x86\xb3\x2a\x61\x6b\xaf\x63\x2a\x54\x07\x1c\xc4\x39\x17\x66\x55\xab\xc4\x3c\xbf\xd1\x1e\x8b\x9e\xbd\x1a\xe2\xa6\x3a\xf1\x68\xee\x61\x2a\xf0\x1c\x1b\x19\x5b\x81\xe7\x61\xa3\xcf\xca\x13\xc1\x35\x89\x99\x41\x7c\x2a\x4c\xa5\xd0\xfe\xc6\xf7\xe5\x00\x71\xe0\x25\xd6\x41\x90\x81\xd5\x1b\x08\x55\xd8\xea\xe0\x35\xfc\x77\x2d\x9c\x40\xf3\x79\x9d\x7e\x0e\xb7\xef\x05\x67\x62\x2d\x0d\x34\xd2\x31\x66\x31\x1d\xfd\xee\xf3\x0b\x2d\x12\x55\x5e\xdc\xeb\xc4\x75\xd9\x21\x14\xea\xd8\x77\xe4\xcc\x41\xf0\x36\x6c\x05\x41\x20\x98\x89\x08\x54\x2b\x38\xda\xde\x03\xb3\x0d\xc4\xbd\xe5\xcf\xd2\x95\x22\x31\x5d\xf6\x3c\xc2\xa0\xad\xd0\xea\x66\xaa\x44\x18\x70\x65\x65\x14\x39\xee\x44\xa1\x1f\xa2\x9e\xf8\xa3\xc8\xca\x5a\x4a\xc3\x2e\xd5\x29\x87\xdb\xc4\xb8\x16\x9a\xc0\xdb\x2f\x78\x61\xb0\xd6\x94\xa4\xd3\x51\x82\x04\x81\xdb\x31\xd1\xa5\xc5\x56\x13\x16\xb0\x01\xd2\x4c\xd5\x08\xc7\xb2\x13\xaf\xb5\x48\xf9\xad\x1e\xa6\x67\xa4\x53\x5b\xab\xd3\x09\xa1\x44\x66\xf5\x0b\x11\xed\x03\xe9\x2c\x8d\x50\x74\x2e\xee\x38\x2a\x9e\xff\x74\xdf\x35\xd4\x29\xa2\x7c\x79\x32\xad\x5a\x54\x03\x6c\xdd\x55\x53\xe6\xf7\xea\x93\xaf\x3a\x19\x46\xaa\x2b\x54\xd5\x1b\xbd\x15\xfe\xa6\xfb\x87\x7f\xfa\x15\xee\xf6\x9d\xa7\x7c\x3e\x1e\x32\x97\x0b\x86\x0c\x0a\xee\xcf\xb2\x38\xad\x7d\x3c\xf8\x15\x8a\xce\x6d\x50\x9a\x73\x10\xaa\xe5\x0e\x29\xf4\x34\x20\x11\x05\xcf\x6c\x4c\xbf\xe2\x5d\x59\x87\xce\xd2\xed\x87\x45\xfd\x6e\xfe\x2c\x03\xc0\xd6\x1d\xc3\x32\x03\xe1\x7b\x3e\xa0\xd3\x54\x6a\xe3\x27\xfe\x21\xbf\xf1\x92\xc9\xff\xb2\x54\xf6\x1b\xb4\xba\x9f\xdf\xf8\x8e\x27\xcf\x6f\xbc\xac\x2f\xbf\x16\x7b\xd2\x08\xbf\x2e\xd9\x89\x11\x89\x88\xef\x1c\x27\x4d\xa8\x4f\x2a\xc2\xb3\x9c\x69\x1f\x8c\x4f\x14\x54\xdd\xd3\x72\xbd\x5f\x8b\x80\x36\x53\x1e\xf0\x9b\xae\x6d\xbf\xa9\xae\xe2\xa6\x27\xf9\x8b\x2d\x87\xb4\x80\x14\x00\x44\xdf\x92\x21\x2e\x20\x74\xa0\xba\x2c\x59\x23\x95\x8a\xb4\xa9\xb0\xe4\x07\x13\x47\x9f\x47\x7f\x2d\x56\x8e\x83\xf1\xf4\x7c\xcf\x06\x45\x6f\xe8\x2b\x09\x3e\xda\x73\xa1\x36\xba\xd4\xde\xcb\x5e\x60\x01\x28\x87\xe7\x1c\xd3\x02\xdc\x0c\xd4\x44\x3c\xa1\xd3\x2e\x6c\xed\xc6\x12\x34\x94\x2b\x40\x8b\xa7\xf3\x96\x4d\x5a\xbd\x48\x28\x47\xe0\x28\xb3\xdc\xf2\x31\xd1\x69\x24\x35\x97\xe4\xb6\x2d\x20\x8a\x85\x92\x60\x09\x14\x25\x61\xb3\x26\x80\x46\xb3\xc2\x42\xff\xff\x49\x1d\xde\x54\x42\x58\x5d\x9d\xb5\x4f\xf0\x09\x9e\xc1\x53\xef\x67\x4b\xda\x34\x1c\x63\xe1\x95\xc7\xf7\x4c\xdf\xd5\x20\xe2\x99\xc6\xbb\xc4\x54\xf5\x77\xf1\x0e\xfb\x1c\x47\x91\x9f\x37\x42\x85\xac\x82\x92\x8a\x01\x17\x71\xdc\xb7\xb9\xd0\x49\x82\x3c\x91\x83\x5b\x61\xf9\xe1\x0c\x19\xdc\x7a\x7a\xb2\x54\x59\xeb\xe8\x95\xbf\x58\x40\x09\xdf\x91\xf6\x51\xfd\x4e\x69\xdb\xc7\x2e\x1b\x6e\xbc\x1e\x68\x6a\x5d\xb7\xdb\xe9\xc1\x64\xb5\x0e\x64\x27\xfc\xba\x6b\xdb\xaf\x3d\x21\x3c\xfb\x00\x65\x7c\xaf\x7a\xe0\xc0\xa8\x89\x1a\x6c\x1d\x49\x12\x24\x41\x77\x5b\x2a\x01\x6f\x43\xdb\xbe\xf5\xb0\x30\x97\xa4\xdb\xb0\x41\xdc\x54\xf5\xf3\x2f\x5b\x2d\x7e\xfe\xe5\xf9\x5f\x29\xea\x35\xc0\xa6\xb7\xcd\xb2\x37\xbc\x3d\x3f\xf5\x46\xa0\xce\x87\x34\x79\x40\xe1\xfe\x64\xf4\x60\x2d\xc4\x57\x54\x3a\x3c\x6d\x75\x27\x19\x62\x5d\xf1\xe5\xf8\x34\x90\xbe\x5c\xf4\x0d\xb1\x09\x4d\xbd\xe7\x25\x1f\xab\xf7\x8c\x22\x2a\x6b\x3f\xdc\x4d\x3d\xb3\x2f\x9f\x91\x17\x44\x9b\xfe\x4c\x74\x03\xc9\xc4\x49\xb8\xd2\x02\x59\x84\x74\xcf\x06\xb1\xb8\xd5\x02\x4b\x79\xfd\x89\x47\xd4\x51\x86\xa4\xca\x3a\x41\x79\xc4\x83\xa4\xae\xd4\xa7\x7e\xc4\x83\xee\xc5\xc4\x83\xc4\x39\xc4\x31\x56\x37\xa3\x1e\xbc\x37\x0f\xca\xa0\xf7\x0d\x01\x81\x64\xb1\x8b\x9f\x52\x3c\x3d\x14\x19\x85\xa6\xf7\x49\x7f\xa1\x26\x6f\xf3\x43\x4a\x44\xa1\x21\xdb\x36\x1c\x4b\xf3\xe9\x16\x41\xd3\x2d\x6a\x2d\x10\x63\x03\xa6\x02\xa1\x06\x2a\x2f\x07\x60\xcd\x35\xd1\xd8\xeb\x48\x96\x69\x26\x87\x0a\x22\x0f\x72\x74\xcc\x9d\x74\x3e\x92\x7c\x47\x12\x0c\x3e\x0d\xb0\x64\x42\x2c\x26\xb9\xc5\x72\xf2\xbb\xc0\x05\x3f\x94\x10\xf6\xd0\x89\x5c\xec\xca\xad\xbb\x36\x43\x28\xe3\x7b\x4e\xf4\xcb\x16\xc9\x6b\x39\x64\x84\x92\x4a\x70\x91\x75\xc4\xc7\x63\xf9\xa5\x41\x5b\x5b\xe5\x7c\xb8\x34\x40\x2a\x30\xac\x03\x89\x20\xba\x85\x85\x81\x2e\x42\xde\xf4\xe1\x62\x47\x28\x13\x18\x1d\x8e\x95\xe8\x23\xd4\xa4\x9c\xe7\x77\xd0\xb9\xb5\x3d\x3d\xc2\x10\xb4\xda\xae\xce\x72\x3f\xe5\xe2\x91\xdc\x1c\xa1\x26\xb2\x94\xea\xe3\x02\xc8\x5a\x50\x4e\x16\x24\xea\x30\x5a\x8d\x4c\xa9\x68\x07\x7b\x81\x22\xca\x1b\x2e\x1b\x1f\x2a\x1a\x68\xc3\x6d\xcb\x14\x7a\x1e\x75\x22\x4d\xb2\x0a\x3d\xa4\x68\x7a\xa6\x0e\x0f\x10\x64\x17\xa9\x50\xf1\xfd\x05\x12\x51\x13\xf6\x23\xf9\x91\x42\x3d\x98\xa1\x50\x7e\xac\x07\xd5\x01\x6e\x26\x14\x07\xb1\xab\x78\x98\x66\x65\x77\x9d\x07\x08\xfa\x43\x93\xd2\x42\x8a\xe8\x32\xf0\xf4\x49\x86\x0e\xb0\xce\x6c\xb1\x00\xa1\x8c\xd0\x70\x22\x71\xa3\x99\x9c\xc9\x34\x1c\x11\x5e\xb2\x2b\xd8\x8b\xb6\xee\x79\x0a\x6a\x38\x74\x1b\x44\x06\x31\x9f\x4c\x99\x3c\x11\x22\x2a\x46\x23\xb9\xa5\x66\xac\xc1\x6d\x8f\xe8\x50\x72\x7d\xbb\x8e\xbb\xed\x00\xd2\x94\x9c\xda\xad\x28\xf6\x06\xd4\xdb\x40\xd0\x2b\x42\xe7\xed\xff\x63\xef\xcb\x9a\xda\xd8\x81\x85\xff\xcb\xf7\x1a\xaa\x80\x80\x43\xa8\x79\x92\x34\xe3\x0d\x08\x4b\x80\x93\x93\xb7\x04\x12\x8c\x31\x8e\x01\xb3\x84\xaa\xef\xbf\xdf\x52\x6b\xe9\x56\xab\x67\x3c\x2c\xc9\xc9\xb9\xf7\xf0\xe0\x32\x1e\x8d\x96\x56\xef\xdd\x6a\xbd\x32\xbf\x0f\xfd\xcc\xb4\x68\xdd\x33\x7e\x44\x9d\x73\x75\xfc\x5b\x98\xc5\xb4\xcb\x85\xc9\xa2\xde\x2a\x3c\x98\x50\xcb\xa1\x18\x05\x11\x8b\x83\xbd\x22\x30\x0f\xf2\x0d\x2d\x07\x2e\xb5\x1b\x55\xbe\x4c\x51\x63\xaf\xd4\x68\xb2\x9d\x8c\xe5\xd6\xa2\xf3\x3c\x93\xfc\x89\x15\x1f\x4e\xee\xef\x48\xf5\x8d\x98\x47\x47\x62\x36\x0c\x90\xf9\x00\x0f\x25\xa6\x3d\x40\xe6\xb1\xe6\xc8\xe3\xd8\x50\x41\x32\xf2\x6a\xa5\xfd\x53\x39\xc8\x5a\xc9\x17\xef\xcd\xf2\xb8\xcd\xe5\x82\x8c\xb6\x08\x98\xef\xad\xc0\xc8\x09\x2a\x42\x0b\xb4\xd7\x6c\xe9\x58\xe1\xbe\x23\xab\x93\xc9\x6a\x1e\xdb\xd1\x3c\xdb\xca\xfa\x15\x24\x78\x72\x27\xaf\x80\x5c\xcd\x89\xd3\xb6\x33\xf5\x6d\x10\x41\xdb\xd1\xd5\xb8\x61\x8b\xf9\x3a\x1b\x6d\xa0\x14\xfe\x39\xb1\x3d\xe3\x95\x46\x0a\xf7\xd6\xc1\x2f\x7e\xe5\xd5\xf8\x48\xb3\x2a\xcb\x3c\x81\xf8\x21\x49\xfc\x44\xec\xcf\x2a\x8e\x45\x09\x8f\x5e\x38\x32\x57\xa2\xff\xdb\xe3\x45\x7b\x9c\x34\xcc\x59\x40\xb2\xf1\x0f\x99\x29\xf8\x1f\xf8\xff\x10\x51\x5d\x2f\x38\x24\x26\xfd\xdf\xbe\x34\xcc\x13\xf9\xd3\x02\xda\x68\x23\xe0\x16\x89\x68\xcb\xde\x0a\x7e\xf2\x41\x62\x93\x8c\xa7\x4a\x2e\x8a\xd4\x7c\x28\xdc\xb1\xea\x85\x0a\xca\xd3\x28\xba\x5e\x39\xf8\xdf\x8e\x67\xaf\xbb\xef\xce\x78\xf3\x76\x3b\x53\x84\xd9\x1e\x8d\xcb\x05\x6a\xab\x14\x35\x5e\xac\xc0\xc6\x19\xdf\x55\x24\x35\x8f\xbb\x95\x9b\x0d\x33\x37\xd3\x82\xa7\xda\xb5\x40\x53\x92\xff\xf1\x1c\xcf\xe1\x02\xe8\x8a\x06\xe3\x02\x75\x10\x41\x89\x7e\x33\x14\x81\xf0\x2d\x75\x37\x65\x16\x74\x82\x17\x0f\xbe\x5b\x6a\x39\x7d\x14\x6e\x9c\x36\xe8\xfb\x42\x40\x30\x3e\x64\x54\x7e\x35\x35\xa9\x19\x44\x66\x8d\x2d\xa3\x97\xb2\xe4\xbe\xaf\xec\xf5\xf4\xa3\x70\xe9\xd9\xec\x25\x89\x4c\x58\xc1\xb5\x07\x5f\x1d\x8c\x46\x7e\x52\x52\xf1\x7e\xc9\x88\x78\x5a\xac\x63\x46\xdf\xc7\x1a\x23\x78\xfa\x94\xd7\x1c\x83\xae\xba\x79\x07\xcc\x3b\x87\x88\xc0\xdc\x3c\xd7\x55\x32\x64\x73\xe3\x69\xd9\xde\x79\x27\x71\xc4\x66\xd2\x78\xca\x6f\x85\x2b\x99\x85\xe7\x88\x5a\xea\xda\x85\x0b\x12\x1f\xc5\x8b\xab\xa4\xa4\x1c\xfc\x86\xd1\x15\xe0\x0f\x0c\x1c\xc9\x85\x50\x6c\x58\x96\xc2\xc2\xd2\x6c\x0c\xba\x05\x9f\xe6\x88\xe2\xdc\x17\xe5\x97\xe0\x88\x2f\x58\xb6\xb2\xc8\xc5\x92\xd6\x23\xdd\x60\x89\x42\x4b\x8c\xc6\x32\xc3\x34\xe5\x20\xd4\xfe\x7f\x4e\x5c\xa4\x16\x0d\x60\xc0\xe8\x27\xf7\xe4\x2a\x6d\x22\xdb\xba\x24\x76\x3c\x2a\xb9\x07\x8f\xe1\x4b\x1a\x3c\x40\x85\x92\x46\x27\x58\x32\x79\x72\x7a\x61\xfe\x54\x07\xa3\x28\x55\x19\xc0\xd3\x93\x12\x7e\x1d\xff\x3a\x32\xab\x75\xbc\xb7\xdb\xba\x49\x25\xc2\x86\xbd\xfc\xb2\x98\x4e\x02\xe3\xbb\xde\x9f\x86\x2b\xc9\xd9\x9d\x0d\x31\xee\x43\x4f\xae\xd7\x12\x99\x88\x31\x4c\x4d\xc2\x64\x87\x94\xab\x18\x72\x62\xb6\xf9\xbd\xc4\xb2\x9b\x95\xb5\x51\xc3\x82\x44\x5b\x17\x28\x38\x03\x9f\x50\xfc\x9d\x1f\x70\x60\x66\x4c\x6e\x12\x6c\xea\x56\xe3\xff\xc9\xf4\x14\xb5\x06\xcf\x25\xea\xc5\x58\xaa\x09\xd1\x28\x20\xce\x91\x65\xb6\xd6\x24\x28\x74\x8c\xf8\x32\xbe\x22\x94\x0c\x2b\xc5\x48\x0f\xfe\xdb\x1c\x80\x8b\xe6\x21\x6f\xc2\x62\x92\x82\x74\x28\x5c\x91\x58\xbc\xd5\x31\xa7\xa9\x87\x2c\x08\xb9\x80\x7c\x16\x10\x5f\x7d\xa8\x27\x85\xc9\xa2\x50\x0f\x43\x6c\xb6\xea\x5c\x0b\x6f\x72\x6c\xd7\xd9\x1d\x75\x6b\xe9\x94\x84\x9d\xb2\x8f\x26\x29\x9f\x88\x5f\x81\x15\x14\x24\x80\xff\x04\xc3\x73\x2c\x47\x0a\x9f\xe0\xe0\x78\xcc\x7a\x58\xe8\x78\x9a\x66\x61\xd5\x9a\x05\x4d\x9e\x36\xbb\x5f\xbf\xa0\x8a\x65\x61\xb2\x68\x29\xcf\x54\xfb\x97\xae\xb2\x7e\xdb\xd8\x2b\x35\xfe\xc2\x3c\x8c\x9c\xb8\x54\x36\x6a\x02\xdb\x38\xac\xcf\xbd\x87\xef\x18\x2f\x93\xd2\xb3\x04\x01\x44\x1e\x44\x15\xb9\x4b\x72\x61\xdb\x41\x78\x6a\x9e\xf4\x8a\x00\xe1\x35\xdf\x43\x2c\x2d\x2b\x08\x9b\xa9\xe1\xd6\x69\x7d\x66\x05\x3c\x0e\x2c\xf0\x5a\x4b\x81\xf8\xe2\xb9\x21\xb2\x45\xaa\x40\x90\x80\xd7\xcf\xe0\x84\x4f\xf0\xc0\xd4\x47\x70\xdb\xb2\xcb\x5f\x87\x43\xa3\x3e\x61\xc0\x72\x9a\x3f\x7e\x4b\x5f\xe7\x9d\x4b\xbe\xe0\xe6\x6f\xc2\x47\xe1\x2e\x12\xc0\x63\x13\xed\xf0\x7a\x66\x5a\x04\xc7\x0b\x56\x45\x47\x0e\x7a\xb7\x71\x80\xb5\x45\x94\xb6\xef\xc6\xec\xc3\x2e\xd9\x0d\x58\x25\x4a\x55\xf9\x5c\x4d\xd4\x4d\xb3\x8c\x1c\x4e\x68\x8c\x6b\xd7\x68\x7a\x39\x37\x4c\x67\x49\xe5\x00\xb2\xb7\x5c\xf7\x99\x67\x49\x48\x89\xbe\xb0\x5c\xc3\x2c\x9f\x6a\x27\x6d\x50\xdd\xb2\xc9\x4e\x7a\x30\xac\xdc\x3f\x57\x03\x31\x7b\x6e\xe1\xd2\xef\xca\x56\x4b\xaf\x57\x1f\xdb\x40\x26\xaa\xb9\x1e\x6b\x5f\xee\xab\x11\xb9\x5d\x53\x22\x59\x1e\x20\x13\x99\xee\x93\xf4\xc7\x48\x5d\x59\xf4\x84\xa1\x7b\x9d\x56\x91\x25\x0c\xbd\x56\x3c\xf6\xb9\xe3\xbf\x3c\xba\xd8\x38\x60\x1e\x3d\x6a\xbd\x09\x29\xc0\xf9\x9d\x96\x6d\xac\xe3\x02\x4e\xcb\xb6\x34\x63\xfd\x28\xcf\x35\x4f\x11\xeb\x61\x13\x5a\x04\xed\x84\x6e\x4a\xd1\xaa\xc5\xae\x73\xc6\x19\x18\x5e\x93\x3e\x33\xce\x2c\x58\x36\x27\x14\x87\x2d\xd7\x8c\xf8\x54\x89\x0a\x59\xa3\xf0\xf6\x68\x81\x2a\x16\x63\xed\x4d\xcb\x5d\xfd\xb7\x2c\x25\x53\xa1\x6b\x3d\xc6\xd8\xb7\x34\x32\x36\x69\x16\xa0\xab\x5d\x72\xc9\x0b\xeb\xa8\x9d\x58\x58\xf5\x9a\xb1\x60\x6e\x73\x87\x3e\xce\x36\xf6\x5a\xf0\x9b\x44\x5b\xa4\xba\xe6\xf2\x70\x62\x5e\x35\x41\xba\x2d\x11\xd6\x12\x26\x31\x55\x98\x7c\x97\x96\xd2\xec\x67\x65\xe0\x43\xd3\x84\xe8\x40\xb5\x08\x98\x1b\x32\xcb\x9a\xa1\x1d\x77\xe8\xd4\x30\xe4\xdc\x1d\xf1\xdb\x0d\xe9\x17\x19\xa8\xf5\xc6\x15\xce\x04\x63\x87\x88\xff\x94\x7c\xe2\x88\xe5\x33\x23\xf6\x4d\xeb\xcd\x93\x0c\xff\xc1\x94\xab\x5f\x2a\xd3\x9b\x11\xbc\x76\x27\xa4\xab\x21\x1e\xf8\x5d\x9e\xf2\x4e\x84\x83\x53\xa3\x2c\x1d\x7c\xa1\xe6\xb3\xf6\x4f\x41\xa9\x96\xe1\xd4\xe9\xae\x1c\x73\xa0\x71\x7a\x90\xb2\x5a\x10\x81\x58\xd8\xc3\xb4\xe4\x36\x2a\x36\x6c\xbb\x67\x6b\xed\xf6\x4c\x8c\xa4\x36\x4f\x9a\x45\x5c\xd9\x5c\x6a\xb2\x00\xd0\x7a\x80\x73\xbf\x80\x2a\x4a\x99\xed\x02\x8f\xe7\xe6\x79\x2e\xa7\x51\xf5\x13\x4f\xee\x17\xec\x7c\x2f\xf2\x67\x56\xa0\x10\xbe\x85\xeb\xfb\x66\x25\x57\x43\x52\x3b\x89\xac\x05\x4f\x6b\xb1\x33\x89\xbc\x9a\x05\x76\xf3\xf1\x05\x77\xde\x46\x5e\x4a\xbb\x16\x0a\xc3\x0a\x4a\xe4\xa6\x58\x32\x71\x1a\xaf\xec\x62\x0b\xab\x54\xcd\x35\x20\x49\xa7\xf3\x6c\x1e\x95\xe2\xc5\xf0\x1e\x35\x07\x43\xf4\x73\xa0\xf6\x93\x1d\xd3\x00\x49\x82\xd0\xc5\x35\xd2\xc0\x68\xca\xb6\x0a\x57\x7b\x04\x1d\x31\x18\xc9\x48\xd9\x00\x3f\xaa\xce\x8c\x7b\x81\x19\x7a\xb3\x1b\x79\x06\x62\x22\xfc\x86\xbb\x96\x9f\x1c\xed\xf0\x3a\x9e\x05\x2b\x55\xc8\x26\x87\xa0\x46\x80\xe2\x46\x7c\x94\x6e\xad\xc5\x36\x4f\x98\xd7\x03\x75\xa3\xa1\x84\x47\x3c\xc6\xdf\x6c\x93\xb3\xca\xdf\x1c\x97\xd0\xdf\x88\x62\x0a\xcd\xc5\xa1\x8e\xc2\xf4\x72\xee\x82\x14\x36\xa3\xb7\x94\xd2\xda\x4e\x38\x89\x9c\xac\x02\x75\xd2\x77\x71\x43\xc3\x29\xdc\x4e\x56\x3a\x47\x48\x06\xe3\xe7\x4d\xe3\xce\x17\x2e\xad\x2b\xd1\x8e\x87\xcc\xeb\xb8\x3a\x4c\x53\x39\x92\x4a\x06\x4c\x8b\x6c\x3e\xd7\x4a\x76\x84\xf5\x80\x1c\xe2\x63\xe3\x85\x29\x06\xf3\xb4\x58\x0f\x28\x24\xd1\x2c\x6b\xea\x21\xbf\x9d\xeb\x4f\xe8\x01\x21\xb9\x2b\x5c\x3d\x92\xf7\x30\xfd\x5f\x3a\x87\x97\xe3\x83\x70\x6f\x60\xf3\x2a\xca\x57\x80\x43\xa3\x8c\xe6\x0c\x08\x03\xe7\x28\xf2\x94\x25\x68\xb1\x75\xa0\xf7\xe4\x72\x2b\x34\x6d\x9b\xa5\x45\x7e\x57\x5f\x6a\x14\xa7\x01\xeb\x55\xb9\x02\x12\x53\x7b\x44\x79\xfb\xb4\xd6\x6c\x0d\xe9\xe4\x0b\x5e\x8b\xe9\x57\xb6\x46\x9e\xc9\x14\x4d\x83\x46\xce\x73\x57\xc9\xfc\x14\xb9\x3b\xa2\x23\x2b\x0e\x51\x16\x16\xa4\x2a\x46\x8d\x53\x3a\xa9\x99\x23\xa7\x54\x55\xec\x02\x20\xec\x09\xb5\x58\xb6\x30\x14\xd8\xa9\xf5\x21\xac\x61\x92\x5d\x99\x57\x6b\xe5\x26\x98\x39\x31\x5c\x21\x4a\xd7\x4e\xba\xc1\x41\x93\xa5\x77\x0c\x01\x2e\x1b\x99\xe5\x4a\xe7\x70\xdb\xac\xaf\xb2\x2a\x1f\x28\x25\x1f\xec\x01\xdb\x5c\xf6\x14\xbf\x31\x3d\x38\xd1\x32\xae\xbb\x1c\x27\x5b\x40\x23\xc1\xd3\x4e\x56\xc0\xbc\x45\x0f\x69\x0d\x69\x5a\x68\x30\xe1\x0b\x4d\x25\x61\x05\xc5\xe4\x37\x33\xaa\xa7\x11\xbc\x84\x23\x03\xef\x93\xef\xd0\x4a\xfc\x0c\x29\x1a\xb5\x67\xf2\x91\xce\x93\xee\x3a\x16\x13\x8b\x14\x99\xdd\x11\x13\xf7\x22\xab\xf9\x2d\x4d\x1e\x67\x52\x6b\xa9\xe7\x5d\x3f\x66\xdb\x8c\xc8\x04\xdf\x90\x6a\x25\xf7\x89\x44\xaf\x12\xf2\x33\xc6\x11\xf7\xa2\xa1\x82\x29\x66\x25\x06\x54\xda\xa4\xa5\x96\xea\x11\xa8\x8e\xbf\x8e\x5a\x55\x9b\x7b\xea\x60\x09\xd1\x74\x1a\xaa\x8b\xfe\x86\x21\xd0\xbc\x0a\x43\xac\xbe\x98\xfa\x7e\x91\xb8\x45\xa2\x62\x88\x53\x49\x17\x0d\xb0\x36\x82\x24\x29\xc8\x15\x18\x92\xa0\xa9\xe3\xc8\x5e\x6b\x7c\xc6\xae\xb1\xf5\x36\xec\x1f\x97\x53\x8b\x01\x50\xbb\x4c\xca\x9e\x9f\x8b\x06\xbf\x74\xce\x75\x8c\xd1\xeb\xf7\xcf\x85\xf3\xaf\x45\x5d\x16\x26\xf9\x07\x24\xfe\xa4\x81\x11\x2e\x90\xa9\xc8\xaa\x1b\xb6\x33\x51\x0e\x36\xb3\x2b\x33\xd9\xec\x6b\x02\x00\x93\x86\xfd\x43\xef\x6c\x98\x64\x52\x76\xb3\x61\x6a\xfc\xb0\xc7\x73\xd1\x1a\x15\xd4\xb6\xac\x34\xa9\xa5\xdc\x52\xe7\x2d\x58\xf1\x78\x3e\x49\xef\xd5\x81\x97\x30\xca\x83\x2a\x57\x85\xe7\x6d\x70\x6c\x24\x9f\xb4\xa1\xf8\x1b\xc0\x8b\x79\xc9\x60\x24\xf6\x5b\x24\xde\xfa\xf2\xc4\x2a\xf5\xe8\x8c\x1d\x38\xaf\xf4\xd2\x0d\xf1\x91\xc6\xf1\xa0\x89\xe1\x2e\x66\x1c\x90\x3a\xb4\x70\x92\x18\x53\xa8\xb0\x16\x89\xa4\x7d\x36\x13\xf6\x2a\x0d\x96\x4a\x1e\xe0\xfc\x95\x69\x76\x1f\x45\xaa\xe5\x12\xe8\xe6\x5e\xc6\x8d\xec\xe5\xd6\xde\x4f\x68\x43\xfd\x81\x48\xf8\xa9\x67\x30\x81\x98\x60\x70\xe2\x4a\xba\x29\x01\x7f\xe0\x9b\x80\xd8\x41\xbb\x4c\xaf\x95\xc9\x76\x0e\x8f\x28\xd1\x97\x30\x31\x0b\x76\x6e\x9f\xde\x3b\x32\x91\xed\x86\x76\x3b\x27\xc1\x1d\xb7\x8f\x3d\xc5\x26\xb9\x33\x75\xb5\x5c\x00\x8d\xdf\xbc\x30\x78\x82\xb1\x3a\xe9\x58\x21\xae\x2e\xdd\x57\x4a\x09\xbe\xee\xbb\xa9\x51\xdb\x0b\x17\x7e\x60\x31\x94\x3a\x0e\xa5\x79\x42\x81\xd4\x2d\xfe\x86\xa1\x1e\xc4\x24\x6c\x57\x61\x32\x16\x3b\xea\x20\x05\xbe\xb0\x2f\xfc\xa8\x8d\x83\x2d\x57\xec\xfe\x92\xff\x76\xf5\xff\xd6\xae\xca\xe2\x03\x19\x6e\x2e\x3e\xe6\x2f\x16\x1f\x99\xa6\x97\x6c\xc7\x5d\x2b\x7e\x85\x43\xa4\x51\x12\xaa\x24\xfc\x79\xf8\xfc\x1a\x2b\xc7\xa7\xf0\x20\x25\x02\xaf\xc3\xfd\x79\x7b\xfe\x04\x3a\xc4\x41\x9a\xb4\x8b\x55\x2d\xa6\x54\x44\xd2\xe2\x36\x47\x6e\x76\xce\xfd\x6e\x4b\xe0\xc6\xbe\xf2\x91\xaf\xff\xbd\x98\x25\xc1\x24\x61\x71\x33\x5d\x8f\x82\x8c\x2b\xe2\x52\x52\xde\xb3\x08\x3a\x0d\xba\x12\x76\x99\xe8\xea\x9d\x97\x60\xdf\xe2\xf4\xc4\x82\x5c\x85\x3a\x50\xf5\x67\x05\x1e\xb2\x22\x73\xf5\xa7\x0f\xa4\x2b\xca\x18\x1a\x36\x67\x4b\x22\xd1\xb3\xb9\xa7\xda\x29\x5b\x45\x26\x4a\x6a\x2c\xc9\x50\x33\xba\x96\xd3\xc0\x37\x21\xc5\xc4\xf0\xbb\x21\x7f\xaf\x9e\x8d\x66\x0d\xed\x32\x46\x16\x61\x8a\xe5\x9f\xc0\xee\x5e\xcc\xbe\x0a\x72\xad\xb0\xa4\x98\xa4\xfe\x21\x8d\x75\x79\x0a\x48\x70\xdc\x15\xee\x11\xc6\xf7\x98\xef\x44\x42\x3d\x81\x67\x36\xa2\xde\x93\x95\xa8\x66\xae\x9b\x4b\xb5\x19\xe7\x2b\x64\xa8\xf0\xdb\xb6\xfb\xa6\x94\x21\x48\xe0\x30\x01\x3b\x44\x1c\x42\x3e\x8d\x19\x7a\x3d\xef\xe7\x4f\xfc\x03\xed\xd2\x29\xc6\x86\x69\x77\xb5\x6e\x81\x38\xcd\x47\xdd\x66\x9e\xd8\x0d\xcc\x33\x02\xb6\x70\x59\x42\xbf\x6f\x9e\xc4\xfa\x0f\x38\xfa\x9d\xbc\x77\xa5\x95\xba\xca\x0a\x18\x25\xd4\x99\x24\x0f\xb5\x6a\xcf\x01\x94\xbd\xce\xf0\x05\x73\xb8\x68\x71\x1f\xe8\x9e\x65\x20\x44\xbe\x4e\xef\xcc\xf1\x9d\x32\x7c\x47\xe9\x24\x78\x2a\x4a\x09\x13\x7f\xc9\xb4\x13\x07\xfd\xdd\xaf\x98\x36\x23\x20\x92\x1c\x51\x9b\x79\xa8\xac\x26\x65\x3f\xed\xac\xf7\x05\x01\xc6\x10\x2b\xb5\x85\x2e\xfb\x76\x6e\x27\x12\xf6\x3d\x92\x84\x27\x74\x80\x65\x57\x29\x86\xba\x78\xd7\xd4\x08\xb2\x7f\xca\x3c\x6e\xea\x6e\xf1\x9b\xff\x2a\xa5\x54\x51\x18\x73\xad\x95\x83\x3a\x15\x3a\xc8\x71\x30\xeb\x0e\xe1\x81\x22\x89\xdc\x1f\x19\xf4\x39\xff\x13\x92\xaa\x8c\x31\xec\xe6\xc9\x8d\x6d\xc2\xf1\x77\xe3\x95\xe6\x79\x46\xe4\xa3\x9f\x1c\xcd\xa9\x4b\x0a\xaa\x86\xb2\x6d\x98\xd2\x9a\x9c\xe3\x0b\x99\xee\x68\xb1\x27\xdc\x7a\x8d\xdc\xd5\xcc\x75\x41\x76\x8b\x14\x9a\xd8\xd8\x17\x8a\x29\x6c\x9c\x84\x51\xd7\x2a\x2e\xf0\x59\x36\x85\x51\xbc\x0c\x7d\x72\xcf\x2c\x3e\x66\x3e\xca\x34\x58\x9b\xbd\x82\x6e\x77\x7c\x25\x61\x60\xe1\x42\x3c\x7c\xe5\xa3\x7c\x9b\xb6\xf7\xec\x92\x79\xb3\xad\x9c\xd0\x1a\xf3\x26\xfa\x04\x44\xbb\x06\x73\x52\x25\xa8\xa7\x3e\xd5\x82\x5c\x8f\xb1\x2b\x5c\x1c\x9f\x24\xd7\x4e\x0d\xcf\x2f\x49\x15\x0a\xa7\xee\xe2\x6f\xc4\x18\x71\x5a\x0f\x5f\x24\x62\x52\x32\xa1\x89\x87\x06\xbf\x0e\xc1\xf7\x17\xed\x1a\x1d\x38\x1f\x53\x69\x6a\xd5\x9c\x04\x69\xd7\xca\xa7\xbe\xde\xe2\x69\x3a\x0c\xe2\x4e\x97\xac\x08\x5f\xc6\x90\x1e\x8d\xd3\x00\xfa\x27\xb1\x81\x87\x8a\xae\x3d\xd3\x47\x0b\x76\x9c\x8a\x8f\x95\x24\x3a\xdc\x45\x38\xd6\x16\x02\xa2\x7c\x05\xe7\x99\xab\x7d\x1b\x65\xfd\x98\x6c\x69\xf0\x1e\x11\x7e\x85\x73\x25\xd3\x55\xd1\x26\xcc\x58\xe0\x55\x08\x0b\x57\x02\x1a\x8f\x34\x25\xce\xf6\x63\xae\x51\x61\xf7\x69\x96\x31\x57\x2f\x1d\x62\x63\x1d\xc3\x04\x6e\xc9\x11\xf9\x88\xb8\xde\xe2\x03\xbe\x98\x23\xf2\xd8\xb4\x83\x35\x3d\x6e\x84\x72\x40\xd2\xbd\x91\xd1\x08\x3e\x41\x3b\xe4\xa8\x47\xc0\xf2\xc2\x69\xa1\xfc\xaf\x41\x80\x70\x4f\x4c\xf8\xff\xb4\x9e\x3f\x84\xb1\x4f\x09\x14\x19\x33\xab\xe2\x59\x18\x82\x4c\x40\x55\x28\x76\x18\xbf\x36\x18\x90\x67\xec\x91\x25\xaf\x72\x47\x29\x93\xb9\x4e\x8a\x24\x97\x38\x30\xa8\xe4\xc1\xa6\xa9\x49\xd0\x17\x81\xc5\xfa\x4f\x5e\x9a\x64\x10\x43\x6e\x2d\xd1\x12\x5a\x4b\x6c\xf9\x69\xa9\xb7\x6c\xf9\x88\xe8\x52\xea\x20\xf3\x27\x32\x6c\xeb\xe5\xf1\x7a\x14\x54\x5d\x49\xbc\x90\xed\xe4\xa9\x53\x5e\x21\x53\xe5\x63\x55\x2e\x19\x55\xa9\x57\xd0\xb2\x54\x75\xf3\x2a\xfd\x3c\xfb\xcf\xa9\x79\x85\x52\x0f\x95\x7a\xad\x45\xfd\x1b\xfe\x94\xf9\x61\xf2\xb5\x46\x68\xcc\xcd\x1f\x07\x0d\x65\x6e\x84\x19\x2f\xfc\x0b\x7a\xfc\x43\x38\x9c\xc6\xd4\x54\xe0\x29\x51\x4e\x17\xce\xef\x0e\x44\x20\x25\xba\xa3\xfd\x85\xdf\xd2\x9b\xbf\x22\xc5\x74\xfc\x21\x53\xc6\x7a\x09\xe7\x66\x9c\x13\xed\x78\x4c\x55\x65\x41\x82\x1a\x77\xde\x26\x7e\xe5\x69\xf7\x05\x9e\x68\x42\x3e\x9a\x38\x72\x26\x9a\xb8\x23\xd8\x50\x89\xa1\xba\x46\x73\xa6\xd1\x21\x89\xf0\x64\x2e\x41\x74\x32\x08\xde\xa3\x52\xec\x4b\x72\x8f\xc2\x37\xe9\x01\xf6\xca\x3c\x4f\xcc\xb7\x8d\x86\x19\x7e\xa4\xfa\x47\x97\xab\x82\x6c\x10\xf6\xad\x4a\x02\x80\xd4\x71\xd7\xf6\x3d\x83\xde\x43\x76\x36\x92\x01\x32\xe1\xc1\x9b\x99\xde\x62\x32\x6f\xc2\x35\xbd\x9b\x94\x95\x4c\xa0\x39\x35\xd2\xfc\x04\xd5\x40\x30\x01\x67\x15\xeb\xbc\x70\xb9\xcc\x5e\x82\xde\x94\x4a\xdd\x80\xd7\x61\x1e\xb5\x21\x04\x2c\x22\x99\x7c\x25\xbf\x94\x71\x9b\xba\x37\x52\x00\x2e\xc7\x31\xf8\x21\x75\xa9\x64\x15\xdb\xdb\x84\x1e\x3b\xf4\x14\xba\x49\x4d\x54\x9c\x35\x06\x72\x85\x94\x95\x52\xec\x01\x57\x98\x5b\xdb\x1d\xb9\xbc\x4f\x90\xc6\x8f\x82\x82\x2f\xe8\x0d\x3c\xf9\x89\x2d\x33\xc2\xaa\xe4\x08\x91\xbb\x0f\x66\xc2\x4d\xf7\xb8\x7a\x66\x95\xc3\x6f\x72\x79\x8a\x9a\xed\xf2\x17\x06\x16\xac\xfe\x37\xb2\x51\x69\x87\x52\x20\x67\x15\xb3\x30\xa0\x80\x6b\xca\xb7\x77\xcd\xf0\xcd\x91\xbc\xfa\xb9\x96\x34\xcb\xde\x63\xaa\x2e\x43\x95\xb4\x7f\x6f\x9c\x7a\x03\x8c\x79\x3f\xa2\x9e\x1f\xeb\xaa\x37\x4d\xa4\xa3\x25\xfd\x92\xa8\x96\x42\x39\x01\x31\x4e\x98\xf4\xba\x61\x44\xe5\x94\xf9\x33\x6b\xa6\xb4\x56\x2e\x18\x5e\x00\x55\x41\xca\xa4\xb2\xfd\x4a\x0f\x5e\x34\xa2\xbe\x84\x2b\x42\x54\xc3\x4b\x1a\x69\xb0\xb0\x3b\xcd\xe3\x20\x89\x31\x8f\x5f\xd3\x88\x53\xcf\x20\x5b\xcd\x5f\x08\x90\x94\xa2\x5e\x6e\x82\xf6\x3d\x2d\x5f\x4d\xfb\x7e\xd5\x3f\x53\xed\x38\xbf\xd4\x8a\x03\xa9\x33\xf3\x4e\x81\x41\xbc\xcf\x98\x81\x52\xe6\xc4\x7e\xcc\xc4\xc3\x7c\xae\xce\x03\xf7\xc6\x40\xe1\x3b\x83\xed\x07\xa4\x68\x13\xc6\x4d\xe0\x5f\xf4\x8e\xc2\x9e\x09\xd7\x69\xa7\x8e\x86\x69\xaf\x40\xf7\x3e\x46\x6c\x70\xb3\x22\xab\x2c\x5c\x88\x30\x11\xff\xf4\x30\xc9\x5b\xad\xd4\x5b\xf9\x1e\xf9\x82\x45\x10\xf0\xee\xd4\x3c\x6e\x95\x9c\xe9\xc5\xa4\xee\xda\x22\x00\xa8\x6c\x31\xd6\x8b\x3c\x1e\x3b\x60\xba\x96\xf4\x5a\xca\x7b\x68\xbc\x11\x07\x46\x80\x06\x7e\xb4\x69\x38\x4f\x4e\xd1\xdd\xf9\x6b\x89\x3f\x27\x85\xad\xeb\x16\xc1\x8f\xff\x32\xaa\x21\xe2\x9f\x41\x69\x2b\x29\xaf\x13\x76\x83\x31\xfc\xdc\x6d\x74\x57\x35\x18\xbe\x11\xca\x05\x1e\xe7\xa6\x85\x31\xb0\x96\x5e\x9e\x64\xf9\x48\x03\x65\xe8\x65\x66\xb7\x5c\xb0\x85\xa6\x09\xa7\x7e\x29\x68\x8e\x20\x3a\xa0\x03\x82\x5f\x7f\x0d\xe3\xa1\xb3\x05\x5f\x4e\x32\xb7\x47\x74\x76\x52\x96\x02\xce\x89\xc9\x76\xec\xdf\x60\xd2\x82\xd4\xd7\xad\x56\xea\x56\x13\x2a\x80\x56\x91\x47\x40\x67\xdf\x62\x7d\x80\xe4\xc6\xd2\x71\x49\x10\x29\xf6\x5d\xf0\x8b\xd7\x31\x30\x16\x01\xe3\xc5\x2a\x4b\x05\x91\xb4\x19\x01\x1f\xb8\x3a\x95\x20\xca\x6a\x29\xf6\x2a\x89\xc9\x3c\x3b\x65\x59\xce\xf4\xf1\x48\x5a\xa5\xf9\x61\x2c\x94\x44\xc0\xcc\x9c\xd7\xb8\x65\xcd\x29\x26\xa9\xf9\x41\x56\x2e\xe8\x25\x3c\xe2\x97\x2a\x0d\x15\xb1\xa4\x53\xf7\x2a\x67\x32\x09\xec\xb2\x8a\x16\xa9\x3c\xd8\x46\xf4\x05\xff\x57\xfb\x00\x24\xfe\x46\xf4\x58\xdc\xa1\x88\x59\x5e\xa7\x96\xc2\xbc\x85\x31\xcb\x49\xa0\x97\xba\xaf\x51\x7b\x29\x8c\xe9\x06\xcb\x3d\x86\x6d\x56\xc1\x6b\x7c\x6b\x38\xf1\x42\xf8\x55\x29\x73\xa6\xed\xe7\x84\x4a\x3a\x0c\xf9\x24\xbc\x71\xc3\xe1\xf5\xc5\xd0\x4e\x37\xbb\x83\x40\x29\x73\x47\x02\xf8\xd3\x3e\x91\xb3\x94\xce\x78\xd4\x42\x59\x36\x54\xb0\x6c\x9a\x34\x5b\x46\xf2\x2c\x90\x0f\xe6\xa1\x8e\x04\x79\xd9\x27\x13\xc5\xb7\xf3\xc4\x83\x31\xad\xab\xa3\x94\x51\x0f\xfd\xfa\x18\x33\x22\x3d\xe2\x95\xb0\xed\xf7\x7e\xf0\x08\xa0\x08\x90\x04\x15\x3a\x15\xe1\x10\xf8\x0d\x85\x1e\x2c\xce\xd1\x60\xe1\x6a\x8c\xa0\x28\x90\x6a\xf7\xb0\x34\x0e\x49\x1a\x33\x59\xcd\xe8\x2d\x0f\xe2\x3f\x76\x23\xdb\xea\x0b\x9a\x52\x9f\x6c\x1e\x0d\xa0\x24\x78\x39\xd5\xfe\xa0\xed\x8f\x3e\x20\xef\xa5\xce\x59\x0c\xbe\x95\xa4\x2d\xae\x65\xfb\x2f\x59\xec\x06\x93\xce\x1a\xa7\x08\xfb\xfb\xd8\x6a\x7f\x11\xa8\xc2\xfe\xfe\x8c\xeb\x48\xf6\x73\xc4\x8b\x0c\x01\xc9\x81\x58\xf8\x4c\xe6\x54\x18\xa3\x9c\x5f\x67\xd2\x4d\xe0\x41\x33\xdd\x72\xfb\x72\xe4\x3a\xf6\x11\x01\x81\xb6\x70\xf2\x0c\xab\x70\x05\x8c\x06\x9a\xbf\x45\xca\x26\xec\x01\x72\x29\x76\xb9\xe4\x16\xd0\xc6\x70\xfd\x10\xfb\xe5\x61\x7b\xdb\xf0\x67\xdf\xfe\x9c\x1d\xad\x43\xfd\xc6\x12\x11\x4f\x65\x82\xed\x5c\x7b\x39\xb9\xc2\xbb\xf7\x26\xec\x05\x52\xad\x91\xa8\x36\x1c\xdd\x67\x55\x8d\x98\xf1\x95\x3b\x29\x67\x59\xe5\x12\x06\xc5\x5c\x9c\x25\x35\x13\x24\x45\x01\x3f\x72\x91\xbe\x70\x3c\x96\x20\x92\xbc\x9c\x14\x6a\x41\xb7\x1c\x4b\x14\x62\xea\x31\xce\x10\x77\x3c\xef\xfa\x21\x4b\xa4\x40\x37\x35\x3b\xc5\x10\xb5\x13\x5a\xf4\x42\xf2\x05\x56\x18\x3f\x85\x2e\x10\xed\xb0\x4d\x22\xce\x42\xf4\x1f\x15\x16\xe8\x16\xad\x36\x34\xd3\x50\x79\x47\xdf\xb1\x64\x2f\x33\xa6\x1a\xa6\xf4\xd8\x23\xf6\x44\xca\x64\xbd\x2e\x88\x9a\x3d\x73\x60\x61\xdf\xa1\xb3\x70\x6b\x38\x76\x16\xdb\x78\xca\xe4\xbb\x88\x46\x0f\xae\x03\x49\xa0\x66\x52\xab\xa5\x98\xde\x29\x41\x82\x99\x49\x15\x56\x0e\xc5\xa8\xb8\x54\x1b\x48\xe2\x3a\xb9\xf6\xb3\x66\xd8\x31\x93\x82\x95\x1d\x41\x34\x94\xec\x35\xf4\xfc\x44\x14\x0b\x8c\x06\x91\xb8\xce\x0b\xce\xa8\xa9\xcb\xfd\x34\xd2\x7b\x0c\xf9\xf1\xa9\xf4\xaf\xe4\x53\xab\xd2\x90\xb8\x74\xaa\x47\xd2\x82\x52\x6a\xa1\x96\x8e\xa4\x03\x84\x86\xf3\x76\xe5\x28\x12\xc9\x75\x6d\x1c\x20\xa6\xf5\xa2\x2b\x97\xcb\xe3\x45\xa2\x0b\x7d\x58\xaf\x2b\xba\x1e\x88\xe8\xba\x59\x24\x62\xb0\xba\xce\x7c\xd8\xba\x69\x72\x94\x9c\x68\x40\xd4\x53\xf2\x46\x2b\xf5\xc6\x37\x39\x37\x4a\x9d\x93\x09\x56\x92\x4c\x7b\xdb\x90\xe6\xf8\x4b\x65\x1a\xbe\x8e\x7e\x1f\x26\x2b\x80\x92\x5c\x5e\x90\x77\xdd\x4b\x52\x46\xb2\x65\x99\xc8\xe7\xb2\xa5\x9d\x54\x1b\xcb\xde\x27\x49\xaa\xe5\x08\x3f\xa1\x93\x45\x97\x87\x70\xf2\x2f\x93\x81\x28\xa3\x68\x2e\xa4\x84\x80\xcc\x72\x09\xbd\xdd\x65\x63\xa7\x56\x89\x97\x73\x4c\x7c\x65\x97\x81\x46\x16\x4d\xc3\x8f\x4d\x7d\xce\x4d\xad\x48\xf4\x3c\x00\x1e\xd3\x81\xf0\x23\x91\x99\x1d\x32\x64\x01\x35\x8f\x59\xc7\xac\x7e\x2b\x21\x03\x3e\xc4\xc8\x20\x17\xbe\x19\x12\x8e\xcc\x62\xd7\x12\xd7\xc3\xbd\x4d\xa7\x88\x28\xd2\x15\x33\x84\xd8\x2b\x19\x78\x59\x22\x61\x38\x30\x05\x1f\x38\x2d\x4f\xcb\xc9\x80\x77\x25\x1f\x10\x09\x81\x06\x13\x71\xfa\x34\xef\x2d\x4e\xbb\x6c\x2d\x61\x64\x14\x8c\x66\x65\xe6\xcb\xa9\xd9\xfb\x0d\xf9\x84\x88\x24\x88\x1a\x39\x2d\x17\xeb\x06\xa3\x29\x12\x5c\x98\x48\x62\xb7\xb8\xd6\x10\x38\xbb\xdf\x37\x14\x82\x61\xc0\x62\x09\x0f\x0c\x9b\x9b\xc1\xb6\x59\xd6\xc7\xb0\xf9\x2d\xbd\x54\x62\xb1\xa6\xdc\x6b\x22\x55\x18\xae\x45\x6b\xb6\xed\x35\x0c\xf4\xce\x3b\x76\x99\x26\x9c\xeb\xcd\xab\x9a\xeb\x71\x0c\x5e\x4c\x55\x91\xe1\x25\x41\x16\xf9\x5b\x6d\x68\x3e\xc7\x87\x59\x97\xf3\xac\xda\xfd\x1d\x95\xf5\xf3\x95\xf7\xb2\x71\x96\x2d\xf7\x37\x27\x91\xc7\x45\x3b\x9d\xbf\x32\x96\x2b\xb2\xff\x23\x7b\xce\xc8\xaf\x05\x6b\x69\x82\xe0\xbc\xe1\xda\x05\x64\xc3\x92\x87\xa9\x06\x21\x3a\x59\xae\xb7\xc4\x20\x1a\x10\x32\x12\x64\x29\xd9\x86\x05\xc4\xa1\x6b\x14\xd9\x59\xe5\x14\xd9\xbb\x41\xbb\x98\xe0\x9c\x9a\xad\x74\x22\xac\x08\x33\xd7\x1e\x7c\x38\x86\xb3\x91\x34\xda\xb1\x56\x2e\x08\x4e\x5c\x67\xf6\x78\x12\x7b\x9c\x64\xa7\xbc\x6c\xc3\xcf\xc4\x9e\x45\xd5\x84\x2e\x20\xd1\x14\xc6\x2e\x4c\x92\x06\x40\x28\x9d\xc5\x8e\xbc\x02\x32\x68\x1b\x02\x09\xd5\x7c\xae\x89\xc0\x29\xe0\x4a\x19\x34\x12\x69\xd8\x4a\xb2\x8c\x8c\x4a\xe2\x06\x0b\x13\x3a\xae\x29\x6b\xca\x4b\xf1\xcd\xe9\x79\x84\x44\x51\x9b\xc8\x04\x54\xe3\x9a\x9f\x68\x8f\x12\x3e\xdb\xc4\x61\xd1\x8a\x56\xea\xaa\x14\xb0\x68\xda\x65\x7b\x74\x06\x1e\x7a\x9f\x46\x0b\x4e\x87\x24\x4d\xf9\x91\x46\x5b\xd0\xbd\x5b\x61\x9e\x7d\xb3\x8f\x27\xe7\x0f\xa3\xac\x0e\x27\x0e\x5d\x03\xca\x0d\x2d\xba\xa1\x06\x79\x3c\x29\x6b\x2d\x50\x7f\x01\x19\xc9\x52\x87\xc9\x36\xcc\x32\x2b\x21\x3c\xf9\xcc\xad\xd6\x94\x99\x79\xb8\x30\xfe\x51\xeb\x79\x30\x4c\x11\x8e\x0d\x3b\x9a\x90\x8f\x7c\x91\x9f\x51\xb9\xeb\x22\x4c\x61\xc3\x8b\x1b\x29\x99\x87\x5d\xfb\xc0\xa4\xb0\xc4\x31\x9b\xff\x35\x18\xd2\xad\xe5\xfd\x6d\xe2\xc7\x09\xaa\x7a\xd3\xf9\x3c\x32\x47\xe0\x11\x34\x89\x2f\xb5\x47\xd7\x3d\x26\xa7\x6b\x75\x18\xc1\x5f\x8a\x76\xa6\x22\xef\x24\x7e\xe1\x0d\x1d\x39\xf5\xa6\xa6\xdc\xbd\xe7\x92\x30\xbe\x60\x58\x2b\xe1\x84\x1b\x25\xb3\xa5\x57\x1a\x6c\x69\x96\x98\x2e\x98\x6f\xde\x91\xda\x6c\x1c\xa7\xfb\x4e\x9d\x2a\x92\x72\x44\x10\xae\x46\x34\xf5\xbd\xaf\x09\x1d\x59\xe9\x99\x22\xcd\x0d\x58\x21\x61\xa2\x20\xb5\xb2\xa5\x60\x3b\x73\xd9\x2b\xab\x72\x15\x52\xb1\x3e\x64\xb9\xc8\xe9\xd9\x59\x04\xa6\xdf\x20\x9c\x10\xb1\x05\x9f\x38\x79\x97\x85\x96\x53\x1d\xa1\x57\x48\xb7\x5d\xb0\xd1\x11\x5e\x51\x5e\x67\xe7\x7a\x71\x61\xd8\x57\x85\x97\x96\x21\x46\x30\x01\xc3\xc2\x73\xf8\x2d\x39\x26\xdd\x79\xa1\x23\x04\x5f\x91\x44\x5b\xee\x08\x49\xd8\xac\xe0\xef\x48\xc9\xe9\x7a\xd1\x50\xb8\x4b\x78\x34\x09\x77\x1d\x39\x23\xee\x3f\xe2\x60\xec\x6f\xbd\x6f\xe1\x9b\x05\xea\x18\xdf\xca\xf7\x78\xd2\x67\x04\xce\x99\x23\xfb\x8d\xc0\x00\x7b\x64\xb8\xc7\x3c\x87\x91\x26\x34\xa4\xdc\x87\xa3\xb3\x54\x0f\xc2\xae\xe2\x37\xaf\x7a\x61\x87\x28\x4b\x24\xc7\x02\xce\x90\xd1\x80\xf4\x34\x20\xaa\x3f\x80\x4e\x76\x40\x92\x9c\xd2\x14\x5e\xe0\x8b\xce\x3c\x52\xd2\x46\x09\x52\x86\x22\x14\x60\x7e\x0c\xb0\x72\xcc\x40\x51\x6f\x54\x72\xe0\xfb\x07\xba\x80\x1d\xf4\xed\x86\x1c\x4c\x4c\x7e\x96\x39\xd9\x86\x31\x85\x81\x94\xb9\xc8\x60\x00\x0f\x68\x48\x3a\x47\x9f\xbb\x92\xcf\xed\x0a\xe7\xe6\x26\x62\xe7\xf6\x61\xea\xe7\x76\x26\xdd\x2b\xe3\x75\x2a\x9c\x1b\x3b\x62\x8c\x0c\x87\x1d\x88\x62\xbf\x31\x26\x8a\x1a\xab\x69\xd2\x88\x0b\x77\x1a\x8f\x2d\xe3\x12\x97\xe1\xe6\x1c\xb2\x43\x60\x19\x34\xe2\x2e\x70\xed\x82\x67\x5f\xb1\x86\x41\xc3\x18\x6b\xbe\x68\x64\x3b\x28\x58\xb3\x6d\x60\x23\xa6\x2b\xc9\x22\x23\x75\xe2\xad\x96\xaf\x4a\x0c\x50\x12\x2d\x99\xe2\xc4\x06\xc6\x65\xb0\xfe\x25\x17\x13\x7b\x9a\x6b\x40\x9b\x72\xff\x8c\xda\xf1\xb7\x66\x14\xc8\xe7\x7f\x27\xf7\x8f\xb8\xb7\x62\x94\x5a\xa9\xf7\xd6\x3d\x63\xaf\x26\x7d\x8e\x75\xef\x11\xeb\x7c\xce\x4a\x61\xcc\xa7\x4e\x4a\xd8\x41\x5c\x6e\xd2\xac\xb2\x54\x7a\x2f\xdd\x0c\x94\xba\x61\x48\xbe\x39\x6c\x45\xab\x83\x69\x5b\x3e\x02\x8b\xcd\xd8\x3f\x02\x48\xba\xbe\xd4\x81\x52\x2b\xab\x54\x4a\x8f\xb8\x53\x4a\x86\x93\x38\xf1\xae\xbf\x5c\xa5\xfc\x15\x41\xaa\x9f\x40\xa0\xcd\xb7\xf6\x07\x53\x92\xd8\xb1\x94\x53\x50\x81\xf1\x4e\x2b\xf5\xce\x37\xa1\x27\xc4\x89\x30\x83\x76\x98\x45\x9c\x5b\xae\x93\x2c\x8d\x90\xc5\x6e\x51\x78\x36\x6a\x87\xcc\xbe\xee\xa2\xe2\xbf\x07\x08\xf9\x2e\xab\xfe\x85\x3d\xa5\x87\x96\x49\xb2\x2c\x66\x7d\x26\x5c\xf1\x8e\x1e\xe5\x5a\x37\x4a\xad\x67\x0c\xca\xff\x1a\xf9\x0a\x7d\x83\x46\x0a\xf1\x0d\x16\x33\x1c\x53\x4a\x4e\xae\x9f\x22\xe3\x09\x66\x2d\xcd\x58\x4f\xd8\xf4\x21\xd7\x80\x01\x12\x2c\x81\x21\x7a\x69\x32\x07\x2c\x43\xac\x1b\xad\xd4\x4d\x6d\x81\xaa\x35\xc3\xf3\x18\xd0\x55\xc7\x2c\x1a\xfc\x86\x2c\x33\xf7\xde\x8d\xbb\x24\x9f\x13\xcf\xb1\x85\x6c\xf7\x29\x4d\x19\x63\x73\x92\x1c\x99\xc9\x79\xe6\x6b\x7f\xf1\xb4\x54\x83\x5d\x52\xc1\xab\x18\xfd\x4c\xfb\x42\x62\x23\x37\xa3\x70\xa0\xb3\x42\xd1\x09\xa8\x67\x78\xe6\xe3\x03\x8f\x82\xfa\x5d\x27\xf8\x03\xbe\xb7\x8a\xec\x22\x1e\x02\x92\x12\xdc\x11\xa6\x94\xd7\xd5\x9c\x0f\xe9\xb8\x3b\x0b\x0b\xb8\xa4\x9a\x39\xcb\x99\xfd\x88\xc4\x22\xa9\xdc\x39\x70\x36\x2a\xd1\xfb\xce\x6c\x0a\x7c\x90\xf2\x26\x9f\x06\xa2\x94\xd9\x2b\x58\xde\x0e\xf2\x09\xc9\x76\x33\xe8\xf5\x92\xd0\x59\x52\xbf\x02\x35\xad\x69\x3e\x14\x25\x47\x06\xfa\xc4\x40\x1f\x57\x7c\x30\x2a\x18\xf0\xd4\xbc\x94\xcc\x1e\x46\x9f\x54\x7c\x74\xc1\x4f\x96\x39\xde\x58\xeb\x0a\xef\x1d\x61\x79\x40\xac\x9f\xe4\xd4\x57\x12\xdd\x42\xe6\x29\x04\x47\xb2\xf0\x12\xb3\xe2\x12\x41\x18\x7c\x72\x68\x22\x44\xe3\x5b\x73\x8d\xd8\xbe\xed\x0e\x62\x1e\x11\xe2\x13\x34\x38\x8f\x1d\xec\x75\x96\xe5\xb4\xe3\x6f\x02\x9d\xfa\xa4\x2f\x56\xaf\xa3\x8e\xec\x0b\x1e\xc0\xc3\x36\x49\xb7\x6b\x59\xc9\x19\x64\x7d\x2c\x07\x47\x50\xdf\x10\x9a\x86\xf7\xc0\x4e\x8c\x48\xfb\x21\x87\x97\xd9\x81\x69\x93\xaa\xce\xc8\xc8\x52\x30\xf6\xea\x89\x8c\x62\x7e\xb2\xa9\x63\x4a\x57\xf4\x14\x6f\xca\xc6\x0d\xdf\x17\xa6\x3d\x31\x7d\x5a\x4a\xf6\x4f\xd1\xa0\x70\x67\x16\xd0\xc3\xca\xde\x63\xe0\x05\x77\x2e\xdf\x25\xa1\xd0\xd3\xe2\x5d\x7a\xc8\x76\xc9\xf6\xe0\x0a\xea\xb8\xc5\xcc\xe5\x7c\x86\x1d\xe1\xf0\x03\x43\xe8\x3a\x45\x27\x0e\x3e\xaf\x44\x24\x4b\x76\x64\x35\xcb\x92\x65\x85\x6a\xda\x6e\x02\x03\x8a\xb0\x09\xa2\xdc\x45\x71\xda\x08\x4b\x04\x68\x97\xac\x09\x35\x46\x61\x4b\x0a\x17\x75\xc2\xd6\x2c\x66\xbc\x4c\x6f\x60\x67\x17\x7c\x33\xcc\x60\xa6\x38\x73\x06\xe7\x93\xbc\xa6\x35\x3c\x61\x92\x69\xca\xa3\x58\x17\x11\x21\x11\xe5\x2b\xed\x06\xf9\xb0\x24\x07\x10\x49\xa4\x41\x52\xd9\xd6\x45\x87\x74\x81\x97\x8f\x4b\xc9\x51\x69\xb4\x8b\xaf\x1b\xbf\x35\x9d\x1b\xbb\xee\x89\xe7\x9c\xf1\x9b\x67\x03\x15\xa6\xa3\xc0\x7c\xb2\x93\xc4\x6c\x9d\xe4\x35\x5e\xba\x33\x89\xf5\x4e\xbb\xae\x3f\xca\x6d\xa4\xe2\x35\x09\xde\x3c\xd2\xa3\xab\x4c\x68\x51\x4b\xb0\xce\x87\x9a\x31\xda\xc2\x85\x78\x84\xf8\xa0\x65\x36\xc3\x82\x05\x3c\x58\x99\x45\x76\x8e\xab\xc5\x3e\x24\xa5\xba\x1e\x69\x59\x08\x56\x0c\xa0\x09\x0a\x1d\x39\x25\xbc\xa6\x16\x5d\x27\xcb\xba\x86\xd6\xef\xd0\xaa\x2a\x48\x4d\x92\x3a\xd2\xf0\x1a\x05\xf4\x8c\xe4\x2d\xd5\x2d\x08\x3d\x6e\x1a\xb2\x2f\xd0\x9a\x44\xdf\x0a\x2c\x8f\x5d\xb0\xe0\x96\xa4\xc8\xa3\xbe\x8e\x20\x67\x27\x70\x13\x99\xf2\x58\x71\x45\xc6\x60\xb4\x0c\x9e\x30\x36\x21\x30\xb9\x82\x94\xcf\xc0\x0c\x64\x41\xc9\xa5\x0a\x86\xd4\x30\x19\x3f\xa4\x95\x34\xf6\x28\xfa\xbc\xf2\x7c\xdc\x51\xf9\xb4\xbe\xc4\x62\x07\x69\x0f\x85\x2b\xb5\x81\x26\x35\xf4\x83\x5b\x82\x10\x6b\xe9\x96\x43\x7a\x2f\xd1\x7a\x2a\xf0\xa6\x7d\x67\xa4\x20\x3b\xad\x13\x66\x85\x0b\xb5\xb1\x86\x4c\x06\xa7\xae\x36\x6f\x94\x35\xf6\xed\x7d\xe0\xac\x52\x84\x6d\x13\x9c\x2d\xb8\x92\xba\xa8\x87\xe1\xaf\x2f\x9c\xd5\x3c\x7b\x45\x72\x1b\x33\x1b\x52\xe2\x69\x42\xf1\x9b\xfa\xdc\x9e\xe6\xfe\x5a\xf4\x12\x91\xbd\x47\x4a\x88\x25\x0b\x7b\xd4\xb1\xc8\xd1\x27\x8e\x44\xcd\xc3\x93\x0d\x93\xf8\x3a\x0e\x25\xb9\x96\x52\x0a\x2f\x19\x6e\xba\xbe\x7a\x72\x90\x76\x3a\x70\x4c\xd8\x69\x24\x68\x99\x7d\x05\xe7\x93\x6d\x06\x56\xce\x0e\xf0\x20\x74\x7a\x7c\x86\xc0\x13\xa8\x26\x3b\x9e\xfe\x3f\x2a\xb5\x0b\x04\x09\x6a\x77\xb9\x64\x54\xd7\xda\x15\xbd\xbd\x25\xa3\x7a\xae\x13\xe7\xba\xdf\x8d\xbd\x1c\x2b\x3b\x75\x67\x1b\x5d\x02\xcc\xc1\x6d\xf4\x11\xa0\x73\x68\xbf\x9e\x00\x6a\x9c\xda\xaf\x3f\x34\x9c\x63\x9e\x81\x6c\xbd\x32\xf0\xc0\x05\xb5\xde\x7a\xce\xbc\x06\xff\xb9\xda\x38\x6b\xd5\x39\xfc\xa7\x14\x2a\xd6\x0a\x77\x15\x9c\xca\x7b\xb6\xc1\x61\x34\x12\x06\x21\x7d\xc9\xb6\x2d\xb1\x2d\x8c\x64\x57\xa1\xfe\xfe\x59\xda\x29\xc0\x29\xb8\x4f\xf8\x1e\x11\x59\x20\x40\xbf\x17\xf8\x2c\x38\x1b\x5d\x47\x3b\x4a\x41\x0b\x88\xf9\x4e\xdc\x4a\xb4\xb3\x1d\xdf\x42\x43\xa5\x58\x5f\xe8\x25\x83\x3a\xde\x7f\xc3\x4a\x1c\x8e\x1e\x5b\x10\xc2\x76\x7e\xd9\xb1\xd3\xfa\x6a\xbf\xba\xf3\xab\xe5\x52\x4f\x7d\x58\xa9\x0a\x3b\x91\xfd\x35\x10\x06\x03\xe8\x1f\x0e\xd7\x1f\x39\xa6\xf3\x97\x52\xbb\xce\x25\xe1\x90\xe5\xca\xef\x80\xb1\x93\x34\x4a\x9d\x80\x94\x00\xd8\xdf\xeb\xa1\x7d\xdb\x5d\x2a\xfc\x5e\xbb\x0b\xab\x36\x41\x94\xed\x85\xf1\xba\x16\x64\x95\xb3\x89\xcf\xa9\xa5\xb4\xa5\x14\x14\xbf\xbe\x81\xa9\xad\x01\x89\xec\x5e\xb7\x1d\xd8\xdd\xc8\xf0\xc0\xc6\xda\xb1\x63\x29\x27\x3a\x6d\x77\xc3\x96\xbd\x19\x11\x7c\x30\x69\x00\x9f\x5b\xe1\xba\x47\x28\xe7\x96\x75\xa3\xda\x8f\xee\x92\x51\xdf\x2d\x52\x9f\x69\x8b\x0f\xef\x06\x58\x23\x44\xa9\x7d\x42\x2d\xf7\xdd\x70\x94\x24\xa0\xfa\xb2\x56\xf0\x93\x3b\x40\xb1\x62\x41\xe1\x50\x73\xac\x37\x81\x47\x9f\xeb\xa5\xdb\xca\x6f\x10\x64\x95\xcd\x9c\x0c\xff\x84\xf8\xfb\x17\xfa\x67\x00\x7a\x9f\xec\xaf\x57\xba\x64\x3f\x8f\x60\x91\x2b\xe6\x93\x23\xd9\x4a\x29\xea\x85\x19\x91\x9c\xc4\x15\x72\xc2\x15\x98\xee\x2a\x3a\x8b\x06\xb4\xa4\xcd\x59\x8a\xf0\xc7\x80\x4a\xb4\x29\x26\x71\x54\x4a\xcd\x6b\x7a\xa9\x6c\x27\xf8\x68\x2b\xbd\xf7\x07\x76\xec\xd8\x62\xcb\xad\x5e\x85\x63\x60\x6b\xb0\x19\x37\x9e\x2f\x5e\xf6\x3d\x81\xc4\x0e\x77\x85\x0e\x5c\x66\x4f\x59\x38\x4c\xd9\x81\xbb\xe3\x9e\x34\x0c\xa0\xd3\x7a\x17\x79\xea\x05\xbc\x76\x60\xbf\x7f\x83\xb1\x41\xf6\x40\x1c\xe7\x68\xe9\x12\x3a\x33\x16\xc3\x11\x53\x70\xec\x6d\x1c\x7b\x07\x1c\x9f\x40\x08\xe7\xc6\xd9\x79\xf3\xca\xaf\x48\x62\x35\x6f\x4a\xfe\xee\x1d\xcc\xf3\xa7\xbf\xb4\xe8\x11\x70\xf3\x1c\x5a\x7d\x3c\x83\xb2\x4f\x87\x0e\xc7\xc1\x0b\x52\x7d\xb5\xbd\x2a\x85\xda\xfa\x17\xdb\xa4\x74\x73\xed\xd9\x49\xec\xf1\x01\x3e\xd9\xef\xeb\x1a\x94\xd9\x0e\x10\x9c\x2b\x06\x63\x05\x4a\xd7\x12\x40\x2f\xac\xcd\x72\xf1\x69\x49\x8e\xea\x45\xd6\x7d\x4e\xd0\xeb\xc4\xae\xc6\x71\xb9\x7b\x7d\x4c\x19\x08\x20\x8c\x8b\x9d\xbd\x71\x8b\x5e\x06\x6e\x7d\x55\x3a\xc2\xbb\x86\x79\x9e\x06\x41\x32\xd5\x96\xe8\x7e\x00\xd1\x5d\xe8\x3a\xa2\xfb\xd9\x4d\x42\x3a\x1f\x2d\x25\x28\xf8\xe9\xcc\x64\x44\xb7\x2c\x13\xdd\xf5\x1f\x44\x74\x17\xff\x11\xdd\x7f\x44\xf7\xcf\x12\x1d\x29\x3e\x65\xee\x3e\xec\x01\x99\xad\x74\x53\x73\xe9\xf3\x6a\x97\x2a\x5a\x3e\x84\x52\x5a\x72\xaa\x3e\xbf\x0d\xcf\xd0\x82\x0d\xcb\xfa\x1c\xf4\x33\x7a\x6a\xb2\x6f\x89\x66\x10\x1f\xd1\xb3\x81\x43\x6b\x29\x6f\xc5\x47\xe9\x39\xa7\xed\x0f\x61\xee\xfb\xca\xeb\xab\x51\xf3\xb6\x93\x3c\x5d\xce\x27\x69\x7b\x50\x2b\xf1\x94\x95\x9b\xe4\x40\xa1\xf6\xbc\x0a\x61\xbb\x63\xf7\xac\xa7\x4a\xbb\x2f\xd5\xe9\x59\xcf\xf7\x84\x5e\x8d\x5b\xdb\xd3\x87\xfa\x8e\x00\xbf\x63\x3f\xdd\x0f\x76\xf9\xa7\x3b\xbe\x1b\x1a\x54\x79\x6b\x3b\xda\x8b\xcb\x1e\x78\x1b\xdc\x52\xc7\xa8\x8f\x18\x7b\x0f\xdf\x01\x65\x4f\x0e\x70\x18\xb0\x91\x67\x7e\xb7\x81\x27\x3a\x15\xed\x12\x38\x8e\x01\xc8\x01\xc2\x6c\xc1\xd7\x6d\xfb\x01\x09\xed\x33\x40\xe8\x41\x89\xf6\x8f\xbb\x2e\x0f\x8e\x9a\x9e\x19\xf2\xbb\x81\xdf\x5d\x8d\xa1\x73\xe7\xae\x04\x95\x78\xb7\x8b\x6d\x00\x3e\xa0\x58\xed\x00\x56\xc3\xd6\xfc\xd0\x7d\xda\x7b\x05\x94\xc5\xa9\xf7\x8b\x52\xbb\xfd\x7c\x12\x40\x20\x15\x12\xc8\x8a\xe9\xf3\x19\x6d\x10\x4d\x6d\x69\x4b\x6d\xef\x84\x7f\x77\xac\xba\x78\xfc\xa5\x30\xea\xaf\xd3\xb0\x71\x3e\xfa\xeb\x90\xc0\x6e\xca\xf7\xfa\xad\x03\x98\xc2\x0a\xbe\xb9\x1d\x80\xb6\x2b\xfa\x3d\x49\x29\x75\x31\x4d\x68\x74\xab\x27\x7d\x47\x4b\xd0\x5b\x61\xd4\x27\x60\x52\x23\xcb\x20\x4e\x1c\x6a\xbe\xef\xa3\x11\xe7\x3c\x01\x26\x12\x49\x79\xa6\x2d\x36\x99\xfe\x58\x2f\x6d\xa9\xd2\xce\xd8\x0c\x00\x0f\x4b\x2b\xa4\x8c\xbf\x4d\x78\xa5\xeb\x99\x18\xc3\x55\xb0\x11\xbe\x01\x92\x7f\x0f\xba\x72\xff\x9b\x25\xa9\x91\x5e\x0f\xcb\xff\xa6\x86\x67\xda\xa2\xda\xc0\x4c\xec\x28\x43\xbb\xbf\x83\x7d\x70\xfe\x0f\x0f\xec\xf7\x6f\xce\xa4\x73\x69\x17\x8a\x23\x32\x0c\xf2\x43\x5f\x40\xb0\x60\x86\xf6\x86\x7d\x6b\x17\x17\xf3\xb7\xda\x3b\xd3\x76\x73\x76\xbb\x33\xdb\x74\xcf\xee\xfa\xee\x96\x05\xe8\x9e\x45\xbd\x5d\x3f\x4a\xb6\x14\x0f\x72\xcb\x2e\x35\x70\x87\x71\x1c\xe3\xd0\xbe\x73\x34\xd2\xae\x64\x89\xb2\x46\xe8\xf1\x19\x5c\x6d\x70\xb4\x7d\x6d\x07\x39\xb6\x74\x73\x54\xd9\xcd\x39\xb6\x28\x79\x04\xbe\xd2\x3b\xdd\xe7\x83\xc0\xf6\xc1\x20\x27\xf0\xeb\x69\x18\xe2\xb3\x1d\xe2\x0b\x19\xe2\x5e\xab\xaf\x67\x7a\xe9\x87\x51\x5f\x8e\xe6\x76\x8c\xaf\xc7\x4b\x95\xfa\x72\xae\x6f\xf5\xd2\xae\xfa\x0a\xf9\x63\x5f\x40\xb7\xf0\x51\x95\x1d\x52\x52\xfc\x41\xd7\xa0\xc9\x15\x04\x1d\x1d\x0d\xbc\xd1\x20\xf9\x96\xe1\x1f\xa8\x2f\x5b\x39\x97\x88\x52\x3c\x00\x00\xa8\xe4\xe0\x5f\xdb\xf5\x0d\xb8\xf8\x5c\xd7\xef\x75\xd7\x76\xb1\xe9\xcd\x1a\xfb\x93\x33\x6a\x66\xd0\xcb\x55\x55\xdb\xcb\x04\xe4\xa4\xeb\x65\x5d\x5f\xc1\x0c\x1d\xf9\x5d\x57\x01\x56\x63\x6d\x81\x75\xa1\x47\x7a\xe0\x81\x75\xa5\xd5\x44\x9f\xe9\xa5\x73\xfb\xf3\x2e\x5c\x66\x32\xd1\xd6\xce\xbe\xd0\x27\x76\x5f\x27\xfa\x14\xfe\x71\x02\x73\x6e\xb2\xcd\x0f\x73\xe8\x29\xf5\x53\x43\x4c\xe5\x31\xee\xfe\x0c\x86\xbb\xd1\x23\xbd\x12\x36\xe7\x44\xcd\xed\x70\x2b\x5a\xdd\x68\x3b\xbd\x2d\x35\xd7\x6a\xa9\x52\x37\x7a\xf7\x9d\x86\xa7\x7b\xf0\xdf\xad\x2e\x62\x48\x78\x67\x5b\xde\x1f\x42\xea\xeb\xe0\xce\x00\xca\xfd\x09\x4e\x37\xb5\x17\xdc\x32\x8e\xf1\x0f\x14\xea\x2a\x16\x1d\x14\xb0\xe1\x6f\x67\x1a\x33\xba\x47\x30\x47\xa8\xd0\xe1\x16\x38\x32\x64\x7f\xbf\xd6\x60\xbd\x1d\xfd\x5e\x3b\x46\x63\x2c\x9b\x82\xfd\x73\xf7\xbf\xff\x70\x3b\x07\x04\x76\x6b\xb6\xec\x50\x77\x26\x00\x67\x15\x80\xb3\xae\x47\xba\x42\xc4\xed\x68\x87\xb9\xeb\xfa\x68\xd9\xae\xb4\xa3\xed\x64\xd7\xf5\xb9\x3b\xf4\xee\x0e\xfd\xd4\x82\xdf\xf6\xe3\xa1\x5f\x18\xb5\xa9\x41\xa5\x81\x33\x5a\xe7\x2e\x21\x64\x67\x5d\x33\x31\x1b\x88\xff\x48\x95\x27\xd6\xde\x35\x47\x6b\x96\x1f\x96\x76\x58\x73\xe1\x15\xf0\x7d\xdb\xcb\x3a\xf0\xc9\x0b\xed\xfe\x53\xee\x1f\xf0\x9b\xc7\x59\xa1\x0f\xee\x8b\x17\x5c\x67\xba\x03\xaf\x8d\x00\x11\x3f\x44\x16\x67\xf9\xfb\xd6\xc1\xbb\x7e\x1c\x7d\x7b\xdf\x2a\xfe\x5b\x5e\xe5\x6f\xfc\x98\xe9\xd2\x42\xd2\x8d\xf7\x03\x36\x7e\xa6\xc3\x3f\x95\x52\x9f\x61\x67\xfe\xf6\x5e\xaf\x7d\x27\x32\xfd\xfb\x16\xdf\xcd\x28\xb9\x8d\xec\x9b\xd3\xf7\xca\x7b\x5d\xb0\xc1\x6c\xe3\x6a\xc4\xaf\x2e\x03\x47\x19\x69\xdc\xb3\x44\x71\xc2\xd6\x6f\x75\x84\xd2\x39\xc1\x2c\x6c\x66\x7e\xf9\x85\x51\xfd\x1b\xb3\x70\x89\x83\x3b\x6b\x9c\x1c\x82\x10\x3c\x40\xed\xe5\xd3\xbe\x95\x7e\x7f\xad\x2c\xee\x40\x8d\x4d\x1f\xe7\x74\x0e\x5e\xbc\xb1\x09\xff\x00\x96\x00\x90\x7e\x02\xf4\x1e\x1d\xd7\x76\xf8\xf3\x1d\x62\x3e\xdf\x80\x9c\x40\xb8\x02\xd7\x9f\x97\xf3\x81\xef\x30\xaa\xca\x37\x03\x0c\x90\x01\xf7\x03\x37\xdb\xb9\x9e\x43\x9e\xb4\xbb\x1e\xc1\x0a\xb5\xf2\xa6\x44\x70\x2e\xeb\x77\x5d\x5a\xb5\xc3\x39\x40\x37\x5c\x3e\x9a\x52\x18\x2e\xb9\xea\x62\xef\xa0\x4a\x40\xef\x2b\xda\x6a\xbe\xa5\x9d\x53\x35\x29\x47\xbd\xf0\x1a\xcd\xeb\xe8\xae\xc7\x4d\xed\xf6\xe2\x36\x55\xa3\xf2\xbc\xe7\x97\xb0\xaf\xba\x67\xa0\xc2\xec\xcc\x4b\x88\xb0\x0d\xc8\x1e\x83\x6a\x0d\x75\x66\x5d\x3a\xa2\xd3\xc6\xdf\x39\x7e\xa4\x1f\xe3\x4c\xf7\x55\x09\x57\xbc\x99\xe3\x7b\x92\x16\x0c\x4c\xf8\x10\x14\x3d\xf0\xd0\x96\xd6\x00\xac\xd6\xf4\x59\x7c\x0f\x91\xe4\xc4\xe3\xc8\xb9\x1e\xd1\xf0\x72\xa5\xd4\x06\x25\x97\x6f\xaa\x6f\xed\xa4\x1e\xf8\x98\xb7\x2f\xc8\x04\x48\x2c\xcb\x53\x9b\x8b\x3a\xb8\x34\xd4\x44\x1d\x7f\xab\x3d\xd4\xe6\xda\x84\xa7\x11\x68\x43\xec\xcb\x9a\x9b\xdd\x5d\x40\x6b\x3d\x0c\x0d\x69\x52\x4f\xff\x04\x90\x1b\x98\xe5\x60\xdb\x42\xb7\xda\xca\x3a\xb4\x3f\x1f\xd8\x76\x43\xe0\x52\x07\x96\xda\x01\xe0\xdf\xaf\xca\x85\xc8\x7b\xa6\xef\x2c\x8f\x58\xd3\x16\xff\xdf\xe9\x03\x64\x51\x1b\x1a\xb8\xc4\x3b\x7d\xdb\x8a\x04\xbe\xbf\x2a\x09\x4c\x5f\x42\x02\x97\x48\x02\xbd\x8e\xbe\x2f\x69\x31\x45\x70\xb2\x9a\x83\xa7\x51\xc0\x3e\xa0\x95\xa9\xa1\x80\xab\x48\x01\xfd\x5d\x64\x54\x1b\x86\x50\x40\xff\x9d\x01\x67\xf3\xf4\xa9\x14\xf0\x10\x11\x70\x2b\x50\xc0\xd7\x5b\x99\x02\x76\x96\x76\x55\x09\xb6\xe3\x9a\xf6\xf5\xf0\x13\x02\xf8\xcb\xe3\xed\xc9\xb2\x4e\x73\xa7\xee\x52\xfc\x1f\x5a\xfc\x1f\x38\xfc\x3f\x7f\x1e\xfe\xdf\xff\x19\xf8\x3f\xd1\x17\x8b\x09\xe0\x52\xcf\x2c\x01\x8c\x4a\x4b\x00\x17\x65\x34\x83\x2e\xb4\x9a\x94\x27\x4b\x57\xf6\xc7\x0b\x13\x45\xf3\xaa\x1e\x83\xfe\xb1\x02\x98\xbc\xea\x44\xe1\x0a\x15\xdd\x1b\x20\xf5\x2f\xe0\xb9\x15\xdd\xbb\x5e\x74\xbb\xe7\x87\xdb\x16\x4e\x50\xff\xf1\x10\x40\xf6\xd1\x45\xc3\xb7\xbc\x54\x8f\x7a\xd3\x11\x18\x62\x07\xce\x2f\x72\x49\xab\xb7\xdf\x06\x71\xe7\xf4\xbc\x55\xd8\x3e\x10\x62\xea\xb6\x52\x59\x43\x38\xec\xae\x27\x86\x5b\xc2\x40\x97\x1b\x51\x5b\x9d\x01\x00\x6e\xca\x83\x8b\x12\xb5\xc7\x72\xdf\xea\xaa\x37\x65\x02\xc7\x3a\x68\x3e\x58\x83\x29\x32\x81\x7b\x60\x02\xfe\xda\x93\x7b\x18\x6c\xe4\x46\x3e\x33\xc1\xfb\xe8\xfe\x01\xf7\x9c\xbb\x38\xeb\x06\xa0\x66\x95\xd4\xad\x60\x84\x7e\xbf\x31\x12\x83\x78\x28\xbf\xf9\xb1\x4e\x54\x79\x6f\x17\xe0\x6a\xfb\x96\xc0\xad\xaa\xcd\xf2\x7a\xf8\x5c\xfe\xd1\x7d\x5f\x2e\x5d\x95\x6a\xf0\x60\xde\x74\x99\xee\x37\xf4\x98\x50\x34\x43\x02\x9e\x0c\xa6\xe5\x65\x80\xc7\xae\x1a\x5e\x96\xae\xf9\xd2\xa5\x56\x5b\x0f\x25\xd9\xe9\x37\xb6\xd5\xf6\x59\x86\xaa\xe2\x18\x96\x97\x7d\xbc\x36\x77\x25\x4f\xd1\x98\x96\x9b\x4f\x94\xeb\x40\xc0\xd5\xb4\x46\xb0\x9b\xe1\xfb\x2a\x90\x5a\x72\x95\xc1\xde\x31\xa0\x94\x52\x4b\x31\xa9\xe2\x28\x55\xf7\x4b\x4b\xa9\xd5\xde\x4f\x13\x1a\xd2\x53\x98\xdd\x43\x0b\x01\x68\xb2\x35\x8c\xdc\x21\xc9\x7c\xf9\x14\x5f\x44\x96\x02\x08\x6d\xa7\x69\xc1\x04\xee\xb3\xed\x43\xdb\xdb\xbb\xc8\x7c\x0f\xf7\x23\xac\x3e\xce\xcb\xd3\xc8\x7b\x0f\x6f\x00\xf2\x37\xba\xf3\x34\xe6\xbb\xa6\x4f\x12\x78\xba\xf6\x3d\xef\x77\xfd\x1b\x18\xd3\x67\x70\x1d\x3f\x08\xdc\x16\xa6\xba\x74\x63\x94\xba\xd7\x9f\x6c\x07\x0f\xc0\x03\xce\xed\x6e\x5f\xe4\x50\x51\xe3\x12\x4e\x59\x88\x5a\x48\x19\xba\x8f\xd6\xd3\x14\x2c\xf6\xef\xce\x75\x04\x6c\xf1\xaa\x9b\x6d\x16\x99\xf7\x0f\x50\xa6\xa7\x7e\x0a\x9f\x43\xd3\x78\x62\x63\x9b\xf0\x64\xdb\x66\xee\x2e\x8d\x98\xa1\xe7\x7a\x4d\xbf\x6d\xe2\x01\x0b\x71\x57\xfa\xf9\xbd\xde\xf4\x5b\xb2\x43\x96\xb6\x45\xfc\x48\xf6\x17\x67\x9d\x07\x07\xf5\xc5\xf0\xf5\x35\x32\x76\xe5\x9a\x73\xf4\xda\x8f\x0b\xfd\xc1\x4a\xa8\xee\x2f\x93\x50\x95\x5f\xff\x56\xbe\xfe\x5e\xb8\x66\xae\xe3\x7c\xd2\xda\xf9\x83\x9e\xb9\xfe\xf5\xa6\xf5\x5b\x1b\xb8\x0b\x2f\xf7\xe6\xba\xff\x2b\x56\x79\x9a\xd9\x6c\x2b\xda\x03\x1a\xec\xb4\x4d\xf3\x7e\xb1\xa4\x7e\x63\x96\x2d\x9f\xbf\xee\x59\x41\x75\xdb\x3b\x88\x6e\x8e\x6f\xea\xae\xb7\xbf\x74\x61\x7f\xbc\x6c\x27\xa8\x56\x7f\x9f\xa0\x7a\xa4\x82\xea\x27\x08\xaa\x07\x10\x54\xf7\x20\xa8\x96\x5f\x22\xa8\xde\x94\x4b\x37\xa5\x1a\x3c\x0a\x82\xea\xf2\x09\x82\x6a\x96\x08\xaa\x1f\x41\x50\x5d\xbc\x5c\x50\xcd\xff\x13\x54\x82\xa0\xfa\x88\x82\xea\x8e\x0a\xaa\x5b\x2f\xa8\x36\x9e\x2a\xa8\x0e\x5f\x5f\xfe\xf8\x7c\x95\x3f\x46\xfe\xac\xea\xf5\x57\x97\x3f\xef\xf4\xf2\xef\x92\x3f\x8d\xfc\xf7\xff\x80\xfc\x79\xd7\x28\x7f\xae\xfe\x69\xf9\xb3\x61\xde\x2c\x96\x3f\xef\xcd\xc8\x8e\x71\x3d\xfc\xe2\x02\x0d\x85\x52\xf7\x43\xc7\xb6\xed\xba\xbf\xbe\xd5\xd1\x77\x12\x0e\xc2\x0e\x7c\x58\xf4\xeb\x46\x30\xaa\x02\x48\xb6\xed\xd7\xae\x95\x64\xbd\xaf\x5b\xfe\x59\xa0\x9c\x3d\xfb\x15\xbc\xb6\x03\xec\x34\x79\x38\x04\x97\xee\xd7\x11\x06\x7a\x5c\x56\xc5\xa1\x9d\xe7\xf6\x17\x27\x20\x0a\x63\xc6\x1f\x7c\x50\x8d\x07\x7c\x83\x9b\x07\xf7\xe0\xc8\xbb\x39\x4e\x27\x61\xaa\x98\x38\x7d\xa4\xba\x47\x10\x95\xbd\x2c\xb3\xf7\xfe\x56\x7d\xfb\xde\xe0\x14\x23\x5b\xa1\x82\xcc\x96\x1a\xda\xf9\x6c\x11\xbf\x37\x56\xbd\xda\xae\x96\x42\xe4\x2f\x06\xa5\x69\xa1\x27\x77\x79\x6d\x35\x94\x26\x6a\xb7\xb6\xaa\x3a\xbd\xec\x59\x4f\x75\xed\xb3\x5e\x75\xde\x17\x86\x34\xc7\x21\x6e\x14\x33\x44\xed\xee\x94\x96\xe5\xf4\x2d\xc1\x95\x5f\x82\x68\x3d\x0a\x53\xc2\x74\x7b\xa3\x0c\x44\x0d\xab\x83\xfa\x29\x7d\xe4\x30\x38\x46\x1e\x68\xb1\xa1\x0b\x5c\xb8\x17\xdb\x25\xd5\xca\xb6\x8f\x69\x36\x49\xe8\xd8\xe2\x65\xb5\xed\xae\x40\x52\x78\xe6\x7a\xe7\x2d\x49\x6c\x75\xe7\x89\x4f\xad\x98\xb1\x0b\xea\x1f\xda\xb5\x80\x2e\x31\xb6\x58\xfa\x17\x6a\x23\x5f\xcf\x4b\x09\x9f\xc0\xf6\xaf\x22\x22\x06\xd2\xfb\x60\xbf\x7a\x24\x0d\x31\xac\x90\x8f\x70\x00\x7e\x2d\x87\xa4\x77\xbb\x19\x76\x17\x46\x0d\x03\x1e\xba\xbf\xff\xf7\xff\xff\x27\x00\x00\xff\xff\xca\xee\x57\x53\x45\x54\x0b\x00") From 6dfbdf7dd94e0596abd8c34a515dae865e17a290 Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Mon, 7 Sep 2020 16:24:44 +0000 Subject: [PATCH 353/407] Automated changelog update [skip ci] --- CHANGELOG.md | 54 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1f9c5b1b1..839d4752ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ The following sections list the changes in ocis-accounts unreleased. * Change - Add new builtin admin user: [#102](https://github.com/owncloud/ocis-accounts/pull/102) * Change - We make use of the roles cache to enforce permission checks: [#100](https://github.com/owncloud/ocis-accounts/pull/100) * Change - We make use of the roles manager to enforce permission checks: [#108](https://github.com/owncloud/ocis-accounts/pull/108) +* Enhancement - Add enable/disable capabilities to the WebUI: [#118](https://github.com/owncloud/product/issues/118) ## Details @@ -44,11 +45,20 @@ The following sections list the changes in ocis-accounts unreleased. https://github.com/owncloud/ocis-accounts/pull/108 https://github.com/owncloud/ocis-pkg/pull/60 + +* Enhancement - Add enable/disable capabilities to the WebUI: [#118](https://github.com/owncloud/product/issues/118) + + We've added batch actions into the accounts listing to provide options to enable and disable + accounts. + + https://github.com/owncloud/product/issues/118 + https://github.com/owncloud/ocis-accounts/pull/109 + # Changelog for [0.4.1] (2020-08-27) The following sections list the changes in ocis-accounts 0.4.1. -[0.4.1]: https://github.com/owncloud/ocis-accounts/compare/v0.4.0...v0.4.1 +[0.4.1]: https://github.com/owncloud/ocis-accounts/compare/v0.3.0...v0.4.1 ## Summary @@ -70,31 +80,11 @@ The following sections list the changes in ocis-accounts 0.4.1. https://github.com/owncloud/product/issues/173 -# Changelog for [0.4.0] (2020-08-20) - -The following sections list the changes in ocis-accounts 0.4.0. - -[0.4.0]: https://github.com/owncloud/ocis-accounts/compare/v0.3.0...v0.4.0 - -## Summary - -* Change - Add role selection to accounts UI: [#103](https://github.com/owncloud/product/issues/103) - -## Details - -* Change - Add role selection to accounts UI: [#103](https://github.com/owncloud/product/issues/103) - - We added a role selection dropdown for each account in the accounts UI. As a first iteration, - this doesn't require account management permissions. - - https://github.com/owncloud/product/issues/103 - https://github.com/owncloud/ocis-accounts/pull/89 - # Changelog for [0.3.0] (2020-08-20) The following sections list the changes in ocis-accounts 0.3.0. -[0.3.0]: https://github.com/owncloud/ocis-accounts/compare/v0.2.0...v0.3.0 +[0.3.0]: https://github.com/owncloud/ocis-accounts/compare/v0.4.0...v0.3.0 ## Summary @@ -136,6 +126,26 @@ The following sections list the changes in ocis-accounts 0.3.0. https://github.com/owncloud/ocis-accounts/pull/88 +# Changelog for [0.4.0] (2020-08-20) + +The following sections list the changes in ocis-accounts 0.4.0. + +[0.4.0]: https://github.com/owncloud/ocis-accounts/compare/v0.2.0...v0.4.0 + +## Summary + +* Change - Add role selection to accounts UI: [#103](https://github.com/owncloud/product/issues/103) + +## Details + +* Change - Add role selection to accounts UI: [#103](https://github.com/owncloud/product/issues/103) + + We added a role selection dropdown for each account in the accounts UI. As a first iteration, + this doesn't require account management permissions. + + https://github.com/owncloud/product/issues/103 + https://github.com/owncloud/ocis-accounts/pull/89 + # Changelog for [0.2.0] (2020-08-19) The following sections list the changes in ocis-accounts 0.2.0. From eedcdf5d8e3b999e45310e9b7e6f0d87df8d67b5 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 8 Sep 2020 15:39:16 +0200 Subject: [PATCH 354/407] Provide role service in service handler for grpc server --- pkg/server/grpc/server.go | 22 +++++++++++++++++++++- pkg/service/v0/accounts.go | 3 +++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/pkg/server/grpc/server.go b/pkg/server/grpc/server.go index 8238614151..22717a3d8b 100644 --- a/pkg/server/grpc/server.go +++ b/pkg/server/grpc/server.go @@ -1,9 +1,14 @@ package grpc import ( + "time" + + mclient "github.com/micro/go-micro/v2/client" "github.com/owncloud/ocis-accounts/pkg/proto/v0" svc "github.com/owncloud/ocis-accounts/pkg/service/v0" + "github.com/owncloud/ocis-pkg/v2/roles" "github.com/owncloud/ocis-pkg/v2/service/grpc" + settings "github.com/owncloud/ocis-settings/pkg/proto/v0" ) // Server initializes a new go-micro service ready to run @@ -22,7 +27,22 @@ func Server(opts ...Option) grpc.Service { var hdlr *svc.Service var err error - if hdlr, err = svc.New(svc.Logger(options.Logger), svc.Config(options.Config)); err != nil { + // TODO this won't work with a registry other than mdns. Look into Micro's client initialization. + // https://github.com/owncloud/ocis-proxy/issues/38 + rs := settings.NewRoleService("com.owncloud.api.settings", mclient.DefaultClient) + roleManager := roles.NewManager( + roles.CacheSize(1024), + roles.CacheTTL(time.Hour*24*7), + roles.Logger(options.Logger), + roles.RoleService(rs), + ) + + if hdlr, err = svc.New( + svc.Logger(options.Logger), + svc.Config(options.Config), + svc.RoleManager(&roleManager), + svc.RoleService(rs), + ); err != nil { options.Logger.Fatal().Err(err).Msg("could not initialize service handler") } if err = proto.RegisterAccountsServiceHandler(service.Server(), hdlr); err != nil { diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 1b25c2027f..92cc2db22a 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -351,6 +351,9 @@ func (s Service) CreateAccount(ctx context.Context, in *proto.CreateAccountReque } // TODO: assign user role to all new users for now, as create Account request does not have any role field + if s.RoleService == nil { + return merrors.InternalServerError(s.id, "could not assign role to account: roleService not configured") + } _, err = s.RoleService.AssignRoleToUser(ctx, &settings.AssignRoleToUserRequest{ AccountUuid: acc.Id, RoleId: settings_svc.BundleUUIDRoleUser, From e6bc8126926749daf55a54f854e2a3a146ab6305 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Tue, 8 Sep 2020 15:51:24 +0200 Subject: [PATCH 355/407] Changelog --- changelog/unreleased/fix-role-service-grpc.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/unreleased/fix-role-service-grpc.md diff --git a/changelog/unreleased/fix-role-service-grpc.md b/changelog/unreleased/fix-role-service-grpc.md new file mode 100644 index 0000000000..f42655a1ff --- /dev/null +++ b/changelog/unreleased/fix-role-service-grpc.md @@ -0,0 +1,6 @@ +Bugfix: initialize roleService client in GRPC server + +We fixed the initialization of the GRPC server by also providing a roleService client and a roleManager instance. + +https://github.com/owncloud/ocis-accounts/pull/114 + From 8700b63e2afa1f335cb46aca139d4b243cc95d97 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 8 Sep 2020 14:25:03 +0000 Subject: [PATCH 356/407] Automated changelog update [skip ci] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 839d4752ec..6b8a5504f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ The following sections list the changes in ocis-accounts unreleased. ## Summary +* Bugfix - Initialize roleService client in GRPC server: [#114](https://github.com/owncloud/ocis-accounts/pull/114) * Change - Set user role on builtin users: [#102](https://github.com/owncloud/ocis-accounts/pull/102) * Change - Add new builtin admin user: [#102](https://github.com/owncloud/ocis-accounts/pull/102) * Change - We make use of the roles cache to enforce permission checks: [#100](https://github.com/owncloud/ocis-accounts/pull/100) @@ -14,6 +15,14 @@ The following sections list the changes in ocis-accounts unreleased. ## Details +* Bugfix - Initialize roleService client in GRPC server: [#114](https://github.com/owncloud/ocis-accounts/pull/114) + + We fixed the initialization of the GRPC server by also providing a roleService client and a + roleManager instance. + + https://github.com/owncloud/ocis-accounts/pull/114 + + * Change - Set user role on builtin users: [#102](https://github.com/owncloud/ocis-accounts/pull/102) We now set the default `user` role on our builtin users. From 1965469ae6715264fa2b90b091c664f12611f0c9 Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Wed, 9 Sep 2020 10:28:13 +0200 Subject: [PATCH 357/407] Add create/delete capabilities and UI --- package.json | 3 + ui/components/App.vue | 39 +++++- ui/components/accounts/AccountsList.vue | 16 ++- .../accounts/AccountsListNewAccountRow.vue | 126 ++++++++++++++++++ ui/store/index.js | 35 ++++- yarn.lock | 5 + 6 files changed, 218 insertions(+), 6 deletions(-) create mode 100644 ui/components/accounts/AccountsListNewAccountRow.vue diff --git a/package.json b/package.json index 7f0dce47fe..edafd3de8f 100644 --- a/package.json +++ b/package.json @@ -76,5 +76,8 @@ ], "peerDependencies": { "owncloud-design-system": "^1.7.0" + }, + "dependencies": { + "validator": "^13.1.1" } } diff --git a/ui/components/App.vue b/ui/components/App.vue index c77b087db8..403a8e870e 100644 --- a/ui/components/App.vue +++ b/ui/components/App.vue @@ -2,7 +2,16 @@

- + + |
@@ -32,7 +41,11 @@

@@ -45,6 +58,9 @@ import AccountsList from './accounts/AccountsList.vue' export default { name: 'App', components: { AccountsList }, + data: () => ({ + isAccountCreationInProgress: false + }), computed: { ...mapGetters('Accounts', ['isInitialized', 'getAccountsSorted']), ...mapState('Accounts', ['selectedAccounts']), @@ -86,17 +102,34 @@ export default { } return actions + }, + + disabledCreateAccountBtnTooltip () { + if (!this.isInitialized) { + return this.$gettext('Loading users') + } + + if (this.isAccountCreationInProgress) { + return this.$gettext('User creation is already in progress') + } + + return null } }, methods: { ...mapActions('Accounts', ['initialize', 'toggleAccountStatus']), - ...mapMutations('Accounts', ['RESET_ACCOUNTS_SELECTION']) + ...mapMutations('Accounts', ['RESET_ACCOUNTS_SELECTION']), + + setAccountCreationProgress (isInProgress) { + this.isAccountCreationInProgress = isInProgress + } }, created () { this.initialize() }, beforeDestroy () { this.RESET_ACCOUNTS_SELECTION() + this.setAccountCreationProgress(false) } } diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue index d8ef723030..e26b06c6b0 100644 --- a/ui/components/accounts/AccountsList.vue +++ b/ui/components/accounts/AccountsList.vue @@ -22,6 +22,7 @@ + import { mapActions, mapGetters } from 'vuex' import AccountsListRow from './AccountsListRow.vue' +import AccountsListNewAccountRow from './AccountsListNewAccountRow.vue' export default { name: 'AccountsList', components: { - AccountsListRow + AccountsListRow, + AccountsListNewAccountRow }, props: { accounts: { type: Array, required: true + }, + isCreateNewRowDisplayed: { + type: Boolean, + required: false, + default: false } }, computed: { ...mapGetters('Accounts', ['areAllAccountsSelected']) }, methods: { - ...mapActions('Accounts', ['toggleSelectionAll']) + ...mapActions('Accounts', ['toggleSelectionAll']), + + emitCreationCancel () { + this.$emit('cancelAccountCreation') + } } } diff --git a/ui/components/accounts/AccountsListNewAccountRow.vue b/ui/components/accounts/AccountsListNewAccountRow.vue new file mode 100644 index 0000000000..89c9ab9454 --- /dev/null +++ b/ui/components/accounts/AccountsListNewAccountRow.vue @@ -0,0 +1,126 @@ + + + diff --git a/ui/store/index.js b/ui/store/index.js index aa2ccc0129..b439c74fd6 100644 --- a/ui/store/index.js +++ b/ui/store/index.js @@ -1,5 +1,5 @@ /* eslint-disable camelcase */ -import { AccountsService_ListAccounts, AccountsService_UpdateAccount } from '../client/accounts' +import { AccountsService_ListAccounts, AccountsService_UpdateAccount, AccountsService_CreateAccount } from '../client/accounts' import { RoleService_ListRoles } from '../client/settings' /* eslint-enable camelcase */ import { injectAuthToken } from '../helpers/auth' @@ -56,6 +56,10 @@ const mutations = { RESET_ACCOUNTS_SELECTION (state) { state.selectedAccounts = [] + }, + + PUSH_NEW_ACCOUNT (state, account) { + state.accounts.push(account) } } @@ -164,6 +168,35 @@ const actions = { } commit('RESET_ACCOUNTS_SELECTION') + }, + async createNewAccount ({ rootGetters, commit, dispatch }, account) { + injectAuthToken(rootGetters.user.token) + + const response = await AccountsService_CreateAccount({ + $domain: rootGetters.configuration.server, + body: { + account: { + on_premises_sam_account_name: account.username, + mail: account.email, + password_profile: { + password: account.password + }, + account_enabled: true, + display_name: account.username + } + } + }) + + if (response.status === 201) { + commit('PUSH_NEW_ACCOUNT', account) + console.log(response) + } else { + dispatch('showMessage', { + title: 'Failed to create account', + desc: response.statusText, + status: 'danger' + }, { root: true }) + } } } diff --git a/yarn.lock b/yarn.lock index 235035ada7..dd480cbedf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6348,6 +6348,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validator@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.1.1.tgz#f8811368473d2173a9d8611572b58c5783f223bf" + integrity sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw== + vasync@1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/vasync/-/vasync-1.6.2.tgz#568edcf40b2b5c35b1cc048cad085de4739703fb" From 729fd3b5c8e91a70756355749dba3891be469d00 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Wed, 9 Sep 2020 10:57:39 +0200 Subject: [PATCH 358/407] Add preferred_name to request payload when creating account --- pkg/assets/embed.go | 35 +++-------------------------------- ui/store/index.js | 1 + 2 files changed, 4 insertions(+), 32 deletions(-) diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go index f7f6ec4a2b..54306bb44f 100644 --- a/pkg/assets/embed.go +++ b/pkg/assets/embed.go @@ -1,5 +1,5 @@ -// Code generated by fileb0x at "2020-09-07 17:45:26.571709 +0200 CEST m=+0.059244100" from config file "embed.yml" DO NOT EDIT. -// modification hash(6687169ddabd55f7faead6c4eeefd4b6.8058aec596c5fb73022d09bb97af796e) +// Code generated by fileb0x at "2020-09-09 10:56:27.896489 +0200 CEST m=+0.008174576" from config file "embed.yml" DO NOT EDIT. +// modification hash(2305dca416b94238ceed8e4954147989.8058aec596c5fb73022d09bb97af796e) package assets @@ -36,10 +36,7 @@ type HTTPFS struct { } // FileAccountsJs is "accounts.js" -var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\xbd\xe9\x76\x1b\xb7\xb6\x30\xf8\xbb\xbf\xa7\x20\xeb\xfa\xd4\x05\xc2\x2d\x9a\x74\x86\x93\x14\x8d\xf0\xca\xb3\xe3\x31\x96\x6c\xc7\x61\x78\xb5\x4a\x24\x28\xc1\x22\x01\x06\x05\x4a\x96\xc9\xea\xf7\xe9\xd7\xe8\x27\xeb\x85\x0d\xa0\x26\x96\x6c\x9f\xf3\x0d\x6b\xf5\x1f\xb2\x0a\x85\x71\x03\xd8\xd8\x33\xe6\x7c\x21\x24\x27\x64\xb1\x91\x33\x23\x94\x24\x74\x1b\x6d\x32\xde\xc9\x8c\x16\x33\x13\x8d\x2e\x53\xdd\x31\x2c\xda\x48\x97\x71\x1e\x75\x99\xb9\x5e\x73\xb5\xe8\x9c\x2d\xd5\x69\xba\x3c\x3e\x17\xd9\xb8\x7c\x4c\xda\x72\x5e\x09\x39\x57\x57\x63\xf7\xd7\x9a\xc3\x55\xe0\xeb\x69\xcd\x91\xf1\xe5\x62\x6c\x7f\x92\x6d\x3e\x0a\x9d\xed\x70\x62\x80\xd3\xad\xe6\x66\xa3\x65\xc7\x10\xce\xb6\xfc\xd3\x5a\x69\x93\x25\xdb\x3c\x07\xde\xf7\x6f\xb4\x7c\xcc\xed\x88\x24\xab\x0e\xd9\xd0\xad\x4d\xe4\x6c\x3f\xe5\xd5\xe9\x47\x3e\x33\xfd\xb5\x56\x46\xd9\x9e\x80\x64\xbc\x7f\x9e\x66\xaf\xae\xe4\x6b\xad\xd6\x5c\x9b\x6b\xd0\x2c\x0a\x05\x23\x16\xfa\x7b\x74\xbd\x3a\x55\xcb\xb1\xfb\x4b\xb6\x39\x28\xa6\xfb\xc2\x70\x9d\x1a\xa5\x77\xbb\xe8\xbf\xfe\x2b\xbc\x44\x20\x98\xee\xa7\xd9\xb5\x9c\x3d\xad\x7e\xaf\xa5\x44\x90\x32\xdd\x37\xea\xc8\x68\x21\xcf\x8e\xd3\x33\xcc\x52\x79\x8f\x4a\xa0\xcc\x2c\x50\x40\x82\x76\x83\x50\x8c\xc7\x31\x2f\x87\xd0\x11\x32\x33\xa9\x9c\xd9\x5e\x2e\xc7\x3c\x59\x82\x08\xc3\x9c\x69\x9e\x1a\x4e\x54\x99\x99\x42\xca\x24\xbf\xea\xbc\x22\x7a\xb7\x9b\x4c\xe9\xc8\x83\x5a\xf4\x4f\x84\xbc\x54\x17\x55\x98\xd9\x46\x5d\x93\x9a\x45\xd9\x26\x5b\x73\x39\xe7\xf3\x23\x93\x6a\x13\x85\x72\x45\x6e\x05\x82\x6e\xc5\x82\x44\xfc\x13\x9f\x6d\x8c\x90\x67\x11\x63\x4c\x53\x73\xae\xd5\x55\xc7\x36\xf9\x50\x6b\xa5\x49\xf4\x98\x4b\x07\x82\x8e\xc8\x3a\xe9\x52\xf3\x74\x7e\xdd\xd1\x1b\x29\x6d\x11\x3a\xb2\x55\xcc\xd4\x6a\xbd\xe4\x86\xcf\x5d\x15\x58\x2d\xd6\x63\xdf\x95\xaf\x52\x84\x2e\x3c\x24\x34\x5f\x28\x4d\x64\x7f\xc5\xcd\xb9\x9a\x33\x05\xb2\x9f\xea\x33\x26\x46\x23\xd7\xfd\x94\xc9\xfe\x9c\x2f\xf9\x59\x6a\xb8\x6d\x20\x75\xc9\x33\x76\x4a\x52\x90\xd8\xe6\x0c\x5b\x99\x31\xc6\x36\x74\xa6\xa4\x11\x72\xc3\x43\x03\xb3\x3c\xb7\x3d\x90\xfc\x93\xb1\x1d\x08\xed\x50\xd9\xcf\xb8\x34\x4c\xf6\x4f\xfc\x7f\xaa\xcf\x46\x7c\x99\xf1\x4e\xad\xc3\x45\x7e\x1c\x47\x03\x8e\x15\x18\x69\x56\x19\xb8\x1b\xc2\x48\xf6\xe7\x22\x5b\xa7\x66\x76\xfe\xf0\xd3\x8c\xaf\x11\xd2\xf8\x85\xe6\xb6\xa1\xc8\xf5\xb0\xda\x4a\x1c\xcb\x7e\x7a\xaa\x37\x6b\x43\xc2\x57\x57\x17\x1d\x69\x56\x99\x1c\x44\x04\x4b\x96\xf9\x69\x46\xb8\x4b\xa5\x57\xe9\xd2\xd6\xb6\xec\xe3\x62\xb1\x3d\xd6\x16\x78\x4a\xf2\x71\xa5\x77\x49\x39\x8c\x0f\x82\x2f\xe7\x11\x2c\x11\xe2\x2d\xd0\xdb\x5e\xa6\xcb\x0d\x4f\xf0\x3b\xd8\x7a\x12\x57\x5d\x9e\x97\x10\x72\xad\xc5\x31\x69\x82\xc0\x4f\xa8\xcf\xe9\xa7\x75\xe9\xc6\x9f\xe7\xc4\x80\x84\x94\x82\xc8\x8b\xad\x12\x86\xb3\x35\xfa\xda\x63\x91\xad\xad\x3b\x09\x63\x83\x54\x9f\x25\xa6\x3f\x4b\x97\x4b\x62\x33\xe6\xf9\xcc\x42\xd7\x22\x88\x5a\x76\xdf\x22\xe6\xce\xf3\xdc\xf4\xaf\x74\xba\x66\x33\x84\xda\x86\x55\x51\xd6\x92\xd0\x6d\xd9\x81\x45\xed\x6d\x6d\xdf\x6c\x91\xb9\x2d\x32\x9f\xa8\x29\xab\xe0\xe5\x80\xe5\xce\x45\x96\x63\xc5\xe7\x61\xdf\x9e\x71\xf3\x3a\xec\xd8\x57\x0b\xb8\x64\xe7\x71\x7c\x4e\xce\xc9\x21\x99\x4c\x29\xa5\xa3\xcb\x38\xbe\xec\x32\x8b\x07\xa4\x1b\xca\x25\x28\x1a\xc7\x64\xce\x2e\x29\xd6\xb4\x62\xeb\x72\xcf\xb3\x65\xe5\xb9\x8e\x19\xe6\xb4\x1c\xc8\xb5\x05\xc2\xc4\x2d\x73\x08\x00\x08\x6b\x68\xda\x5f\x28\xfd\x30\x9d\x9d\x57\xd0\x2c\xa7\x5b\x33\xe1\xd3\x1a\x96\xad\x8c\x29\x60\x14\xc2\xc1\xd0\x3c\xa7\xb4\x84\xcb\x99\x43\xf3\x88\x5a\x46\xd5\xbc\xac\x8e\x4f\x8a\x02\x69\x09\x2e\x8b\x4a\xaa\xc8\x5e\x43\x4a\xb7\xdd\x22\xa7\xb6\x25\x21\x85\x99\xab\x7e\x63\x57\xf8\x44\x4d\xc1\x80\x70\x8b\xdc\x0d\xac\xcb\xd8\xc6\xaf\x71\xb7\x11\x36\xb8\x40\x17\x6c\xd9\xc7\x05\x5b\xe0\xb7\x38\x8e\x14\x82\xac\x3c\x0a\x16\x05\xd8\x17\x10\x9d\x9c\xa4\x57\xa9\x30\x11\x1d\xf3\xbe\xe6\x99\x5a\x5e\x72\xb2\xe8\xfb\x54\xda\x37\xe7\x5c\xd6\x4f\x26\xed\x31\x09\x18\xec\x65\x4e\xa1\xf9\xd9\x83\x3e\x7c\xa7\x49\xa5\xe6\xb6\x1a\x7d\x97\x99\x81\x94\x2c\xf7\x2b\x74\x03\x69\xa9\x37\x9f\x91\x8d\xdb\x4b\x08\x33\x0b\x48\x9b\x1a\x0a\x30\x3d\xd6\xae\xb5\x14\x52\x9a\xa4\x84\xe6\xe5\x0c\x9e\x96\x33\x28\x99\x29\x0e\xc2\x09\xf7\x7b\x76\x6a\x61\x7d\xa9\xc4\xbc\x33\xb0\xc8\x09\x31\x09\x2f\x90\x30\x93\x9b\xe5\x12\x4a\x04\xc0\xab\x28\xb2\xac\xad\xef\xba\x12\xc7\x84\x17\xa8\x20\xe0\x34\x8e\xb8\xc0\xb5\x00\xae\x37\x6d\x15\x52\x3f\x9a\xcd\x88\x37\xb1\x89\xab\xc1\x2e\xa7\xe3\xeb\x35\xf7\xa7\xd3\xf1\x39\xef\x84\xe6\x3b\x73\xc5\xb3\x8e\x54\xa6\xb3\xd6\xea\x52\xcc\x79\x27\xed\xfc\x27\x16\xfe\xcf\x8e\xab\x2b\x2a\xa0\xb5\xc9\xdd\x39\x99\x11\x09\xe5\x00\x5c\x1b\xd5\x75\x67\xf1\xbd\x5b\x77\xbe\xe0\x0d\xdd\xd2\xb8\x1c\x9b\x10\xdb\x8c\x1c\x01\x80\x5f\xc3\x12\x55\x63\xe5\x10\x34\xe1\x13\x63\x57\xca\x66\x69\x5e\xa6\x2b\x3e\x65\xca\x2d\x0c\xe0\x7d\xbb\xe2\x98\xc1\xbf\xe7\x6a\x56\xec\xea\x6e\x09\xa9\x1a\x90\xdd\x02\xad\x82\x98\xee\xf7\x85\x26\x2a\x21\xdf\x06\xd5\x02\xa2\xae\x77\xf6\xe4\xb7\x60\x4d\x65\xc7\xef\xad\xb6\xea\xcb\xc5\x76\x55\xd2\x6f\x16\xb1\x3f\x57\xb3\xc4\x4c\x06\xd3\x7c\x34\xec\x08\xd9\x31\xd8\x75\x44\xe3\xcf\xd5\x8c\x99\xc9\x70\x4a\xe1\x4e\xf9\x65\x21\x64\xba\x5c\x5e\xbb\x6f\x77\xa6\xb6\x87\x0b\xc3\xb5\x7b\xff\x7e\x4a\x01\x11\x90\xd1\xd7\x0f\xa5\xd1\x82\x67\xfd\xf5\x26\x3b\x27\xbc\xd2\xfe\x51\xd9\xbe\xe9\xfb\x03\x4a\x28\xb9\xdb\x6d\xf3\x11\xc7\xd9\x64\xc5\xf9\x62\x47\x61\x78\x07\xc1\x00\xd5\xdc\x8c\x97\x15\xbe\xb2\x15\x36\x9a\x65\x93\x30\xb6\x48\x2b\x65\xa2\x7c\x0a\xa6\x40\xba\x57\xd8\x49\xdf\x55\xcd\x33\x6e\x48\x77\x50\xe9\xe1\xa1\xad\xd0\xee\x9d\xa2\x9f\x13\x85\x5b\xb0\xb2\xce\x10\x63\x19\xb7\x18\xf7\xe9\x5b\xb7\x38\x42\x6e\x63\x73\x75\x45\xf6\x32\x7d\x49\x4c\x7f\xc9\xe5\x99\x39\xa7\x81\x16\x3c\x18\x82\x60\x15\x92\x9d\x6e\x2d\xf9\x35\xea\xf5\xf4\xdd\x90\x77\x44\xc5\x82\x78\x24\x69\x40\xd3\xb2\x17\x1e\x55\x4d\xb4\x9d\x08\xbb\x6c\x59\x77\x08\x05\xba\x0d\xdf\xfd\xbe\x0e\x39\x06\xc0\xf3\x92\x52\xc5\xc5\x2c\x72\xbf\xf5\xb6\xf6\x35\x79\x58\xc1\x4d\x0f\x8b\xc3\xc2\x13\x1f\xbe\x36\xa4\x3e\xba\x83\x50\xb0\xb3\xa8\x1c\x8b\xab\xfe\x4c\xc9\xcc\xe8\xcd\xcc\x28\xcd\xd6\xb0\xae\xbd\x2f\x60\x3d\x49\xa7\x6c\x81\xd4\xd8\x32\xbd\xb6\xdb\x8b\x95\x94\xec\xa3\x00\x4d\xbb\xf5\xb3\xbd\xe4\x16\x36\xa4\x6d\x02\xe2\xd8\x54\x1b\xf5\xe3\xed\x76\x2d\x61\xc4\x19\x63\x8b\xdd\xae\xa5\x49\xc6\x98\x45\xac\x65\xbf\x76\x3b\xde\x97\xe9\x8a\x53\x9a\x83\xe9\xaf\x52\x7d\xd1\x76\x40\x7b\x32\x20\xab\x11\x1a\xe3\xd6\x54\x62\x60\x4d\x13\x62\xfa\x27\x27\x08\xaf\x93\x13\xb6\x86\x14\xf7\xd7\x6e\x47\x8c\x05\x4c\x4b\xbf\x28\x05\x73\x23\xd9\xb1\xa2\x60\x6c\xef\x52\xa4\xaa\xf6\xbb\xb7\xf5\xe7\xa7\xa5\xbd\xe0\x9a\x9c\x55\xf9\x97\xca\xcb\x44\xdc\x48\x4f\x81\xe9\x1f\x56\xf9\x2d\x66\x37\x23\x72\x60\x65\x09\xe4\xa9\x00\x09\x8d\xe2\xa4\x12\x71\x4c\x04\x7b\xad\xd5\x4a\x64\xdc\xd1\x52\x8e\x61\x3a\x23\xb3\x50\x80\x5a\x52\x22\x34\xd6\x36\xe1\x44\xd2\x71\x9a\xa4\xb8\x50\x49\x2b\x0d\x10\x0a\x23\xde\x36\x6e\xd1\x17\x05\xec\x21\x0c\xd7\x16\x48\xab\x3a\x70\x23\x58\x7d\x81\x84\x84\x55\xc1\x4f\xee\x67\x89\x26\x0e\xd3\x76\x8a\xca\xa6\x91\x05\xd2\x05\xbf\xce\x5a\xd6\xe7\x64\x3a\xb2\x7b\x1a\x8f\x77\x9c\x69\xca\x1d\x5a\x94\xb4\xdc\xaa\x9a\x5f\x72\x9d\x71\x42\xa1\xd8\x7a\x32\x20\x03\x5e\x20\x02\x8f\x34\x78\x7f\xad\xd6\x04\xb1\x8f\x76\x35\x06\x7a\xce\x6f\x79\x0d\xb2\xc0\x07\x32\x2f\x3e\x06\x04\x20\x73\xdb\x5d\xcc\x9a\xb1\x43\x78\x55\x59\x5b\xdb\xca\xae\x49\x5e\x01\xa2\xc7\xa4\x3a\x26\x8b\x18\x2d\xe2\x5c\x6b\x7e\xc9\x06\x0e\x89\x22\x12\xf1\xcf\xc8\xbe\x39\x32\x14\x1f\x3d\xbe\xc0\x94\xd0\x25\xf7\x52\x3b\xa2\x30\xa9\x7e\x64\x62\x52\x85\x30\x69\x1e\x2d\x01\x9f\x1f\x51\xe8\x1a\x1a\x40\xcc\x11\x20\x16\xc1\x47\xc6\x51\x2f\xb3\xf3\x54\x1f\x1a\x32\xa0\x05\xa9\x69\x3f\x03\xa7\x71\xec\xb1\x72\x8f\xf7\xb3\xa5\x98\x71\x32\xa4\x96\xf2\xb7\x9f\x2d\x2d\xee\x4f\xeb\x1c\x32\xa3\xd6\x49\x65\x19\x54\x06\x33\xf0\x42\xa0\x46\xe7\x26\x83\x69\xe5\xb8\xaa\xd3\x2c\xc6\xd1\x2c\x8e\x51\x35\x55\xea\xc3\x9d\x48\x97\xe9\x32\x87\x3d\x56\xb5\x75\x12\x6c\x1f\x42\x45\x23\x7f\x58\x9d\x8b\x6c\x54\xa1\xe0\x51\xd4\xe1\xeb\x4f\xfd\xf9\x1a\x18\x32\x84\xae\x09\x24\x8d\x04\xfd\x55\xc2\xa5\xdb\xd5\x79\x80\xb4\x6a\x0e\xda\x2f\xd3\x83\xe1\x48\xfd\xca\x06\xa3\x83\x03\xe5\x16\xac\xd8\x83\x8e\x9a\x42\xca\x44\x13\x42\x78\x54\x5b\xbc\xd1\x77\x87\x37\x2d\xc9\x6d\x2e\xe7\x4e\x9e\x11\xbe\xdd\x65\xc5\x2a\x0c\x02\x08\x3f\xb9\x02\xa2\x40\xbf\x44\x14\xb2\x4a\x72\x49\xbc\xb8\xba\x66\x71\x9c\xd5\x17\xf4\x5d\x51\xd0\x3e\x65\xe3\x65\x1a\x74\x07\x58\xb0\x9a\xbf\xac\xb4\x5a\xa2\x92\x9a\x07\x29\xc6\xec\x5f\x6e\x0b\x8b\xda\x42\xdd\x6c\x5f\xf6\x63\xf4\x75\x27\x33\xa9\xe1\x2b\x2e\x4d\xe7\x4a\x98\x73\xb5\x31\x1d\x2c\xde\x51\xba\xe3\x7b\x10\xfd\x1b\x1d\xce\xf3\x1c\x9c\xd8\x23\xa9\x0a\xb0\x1c\x36\x72\x18\xe8\xc6\x99\xd7\x6e\xe6\x0b\xf1\x5a\x73\xe6\x35\x52\x52\x6a\x7f\x16\x8b\xcd\xa9\xea\x13\x15\xc7\x65\xe7\x55\xb5\x9b\x7e\x69\xa9\xd1\xa9\xe6\xe9\x45\x9e\xdb\xd3\x26\xc2\x67\xdc\x64\xbb\x5d\x14\xa4\x27\xf8\x4e\xe3\xb8\x5c\x3b\x3c\x8e\xf9\x5d\x56\x1d\x35\x1e\x55\x16\x13\x85\x73\x4a\x8c\xab\xeb\x33\xd9\x16\x34\x93\xdf\x44\xc6\x6f\x1f\x0e\x62\x4c\x6e\xc2\x5e\x8e\xba\xaa\x34\x63\x29\x7d\xfc\x12\x44\x33\x24\xa5\x39\x84\x97\x06\xb8\xbf\x0d\x6b\x54\xc6\x8c\x59\x9a\x03\xc7\xc4\x71\xd9\x1d\x2c\x9b\x54\xa4\x5d\x3e\x07\x29\xb0\x0f\x2b\x30\xaf\x71\x94\x77\x75\x74\x81\x67\x2c\x2b\x74\x9b\x33\xa9\x48\xbc\x8c\x97\x41\x71\x8f\x4c\x5d\x3e\x4e\x61\x93\xc3\x42\x48\x91\x9d\xd7\xb0\x59\x81\xba\x6f\x5e\x56\xdc\x2d\xab\x92\x4b\x6e\x2c\x2b\x8e\xcb\x4a\x56\xf9\x13\x3b\xe7\x55\xbc\x5a\x40\x5c\x56\xe6\x15\x64\xc1\xc0\x50\x38\x22\xd2\x76\x31\x07\xdc\x44\xff\xbb\xba\xe8\xd6\x20\x76\xcf\x1f\xe7\xf2\xc6\xa3\x42\x57\xc4\x2a\x81\x53\xb5\xbd\x0c\x47\xba\xca\xf3\x3d\xbc\x20\x96\xf6\x5c\x5d\x7a\x4c\x90\x1a\xc3\x57\x6b\x13\xd1\x1c\xc2\x81\x8b\x52\xc6\xa4\x29\x9a\xae\x82\xaa\x38\x9a\xb7\x81\xd9\x4c\x2c\x53\x04\x25\x3f\x9c\x70\xf0\xfc\x6f\x22\x73\x28\xc4\xb9\x95\x95\x12\xa6\xbe\x7a\x7a\x58\xd8\x9a\x9c\x98\x42\xf3\x30\x72\xa2\xc5\xb3\x40\x47\xbd\xd9\x48\x23\x56\x9c\xf1\x52\x92\x58\xd0\x81\x91\x46\x09\x5a\x33\x6f\x87\x75\x74\x44\x2d\x8b\x99\x53\x0a\xba\x55\x80\x66\xb9\x81\x17\xa9\x39\x67\xcc\xfe\xc6\xb1\x41\x8d\x03\xd9\x13\x46\x95\xaa\x9a\x38\x2e\x9f\xe9\x6e\xd7\x92\xd7\x29\x6c\xe2\xd8\xfd\xb7\xe7\xc9\xf8\x72\x11\xc7\xf6\xb7\xfd\xbb\xed\x18\xdd\xed\x2a\x43\x2c\x27\x21\xa2\x84\x56\x58\x43\x64\x72\x0b\x39\x6c\xb7\x6b\x49\xdb\x86\xb4\xd5\x72\x63\x90\xb2\xae\xa8\x29\xac\x7c\x95\xff\xec\x06\xb6\xc1\x69\x8f\x82\x82\x86\x6c\x73\x18\xc2\xf6\xac\x4a\xe5\x95\x85\xf2\x9c\x4e\x86\x53\x0b\xd8\x19\xdb\xe6\x96\x4c\xc4\x42\x4f\xb3\x87\x72\xb3\xe2\x3a\x3d\x5d\x72\xc8\x2a\x82\xd6\x8a\xe6\xe7\x01\xcf\x66\x5a\xac\x8d\xd2\xb0\x61\xdb\x45\x92\xc5\x71\x77\xe6\x30\xfc\x76\x98\xdc\xc9\x61\x48\xc7\xfb\xb4\x72\xe6\x68\x33\x43\xab\x1c\x1b\xef\xf3\xa2\xb9\x3c\x99\xe5\xb0\x64\x75\x44\xe9\x19\x9d\x32\x57\xd2\x25\xc3\xd8\x50\x98\x29\xb9\x10\x67\x9b\x90\x76\xc7\xa6\x5d\x69\x61\xfc\xfb\x0f\xf6\xdd\xf1\x0b\x3c\xcf\x61\x61\xc7\x18\xc8\x7e\x68\xe3\xa5\x3a\x8b\xc0\xf9\x7b\x82\xf1\x67\x38\x18\xda\xad\xc5\xa2\xa8\x9f\xad\x97\xc2\xc0\x39\x6b\x83\x7f\xd7\xc1\x88\x44\x9f\x23\xda\x0a\x46\x32\xb0\xac\xca\x78\xbf\xc9\xc8\x75\x27\x62\x6c\x4d\x0c\x1d\xcf\x83\x1c\x20\x8a\x68\xe2\x2b\x35\x34\xf7\x8f\x70\xc9\x1a\x64\xa2\x3d\xd2\x2c\xaa\x71\x68\xa2\x22\x46\xba\x9f\xca\xff\xb4\xe4\xc2\x72\xe9\xe5\x6f\x1d\x25\x3b\x51\xcf\x94\xdc\x58\x0e\xab\x36\x10\x9c\x93\x4b\x62\x90\xab\x6a\xf9\xba\xbf\xc4\xc7\xb6\x07\x5d\xc6\x4c\xd2\xc6\xa7\xe7\x70\xc6\xf6\x0e\xbd\xee\xb5\x6d\xa0\x90\x9e\x20\x3a\x05\x8d\x12\x98\x38\xde\xaf\x85\x48\x7b\xe0\xf8\x69\xb3\x44\xfd\x35\xea\x59\xfc\x44\x15\x15\xe9\x76\x61\x0d\x96\xc6\x35\xf0\x6a\xf1\x95\xc2\xdd\xff\xb9\xe6\x6f\x9a\x02\x25\x2f\xb9\x36\x5e\x7a\xd7\x31\xaa\xb3\xd6\x62\x25\x8c\xb8\xe4\x1d\xec\x97\xc5\xdd\xa7\x76\x69\x36\x54\xab\x57\xad\xbb\xa0\x73\x1a\x56\x08\xa7\x39\x1c\x31\xd5\x9f\xab\xd9\xc6\xd2\x88\xf0\x8a\x5d\x93\x23\x1a\xc7\xd7\xe4\xc8\x0b\x0f\x1e\x2e\x91\x7a\xa4\x70\xd8\x2a\xd7\x18\x37\xf2\x11\x43\x51\x75\xfc\x90\x75\x53\xcb\x3c\xfd\x4b\x88\xe6\x90\x44\x73\x71\x19\x51\x88\xd2\xe8\x4b\x08\xa7\x9f\x5a\x7c\xf3\xe9\xab\x58\xe5\xc4\x62\x95\x74\xfc\x69\x9f\x68\x32\x6c\x65\x4f\x2b\xce\xce\x08\xb7\x64\x34\x3c\xa4\x25\xea\xec\x7c\x72\xa0\x29\x90\x67\x2e\x16\xe4\x0a\xd3\xc2\x54\x2d\x49\x77\xd3\x5f\x94\x60\x04\x33\xe1\x53\x9a\xe7\xf0\xb1\xb9\xbb\xdc\x4a\x6d\x4e\xac\x5b\x0a\xc4\xd0\x5e\xd4\x22\x9d\xad\xec\xaf\xfb\xed\xa0\x82\x0b\x37\xb4\xfb\x7b\x87\xb4\x58\x90\x8f\xf5\xa1\x7d\xb4\x34\x4b\x6d\x7c\xf7\x7d\xe6\xfa\x08\xa3\x33\x6e\x22\x21\x3b\x72\xb7\x8b\x32\xff\xb8\x8f\x14\x0e\x67\x33\x9e\x65\x4a\xbb\x4e\x67\x9b\xb5\x3d\xa6\xf9\xbc\xe8\x74\xe4\x16\xa4\x2d\x6c\xcf\x77\xcb\x24\x7b\x91\x03\x05\x93\xe7\xf0\x9a\xa5\xe3\x1b\x08\x8b\x8b\xfe\x02\x53\x96\x64\x08\x92\xd2\xfc\x46\x02\x04\x2b\x05\x93\xc3\x71\x63\x7d\xdb\x31\xbe\x26\x0a\x2a\xd3\x27\xe9\x56\x4d\xcc\x94\xf1\x40\x10\xf1\x1c\xde\x30\x35\x89\x4e\x4e\x66\x4a\xf3\x83\x8f\xd9\x49\x76\x9e\x6a\x3e\x3f\x39\x89\xa6\xbb\xdd\x31\x69\xfb\x00\xdb\x9c\xc2\x73\x16\x4e\xe1\x62\x2f\x8f\xca\xbd\x5e\x58\x5a\xbc\xe9\x0b\x99\xad\xf9\xcc\x1c\xa9\x8d\x9e\x59\xfa\xb6\x91\xd2\xb6\x8f\x9e\x07\x64\x90\x3b\xe6\xe2\x25\x3c\x85\xb7\x70\x8b\x35\x8a\xc2\x03\xa6\xfa\xef\x79\x7a\xf1\x22\x5d\xc3\x8b\x36\xb1\xe6\x83\x38\xbe\x2d\x53\xc4\x0c\x33\x35\xe7\xb7\xfb\x86\x67\x86\xdc\x22\x0f\x28\x85\x47\x4d\xab\x8d\x92\xcc\x6a\xc7\x13\x6f\x26\x66\xba\xdb\x11\xfb\xe7\x09\xb4\x2e\x63\x7c\xcc\x93\x6d\x4e\x73\x4a\xa2\x4b\xae\x33\xa1\x64\x16\xc1\x64\x4a\x9d\xc0\x6a\xeb\xd3\x92\xe8\xfb\xfe\x4f\xfd\x1f\x23\x58\xa9\x39\x4f\x22\x47\x2a\x45\x30\x53\xeb\x6b\x2d\xce\xce\x4d\x12\xfd\xbf\xff\x4f\xe7\xce\xe0\xce\xa0\xf3\x80\x4b\x91\x75\x5e\x6f\xb2\xf3\x8b\x54\xf3\xcb\x0e\xf9\xbc\x54\x42\xab\xd9\x45\x5f\x6f\x68\x64\x1b\xa2\xf0\x37\x1b\xc0\x3d\xa4\xcc\xfa\x3a\x95\x73\xb5\x22\x14\x1e\xb7\x9d\x2d\xce\x5e\x84\x44\x3d\xbf\xc1\x0a\x41\xa3\x19\x47\x51\x62\xb7\x1b\x3d\x89\x7a\xa4\xd7\xfb\xbb\x77\x8f\x16\xd3\x48\xbe\xff\x89\xe6\xf0\x99\x3d\x22\xd1\x05\xbf\xce\x22\x0a\xef\xda\x26\xe9\xb3\x03\x87\xfd\x63\x8f\xdd\x01\xf7\x84\x6d\x73\xf8\xa3\x9c\x14\x7b\x06\xbc\x70\x94\xca\x07\x94\x63\xfe\x01\xcf\xd8\x07\x8b\xa1\xe0\x37\xf6\xc1\xa2\x67\xf8\x9d\x7d\xe8\x67\xdc\x8c\x5e\xb6\xc3\xfc\x77\xb7\x12\x3e\xe0\x1a\x06\x9e\xc3\xd3\xb6\xae\x3c\x2b\x72\xd1\xdd\xce\xe2\xdb\xb7\x6d\xb9\x7e\x2b\x73\xe5\x4e\x50\x60\x3b\xf6\x9e\xbd\x23\x11\x8a\x05\x22\x3a\x7a\x32\x79\x3f\x65\xdd\x01\xdc\xd0\x9b\xd7\xc4\xc0\xfb\x2f\x75\xc4\xa2\xc5\xf7\x74\x6c\x26\xef\xa7\xc9\x8d\xfd\x70\x99\x72\xd4\xd9\xfd\x09\xc6\xb0\x6d\xc6\x4d\xf2\x12\x2c\x86\x7f\x0a\xe7\x69\x96\xbc\x05\x2e\x17\x4a\xcf\x78\xd2\x52\xfc\xad\xa5\x6a\x9e\xda\x93\xe5\x25\x31\x76\x2b\xe6\xb6\xa4\xe1\xfa\x91\xd2\x6d\xf9\xab\x1a\x73\xa4\x0c\x46\x0e\x0f\x73\xba\xdb\x11\xc9\x9e\x12\x4e\x29\x72\x4d\xdd\x56\xb2\xe7\xa9\xb4\xbc\x56\x6a\xc4\xe9\x92\x77\x34\x9f\x71\x71\xc9\x35\x58\xc2\xa7\x17\x75\x34\xff\x7b\x23\x74\x05\xdf\x75\x64\x9e\xe7\xc0\x4d\xbb\x45\x94\xc1\xd3\x09\xa4\x7d\xf0\x23\x04\xcd\xfc\xaa\xf3\xf4\x80\xa3\x0a\x49\xa0\xe2\xe8\xe8\x86\x6d\x09\x02\x0a\x4b\x9a\x2e\x9e\xae\xdd\xb4\xbf\x91\x59\xba\xb0\x14\x76\x91\x52\x92\xb8\xb0\x29\x53\xa5\x3a\x4e\xf5\x19\x37\x8f\xb9\x19\xb5\xa0\x0d\x94\x8c\x64\xae\x03\x05\x26\xe3\xbb\xdd\x15\x11\x10\xc9\x74\xc5\x23\xba\xdb\xbd\x2e\x5e\xec\x8a\x90\x44\xd0\x7e\xe6\x30\x9a\xee\x7f\x54\x42\x16\x35\x14\xd5\x5a\x5c\x11\xa1\x6e\xa2\xcb\x98\x1a\x93\xd9\xb8\xbb\x89\x63\x8b\xbf\xe3\x98\x64\xac\x3b\xa0\x89\x57\xe0\xd9\x34\xc8\xc6\x88\xda\x45\xf2\xda\x8d\x97\xd2\xa4\x48\x3a\x26\x36\x21\xa7\xa4\x40\xc2\xa5\x51\x59\x14\x36\x72\x04\xfb\xe4\x46\x1b\x4d\x89\xec\x1b\x47\x46\x22\x8c\x61\xb7\xbb\xe5\xde\x73\x8a\x28\x47\x1a\xa6\x40\x9b\x36\x24\xd3\x52\xe1\xd8\x78\xad\x57\x0e\xca\xb4\x6f\xa5\x54\x9f\x21\x8d\x15\xe4\x01\x77\xef\x8c\xb5\x21\xd2\x4c\xcc\xd4\xb2\x7e\x86\xd8\x63\x8a\x26\x98\x10\xc7\xf8\x37\xe1\xd3\xdd\x4e\xe1\xbb\x72\xaf\x39\x08\xe3\xf0\xe0\x8c\x8b\x25\xa4\xfe\x65\xb1\x54\x4a\xc3\xac\xad\xb7\x1d\xaf\x55\x64\x3d\x43\xc7\x83\x84\x98\x5f\x07\xe3\xd4\x24\xc2\x50\x7b\xda\x40\xe6\x6b\x58\x09\x09\x9b\xd6\xf2\xb6\x40\x66\x08\x32\x11\xf0\xcb\x60\xf0\xcf\xe1\x2f\xbf\xdc\xf9\xf1\x87\x7f\xfe\x30\xf8\xe5\x97\x21\x4d\x06\x39\x2c\x43\x1d\xe9\x27\x58\x54\xea\x5b\x37\x21\xe1\xa4\x1e\x58\x53\xb1\x7b\xee\x0e\xc6\x4b\x43\x64\x8f\xc3\x80\x26\x0b\x43\x24\x12\xa5\xf3\xd6\xae\xd4\x55\x49\x5e\xe6\x01\x82\xad\x08\x1a\xda\x6d\x0c\x11\x41\x79\x0a\x33\xb6\x36\x68\xac\x82\xc2\xcd\x38\x96\x5d\x26\xbd\xb2\x24\xfd\x75\x86\x0a\x53\xa2\x98\x98\xcc\x7a\xbd\x29\xed\x32\x45\x0b\x0e\x19\x85\xb1\x45\xc6\x59\xaf\x87\x79\xcd\x6e\x37\xeb\x08\xd9\x11\x34\x8e\xc5\x64\x36\x45\x33\x8b\x00\xa2\xdd\x6e\xb6\xdb\x0d\x02\x43\x6a\xe2\xf8\x60\x98\xe7\x70\x6e\xd8\x56\xc8\xd9\x72\x33\xe7\x59\x32\x47\x15\x32\x08\x39\xe7\x9f\x5e\x2d\xf0\xd5\xb2\x85\x97\x86\x9d\x9b\xbe\x4f\x85\x55\x2b\xc4\x40\x3b\x6a\x55\xb1\x01\x88\xa0\x2b\x42\x3d\x91\xa6\xdd\x2b\xf2\x04\x24\x8d\xe3\x2b\xa2\xf1\x5f\x14\x8a\xa3\x9a\x62\xe8\x57\x35\xa2\x98\x85\xf1\x89\xb2\x43\x8e\x63\xf2\x7f\x5f\x1a\x22\x40\xd2\xdd\xae\x28\x54\x1a\x28\xe6\x70\x6d\xd8\x24\xaa\xe8\x7a\x22\x88\xea\xec\x45\x04\x91\xc8\x2a\x9a\xcb\x08\xa2\x36\xbe\x35\xb2\xfb\xf3\xb9\x9a\xa5\x4b\x1e\x76\x69\x65\xc3\x46\x9e\xb1\x8a\xa6\x70\x66\xd8\x35\xea\x64\x67\xa9\x21\x91\xeb\xb7\xab\xd3\xb5\x10\x51\x38\x35\x96\xee\x6d\xa5\xfb\x5f\xa6\x2b\x9e\xed\x76\x2d\xcb\x66\x65\x88\x81\x33\x7b\x06\xc2\xd5\xcd\xe5\x1d\xe9\x90\xe5\x70\x64\x98\x32\x24\x7a\xc3\x17\x4b\x4b\x8d\x43\xa4\xae\xe4\x33\x24\x0b\xea\xb5\x3b\x0c\x7f\x6a\xfa\x8e\xe2\xa6\x20\xd9\x95\xe9\x2f\x8a\x95\x3d\xe6\x61\x2c\x36\x3b\x4d\x78\x0e\xaf\x9a\xf3\x5b\x68\xfd\xd8\x91\xb1\x8b\x58\xb3\x8b\xfe\x02\x14\x3b\xe9\x2f\x40\xb0\xc1\x48\xdc\x95\x41\xb3\x27\x7a\xbd\xc2\xbc\x72\x22\xa6\x23\x7b\xa8\xa6\x28\x34\x32\x90\x82\x22\x1c\x52\x6a\x87\x78\x68\xd8\xed\xff\xd8\xfd\x55\xa2\xc7\xbf\xfa\xb7\xe1\x61\xfb\x56\x3c\x31\x93\x4f\x76\x37\x4e\x8b\x4e\x33\x76\xdf\xec\x76\xb2\xcb\x3e\x1a\x7b\x24\xec\xa3\x3a\x3e\x16\x84\xd3\xa4\xdb\xb5\xdb\xf4\x93\x61\x0f\x4d\xdf\x49\x75\xc5\xe7\x56\xca\xb6\xe0\x74\xfa\x9a\xaf\x97\xe9\x8c\x93\x43\x03\x51\x3f\xb2\xd4\xd7\x73\x75\xc5\xf5\xfd\x34\xe3\x84\xe6\x70\x82\x75\xcd\x53\x93\x5a\x9a\xea\x23\xbe\xbd\x3c\x3c\x7e\xfa\xee\x21\x8b\x5e\x46\x70\x1f\x13\x5e\xbf\x7a\xfe\xe1\xd1\xd3\xe7\xcf\x59\xf4\x3a\x82\x0b\x9b\x04\xaf\x0d\x42\xeb\xf8\x86\xad\xe3\xac\xd3\x20\xb3\x1c\x38\x9e\x80\xb0\x61\xa6\xef\xe8\x51\x58\x32\xd3\xb7\x94\x10\x8a\x5d\xd9\x66\xac\x92\xe5\x58\x4d\x32\xe4\x03\x32\x4b\x69\x24\xc4\xbd\x6e\x73\x5a\x51\x8a\xdb\x59\x43\xad\xaa\x63\x26\x53\xc6\x27\x7a\x0a\x82\x99\xea\x31\x3b\x26\x33\xf6\xda\xa0\x72\x8d\xc6\xf1\xcc\x2b\x9d\xa5\xcd\xd9\xbd\x30\x64\x33\xd6\x49\xd6\x23\xcb\x71\xd4\x8f\x92\xe8\x3f\x22\xda\xd3\xce\x00\x65\xc6\xe7\x34\x8e\x0b\x72\xdb\x99\xf9\x7a\xe0\xa7\xe5\x81\x5d\x1a\x7e\xbe\x32\x24\xb5\x47\x23\x31\xfd\xec\x3c\x5d\xed\x76\xc2\x62\x01\xfb\x48\xe3\xf8\x35\x49\x21\xb2\xcf\x11\xf2\x82\x1c\x3b\x04\x29\x52\x84\xf0\xc6\xb0\x6e\xf7\x4b\x9b\xe1\x06\x0e\xbe\x1b\x08\x18\x47\x6d\xbb\x03\xf3\xb9\x61\x6f\x4c\x1c\x77\x5d\x22\xb6\x1f\xc7\x51\x86\x6f\x4d\xbb\xee\xd2\x62\xeb\xa5\x61\x87\x5a\xa7\xd7\x7d\x91\xe1\x7f\xdb\x06\x8e\xf0\x8b\x17\x6f\xe5\xf0\xb4\xf5\x6c\xf0\x82\x2e\x2f\x78\x7a\x6b\x02\xdf\x6c\x09\xfa\x9b\xb1\xc2\xb5\xad\xf0\x96\x61\xe9\xb8\x8d\xcd\x16\x3c\x6b\x88\x0e\xec\x46\x2f\x55\xf5\xa0\xd9\x5b\xdc\xb6\x8a\x69\xbf\x4d\x71\xd7\xaa\x5f\xc5\x88\x3a\x6e\x56\x32\x3d\x11\xbd\xde\x14\xf8\x44\x4e\xab\x8c\xfd\x03\x87\x65\x82\xe4\x25\x82\xe2\xd1\x4b\x52\x22\x0a\x2f\x8c\x25\xd5\x9f\x3e\x3c\x79\xfd\xe6\xd5\xf1\xab\x88\xc2\x23\x53\x35\x35\xc8\xe1\xef\x56\xfa\xe4\xae\x13\x80\xfc\x8a\x14\xeb\xdd\xbf\x6e\x87\xd7\x1c\xee\xd5\xca\x5b\x6e\xf9\x4f\x16\x9a\xed\xcf\xd5\x2a\x15\x32\x8e\x2d\xdb\x72\x38\xb3\x2c\xe4\x1f\x41\x24\x79\x6e\x56\xcb\x85\x58\xf2\xa8\x2a\x32\x40\xad\x36\xf0\xd1\x3d\xc3\xfe\xac\x49\x25\x4d\xff\x4a\x0b\xc3\xc9\xdf\x86\x38\xe2\xaf\x3f\x5b\x2a\xbb\xc9\x83\xfe\xb9\xbf\x4e\x35\x97\xe6\x3d\xca\xc5\xfb\xae\x91\x02\x34\x4e\xd9\xcf\x73\xf2\x27\x4d\x08\xe1\xec\x90\x44\x62\xa1\x91\x04\xa5\xfd\xcc\x5c\x2f\x0b\xf3\x1b\x16\x49\x25\x79\x04\x0f\x4c\x3f\x5d\xaf\xb9\x9c\xdf\x3f\x17\xcb\xb9\x9d\x0f\xde\xcf\xf4\x2c\x90\xd9\xd1\xc7\xf4\x32\x75\x30\x48\x22\x0a\xc4\x30\x44\xcc\xa6\xec\x41\x00\x01\xed\xab\x35\x97\xc4\xf6\xb8\x1c\x41\x01\x9f\x47\x7e\x49\xd5\x86\x04\xa6\xff\xa8\xb2\x22\xec\x01\xe6\xf1\xb5\x3c\x38\x18\x51\x4f\xdd\xde\xab\xd8\xe6\x4c\xae\xcd\x44\x4e\x0b\x8c\x7b\xcf\x10\x9a\x8f\x9e\x4c\x5e\x98\x69\x30\x15\x78\x6c\xea\xf6\x3b\xd5\xe5\x5b\x60\xb6\x02\x63\x7b\xd9\xe9\x98\x3c\xaa\x1a\x00\xa1\x0c\x48\x22\x0b\xfa\xc8\x40\xed\x13\xc2\x57\x62\x83\x86\x26\x92\xd9\x1e\x40\xc1\x28\xf3\xb1\x4c\x6e\x05\x32\xec\xb3\xc1\xf3\x0d\xde\x99\x9a\xdc\xfb\x89\x61\x5f\x51\x76\xc4\xf1\xcd\x67\xf4\xf8\xe6\x4f\xc4\xab\x4a\x92\xc9\x14\xfe\xc0\xa3\xba\x65\xe3\x3e\x31\x71\x5c\xd8\xd7\xb8\x19\x9c\x46\x8c\xbd\x33\x41\x86\x32\x6e\xd7\x88\x74\x3e\xa3\x1c\xbc\xa1\x12\xe9\x3c\x31\x5e\x50\x4f\xf3\xdc\xf2\x98\x9f\x0d\x59\x21\x12\xc9\xe1\x83\x61\x8f\x48\x74\x75\x91\x45\x14\x9e\x19\xa6\xfa\x0e\x7b\xc1\x6f\x86\x3d\x37\xe3\x67\x26\x79\x66\xe2\xf8\x99\xe9\x7b\xcd\xfa\x11\x32\xa5\xbb\xdd\x63\xf8\xbd\x15\x45\x5d\x91\x0f\x06\x19\x76\x62\x11\xe5\x15\x79\x66\xdf\xc6\x1f\x2c\xa5\xcf\x9e\xd9\xdf\xc4\x3d\xff\x66\x99\x41\x87\x27\xa3\x9e\x25\x2c\x30\x39\x87\xf7\x08\x91\xdf\x4d\x0e\x7f\x1a\xa4\x13\x4c\x9b\xcb\x8d\x34\xbe\x9b\x96\xd9\x0d\xcf\x6c\x9b\xd3\xd1\x15\x9a\x86\xef\x76\x7f\x1a\xfb\x00\xde\x5a\xef\xbd\x25\x60\x0c\xb5\x5c\x35\xe7\x58\xad\xe4\xec\x77\x43\xa2\xaa\x77\x0c\x05\xbd\xef\xaa\x62\xb1\xfd\x15\x31\x4c\x8e\x4d\x52\xf3\xf1\xe1\x34\x8e\x39\xb7\xd8\x8f\xc3\xb6\xae\x60\x19\x14\xca\x14\x9a\x83\xe2\x4d\x69\x69\x8b\x3c\x6d\x9f\x43\x6f\x13\x9e\x16\xbc\x41\x4d\x7a\x2a\xf6\x3b\x2d\x16\x44\x71\xbb\x39\xca\x15\x5f\xea\x11\xb2\x2b\xe1\x65\x86\xb3\x34\xe3\x9d\x41\xd2\x64\x3c\x2a\xb6\x64\xce\xa7\x81\xe6\x23\xcc\x3a\xdc\xcb\x2a\xf7\xf2\x82\x0c\xb9\xef\xec\xe7\xae\xd8\xe0\x94\xf9\x41\x87\x12\xdf\xb7\x95\x00\xd5\x5a\x06\x14\x2d\x8d\x2e\x5b\x7a\x9e\xae\xd7\xcb\x6b\x4b\x2f\x06\x8e\xd4\xae\xf5\xd4\x4d\x7a\xb6\xe6\x33\xc1\xed\x82\x9f\xf1\x36\x82\x2a\x00\xf7\xa5\xdd\x4b\x35\x0a\xb1\x5b\x55\x76\x54\xd8\x06\x8a\xe4\xa4\x3b\xe5\xe3\xb8\xfb\xd2\x90\x0a\xeb\x4e\xc7\xd7\xc4\x72\x2d\x4e\x07\xc5\x88\x64\x72\x92\x72\xe4\x4e\x64\xd0\x09\x27\xc5\x13\x48\x7e\x55\xb1\x72\x1f\x63\x9d\x89\xa4\xc4\x21\xae\x41\x62\x71\x56\xc6\xd9\x64\x8a\xfc\x0c\x6c\xda\xf6\xc7\x90\x31\x7b\x2c\xdf\xb1\x7f\x9a\x7d\x6f\xff\x14\xfb\xc1\xfe\x09\xf6\x93\xfd\x4b\xd9\x8f\x68\x1c\x22\xf6\x9c\xae\x66\x90\xc1\x06\x96\x25\xd9\xbe\x80\x35\xcc\xd9\x53\x43\x66\x14\x2e\xd9\x39\x99\x53\x58\x31\xc1\x89\xcd\xf6\x3d\x85\x6b\xcb\x92\x5e\x16\x2c\xe9\x19\x1b\xc0\x29\x5b\xee\x76\x33\x0e\x57\x8c\x8f\x4f\xc9\x0c\xae\x69\x22\xf1\x61\x40\xbd\x04\x61\x74\xfd\xeb\xd9\xe8\xcc\x73\x9d\xe9\x6e\x77\x66\x09\xcd\x4b\x0b\x91\x35\x5b\x91\x05\xbb\x9c\x9c\x4d\xe1\x0c\xe6\x14\x0c\xa5\x68\x72\x7c\x35\x39\x9b\xb2\x75\xe1\x0a\xb5\xa6\x7e\x19\x1b\xbf\x8c\xc3\xda\xe9\x0e\xdc\x5a\xfa\xb1\x58\x4b\xee\xfd\xa7\xf0\x7e\x16\x56\x67\xe6\xcd\x97\xaf\x60\x51\x1a\x27\x15\x2c\xf2\xb0\x60\x12\xc7\x07\xc3\x44\xef\x76\x6a\xac\x92\xab\x3c\x87\x25\x67\x5b\x6f\x72\x97\x6c\x38\x19\x50\x58\xa5\x6b\xfb\x34\xa4\xb0\x10\x4b\xc3\xb5\x7d\xb9\x43\x21\x53\x2b\x6e\x1f\xbf\xa7\xc0\x2f\xb9\xbe\xb6\xcf\x3f\xd8\x3c\x72\x6e\x1f\x7f\x74\x8f\x4f\x2d\x57\x6c\xdf\x7f\xa2\x39\x2c\x38\x5b\xf2\x60\xd0\x07\x6b\x6e\x29\xa3\x73\x31\x9f\x73\x19\x51\x98\x07\x8c\xf5\x3a\xe8\xc5\x22\x0a\xe7\x28\x7e\xcb\xb8\x81\xcb\x20\x88\x73\x32\xc3\x80\x5d\x23\x0a\xab\x16\x17\xc5\x6b\x5e\x62\xfa\x33\x8e\x54\xda\x6f\x47\xaf\x5e\x46\xe0\xc5\x5b\x62\x71\x6d\x39\x51\x8e\x6c\xc7\x95\x43\x99\x47\x9c\xfd\x61\x0f\xca\x57\x9c\x6d\xfa\x0b\x38\xe4\xf6\xe0\x70\xb4\xaf\xdd\x4b\x0f\xf1\x5d\xad\x0f\xca\xa4\x4f\x2e\x0b\xd6\x78\x60\x94\xff\x72\xa0\xf9\x99\xc8\x8c\xb6\x2d\x9c\x54\x2a\xc1\x1c\x2e\x6f\x25\xc7\x47\x5e\x9e\x4f\xf7\x6d\xaf\x7f\xf7\x3a\xde\x0b\xce\xba\xf7\xf9\x6e\xd7\xbd\x5f\x71\x5c\x6c\xbc\xf6\x2d\x88\x91\x62\x82\xd7\x9c\xa5\x71\x7c\x93\xae\xee\xb1\x21\x57\x9c\x6c\xf3\x2f\x69\xe5\xae\x9c\x30\xcd\x65\x71\x18\xfe\x9f\xa8\xa7\xcb\xa9\xd3\xd6\xed\xe9\x7c\x9c\x5d\xcb\x29\x27\x2b\x0e\x9c\x8e\x74\x1c\x7b\x5a\x69\xc5\x27\x7c\x0a\x57\xdc\x67\x04\x1d\xc7\xa6\xcb\xd8\x8a\xc7\xf1\x95\xcb\x6d\xb1\x62\x72\xc5\xe1\xb8\x15\x43\xb1\x43\x8e\x02\x7a\x43\xae\x2b\xa3\x2d\x4e\x85\x73\x4e\x24\x78\xaf\x33\xbf\x0c\xc0\xa4\x67\x89\x81\xb9\x57\x1c\x0a\x25\xed\xf1\x04\xa9\x3d\x40\xfb\x95\x54\xc6\x29\xc8\x1c\xde\x70\x7b\xfa\xb7\xd0\xdd\x4d\x5e\xc7\xe4\x6d\xe4\x4b\xa1\x91\xaf\xf8\x91\x5e\xf3\x1c\x9e\xb7\x1c\xb0\xcc\x8d\xfb\x39\x27\x0f\xb9\x83\x06\x32\x20\x0e\x76\x5e\xbf\x17\x06\x86\x6a\xbe\x2b\x72\x68\xc1\x33\x26\xb2\x22\x07\x1e\xa3\xf2\x72\x6d\x4f\x65\x33\x59\xf3\xe9\x44\x4f\x51\x35\xe7\x1e\x59\x77\x68\x29\xc5\xc7\x96\xe6\xab\xda\x47\x2c\xc9\x00\xba\x43\x74\x88\x0a\xe5\x77\x3b\x9c\x96\xb5\x53\xd1\x6d\x2d\xd7\x57\xd6\x32\xa0\xf0\xda\x7e\xd5\x20\x29\x4d\xae\xc2\x63\x0e\x2f\x9b\xd3\x54\x8c\x41\x3a\xc9\x1d\x72\x51\x92\x06\x69\xc9\x03\x5e\x15\x44\x2d\x38\xd1\x50\x73\x82\x4b\xe3\xb8\xfb\xd4\x23\x28\x4b\xa6\xee\x76\xcf\xfd\x62\x41\x1d\x2c\x45\x63\xf7\xa7\x6d\xa8\xff\x8c\x18\xe4\x82\x25\x7b\xc5\x6b\x66\xbe\x41\x72\x87\xef\x1e\xe8\x08\x4a\xb4\x00\xbe\x42\xe8\xa3\xdd\x6f\x97\xc8\xdd\xce\x12\x3d\xae\x1c\x3e\x63\xb6\xdd\xce\x27\x3a\x30\x9f\x8b\x0c\x01\xc3\xa7\xf6\xf8\xb3\x0c\x69\xfb\x5a\x45\xb9\x5e\x39\x95\x62\x41\x24\xae\xf5\x50\xb1\xc6\x8a\x1f\xda\x87\x60\xe2\x75\xca\x91\x58\x08\x5d\x56\xf5\xac\xd2\x75\x40\xfa\x69\xd9\xed\x88\xaa\xac\x04\x9c\x25\x95\xe7\x70\xab\x0d\x3c\x47\xdc\x51\xbe\x20\xd9\x64\x5a\x81\x3f\xaf\x7b\xb8\x61\x6b\x06\x5b\x7b\x82\xff\xd2\x49\x0f\x8d\x93\x9b\xe7\xf0\xa0\xad\x72\xb7\x96\x41\xda\x56\xf8\xf8\x21\x4f\x5c\x53\xba\xde\x94\xac\x37\xd5\x2d\xda\xe2\x38\x0f\x2b\xf7\xa2\x5d\x83\xb8\xd1\xb1\x51\x9d\x5b\xd0\xbd\x31\xbb\x1d\xe1\x86\x90\x6b\x5e\x65\x73\xbd\x71\x6b\xa7\xb6\xdf\xf6\xd5\x3e\x0e\x19\x94\x04\x65\x55\xf2\x49\xbd\x09\x77\x53\x86\x5f\x91\xd3\x14\x9f\x26\x83\xe9\xd8\x53\xa8\xd5\xb4\x70\xbc\x03\x47\xdd\x21\xd4\xdd\x54\x2a\xeb\xce\xdb\x85\x3c\xb4\x43\x85\xea\xa2\x72\xcf\x76\x62\x71\x59\x92\xca\x22\xc3\x3d\xfc\xda\xe3\x60\xb7\x3b\x2d\x07\x53\xd8\xa3\xc6\xf1\x05\x8f\xe3\xd7\x1e\x7d\xee\x91\xe4\x19\x37\x89\xcc\x29\x1c\x7b\xe7\x51\xfa\xad\xba\x95\xce\x65\x50\xa2\x98\xf4\xcc\x4e\x04\xb7\x58\x17\xa2\x1a\x43\x14\xb5\x3a\x48\x1e\x73\x82\x70\x70\xab\x66\xd3\x5f\xb0\xa7\x1c\x2e\xfa\x0b\xf6\x9c\xc3\x49\x7f\xc1\xde\x72\xb0\xac\x27\x1e\xab\xec\x16\x87\x2b\xfb\xff\x80\x83\x65\x57\xda\x98\xab\x63\x4e\x7e\x37\xbe\x42\x48\xe3\xd8\x9e\x59\xd5\x03\x00\xa2\x0a\x26\x8f\xf6\x61\xd0\x7e\xae\x15\xe3\xab\x14\xce\x73\x1c\xe7\x8a\xdf\x24\xee\x7e\xca\x61\xeb\xf4\x72\x49\x77\x90\x53\x4a\xe1\xd8\x90\xad\x0f\xce\xd0\x1d\xc0\x95\x4e\xd7\xf6\xdf\x09\xfb\x92\xee\x1b\x03\xd9\x79\xba\xb2\x0f\x39\x6c\x7d\xc8\x83\x6b\x7b\x04\x2d\x38\x79\x6b\xc8\x47\xde\xf0\x31\x35\xdc\x6f\x36\x5b\xaf\x93\x6a\x96\x87\x59\x66\x52\x53\xaf\x3d\x07\x4b\x95\x25\x2d\x1b\x3e\x30\x52\x23\x34\x70\xf9\xc4\x2b\x16\x2e\x9f\xec\x31\xec\xb1\xf4\x35\x27\xe5\x01\x8a\x1f\x98\x84\x13\x3e\x91\x53\xc6\xed\x86\xbf\xe0\xd7\x4d\x55\xac\x58\x90\xee\x1b\xde\x66\xfa\x62\xaa\x5c\x9b\x3f\x32\x7d\x07\x4e\xec\xea\x0b\x1d\x38\xe1\xc8\xf4\x6e\x32\xee\x96\x51\x75\x76\x2c\x7d\x33\x70\xdf\xc4\x6a\xbd\xe4\xcd\x6f\x43\x3b\x47\x55\xe0\x78\xc9\x4d\x0b\x70\x3c\xe8\xd3\x1c\xb6\x4e\xda\x92\xb4\x6a\xef\x2a\xf2\x91\xc7\x68\xe4\xf4\x92\x13\x7c\x70\xea\xaa\x9a\x71\x4e\xf2\x9c\xc3\x9e\x1c\xf1\x25\x87\x9b\xec\x94\x92\xb7\xfc\x9b\xbb\x9b\x23\x05\xd6\x94\x9b\x24\xb7\x9a\xb5\x7b\x01\x6e\xf2\xe0\x1b\xab\xae\x13\x7f\x76\xb3\x91\xa1\xf3\x8c\xda\xb6\x57\xdc\x26\xdf\xb0\xa5\x9e\x1a\x27\x3c\xa1\x70\xe6\x4f\xb9\x17\x9c\x75\x2d\x6a\xae\x37\xe1\x10\xea\x35\x27\x85\xe1\xd0\xc4\x32\x81\xd3\xa8\xcb\xce\x38\x71\x4a\xd1\x68\x9b\xbb\xd7\x6d\x9a\x98\xbc\x9a\x50\x10\x51\xb6\x8f\xa3\xea\xf8\x1c\xa9\xde\x18\xdd\x0b\x9e\xc3\xb6\xa0\xde\xf7\xec\x8a\x0a\xa7\x05\x50\x6c\x62\xa6\x20\xd8\x70\xd4\x44\xf5\xbf\x8a\x11\x55\xee\xdc\x29\xd1\xba\xe8\xf5\xa6\xce\xc7\x8a\x71\x20\xce\xc2\xa0\x38\x11\x2c\x7f\xec\xf7\x40\xc9\x34\xa3\x0d\x42\x93\x16\x68\x77\x11\x45\x57\x1b\xa6\x2b\x84\x0a\x5a\xa0\x81\xad\xb3\xdc\xa7\x76\x7e\xd5\x64\x68\x77\xe2\x19\xf7\xac\x3d\x4a\xf8\x94\x9d\x84\xbc\x8a\x02\x27\x73\x3e\xdd\xed\x5e\xd7\xd1\xe2\xdc\x32\x3c\x15\xae\x20\xd8\x39\x82\xe6\x88\xca\x0b\x56\xe9\x89\x3d\x6b\x82\x88\xf2\x11\x87\xbf\x39\xdc\x73\xdc\x91\x4c\x2f\xc5\x99\x73\x98\x8b\x36\x19\xd7\x87\x67\x28\xbe\xde\xed\xa2\x08\x1e\x5b\xb6\x64\xad\xd5\x8c\x67\x19\x7c\xe6\xec\x31\x8f\xe3\xc7\xbc\x1f\x2c\x87\xe0\x1d\x67\x9f\x79\x1c\x7f\xe6\xfd\xcb\x9f\x47\xef\xf8\xf8\x6f\xce\xc8\x23\xce\xde\xf1\x60\x15\xd1\x8f\x28\x9d\x0c\xa6\xbd\x47\x7c\x32\x9c\x26\xf7\x38\x12\x61\x8f\x38\xbb\xc7\xfb\x2b\x94\xe4\xdd\x7e\x38\x3f\xe3\x7f\xdd\x26\x7f\xcd\x7b\xf4\x36\xa5\xbb\x1d\xe6\xfc\x95\xfd\xf3\x07\x7b\x48\xd6\x72\xde\x3f\xd7\x6a\x55\xc9\x1b\xc7\xe4\x6f\xce\x30\xbf\x3b\xe1\x9f\x70\xf6\x37\x8f\xe3\xde\xdf\x1c\xfe\x68\xca\x43\x3e\xb4\xaa\xb7\x9e\xf0\x5f\xd9\x8f\xc3\xdd\xae\xbb\xbf\xba\x79\x49\xda\x10\x5e\xf3\x6f\xdd\xe6\x74\xf2\x07\x6f\xf1\x2c\xdc\x2e\x94\x4a\x86\x79\x0e\xc3\x2e\x63\x16\xff\x91\x7b\x4a\x2d\x79\x2a\x69\x7f\xa1\x14\x6e\xc7\x67\xfc\x06\x8b\xc0\xdf\x38\xdb\xe6\xf0\x3b\x6f\xd0\x15\xe8\x0b\x92\xc3\xfb\x96\x35\x77\x45\x7e\xab\x22\xdc\xdf\x6c\x83\x23\x8e\xeb\x73\x9b\x07\x0a\x7d\x32\xb5\x3b\x42\xb3\x6e\xf7\x8a\x70\x88\x0e\xef\xdf\x7f\x78\x74\xf4\xea\xcd\x51\x44\xe3\x98\xf7\x8b\x57\x50\xcc\x7e\x1f\xd0\x31\x9f\x0c\xa6\xc9\xef\x1c\x66\x98\x30\xb4\x09\xc3\x69\x90\x6d\x54\x9b\x62\xdd\xae\xdc\x53\x30\xd9\xbd\x14\xc7\xdd\xb4\x50\xc7\x7b\xca\x6b\xeb\x76\x61\x72\x30\xcc\x47\x7a\xfc\xcc\x12\xfc\xc3\x1a\xbb\xe2\x8f\xf0\xdf\x79\x4e\x13\x63\xf7\xc3\x10\x0a\x87\x68\xe5\x03\x30\xc0\x9f\x4e\x88\x80\xa2\x08\x30\x92\x7d\xe0\x24\x72\x6f\x11\x05\x2e\xd9\xfb\xca\x7b\x0d\xab\x38\x0d\x14\xe0\x36\xa9\x22\x64\x63\xd9\x01\x2e\xed\x09\xeb\xe4\x1b\x2d\x4b\xe4\x4f\x1e\x76\xef\x1e\x4e\x19\x8e\x4b\x5c\x52\x00\xc9\xee\x5b\x07\x7c\xd9\xca\x33\xe0\x8c\x14\xc6\xef\xb2\xc9\xb8\xfb\x51\x3b\x2d\x4a\x45\x75\x10\x16\xc3\x30\x07\x8f\xd9\xb5\xac\x8a\x54\x94\x64\x52\x92\xc8\xbf\x46\x14\x52\x0f\x8f\x22\x61\x26\x99\x92\x71\x9c\xca\xf1\xa4\x88\x4f\xd2\x36\x60\x2d\xff\xd5\x01\x7f\x0b\xac\xcb\x36\xbb\x6c\x26\x1d\x4d\x83\x3d\x98\x49\x0f\xaf\x4c\xa2\x48\x66\x23\x1b\xf6\xf5\x99\x74\x67\xd9\xe8\x5b\x8e\xd8\x74\xb7\xdb\xc8\x0a\x51\x70\xe3\xa1\xdd\x4a\x26\x64\x92\xac\x3c\x51\xe0\x3b\xb5\x94\x37\x84\x78\x3a\x43\x9a\x0a\x5d\x51\xc7\x4e\x57\xa8\xc1\xf2\xdc\x96\x7b\x36\x96\xa3\x96\xf9\x17\x3b\xfc\xf5\x2e\x66\xed\xfe\x49\x50\x31\x28\x71\x76\x06\x47\x86\x68\x0a\xa8\x77\x9f\xb1\xc1\x28\x18\xd1\xfc\x3a\x1b\xd1\xe2\x34\x23\x92\x29\xa2\x81\x07\x93\x19\x1a\xc7\x4b\x49\x52\x17\xcd\x28\xf0\x19\x61\xd0\x8b\xe6\x14\xbc\x35\xdf\x3e\x05\x0b\x3b\xb9\x17\xfc\xba\x95\xc6\x78\x6b\x4a\x0a\x03\x9b\x5a\x4b\xb6\xbd\x7f\x74\xf4\x66\xb3\xe4\xcf\x45\x66\x92\x01\xdc\x3f\x3a\x3a\x32\xd7\x4b\xfe\x80\xcf\x96\xa9\x4e\x51\x9e\x83\xa9\xef\xec\xd1\x16\x32\x2d\x05\x97\xe6\x0d\x9f\x19\x9f\xf0\xe0\xd5\x8b\xfa\x9b\x23\x8e\xcb\xf7\x63\x75\xc1\x25\xbe\x0e\xe1\x41\x6a\xd2\x63\x9d\xca\x6c\xc1\xf5\x53\xc3\x57\x3e\xd7\x23\x51\x74\xe2\xc9\xf1\x8b\xe7\x87\xcb\xe5\x7d\xb5\x5c\xf2\x99\xef\x82\x4d\xdb\x4b\x78\xa4\xf4\xca\x6b\x7c\x7d\xca\x11\xb7\x39\xca\xb4\x17\x7c\x2e\x52\x5f\xed\x0b\xb1\xe2\x96\x94\x76\x92\xef\x01\x58\xea\x6f\xfe\x52\xcd\xf9\x8b\x74\x6d\x5f\xd5\x9c\xfb\x2e\xbe\x4e\x85\x1d\xdf\xdf\x1b\x9e\x85\x41\xbd\x5e\x6e\xce\x84\x2c\x1e\x42\x1d\x47\xef\x1e\x3f\xc7\xf9\xf6\xd9\x8e\xde\x3d\x7e\xb9\x59\x9d\x72\x5d\xbe\xbf\x4e\xcd\xf9\x11\x3f\xab\x24\x28\x21\x4d\xf9\x5a\x83\xd5\xd1\xbb\xc7\x0e\x36\x4a\x07\xc0\x38\xeb\xe5\x7b\x9b\xc5\xa2\xac\xd5\x4e\xd1\xd1\x39\xe7\xa1\x9a\x63\xfe\xc9\x1c\xeb\x74\x76\x71\xbf\x98\xa4\x22\x29\xbc\xab\xcd\xcc\xf7\x32\x2f\x74\xae\x73\xb4\x84\x5a\xfb\x7d\x75\x2e\x99\x9a\xcc\xe5\x14\x2e\x25\x3b\x97\x71\x7c\x5e\x51\x36\x60\x8c\x1c\x19\xc7\x97\xb2\xc4\x24\x6c\x26\xa9\xb3\x1a\xbf\x94\x50\xe0\x3a\x98\x55\x8d\xe3\xcb\xfc\x16\xf1\xa0\xde\x7b\xb5\xbf\xab\x03\x3d\xe6\x76\x74\xbb\x83\x83\xcd\xea\xc5\xa3\x12\xea\x87\x57\x93\x1f\x2d\x7d\x90\x06\x78\xa2\x05\x93\xf7\x6b\xf9\x85\x68\x82\xdf\x16\x01\xf0\xeb\x31\x06\xb7\x2e\x40\xd6\x99\x64\xe4\xeb\x99\x0b\x14\x71\x2d\xc7\xd7\x32\xd9\xe6\xb4\x7f\x72\xf2\xee\xed\xc3\x93\x07\x0f\xdf\x1d\xbf\x7a\xf5\xfc\xe8\xe4\xf1\xf3\x57\xf7\x0e\x9f\x9f\x3c\x79\xf5\xea\xd9\xc9\x49\xe9\x79\x7e\xea\x71\x67\xc5\x52\x83\x18\xda\x12\xf9\xaa\x02\x5d\x62\x26\x72\x0a\x92\xd6\xe2\x5b\x5d\x55\x31\x44\x50\x88\xb7\x44\x92\x32\x38\x77\x47\xcd\x63\xd5\x79\xb5\x06\xbf\x42\xe7\xb6\x7a\x32\x3b\x17\xcb\xb9\xe6\xb2\x11\x4a\x03\xfd\x7f\x7d\x16\x9d\x5e\xbd\x50\xf3\xcd\x92\x33\xef\x81\xe4\xad\x89\xb8\x8b\xb1\x85\x8f\xac\x8d\xb2\x97\x63\x49\x68\x22\xbd\xe9\xf6\x2b\xc9\xb6\xd2\x72\x71\xeb\xd4\xa2\xbf\xa6\x64\x22\xcf\x47\xaf\x64\xbf\xcc\xd0\x3f\xe3\x66\x9f\x72\xec\x76\x1b\x7d\xaa\x94\xc8\xe1\xa8\xb2\x0b\xfa\xe9\xdc\x89\xfd\xdb\xa0\x50\x0c\xdb\xb9\x4c\xd4\x0b\x6a\xbe\x52\x97\xbc\x59\x96\x6e\x83\x09\x6f\xb3\x82\x46\xf1\x33\x6e\xf6\xcb\x06\xa5\xe4\x57\xca\x9e\xa7\xd9\xcd\x65\x43\x38\x87\xb2\x82\x46\xe9\xcd\x7a\x9e\x9a\x26\x61\x7c\x13\xb4\x98\xa9\xbc\x80\xe9\xa7\x58\x26\x0b\xce\xaa\x95\x32\xfe\x0b\x2b\xf2\x50\x30\xfd\xd5\xc6\xa4\x37\x15\x28\xbe\xb1\x4a\x3e\x5b\xc8\xa9\xa6\xda\x8a\xf8\x2f\xac\xc8\x43\x1b\x63\xf3\xbb\x65\x1f\x3a\xa7\x92\xd4\x81\x82\x92\xb1\xb6\xb2\x8f\xb1\xe6\x2f\x82\xa7\xe8\x60\x51\xeb\xde\xb7\x1b\xab\x3f\xc4\x5a\xbf\x58\x7d\x01\xe3\x96\xea\xfd\xb7\x1b\xab\x7f\xe1\x01\xf9\xc5\x06\x2a\xb3\xd2\xd2\x44\xf1\x15\x1b\xb9\xc1\x12\x8c\x54\x1b\x87\x57\xd2\x91\x1f\x87\x12\x1e\xb6\x34\xed\x94\x74\x5c\x93\xc9\x14\x0c\xaa\x51\x46\x0f\x1b\x7b\xa1\x75\x29\xf7\x35\x9f\x6f\x66\x35\x57\x82\x6a\x80\xd6\x62\x0f\x11\x4e\xf3\x10\x9e\x4a\x29\xdb\xeb\x66\xf5\x2f\xc3\x1a\x6e\x93\xc5\x87\x72\xa3\x2f\xb5\x5b\x31\x60\xe8\x11\xc2\x59\xb9\x83\x89\xa4\xb4\xb2\x49\xc6\xb2\x17\xdd\x8e\x92\x28\xb2\x7d\xb2\xbf\xf5\xce\xb4\xec\xbe\x32\x7e\xa0\x09\xb6\xdc\xe8\xf8\xee\xb2\x5a\x62\x54\xf7\x57\x38\x37\x59\x11\xb5\x45\xa1\xc1\x73\x91\x8c\x12\x46\x59\x76\x49\x05\x3e\x76\x64\x48\x61\x78\xab\x28\xd4\xb2\x94\xd5\x4e\xd4\x94\xe6\x39\x4e\x4f\x00\x06\xec\x81\x31\xcc\xe2\x0d\x14\x3c\xc6\x51\x29\xcd\x11\xd0\x66\xa1\x3b\xa0\x3e\x68\x9c\xe4\x57\x9d\x23\x34\x55\xa7\x23\xf4\x40\xf2\x54\xf5\xb8\x68\x90\x29\x17\xe8\xe1\x8c\x1b\x12\x8c\x90\x06\x70\x30\xa4\xb4\xc0\xd1\xc4\x4c\x4c\x11\x3f\x60\x0a\x8a\x8e\x78\x18\x01\xae\xe4\xe2\xad\xaa\x22\x43\xb3\x90\x72\x09\x9a\x0a\x34\xb8\x3f\x3a\x1b\x33\x24\x5b\x46\x5a\x5b\x2c\xfb\x5d\x04\xc9\xea\x7d\xd3\xf5\x05\x32\xd2\x71\xac\xc3\xa9\x1a\xc7\xb5\xd3\x83\xc8\x66\x0f\x44\xf6\xc6\xf7\x80\xcf\xff\xfd\x3e\x94\xb1\x92\xc2\x79\x61\x5b\xc2\xf9\xf8\xd4\x16\x16\xac\x3e\x81\xc6\xa2\x5f\xb6\xcd\x29\x74\x0f\x65\x1c\xdf\x4c\xf8\x04\x23\xb7\xfe\xbb\x0d\x8f\xe3\x86\xd4\xdb\x16\x35\x8c\xb1\xc3\xe0\x1d\x30\xea\xfe\x8f\xdb\xdf\x75\xff\xc7\xff\xd5\xf9\xae\x73\xb9\xe1\x9f\x3a\x97\xdf\xf7\x7f\xec\x0f\xf1\x9d\xcc\xa8\xf3\x81\x7b\x78\x99\xca\xce\x07\xb5\xc1\xd4\xff\xb2\x23\x94\x19\xef\xbc\x78\x7a\x6c\x13\x6e\xff\x8f\x46\x13\x8e\x3a\x27\x26\x48\xd1\x2a\xa2\xb2\xc9\x60\x4a\x7f\x65\x77\xa8\xe9\xaf\xc4\x27\x21\xc9\xf6\x94\x2f\x94\xe6\xf7\x9d\x64\xdb\x32\xca\x85\x1b\x18\xda\x61\x16\x13\x70\x22\xa4\x30\xa3\xbd\x94\x3a\xd0\xf6\x21\x65\xfa\x98\xcb\xfd\x8d\x27\x72\x1a\xd6\x9a\x4b\xa1\x96\xcc\xad\x0a\x30\xab\x31\x2d\x4b\x29\x30\x4e\xef\x2d\x85\xda\x95\x6c\x64\x89\x28\xa5\x7d\x3c\x92\x5b\xf8\xdc\x1a\xc0\x2d\x64\x73\xff\x84\x26\xfe\x29\x09\xf6\xa5\x71\x1c\x9e\x7c\x35\xe1\x7c\xf5\x95\x36\xbe\x5a\x7c\x70\x28\x99\xa1\x39\x29\xe7\x97\x16\x94\xdd\x1a\x99\xa6\xbd\x0d\x3f\x99\x06\x7d\xbc\x6d\x5e\x8b\x99\x29\x73\x68\x8c\xb1\xdb\x1d\x06\x82\x71\xa6\x56\x2b\x61\x8c\x90\x67\x45\x88\xab\x93\x40\x44\xdc\x4c\x66\xba\x1c\x47\x9b\x53\xcb\xd7\x9f\x5a\x62\x20\x60\xad\x93\x92\xa0\xb8\xb9\xf8\x95\x4e\xd7\x6b\x3e\x7f\xec\x09\x89\x9b\x33\x7a\x4c\x82\x88\xeb\xa1\x44\x55\x5a\x35\xbd\x38\x50\x5e\xa4\xeb\x2f\xd4\x92\xb5\xf5\xf3\xca\xb2\x52\x5c\xbf\x7b\x81\x95\x1f\xca\x50\x73\x7a\xc1\xd1\x31\xc4\x77\xee\x7e\x3a\x3b\x6f\xc6\xae\x2b\x03\xee\xb8\x48\x41\xe0\x43\x45\x85\xe8\x57\x90\xb2\x10\xbb\x65\x65\x57\x70\xf5\x5b\xbb\x23\x96\x08\x41\x84\x9c\xff\x7b\xa5\xf4\x4d\x3c\x5d\x5a\x29\x81\x26\x0d\x9e\xbe\xb7\xb3\xcd\xf4\xc8\xb9\xe4\xd5\x80\x85\xf8\xdd\x33\x03\xaf\xbd\x38\x6c\x06\xe5\xbc\x55\x72\x51\xb8\x08\x19\xec\x69\xb5\xcf\xfd\x98\x6a\x80\x76\x54\xfb\x91\x52\xc7\xd0\x9f\xf3\x4b\xa3\xd4\x32\x1b\x97\x8f\xc9\xa1\xec\x3b\x26\xa2\x48\xa2\x75\x3c\x75\x86\xbe\xd9\xfd\x13\xff\xf9\x89\x52\x17\xec\x4c\xc2\x99\xec\xf3\x95\xc5\x24\x16\x51\x25\x76\x03\x47\x60\xa8\x4d\x56\xd2\x27\x1a\x9d\x5e\x72\x6f\x8e\x94\x1a\x1e\xd5\x4d\x33\x4c\x70\xf2\x38\xb2\x1f\x7d\x6f\x4d\xbf\x58\x13\x4d\xba\xa6\xde\x60\x58\xcd\x91\x9b\x19\x0a\xdb\xb5\xe6\x6b\x2e\xe7\xc8\x03\x57\xeb\x71\x24\xe5\x97\x6b\x73\xdb\xa6\xbd\x2e\x9a\x7b\x5f\x3f\x38\x91\x6c\x8b\x23\x69\xe3\xbb\x0a\x54\xf5\x71\x8f\xcb\x0f\x2e\x5b\xc4\xd0\xbb\x03\x8b\x08\xe2\xd8\x9e\x67\xd8\xc4\xd8\x9e\xa8\xd9\xb9\x58\xa0\xa2\x90\x07\xeb\x88\x32\x6e\x1f\x09\xa2\xdc\x6a\x35\x23\xf9\xeb\xc1\xd0\x1e\x94\x16\x9b\xcf\x38\x91\x30\xac\x62\xcb\xfb\x81\x4d\xfb\x0a\xca\xf8\x2a\x52\xf8\x36\x8c\xf0\xcd\xdb\xbe\xc1\xf9\xbe\x46\xca\x11\x57\x7a\x7d\x99\xa3\xe1\xcd\x85\xfb\x5a\x0d\xf6\x7a\xd1\x24\xaa\xfa\x27\x97\xab\x51\xc1\xee\xb0\x6d\x8e\x35\xfd\xab\x98\xa2\x39\x4a\x10\x6c\x9b\x8f\x4e\x25\x51\x35\x4a\x49\xd2\xad\x98\xc8\x69\x3b\xa2\x68\xb1\x9d\xc5\x20\x42\x68\x24\xd1\xca\x26\x5c\x93\xa2\xe3\x20\x6f\xb2\x95\xc3\x11\x4e\xe4\x34\xaf\x4b\x80\xd0\xd3\xdd\x47\x16\x2b\x37\x70\x26\x96\x5c\x9a\x51\x33\x81\x75\x07\x80\xf5\x78\x84\x4a\xb6\xf3\xd4\xa4\xc9\xf6\xd6\x2d\xb7\x98\xb9\x8b\x18\xb6\x31\x7c\x9e\x88\x9c\xc2\x5e\xf9\x14\xc2\x71\x55\xc7\x0c\x58\x69\xff\x16\x22\xec\x36\x7b\x40\x87\xbf\x6c\x63\x7d\xdf\x56\x2d\x00\x36\xb5\x44\xc1\x76\xce\x39\x1a\x38\x64\xd7\x72\xe6\x46\x86\x66\x4e\x6e\x9b\xd8\xa9\x11\xe6\xfc\x3e\x62\xdc\x7a\x13\xf5\x8a\xd1\x51\xc1\x22\x90\x43\x89\xd1\xc1\x8e\xc5\xec\xa2\xad\x4b\xba\x7f\x6b\xce\x33\xa3\xd5\x35\xc6\xf2\xac\xac\xad\xd7\x32\x5c\xe5\x00\x45\x9c\xc1\x6e\x70\xa8\xb3\x07\x47\xb9\x44\xab\x1c\x13\x71\xf1\xf9\x75\x85\xc5\x71\xe8\xb2\x65\x4b\x4c\xd2\xe9\x0d\x9b\x65\x92\x4e\x99\xa6\xd0\x15\x71\xdc\x55\xc1\x6f\xfb\x18\x17\x5d\x9d\x88\xcd\x98\x9c\xc8\x0a\x11\x7b\x33\x80\x0e\x65\x3f\xe3\x06\xcd\x90\xb5\xdb\x6f\x48\xcc\xbb\xc0\xeb\xda\x39\xb5\x7c\xda\x3f\xc5\xfc\x95\x12\x18\xea\x12\x14\xdb\x86\xe3\x31\xd1\xf6\xd0\x08\x2f\x4d\xc3\x72\x07\xae\x37\xe1\x1d\xa3\x31\xae\xd3\xeb\xa5\x4a\xe7\x30\x63\xa2\xef\xc9\x35\xc8\x98\x40\x67\xfa\xe2\xfa\x86\x38\x9e\xe1\x8e\xdf\xed\x48\xc6\x78\x0f\x05\x1c\xa1\x15\x92\x81\x8f\x66\xb7\x12\x06\xdb\xf7\x8f\xff\xd3\xad\xb7\x36\xeb\x2a\xb7\x8d\xc2\x8c\xe6\x85\x3d\xd4\x4d\x1c\xbe\xc2\x2d\x6b\x77\x6f\x82\x7b\x57\x8f\xdb\x76\xaf\xcf\x92\xb7\x6c\xed\x3d\x15\x6b\xf7\x26\xdc\x35\xe1\xd3\x70\x08\x6c\x73\xe4\x9d\xbc\xdb\x50\x4d\x18\x5a\x08\x7d\x5a\xc8\x02\xe5\x7c\x19\x8a\xb5\xa4\x29\xfa\x32\x84\x98\x87\x3e\x5d\xd3\x51\x3b\xa2\x92\x20\x6e\x46\x50\xbe\xd9\x89\x6a\x41\x52\xee\x48\xbf\x71\x54\xac\x08\x26\xfb\x85\x4c\xb9\x0b\xb0\x93\x83\x3f\x7a\xdb\xfb\x71\x2c\x89\x3f\x56\xf0\xe6\x88\x9c\x82\xca\xd1\xd9\xd5\x72\x97\x4d\xf1\x0f\x69\xa0\xf5\x6e\x7d\x17\x80\xc6\x70\x27\xe5\xe1\x88\xbe\xf5\xcd\x14\x4b\xcd\xfb\x40\x26\x35\xba\xa6\x0c\xad\xed\xfb\xe3\x36\x9e\xed\x4c\x4f\x02\x87\x8d\xb3\x42\xac\x4b\xbc\x9a\x3d\x0a\x81\x79\xed\x22\x1d\xcb\xc4\x96\x54\x78\x1b\x8e\x9c\x2f\xb9\xde\xed\xf8\xe8\x86\x3e\xfb\xf3\xbe\xe8\x71\xf9\x7e\x53\x7f\x83\x63\x7c\xd1\xef\xca\x9e\x2f\x29\xe7\xb0\x0b\xfd\x36\x81\xb0\xf6\x75\x71\x86\xb9\xe9\x09\x83\xb6\x1d\xf7\x13\x99\x94\xe7\x9c\x4d\x45\x72\x2f\xf1\x93\x95\x97\x06\xb5\x44\x31\x41\xdb\x22\x62\x75\x14\x86\x69\xde\xed\xca\xe8\xcf\xc5\xa5\x0b\xc2\x2d\xb0\x0a\x6d\x3a\xf6\x31\x4f\x1b\x97\x61\xf8\x38\x97\xd5\x9c\x55\x02\x90\x6b\xad\x74\xe4\x82\x97\x50\x6a\x8f\x41\x9c\x31\x0d\xaa\x39\x5f\x6e\x50\xdf\xb0\x82\xf0\xba\x84\x06\x65\x61\x77\x72\x90\x3c\xb5\x7c\x6b\x13\xf3\x49\x52\x80\xb4\x94\x9e\xfa\x94\x8a\xa0\xf7\xc6\xf5\xe5\x44\x1b\xd5\x3b\x39\x04\xdd\x86\xc3\x2e\x70\xe0\x82\x3a\x4f\xa0\xea\x81\x78\x5c\x27\x70\xf8\x57\xc4\x8d\x76\xa7\xa2\x41\x65\x51\xc1\x9b\x26\x21\x8c\xaa\x17\x7b\xa8\xfb\x2b\x65\x24\xe3\xc0\x99\x01\x13\xa2\x91\x7a\x5b\x7b\x03\x1e\x7b\x27\x1c\x3c\xee\x4e\x64\x9e\x9f\x48\x37\xec\x76\xa5\x86\xa7\x36\x2e\x57\x0d\x8a\x03\x8a\x62\x59\x43\x8e\x9a\xc3\xa7\xaa\x58\xe9\x06\xb6\xae\x14\xdf\x81\x62\xc5\x90\xc0\x62\x4d\x14\xee\xa6\x4c\x55\x0e\x1b\x37\x00\x51\x0c\x20\xcd\x21\x63\x0d\xfe\x7b\x22\xa6\xa3\x52\x7c\x7f\xc3\xf1\x9d\xb5\x33\x77\x86\xa4\x21\xe8\xc8\x1e\x0b\x1d\x5c\x13\xbf\xc2\x16\xce\xaa\xf4\x00\x6d\x00\xe1\x06\x6e\xb8\x0c\x41\x0a\xda\x03\xc1\x39\x32\x23\x08\x04\xd3\x05\x08\x52\x0f\x02\x55\x80\x40\xe4\x10\x18\xde\x80\x8c\xdc\xfd\x07\x33\xe7\x70\x79\x83\xe0\xa2\x1c\x0d\x1a\xcb\xdc\x10\xa4\xdd\x89\xac\x72\xfa\x95\x41\xfb\x7c\x24\x05\x59\xa1\x85\xea\xee\xc9\x19\x9b\x95\x96\x27\x01\xcf\x58\x8c\x38\xeb\xaf\xd2\xf5\x0d\xc0\x14\x08\xc4\x64\x36\x19\x4c\x49\x19\x79\xde\xd2\xd9\xbe\x86\xe6\x76\xc9\x9a\x21\xe7\x7d\x24\x32\xd9\x06\x82\x2f\x0e\x1d\x03\xcd\x7e\x7d\xe4\x98\xed\xc6\x81\x3b\x29\x41\xc3\x62\xf8\xdf\xea\x0e\x62\xd0\xf6\xee\x54\x91\x08\x66\x2b\xbb\xe3\x4c\xba\x2b\x1d\xf2\xd6\xca\x39\xfa\xd4\xd6\x96\x66\xb1\xd2\xdb\x19\x30\x64\xbb\xf7\xf6\x04\x4a\x6d\xda\xab\xd9\x53\x35\xd5\x2b\x6b\x8d\xdc\xe3\x45\xa4\x89\xc9\x13\x73\x93\xc4\x6d\xbf\xc9\xab\xbd\x1d\xd5\xd0\x0b\xd4\x30\x58\x21\xff\xfa\x12\x67\xb5\x7f\x28\xd8\x69\x74\x02\xa7\x4f\x75\xb5\x44\x29\x63\xb9\x49\xaa\xfd\x45\x44\xc4\xf7\x71\x2a\x33\xf9\x1e\xe2\x08\x4a\x01\xaf\xe4\xde\x1b\x6c\x5d\x10\x6a\x39\xbf\xbd\x00\x50\x4e\x52\x3c\x31\x53\xda\x94\x7c\x15\xda\x09\x8b\x76\x82\x88\xac\xd4\x9b\x83\x69\x14\x40\xe9\x3f\x05\x14\xb2\x64\x5c\x5f\xba\xe1\x97\xc2\xb3\xb2\x68\x73\x18\xa5\x76\x63\x6f\x20\x35\x90\x7d\x7b\xe7\xcb\x1a\x4b\x29\xe9\x0d\xa0\x76\x58\xd6\xb2\x7d\xc5\xf9\x5e\x65\xfe\x2c\x63\xef\xd4\xe7\x44\x42\x4d\x97\x81\xe7\xc1\x7d\x19\xe4\x54\x9f\x1a\xda\xf0\x96\xa1\x04\x2f\xb4\x6f\x1d\x45\x55\xe7\x82\x81\x35\xea\x6d\x28\xf3\xf6\x26\xb5\x79\x01\x07\xa7\xae\x33\x45\x47\x31\x22\x7d\xbd\x9e\x0a\x60\x6e\x52\xec\x54\xe4\xe2\xa3\x7d\x41\xf9\x00\x0c\x69\x11\xa0\xf3\x9b\x15\xb5\xd5\xf6\xe1\xc4\x2b\x6a\x9f\x4b\xf6\x60\x4f\x62\x18\x18\xb0\xb0\x5b\x6f\x59\xc4\xd6\x8e\xed\x02\xf5\x7e\xc1\xaf\x91\x6c\xbf\x4c\x97\x23\x39\xd1\x35\x23\xde\xca\x98\x9c\x4a\x21\x70\x2f\xb5\x34\xbf\xb9\x47\xe5\xfd\x41\x9a\xbd\x90\x55\xcd\x04\x44\xab\x74\x7d\xe4\xe4\xab\xce\x39\xa3\xab\x03\x8d\xc9\x4b\x46\xbf\xa8\xbd\x4c\x09\xbc\xa9\x5f\x0b\x2d\x74\xf7\x58\x55\x3d\xdf\x40\xd2\x84\x23\x9b\x67\xc7\xd2\xb7\x74\x33\x43\x01\x29\x48\xfb\xf3\xf2\xff\x00\xd0\xca\xb8\xe9\x93\x29\xc8\x3d\x17\x2b\x17\x47\x03\x7d\x4d\x4a\xd3\x51\x39\x1d\x55\x2e\x19\xf0\x70\xf5\x1a\x80\x12\xac\xa2\x0d\xac\x81\x5f\xcc\x0a\xd0\x8a\x00\x5a\x8d\xf7\x4d\x38\x40\xba\xca\xbe\x0c\x47\x67\x6c\x8f\x80\xb4\xc0\xf3\x74\x37\xa7\x34\xd1\x95\x6f\xa1\xf1\x89\xaa\x66\xc9\x0b\x18\x3f\xfd\xdf\x00\x63\xc5\x4c\x4f\x41\x13\xd2\x28\x8f\xd8\xed\x5a\x80\xe2\xd9\x95\xa8\x62\x0d\xde\xb2\x62\x6f\x5e\x27\x6f\xff\xff\xb4\x4e\x02\x3d\xfc\xb5\x95\xe2\x88\x89\xaf\xac\x93\x50\xd9\xff\x81\x95\x52\xaa\x23\x6e\xb5\x06\xc5\x2b\x93\x6a\x11\x95\x08\xba\x6a\xda\xcf\x39\x31\x74\xdc\xfc\x36\x36\x37\x91\xc2\xdb\x0b\x7e\x9d\x18\xb8\x4c\x97\x89\xb1\x9d\x48\x1a\x76\x7a\xf5\x62\xbc\x56\x8c\xbb\x62\x96\x81\xb4\x25\x27\xd3\x92\x85\x7c\x70\x53\x44\xbf\xe6\x09\x56\xc6\xa1\x1c\x7b\xb6\x32\x8a\x68\x12\xdd\x76\xd7\xe8\xf9\x2b\x7b\x78\x71\x62\xd2\x38\x26\xbc\xc7\xa2\xdb\x11\x05\xe3\x2f\x1b\x2d\x1a\x7d\xb1\x17\x43\xb8\x5d\x66\x2b\xa7\xc8\x37\x3c\x92\xe8\xfc\xb1\x91\xd9\x4c\xad\xd3\xd3\x25\x3a\x80\xfc\x2d\x7d\xa8\xaa\xd2\xa0\xd4\x85\xad\xf8\x5b\x4e\x1e\xc9\x69\x1c\x5f\xf4\x17\xe4\x6f\x09\x8f\xe4\x4d\x41\x4f\x1e\x1b\xa7\xa4\xf0\xa6\xcb\xf7\xea\x36\x09\xae\x1a\x74\x8c\x18\xe4\xf0\xd8\x19\xe7\x0b\x39\x87\xcf\xd2\x9e\x82\xef\x82\x7b\x02\xde\x73\xe3\xfe\x85\x9c\x4c\xe3\xd8\x4d\xe5\x90\x62\xee\x1a\xf5\x61\x4b\x0e\x9b\x8e\x82\x37\xd8\xd7\x7f\x96\xbb\x5d\xf7\x9d\x73\x65\x90\xf3\x36\xdb\xeb\xc7\xff\xb2\x5d\x7f\x4e\xe1\x9e\x2c\xfa\x8c\x1e\x36\xb2\x1a\xef\xf0\x0f\xc9\x26\xd3\xe2\xed\x83\x64\xdd\xee\x1f\x32\x8e\x87\xb7\x27\xc3\x22\x99\x0c\xe1\x60\x40\xef\x0e\xe0\x99\x73\x50\xf0\xc9\x11\x85\xdf\x1c\x44\x42\x02\x6c\x0b\x6f\x14\x3b\xac\x61\x32\xc8\xbf\xc9\x89\xe3\x83\x1d\xf8\x33\xfb\xf3\x9b\x1d\x7d\x88\xd0\xd8\x02\x80\x0f\x72\xfc\x87\xac\x6e\xe6\x32\x82\xca\x6e\x37\x48\x9e\xfc\x1b\xf0\x41\xa0\xfc\x2e\x99\x2c\x77\xf7\xfb\x8a\xd6\xc2\xc5\x7c\xb5\xdc\x9b\x57\x32\x4f\xc4\x94\xa4\x14\x2c\x63\x8b\x6b\x6a\x2f\x9c\x11\x56\x8d\xbb\x7d\xe6\xae\x3b\xe3\x24\xa3\x49\x53\xc6\x96\xf9\x6b\xd2\x50\x42\x84\x61\x79\xe5\x17\x03\x6e\x56\x69\x9b\x2a\xf2\xfd\x32\x77\x5c\x91\xe4\x97\x51\x67\x64\x05\x91\xa5\xb6\xad\xf7\x92\x08\x1c\x6b\x0a\x33\x08\x57\xe3\x54\x64\x4e\xb3\xfd\x4c\xe1\x6a\x55\x9a\xa7\x24\xc0\xd2\x62\x4a\xe7\x2c\xa4\xbf\xaa\xce\x2b\xe3\x75\xa1\xfa\x0c\xf7\x4f\x73\xce\x28\x68\x36\x18\xe9\x32\x00\xa3\xee\xf5\x28\x1e\x4a\xe5\x54\xea\xe9\x68\x2f\xaa\x8e\xc5\x3b\xc0\xf5\x5e\x5c\x91\x32\x68\x78\x69\x01\xa3\x2b\x74\x7b\x88\x68\x85\xbd\x99\xa2\xb2\x46\x17\x51\xc1\x8b\x22\x5a\x37\xe7\x1a\x0d\x72\xca\x0c\x4a\x7f\xab\x2d\x74\x51\x44\xb4\x75\x23\x84\xd9\xbd\xb1\x27\xa9\x2e\xb4\x1c\xae\x19\x43\xc5\xa2\xb8\xc0\xa4\xdb\xc2\x7e\xe0\x70\x69\x09\xfb\x01\x68\x56\x86\x4b\xbb\xab\x47\xb2\xd7\xa3\xbc\xe2\xbe\xe4\x6c\xbd\xed\xf9\x5b\xc4\x64\x2d\x2c\x01\x0d\xdd\x03\x70\x3d\x3a\x69\xe1\xfc\x85\x8e\x6a\xd5\x4a\xd5\x14\x94\x5d\x3b\xb8\xa5\x34\xdb\xfa\xc3\x30\x91\x1a\xfc\xa3\xf3\x54\x68\x41\x01\xf5\x59\x72\xd9\x9a\x10\x02\x91\xdd\x58\xbe\x32\x23\x5d\x9c\x4a\x17\xfa\x08\x2d\x39\x2a\x1e\x82\xfe\x6b\x2d\x8c\x52\xab\x18\xbd\x96\xa5\x1f\x1a\x6e\x5c\x6d\x59\xa4\xfb\xde\x3d\x52\x7a\xf5\x20\x35\x69\xdb\xf8\x5a\x8c\xde\x42\xf6\x38\x36\xd5\x18\x0a\x21\x39\xaf\x03\xed\x9d\xe0\x57\xdf\x58\x71\xa5\x94\x3f\xc4\xdc\x4b\x5f\x64\xb6\x96\xf1\x7e\x12\x31\x34\x41\xb3\xae\xd3\x62\x9c\xee\xa9\xda\xb1\x4a\x31\xdb\x37\xb7\xe9\xda\xba\xb4\xc7\x29\xdb\xec\xce\xb8\xae\x2d\xbb\xc4\x2f\x8d\xec\x6e\x11\x26\xca\x2e\x9d\xb7\x61\x88\x89\xb6\xaf\x0f\xea\xce\xe4\x7b\x4b\xc8\x7e\x6f\x59\x3b\x8f\xc4\xf2\x8b\xc5\xec\xf7\xb6\x25\xb7\x54\xa7\x5f\x2a\x66\xbf\xb7\xb5\xe6\x4b\x24\x42\x3b\x58\xf1\x74\xd5\xb6\x6e\x95\x5b\xac\x16\x55\xf4\xd7\x62\xcd\xb1\xf0\xdb\x37\xcf\x8f\x78\xaa\x67\xe7\xaf\x53\x9d\xae\xda\xfc\xb5\xda\xa6\xbd\x51\xaa\xb1\xac\x1a\x5f\xdd\x0c\xa6\x72\x9e\xea\xf9\x3d\xad\xae\x32\xae\x1f\xca\xcb\x7d\x65\x61\xd5\x4f\xa5\xf4\xb3\x08\x8e\xc9\xbb\x5d\xf4\x86\xa7\x33\xf3\x12\x6f\x46\xb0\x04\x64\xf1\xc9\xe2\x8f\xf9\x66\x66\x51\xa4\xfb\x7a\x84\xde\x73\x37\xe6\x39\x6a\xfd\x82\xa1\xd0\xbe\x60\x30\xda\xf6\xad\x88\x3a\x99\x43\x70\x65\x4c\x35\xac\xb8\x3e\x2b\xe7\xbf\x63\x8a\xa3\xb7\x7a\x09\xbe\x8f\x17\xb7\x87\xd4\x39\x86\xf6\xd9\x4b\x96\x63\xfb\x81\x19\x82\x71\x6a\x91\xe5\x47\xff\xc2\xf2\xb2\xbe\x01\xa8\x7d\x8e\x4a\xdf\x55\x78\xe8\xa5\x9a\x54\x8f\xbc\x8a\xc3\x1f\xcf\x61\xce\xf9\xfa\xc5\xff\xb1\x3e\xb7\x64\x33\x64\x9b\xdb\xef\xff\x6b\x86\xc3\x3f\x19\x2e\x6f\xbc\xfa\x2c\xd5\xb5\x60\x38\xdc\x0e\xc8\xf9\x6a\xb6\x62\x67\x3e\x36\x9a\x38\x19\x8b\x0f\x4b\x64\xb4\x68\xdd\x5e\x85\xe1\x1c\xb9\xfd\xdf\x7f\x65\xdf\xdd\x86\x28\x2a\x03\x26\xdf\xfe\x2b\xfb\xee\x16\x26\x55\x6d\xd2\xb2\xea\x41\xcf\xe5\x4c\xcd\xf9\xdb\x37\x4f\xef\xab\xd5\x5a\x49\x77\x11\x4f\x59\xc1\x3f\x7e\x18\xdc\x3e\x13\x10\xfd\x57\xb5\xd6\x7f\x7c\x7f\x88\x89\x49\x2d\xf1\xce\x0f\xb7\xcf\x20\xba\x55\x4f\xbb\x8f\x19\xa1\x9e\x38\xb0\x19\x7b\xb5\xb4\x1f\xef\x61\xc6\x49\x3d\xf1\x01\x26\x4e\x23\x6f\xa9\xb2\x6f\x4e\x8f\x17\x27\xd5\x6f\x73\xc2\xdb\x94\x24\xd5\xcc\x72\x96\x45\x68\xbb\x99\x3d\x08\x1a\x18\x02\x63\x21\xb0\x92\xbc\x22\x15\x1b\x67\xc5\x26\xd3\xd1\xac\xd0\x9b\xd6\x23\x19\x59\xe2\xc5\x53\x2e\x71\xec\xaa\x2e\x98\x62\xcb\x48\x4e\xa6\x51\x82\x94\x0b\x54\x6a\x30\x75\xbd\x0a\x96\x7a\xe0\x84\xa0\x63\xd4\x79\xaa\xa7\x47\xaf\x42\x47\x12\xfc\x5c\xc4\xaa\x40\x4a\xe8\xb7\xa3\x57\x2f\xfb\x45\x28\x0a\x34\x0b\xf4\x61\x25\x32\x4d\x38\xed\x45\x2c\xea\xe1\xd4\x3a\x55\x1e\x86\x48\x52\xfe\x7a\x85\x38\xa2\xb9\x58\x10\x5d\x12\xd5\x81\x47\x8a\xfe\x23\xa2\xa3\x83\x61\xd7\xdd\xa8\x6c\x3b\x12\xa4\xcc\xa8\x4d\xef\x31\x72\x30\x44\x1f\x84\xa2\xc0\x38\xa2\xe3\x68\x1c\x25\xb6\xd2\x9e\x2e\x6c\x36\x2a\x0b\x6c\xa9\xc3\x3d\xb6\xde\x44\x21\x63\x93\x69\xbe\xd4\x55\xd1\x7a\x76\x83\xe6\xa6\x56\xcc\xdf\x0c\xb3\xd8\x2c\x17\x62\xb9\xe4\xf3\xc4\x80\xe6\x16\x26\x7c\x8e\x81\xd6\xea\x99\x03\x3f\x9f\x43\xad\x29\x2c\xb0\x2f\x8b\x0e\xc5\xf0\x92\x04\xd2\x4c\x72\xd7\x75\x36\x6a\x0a\xbe\x9c\x8d\x79\x2c\x66\xb8\x5a\x47\xdd\xbc\xd5\x93\x6a\x3c\x8e\xbd\x25\xae\x63\x38\x16\x9a\x2d\x35\xac\xf7\xd7\x75\xb0\x88\x2a\x2b\xaf\xc6\xb7\xc2\x00\x6f\x0e\x6c\x1e\x3b\xcc\xdb\xee\x26\xec\xa2\xd0\xae\x6b\xfa\x27\x27\xf7\x0f\x5f\xde\x7f\xf8\xfc\xe4\x84\x56\x66\xe9\x5c\x17\x9e\xfd\x95\x1b\x1e\x33\x6e\x8e\xc5\x8a\xab\x8d\xe9\x9c\xa7\x2e\xd8\xce\x29\xe7\xb2\x13\x0e\xa1\x0a\x1d\x7f\xd9\x5a\xc1\x6c\xc9\x53\xfd\x95\x2a\xd0\x11\x56\xb3\x73\x0d\xd7\x9a\x5d\xea\xb2\x4f\x67\xda\x7b\x2a\xac\x34\x63\xac\xec\x4b\xd8\xe2\x65\x0a\x31\xe0\xc2\x9e\xb9\xac\xe7\x7a\xb7\xeb\xae\x2c\xad\xbb\x5f\x68\xa5\x2b\x35\x41\xb3\x8a\x4a\x98\xdf\x95\xc6\x24\xcf\x19\xf3\x5a\x08\xe0\x95\xae\x72\x02\xb5\x5c\x8d\x1c\x9e\x93\xb7\x4c\x7a\xde\x82\xda\xaf\xd1\x14\xcf\x77\x21\x8e\x49\xad\x77\x14\xda\x4b\x54\x81\x1a\xc7\xe4\x5a\xb3\x6a\x8a\x93\x05\x9c\x6a\xb8\xd2\x6c\x32\x85\x23\xcd\xba\x43\x78\xa5\xd9\xc1\xb0\x84\xec\xa1\x9d\xac\x23\x1d\xc7\xa7\x3a\x8e\x89\xcb\x72\x1a\x62\x8f\x8f\xaf\x34\x3b\xd5\x41\x74\x78\xa5\x69\x82\xa5\xe1\x4a\x17\xe1\xca\x1e\x6a\x52\xb5\x07\xb1\xaf\x88\x7d\x8f\x74\xf0\xc5\x38\xd3\xe4\x50\xd3\x91\xad\x7a\x30\x2a\x65\xae\x45\x1d\x23\x3e\x72\xfc\xf3\xa9\x66\x57\xbe\xaf\xa3\x5e\xef\x95\xbe\xcb\x47\xf4\x14\x7b\x36\x79\xa5\xa7\x7d\xbd\x91\x84\x8e\x5c\x07\x2a\xc5\xf3\x53\xed\x02\x50\xbb\xbe\x57\x97\xbb\x58\x58\x88\xb0\x3a\x4c\xc2\x16\xaa\xa4\xf9\x78\x55\x2e\xf3\xa5\x5d\x31\xd7\x76\xc5\xb4\x15\x6b\x40\x18\x9a\xd5\xd8\x95\x71\xad\xcb\xa8\xd0\xf5\xc5\x72\x5d\x5b\x2c\xfb\x4b\xe5\x5a\x37\x5c\x5b\x72\x52\x73\x70\xf9\xa4\x2b\x9e\xb5\x8b\x8d\x64\x26\x5c\x58\xae\xd3\x6b\xc6\xf3\x4f\x55\xac\xa4\x37\xb2\x16\x9b\xdd\x97\xa9\x46\xf4\x29\x0b\x57\x11\xc0\x89\x9d\x43\xdc\x8b\x1f\x35\x3b\xd1\x70\x1f\x7f\x2f\xf0\xf7\x35\xfe\x1e\xe3\xef\x1b\xfc\x7d\x6e\x7f\xdd\x15\x63\x9a\x5d\xcb\xfe\x9a\xeb\x85\xd2\x2b\x4b\x7c\xef\x76\xdb\x1c\x9e\x6a\xf6\x52\xf7\xa5\xba\xda\xed\x5e\xea\xfe\x4a\x7d\x7e\x19\x1e\xb3\xf0\xa4\xc2\xc3\x15\x3f\xbd\x10\x06\xdf\xf6\xe9\x71\x8b\x4b\xec\xc1\x48\xfb\x67\x6e\x5f\x10\x8f\x2d\xdf\x6a\x16\xbe\xe1\xfb\x2d\xcd\xb6\xc1\xbc\xb7\x25\x46\xd9\xcd\x02\x9a\x83\x21\xae\x83\x7d\x59\x5b\x45\xc4\x30\x1c\xc9\xbb\xfb\x9a\x82\x5e\x8f\xf2\x89\x3c\x18\x36\x54\x05\x57\x3e\xae\xa0\x6d\xd2\xcf\x1d\xc5\x48\x3c\xc5\xea\xdd\xed\x8e\xf4\x6e\x77\xa6\xc9\x43\x4d\x73\x30\xc2\x2c\x79\x12\x9d\x3a\xb6\x24\x02\xff\x90\x74\x07\xc0\xe5\x65\xb2\xcd\x21\xd5\x67\x97\xc9\x64\x0a\xc5\xa5\x68\x51\x78\xcc\xec\x67\x25\x93\x8f\x1a\xd2\xf9\xfc\xb9\xc8\x0c\x97\x5c\x27\xf7\x35\x28\x39\xe3\xc9\x85\x06\xb5\x58\x24\xaf\x35\x38\xb7\xb9\x22\xc3\x71\x48\x39\x5c\x2e\x43\x62\x96\xbc\xd1\xc0\x57\xc2\x24\xcf\x35\x9c\x0a\x39\x6f\xf2\xbb\x7b\xd8\xdd\x07\x64\xea\xfb\xcc\x21\x1e\x5b\xe5\x36\xbf\x1c\x66\x57\xf3\x7d\x36\x2b\xba\x1d\xe5\x30\x3b\x9f\x0b\xfd\x6d\x0d\x60\xd6\xd6\xea\x37\xab\x34\xbb\x68\x31\xfa\x1c\xe4\x70\xae\x8d\x58\xf1\x96\xb5\xd0\x1f\x0c\x86\xdf\x3d\xf5\xbb\xee\xa5\xa6\x20\x2b\xd7\x1f\xb9\x48\xa2\xd5\xf7\x7f\x0c\xbf\x1b\xf2\x5f\xca\x78\xe0\x71\x4c\xe4\x01\x33\x93\xc1\x14\x88\xb6\x0f\xc3\xa9\x77\xde\x38\x38\x00\xdd\x63\x36\x33\x85\x89\x04\x3d\xcd\x61\xbd\x4c\x8d\xdd\x19\x95\xf9\xd5\x7c\xc9\xd3\x8c\xdb\x99\x73\xf2\x7d\xfb\xb4\x59\xd7\x3b\xbb\xb7\x01\x0e\xde\x6a\x7a\x7b\xc8\xbf\xcf\x73\x78\xd0\x94\x4c\xde\x40\x58\xba\x60\xe0\x8e\xd2\xd0\x7d\xa3\xde\xae\xd7\xe1\x9e\x14\xcb\xc0\xd7\x53\x8a\x5b\x16\xa1\xb8\x4a\x4b\x4f\x9d\x93\xe7\x8b\x26\x49\x52\x0b\x19\xfe\x85\x4f\xc6\x7b\x0b\x30\x0e\xce\x53\xc8\x72\x17\x4c\x52\xb0\x7c\x0a\x86\x14\x61\x1a\x9f\xb3\xb5\x92\x19\x67\x0a\x8c\xa5\x9e\x3f\x09\x95\xe1\x02\x70\xee\x09\x46\x59\x62\xb7\x25\xca\xd5\x8a\x67\x59\x7a\xc6\x9d\xf7\xab\x7f\x01\x99\xae\x7c\x8a\x7d\xaa\x45\xe3\x75\x4e\x5d\x65\x02\x38\x51\x8c\xcf\x8d\xcf\xb0\x10\x4b\xfe\xb2\xa8\x22\xbc\xc1\x52\x48\xfe\xb2\x92\xbb\x7c\x87\x99\x5a\x6e\x56\xb2\xfa\xb1\x9a\x02\x99\x49\x67\x17\x49\x30\x2b\x99\x5d\x84\x39\xf7\x39\xed\x33\x58\xb0\x84\x84\x39\x77\x57\x57\x97\xbb\xc0\xd0\x02\xb0\x39\x3c\xd2\x6c\x12\xa5\x67\x3c\x82\x28\xdd\x98\x73\xa5\xc5\x67\xef\xec\x14\xf9\xcb\x28\x0e\x8a\x1b\x8f\x42\x02\x5e\x7a\x04\x11\x37\xe9\x99\xfd\xfb\xb4\x16\x9a\x67\x11\x44\x0b\xad\x56\x11\x44\xe7\x2a\x33\x11\x44\x62\x71\xb0\x52\x73\xb1\x10\x7c\x7e\x90\x09\x39\xe3\x2e\x6d\x23\xf7\x52\x97\x69\x66\x8a\xbc\xf6\x5d\xcd\x42\x1f\x56\xe9\xa7\x83\x85\xd2\x57\xa9\x9e\x67\xee\xce\xa5\x4f\xd7\x07\xcd\x8e\x6a\xbe\xe0\x9a\xbb\x4b\xb6\x8d\xbe\x3e\x40\x3b\x34\x1f\xf4\xed\x20\xc5\xa8\x6f\x53\xf8\x5b\x33\x64\x7b\xf6\xa5\x36\x84\x8e\x1b\x0a\x05\x03\x9c\xdd\x26\xab\x4c\xf0\x9d\xd1\x62\xce\xa5\xa1\xb7\x85\xbb\xb2\xb2\x14\xb1\x14\x21\xe5\xec\x7e\x2f\x6e\xe3\xa8\xdf\x3a\x1b\xa5\x51\x45\xad\xa0\x4b\xc3\x8a\xc2\xc5\x1d\x8d\x53\x2d\xcd\x76\x68\x8c\x16\xa7\x1b\xc3\x49\x74\xae\xf9\x22\x02\x6d\xf1\x86\xec\xdb\x17\x0a\x37\x66\xd9\xda\xa7\xc4\x65\x73\x2a\xa4\x99\x5a\x26\xde\xd2\x64\xa6\x96\xe3\xf2\xb1\xe4\x7d\x13\xc7\xb6\x5b\xbc\x6f\x27\xcb\x16\x57\x99\x25\x5e\x2d\xfb\x9a\xd8\xb6\xec\xc3\x38\x3c\x54\x85\x00\xe3\xb2\x64\x9a\xd9\xbc\xf6\x6f\xec\xfe\x2a\xf9\xfe\xa3\xd6\x00\xee\x21\xd7\x08\x6e\x22\x8b\x6e\x6d\x1f\x95\x36\xb0\x4e\xcd\x39\x7e\x8f\x6e\x47\x8c\x31\xd9\x0f\x09\x41\x95\x3a\xa0\xe3\x32\xd1\xe6\xea\x95\xaf\xc5\x7d\x02\x86\xe9\xe0\x1d\x1b\x56\x8f\x87\x5c\x53\x9f\x2f\xc3\x32\x40\x5e\x98\xd3\xb1\xc5\xd0\x49\xe1\x26\x52\x82\x0b\xf9\xd2\xf0\x12\xc7\xae\xfb\x98\x68\x1f\xf2\x9c\xd0\x7d\xec\xda\x1d\xe4\x70\xef\x4b\x0b\x6d\x8b\x17\xb8\x24\xfb\x38\x0e\x44\xb8\x45\x6b\x32\x1d\xa5\xde\x37\x0f\xb9\xee\x16\x19\x8a\x25\x00\xb0\x0d\xef\x72\x2d\x69\x1c\xfb\x32\x61\x3b\xb2\xa8\x17\x30\x3d\x91\xb4\x6f\xd4\xe3\x17\xc7\x81\xff\xf7\x85\xfd\xab\xae\x14\xb6\x70\x65\x51\x4f\xd7\x73\xa8\x4a\x0e\x77\x1b\x0f\x8b\x7a\x8a\x42\x77\xc0\x90\xb1\x0f\xdf\x32\x3e\xdb\x68\x1e\x51\x28\x77\x83\x52\x17\x82\xb3\xd4\x0b\x0a\x46\x1d\x7b\xc4\x6a\x9e\xce\x5b\x4e\xd1\x46\x21\x1f\x1c\xd1\x0e\xe2\x0d\x3f\x7b\xf8\x69\x4d\x22\xf2\xdf\xbb\xd1\x5f\x7f\x65\xdf\x51\x82\x57\x08\x51\x46\x26\xff\x3d\x9a\x7e\x47\xa3\x32\x2c\x37\x1f\xcf\xf9\x3e\xb8\x26\xdf\x4f\x69\x82\x6e\x5b\x9e\x4a\x49\xf6\x18\x76\x77\xb1\x8e\x81\x28\x02\x0b\x33\x4b\x6a\x12\x7a\xf0\xf3\x4f\x3f\xf0\x1f\x69\x9e\x27\xcd\x79\xa3\xdb\xe6\x38\x6a\xaa\x94\xfd\x76\xe8\x36\xcf\xe1\x71\xeb\x25\xff\xed\x4a\xca\x9a\xef\xe1\x3c\x35\x29\x28\xbb\xf4\x78\x3a\xe7\x3a\x1b\xe1\xf4\x04\x55\x07\x4e\xa1\x3f\x65\xd5\x24\xba\xef\xd1\xf4\xb1\x45\xd3\xce\xd2\x44\xb8\x4b\x5f\x5f\x3c\x7f\x62\xcc\xda\x47\xdf\x42\x3b\x93\xbe\xc5\xa5\x61\xe5\xb9\x37\x44\x6c\x76\x73\x61\xa0\xcc\x59\x48\x5d\xa7\x59\x76\xa5\xf4\xdc\xa6\x8e\x54\xff\xb0\x8a\x83\x59\x74\x2f\xcd\xc4\xac\x13\xf5\x4e\x8d\x4a\x49\xda\x8b\x92\xa8\x37\x73\x9c\x38\x5e\x4d\xc1\x48\xc6\x4c\xff\x34\xcd\xf8\xdb\x37\xcf\xf1\xa6\xb3\x8d\x5e\x42\x16\xc7\xdd\xdb\xff\x4d\x26\xe9\xc1\xe7\xa9\xfd\xf9\x6b\xfe\x57\xef\xaf\x83\xbf\xfa\xd3\xef\x12\x3a\xfe\xeb\xf6\x5f\xb7\x03\xd2\xdd\xd4\xe3\xf4\x97\xe2\xc5\x71\x45\x40\xf9\xd7\xed\x9e\x43\x6b\x3d\x8b\x23\x78\x15\x69\xdd\xee\x39\x74\x64\x72\x92\xc1\x86\x26\x1b\xa4\xd0\x85\xbb\x56\xc9\xf4\xdd\x2d\xf2\x75\xf2\x05\x36\x9a\x2c\x01\x5d\xf1\xd3\x55\x56\x3c\x1c\x71\x2d\xd2\xa5\xf8\xcc\x35\x45\xcf\x51\xd1\x37\x8e\x6d\x63\x26\x3c\x81\xe8\x2b\x69\xd7\xc6\x35\xda\xc1\xcd\xce\x53\x79\xd6\x0c\xfc\x2d\xe2\xf8\x07\xbb\x77\xfa\x98\x0f\x4d\xea\xe2\x98\xe0\xbd\x6a\x68\x3d\xb7\xc9\x76\x3b\x51\xd0\x31\x6f\xdf\x3c\x8f\xe3\x81\xcf\x5f\x24\x95\x32\x33\x4b\x55\x24\x11\xa5\x85\x4b\xdd\x19\x37\x87\xcb\xe5\x1b\x9f\xf7\x89\x5b\x33\x91\x90\x1d\x31\xde\xdb\x77\x0e\xfd\x54\xec\xa1\xcc\x98\x54\xe9\xbf\x10\xc5\xe1\x2f\x19\x35\x8c\xb7\x31\xbe\x6c\x45\x74\x97\x44\x14\xb8\xc5\x7d\x46\x8b\x15\x71\x6e\xd1\x46\xa3\x0b\x58\xe3\x56\x3d\x90\xfb\xd9\x74\x6f\x48\xa9\x57\xdc\x2a\xbc\x89\xf5\x91\x2e\xea\xe6\xf4\x57\x36\x08\x76\x4e\xf6\x2b\x8b\x32\x6e\x0e\x1c\xa6\x40\xed\xd1\x18\x0b\x8d\xed\x4f\x32\x99\x16\x41\xfb\x27\x72\x4a\x93\xe2\x4b\x2f\x82\x4e\xd4\x93\x89\x44\xe3\x25\x45\x13\x95\x13\xd1\x6f\x85\x16\xa1\x0e\x63\xa0\x63\x62\x6a\xd2\xa4\x24\x2b\x8f\xd1\xa5\x24\x32\xfc\x13\xaa\x63\xea\x1f\xc6\xe5\x1c\x25\xe5\xe3\x31\xff\x64\xc0\x4d\x6c\x12\x66\xd8\xbf\xdb\x4f\x45\x1a\xe6\xf3\x7b\x3c\xd1\x05\x69\x07\x9e\xba\x4d\x44\xde\x74\xc6\x0a\x73\x5e\x38\xd2\x5e\xa6\x4b\x31\x4f\x0d\xda\x21\x6f\xb2\x51\x57\xef\x76\x9a\x48\x5f\x3f\x1d\x1b\x22\x69\xc2\xc9\x0b\x4d\x22\x8f\x07\x3a\x8b\x54\x2c\xf9\xbc\x73\x25\xcc\x79\xc7\x65\xc3\x3b\xba\x2d\xa4\x42\x57\x43\xed\xe0\x2e\xe9\x0a\xd4\x36\x5e\x87\x8e\x91\x72\x14\x05\xe1\x1c\x63\x73\x5c\xff\xe9\xa9\xd2\x35\xcf\x19\x61\xe9\x9c\x5a\xb3\x98\xc5\xd2\x7b\x06\xa2\x87\xf7\x5f\xbd\x7c\x79\x78\xef\xd5\x9b\xe3\x87\x0f\x22\x94\x0d\x8b\x20\x23\xb5\xb5\xa1\x25\x7f\xb5\x36\x57\xd3\x4b\x6e\xae\x94\xbe\x70\x64\xad\xad\x07\x7b\x57\x96\x76\x85\xc3\x06\xdd\x33\x1a\x89\xfc\x97\x8e\x5a\x74\xa2\x5e\xb1\x7f\x7b\xd1\x2a\xeb\xf0\x4f\x33\xce\xe7\x7c\x1e\x8d\x8a\x74\x6c\xe5\x85\xe3\x0a\x30\x04\x72\xeb\x17\x0a\xd8\x37\xfe\xa5\x51\xe5\x70\x23\x81\xe0\xfa\xb6\x60\xf7\x34\xac\x19\x71\x57\x78\xdd\xd7\xdc\x92\xa0\x22\x5d\x66\xbb\xdd\xdf\x9a\x2c\x29\x7a\x36\x7d\xca\xf4\xe2\x3e\x6e\x00\xcb\x51\x8c\x17\x88\x4b\x48\x33\xbd\xb8\xbe\x67\x1d\xc7\x44\x4d\xdc\x67\xb7\xc6\xed\xe7\x29\x5b\xa3\xec\xde\x6e\x27\x3f\x31\xee\x23\x62\x8b\x38\xae\x60\x02\xd5\x54\x52\x54\xe3\x89\xd4\x79\x03\xcf\x0d\x56\x76\xfc\xb8\x38\x9e\xf8\xd4\xae\xf6\x46\x6b\x3e\xbe\xbf\x27\x3b\x0a\x85\xf5\x3e\x00\xe8\x6e\x47\x44\x33\x91\x75\xbb\xfb\x19\xa1\xbe\x2f\x31\x9a\xa2\xa8\x25\x35\x76\x6e\x29\x47\xb3\xf0\xf8\x98\xe1\xdd\x51\xac\x59\x0b\x4a\x14\x78\x9b\xe8\xd5\xf4\x95\x7c\xa0\xae\xe4\x52\xa5\xf3\xd7\x5a\x9d\x69\x9e\x65\x71\x2c\xfa\xe9\x7c\xfe\xf0\x92\xbb\xb0\x94\x5c\x72\x27\x85\xc0\xaf\x11\xb4\x95\x69\x95\xd2\xda\x8c\x6f\xd7\xcd\xaa\x37\x98\x52\x3e\x7d\xb5\xad\x7a\x15\xe8\x8a\x9c\xca\x19\x5f\x62\x10\x51\x34\xcf\x28\x5f\x2d\xed\x8b\xc6\x59\x0d\x2f\x22\xe3\x36\xb3\xe8\xe3\x06\xb6\xc8\xdc\x72\x94\x61\xbf\xd2\xca\x0d\x66\x2e\xce\x8c\x8b\xdc\x60\xe7\x5c\xce\x89\x76\x12\x80\xcf\x9a\x6d\xeb\x74\x4a\x12\xa5\xeb\xf5\x52\x38\xd2\xfd\xf6\xa7\x83\xab\xab\x2b\xcb\xf8\xad\x0e\x36\x7a\xe9\x28\xe0\x79\x54\x91\x2e\xbe\xf3\x32\xcc\x6e\x73\xc1\x50\x5c\xb3\xb5\xa4\x26\x45\xe4\x44\x13\x8d\x44\xc6\x1d\xb9\xf2\x44\xc3\x1f\x9a\x6d\xd3\x79\xba\x36\x5c\x27\xa4\x55\x7d\x5e\x27\xa4\x2a\xb1\xd5\x6f\xe9\xca\x1d\x80\x5e\xd8\x84\xd6\x0d\x37\x5a\x5d\x39\xa1\xd1\x2d\xbc\x8c\x95\x3c\xd1\xec\xb1\xa6\xf0\x44\x53\x30\x21\x54\xa9\x6f\x24\x99\xb4\x52\x40\x0f\x34\x46\xbf\x9e\xcd\xf8\xda\x44\x14\xdc\x6b\x6d\x64\x7e\x4f\x15\xb4\xa2\xa1\xbb\x5d\xa9\x54\x2c\x0c\x70\x7c\x62\xf3\xdd\x59\x5e\x94\xef\x8f\xc4\x92\x57\x72\x2f\xd5\x29\x6a\x18\x93\x66\x8d\xde\x2a\x66\x1c\x0c\x61\x92\x56\x15\xa9\xa1\x63\xf2\x0e\xbb\xfc\xd5\xc9\x1f\x59\x6e\x30\xe3\x86\x6d\xcc\xe2\xe0\xe7\x88\xa2\x1c\xa7\x60\x68\x1a\x1a\xcd\xb6\x5a\xed\x86\xde\xab\x64\x5f\xeb\x99\x98\x7c\x5a\x05\xbe\x3f\xca\x27\x0d\xc2\x67\xdf\x48\x07\x11\x8c\xd7\xa3\xae\x6d\x2b\xb5\x4b\x1d\x4b\x45\xe6\x14\xfc\xa9\x91\x0c\xa0\x8e\xaa\x93\xe8\x8f\xa3\x37\x8f\x0e\x8e\x5f\x3d\x7b\xf8\x32\x82\x3a\x9e\x4e\xa2\x3f\x0e\xaa\x5f\x57\xe9\x27\x3f\xcb\xcf\x43\x00\x72\xa8\x9f\xfc\xad\xea\xfc\x5f\xd9\x9d\xc1\x20\x8e\xcd\xdd\xef\x07\x83\x3c\x1f\xfd\xa1\x03\x43\xc1\xb6\x33\xb5\x5a\x29\x99\x6c\xdd\x5a\x4a\xf6\x60\x07\x1d\x4b\xf0\xdc\x5e\x2f\x53\x21\xa1\xf3\xdd\xed\xef\xa2\x3c\xaf\x6a\xa0\x27\x91\x43\xf1\x11\x58\xf2\x33\x82\xc8\xd6\x1c\x4d\xeb\x24\x63\xd9\xe0\xc4\x4c\xd9\x36\xf7\x28\xbf\xac\x63\xed\x64\x47\xeb\x0d\xfe\x5a\xe8\x7d\xb9\x8a\x99\xee\xa3\x65\x0a\xf9\xac\x8b\x38\x25\x1f\x34\xfb\xa3\xa2\xf5\x7b\xa6\x5d\x00\x91\x2f\x60\x3a\xc4\xea\x4f\x17\x7e\xab\xf1\x39\x71\xb8\xe0\xb7\x56\x76\xed\x99\xf3\xae\x2a\x20\x57\x3c\xa1\xa2\xc2\x5f\x15\xbd\xd6\xc4\x73\x6d\xc5\x67\xbb\x62\x1b\x9b\xba\x5a\x4d\x31\x92\x22\xa9\xef\xa6\xc4\x57\x5b\x0c\xda\xb3\x2b\xd3\x7a\x3a\xfd\xfa\x5c\x40\x1b\x74\x21\x72\xad\xd4\xc0\xcc\xcb\xe0\xa9\x45\xbb\x7c\x8a\x21\x9e\x4c\xdf\xa3\xc6\xdd\xee\x83\x0e\xcf\x94\x18\xda\xe2\x6c\x5a\x03\x18\x2f\x00\xe3\x9e\x80\xb7\x03\xc6\x6d\x38\x74\x8e\x87\xb6\xda\xe6\xda\x5d\x56\xe1\x6b\x75\x21\xfc\x5c\x21\x4b\x95\x15\x2f\x95\xe6\x6a\x49\x50\x79\xff\x52\x07\x28\x85\xd2\x3a\x19\xf1\x8a\x53\xad\xc3\xef\x4d\x69\x39\x67\xa8\xa3\x1a\x55\xc2\x66\x4c\xa2\x8d\x5e\x46\x10\xb9\xa9\x42\x60\x5b\x84\x17\x41\x64\xbb\x10\x4d\x41\xb1\x49\xe4\x5b\xf7\x92\xd7\x20\xdd\x8c\xa6\x20\xd8\x24\xf2\xbc\x72\x04\xbe\xa6\xe6\xd2\xa9\x27\xb9\x3e\x17\xed\x94\x5c\xaa\xcd\xe6\xd0\x4d\xe4\xae\x3f\xaa\x90\x48\xb6\x61\x37\x7f\x28\x39\x2d\xa9\x9c\x08\xa2\x3a\x66\xf2\x09\x25\x3a\x8a\x20\x6a\x12\x13\x98\xd4\xa4\x65\x9c\x04\xb7\x86\xa9\xdc\xd5\xfa\x15\x44\xe5\xf2\xbc\xe1\x73\xa1\xf9\xcc\xd8\xd7\x73\x63\xd6\xee\xb2\x0e\xf7\x9c\x85\x97\xca\x9e\x8d\x20\xca\xd4\xec\x82\x9b\xd7\xa9\x39\x8f\x6a\xd6\x34\xba\x8e\x30\x8a\xc3\x99\x3b\x63\x0c\x17\x43\x38\x5c\xd1\x75\x03\x81\xab\xbd\x0d\x8d\x3f\x52\xf8\x44\x4f\xe9\x18\xad\xac\x67\xba\x5f\xd8\x96\x11\x33\xd1\x53\xc0\x8f\x49\xa5\x19\x3d\x75\x59\xed\x53\xfd\x64\xfa\x42\x35\x95\x1a\x8c\xbb\x09\x0f\xf3\x05\xad\x49\xb5\xa3\xa2\xde\xd1\x9b\x5a\xfe\x62\x7d\x3e\xa2\x93\x2e\x83\x70\x56\x02\x34\xcc\xaa\xb7\x94\xa3\x77\xd4\x8d\xee\xd8\x68\xbf\x93\x56\xe2\x85\xe5\xa5\x30\xae\xd2\xe5\xd9\xff\x82\x2e\x83\xac\x10\x80\xef\x75\x21\xba\x9b\xf3\x45\xba\x59\x9a\x2c\xe8\xb1\x85\x34\x5c\xdb\x43\x4c\xd9\x73\x2d\xb0\xce\x92\x5f\x75\x16\x1a\x0a\xe6\xdc\xbd\xe7\xf9\xfb\x9a\xb6\xdb\x6b\x91\xaa\xe3\xdc\x3f\xea\xc7\xa4\x72\xe5\xda\x64\xe8\xef\xe1\xdf\xe8\x65\xed\xb6\xb5\xc4\x30\x83\x38\x9a\x18\xf6\xbb\x26\xb5\xae\x82\xa1\xd4\xe3\xf1\x71\x40\xe8\xac\x22\x88\xaa\x70\x4e\x49\xad\xe0\x7e\xa1\x96\xaf\xcd\x0a\x42\x5e\x3c\x0c\xfc\x65\xe7\x93\xdf\xb4\x27\xd4\xa7\x20\xf7\x62\x9d\xf8\xdb\xe4\xf7\xc0\x19\x00\xd4\x1e\x08\xa0\x12\x5f\xae\x5f\x58\x55\x21\x1f\xe6\xac\xaa\xca\x58\x12\x8d\x3a\x3d\x3a\xbe\xa1\x52\x27\x0b\xbf\xb1\xc6\x51\x11\xa3\x88\x4a\x26\xdd\x31\xc4\xfb\xae\x1f\x78\xe5\xba\x7b\x2a\x23\x26\xe4\x50\x9b\xf3\x33\x6e\xde\x6a\xd1\x1a\xf6\xb8\x6d\xde\x60\x63\x8f\xf6\x8d\xfe\xb2\x70\x70\x5f\x65\xf2\x0d\xc4\x12\x44\x3e\x04\x49\x93\xe6\xa9\xf6\xd7\x62\xaf\x36\xf7\xb4\x8e\x0f\xf0\x8c\xf3\x43\x0a\x6a\xc2\x91\x0f\x5b\xb7\x02\x12\x03\x1b\xbd\x44\xab\xcf\x7f\x87\xf4\xfa\x52\x37\xaa\xf7\x44\xb7\x76\x44\xb7\x75\x04\x50\xb4\x26\x7d\x7f\x70\x69\xfe\xa9\xd9\xfb\x0a\xf5\x66\x54\xb1\xcf\xbd\x46\x96\x99\xdc\xa8\x16\x4e\x6a\x5f\xa1\x1b\xdd\xc7\xf3\x22\xea\x91\x6a\xf9\x71\x94\x74\xa2\x5e\x35\x05\x43\x44\x43\xad\xd2\xd2\xa8\x2d\x5c\x2d\xc5\x15\x33\xaa\x62\x36\xac\xc8\x57\xaf\x06\xb7\x28\xa6\x72\x93\x23\xff\xc4\x67\x1b\xa3\x74\x67\xb5\xc9\x4c\xe7\x94\x57\x6e\x07\xef\x7b\x37\x34\x1f\xa2\xdf\x73\xde\xec\x86\xe0\x1e\x96\xe4\x30\x01\x5e\xd2\x07\x56\xa8\x67\x90\x7d\xcd\xd3\xcc\x12\x8f\x24\x3c\x62\x6d\x5c\x21\xd5\x54\x24\xba\xf0\x17\xb2\x06\xcf\x06\x31\xdc\x72\x67\x65\x28\xec\x43\x1d\x95\x29\x39\x48\xd5\xcf\xf0\x56\x8d\xa6\xbc\x2d\x68\x3c\xb7\xc6\x1e\xdf\x88\x7e\xa5\x6a\x04\x27\x61\x68\x8f\xec\x4e\xf9\xc4\x78\xbf\x29\xad\x98\xac\x00\x5e\xa9\xba\x11\xce\x9f\xda\x5d\x5b\x69\x34\xf9\xb3\x05\x95\x97\x41\x9f\xec\x71\xe4\xcc\xa8\x89\x84\x6a\x56\xe0\xb8\x13\x8a\x6f\x78\x9d\x2e\x6a\x4d\x14\x53\x8a\x7c\xd0\x74\x24\x54\x1f\xad\x08\xd8\x9f\x1a\x84\xf2\x4a\xde\x36\x94\xa1\x14\xf9\x5d\x13\xa1\x6a\x98\x3e\xb7\x65\xdc\x5a\x64\x5c\x95\x2f\x48\xc8\x30\x8d\x29\x22\xf3\x19\xe6\xd8\x42\xba\x5c\xb6\x55\x5f\x8d\x15\x63\x5c\xbd\xd9\x5a\xf3\xb4\xf5\x02\x82\x16\xe2\xd9\x54\xed\xb6\x78\xf0\x4c\x4b\x15\x13\x0a\x66\xf6\x77\x94\x16\x5d\x67\x33\xe5\xae\x2f\x52\x2c\xad\xc0\x7f\x83\xf0\xcf\x54\xfb\xb9\xb0\xa9\xeb\xb0\x5a\xee\x29\x2c\xb8\x9b\x9a\x06\x29\x8e\x0d\x52\xef\xad\x1f\x59\x74\x8f\xa7\x9a\xeb\x4e\x54\x84\x71\xa6\x2e\x7a\x16\x4e\xd3\x52\xb1\xc9\x14\x35\x8c\xb0\x50\xec\xbc\xeb\x89\x17\x58\x2b\x74\xcc\xb4\x1f\x22\xb4\x12\xff\x16\xaf\xcb\x85\xda\xed\xba\x6b\x95\xc3\xd6\x96\x6b\x63\xa2\x97\x3e\x52\xc1\xca\xc5\xc0\x28\xc5\x5d\x66\x1c\x41\x94\x98\xc2\x7d\xf2\x5c\xb1\x25\xef\xaf\xd2\x35\x5c\x2a\xbc\xd2\x6b\x95\xae\x23\x0a\x2b\x85\xee\xa1\xf8\xf2\x4d\x97\x79\x5d\xda\x2e\xad\x6c\x97\x56\xe9\xba\xad\x47\xe7\xea\xdf\x74\xf0\xbc\x46\xbd\xcf\xb5\x9a\xb8\x5b\xca\x1d\x1e\x3d\x4e\xcf\x22\x3a\x65\xd1\x67\x47\x2a\x9c\x29\x56\x48\xb4\x3e\xa3\x2c\xcb\x4b\x5d\xae\x15\x85\x53\xc5\xf6\x8a\xc2\x95\x62\xd1\x61\x68\x35\x62\x6c\xdd\x12\x55\xa6\xe8\x55\x4e\x28\x85\x23\xc5\xce\xd4\x78\xbd\xaf\x14\xb6\xe7\xca\x68\xcf\xab\x70\x1c\x15\xd2\xbd\x28\xf1\x57\xf4\x9b\x71\xf4\x72\xb3\x5c\x46\x49\x93\x5c\x23\x7b\xd7\xaa\x94\x96\x94\xe8\x08\x5e\xca\x68\x72\x12\x62\xb7\x5a\x94\x72\xaa\x28\x1d\xcb\xe4\x4a\x8d\xd7\x84\xd3\xe2\x5a\x28\xc6\x88\x66\x36\xa5\xdd\xf3\xcd\xb9\xf4\x71\x3e\xae\x80\x20\xd1\x39\xbc\xc2\x21\x6e\xf3\xe2\xb8\x6a\x31\x62\x0b\x60\x8e\x7a\x47\x6e\x46\x69\x2f\x9a\x46\xf9\xe8\x4c\xed\x76\xdc\x90\xbd\x1b\xe1\x2b\x77\xe0\xbe\x52\xb5\xbb\x5d\xdd\x1d\x10\x8a\xa9\xbe\xc7\x18\xf0\x50\xed\x99\x81\x17\x7e\x29\x1d\x21\x3b\x9c\x72\x83\x51\xe8\x78\xdd\xf7\xc4\xe4\xf0\x49\x35\xae\x1c\x3c\xd9\xaf\x4b\x2c\x48\x97\xd4\x1c\xa6\xf8\xfe\x15\xab\xd1\x53\x39\x53\x5a\xbb\x21\x12\x39\x96\xbd\xa8\x83\xf7\x33\xf4\x22\x21\x2f\x83\xd1\x4f\xb5\xe9\x8f\x76\x81\xc2\x7d\xd7\x01\x61\xb8\xc6\xeb\x1c\x29\x5c\xa8\xa6\xcf\x3b\xbc\x56\x6d\x38\xb0\x64\x28\xe2\x98\x7c\x54\x7d\x2c\x65\x97\xcb\x6e\x77\xa1\x26\xf7\xd5\xd4\x3e\xd3\x1c\x8e\xf7\x9a\x78\x53\xaf\xaf\xe2\x4e\x5a\x2c\x9e\x63\x35\xdd\xed\xcc\x24\xfa\xaf\xff\x2a\xca\x4d\x77\xbb\x8f\x6a\x62\xa7\x8f\x4e\x73\x78\xde\x04\x14\x3a\xe6\x94\xeb\x4f\x8f\x39\xf9\x48\x24\x9d\x58\x22\x7c\x32\x9c\xd2\x84\x13\x59\x31\xe8\x0d\x41\x83\xbd\xe2\xd3\xc1\xb3\x18\x92\x8a\xe3\x8f\x24\x84\x4d\x41\x84\x98\xc3\x4b\xc5\x1a\xa4\x82\x3b\x29\x1b\x5b\xc0\x59\x8f\xa9\xf5\x9a\xcf\x03\xd7\xa4\x79\x66\x91\x3e\xcf\x47\xc4\xf4\xf9\xa7\xb5\xd2\x26\xab\x16\xab\x5b\xa9\xc0\x0c\x50\xb1\x0f\x0b\x58\xc3\x9c\x09\xee\x02\xa2\x8e\xef\x24\xce\xfa\x55\xd0\x94\x19\xe7\xf0\xd2\x4a\x23\x91\x19\x7b\x63\x81\xd4\xb2\x48\x8e\x11\x1d\x06\xe3\x4c\x84\xec\xe9\x92\xbb\xbb\x78\x5f\x2b\x32\xa3\x6e\xe5\x66\x6c\x00\x1b\xb6\xb1\xbc\x86\x77\x8c\x1e\x6d\x7e\xcd\x46\x59\xaf\x47\xc5\x82\x90\x25\x53\xe3\x39\xf9\x48\xd6\xcc\x4c\xb2\x29\x42\x78\x8d\x10\x9e\x13\x4c\xa0\x71\xbc\xac\x2f\xd7\x80\xde\xab\xbe\xe3\x9c\x74\x87\x34\x4f\xd9\xac\xf4\x33\x56\x9a\x2c\x58\x8a\x91\x7f\x47\x5d\xb2\x66\x0b\xf7\x29\xa5\x14\xfd\xda\x47\x55\x6f\xe3\x02\x07\x2d\xd9\x73\x45\x52\x98\xc3\xda\xb9\xc7\x83\xc2\x0e\xfc\x0b\x7d\xa0\x38\x5f\x37\x99\x8f\x70\xd2\x1d\xa0\xa9\x37\xa5\xf0\x74\x6f\x29\xbf\x55\xac\x3b\x1c\x05\x6f\xfd\x5b\x8a\x0d\xe0\x81\x72\xd6\xcd\xfb\x58\x68\x6b\x47\x91\x74\xbb\xb7\x54\xaf\x97\xe7\xe0\x12\xab\xd9\x6c\x6d\x83\x3c\x1f\x3d\x50\x93\xa7\xaa\xe5\xb2\x50\xa4\x07\x73\x70\xfb\x73\xa1\xd5\x8a\x3c\x50\xb5\x50\xcc\x6e\xc6\xef\xec\x87\xc5\x7b\xa1\xe0\x91\x82\xbf\x15\xdc\x53\xfb\xb7\x82\x76\x79\x1c\x77\xdf\xaa\x70\x01\xe7\xd0\x13\xbf\x95\x81\x69\x34\x62\x68\xef\xd4\x17\x07\x2b\x71\x40\x79\x0e\x86\xe8\x16\x99\xbd\xcc\xe1\x71\x13\x05\x7e\x56\xec\x36\x11\xeb\x73\x25\xf9\x4e\xac\xd5\x7c\x27\xd6\xe9\x9c\xf6\xbf\xb3\xe4\x15\x77\x06\xe8\xc1\x78\xe5\x1e\xa7\xf0\xce\xa2\xe2\x60\x98\x06\x4f\xec\x5b\xc6\xcd\xd3\xd5\x8a\xcf\x45\x6a\x38\xfc\x61\x53\xd0\x0b\xa0\x4c\xfb\xa0\x2a\x57\xd4\x3e\xb3\x2f\x5e\xc5\x7c\xff\x3c\x95\x92\x2f\xe1\x37\x9b\xf6\x20\x44\x4d\xfd\xdd\x4e\xeb\x7b\xc4\x97\x7f\xee\xa1\xae\xf7\xaa\xe1\x85\x6e\xb7\x9e\x47\x0d\xef\xd5\xc4\x4c\x47\x5e\xde\x8b\x2f\xc0\x09\xb5\xd0\x68\x65\x8a\x2b\x30\xfc\x53\xa1\x63\x01\xf0\x7a\x46\x9b\x8c\xa2\x56\x9a\x83\xac\x7f\x52\x7d\xcb\x65\xfa\x71\x10\xd3\x8b\x22\x78\xa7\x0a\x23\xbb\x5e\x74\xfb\x76\xd4\x7b\xa7\xd0\xc0\x8e\xe6\xa3\x27\x2a\x8e\xff\x50\xbb\x1d\x79\x52\x1f\x50\x23\xe4\x4e\xcb\xa5\xc8\x72\x44\x79\xf3\x52\x64\x89\x97\x22\xfb\x51\xbc\x57\x93\x5e\xef\xf7\xfa\x4a\x69\x8f\xc3\x67\x92\x47\x65\xd3\xd4\xd3\xcf\xe1\xce\x7c\x9a\xc3\x0b\x45\x7e\x57\x14\x7e\x57\xb9\x9d\xc5\x6a\x37\xab\x20\xcd\x21\xd8\x9e\x23\x41\xf4\x41\xd1\xf1\x8b\x7a\xee\x0f\xaa\x8c\x26\x6e\x04\x3a\xda\x25\xbf\xa9\x38\xfe\x4d\xf5\xa5\xba\x6a\xe6\x76\xa9\x45\xc6\x67\x2a\x8e\xbb\x9f\xd5\x98\xfc\xad\x18\x79\xe4\x2e\xf9\x79\xa6\x28\x5a\x58\xde\x81\x47\x0a\x1f\x86\x7d\x25\x03\x0f\xcd\x05\xbc\x50\x16\x6d\xff\x5d\x9b\x12\xbb\xf9\x86\x94\x26\x5d\xb5\xa7\x4a\xde\xed\x5a\x38\xdd\x4a\xd1\xdd\x4e\xf5\xc5\xca\xb6\xe3\x3c\x95\xb3\xdd\x4e\x10\x29\xa8\x2d\x87\xf6\x49\x8c\xb1\xca\x5c\xdb\x01\x45\xfb\x76\x52\x91\x90\x9d\x43\x12\x39\x93\xea\x88\xd6\xcc\x95\x1e\x20\xf7\xc2\xa5\xbf\x82\xa8\x92\x8d\x7e\xc5\xe2\xea\x81\xa9\x5d\xf3\xe3\xe8\x76\xbf\x7a\x6b\x44\x67\xd5\x7d\xcb\x82\x16\x06\x34\x4f\xc8\x0b\xc5\xa4\x80\x7d\x90\x90\xc8\x83\x33\x02\x2e\xa0\x3b\xa4\x9e\x25\xd7\x02\x94\x00\x21\x20\x15\x30\x13\x90\x09\xd8\x08\x58\x0a\x58\x08\x66\x5b\x48\x9e\x28\xe7\xf1\x93\xfc\xa1\x72\x58\x0b\xbc\xed\x74\x2e\xd8\x02\xed\x22\xe0\x5c\xd8\xad\xee\xc3\x81\xbd\x3a\xc5\xa0\x82\xda\x42\xf7\x3d\x3f\x7d\x26\x4c\xf3\x0b\x5c\x8a\x0a\x9e\x58\x89\x0a\xcd\x77\x2d\x58\x6d\xd5\x5d\x0a\x0a\x67\x82\xad\x05\x51\x10\xfd\xbd\xe1\x1b\xfe\x42\xcc\xb4\x32\x69\x76\x11\x51\x38\x15\xec\x4c\xc4\xf1\x99\x70\x47\xd4\xe8\x54\xec\x76\xa4\x2a\x18\x2b\x6c\xa3\x51\x36\x78\xed\x3c\x3a\x2f\x45\xdf\x99\x84\xa2\x4d\x0a\xff\x24\x0c\xa1\x23\x25\x46\x74\xcb\x99\x12\xfd\x85\x04\x25\xec\x03\x9e\x97\x16\x53\x5b\xdc\x52\xa0\x58\x77\x14\x28\x31\x4e\x05\xa1\x89\x10\xcc\x6f\x2c\x93\xe7\x95\x17\xac\xd9\x72\x9b\x84\xe6\x70\x6d\x33\xd7\x3a\x25\xca\x8d\xa3\x05\xcd\x93\x73\xe1\x37\xc3\x4c\xb0\xee\x00\x32\xd1\xb4\xce\x3e\xe6\x9f\xcc\x4b\x35\xe7\x24\x8a\x28\xd8\xad\x72\x2e\x6c\xc9\xbe\x72\x20\x25\x99\x80\xed\xec\x3c\xd5\xe9\xcc\x70\x8d\x11\x29\xf0\xa2\x8f\x7a\xb3\x99\x70\x1a\x26\xdb\xc8\x4c\xe4\x34\x59\x89\x38\x5e\x89\x20\x42\x1d\x93\x8d\x60\xe5\x6b\x08\x07\x03\x4b\xc1\x36\x02\x85\x94\x8d\xfa\x96\xfe\xfe\x97\x8d\x00\x3b\x0a\x9a\xd4\x3f\xcf\x8b\xeb\x61\xf0\x2b\xae\xb3\x2b\x01\x47\x02\x5e\x09\x38\x14\xf0\x50\x30\x3b\x61\xfb\x94\xdf\x76\x21\x13\x03\x78\xfc\xb9\x3e\xe4\x23\x81\xf6\x1b\x0e\x6c\x8c\x53\x50\x76\xa6\x95\x60\x1c\xec\x34\x50\x10\x82\xf1\x1c\x3e\x89\xfd\xc0\x88\x20\xf7\x05\x54\x35\xc9\x93\x8f\x46\x5d\xca\xf7\x2b\xc6\x11\x72\x9f\xd6\xbb\x97\xce\x83\x4c\xa3\x53\x89\x0c\x12\xd1\x11\x67\x06\x24\xd3\x85\xc4\xd8\xc3\x91\x29\x4e\x78\x91\x84\xbe\xb7\x0a\x69\x66\x38\x11\x6c\xdb\x1a\x1d\x09\xdd\xa6\x84\x3b\xa9\x3e\x8a\x7d\xc2\xe2\xa3\xdd\xe7\xd7\x84\xbb\x78\x2c\x95\xeb\xd0\x59\x49\xeb\x73\x4f\x6d\x9c\x88\x3e\xde\x89\xe2\x7d\x69\x06\x68\x0a\x87\x1d\xa3\xb6\x5b\x85\xcd\x4c\x0e\xf7\xeb\xd0\x2b\x89\xfe\x2d\x1a\xb3\x25\xdd\xa1\x0f\xbe\x65\xec\x59\xdb\x88\x96\x14\xf2\x84\x00\x5d\xc6\x12\x27\x17\x05\x86\x78\x2d\x1a\xd4\xc8\xb1\x60\x91\x07\x63\x04\x6f\x04\x33\x18\x71\x11\x9e\xe3\x93\x2d\xf1\x32\xa4\x19\xae\x1f\x29\x4d\x8e\x05\x85\xa7\x82\x1d\x2a\x78\x6b\x11\x46\x31\x23\x70\xcb\xbe\x86\xed\x02\x0f\xaa\xa8\xe5\x85\xc0\x5b\xf5\x17\xdc\xe0\xad\xdb\x8f\x04\x42\x03\xfe\x16\xec\x91\x80\x7b\x0d\x54\xf3\x40\x50\x78\x2c\x58\xb7\x4b\x6e\x89\x38\xbe\x25\x82\x5f\xc4\x25\xde\x7f\xa5\x8a\xf8\x74\x98\x40\xe1\xb3\x60\x17\x86\x1c\x0b\x68\xdc\xb9\xde\x25\xb7\xc8\x53\x41\xbb\x85\xd0\xe1\xa9\xa0\x14\xbf\xfc\xf4\x13\x63\xec\x09\x2f\xef\x63\xb7\xb9\xef\x89\x2a\x4f\x5e\x9c\x52\x1e\x34\x6f\x70\xbd\x08\x25\x5d\xa3\x85\xc5\xbe\x58\x10\x77\x5d\x7e\x1c\xdf\x96\x18\x6b\x03\xed\x1f\x6f\x3b\xf2\xcd\xb6\x58\xa3\x39\x0d\x7b\x5a\x6e\xeb\x21\x85\x46\x24\x52\xd2\xb8\x75\xa4\xfe\x4a\x83\x99\x6d\x3d\x8a\x0e\x5e\xbd\xff\x5a\x4c\x19\x87\x2e\x31\x4d\x55\x3a\x16\xac\xf1\x09\x76\x5b\xbc\x13\xec\xb3\xd8\xed\xba\xf7\x54\x9d\xe1\x7b\x2a\xbc\x78\x70\x2f\x38\xbd\xeb\x00\xa5\xf0\xa4\x65\x6b\x8f\x0a\xb7\x6e\x17\x9a\xaf\x85\x67\x43\x93\xc7\x73\x2e\x2d\xef\xc2\x73\xf8\x43\xb4\x47\x4c\xe8\x4b\x65\xd0\x95\x87\x6e\xcb\xe7\x20\x46\xc7\x9b\x06\xb8\x8f\xce\x3d\x7a\x58\xbf\x8e\xbb\x88\xa4\xe4\x62\x2d\x6e\x38\x08\x36\x64\x2c\xc4\x2b\x4d\xd9\x60\x14\x5c\x1e\x7f\x4d\x47\xfe\xf2\x12\xc7\x88\x32\x3d\x49\x7b\xbd\x29\x2c\x98\x18\x2f\xfb\xea\x22\x59\xf6\x17\xa9\x58\xc2\x9a\x2d\xc3\x64\xc1\x1c\x9f\x51\x36\x78\xce\x96\xfe\xdc\xc2\x43\x69\x31\x26\x16\x07\xde\x41\x01\xa5\x0e\xeb\x24\x8e\x7f\x17\x2e\x10\x70\x25\x91\x0d\xbd\xe3\xc3\x62\x3c\x63\x2a\x21\xe7\x71\x7c\x1e\x4e\x27\x98\xb1\x05\x51\x14\xce\xe3\x98\x9c\xfb\xc3\x10\x36\xac\x3b\xa0\xf6\x13\x63\xcb\x80\x1f\xc6\x73\xf2\x56\x90\xb0\x67\x0f\x66\xe7\xa9\x90\x9d\xd9\xf5\xcc\xf2\xb9\x34\x21\x19\x7b\x22\x2c\xa3\x3b\xce\x1c\xd2\x9f\x59\x26\x9b\x26\x6b\x9b\x96\xcc\x89\xaa\x9c\xa0\xe7\x71\xdc\xdd\x60\x17\x5c\x6b\x18\x32\x37\xaf\xc0\xd8\xd2\xc8\xd5\x69\x18\x82\x8c\xe3\x6e\x6d\x94\xcf\x44\xf0\xf6\xcf\x73\xf8\xb0\x3f\xab\x38\x6f\x20\x46\x8f\xc5\x98\x10\xcd\xea\xbb\x99\x44\xf8\x67\x89\xb0\x70\x2a\x70\xd0\x85\xce\x01\x34\xde\xb8\xe7\xb2\x1a\xe8\x0e\xd1\x6c\xbe\x81\x00\x88\xa6\x34\xd1\x6c\xeb\x2b\x48\x38\xb8\xe2\x89\xcc\x81\x08\xa6\x26\x91\x92\x51\xcf\x4c\xe9\x58\x10\x4d\x93\x68\x23\x5d\x20\x84\x79\x31\x88\xc8\x5d\xff\xd7\x30\x50\x45\x9c\xad\x70\xa3\xa9\x25\x1f\xe1\x65\x58\x88\x5a\xe3\x98\xa0\xde\xba\xc1\x37\x8c\xfd\x67\x62\x68\x52\x3c\x02\xa7\x34\x27\xd1\xdb\xd0\x66\xc7\xf7\xb2\x53\x36\x8e\xb1\xb0\x9f\x35\xcf\x96\x8b\xe2\xc8\xde\x8b\xbc\x8c\x37\xab\x38\x32\x4b\x2c\xc8\x6f\x02\x4f\x1f\x22\xd9\xfd\xfa\x7e\xb8\x27\xc6\x0f\x84\xbf\x3b\xa2\x18\xf3\x9b\xb2\x59\x0d\x86\x26\x1f\x04\x69\x03\x08\xd8\xb3\xd8\x6e\xf6\xea\xda\xbd\x27\x76\x3b\x6c\x6d\x7c\x27\x19\x82\x1f\x62\x90\xc1\x48\x1f\xba\x8f\xd2\x1c\x7e\x6b\xe5\xfd\x86\xde\x20\xb6\x58\x39\xdd\x70\x57\x61\x0e\xbf\x7f\xdb\xf0\xab\x43\x2a\x2a\x7a\xe2\x3a\x1f\x85\xe1\x14\x1f\xce\x8b\x0f\xe0\xe1\xe5\x6c\x70\xde\x37\x17\x69\x45\xfd\x58\x7c\x50\x16\x1b\xa3\x71\xba\x85\x44\x0e\x7f\xb6\x15\xe2\x28\xb5\xd9\xed\x88\x7b\xb0\x04\xa3\x46\xeb\x6e\x4d\x43\x93\x4c\x82\xc7\x40\xec\x0e\xfc\x81\x7b\xc5\x2e\x62\x9a\x83\x49\x5b\x6a\x74\x38\xd0\x56\x16\x6a\xaf\x56\x8a\xe8\x46\x2c\x88\x61\x25\x41\x54\x41\x05\x9d\x59\x2a\xff\x13\x95\x83\x1e\x69\xcd\x3b\xc2\x64\x7c\xb9\x88\xc2\x15\x62\x4f\x04\x91\x74\xa4\xc6\x0d\xd4\xe9\x05\x20\x4e\x78\x33\xcc\xb1\x19\x2f\x1b\x94\xf0\x5e\x10\x93\x02\x4a\x77\xa9\x7d\xf9\x53\xf8\x97\x80\x48\x24\xdd\xfe\x29\x50\xfc\x8b\xb7\xa0\xe5\x16\x09\xed\x8f\x7e\x58\x8c\x7e\xb8\x57\xb2\x68\xd9\xd7\x90\x8f\x3e\x5b\x2a\xf3\x69\x7d\x1d\x9d\x78\x4d\xc5\x53\x01\x96\x04\x51\x18\xa4\xfb\x4a\x94\xf1\x0a\xbc\x1a\x94\xbd\x11\xfe\x15\xad\x2a\x89\x1f\x00\xc6\x86\x2e\x46\xe0\xde\x2a\xb8\xf0\x4f\x11\xc2\x47\x23\xb1\x47\xae\xea\x8d\x3f\xf7\x9f\xdd\xad\x11\xc7\x02\x7c\x97\x21\x20\x47\xfb\xec\x96\xb3\x7d\x2a\x30\x68\x32\x99\x42\xb1\x22\xed\x17\x77\xfd\x4c\x20\xce\x3c\x55\x4d\x73\x5a\x4a\xa3\xd9\x43\x45\x9e\x8a\x8a\x74\x7a\x6b\xcf\xcd\xa4\x05\x3d\x39\xa9\x2a\x7b\xe9\xc7\x0b\x29\x7b\x24\x08\x91\xec\xa9\x28\x15\x4b\x44\xb1\x8f\xee\x73\x2d\xf2\xde\x6e\xe7\x74\x1f\x44\xb3\x8f\x44\xd1\xc9\x63\x35\xa5\x63\x99\x28\x6e\xd1\x69\x21\xe9\x48\xfb\xea\x82\xb5\x29\xa9\x77\x3b\x03\x29\x1e\x92\x6d\xd7\x98\xf2\x38\xe6\x90\xfa\x33\x92\xb9\x5d\xeb\x5e\xfc\x80\x41\xf8\xad\x6f\x57\xb7\x28\xcf\x1b\x2f\x76\xa1\x30\xe8\x7a\x67\x26\x1e\xc7\x7f\x78\xd0\x23\x97\x0c\x69\x49\x26\xcf\xea\x77\x7c\x35\x6e\x5e\x47\x3a\x28\x70\x81\x18\xb6\xf5\x68\x9f\x1f\x45\x26\xe4\x4a\x80\x5b\x34\xb4\xce\xa0\x98\x3a\xf7\x10\x36\x42\x83\x85\x08\x5b\x82\x23\x1f\xd1\x5f\xb0\x47\x37\xd8\x83\x30\xf6\x54\xec\x76\xf6\xff\x95\x18\xe3\x4d\xca\xb6\xc9\xe4\x6f\x64\x2f\xda\xec\xf6\x0f\x55\x1c\x93\x43\x4b\x69\xd7\x34\xec\x5c\x02\x37\xa4\x9a\x08\x91\x4d\x8d\xf6\x7c\x2c\x4a\x0d\x7f\x85\x9d\x79\x2a\x9a\x41\xad\x0f\x45\xd8\xeb\xfe\x24\x77\xb0\x0b\x97\x4c\x56\x54\x43\x6d\xbd\x7c\x21\xe2\xf8\xd8\x90\xed\xd9\x52\x9d\xa6\x4b\x17\x28\xa2\x72\xbb\x56\xa1\x89\x1c\xe4\xb0\x45\xfa\xbf\x6d\xc6\x3e\x0a\xf2\x54\xc0\x0b\xe1\x45\x64\xaa\x12\x85\x16\x31\x8a\x8b\xf6\x5b\x36\x71\xa5\xd3\x75\x35\xce\xaf\xc8\x61\xeb\xb1\x60\xf2\x54\xe4\x14\x34\x27\x88\x27\x70\xcd\xec\x33\xb6\xca\x5d\xbc\xc0\x2e\xfa\x8b\x51\x1a\xc7\xdc\x52\x35\x93\x4f\x6a\x1a\xc7\x92\x70\xf8\xa4\xf6\xa3\x1d\xdf\x70\xad\xd8\xb9\xc8\xf2\x9c\xe6\xc8\x14\xbd\x42\x26\xc7\x3e\x55\x34\xb3\xc7\x02\xb7\x7c\xb3\xb3\x6e\xf1\xb4\x78\xb2\x3e\x0a\xc8\x2b\x70\x8f\x7e\x9d\xb9\x29\x2a\xd6\x33\xf0\x62\x1f\xe4\xdf\xd6\x1e\x2e\xe2\x1b\x60\x5f\x44\x7b\xf9\x4a\x55\xef\x6c\x55\xe9\x72\xd9\xd2\x6f\x1f\x45\xf7\x91\x70\x31\x2b\x0a\xde\x16\x14\x3e\x23\xe1\x2c\x9a\x34\x8a\x27\xb2\x38\x29\xac\xc7\x28\x08\x4b\x74\xa6\x6c\x00\x33\x36\x1c\xbd\x54\xcd\xe8\x64\xee\x0a\x9c\xb4\xd7\xb3\xb4\xf1\x70\x24\x1c\xca\x08\x12\x92\x59\xaf\x07\xfe\x82\x30\x8b\xc8\x5b\xdc\x4f\x36\xbb\x1d\xd9\x20\xda\x99\x64\x53\x66\xe0\xe0\x60\xb6\xdb\x69\x22\x2c\x73\xe3\xae\x96\x2a\x93\x2a\xe6\x88\x22\xd0\x7e\x8a\x78\x19\x57\x8d\x63\xd7\xe9\xac\x2d\xb8\x47\x0b\x50\x10\x10\xaa\x0d\x10\xaa\x0e\x88\x96\xb1\xab\xe6\xc8\x4a\x28\x6b\x7f\x1b\x4d\xe8\xaf\x0a\xfd\xd5\x44\xed\xf7\xd7\xcb\x80\x78\x0a\x32\x05\x9d\x82\x4a\xf7\x9d\x4c\xea\x32\x7f\x10\x29\xab\x85\x59\x87\x34\x6d\x8b\x64\x6f\x90\x65\x60\x83\x11\xbf\x7b\xe7\xc7\x9f\x46\xbd\x1e\xa7\xc6\x7b\x78\xff\x23\xea\x11\xc2\xef\x0e\x7f\x1a\x47\x03\xa7\xb9\xad\x04\xb8\x1b\xfe\x84\x7e\x9e\x15\x27\xda\x8a\x2a\xd7\x32\x47\x69\x83\x42\x2c\xe3\xe1\xa0\x19\x37\xba\x16\xb8\x31\x64\xe3\x96\x3b\x54\x13\x34\xad\x1e\x8c\xf4\xdd\x22\x3a\x6f\xaf\xa7\xe9\xcd\x36\xa3\x15\x8b\xbf\x2c\x65\x5b\x0c\x51\x74\xac\x7c\x68\xd4\x59\x0a\x69\x96\x89\xb3\xe6\xa9\xec\xcb\x34\x0c\x60\x5b\x2e\x24\xab\x58\xde\x4d\xe4\x94\xf1\x89\x9c\x82\x71\xf7\x92\xc1\x4c\xad\x4e\x85\xe4\xad\x55\x4f\xca\xcb\xc8\xf1\xc0\x99\xa9\xd5\x3a\x6d\xe0\x91\x8a\x86\x63\xab\x4e\x3f\x26\x5b\x95\x98\x1c\xd6\x5a\xad\x93\x48\x45\xf9\x14\xa4\x9d\x23\x07\x0c\x5e\x05\x46\x85\x83\x9e\xe8\x29\x5e\x1d\xa6\x4e\x3f\x4e\xf0\xa0\x59\xdb\x3d\x59\x1d\x17\x5a\xfa\x0e\x46\xb3\xbb\x69\x59\xc5\xac\xd8\x9e\x93\xd9\x14\x36\xcc\x6e\xb1\xd1\x5e\x78\xcb\x4d\x11\x1f\x78\x13\xc7\x68\x02\x2c\x0b\x13\xe0\x0d\x46\xbc\xf7\xc1\xf5\x6c\xe7\x85\xeb\x78\x96\xe3\xf2\xb5\xc9\x1b\x4a\xf3\xbd\x68\x2f\x6e\xd4\x23\x53\x98\xae\x8c\x68\x79\x21\xbc\x5a\xa3\xd7\x30\xc7\xd1\x70\x37\x1a\xd4\x33\xa7\x44\xd2\x8a\x29\x83\x05\x8b\x62\x83\x91\x2a\xe3\x63\xf7\x7a\xaa\x5c\x23\x72\x62\x0f\x88\x10\x50\x69\xa2\xa6\x74\x54\xab\x93\xe9\x3c\xcf\x51\xc2\x98\x83\x8b\x24\xb0\x17\x73\x33\xf8\xe4\x97\x8e\xe7\xbd\xdb\x67\x10\x75\x9c\x86\x3a\x12\x99\x3a\xf8\xf9\xe7\x1f\x7f\x39\x18\x62\x38\x8b\x20\x41\xd4\x95\xc8\x93\x93\xc1\xc1\x2f\xe9\xc1\x62\xba\xbd\x93\xdf\x3e\x13\xb0\x91\x3c\x9b\xa5\x6b\x5e\x8b\x16\xd7\x12\xc6\xa0\xaa\x9b\x0c\xb5\xe6\x39\x38\x07\xa9\xbd\x6e\x8a\x05\x41\x63\x99\xa0\x1d\xaf\x87\xb1\x64\xe8\xfe\x1f\x65\xd7\xab\x53\xb5\xac\xaa\xbb\x34\x3b\xc2\xb4\x1b\x5d\xd5\x0c\x4d\xf6\x6e\x42\x30\xe8\xe8\xe7\xd1\x80\xa1\x14\x6e\x82\x82\x1b\x28\xa9\xda\xc7\xfe\x63\x53\x80\xe3\x07\x04\x47\x8b\x91\x79\xf4\x8f\x3b\x3f\xfd\xe3\xce\xf7\x51\x0f\x1d\xab\x9e\x4a\x43\x42\x20\xc9\x3b\x14\x86\x3f\xd1\x5e\xf4\x8f\xef\xef\x45\x78\x17\x45\xb1\xfe\xa3\x08\x04\x1b\x8c\xc4\x5d\x5d\x2e\x84\x22\xc6\x86\xc6\xe0\x22\xf7\xd5\x9c\x1f\x1a\x22\xe8\xe8\x87\x1f\x19\x63\xe9\x6e\xf7\xc3\x4f\xee\xff\x17\xff\x3e\xbc\xe3\x13\xd2\x5f\xd9\x0f\x3f\xc7\x71\x7a\x97\xfd\xf8\x4f\x7c\xfb\xe9\x47\x7c\xfb\x65\x80\x6f\xbf\xfc\x13\xdf\x86\x77\xee\x8c\x55\xcf\xd7\x8e\x35\x27\xe9\xdd\xe1\x9d\x9f\x6d\x62\x9a\x4e\xd2\x69\x92\xde\xbd\x33\xf8\x21\xbc\x0f\x7f\xb9\xb3\x4b\x7f\xfd\xf5\xa7\x69\xcf\xbe\xdc\xf9\x79\xf7\xd3\xf7\x31\xe6\xf9\xf1\xc7\x3b\xbf\xfc\x84\x15\xff\xf8\xcf\xef\x7f\xf8\xc1\x67\xbf\x73\xe7\x07\x9b\x7d\x78\xa7\xc8\x6f\x0b\xc7\x3f\x7d\xdf\x28\x4f\x44\x8f\x0d\x21\x65\x3f\xfd\xf8\xe3\xf7\x3f\xf5\x08\x19\x0e\xee\x7c\x1f\xa7\xf4\xee\xdd\xe1\x60\x87\xcf\x8d\xd1\x53\xf0\xf5\xff\x30\xc0\xfa\x7f\xae\xd6\x3f\xbc\x53\x6d\xa0\xb5\xc1\x62\x2f\xab\x2f\xc6\x18\x77\x01\x23\xf7\x03\xb1\xd3\x38\xee\x76\x49\x23\xce\xf8\xbf\x1c\x40\x1c\x03\x3f\xbb\x40\x21\x5f\x0a\x37\xed\x72\x7c\x8b\x4b\xa6\x45\xe3\xab\xf4\xfa\x94\xbf\xa8\x19\xdd\x79\xa5\x81\x48\x51\x83\x5e\x9e\x60\x05\x3a\x36\x65\x5c\x7e\x36\xa4\x1e\xe1\x79\x17\x8f\xca\x89\x14\x36\x84\x6b\xa7\x19\xa8\xb8\x22\x4a\x28\xf7\xce\xa8\x2d\x8e\xbd\x0c\xdd\xe1\x34\xa8\xbc\x25\x2d\x0c\x6f\xba\xbc\x05\xe2\x41\x68\x3e\xe1\x20\xa7\x23\x82\x5e\xba\xb5\xc3\x77\xb7\xd3\xfd\x74\xb9\x54\x57\xaf\x03\x6c\x32\xba\xdb\x75\x55\xea\x20\xb3\x67\x87\x86\x02\x61\x82\x77\xdc\x74\x07\xc5\x6a\xe0\xf9\xd7\x3b\x50\x1c\x85\x32\x88\x37\x8a\x40\x3c\x38\xa4\x38\xee\x22\x86\x8f\x63\xa2\xd8\x2c\xc5\xc8\xc6\x14\xfc\x27\xfc\x32\x26\xb2\xc5\x6f\x40\x82\xbf\x86\x38\x0d\xe4\x96\xa2\x21\x3a\x2d\xc7\x3b\x21\x5b\x42\x3b\x8b\x38\x96\x37\x44\x7c\x56\x53\x66\x88\xc0\x49\x49\x0a\x28\xe7\x18\xfe\x17\x3f\xe2\x6d\x43\xbc\x7e\x15\x8d\x6c\xa1\x1a\x78\x79\xf3\x84\x3d\x7c\x0a\x4a\xaf\xd2\xcd\xd0\x9a\xfd\x03\x81\x0d\xda\x04\x81\x0e\x71\x8a\xe6\x39\x6c\x52\x8f\x6a\xf7\xef\xde\x83\x65\xca\x7c\x08\xe4\x45\xca\xb6\x6f\x1e\xdd\x1f\xfe\xf3\xfb\x9f\x93\xc8\x3f\x44\xf0\xe6\xd1\xfd\xef\x7f\xf9\xf9\x27\x4c\xb1\x0f\x51\x0e\xeb\x94\x65\x69\xdf\xd1\x42\x64\xeb\x8d\x7f\x93\x45\xda\xf7\x59\x00\x03\x31\xfa\xeb\xa7\x43\x8d\x2d\x3c\xc8\x26\x0d\x57\x1b\x2c\x53\x0c\xc0\x9c\x17\xad\xb5\xe4\x2e\x0e\x8b\x3c\xcf\x61\x91\x52\x98\x7f\x9d\x7e\x3d\x4f\xd9\xf6\x54\xa7\xb3\x0b\x6e\xda\xdd\x5b\x7b\xd1\x64\x1a\xb9\x6b\xbc\xd3\x04\x1d\x1b\xd3\x08\x84\x9c\x8b\x19\xcf\xda\xc9\x3c\x5b\x24\xea\x71\xb4\xb3\x04\xcd\xd7\x3c\x35\xad\x35\xe7\x39\x5c\x36\xa9\xe7\x55\xda\x34\x42\xc4\x95\x01\xd7\x4d\x3a\x77\x95\x86\xcb\x59\xe0\xd2\x2e\xdd\x31\x4f\x26\x7c\x4a\x73\x38\x4b\x19\x06\x1b\xaa\xe2\xa0\x22\x4e\x33\x9c\xa6\x6c\x9d\x06\x6b\x6c\xb8\xb2\x14\xec\x7c\xfe\xfb\x86\xeb\xeb\xd7\x9a\x2f\xc4\xa7\xa4\x3b\x04\xdc\xa6\x0f\x94\xc9\xec\x8b\xf7\x6e\x4e\x22\xe7\xde\x1c\xde\x8f\xb8\x34\x42\xf2\xa5\xcd\x32\xe7\x4b\xb1\x12\x86\xeb\x24\x8a\xa3\x40\x3a\x20\xbf\x6f\x9f\x74\x92\xa5\x7d\xf7\xe8\x53\xde\x59\xb6\x23\x7b\x25\x97\xd7\xb6\xb4\x5b\x09\xc9\x69\x5a\xae\x89\x64\x9d\xf6\xcb\x05\x32\x39\x4d\xa7\x05\xc0\xbb\x43\xc8\x82\x47\xcc\x0d\x97\x0e\x74\xce\xd2\x12\xdb\x66\x17\x62\xfd\x72\xb3\x5c\xba\x92\x46\x8b\x99\xb1\xaf\x28\x1c\x16\xf2\x0c\x85\x8b\x47\x25\x6c\x03\x9a\x74\xb7\xd1\xd4\x0d\x12\xdd\x26\x3b\x87\x4b\xe6\xb0\xe6\xbe\xc8\x63\x36\xbe\x64\x33\x22\xe1\x92\x26\x97\x55\x1b\x3c\xdb\xd1\xf1\x25\x5b\x92\x4b\x1a\x56\x90\x8b\x64\x70\x99\x92\x4b\x8b\x87\x2e\xed\x6e\x09\x07\x03\xb9\x6c\x23\x57\x3a\x66\xaf\x46\xa4\x9b\x4c\x4e\xa9\x8f\x84\x05\x11\xa5\xe0\x4d\x97\x2f\x1d\xaa\x0a\x78\x3e\x8d\xe3\xee\x7a\x9c\x12\x09\x57\x61\x32\x34\xcc\x21\xba\xe0\xd7\x11\x4d\xe4\xe8\x92\x45\x51\xde\xe2\x82\x4e\xce\xd9\x25\xdd\xed\xf6\xee\x83\x38\xdf\xed\xa2\x53\xa5\x96\x3c\x95\xf5\xc4\x26\xf1\x87\x19\xc5\x99\x90\xa6\x96\x96\xa5\xe5\x39\x7b\x59\xdc\xc3\x96\x8e\x27\x0b\xb2\x1e\xcb\xe4\x86\x8e\xba\x88\xe1\x0b\x92\x92\xcb\xc6\x67\xe4\x64\x23\x4a\xa7\xc9\x64\x41\x64\xc8\xe7\xf1\xc1\x25\xa5\x2e\x62\xd5\x0a\xae\xd9\x04\x49\xfc\x42\x0c\x7a\x59\x84\xcf\xc5\xe4\x94\xcc\x28\x5d\xb1\x59\x19\x56\xfd\xac\xc6\xdd\x5c\xd2\xd1\x8a\x65\xe3\xb3\x7e\xa6\xb4\x21\x19\x4d\xce\x8a\x48\xfc\xa7\xff\x1f\x7b\x6f\xba\x1d\xb7\xad\x35\x0a\xfe\xef\xa7\x60\x21\x0e\x0d\x84\xa8\x49\x1e\xc3\x12\x54\x47\xb6\x65\x47\x89\x6d\x39\x1a\x32\x95\xea\xe8\x52\x24\x4a\xa2\xcd\x22\x2b\x1c\x34\xa4\xc8\xbb\x72\xbf\x9e\xfb\x11\xfa\x4f\xf7\x1b\xf4\xea\x1f\xfd\x02\xfd\x04\xf7\x7b\x84\x4e\xbf\x48\x2f\x6c\x00\x1c\xaa\x58\xb2\x93\x73\x72\xfa\xac\x73\x6f\xe2\x55\x22\x41\x0c\x1b\xc0\x06\xf6\x80\x8d\xbd\xd9\x60\x74\xbe\x3d\xaf\x18\xc3\x73\x89\x30\xd7\x6c\x3e\x39\x9f\xd2\x23\x76\x35\xb9\x9e\xca\xe0\x6a\x52\xc9\xda\x61\xec\x48\x66\x39\x60\x80\x08\xe3\x16\x94\x8a\xc7\xb1\x18\x0b\x62\x87\x76\x68\xe1\x6c\x8c\x7a\xc8\xba\xb6\xc5\xfe\x72\x2d\xf6\x17\x32\xba\x75\xf0\x2d\x4d\xf1\x11\x3d\xd8\x80\xb5\xa4\xf4\x67\x77\x5b\xd0\x03\x87\xad\x91\xda\xd5\x1d\xb1\xb9\x21\xb5\xaa\x97\x59\x4a\xd7\xcc\x01\x3b\xa5\x61\xc3\xb5\x33\x2a\x2d\x9b\x59\xaa\xa7\xc9\x34\x2b\xa1\xba\x4a\x6b\x53\x22\xeb\xaf\xed\x37\x9e\xf6\xe4\x47\x70\xd4\x9d\x46\x1b\xae\x3c\xb1\xb4\xa7\x36\xaa\x3c\xbf\x76\xf4\xf3\xa8\x6e\x45\x52\xe6\x30\x4d\xb5\xb7\xad\x24\xd6\xc4\x8d\xfa\x97\x76\xa8\x8e\x2f\xb9\xa1\x32\x18\xf2\xc2\x5d\x79\x23\x8b\xfb\xe9\x25\x8f\x0d\x68\x83\x1a\x55\xad\xd4\x88\x62\xa3\x72\x04\xa2\x6f\x5e\x55\xdb\xf3\x0a\xb8\x72\x47\x94\x63\xed\xa9\x2d\xae\xb1\x51\xd2\x32\x4f\x3b\x8c\x27\xe1\x87\x30\xba\x0e\x0d\x99\x49\x83\xb9\x88\xa3\x2b\xdf\xe3\x9e\x18\xbb\xb0\x6c\xa6\x90\x12\x5d\x73\x23\x0e\x85\x1c\x7c\xed\xa8\x9b\xbb\xda\xe8\xa0\xd5\xb3\x8c\xcc\x92\xe7\x57\x0e\xd6\x2f\x44\x72\x5c\xe5\x2b\x5d\x25\x3d\xeb\x3b\x4a\xda\x6b\x66\x19\xaf\x26\xd8\xd7\xce\x4a\x4a\x8d\x7a\x55\x97\x3b\x7a\x65\xe2\x58\x14\xa8\xe8\x5b\xa7\xf6\xa9\x24\x75\x7c\x8d\xc8\xb5\x41\xb6\x92\x67\xbc\x96\x62\x57\x88\xa7\x93\x6a\xa4\xb2\x06\x5c\x99\x28\x80\xab\x72\xd4\x3e\x68\xa2\xda\x06\x87\xfc\x34\xd6\x0f\xf6\xf5\x0a\xb5\x8d\xed\xd6\x09\x52\x1f\xcb\x72\xb1\x5d\xdb\x51\xd7\xe8\xf4\xe6\x86\xab\x4c\xe3\xf5\xa4\xaa\xce\x2a\x8d\xca\xe9\xb7\xa3\x1a\xbd\x8f\x57\x88\x7a\x2b\xc4\x8d\x2c\xe3\x95\x77\xd1\x52\x23\xa1\x46\xf9\xdb\x80\x2f\xbf\x8e\x6b\xcf\x50\x89\x7e\xa1\x62\x8b\xdf\x00\x49\x14\xa7\x63\xf9\x47\xfa\x73\x6b\x61\x2c\x5a\x1b\x5d\xcb\x36\x6e\x4b\x04\x30\xd6\x52\x41\x85\x34\x6a\x0b\xba\xa9\x16\xd4\x38\x66\x78\x40\xf5\x1b\xc1\x08\x09\x46\xff\xca\xc1\x65\x12\x98\x03\x94\x6f\xd2\x89\x23\x75\x14\x49\x5c\x93\xa8\x62\x7d\x16\xc8\x74\x40\x5e\x84\x46\xbe\x54\xab\x82\xda\xf3\xa5\xdc\x47\xfc\xd0\xb8\x74\xc6\x8d\x34\x9b\x8b\xfd\x53\xb2\x6c\xc8\x0f\x0d\x3e\xe6\x3d\xf5\x3a\x2e\xd3\x6d\x24\x79\x63\x64\x97\x49\x00\x92\xcb\x2e\x9d\x89\x3f\x1d\xc1\x3d\xd3\x06\xf5\x8d\x21\x80\x88\x18\x76\xd3\x0c\x25\x09\x96\xaf\x95\x8e\x26\x61\x83\x51\x52\xd7\xd3\x25\x92\x68\x65\x2c\x9c\x24\xd3\x51\x54\xcd\xaf\xd4\x36\x8a\xde\x4d\xb2\x69\x9e\xdf\x3a\xd8\xa1\x47\x0e\x16\x6f\x34\xa3\xae\x68\x68\x6d\x0e\x68\xad\x3c\x8d\xf4\xd2\x8b\xca\x25\x24\x9d\xfb\xa9\x01\x56\xa0\xd2\xa8\xb6\xc5\x44\x2b\x48\x1a\x55\xdb\x6b\x59\x5f\x6d\xa9\x44\x25\xd1\x51\xb7\x12\xb5\xd7\xd3\xa8\xda\x1b\x08\x9d\x31\xb0\x1d\x8a\x56\x37\x4b\x08\x79\x82\x2a\xcd\xff\xca\x66\x64\x9a\xab\x8a\xc5\x32\xcb\x78\x66\x31\x41\x14\x9f\x32\xa9\x24\x1b\x0e\x06\x83\x07\x9f\x3f\x78\x66\x22\xbb\xfa\xb2\xb7\xf5\xf9\x97\xcf\x3f\xff\xf2\x81\x89\x08\x0d\xb4\x82\x75\x30\x9e\x59\x81\x8d\x50\x41\xe8\xee\xba\x21\x83\xbc\xec\x23\x63\xc7\xd4\xbc\x09\x28\xbf\x11\xa5\x98\xde\x9c\xf3\xb2\x6a\xd3\xc4\x0e\xe3\x16\x1a\x23\xeb\xc0\x01\x64\x08\xc7\x49\x34\x49\xa7\xd8\xa1\x21\xf5\x89\x0d\xf7\xde\xe1\xde\x9e\x4e\xf6\x89\xad\x1f\x0f\x1c\x1c\x11\xea\x93\x82\xee\x39\x2d\xf6\xc7\x6b\x76\x3b\xa2\xbd\x92\xfa\xd6\x7d\x30\x8c\x1b\x0e\x19\x96\x05\xa8\x90\xef\xc9\x73\xec\x71\xf9\x64\x8b\xe5\x27\x3e\x28\x27\x87\x11\x43\x7d\x67\xe1\xf7\xaf\x06\xfd\x84\x43\x58\xef\xa4\x2f\xe5\x63\xa8\xaa\xeb\x78\x1e\xa2\x3e\x5b\x16\xd4\xa9\xf9\xcd\xac\x6c\x5e\x7b\xe7\x91\x77\x0b\xd6\xd1\xf2\xb1\x76\x47\x54\x26\x8c\x57\x3c\xcb\xd4\x3c\xd4\xbf\xf1\x93\xc4\x0f\x2f\x8c\x98\xff\x9c\xf9\x31\xf7\x0c\x03\x7c\x0b\x70\xb1\xf5\x1a\xa2\x2c\x92\xb6\x19\xf7\x7e\x06\xec\xd1\xdf\x12\xd3\x6c\x9c\x58\xac\x7d\x6f\x8b\x70\x2c\x18\x14\x70\x86\xb2\x96\x7b\x92\x82\xb7\x9f\x5d\x07\x2b\xb7\x00\xa1\x15\xd1\x14\x38\xd6\x18\xe2\xf1\xff\x33\x4e\x4b\xe0\x0b\x48\xff\x8b\x9e\x97\xb3\x7f\x96\x79\x89\xa3\x80\xff\xd7\x19\x21\x05\x7d\xef\xb0\xce\x8a\x91\x6b\xa5\xbf\xa8\xf9\x85\xab\xc9\x78\x75\xbb\x60\xa0\x52\x0a\xde\x0b\x9e\x96\x0a\xd9\x83\x19\x0c\x45\x4a\x3a\xa5\x97\x72\x91\x2c\x40\x79\xee\xb0\xef\x30\xda\xdf\x3b\x7b\x77\x78\x70\x7c\x80\x08\xfd\xb0\xae\x59\xa3\xef\x1c\xf6\xde\x19\xb7\x56\xdc\xaa\xff\x62\xfb\x60\x6d\x71\x8d\x53\xfa\xdc\x21\xe3\x74\xf2\xdc\x99\xb6\x33\x5c\x4d\x35\x7e\x5d\x11\xd2\xf8\x36\x6e\x6a\xf2\x4b\xc8\xec\x46\x11\x09\xe0\xf8\x83\xa3\xbc\x77\x1f\x3b\x6b\xd7\x74\x1d\xd6\x19\x8e\x26\x53\x98\x4d\x41\x26\x21\x50\xaf\x1f\xe2\x58\x30\x4b\x72\x8e\x09\x19\xe3\xd0\x61\xef\x1c\xfc\xce\xc1\xb1\x43\x88\x18\xb5\xd5\x21\x31\x4d\xcc\x1d\x16\x3a\xc4\x16\x55\x0e\xb4\x76\x86\x3b\xf2\xc3\xb2\x10\xbd\xe7\x0e\x3d\x76\x48\x9e\xbf\x93\x4f\xb4\xe5\x66\x3b\x98\x93\xa8\x8b\x40\xaf\x1d\xb6\xdc\x57\xb0\x96\x23\x6c\x73\x87\x3e\x3b\x79\xf5\xea\xc7\xb3\xa3\xdd\x97\xbb\x87\xfb\x67\xfb\xc7\x7b\x87\xbb\xc7\x07\x87\x47\xf6\xa1\x53\xd0\xb7\x0e\x7b\xed\xf4\xd6\x4a\xd1\x7d\x67\xe3\x55\xcb\x93\x55\xea\x5d\x46\xae\xb7\x90\xa1\x6b\x42\xa3\x75\x54\x63\xaf\x52\xfc\xd6\xa1\xf2\x72\x64\x80\x87\x34\x24\xd2\xee\x26\xa5\x31\x58\xdd\xbc\x8f\x26\xf1\x94\xed\x3b\x34\x2d\xe8\xbd\x12\x8d\x92\x06\xbe\xe4\x39\x46\x67\x67\x50\xe7\xd9\x19\xf2\xc3\x65\xd1\x16\x4e\xa1\x33\xa4\x10\x74\x3f\x8d\x6f\x97\x38\x65\x15\xe6\xd5\xd4\x19\x2f\x54\x28\x8d\x28\x6e\xb9\xeb\x5e\x35\x41\x04\x00\x44\xdb\x3b\x4d\xa6\x84\x72\x16\xae\x45\x5a\x5d\xbf\xc7\x59\x3b\x1d\xa8\xac\x45\xdf\xe3\x90\xac\x86\x7b\x02\x0b\xf8\x2a\x02\xee\xfa\xb5\x95\xe7\x60\xa4\x99\x70\xb8\xaa\xaf\x15\xd9\x16\x32\x9c\xc4\x70\x8c\x12\x66\x44\x0a\x1c\x13\x2a\xe4\x1f\x05\x6b\x4c\xec\xb0\x57\x76\x84\xc5\x34\x84\x30\x02\xda\xf2\xe5\xc5\x86\xa9\x7f\x03\xe9\xed\x38\x43\x5f\xae\x2d\x89\x9f\x37\x63\xca\xb3\x76\x3e\x8f\x3a\x64\x79\xe2\xe0\x90\x72\xaa\x64\x0d\x6d\x55\xbf\x32\x32\x29\x83\x6b\xe7\xa5\x26\xee\x0a\x94\x64\x6f\x54\x0c\x5e\xc3\xd3\xe9\xde\x24\x9d\x8e\x92\x6b\x5f\xcd\x80\xeb\x24\x1c\x89\xa5\x88\x6c\x78\x04\x15\xa0\x7e\xe1\x61\x1a\xfb\xe2\x6d\xfd\x82\x69\xcd\xe4\x2d\xac\x0c\x9c\x3e\x21\x1f\x29\x0a\x3a\x6b\xa2\x3f\x5d\x08\x1c\xf4\xea\xbb\x25\xbd\x64\xde\xe4\xa5\x33\xcd\x73\x6f\xf5\x12\x7f\x64\x9a\xde\x24\x9a\xd2\x2b\x06\xbd\xbb\xcc\xf3\x40\xb0\xa4\x73\xa6\xbc\x74\x40\x0c\x1c\xaf\xa7\x60\xcf\xf3\x4b\x31\x10\x73\xd3\xc4\xae\xd8\x66\xe6\x6a\xc2\x61\x87\x16\xf3\xda\xba\xdf\xb8\x70\x01\xcb\x34\xc5\xae\xe4\x8a\x2d\xe9\x85\xd8\x6b\xee\x39\xe3\x7b\x0e\x76\xe9\x0b\x87\xd8\x2d\x1a\x37\x57\x00\x6c\x9a\xef\xb0\x4b\x5f\x3a\xf4\x67\x87\xc0\x7a\x75\xe9\x0c\x4c\x92\x09\xd5\x63\x0b\xf3\x74\x69\x9a\xfa\xbd\xc3\xd8\x25\x44\xb0\x31\x4d\xbc\x60\x9d\x01\xbd\x6a\x41\x92\xcb\x9a\x21\x6e\x41\x28\x0c\x4e\x87\xb1\x2b\xd1\x9e\x27\xda\xbb\x82\x2d\x81\x4f\xd9\x15\x8d\x88\x3f\xc3\x09\x5b\xca\xfa\xed\x00\xeb\x96\x08\x15\x33\x6d\xfb\xe3\x2b\x91\x08\xb3\x4e\xa8\x1a\x28\x91\xa2\xe7\x9b\x14\xd4\x01\x7b\x95\x4c\xa0\x4e\x42\xf0\x1b\x27\xcf\x17\x79\xde\x91\x09\x1e\xdc\x32\x49\xb1\x47\x33\x9a\x4c\xb2\xa9\x8a\xb6\x59\xb3\x6d\xe3\x6b\xae\x52\xa0\x86\x82\x56\x96\x77\x49\x41\x5f\x39\xfa\x12\xd4\x2f\x4e\xf3\x12\x94\x9c\xca\x0a\x43\x08\xfd\xce\x61\xcf\x1c\x2c\x95\xa9\xda\x1d\xcb\x8a\xa1\xe5\x2b\xa7\x6e\x44\xbc\x5a\x05\x55\xa0\xcd\xc1\x25\x72\xe8\xf1\x1b\x7b\x40\x3f\xf8\x21\x04\x94\x5c\xb9\x0c\x24\x4d\xad\x7e\x71\x94\xe1\x2f\x5c\xae\x81\xd2\x34\x64\x69\x4f\x14\xa2\xa5\x7b\x7d\xcb\xd2\xd7\x73\x78\x9e\xc7\x3b\x4c\xdb\xfc\x8c\xb1\x2e\xa4\x2f\x4b\x2e\xeb\x46\xc9\xca\xc2\x79\x50\x10\x5b\x4e\x04\x63\xe1\x58\xe5\x88\xb5\xf9\x73\x61\x57\x38\x53\x7e\x05\xeb\xa1\x32\x83\x4a\x9c\x48\xef\x20\xd5\x87\xa2\xc2\x37\x32\x02\xef\x1a\x8a\x7d\x64\xda\xd5\x06\x7d\x16\x96\x38\x20\x1e\x4b\x1c\x11\x2f\x25\x26\xc0\x96\xf3\xd5\x06\x2a\x46\x23\x3d\x9b\xf7\x9c\x36\x97\x2b\x58\xf0\xa2\xcd\x88\xe4\x71\x87\xb1\xd0\x34\x6f\x71\xc4\x6a\xac\x05\x31\xcd\xa8\x03\x11\x66\xaa\x35\x78\xcf\x81\x50\xec\x82\xbe\xfd\xe0\x30\x34\x39\x4d\x4f\xc3\xd3\xab\xd3\xd9\x69\x6c\xfc\xdf\xff\xfb\xff\xf3\xbf\xfe\xfa\xdb\xaf\xbf\xfe\xf6\xeb\x7f\xfa\xed\xd7\x7f\xfb\xed\xd7\xff\xf6\xb7\x5f\xff\xbb\xdf\x7e\xfd\xef\x7f\xfb\xf5\x7f\xf8\xed\xd7\xff\xf1\xb7\x5f\xff\xa7\xdf\x7e\xfd\x9f\x7f\xfb\xf5\x7f\xf9\xed\xd7\xff\xe3\xb7\xff\xf4\xbf\xfd\xbf\xbf\xfe\x7a\x9a\x6d\x0d\xb6\x9e\xc2\xef\x97\xa7\xd9\x8c\xcf\x66\x53\x44\x7f\x74\x98\x0e\x5e\xf2\x57\x64\xfd\xe0\x88\x7f\xe8\x0b\x44\xe8\x37\xe5\x07\x9d\x78\x0f\x11\xfa\xb5\xf3\x31\x3f\x4e\x52\xef\xac\x0f\x4b\x30\xaf\x4c\x0a\x86\xe0\x41\x29\x04\x03\x45\x69\x5a\xf3\xa3\x43\x11\x22\x84\x6e\xad\x7d\xf9\x46\x7d\x09\x8b\x82\x7e\xeb\xb0\x65\x92\x3a\x71\x6a\x7f\xed\xc0\x75\xb6\xd0\x13\x4f\x5b\x44\x06\x05\xfe\xda\xc1\x0f\x48\x41\xbf\x77\xd8\x79\xda\x9b\xd1\x9f\x1c\xb8\xad\x9c\xba\xec\x43\x6f\x46\xb9\xcb\xbe\x75\x20\x8e\x03\x0d\x5d\x16\xf5\x54\x88\xaa\xd8\x65\xa1\x5b\xdb\x66\x23\x97\xa1\xb7\xfa\x54\x6a\x81\x5f\xa5\x38\x76\x09\xa1\xbe\xdb\x76\xc1\xb4\x79\x34\xc2\x2e\xe0\xd2\x90\x34\xad\x5a\x75\xc4\x98\x99\x66\xa6\x45\x9a\x2d\xb1\x1d\x3d\x7c\xc0\x18\xc3\x9c\xe1\x8c\x71\x17\x67\x84\xd4\x0d\x5d\x06\x84\xe4\x39\x18\xfa\x48\x13\x8e\xa7\x4f\x45\xe6\x90\x65\xf5\x4c\x5b\x22\xd3\x70\x6b\x50\x37\x5a\x7a\xeb\xbc\x2d\x74\xa4\xdf\x87\x4f\x65\x79\x45\xdb\x1a\x65\x87\x44\x52\x3a\xe3\xf1\x63\xa0\x6c\xc6\x97\x4f\xed\x98\x6d\xd1\x88\x3d\xfc\x72\x74\x1e\x73\xe7\xc3\x08\x92\x9f\x7c\x29\x3f\x0f\x87\x43\x3b\x66\x4f\x69\xc4\x1e\x3d\x52\xdf\xf5\xe9\xbb\x6c\xd9\xca\xe0\xc4\xca\x61\xd8\x67\x59\x69\xf0\xa4\x95\x2c\xda\x76\x6f\xe4\x2a\x97\x27\x09\xf3\xeb\xe0\xb8\x84\x6c\x3f\x7c\x9a\xe7\xc9\x4e\x54\xeb\x89\x46\x97\xd2\x92\xca\xa7\xb1\x36\xd9\xb0\xb2\x42\x8c\xf3\x87\x14\xeb\xe9\xa2\x9d\xd0\xc5\xc8\x18\x44\x43\x44\xf2\x1c\x5e\x06\xe7\xf0\x2c\x1e\xad\xc1\xcd\x10\xc2\x8e\x68\x8d\x9e\xe3\x52\xb7\x65\x52\xd7\x04\xd0\xed\xe1\x78\x60\xc3\x3e\x57\x37\x6c\xaf\xb3\x70\xae\x6b\x9a\x38\x72\xc7\x4d\xd1\x29\x76\xa5\x1d\xec\x81\x72\xba\x22\xd8\x55\x62\x6b\x60\x3b\x6c\x81\x43\x42\xc6\x5f\x39\x40\x79\x43\x17\xfb\x2e\x84\x4a\x0a\xa9\xeb\x12\x1b\x5e\x0a\x9a\xb8\xcc\x19\x7f\xef\xe0\xd0\x25\x36\x7a\xb3\xfb\xc3\xd9\x77\xbb\xaf\x4f\xf6\xe8\x9b\xfd\xb7\xea\xe9\xad\xf3\x96\xbe\xdd\x7b\xb5\x7b\xbc\xff\xdd\xde\xd9\xfe\xdb\x97\xfb\x6f\xf7\x8f\x7f\xa4\xef\x0e\x8e\xf6\x9b\x29\x7b\xef\x8e\xf6\x5f\x1f\xbc\x85\xd0\xf8\xa1\x9f\x72\xea\x27\xfb\x61\xca\x2f\x78\x4c\xfd\x44\x54\xe2\x27\x47\xce\x8c\xeb\x34\xd1\xd4\xd1\xee\x4b\x51\xc1\xf1\xde\xab\xbd\x43\x68\xb1\x91\x00\x53\xf2\x32\x88\x9c\x94\xea\xd9\xa9\xea\x44\x3a\x0e\x0b\x45\x84\x66\x62\xea\x13\x57\xe3\x7e\xe6\x8e\x32\x81\x04\xd7\x38\x74\xa9\xe3\xb2\xc4\x9d\x64\xee\x94\x98\x66\xe7\x1a\xbb\x22\x85\x98\x66\xea\xca\x47\xfa\x93\x23\x73\x11\x32\x72\x6b\x8b\x94\xc5\x2e\x8d\xdd\x86\xec\xe9\xba\x94\xa7\x38\xa2\x25\x32\xb8\x2a\xa4\x4f\xe0\xae\x5f\xc2\x78\x5f\x92\x31\x54\x93\x34\xa4\xb5\xbf\x90\xa0\x2c\x86\x2e\xc0\x6b\xbb\x7f\x11\x46\x31\x7f\xee\x48\x77\xcd\x16\x43\x3e\x24\xcf\xb3\x20\xf5\x03\x3f\xd4\xa9\x73\x48\xf5\xa2\x74\x37\xd0\xe5\x13\x48\xca\x42\xdf\x8d\x3c\x9d\x2d\x83\xb4\x24\xf5\xdd\x0f\xb7\x2a\xe9\x56\xb0\x1b\x35\x4f\xb1\x33\xb7\x61\xf1\xa1\xb6\x5d\xb0\xbd\x15\xa0\x2f\x5c\xea\xb9\xf4\xd2\x65\xcb\x93\xb7\x47\x27\xef\xde\x41\xb4\x8e\xb3\x1f\xed\x75\xe3\xee\x94\xcd\x5c\x8c\x1c\x44\x45\x13\x55\x1f\x03\x27\x49\xf7\x05\x91\x66\x5b\x54\xb9\x88\xea\xf1\x1b\x2e\xb2\x9e\xbb\x1e\x02\x73\xf4\x67\x87\x07\xdf\xec\xbd\x3d\x7b\xbe\x7b\xb8\x77\xbc\xb1\xe6\xbf\xc6\x88\xa2\x8b\x4f\xac\x3b\x49\x63\x24\xef\xc2\x5d\xb9\x8a\x94\xd4\xa3\x52\xdf\x70\x97\xce\xdd\xcd\x76\x42\xb7\x2e\xbb\x72\xe9\x85\xcb\xf0\xc2\x65\x7d\xa7\x4f\x3d\x97\xf5\xcf\xbf\xe8\x5f\xd0\x2b\xe5\xeb\x68\xe1\x52\xe4\x20\x52\xbe\x7b\xea\x7d\xd0\x61\x6c\xe1\x56\x90\xe5\xb9\x48\xf1\x6a\x29\x84\x9e\xbb\xec\xd2\xed\x35\xc6\x33\xcf\x2f\xdd\x5e\x7d\x18\xe8\xb5\xcb\x4a\x45\x50\x1f\x93\xf1\xb8\xaf\xba\x86\xc8\x64\x38\x1d\xe1\x0b\x37\xcf\xaf\xdd\x3c\x3f\x17\xe8\x8b\x6f\xef\x20\x16\xd2\x46\xdf\x61\xe7\xae\x69\xfa\x0a\x19\xa8\xcb\x02\x05\xb9\x4f\xa8\xd8\x1a\xa5\x5b\x4a\x9a\xb1\x01\x0d\xaa\xf8\x7b\x82\xe5\x06\x03\x66\xec\x32\xb7\x24\x90\xe8\x16\x01\x85\xac\x82\x1b\x5d\x20\x01\x85\xab\xd0\x38\xa8\x8c\x5d\xd5\xbe\xec\xd7\xfb\x5f\x7b\x01\x55\x78\xc7\xaf\xf0\x3b\xcf\xfd\x3a\xb2\xa3\x53\x19\x66\x64\x52\x2b\xd3\x1d\x42\x8c\x8a\x84\x21\x3c\xb6\x0d\x64\x25\x16\x22\x88\x06\x0c\x19\xc8\x0a\x68\x66\x59\x84\x4a\x6f\x9e\x25\x6f\x81\xc7\xb6\xce\x26\x28\xeb\xb5\x2b\x09\x7e\x3d\x0b\x7c\xbf\x87\xc7\x9d\xd3\xd3\x44\x65\xbb\x70\xe1\x52\x62\x03\xf4\x98\xe9\x09\x77\xc6\xa1\xed\xd3\x80\x50\x67\x1c\x8f\x71\xdc\xf3\xc3\x45\x96\x32\xf5\x57\xf5\x3a\x23\x34\x9e\x0c\xa6\x4c\xfc\xd4\x92\xe4\xb0\xd5\x2b\xae\x0f\x89\x25\xb3\x2b\xbb\x64\xbb\xf6\x85\x0d\x6c\x01\x53\x0c\xe1\x45\xaa\x54\x5f\xed\x23\x63\x55\xb1\x55\x2b\x6f\x73\xd9\xdd\xd8\x34\xcb\xab\xe1\x43\xd3\x9c\xab\x4e\xc4\xe0\x5a\x8d\xae\x5e\x32\x8f\xd8\x70\x14\xad\x45\xe0\xed\x6e\x8d\x22\xcb\x22\xa5\x0a\xb2\xd2\x86\x46\x53\xd3\xc4\xf1\x24\x9a\x32\xed\x41\x51\xc8\x5d\xea\x0a\xc6\x91\xcb\x6e\xdd\x86\x27\x47\x39\xe8\xeb\xae\x1c\xfb\x3d\x89\xe3\x1d\xc6\x8e\xdc\x82\x2e\xc5\xb3\x7d\xe4\xaa\x7a\x0e\xdc\xbb\xb9\xbf\x1a\x47\x4c\xfd\x06\x0f\x48\x1d\xe6\xa6\x38\x24\xd4\x15\x63\xae\xcc\x4f\x15\x7e\x6f\x4b\x0b\x65\x77\x9c\x8e\x11\x52\x72\x81\x8d\xe3\x26\xaf\xe0\x10\xa2\x8d\x8e\xe3\x9d\x47\x8f\x1f\x0c\xbf\xcc\x73\xc7\x12\xcb\xc2\xcd\x73\x1c\xad\x64\xb6\x86\x22\xfb\xe3\x07\x5b\x83\x3c\x8f\x76\x1e\x3d\x79\xf0\xf0\xc1\x38\x1d\xfb\xda\xea\xd9\x21\x76\x6c\x8b\x77\x89\x10\x0e\x75\xac\x2d\x62\x47\x5d\x28\x61\xe1\xb8\x0b\x2d\x6d\x6f\x0f\x07\xc4\x02\x1b\xe5\xa2\xa0\xbb\x2e\x5b\xba\x50\xbd\x7d\xe0\xe2\xce\x90\x50\x59\x19\xbc\x0d\x48\x41\xf7\x5c\xb6\xeb\xaa\x16\xe8\x8d\xab\x65\xba\x33\x77\x45\xa6\x93\xc3\x52\x13\xea\x46\xcf\x1c\x65\x5c\x44\x91\xf6\x96\xd8\x50\xec\xde\xb8\x0d\x89\x6e\xb5\x02\x2a\xb9\x4e\xbb\x5c\xf0\x5a\xae\x6b\x17\xe8\x28\x67\x67\xae\xa2\x85\x21\x78\x2e\x80\xa6\x85\x8c\x02\xe5\xf4\xbc\xc4\x3b\x4c\x9f\x7c\x8e\xdb\x65\x36\x1b\xa7\x6c\xcf\x05\xad\x11\x55\x85\xad\xd2\x9c\x5f\xcb\x79\x69\x29\x8b\x95\x4e\xdd\xdf\xbb\x2b\xde\x41\x9e\xbb\xab\x2a\x68\x49\x73\xfa\xbd\x7e\x45\x69\x04\x2a\xae\x53\xf5\xc9\xb4\x46\xcb\xe3\x28\x5b\x24\x6c\xe9\xd8\xe8\x09\x2a\x84\xc4\x84\x9e\x88\xad\x0b\xa1\x72\xdb\x4c\x29\xba\xb7\xed\xec\x48\x9a\xf7\xc1\x65\xe8\xde\x00\x31\xc6\x90\x53\x65\xe9\xf7\xfa\x54\x24\x13\xfa\x4e\xc2\xa9\x3e\x20\x42\x8f\x5d\xd6\xe9\xf4\x7b\xfd\xc9\x3b\x77\x6a\x9a\x48\x94\x54\x6f\x92\xea\x42\xa9\xc3\x4d\x9d\xc1\x63\x9b\xf4\x41\x8a\x16\x5d\x19\xad\xf7\xa8\xbc\x8c\xa7\x6c\x31\x81\x66\x94\x57\x14\x75\xf8\x06\xe4\x9c\x6b\x56\xab\xf4\xf3\x62\x6c\x81\xd8\xa8\x63\x6d\x23\x07\xc1\x4d\x92\xc1\x34\xcf\xd1\xb9\x7c\x1e\xc2\x29\xc0\x6b\xb7\xe5\x3e\xb8\xb4\x6b\xfe\x16\xf4\xe7\x6b\x87\x01\xca\x47\x4f\x79\x34\x02\xb6\xbe\xeb\x40\x3f\x29\xe8\x93\x0e\x43\x68\x92\x4e\x65\x18\x0a\xea\x32\xc7\x34\x5b\x2b\x03\x4d\x6b\xdf\xd1\x73\x8b\xa0\x33\xca\x3f\x02\xc6\x21\x5b\x16\x64\xc5\xf5\x88\x0c\xef\xa6\x13\x26\xef\xdd\x36\x10\x42\x91\x6d\x16\x38\x17\x09\x43\x88\x86\x02\x4e\x31\x3b\xd1\x94\xd0\x70\xe3\x58\xb3\xce\x80\x4a\xcd\xbd\x28\x00\xfe\x96\x3a\x5c\x20\xaa\x3f\xc3\x1d\x27\xcf\x3b\x6e\x9e\x97\x18\xa0\x40\xec\x3c\x77\xf3\xbc\xf3\xc1\xcd\xf3\x63\x97\xe4\x79\x03\xfe\xce\x61\x79\x3f\x49\x36\x4e\x33\x16\x0a\x16\x55\x8c\x4c\x53\x55\xb3\x12\x3a\x5a\xf2\x44\x4c\x6c\xbc\x63\x31\x72\xd1\x58\xdd\x58\xd7\xd7\xb8\x13\x6d\x82\x2d\x26\xad\xb0\x57\xbe\x96\x2a\x5c\x5e\xff\x0a\x1a\x90\xe5\xe1\xde\xbb\xd7\xbb\xcf\xf7\xce\xbe\xd9\xdb\x7b\x77\x74\x76\x6f\x60\x7f\x70\xe9\xe1\xde\xab\xbd\x1f\xde\x9d\xe9\x4f\x47\x27\xcf\x8e\x8e\xf7\x8f\x4f\x8e\xf7\x8e\xce\x4e\xde\xbe\xd8\x7b\xb9\xff\x76\xef\xc5\xd9\xf3\xdd\x77\xc7\x27\x87\x7b\xf6\xb1\x5b\x08\x96\x22\x13\xb4\x6a\xc6\x32\xc1\xfd\xf0\x14\xaf\xf2\x6e\x34\x15\xc4\x98\xa7\x78\x95\xdb\xa3\x11\xdd\x62\x8c\xb7\x87\xc8\x9c\x69\xa3\x6c\x75\x5d\xbe\x68\x3b\xde\x69\x64\x22\x05\x29\x62\xd3\x7c\xb7\xd6\x8e\x18\x6e\x94\x5c\x3a\x73\x44\x61\x4b\x7e\x5b\xdf\x92\xf7\x57\x51\xbf\x1a\x79\x0b\x87\xe3\xb7\x92\x09\xd7\x44\x7b\x48\x0a\x7a\xe2\xb2\xd6\xbb\xce\x72\xfd\xb6\x5b\xed\xd6\xc3\x1d\x4a\x88\x39\x69\x37\x88\x59\x57\xda\xcb\xee\x18\xa2\x76\x43\x7a\xa1\x37\x24\x84\xdc\x33\x92\x48\xa4\x88\x7d\x3f\x02\x03\xc0\xf4\xd2\x09\x0d\x47\x5b\x37\x18\x51\x0c\x51\x5d\x2b\xce\x3c\x06\x03\x5c\x45\xe6\x05\x43\x8c\xd3\x16\x4f\xa6\xf2\xfb\x67\xd0\x22\x78\x05\xf6\x8c\x48\x48\xb9\x70\xe3\x2f\xf5\xcf\x03\x6e\xc4\xdc\xe5\xfe\x15\x8f\xab\xaa\x8f\xdc\xaa\x6b\xc5\xe8\xb5\x8b\xd1\x5c\x06\xea\x19\xae\xe2\x77\x79\xa1\x70\x5d\x41\x74\xa5\x28\x90\x3c\x40\x14\xc8\xa1\x08\x3f\x9f\xa4\xd3\xb5\x63\xd8\x78\x1c\x97\xc8\x4f\xec\x1a\xd7\xc8\x89\xd8\x70\x14\xe5\x0b\x85\xb0\xb1\xca\x83\xc7\x2c\x84\x58\x87\xf2\xbe\xb3\x3f\xc3\xb1\xf4\x7c\x51\xde\x7a\x93\x4e\x4e\xe4\x1e\xf8\x5e\x06\x8a\xd3\x94\x54\x17\xe9\x44\x8a\xbf\xd3\xa5\x4e\x5c\x1c\x51\x5f\x9b\x9a\x44\x5a\xe4\x1b\x45\x75\x4e\xb1\x34\x23\x72\x29\xf8\xb8\xc9\xd8\x60\xa4\x4e\x6c\xb0\xcb\x54\x15\x44\xdd\x21\x2c\xf9\x75\x77\x32\x98\x92\x51\x32\xc9\xa6\x2c\xa0\x40\x62\x84\x74\x59\xaf\x78\xdf\xc5\x3e\xcd\xd2\x7a\x1a\xa1\x0e\x21\x82\xef\xd6\x47\x0f\x82\x39\xcc\xc6\xa2\x35\x3b\x29\xa6\x9a\xf0\xde\x73\x57\x4f\x62\x5e\xb8\x2d\xee\xb1\xdf\xb8\xec\x3b\x47\x8e\x4b\x52\x76\xe2\xa5\x6b\xf8\xa1\xb1\x50\xf8\xfd\xb3\xcb\xa2\xc9\x4b\x77\x4a\x9f\xb9\xec\x67\xd7\x34\x7f\xae\x09\xea\x62\xc4\x9e\xb9\xa0\xc1\x7a\xe6\x4e\xee\xb9\xd3\x0e\x63\x6f\x5c\x88\x3e\xf6\x0e\x3f\x73\xe9\x3d\x97\xbe\x71\x6b\x37\x05\x65\x26\xf6\xc6\x2d\x64\x89\x17\xee\x34\xcf\x21\xe7\x0b\x97\xbe\x74\x09\x5d\x84\xa2\xa9\xf2\xe6\xe8\x2b\x80\xe4\x3b\x87\xc8\xec\xaf\xa0\x81\xef\x1c\xf1\x50\x35\xf2\xca\xa5\x2a\xa9\xd1\xd0\x2b\x77\xaa\xb2\x16\x05\x08\xd7\xbf\xac\x0d\xc9\x77\x1b\xe8\xb7\xc0\xba\x93\xc3\xd7\x18\x9d\x8f\x1d\x36\x34\xcf\xd9\x96\xe9\xb2\x07\x2a\x00\x90\xdd\xef\x3b\x48\xaa\xc8\x93\x5a\xfc\x38\x1a\x36\x94\x0d\x3a\x28\x38\x43\xee\xe7\x5b\x03\x0f\xd1\xd6\x88\x22\xca\xe9\x0b\xf8\xe6\xc4\xe8\x1c\x11\x1a\x5a\x2c\xb6\x52\x41\x54\x3b\x1c\xcc\xc0\xf2\xbc\x6c\xb5\x0f\x55\x01\x48\x02\x1c\x38\x6d\xbf\x8c\xf9\x2c\xcf\x11\xbc\x41\xf8\x10\x8c\x5c\x24\x28\x95\xc3\xc0\xfc\x58\xaf\x17\xd9\xa3\x46\xc0\x3b\x24\x6a\x42\x84\xe4\x79\x87\x4f\x7e\x11\x33\xa1\x98\x09\xdd\x7b\x08\x77\x24\x1a\xfe\xcb\x39\x22\xf5\x48\xcc\xe7\xb5\x6c\x8d\x2a\x5b\x9b\x71\xd8\xb9\x90\x5e\x01\x36\x07\x60\xbb\x09\xbb\x5d\x3e\x74\x6e\xcf\xdd\xb5\xf6\xec\x7e\xff\xdf\xff\xed\x3f\xff\x5f\xff\xfe\x9f\xfe\xfd\xdf\x10\x01\xdf\xab\x79\x8e\x3e\xfb\xfc\xc5\xe0\xf3\x67\xc3\xb6\xcc\xce\x67\xff\xf9\xff\x14\x19\x9d\x04\x98\xa1\xa1\x0b\x23\x11\x8a\x46\xda\xb2\xdf\x20\x65\xd4\x21\xeb\x06\xff\x63\x65\x80\x21\x69\xbf\x43\x7f\x28\x13\xa4\x89\x75\x69\xe0\xfe\xa3\xcb\x3a\x5f\xb9\x79\xde\x44\x19\x7f\x86\x1d\xd3\x1c\x76\x18\xfb\xca\xc5\xcb\x73\x7b\x58\xd0\xaf\x5c\xfc\x83\x8b\x97\x05\x15\xac\xe2\xb2\xe9\xbe\x62\xc5\xef\xc3\x0f\x8a\xe1\x47\xe7\x48\xb3\xd1\x0f\x1a\x0e\x2f\x04\x33\x2d\x08\xfb\xb9\xbd\x55\x10\xd2\x3b\xaf\x9c\xcc\x49\x5c\x5d\x16\x94\x03\xdb\xa4\xee\xca\xe2\x4a\x63\x33\x09\xa7\xec\x09\x05\xcd\x0f\x9f\x5d\x5c\xfa\xef\x3f\x04\xf3\x30\x5a\xfc\x1c\x27\x69\xa9\xc1\x43\x1b\x2c\x4c\x20\xa6\x0a\x8c\xcf\x93\x0e\x74\xac\xa0\x29\x99\x84\x80\x24\x6d\xf5\x75\xd8\x49\x8a\x65\x3e\x5e\x5e\x2c\x01\xde\x7b\xbc\xe9\x9e\xbd\xb4\xe2\x88\xd7\x14\xb2\x34\x62\x43\xea\xb3\xeb\xb4\x37\xa3\x2e\xcb\x7a\xb3\x51\xbc\x13\x8d\xca\x3d\x21\xa1\x01\xab\xbb\xd2\x8d\x2c\x6b\x4a\xc0\xd5\xda\x49\x8a\x83\x2a\x72\x14\x0e\x08\xb1\x21\x89\x2e\xd8\x4c\xd7\xed\xb1\xc1\x68\xb1\xe3\x8d\x48\xc2\x66\x13\xcf\xb2\xa6\x54\x30\x60\x8a\xcc\x05\x14\x62\xba\x86\x93\x64\xca\x82\x49\x52\xbf\xb4\x6f\x7f\xe5\xd2\x6f\x3e\x72\x46\xa0\x7a\x94\xb4\xb9\xb0\x11\x93\x3c\x16\x3f\xb6\x3c\x8a\xca\xd6\xbb\x1d\xb0\xac\x3d\x44\x02\x9d\x55\xca\xa9\x80\x2e\xd8\x61\x84\x5d\x02\x3d\xf1\x67\x78\x66\x9a\x38\x60\x3e\xc7\x01\xcd\x76\xb6\x6a\xc5\xb7\xca\xe2\x5b\xe5\xf5\x9e\x45\x9e\x27\x4c\x5e\x14\x33\xcd\x77\x11\x5e\x10\x18\x56\xa9\x9d\x49\x30\x67\x59\x8a\xb5\x26\x97\x90\x11\xdf\xf1\x46\x9e\x65\x11\x87\xcd\xc6\x01\x76\x27\xde\x94\x7a\xc4\x86\xbf\x41\x88\x43\xea\x51\x47\x9d\x84\x8a\x5a\x7c\x86\x23\xb6\x50\x4e\xe2\x08\x81\x03\x65\xa5\x1b\x4a\x46\x1d\x29\xe5\x83\x0f\x2e\xed\x9d\x5c\x57\xfd\x3a\xc2\x11\x0d\xe8\x44\x11\x68\xea\x4d\x05\x4f\x67\xeb\xd7\xaa\x29\x3d\x1b\x0a\x42\xe6\xd1\xb0\xa0\x5f\xbb\xac\x3f\xf9\xeb\xe9\xa0\x7b\x9a\x0d\x06\x4f\xf6\xa6\x7d\xfa\xad\x48\xe9\x9d\x66\x0f\x06\x83\xad\xd3\xec\xe5\xcb\xc1\x9e\xf8\x7d\x3c\x9c\xf6\x2f\xe8\xf7\x2e\x43\x07\x57\x3c\x9e\x05\xd1\xb5\x6d\x80\xfa\xc8\x08\x39\xf7\x12\xe3\xda\xf7\x78\x6c\xf8\x52\xc3\x0d\x57\x44\xb4\x0f\x49\xfa\x93\xcb\xde\x38\xe9\x65\x6f\x16\x44\x51\x4c\xd3\x44\xab\x32\x67\x71\x34\x7f\xae\x74\x11\x94\x27\xad\x6e\x7a\xac\xad\x2d\xeb\xc9\xa3\x2f\x70\xba\xbd\xf5\x98\x14\x34\x4c\x36\x98\xc7\x48\x1e\x22\x65\xe1\xf8\x27\x17\xa7\xfd\x27\x83\x01\xb1\xd3\x9d\x9d\x21\x4d\x2d\x06\x29\x9c\x8c\xd2\x9d\x87\x8f\x1e\x8d\x62\x8b\x3d\x78\x4c\x52\x99\xfa\xe0\x51\x39\x2c\x3f\xb9\x38\xb6\x1e\x3c\xfe\x22\xed\xe3\xd4\x7a\xf0\x54\x70\x48\x71\xd2\x8e\xb1\xd2\x33\x01\x4e\xef\xf2\x64\x3d\x80\x13\x5f\xa5\xc0\x09\xb7\xe3\x51\x15\x02\xa0\xa6\x7f\x09\x2d\x0b\xf8\xa6\x68\x87\x81\x26\xc5\x34\xa3\x6d\x06\x4a\x1b\xd3\x0c\xb7\x63\x7d\xc1\x74\xbd\x0c\x28\x60\x18\xc3\x8f\x1f\x3e\x1a\x6e\x99\x3e\x19\xab\xab\xac\xea\x8a\x78\x44\xa4\x4e\x46\xbe\xf9\x4a\x39\x03\x36\x74\x90\x2d\x22\x34\xec\x76\xf5\xb5\x57\x9d\x56\x5d\xf7\x05\xff\xd8\x6a\x61\xf9\x6c\xb8\xf5\x54\xb9\x80\x79\xb2\x05\xe3\x2c\x3d\x8a\x94\xdd\xe3\x96\x45\x70\xc8\xd2\x09\x9f\x92\xed\xe1\xd6\xd3\xd2\x2b\x43\x9a\x08\x56\x53\x86\x9e\x61\x5a\xa7\x47\x33\x26\x99\xa5\xa4\xcc\x87\xba\x88\x8c\xb2\xed\xa8\x64\xf1\xb6\x86\x0f\x9f\x3c\x7c\xfa\xe0\xf1\xc3\x27\x1f\x6b\x6f\x87\xf9\x62\xa8\x02\x58\xc7\xea\xea\xf1\x8c\x65\xd6\x50\x0c\x6b\xd0\xf5\x77\x7e\x72\x31\xae\xaa\xeb\x3a\xa4\x3f\xd3\xfc\xfd\xa1\x13\x5e\x28\x06\xff\x7b\x57\x1a\xb3\x3b\x16\x13\xa5\xc8\x17\x33\xea\xb3\x80\xb6\x34\x2c\x28\x56\xd9\x59\xdf\x34\x2d\xcb\xd9\xa9\xea\x6f\xaf\xd9\x9f\xe1\x90\x31\xbf\x42\x92\x05\x73\xa8\xc7\x1e\x3c\x1e\x8d\x3c\x40\x47\x79\xc7\x91\x79\xdb\xcc\x1d\x0f\x6d\x6f\x87\xb9\xd6\xd6\xe3\xf1\xd6\x63\xdb\xeb\x82\xfc\xb4\xd8\xbe\x24\xf2\x58\x51\x64\xbc\x62\x8b\xee\x25\x9d\xb3\x07\x8f\xbb\x97\xa3\x6a\xa8\x79\x82\x2f\xad\xab\xcf\xe7\x84\x88\x3d\xfb\x27\x17\x5f\xf5\xe7\xa4\x68\x7c\x5f\x10\xd0\x37\x84\x09\x76\xe8\x8c\x66\x8c\x81\x9b\xb2\x01\xb5\xac\xac\x28\x2c\xcb\xa1\x96\xe5\x17\x25\xc3\x5f\x92\x21\x1a\xb5\xac\x04\x19\xf5\x61\xd4\x1e\x37\x8b\xaf\x89\x50\x75\xe3\xaa\xf5\x80\x10\xa5\x09\x17\x2f\x83\x60\x14\xd4\x4f\x1a\x6e\x6a\x1d\xf9\xaa\xa2\xfa\x23\x42\xdd\x64\x95\x25\x4d\x12\xad\x4d\xcc\x92\x15\x6d\xe2\x0a\x63\x85\x08\x0d\x3e\x92\xa5\x66\x4d\x32\x4b\x98\xf4\x0d\xb2\x48\xe4\xfe\x8f\x1f\x12\xea\xb5\x6e\x59\x8b\x64\x92\x76\x87\xd3\x3c\xc7\xea\xa9\x34\x1b\xc0\x78\x6c\x7f\x3e\x39\x3d\xf5\x94\xc3\x10\xb2\x44\x56\x6a\xa1\x82\x20\x8a\x2e\x7c\x24\x7a\x7c\x99\x6c\x70\x35\xdc\xe6\x44\x24\xad\x85\x17\xa9\x5f\x6e\x6e\x9b\xab\xca\xc7\xc9\x2c\x01\x07\x27\x34\x64\x0f\x3f\xe2\xa4\x84\xd7\x24\x02\xf0\xe7\x12\x8e\x08\x67\xe5\xc1\x13\xf6\x12\x2c\x36\x11\x7a\x59\x73\x8f\x55\x14\x74\x9e\xb0\xfe\xa4\x73\x1f\x93\xff\x38\xcd\xe5\xfd\xf5\xdb\x84\x2d\x51\x07\xd9\xe8\xf3\xad\x21\xa2\xe8\x3e\x3c\x3d\x41\x14\x61\x78\x7a\x8a\x28\x22\xf0\xf4\x25\xa2\xe8\x3f\x8a\xa7\x27\x7b\x88\xa2\xcf\xb7\x06\xc8\x46\x16\x2a\xe8\x45\xeb\x48\xdf\x82\xc5\x2e\x3d\x6f\xfd\x28\x2f\x75\xac\x8c\x57\x09\xfa\x3c\xa1\x17\x09\x29\xe8\x75\xb2\xee\x44\x9a\x97\xbc\x12\x30\x27\x8c\x6b\x66\xcf\x44\x44\xf9\x21\x89\xca\x30\x85\x38\x64\xd1\xc4\x17\x3c\x94\x4a\x92\x71\xd2\x75\x11\x06\x67\x9a\xd2\x7f\xce\x07\x7e\x6b\x5f\x25\x38\x2e\xa3\x18\x6a\xa7\x83\x22\x4d\x2e\x35\x86\x64\x10\x37\x7a\xb4\x82\x07\x97\x7e\xa2\x0d\xd4\x34\xf5\x1e\xd0\xeb\x04\xd7\x3f\x80\xb7\xa2\x83\x96\x0e\xa5\xdb\xeb\xab\x11\xbd\x8d\x52\x83\x87\x51\x76\x71\x59\x05\x70\x12\x2b\x7d\x37\x61\x27\xce\xaa\x4b\xba\x24\x69\xe8\xd5\x37\xad\x13\xaa\x57\xa2\x1d\x25\x38\x4b\xc4\x80\x2b\xd8\x48\xdd\x72\x0a\x55\x05\xd6\x85\xc7\x20\xa9\x19\x51\x81\xe5\x54\xc8\xd2\x9e\xae\x18\xb8\x22\x2c\x9d\x77\x49\x75\x44\xc9\xd4\x28\xdf\x9f\x2a\x9d\x69\x23\x29\xc6\xc7\x71\x4f\x0c\x7d\x65\x19\x05\x49\xda\x0c\x4a\x7c\xa3\xea\x75\x4a\x28\x78\x7f\xd8\x4b\xea\x0a\x50\xed\xe8\x72\x2f\xa1\xeb\x9b\xc8\x48\x9d\x14\xac\x19\xbb\xac\x1b\xea\x37\x2d\xf2\x15\x73\x19\xc8\x03\xcf\x99\xba\x0d\x96\x24\x38\xd8\x30\xca\xa8\x34\xbc\x9b\xd1\x6c\xe1\x39\x29\x3f\x39\x7c\x5d\x97\x85\x0a\x95\x5c\x2f\x64\x1f\x25\x85\x36\xc4\xef\x30\x96\x11\x7f\x86\x6f\x71\x46\x48\xab\x4e\x0e\xa7\x62\x4f\xcf\x88\x66\x6b\xc1\x4b\xb4\xf4\x64\xaf\x18\x52\x60\x44\xb5\x47\xb7\x32\x4c\x0e\x90\x44\x30\x6d\xc1\x11\x8b\x12\xfc\x1e\xab\x01\x25\xaa\x18\x69\xb2\xae\x79\x8e\xdd\x55\x76\x36\xcf\x3b\x65\x8a\xd4\x3b\xad\xa1\xec\xde\xcd\x02\x22\x85\x1a\x09\xff\x39\xe3\xa1\xcb\x8d\x6b\x3f\xbd\x34\xe4\xf8\x1a\x5b\x88\x8c\x66\xb5\xa5\xa6\xf4\x32\x16\x42\x6a\x9d\xb9\x65\x42\xa1\x18\x1f\x60\x42\x0c\x3f\x34\x32\x72\x8d\x33\x9a\x10\xd3\xac\xd7\x90\xa8\x82\xd9\x24\x99\x42\x29\xc9\xac\x5f\x27\x78\x46\xd7\x0d\x98\xc6\x68\x2c\x70\x2b\xd3\x47\x67\x03\x32\xd6\x86\x3e\x43\x62\x67\x76\x66\x01\x25\xbd\x49\xd8\x5e\x52\x53\x01\xed\x45\xf8\x26\xa1\x4b\x19\x0d\x63\xc5\xb1\xc5\x41\x82\xd7\xc4\x9c\x2d\x7d\x61\x39\x53\x0b\x65\x14\x96\x3b\x43\x05\x7a\x5a\x75\x5b\x76\x98\x86\xbd\x12\x69\x30\x29\xa8\x54\x9a\x34\x14\xc8\x6d\xad\x0d\xab\x2b\x7e\xbc\x6c\x11\x0e\xc3\xf4\xa6\x13\x33\x68\x6b\xc5\x51\x17\x09\x27\x11\x58\xec\x33\xc6\xe2\xb1\xdc\x0e\x5d\x8e\x23\x3a\x24\x76\x64\x59\x23\xde\x84\xa6\x21\xd5\xff\x1e\x50\x4a\x30\x42\x09\xc6\x8a\x1b\xb5\x58\x9a\x53\xf1\x49\xac\x81\xa9\x5c\xf0\x88\xb4\xe6\x16\x02\x87\x1b\x17\x3c\xdd\x5d\xf1\xa8\xf8\x37\x40\x53\xba\x30\x2b\x41\x8a\x2c\x8b\xf0\x6a\x70\xc2\x92\x07\x86\x44\xb9\x6a\x2a\xd5\x34\xbd\x74\x92\x3f\x65\x64\xd4\xb0\x58\xd6\xea\xc0\x74\x06\xda\x3c\x75\x58\xd0\xa4\x31\x2f\x9b\x50\xb2\xd6\xbe\x10\x8e\x4a\x34\x89\x58\x5c\x42\xe1\xb3\xce\x90\x3a\x12\x14\x97\xc1\xaa\x94\x77\x46\x4b\x52\x9a\x48\xa6\x3e\x9a\x24\x53\xa2\x60\x72\x4c\x13\xfb\xe3\x48\x63\x4f\xd2\xed\x0a\xfc\xc1\x10\x0a\x44\xef\xf3\x2e\x21\x23\x3f\xcf\xa3\xfa\xca\xd7\x0b\xbe\x20\x34\x6e\x22\x1a\xdc\x1d\x5e\x3f\xe7\xa5\x77\xc0\x1d\xa9\x45\x2c\x3b\x19\x55\xe4\x37\x64\x83\x51\xb8\x5d\x1e\xd2\x0b\xb1\x6c\x29\x85\x50\x7f\x12\x6a\xaf\x8b\x21\xc8\x0c\x42\xc2\x9b\x70\x18\xea\x1d\xb8\xac\x44\x96\x65\xaf\x38\x1d\xd0\x94\x48\xa3\xc1\x82\x4b\x94\x50\xbd\x49\x05\xf7\xde\x80\x5f\x29\x9b\xda\x1d\x0c\xd2\x70\x7d\xf6\x63\xe6\x73\xfc\xa9\xc1\x24\xe9\x03\xb2\xb6\x90\x63\x8c\x39\x0b\xa5\x9a\x48\x69\x14\x38\xd0\x4c\x79\xbe\x24\x0d\xc4\xdb\xed\xf7\x77\x15\xd7\xa0\x8c\x86\x0b\xaa\xec\xcb\x3f\x92\x5b\xdb\x15\x17\x15\xc1\xbb\xbb\x40\x65\x85\x5e\xac\xa8\x0b\x0b\x38\x64\xbb\x49\xa8\x9b\xd0\x9b\xa4\x62\x46\x64\x62\x2d\xe6\x62\x5b\xe4\x82\x94\xb6\xae\xa6\x75\x67\x8d\x24\x65\x72\x29\x69\x9f\x88\xe7\x09\x96\xb3\x0c\x0e\x51\xe0\x4d\x91\xc3\x8a\x5d\x91\x0c\x9f\x89\xc0\xa7\xef\x2a\xd0\x31\xc7\xad\xdc\xc6\x8a\xdb\x5d\xed\xcb\xf7\x3b\xb7\xa0\xcb\x95\xcc\xf6\x9e\xa0\xfc\xdf\xb9\xad\xb1\x9e\xfc\xa4\x35\xd9\x49\xf2\xfc\x8f\xfb\x0e\xae\x29\xf4\x58\xed\x68\x6a\x1d\xf5\x4c\x13\xdf\x62\xde\x08\xbb\x2e\xef\xc8\xcb\x7b\x82\xeb\xfd\x66\x8c\x1d\x45\xd2\x75\x18\x58\x88\xab\xc8\xb2\xe0\xb5\xd9\x49\xaa\x50\xb3\xf2\xc0\xcb\x49\x40\xa1\x8d\x91\x1b\x85\x29\x0f\xd3\xae\xbc\xc0\x93\xe7\xb1\x10\x0c\x57\x92\x29\x72\x16\x62\x1d\x42\x1c\xa6\xfe\x4d\xf7\xfa\xfa\xba\x3b\x8b\xe2\x79\x37\x8b\x03\x29\x42\x78\x23\x75\x3b\x9b\x9d\x1c\xbf\xec\x3e\x85\xb3\x8b\x57\x29\xe6\x74\x29\x80\xb5\x03\x3c\xa0\xd5\xa9\x1a\x55\x90\x40\x32\x38\x81\x25\x54\x2d\x66\x4e\x08\xf5\x93\xba\xc5\x42\x54\x06\x6f\x3d\x4b\xe8\xfb\x84\xb5\x4c\xa1\x20\x47\x47\xe0\xa2\x3c\x4b\x0a\xfa\x3c\x81\x53\x5a\x50\x03\xd1\x0f\x09\x8b\x7a\x27\x87\xaf\xe9\xbb\x84\xbd\x4f\x7a\x2b\x65\xe9\x31\xa4\xea\xe2\xf4\xb0\x14\x8c\x5f\xb7\x48\xbd\x88\xd0\xb7\x49\x5d\x49\xb7\xaf\xde\x16\xd1\x35\x3d\x11\xf2\xdc\x6e\xf7\x27\xa7\xfb\xcb\xb4\x4f\xef\x89\xb7\x53\xcf\xea\xf6\xca\xa4\x17\x42\x38\xf6\xfa\xf4\x4d\xc2\xfa\x7f\xc5\x83\x9b\x7c\xf0\x03\xe9\xd3\x97\xe2\x6d\x32\xe8\x3e\x99\x5a\xf7\xfa\xf4\x67\xf1\x76\xea\x89\xc7\x67\xf0\xe1\xd4\xdb\xed\xbe\x14\x82\xb0\x48\x7a\x05\x95\x66\x83\xc1\x60\x00\xbf\x5f\xc2\xef\x2e\xfc\xbe\x30\x3e\xfb\xbc\x6f\x8f\xff\x32\x39\x3d\x9d\x4e\xfb\xf4\x97\xbb\xb3\xd6\x72\x7e\x27\xdb\x81\xac\xa0\xdd\x1c\xbe\x34\xa6\x56\xbe\x96\x72\xaf\x7f\x41\xbf\x2a\x6b\x6d\xd4\x37\xed\x5f\xd0\x1f\x56\x25\xaa\x52\x32\x04\xd5\xc7\x04\x31\xc6\x2b\x9e\x4f\xc6\x11\x9f\xa2\x4e\x95\xa8\xf7\x89\xee\x50\x7b\x5c\x42\xfb\xe1\x95\x13\xf8\x9e\x71\x19\x25\x29\x82\x73\x53\x1c\xb2\x6f\x04\x26\x2b\x86\x91\x8a\xcc\x1b\xb2\xa7\x70\xf6\xc2\xc2\xd2\x90\x3d\xce\xc0\x81\xa1\xa0\xe8\x77\xe9\x2b\x57\x6e\xff\x97\xb2\xf0\xb7\x2e\x45\x3d\x44\xb4\xc8\xda\x43\xa4\xa6\x73\x8b\xea\xaa\x2f\x41\x9d\xf9\x94\x2a\x86\xe5\x6b\x57\x46\xd5\x09\xc9\x18\x8e\xa4\x90\x15\x27\x38\x24\x76\x15\x70\x56\x8b\xb5\x3d\x44\xc0\x11\xeb\xab\x44\x96\xe0\x9b\x07\x42\x39\x87\xc0\x21\xfb\x31\x11\xf9\x3e\x61\x08\x44\xc7\x7f\xf9\x48\xcd\x52\x9e\x01\x36\xe8\x1b\x57\x80\x22\xc9\x5c\x5c\xe7\xca\x42\x8b\xf1\x0c\x2c\x03\xe9\xb7\x09\xa9\xda\x28\xe8\x8f\x1b\xf4\xc0\x95\xc0\xc7\xd2\xfa\xf0\x09\x41\xae\x54\x07\x20\xc4\x58\x32\x29\xed\x12\x87\x53\xd3\x4c\x94\x13\x5c\xcc\x99\x4e\x27\x3b\x0f\x2b\xb7\xae\x12\xda\x8a\xd0\x00\x1f\x0b\x88\x85\x20\x82\x40\x02\x0e\x28\xcb\xec\xfe\x0c\xfb\x6c\x38\xa0\x51\x6d\x87\x45\x03\xa4\x1d\x4b\x00\x5e\x0a\x4e\x8a\xbd\x51\xa3\x14\x91\xf1\xf0\xb1\xfd\x94\x46\x25\x73\xf3\x94\x31\x7f\x3c\xb4\xb7\x08\x91\x27\xe9\x11\x71\xc4\xf4\x6b\xd7\x93\x78\x38\x10\x19\x7e\x4e\x6c\xc8\xf8\x32\xb1\x9f\x25\x44\xd7\x55\x01\xe2\xb0\xf2\x2a\x42\x44\x7d\x52\x84\x3a\x80\x00\xdc\x7d\xa8\x77\xc6\x9f\x61\x87\x85\x93\x58\x74\x91\xf1\xee\x50\x9e\x03\xee\xb0\xfd\x04\x6f\x3d\x7a\x4c\x1f\x75\xcb\x89\x94\x6c\xb9\x46\x75\x67\x67\xeb\xd1\xa3\xfa\x17\x18\x2b\x97\x85\x6a\x44\x65\x1b\x61\x9d\xff\x77\x2d\x68\xe8\x0b\x55\xf5\x83\x6e\x5c\x45\x91\x2f\xe8\x37\x1f\x9f\xda\xc9\x80\x36\xfe\x9f\x2a\xbb\x63\xb8\xcf\x3d\x63\x03\xba\x68\xbb\xa3\xa9\x87\x7e\x46\xe0\x22\x06\xb2\xe1\xbe\x8c\xda\x1f\x6c\x41\x73\x75\x8e\x72\x5b\x18\xcd\x2c\xb6\x45\x03\x66\xa9\xcb\x22\xa3\x05\x26\x52\xb8\x7e\x2a\x44\x77\x95\x49\x97\x87\xca\xe4\x42\x95\x9c\xe8\x43\xd3\x7c\xa6\x26\x58\x7c\x1b\x11\xce\x86\x8f\xbf\xe0\x95\xa3\x5d\x31\x40\xc3\xc7\x84\xce\x2c\x8b\x86\x96\x05\x35\xf5\x6a\x60\x0d\x2a\x29\x00\x8e\xc6\xba\x2c\xa4\xd9\xce\xe3\x12\x3a\x35\x87\x25\x54\x91\x1c\x82\x78\x67\xa0\x02\x7c\xe9\xda\x4c\x33\xde\x7e\x58\xeb\x95\x05\xee\x43\x5f\xd4\x80\xab\xd7\x39\x7a\xd1\x80\x1a\x7c\xa0\xb2\x26\xd0\xe5\x15\x6e\x16\x91\x88\xf9\x25\x62\x0e\x44\x82\xaa\x2a\x62\xc3\xc1\x17\x91\xe5\x17\x70\x9c\x52\xa1\x09\xb4\x0f\x56\x22\x5b\x8f\x1e\x7f\x21\x1e\xac\x88\x6e\x75\x98\x65\xc5\xa6\xf9\xb0\xc3\xe2\x3c\xcf\x24\x84\xe2\x45\x17\x92\xec\xf8\xea\xc4\x89\x91\xeb\x88\x17\x99\xab\x44\xcb\x2a\x69\x94\x4c\x32\xcb\x9a\x32\x5e\x6e\x4d\xca\x90\x25\xa8\x81\xa3\xe6\xb8\xa8\x7f\x95\xb7\x83\xb2\x6e\x40\x33\xf6\x64\x34\xe8\xb0\xcc\x34\x9d\x9d\xc1\x88\xb8\x4c\xc0\x4c\x93\x49\xd6\xed\x4e\x59\x32\x09\x2c\xa7\x3b\x14\xef\x81\xd5\xed\x3a\x53\xe5\x34\x4f\x40\xf1\xb4\x53\x61\x49\x75\x69\xf2\xeb\x8d\x18\x0e\x08\xb0\xea\x62\x30\xd5\x48\x25\x4f\xb1\x04\x5e\x81\x68\xc3\x7b\x59\x28\x15\x97\xe9\xe7\x5b\x8f\x1e\x13\x9a\xb2\xb7\x09\x4e\xfb\xe2\xb9\x0a\x8e\x50\xed\xf7\x2d\xa1\x93\xab\xba\x61\x23\x6e\x3f\x3c\x03\x94\x0a\xd9\x50\xd9\x3b\x89\x8d\x5a\x29\x5d\x9f\x8e\x7c\xcb\x22\xd2\x3b\xbc\x3f\x1d\xe3\x68\x27\x94\x81\x78\x68\xc8\x22\x52\xcb\x4f\x6c\x4d\x46\xc0\x1f\x2e\xf3\x09\xb5\xac\xa8\xf2\xc5\xdf\x2c\x07\x87\x5d\xaa\xab\x4f\xa1\xab\x91\x69\x82\x87\x30\x38\xaf\xc7\x11\xb8\x4f\xeb\x0c\x45\x0b\x8c\x85\x63\xcc\x2d\x16\x8e\x91\x2d\xfe\xb7\x11\x8d\x58\x47\x34\xc8\x2d\xc8\xdf\xf0\xa0\x4f\xc3\xed\x27\xea\x22\x8b\x8d\xaa\x30\x2e\x95\x97\xd2\x52\x69\x4f\xbf\x4d\xd8\xb2\xa0\xdf\x27\xec\x47\xb0\x01\xf8\x36\xa1\x4b\x64\x20\x7b\x48\xef\xa3\xfb\xf6\x90\xa2\x6d\xf1\x8c\x76\xe0\xf7\x3f\x20\x7b\x58\x10\xfa\x93\xce\xfc\xbd\xc8\xfc\x19\x7c\x1a\xc3\xef\x12\x7e\x0b\x99\x2d\xcd\x54\xb6\x9f\x44\xb6\x3e\x7c\xb2\xe1\x77\x04\xbf\x0c\x7e\xff\x02\xbf\x13\xf8\x3d\x3d\x85\x3f\x53\xf8\xfd\x2b\xfc\xe6\xb2\x2e\x9e\xb5\x9a\xf9\x3d\x4f\x70\x4a\x07\x95\x6c\xb3\xf3\x60\xcb\x34\xc3\xed\xe1\xd6\x13\xb8\xb6\xc4\x69\x4a\xc6\xa9\xdd\xaa\x90\x2f\x68\x98\xb1\xe5\x2c\x5d\xd8\x5b\x43\x0a\xb1\x65\x61\x12\xc1\xdc\xe4\xe9\x80\x4a\x13\x9a\x87\x0f\x1f\xd0\xeb\x44\xbc\x5f\x27\xf0\x56\xd0\x38\x6b\xd3\xf9\x5f\xe3\x30\xa3\x69\x2f\x71\x2f\xf9\x9c\x93\x82\x46\x6d\xb9\x10\xec\xbd\x35\x73\x1c\x78\x5f\x38\x49\x72\x1d\xc5\x5e\x41\xfd\xb6\x42\x9d\x54\x19\xd3\xa4\x3d\xd7\x09\xc3\x28\x7d\xc6\x77\x9f\x39\x89\x10\xcb\x55\x50\x5c\x81\xe5\xaa\xe5\x82\x3a\xad\x03\x55\x9a\x20\x57\xae\xdc\x4d\xf3\x44\x6d\x7e\x69\x8d\x87\x34\x4d\xb9\xed\xe0\xb0\x41\x25\xf2\xbc\xc3\x4d\x13\xe5\x48\xec\xd3\x05\x75\xb3\x8d\x91\xff\x8c\xb4\xc6\x0a\x38\x59\xe9\x62\x1d\x8c\x19\x4c\x13\xd7\x20\xc8\x73\xd4\x47\xf2\xaa\x65\xd9\x16\xdc\x9c\x14\x78\xc0\x20\xea\xa7\x54\x6c\x8a\x87\xcf\xe0\x81\x14\x34\x69\x69\x9b\x49\xb3\x2d\xd0\x0e\x2a\xfa\xdb\x09\xd7\x47\xc7\x34\x87\xa0\xe3\x70\x32\xcc\x27\x03\xb0\x55\xc8\x73\x2e\xe9\x77\x41\xb3\xd6\x29\xeb\x21\x19\xe7\x1f\x7d\xbe\x25\x6d\x8b\x9b\xac\x6c\x41\x83\x4c\xac\x9f\x19\xfc\x2e\xe0\xd7\x83\xdf\x4b\xf8\xbd\x82\xdf\x39\xfc\xde\xc2\xef\x05\xfc\x9e\xc3\xef\x35\xfc\x1e\xc1\xef\x01\xfc\xee\xc2\xef\x1e\xfc\xde\xc0\xef\x19\xfc\xbe\x87\xdf\xe7\xf0\xfb\x01\x7e\xdf\xc1\xef\x71\xb6\xc9\x56\xbc\x76\x20\x10\xe6\x79\x90\xd1\x80\x0d\xe8\x4c\xec\x7f\xca\x85\x41\x67\x48\x2f\x59\x67\x28\x59\xbe\x3c\xc7\x7a\x94\x44\x96\x0a\x4b\xe5\x9b\xc6\x51\xf9\x26\xb9\x53\xb1\x5a\x52\x08\x09\x5d\x3e\x3b\xe9\xa5\xd8\xbc\xd3\x1e\xb8\xb7\xd1\xc9\xb3\xd8\xb9\x10\xd2\xb6\x7e\x5f\x45\x63\x01\x49\xfd\x70\xef\xbb\x44\xde\x2b\xae\xa7\x7d\x05\x69\x34\x92\x3c\xf4\x28\xd8\x66\xd5\x41\x98\xbe\x46\xeb\xb3\x68\x12\x4c\x69\xa6\xee\xcf\x06\x99\xad\x7c\xaf\x76\x34\xa6\xfb\x92\x96\x86\xab\x9c\xba\xec\x38\x1a\x65\x6c\x91\x8d\x84\x90\xee\x87\x19\x2f\x66\x16\xf3\x9b\xb3\x4d\xc5\x68\xd7\x2f\xe1\xce\xa0\x0d\xdf\x34\xf1\xbd\xb2\x89\x3c\x47\x16\x62\xcc\xcf\x73\xd4\x55\x7f\x05\x12\xf9\x84\xac\x57\x58\xb2\x13\xc0\x57\xf9\x77\x43\x07\x93\x27\x40\x14\x53\x59\x81\x29\x8a\x08\x62\x23\x44\xb1\x0e\x83\x8d\x68\x46\x2a\xe4\x9f\x09\x22\x92\x41\x30\xce\xd2\x41\xab\x98\x34\xd2\xb6\x3e\xd4\x66\x43\x6a\xbc\x58\x89\x16\x33\x5a\x6a\xb0\xaf\x22\xdf\x93\x0d\x9a\x66\x98\x4d\x74\x96\xa9\xae\xdb\x34\x71\x0d\x33\x08\x91\xa0\xaf\x36\x37\xce\xd8\x6e\x66\xab\x6a\xe0\xe6\x95\x6a\xa9\x9e\xc3\x53\x39\xc6\x19\xbb\xcd\x6c\xd8\x30\xa2\x49\x60\x0d\xa7\x63\x9c\xb1\xcb\x8c\x06\x96\x45\x6c\xdc\x86\x54\x03\x85\x91\xca\xce\x03\x89\xd9\x7b\x9e\x91\xa2\x36\x7d\x0b\x89\x22\x71\x9e\xc7\x6b\x15\x98\x26\xfa\x0c\xe6\x64\xc3\x6c\x80\x95\x72\x6b\x21\x30\xb7\x28\x87\x4d\xf7\x4a\xaf\x8f\x58\x02\xa5\x34\xbb\xe5\x5a\x89\xe5\xdf\xfa\x72\x81\xb5\xd6\xd6\xaf\x8c\xbd\x53\x58\x58\x64\x4c\x8f\xaa\x6e\x67\xbc\x9b\xd9\x57\x15\x16\xcb\x8e\x7a\xd0\x51\xd4\x17\x1d\x82\x6d\xb7\xa3\x46\x91\x2c\x33\x56\xcb\x5d\x64\xec\x02\xc6\xb4\x8e\xe4\x97\xba\x30\x74\x2c\x63\xe7\x55\xe3\xef\x57\x1b\xba\x82\xbc\xeb\x9d\xf7\x19\x3b\x4b\x48\x6d\x5b\x89\xcb\xc7\xfa\xf6\x12\x97\x8f\x7a\x9b\x89\xe1\x8f\xde\x68\x62\xf8\xf3\x69\x43\x59\x32\xa7\x12\x72\x4d\x56\x7c\xd3\x94\x5a\x8b\x8c\xcd\xb3\x2a\xcf\x18\x7a\xf7\x8f\x01\x10\x96\xf1\x87\xac\x5a\xfc\x12\xd1\x96\x7f\x76\xeb\x72\x35\x80\xb4\xda\x98\xba\xe2\x1f\x3a\x2f\x2b\x28\x2e\x90\xb9\xbe\x26\xe7\x6a\x4d\xca\x2d\x4b\xa2\xac\x69\x8a\xb9\xd3\x1b\xa4\x4c\xfb\xfb\x0d\x57\x73\x2c\x04\x7e\x4b\xe9\x4a\xac\x85\xfa\x3a\xb8\x05\xc8\x60\x85\x34\x56\xd2\x4c\x33\x2f\x81\x35\x24\xa4\x5c\x0f\x2b\xab\xe8\xa2\xb6\x04\x6b\xfd\x81\xe5\x54\x36\x5e\xcb\x7f\x2e\xf3\xff\x45\xae\xba\x85\x69\xe2\x19\x43\x9f\x3f\x1c\x20\x6b\x46\x28\xf8\xde\x71\x04\x31\x9c\x55\x27\x60\x57\x6c\x30\xba\xaa\xa2\x30\x5d\x59\x96\x64\x05\xe6\xcc\x99\x5c\x4d\x4b\xe9\x7d\x9e\xe7\x97\xf2\xc3\x2d\xe3\x19\x9e\xd3\x34\x23\xa3\xcb\x71\x35\x6e\x16\xbb\xb5\xab\xb1\xb5\xd8\xad\x1c\x8e\x4b\xd6\x19\x14\x62\x23\x2f\x65\x4f\x58\xd4\x8a\x8b\xf3\x15\xb3\xe6\x2b\x5e\x6d\x7d\xbd\x89\xa9\x5b\x48\xa5\xd4\x6c\x75\x53\x75\xb2\xf4\x32\x8a\xfd\xf4\x16\x8d\x82\xae\xec\x96\xea\x86\x35\xa4\x8a\xee\x5d\xab\x69\x11\x54\xb4\x3e\xb0\xd7\x99\x74\x84\x71\x04\x03\x16\x9a\xe6\x2a\x9d\x11\x83\x7c\x93\x35\x08\xa6\x24\xb7\x79\xee\x29\x99\xff\xf7\xf6\x43\x11\xad\xd6\xbe\x54\x0a\x45\x95\x61\x13\x01\xae\x11\x59\x97\xfd\x20\x24\x99\x59\xa9\x7a\x02\xd3\x3b\xd5\xf1\xb3\xac\xa4\xbc\x55\x27\x40\xfb\xeb\x8f\x3d\xd6\x19\xd8\x68\x2a\xe1\xc3\x1e\x08\x8b\x62\x80\x4a\x1d\xc0\xdd\x20\xde\xd9\xee\x41\x46\x43\xc6\x8e\xb4\x60\x5f\x47\xce\x03\xb9\x48\x5f\x34\xf9\xaa\xdf\x35\x8e\x79\x1e\x2a\xc5\x62\x87\xcd\x88\xf2\xbc\x5f\xea\x5e\x66\x74\x38\x00\x6d\xe6\xc5\xce\xe3\x47\x8f\x1e\x3c\x5a\xed\x81\x18\x40\x34\xd2\xeb\x58\xce\xc6\x85\x10\x92\x6b\xdc\x88\xbc\x5a\x73\x01\xf8\x53\xd4\x18\xab\x91\x18\xd2\x6a\x24\xdb\x6a\x2e\x56\x91\x6c\xb7\x49\xd7\x24\x8a\xd1\x15\xca\x42\x32\xb6\x57\xed\xea\x82\xad\x90\xf9\x3a\x25\x1d\x14\xa8\xf8\xbe\x89\x8a\x9a\x32\xae\xec\x4f\xbf\x87\xbe\x69\xda\xf5\xe9\x55\x6c\xa2\x40\x6e\x86\xb5\x5e\x36\xa8\xee\x02\x10\x90\x0e\x3e\x5e\x7b\x02\xeb\x63\x8d\xb6\xfc\xee\x9e\xb5\x51\x88\x3a\xf6\xed\xd5\x18\x92\x6a\xf0\xe5\x2a\x97\x9c\x49\x5c\xed\x02\x71\xc5\xdc\x6e\xe8\x9d\x69\x62\x27\xc3\x12\x24\x25\x16\x8e\xeb\xac\x63\xf9\x85\xd8\x8d\xce\xac\xf4\x54\xc2\x76\x23\x25\x82\x95\x95\x20\x41\x5c\x5d\x12\x2a\x34\x13\x08\xa4\x33\xc1\x90\xbc\xaf\x31\x24\xb0\x6e\xc1\x86\x4e\xb6\x89\x10\x6d\x20\x70\xb9\xc2\xdb\xd7\x30\x0a\x22\xd7\x09\x60\xa1\xc3\x6d\xa3\x28\x91\x5c\xb9\xaa\x8b\x54\x95\x95\xbb\x4c\xd1\x90\x7c\xea\xd8\x7f\x06\x9d\xaa\xb6\x3f\x01\x29\x5d\x25\x65\x65\x69\xdd\x85\x10\xfa\x2b\x3e\xa9\x97\xcf\x4a\x12\xee\x77\xd8\x59\x62\x9a\xf5\x8a\xc8\x4a\x05\xeb\x38\x30\x52\xe9\x4d\x14\xae\x81\xf9\xfe\x8e\xb1\x2f\x77\x1d\x31\xde\x78\x65\x1e\xe4\x46\xd4\x03\x59\x1f\x27\xe2\xdf\x8c\x34\x05\x35\x22\x35\x00\x90\x43\x54\xde\x53\xea\x80\x44\xa6\xeb\xb7\x31\x86\x35\xb0\xba\x31\x94\x8d\xaf\x48\x24\xc4\xce\xc4\xcc\x8f\x3f\x31\xbb\x8d\x5b\x25\x36\xc8\xa3\x95\x3a\x80\x4a\xe5\x4c\x37\xa7\x7c\x56\xb1\x2a\x03\x62\x21\x1b\x91\x86\x88\x34\x23\x84\xb6\x0a\x6a\x70\x82\x23\x07\x75\x65\xdc\x54\xac\xc5\x1a\x04\x70\x02\x24\x15\x25\x6a\xd5\x8c\x88\xca\xa0\x8c\x4f\x47\xb2\x92\x31\x5e\x99\x49\x62\xcb\x5a\x01\xe6\xd5\xb9\x27\x25\xed\xe7\x19\xf6\xe9\x4f\x09\xa9\x4f\xfc\xf3\xcc\xfe\x48\xa5\xe3\xb6\x3a\x6d\x8d\x86\x25\xac\xaa\xfa\x6f\x13\xd2\xa8\xff\x43\x66\x97\xf8\x3b\xd6\x85\xd0\xfd\xda\x5c\x8d\x55\xbb\x16\x03\xfb\x62\xbb\x7a\x95\xcd\xa3\xcf\xb7\x1e\x20\xbb\xac\xdc\x6e\x03\xa7\xde\xe2\xbb\xac\x06\x9c\xce\xa9\xa0\xfb\x3e\x21\xa4\x08\x2c\xab\x28\xe8\x61\x8b\x32\x0c\x8e\x5d\xb5\xe5\xe8\x61\x46\xd5\x29\x7b\xb4\x6e\x17\xda\x6e\x89\x53\x5d\xad\x25\xd4\x65\x87\x09\x8e\x6b\x66\xa1\xa8\x20\x8d\x20\x25\xe0\xbf\x31\xaa\xfb\xdc\x3a\xcc\x08\x67\xaf\x13\x1c\x91\x72\x2f\x0b\xd9\x71\x86\xe1\xae\x9b\xaa\x39\x22\xeb\xf7\x9c\x43\x75\x57\xe1\x38\xc3\x2e\xf5\xe1\xd0\x85\xf2\xd6\x6c\xf2\x4e\x87\xdb\xb8\xc4\x09\x97\x95\xde\x25\x34\x63\xc7\x09\x4e\xc8\x28\xeb\xad\x5b\xa4\x62\x57\x4e\x0a\xa1\x59\x65\xda\x54\x3f\x40\x53\xdf\x75\xff\x13\xc5\xb1\x15\xd4\xc9\x73\x1c\xc3\x8d\x4d\xf6\x36\x53\x2e\x61\x08\x8d\x7b\x51\xec\x5f\xf8\x21\xdb\xaf\xa7\x81\x7d\xa5\x1b\x05\xec\xa4\x9e\x5a\x4a\x2a\xf7\x1a\x79\xb5\xa4\xf2\xa2\x9e\x0a\xeb\xf5\xcd\x6a\x0a\x94\x7e\xd9\x28\x2d\x78\x9f\x9f\x9b\xf5\xa9\xbb\xab\xcf\xea\xa9\x72\x9c\xd8\xab\xf5\x34\x35\x76\xbf\x34\xda\x72\x92\x4b\xf6\x5d\x99\x42\x0a\xfa\x3a\x63\x87\x59\xcd\x51\xc0\xdb\x6c\xdd\xc5\xc7\xeb\xba\xed\xb4\x92\xf9\xc3\x9a\xb2\x1b\xae\x24\x95\xd2\x58\xa4\x28\x12\xf5\x15\x2f\x4c\x1d\xad\xc2\x75\x99\x5a\x3a\x70\xb2\xad\x31\x9f\x66\x8c\x8b\x0d\xab\x6e\x30\x29\xb0\x6f\x8c\x33\x8b\xa1\x7e\x1f\xd1\x48\xf2\x80\xe2\x3d\xb4\x70\x3c\x46\x36\xb2\x62\x88\x2d\x8c\xfe\x82\x08\xcd\x2c\xf6\x75\x02\x77\x8f\x64\x49\x5f\x66\x15\xb9\x7c\x42\x6c\xbd\xe3\x71\x95\xdc\xef\xcb\x32\xeb\xfa\x97\xb1\x33\x19\x4c\x6d\x2d\x64\x89\x9d\xdb\x52\x11\x1a\x50\x1f\x11\x5b\x50\x69\xd9\x82\xab\xaa\x1a\x23\xcb\x2d\x9b\x4d\x54\xe2\x67\xc8\x4a\x08\xcd\x0a\xba\xff\x3b\xc6\x52\x0c\x14\x90\xf6\xf3\x20\x3a\x17\xc0\x92\xda\x25\x0a\x7d\x5f\x96\x97\xcc\x8a\xc2\xce\xd5\x68\xaf\x08\x7c\x10\x68\xae\x57\xf1\xa7\x5c\x6f\x63\x62\x94\xfb\x7d\x64\x7d\x9d\x28\xc2\x41\x2c\x7d\x50\x08\x27\x4f\x56\x28\xc6\xd4\x56\x95\xd0\x93\xac\xe5\x00\x5a\xc3\xaf\x60\x17\xf3\x56\xd0\x7b\x77\xe6\xd4\x68\x52\xd0\x17\x77\xe6\xab\xce\x4a\xde\x7c\x6c\xe0\x00\xbf\xca\x61\xab\xe1\x0d\x58\xe1\x23\x64\xab\xe7\x70\xfc\x75\x82\x39\xb1\xe1\xd7\x82\x2e\x16\xf4\xe5\x1d\xb5\x43\xcd\x2b\x15\x82\x57\x24\x31\x66\xa4\xa0\x3f\xdf\x55\xb6\x05\x18\x28\x5b\x05\x32\xa4\xcf\x3e\xd6\x33\x31\xc1\xd5\x69\xcb\x1a\x82\x72\x81\xa0\xbc\x8e\xa0\xbc\x81\xa0\x05\x7d\x75\x17\x84\x52\xb6\xd0\xd5\x8f\x05\xfe\xa6\x50\xea\x97\xbb\xe7\xba\xb6\xa1\x14\xf4\xbb\xbb\x5a\xd0\x8b\xba\xd6\xc8\x67\xba\x91\xaf\x56\x8f\xaf\x64\x9e\xe5\x05\x4f\xed\x94\xaa\x58\x4d\x2b\x01\xf9\x9b\x26\x8c\x60\xf3\xe0\x98\xe6\xbd\x14\xbf\xce\xe8\x52\x6c\xda\xf6\x57\x19\x7e\x9b\xad\x47\x8f\xe7\xd5\xb8\x86\x35\xa2\x17\x03\xb9\xa2\x92\x20\xad\xbb\x00\x89\xc9\xe8\x18\xec\xa5\x6a\x3d\x26\x6d\xe4\x86\x2b\x72\x53\x10\x42\xe5\x5a\x14\x80\xec\x67\x84\x6a\x1a\x21\xde\x4f\xee\x04\x6c\x04\xa0\xd4\x2e\xb0\xd9\x88\x06\x19\x54\xa9\xd7\x8c\xa8\xe4\xde\xc7\x7a\xf7\x8d\x5b\xdd\x82\x93\xee\x32\xfc\x0c\x73\x42\x96\xbc\x7e\xd2\x33\xaa\x22\x60\xaf\x19\xb3\xf0\x9a\x46\x88\x67\x10\x1f\x9d\xa6\x19\x29\x04\x28\x7a\x59\x0a\x50\x5e\xfc\x0d\xa0\xd4\x8e\x99\xee\x06\xa5\x52\x55\xad\x82\x22\x16\xa7\x00\xe3\xcd\xdd\xc3\xca\x5b\x0e\x53\x9b\x43\x4d\xaf\xe5\x30\x6b\xda\x2b\x2a\x7d\xf9\x37\x57\x7a\x24\x2b\x15\xdb\x80\xa8\xf0\xe7\xbb\x2b\x84\x81\xc9\x73\x69\x7c\x95\xd6\x42\x63\x8f\x79\x75\xbc\x62\x43\x13\x29\x3d\xc8\x88\xac\x5b\x31\x01\xa2\xfe\x67\xbf\x1f\x60\x45\x41\xd8\x64\x4a\x65\xc5\x16\x42\xf4\x4c\xd5\x2d\x71\x5e\xd4\xfc\xea\xee\x9a\xdb\x20\xae\x0e\x05\x6d\x29\x80\xa5\x0d\x23\xb1\x94\xa5\xe5\xa5\x15\x42\x79\xc5\xc7\xab\xfe\x7d\xc8\x08\xa1\xbf\x7f\xe5\xd5\x33\x0b\xc0\x7f\xc9\x08\x15\x3c\x8e\x78\xfe\xee\x63\x9d\xe8\xac\x74\x02\x03\x3b\x7f\x37\xdc\x75\xbe\x5e\x81\xfe\x2e\x23\xc4\xe6\xcd\x83\xd0\x42\x8c\x28\xe5\xb0\x4b\xa1\x34\xfa\xfa\xe8\xe0\x2d\x6a\x8b\x04\xa1\x19\x4e\xed\x4e\xbd\xcd\xcc\x5c\x56\xd1\x66\x51\xfe\xa9\x95\x7c\x50\x51\xb3\x7e\xc8\xd8\x87\xa4\xe7\xc6\xdc\x49\xb9\xf4\xa5\x71\x72\xf8\x9a\xfe\x08\xa9\x31\xbf\x8a\x3e\x54\xa9\xa3\x1f\x32\x70\xad\x2e\x44\x8c\x95\x02\xa8\x35\x9e\xe9\x0f\x99\x32\x41\xfe\xd0\x70\x99\x46\x08\xfd\xb1\xaa\x69\xa5\x91\xf6\x9a\x7e\xdc\x54\x53\x51\xfa\x6b\xfd\x26\xab\xdb\x89\xd4\x63\xb5\xc8\x8b\xc3\xad\xa1\x23\xa4\x23\x8e\x44\xdf\xec\xbf\x2b\x8f\xa8\x86\x83\x8d\x4f\xac\xa2\x7f\xd5\x03\x34\x97\x90\x7e\x2c\x42\x05\xb8\xb3\xaa\x26\x03\xac\xb6\xa5\xed\xa2\xea\x61\x58\x39\x56\x36\xc2\xaa\x7b\x5f\x67\x4d\xdb\xa5\xe1\x88\xaf\x39\xa2\x94\x77\xc6\xe5\x00\x48\x1e\xae\x12\xf7\x78\x3d\x4a\x0f\x9f\xda\xcb\x62\xc4\x3f\xdf\x1a\x7f\x93\xa9\x81\xc1\x21\xa1\x9d\x41\x9b\x8b\x11\x4e\x96\x73\x65\x6b\x00\xe1\x87\x49\x19\xaf\x7a\x53\x27\x93\x71\x9b\x57\x16\x9f\x27\x38\xa5\x1f\x2b\x8a\x43\x42\xec\x3a\x54\x1b\x40\x6a\xf5\xfb\x02\x50\x7e\x6c\x06\x42\x21\x65\x0a\xd4\x29\x4d\xa2\xca\x41\xfe\x36\xc3\x2d\xf7\x2b\xc9\xb2\x8c\xf4\x57\x5d\x5f\x00\x47\xab\x2e\x75\x99\x43\x1d\xd6\x19\x92\x11\xb8\xc2\x33\x82\x36\x8f\x22\xe1\x38\xec\xc9\x50\x9c\x89\x1d\x8e\x02\x9e\x1a\x33\x38\x68\x37\xcd\xb4\x17\xf3\x10\xa2\xa4\xe2\x40\x3d\x32\x9d\x46\x83\x5e\x92\x3a\xa9\xef\x1e\xc2\xeb\xcb\x10\x2c\x7f\x9b\x29\x34\xe8\x9d\xb9\xd1\x7c\xe1\x07\xdc\x63\x9d\x01\x8d\xa0\x22\x0d\x81\x13\xb0\xce\x80\x10\x2a\xab\x3f\x4b\xdc\x68\xc1\xf7\x3d\x16\x13\xea\x8f\xf1\xac\xa1\x48\x10\x9b\x5a\x9e\xc3\x15\xdf\x7b\x57\x21\x38\x4a\xae\xbd\xf4\x92\x24\x7e\x1e\x85\x29\xbf\xd1\x99\x16\x4e\xcc\xc3\x54\x65\x92\x2f\xcd\x82\x8d\xb4\x5a\x79\x92\xe7\xa8\x8a\x88\x5a\x0e\xd1\xd9\xd9\x77\x27\x7b\x67\x47\x47\x87\x67\xcf\x0f\xde\x1e\xef\xfd\x70\x7c\x76\x96\xe7\x38\x65\x2d\xe9\x84\x42\x7c\xc2\x72\x7b\xa3\x09\x28\xa1\x61\x34\xcf\x62\x7e\xe1\x27\x29\x8f\xb9\x57\x9a\x7e\x25\x1b\x3f\xf4\x1c\xcf\xc3\x3e\x29\xc4\x28\x26\x49\x7c\xa8\xb2\xb0\x19\xb1\x39\x1c\xbf\x39\xe3\x86\xa3\x9d\x5a\x9b\x99\xf2\x7a\xd7\xbb\x17\x47\x51\xda\xbb\xa7\xa6\xb7\x97\x5c\x3a\x5e\x74\x7d\x18\x45\x29\x59\xf1\x99\x57\x2f\xed\x82\xcf\x01\x42\x67\xc4\x9f\x35\xe6\x8b\x2c\x25\x1a\xa5\x4c\xa3\xc3\xa8\xc4\x8b\xa6\x47\xd7\xa6\x0b\xbe\x90\x50\x08\x6b\x4d\x0a\xa9\x25\xae\x6a\x39\xe7\xb3\x28\xe6\xcf\x61\xbb\x1e\x35\x5f\x59\x3a\x9e\x94\x91\xf4\x53\x3a\x23\xf6\x64\x36\xad\xb6\x9e\x98\xe3\x4a\x99\xb4\xe9\x32\x10\x4d\x2e\x9d\xb9\xdd\x71\xe4\xa5\x20\xfb\x30\x2b\xf4\x4a\xf8\x3e\x63\x4b\xe0\x4a\xd0\xee\x95\x93\x3a\x31\xb8\xb5\x5d\x24\xb6\x54\x2d\xc9\x5f\xe5\x60\x55\xbb\xaf\x47\x9e\x7f\x05\x57\x49\x7d\x0f\x6e\x76\xb7\x39\x69\xe9\x81\x5b\x3b\xdc\xc7\x9e\x7f\x95\x27\x0b\x27\x24\x7d\x08\x6e\x9f\xf0\xf8\xad\x68\xad\xbd\x62\x24\x73\xf8\xde\xe6\xef\xd7\xbe\x97\x5e\xaa\xcf\x3a\x20\x81\x0a\x11\x26\x23\xa0\xcb\xac\x0f\xb7\x8a\x82\x7a\x4e\xea\xac\xdf\x14\x5b\x3a\xd0\xd1\x23\x70\x18\x6d\x23\x44\x83\xc8\xf1\x20\x02\xf9\xa0\x80\xe8\xf2\x8b\x2c\xe5\x9e\xfd\x75\x86\xbf\xce\xf0\xb2\xa0\xfb\x21\x9e\xa0\x0b\x9e\x1e\x47\x1f\x78\x88\xa6\x84\xd0\x25\x5c\x2a\x13\x74\xc1\x6b\xb9\x88\x56\xc3\x37\x29\x11\xf5\x64\x5e\x39\xbe\x49\x9e\x8b\x76\x08\xbd\x16\x03\x64\x2f\x55\x7f\x9b\xc2\x15\x54\x91\xf0\xf4\x24\xe1\x31\x04\xd1\xa7\xf3\x28\x0b\xd3\x66\x73\x08\xfc\x95\x89\x9c\xb2\x8e\x71\xb3\x54\xf5\x81\xd8\xf0\xa2\xba\xc9\x3a\xc3\x82\x4a\x0f\x89\x89\xbd\x54\xd9\xd7\x6f\x6d\x49\xe7\xfd\x62\xfb\x6b\x94\x1d\xc8\xe5\x54\x1f\x42\xb0\x87\x91\x4e\x07\x60\x48\x4c\x53\x42\x56\x92\x38\x7e\x6d\x28\x07\x1d\x34\x66\x78\x7d\x78\x12\x1e\x5f\xf1\x38\xcf\xaf\xfd\xd0\x8b\xae\x7b\x41\x24\xaf\x5e\x29\x3d\x09\xb1\x50\x3f\xe6\xf3\x28\xe5\xbd\xc5\xe5\xa2\xef\x39\x57\x7d\xd9\x7a\xd2\x47\x56\xad\x97\x16\xea\x0f\xb7\x9e\xf6\x16\xe1\x05\x1a\x85\x3d\x79\x79\x1a\xa3\x5d\x79\x80\xfd\x0b\xd4\x88\x28\x7a\xc6\x9d\x98\xc7\x86\x2a\xa9\x67\x55\xd0\x76\x5d\xe2\x87\xee\x21\xff\x39\xe3\x49\xca\xbd\xee\xf7\x7e\x7a\x89\x28\xfa\xe1\xcd\xeb\xaf\xd2\x74\xa1\xd2\x11\xa1\x70\xd3\x0d\xc7\x74\xa9\xef\x76\x85\x05\xe9\xa5\x97\x3c\x5c\x09\x2a\x37\xc3\x69\x2f\xfa\x50\xde\x86\xe8\x9d\x07\xd1\x39\x06\x36\xe7\xe1\xe0\x21\x1c\x38\x0b\x42\x91\x25\xb5\x28\xd1\x65\x84\x68\x5e\x5e\x6d\x87\x2c\x86\x1b\x79\xdc\x40\xe5\x3e\xa0\x4b\x0a\x12\xd9\xd2\x34\xaf\x4d\x37\xe5\xcd\xf9\x4a\xc7\x6a\xa4\x4f\x0e\x5f\xaf\xb2\x94\x38\x05\x55\x04\x21\x3d\xa9\x9e\x5a\xa9\x74\x75\xde\x1b\xcd\x88\x0d\x25\x0a\x78\x8f\x43\x17\xee\x43\x4f\x0c\xf5\xdd\x90\x25\x0d\x7f\xee\x5c\xc0\x2d\x7b\x43\xcc\x9a\x81\xee\xeb\x0e\x71\x35\x8d\xf4\x3e\xb2\x8d\xfb\x10\x33\x80\x27\x89\x73\x01\xfe\x70\xd5\xc9\xd3\x0a\x16\x17\xd2\xab\xef\x4f\x2d\x3a\x0d\xe9\x0e\x95\xa5\xbd\x7b\xb2\x7f\x7b\x01\x07\x75\x65\xc8\xd2\xde\x59\xc2\x83\x59\xef\xcc\xcd\xf3\x9a\x6d\xac\xc2\xdd\x71\x88\xd3\x1e\x28\x53\x97\xa9\x73\x61\x23\x57\x13\x21\x54\xd0\x49\xaa\x1b\x1f\x87\x18\x45\x6e\x37\x59\xf8\x61\xc8\x63\x44\xe1\x8a\x31\x92\x3d\xec\xaa\x3c\x88\x26\xe9\x6d\xc0\x6d\x24\x37\x2c\x81\x71\x3d\x78\xb4\xd0\xe2\x66\x64\x5c\x72\xff\xe2\x32\x5d\x4d\x46\xd4\x49\xd3\x58\x2c\x4b\xff\x17\x6e\xa3\x64\xee\x04\x01\xa2\xc8\x89\x7d\xa7\x1b\x38\xe7\x3c\x40\x76\xda\xbb\x07\x17\xf5\x6e\x52\x8c\x5e\xab\xa6\x84\x84\x6d\x4b\x98\x1c\xb5\x89\xaf\x81\xc4\xbd\xb2\x72\x09\x91\x6a\x97\x26\xb1\x6b\xa7\x8d\x89\xa5\x48\x4c\x45\x57\x50\x05\xa4\x0c\x4e\xc4\x9e\x5d\x14\x64\x4a\x87\xc4\x4e\x7b\x67\x1c\x93\x62\xf4\x53\xd6\x3b\xbb\xf6\xd3\x4b\xb1\x49\x2f\x16\xc0\xd8\x54\x61\x19\xd2\xe0\x5f\x9a\xcd\xe7\xc1\x9f\xc2\xe6\xa7\xc1\x3f\x23\x9b\x5f\x87\xea\x1f\xc0\xe6\x4b\xbe\x24\x0c\x4a\xbe\xc4\x75\x05\xf1\x4b\x5e\xfb\x49\x7a\x18\x5d\x23\x5a\x2e\xca\xc4\x5e\x4a\xa2\x6a\x7f\x9b\xe1\xa5\xe4\xbf\xec\x9f\x32\xba\xc2\x7d\xdb\x93\x69\xa1\x1c\x9e\xd0\xef\x33\xfd\xd4\x19\xae\x3f\x35\xfe\x90\x42\xb3\x42\x8e\x84\x40\x71\x1d\xb2\x47\x35\xae\x63\xb0\x99\xd5\x70\xb3\x58\xf0\xd7\x87\x91\xba\xc6\x50\x67\x30\x78\x80\xe5\x3f\xcd\x63\x88\x85\x86\x28\x2a\xd5\xa8\x40\xb2\x04\xbf\xf1\x3a\xc4\xe5\x28\x20\x3a\x41\x10\x7e\x15\x51\x94\xf0\x00\x48\x44\xf9\x4d\x33\x27\x7e\xa2\x92\x8e\x54\x8e\x4d\x6c\xca\x6a\x0d\x65\x44\x0c\x49\xe5\x65\x2a\xd9\xe9\x82\xe3\x07\x91\x55\x65\x7c\x2d\x36\xa3\x35\xaf\x09\x92\x1b\xa9\xf6\x27\xd9\xba\xf1\xf9\xd2\x50\x35\x19\x45\x2d\xfc\x49\x3d\xef\x7e\x98\xf2\x78\x11\x05\x4e\xca\x71\x4a\xcb\x01\xaf\x43\xd1\xf3\xfc\x64\x11\x38\xb7\xb0\x15\x81\x8b\xea\x82\x50\xb9\xbb\x37\xba\xa7\x09\xbb\x60\x6b\x92\xe7\xd5\xf8\x63\x52\xb1\x3d\xf5\xa1\x3f\x11\x43\x9f\x5c\x46\xd7\x6f\x24\xbd\x81\x41\x7c\xbb\x32\xe2\xc7\x07\xaf\x5e\xbd\xde\x3b\x3b\xda\x7b\xbd\xf7\xfc\x78\xff\xe0\xed\xd9\xee\xf3\xe7\x07\x27\x6f\x8f\xcb\x11\x77\x2f\x9d\xf0\x82\xc3\x3c\x6f\x60\xa5\xb4\x4f\xc1\x10\x7f\x1b\xf6\xe6\x4e\xfc\xa1\x5a\x41\x86\x1e\xc1\x5a\x34\xb4\x6f\xc3\xde\x75\xec\x2c\x6a\xcb\x2c\x54\x2e\xb7\x46\x44\xd9\xd5\x87\xbd\x45\xcc\xaf\x58\x28\xfd\xe9\x48\xe3\xfa\x81\x8e\xb3\x98\x45\x8a\xa4\xf6\x52\xcd\xe1\x88\x6c\xec\x01\xdd\x73\xf0\x52\xc7\xfa\xe5\xbd\x06\xb6\x29\x56\x8c\xc2\x35\x76\x3d\x0b\x67\x59\xe6\x7b\x36\x2f\xe7\xc1\xf7\xa8\x40\xc0\x33\xdf\xb3\xd3\x42\xc8\x11\xa2\xdd\x07\xf6\xd6\x00\xe2\xac\x80\xa7\x2b\x1e\xa6\x44\x31\x28\x63\x88\xd2\x26\x96\x47\xaf\x8a\xe6\xdc\x13\x15\xec\x7b\x94\xf7\x6a\x0b\x84\x71\x48\x4e\x7a\x33\x3f\xf4\x70\x9b\x7a\x49\xb4\xcd\x18\x8b\xc4\x36\x6d\xf3\x5e\x6d\xd2\xf0\x32\xf5\xd3\x80\xdb\xbc\x86\x7d\x2f\x1d\x21\x6e\x1b\x69\x64\xc8\xc9\x31\x44\xed\x3d\x44\xa8\xc7\x13\xd7\x8e\x15\x7c\xc7\xfc\x26\xa5\xf2\xd1\x46\x9e\xc8\x17\x23\xdd\xa9\x47\x3a\x84\xa5\x57\x86\xaf\x0c\x7b\x49\x0a\xd7\x52\x0a\x02\xe1\x54\x09\x51\xce\x6a\x56\xd1\xad\x7d\x71\xdc\x89\x05\x1c\x97\x37\xc9\x37\x63\x01\x5f\xc5\x02\x2e\xb1\x80\x6f\xc2\x82\xb4\x81\x05\x5c\x63\xc1\x4d\x0d\x0b\xd2\x4f\xc6\x82\xb4\x86\x05\xb5\xb9\xf7\x67\x78\x6b\x30\xec\xc0\xf5\x24\xde\x98\x7e\xc1\x34\x42\x8b\x5f\x56\xf7\x27\x05\x8a\x08\x84\xa0\x11\x8b\x21\xe0\x50\x9d\x3d\x88\x48\x79\x0b\x29\xaa\xc7\x2d\x28\xb3\x95\x35\x3e\xd5\x36\x65\xfa\xa6\xa1\x73\x1e\x67\x0b\x88\x39\x01\x47\xa8\x0a\xba\xa7\xa2\x7b\x35\x2c\x4b\x3f\x11\xcb\xe2\x1a\xbe\x26\x93\xc1\x54\xe1\x6c\x41\x54\xbd\x5f\xae\x23\x07\xd7\xc8\x01\x17\x7d\x0a\x42\xb9\xc6\x90\x42\x45\xa0\x88\x83\xbf\x99\x57\x95\x7c\x5e\x2a\xd8\x95\x6e\x2c\xc8\xe1\xa4\x9e\xe2\x72\xc1\x31\xaa\x24\xf7\x92\xbb\x1f\xce\xa3\x1b\x44\x97\x8a\xf5\xd3\xe1\x0e\xd6\x08\x04\x05\xf6\xd2\x4e\x7b\xeb\xdb\x3c\x45\x97\xbe\xc7\x35\xff\x29\x64\xf0\x28\xb4\xd5\x86\x67\xb7\xf0\x5c\x69\x6f\xd3\x6e\x89\x4b\xf4\x21\x85\xe2\x26\x69\xda\x3b\xbb\xc2\xd2\xfb\x60\x6b\x37\x4a\x86\x56\xf5\xa0\xc9\x9b\xb6\xd0\x86\x3c\xaf\x92\xa3\xf0\x5d\xcc\xe7\x7e\xc2\x93\x23\x67\xae\xfa\x24\xf2\x68\x2d\x43\x1d\x9d\x95\x66\xe1\xc1\xa3\x4f\x81\x6c\xe9\x45\xf3\x77\x4a\x4f\xc2\x6f\xd2\xe7\xd2\x7f\x88\x60\x8d\x13\xfc\xf1\xe6\x61\xf7\xf8\xdb\xab\x6f\x74\x1a\x75\xd1\xdf\xa9\xda\xb9\xe3\x07\x1f\xad\x4a\x61\xd8\x79\x96\xa6\x42\xae\x5e\x4a\x96\xeb\x79\xe0\x24\x89\x8d\x54\x4d\x49\x57\xc6\x89\x97\x28\xd5\x4d\x63\xff\x42\xec\xae\x5a\x0c\xf1\xbd\x8f\xe4\xec\x0a\xe1\xa8\x36\x41\x57\x42\x0e\x12\xc8\x66\xa3\xd8\xb9\x46\x45\x01\x50\x24\x0b\x67\x0d\x80\xec\x43\x77\x16\xf0\x1b\x43\xfd\xed\xce\x7d\xcf\x0b\xb8\xb1\xd2\x9a\xda\x15\xe0\x4d\xca\x77\xa2\xbf\xa7\xa1\xa1\xfe\x13\xcd\xc3\xc8\xd4\xb6\x8f\x71\xe3\xad\x3e\x05\x0d\xc9\x4c\x71\x3e\x50\x33\x21\x56\xbd\x52\x3d\x9a\xbe\x0b\x03\xa7\x06\x43\xb2\xba\xfc\x66\xe1\x84\xde\xd9\x3c\x8a\xb9\x16\xfb\x2e\x7d\xcf\xe3\x21\xb2\x51\x1a\x67\x1c\x29\xdc\x9c\xae\x4f\x8e\x17\x47\x8b\xda\x2a\x11\xaf\x5d\xdf\x43\x9b\x86\x58\x7c\xf7\xa2\xeb\x70\x75\x8c\xd3\xe8\xe2\x42\x48\xad\x9f\xfd\xae\x99\x99\x47\x1e\xb7\x91\x1b\xf8\xee\x07\xc1\xc0\x06\x51\xc2\xbb\x51\xd8\x95\x09\x36\x42\x54\xab\xd5\x97\x1e\x0f\x9c\xdb\xaf\x7c\x8f\xdb\x83\x42\x4d\x60\x16\xb4\x4c\x5f\xe0\x27\x42\xe6\x4e\x7b\x67\x01\x56\x3b\x36\x6d\x13\xf0\x42\x8c\x02\x5f\x89\xbb\x5c\x10\x25\xa8\x52\xee\x55\x77\x63\x65\x39\x02\x7a\xfa\x43\x8c\xc0\x7b\xb5\x58\x27\x7e\xcc\xdd\xd4\xbf\xe2\x89\x3d\x51\x53\x23\xba\x18\x20\x1a\x3b\xd7\x30\xd9\xe8\xaa\xab\x52\xca\x08\x32\x15\x5a\x50\x7e\xb3\x88\x79\x92\x00\xaa\xd6\xd2\x51\x31\xa5\x0d\x90\x22\xb7\x1b\x3b\x9e\x1f\xe9\x65\xa4\x66\x4f\x5a\xf5\xc1\x17\x54\xd0\x6a\xd1\x2a\xef\x7d\x14\xf6\x75\x2e\xb6\xaf\xb3\x9f\xf1\x4a\xcb\xa4\xb1\x3d\x4f\xea\xdc\x63\x93\x0e\xf2\x5a\xb8\x8f\xb0\xe9\xa4\x42\x71\xb2\x58\x0c\x28\x29\xa6\xd5\x5e\x50\xa1\x71\x6d\x7d\x34\x56\x41\x03\xd7\x05\xb6\x4f\x09\x08\xa9\x74\x20\x9e\xfe\x3e\xdb\x6a\xe6\x7b\x52\xf3\xfb\xf7\xdc\xf5\x2e\x7e\x67\xa5\xab\x08\x2b\xaa\xee\xba\x5c\xc8\x31\x72\x2f\xd1\x15\xab\xbf\x7b\xa5\x82\xa9\xb6\xf8\xa5\x92\x46\x66\x80\xb4\xae\xd2\x43\x21\xda\x8e\xba\x92\xa9\xea\xfa\xa1\xe7\xbb\x4e\x1a\xc5\x55\xfe\xc6\x3e\x12\x73\xc7\xbb\x45\xf5\x0d\x33\xc9\x5c\xe9\x79\x7d\xa3\x32\x49\xd1\x27\xc3\x4f\x0c\x5d\x69\x4d\xaf\xb4\x11\x60\xcf\x4f\x7e\x1f\xc4\x55\x81\x06\xc8\x1e\x5f\xc4\xdc\x15\xc2\x5c\x03\x6e\xc5\x91\x7f\x12\xd8\x65\xcd\x44\x6f\x93\x74\x48\x8a\x51\x1c\xdc\xa1\xa7\x8a\xfe\xb5\xf5\x54\xfe\x9f\xa3\xa7\x8a\xfe\x29\xf5\x54\xd1\xff\x1f\x7a\x2a\xa7\x55\x4f\xb5\xa2\xa4\x6a\x6a\xb0\xea\xda\xaa\x38\xb8\x4b\x5b\x15\x06\x7f\x5c\x5b\xa5\xe9\x88\x8c\x8e\xd1\xd4\x56\x95\x3a\x28\x5f\x6b\x9f\x1a\xda\x0e\x27\xe6\xbb\x41\xa0\x53\xb4\x88\x00\xba\x0e\xad\x41\xf1\xb5\xee\xa4\x51\x50\x72\x0f\xb2\x80\x1f\x85\xbb\x41\x20\x0a\x49\xd1\xc7\xfd\xbb\x88\x3e\x70\xf4\x58\x97\x78\x2a\x9e\x47\x32\x79\x82\xdb\xf0\xfc\x2b\x5f\x0c\x2e\xd2\x3c\x62\xb9\x79\x43\x94\xc3\x15\x91\x69\x93\x10\xa5\xeb\x4d\x2e\x63\x3f\xfc\x20\xea\x95\x74\xf9\x92\x3b\x5e\xad\xe2\xcd\x42\x56\xfb\x30\x96\x92\xd6\x1a\xb7\xe8\x04\x01\x9c\x8a\x24\x88\xdc\x29\x73\xa5\xbd\xf5\x71\xfe\x24\xa1\xe5\xee\x0e\x7d\x5a\xe1\x7a\x11\x7a\x27\x65\xad\xfa\x77\xa2\x0c\x14\x11\xf9\x38\x5d\xfd\x1b\x9a\x79\x21\xd9\x10\xe3\x1f\xd0\xd4\x9e\x10\x92\xfe\xe4\x36\x0e\xa5\xf0\xf0\xc7\x38\x91\x30\xba\x8e\x9d\x45\x75\x9e\xd4\x3a\xe5\x9f\x3c\x7f\xbe\x67\x28\xa7\x50\xff\x14\xf0\xbc\xfa\x5d\xf0\xfc\x5d\x9a\xdc\xd3\x2c\x51\x9d\xb7\xd8\xd0\xae\xda\x64\x94\xec\xa2\xb7\xe3\x56\x83\xb9\x10\x57\x9c\x92\x10\x79\xe4\x66\xd4\x64\xb3\x74\x3a\x08\x5d\xbe\xa7\x87\xb0\xd4\x91\x17\x10\x1c\x56\x81\x24\x59\x1e\xf7\x2e\x96\x27\xf9\xd7\x66\x79\xb2\x3f\x87\xe5\x49\xfe\x29\x59\x9e\xe4\x1f\xcb\xf2\x40\x24\x9e\x8a\xe1\x59\x2c\x36\xf3\x39\x75\x26\xc7\xbd\x93\xc9\x71\x7e\x17\x93\x53\xb2\x2e\x59\x80\xe5\xbf\x16\x06\xc6\x4f\xf6\x43\x3f\xf5\x9d\xc0\xff\x45\xc8\x13\xe8\x82\xa7\x25\x19\x8e\x62\xcd\xcb\xac\x1e\xab\x6d\x3c\x4e\x2b\x39\xaa\x0d\xa7\x68\x6b\xd5\x17\x54\x6e\x4f\x07\xb3\xa3\x95\x3a\x3f\xf9\x20\x4e\x22\xaa\x3e\x76\xf3\xa3\x70\x3f\x9c\x45\xc7\xfc\x66\xdd\x57\xb9\x3a\x75\x0b\xcb\xbd\xea\xf3\xa5\xe1\xcc\xe5\x71\x9b\xa1\xeb\x35\xd4\xe1\xe2\xc6\x6f\x89\x32\xe2\xd9\x04\xf8\xa7\x9d\xdb\xcd\xab\x63\xbb\x4d\x15\x15\xa4\xa0\x8e\x2b\xd5\x41\x9b\x18\x42\x70\x34\xd8\x3e\x2e\x6b\x3b\x4a\xdd\x21\x5b\x53\xd6\x2e\xaa\x80\x55\x31\x0b\x77\x06\x34\x62\xe1\xf6\x9d\xb0\x95\x5e\x6a\x4d\x53\x45\xc0\x6a\x6a\x29\x15\xdc\x95\xee\x48\x26\x28\x29\x1c\x69\xd6\xae\x79\x0a\x2a\xa1\x41\x84\x5e\x3a\xa1\x17\xd4\x6d\xad\x6a\x5a\x17\xc9\xd1\x69\xa5\x3c\xc8\xcc\x58\x9d\x71\x46\xbf\x13\x18\x25\x06\x6f\x80\xe6\x85\xfa\xfa\x07\xc0\x19\x02\x38\x5c\xfc\x68\x31\xa0\x5c\x81\xab\x92\x80\x5f\xae\x3f\x44\x51\x4b\x6d\xad\xa7\xac\x87\x7b\x47\x7b\xc7\xfa\xb0\xe0\xa8\x3a\x3f\x80\xcc\x9b\x8e\x7a\xab\x96\x30\x29\xa8\x34\x9c\x7c\xc1\x93\x34\x8e\x6e\xd7\xf2\x6e\x6a\x00\x93\xa2\x50\xf6\x90\xb3\x80\xd5\x0c\x5f\x4b\x43\xe2\xd0\xb9\xf2\x2f\x9c\x34\x8a\x4d\xb3\x3f\x4f\x7c\x6e\x4c\x1e\x77\xbf\x9c\x9e\x9e\x9e\xf7\x95\xc7\x63\xfd\x1d\x4e\xdb\x76\x2f\x78\xb8\xe2\x90\x8e\x54\x04\x78\x11\x54\x48\x0b\x64\x8e\xed\x34\xcd\xff\x94\x05\x04\x9b\x05\x63\xde\x9b\x73\xcf\x77\xf2\x1c\x29\xcb\x46\x64\xa7\x34\x66\x97\x81\xf4\x44\x09\x7f\xd9\xd2\xf7\x12\xf0\x73\x7e\xc4\x53\x69\x76\x04\x1b\xac\xbc\xc4\x13\xf7\x7c\x2f\x01\xef\xe7\x29\x21\x4b\xf9\xe6\x78\x9e\xa0\xd2\x01\x17\xad\xf0\x5e\x02\x66\x3f\x22\x37\xef\xcd\x9d\x85\x69\xe2\xd0\x62\xe8\x34\xec\x7f\xf1\x99\x21\xbf\x9d\x1c\xbe\x66\xc8\x82\xaf\x2a\x77\x32\x19\x4c\x2d\x64\x7c\xd1\x47\x74\x35\xf3\x1b\x67\xb1\xf0\xc3\x0b\x51\x06\xcc\x22\xea\xee\xd4\xdf\x27\x51\x38\x3a\x77\x12\xfe\xf8\x21\x45\xd6\x79\x1a\x39\x38\x0b\x79\xe2\x3a\x0b\x8e\x5b\xdc\x41\x7e\x7d\x74\xf0\x56\x05\xd9\xf7\x67\xb7\x12\x3c\x42\x08\x91\x2d\x13\x1a\xf7\xb8\x14\x19\xe1\x22\xb0\x7a\x66\x5e\xe4\x02\xfd\xee\x35\xa4\x4a\x8c\x60\x68\xea\xa5\xc0\xd4\x8b\x21\xb1\x32\xfa\x6e\x92\x20\xaa\x86\xdb\x34\xab\x2c\x09\x4f\x77\xd3\x34\xf6\xcf\xb3\x94\x63\x04\x9f\xcb\x7c\x3a\x8e\x0e\x63\xcc\x0b\x4c\x13\x7b\x41\xd5\xb6\xe0\x2f\xf3\xbc\x7c\xbd\xe0\xa9\x82\x23\x79\x76\x7b\xec\x5c\xbc\x75\xe6\x1c\x4b\x26\x94\x4c\x06\x53\x42\xbd\x40\x99\x20\x3e\xbf\xf4\x03\xaf\xea\x0d\x21\x54\x02\x7e\x74\xc9\x79\x8a\xfc\xd0\xa8\x3e\xc5\x3d\x39\xdb\x72\x7b\x08\xeb\x3d\xab\x8a\xf4\xdc\x04\x4e\xb9\x59\x99\x5b\xed\xa1\xcf\xa4\xb5\xbc\xf6\xb8\x71\x1a\x22\xe5\xf7\x4e\x9b\x25\x4b\x64\x49\xfc\x5f\x78\x77\x48\xf9\xea\xb0\x8a\x3a\xdf\x46\x1e\x17\xed\x42\x7c\x0c\xd5\xb2\x2b\xe0\x17\x1f\x92\x51\x34\x49\xa7\xf5\xb1\x8c\xf9\x3c\xba\xe2\xb2\x83\xe2\x1b\x29\x1d\x54\x8f\xab\x4c\x7e\x98\xf0\x38\x7d\x06\x0b\x19\x73\x0a\xf9\xec\xea\x73\x7d\x90\x38\x29\x8a\x42\xc6\xd2\x16\xb8\xec\x05\x6a\x11\x5f\x06\x6c\xa9\x17\xf4\x55\xc0\x82\x00\x34\x10\xf3\xbf\xaf\x06\x02\x1e\xd6\xa4\x1d\x37\x0a\x53\xc7\x0f\x79\x6c\x64\x1f\xba\x0b\xc7\x03\x03\x3d\xa9\x2c\xb8\x1c\x7e\x4c\x19\xbd\xa6\xd6\x4c\xd6\x04\x9c\x74\x23\xf1\xda\x19\x28\xe5\xf2\x45\xec\x7b\x5a\x88\xd0\xf4\xb3\x5b\x92\x0d\x3f\x9c\x45\x2b\xca\xda\xe6\x31\x59\x29\xa4\x5d\x64\x69\xca\x63\x6d\x86\xd8\x3c\x6e\xbb\xb3\x1b\x6b\x3c\xcb\xba\x90\x26\xab\x51\x47\x6e\x39\x5a\x3b\xd1\xaa\xeb\x79\xca\x43\xc6\x52\xbf\xd2\x3c\x07\xfc\x54\x19\xee\x79\xc0\x9d\xd8\x28\x81\x83\xe8\x7a\xa0\x56\x09\x7c\xf7\x83\x9d\x6e\xa4\x0e\xad\xba\x95\x3a\x80\x9a\xf0\xca\x23\xb8\x76\x3d\xf8\x2a\xb5\x46\x14\xee\x79\x78\x47\x41\x94\x26\x02\xd6\x0c\x4f\xe4\x94\xe9\xee\xce\xc2\x75\xd2\x7c\xc7\x81\xe7\xdc\x89\x2f\xfc\xb0\x7b\x03\xb3\xd5\x8d\xfd\x8b\xcb\x14\x7d\xea\xc8\xec\x4a\xe0\x36\x48\xd3\x1f\x3b\xa9\x14\xe3\x03\xda\xc7\x9b\x5b\x19\x08\x44\x89\xaf\xb2\xce\xd6\x7e\x18\xa5\x70\x0c\x99\xea\x47\x7b\x34\xae\x4b\xc7\xf5\xe9\x97\x67\x7c\xc0\xd5\xac\xe1\x2f\x1c\xde\x77\x87\xdd\x61\x79\xe6\x1b\xf0\x59\x8a\xa8\x0b\x39\x96\xb5\x01\x92\xe3\x73\x1e\xa5\x69\x34\x47\x76\x6c\x0d\xc1\x0e\x5b\x01\x52\xb2\xdd\xd5\x19\x35\x6f\x39\x7a\x06\x03\x28\x1b\xcd\x79\x98\xf9\x29\x9f\xa3\x3a\x1e\xf1\x9e\x62\xac\x8a\x96\x23\xe5\xb5\xa3\x33\xe8\xcd\xca\xa1\x99\x3e\x38\x83\xb0\x7f\xe5\xb0\x4e\xa5\xeb\x8d\xce\x90\x3e\x78\xf8\xe8\xc1\x83\xa7\x0f\xb6\x9e\x3c\x25\xfa\x38\x58\x19\xe5\x36\xf6\x89\x86\x10\x34\x9e\xac\xaa\x1a\xaa\x19\x2d\xc5\x9b\x4a\x59\x21\xa6\x54\x9d\xfc\x80\xf1\x70\x8c\xc8\x94\x6e\x09\x98\x46\xf3\x16\xdd\x82\xdc\x69\x6f\x03\x56\x13\xfa\xe6\xed\x42\x5f\x83\x71\x4f\x4d\x33\xc5\x48\x30\x09\xdd\xab\xee\x60\xeb\xe1\x97\x5f\x6e\x7d\xf9\xf4\x6c\x20\xb0\x5b\xdd\xce\x38\x0d\xff\xb5\xfe\xef\x7f\x61\x1c\x1f\xbc\x38\xb0\x8d\xdd\x59\xca\x63\x43\x07\x84\xbf\xf0\xd3\xcb\xec\xbc\xe7\x46\xf3\x7e\x74\x1d\xba\x41\x94\x79\xe5\x43\xd7\xe3\x89\x7f\x11\x76\x93\xdb\x24\xe5\xf3\xfe\x22\x0b\x82\xfe\xc3\xe1\x53\xe3\x82\xa7\x89\x31\xe7\xf1\x05\xf7\x4e\xc3\xf4\x92\xc7\xdc\xb8\x8e\xc2\xfb\xa9\x71\xce\x0d\x27\x34\xf8\x4d\x1a\x3b\x86\xd8\x2c\x0c\x27\xf4\x40\x6c\xab\xbe\x87\x9c\x7b\xdc\x33\x9c\xf0\x56\xac\x60\xe3\x8b\xfe\x69\xd8\xab\x8e\xec\xf4\x0e\x59\x6e\x5a\xe7\x69\x68\xec\xc8\xba\x96\x02\x53\xd5\x81\xaf\x6d\x88\x95\x36\x12\x29\x4e\x20\x40\x14\x8b\x21\xb1\x0d\x79\x0c\x3a\x3a\x0d\x8b\x66\x97\xbd\xf7\x59\x92\x1a\x7e\x68\x1c\xbc\x38\x92\x6d\x2a\xc3\x05\x10\x5f\xc4\x6a\x92\xd5\x2b\x93\xf9\xe1\xa3\xc1\xe2\x46\xd6\x82\xe8\xdc\x59\xd8\xcb\x2b\x1e\xc3\xa1\xfa\x03\xaa\x98\x50\x7b\x82\xfa\x60\x79\xd7\x0f\xb2\x0f\x4e\x72\xe9\xc7\x69\x7f\x11\x47\xef\xb9\x9b\x26\xfd\xc8\xf5\x93\x92\xee\xf5\x33\xbf\x5f\xe9\x2a\xfa\xbb\x8b\x45\xef\x2a\xe3\x68\x4a\xc5\x7e\x26\x50\x53\xb4\x20\xd8\xd6\xc4\x46\xa3\x7f\xd0\x7f\xbb\xbb\xd7\xaf\x76\x47\xd6\x8b\xdd\xe7\xbb\xa3\x5d\xf1\xb3\xb7\xfb\x7c\x97\x3a\xbb\xbb\xea\x69\xfe\x4c\x3c\xc2\x97\xd1\xee\xee\xde\x2e\xbd\xae\x12\x20\xc3\x8f\xfa\x15\x49\x4f\xe9\x48\x77\x4b\x8f\x8f\xde\xf1\x27\x68\x3b\xe5\xf3\x85\x90\xd3\x77\xc4\x08\x6f\x7b\xfe\xd5\x8e\xdc\x73\xc4\xa3\x01\xdb\x24\x3b\xdd\xc4\xc0\x9c\xa2\x1d\xbd\x41\x6d\x5f\x0e\x8d\x2b\xd0\xe9\xb2\x53\x54\x52\x90\xfb\x9a\x09\xb9\x4f\x4e\x91\xd1\xaf\x72\x2b\x76\xc4\xb8\xea\xfa\x33\x76\x8a\x36\xf1\x2e\xc6\x8e\x31\x38\x45\xc6\x07\x7e\xcb\x4e\x37\xf0\x2c\xa7\xc8\x90\x0c\x89\xc8\x21\xf6\xf0\x53\x54\x07\xbb\xc6\xc0\xd4\xa0\x35\x8c\x6d\xc0\xda\x12\xe2\x35\xd6\xa4\x01\xae\xca\xbe\x93\x6f\xf7\xe1\x6f\x2d\xbd\x1a\xb0\xaa\x67\x92\x32\xb5\x0d\xc7\x0a\xab\x01\xa3\x52\xd2\x10\x76\x2a\x88\xc8\x29\x32\xfe\x02\x14\x83\x9d\x6e\x14\x7c\x57\x81\xeb\x37\xa1\x68\x05\xaa\xc6\x8c\x94\xe3\xb3\x91\x0b\x69\x0c\x15\xd4\xa0\xd1\xc4\xb8\xea\x26\x41\x94\xda\xb2\x8f\x3b\xab\xf4\x49\x0e\x6b\x6d\xfc\x5b\xd8\x0f\xd1\xe7\x36\x4c\x01\x10\x56\x10\xa5\xde\x03\xc1\x6f\xc0\x21\x0e\x3b\xad\xf3\x19\x2d\xf9\xb7\xfb\x0d\xac\xbe\xa3\x1b\xaa\xe3\x6b\xed\xd5\x27\x72\xfd\x9b\x61\x5c\x75\x67\x91\xc0\x38\x2c\x2b\xa0\x06\x18\xc8\x13\xb1\x89\xa9\x2a\x4f\x5b\xc8\xbb\x61\xd8\x12\x95\x65\x1e\x49\xe5\x37\x64\xf4\xbd\x2a\x9f\xef\xb5\x67\x5a\x43\x9d\xb6\x4c\x82\x27\x61\xa7\x25\x53\xb2\xa1\x39\x3d\x65\x4b\xe3\x7e\x3b\x4f\x74\xdf\x96\x7d\x34\x2c\x63\x68\x74\x18\x33\x9a\xac\x91\x51\xb4\x57\x5c\x43\x85\x76\x5e\xac\xbd\x58\xb9\x04\xd4\x08\x28\xde\xa9\x2d\x73\xcb\xdc\x19\xc6\x72\x69\xd4\xc7\xd8\x28\x8a\x96\x19\xee\x97\x53\xfc\x69\xf8\x03\x05\x6a\xeb\x68\xe3\x12\x84\x8c\x62\x7f\xab\x52\x6a\x88\x07\x3b\x5e\x83\x0b\x6b\xee\x4c\x0d\x76\xcc\xb0\xf5\x6b\x6d\xbd\x36\xf7\xd2\x75\x60\xb7\x4b\xfe\xcc\xb8\xea\xc2\x1d\x39\x9d\xbd\x82\x53\x3f\x35\x8a\x9f\x86\xdb\x52\xcd\xbf\x73\x1a\xfa\xf3\x45\x14\xa7\xc6\xd2\x98\x3b\x8b\x57\x10\x03\x2e\xa1\xe2\x59\x2d\x54\x78\x96\x11\xe3\xc4\xd3\x9b\x2c\x05\x4c\x4c\x8c\xc2\x98\xc5\xd1\xdc\xb8\x7f\x95\xf1\x9b\xfb\x65\x35\xf5\x33\x00\x95\xa1\xd7\x2f\x89\x70\xfd\xab\x20\x54\xf7\x4f\x43\x7e\x03\xe5\x94\x7a\x4b\x32\x00\x20\x63\x18\xf7\x77\x17\x8b\xfb\x54\xbc\xd7\x0e\x19\x8c\x65\xb3\x89\xa2\xcc\x00\xa7\x02\xb2\xbc\x61\xf4\x7a\xbd\xaa\x3b\x35\xf2\x44\x8d\xc9\xfd\xc6\x94\xdc\xa7\xc6\xfd\x35\xfd\xfd\xfd\x29\xa1\xf5\x7a\xa0\xfb\x2b\xb5\xac\x6a\xa6\x65\x19\x59\x4a\xf7\xd7\xc0\x44\x03\x64\x18\x77\x9e\x18\xc8\x4c\x45\x59\xc3\x46\x42\xb9\xa9\xc6\x0d\x07\x08\xab\xf5\xae\xd1\xbf\x46\x85\x4a\xf1\x13\x3b\x61\x22\x10\xc5\x33\x98\xb1\x72\xb8\x70\x7f\xe3\x01\x82\x18\xc8\xcd\xa7\x0b\xf7\xa9\x71\xf7\xf1\xc2\x69\xd8\xd6\xab\xd6\x73\x86\x12\x3c\x6a\xe8\xf6\xec\xbb\x6b\x37\x0a\xb2\x3a\x10\x6a\x57\x6b\xe9\xbe\xfe\xc2\x8c\xc9\xb4\xf9\x45\x57\xaf\x74\xe8\x55\xf5\x6c\xc3\x1c\x28\x45\x9b\xbe\xfd\xc4\x76\x8c\x4e\xbb\x59\x20\x69\x4c\x97\x6e\xcf\x4f\x76\xc3\x5b\x55\x99\x6e\xd3\x60\x9b\xc1\x10\x4c\xd4\xc6\x0a\x54\x4b\x77\x95\xdf\xbe\x7b\x14\xab\x29\xf2\x67\x06\x6e\x03\xae\x36\x96\xe5\x08\xab\xa3\x8b\xfa\xfe\xea\x7b\xb6\x71\xff\x13\x0f\x55\xee\xd3\x7a\x49\x79\xa4\xd1\xc4\x0d\x7c\x5f\x76\xed\x3e\x69\x64\xd5\xc7\x1b\x62\x86\xd9\x8e\x2c\xd2\x76\xac\x91\xc6\x19\x27\x55\xc1\xa2\x7c\x2e\x36\xf7\x57\xcf\xda\xdf\xb3\xbb\xea\xd8\xe6\x53\xfa\xab\x86\xfb\x0f\x76\x78\xe6\x04\xc9\x47\x7b\xac\x16\xa1\xe6\x71\x42\xf5\xd9\x50\xfb\xad\x3e\xff\x69\x6e\xb7\x8a\x62\xac\x6e\xb7\xe5\x66\x2b\xb6\x88\x16\x88\x56\x77\xdb\x92\xc4\xac\x54\xb4\x89\x4b\xbe\x3f\x25\x15\x64\xea\x98\xa8\xb6\xae\xd7\x4e\x89\xaa\xcc\x8d\xd3\xa2\xd5\x22\x9b\x0f\x8b\xa0\x02\x90\x4b\xb7\x4f\xfb\x25\x1d\x15\x34\x35\xbd\x0d\x04\x79\xfd\xaf\x52\xfe\x1f\x92\xf2\xb7\xfb\x7a\x00\xd1\xb4\xa0\x70\xc2\xa2\x9c\xdf\x16\xa4\x20\xf4\xaa\xdd\x50\x60\x11\xac\x18\x09\x80\xb2\xff\x22\x60\x1f\x7a\x33\x7a\x1e\xb0\xa8\x27\x0d\x53\x94\xff\xc1\x16\xc7\x3f\xe7\x81\x69\xe2\x0e\x46\x9e\xb2\x7d\x10\x1f\xfd\xd0\x38\x0f\x2a\xe7\xaa\x24\xcf\x4b\xdf\xba\xe7\x01\x26\xbd\x5a\x5e\x22\x0f\x13\xae\x03\xf0\xa4\xdb\x72\xc8\xb0\x6a\x7e\xb2\x3d\xd4\xb5\x31\x56\xb3\x3c\x19\x4c\xc7\x32\x55\x7b\x9d\xac\x7f\x02\x17\x93\x62\x76\x6b\x2e\x7d\x8f\x02\x88\x77\x7c\x1e\xe0\x94\xd8\x65\x85\xe9\x58\x00\x68\x43\xaa\x8e\x2f\x07\x8e\x9f\x4d\x13\x5f\x07\x13\x3e\x65\x9d\x01\xa1\xbc\x18\x1d\xa4\xf8\x28\xa0\xe7\x81\x1c\xb0\x83\x80\x1d\xd5\x3a\xcc\xea\xbd\x1f\x1d\x04\xf5\xbb\x78\xec\x48\x1e\xa8\xec\x06\xec\x20\x28\xe3\xdb\xd1\xbd\x80\x21\x39\xd4\x38\xe5\x49\x4a\x10\xd3\x2e\xda\xce\x03\x8c\x52\x70\x9d\x41\xe8\x4d\xc0\xfa\x7f\x95\xd9\x4e\x31\xee\x7d\x41\x4e\xc9\xe4\xaf\x64\x6a\xdd\xeb\x8f\x2e\x02\x7c\x10\xd0\xc6\x34\xd0\xe5\xaa\x57\xc9\x0b\xde\x62\x02\x21\xc3\x27\x13\xe9\x02\x05\xec\x2f\x0f\x66\x58\xfa\x3d\xa1\x9c\xed\x06\xca\xa9\x0f\x9c\x88\x5e\xe3\xeb\x80\x96\x51\x1e\x10\x1a\x49\x3b\xa0\xbd\x60\xac\x63\xed\x3e\xa1\xdd\x21\xb1\xab\x20\x57\x37\x01\x45\xf7\x86\xa8\x31\x9a\xa1\x9e\xab\xb0\x28\x36\xf9\xdd\x19\x14\x74\x29\x7b\x6a\x1f\x05\x05\x29\x52\x8e\x91\x9f\xf2\xd8\x49\xa3\x18\xa9\x30\xcf\x01\x0b\x38\xdc\x45\xdc\x17\x42\x17\x7d\x1f\xb0\xce\x80\x3e\x0f\xd8\xf7\x1c\xa3\x32\x19\x91\x51\xed\xc5\x0f\x27\x53\xd3\x04\xbb\x5e\x3c\x24\x55\x61\x5c\x77\x30\x27\x2a\x1a\x16\x44\x82\x96\x3a\xb1\x18\x36\x04\x65\x90\x74\x73\x59\x03\xf4\x7d\x90\xe7\x9d\xe7\x41\x41\x97\x65\x5d\x6d\x4e\x7d\xce\x94\x5b\xa4\x4f\x8d\x1d\x0f\x87\x09\xcf\xc2\x66\x3f\x44\xa7\x3f\x04\xac\xf3\x2c\x6a\xda\x70\x00\x68\x3d\x21\x30\xe0\x94\x14\x84\x8c\x5a\xe0\x4e\x52\x27\xad\x81\xfd\x01\x20\x8e\xa3\xb9\xfd\x8d\xab\xa2\x66\xbf\x0b\xd8\x8f\x1c\x23\x98\x46\x44\xe8\xb1\x1c\x47\xf9\x4a\x97\xbb\xcf\x9f\xef\x1d\x1d\x1d\x1c\x1e\x89\x4a\x06\xf6\x80\x0e\xed\xad\x82\xd0\xc3\x80\x7d\x9b\x62\x94\x2c\xb8\x0b\x31\xe3\xe9\xeb\x80\x4d\xa6\x12\x17\xe8\xdb\x40\x86\xbd\x9e\x3b\x37\x6d\x20\xad\x0e\x65\xe7\x9d\x18\xcb\x63\x01\x19\x94\xb7\x37\x04\x8a\xa6\x3e\x9b\x2b\xcf\x9b\x0e\xcb\x52\xec\xeb\xa0\xbf\xd4\x65\x8b\x14\xa7\xd4\x21\x34\x11\x4f\xe5\xb2\xe6\x63\xc7\xe6\xd4\x01\x14\x7e\x9b\x62\x1f\x42\x02\xae\x05\x6c\xc7\x21\xf3\xeb\x4b\x95\xe4\x79\xd8\x61\x0c\xa0\x35\xcd\xce\xdb\x14\x6e\x8d\xeb\x4d\x6d\x7c\x0b\x21\xd4\xab\x08\xcb\xe1\xe4\x30\x50\x91\xd7\xd5\x1c\xda\xfa\x89\x86\x4c\xd5\x53\xdb\xbc\xc2\x32\xb8\xc1\x6b\xb5\xc6\x7c\xea\xd2\x84\xa8\xc8\xb0\x21\xbf\xae\x3a\x10\x8e\xa1\xb4\x1d\x12\xfc\x36\xc0\x49\xd7\xa5\x03\x22\xa3\x2e\xbb\xdb\xc9\xc8\xb5\x2c\x1a\x59\x16\x71\x05\xe5\xf0\x4d\x33\x08\x31\x0c\xd3\xc4\x9d\xd6\x82\x47\xcb\x41\x62\x11\x8d\x75\x9c\xf4\x7d\x35\xe3\x0b\x35\xe5\x27\x6a\xca\x17\x77\xcf\xf9\xbd\x6a\x5a\xe9\x0b\xfd\xec\x87\x9f\x34\xc5\xfb\x62\x8a\x4f\x60\x8a\x17\x77\xcf\xb1\x0a\x17\xbc\x9f\xaa\xa9\xce\xc4\x54\x97\xf1\x9d\x69\x20\xa7\x3a\x23\x74\xb6\x46\x23\x46\x32\x96\x2d\x9b\x8d\x43\x16\xb3\x81\x3d\x84\x67\x1c\xb2\x01\x8d\x59\xd6\x0d\x88\x8d\x43\x36\xeb\x6e\xd1\x98\xbd\x08\xf0\xbd\x00\xbb\x29\xe6\x84\x0e\x08\x15\x1f\x09\xcd\xac\xb0\x1b\xef\x7c\x39\x18\x3c\x19\x7e\xf9\xe5\xd6\xa3\x87\x4f\x1e\x0e\xbe\xfc\x72\xb8\xe6\x34\x17\xbd\x71\x6e\xfc\x79\x36\x37\x9c\x20\x88\xae\xb9\x67\x28\x2d\x0f\xbf\x71\x81\x79\x50\x91\xbf\x23\xe6\x72\x9c\xd0\x98\xa8\xc0\xab\x31\x04\x5e\xc5\x0e\x0b\x2c\x9f\xf8\xa1\x91\xc0\x84\x89\x1e\x27\x13\x67\x0a\x38\xaa\x4f\xf6\x59\x4c\xc3\xed\x58\x5a\x64\xfa\x2c\x18\xf9\xdb\x59\x57\x16\x77\x99\x6f\x85\x14\x3b\xcc\xb7\x62\xa8\x64\x9c\x4c\xdc\x29\x13\x35\xd8\x1e\x0f\x78\xca\x0d\x91\x30\x92\x25\xb3\x91\xbf\x93\x75\x63\x2b\x1c\xf9\xdd\x2e\x29\xbf\xfb\xdd\xe1\xb4\x8a\x6c\xb1\x13\x13\x95\x5b\xb4\xb1\x13\x40\x5e\x68\xa7\x3b\x54\x2d\x75\x87\x1f\x6f\x4b\x74\x31\x04\x18\x93\x89\x6f\x05\xd3\x1a\x91\xf6\xad\xad\x69\x19\x4a\x57\x77\x11\xe0\xa2\x91\xc6\xc9\x37\x92\xf7\x78\x19\xb0\x97\x0a\x33\x6a\x5e\xda\x7f\x0e\xd8\xcb\x1a\xd1\x7c\x26\xc8\xe1\x69\xf2\x45\x69\x1d\x84\x27\x7f\x35\xf0\xf4\x0b\xd2\x1f\x39\xa6\xd9\xc1\x08\xac\xd9\xfd\xd0\x78\x19\x10\xd3\x7c\x13\xe0\x97\x01\x95\x69\x1f\x25\x8d\x35\x2f\xe4\x3f\x07\x35\x3f\xa3\xca\x37\xdb\xb3\x80\x4c\x86\xd3\x35\x37\xe4\xa8\xd0\xdd\x78\x15\xb0\xac\x37\xa3\xbf\x04\x6d\x81\x55\x57\x1d\x12\x28\xac\x67\x73\x19\x4a\xfd\x24\xc5\x80\x2c\x1a\x0b\xa8\xcb\x06\x34\x61\x93\xe9\xc8\xdf\x71\x47\x10\x36\xde\xb5\xac\x29\x15\x7d\x7c\xa5\x80\x8b\x69\x48\xf2\x5c\x49\x50\xe9\x78\x12\xd2\x78\x12\x4e\xa7\xb6\xf8\x25\x55\xf8\xe2\x82\x7e\x17\xb0\x25\x0f\xd3\xd8\xe7\x89\xfd\x4b\x80\x05\x3b\x03\x34\x5f\xbe\x0d\x49\x21\x59\x80\xa4\xb1\x9a\xa5\xb5\x6b\x49\x44\x0a\xba\x54\x65\x5a\x3a\xf7\x5d\x00\x5e\xd7\xe4\x30\x7c\x15\xb0\x43\x7e\xb1\x77\xb3\xa8\x4d\xe2\x0f\x01\xfb\xaa\x36\x89\x3f\x06\xcc\xc7\xeb\xee\x5d\x51\xdf\xe9\x9f\xa3\x0e\xfb\x41\x75\xb0\x3c\xd5\x74\x10\x9d\x05\xce\x45\x62\xa3\x73\x24\xad\xb7\xbf\x09\x58\xe5\x29\x16\x4a\x88\x39\x1e\xe1\x1f\x83\x3c\xff\x46\xcc\x3c\x4f\xf1\x1a\x14\x1b\x7c\xcb\x4a\x96\xe8\x7d\xe9\x99\x5c\xfb\xc9\x55\x96\x5b\x04\x8c\x5b\xa0\x7d\xcd\xd0\xf4\x21\xfc\x70\x1f\x59\x2a\x6b\xb5\x67\x9b\x66\xda\x08\x22\x01\x20\x00\x5e\x42\x05\x02\x31\xbf\x0a\xc8\x38\x70\x35\x87\x65\x87\xe0\xc7\x36\x0b\x13\x67\x26\x7d\xd8\xc2\x20\x7e\x1d\xac\xf8\x0f\x57\xf1\x98\x79\x9e\xf3\x1d\x1d\x78\x96\x40\x10\xe6\xf2\xad\x74\x35\x2d\x37\x3d\xc1\xea\x4a\xa6\x87\x93\x51\xb8\xcd\x21\x30\xb3\xc0\x0d\x08\xb3\x5c\xd2\x08\x79\xdb\xe8\xdb\x26\xd2\xfa\x33\x2c\x19\x0c\x3f\x91\x55\x94\xfc\x9f\xf1\x35\xcc\x35\x14\xfa\x7e\xad\x50\x9b\x29\xa0\xe4\xe8\x4c\x53\xfe\xed\x69\x86\x0e\x24\x1e\x69\x8b\x5d\x55\xde\xe4\x6a\xa4\xbb\xb2\xd5\x91\xf0\x67\xba\x31\x69\xe8\x56\x0f\x8e\x5d\x83\x91\x72\x32\x6a\x98\xec\x97\x78\x50\xe2\xa1\x9e\x03\x1d\xc1\x5f\xb0\xb1\x7a\x8a\x0f\x74\xe0\x6d\x98\xd3\x3a\x8b\x00\xd4\xbe\x91\x02\xb8\x47\x28\x7a\xe3\x2c\xa0\x40\x9e\xa3\x23\x2e\xcb\x8e\x1b\x3d\x12\x34\x52\x6d\x8c\x2a\x63\xff\xaf\x78\x6c\x9f\xf8\xf9\x3e\x09\x53\x3c\xb6\x9f\xe6\xc3\xc7\xf9\x83\x2d\x82\xc7\xf6\xf3\xc0\x99\x2f\xb8\x47\x64\x0d\xf7\xb4\xdd\x24\x19\xab\xce\x69\x49\x4f\x8e\x52\x3a\x63\x0d\xe3\x4d\xed\x1e\xaf\x46\xb9\xca\x18\x75\x69\xca\xe7\x8b\xd4\x48\x23\x23\x59\xc4\xdc\xf1\x8c\x30\x02\x21\x15\xf6\xc5\x12\x7b\x7b\xa7\xe1\x7e\x68\x44\xb1\xc7\x63\x91\xf5\x9c\x1b\x3a\x0b\x85\x02\x8e\x00\xcb\x90\xf1\xc9\x13\x63\x2e\x64\xd8\x4b\xe7\x8a\x1b\x8e\x31\x59\x99\xe9\x29\x26\x4a\x01\xd2\x43\x6a\x52\xf9\xac\x6d\x8f\xfc\x36\x80\x68\x41\xdf\xcb\x3f\x3f\xc9\x3f\xe9\x0c\x93\x82\x86\xb3\x8a\xff\x88\x67\x25\xff\x41\x23\xf5\x3c\x0b\xa2\x28\xa6\xce\x8c\xf5\x4f\xef\xe1\xc9\x3d\xf3\xfe\x7f\x98\xe6\xa7\xde\xa9\x37\xce\xb7\x27\x7f\xdd\x99\x7e\xb1\x43\xfa\x17\xd4\x5d\xff\x4c\xfa\x17\xa3\xd7\x2e\x46\x4a\x74\x41\x74\xab\x6e\x71\xd1\x08\x44\xcc\xe2\xde\xe1\xde\xab\xbd\x1f\xde\x9d\x1d\xee\xbd\x7b\xbd\xfb\x7c\xef\xec\xe8\xe4\xd9\xd1\xf1\xfe\xf1\xc9\xf1\xde\xd1\xd9\xc9\xdb\x17\x7b\x2f\xf7\xdf\xee\xbd\x38\x7b\xbe\xfb\xee\xf8\xe4\x70\x8f\xfa\x50\x40\xe6\xfc\x66\x6f\xef\xdd\xd1\xd9\xbd\x01\x75\x58\x34\x46\xf7\x90\x8d\xee\x0d\x74\x10\x90\xda\x9d\xf3\xaa\xad\x2b\xb5\x1b\xf9\x4c\xae\xfb\x4a\x7c\x9a\xa4\xe5\xda\x2d\x25\x6c\x7f\xec\x2b\x87\xa9\x34\xa2\xb1\x10\xc5\xe0\xad\x8c\x52\x03\xbd\xa8\xdd\x5f\x4f\x45\x43\xfe\x0c\x77\x22\xd3\xf4\xf3\x7c\x6d\x21\xc5\xa6\xd9\x1d\x82\x4f\x17\xed\xdf\xca\x51\x42\x7b\xc2\x42\xf0\x04\x0e\x82\x4d\x0c\x8c\x4b\xd2\xf3\xa2\x90\x93\x92\xc6\x03\x99\x80\xab\x0f\x99\xd8\x54\x05\xdb\xa6\x77\x54\xe8\xd2\xac\xcd\x97\x70\x3c\x9a\xe5\x39\x8e\x75\xce\x98\xc8\xc5\xbb\x60\x59\x4f\xca\x89\xa2\xa5\x85\x84\xc1\x63\x59\x2f\x0b\x7d\x37\xf2\xf8\x28\xeb\x05\x4e\x92\x82\xb0\xc4\x06\x85\xde\x00\x2f\x05\xe1\x1c\xc9\xdc\x57\xec\xc4\xc5\x19\x0d\x64\x58\x1e\xc9\xb9\x5f\x11\x19\xa2\xc8\x9f\x61\x15\x33\xea\x8a\xd0\xce\x42\xa5\x82\xbc\xaa\x77\xf6\xc9\x00\xf8\xfb\x7a\x3b\xfb\x2e\x0e\x68\x96\xd6\xd3\x08\xf5\x08\x29\x9b\x9f\x53\xf0\xf7\x7e\xc1\x06\xf4\x9c\x0d\x46\xe7\xdb\x3a\xa8\xd4\xe8\x1c\xee\xd1\xb0\xcb\xc9\xf9\xb4\xdc\xad\xaf\x1b\x6d\xd1\x23\x16\xce\x70\x3c\x13\xfc\xe9\x95\x1c\x7e\x42\x83\x92\x05\x1e\x10\x7a\xc0\x26\x53\xba\xcb\x86\xa3\xdd\xed\x2b\x5d\xef\xae\x65\x91\x03\xd5\x13\x4d\x8b\xf0\x9c\x5d\x4d\x76\xa7\x64\x3c\xd7\xfa\x91\xb9\x1a\xd5\x3d\x76\xd5\x83\x4b\x57\xe0\xb0\x54\x05\x2d\xbc\x61\x93\xeb\xd2\x6d\xee\x01\x3d\x12\x23\x56\x22\xd8\x9e\x69\xde\xc8\xea\xf7\x94\x1c\x5e\xce\x94\xba\x5d\xa4\x84\x9e\x1b\xed\x7c\xf2\x8c\xb9\xf8\x9a\x06\xf4\x88\x1e\xd0\x3d\x81\x29\x47\x3b\xec\xc2\x34\xf1\xad\xc5\x02\xb5\xdf\x5e\xd0\x23\x62\x9d\xd1\x0b\x76\x64\x5d\xeb\x0e\xea\xbb\x33\xb7\x56\x99\x8b\x14\xd3\xca\x16\xdc\xc5\x69\xe5\xc7\x5a\x02\xee\xb2\xd8\xd2\x34\x90\x26\x15\x07\x95\x31\x77\xb6\xbe\x52\x20\x06\xd8\xbe\x90\x07\x69\xc6\x9c\x19\xa1\x6a\xad\x38\x34\x6b\x58\xd5\xa9\xca\xb3\x91\x72\x1b\xe5\xd4\x82\xcb\x83\xd3\x28\xb1\x8a\x15\xad\xb8\x87\xc0\xc5\x11\x32\x4b\xcf\x46\xa9\x4c\xf8\x0f\x75\x3f\x58\x2a\x7c\x7c\x2c\xfd\x21\xa1\xfb\x6b\xdf\x5c\xf5\x65\x1b\xd9\x19\xf3\x27\x8e\xf6\xc6\x2f\xc8\xd2\x54\x05\xd5\xd2\xfe\x7a\xe1\x66\x11\xb3\x1c\x2d\xf6\x04\x7a\xfd\x81\x59\x7a\xb0\xa3\x6e\x9e\xcd\x58\x34\xc3\x41\x7f\x38\x28\xf9\x41\x29\x23\x71\x7b\xb6\xcd\x92\x71\x89\x2b\xd1\x64\xd6\x1d\x4e\xc7\x4e\x15\x2a\xdf\x96\x49\x56\x3d\x89\x17\x19\x8b\x26\x81\x90\x20\x1a\xe3\xca\x18\xcb\xc6\x08\xd9\x59\x01\x06\x91\x2a\xb2\xd5\x6c\x2d\xa2\xbb\x98\x35\xb2\x4c\x57\x63\xcf\x43\x76\x87\x95\x46\xc3\xf5\x2b\x76\xb1\x3e\xe9\xd9\x19\x98\x26\x76\x18\xb7\xd0\x18\x59\x07\x8e\xd8\x21\x68\x38\x4e\xa2\x49\x3a\xc5\x0e\x0d\xa9\x4f\x6c\x74\x21\x89\x6e\x5a\x26\xfb\xc4\xd6\x8f\x07\x8e\xd8\x07\x7d\x52\xd0\x6c\xb6\xa6\x71\xa4\x7c\x3d\xa8\xd8\xc0\x34\x4b\xac\x69\xe8\x1c\xeb\x2f\xf6\xb2\x80\x60\xfd\xca\x33\xd8\xb8\x7c\xb2\x11\xa2\xb1\xf8\x20\x65\x0e\x1a\x31\xd4\x77\x16\x7e\xff\x6a\x50\x1d\xee\xae\x98\x17\xfa\x6c\x59\x50\x87\x2d\x8b\x35\xa4\xe5\xbd\xf3\xc8\xbb\x85\x10\x0d\xf2\xb1\x66\x47\x2f\x13\xc6\xef\xe2\x68\xee\x27\xbc\x17\x73\x79\xbb\xad\xf2\x8c\xfb\xc6\x4f\x12\x3f\xbc\x30\xf4\x8d\x76\xc3\x58\x38\xb1\x33\xe7\x29\x8f\x6d\x43\x94\x45\x84\xd8\x98\xf7\xee\x41\xa8\x89\x77\xfa\x5b\x62\x9a\xf5\x79\x58\xff\xde\x76\x7d\x4e\xf0\x65\x93\x74\xca\xd6\x73\x4f\xd2\x29\x04\xb1\x98\x61\xb4\x88\x44\x6f\x43\x2b\xa2\x29\x48\xfc\x10\x9b\x2b\xf8\xa7\x9b\x14\x19\x8e\xe3\xbf\xec\x69\xa9\xf6\xdd\xd9\xec\x5f\xfa\x12\xec\x62\xf6\xa7\x5c\x82\x9d\xcd\xfe\x19\x2f\xc1\xd6\xa1\xfa\x47\x86\xa1\xf0\xea\x38\x34\x6a\x4a\x8b\xac\x29\x2d\xca\x80\x85\x8c\xa5\x6b\xb2\x44\xab\x6c\x9a\xe7\x38\x5c\x97\x12\x3b\x69\x2d\x32\xf5\x66\x61\xf1\x72\xf6\xc7\x85\xc5\x3f\x20\x26\x02\x30\x2d\x92\x62\xab\x08\x0c\x99\xff\x76\x99\x71\xa5\xab\x85\x90\xb8\xf3\x9c\x9b\x66\x6a\x9a\xca\xc6\xb4\x36\x30\x9a\x17\x5b\x86\xb0\xb7\xa9\x48\x95\x31\x1b\xd0\xa8\xbe\x49\xeb\x0d\x71\x99\xd8\x11\x6d\xbb\xb3\x10\xef\x94\xba\x89\xf1\x52\xc8\x08\x76\x67\x50\xd8\xea\x69\xa8\x1d\x81\x4d\x62\xcb\x9a\x16\x05\x6d\x3a\x82\x95\x12\x6c\x5a\xd0\x99\x1d\x15\xc5\xa7\xca\xb3\x12\x4b\xf8\x3f\x56\xa0\x15\x83\xe3\x53\x87\x75\x06\xd4\x65\x9d\x61\x35\x2a\xb5\x11\x09\x5b\x30\x19\xc4\xda\xf5\xa3\x39\xe9\x77\x16\x97\x0c\x9b\xc3\x52\x10\xb0\x68\xba\x3a\x46\xae\x68\xd2\x67\x30\x48\x2b\x6a\x4c\x47\x2f\xa0\xb0\x27\xab\xc9\x73\xfd\x84\x49\x31\xf3\x43\x27\x08\x6e\x21\xe8\xb2\xd2\x70\xfb\x45\x51\x54\x2b\x55\xe1\xc9\x9f\xa8\x74\x02\xc9\x6c\x26\x6f\xc6\x27\x0b\x47\x1e\xff\x81\xae\x91\xdb\x4a\x4f\x0b\x0e\xa0\x69\x65\x88\x00\xf1\x2a\x2a\x67\x3d\x05\x5c\x2a\x49\x64\xae\x55\x4b\x22\xb8\x3a\x71\x21\xad\xd9\xca\xfa\x5a\x7d\x97\xca\x6f\x05\x6d\x18\xb9\xb5\x67\xad\x81\x02\x95\x37\x2d\xd2\xda\xca\xa8\xcd\x44\x2a\x4e\x6b\xbe\x2d\x48\x2f\x89\xe2\x14\xe3\xe6\x96\x55\x36\xb4\xc9\x0f\x26\xf0\x15\x9b\x3e\x8e\xd3\x9e\xef\x41\x30\x88\x80\x3f\x8f\xe6\x0b\x27\x56\x0e\xe9\xec\xcd\x15\xae\x65\xdf\xec\x81\x53\x30\x69\xed\x0e\x7a\xda\x07\xcb\x69\xda\xd5\x41\x20\xe5\x4d\x97\xf6\xab\x0b\xee\xcb\x20\x72\xbc\xe7\xab\xd3\x05\xa8\x38\xa0\x62\xb2\xe6\x73\x3f\x25\x18\xbd\x3e\xd8\x7d\x71\xf6\xfc\xe0\xed\xcb\xfd\x57\x08\x7c\xf8\x55\x73\xd3\x06\xce\x3f\xca\x7d\xb0\xdc\xf0\x05\x8c\x10\x27\xd6\xf3\x93\x85\x93\xba\x97\x95\x17\xe1\x18\x23\x88\x85\x51\x5d\x57\xd4\x2e\x81\x4b\x97\xb8\x90\xf3\x51\x99\xf3\x10\x7c\x97\x97\x0e\x96\x43\x8c\x8e\xf6\x8e\xcf\xf6\xdf\xee\x1f\xef\xef\xbe\xde\xff\x69\xef\x05\x12\x8c\x85\xfc\xfc\xf8\x0e\x17\xbb\x75\xef\xba\xb4\x01\xc3\x1f\x19\x30\x29\x7f\xff\xd9\xc3\x96\x45\x18\x47\xe0\x80\x38\x4a\x95\x69\x2a\x69\xf3\xce\xfc\x90\x66\xb3\xca\x3b\x73\x74\x97\x77\xe6\xd2\x09\xf3\x43\xed\x80\xdb\x5f\xf1\xc0\x3c\xc6\x0e\xf3\x95\x03\x6e\xed\x8a\x46\x8d\xba\xb6\x6d\x42\xd4\xc9\xf3\xc9\x94\x10\x3b\xc6\x0d\x57\xe8\x54\xb9\xd5\xae\xf9\xd2\x86\xa1\x2e\x0d\x5c\x7b\x48\x7a\xd3\xf6\xef\xf2\xa6\x4d\x97\xa2\xc3\xf2\x2c\xe0\x0f\xcc\x2b\x60\xcc\xbf\xc2\xa4\x9e\x39\x7f\xc6\xa4\x9e\x67\xa1\x17\xf0\x72\x4e\x0f\x0f\x5e\xef\xfd\x81\x09\x95\x3e\xb1\xff\xdc\xd9\x5c\xf7\x5a\xd6\xe6\x2b\x5f\x0f\xb2\x18\x6f\x45\xf1\x60\xc0\x81\x96\x8e\xc2\x0d\x5e\xd5\xc6\x1c\x6f\x76\x1f\x41\x6c\x2e\x07\x47\x26\xed\xbd\xa8\x61\x3e\x9f\xe1\xb8\xa2\x63\x25\x94\x0d\x03\x45\xbb\x95\xae\x7d\xcc\x93\x7f\x15\x99\x8e\x06\x74\xf6\xb7\xfb\xf5\xaf\x86\x26\xaa\xe3\x9f\xaf\xc7\x06\x62\x75\xd7\xb0\x90\xba\x6c\x32\x15\xe8\xe9\x34\xd0\x31\x61\xde\x0c\xfb\x6b\xb4\x0b\xe4\x4a\xd1\xec\x43\x9a\xf4\x12\x5c\xce\xad\x3f\xc3\x38\x63\x49\x2f\xc4\x84\x48\xc5\xf8\x52\x45\x12\x18\x3e\xae\x5c\xba\xe3\x80\x65\x92\x2d\x20\x2b\x96\xcd\x1d\xc6\x6a\x45\x06\x4d\x9f\xed\x61\xe9\xb3\xdd\x8d\xc2\xd4\x0f\x33\x8e\xe8\xf0\xa1\x6a\x7b\x58\x2d\x3d\x55\x7a\x8b\x06\xb5\x7d\xd1\xf9\x04\xaf\xf5\x70\x83\x37\x00\xaf\x59\x0d\xa8\x6c\x5e\x50\xa9\x10\x39\x9b\x3b\xc9\x07\x7b\xb9\x70\xd2\xcb\xc4\x9e\xa0\xa6\x81\x2f\x9a\x16\xe5\x5a\x1c\x6e\xe9\xc5\x38\x5b\x0d\x71\x10\x63\x74\xf2\xee\xc5\xee\xf1\x5e\x19\x16\x82\x2e\x66\x78\x31\xc3\xcb\x82\x06\x0d\x17\x42\x55\xf3\x84\xd8\xae\xb2\x15\xd6\xb0\x06\x3d\xcf\xaf\x3c\xe9\xd2\x6a\x0d\xda\xb3\xda\x82\x2c\xe1\x79\x68\xab\x71\x51\xf3\xa0\x92\x1f\xeb\xe4\xad\x61\x23\xfd\xa9\xad\x26\x78\xf8\x94\x86\xbd\x74\xc0\x42\x15\xe2\xe9\x21\xa1\x49\x8f\x63\x91\xa6\xaa\xde\x1a\x56\x23\x0f\x45\xb6\x86\x34\xe9\xcd\xb0\xc0\x91\x99\x1f\xfa\xc9\x25\xde\x1a\xea\xbc\x0f\xc1\x34\xc5\x55\xbc\x8f\x69\x46\xed\x3b\x0e\x1f\xd7\xf6\x1c\x69\xda\xad\xa9\x48\x0f\xd5\xf7\x23\x65\x07\x5d\x7d\x94\x7b\x92\x3b\x19\x4c\x3f\x71\x5b\xa2\x6e\x69\x96\xf6\x47\xc0\x49\xee\x84\xa7\xdc\x24\xf9\x18\x3d\x8f\xb2\xc0\x33\xc2\x28\xd5\x35\xcc\xb3\x20\xf5\x17\x2b\x55\x55\xb9\x74\x55\x2d\xd9\xee\xec\x4f\x7c\xd7\xde\xa6\xa6\xe1\xc9\x47\x62\x55\xc8\xdb\xe3\x93\xc9\x43\x3a\x7c\x4a\xb7\x86\x74\xeb\xe1\x74\x5a\x46\x27\xa0\x73\x6d\x72\x6d\x2f\x6b\xac\xe8\x6a\x54\x3a\xb5\xe0\x18\x2f\xe8\x0a\xd3\xb6\x96\xb3\x26\x5b\xe8\xec\x1a\xf8\xb5\xbc\xe5\xc5\x27\x95\x11\x48\xd8\x5a\x2e\xa0\x50\x22\xcb\xa6\xe8\x02\x6d\x66\x58\x6d\x4c\xba\x3e\x02\x14\x02\xdd\x4e\x77\x38\x6e\xc9\x22\xed\xba\x70\x28\xc3\x5d\xad\x7d\x86\x65\x2b\xb8\xf4\x56\x9a\xb2\x06\xf9\x6a\x79\xd1\x89\xe6\x7e\xb1\x01\x74\xa7\xba\x47\xb2\x6e\xe2\xb9\x16\xb0\x02\xdc\x9f\x13\x32\xaa\x95\xab\xfa\x01\x42\xc5\x26\x24\x6a\x6a\x2a\xd6\xe1\x9d\x88\x6d\x90\xce\x67\xab\x9e\x6e\x11\xad\x3b\xa4\x42\xd4\x77\xa3\xd0\x06\x6f\x3a\xdd\x2b\xd7\x89\x3d\x44\xfd\xe4\xa5\x1f\xf0\x3d\xcf\x4f\xa3\x58\x88\xbb\xfc\x26\xe5\x61\x02\x88\x36\x99\x96\x0a\x17\x67\xb1\xd8\x0f\x67\x91\x3d\x9f\xd1\x38\xca\xd2\x9a\xd7\xf5\xaa\x6e\xb1\x41\xdb\xa8\xdf\x74\x38\xe7\x2c\x16\xf6\x6d\x50\x14\x53\x1a\x3a\x57\xfb\x60\x96\x3e\x59\x87\xd1\x8d\xc2\x37\x4e\xca\x63\xdf\x09\xec\xf9\xac\x27\xde\x65\x3b\xf6\xc6\x56\xf4\xb9\xa1\xc8\xee\x51\xd4\x47\xa4\x00\xdf\xed\x51\xcc\xed\xab\x19\x9c\x09\xfd\x37\xff\x5f\x00\x00\x00\xff\xff\x41\x14\xb2\x49\x85\xd1\x01\x00") - -// FileAccountsJsMap is "accounts.js.map" -var FileAccountsJsMap = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\xfd\x8b\x76\x1b\xb9\xd1\x28\x8c\xbe\x0a\xac\x6f\x7e\x93\x1c\xf3\x62\xcd\x3d\x54\x14\xc7\xb1\x65\x8f\x12\xdb\xf2\xb6\x14\x67\xe7\x48\x5a\x32\xc8\x06\x49\x8c\x9a\x0d\xa6\xd1\x94\xcc\xd8\xda\xef\x73\x5e\xe3\x3c\xd9\x59\xa8\x2a\xdc\xfa\xc2\x8b\xec\xf9\xf2\xed\xdf\x59\x2b\x23\xa2\x81\x02\x50\x28\x14\xaa\x0a\x55\x85\x4f\x7b\x37\x22\xd7\x52\x65\x7b\xc3\xef\xbb\x7b\x13\x99\x8a\xbd\xe1\x1e\x1f\x8f\xd5\x32\x2b\x74\xff\x37\xbd\xd7\xdd\xd3\x6a\x99\x8f\x85\xde\x1b\x9e\xef\xf5\xfb\x83\x4c\x25\xe2\x6a\xae\x92\x65\x2a\xf4\x20\x17\x53\x91\x89\x9c\x17\x2a\xef\xe5\xcb\xac\x90\x73\x31\xa0\xff\x62\xdb\x72\x83\xb1\xca\x45\xef\x37\x3d\x90\x59\x21\xf2\x8c\xa7\x7a\x30\x4d\xd5\x88\xa7\xdb\xd6\x9e\x70\x99\xea\x6d\x2b\x27\x42\x8f\x73\xb9\x28\x54\xbe\x75\x13\x35\xfa\x4d\x8c\x8b\xde\x22\x57\x0b\x91\x17\xab\x9e\xd4\x3d\x91\x2d\xe7\x22\xe7\xa3\x74\xeb\x29\x8d\x73\xc1\x0b\xe1\x81\xf8\x71\x6c\x0d\x21\xe5\x5a\xab\x49\x2f\xe7\xb7\xdb\x36\x91\x59\x22\x3e\x8a\xa4\x87\x33\xd8\xb6\x55\x2e\xfe\xb5\x94\xb9\xa0\x56\xbd\xb1\x12\xf9\x58\xee\x30\xd5\x42\xf5\xee\xd7\xb1\xd4\x3b\x36\x28\x54\x6f\x91\xcb\xb9\x2c\xe4\xcd\xd6\xa3\x9b\xf1\xed\x69\x45\x8d\x97\x73\x91\x15\x3d\x5a\x3c\x91\x0a\xf3\x73\xeb\xe9\x88\x5f\x7a\x89\x9a\xf7\x12\x31\x91\xd9\xd6\xe3\x23\xac\x4f\x45\xd1\x53\xb7\xd9\x97\x10\x0c\xcf\x76\x44\x27\x75\x8d\xe3\x75\x3d\xef\x48\xe1\x99\xca\x82\xed\xb1\x33\x14\x2d\x8a\xde\x6e\xdb\x5f\xcf\x78\x2e\x92\x9e\x2e\x54\xbe\x35\x92\x65\xa6\x17\x66\xaa\xc8\xc6\xb6\x6d\x95\x71\x43\x68\xbd\x5b\xc1\xaf\x7b\x73\xbe\xd8\x81\xac\x17\xcb\xed\xc7\x86\xf3\xd9\xb6\xf6\x52\x6e\x5d\x95\x10\x75\x2d\xb6\x5e\x8c\x99\x4c\x12\x91\x99\x16\x5b\xef\x19\xfb\x57\x4f\x17\xbc\xd8\x7a\xce\xb9\xd8\x6d\x93\x2c\x78\x31\xdb\xfa\x30\x11\x45\x6f\xb4\x94\x69\xd1\x93\xd9\x4e\x2c\xac\x10\x53\xb1\xf5\x66\x2b\x54\x2f\x15\xd9\x74\xfb\x61\x15\xaa\xc7\x47\x5a\xa5\xcb\x42\x20\xbb\xdc\x7a\x5b\xe7\x39\x5f\xf5\x64\x36\x4e\x97\x89\xd8\xf5\x10\x33\x4b\xd9\xb3\xa5\xdb\xb6\x35\xdb\xb9\x37\x5a\x4e\x77\x22\x84\x26\x3e\x96\xf1\xf9\xce\xa3\xae\x00\xd1\xab\xf9\x48\x6d\x7f\xe8\x9b\xb6\xbb\x8c\x7d\xac\x16\xab\xde\x58\x65\xba\xc8\x97\x63\x23\xc7\x50\xc7\x72\xfb\x91\x4b\xdd\x9b\xa8\x7c\xbc\xfd\x46\x16\x1f\x17\x2a\xdf\x9a\x55\x13\x2b\x42\x3c\x6c\xcd\x2b\xb4\x6d\xd1\xe3\xba\xb7\x03\xe7\x90\xba\x07\x54\xb7\x03\x6d\xdf\xeb\xe4\xb9\x07\x7d\xc5\x87\xd5\x0e\x0b\x34\x2b\xe6\x5b\x23\xce\x4a\x42\x70\xc2\x7d\x95\x0d\xd0\x13\x1f\x77\xdb\x83\xb7\x22\x4d\x7b\xd7\x99\x81\xb4\xdb\xa2\x57\x1a\xf6\x6e\x73\xbe\x58\x6c\x4f\x98\x84\xe1\x7b\x0f\xc0\x9c\xe8\x85\xea\xe9\x22\x97\xd9\xb4\x57\xf0\xe9\xd6\x8c\xae\x37\x59\x66\xe3\x42\xaa\xad\xd9\xb6\xad\xdf\x1b\xc9\x2c\x31\x1b\xb8\x10\x1f\xb7\xa6\x41\xe4\xab\x46\x2e\x90\x42\xef\xb8\xd6\xc4\x93\x0b\xa3\xf6\x6c\x1c\xaf\xfd\x2d\x74\x7f\x37\x4c\x8a\x6c\x6a\x56\x62\xa9\x45\xde\xe3\xd3\x1d\x24\x51\x6a\x78\xf3\x4b\x8f\x14\xbb\xdd\xe6\x35\x17\xc5\x4c\x25\xbd\x19\xd7\x0e\x3d\x7a\xb9\xd8\x85\x5d\x45\x70\x96\x5a\xe8\xde\x96\xe7\x65\x80\x2b\xe4\x40\x13\x99\x16\xdb\x9f\xca\x51\xbf\x52\x03\x11\x6e\xcf\x95\xb0\xf5\x44\xe5\x3d\xc1\xc7\x3b\x0f\xf4\x7e\xcd\xb4\xda\xa4\x26\x07\x4d\x88\xc9\x7e\x05\x5d\xa1\xa4\x9e\x7e\xc5\x11\x6c\x60\xc8\x55\x58\xbb\x1c\x02\x46\xbd\x82\x5d\x37\x4a\x37\x71\x7e\xfb\xfb\x56\x8c\xfa\xa6\xd9\x58\xa5\xa9\x00\x6e\xa1\x37\xac\xd5\x9f\x47\x7c\x24\x52\x6b\xc3\x18\xcc\x44\xba\x10\xb9\xe5\x8b\x6f\xd7\x62\x2c\x57\x69\xba\x5c\xf4\x16\xe9\x72\x2a\xb3\x9e\xf9\x44\xca\x8d\x1e\xe8\x7c\xbc\xd6\xce\x71\xb3\x14\x1f\x07\x89\xd4\x05\xfc\xd5\x17\x7a\xbe\x35\xd9\x26\x89\xd9\x5e\xcb\x4c\x8f\xd5\x62\x07\xcc\x04\x7b\x2c\xdb\x70\x3a\x54\x9a\x80\x04\xdb\x53\x93\xad\x30\x18\x58\x88\x06\x6b\x44\xdf\x06\xbc\x73\xbd\xca\xc6\x67\xea\xa5\x05\xe1\x1a\x2f\xa5\xab\xb3\x2c\x1a\x4d\x42\xfc\xa3\x54\x7a\x90\xca\x91\xab\x3c\x6a\x9c\xae\xaf\xbb\x1b\xc0\xa5\x4c\x93\xbf\xbf\x7b\xb5\xa9\xbe\xc1\xe6\xe0\xd8\xac\xdb\x58\x98\xad\xf2\x9a\x67\xbc\x51\xe5\x28\x35\x2b\x72\x9e\xe9\x89\xca\xe7\xcf\x79\xc1\x37\xb6\xe0\xd9\x58\xa4\x03\xa9\x9f\xc1\x1f\xf5\xd5\x17\xb9\x1a\x0b\xad\x7b\x42\xff\x34\x18\xe5\xea\x56\x6f\x1e\x89\x9d\x70\xa6\xf2\x39\x4f\xe5\xbf\xc5\xaf\x82\x27\x22\x7f\xc3\x9b\x78\x58\x69\x12\x22\x9b\x99\x01\x1d\xe5\x79\x13\xa7\x2a\x35\x40\x36\xb5\x7d\x7d\x2d\x8a\xa2\xc9\x70\x55\x9d\x86\xd4\x4f\x49\x23\xdb\x62\xf1\x6c\xa3\xb1\x9a\x8f\x64\x66\x5a\x6c\xa4\x0f\x18\x12\x10\xc7\x8b\x65\x9a\xbe\x6d\xd4\x61\xab\x9d\x2c\x78\xae\x09\xb9\x5b\x53\xa1\xd4\x7f\x7f\xf7\xea\x94\xcf\xc5\x49\x2e\xa7\x4d\xaa\x6f\xdd\x7c\xd4\x75\xa3\x18\xed\xab\xf3\x84\x2f\x0a\x53\xff\xe3\x6c\xe3\x52\x24\x62\xc2\x97\x69\xb1\x1d\x7e\x12\xa9\x17\xbc\x18\xcf\xde\x89\x7f\x2d\x85\x6e\x38\xab\x4b\x6d\xe6\x22\x9f\x8a\x67\x2a\x9b\xc8\x06\xe1\xb2\x54\xff\xa9\xf9\xb9\xe5\xa6\x59\xb7\x65\x1a\x2a\x9f\xa9\x6b\xb1\x35\xbe\xf5\x22\x17\x7c\x23\xff\xe1\x9b\x46\x1c\xf3\xd1\x80\x15\xf2\xe5\xce\x32\xd6\x6f\x6a\x93\xa5\xa4\xd2\x64\x07\x73\x58\xa4\x0b\xec\x2a\x48\x92\x11\x7c\x47\x1d\xcc\x75\xb9\xab\x2c\xb2\x65\xc3\x8a\x5e\xbe\xc8\xd5\x5c\x6a\x11\xda\x10\x76\x35\x85\xf5\x78\xba\x93\x8a\x45\x92\xf9\x0e\xc6\x61\x99\xe9\xc2\xd0\xeb\xd6\x56\x80\x02\x0f\xdc\x5d\x6c\x20\xa1\x62\xa4\x72\x92\xc4\x77\xb1\xdc\xdd\xb3\xe9\x98\xa7\x69\xef\x56\x16\xb3\x9e\xe6\x13\xe1\x35\xb3\xde\x38\x55\x7a\x87\xf5\xc4\x86\xdb\xdf\xf2\xcc\xc4\xf8\xba\x37\x56\x79\x2e\xc6\x45\x66\x4e\x53\x35\xd9\x56\x2d\x0c\x96\xd3\xea\xa0\xbb\x53\x0f\x69\x7a\x52\xf7\x1a\xf9\x45\xcd\x8e\xe4\xfa\x7a\xdb\xba\x73\x39\xce\xd5\x2e\x0d\x32\x71\xeb\xb7\x03\x5f\xf0\x91\x4c\xe5\xf6\xd7\x01\xb6\x65\x2e\xb4\x4a\x77\xb8\xe4\x51\xba\xe8\xe5\xc2\x70\x96\x9e\x30\xd2\xc2\xd6\xb8\x58\x88\xdc\x48\x55\x5b\x33\x0a\x1a\x60\x7d\xfd\x7f\x6d\x14\x1e\xa9\x86\xe9\x92\x37\x1d\x90\x54\x07\x19\x91\x9c\x34\xe0\x8e\x6a\x81\xa4\xb0\xb6\x46\xe5\xa4\x18\xa7\x52\x64\x05\xc8\x4a\x32\x9b\x96\x8f\x92\x8d\xa6\x52\xa0\x75\xb3\xc4\x85\x2a\x56\x0b\xd1\x9b\x8a\x62\x07\x0d\x3d\xb0\x92\x79\x10\xdb\x33\x78\xc7\x93\xcc\xa6\xdb\xf5\x32\xd6\xf1\x96\x7b\x6c\x34\xde\x5b\x28\xad\x25\x5d\x71\xe1\xb8\x77\x9c\xb3\xbe\xe7\x9c\xe9\x7c\xb0\xa3\xdf\x55\x53\xdb\xaa\x59\x78\xa1\x33\x13\xb9\x2c\x7a\x72\xd2\xa3\x8b\xe1\xad\x99\xf0\xed\x4c\x16\x42\x2f\xf8\x78\xfb\x63\xc9\x4a\x06\xb9\xdc\x7e\x0b\x66\xcb\xf9\x48\xe4\xfd\x7b\x9d\xb5\x53\xf1\x71\xd1\x9b\xa4\x7c\xba\xf5\x08\xa9\x8d\x2e\xe4\xf8\x7a\xd5\x23\x29\x6b\xc7\xc6\xe2\xa3\x18\x6f\x3d\x3d\x6c\xd3\xdf\xdc\xa6\x82\xc5\xf9\x32\x2d\xe4\x68\xb5\xe9\xf8\x0a\xed\x91\x28\xec\xec\x4a\x23\x13\xf9\xb1\x47\x53\xab\x9a\x9b\x53\x35\x95\x5b\x8f\x9c\x27\x37\x46\x24\xb1\x12\xe2\x4e\xac\x28\x40\x6e\x8f\x8f\x74\x91\xf3\x4d\xa6\xbe\xea\xcc\xe7\x46\xf5\xb8\xbf\x21\x69\x57\xc4\x91\xb8\xb8\xcc\x77\xbd\x8a\xe0\x5a\xcb\xe9\x8e\x66\xdc\x49\xae\xb6\xb6\x21\x11\xfe\x17\xcb\x6c\x35\x56\x89\x30\x12\x34\xd7\x63\x29\xef\x23\xba\x6d\x8f\xce\x65\x9e\xf6\xb4\xe0\xf9\x78\xd6\x5b\xf0\x9c\xcf\x77\x30\xe9\x85\x28\x34\x67\x9a\x9a\x2f\x54\x26\xb2\x42\x0f\xac\xe3\xd2\xe0\xe9\x0d\x2f\x78\xde\xbf\x59\x8a\x7a\x73\x9b\xf5\x56\xea\x39\x0b\x9f\xd4\x85\xb7\x6d\xf4\x1c\xcc\xfe\x7c\x53\x4f\xf4\xc7\x2b\xa9\x8b\x77\xea\xd6\x77\xb9\x45\xfd\xa6\xca\x4f\x17\x8b\x5d\x87\x2e\x33\x3c\x67\x8a\x55\x2a\x9c\x49\x67\xbe\xe3\xdd\x84\xb5\xe4\xde\xe3\x5a\xe3\x9e\x27\xd4\x44\x66\xc9\x36\x3b\xbf\xda\x70\x23\x81\x57\x9a\xe8\x54\x6e\x52\x80\xaa\x6d\x16\x3b\x35\x72\x97\x58\x59\xa3\x59\x6c\x9d\xe2\xba\xc5\xc5\x6b\x55\x6f\xbd\xe1\xe9\x72\x07\xb3\x2f\x1d\x31\x1b\xb4\xdd\x26\x7b\xac\x19\xe0\x2b\x79\x2d\xce\xd4\xd3\xe6\xb1\xae\x6b\xfc\x0f\x59\xcc\xd4\xb2\xf8\x55\x35\x9a\xaa\x1b\x5a\x5b\xd3\xff\x7d\x7a\x5e\x66\x64\x7a\x10\xc9\xf1\x17\x80\xc9\x54\x66\x9b\x9f\xae\xb1\xe4\x34\xb4\x2e\xd4\x33\x95\xe9\xe5\xdc\x34\x5f\xd3\x77\xf3\x79\x95\x8b\x45\xca\x03\x62\xf4\xe2\xbc\x63\x2e\x15\x79\x1f\x3c\xa5\xaa\xc5\x7c\x01\x26\x9c\x4b\xe7\xdc\xf9\x4c\x65\x85\xc8\x8a\xbd\xe1\xf9\xde\xe0\xdb\x6f\x2f\x32\xf6\x2d\x7b\xa6\x16\xab\x5c\x4e\x67\x05\x6b\x8f\x3b\xec\xbb\xc7\xfb\x3f\xf4\x16\xb9\xd0\x22\x2b\xba\xec\x05\x1f\x8b\x91\x52\xd7\x5d\x76\x9c\x8d\xfb\xa6\x3a\x34\x39\x9b\x49\xcd\x10\x22\x33\x47\x09\x93\x9a\x99\xfd\x93\x69\x91\xb0\x65\x96\x88\x9c\x15\x33\xc1\x5e\x1f\x9f\xd9\x62\x36\x51\xcb\x2c\x61\x32\x33\x1f\x00\xc6\xab\xe3\x67\x47\x6f\x4e\x8f\xd8\x44\xa6\x82\xca\x59\xae\x54\xc1\x12\x69\x94\x0f\x95\xaf\x98\x9a\xb0\x22\xe8\xa9\xc8\x85\x80\x31\x0c\x2e\xb2\x8b\xec\x86\xe7\x8c\x50\xcf\x0e\x59\xdb\xee\x48\xd6\x46\xa7\x0b\xdd\x61\x9f\x2e\x32\xc6\x2e\xf6\x96\x5a\x30\xbc\x23\xbc\xd8\x3b\x30\x2d\x19\x33\x6d\x4f\x16\xec\x90\x9d\xe0\xd6\x72\x12\xfb\x81\xfd\x3a\xe3\xfa\xe4\x36\x33\x35\x16\x7d\xfc\xdb\x5e\x0a\xb9\x2a\x66\x9e\x46\x68\x4f\x0e\xd8\x60\xc0\x5e\xab\xdc\xe0\x62\x6e\x50\x07\x2a\x04\x2b\x66\x3c\x63\x37\x4a\x26\xec\x71\xdf\xb6\xf9\xe6\x14\xb8\x28\x3b\x64\xa6\x37\x35\x61\xf6\xf7\xe1\x21\xbb\xd8\xb3\x73\xb8\xd8\x63\x4f\xec\x97\x21\xfb\x74\xe7\xba\xb4\xcc\xd7\x41\x21\x78\x8e\x2b\xb3\xcf\x9f\xd9\xc5\xde\x9f\xff\x6c\x7f\xc3\x8c\xb1\x2d\x5c\xb1\x1c\x37\x01\x88\xbe\x5a\x28\x51\x61\x00\xaa\x50\xa7\x40\xa9\x67\x7c\x5a\x01\x14\x7c\xb3\x60\x82\x22\xb7\x02\x6e\xb9\x6e\x73\xbe\x68\xcb\x2c\x13\xf9\x8b\xac\xcb\xd4\xb2\xc0\x3f\xb4\x48\x27\x5d\x56\xe4\xab\x57\x6a\x0c\x47\x28\x2d\x27\x33\xb8\x3e\x9e\xd8\x8a\x6c\x91\xab\x1b\x99\x88\x84\xf1\x2c\xb1\x85\x7e\x39\x0d\x5d\x72\xe6\x6e\x95\xba\x86\xc8\xb2\xba\x6a\x64\x35\x53\x13\x5f\xb9\x8f\xdd\x99\xf9\x42\x45\xf7\x81\x1d\xba\xde\x1f\x3e\xdc\x12\x18\x7b\xe2\xda\x0c\x7d\xe9\x81\xef\x62\x1a\x40\x27\xa2\x44\x85\xb6\x1d\x77\xee\xfb\xe9\x04\xad\xc9\x2b\x82\x1d\xb2\x4c\xdc\xb2\x67\xf8\xab\x1d\x60\xcf\x2c\xc5\xf9\x65\x87\x90\x0f\x48\x3c\x9b\x09\xd6\xbf\x92\xd9\x8d\xba\x16\x0c\x0d\x71\x6c\x99\xc9\x89\x14\x1a\xf6\xa2\x9c\x2f\xd0\x35\x16\xcc\x5c\x1a\x37\xa3\x60\xfd\x4c\x7c\x2c\xba\x0e\x4a\xbf\x98\xe5\xea\xb6\x0b\xe8\xef\xe7\xa2\x58\xe6\x19\x01\xd3\x84\x40\x37\x33\xd7\xd9\x21\x9b\xf3\x6b\x71\x0c\x3f\x5e\x43\x5d\x4f\x00\xb8\xee\x34\x1f\x3f\x5e\x82\x3c\x8d\x30\x77\x67\xfe\x8f\x76\x7b\xdf\xd0\x11\x3b\x04\x72\xa2\x56\x66\x8e\xf9\x6a\x30\x36\xd2\x3f\x43\xe6\xcc\x0a\xc5\xe6\x32\x93\x73\xf9\x6f\xc1\x12\xa1\x16\x85\xf9\x13\x27\xd8\x67\xef\xa0\x13\x43\x31\x66\x1f\xa7\x02\xb6\x22\x02\xca\xc5\x58\xe5\x09\x4b\xe5\xb5\xb0\x83\xeb\x17\xf9\xea\x28\x2b\x72\x29\xf4\xb9\xbc\xec\xfb\x26\x7d\x64\x8f\x70\xee\x4f\x38\x70\xc8\x65\x9a\x10\xa0\x19\xbf\x11\x6c\x24\x44\xc6\xda\x06\x65\xb7\x5c\xb3\x45\x2e\x6e\xa4\x5a\xea\x74\xd5\x61\x89\x30\x2a\x80\x48\xcc\x40\x0b\x7e\x2d\xcc\x58\x52\xa5\x97\xb9\x30\x25\x23\x41\x50\x10\x91\x09\xbb\xc5\x43\x96\xf1\x7c\x0a\x4e\xcd\xba\xcb\x46\xcb\xc2\x70\x53\x9e\xa6\xb0\x5c\x63\xae\x85\x66\xb7\xe6\x8f\x5c\x30\x3e\x32\xb5\x6f\x2d\x18\x9e\x9a\xc3\x6d\x85\x83\xe2\x19\x13\x1f\xa5\x2e\x64\x36\xb5\xe4\x70\x2b\xd8\x2d\xcf\x0a\xd3\xf5\x98\xa7\x69\x97\x69\x65\x80\xe6\xa2\xa5\x59\xa6\x58\x26\x84\x9d\x96\xa9\x01\xe4\xca\x38\x90\xa0\xdb\xde\x24\xbb\xb0\x7f\x98\x11\x64\x4c\xdc\x08\xb3\x8a\x05\xe3\xb7\x7c\x05\xc3\x67\x5c\xeb\xe5\x5c\x66\x53\x0b\x69\xe6\xa8\xd1\x20\x40\x33\xf1\x91\x8f\x8b\x74\xc5\x54\x26\xdc\x3c\xbb\x4c\xcb\x6c\x0c\x2c\xb6\x60\x33\xbe\x58\x88\x4c\x23\x82\x58\x91\x2f\x3d\x96\x4c\x7f\xf9\x0a\x90\x00\x83\xbf\x15\x2c\x51\x59\xab\xc0\x19\x1b\x1c\xab\xe5\x78\x06\x7d\x3a\x14\xba\x21\x9f\xcd\x2c\x20\x95\xa5\x2b\xc6\x93\x44\x9a\x29\xf1\xd4\x20\x57\x8d\x81\x6a\x98\x35\x9f\x18\x4e\x03\xf8\x76\x64\x40\x34\xd3\x65\xb7\x33\x39\x9e\xb9\xe5\x37\xe4\xa5\x0b\x23\x1b\x30\x3d\xe3\x0b\x01\x3b\x47\x2b\x36\x53\x0b\x31\x59\xa6\xe9\x8a\xe9\x99\xa1\x17\x33\x97\xf1\x4c\xf0\x85\x19\x26\x75\x08\xa7\x9f\xc7\x6d\x91\xaf\x9e\x19\xe2\x6e\x4f\x0c\xe7\x1c\xfd\xd6\x35\x93\x70\x7c\xb2\xc8\x57\xf6\x4f\xb7\x7f\x3e\xc1\xb1\x33\x64\x17\x7b\xa8\x01\x5d\xec\x41\x9b\x21\x9b\x64\x7d\xb3\xc2\x6d\x0f\xe5\x8e\xd8\xcb\x1d\xc3\x0d\xd4\x16\x79\xde\x59\x03\x10\xf8\x80\x83\x27\xf2\xdc\x43\xa0\xbd\x6a\x4f\x8f\x97\x22\x3b\x2d\x78\x21\x4e\x97\x7a\x21\xb2\x44\x24\xa7\x05\xcf\x0d\xef\xba\xd8\xd3\x51\x51\x70\xe2\x54\xda\xfc\x53\x8a\x34\x89\xdb\x40\x51\x4d\x9b\xa3\x8f\x62\xbc\x04\xb2\x36\xd5\x85\xfd\x55\x53\xf3\x19\x2e\x9e\x40\xc0\x63\xfb\xcb\x1d\x5a\x83\x01\xf1\x08\x03\x0c\x24\x13\xa4\x15\x66\x94\x14\x64\x9a\xc8\xc7\x60\x9d\xcd\x6f\xcd\xe7\x82\x89\xc9\xc4\x54\xe2\x9a\x60\x8c\x72\xc1\xaf\x0d\x08\xb3\x19\x89\xad\xda\x1b\x52\xa6\x6f\x25\xfc\xc7\x8c\x07\x02\x13\xec\x20\x0d\x57\x97\xd9\x52\x9c\x0a\xf3\x5f\x61\xce\x5c\x90\x0c\x08\xe8\xf3\xe5\x7c\xbe\x62\x81\xbd\xcc\xd1\x89\xc6\x6d\x72\x2b\x98\x91\x84\x68\x60\xa1\x65\xcd\x90\x20\x41\x89\x0c\x6e\xfe\x48\xf3\x9e\x98\x6c\x52\x85\x4c\xb4\xe0\xce\x28\xbb\x6b\x00\x37\xba\xcf\x5e\x40\x93\x34\x65\x7a\x21\xc6\xb8\x43\xa4\x39\x20\xbb\x6c\xa5\x96\x6c\x0e\x8c\x40\xcf\x80\x87\xc0\x75\xaf\xe1\x76\x2b\xb5\xb4\x70\x0c\xc3\x9e\x48\x91\xb3\x4c\x01\x2b\x9a\xf3\x6c\x0a\xe2\x95\x60\xe0\x76\x49\x28\xd4\x82\x15\xb7\xca\x8f\x2d\xde\x2b\x6e\x70\xed\x0e\xfb\x74\x57\xff\xe9\x05\x95\x6c\x51\xe5\xad\x45\x0d\xd5\xb5\xe7\x0d\x30\x7e\xb3\xc5\x17\x2a\x5d\x4d\x64\x9a\x02\xbe\xfe\x1f\x2b\x43\xb9\x66\xff\x0f\x94\x8b\xec\x46\xe6\x2a\x43\xb6\x63\x50\x49\x60\x90\x47\xa1\x1d\xc9\x30\x04\xd4\x69\x98\xf4\xc4\x50\x01\x68\xa9\x81\x55\x3f\x9d\xc7\x52\xe3\x25\x3b\xf4\x13\x6b\xbb\x2d\x4d\x8b\x68\xa8\x1a\x0f\xd7\x40\x54\x9e\x8a\x02\xa0\x79\xd9\xc4\x96\x18\xf8\x27\x13\xb7\x91\xde\xc0\x90\xeb\x06\xe7\x40\x3c\x7c\xe8\xfe\x6e\xbb\x3f\x50\xb5\x6d\x9f\x5f\x76\x3a\x28\xd6\xc8\x09\x6b\x37\x01\x7b\xf8\xd0\x32\xa1\xa6\x1a\x0f\x0e\x8d\xdc\x1e\x54\x44\x09\x1e\x59\x5c\x43\xa3\x6e\x49\xb8\xee\x84\x02\x27\xac\x6b\xb0\x5a\xc4\xc7\x71\x85\xea\x96\xf7\x00\xf6\x9a\x2c\x40\x18\x14\x3c\x71\x90\x68\xbb\x5b\xf2\x20\x19\xa9\x0e\x63\x0d\xe3\x3c\x28\x73\x53\x23\xf5\x34\xd3\x67\xb0\x89\x0f\xb1\xaf\x1a\x51\xb2\x22\x73\x56\x7a\xc5\x55\xa9\x74\x13\x81\x78\xb9\x88\x98\xca\xba\x51\xd5\x43\xf3\x83\xde\x00\x67\x43\xf3\xf3\x8a\x7e\x72\x59\x99\xbc\x9b\x81\x61\xbc\x29\x5f\xbd\xe1\xa0\x46\x5e\xec\x55\x6a\x84\xdc\xff\x57\x94\x22\xcd\xde\x05\xdd\x0f\xcf\x01\x2b\x14\xaf\x13\x86\x69\xe1\x09\x8e\x53\xb4\xbc\x90\x68\x34\x60\x91\xcf\xa1\x22\x37\xe2\x8d\xe1\x71\x25\xf9\x3c\x66\x69\xa8\x7d\x5a\x50\x28\x48\xeb\xb6\xd7\x0f\x2c\xfd\x9e\x5f\xec\x99\xe1\x99\xb3\x39\x38\xa6\x2f\xf6\x70\x80\x17\x7b\x97\xfd\x89\xca\x8f\xb8\x91\x23\x2c\x03\xc4\xee\x82\xe3\xde\x41\x3d\xc7\x4f\x21\x13\x69\x87\x52\x47\x89\x95\xd8\x09\x10\x44\x94\x2d\x0e\x6c\x55\x27\x21\x74\x42\xaa\xb6\x12\xbd\xd4\x95\xb5\x08\x7b\x9d\x8a\xec\xc5\x32\x73\x1d\x83\x1a\x84\xf4\x42\xaa\x35\x56\xa8\xaa\xd6\xc0\x81\xcc\xa7\x90\xcc\x0e\x22\x2e\x38\xa6\x53\xcc\xfc\x7b\x42\x60\x0f\x6b\x08\x91\x7d\xfe\xec\xa7\x3d\x18\xc0\x49\x87\xe7\x12\x30\x86\x6a\xfd\xa0\x47\x50\x46\xd9\x48\xe8\x02\xc5\xf3\x2c\x82\x94\x28\x90\x28\x15\x03\xef\x03\x26\x0b\xcd\xc0\xd6\xc8\x9c\x37\xaf\xaf\xde\x86\xd3\x3a\x24\xe4\xcf\x9f\x61\xd0\xd0\xa2\x43\x18\xa8\x21\x6c\x0b\x62\xc8\x26\x3c\xd5\x22\xe2\xfb\x76\x15\xe6\x3c\xbf\x5e\x83\x76\xc3\xa8\x89\x77\xe8\xe8\x4c\x08\x28\xa2\xf6\x3b\x01\xea\xae\xd9\xc7\x1d\x27\x82\x8a\x54\x0b\x0f\x8f\x56\xef\xea\x0a\xa8\xf2\xea\x6a\x33\xab\xb1\x23\x7d\xd0\xae\x9a\x2e\x64\x46\x00\x3b\x11\x11\x63\x59\x2d\x2b\x69\xe4\x12\x44\xd5\x81\xd8\xeb\x06\xdb\xcc\x6b\x5f\x2e\x3a\x07\x65\x25\xf7\xc5\x32\x8b\x16\x63\x30\x60\xff\x90\xc5\x8c\xac\x64\x23\x95\x80\x6d\x8c\x67\x2b\xb4\xea\xb8\xd5\xe9\xb2\x0f\xfc\x96\xcb\x82\x7d\xfc\x00\xe4\x63\xfd\x49\x41\xa1\x24\x40\x1f\x56\x20\x3a\x07\xfe\xba\xef\x28\x90\x9b\x83\x2d\xe6\x63\xe7\x03\x29\x7a\xbc\x40\xa3\x1c\x19\xd9\x8c\xfe\x56\x08\x6d\x85\x94\x0f\xe1\xa1\x0a\x07\xb8\x61\x2a\x57\x57\x30\x80\x8b\xbd\xce\x07\x43\xbd\x89\x30\x4c\x4d\x66\xc2\xa0\xdf\x00\x83\xce\x45\xc2\xa0\x01\x93\x56\x24\x9e\x0b\xd2\x33\x47\x82\x01\x00\x81\xcc\xce\x52\x21\x27\xf5\xbe\x96\xe7\x38\x5d\x84\x3a\x1f\x1a\x2e\x43\xcc\xe5\xae\x6c\x6f\x7a\x1a\xda\xb4\xda\x53\x6f\x1a\x7a\x8b\x4e\x1f\xc7\xf3\x45\xea\x20\xbb\x56\x55\x2e\xd6\x65\xe4\xbe\x62\xfe\x30\xeb\x19\x50\x0f\x98\x26\xd1\x62\x70\xe8\xb5\x34\xd7\x97\xe5\xa1\x5d\x16\x74\x1f\x31\x46\x43\xab\x08\xa0\x8f\x34\x03\x3b\x98\x78\x77\x89\xd7\x9a\xbe\x6d\xe5\x98\xbb\x96\xb6\x8d\x1d\x97\x5e\xa6\x46\xdb\xf2\x4d\x0e\xe2\x1a\xb8\x34\x87\x54\x13\xaf\x1d\x82\x2a\x66\x6c\x58\xc5\xcb\x57\xf8\x8f\xf8\x2e\xb5\x87\x21\xa3\x0e\x00\x4c\x37\xae\xbb\x81\x78\xa2\x39\xba\x15\x0e\x96\xa8\x4f\xd8\xc7\xc6\x7d\x6a\xd9\xe9\x17\x33\x91\xf9\x73\x0c\x3e\x96\x60\x31\xbb\x98\xfe\x58\xa4\x01\x94\x17\xf4\x20\x6c\x76\xd7\xf5\xc4\x17\xab\xc2\x25\xa0\xee\x84\x15\x79\xbe\x09\x66\xf8\xf3\xee\x22\xab\x1c\xa1\x8d\x13\x2e\x4f\x74\x99\x51\x00\x58\x69\x5c\x86\x71\xcc\x44\xc6\xb8\xdb\x78\x04\xd2\xb0\x07\x82\x98\x74\xe1\x78\x99\xc8\x8c\xa7\xb4\x78\x23\x31\x56\x73\xa1\x4b\x90\x40\xd2\xc1\x0a\x24\xc6\x12\xb0\x3f\x7e\x42\x0c\x26\x2a\x13\x77\x7f\xb2\x24\x36\xc1\xc3\xb0\x04\x64\xbc\xcc\x73\x23\x41\x7b\x07\xba\x78\xa1\x3d\xcd\xb1\x43\xe6\xa6\x75\x50\xaa\x04\x98\xc0\xca\x11\x0e\xe3\x45\x52\xe5\x65\x42\xdb\x31\xa7\xc5\x08\xb0\x71\xcb\xb5\xc5\x90\x39\x97\x73\x75\x8b\xac\x0f\xea\x19\x06\x30\xe2\xe3\xeb\x12\x24\x99\x15\x0a\x4d\x47\xc0\x83\xbd\x05\xd7\x71\x0d\xad\x8c\x0a\x60\xf8\xe6\x48\xb0\x19\xcf\x92\xd4\x30\xe2\x99\xc8\x45\xbf\x86\xba\x6b\x29\x48\xad\xa7\xa1\x80\x82\xfc\xb1\x13\x1a\xae\xd1\xb4\x48\xd3\x74\xe6\x54\x37\x42\x91\xfd\x6b\x29\x96\xb1\x78\xe6\x51\xe6\xaa\x99\x6d\x8a\xf6\x5a\x73\x0c\xa1\xa8\xf9\x34\x4b\x9e\xe6\xd3\x76\x9d\xe4\x97\x89\xdb\x90\x74\x3d\x99\x36\xb3\xcc\x60\x0b\xad\x65\xb2\x8d\x73\x2f\x19\xa6\x4a\x33\xb7\xf2\xbf\x27\x02\x9a\x39\x68\x72\x60\x8f\x35\x73\x14\x09\x1b\x89\x89\xca\x05\xdd\x14\x04\x06\x50\x38\x56\xcd\x49\x98\x46\x90\x78\x9a\xba\xbe\xec\x9c\x75\x60\xe5\xb5\x7b\x8c\xe0\x42\x2f\x46\x6b\xc0\xb9\x76\x23\x58\xf6\xd0\x45\xba\xd6\x0c\x2c\xb6\xe9\x2d\x5f\x69\x96\x88\x54\xde\x08\xb0\x33\x66\x64\x67\x04\x17\x3d\xa6\xf2\x44\xe4\x7d\x76\x3c\x89\x20\x85\x93\xcb\x54\xd1\x3c\x41\xa3\xa1\x6a\x26\xe7\xe6\x94\xc5\x89\x46\x70\x4c\x13\x1a\x2a\x93\xf3\xb9\x48\x24\x2f\x44\xba\xea\x3a\xc3\xb3\xc1\x0a\x58\xb2\x0c\x8b\x31\xb5\xcd\x3e\x31\xe8\x9a\xc8\xbc\x61\x76\x6b\x77\x8c\xb5\x9b\x29\xb0\x78\x2c\x33\x59\xac\x40\x8c\x88\x87\x65\x04\x9f\x4c\x8c\x85\xd6\x3c\x5f\x31\x2d\x8a\xe5\x02\x6c\xde\x66\x25\x12\x39\x46\xeb\xea\x2d\x5f\x91\x25\xde\x95\x82\x97\x6a\x04\x49\x6a\x76\x3b\x5b\x85\xbc\x2c\x32\xa1\x99\x61\xce\x72\x95\x81\x75\x9e\x10\xa1\x0d\xb7\x8c\xb1\x0d\x26\x45\x95\x3b\x04\xa0\x06\x68\x00\xc7\xe2\x99\x8e\x01\xd6\x00\xa1\xeb\x54\x22\x16\x33\xac\x89\xcc\x75\x81\x32\x51\x9f\x9d\x82\xd5\xfb\x36\xb8\x9c\x61\x1a\xfe\x8c\xd1\x53\xea\x34\x52\x2d\x63\xcc\xeb\x2e\x91\x80\x00\xff\x64\x9e\x96\x46\x15\x52\x06\xd8\xed\xc1\xea\x09\xb7\xc5\x5d\x34\xe6\x1b\x3a\x98\xce\x0c\x14\x32\x85\x6b\xb8\x6a\x08\x18\x5c\x79\x2b\x3e\x29\x97\xe0\x59\x16\x72\x82\x66\x7e\xd3\x2d\x31\xe1\xa7\x70\xc1\x6a\x94\x22\x3e\xe5\x40\x8a\x13\x2e\xd3\xa5\x19\x46\xa1\xfc\x86\x44\xae\x60\xa8\x7f\xc5\x52\x5e\x88\xbc\xc2\xcb\x6f\xc8\xa2\xef\x2e\xba\x9c\xa3\xcb\x76\x03\xf3\xb5\x3a\x6c\xb8\x96\x61\x1e\x94\x18\xf5\x60\xc0\x9e\x83\x2a\x0f\xdd\xe2\x15\x5c\x62\x2f\xac\xec\x55\x88\xd9\x39\x52\xb3\xa5\xc6\xbb\x21\xbf\xfe\x5b\xdc\xc7\xb5\xb5\x10\xf5\xd6\x82\x0e\x4d\x2e\x54\xd5\xd9\xa1\x65\x1f\xa1\x52\x5e\x6f\x6c\x88\x84\xe9\xf2\xd5\x64\xc3\xc7\xf3\x9a\x8b\xe8\x1d\x6c\x92\x5e\x27\x88\xe0\xb3\xc3\xb8\x3f\xaf\x38\xbd\x51\x05\x5d\x14\xe1\x56\xa9\x6c\x0f\xc3\x66\x1d\x3e\x45\x62\x78\x59\xa1\x16\x4c\x4d\x08\x40\xdc\x0f\x59\xb5\x0f\xcc\x62\xad\xd8\x6f\x4b\xed\xec\xdf\xdc\xb1\x10\x92\x7c\x98\x95\x95\x2e\xfc\xd5\x16\x4a\x59\x24\x21\x2d\x72\x95\x2c\xc7\x48\x95\x15\x92\x73\xaa\x0f\x0c\x37\x50\x7d\xb6\xb8\x2c\xaf\xd7\x66\x8c\xe4\x1e\x94\x83\x88\x8e\xfe\x09\x1d\x16\x95\xb3\xb2\xbc\x60\x7d\x0f\xe8\x82\x39\xd6\xa1\x2c\xe5\x6f\x7d\x93\xef\xf6\x70\xd0\x29\x16\x55\x2e\x7c\xd7\xd8\x82\xda\xd4\x43\xc7\x1b\x6a\x60\x88\xb1\x7f\x00\x18\xe3\x03\x35\xcb\x91\x94\xc0\x2b\x89\xca\x2e\x1f\x42\x11\xec\xaa\x76\x59\xca\x26\x81\xb3\x56\x37\x21\xc9\xd5\x88\xc0\xec\x49\x2c\xc7\x46\x20\xab\x02\x4c\x45\x45\xdd\xf6\x76\x3c\x34\x7d\xc1\x7d\x11\x1a\x42\x6a\x2e\xd7\xca\x68\x5d\xa3\xd7\x06\xb3\x33\xf4\x42\x70\x0f\x0f\xab\xd7\x69\x11\x1e\x50\x66\x36\xc4\x01\x81\x9c\xed\xc0\x44\x02\x6b\x40\x37\xcd\xf9\x32\xcb\xe0\xee\xad\x56\x76\xab\xef\xd0\xdd\xca\x45\x1d\x9a\xba\xc4\x1c\x9b\xb5\x63\x3b\xae\x58\xc9\x8d\x34\xad\xc1\x80\xfd\x05\x76\xec\x54\xde\xc8\x6c\xda\x65\x86\xeb\x7e\xf7\x63\xff\x7b\xfc\x9f\x3d\x0d\xcc\xf1\x38\x8c\x5a\xcd\x8a\x62\xa1\x87\x83\xc1\x42\xa8\x45\x2a\xfa\x73\xf5\x6f\x99\xa6\xbc\xaf\xf2\xe9\xe0\xff\xfc\xa6\x72\x91\x25\x2a\x9f\x4c\x06\x42\xff\xd4\x4b\x72\x3e\x29\xfa\xb3\x62\x9e\xfe\x97\x16\xe3\x9e\x23\x47\x43\x25\x73\x51\x11\x9f\x0d\x0d\xbd\x03\x02\x6a\xd7\xa2\xc9\x3a\x20\xd8\xe9\xd3\x21\x71\x50\xfe\xce\xf3\x29\x3b\xa4\xb9\xbb\x4d\x3a\x93\xa9\x60\xed\x22\x2f\xe9\xc5\x86\x86\x12\x91\x8a\x29\x92\x91\x05\x61\x8b\x4a\xfa\xbf\x2d\x2e\x21\x3b\x04\xf2\xce\xda\x19\xe6\x7c\x35\x22\x72\x7e\x4e\xdf\x5c\xfb\xc8\xd3\xc3\xc3\x09\xbb\x78\x57\xb7\xe7\xea\xaa\x00\x19\x94\x2f\x49\x3b\xd0\x81\x29\x39\x88\xdb\x5b\x54\x47\x20\x62\xe5\xbc\x81\x60\x4c\xcf\xe5\x15\x00\x02\x44\x6b\x42\x55\xe3\x3c\xc5\x18\x1c\x87\xd3\x2b\x6d\xce\x6d\x73\x46\x98\xbe\xc7\xfe\x7e\x4f\x4d\xd8\x5f\xf8\x48\xa4\xad\xb2\xe2\xed\xbc\x4d\xa1\x65\xec\x98\x13\x8b\x27\xd4\x05\xd4\x3b\x2c\xf5\x78\x18\x12\xc6\x41\x38\x25\xb2\x14\x35\xce\xac\x7e\x6b\xd5\xef\xd6\x98\xf1\x54\xd6\xad\xcc\xa7\xdc\xe6\x2e\xad\x0f\xee\xdb\x78\xc0\xd1\xda\xd4\x4d\xdb\x5e\xa2\x1f\x7d\x1c\x0b\x70\x6e\x6e\x07\x00\x3a\x3b\x4d\xd9\x5e\x8e\x94\x26\xe0\xe0\x8d\xf2\xe5\xa2\x68\xfb\x7a\x5d\x56\xea\xaa\x76\xa8\xe5\xd9\x3b\x5e\x1a\x8d\xad\xde\x7c\xd8\xec\x22\x15\x2e\x48\xd5\x6a\x68\x3d\x3d\xea\x4d\x21\xe6\x88\x25\x64\xa1\x0b\x4b\xae\x6e\x33\xf4\x67\x70\x1d\xde\x0a\x96\x0a\xa3\xd1\xba\xd5\x2e\x01\xaa\x7a\x5a\x18\xf1\x33\x55\x6a\x01\x76\x13\xa0\x75\x9e\xa9\x62\x26\xf2\x40\xd2\x8e\x28\xd7\x62\xc6\x2d\xa5\xca\x44\x4c\x11\x4f\xaa\x34\x13\x57\x18\x36\x78\x89\x1c\xc4\xc4\x12\x60\x09\x18\x64\x2d\xd7\x28\x51\x6d\x2d\x13\x29\x11\xa1\xb5\x42\xc7\x2d\x41\x02\x18\x06\xc6\xd6\x6e\xfc\xdd\xcc\x73\xd8\x38\xeb\xbb\x26\x9a\xdd\xce\x38\xbc\xed\x76\x33\x1a\x88\xf5\x3f\x31\x87\x9d\x27\x09\xa3\x2e\x29\xb5\x30\x4b\x0a\x2b\xc9\x73\x70\xe3\x45\xc3\x57\xd9\xb2\xb7\xd5\x2e\x44\x9b\x02\x1f\xa9\x1b\x51\xcb\xba\xdc\xa1\xe6\xa6\x74\x50\xbb\x01\xe1\x6c\xab\xb5\x61\xdf\x95\x2d\x62\xa1\x1e\x33\x18\xb0\x67\x66\x00\x96\xf1\x3b\xcf\xd9\xf3\x78\x00\x97\xf1\xa0\x0d\x3d\xa3\x01\x2f\xb8\xc5\x45\x21\xaf\xcb\x84\x04\xca\x1e\xad\x88\x06\x60\x03\xb0\x4f\xd6\xac\x0c\x22\xe1\x9d\xb3\x8a\x92\xab\x10\xc1\x70\x67\xae\x1d\x47\x97\x29\x00\x35\x57\x89\x9c\xac\xc2\x73\x83\x30\x63\x86\x12\x8c\xad\x4b\x80\x74\xe9\x94\x71\x80\x0b\xc5\xb2\x65\x9a\xa2\x4a\x98\x07\xee\x4b\xa2\x42\xf7\xfd\x92\x18\xba\xcd\xc1\x1d\x0a\xa1\x6e\xed\x36\x62\xf7\xc0\x6b\x24\x01\xdb\x75\x1e\xd5\x01\x15\x1b\x05\x8c\xb4\x5a\x83\x19\xab\xd3\xde\xce\x04\x4a\xf1\x15\x04\x92\xd1\x8b\xda\x04\x60\x2c\xfe\xd0\xa2\x86\xf7\x52\xbc\x20\x6f\x57\x30\xfe\x7e\x0b\xc4\xde\x2f\xcb\x51\x81\x5c\x64\x30\x79\x10\x0b\xac\x5b\x9f\x98\xa4\x8b\x0e\xd9\x79\x70\xf7\xce\xe6\x46\x83\x1c\x09\xd4\xec\x0d\xa3\x3c\x3a\xfd\x9e\x2d\x78\xae\x71\x31\xe7\x0b\x5e\x48\x0a\xaf\xae\x97\xc1\x3c\x8e\x03\xb0\xb5\xcc\xbe\x19\x5d\x9c\x45\xde\x0a\x5d\x36\x95\x37\xe0\xbe\xc2\xcb\x7b\x1c\x72\xbb\xc0\xbd\x74\x2a\x78\xc6\x96\x8b\x4d\x9b\xd8\x0e\x69\xcd\x2e\xf6\x8e\xf4\x61\x9d\xad\xe5\xc6\x32\x73\xdf\x41\x84\xb1\x98\xa9\xeb\xcb\x11\xb8\x99\xf3\x54\x24\xe5\xc9\x99\x8d\x5c\x81\xe5\xe7\x6b\x70\x14\x98\xf2\x53\xb0\x9d\xf1\x82\xa9\x1b\x91\xe7\x32\x41\x63\xcf\xd9\x6a\x81\x89\x6f\xd8\x48\xa4\xea\xb6\x5f\x2b\xa3\x96\x77\xe9\x56\x52\xea\x56\xec\x34\x5e\x06\xa3\xbc\xb9\x01\x45\xe6\xb8\x8b\xbd\xb3\xc0\x3a\xc1\x12\x25\xd0\xac\x4c\xce\xf7\x8c\xb3\x16\x00\x6f\x11\xfd\x34\xa8\x77\xeb\xe7\x13\x5d\x5c\x54\xc5\x1f\x4b\x99\x15\xb2\xaf\x48\x5e\x9e\xb5\x6c\x73\x4a\x6e\x81\xa8\x8d\x67\x4e\x33\xa3\xd8\x79\xe2\x32\x9b\xa8\x72\x27\x7e\x42\x0f\xe0\xfb\x97\x8c\xbe\xb4\xc8\x7b\x6e\x51\xe9\x78\x92\xb8\xb2\xdc\x7a\x6e\x87\x4b\xf9\x95\xa6\x69\x26\x62\xa6\x01\xd2\x4e\x89\xd3\x43\x04\x2c\x5d\xbd\xc1\x78\x48\xfd\x9e\xc8\x4c\xea\x99\x48\x58\x78\xac\x99\x0f\x85\x98\x2f\x54\xce\xf3\x55\x00\xe5\x86\xe7\x12\x1d\xac\x17\x62\x8c\xd6\xd4\xd1\xca\x13\x0e\x42\x06\x3f\x19\xb2\x8c\xe2\x07\x10\x16\x3b\x65\xee\x7f\x5e\xd3\xee\x92\x1d\xc2\x42\xb8\xbb\xf1\xa0\xf3\x77\xa0\xd3\x93\x39\xdf\x1c\xa3\x74\xe5\x91\x08\x0d\x7e\xe2\xce\x73\x7c\x8b\xbe\xc1\x64\x14\x1e\xa7\xe6\xf7\x2b\x35\x8e\x7b\x3c\x9e\x94\xc9\xe0\x96\x6b\x4f\x08\x10\x11\x10\xb1\xfe\xe0\x26\x32\x00\xe3\x84\x3e\xcb\xac\x04\x1a\xd1\x82\x6b\x1a\xc8\x26\x26\x12\x86\x2a\x45\xba\x0a\xef\x9d\x02\x01\x30\x1a\x85\xbd\x63\x9f\xa8\x7c\x2a\x8a\x88\x1a\xd1\x87\x5f\x16\xee\x0e\x2e\x80\x75\xb1\x37\x86\x20\x3a\x91\x98\x19\xac\xea\xcf\xae\x7e\xfd\xdc\x23\x30\x5e\x41\xe3\x69\x4a\xd7\xba\x0a\x92\x67\xf1\xd4\x49\x13\x20\x93\xa2\xff\x31\x90\xae\x8f\x53\xb3\x80\x4a\xa8\xe8\xaf\x91\x00\x1e\x34\x2b\x90\x35\xdb\x15\xf1\xd3\xc8\x94\xab\x67\xa3\xdb\x47\x65\xff\x0e\x20\xbe\x1e\x7a\xf7\x04\x3b\x28\xbc\xfa\x88\xb0\x18\xf8\x14\xb2\xf0\x16\x7a\xa2\x6a\x6e\x28\xce\x6a\x65\x07\xa9\xdd\xce\x04\x9f\x21\x5a\x64\x23\x38\x90\x94\x0a\xd8\xbc\x95\xc5\xcc\x41\xaa\x21\x2c\x1a\xc3\x7a\xfe\xb2\x8e\xbb\x78\xe1\x9e\x6e\x52\x6a\x9c\x5c\xfb\x9f\xe0\xa6\x04\xef\x47\x10\xd8\x5d\x74\x35\xe6\x85\x72\x7b\x07\xe3\xae\x44\xa2\xcb\x18\x18\x6d\xfd\x7d\x08\xfa\x72\x99\xef\x2f\x17\x1b\x5d\xc7\x42\xc7\xd2\xa7\x41\xa8\x18\xc5\x7f\x90\x9c\x6a\x97\xa5\x30\x6a\xbf\xf5\xde\x97\xf1\x6d\x84\x93\x86\x09\x9a\x8f\xff\x0b\x2c\xbd\xda\x5e\x00\x9b\x1f\x45\x9f\x9d\xaa\xb9\x60\x14\x40\xae\x5b\x0d\xe1\x5e\x04\xd0\x81\xf3\x6e\x6c\xe3\x19\x97\x86\x5a\xe8\x22\x3a\x5d\x05\x77\x52\xc5\x4c\xea\x2e\x1b\xf3\xa5\xb6\x9a\x46\x7d\x6c\x00\xe8\x26\x70\x3d\xed\xa9\x94\xf4\x23\x1a\x6e\xdf\xba\x5e\x6b\xbc\xd2\x33\x12\x94\x11\x3f\x30\x86\x67\xb1\x10\x68\x45\x00\x2b\x9b\x70\x26\xd9\xa9\x2c\x66\xcb\x51\x7f\xac\xe6\x83\x09\x05\xb0\xc6\xf9\x29\xb5\x5e\x0a\x3d\xf8\xee\xe7\x1f\x40\xe2\x9e\xab\xdc\x10\x77\x01\x4f\x8e\xd0\xe2\x35\xfb\xcc\x6f\x76\x99\x7f\xb9\x70\x51\x90\xeb\xda\x5d\xec\x9d\x13\x1a\x1c\x76\x2e\x89\x13\x54\xae\x04\x16\x4b\x3d\x3b\xc3\x78\xb3\x55\x3b\x55\x63\x1d\xe9\x5d\xc2\x14\xb3\x43\xf6\x89\xae\x59\x86\xe6\x94\xd1\xe7\x8f\x2f\x03\x03\x82\x61\x54\xfb\x86\xde\xa3\xd6\x0c\xdb\xf6\x21\xc6\xe7\x95\x1a\xb3\x43\x6c\xba\x7f\x59\x77\x6a\x7f\xd7\xd8\x1e\xae\xb5\xd2\x55\x00\xe1\xbb\xcb\x83\xb8\x0a\x9f\x14\x22\x0f\x2a\x7c\x5f\xe9\x02\x6e\x21\x7d\x54\x5d\xdf\x4c\xba\x0d\x8d\x23\xff\x60\x87\x94\x5c\x68\x51\x38\xac\x60\xc5\x10\x2d\x4e\x88\xa4\x39\xfa\xd0\xac\xcf\x9f\x6d\xb4\x04\x63\x91\x90\x18\xd8\xcb\xe8\xb3\x61\x46\x85\xa8\x4a\x7d\x15\x98\x56\x68\xab\x1d\x6a\x4d\x48\x66\x1c\x5f\x40\xb1\xcf\xb8\x92\x44\x16\x6d\x0c\x1c\xc2\x20\x10\x0e\x01\x5d\x2e\x2c\xc8\x87\xfe\x61\x7c\x96\x03\xa5\x72\xc6\x19\x2d\x07\x1b\xa5\x6a\x7c\xdd\x01\x6d\x4e\xb3\x25\xc4\xa5\xa4\x1c\xf5\x37\x08\x18\x47\x13\x45\x64\xf6\x73\x80\x52\x77\x21\x7e\x3b\x13\xe8\x8c\x90\x0b\x94\x0f\x99\xc8\x28\xe5\x5a\x3c\xa8\x7e\xed\x3a\xb2\x43\x76\xee\x29\xf3\x62\xcf\x4c\xf4\x62\x8f\xdd\xd9\xf5\x0f\x70\xe2\x3c\xd1\x43\x7a\xef\x02\x40\x2b\x86\x02\x70\x58\x79\xbc\xc4\xa8\xf3\x1c\xbf\x16\x2b\x1d\xee\x3c\xc4\x67\x44\x1b\x54\xe5\xdc\x0e\xc2\xf0\x81\x36\x7d\x30\x54\x5e\x6a\xc2\xa0\x01\x52\xe4\xb5\x58\x75\xc2\xd0\x36\xfa\x96\x8b\x1b\x91\x6b\xd1\x8e\x82\x6c\xdf\x71\x30\x0d\x41\x28\x78\x60\x1c\xca\x1c\xe3\x86\x08\x48\x06\x72\x9e\xd5\x70\x6e\x05\xbb\x16\x62\x11\x1c\x98\x32\x9b\x6a\x77\x7b\xed\xac\x38\xe8\x69\x6e\x5a\x7a\x26\x0f\xa7\x44\x3f\x62\x33\xee\x23\xde\x3f\xfa\x19\xd1\x55\x10\x0c\x1e\xd3\x76\x57\x6e\x84\x0c\x32\x0e\x69\xea\x6a\xd1\x2e\x1b\x9b\x9b\x70\x65\xfe\x99\xde\x9c\x1f\xdf\xb5\x58\x1d\x54\x3e\x82\x5d\xec\x30\x70\x3d\xb7\xff\x9c\x17\xd9\xc7\xa2\xc1\xac\x17\x88\x3c\x67\x8a\x71\xb8\xc4\x06\x77\x6a\xc2\x6e\x10\xab\x89\x83\x03\xac\xc2\x65\xbd\x51\xe6\x03\x4f\xc6\x00\x12\xb8\x4c\xc0\xa0\x82\x70\x37\x35\x99\xd4\xe0\x99\x56\x8f\xd0\x0d\x67\x54\x08\x28\xd5\x2a\x3e\xb2\x20\xa8\xd5\x86\xb1\xdd\xca\x34\x25\x25\x4b\x65\x2b\x08\x45\xc6\xeb\x68\xba\xe4\xb1\x90\x42\x24\x19\x52\x2f\xeb\x59\x01\x7e\x1a\x7c\x9d\x29\xac\xca\x66\xd4\x88\x1c\x01\x2a\x85\x71\x86\x81\xd7\x56\x42\xb5\xf5\xca\x27\x62\xe4\xab\x1c\xb7\xaa\x73\x09\x8c\x6b\xa0\xdf\xaf\x1b\x42\xd3\x5d\x30\x39\x14\xdb\x7a\xa4\x0e\x95\xe2\x39\x1a\x7b\x1b\xa5\xa2\x09\xf0\x03\xa9\xdf\xf0\x37\x6e\x00\x96\xfc\x2b\xf4\x2f\xd9\x21\xeb\xed\x77\x19\xe9\x61\x8d\x5b\x29\xd8\x4e\x8f\x1e\x49\xf6\x47\x56\x86\x5c\x77\x7d\x19\xba\x40\xdb\xfa\x5d\x26\xcb\xbe\xcf\x95\xcd\xe4\x57\xe4\xf2\xa0\xb6\x62\xe3\xc6\x6a\xde\x5c\x2c\x36\x25\x55\x2e\x37\xa2\x01\xd4\xdb\xeb\x6a\xc8\x75\x8b\x4d\x7d\x50\xe3\xf5\x9c\x05\xaa\x6f\x54\xbf\xec\xe2\xea\xe2\x71\xcd\x9e\x77\x32\x2a\xf0\xd4\x4c\x11\xf5\xc7\xcc\xf0\x13\x00\x1c\x06\x57\xec\xfe\x7a\xc0\x9f\x1f\x74\x2a\x1e\x12\x88\xf2\xb6\x0a\xef\xe7\x2b\x31\x08\x74\xe1\xe3\x70\xd4\xa5\x2b\x1e\x83\x92\xf8\x2a\x82\x64\x82\x28\x34\xe4\x93\xd3\x84\xac\x0f\xe2\xd0\xd6\xeb\x7a\x1f\x0e\x2d\x8a\xa1\x3f\xdd\xf4\xb5\x5c\x9c\x89\xf9\xe2\x9d\x29\x0f\x88\x07\x4e\xca\x45\x2e\x6e\xd8\x21\x7b\x7c\x10\x95\x12\x72\x7d\x29\x1a\x2e\xee\x7f\x51\xbd\xed\x25\x35\xf4\x4e\xb7\xd1\xe8\x74\x46\x3f\xaa\x34\x05\x9f\x6b\x49\x19\xbf\x34\x1a\xe5\xe1\x73\xb3\x86\x0d\x9f\xab\xca\x75\xf4\x39\x10\x42\xad\x44\x12\x09\x9b\x9d\xd2\x1d\xc0\x83\xa6\x35\x08\x04\x0b\x88\xde\x92\xa8\x2e\x54\xcd\xf3\x6f\x54\xc1\x20\xcd\x03\xa6\x68\x40\x1f\xd8\x42\xce\xcd\x09\x96\x27\x22\xf7\x41\xce\x63\x95\xe1\xe1\xa6\x87\x21\x0c\x33\x0c\x48\x46\x35\x9e\xf1\xfc\x69\xd1\x7e\x6c\xe3\xbe\xea\xa2\x2f\xe2\xf8\x0b\x54\xd7\x30\x56\xac\x5a\x93\x78\xe5\x23\x00\x0e\xa9\xb5\xda\xfb\x9d\x2a\x93\x32\x40\xce\x33\x32\x8e\xd5\x73\x88\xbb\xfa\xc3\x1c\xfe\xe3\xa8\x5b\x17\x6a\x31\xac\x51\x9a\x62\x82\x28\x31\x18\x90\xf6\x95\x2a\x8e\x48\x11\x2a\x2d\xe2\xf9\x63\xcf\x29\x6d\xd5\x77\x56\x39\x70\xed\x02\x61\x3e\x0e\xc4\x71\xb5\x37\xdd\xb7\xe2\x2d\x55\x50\x3f\x34\x12\x57\x0d\xe1\x28\xca\xde\x70\x67\x21\x75\x48\xa8\x5c\xa1\x06\x18\x71\x76\xba\x92\xa7\x96\x43\x4f\xcd\x90\x5c\x9b\xba\xd1\xc4\x09\x64\x9c\x36\xcb\xc2\x00\x00\x34\x19\x1a\xcd\x13\xf4\xfa\xe9\xac\x28\x1d\xbb\xb1\x0e\x55\xbd\x6a\x08\x6f\xdc\x6b\x86\x53\x31\x79\xa6\x91\x95\x93\xec\x6c\xd5\x8e\xa3\xab\x2d\x42\x9a\x48\x82\x0b\xec\x5b\xae\x69\xc0\x6c\xb4\xb2\xca\x12\xea\x45\x65\x57\x62\x70\x88\x77\xf7\x34\x41\xc5\xe0\xe6\x37\x80\xec\x8c\xa0\x21\x98\x6d\x0c\x7c\xdb\x5c\x7f\xd5\x05\x03\x3d\x78\x40\x33\xa9\x5b\x44\xc7\x66\x64\x95\xfc\x49\x08\x61\x3d\xb6\x7f\xc0\x24\xfb\x93\x61\xfc\xac\xd7\x93\x15\x71\x47\x34\x6c\x9f\x48\xd0\x58\xab\x59\x57\xd6\x0c\x2b\xa0\x8a\x67\x5d\x6b\x40\xff\xab\x2e\xa3\x23\x76\xab\x8e\xaa\x65\xa1\x65\x22\x6c\xa8\xa3\x19\x1b\xae\x07\x2e\x10\x58\xc9\x70\x69\x4a\x90\x64\x01\xd6\x48\x4d\x66\xec\x40\x49\x8f\xa2\x97\x44\x56\xc8\x5c\x04\xf9\x54\x54\x85\x22\x6c\x20\x90\x5b\xf6\xba\xc0\x1d\xda\x1c\x17\x7b\x22\x8b\xae\xbe\x6a\x1c\xc7\x22\x74\xfc\xf1\xd0\x9f\xd1\x35\x9e\x74\x33\xae\xe1\xea\x8b\x1d\x46\xdc\x5a\xa0\x4e\x7c\xb1\x67\x6d\x36\x71\x97\xae\xed\x0b\xb2\x01\x34\xb4\xf6\x16\x1b\x6c\x5f\x3e\x4b\x5c\xef\x0f\x1f\x06\xd0\x6a\x05\x59\x2f\x68\xfc\xb1\x64\x4e\xaa\x11\x65\x63\x9c\xc5\xd5\xbb\xcc\xab\xf4\xfe\x5f\xe0\xf6\x52\xed\xc9\x4f\x63\xcb\xbe\x82\x06\x55\xf9\x37\x3a\xad\x7c\xb7\x16\x17\xff\x91\xd9\xaf\x1b\xd5\x6e\xab\xf2\xbb\xe3\xaa\x22\x12\x94\x7d\x82\xeb\x4d\x58\xc8\x6a\x55\x6e\xcd\x56\x65\x82\xde\x4a\x6e\x40\x8f\xbc\xe0\x9c\xc4\xa4\x1e\xa5\x80\xb6\xff\x36\x2e\xb9\x76\xb3\xaf\x8d\x86\xad\xdf\xa1\xd5\x60\xdb\xed\x97\xd7\x0c\x9a\x3e\x5a\x01\x09\x5a\x44\x48\x86\xa4\x44\x1b\xcc\x2d\x66\x52\x11\xa0\x78\x50\xed\x40\x3c\x02\x70\x17\x7b\x51\x82\x04\x0a\x11\xa6\x1a\xf6\x76\xa8\x3a\xb9\xb0\x8b\x00\x7d\xe6\xb4\x8c\x2b\x9a\x92\x3f\x1e\xc6\xf5\x1b\xb0\x60\xc4\x84\x69\xe6\x83\xaa\x90\x37\xe2\x52\x4a\xbc\x44\xcc\x55\x6a\xaf\xbf\x7f\x5b\xce\xc1\xe7\xad\x50\xa1\x07\x4c\x60\x14\x75\x67\x13\xdc\x41\xbb\x2c\x73\x70\x3c\x05\x47\x44\x09\xeb\xd1\x6d\x79\x49\x02\x73\x47\x6a\xd4\xe6\x49\x3c\xb9\xe0\x24\x1b\x7a\x0b\x76\x59\xfe\x8a\xd2\x1e\x44\x82\x57\xec\xf8\x5b\x5e\xce\x92\xe0\xb8\x56\x8b\x8a\x15\xc9\x86\x15\x38\xa8\xc8\x30\x8d\xbe\x2c\x0d\xd2\xb1\xcd\xc1\x45\xae\x1c\x9d\x8a\xa4\x6c\x2b\x04\x1b\xdf\xe6\x5d\xb3\x17\x0e\x25\x39\x79\x3b\xd7\x49\x12\xe5\xd7\x8a\xf1\xf5\xd0\xea\x29\xbf\x5a\x2f\xa4\xff\x32\xde\x09\xad\x75\xdd\xaf\xf3\x01\xad\xbd\x73\x76\x5a\x86\x65\x59\x6b\x5c\x27\xcb\x8b\x5e\xe3\xbc\x15\x8e\x8f\x24\x9e\xed\x06\x67\xef\x55\x8c\x40\x51\xb3\x34\x31\x64\x5b\xe1\x1e\x6e\x44\x8e\x34\xf0\x66\x3a\x20\x8c\x5a\xd6\xf0\x9f\x38\x12\xc2\xdb\xb2\x43\xb7\x7b\xaa\x8c\x3b\xde\x02\x65\x59\xbb\x5b\xba\x58\xeb\x94\x83\xe4\x2b\x97\x63\x75\x56\xf6\x35\xde\x65\xcd\x87\x2d\x09\x9f\x17\x7b\xe1\x79\x9b\xff\x0f\xc0\x6c\xa0\x68\x54\xc6\xc3\xb6\x50\x5e\x7c\xcd\x5d\xbc\xac\x29\x2b\x2e\x6a\x2d\x0d\x5b\x6b\xab\x35\xb9\xab\x59\x20\x04\xbb\xc5\x45\xc8\xcc\xa7\x26\xc5\xd3\x88\x36\x32\x78\x98\x42\x0a\xcb\x91\xb0\x3e\x00\x74\xef\x64\x8f\xb3\x00\x8c\xcd\x83\x69\x95\xac\x3c\x17\x7a\xa1\xb2\x04\xe2\x69\x39\x83\x57\x20\x58\xdd\x69\x57\x95\xf6\x64\x9a\x8a\x29\x4f\xa9\x36\x2f\x0a\x31\x5f\x04\x0e\x65\x81\xb9\x23\xf4\x82\x0a\x48\xca\x5b\xc5\xbd\xef\x15\x1a\xe3\xe3\x95\x2d\x1b\x04\xc3\x30\x31\xb2\x0a\x0f\x2b\x97\x21\xdd\xf0\x70\xb2\xd0\x87\x61\x4f\xbe\x02\x75\x39\xb4\x7f\xb8\x15\x28\x9d\xa6\x11\xff\x6c\x0a\x0a\x02\x2f\x95\x54\x8e\xe0\x11\xaa\x74\x65\x9d\x66\x8c\x24\x91\x72\x5d\x30\xb0\x88\xa2\xa2\x6a\x63\xe6\x6d\xde\xd2\x08\x08\x1f\x8f\x65\x22\xb2\x02\x24\x99\x05\xd7\x9a\xc9\x02\x83\x57\x23\x3f\x9f\x7e\x89\xc3\x6e\xf4\x2b\xda\xc2\x91\x2f\xca\x4c\xf4\x4e\x4c\x79\x9e\xa4\x42\x83\xd3\xc8\xed\x4c\xd0\x95\xa7\xd4\x0c\x5f\x19\x80\xf8\x72\x1f\x1a\xa2\x19\x67\xcf\xd4\x7c\xae\xb2\xbf\x9e\x32\xcc\x7e\x4e\x90\x14\xe4\x78\x8c\x82\x34\x6d\xf2\x21\xba\x71\x0b\x10\x32\xe6\x19\x4b\xc4\x38\xe5\x24\xd3\x59\xaf\xbf\x0b\xeb\x9c\x5f\xce\x6f\x64\x53\x27\xa0\xf3\x91\x1e\x2b\xa3\x1f\x40\x72\x56\x74\x0d\xd3\x38\x66\x1c\x51\x29\xdd\x2e\xa5\x0b\x11\x5c\x4b\xb3\x8f\x56\xec\xc3\x48\x66\xa1\x4f\x89\x61\x5e\xf8\x7a\xbf\x7d\xb6\x81\x26\xdf\xff\x4d\x7f\x80\x25\x88\x23\x5a\x01\x7d\x77\x6d\xea\xe0\x78\xb2\x1b\xbe\xba\x90\x5e\x10\xff\xee\x13\x44\x02\x45\x1e\x42\x35\xd3\x87\x64\x99\x0b\x3e\x16\x7d\x76\x62\x96\xe8\x16\xb2\x1d\x84\x59\x7b\xcd\xfe\x5c\x5d\x84\x1e\x3a\x7d\x76\x84\xc1\x0d\xb7\x7c\xd5\x0d\xbc\xca\x20\xe7\x83\xbd\xc2\x4e\x53\xe7\xc0\x5e\x28\x26\x33\x59\x48\x78\x5c\xe3\xc2\x87\x3d\xd7\x0c\xc7\x79\x69\xd2\xfd\x28\xc6\x5c\x23\x1e\x26\x32\x45\xba\xa5\x1b\x40\x5a\x93\x52\x4e\xa1\x27\x25\x0c\x80\x4c\x7c\x91\x75\xd0\x9c\xe1\xf2\xdf\xd6\xf4\x7d\x68\xe9\xea\xe0\x22\x73\x09\x6e\xfd\x7e\x3a\x85\x6c\xf1\xaf\x55\x62\x6d\xa9\x36\x05\x24\x8d\x83\x3c\xb4\xac\xeb\x12\xc6\xb4\x1a\xf2\xc2\x34\xf3\xa6\x9a\xb0\xc9\x92\x31\xd4\xc5\x2d\x8e\x96\x53\xcc\x20\x19\x7b\x79\xdd\xaa\xfc\x9a\x2d\x33\xd8\x44\x5a\x19\x0e\x02\x10\x35\x9b\x4b\xed\x92\xa2\x26\x7d\xf6\xd7\xa5\xcb\xbf\x25\x33\xc8\x6b\x6c\x67\xd2\xff\x4d\xc7\x1c\x21\x5f\x62\xea\x87\x68\x4c\xb4\x6f\x84\x1e\xf3\x85\x1d\x54\x50\x81\xa1\xc7\x16\x67\xf8\x88\x31\x7b\x11\x26\x80\x21\x5f\x2c\xb4\xbb\x8d\x55\x36\x16\xf2\x86\x8f\x0c\x03\xe3\x98\x14\xc5\x0c\x6a\x02\xc4\x0a\x6f\x0c\xb0\x53\x31\x5e\xe6\xb2\x58\xb1\xb7\x2a\x95\x63\x60\x74\x23\x99\x68\xea\xe4\x85\xcb\x59\x46\x29\xab\xc9\xec\xaa\x43\xba\xc1\x9b\x78\x06\x0f\xb8\xda\x10\x35\xc5\x26\xf2\x23\xa2\xd6\xcd\x37\x9a\xc4\x22\x57\xa3\x54\xcc\xad\x77\xea\x60\xc0\x56\x6a\xd9\xba\x11\x31\x32\x21\xc5\x2c\x1b\x2d\xb3\x24\xc5\xc4\xe0\x13\x95\x8f\x45\x04\x88\x67\x09\xe3\x8b\x45\x2a\x45\x82\x7a\xe0\x60\xc0\x9e\x9d\xbe\xa5\xca\x23\x99\x04\x93\x30\x75\x4d\x37\xb9\x00\xba\x30\xbb\x82\x34\x48\x33\x5a\x0a\x11\x02\xfa\x56\x6e\x86\x34\x50\xdd\x65\x8b\x54\x98\xb5\x44\x27\x34\x1c\xd9\x32\x93\xff\x5a\x0a\x4a\x5e\xc2\x81\x66\x20\xc7\xc9\x4b\x59\xfc\xba\x1c\x31\xf0\x61\x83\x3d\xe2\x02\xe2\x2f\xf6\x72\x9b\xd9\xb1\x8e\xe2\x2f\xf6\x3a\x6d\x22\x16\xb3\x43\xee\x2e\xb2\xbd\xee\x1e\x18\xff\x21\xc5\x60\x98\x81\x41\x5a\x2b\xbb\xbb\x4f\x37\x52\xbb\x2c\xfa\xaf\x79\x31\x63\x87\x87\x0c\xfe\x0b\x45\x06\x12\xec\xb7\x20\x24\x3a\xf0\xbf\xfb\x77\xaa\x64\xae\xc6\xd7\xfe\x39\x14\xf4\xbd\xfb\xe5\xa7\xff\x82\xbf\xc6\x6a\x6e\xa6\xd6\xdb\xdf\xff\xf1\xe7\x1f\xff\xf0\xf8\xbb\x5f\x2e\xb2\xd2\xa6\x3e\x24\x64\x09\x9d\xca\xac\xe8\x25\x52\x1b\xae\xd1\x33\x07\x6b\x2f\x95\x99\x41\x77\x0f\x4e\x33\x53\x0f\xa6\x62\xfd\x06\x90\x88\x81\x68\x0f\x0f\x59\x0b\xf9\x46\x0b\xf2\x3f\xba\x2f\x1d\xd2\xd3\xa2\x86\xb7\x32\x4b\xd4\x6d\xb9\x11\x96\xd6\x36\x00\xdf\xcc\x52\x75\x53\x56\x5b\x99\xf6\x56\xed\x90\x6c\x83\x0d\xf3\xcd\xc4\x6d\xcf\xac\x56\xb4\xfc\xad\x40\x71\x6e\x75\xc0\x59\x67\xaf\xbb\x57\xc6\x26\x0b\x1f\xca\x10\x56\x8a\x0a\x92\x85\xbb\xdb\x06\xf3\x99\x5c\x7e\xc2\x24\xe0\x41\x52\x2d\xdb\x61\xee\x73\x85\xdc\x1d\x38\xb2\x32\x6c\x41\x83\x38\x0c\x79\x61\xda\xad\x7e\x3f\x7c\x5e\xcc\x7c\x6d\x75\x2c\xe9\x9c\xcd\x78\x76\xdd\xd2\xec\xf8\xe8\x17\x50\x1c\xe0\x14\x58\x66\xd9\x8a\xc5\x4f\xb2\x57\xc9\x83\x3d\x00\x50\xed\x4a\xfe\x10\x1a\x1d\x65\x5b\x8c\xc1\xb4\x3f\xdd\x75\xd9\x7e\x97\x7d\x62\xd3\xf0\x2e\x1d\xda\xda\x86\x3f\x1f\xb0\x3b\x76\xd7\x39\xdf\xbf\x64\x0f\x0e\xd9\xcf\x86\xd0\x09\xa7\x2d\xff\xa4\x48\xeb\x00\x5f\x22\xc1\x8c\x9f\x16\xfc\xb1\x3e\xca\x96\x73\x14\x34\x21\x33\x73\x7f\x51\xf3\x85\x9a\x4e\x45\x11\x3c\x2f\xf2\xdc\x3d\xb2\x1f\x65\x5b\xae\xad\x61\x91\xf7\x86\xeb\x99\xca\x33\xf6\x7f\xd8\x5f\x9f\xff\xed\x17\x36\x5a\x4e\x11\xf2\x9b\xa7\xa7\xbf\x9e\xbc\x7b\x73\xf5\x97\xbf\xbf\xc4\x14\xcc\xf5\xfd\x3c\x7c\xc8\x1e\x34\x8f\x1f\xad\x92\x9f\xd8\xfe\x90\x7d\xc7\x0c\xd6\xdc\x9a\x7d\x28\xbf\x9e\x52\x3b\xcb\x0f\x56\x0f\x89\x5d\x02\x22\x86\x51\x8c\xbf\xff\x43\x9f\xb8\x86\x54\x03\x31\x9e\xf3\xef\x7e\xfa\x6e\x00\xd9\x12\x54\x53\x27\x52\x0b\xd7\xc9\x45\x66\x7d\x37\x26\xec\x30\x9a\xf7\x93\xc0\x89\xb6\x66\x74\xed\xf7\x44\x2d\x98\xbb\x20\xc0\x7d\x13\xba\xe8\xba\xfc\x3d\xee\x0c\xb7\x5b\x92\x08\x9f\xfe\x57\x5f\x84\xeb\x7d\xc7\x86\x6b\x48\x65\xe3\x8e\x1d\xc9\x62\xce\x17\x94\xb0\x30\x26\x73\xda\x92\xbe\xb7\x21\x7b\x40\xf5\xd9\x43\xb6\x6f\xd5\x1d\x7b\xfe\x55\x6a\x7c\x67\x6b\xdc\xe6\xb2\xa8\x7c\xfd\xc1\x7e\x25\xf7\x16\xe7\x3b\x77\x77\x10\xed\xf9\xc0\xef\xf9\xd3\x9d\xf3\x82\x06\x82\x59\x33\xad\xf2\x71\x63\xdb\x59\xdf\xa8\x0e\xf9\x1d\xfc\xd2\x65\x3d\x20\xbf\x7b\x70\x19\x38\xe8\xf0\xa1\xe9\xc6\xda\xf4\xbd\x97\xf3\x5b\xe2\x4c\x90\x5a\x65\x91\xca\x82\x1d\xb2\x56\x0b\x5e\x09\x2b\x2c\xf9\x4f\x6c\xba\xb3\x09\xe8\x2d\x19\xbd\x8b\x0c\x6f\x84\x1c\x9d\x7e\x0f\x12\x81\x29\xf6\x4b\xc2\x54\x9a\xb0\xf7\xbf\x30\x7c\xe7\x49\xd7\xe1\xa4\x9e\x95\xd9\xbb\x48\x0d\x01\xfb\x10\x30\x28\x33\x96\xcf\x64\xa6\xba\x4c\xd7\x7b\xbe\x53\x42\x92\x01\xd4\xb2\xc7\xee\xf7\x3f\xfc\xb4\xc5\xf1\xe2\x1f\x30\x1d\x2d\xa5\x11\xf6\x75\x48\xea\xb8\xeb\xdb\xad\x7f\xb7\x3a\xb5\x1b\xbe\xfd\x18\x96\xa8\x13\x6e\xbd\xca\x12\x13\xaa\xa1\xdc\x9c\x84\xb8\xe0\x2d\xf6\x04\xd1\x6d\x57\xbe\xcb\x5a\xad\x0e\x1b\x12\x23\x34\xb5\x69\x13\x61\x01\x92\x81\x61\x45\xef\x70\x41\xb1\xf8\x99\x12\xf9\x58\x02\xef\xb1\x6f\x46\x32\x33\xce\xdd\x18\x0f\xd1\x08\xf2\x9f\xb1\x05\xb9\x1d\x21\xa3\x53\x24\x8b\x63\x9a\xd1\x42\x12\x46\xdf\x3d\xe3\x59\xab\xc0\xe8\x23\x62\x92\x2a\x63\x17\x7b\xec\x11\x93\x45\xc4\x5f\x9c\x9c\x85\xd3\x2d\xd4\x49\xe0\x3f\xbc\x89\x10\x1d\xb9\xc1\xcb\x01\x59\x22\x3e\x8a\x84\xda\x37\xed\x04\x89\xb5\x88\xf9\xba\x0d\x94\xd7\x62\xb9\x11\x0a\x95\x12\x94\x9e\xc3\x21\x6d\xae\x1d\x38\x42\x34\xea\x76\xfd\x30\x4c\xa3\x80\x39\xec\xc2\x6f\xac\x9f\x29\x68\x98\x4e\x2a\x7b\x62\x4a\x1e\x1c\xe2\xbd\x0d\x1b\x96\xab\x59\x78\xad\x98\x21\x49\xbd\x09\xb7\x3a\x44\x2b\x9e\xa4\x67\xea\x6d\x2e\xe7\xd2\x1c\x0c\x5f\x44\xb3\x85\x5a\x58\x38\xd0\x86\x9e\x1f\xb0\x1e\x0f\x47\xa7\x3f\xe1\x23\x1c\x37\x22\xd7\xa0\xb6\xdc\x0a\x96\xc8\xc4\x50\xa1\x0f\xdf\xf9\xf3\x9f\x0b\x3f\x1c\xd2\xc8\xc8\x3f\x1a\x52\x21\x89\xb1\x32\x8a\x91\x35\x14\xf6\xd8\x24\xe5\x53\xd6\x33\xaa\xca\x44\xe4\x46\xb5\xf2\x6f\x6f\x21\xed\xad\x5f\xeb\x6c\xb1\x2c\xba\xec\xed\xbb\xa3\x17\x47\xef\xde\x1d\x3d\xbf\x3a\x3d\x7b\x77\xfc\xe6\x65\xb0\x93\x1e\x58\x9c\x62\xdd\x4e\xc7\x07\xab\x2d\x96\xe8\x0e\x03\x47\x41\x06\x27\xe3\x81\x6d\x56\x86\x68\x0e\x66\x5a\xc3\xf6\x24\x83\x18\xce\xc5\xb2\x70\xa7\x14\x32\x22\xb7\xaa\x20\x16\xb9\x8e\xf1\xfe\xc4\x3e\x93\x43\xc3\x70\xe3\x08\x7b\xad\xe9\x01\x4e\xcb\x93\xc9\x57\xea\xe0\xc1\x7f\xff\xbc\x1a\x39\x97\xca\x6e\x44\x5e\x04\xe1\x5c\x8e\xfc\x48\x44\xd8\x2b\x1d\xd7\xf1\x5b\x7a\x28\x26\x54\xde\xd7\xdb\xc0\x1a\xba\xec\x5a\xac\xe2\x1d\x1c\x83\xf0\xa7\x07\xc5\x6a\x04\x03\xb0\xda\x57\xc3\xe6\xc4\xcf\x8e\xe1\xed\xbc\x99\x41\x8c\x54\x63\xdc\x19\x87\xd4\x5b\xdf\x96\x1c\xc0\x46\xa2\xb5\xb2\x85\x94\x08\xfe\x88\x76\x9f\xd4\x9e\x03\xc9\x0c\x44\x86\xe3\x23\x04\x7c\xf4\xbf\x8f\x4f\xcf\x4e\xcd\x02\xdb\xe5\xb3\x30\x3a\xa0\x8c\x97\x4b\x63\xc8\x3b\x33\x5d\xea\xee\x49\xc3\x48\xa1\x3e\x5d\x43\x07\x08\x7e\x7e\x74\xfa\xec\xdd\xf1\xdb\xb3\x93\x77\xa7\x8d\x58\xf3\xe2\xb1\x17\xce\x76\x12\xe4\x22\x8c\x35\xf6\x42\xc3\xee\xd1\xd3\xf0\x02\xeb\x7f\x1d\xa5\x33\x9c\xa6\xd9\x51\xf7\x51\x42\x63\x74\xb6\x12\x79\xd3\xea\x74\x59\x8b\xb7\xba\x56\x9c\x5f\xaf\x9d\x82\x00\xde\xe9\xf3\xb2\x7e\xfa\x25\xcb\x50\x27\xd1\xbd\x26\xf3\x6b\x03\x18\x3a\xde\x6d\xcb\x9e\xd4\x81\xcc\x5b\x5a\xb3\x5a\x35\xb7\x41\x1a\xc7\x55\x73\x60\xfd\x68\x1d\xcc\x42\x6d\x27\xce\x14\xaa\xd7\x20\xd1\x84\x27\xdd\x9a\xd6\x8e\xad\xb9\x86\x33\xde\x4c\xac\x33\xee\xf1\x79\x7c\xf4\xcb\xd5\xf3\x93\xd7\x57\xcf\x8f\x5e\x1c\xbf\x39\x6a\xe6\x23\xe2\x97\x5e\xa2\xe6\x3d\xa4\x90\x80\x99\xa0\xb6\xf8\xf2\x8b\x6d\x04\x1f\x36\xd4\xb3\x6a\xfa\xae\x7a\xf9\x54\x14\xea\x36\xb3\x8b\xe4\xd7\x28\xd6\xc8\x43\x6a\x7c\xb2\x69\x4e\x01\xc5\x37\x2a\xe1\x27\x5d\xf6\x96\xb6\xd8\x09\x3b\x2c\x13\x42\xfb\x04\xa5\xe7\xb7\xf0\xc9\xad\x70\xfb\x6d\xe8\x63\x67\xce\xd2\x78\x75\x3a\x35\x76\xb0\xf5\x63\xc5\x71\xd4\xdb\xc8\xd8\xe0\x5b\xbc\x51\x61\xdf\x0e\x70\xaf\x92\xd7\x1e\x36\x72\x87\x6c\xd3\xc6\x68\x3f\x68\xde\x8b\xfd\x09\x9e\x71\x00\xa9\xcb\x4e\xce\xdf\x5e\x76\xbe\x50\x0c\xdd\x56\xad\x09\x84\xb1\xc2\x87\x01\x94\x25\x04\x14\x3d\xa0\xe5\x23\xd6\xaa\xa4\x15\x69\x59\x9c\xd5\xe8\x37\x5f\xc2\xbd\xee\xbf\xdb\xe0\x89\xdc\x6c\x03\xce\x78\xf6\x55\xf8\x47\xb8\xb3\x9f\x47\x47\x82\xdf\xcf\xf1\x51\x51\xde\xc5\xf1\xd7\xfb\xee\x5d\x84\xb2\x70\xa7\xdc\xa6\x1d\x5b\x1a\xeb\xb0\xfc\x16\x95\x3b\xd8\x0c\x59\x76\xd9\xd3\xa2\xc8\xe5\x68\x59\x08\x1b\xef\x62\xf1\xbb\xd5\xf6\x74\x95\x03\x30\x3b\xef\xdb\xe7\x1b\xc6\xb5\xcb\xce\x6d\x4d\x05\x8a\x64\xbe\x3d\xfb\xfc\x99\xb5\x74\xa5\xb8\xaa\xea\xb7\x9e\x8e\xc7\x42\x6b\x95\xe3\x3e\x70\xaf\x94\xb7\xfc\x94\x5a\x20\x30\x57\x20\x99\xad\xcd\x0e\x83\xa2\xe0\x41\x16\x2b\x5c\x7c\x9d\xbd\x13\xaf\xe1\x76\x67\x3e\xb6\x71\x67\xf4\xef\x76\xd8\xd7\xb0\xa7\x98\x40\x3d\xb3\xb2\x01\xbf\xd7\x62\x55\x6b\x28\xad\x9b\x66\x7f\x12\x37\x6b\x64\xc9\xfb\x16\xa4\xb5\x43\x6d\xd1\x2f\x7e\x38\xbf\x16\xab\x4b\x1b\x52\x18\xae\x9e\xb2\x96\xac\x7b\x2b\x29\x38\xda\x37\x2a\xf3\xa7\x44\xc0\x4f\xd6\xe2\x3b\xb6\x4f\xc6\xeb\xb8\xf6\x48\xa8\xcc\x32\xd8\x81\x6b\xc6\xd3\xc6\xa1\x47\x58\x5a\x77\xc3\x84\xd5\xab\xb8\xbb\x0b\x34\x54\x28\xba\x37\xf2\xb4\x28\x5e\xae\x6f\xa0\x45\xd1\x0b\x1a\x61\xb3\xd3\x5f\x9f\xbe\x3b\x7a\xce\x0e\x59\xeb\xea\x8a\xae\x36\xaf\xf4\x8c\xe7\x22\xb9\xba\xb2\x77\x42\x98\x62\xc1\x2a\x81\xe7\xd8\xe4\xd2\xf0\x0c\xd7\x69\x1b\x0b\xbb\xec\xd3\x5d\x03\xca\x01\x88\x9f\x9c\x85\xd9\x30\x54\x18\x41\x0f\x2a\x05\x83\xb5\xcb\x76\xe6\xad\xf3\xee\xfd\xc3\xc8\x46\x8f\xd9\x06\xb4\xcd\x77\x33\xca\xd5\xb5\xc8\x0c\x47\xfa\xf0\x7d\xff\x87\xfe\x7e\xcf\xfc\xff\x0f\x1f\xec\x53\xca\x63\xb0\x01\x2c\xb5\x60\x1f\xb0\xe3\x0f\xd4\xf0\x22\x0b\x0c\x21\x30\x98\xbe\xcc\xf4\x42\x8c\x8b\x53\x7c\xc9\xff\x41\x68\x90\xa0\xc5\xae\xab\x57\x2b\x84\x54\x32\x1b\x9c\x95\xaf\x0b\x5c\x34\xfc\x5d\x33\x4a\xe3\x9e\xee\x6d\x1f\x28\x0d\xb7\xc9\x9a\x0a\xb5\x7a\x1a\xaa\x05\x0b\xf3\x0f\xc1\xaf\x5f\xc3\xc3\x66\x64\x28\xa0\x82\x7a\x52\x20\x84\xba\x46\x15\xb3\xce\x80\xde\x1d\x1c\xab\x44\x0c\xfa\x85\xd0\x45\x3b\x1a\x60\x9b\x9a\x76\x1a\xef\x86\x29\xce\x96\x70\x71\x7c\x7a\xf5\xf6\xef\xef\xd6\x88\x51\xba\xb7\x58\xe6\x5e\x7e\xda\x99\x38\xdb\xbb\x70\x18\x5a\x75\x68\x8f\x1c\xe1\xf3\x67\xd6\x0e\x7e\x12\x83\x00\x93\xad\x33\xbb\xb3\x27\xcc\x66\xe1\xc7\x3d\x76\xd7\x69\xb7\xc8\xfc\xa9\x5b\x5d\x76\x7e\xd9\xc1\xb4\x1e\x78\x0b\x88\x1f\x86\xac\xf5\x7d\xff\xa7\xfe\x8f\x2d\xb8\xf5\x9a\xab\x44\x0c\x1d\x32\x9e\xb0\x16\x4c\x9a\x0d\x59\x8b\xa8\x01\x6a\x8d\xd5\x62\x05\x0f\xa3\x0c\x59\xeb\xff\xf7\xff\x65\xdf\x3d\xfe\xee\x31\x7b\x2e\x32\xa9\xd9\xdb\xa5\x9e\x5d\xf3\x5c\xdc\xb0\xb6\x75\x87\xe8\xe7\xcb\x4e\x2b\x56\xd8\x65\x42\x11\xd9\xa0\x85\x2b\x5d\x4c\xe4\x47\x86\x9e\x16\xfd\x9c\x67\x89\x9a\xb7\xb7\xe1\xca\x31\xb2\x5a\x98\xad\xa1\xdd\x62\x8f\x18\x89\xe4\x90\xd3\xa3\x84\xa1\x96\x99\x0d\x34\x7e\xc4\x5a\x9d\x2b\x53\xbb\xfd\xe8\x91\x4c\xd8\x23\x3b\x92\x8e\x63\x14\xed\xef\x7f\x2a\xa9\x1a\xb8\xb0\x1b\xd6\xdd\x11\xc9\x52\x36\x57\x5d\xca\x24\xd8\x1d\x94\xa3\x05\xdb\xb7\x5b\xe6\xe7\x56\x07\x53\x8c\x02\xd3\xcc\x93\x8b\xff\x75\x68\x46\x02\xd5\xd7\x5d\x1a\x7c\x0a\xe6\xf9\xe6\xe9\xd9\xf1\xfb\xa3\xab\x7f\x1c\x3d\xfd\xdb\xd5\xeb\xa7\x6f\x1b\x67\x81\xbb\xb0\x77\x2b\xf8\x75\x6f\xce\x17\x6e\xe6\xbf\xab\xe9\xf1\x77\x14\x04\x0c\x68\xec\xe9\xd7\x2d\x8d\x1e\xb8\x64\x7f\x13\xcd\xdd\x12\x33\xb8\x16\xbe\x8b\x99\x4c\x12\x91\xfd\x0d\x17\xbd\xa1\x0f\xa8\xd2\x0b\x28\x61\x03\x17\xa5\x13\xbe\xcb\xa6\xe6\xff\x66\x5c\xbb\x46\x22\x43\x7f\xaf\x75\x06\x50\xa3\xab\x9b\xb2\x27\xa6\x39\x99\x3b\x35\xfc\x65\x0f\xec\x3b\x07\x6f\x2a\x8a\x42\xe4\x2f\x40\xc4\xf5\x10\xcf\xfe\xf9\xf6\x28\x86\x59\x7b\xa0\xb9\x17\x3c\xc8\xc5\xb6\xa2\x67\x13\xab\x43\xf7\x66\x1a\x4c\xa7\xef\x1e\xbb\x0e\xba\xa9\x53\xc6\x5b\xc7\x99\xcd\x24\x9c\x42\x2a\x2b\x21\x6f\x44\xde\x65\x66\x9f\x9b\xa6\xa0\xa2\x13\xc6\xad\x4a\x12\xc8\x58\x7e\x64\x77\x6e\xca\xf0\x40\x77\xbc\x1f\x02\x47\x0a\x7b\x10\x64\xe2\xd6\xae\x0e\x79\x12\x99\xaf\xb7\xf3\xa9\x28\xdc\x39\x3c\x15\x45\xf0\x05\xcd\x6a\xf8\x05\x97\xcb\x7e\xd1\x41\x1b\x4d\x6d\xb0\x2c\xbe\x1b\x98\x8b\x82\x27\xbc\xe0\x0e\x1f\xd0\x14\x65\x03\x68\xdd\x65\x51\xb5\x38\xbd\xa0\x2d\x76\xd3\x05\x1b\xec\x06\x41\x04\x26\x54\xea\xa1\x13\x24\x19\xc3\xff\xc7\xa9\xad\x87\x33\xe3\xba\x0c\xc7\x23\x3e\x08\xb2\x04\x11\xf4\xec\xe9\xd9\x91\xe3\x8f\x7f\x13\xab\x76\x0b\x56\x8a\x16\xd0\x6f\xa7\x73\xa8\x79\x19\xa6\x11\xda\x0a\x71\xeb\xe4\x78\xd3\x00\xc0\x7e\x5d\x4c\x3a\x36\xe3\x3b\xe8\xc0\x3d\xac\x9d\xc3\x70\x57\x9c\xd6\x41\xdc\x20\x1f\x7e\x22\x0c\xc1\x66\xef\xd2\xc0\x87\xc0\x42\xa8\xcf\xa1\xf9\x3f\xf8\x41\x6c\x64\x68\xff\xb0\xd5\x91\x17\x0c\xfd\x9f\xff\xf3\xf4\xbb\x5d\xac\xd8\x3b\x6b\x49\x5f\x24\x1c\xa3\x9f\x02\x56\x80\x67\x0b\x36\x18\x23\xec\x5f\x3d\x4f\xff\x8e\x29\x47\x70\xd8\x61\x1d\x5c\x62\x41\xc1\xa9\xb0\x4d\x23\xaa\x4a\x0d\xcf\x8e\x5e\xbf\x7d\x85\xfb\x91\xc4\x24\xba\x7c\x45\x9f\xa1\xb6\x75\x70\xd9\x2c\xf7\x9e\x84\xca\x71\x17\xb2\xc0\xa8\x4c\x07\xcc\x75\x99\x69\x3e\x31\xa3\xa2\x4f\xec\x09\x7b\xf0\x80\xfe\xee\xd3\xc7\xf0\x45\x6f\x58\x3f\x4c\x1e\x57\xdf\x26\x70\x50\x2a\xb7\xcb\xd4\x19\xcf\xa7\xa2\x78\x09\x3b\xb7\xae\x71\x58\x23\x6c\x1d\x68\x80\xf6\x41\xe0\xaa\xce\x17\x55\x43\xc1\x94\xb5\x34\xb9\x02\x3d\x7c\xc8\x1e\x98\x13\x98\x10\xd1\xca\xf8\x5c\xb4\x3a\x9d\xb5\x6c\x29\xaa\xeb\xae\x7f\xd1\x31\xae\xba\xb2\xf6\x2d\x5d\x6d\x29\xd4\xae\x62\xff\x37\x25\xb3\xa6\x71\x3d\x81\x92\x21\x6b\xb5\x3a\x3e\x75\x14\xbc\x83\x0e\x72\xb5\x75\xe4\x0d\x26\x88\xd8\xef\xb0\x93\xaa\x21\x83\x21\x53\xf7\x06\x81\xb2\x61\xc4\x32\x32\x32\x7b\xb8\x00\xcb\x07\xb8\xd2\xae\x1f\xca\x53\x89\x5d\x54\x2a\x87\xab\xf4\xf0\x21\xd5\x72\x6d\x1d\x75\x84\x9e\xbc\x1b\x87\x0e\xd0\xd7\x2d\xc6\x49\xd9\xcc\x33\x18\x30\x9e\x24\x6c\xc2\xaf\x85\x33\x40\xfc\x97\x73\x19\x9c\xa8\xdc\x3d\x6b\x0a\xf1\x10\xf4\xf6\x2f\x19\xb7\x35\x1b\x84\x79\xb1\x34\xfa\x3e\xd9\x6f\xe0\xec\xf4\x4a\x3d\xe7\x7a\xc6\xa4\x7e\xc3\xd1\x03\xe6\xae\xd3\x76\x86\x0e\xe7\xd4\xd6\x65\x2d\xdb\x67\xab\x1b\x66\xff\xa0\x8d\x5b\xeb\x1b\x54\x58\x2f\xf2\x48\xe1\x2e\xf3\x17\xf0\x0d\x75\xf4\xf4\xf9\x73\xcc\x02\xdb\x36\x8f\x65\xa8\xf6\x6d\x7f\x14\xd4\x9c\x54\xf8\xd5\x03\x5b\x80\x7b\x7e\x03\x28\xf3\xf1\x1e\xba\x08\x5d\x8d\xb8\x50\x90\x90\x57\xd9\x18\x9e\x5a\x94\xb9\x00\x9f\x18\x6d\x4f\xfc\x87\x61\x14\x86\x76\xb7\x49\xb5\x73\x01\x4c\x5d\x5a\xf6\xb8\x5b\xeb\x90\xe4\x82\x4b\xff\xc8\xbe\x63\x4f\xfc\xc8\xdb\x06\x01\xe7\x0e\xc8\x25\x48\x68\xfe\x2b\x59\xe9\x82\xef\xb8\x39\x86\xac\xd4\xce\x2c\x7c\xa9\xc8\xbe\xe8\x6e\x20\x56\xe0\x78\xef\xfe\x9a\x16\xb1\x26\x3d\x16\x32\xb5\x3a\xbf\xf9\xdb\xba\x46\xa4\x0a\xf4\x0a\x28\x87\x1f\x81\xe3\x98\x21\xc0\xa9\xc8\xbf\xd0\x6d\x4c\x22\x94\xb5\xf8\xb7\x08\x2e\xc5\x86\x40\x7a\x30\xe7\x0d\x76\xc8\x1e\xf9\x7a\x4f\xd8\x63\x36\xf4\x0d\xd9\x9f\xd8\x63\xf6\x84\xa6\x33\x84\xd9\x76\x3c\xd4\xb2\x27\x31\x4d\x6c\xfd\xa5\x3e\x54\x09\xe8\x74\x2e\x33\x8b\xa8\xb9\xcc\x02\x34\xbd\x02\x9a\xf8\x42\x2c\x21\x61\xdd\x03\x49\x25\x0c\xcc\xcd\xe9\x62\x27\xe8\x9b\x74\xd9\xe3\x8f\xfb\x2f\xc2\x7f\x46\xe3\x7c\x7c\xc0\x06\x03\xf6\x1d\xfb\xf6\x5b\xf6\xe3\xf7\xac\xc7\xf6\xcd\x86\xfa\xc3\xe3\xc7\x3f\xef\xff\xe1\x0f\xdf\xfd\xf8\xc3\xcf\x3f\x3c\xfe\xc3\x1f\xf6\xbf\x0a\xee\xb8\x33\x38\xcd\xf9\xc7\x83\x75\x08\xfd\x15\x0d\xc4\xf0\xb0\x17\x5b\xa8\xc5\x32\x05\xef\xd0\x05\xa5\x60\x85\xc0\xb4\xf8\xe5\xc4\xc1\x80\xbd\x12\x05\xa3\x5e\xd9\x48\xb0\x27\xcc\x11\x6f\x1b\xbc\x33\x3a\x7d\xa8\x76\x3c\x71\xb5\xfe\xc8\x1e\xe3\x6b\x04\x94\xcb\x7e\x24\xcc\x20\xdb\x6d\xda\xe0\x8f\x6c\x45\x83\xb9\xce\x01\x9e\x48\xa5\xea\x32\x6b\x53\x25\x03\x09\x92\x71\xf6\x37\xb8\x23\x26\xe2\xa3\xab\xeb\xc5\x2e\xe9\x50\x5a\x94\x86\x1d\x39\xea\xfa\x91\x9b\x75\xe6\x1f\x6d\xef\xec\x11\x81\x34\x43\x65\xc3\xda\x81\x55\x77\xc0\x97\x3a\xb7\x20\xd5\xaf\x6b\x8a\x5d\x07\x4d\x9e\x8e\x20\xda\x4e\x40\xe7\xeb\x5a\x72\xaa\x88\xbd\x07\xce\xac\x4f\xf3\x9c\xaf\xc2\xc4\xfb\x0c\x6a\x9c\x4c\xba\x8c\x62\x64\x35\xbb\xfb\xe0\x8e\xee\x72\x5c\x88\x57\x79\x5c\x12\x5a\xbf\x3a\xc7\xa7\x57\xc7\x6f\x9e\xbd\xfa\xfb\xf3\xa3\xd3\x26\xbb\xca\x37\x18\xa0\x21\xd2\x2e\x24\xb4\x86\x79\x44\x96\x96\x3a\x87\x91\x6f\xc2\x1c\xd3\xa6\x52\x6a\x31\x67\x91\xd8\x3e\xe9\xfb\x65\x62\xee\xb9\x16\x44\x52\x09\x6d\x6d\xd7\x71\xb8\xb6\xb6\x51\x28\xfd\x0d\x06\x0c\xd0\xf5\x5f\x0e\x33\x4b\x2d\x34\x3b\xe5\x73\xf1\xde\x54\xfb\xff\x88\x5c\x31\xf1\xaf\x25\x4f\x65\xb1\x62\x3c\x9d\xaa\x5c\x16\x33\x9f\xa5\x7b\x9d\x1b\xbf\x16\xe9\xa4\x07\x86\x9f\x5c\x78\x61\x34\xc0\xa0\x39\x99\x44\xca\x1e\x1c\x32\x91\x76\x6c\x02\x5b\x9a\xf8\x9f\x70\x6e\x51\x7a\x60\x4c\xff\x7a\x72\x0e\x5f\x1e\x3d\xba\x0c\xd3\x87\xee\x36\x10\x1c\x8a\x35\xd7\x5b\x33\x7f\x39\x9e\x2c\x42\x0f\x50\x10\x93\x90\xc4\x47\xb3\x99\x4a\x85\xee\x96\x71\xd7\x63\x99\x2a\xac\xf5\x0a\xb8\x01\x24\xa1\x38\x88\xe7\x74\xc0\x68\x02\xa5\xcc\x30\x11\x6a\x40\x78\x33\x8b\x2b\x33\x76\xd2\x41\xa1\x19\x0a\x2e\x41\xca\x37\x08\xb3\xbe\xe9\x75\xad\x3e\x7f\x76\xd9\x55\x9d\x1d\xed\x41\x09\xf5\xbd\xfd\x92\x51\xad\xde\x12\x51\xb7\xa5\xec\x8c\xbd\xe7\x47\xf4\x26\xed\xba\x53\x8c\x37\x80\x02\x89\x9f\xfe\x1e\x46\x1b\x10\x13\xad\x77\x9b\xc7\x02\x4b\xf3\x55\x86\x92\x88\x8f\xf8\x5c\x36\x01\x2d\x0d\x04\xd4\xcb\x4e\xd9\xa1\x78\x2b\x0b\xc6\x97\x73\x53\x4b\x82\x8d\xce\x41\x10\x75\x61\x51\xd8\xea\x58\xc4\x7c\x89\x79\x7b\xcd\x39\x65\xfd\x0d\x40\xa6\x0c\xce\xa9\x3a\xee\x46\x19\xda\x9d\x5a\x2f\x5d\xf2\x5f\x8c\xea\xa0\xa7\x7a\x29\x1b\x3e\xdd\xbd\xc0\xdf\xb0\x7f\x28\xcf\xfb\x49\x07\x15\x72\x3f\x13\xf2\xc4\xc6\x14\x81\xa4\xef\xc1\x4f\x7a\xff\x3a\xce\x97\x3f\x18\xb0\xe7\x2a\x6b\x15\x10\xa4\xc6\x46\xcb\x29\x7b\x48\x58\x81\x4b\x1a\x53\x85\x78\x10\xcc\xa9\xef\x77\x6d\x27\x74\x9d\xc3\xa4\xf4\x50\xe5\x5c\x3e\x7a\x74\xe9\x9d\xd0\xfe\x0f\x61\xbc\x6d\x5f\x66\x84\xe1\x7c\xfe\x5c\x3f\x9c\xbb\xe0\xf4\xc8\xed\xfb\xbf\x3e\xc6\xe6\xf8\xe8\x97\x1e\x66\xdd\xf0\xe3\xc5\x61\x56\x16\xe5\xdc\x40\x6a\x05\xca\x29\xde\x08\xb6\x62\xaf\x74\x2a\x94\xfa\xad\x25\xf8\x93\x09\x95\xd5\x39\xfa\xd1\xa7\x42\xbd\x52\x63\x9e\x0a\xab\xb0\x52\x61\xf4\x93\xe2\x0b\x5a\x17\xd9\x65\x70\x9f\x48\x64\x85\x24\xb0\x96\xee\xc8\x99\xc7\xcc\xae\x67\x4b\x1d\xd9\x9b\xc9\xff\x65\x39\x5d\x0b\xc0\xd4\xe9\x8d\x96\xd3\xf2\xcd\x4c\x44\xf3\x01\xa0\xfe\x58\x65\x63\x5e\xb4\x5b\x24\x7d\x74\x01\x05\x88\x94\x56\x25\xbe\x34\x76\x02\x7d\x63\x16\xfe\xeb\x78\xab\x02\x0d\xc5\x6e\x6f\xcd\x5d\x1a\x3a\x6a\xf0\x4b\x85\xef\xed\x93\x92\x5e\x54\xc1\xbf\x21\x5e\x8f\x91\x40\xda\xdb\x38\x00\xbc\xc5\xd5\x81\xd5\x40\x14\x7f\x59\xca\xb4\x38\xce\x9a\x55\x78\x51\x60\xf8\x5e\x4f\x66\x5e\xed\xaf\x8e\x7b\x3b\x47\x2f\x03\x4d\xdd\x66\xde\x41\x0b\x70\xd7\x00\x97\x86\x7b\x4f\xc8\x1a\x5b\xdf\xd7\x2b\x13\xcd\x4c\xa9\x7d\xf9\x01\xf6\x6c\x20\x78\x96\x22\x32\x79\x96\x30\xea\xb0\xce\xbe\xe2\xd0\xdc\x6e\xbd\x13\x93\xd4\xf4\xd1\x65\x2d\x75\x0b\x2b\xd8\xea\x44\x34\x41\xa5\xfe\x0e\x22\xb8\xc3\x6e\xc4\x7b\x7f\xd2\x76\x8e\x8e\x14\xbf\x86\x0d\x6b\x31\x5a\x81\x14\x61\xba\x3f\x09\x35\x91\x7a\x00\x4f\xf0\x35\x0f\xda\x7f\xb5\x75\xd0\xaf\x17\xfc\x01\x74\x25\x78\x67\xab\xb3\x96\x30\xd1\xbc\xf2\xb7\xc1\x21\xb7\x2e\x04\xfe\x9e\x14\x54\x13\x29\xf0\xb5\x9c\x1b\xd7\x1e\xc9\x05\xd8\x58\xbb\x0c\xed\x7f\x55\x2a\xb0\x14\x42\xdf\xdd\x5a\x27\x65\x1f\xe0\x7a\x1f\xc5\x06\xda\x78\xbe\x4d\xd4\x7a\x04\x23\xca\xcc\xf6\xf8\x80\x49\xf6\x47\x16\x3c\x03\x73\xc0\x64\x20\x1b\xdf\x44\xef\xc0\xf8\xc4\x6b\x60\x57\x36\x47\xb2\x9d\x35\xb8\x52\x94\x3d\x81\x83\x8f\xdd\x66\x6f\x7e\x44\x08\x81\xf8\xa2\x54\x12\x28\xcf\xc0\x2b\x47\x64\x8e\x1a\xfc\xd7\xe7\x8b\x0b\x2f\x64\x5e\x5c\xf4\x07\xae\xa6\xd4\x2f\x54\x3e\x16\xb1\x8a\x39\x11\xbc\x58\xe6\xa2\xcb\x12\x51\x88\x71\x90\x69\xdd\xe9\x6e\x66\x85\x78\xc1\xcf\x31\xa5\xa1\xfc\xb7\xb0\x6d\x3a\x97\xe1\x0e\x74\xf7\x1e\x6f\x4f\x5e\xfd\xf3\xc5\xf1\xab\x57\xec\x09\xe8\x36\xd6\xae\xe8\xbe\xe3\x45\x3a\x7b\x82\xd7\x27\xf6\xb3\x0d\x13\xb3\xa3\xa8\xd8\x51\x31\xe4\xc8\x8f\xd2\x36\x7c\xf0\xc0\x95\x45\x2e\x0a\x6e\xb8\x10\x41\x86\x33\xef\x87\x85\x1e\x07\x9a\x22\x07\xc3\x03\x8d\xcc\xe3\xf4\xa9\x4f\x58\x6e\x07\xd8\xee\xb2\x56\xbf\xd5\xe9\x1b\x91\xe5\x56\xe4\xcf\x38\xbd\x86\xe4\x47\x60\xb0\x16\x76\x4e\xbf\xe1\x4a\xd7\x7b\xd8\x84\x35\x5c\x49\xeb\x8d\x75\xab\x74\xd8\x0c\xaa\x05\x65\xad\xb7\xad\xfa\x7d\x6a\x2b\xdf\xf7\x1a\x76\xcd\xae\xbb\x3f\x7b\xea\x4f\x7e\xff\x4b\xde\x5c\xe0\xa6\x5c\x13\xa7\x5d\x0a\x84\xb8\xd7\x75\xef\x58\x2d\x56\xcf\xbc\x0c\xfc\xd6\x3f\xa2\xd4\x38\x7e\xb5\x58\xf5\x02\xb1\xb9\xe7\x1f\x5e\x0a\xdc\xa0\xdc\x16\x6d\x74\x83\x82\x9b\x3d\xeb\x39\x36\xf8\xd6\xd0\xac\xbd\x9e\x44\xfe\x83\x3a\x7e\x0f\xdf\xe0\x20\xbb\x24\x7d\xa1\x6c\x62\x41\x13\xa2\x0a\x6a\x42\xd5\x24\xa6\x55\xa3\x6f\xd5\x46\xba\xe0\x85\x4d\xb3\xd7\xa3\x24\x6f\x8c\x6b\xf0\x9d\x91\x63\x67\xeb\x32\x7d\x03\xc0\xb0\x2d\xf0\xa6\x9a\xb6\xfe\x61\x98\xb5\xcd\x73\x61\x47\x6b\x9a\xc3\xaf\x72\x4b\xe0\xf8\x66\xfc\x1f\x16\xcb\x5c\x7c\xb0\x6e\x8e\x21\x14\xc4\x61\x69\x10\xe2\x46\x64\x86\xd1\xc3\x0b\x58\xe8\x5b\x4a\x9c\x0e\xa2\xbb\x6f\xb8\x4c\x6d\xca\x3d\x0b\x67\x24\xb3\xc4\x8f\x06\x7e\xd9\xd1\xdb\x27\x7b\xe9\x48\xb0\x0e\x47\x5b\x0c\xee\x36\xe7\x0b\x0f\x14\x7e\x45\x57\x81\x10\x78\x6c\x06\x0b\xd6\x67\x5a\xa4\x85\x4a\x31\x6b\xd8\x4e\x5d\xd1\x05\x3a\x75\xb5\xd4\x98\x5c\xd0\x3e\xbe\xe6\xf3\xb7\xa9\x89\x0b\x95\x0c\xa3\xec\xe9\x1a\xf6\x51\x25\x82\x34\x20\x95\x19\x9f\xfb\xc9\xf0\x24\x61\x1c\x23\xe8\xe9\x35\x4c\x9b\xf0\x35\x5d\xb1\xc9\x32\x85\x79\xac\x26\x32\x4d\x75\x08\x24\x10\x61\x23\x9a\x09\xca\x17\x35\x7d\x87\xf7\xc0\x3d\x8b\x33\x48\x40\x41\x79\xdf\xc0\x5d\x05\xb2\x48\x12\x9d\x7d\x3b\x58\x6f\x85\x40\xc0\x35\x32\xcf\xd9\xd3\x77\x2f\x8f\xce\xbc\xd7\x00\x6d\x45\x27\xc4\xbc\x7c\x75\xf2\x97\xa7\xaf\x82\xef\xee\x32\xd3\xbb\x37\x1d\x3f\x0b\xbe\x9b\xad\xe4\xbe\xbe\x38\x79\xf7\xec\xe8\x79\x97\x45\xf2\x05\xfe\xb0\x38\xb7\x63\xf2\xbf\x93\x30\x2a\x12\x25\x18\x1c\x85\x0f\x63\xc3\xdd\x1e\xdc\xac\x46\xf7\xe8\x38\xa6\xa6\xda\xe7\x38\xe5\x92\x87\x3f\x16\x5a\x87\xc1\x72\xae\x7c\x07\xa2\x5d\x85\xf1\xe9\xae\xe3\xe5\x96\xf8\x5a\x1e\x9b\x75\x22\xf3\x4c\xb4\x02\xac\x34\x79\x76\x48\x05\xde\x3f\x00\x21\xd5\x50\x46\x60\x16\xdd\x32\x23\x52\x20\x01\x3a\x9b\x70\xbc\x18\x20\xd4\x36\x64\x48\x0a\xed\xe1\x84\x9d\x4a\x63\x2c\x08\x07\x8f\x14\x10\x9c\xeb\xb4\x96\xce\x3f\x83\x08\xf0\x91\x5d\x36\xf6\xc4\x88\x27\x6c\xc8\x5a\xff\xd5\xea\xb0\x47\x48\x32\x31\xfb\xeb\x78\xb3\xf3\x58\x65\x05\x07\xf7\x68\x99\x05\x4c\x97\xe4\x5e\xea\xfc\xe1\xc3\xf2\x48\x1f\xc4\x29\x5f\xe2\x17\x7a\x28\x20\xa2\xb4\x30\x87\xce\xb3\x3f\x86\xd5\x71\x0f\x28\x3b\x9c\x36\x1e\xb1\xed\x32\xa9\x97\x40\x85\xa9\x5b\x31\x13\xe5\x6e\x6c\x27\xa6\x15\xe0\x60\x9f\x3f\x5b\x32\x74\x53\xa9\xa0\x03\x6a\x86\x6f\x45\xad\x73\x17\x29\x4f\xa1\x65\x1a\xb7\xe2\x57\x31\xfc\x04\xc4\xc7\x42\x64\x09\xed\x3c\xeb\x28\x83\x78\x8f\x95\x8e\x32\x58\xeb\x50\xf5\x45\x6a\x46\x35\x1f\xc0\x83\x75\x86\x9b\x75\x19\x02\x06\x03\xf6\x6c\x96\xab\xb9\x60\xdf\xff\xc2\xb0\x3e\x28\xda\xee\x69\x65\x9f\x54\x0b\xd3\x6d\xd8\x13\x6b\xdb\x9c\x88\xf6\xf6\xc1\xfa\xa5\x61\x44\x40\xa7\xec\x88\x42\xde\xbc\xa7\xff\x7c\xfd\x97\x93\x57\x9b\x7c\xdb\xd1\x64\xd2\x84\x8c\x08\xd4\x2e\x43\x35\x68\xc2\xf1\x01\xe5\xec\xd8\x94\x76\x11\x01\x70\xef\x01\x82\xef\x16\x8e\x37\xf0\xb4\xd8\x39\x15\xd8\x60\xc0\x3e\x1c\x6b\xb8\xfc\xf8\x22\x2f\x02\xa9\xe1\xa2\xa0\x06\x6d\x78\xb1\x22\xb1\x8f\xc8\xb4\x44\x65\x6d\xff\x9a\x49\x29\x8d\x16\x7c\x30\x13\x85\x7a\xa5\x8c\x44\x5f\x37\x6b\x13\xba\x53\x20\xb0\x2f\x74\xa7\xb0\x62\xf4\xce\xee\x14\xeb\xf3\x40\xb9\x36\xe5\x90\xf8\xff\xb0\x45\x3c\x30\x69\x9b\xd2\xfb\xda\xb0\x1b\x2e\x21\x02\xc8\x11\xed\x5c\x83\xe5\x79\x1b\xdb\x74\x30\xaf\xce\xff\xbc\x90\xe2\x7b\x04\xe7\xab\x9d\x16\xba\xba\x4a\xd1\xf0\xe5\xfd\x6f\x1d\xa2\x38\x7b\x29\xea\x56\x2f\x8e\x66\x6e\xe8\xbf\x31\xe2\xde\x48\x00\x27\x5d\xe6\x7f\x35\x04\xdc\x87\xb6\x48\xbf\xf4\x41\x33\x57\xcb\xb9\x3f\x84\x76\x41\xef\x0a\x83\x5e\x0f\x8f\x2b\xd7\x85\x0d\x3e\x04\x0d\x31\xd7\xee\x32\x0f\x2d\x8b\xe4\x55\x10\xce\x03\xfd\x54\xd7\x04\xbb\xdf\xe7\x22\x64\x83\xa1\xdf\xa6\x0d\x6a\x75\x99\xfb\xfb\x28\x48\x1d\x44\x3d\xdf\x83\x1e\x2b\xeb\xb9\xd3\x56\x08\xad\x22\xf7\x63\x41\xf7\xbc\x86\x86\x66\xc5\xbc\xd9\x18\x64\x3e\xfa\x49\x12\xca\x9e\x7d\x71\x8e\xa6\x7b\x45\x92\x61\xb3\x97\x46\xf1\x6c\xfd\xc9\x9a\x0c\x5f\xc1\xcf\x3f\x3a\x0b\xe2\xbb\x93\xb3\x13\x08\x7c\x3a\x0c\x2f\x1e\xe9\x2b\x6e\x44\xf3\x09\x19\x5a\xcb\xe5\x16\xb9\x82\x86\x71\xc8\x8d\x2d\x0d\x3a\x3f\x9a\x2f\x8a\x50\x4c\x8f\x0e\xb4\x4a\x7a\x09\x9f\x67\x14\x7a\x3b\xe3\xd3\xa8\xfe\x18\x93\xa9\xc7\xfc\xfb\x95\x51\x6b\x68\x9c\x8f\xcc\x64\x1f\x31\xaa\xc7\x1e\xe1\xc7\xd6\xa0\x15\x57\x09\xf3\x74\xe3\xd2\x44\x6f\xd0\x83\x4f\xf6\x87\x6c\x99\xa6\x1f\xbc\xf5\x68\x08\xf6\x8f\xa7\x63\x23\xf2\xfd\x6f\x16\xa6\x9c\x1c\xa7\x02\x62\x3e\xbd\x59\x1d\xed\xb7\xcb\x34\x85\xdb\x6d\xac\xfb\x5e\x72\xdb\x38\x3a\xd3\xb1\xec\xb9\xcb\x5d\x86\xbc\x2a\x2e\xed\xdf\xe6\xb2\x10\x6d\x87\x94\x76\xab\x45\x57\x03\xe5\x8a\xe3\x54\x91\xa1\x99\xde\x61\x11\xf3\x05\x3b\xac\x54\x5b\xf0\x5c\x64\xc5\x3f\x20\x89\x77\xdf\xa5\x0f\xad\x80\xb3\xcf\x74\x81\x92\x04\x0f\xcb\xcf\xc5\x5c\xe5\x2b\x96\x0a\x7e\x1d\x3a\x39\x8b\xf9\xe2\xfe\x38\x95\x93\x9c\xcf\xc5\xfd\x50\x7a\xfc\x02\xda\x96\x88\xea\xc2\x3e\x53\x90\x73\x3d\xeb\xb2\x5b\xae\x0b\xba\xdd\x54\x89\x9a\xaf\x86\xec\xf8\x88\xbd\x7c\x86\xb9\xa1\x89\x8b\x4f\x08\x4e\xed\x8e\x6d\xb7\xf0\x7b\xcb\x23\xf6\xaf\xe6\xf0\x6f\xfd\xc6\x6f\x78\x44\x5b\xad\x61\xeb\x20\x86\xf9\xdc\xa7\xbb\x63\x54\xd4\xd7\xc5\x2a\x15\xfd\x44\xea\x45\xca\xcd\x66\x6e\x65\x2a\x13\xd8\xd0\xb0\x8f\x3e\x5f\x2c\x44\x96\x3c\x9b\xc9\x34\x69\x63\x13\xe7\x34\xb2\x43\x5a\xf9\x1f\x7e\xfe\x31\xec\x33\x1f\xfb\x78\x9c\xbf\x9e\x76\x82\xf1\x04\xcb\x4d\x95\x69\x03\x11\x81\x24\xd5\x29\x38\x4a\x52\x0b\x91\xb5\xeb\x80\x55\x69\xd6\x65\xce\x7b\x71\x78\x42\x67\x41\x6d\xc3\x90\x86\xad\x8c\x16\xd7\x78\x11\x11\x1b\x64\xec\x9f\x28\xcf\x6d\xfb\x89\x9a\x73\x99\xe1\x93\x05\x40\xd1\xec\xa3\x4d\x33\x83\x39\xc2\x15\xcb\x04\xbe\xd0\x61\x08\xd0\xd5\xe1\x8b\x45\xae\xf8\x78\xc6\x6e\x67\x22\xab\x80\xa3\xbc\x4d\x5a\x20\x90\x86\x54\xc3\x42\xf7\xf4\x4c\xce\xf5\x40\xe8\x1f\xe1\x2f\xbb\x1c\xfb\x3f\x3e\x86\x76\xe0\xf1\x8f\x97\xe4\x93\x3a\x00\xd7\xb2\x18\xf3\xf9\x28\x97\xc9\x54\x78\x20\x63\x35\x9f\xcb\x62\xf0\xc3\xe4\xe7\xef\x7f\xe1\xe3\xc7\x3f\xfd\x04\xd9\x8b\xdd\xbe\x0c\x08\x1a\xce\xe3\x78\x1f\x1f\xd4\x6e\x9f\xba\x5d\x13\x64\x2e\x19\x7c\x6b\x8d\xc7\xc4\xb7\xa8\xd5\xb7\x03\xfc\x5e\xe5\x15\x65\x84\x3d\x7c\x08\x41\xaf\x51\xf3\x76\xcb\x50\xf8\x44\xa6\xc2\xa5\xbd\xaa\x49\x38\x84\x9e\x8d\x2e\xe3\x50\x75\xe0\xe5\xce\x9f\x34\xb3\xdb\x2a\x8b\x1d\x36\x32\x92\x76\x8d\xd0\x17\xba\xea\x04\xb2\x5f\x24\xdd\xf5\x7a\x1d\x6b\xed\x2e\x81\x3e\x77\xe7\xeb\xe5\x79\x00\xe9\x1c\xdb\x5d\x46\x77\xa4\xa5\xa6\xc1\x7d\x61\x10\xbf\x6a\xcf\xd8\xcb\xf0\xe5\xef\x40\x4e\x47\xd9\xe1\xbe\xd2\x39\xb6\x6e\xd6\xa8\xe8\x89\x9c\x50\xa7\xc2\xa2\x5a\x91\xdb\x3b\xd4\x39\x1b\xf3\x89\x4b\x22\xec\x2c\x61\x65\x11\x21\x40\x99\x59\xe9\x92\xd8\xce\xbc\x8b\x1e\xbc\xaf\x55\x6a\xdc\xb6\xb5\xd6\x43\x0d\x5e\x9f\x24\x03\xe0\xc5\xde\xd5\x15\x1c\x37\x57\x57\x17\x7b\xc0\x4e\xbc\x11\x2b\x70\x52\x73\xa6\xc0\x70\x2c\xd1\xa2\x9c\x84\x96\x6d\x37\xd6\xba\xb5\x75\x0b\x1f\x4a\xc1\xa5\x6c\x14\x04\x60\x58\xd5\x71\xac\x5f\x5f\xac\xb1\x7c\x55\x9f\xf9\xba\x7c\x7f\xe8\xff\x75\x4f\x0f\x29\xb8\xe1\xb5\x3e\xa8\x8d\xd9\xf1\x21\xc6\x1d\x8e\x1e\xdb\xd9\x16\x6f\x91\x80\x57\x72\xa3\xc3\x9a\x41\xf6\x93\x35\xdf\xdb\xf6\x41\x93\x21\x3a\x7e\xba\x5b\xee\x7f\x44\xe3\xa8\x09\xae\xde\x2e\x4b\x22\x76\xe2\x22\xd8\xd7\x3e\x21\x12\x4c\x9d\x72\xfd\x47\xf6\xd9\x6a\xbe\xfd\xe3\xa3\xfd\x7d\xc3\xfb\xa7\xab\x75\x2e\x7b\x20\x58\x91\x9c\x63\x4e\x46\xec\xa6\xbc\xd5\xc1\xef\x6e\xad\x6b\x5f\x39\x31\x44\xb8\x52\x0f\x1f\x56\xdf\x2b\x80\xe5\x3a\x27\x59\x10\xd1\x79\xd9\xc2\x09\x3f\x29\x61\xd8\x54\xb7\x8e\x1b\xcd\x58\x2c\x3b\xf4\xca\x8a\x71\x6b\xc7\xac\x57\x3b\xa5\x6c\xd9\xd6\xef\x6b\x9b\xd4\x2e\x5f\x62\x6a\x36\x6d\xff\x7e\x6a\x1b\x5e\x3d\x3d\xbd\xfa\xfb\xf1\xf3\xe6\x1e\xb5\x6d\xdc\xe3\xba\x17\xa7\x96\xf9\x87\x48\xd3\xbf\x65\xea\x36\x23\x03\xfd\x29\x25\xac\xb0\xb9\x66\x6e\xaf\xfd\xac\xc8\x26\xef\xb2\x8b\xe0\xef\xc8\x6d\xa3\x04\x8e\x1d\xd6\x0c\xf3\x89\x05\x34\xb4\x7f\x3c\x7c\x68\x6d\xd5\xf4\x12\xf6\x29\xde\xbe\x7e\xfe\x6c\x30\xb9\x4d\x34\x64\x98\x96\x73\xc6\x75\xbb\x76\x5a\xe8\x22\xde\x89\x22\x92\xe3\x15\x20\xff\x6d\x6c\xe4\xaa\xd7\x02\x83\x10\x46\xc3\xf2\xb1\x10\x7f\x86\x91\xcc\xeb\x5b\xd5\xa2\xab\x4d\x59\x8a\xfa\x46\xad\xc8\x9c\xe4\xef\xe2\x26\xd6\x80\x8c\xf7\xc0\x6d\x65\x19\xea\x29\xc3\xd4\xeb\xc1\x4b\x96\xf1\x45\x46\xc8\x0f\x4a\xb0\xee\x13\x63\xbb\xed\xb6\xa1\x38\xe7\xd2\x34\x37\x58\x4b\x2b\x73\xe8\x11\x98\x06\xe3\xeb\xce\x66\x57\x3a\xb7\xd6\x50\xe0\x9b\xa7\xaf\x8f\x02\xa9\xc7\x21\xdd\x20\x81\x76\x09\xdc\x12\x86\xbf\x0f\xdd\x3d\xb8\x23\x5a\x4b\x76\x00\xae\xe2\x40\x18\x7e\xed\x7a\x9f\x44\x78\x85\x66\x1d\xe2\xfa\x13\x1c\x1f\x50\x52\x89\x57\x7e\x0d\xcc\xec\xb4\xc0\x5f\x48\x97\xe0\x4e\x71\x42\xd9\xfe\xaf\xce\x9e\xbe\xac\xd2\x67\xdb\xc5\x04\x9c\xf1\xe9\x36\x19\x7d\xbb\xec\xec\xe9\xcb\x2e\x8b\x3c\x1a\xe8\xd5\x12\x9b\x78\x01\x5e\xbd\x71\x77\xe7\xd2\x48\x64\xb2\x08\xe3\xe8\xa3\x31\x75\x82\x54\x04\xd1\x0a\x42\x5f\x61\xcd\x2e\xfb\x54\x7a\x87\xc8\x08\xf5\x5d\xbb\xaa\x66\x7e\x77\xe5\xeb\xd9\x6d\xb3\x13\xfb\x37\x3a\xea\x72\x0c\x6e\x9d\xa7\x98\xf9\x96\xeb\x13\x15\x87\x71\xf1\x0d\x66\xe0\x5e\x04\x0b\x44\x19\xbc\x83\xe6\x29\x1b\x58\xcf\x22\x7a\xb9\x17\x1c\xa6\x36\x3d\x98\x31\xc9\xba\xf0\x58\x62\x29\x48\xd5\x87\xb2\x4f\x32\xbf\xc5\xe0\x55\xc5\xc3\xd8\x2b\xc1\x86\x4c\x62\x52\x09\x7d\x2b\x41\x30\x8b\x80\x31\x8c\xe1\x7d\x3c\xac\xc6\x57\x06\xd7\xf9\x0e\x10\x4a\x3e\xa6\x2f\x77\x53\x7f\x10\x80\xd9\xaf\x01\xc3\xd7\xc3\xe9\x32\x5e\x0b\xea\xbb\x3a\x50\x5d\x36\xda\x08\xcd\xd4\xa9\x03\xf8\x7d\x03\xc0\x2e\x1b\x6f\x03\xd3\x54\x8b\xc0\x86\x61\x45\x1e\xe2\xe0\x5b\xd6\xef\xf7\x79\x3e\xd5\xec\xdb\x41\x25\x91\x65\xd6\xe7\x8b\x45\xba\xb2\x60\x6d\x22\x83\x4e\x14\x1f\x78\xbf\xc4\xde\xd8\x04\xaf\x94\xd7\xb4\x80\x3b\xe9\xaf\xca\xb0\x4e\xdf\x1e\x3d\x3b\x3e\x3a\xad\x63\x55\x7a\x21\xc6\xf6\x36\x23\x08\x19\x3e\xc5\xe2\x67\xa4\xcd\x7f\xc1\xd5\x32\xcc\x86\x7a\x69\x54\xef\x03\x27\xb6\x5c\x4e\x65\xc6\x53\x18\x45\x4d\xe8\xf7\x33\xb7\x9b\xec\x45\x7c\xd4\xc2\x73\x3e\x70\x57\x0b\x3f\xf5\x03\x37\xc5\xc0\xb7\x28\x57\x5a\xf7\x72\xc1\xd3\xb9\xd3\x6a\x2e\xca\xe9\x70\x9e\x55\xd3\x8d\xb4\x9f\xc1\x4e\x76\xfe\x01\x76\x34\xcf\x3c\x53\xee\x74\x3a\x30\x8a\xf2\xfb\xce\xce\x85\xcd\x65\x95\x7b\x16\xfa\xe5\x98\x26\xcf\xce\x69\xc9\x7c\x5c\xaf\x69\x80\x7d\xa2\xf5\xa2\x0e\xf2\x5d\xc4\x1f\x33\x71\x6b\x9b\x84\x2a\x3d\x0e\x79\xc8\x9e\x75\xec\xdd\xa0\xa9\xf1\x98\x12\x44\xd4\x86\xbf\x83\xeb\x68\xa3\x2f\x0e\xa1\xa5\x67\x6a\xf5\x88\x79\x06\xb9\xa3\xbe\xe0\x8d\xab\xc0\xe2\xd6\x68\x3b\xf8\xf2\x38\x7b\x5e\x21\xf8\x0d\x71\xa5\x44\xcd\x74\x4f\x16\xec\xb3\xc5\x52\xcf\x20\x76\x13\xc2\x1b\xd7\x04\xe1\x4f\x54\x7e\xc4\xc7\xb3\x2e\x83\x27\x04\x27\x32\x2d\x44\xde\x85\xd7\x86\xbb\x4c\xdc\x88\x7c\x65\x0a\xb3\x04\xff\x1f\xa3\xff\xef\x1b\xa5\x1f\xe4\x23\xbc\xc1\x3c\xb2\x98\x2f\x13\xef\xdc\x0e\xd9\xfe\x41\xf0\xe9\xc5\xf1\xab\xb3\xa3\x77\xc1\xd7\xef\xc2\xaf\xa7\x27\xaf\x8f\x82\x6f\xdf\x87\xdf\x8e\xde\x1f\xbd\xfb\x67\xf0\xf1\x87\x18\xec\x9b\xe7\x57\xc7\x6f\x9e\x1f\xfd\xef\xa0\xc6\x4f\xae\xc6\x9b\x93\xab\x5f\x4f\x5e\x01\x7f\xb2\x1f\x7f\x34\x7b\x2a\x6a\x79\x50\xcb\xcb\x29\xc1\xc0\x98\x76\xae\x3f\x8e\x61\x8d\x26\x72\x8c\x0b\x5a\x93\x73\xa0\x29\xd9\x00\xbe\x1f\xcb\x6a\xdf\xb0\xc0\x1a\x23\xb5\xcc\x92\x40\xd6\x30\x74\xdf\xae\x8e\xe0\xfb\xf5\x29\x0c\x4c\x3f\x6b\xb2\x18\x3c\x0e\xca\xc6\x96\x28\xe3\x49\x41\xce\x9c\x0a\xed\x06\xed\x9c\x43\x2b\x2d\xfa\x13\x6b\x2c\x25\xac\x59\xe6\x3a\x0c\x96\xbe\x5c\x07\x12\x64\x94\xf9\x8c\x8b\xbe\xe9\x86\xf6\x55\xb6\x29\xc2\x1f\xb4\x5d\xbb\xd6\x61\x50\x3f\xbe\xcf\x5b\xc9\x6e\x60\x8a\x29\xd0\xff\xc0\x1f\xfe\x64\xd1\x8c\x56\xc1\x26\x1b\xa3\x84\x21\x27\x9d\x88\x6d\x96\x52\x72\xba\xdc\x0b\x90\x28\x93\xbc\x59\x6d\x3e\x01\x3b\x21\x73\x36\xcc\xf9\xc2\xb7\x71\x5c\x1b\x2b\x74\x9c\xac\x56\x81\x5e\x11\x66\xc0\x4e\xce\xa2\x7f\x83\x01\xec\xf6\x4a\xa3\x1f\x87\x71\x36\xf5\x72\x23\xc3\x0f\x2a\x8d\x7e\x1a\x7a\x67\x22\xc0\x78\x4d\x23\xa0\xe7\x4a\xcb\xef\x86\xc0\xb3\x48\x90\x22\x57\x4d\xca\x11\x86\x2d\x0d\x67\xf2\xcd\x02\xff\x6b\xbb\xe7\xbd\x08\x0b\xf9\xe6\xd0\x4b\xd0\xb0\x30\xdb\xea\xee\x22\x74\x17\xf5\x89\x1a\x02\xa6\xf0\x84\xf5\xf6\x91\x0a\x81\xc5\xe0\xd6\x47\x8e\xf2\xc4\xff\x39\x64\x81\xdb\xfa\x7d\x32\x35\x10\xd7\xfd\x0a\xd9\x11\x26\x2a\x17\x7c\x3c\xbb\xc0\x00\x3e\x03\xb4\x94\x1d\xe1\x71\x73\x8e\x86\x39\x5f\x7c\x85\x11\x10\x6d\xce\xf9\xa2\xd4\xf3\x7e\x73\xcf\xb8\x9a\x5f\x63\xfa\x8e\x2c\xf0\xaf\xd2\x10\xbe\x6b\x1e\x82\x21\xfa\xaf\x30\x00\xbb\x77\xcc\x7f\x4b\x9d\x7f\xdf\xdc\x39\x90\xe5\x57\xe8\xdd\x91\x37\xfc\x51\xea\xff\x87\x75\xf8\xcf\x92\xaf\x82\x7d\xe4\x01\xe6\xbf\xa5\xce\x7f\x5c\xdf\x39\x30\x81\xaf\x34\x02\xc7\x50\xdc\x8f\xd2\x58\x7e\xf2\xc9\x41\x6a\x1e\xe9\xfe\xa6\xd9\x57\x0a\x36\xf2\x3d\x33\x75\xdf\x37\x18\x7f\xd7\xf4\xfa\xf7\xf5\xc2\xfc\x4f\x9a\xdb\x77\x71\xab\xdf\xc5\xa4\xb6\xb3\x4a\x7b\x0f\xb5\xf9\x5e\xcf\x41\xdd\x43\x79\xf8\x8f\xbd\x61\xf7\x7b\x3c\xc9\x87\x64\x44\x2e\xd9\xeb\x15\x1b\xeb\x60\xee\x35\x9a\x7b\x3a\xed\x56\xa3\x73\x7f\xaf\xcc\x16\x00\xf7\xe8\x23\x82\xb8\x1f\xe4\x9e\xf8\x58\xf2\x27\xff\x3d\x93\x67\xfc\xdf\x93\x59\xe1\xe6\xf7\x7f\x7c\xf2\x7f\x4a\x74\xf5\x4e\x97\xaf\xff\x5d\x6f\x29\xec\x72\x81\xfb\x65\xf6\xc1\xdf\xfd\xce\xab\x7a\x1d\xdb\x74\x58\x02\x19\x36\x8f\x52\x8b\xe2\xcc\x5f\xab\xac\x0d\x86\x2f\x54\x0f\x33\x23\xf4\x0a\xba\x80\xb9\xf9\xf2\x2c\xe6\x20\xb4\x90\xb0\xbf\x29\xef\x58\x41\x46\xd2\x56\xc7\xea\x1c\xce\x44\xf4\xeb\xf1\xf3\xe7\x47\x6f\x62\xbf\x65\x5c\x7e\x7f\xc9\x6d\x85\x03\xba\x8b\xdd\xce\x55\xfa\xec\xe4\xea\xed\xbb\xe3\xd7\xc7\x94\xa3\xa1\xe6\x4e\xea\x6d\xe5\xd0\xd1\xdb\xe5\x64\xd7\x2e\x27\xfb\xf6\x49\xdc\x31\xd3\x7e\x1b\xe7\x62\xfb\xc3\xa3\xc8\xb9\x33\x39\xbf\xae\xc0\x39\xca\x62\x7a\xed\x4d\xff\x37\xb8\xbc\x72\xb2\x2a\xc5\x0b\xfc\xf5\xf4\xe4\x4d\xab\x6b\xf3\x83\xcb\xc9\x6a\xad\x2f\xd1\xae\xd9\x5a\x6e\x9a\x5f\x8a\x6c\xcc\x12\xb3\xc9\x8f\x69\xcd\x99\x56\x6a\xff\xb6\x86\x21\xb3\xc3\x35\x7c\xda\xb5\x7f\x9a\xa6\x3e\x69\x91\x75\xab\x28\x9f\x4e\xa5\xb5\xa9\x36\x50\x8b\xca\x89\x46\xdb\x51\x61\xe5\x77\x62\x2a\x75\x91\xaf\xc2\x4e\x68\x1b\x2a\xcb\x24\x72\xaa\x53\xf2\xe8\xb0\x3b\xbb\x0e\x04\x36\xf4\x7b\xba\x02\x62\x17\x07\x92\xff\xe5\x24\x3b\xa2\xab\xff\xe5\xdc\xcf\x5d\x4a\xbc\x25\x26\x81\x2f\x44\xae\x99\xcc\xd8\xff\x2a\xd8\x29\xd0\x42\x77\x17\xef\xe7\xfd\x9f\xbf\x0f\xa4\xf6\xa3\x33\x34\xab\x3e\xb0\xfd\x7f\xfe\xec\xfe\x0e\x3d\x03\xeb\x8b\x41\xdf\x02\x77\xec\x5a\xff\x2b\x95\x26\xec\x69\x96\xe4\x4a\x26\x7e\x88\x63\x95\x88\xfe\x54\xa9\x69\x2a\x60\x9c\x8b\xc1\xcd\x2f\x76\x6c\x89\x28\xb8\x4c\x9f\xc8\xe4\xf0\xa7\x5f\x7e\x76\x9c\x00\xb1\x17\xed\x89\xd2\xc3\xda\xeb\xdf\xd5\xae\x4a\x9b\xed\xda\x87\x3f\x3f\xdd\x6d\xfb\xae\x76\x6d\x73\x34\x4b\x22\x00\x7b\x4d\xfd\x33\x3c\xbd\xed\x5e\xe1\x8e\x9e\xe1\x8e\x1e\xa4\x6c\x78\x0c\xb5\x86\xfe\x23\x3c\x6c\x7a\x78\x38\x6e\xea\x9e\x21\x06\x87\xd3\x26\xb0\xce\x63\xb7\x54\xe3\xfc\x2d\x1a\x3b\x77\x78\x34\x75\x6d\x3f\xe0\x98\x08\x5e\xaf\xa5\x2a\xce\x66\x59\xdf\x53\x65\x4e\xdd\x66\x14\x79\x0f\x01\xe7\x39\xf7\xbc\xfa\x66\xae\x95\x35\x4a\x79\xba\xa6\x3e\x19\x44\x9c\xdf\x49\xdb\x23\xc0\xf3\xaf\xf3\x82\x4f\x2f\xdd\x82\x44\xb4\x46\x27\x46\xb0\x6d\x70\x54\xe5\x33\xae\xad\xc9\x8b\xc5\x7a\x21\x40\x20\x08\x9e\x53\x5d\x2a\xe2\xd3\xa1\xf9\xbf\xae\xf5\xa1\x70\xa3\x1b\x86\x3f\x9c\x3b\x0b\x39\xd0\x04\xbb\xa5\x43\x83\xef\x07\xd5\x83\xb4\x0b\x98\x0d\xca\x3f\xa3\x67\xcf\xb6\xbb\x20\x1b\xd6\x5a\xf7\xb5\xe6\x77\xb2\xbc\xd3\x45\x1c\x6b\x1d\x3f\x90\x5a\x6e\x15\xbc\x6e\x25\x33\x5d\xf0\x6c\x6c\x80\x7c\x73\x5a\x1d\xd8\x37\x15\x87\x9d\x1d\x1f\x1e\xf6\xaf\x73\x54\xe8\xf1\x9b\x32\x84\xda\x23\xa9\x76\x0b\x34\x44\x57\xde\xfb\x51\xe3\x19\xd7\x6d\x4f\x76\x36\xa1\x5a\xe0\xb5\xf7\x20\x78\x05\xd8\xab\x24\xa5\x2c\x13\x0f\x28\x4d\x2a\x0a\x7d\x9d\x4e\xe3\xa6\xc6\x0a\xeb\x1f\xbb\xfd\x74\xd7\xf1\xd7\x1a\x27\xe7\xd8\xe4\xd2\xbe\x05\x12\x24\x6a\x8e\xb3\x9a\x44\x4f\x9d\xd3\x40\x30\x85\x72\x08\xa1\x53\x85\xe8\xdf\x8f\x31\xff\x82\x87\x96\x6b\xb7\x9f\xff\x6e\xf8\xb2\xc7\xc8\xb0\x79\x4e\x8f\xbb\xd8\x47\xc7\xee\xa2\xf0\x9d\xb3\xea\x79\xe4\xde\x30\xa9\xbe\x19\xbd\xe1\x9d\xe9\x9a\x56\x4d\x04\x2d\x63\x3f\xeb\x7b\x47\xf6\x2e\x42\x70\x65\x8f\xe1\xba\x20\xdf\x6a\x28\xb0\x07\xd1\xb1\x39\x22\xbf\xa9\x4f\x12\x19\xd4\x44\x80\x56\x4f\x69\x63\xc2\xcd\xba\x17\x19\xab\x3c\xcb\x08\x1f\xdf\xd4\x49\x93\x78\x3b\xe4\x3b\xb1\xbb\xa1\xb2\x5d\x09\xd3\x8b\xba\x90\xe1\xbb\x4e\x5d\xe4\x30\x2d\x81\xbb\xe0\xdc\x26\xaa\x63\x73\xd0\x42\x0d\x79\x9e\x74\xd8\xb0\xba\xd4\xed\xda\x9a\x75\x31\x0d\x34\xd0\x3a\xf4\x84\xc3\xae\xfb\xde\x7e\x1f\x9c\x69\xe5\x67\xd6\xdf\x87\x1c\xe9\x86\xa2\x89\x1d\xdc\x66\xc1\xdf\xba\x3e\x19\x59\xe8\x6d\xe8\x61\x26\x75\x1d\x6f\xb5\x6e\xc5\x21\x4b\x7b\xdb\x71\xde\x85\x8d\x8c\xb6\x53\xba\xdd\x0b\xf0\x1f\x0c\xd4\x48\xad\x90\x7d\x92\x86\xe3\x0a\x4a\xdd\x7d\xfe\xcc\x7c\xb5\x80\x15\x99\x02\xc7\x7d\xde\x5e\xb2\x27\x2c\x7a\x06\x8b\x58\x5b\xb0\x0c\x6b\xd2\xff\x35\xc4\x0e\xc4\x6c\x24\x7c\x1f\x11\x3c\x2b\xcb\x3b\x74\xfb\x53\x84\xfc\x34\xb7\xc4\xb9\xcd\xc9\xbd\x16\xeb\xb8\xbb\x82\xa7\xa6\xd0\x9a\xb2\xbd\x3c\x2a\xc3\xfc\x4f\x66\x80\x71\xba\xa7\xc6\x41\xb5\x67\xf4\x34\x5f\xb0\x36\xb2\x88\xcf\x89\xc0\xb3\xd4\x25\x8d\x8a\x68\x36\x7e\xb7\xca\x3d\xf4\x1e\x64\xfb\x6a\x5c\xc8\x4a\x98\xcb\xba\xd4\xce\xa8\x18\xcf\x83\xf3\x68\x9b\x60\x8d\x93\x20\xad\x6f\x39\xd7\xba\xe3\x9a\x00\x76\x2d\xdb\x5c\xbb\xae\xe5\x9c\xec\x9d\x86\x9c\xe7\x11\x47\x8c\xb2\x9e\xd7\x62\xc7\x6b\xe4\x0d\xf8\xb1\xc7\xc1\x49\xec\xee\x73\xf2\x97\xbf\x1e\x3d\x3b\xbb\x0a\xad\x47\xb5\xf2\xd7\xc1\xf6\x58\xad\x83\xfa\xa4\xc9\x82\x30\xac\xd9\x5d\x5f\x63\x11\x9a\xd6\xa0\xfd\xa0\x6e\x78\xc4\x7b\x2a\x6a\x0d\x2c\x50\xe4\x5c\xea\x97\x2a\xd0\x3b\xfc\x41\x66\xbd\xec\xd6\xad\xde\x60\xc0\x3e\x60\xcb\x0f\x61\x72\xc4\xad\x7d\x26\xc9\xe6\x11\x35\x05\xba\x8b\xae\x0f\x69\xd4\xde\x54\xe6\x70\x65\xf3\x4a\x45\x2f\xfb\x99\xa3\xa1\x2a\xdc\x77\xaa\x2f\xd4\x12\x3c\xe7\x7f\x1d\x26\xd3\x0f\x5d\x95\x62\xdd\xe6\x41\xe5\xcd\x2f\x70\x4f\xa2\xb2\xf3\xc7\x97\x95\x63\xda\xff\x3d\xb4\x81\xe1\x61\xfd\x4e\xe4\xc9\x34\xa5\x47\xa2\x43\x55\x31\xf2\xda\x82\x70\x9d\xf8\x41\x34\xff\x5e\x79\x84\x84\x5a\xdd\x03\x01\xe0\xb1\xda\xc4\x98\xa3\xa7\x00\x3d\x11\x56\xce\x33\x5b\x68\x39\x67\xd7\x8c\xbf\xd3\x89\xcf\x39\xd2\x64\x63\x29\xbb\x4e\xec\x45\xf0\xa0\x27\xaf\x53\x0f\x70\x70\x65\xb7\x6a\x33\xc6\x92\x15\xc7\x1b\xa4\x3a\xf5\x62\x76\x79\x8b\x40\xd7\xf5\x61\x02\xf6\x65\x56\x83\xfb\x3b\x1f\x20\x8b\x81\x79\x39\x5f\x54\xd5\x7b\xe7\xbc\x83\xbb\x87\xb2\xc4\x55\x95\xf7\x2d\x5f\x06\x0c\x53\xac\xd7\x3d\xff\x57\xf0\xa9\x67\xb6\x75\x5d\x76\x59\x2b\x8a\xf8\x0a\x3b\x6b\x57\xed\x12\xf1\xec\xca\x04\x59\x37\x55\xdb\xf1\x3a\x3b\x2d\x3b\xac\x17\x2d\x01\x42\xbd\x69\xd9\x34\x49\xca\x36\x16\xb6\xd1\x8a\x6d\x9a\x35\xd5\xa9\x01\x10\x65\xc7\xdf\x64\xad\xae\xc2\x86\x0a\x35\x60\x4b\xa9\xf2\xab\x0d\xfd\x23\x0b\xa6\xf1\xfa\xd8\xa2\xa6\x48\xbc\x78\xa9\xca\xf7\x21\x50\xb1\x1b\x86\xb8\x51\x67\xa5\x1d\xe3\x80\xd5\x27\xbf\x30\x5c\x7c\x60\x96\x4e\x69\x9e\xf6\x10\x76\xaf\x64\x23\x6a\xb0\xb0\xd5\xd2\x7c\xd0\xd4\x5b\x48\x59\xdd\xde\xb3\x9f\x62\xf3\x69\xd0\xbe\x1d\x39\x25\xae\xdf\x26\x65\xc3\x54\xe8\xb7\xd7\x09\x58\xc9\x03\xf2\x93\x89\x0e\x4c\xda\x50\x15\xbe\xd1\xf0\x94\x4a\x3d\xa9\x1b\x0e\x83\xf9\x7e\x71\x7e\x81\x4d\xc0\xda\x16\xcd\xfa\x7c\xd3\xfe\x44\x96\x7b\xcb\x82\xcc\xea\xda\xbf\x31\x73\xe8\x90\xc5\xe7\x64\x97\xe9\x19\x9f\x97\x4b\xd9\x1d\xe1\x17\x97\x61\x68\x0f\x44\xca\xc4\x78\x91\x39\x49\x24\xd0\xc9\x6b\xaf\x1a\x3a\xdd\x7a\x02\xac\xbd\x00\x6d\x5b\x8a\xb3\xbd\xb4\x3f\x91\x5b\xa3\x33\x42\x42\xa2\xea\xf5\x53\x72\x83\xf7\x92\x46\x7f\xa2\xee\xe3\xda\xa7\x5d\x63\xd3\xa8\x35\x51\x79\x6b\xd8\x20\x74\xc1\x39\x6b\x83\xe6\x89\x0d\x07\x69\x66\xed\x71\x58\x7f\x29\xd4\xa5\xa6\x5e\xa3\xac\xaf\x77\x8e\xd5\x2e\xc3\xb3\xdd\xca\x37\xb4\x42\x36\xed\x3d\x55\x59\x0f\x87\x1d\x7a\xf3\x2a\xd4\xae\xbd\x6f\x3a\xc7\x3a\x50\xdb\x26\x02\x08\x76\x4d\x00\xe1\xae\x5b\x42\xfb\xb5\x58\xbd\xf8\x12\xcc\x5f\x8b\x15\x21\x1f\x21\x0d\xa3\x74\x81\x2f\x54\xde\xd6\xab\x79\xac\x7d\x58\xe3\x30\x7c\xa9\x0a\x70\x7a\x35\x8f\x03\xe8\x82\x9b\xf4\x68\xa1\x6a\x51\xd1\x65\x08\xd5\xae\x52\x23\xbe\x2e\x03\x7c\x2c\xb5\xc0\xe3\xb3\x7c\x93\x13\xdd\x7e\xa1\x1f\xb4\x6f\x01\x71\x0c\x6b\x5b\x90\x4f\xf1\x5d\xed\x76\x69\x51\x1a\x9f\x6d\x36\x8c\xe3\x01\xa1\x30\x14\x6e\xa2\x86\xf4\x25\x5b\xaf\x66\x29\x81\x89\x4d\xaf\x3b\xb4\xc6\xad\x6e\xa9\xa3\xf8\xec\xbe\x7f\x87\x51\x3e\xc3\x55\x55\x5e\x28\x5b\xbd\x56\x6b\x07\x22\xef\xf5\x8c\x5d\x63\x6a\x45\x56\x31\xa0\xd6\x18\xe1\xca\x03\x6a\x12\x4f\xee\x3f\xb0\xf8\xa5\xa9\xc0\x2d\x73\x9d\xc4\x34\x6c\x16\x94\xbe\x98\x1a\xeb\x28\x6f\xed\xcb\x5a\x5f\x36\xe3\xcc\xa6\x20\xa9\xe9\xa3\x32\x4d\x28\x5d\xbf\x26\x74\xf8\x7d\xad\xe1\xb9\x37\x9f\x1a\xc4\xc4\xca\x10\x4f\x6d\x83\xbb\x8e\xcf\xc2\x65\xd3\x36\xf3\x2c\x61\xdf\xff\x61\xd3\xc8\xd1\x0f\x16\x2c\xb6\x64\xd6\xd3\x91\x76\x3e\x5a\x4e\x75\x7f\x6c\x80\xca\xe5\xbc\xaf\xf2\x69\xc3\x05\xfa\xf7\x3f\xfc\xf0\xfd\x2e\x74\x50\x73\x85\xbe\x5e\x36\x6e\xef\x77\x0e\xd8\x5d\xc7\x51\x4c\x03\x86\x36\x98\x84\x64\x51\xa3\x2f\xad\xe9\xd4\x85\x47\xb9\x77\xb0\xee\x42\x6c\x7f\xf8\xeb\xe9\xc9\x9b\xbe\x73\xb2\xb1\x84\xc0\x46\x62\xc6\x6f\xa4\xca\x31\xd9\x8b\x5b\xd7\x2d\x89\xe3\x37\xad\x32\x0f\x14\x2d\x1e\xde\xd3\x27\x30\x6a\x61\xc6\xf7\x2b\x33\x08\x0a\x65\x3f\x7e\xf1\x4f\x76\x58\xde\x64\x9f\x3f\x37\x79\x2c\x34\xc8\x15\x1d\x1f\x16\xfa\xfa\x94\x1d\x25\x53\x41\x69\xbe\x0b\x6d\x2b\x83\x96\x0d\x8f\x5c\x98\xde\x19\xd7\xec\x53\x1c\xd8\xe2\x07\xdc\xb6\x42\x45\x07\xe2\xdf\xcf\xb3\x65\x9a\xda\xcc\x33\xd0\xc7\x3f\xc4\xe8\x6f\xb2\xd8\xa2\x0b\xd3\xd2\xb6\xfb\xfc\x39\xec\xe2\x13\xe3\x43\xdb\xee\x0e\xfb\xf9\x74\x17\xf6\xf1\xfe\x17\x14\x0f\x80\xd6\x47\xea\xa3\x08\x9e\x58\xab\x03\x48\xcb\x8e\x75\x3a\x0e\x62\xac\xca\x46\xe4\x4e\x2e\x57\x75\xc4\x5e\xbf\x4e\x77\xdd\x40\xa5\x5a\x9f\x4f\x7c\xa9\x45\xd2\xbb\xe1\x39\x0d\xd6\x0d\x33\xa0\x77\x3f\x74\x09\xef\x98\xc0\x03\x48\x79\x97\xc1\xd3\xee\x51\x4c\x59\xce\x20\xe4\xfb\x90\x9d\xcb\xc2\xc7\x93\x85\x31\x77\xfb\x51\xe9\x37\x16\x98\x2b\xa5\x9c\x6b\x15\x43\x97\xcb\xad\x6b\x3a\x40\xd3\xa1\x37\x64\xd9\x54\xba\xde\x6e\xe4\x00\x83\x1b\x61\xa9\x0f\x12\xf0\x5c\x56\x6d\xfc\x4c\xa6\xf8\x92\x09\x0d\xc2\x8e\x89\x76\xe1\xa1\x38\xba\x33\x60\xf8\x64\x26\xfd\xd4\x56\x68\x57\x99\x6f\x5b\xea\x0e\x63\x97\x5d\x6f\x1d\x16\x0c\x31\x52\x06\xac\x9d\xa9\x1c\x4d\x47\x6e\x07\xc1\xd4\xe2\x94\x0f\x36\xa4\xcf\x55\x08\x2f\xb0\x02\xb8\x07\x31\x58\x2f\xea\x92\x79\x2b\x8e\x8e\x73\xaa\xaa\xfb\xcb\xac\xc0\xf9\xfe\x65\x1d\x66\x2b\x1b\x94\x02\xfd\xcd\xee\x82\x40\x7f\x5d\x35\xf0\xde\xc5\xd6\x5c\x1f\x02\x73\xfe\xe7\x3f\x07\x57\x42\x97\x3b\xe7\xbb\xd3\x25\x78\x3d\x03\xcf\x9d\x45\x64\xed\xad\x5a\x08\xce\x43\x2f\xcf\x4b\x5a\x85\x75\x0f\x39\xd4\x19\x19\x42\x18\x5d\x56\xad\xd1\xa7\x37\x4c\x09\x01\x8d\xd3\x77\xce\xb8\x97\x1f\x82\x07\x6e\xbe\x04\x01\xb8\x34\x05\x9f\x5e\x64\xb1\xbb\xaf\xb7\xd6\x79\x87\xd2\x28\x2d\x21\x59\x55\xfd\xfd\xd3\xef\x97\x93\x3a\xe3\x37\x72\xca\xe1\x65\x59\xd6\x5a\x6a\x91\x3f\x9d\x42\x96\x64\xb3\x1d\x5b\xad\xfb\x66\x01\x73\x80\xd6\xe4\x90\x9e\xca\x4c\xf4\x4c\xc5\x1e\x9f\xda\xc4\xcc\xce\x59\x7f\x2c\xb4\xf6\x6e\x8d\x54\x40\xc0\xe9\xa5\x0a\x8d\xee\xa2\x50\xf3\xe1\x43\xfb\x67\xdf\x7e\xb5\x95\x7f\x61\x87\xbe\xc5\xc3\x87\xee\xef\xfe\xcd\x2f\x54\x65\xce\x8b\xf1\xac\x6b\x3f\xc0\x28\xe0\x0d\xf1\x5f\x88\x22\xe1\xbb\x81\xf2\x4b\x5f\x2f\x52\x59\xb4\x5b\x7d\x9b\xbb\x16\x9b\xb0\x43\xac\x73\xfe\xf8\x92\x3d\xa2\x3f\xf7\x21\x83\x94\x0f\x30\x75\x18\x29\x01\x75\xe5\x7d\x28\x69\x0f\xcc\x41\x7d\x71\x31\x68\x5f\x5c\x24\x8f\x3a\x83\xc0\x21\x0b\x5b\x7c\xfe\xec\x3a\x60\x7f\x3a\x64\x3f\xff\xe0\x98\x57\x23\x44\x94\x26\xcb\x30\x11\x2a\x54\xe9\x54\x26\xb2\x7f\x79\x10\xda\xa9\x2a\x14\x64\xeb\x3f\x7c\xc8\x1e\x79\xbc\xed\xf8\xd8\xc9\xd7\xf1\xf7\x7f\xff\xcb\xd5\xfb\xa3\x77\xa7\xc7\x27\x6f\x36\xd1\xda\xcd\x2f\x3d\x1a\xeb\x7d\x92\x89\xac\xc9\xf2\xf1\xfa\xe8\xec\xd7\x93\xe7\x57\x41\xd6\x2a\x90\x87\xd8\x98\x5b\x07\x5c\xb8\xa9\xb1\x0f\x9c\xf9\x77\x17\x65\x66\x44\x1a\x2d\xb3\xb1\x30\xe7\xe1\x98\x2f\x35\xaa\x36\x83\x01\x4b\x84\x5a\x14\x72\x2e\xff\x8d\xe9\x6d\x21\xe1\xb2\xc8\xa5\x5a\x6a\xb6\x10\xf9\x44\xe5\x73\x6e\x9a\x25\x62\x9a\xf3\x84\x17\xfe\xe9\x96\x1d\xdc\x7a\x7f\xfa\xf9\xe7\xe0\xda\x2f\xc0\xe4\x9f\x0e\xd9\x8f\xfb\xe0\xf8\xb0\x56\xe6\xe4\x14\x29\x77\x1e\x1a\xb8\xc6\x51\x7e\x72\x5e\x4e\x56\x62\x5f\x65\x24\x43\xb0\xcb\x28\x6a\x53\x84\xd4\x25\xd2\x0d\x0e\xbc\x4f\x6c\xa2\xd4\x90\xed\xbb\x53\xf2\x2e\x36\x6e\x41\x7f\xe7\xc1\x8a\x5c\xb6\xff\xa2\x54\x2a\x78\xd6\xe9\x4f\x94\x02\xd7\xd1\x7d\x2f\x00\x7e\x85\xa7\x28\xbe\x76\x10\x62\x43\x8e\xb5\x5a\x4b\x8b\x0d\x42\xe2\xe3\x99\xb0\x88\xa5\xd0\x3d\x23\x27\x97\x24\x1e\xd0\x9b\xc8\xc0\x26\x8b\x03\xd6\x10\x71\x5e\x4b\xd8\xfe\x79\x23\xef\xf8\x38\xe3\xba\x0d\x5d\x77\x59\xb8\x05\x9c\x58\x03\xdf\xa2\xb5\xf0\xdc\xcc\x41\xa3\x3f\x3c\x59\x00\x4b\xb6\x99\x3f\xce\x2f\xab\xed\x21\x08\xe0\xd9\xb3\xa3\xd3\x53\x5c\x2a\x33\x0c\xf7\x5a\x5c\xcb\x7d\x69\x75\xd8\x13\xf7\x0a\x97\xaf\x3f\x0c\x2e\x29\x49\x8c\x06\xd9\xf6\x71\x19\xd2\xe3\xa0\xbd\xe1\xec\x43\x8b\xd3\x4a\xd3\xfd\x72\xd3\xfd\xb0\xe9\xfe\x65\x29\xe7\x44\xb0\xe5\xaa\x18\x82\x17\x9f\x68\xfa\x6b\xde\x76\x42\x2c\xfa\x59\x99\xaa\xd1\x3d\x4f\x98\xac\xe1\x22\x4a\x16\xf2\x89\x32\x65\x0c\x59\x6f\xdf\xdd\x13\x95\xe0\x55\x92\xe5\x9d\x74\xd9\x7e\xd9\x15\x12\xd5\x23\xd0\x9b\x2c\xb5\xb9\x6b\x0e\x38\xf7\x4e\x50\x76\xdd\x77\x7d\xe0\xbc\xe8\x5a\xda\xa7\xa3\x7a\xec\xff\xdc\xef\x54\xf6\xe6\x97\x84\x5b\x7f\x83\x11\xfd\xbb\x44\x38\x41\x83\x30\x97\x0e\x06\x80\xff\xca\x35\x25\x26\x39\xc5\xdc\xe7\x1b\x60\xe2\x54\x7b\x33\xae\x5d\x82\x1d\x4a\x9a\x1e\x67\xea\x41\xe8\x7f\xd7\x42\x9f\x6d\xca\xf5\x13\x01\x36\x27\x45\x2f\xce\xfe\x43\x21\x59\x4f\x4f\xaf\x88\x97\x5e\x9d\xfe\xfd\xed\xdb\x93\x77\x67\x96\x0d\x37\xcc\xa4\xdd\xc2\x49\x03\x90\xc1\x00\x4d\x05\xfb\x3f\xf4\x18\x9c\x12\x2e\xee\xe3\xf4\xea\xec\xe4\xea\xd5\xd1\x9b\x97\x67\xbf\xc6\x00\xc3\xc1\x47\xb0\xea\xf3\x05\x95\xf3\x36\x7c\x61\xd6\x86\xc1\x00\xed\x33\x3c\x49\x8c\x5a\x48\x48\x66\x6a\xc2\xfe\xfc\x67\xc2\x7c\xc9\xa4\x85\x2f\x59\x75\xf1\x3d\x84\x8a\x69\xb3\x0e\x7f\xe6\x20\x2c\x61\xc0\xea\xfd\x36\x65\x84\xdb\xa1\x58\x10\x64\xd0\x61\x83\x6f\x59\x17\x24\x80\xa7\xf9\xb4\x26\x47\x1b\xd1\x68\xbb\x9a\xfb\xa7\x46\x35\xdf\x67\x4f\x02\x37\x94\x98\xb5\xc4\xa6\xad\xfa\x9d\xf3\x05\x0f\xd1\x35\x1c\x0b\xa5\x77\xb4\x36\x72\x6f\xfb\x68\x5c\xc0\xe4\x1a\x79\xdc\x26\x93\x8a\x16\xa9\xd0\xba\x67\x70\xd6\xcd\x54\x0f\xb8\x50\x2f\x85\xed\x9c\x56\x39\x8e\x53\x8d\x31\xcb\x7d\x98\x76\xbd\xed\x0f\xc6\xfd\x03\xb3\xb6\x5b\xf2\xa1\x2f\x89\xa0\x2c\xb1\x80\x63\x7d\x0a\xb0\xb7\xdb\xfe\x52\xf7\x68\x28\xbf\x2f\x37\x39\x3d\x7b\x77\xfc\xec\xec\x0a\x57\x31\xde\xf6\x76\xc0\xed\x16\xcd\x29\x4c\xed\xb0\x2d\xb3\x08\x5a\x36\x70\x8b\x38\xcb\x4d\x25\x5b\xd8\x97\xa6\xbc\xa9\x90\x79\xfb\x41\x3c\xe7\xea\xde\x8f\x82\xb0\xec\xb5\xfa\xc6\xfd\xee\x76\x3b\x35\xf8\x2a\xdb\xfd\x0e\x52\xac\x07\x44\xf5\x85\xe7\xe5\x76\xf4\x3c\x51\x79\x4f\xec\xb4\x6c\x5f\xbe\x4e\xdb\x73\x70\x8f\x0f\xf6\xe0\xd0\xcd\xc8\xf1\x6b\x9b\xe0\x88\xfe\x58\xcb\x2d\xb7\x97\x33\xb4\x9a\x6f\xca\xb3\x17\x72\x01\x53\xfd\xff\x55\x2c\xc0\x4c\xe8\x1e\xfb\xdf\x35\xab\xa7\xa2\x38\xbf\xd2\x17\x65\x57\xda\x41\x02\xd8\xb4\xff\x1d\x2d\x61\xbe\x26\x6f\xbc\x57\x73\xb1\xcb\xb9\x0f\xf5\xbf\xfe\xa9\xbf\xdb\x86\xdf\x41\x79\xfd\x7d\x9e\xc0\xd8\x22\x39\xcc\x36\x39\x43\x5c\x78\xf8\x7d\xd4\x78\x6c\xf9\xe2\xe9\xf1\xab\xd3\xab\x93\x37\xde\x9e\x7c\x0a\x4e\x1b\xd5\x3b\xce\x0d\x11\x0b\x78\xc9\x49\xe3\x71\xaf\x49\x97\xa3\x93\x6a\xba\x2b\x3f\x3f\xb3\xd9\x79\xe0\xeb\xb8\x0e\xec\x72\xe7\x6b\xdf\x47\x5f\xe3\x81\xd2\xec\x84\xb0\x39\x9e\xc5\x46\x7b\x6c\xf1\x0c\x48\xe8\x55\x5c\x7d\xc5\x22\x08\x1a\x59\x2f\x12\xdf\x3b\xc9\xd1\xd7\xcc\x4f\xf3\xb5\x13\x26\xad\xcf\x4a\x0c\x63\x89\x6e\xaa\xbc\xf0\x6e\x21\xfe\xad\x12\x29\x14\x05\xe1\x84\xd5\x64\x46\x91\x7e\x8d\xef\x71\xda\x1e\x83\x56\x6b\xfc\xbf\x1f\xc7\xfe\xdf\x60\x4b\x40\x08\xe7\x01\x80\x4b\x76\xe8\x2e\xce\xee\xee\xc1\xfa\xee\x6b\xef\x53\xb7\xeb\xd3\xdf\x18\x16\x15\xe5\xbe\xf9\x72\xbe\xf9\xfb\xe7\x5a\x8a\xd7\x62\x5b\xaa\xab\x3e\x6c\xdb\x34\xd2\x7b\xbf\x70\xbb\xc6\xdb\x69\x33\xcf\xba\x07\x8f\x6a\xf6\x3e\x09\xea\xb4\x2d\xb9\x57\xf2\xf0\xc6\x6c\x88\xaa\x05\x06\xb8\x35\xb1\x7e\x5b\xa4\x6c\xb1\x50\x6c\x78\x2d\x52\x62\x9c\xcf\xd7\x85\x20\x39\x2b\xfb\x4d\x43\x22\x5e\xd8\xfe\x49\xec\x30\xef\xdc\x02\x82\xd7\x79\xbd\x47\x80\x33\xc6\x27\xdb\x0c\xbc\xe1\x15\xde\x38\xe4\x24\x80\xf4\x20\x7e\x4b\x20\x26\x49\xf7\x42\x57\x69\xd4\xd1\x2d\x77\x35\x82\xe9\xfe\x92\xd1\x3d\x12\xee\xe1\x21\xb5\x73\x82\xb9\xed\x6d\x32\xf7\x91\x52\x80\x42\x9c\x44\xf2\x95\xdf\x0a\xdf\x41\x6c\xa8\x19\xb6\xdd\x8b\x06\xd6\xb0\xf4\xae\x78\xd5\xc7\x2b\x98\x4e\xb3\x43\xd7\x5e\x77\x6f\x30\x60\xa0\x6a\x8d\x52\xc1\x9e\x9f\xbc\x66\x63\x95\xa6\x78\xdf\x86\xce\x5b\x93\x94\x4f\x59\x8f\x7d\xb0\x95\x3e\xe0\xa3\xe5\x13\x3e\x16\xac\xc7\x5a\x22\x2b\x72\x29\x74\xab\xcb\x5a\xb0\x4a\x5d\xd6\x42\x1f\x26\xf3\x97\xb5\x57\xd8\xe4\xe5\x4d\xf9\x7a\x9f\x9d\x9e\xbe\x5b\xa6\xe2\x95\xd4\xc5\x90\x3d\xee\x52\xd1\x69\xb1\x4a\xc5\x73\x31\x4e\x39\x2a\x82\xc1\xa7\xf7\xa6\x8b\xa8\x7a\x2a\x45\x56\xbc\x13\xe3\x22\x2c\x7d\x7e\xf2\xba\xa6\x08\x1d\x0b\x4a\x85\x67\xea\x5a\x64\x58\xb6\x8f\x65\xbc\xe0\x67\x39\xcf\xf4\x44\xe4\xc7\x85\x98\x87\xf5\x5f\xc8\x78\xb0\xbf\x9e\xbd\x7e\xf5\x34\x4d\x9f\x39\xd4\x85\x1f\xea\x4b\x5f\xa8\x7c\x4e\x2f\xbc\x86\xc5\xa7\xc2\xd4\x2d\x7d\x78\x2d\x12\xc9\xc3\xfe\x5e\xcb\xb9\x38\x5b\x2d\x04\x28\x66\xb6\xf0\x0d\x9f\x8b\xe4\x8d\x4a\xc4\x6b\xbe\x70\x65\x2a\x11\xe1\xa4\xde\x72\x69\xb0\xf4\xaf\xa5\xd0\x11\x56\xde\xa6\xcb\xa9\xcc\xe2\x5f\x11\xf0\xd3\xf7\x2f\x51\x09\x0d\x5b\x9d\xbe\x7f\xf9\x66\x39\x1f\x89\xbc\x54\xf8\x96\x17\xb3\x53\x31\x2d\x97\x2a\x99\x15\xa5\xb2\xea\x52\x9c\xbe\x7f\x89\x58\x57\x79\x84\xf2\x53\xb5\xcc\xc7\xe2\x2f\xcb\xc9\xa4\xd4\x9d\x21\x92\xd3\x99\x10\x11\xe8\x33\xf1\xb1\x38\xcb\xf9\xf8\xfa\x59\x4c\x26\xae\x3c\x2a\x54\xcb\xb1\x9d\xd7\x17\x3c\xe5\xf6\xfc\xe4\xf5\x31\xed\x91\x66\xf6\x94\xa8\x79\xcf\xee\x24\xfd\x25\x76\xa4\x9b\xdf\x2f\x99\xe2\x45\x06\xa9\xdc\x4d\x0f\xcf\x4e\x5e\xbd\x3a\x7a\x76\x76\x7c\xf2\x06\x4c\xd2\x46\x74\x0d\xa7\x19\x3e\xcd\xe1\xa8\xdc\xf9\xa1\x9c\x97\x5a\xfb\xeb\x48\x5f\x39\x4c\x07\x17\x80\x78\xf8\x30\xf8\xe5\x8d\x13\x07\x74\x67\x0f\xe6\x23\xf2\xfa\x75\xce\x2a\x33\x7e\x23\x98\x99\x57\x18\x2f\xe5\x9e\x4d\x50\x59\xb4\xcb\xad\x5c\x5e\x37\x92\xa8\xf3\xb7\x65\x1b\x1d\x9c\xbb\xf4\x77\x27\x7c\x81\x71\x9d\x27\x56\x0d\xbc\x80\x3d\x76\x1d\x3c\x4a\x69\x52\xfb\x42\xe3\xba\x31\xb9\x11\x05\x7e\x28\x7b\xdd\x3d\x77\x46\x5c\x95\xee\x27\xd5\xe8\xb7\x1a\x7d\xc6\x20\xe4\xda\x29\x28\xae\xe3\xda\xab\xf4\x00\x44\x9c\xba\x7f\x48\x8f\x03\xd8\xc2\xca\x15\xe8\xc5\xe6\xb0\xb6\xdb\x5c\x16\xbe\xf8\x22\x0c\x45\x8b\xf3\xdb\xa8\xd1\x6f\x36\x63\x8d\x77\x0a\xbc\x8b\xee\x8c\xd5\xe8\xb7\x83\x26\xbf\x9c\x12\x5a\x0e\xf6\xba\x7b\xf8\xd1\x28\x66\xdc\xc8\x85\xd6\xb7\x91\x58\x81\x59\xfb\x8b\x3d\xef\x48\xb9\xc7\x9e\xd8\x4f\xc3\x8b\x20\xbf\x3e\xb3\xa9\x98\xe0\x41\x89\xba\x56\xf0\xa1\xbe\x0d\xbd\x29\x5a\xd7\x8a\x3e\x0d\xe9\xf1\x36\x73\x7c\x7f\xfb\xe0\x22\x63\xdf\xb2\x9b\xa5\xf8\xc8\x6e\xbe\xef\xff\xd8\xdf\x87\xdf\xed\x71\x87\x7d\xf7\xf8\xbb\xc7\xec\xe8\x86\x67\xec\x9f\x6a\x09\xa5\x7f\x4e\xe5\x58\x64\x5a\xb0\xd7\xc7\x67\xa6\x60\x70\x91\x39\x1a\x01\x87\xc8\xd7\xf2\xa3\xcc\x58\xfb\x7d\xa4\xe3\x7a\x77\x27\x64\xf7\xe6\xb3\x75\x1c\x0b\x7c\xbc\x28\x6c\xdb\x52\x92\x6d\xf5\xa7\x43\xf6\x9d\xa3\x25\xd3\x72\x6e\xfa\x68\x7f\x62\x23\x31\x51\xb9\x78\x46\xa1\x32\x66\x02\xc7\x99\x2c\xea\x17\x7a\x30\x60\xea\x46\xe4\xb9\x4c\x04\x93\xa6\x16\xcf\x12\x26\x33\x90\x38\x61\xea\x50\x08\x4e\x6d\xc9\x32\x17\xae\x91\xe1\x64\xfb\xfd\x8f\x6c\xc4\xc7\xd7\xb7\x3c\x4f\x34\x1b\xab\xf9\x82\x17\x72\x24\x53\x59\xac\xfa\x5e\xbc\xbf\x02\x08\x87\x30\x42\x6f\x0d\x85\xd2\x03\x3f\xf6\xd2\x97\xd8\x4e\x10\x79\x7c\x58\x89\xdd\x7b\x6c\x1c\x1e\x32\x78\x2f\xfb\x31\xab\xb8\x71\xd8\x06\xd6\xff\x82\x60\x87\x3f\x3d\xa9\x3c\x61\xe7\x16\x59\x97\x36\x39\x50\x58\xb3\xe3\xab\x7a\xb4\x3a\x2d\x02\xc6\x1d\x3a\xe0\xda\x61\x47\x0e\x42\xb4\x87\x06\xdf\x7e\x0b\xa5\xdf\x9a\xc9\x13\x92\x67\x4a\x5d\x77\x09\xf7\xc2\x2c\x42\xa1\x98\x39\x96\x5c\x7e\x01\xed\xeb\x69\x96\x4a\x5d\x20\x96\x0d\xb1\xc1\x95\x82\x45\x98\x5b\xf1\xd8\x4b\xca\xa3\xc6\x8c\xaf\xff\x0d\xfd\xf6\xee\xf9\x1a\x52\x3c\xe2\x00\x5c\x94\xad\x41\xb5\x45\x02\x54\x08\x96\x01\xe1\x68\xca\x0c\x49\xbb\x2c\xaa\x0c\x8b\xe3\x5d\x96\x43\x5c\x47\xf5\xda\x11\x6e\xa3\x4f\x71\xfe\xad\x70\x38\x0b\x9e\x8b\x0c\x5e\xf3\x8b\x4b\x68\x48\x8d\x03\xad\xad\x5d\x17\x17\x7b\x13\x3e\xf7\x52\x65\x22\x2d\xc7\x43\x60\x62\x4f\xdc\xeb\xbb\x66\x0e\x55\xfe\x56\xaa\xce\x1c\x8b\xc3\x5f\x43\xa4\x58\xb4\xe8\xdd\x14\x4a\xa5\xbf\x2a\x75\x6d\x3a\x86\x11\xf4\xaf\xae\xde\xff\xfd\xe8\xea\xf9\xd1\xfb\xb3\x93\x93\x57\xa7\x57\x2f\x5f\x9d\xfc\xe5\xe9\xab\xab\x5f\x4f\x4e\xfe\x76\x75\x85\xc2\x85\x0f\x57\x86\xe6\x28\x6d\xb2\x76\x88\x0c\xf0\x79\x0a\xc0\x07\x79\x21\x89\x32\xa1\x76\xff\x2a\x1e\x42\xf0\x8b\x36\x55\x50\xd2\x17\x73\xc3\xa8\x0c\xd5\x0d\x0d\x81\x82\xe6\x65\xba\xac\xa9\xaa\x32\xaa\x58\xe4\xfc\x46\x50\x02\x52\x5e\x88\x28\x41\x00\x4e\x18\x22\xa9\xdd\x1a\xe2\xb0\xc8\xfd\x9c\x82\xac\x83\x6a\x71\x28\x05\x56\xd6\xcb\x91\xd1\xce\x47\x22\xd0\x47\xe7\x4b\xbc\xb0\x45\xe5\x50\x04\x79\x77\x6a\xa7\x63\xab\xb7\xba\xac\xdc\x92\xe2\x34\xd9\x27\xb6\xc8\xc5\x42\x64\x49\x18\x61\x5d\x33\x88\xa7\xf4\x72\xa1\x7f\x82\x6f\xbc\xc3\x40\xb0\x72\xab\xcb\xe2\x56\x6b\x07\x81\x6e\xf6\xc0\x68\xbe\x65\x2f\x45\xc1\x8a\x99\x60\x13\x99\xeb\xc2\x28\xa6\x73\x78\x50\x89\x2d\xb8\xd6\xf0\xa1\x10\x20\xbc\x7d\xcb\x46\x2b\xa6\xc5\x58\x65\x89\x77\x51\xb0\x83\x36\xdf\xf1\xb8\x5b\xf0\x9c\xcf\xd9\x27\x50\x65\xee\x80\x17\x45\xe5\xf6\x05\xa1\x3b\x36\xc1\x72\xeb\x35\xf9\xed\x5d\xf9\x74\x9c\xc8\x2c\x61\x6d\x03\xa1\xcb\x26\xf1\x1d\x35\xb0\x38\xf2\x4a\x99\x98\x53\xb0\x34\xa7\xe7\x42\x2c\xd8\x58\x2d\x56\x30\x81\xa9\xbc\x11\xd6\x00\x0c\x1e\x9d\x32\x11\x10\xa1\x31\x96\xf9\x78\x99\x62\x98\xf5\x72\x5c\x2c\x73\xd1\x87\xe6\x67\xe0\x0c\xeb\x72\xa3\xf1\xf1\x4c\x68\xc6\xd3\x94\x65\x42\x1b\x06\x8c\xa0\x34\x9e\x88\x85\x39\xe0\x16\x52\x68\x6c\x7b\x0c\xc9\x20\xd1\x83\x56\xd7\xf4\xd0\x05\x77\x5b\x80\x99\xd0\x10\x15\xe3\x70\x4a\xc9\x6c\x62\x76\x89\x60\xa9\x52\x8b\x7e\x05\xa5\xdf\xde\x99\x8e\xab\x58\xfe\x23\x4a\x8b\x7f\xba\x43\xa8\x9b\xd0\x9a\x08\xb1\x78\x66\xfa\x45\x79\x12\xda\x04\x3c\xc0\xba\x6a\x86\x47\xa7\xf5\xde\xa4\xb7\xd2\xe1\x48\xf8\x6d\xa9\x0b\xf7\x0c\xd2\xc4\x8c\x8c\x49\xcd\xe4\xdc\xec\x06\xa3\x05\x80\x70\x68\x81\x9a\xaf\xf6\x29\x3d\xf6\xf9\xb3\x3b\x10\x46\xbf\x21\xff\xb3\x66\xaa\x92\x41\x05\xa7\xeb\x4e\xc6\x41\xd0\xd1\x4c\x16\x5d\x83\x68\x48\xb2\x53\x83\x66\x2b\x48\xcd\x50\x62\xc0\x27\xc3\xc0\x11\xd4\xef\xb3\x71\xc0\xe3\xc6\x7d\xfb\x78\x21\x0c\xd4\x88\xb0\x61\xb2\xd1\x59\xd5\xda\x33\x33\x67\xba\x5a\xac\x82\x11\xa2\x73\xf1\xc2\xa8\x82\x78\x51\xec\xde\x4c\x34\xb2\xfd\x13\x76\x7e\x69\x79\x39\xcc\x66\xb1\xc4\x9d\x07\x4d\xe0\x50\x47\x44\xf3\x02\x37\x23\x55\x1b\x09\x70\xbb\x66\xb7\x82\xdd\xf2\xac\x30\xf4\x92\x8b\x89\x80\x54\x6a\x32\x63\xb9\x18\x2f\x73\x2d\x6f\x84\x5b\x59\xd3\x0e\x20\x61\x6c\x94\x15\xdc\x69\x7e\x43\x33\x39\x92\xfb\x4d\xcf\x43\xe6\x66\x61\x19\x54\x60\x7d\x83\xa1\x5b\xa5\xa7\x5d\x9f\xa8\xc0\xb4\xb7\x3a\x81\x1d\x43\xdb\xea\x09\x96\xc2\xca\x69\x61\x10\xeb\xd0\x73\xb4\x75\xad\x7e\x05\x99\x96\x61\x1c\x15\xbe\x80\x35\xc0\x20\x45\x44\x3c\xb1\xf9\x62\xb6\x1e\xb9\x7f\x7f\x34\x18\x29\xdc\x1f\x05\x2c\xd2\x35\x72\x2f\xa8\xb4\xbd\x96\xe6\x69\x14\x68\x18\x48\xfb\xe1\xc3\x90\xb4\x0f\x03\xd2\xae\x42\x7c\x9b\xab\xb9\xd4\x02\x12\x27\xc5\x20\x6f\x78\x08\xe9\x86\xa7\xfd\x62\x26\xb2\x8a\xc0\x14\x03\xe4\x5a\x8b\xbc\x60\x6d\xc3\x9f\x25\x9e\x04\x73\x3d\x0d\x0f\x77\xf7\xc5\xbb\x92\x65\xe2\x96\x61\x12\x83\xf6\xc5\x1e\x88\xb8\x97\xec\x62\x8f\x3d\x82\xa6\x1d\x27\xed\xf8\x7c\x8b\x3c\x2f\x24\x4f\xf1\x1d\x5e\x9e\x4f\xe3\x71\xd7\xf8\xc7\x79\x2c\x9b\xda\xa1\x04\x35\x18\xb0\xbf\x70\x2d\x58\xc2\x0b\x4e\xdb\x16\xd6\x1c\x0e\xc7\x96\x66\xa8\x39\x76\xd9\x82\x8f\xaf\xf9\x54\x50\x88\xab\x9a\x9b\xed\x41\x99\x45\x81\xff\x5a\xe3\xb0\xd9\x7b\xee\xb6\xc9\x8d\x84\x4a\xda\x39\xbf\x7d\x4d\x00\xf3\x65\x56\x48\x97\x34\x04\xe4\x3f\x2a\x62\x87\xf6\xa3\xdd\xa1\x98\xda\x1c\x7a\x1d\xcf\x64\x9a\xe4\x22\x83\x13\xd2\xb5\xbc\x72\xc5\xce\xff\x9d\x52\x69\xc2\xab\xa1\x31\x1c\xb3\xd7\x71\x17\xd2\xec\xec\x99\x74\x3b\x93\xe3\x19\x1c\xb8\x22\x31\xa7\xec\x22\x57\xd3\x9c\xcf\xe7\xf8\xe6\x17\x76\xe4\x66\x60\x46\x69\xff\xf6\x69\xdd\xf8\xad\x7d\x20\xc0\x7d\xec\x83\x24\xe0\x39\x76\xc3\x20\x5a\x1a\x45\x06\xd7\x95\x26\x40\x56\x11\xf7\xb0\xe3\x57\x59\x9f\xb8\x2f\xed\x0e\x1b\xba\x1f\x10\x98\xf5\xe9\x2e\x4a\xad\xe7\x74\xb8\xa7\xe3\xb1\xd0\x5a\xe5\xa0\x86\x61\xe6\xbb\x05\x07\xf3\x7b\x5d\xc2\x2b\x76\x47\xee\xdf\xd5\xf6\x7d\xdf\xb6\x8f\x52\x78\x53\x9e\xf4\x07\x0f\x4a\x08\x0c\x9a\xda\x31\xd2\x07\xaf\x6a\xf2\x04\x13\xc0\x87\x70\x5d\x19\x06\x66\x22\xf6\x42\x32\x72\xc4\x60\x99\xe1\xdc\x2e\x52\x43\x2f\xb9\x98\xab\x1b\x51\xe9\x28\x2c\x0e\x18\x2d\xe5\x2f\xaf\xe9\xaa\xb9\x87\xa9\x28\x2a\xe0\x5d\x59\x00\xdb\x3a\xe3\x57\x61\x37\x82\x9e\x71\x5d\x01\xed\xca\xaa\xa0\xc9\xca\x15\xf7\xd0\x08\x7c\xb9\x48\x4a\x19\x6a\xa9\xc4\xef\xe4\x08\xf3\x75\x8b\x1b\xed\x05\x5f\xec\xce\x74\xff\x11\x45\x67\x1d\xbc\x94\x1e\xc3\xa4\xef\x11\x40\x2a\xf3\xa9\x37\x63\x90\x56\x29\x68\x06\xea\x6a\x44\x60\x5d\x69\x13\x60\x7c\xeb\xa3\x19\x2c\x7d\x8f\x80\x52\x99\xb3\x54\xd6\xe3\x9c\x8e\xca\xca\xa2\x46\xe5\x6d\x77\xd4\x86\xc7\x70\x3b\x5e\x56\x38\x90\x9b\x89\x92\x5a\xbe\xac\xe4\x10\x8c\x3f\xf8\xae\x6c\x2a\xc1\x9a\x79\x3a\x3c\xd4\x0c\xa7\x52\xd9\x8e\x6b\x0b\x2c\x3c\xb5\x86\xf5\xf2\xe0\x9e\xba\x97\xe8\xd7\x0c\xae\x4c\x50\x6b\x07\x47\x95\x77\x18\xdc\x6b\x22\x92\x9a\xe1\xb9\x4f\xeb\x07\x58\x25\xcf\xb5\x43\x74\xd5\x6b\x06\xd9\x90\xd7\xa6\xcd\xca\xa3\xef\xd6\x1d\x03\xfe\xda\x18\xab\x47\x97\x1a\xa5\x63\x3c\xf8\x66\x36\xc4\x3b\xa5\x8a\x88\x15\x0c\x06\x0c\x1f\x2b\x11\x39\xcb\x95\x2a\xec\x29\xdb\x7e\xbf\x14\x1f\xfb\x78\xfc\x59\xd3\x9b\x3f\xfb\xa9\x45\xfb\xfc\xb2\xcb\x22\xa8\x36\x5d\x7a\x89\x90\xeb\x6e\x49\xca\x47\x90\xf9\xd9\x5e\x70\xf7\x92\x3a\xf1\x40\x53\xd2\xcf\x45\xb2\x1c\x47\x96\x07\xea\xad\xc6\xa9\x6c\xee\xc8\x17\x76\x1f\x70\x55\x52\xec\x71\xf0\x4a\x15\x9d\xed\x86\xf7\xc6\x32\xc0\xd2\x38\x7d\x79\x38\x60\x08\x92\xb0\xe2\x86\xeb\xea\x60\xe3\x5c\x1c\x9b\x8d\xa7\xe3\x40\xd5\x4d\x28\x0e\x8f\x74\x10\xd8\x23\x8b\x9a\x90\xa7\x3f\x81\x83\xe4\x11\x6b\x0d\x5a\x6c\xc8\x5a\x2d\x8b\x0e\xf8\x6b\x23\x1e\x9a\x8e\x95\x6f\xf6\xeb\x29\x0a\xbf\x02\x69\x38\x24\x94\xa8\x64\x2b\xf2\x70\x64\x19\x9d\xf2\x54\x06\x78\xef\xb2\x46\x11\x95\x52\xb2\xce\xa4\xfe\x66\x9f\x56\x23\x88\x8f\x66\x4e\x78\x0d\x35\x76\x2f\xd1\x52\x7c\x9d\x65\x04\x6d\x1b\x85\x2e\xb2\x9b\xfe\x9b\x93\xe7\x47\x57\x47\x6f\xde\xa3\x12\xbe\xc8\x55\xb2\xa4\x04\x12\xae\x6b\x54\x2b\xde\xd9\xb1\x95\xc7\xda\x39\x28\xa9\xbf\x99\xf0\x62\xaa\xd1\x2e\xa8\x59\xcd\xe4\xbc\xa3\x9e\xa1\xa4\xf0\x69\xfc\xf8\x6c\x83\x9d\x7c\xe8\x01\xd7\x5c\x55\x80\x88\x89\x26\x5f\xa2\xd6\xa9\x28\x10\xae\x4e\xe5\x58\xb4\x1f\x77\x59\x6f\xdf\x25\x6b\x25\xeb\xae\x95\xe7\xa0\xe2\x79\x38\x8a\x1e\xdb\xbf\xec\xfa\x1e\xa3\x49\x86\x4c\x86\xcc\x41\x48\xa5\xba\x46\x08\xc0\x0f\xf5\x3c\xb6\x52\x2d\x34\x4d\xe4\xfc\x16\xc6\xf6\xba\x86\x37\x30\xa2\x05\xcf\xba\x60\xec\x74\x2d\x61\x6a\xc2\x02\x45\xed\x23\xa4\xfb\x9b\xbd\x6d\xb6\x4c\x56\x47\xbc\x41\x69\x99\x6d\x6c\xbd\x10\x3e\xdb\x7b\xed\x02\xb8\x3a\x63\x12\x48\x68\xd9\xca\xbc\xc3\xeb\xb7\xa6\x34\x8a\x3e\xdd\x95\xd8\x31\xde\x5b\xa5\xa2\x7f\xcb\xf3\xac\xed\x2f\x1e\x9c\x72\x5c\xe4\x2b\x99\x4d\x59\xa1\x42\x0c\x10\x77\x6b\x81\xe6\x8c\xec\xe9\x62\xaf\xd5\x25\xb5\x4e\x6a\x50\xa9\x43\x60\x99\x2a\x1c\x11\x89\xe4\x62\xcf\x7e\xab\x75\x15\x0b\x68\xcf\x4f\xb3\x5f\x66\x11\x95\xba\x84\xad\x40\x97\xb0\x08\xdb\xb8\xe4\x52\xbf\x73\x83\x0b\x17\x3d\x2a\xff\x1d\x97\x3d\x3a\x65\x60\x16\x56\xaf\xa0\x03\xf0\x2e\xbe\xd5\xb0\xaa\x01\xf2\x26\x34\xfe\x5b\xc2\xf7\x9b\xd8\x0b\x43\x5f\x87\x07\x36\xb2\x07\x1a\x0e\x5d\x0f\x21\x71\x80\xb8\x11\x0c\x8c\x4e\xa2\x76\x04\x24\x6e\x5f\xcf\x5c\x5c\x83\x3a\xe6\x82\x1e\x24\xa4\x69\x35\xd7\x24\x42\x8a\xc6\x13\xed\xaa\x4a\xba\xa1\xdd\x37\xd2\x9a\xcd\xd4\xb0\xa1\x78\x92\x30\x0e\x67\x46\xfd\x7e\x62\x46\xbf\x84\x8d\x93\x2a\x9e\xc8\x6c\xda\x2d\xed\x2b\xf3\xaf\x35\xe7\xd9\x92\xa7\x54\x09\x52\x72\x0a\x91\xb8\x7b\xb5\x78\x9b\x05\x5b\x2d\xde\x42\xd1\x07\x5a\x29\x5f\xaf\xc2\x6d\xfd\xa7\x66\x94\x06\x95\x2a\x0b\x43\x7a\x76\x0d\x0f\x08\xaf\x1b\x2d\xb9\x3f\x45\x43\x1f\xf9\xf1\x21\x6d\x0e\x6b\xf2\xb0\x97\x5e\xa8\xa2\x8c\x50\x91\x09\xc7\x26\x07\x15\x1f\x17\x70\xb3\x3c\x8c\xed\x8b\x4e\x34\x47\x33\xd5\x57\xec\x98\x7d\xfe\x8c\xb3\x6c\x57\x2b\x91\xc1\x34\xb6\x80\x2e\x45\x7f\xc6\xb3\x24\x85\x4c\x57\x51\xaa\xab\x35\x73\x60\xce\x84\x8c\xd6\xc3\x8b\x3d\x82\x71\xb1\xc7\x6a\xe7\x89\x73\x3a\x5b\x2d\x84\xf3\x93\x24\xcd\x71\x58\x42\x3f\x74\xe9\xb4\xa2\xda\xaf\xa4\xd6\x0d\x23\xec\x55\x78\x57\x89\xb7\x54\x84\xc1\x1a\xbb\x76\x30\xca\x4d\x96\x79\xd8\xe7\x0e\x16\xbd\x3c\x55\xbe\xd7\xa5\x54\x11\x00\xf5\xc4\x79\x02\x04\xbd\x58\x1b\xd3\x3a\x21\x86\x2c\xe8\x25\x6a\xe8\xb2\xe8\xe5\x3b\x4b\x35\xc1\x66\x8a\xba\xed\xd3\x67\xa4\xa4\x60\xcb\xcc\xf9\xb5\x40\x04\x4a\x95\xbd\x16\x5a\xf3\xa9\x65\xc3\x60\x8b\x43\xf5\x92\xba\x8c\x41\x5a\xba\xe8\x54\x36\x58\x18\x40\x1d\xad\x49\x5d\x6f\xac\xb1\x3b\xd7\x81\x3f\x0b\x47\xcb\x09\xfa\x94\x03\xe7\x62\x7a\xa6\x96\x69\xc2\x46\x02\x6d\xeb\xb6\x01\x7e\x1c\x2d\x0b\x76\x71\x71\xb1\x17\x31\xbb\x3e\xfc\x02\xd7\x38\xf3\x13\xbf\xd7\x0a\xcc\x7f\x0a\xc4\x65\xd3\xed\xa3\x43\x03\xd4\x5b\x98\x1d\x68\x6c\xf5\x9b\x92\x19\x78\x0e\x75\xca\x80\x81\xdf\x04\x10\x50\x6a\x61\xed\x38\xf5\xa4\xcb\x0b\x47\xa3\x0c\x35\xc2\xd1\x72\x12\xb0\xab\xf7\x4b\x01\x89\xf1\x46\x32\x4b\x18\x64\x12\xd2\x05\x4f\x53\x17\xb3\x49\x1e\x17\xfe\x0d\x0d\x28\x28\x79\xf4\xd4\x2b\x3e\x3b\xf9\xf8\x0c\x06\xec\xe9\xb2\x50\xb6\x7f\xd3\x18\xaf\x0d\x8d\x10\x96\xa8\x4c\xb0\x95\x40\xdf\xa6\x0f\xe8\xa4\xf1\x01\x72\xe0\x7c\x78\xbf\x14\x1f\xfa\x04\xe0\x4c\x31\x9e\xa6\xea\x16\x32\x57\x69\x7f\x61\xcb\x97\x10\x11\x03\x80\xd1\xea\x22\x33\xba\x2d\xe0\xda\x67\x75\x85\xdc\x4a\x63\x95\x88\x80\x12\xc0\x5b\x21\x61\x33\x91\x8b\x3e\x3b\x15\x82\xfd\xd7\xcf\xdf\xef\x3b\x19\xef\xfd\x52\x04\xfc\xaf\xde\xb1\xc4\x54\xc0\x2f\xfd\xf7\x41\x86\x40\x1a\x4e\x3b\xf8\x74\x50\x12\x21\xef\x27\xff\xb4\xdf\x1b\x6a\xbf\xd8\x9b\x2f\x75\x01\xe1\xa0\xe0\x9d\xb5\xd4\x02\xcc\x2b\x1d\xf2\x2d\x43\x9f\x4c\x73\xa4\x73\xe7\x35\x84\x3e\x4a\xfd\x8b\x3d\xbb\xf5\x08\x20\x4d\xcf\x5e\x84\x95\xe6\x67\xfa\x02\x3f\x33\xf2\xaa\xd5\x8c\xbb\xaa\x0b\x95\xae\x26\xd2\xac\x26\x5a\x94\xd9\x28\x57\xb7\x5a\xe4\x35\x7d\x94\x9e\x61\x01\x32\x33\xa0\x71\x70\x30\x99\x91\x80\xf9\x88\x04\x8f\x89\x62\x26\x40\x0c\x51\x0b\x91\xf3\x42\x79\xa0\x81\x9a\xbb\x00\x0f\x1a\x1d\xba\x0c\x61\xc9\x01\x52\xa7\xfb\x1e\x52\xa7\x6f\x74\xee\xb5\x1b\x6d\x03\xaa\xbd\x6b\x93\x29\x20\x38\xf6\x6b\x08\xc6\xb5\xb0\x69\x82\x88\xcc\x2c\xba\xe9\x85\xfe\xf8\x52\xe7\x6a\xac\xe6\x73\x59\x14\x98\x4d\xde\x27\x18\xc2\x8f\xde\xc0\xdd\x74\x89\x15\xd6\x3b\xb5\x9e\x2b\x79\x30\x17\xac\x10\x1a\xb5\xd7\x83\xa2\x47\x26\x5e\x3a\x73\xf5\xfa\xea\x24\x2a\x45\x56\x05\xaf\xbc\xb4\x23\x8f\xba\xa8\x85\xb3\x6f\xbd\x86\x97\x50\xd7\xf7\xa2\x9b\x67\x76\xcb\x8b\xf1\x4c\xe4\xef\x5f\xd3\x10\xde\x2f\x45\x3b\xea\x8e\x5f\x8b\x57\x6a\xcc\x53\x9a\xd1\x33\xf2\x99\xa8\xef\x90\x96\x0c\x98\x23\xae\x0c\xb0\xa0\x44\xea\x05\x38\x22\x17\x0a\xdc\x55\x3d\x91\x90\x23\x9d\x65\x81\x18\x47\x35\x29\x17\xb9\xf6\x87\xe6\x6b\xdf\xfe\xf4\xaa\x34\x76\x85\x5f\xf1\x87\x9f\x42\xd0\xd8\x71\xe5\x91\x5a\x66\xc9\x73\xfb\xa1\x4d\x66\x5c\xbe\x32\xd2\x75\xd9\x58\x69\xdb\xa3\xa7\xa3\xc6\x8d\x16\xb7\xb8\xc8\xac\xb7\x23\xf4\xe8\x86\x13\xf7\xf7\x0c\x8b\xe3\xde\xca\xe9\xbd\x02\x1f\x02\x53\xbb\xb9\xd3\x6e\x64\xf3\xbd\x0b\xf7\x0b\xec\xa3\xb9\x4a\xc2\xbb\x4f\xda\x5b\xb4\x0b\xfd\x8e\xb7\xb7\xa2\x11\x71\x81\x71\xaa\x7c\xcf\x0a\xae\x98\x81\xfd\xb9\x1f\x1e\x03\x3c\xd5\xca\xbb\x6c\xa4\x2b\x67\x07\x40\x07\x23\xbd\x1c\xf5\x02\x8d\x6f\x30\x00\xb2\xa0\x00\x21\xac\x42\x07\xfb\xd4\xbd\x98\xad\x65\x22\x6a\x37\x15\xf0\x7b\x3c\x0e\x48\x73\x45\xf7\x53\x18\x6f\x97\x39\xab\x66\x34\x9b\x4e\x3c\x11\xc9\x53\xf9\x6f\xbc\x35\x46\x22\xbc\x99\x07\x86\x8d\x5c\xe8\x85\xca\xb4\x1c\xa5\x02\xf4\x4f\x53\x2d\x17\x86\x4b\xdc\x48\xcc\x8e\x3f\x18\xb0\x36\xcd\xd9\xce\xb3\xbc\xf5\x39\x7a\x08\x2f\x8d\x48\x14\x3c\xad\x89\x92\x85\x16\x05\xb0\xec\xf7\xaf\xc3\xc1\x07\x83\x04\x1f\x6a\xcb\x5a\xc1\xf0\x81\x7f\xd6\x48\xc6\xf8\x25\x10\x80\xb1\xa0\x8d\x12\x86\x0f\x40\xc3\x05\x5f\x6a\xf1\x1c\x5d\xee\x42\x36\x9f\xd8\xa2\x07\xa5\xd7\xb5\x2a\x15\x86\x70\x3e\xe2\xa5\xb6\x2b\x75\xf2\x4b\x00\xbd\xec\xe1\xf7\xd6\x8f\xaa\x64\xa6\xab\xbf\x4a\x07\xe1\xe8\x13\x22\x66\xe7\x7b\xf4\x6f\xf6\x91\x7c\x37\x5c\xa2\x23\x9d\xdc\xcc\xfb\x57\x09\x2f\x78\xff\x9b\x6f\xe8\x74\xd9\x08\x56\x97\xc0\xde\x7c\xb1\x1d\xa6\x0d\x87\x97\x39\xc2\x31\x52\xbe\xe2\xfd\xd9\x31\xdc\x53\x7c\x5c\xa4\x72\x6c\x36\x22\x7e\x22\xea\xc5\x41\x05\x07\x3a\x4e\x00\x48\x2c\xb0\x80\x55\x19\x13\x95\xb4\xaf\x90\xb7\x5c\x39\xe6\x72\x55\x66\x4b\x75\x32\x2b\xd1\xea\x78\x26\xc6\xd7\xa4\x0f\xf6\x74\xb1\x4a\x05\xc1\x8d\x59\xfa\x32\x93\x93\x15\x9e\x1b\x10\x6b\xb5\xa6\xd3\x20\x58\x96\x42\x7a\x0c\x67\x77\x81\x3b\xd6\x34\x07\xcd\xe8\x23\xfd\x0a\xbe\x7b\xa9\xd9\x7c\xf7\xce\xdf\x76\x54\x73\x7f\xdd\xf8\x89\xde\xef\x8e\x38\xec\xd0\xf5\xe0\xf3\x23\x8a\xac\xc8\x57\x9e\x5d\x5a\xb1\xe0\xdc\x34\x0c\x92\x2c\x42\xb5\xaf\x64\xb3\x15\x25\x47\xa6\x65\x06\xe9\x58\xfd\xf0\x71\xe8\x4e\xb5\xea\xac\x33\xb7\xba\x63\x5f\x16\x33\x3c\x8f\xea\xd2\x7f\xc1\xf0\xab\x9c\x06\x17\x15\x62\xb6\x0a\x95\xb3\x36\x99\x1d\x82\x31\x53\x49\xdb\x1e\x8c\x35\x3a\x69\xad\x54\x82\xd5\xc8\xaa\xda\x81\x53\x6c\x86\xaa\x89\x75\x25\x5d\xe4\xe2\x46\x64\x05\x46\x98\x9a\xde\x65\x76\xc3\x53\x99\x90\x7e\x32\x61\x1e\x1a\xd3\xab\x6c\x3c\xcb\x55\xa6\x96\x3a\x5d\x81\x0c\xac\xd9\x32\x73\x15\xa8\xb3\x2a\x23\xd5\xcb\x51\xc0\x45\xf5\x72\x14\x78\x4f\xd3\xdd\x04\xb1\x69\x3f\x15\xb3\xb6\x64\xf3\xd9\x6e\x85\xd9\xc3\x87\x58\xdf\x92\x67\xe0\xcd\xaf\x65\x2a\x32\xd8\x35\x81\x13\x62\x8d\xb1\xd1\xd1\x42\x13\x0d\xa0\x1e\xcb\x4e\x01\x1e\x81\x07\xfd\x6f\x24\x84\x75\xc4\x49\xfa\x91\xa1\xb1\xf5\x77\x2d\xc8\x61\x1a\x32\x37\x5a\xb4\xf0\x54\x16\xe4\xe2\x22\xd8\xcd\x52\xf4\x2c\xcf\x27\xdb\xe3\x06\x96\x53\x27\x7d\xb9\xb2\x32\x07\xb8\x27\xb3\xb1\xf0\x76\x63\x37\x5f\xc6\x64\x6c\x5f\x7c\xfc\x65\x2c\x84\x54\x94\xff\x04\x03\xa1\xa1\xef\xc2\x3e\x60\xf3\xfa\x40\xc5\x06\xed\xc9\x0e\xe0\xbf\x75\x3f\x9b\x1d\x4d\x9e\xf3\xcd\x1b\xba\x8f\xda\xbc\xd9\xbf\xbe\xd5\x66\x3e\x40\xcd\x5c\x04\x43\x1d\x33\x08\xa3\x2d\xbf\xea\x6d\x9d\x5d\x36\x58\x46\xb3\x11\xc9\x22\x41\xcb\x17\x70\x51\xb3\x8a\xfe\x12\x20\x5e\x7e\x51\x36\xc0\x5f\x94\x5f\xce\x45\xa6\xef\x53\x5f\x5d\x50\xc8\x0e\x19\x27\xfa\x46\x11\xc1\x3a\x73\xbe\x08\xb0\xe5\x4f\x01\xe7\x42\x5e\x3e\x05\xd8\x5d\x87\xf0\x3d\xc4\x6e\xce\x1f\x5f\x86\x67\x44\x20\x91\x19\x1d\x94\x7a\x0c\xfa\xc8\x85\x56\xe9\x8d\xe8\xb2\x5c\x44\xf9\x3f\xe8\x99\xdd\x62\x26\xb2\xb8\x76\x78\xab\xec\xe9\x95\xf9\x4b\xe6\x66\xaa\xdd\x96\x94\xf8\xa4\x10\x79\x48\x49\x5b\x53\x13\xb4\xdc\x40\x4c\xb0\x54\x55\x82\xba\x3f\x51\x6d\x41\x58\x30\xae\x8d\x74\xb5\x86\xb6\x58\x78\xc1\xe4\xfe\xa0\xc5\x83\x65\xb1\x44\x18\x9a\xd4\xe3\xe0\xe4\xdf\x6f\xc1\xa0\x9f\x7b\x2d\x18\x4e\xb3\x6e\xc1\xba\x88\xbd\xff\xec\xba\xe1\x1f\xbf\xc3\xba\x41\xaa\x0f\x9a\x60\x49\x92\x6b\x3a\xef\x5d\xf7\xe1\x81\xef\x0b\xc1\xc3\x3e\x56\x2d\xdc\x4b\x52\x99\xc8\xe5\xf8\xd4\xc7\xb0\x65\xdd\xaa\xa0\x18\x5a\x3d\x36\x0c\xa0\xea\xea\x58\xfe\x54\x33\x18\x30\x89\x2c\x47\xda\x87\x3f\x4e\xca\x11\x0a\xec\x09\xb3\x11\xc7\x43\xf3\xf5\x8e\x99\xff\x1c\xac\x9b\x8a\x81\xd8\x6d\x3a\x2d\x37\x4f\xe9\xb6\x2c\x40\x61\x41\x1b\x6d\x25\x5d\x36\x1e\x55\xad\x48\x4d\x12\xd4\x17\x28\xa8\x36\xc0\x93\xfc\x5b\x23\xa4\x38\xd3\x33\x0d\x56\x65\xe9\x8a\xf1\xf1\x58\x2c\x0a\xcd\xb8\x1b\x79\xa8\xa2\x96\x94\x70\x67\x88\xec\x7f\x03\x7f\x96\x72\xea\xf8\xf7\xc6\x6c\xca\x66\xbf\x05\xe9\x97\x75\x9d\x85\x3c\xc2\x21\x4e\x9a\xf0\x1a\xaa\xd7\xb1\x0b\x5b\x50\xde\x8e\xc3\x15\x9b\xf0\xba\x8d\x5a\x65\x39\x59\xd9\xde\x00\x76\x39\xb4\xb5\x05\x99\x8f\xeb\xc6\x8b\xb6\xa6\x6a\x3c\x48\xe9\x4b\xd5\xf5\xae\x4c\x1e\x3b\xdd\x35\x05\x2f\x33\x19\xc0\xb8\xf4\x78\x77\xd6\x32\x6b\x83\x85\x0c\x7c\x5e\x2e\x0f\xbe\xc2\x95\x4c\x1c\x65\x06\x1e\x39\x70\x45\x83\xb3\x83\xee\xec\x0d\x07\x77\xcf\x52\xe5\x8c\x67\x14\x9f\x56\xb9\x2e\x29\x5d\x2d\x76\x59\x6b\xcc\xb3\xd0\x5d\x09\x4d\x7c\x81\x73\xed\x68\xc5\x96\xda\xc0\x8d\x51\x6b\x1f\xa0\xb9\x0b\x57\xdd\xd9\x19\x43\xc7\xb5\x8a\x37\x61\x9d\xc9\xd2\x07\xa6\x74\x19\xb9\xf9\x44\x10\xad\xbf\x51\xa7\xeb\x2f\x64\x72\xa1\x45\x7e\x23\x82\x30\x60\xf0\xdd\xd3\xa2\x20\x63\x50\xa1\xac\xaf\x0d\xed\x88\x7e\xbf\xdf\x60\x75\xf4\xfd\x37\x53\x9d\xf7\x08\xab\xd2\x5d\xe5\x5b\xe8\x3e\xb5\x9e\x09\xfd\x5f\x49\x50\xb5\xcb\xee\x91\x80\x90\x0f\xb6\xe5\x07\xde\xbf\xcc\xb2\xa0\xa9\x28\xde\x80\x7f\x94\x7f\x55\xdb\xb3\xb9\x46\xc7\xcf\xf7\x4b\xd1\xc7\x28\x9a\x76\x00\xae\x5b\xef\x88\x16\x98\x62\x42\x92\x70\x76\xd9\x7a\x22\x98\x71\x5d\x5d\x7d\x5f\x18\x2e\xfb\xff\xed\x8b\x1b\x9d\x4a\x76\x8d\x43\x1f\x41\xec\xa2\x11\x53\xaa\xf8\x7b\xc5\x1d\xdb\x17\xb6\x33\x71\x7b\x12\x31\xe3\x12\x31\x39\x07\xba\x93\xd0\x16\x5a\x5a\xa8\x2e\xd8\xbf\x9b\x97\x2b\x20\xbc\x70\x18\x61\xb1\x0f\xa4\xf0\x37\x68\x74\x8d\x5a\xbe\x59\x0d\x08\x3a\xae\x67\xdf\x38\x99\x64\xd1\x9d\x61\x54\x29\x02\xb3\x21\xb4\xa2\x34\x8d\xba\xc8\x8a\x6f\xf6\x29\xb6\x22\x70\xf6\x8f\xa5\x2d\x14\xeb\x50\xe4\xaa\x3e\x9d\x63\xca\xfb\x90\x11\xf1\x64\x02\x28\xf8\x63\xe0\x69\x52\x63\x92\xa3\x34\x03\x56\x26\x7e\x02\x80\xfb\xcb\x4c\xcf\xe4\xa4\x30\x00\xec\x97\x21\x7e\x81\xd0\xe4\x20\x98\x64\x5d\x14\x29\xe4\x87\x34\x87\x7f\x69\x4c\x81\x1b\xbc\x64\x7f\x32\x3b\xdd\xab\x03\x50\x57\x2f\x80\x0b\x48\xf7\x5c\x42\xc9\xaf\x2e\x90\x0b\x2c\xd9\x30\x7b\x89\x38\x53\x56\x7d\xa6\xc4\x17\x9b\x2f\xc9\xa9\xe2\x36\x97\xe0\x54\x75\xeb\x5b\x70\x0b\x7a\xa7\x4b\xed\xf0\xde\x92\x92\x4e\x38\xf1\xc9\x5e\x54\xfa\x2b\xc5\x9a\xfb\x42\x42\x45\x70\x61\x18\x8f\x83\x02\x22\xec\x1e\x0b\x4e\xd8\x9b\x79\xe5\x24\x8d\x81\xcd\xf0\xaa\xb1\x69\x19\xde\xbf\x66\x35\x0d\xfc\x3e\x54\x69\xf2\x7e\xee\xa6\x75\x75\x33\x2f\x5d\xaa\xe3\x09\xbf\x58\x8e\x52\x39\xb6\xc7\xbb\xc7\xa3\x0f\x92\xf3\xd1\xf8\x38\xee\xff\x3f\x7b\xff\xc2\xdd\xc6\x8d\x2c\x88\xe3\x5f\x05\xf2\x64\xdc\xa4\xc5\x87\x64\x27\xb9\x09\x15\x8d\xa3\xc8\x72\xa2\x19\x5b\xf2\x4a\xf2\x64\xee\x4a\xba\x76\x93\x0d\x8a\x6d\x35\xbb\x79\xbb\x9b\x7a\xc4\xd2\xff\xec\x87\xd8\x4f\xb8\x9f\xe4\x7f\x50\x55\x00\x0a\xe8\x6e\x92\xf2\x23\x77\xf7\x9e\x5f\xe6\x9c\xb1\xd8\x78\x15\x80\x42\xa1\x50\xcf\x24\x1b\x85\x89\x51\xae\xea\x80\x0a\x66\xda\x0f\x52\xf2\x23\xa4\x95\x2d\xae\xdd\x7a\xae\xa2\x47\x55\xa8\x81\xcd\x31\xb8\x73\x5b\x71\xe9\x80\x3a\xcc\xdc\xf6\xaf\xdf\xc7\x48\x13\xba\xbf\x32\x13\x89\xbc\x92\x79\x78\x21\x21\x68\x45\x12\xfe\x71\xdb\x55\x13\x54\xe4\x67\x2a\x47\x93\x30\x8d\x8b\xa9\x69\x1b\xc5\xb9\x1c\x95\x22\x4e\x21\x97\x89\x65\x64\x0a\x29\xae\xe3\x24\x11\x89\x0c\xa1\xcf\x51\x92\x15\x73\xb5\xd4\xc8\x6e\xc1\x9d\xa1\xf6\xa6\xc7\xa0\x50\x1f\xb5\xeb\x38\x44\x2f\x70\x0f\x3a\x58\xdd\xe0\x43\x48\x87\x90\xd7\xdd\x41\xb4\x23\x33\x86\x4c\xaf\xe2\x3c\x4b\x55\x0d\xea\x5e\xcf\x4e\x7b\xdc\xd2\x28\x48\xd9\x74\xa8\x19\xd1\x18\x51\xcd\xc1\x06\x3f\xb6\x1a\xc4\x0c\xad\x7d\x5c\x19\xa4\x43\xcb\x48\xb2\x40\x15\x35\xa1\xd7\x74\x40\x2c\x07\xad\xce\x6a\x75\x3d\xb4\x5f\xa1\xe2\x52\x8c\xc5\x12\x18\x82\x18\xbf\x6d\x3c\xcb\x65\x2e\x25\x35\x28\xe6\x33\xb5\x50\x85\xb8\x0e\xf3\x34\x4e\x2f\x0a\x0c\xcb\xa1\x96\x2c\x24\x2d\xc5\xbc\x90\x98\xd5\x2d\x8c\x22\xa9\x73\x87\x83\x8d\xda\x78\x9e\x5e\xde\xea\x30\x44\x10\x21\xac\x30\x44\x03\xf5\x21\xdb\x5c\x85\x8d\xdf\x00\xe6\xca\x57\x7e\xc7\x99\xc5\x61\x86\x32\x5a\xc1\x1d\x96\xe1\xc0\x2e\x30\xbd\xea\x06\xd6\x54\x49\x98\xa5\xd4\x1b\x3b\x30\x7f\x31\x6e\xac\x6e\x7c\x03\x1e\x4d\x51\xa6\x10\x86\x84\x19\x79\xc0\x46\x28\x88\x90\x36\xc1\x25\x47\x44\x51\xd5\x61\x4a\x3d\xd5\x12\xf3\x46\xbc\xce\x22\xa2\x82\x15\x2b\x3a\xc0\x72\xe7\x9d\x68\x29\x94\x39\x43\xa4\xbf\x51\x87\xeb\x02\xa2\x74\x69\x2b\x0f\xbc\x82\x23\x41\xaf\xf9\x82\xb5\x2a\x33\x8c\x49\xab\x05\x08\xb9\xec\xca\xab\x30\x99\xa3\xc4\x5f\x4d\xc2\x31\x83\xef\x99\x1b\x8f\xe8\xca\x42\x56\x1a\x6e\x6f\x38\x9f\xfe\xcb\x5a\x51\x2d\x2b\x99\xf3\x94\x1b\x6a\xc5\x53\x79\x53\x9e\xc4\xa3\xcb\x7a\x81\x03\x76\xfa\x4d\x24\x8b\x32\xcf\x6e\x5b\x4c\xda\x5f\x09\x7d\xc1\xaf\x18\x43\xe5\xd5\x4d\x72\xcc\x1f\x78\xda\x2d\xd2\xa5\xfb\x71\x71\x84\xfe\x60\x6b\x8c\x5f\x37\xc4\x33\x65\x4e\x8e\xde\x4d\xc5\x5d\x1d\xcd\xf3\xe3\xcc\x73\xe8\x8a\xb9\xff\xe1\x34\x9c\xe9\xbd\xae\xf8\x21\x3a\xfb\xde\x7c\x37\x9f\x9a\x16\xe7\x8a\x57\xfa\x72\xaa\xa9\x68\xae\x38\x1b\x70\x13\x31\xf0\x82\x66\x8a\xbb\x4f\x9e\x3d\x32\x46\x39\xcc\x83\x52\x1b\x06\xfb\x46\xc1\xfd\xa0\xdd\xf6\x75\x5a\xab\xcd\x8c\x05\x3a\xe0\x7e\x30\xf8\xd0\xa6\x93\x4d\xd9\xa5\x61\xf3\x1e\x3f\x16\x6b\xfc\xac\x2c\x7d\xde\x79\xb8\x51\xfb\xb6\xb3\x1e\xab\x0a\xcc\x85\x4e\x65\x2b\x1f\x95\x4f\x15\x44\x5b\x94\x01\x58\xe2\x94\x4f\x6f\x75\x27\x19\xbb\xdd\x78\x46\xc7\xb1\x4c\x22\x6b\xd1\xcd\x46\xd0\xb6\xdc\xe2\x3a\x2c\x74\xd4\xc6\x48\xa6\x62\x78\x2b\x42\xbd\xe1\xc6\xb6\xb5\x50\x2d\xd4\xf6\x89\xb0\x5c\xc9\x3e\xdc\xd1\x03\x2c\x16\x85\x2b\x3a\x51\x80\x2c\x86\x3d\xaf\x2d\xa0\xfa\xef\x1e\x0b\x52\xc6\xbd\x11\xf5\x39\xc6\xeb\xd2\xb8\x0b\x8f\xb2\xb4\x94\x37\x25\x24\xff\x25\x06\x6c\x17\x3f\x69\xea\xc1\xfc\x8e\xf9\xd9\xa6\xf6\x9e\x6f\x7c\x6d\xd4\x37\xce\x3a\x39\xa4\x24\x3a\x41\x9d\x37\x3f\x59\x97\xf2\xd6\x78\x2d\x93\x58\x47\xf7\xed\x03\x04\xcd\x79\x90\x38\x98\x9b\x77\xf7\xbb\x70\x36\x06\x84\xf3\x61\x24\x6d\x3c\x16\xa3\xa3\x2c\xfa\x47\x0f\x1a\xa0\x85\x88\x58\xda\x8f\x46\xb7\xd3\x1f\xee\xee\xe8\x8b\x37\x35\x02\xc7\xb1\xad\xa4\x36\xab\xcc\x06\x59\x55\x36\x1b\x2d\x8d\xff\xcc\x15\xa7\x7e\x1b\xd6\x5b\x0f\xb2\x1c\x3e\xf4\xd1\x62\x51\xc1\xd4\x6f\x17\xba\xda\x47\x91\x4f\x94\x1c\xff\x5b\xea\x84\x1e\x39\xa2\x26\xec\x9e\xc2\x64\x84\x2e\xfe\x43\x5a\xcb\xdf\x0e\xc9\x01\x3a\xe6\x0d\x02\x79\x95\x89\x8c\x3e\x51\xa4\xa5\x9c\xc8\x5c\xa2\x07\x03\xc7\x7b\xe0\xfc\x14\x07\x09\x78\x90\xa5\xf0\x9e\x73\x02\x67\xf9\x87\x47\x34\x9d\x1e\x7b\xdd\xa6\x19\x8f\x1b\xc0\xae\x57\x45\xff\x82\xad\xea\x89\xd5\x9c\x1e\x4d\x67\xe0\xf4\xf0\x9c\x08\xaf\xe1\x8b\x38\x7f\xbd\xdc\xb2\xce\xe4\xb4\x2d\x3e\xc9\x48\xce\xb7\x53\x51\x1d\x79\xd6\x70\xbe\x3d\x1c\x54\x71\xa3\xa1\xba\x27\x4f\x95\x93\x21\x0c\xbf\x34\x74\xf2\x60\xc8\xcd\xa5\x25\x24\x60\x5d\xeb\x28\x6c\xab\x68\xce\x8c\x6a\x1e\x78\x01\xc1\xad\xea\x4a\x2a\xd0\x56\xa6\xe1\xbe\x69\x32\x76\xc1\x8d\xac\x9a\xbc\xb4\xcc\x5c\xf1\x6a\xe8\xe8\x97\x43\x93\x59\x0c\xfe\xe7\x3a\x55\xba\x57\xc6\x59\xca\xeb\x78\xb8\xd1\xaa\x5a\x8e\xe3\xeb\xc0\xbc\x0f\xa6\x71\x59\x8f\x5e\x64\xab\xf9\xff\x21\xd7\x57\x41\x2e\xcf\x96\xf3\x93\xd0\xab\xce\x1c\xef\x2b\x22\x18\x47\x8b\x26\xaf\x02\x47\x3c\x68\x9f\x06\x15\x2a\xac\x3d\x4a\xb5\xa4\xfc\x22\x2b\x4b\x99\x8a\x24\xfc\x23\x4e\xb4\xc5\xbb\x8e\xd8\x58\x4e\xe4\x2d\x4a\x4b\x86\x92\xde\x80\x10\xdf\xed\x6a\x4a\x8a\xa7\xb3\xb4\x5e\x32\x11\xcb\xa2\x05\x2b\x65\xc4\x11\xc6\x0f\xd5\x15\x4f\x30\xf4\xb7\x4b\xf0\x7c\x91\xd4\x42\xc7\x82\xe2\x9e\xcf\x0d\x62\x0e\x5f\xda\x55\xb9\x2e\xda\xa6\x17\xfd\x6c\xd7\x46\xe8\xcb\x65\x28\x1e\x8b\xcf\xc4\x93\x9a\x85\x33\x7d\x9f\xd5\x44\x8e\x84\xd5\xa9\x73\xdc\xe4\x00\x57\x2f\x38\x1e\x0f\x71\x91\x4c\x8f\x3d\x6f\x1c\x1e\x85\x56\xef\x4d\x9e\xdd\xdc\xfa\x19\x8c\x20\x2c\xfb\x9b\xac\xe0\xa7\x8e\x3f\x50\x5d\x2f\x5e\x67\x37\xea\xfc\x78\x3d\xcf\x59\xf5\xa0\xba\x8c\x67\xc4\x00\xe8\xe8\x02\x24\x22\x20\x77\xc6\x29\xfa\x0e\x4d\xd4\x4f\x1f\x2d\xb4\xb6\xc9\x3e\x9e\x34\xbc\x6d\x8c\x5f\xc9\x96\xa8\xe2\x20\x8c\x12\x95\x9b\x32\x0f\x47\xae\x88\x14\x4e\x24\xa7\x5d\x50\x48\xfc\x1b\x1b\xce\x8c\xb5\xe5\x74\xb9\x03\x3e\xff\x10\xfe\xbf\xcc\x30\x56\x2f\xed\xdc\x4c\xad\x70\x8f\x55\x7d\x01\xe7\x43\x84\x85\x1e\x59\x27\xd0\xd0\xa7\x8d\xd5\xbd\x96\x22\xca\x60\x45\x74\xc0\x54\x12\xa0\x48\x67\x0c\xed\x3c\x58\xc6\x53\x69\x86\xaa\x17\x14\xf2\x7d\xef\xd8\x49\x76\x38\xf1\x5b\x26\x2f\xa4\x3e\xc8\x82\x95\x09\x0d\xab\x62\xc3\xaa\x18\xa6\xed\xbe\x5c\x97\x21\x2d\xbe\xa1\x0d\xc8\x35\x6a\xbb\x15\x3b\xaa\x4a\xe8\xdd\xf7\x8e\x58\xf8\x2e\xb0\x8c\xa4\x36\xe6\xad\xbf\x44\xd4\x55\xd6\x6a\x28\xda\x16\xa7\xa4\x8b\x45\xa3\x4a\x54\x1c\x19\xd9\x31\xca\xc3\x35\x38\xbf\xd1\x5b\xa6\xe5\x1b\x4a\x13\x60\x8e\x9b\x18\xc0\x68\x69\x0e\x33\x76\xae\x71\x0a\x77\x5f\x43\x9f\x38\x6d\x87\x31\xe3\x93\x76\x0b\x56\x9a\x32\x02\xd2\x38\x61\x32\x59\x15\xdb\xb5\x53\x37\x68\x6b\x19\x75\x5c\x0d\xf3\x0e\xb1\x12\x28\x64\xb4\xb0\x98\x1e\x27\x8c\xbc\xe3\xad\x84\xa5\x5a\x90\x6e\xef\x5d\xb8\x0d\xf8\x3a\x1b\x9e\x2f\xcb\xca\x5f\x75\x6b\x57\x0c\xcf\xab\x1c\x6b\x01\xb1\xb9\x1d\xf4\x7d\x23\x3c\xeb\x74\x12\x30\x69\x93\xd8\x5c\x16\x5c\x26\x83\x2b\xa1\x2d\x74\xeb\x0c\x2d\x2b\xe2\x3c\x37\x16\xbe\xc7\xab\xe6\xb2\xe8\x8d\x3c\xeb\x2b\x99\xe7\x0e\x33\x54\xed\x87\xc7\x6d\x07\x06\x29\x00\xb3\x48\xce\xd0\x60\x5c\x5e\x99\xe7\x96\x04\x10\x80\x4e\xc4\x2b\x0e\x88\x7f\x4b\xd6\xe3\xad\x0e\xaa\xe8\xe0\x6d\x1e\x5e\xff\xea\x3c\x94\x99\xfe\xb7\x4e\x4b\xe5\xb1\x7c\x5f\xd6\xdc\xde\xca\x34\x89\xc2\x5f\xca\xdb\xd5\xdd\x75\x16\xc0\xeb\x58\x04\xf2\x72\x37\x03\x82\x5d\x53\xbd\x2a\x46\x1e\xe7\x50\x8a\x7e\x9f\xae\x40\x86\x8f\xc2\x3b\x01\xb6\x92\xa3\xf3\x11\xc2\xe1\x73\xfa\x7d\x7c\xac\x3b\x1d\xb9\x1a\x4a\x5d\xc5\xe9\xc6\x78\xb2\xba\x5b\xed\x2b\x2e\xdc\xe9\x19\xbd\xcc\x42\xbb\x41\x34\x4c\x70\x54\x03\x8e\x0d\xf2\x67\xee\x3d\x59\xa2\x10\x2c\xd6\xe4\xa1\x23\xce\x1e\xd1\x95\x0d\xf4\x5f\x62\x8a\x19\xe6\xb4\x27\xb2\x79\x09\x9e\xae\xe6\xed\x40\x74\xad\x60\x56\x6c\x78\x08\x3a\xe2\x23\xc4\x21\x37\x49\x36\x6f\xd3\x51\x25\xfd\x81\x13\x03\xd1\x32\xa2\x64\xc6\xe8\x08\x42\x16\x46\x3c\xa4\xea\x6e\x54\x71\xf8\x68\x94\x83\xe4\xb3\xea\x0f\xec\x3f\x32\x97\x38\x3c\x83\x95\x03\xc5\x21\x27\xe6\x90\x42\x44\xf4\x1c\x56\xd1\x3e\x30\xdd\xe7\xa7\x7d\x9b\xb2\x77\x60\xc9\x38\x35\xf3\xf9\xf3\x2d\x8d\xc8\xac\x09\x7b\x67\x66\x4d\x1d\xd1\x3a\x7b\x84\xf1\x4f\x0a\x6d\x61\x14\x52\x96\x09\x98\xfb\x70\x5e\x8a\x71\x36\x4f\x23\x7a\x13\xb2\x8e\x4c\xcc\x91\x76\x9d\x15\xd2\x62\xaf\x22\xb3\x96\x26\x83\x4c\xa3\x5a\x4a\xb4\xde\xfd\xd3\x49\xcf\x45\xb1\x38\xd4\x57\x98\x8b\x13\x6c\xe3\x0b\x10\x40\x4b\xfb\x03\x22\x84\x61\x92\xcb\x30\xba\xd5\x10\xc9\xa8\xe7\x85\xda\xb0\x61\x44\x28\x6e\x05\x28\xcf\xb3\x74\x24\x7b\x26\xd0\xd5\x62\x6a\x09\x93\x81\x39\x41\x35\x9b\x88\xaa\x45\x01\x43\x1c\x59\xe5\x11\x20\x3d\xe5\x2a\x88\x24\xf9\x7f\x5f\xe7\x31\x3c\x7d\xe3\x14\xc0\xfb\x50\x80\xb6\x49\x11\x2a\x88\xe8\x35\x31\xde\xb6\x3c\x63\x05\xa6\x1f\xbc\x17\x9c\x57\xed\x52\x3c\x87\xc0\x7d\xb6\xd8\x46\x88\xf4\x77\x94\x53\x04\x7a\x2d\xc4\x5f\x88\x55\x0f\x0a\x4c\x5a\x32\x0a\x53\xb4\x5c\xb3\xb4\x1e\xc0\x44\xe3\x6a\x22\x22\xea\x19\xaf\x49\xab\x82\x16\x06\xe8\x88\xdb\x6c\x0e\xed\xa3\x0c\x54\xe3\x25\xd8\x44\x60\x34\x7a\xbf\x55\x9c\x8a\xb8\xec\xd5\x80\xa7\x13\x6d\x80\x22\x2a\x9c\x69\x55\x56\x9a\xe5\x53\x90\xf1\x5a\xed\x63\x6d\xb8\x54\x9c\x15\x63\x1d\x91\x65\xa1\x17\xe6\x43\x65\x35\x71\xf1\xcf\x30\x89\xa3\xd7\xe1\xac\x45\x1d\x57\x1c\x25\x11\xfb\x34\xce\x69\x88\x07\xea\xaf\x99\xa4\x95\x91\x10\xde\x90\x24\x1d\x32\x2e\x27\xd2\x9a\x03\x92\x69\xe0\xa1\xcd\x30\x4b\xb8\x65\x66\xcc\x46\xaf\x79\xdf\xe6\x72\xec\x30\xab\x18\x13\x30\x97\xe3\x9e\xab\xaf\xb8\xa2\x7c\x90\xe3\xde\x55\x98\x98\xe7\x63\x4e\x61\xa9\xf8\xdd\x0e\x90\x6b\x32\xee\x09\xf6\x9c\xf0\x0d\xdf\xf8\xc6\x50\xc2\x7d\xde\x7b\xf5\x78\xf8\x6c\x7d\xea\x7d\x89\x82\xed\xc3\xc4\xba\x35\x91\xe0\x7e\xb9\xb5\x7b\xcf\xfa\xed\x88\x40\xaf\x7a\xe0\x08\x55\x5c\x11\xdd\x9a\x13\x68\x5e\xff\xd7\x28\xf6\x12\x66\xaa\xae\xf2\xcc\x9b\xad\x60\x73\xf5\x2a\xfa\xd3\xbd\xf7\x58\x4e\x1b\x95\x6d\x41\x0e\xaf\x2b\xf5\x58\xb0\x19\xcf\xe8\x96\xd4\xe2\x0e\x2e\x7a\xc2\xbb\xf2\x2a\x4c\x28\x04\x9e\x16\xa9\xf4\xfb\x62\x1a\xe6\x97\xc8\x08\x10\x47\xa8\x8e\xa4\x76\xab\x75\xf1\xa0\x07\xd5\x98\x19\x8a\x31\xdc\xb5\x6c\xb2\xce\x2f\xfc\x09\x54\x8d\x59\x6a\xaa\xfa\x9a\x07\xf9\xd2\xa4\xcd\x5a\x0e\x3e\x90\xba\xbd\x47\x00\xdf\xb3\x6c\x05\x05\xcb\xea\x44\x64\x2e\x2e\xa1\x1f\x6a\x13\xa6\xe5\x44\x93\xc0\xa2\x27\xfe\x9d\x68\x20\x49\xcf\x0d\x9b\x05\x71\x69\x32\x11\xa6\xb7\x22\x03\x02\x00\xd4\xd1\x4a\x4f\x8c\xcb\x8a\x28\x66\x72\x14\x87\x49\x72\xdb\x81\xce\x52\x89\x56\x67\x90\x48\xca\x19\x4c\x8c\xf3\x6c\x8a\x0b\x09\x47\x96\xb9\xbd\x38\xc9\x8b\x6a\x09\xeb\x6b\x66\x5d\xb9\x2a\x71\xf5\xc3\x9d\x7f\x49\xfa\x6a\xfb\x5e\x4e\x62\x5f\xdb\x88\x81\x5f\x96\xcc\x5a\x20\xfe\x44\x4a\x6b\x65\x40\xf5\x5a\x94\xd3\xf3\x8e\x48\x20\x35\x8a\xb1\xeb\x73\xe5\xa1\x26\x97\xbb\xaa\xd6\xed\x8a\x36\xb4\x3c\x85\x46\xe7\xbc\x19\x7d\x72\x85\x87\x3a\x71\x99\x46\x58\x48\x04\x83\xa8\x05\xf4\x95\x43\x64\x02\x7a\x70\xba\xce\x02\x20\x7d\x71\xb2\x6e\x76\xfa\x8b\x92\x76\x33\x0d\x8f\x64\x7b\x33\xf9\x64\x8a\x0d\x7c\x20\x91\xec\x53\xec\xd4\xe4\xbb\x54\x5b\xd3\x76\x28\x37\x45\x5e\xb2\x8d\xcc\x0a\x00\x39\xaf\x6b\x78\xff\x15\x68\x33\xe7\x38\xed\x33\xf9\x8b\xd2\x65\xa7\xdb\x85\xd4\xc9\x9a\xf9\xae\x4a\x9b\xdc\x44\x16\x5f\x92\x32\xe9\x9e\x97\xd3\x25\x23\x89\xfb\xb2\x54\x69\x81\x76\xe3\xf3\x68\x52\xbf\x2f\x4e\xb8\x55\x9b\x0d\xd9\x81\xd2\x03\xd0\xb2\x55\x37\x40\x77\x9b\x78\x8a\x51\xec\x7a\x31\xb1\xd3\x12\x23\xcf\x3c\xcc\x76\xa3\x16\x7f\x35\xda\x40\xab\xed\x50\x06\x87\x06\x34\x44\x22\x7e\x28\x2a\xb4\xd4\x4c\x75\xce\x1d\x97\x97\x75\xc7\x5b\xa6\xb4\xc5\x46\x24\x8b\xbb\x0a\x13\x47\x05\xdb\x00\x2c\x97\x27\xb9\x63\xff\xdf\xce\xeb\xd9\x20\x7c\x13\x1d\x3c\xe2\x4b\xd3\x13\xed\x4a\xf2\x50\x2e\x4f\x83\xf6\x25\xf8\x3c\x33\x4d\xb2\xf5\xf8\xbf\x8d\xcf\xdb\x19\x3d\x94\xcb\x73\xb3\xee\x7c\x49\x4a\xaa\x7b\x5e\x4e\x49\x09\xea\x2f\x4d\x49\x35\x00\x7f\x22\x77\xb7\x53\xb5\x87\xfd\xf3\x78\xbb\x0b\x59\x5a\x04\xb5\x39\x8e\x6a\x79\x3b\x16\x39\x89\x53\x1b\x27\xf8\xe5\x17\xe7\xef\x68\x9f\xbf\x28\x77\xc7\x26\xe2\xf1\x77\x95\xb9\x7c\x19\x0e\x4f\x77\xbb\x80\xc7\x33\x41\x3d\xbf\x0e\x97\x37\x8c\xd3\x48\xf1\x6e\xf6\x1a\x45\x7a\xa9\xe8\xf0\x34\x9c\xfd\xeb\x5f\xff\x62\xe9\x27\x52\x4d\x79\x44\x31\xca\x66\x32\xea\x00\xcd\x32\x17\x8d\x9c\x42\x86\xe2\x78\x3a\x33\x99\x15\x6b\xe9\xb6\x47\xa0\x9b\x89\x10\xba\x73\x19\x24\x88\x7e\x93\xc9\x0c\x79\xbb\x1a\xf2\xc3\xa4\xff\xe8\xee\xe2\x48\xd4\xe0\xaf\x9e\x9a\x2d\x78\x87\x71\xac\xe9\x50\x65\xce\x83\xd1\xdf\x8b\x1b\xb8\x8f\x49\xf3\x6b\x71\x23\x4e\x9f\xe8\xef\xfa\x06\xb0\x59\x64\x09\xa5\xf7\xeb\x40\x93\x24\x4d\xd3\xe1\xab\x43\xa8\x4e\x37\x3b\xe2\x69\x47\x3c\x3b\x6f\x8b\xed\xbf\x89\x53\xf1\x11\xb5\x78\x9b\x10\x2e\x7d\x20\x36\x51\x3b\x03\xdf\x9e\xd2\xb7\xa7\xec\xdb\x33\xfa\xf6\x4c\xdc\x8b\xf3\x6a\xef\x1f\x43\xe8\x6a\x08\x8d\x47\x03\xf1\xec\xde\x1d\x26\x08\x83\x9a\x81\x82\x61\x50\x33\x54\x30\x0a\x2a\x83\x39\x79\x95\xef\x08\x23\xcc\x44\x1b\x50\xc5\x20\x03\x07\x55\xb4\xa6\xe1\x8c\x5b\x1b\x71\x89\x41\x38\x6b\xfb\x3a\xc7\xd3\xf3\x33\xcf\x0f\xd6\xf5\xd6\x56\x6d\xb0\xc1\x73\x05\x8f\x17\x5a\xca\xd5\x3e\xb5\x68\x86\xe0\xce\x06\x33\x54\x77\x02\x6c\xa7\x89\x2e\xc5\x4d\x91\x54\xdf\x0f\xec\x70\x1a\xce\xf0\xda\xd0\xbd\x3a\xfa\x82\x7f\x62\x80\x32\xc5\x66\x49\xb8\xec\x30\x03\xf7\x34\x9c\x89\xb8\x10\x10\xbe\x4c\x5d\x7b\x69\x56\xfa\x09\xae\x2b\x4b\xfd\x4b\x96\x25\x32\x4c\x2b\x6b\x6d\x97\x93\xaf\x74\xe3\xd2\x89\xbb\x3b\x93\xc4\x97\xd6\xd2\xd3\x70\x40\x43\xc6\x78\xa1\x96\x4a\x94\xd7\x19\x91\x24\x45\x8b\xc3\x38\x65\x0c\x1e\xe6\x9f\x0d\x67\x3d\xc5\x70\x81\x99\x5f\xea\x1c\x10\xb7\x22\xe4\xf0\x55\x9f\xa1\xbb\xa0\xe0\xfe\x8f\x49\x42\xda\x4c\x13\x7c\xbc\xd2\x16\x06\x6a\x4a\xa5\x9e\xba\x8b\x66\x4a\x1a\x31\x94\x65\x7d\x33\xee\xed\x15\xff\x6b\x2e\x40\x33\x4b\xec\xc4\x2d\xb0\x50\xae\xb9\xc1\x0b\xf4\x15\x32\x05\xff\x64\x53\xcd\xdc\x5f\xdc\x51\x0b\xec\xc8\x85\x35\x71\x70\xee\xe9\xde\x68\x12\xe6\x3b\x65\xcb\xb7\xa8\x13\x5d\xb1\x89\x86\x6b\x41\x9f\x0f\xc8\x9e\x75\x50\x54\xa7\x05\x13\xe3\xd4\x9f\xdb\x19\xcf\x4c\x4c\x38\x71\x2c\xc3\x5c\xb1\xc7\xe6\xd6\x21\x16\xc1\x72\x21\xf0\xca\x34\x80\x29\xc0\xa9\x4a\x9a\x95\x42\xde\x40\xe6\xfa\x59\x1e\xa7\x25\x45\x9e\x9a\x62\x2e\x89\x5a\xed\x91\xe1\x6b\xaa\x17\xd6\x04\xee\x9d\x4f\xbf\xcb\xb8\xaa\xbb\xc2\xda\x58\x7f\x77\x18\xa5\x6a\x2b\xe9\x30\x47\x2b\x39\x84\x7d\x12\xb7\xed\x31\x4b\x4d\x4f\x52\xbd\xc0\x06\x7c\xb5\xd4\xa8\x31\x8e\x53\x7c\xa0\xe2\x44\x40\x5b\xdc\x6a\x0f\x3c\xb7\xb8\x76\x35\xe0\x80\xce\xd0\xa4\xd3\x52\xef\xe6\x32\x8a\xcb\x62\x20\x86\x59\x9e\x67\xd7\x90\xa6\x3f\xa2\x6d\x1f\x8f\xb2\xe9\xb0\x9f\xcb\x68\x7e\xd3\x4d\xb2\x8b\x0b\xb5\x2d\x6c\x81\x91\x63\x78\x05\x05\x9c\x33\xc7\x44\x7d\x72\xec\x25\xe9\x83\xf0\x9b\x1f\xef\x99\xef\x77\x92\x84\xb3\x42\x46\x26\x42\x3b\xfd\xa6\x6c\x00\xac\xdc\x49\xcf\xcf\x9a\x99\x37\x31\xa4\x0c\xc2\x08\xa5\xd8\x19\xfe\xa0\x9e\x74\x09\xef\xc6\xd4\xae\x73\x8f\x02\x2d\xcd\x2f\x10\xcc\x8b\x7e\xec\x8c\x4b\x27\x98\x21\x8c\xcc\xc2\x77\x96\x79\x98\x16\xe3\x2c\x9f\x1a\x08\xd8\x17\x02\xc3\xa9\xc3\x61\x71\x1b\x7b\xd6\x16\xbe\xa1\x05\x1f\x55\x43\x7c\x52\x19\xbd\xa6\x84\xa0\xa8\x6d\xc3\xa1\xa9\xef\xd4\x59\x26\x6e\x36\x3d\x2f\x39\x44\xf8\x74\x7b\xc9\xb7\x82\x7f\x22\x18\xdc\x5a\x7c\x70\xaf\x7d\xd5\x2b\xcc\x5f\x13\x7f\x23\xb0\x5e\x75\x41\x2a\xdf\x1d\x50\x1a\x17\xa3\xae\x3b\x07\x28\x06\x4a\x38\x72\x96\x22\xc9\x2e\xb8\xf6\x46\x01\xc1\x3f\xd1\xf8\x6e\x2d\x3e\xb4\xd7\xde\xc1\xf5\x24\xbb\xb0\x12\x03\xea\x99\x3e\xd8\x7e\x4d\x0d\xaf\x57\xdb\xd2\xef\xf3\xc2\x2c\x17\xfe\xb0\x7d\x5d\xf8\x0b\x63\x6a\x13\xed\x72\x0d\xd6\x39\x0e\x73\x9b\x33\x8c\xe9\x2e\xaf\xb4\xbd\x40\x24\xe5\x6c\x37\x9b\xdd\x72\x8b\x78\x6b\x35\xcd\xee\x5e\x06\x02\xcb\x9a\x52\x31\x55\x34\xf7\x9f\xed\x80\x2f\x23\x8f\x98\x82\x03\xda\xb8\x82\x4d\x64\xa0\xf2\x76\x4e\xe5\x4d\x59\x03\xbf\x03\xb9\x1e\x9c\xe2\x4f\xda\x2e\xcd\xe4\x3b\xb6\x1f\x3f\xae\x23\x10\x33\xc5\xbb\x94\xa5\x8c\x4e\x30\xb1\xe9\x85\x2c\x5f\xf2\x4f\x2d\xd7\x2f\xc4\x69\xc2\x12\x26\xd7\x9c\x65\x03\x4c\xb5\x07\xba\xb1\xc5\x36\x24\xbe\xa1\x4e\xd0\x34\x49\xff\x34\x2e\x2b\x0e\x80\xce\xbc\x41\x27\x9f\x97\x3a\x71\x15\xee\x5c\x47\x77\xde\xb1\x04\xdc\x05\x00\xeb\x29\xc4\x6b\x05\x7f\x1d\xc1\x42\xe1\x06\x04\x1d\x11\x8c\xb2\x24\xcb\x07\xe2\x2f\x3f\xee\xa9\xff\x6d\x89\x71\x96\x96\xdd\x6b\x19\x5f\x4c\x4a\x75\x73\x25\x51\xd0\xe1\x54\xb4\x65\x96\xb9\xbd\x70\x10\x3d\x2b\x3e\xc4\xc6\xb3\x9d\x1f\x5f\x7e\x5b\x3f\x44\x65\x89\x17\xf6\xae\x36\xb8\x3a\x85\x6f\x77\x77\x5e\x7e\xb7\xb1\x7c\x0a\x0c\x3d\x9c\x41\x64\x1a\xb9\x4b\xeb\xf9\x28\xdb\x1f\xfc\xa0\x99\xde\x6a\x83\x1e\x38\xa7\x65\x67\xb4\xe4\xac\x34\x7a\xec\x56\xcf\x8b\xea\x92\x93\x74\xaf\xea\x17\x46\x7c\x13\xdb\xb3\x42\xb5\x69\xdc\xc5\x28\x4f\xa2\x61\xf2\xcf\x1a\xfd\xa9\xe8\x8e\xc3\x3d\x18\x0f\x77\x6a\xa6\xb5\x0c\x41\xaa\xdb\x5f\x13\xb6\x82\xcf\x49\x2c\x9a\x14\x0b\x90\xca\x9b\x6c\xdb\x2a\xfa\x21\x4f\x33\xbe\xc8\xb3\xf9\x6c\xd7\x2d\x1c\x38\x85\x3c\x54\x45\x1a\xc1\x5b\x80\x47\xff\xe5\xe3\xa0\xd5\x8d\x07\x5e\x63\xdc\x6d\xb6\xe6\x6e\xd5\xaa\x6d\x71\xe4\xcd\x5d\x47\x65\xb3\x60\x70\x88\xf7\xd2\xa8\xb5\xca\xa8\xc1\xff\xf9\x5f\xff\xfb\xff\xfc\xaf\xff\xad\x3e\xa9\x31\x04\xfe\x0c\x1a\xa0\xf0\x51\xdf\x48\xa7\x81\xe1\xc4\xe3\xa1\x5e\xcf\x2f\x20\x0f\x08\x17\x3f\xb6\xce\x1e\x89\x9f\x4d\xd0\x8b\xa8\x05\x3e\x3f\x17\xb2\xfc\x2d\x9b\xe7\x45\xab\xdd\x11\x4f\x29\xe4\xc1\xa0\x5a\xe7\x75\x9c\xce\x4b\xb9\xac\xd6\xb1\x1c\x65\x69\xe4\xd4\xea\xd5\xf5\x95\x24\x71\x61\xab\x3e\x6b\xb7\x2b\x86\xc1\xb9\x9c\xc9\x10\xbc\xb3\xf3\x0e\xcc\xca\x8b\x00\xdc\x52\x53\x44\xd9\x06\x94\x8a\x75\xb1\xd9\x6e\x63\xec\x86\xa2\xcc\x2b\xfd\xcd\xc2\x48\xb4\xd2\xf9\x54\x3d\x75\x6f\x5e\xc1\xf3\xd9\xed\x10\x07\x6c\x05\x1b\x01\xab\x22\xba\x22\x9d\x4f\x7b\x65\x86\x6f\xcd\x56\x9b\x5e\xde\x6a\x6a\xe9\x7c\xca\x52\xfd\x41\x44\x36\xed\xfb\x0d\xd1\xbb\x06\x94\x67\xed\xcc\x46\x14\x1b\xe8\x3f\xe0\xe3\x95\xcc\x8b\x38\x4b\x07\x22\x78\xd6\xfb\xae\xb7\x19\x74\xea\x25\xa6\x4b\x44\x9d\x0b\x44\xa7\x0b\xe4\x9d\x50\xd4\x20\xdb\x1d\x34\x15\xb0\x46\xf8\xbc\x1b\x38\xbf\x74\xc4\x3e\x79\x03\xce\x6c\x91\x1c\x87\xf3\xa4\xc4\x95\xd9\x32\x9f\x3f\xea\xf4\x73\xbc\x69\xa7\x71\x48\xb3\x62\x1c\x78\x3e\x47\x77\x31\xac\xd5\xa9\x82\xe5\x51\xe7\x11\x44\x1f\x93\x49\xf2\x8f\x34\xbb\x4e\x8f\x6f\xa7\xc3\x0c\x35\x40\x90\x4e\xaf\x15\xf4\x7a\x7d\x9d\x2c\xae\xe8\xab\x7a\x5d\xd0\xf6\x76\x0b\xa8\x09\x47\xd0\x4a\xc1\x1b\x1b\x52\x82\x09\xac\x65\x1a\xb9\xee\x73\x26\x22\xe6\xc2\x2e\xb0\x4d\x57\xfb\xf5\x05\x6d\x93\xf3\xe8\xed\xc1\xf1\xee\xe1\x9b\x9d\x5f\x5e\xed\x1d\x8b\x6d\x7f\x4a\xad\x60\x9e\x16\xa3\x6c\x16\x0e\x13\x59\x18\x00\xe0\x78\xbc\xd1\x51\x11\xc5\x36\xc9\x04\x4d\x9c\xc4\x2d\x7a\xec\x7b\x9f\x4f\x7f\xfe\x99\xf5\x76\x0e\x55\x26\x65\x39\x2b\x06\xfd\x7e\x39\x7a\xf6\x63\xef\x22\x2e\x27\xf3\x61\x2f\xce\xfa\x72\x34\x0d\x9f\x7e\xff\xb4\xff\x97\x42\x8e\xba\xa1\xdb\x4d\xd7\xe9\xe6\x2c\x55\x97\xbe\x0b\xd1\x29\x9b\xd3\xb9\xe0\xb9\xa4\xe8\x68\xd6\xad\x60\x6f\xec\xf5\xd2\xe1\x4b\xd3\x61\xb2\x13\x2f\x01\x54\x47\xbf\x35\x92\xb9\xd4\x88\x8b\x61\xea\xce\xdc\xe0\x14\x7d\x4a\xc3\x7c\x29\x21\xf9\xc4\xb2\xd5\x21\x35\x15\xa2\xb7\xab\x18\xb1\xf1\x33\x16\x4c\x5c\xab\x1e\xe9\xd5\x45\x78\x1b\x60\x62\xa7\x3c\x1e\x95\x01\x6d\xe7\x37\x8d\xc8\x83\x63\x9b\x7d\xff\x66\x1c\xa7\x51\x63\x65\xd8\xa6\x2e\xa6\xd2\x00\xd1\x53\x4f\x55\xa7\xa6\x61\x14\x9d\x64\x6f\xed\xfc\x9a\x7b\x89\xa2\x6e\x99\x75\xeb\xd0\x0e\x06\x78\x0d\x96\x68\x6f\x0b\x59\x9c\x64\x44\x4b\x17\x03\x84\xa6\x6b\xdd\x79\x21\x0b\xd5\x31\xd2\x59\x86\xff\x2f\xf7\x0f\x5e\x88\x6d\x11\x28\x60\xf5\x8a\x1c\xff\x63\xff\xcd\xf1\xbb\xdf\x0e\xf1\x4c\xd0\x02\xd2\x71\x39\xde\x3b\x7e\x77\x72\xf8\xee\xd5\xde\xc1\xaf\x27\xbf\x81\xae\xb5\x16\xaa\x96\xea\xb7\xad\x4f\xc2\x31\x38\x15\xa4\x41\x89\x7e\xc6\x93\xcc\x60\x2e\x0c\x1f\xa7\xe2\xf4\xbc\x4d\xd7\xce\x66\xfb\x54\x7d\x3c\xf7\x7c\x88\x5c\x98\x30\xc9\xa4\xf6\xdc\xee\xf7\xc5\x7b\x0f\x9d\x60\xf1\xdf\x93\xe1\xde\xa7\x1e\x35\xe8\xe4\x2c\xfd\xa6\xf5\x91\x7c\xa2\x07\x22\x80\x71\x02\x8a\x8a\xaa\xbd\x80\x20\xa6\x5a\x34\x70\x80\xbc\xbb\x13\x6b\xde\x6a\xdd\xd3\x31\x52\xdd\x32\x77\x5e\xf5\xb3\xa5\x58\xab\x61\x38\xba\x1c\xa7\xa2\xff\x44\x74\x44\x39\x09\x4b\xc1\xd3\xc0\x3d\xe9\xfb\x7a\x1d\xc0\x47\xd2\xb7\xda\xe6\x9d\x8a\xd6\x5c\xfc\x4d\x6c\x8a\xe7\x4c\x2b\xbe\x79\x2e\x06\x8c\x28\x18\x7e\xc8\xac\xe6\x17\x20\x4b\x3e\xc6\x1b\x84\xf8\xdc\x43\x48\x31\x5a\x97\x9d\xc3\x74\x94\xcc\x23\x75\x7a\x74\x50\xd7\xea\x29\xda\x2f\x8e\x75\x4a\xc6\x15\x4e\x50\x5c\x74\x09\xe4\xaf\x7b\x20\xd3\xb0\x8c\xaf\xe4\xbe\x99\xe5\xe9\x39\x9b\x01\x56\x39\xd8\xfb\x75\xe7\x64\xff\x9f\x7b\xef\xfe\xe7\xde\xd1\xa1\xd8\x16\x6b\x6b\x6e\xa3\xc7\x8f\xc5\xa6\xe8\x8b\xd3\x4d\xd3\xb4\xb5\xd9\x11\xdd\x0d\x08\xb4\xab\xcf\xf8\xc9\xd1\xfe\xee\xc9\xbb\xd7\x7b\x27\xbf\x1d\xbe\x70\xcf\xb1\x5e\x97\x56\x40\xad\xcd\x8c\x57\x3e\xfd\xa6\x65\x47\x7c\x14\x3b\xbb\xbb\x7b\xc7\xc7\x87\x47\xc7\xfa\xb8\x6c\x0e\xc4\xc6\xa2\xb3\x4b\x8d\x3f\xfb\xf8\x42\x3f\xd9\xf8\x21\x27\xd8\x5d\x5a\x75\x86\xdd\x85\x5a\x70\xaa\x09\xea\x01\xb7\x2a\xc0\xc5\x2f\x40\xdb\xb3\x97\x48\x75\xfc\xf0\x78\x8f\xf3\x6c\xba\x4f\xbc\xed\x46\xcd\xd9\x76\xe0\x60\xc6\x2b\xa3\x2c\xbd\x92\x79\x29\xba\x1b\xea\x0e\x5d\xdf\xd0\x45\xcf\x5d\xbc\x71\x6c\x31\xcc\xc1\x07\x55\xa5\x69\x32\x30\x67\x49\x3b\x52\x70\x30\x3f\x93\x8c\x3c\xea\x3c\xaa\x5c\xe0\xfa\x54\x9c\x3d\xca\x25\x04\x8c\x0e\xcb\x2c\xef\xe6\xf3\x54\xbd\x34\xd0\xd1\xf2\x51\xe7\x11\xb3\x3e\xbb\x4d\x47\xbf\xea\x7a\xc7\xa5\x9c\xb5\x2e\x64\xda\x11\x5e\x1e\xa2\x8e\x78\x97\xca\x1b\xf5\x0f\xf8\x37\x53\xa4\xd5\x30\xbf\xa8\x3e\x22\xf1\x41\x31\xce\x40\xd0\x91\x02\x83\xd0\x52\x15\x5d\x4b\x26\x70\x5f\x53\xd5\x7a\xf0\xc3\x7b\x68\x3a\x79\x72\xea\xb2\xb3\xe0\x06\xfa\xce\x8e\xd0\x5f\x94\xa5\xdc\x21\x18\x1d\xc5\x31\xeb\x39\x8d\xc2\xfd\xb0\x7d\x8f\x72\xac\x88\x79\x96\x9c\x29\x37\x3c\x68\xdf\xc1\x02\x9e\x64\x66\x09\x17\xa8\x63\x1d\x91\x71\x21\x13\x9d\xfd\x97\xc5\x91\x20\xe3\x2c\xb3\xfd\xce\x74\x1f\x98\x32\x4a\x7b\x44\x41\x66\x98\x94\x90\x55\x0d\x0b\x1b\xe7\x44\xf2\xb0\xd3\x51\x53\xa6\x45\xe0\x82\xac\x4f\x45\x93\xb3\x47\xea\xf7\xd9\x23\x4a\xb6\xdf\xe6\xf6\x4f\xd5\xc1\xa1\x51\xc5\x0d\xff\xd3\xc7\x86\x3f\xd4\xe0\x8e\x8f\x3e\x1b\x1a\xa7\xeb\x9d\x2e\x1b\xcf\x50\x73\xd5\x95\x43\x56\xd9\xf5\xad\x47\x9d\x47\x5a\xed\xbc\x03\x2e\xb4\x05\xd8\x4e\x50\xbe\x0d\x34\x9f\xa0\xc0\x43\x71\x21\xe4\x74\x06\xd9\x75\xab\x4a\xe4\x6c\xf8\x81\x4c\x3b\x14\xe9\x81\xa8\x43\x72\x74\x09\x42\x25\xa3\x1e\x2e\x2a\x56\x15\xf4\x3c\x65\xc6\x15\xd8\xc7\x9e\x1a\x47\xb4\xb2\xe1\x07\x17\x27\xb9\xf1\x88\x2a\xd4\xc4\x67\x7b\x5b\x11\xca\xc7\x8f\x15\x18\xbd\x51\x96\x16\x65\x3e\x1f\x95\x19\x2a\x29\x0e\xc9\x22\xeb\xbe\x8e\xbd\x58\xf4\x94\x00\xf3\x24\x9d\xe4\x68\xc7\xd0\x8c\x4a\x14\xe9\x3c\x9c\xb9\x67\x84\x4e\x83\x95\x96\xf8\xd4\x52\x6f\xd8\x38\xcb\x45\x4b\x07\x99\xdf\xd8\x12\xb1\xf8\x09\xa3\x6f\x91\x45\xa3\x88\xd7\xd7\xb9\x13\x7b\x7e\x51\x9c\xc6\xae\x11\x63\x7c\xde\x60\x69\xc0\xa8\xfc\x4e\x7e\x61\xcf\x0e\xe1\x47\x2d\xb3\x85\x17\xf9\xd0\x7f\xc9\xf4\x51\xb3\x5d\xf4\x55\x49\xa0\x4d\xe9\x74\x94\x2c\x92\xd3\x0c\xd4\x5d\xa9\x36\x15\x6e\xe4\x79\x19\x27\x85\x42\x99\x50\x24\xf1\x30\x0f\xf3\x5b\x01\x99\x89\x20\x13\x80\xd6\x94\xeb\x25\x2c\x44\x9a\xa5\x5d\xb0\x76\x18\xc7\x23\x85\x40\xe1\x4d\x9c\x15\x1a\x1e\x3d\x82\x8d\x77\x6e\x6f\x71\x5d\xe6\x98\x8b\xbd\x50\x08\x3c\x8d\x53\x30\xe9\x08\x89\x6c\x2b\x58\xc8\x42\x47\x55\xaa\xc5\xe2\xab\x30\x01\xfb\x7e\x6c\x51\x66\xa2\x94\x45\xe9\xa1\xf0\x90\x50\x58\x9c\xe4\x73\x18\xa0\xd2\x7d\x07\xed\x98\xaf\xe3\x42\xe2\x5b\xa4\x6a\x43\x84\x68\x71\x65\x02\x5f\x68\x0d\x2a\xcd\x06\x65\xa9\x50\x0c\x6a\xb6\x53\x3a\x82\xd0\xec\x3c\xf0\xdd\xa4\x9b\xe6\x6b\x08\xc4\x97\x9d\x70\x69\x1a\xf0\x31\x56\x98\xf5\x5b\x5d\xb7\x66\xe6\x9e\x1d\xa9\x55\x2c\xae\x3a\xd9\x50\xfc\x32\x1f\x8f\xd1\x5c\xe5\x6b\x6c\x2e\x75\xbf\xc2\x34\xb1\x62\x75\x8e\x0a\x00\x88\x78\x35\x4f\x12\x32\xf4\xf6\x56\xe4\xf1\x63\xf4\x5f\x65\x14\x6c\x51\x03\x5e\x91\x0c\xec\x28\x32\x03\x2e\x25\x2f\xef\x69\xb8\xfc\x64\x69\xd5\x31\x7b\xce\x14\x56\x5e\x7f\xc2\xfe\xaf\xbb\x0b\xce\x20\xab\x1e\xb4\xa6\x0d\x59\xe9\xb8\x61\xe3\xd5\x0f\x5d\x28\x5e\x66\xf9\xf4\x45\x58\x86\x5f\x6f\x0d\xf4\x08\x2b\x2c\x80\xae\x5a\x9d\xbd\xd6\xe7\xeb\x1a\x68\x1f\xc5\x35\xfa\x8f\x1f\x0b\x72\xe5\xc1\xa4\x00\xac\xf2\xea\x68\x21\xae\x62\x79\x2d\xc0\xcf\xe3\xcf\x40\x90\x86\xe1\x1e\x86\x2a\xff\x8c\xe5\x35\x5b\x30\x9b\x85\xd5\x5a\x98\xd1\xe2\xb1\x46\xf5\xeb\xc7\x2a\xf4\xe2\x42\x75\xcc\x4d\x70\x29\xb3\x6b\xb5\x92\x3e\x7a\x3e\xdf\x6f\x9a\x18\x82\x01\x84\x60\x08\x6d\xfd\xdf\x7c\xe3\xd8\x10\x55\x4b\x34\x33\xb9\x15\xb7\x14\x8f\xcd\x57\xdb\x42\xec\x7e\x85\x2d\x23\x0d\xd1\xd2\xdb\x84\xec\x43\x57\x9f\xe0\xc1\x7c\x3a\xfc\x8a\x38\x8a\xdd\xaf\x30\x41\xac\xb8\x7c\x82\x29\xd4\x5b\x7d\x82\xa9\xe1\x8a\xbf\x16\x89\xc2\x8e\x56\x98\x22\xd9\x46\x2f\xbd\x2d\xfd\x29\x23\x8d\x7e\xc0\x9e\xbe\xa0\x50\xd6\x5f\x65\x47\x5f\x80\x1d\xd1\xd2\xc9\x82\x7e\xf8\xc1\xf7\x90\x6a\xf5\xa0\x0b\x28\x4e\xbe\xde\x4c\x55\xe7\xab\xdc\x3b\x71\xf2\x09\x33\x55\xad\x1e\x32\xd3\x5f\x92\x6c\xf8\xf5\x18\xbe\x24\x1b\xae\xc2\xee\x25\xd9\xf0\xe1\x33\x55\xad\x1e\xb4\xa7\x34\xe0\xd7\xdb\x57\x1a\x60\x95\xbd\xa5\x3f\x3f\x61\x7f\xa9\xe5\x43\x66\x7e\x5c\xe6\x32\x9c\x7e\xcd\xcb\x46\x86\xd3\xd5\x2e\x1b\x19\x4e\xab\x73\x76\x49\xd8\xe3\xc7\xde\x02\xf5\x66\xf1\xac\x1a\xd9\xaa\x79\xba\x6f\x8f\x5e\xa1\x03\xc0\x1b\x74\x65\xcd\xbe\x2a\xa1\x6e\x18\x6e\x95\xc7\x9c\xdb\xb0\xf1\x8e\xf2\x07\xf0\xb8\x24\x7a\x7f\x70\x56\xc5\x6b\xe1\x2f\xdd\x49\x1e\x4f\x85\xbc\x19\x41\xfa\xa9\x49\x5c\x92\x3d\x7e\x36\xc6\x97\xe9\x50\x5e\xc4\x69\x0a\x01\xde\xd2\x08\x4c\x7b\xb2\xb1\x49\x2b\x59\x59\x46\xed\xcf\x50\x94\x39\x2c\x23\x49\x1a\xd4\x3a\xe6\xf1\xd4\x5b\x47\x5d\x99\x55\x1c\xe7\x52\xc2\x08\x15\x80\xfc\x15\x53\xfd\x81\x95\x8c\xb3\x48\x45\x99\xeb\x2c\xc7\xad\xfe\x7f\x9c\x9d\x15\x4f\xfa\x1d\x11\x04\x6d\xfb\x51\x7d\xfb\x06\x3f\x2e\x44\xa2\x6b\x19\xe4\x52\xe4\x73\x9c\x7b\x9c\xc2\x9c\xc3\x34\x0a\xf3\x48\x0c\xf3\xec\xba\x90\x39\xcf\x63\x66\x56\xe2\x64\xa2\xf0\x20\x49\xb2\xeb\x02\xc5\x2e\x90\x29\x6d\x9e\x62\x17\xd7\x72\x28\xae\xb3\xfc\x52\x71\x2b\xe8\xf4\x18\x8e\xca\x2e\xaa\x13\xd0\x9d\xe4\x97\xac\x9c\xf0\x8e\x0b\x48\x0e\x96\xe5\xa5\xf8\xd7\xeb\x57\xbf\x95\xe5\xec\x48\xfe\xe7\x5c\x16\x25\xc6\xd8\x03\xaf\x89\x79\x92\xdc\x5a\xe0\x50\x8e\x54\xf4\x0c\x44\x76\xcc\x62\x00\x1f\x34\x2a\x5d\xc7\x69\x94\x5d\x8b\xee\xdf\x5c\xc9\x86\x29\x8f\xb2\x11\x48\xc5\x2a\x35\xa0\x16\x07\x9d\xfa\x4d\xc3\xab\xf8\x22\x54\x4f\x5e\x72\x0b\x51\x2d\x83\x23\x55\xf1\x00\xea\x05\xe8\x0a\x08\x7f\x17\xa3\x3c\x9e\x95\x8b\x1a\x62\x9b\x63\xa8\x17\x88\x2c\x17\xc1\xc1\x71\x50\x47\x48\x70\xe6\xbf\xe0\xae\xec\xa5\x57\x2d\xe6\xae\x61\x3c\x9c\x68\x84\xba\x03\xd3\xaa\x8e\x0f\x64\x96\x43\x2e\xee\xee\xb8\x29\xe2\xd2\xff\x1a\xba\x74\xe7\xf4\x85\xfa\x3c\x0e\x2a\x7e\x88\xa8\xb4\xf7\x1f\x26\x14\xa4\xd0\xdd\xff\xea\x82\x38\xb5\x0c\x16\x78\xf5\x54\xa5\xca\x11\xda\x07\x93\x0c\x09\xb9\x8b\xea\x5d\xe3\x45\x9c\x5e\x65\x97\x40\x4f\x98\x56\x3e\xcb\x85\x0c\x47\x13\x88\x9e\x60\x31\x77\x7f\x2c\xde\x67\xc3\x0f\xef\xb9\xa8\xc2\x68\xdf\x6d\x40\x7e\x8c\x9d\x38\x0b\x8b\x82\x48\x92\x15\xa9\x75\x50\x2f\x88\x87\x6d\x94\x4d\x67\x89\x2c\x25\x6a\x52\x17\x0c\xaa\x98\xe1\xc0\x61\xbc\x1f\x3a\x2a\xea\xc5\xf8\x98\x74\x63\x9b\x41\xb5\x79\x54\xaf\xe1\x2a\xd2\x21\x26\xb2\xe1\x07\x20\x90\x99\xd1\x06\xa0\xd9\x8b\x6c\xf4\x21\x84\xea\x06\x5e\xd5\x40\xad\xb8\x74\xe7\xeb\x1f\x23\x1d\x8f\x20\x1b\x7e\xe8\x08\xa3\xbb\xea\xf7\xc5\x8b\x2c\x0d\x4a\x31\xc4\x50\x12\xf1\x58\xa4\x19\x5d\x77\xb3\x3c\xbb\x8a\x29\x15\x21\xe4\xd1\x1b\x7e\x00\x74\x84\x07\xc6\xdd\x9d\x46\x1f\xfd\xb9\xce\xb7\xa1\xaa\xbe\xeb\xf7\xc5\x4b\xc8\x99\x17\xa6\xb4\x4b\x30\x64\x69\x62\x69\xda\xb0\x8e\xb0\x0c\xc3\x44\x7a\x07\x5d\x8d\xb7\xc6\x1e\x34\x66\xb0\xfe\x13\x59\x24\x71\xaa\x68\x66\x17\x56\xad\x9b\x4b\xb5\x79\x17\xe9\x60\x43\x2d\x85\xaa\x03\xc0\x0a\xc5\x5d\x9d\x57\x94\x8a\x24\x64\xce\x86\x1f\xec\x61\xeb\xf7\x3d\x8c\x07\x90\x61\x7d\x8a\x3a\x95\x44\x47\x24\x62\x1b\xb4\x2a\x46\x23\x21\x7e\x12\x89\xaf\x98\x18\xa7\xc8\xf0\xa1\x2f\x77\x36\xfc\x70\x1a\x9f\x77\x44\x0c\x7f\xba\xc6\xcd\x8e\x30\xc3\x87\x86\x50\xe6\x52\xde\xfa\xc0\x5c\xca\x5b\x75\x1f\x59\x85\x90\x20\x8b\xf6\x8a\x42\x60\x12\x16\x87\xd7\xa9\x36\x5f\x43\xb0\x00\x47\x2e\xe5\xad\x6b\xe4\x5e\x05\xfa\x52\xde\x9e\xd3\x51\x60\x80\x0b\x37\x1f\x84\x47\x40\x76\x20\xd6\x49\x21\xae\xc2\x1c\xd4\x3e\xe8\xbe\xab\xf6\x1b\x50\x57\x2b\x6a\x48\x2b\x16\xa6\x86\xc1\x2a\x27\x12\xbd\x67\xe3\xe9\x74\x5e\x86\xc3\xe4\x56\x4c\x65\x7e\x21\x31\xac\xca\xcc\xe4\xe3\x00\xe6\x42\x75\x45\xab\x63\x43\x0f\x14\x24\xb7\xb1\x27\xf2\xf7\x09\x44\x22\x4a\xca\xd8\x86\x22\x28\xb4\x03\xb1\xcd\xc1\x06\x46\x76\x13\x29\x92\xb0\xb4\xab\x1e\xa7\x86\x26\xd8\x6c\xa8\x49\x5c\x90\x87\x71\x19\x5e\x42\xae\xd5\x91\x8c\x64\x3a\x92\x76\xcc\xbd\x9b\x50\x51\x8c\x81\xf9\xf0\xfe\xfd\xfb\x0f\x18\xb1\xca\xca\xcd\xc4\x36\x4e\xae\xf5\x71\x9c\x65\x03\xb1\xf9\xf4\xd9\x7d\x47\xe0\xdf\xdf\x7e\xf7\x3d\xea\x2d\x9f\x18\xdf\xcb\x24\xbb\x68\xd1\xd4\xc6\x59\xd6\xde\x52\x88\x92\xcd\xcb\xd9\xbc\x2c\x54\x75\x3d\x4a\x23\x4f\x9c\x0d\x3f\x6c\x32\x6d\x24\x8c\xec\xb1\x72\xba\xea\x11\x82\xa7\x58\xc4\x24\xc1\x9a\x6c\xed\x7d\xa2\x83\x73\xe8\x3f\x81\x11\x00\x49\x9e\xc2\xff\x3f\xeb\x88\x5e\xaf\x67\x2d\x35\x9c\x89\xeb\x6c\xba\xd6\x74\x41\x9d\x61\xcc\xaa\x7b\x15\x26\x5e\xc6\x2f\x4b\x18\xb0\x03\xb2\x54\x64\x04\x62\x81\x30\xc4\x0d\x3c\x6f\x5b\x13\xe0\xec\x1b\x28\xb6\xdb\xae\xff\x73\x43\x5b\x1b\xa4\xea\x9e\x91\x98\x3a\x3a\x51\x89\xc8\x52\x47\x2d\x34\xe1\xe6\x2a\xcc\x0e\x5f\x94\x55\xc5\x93\x2f\x8d\x8b\xc0\x7f\xce\x31\xbf\x2f\x6e\x9f\xc9\x37\x18\xc5\xe3\xb1\xcc\x15\xb6\x8a\xa1\xc4\x40\x6d\xa1\xa2\xa6\x22\x97\xf4\x1d\x31\x3e\x13\x59\x1e\x5f\xc4\x69\x98\x98\x23\x13\x17\xe2\x52\xce\xd8\xc9\xfa\xb9\x90\x92\x23\xd2\x9f\x85\x71\x91\x94\xb3\xd7\xff\xaf\x62\x9d\x05\x7e\x09\xe6\xb1\xf1\x3f\xa1\xf3\x8f\xf7\xff\x0d\xb0\x79\xef\xa6\x94\x69\x54\x18\x2a\x2f\x86\xb7\x42\xdf\x0b\x61\x14\xd1\xa3\x34\x2e\x6b\x6e\x07\x6a\x32\x6c\xe2\xcc\xee\x45\xe8\x71\x64\x43\x29\x24\x8c\xa7\x0d\x34\xbc\xfa\x43\xaf\xfe\x28\x9b\xdd\xf2\x41\xc7\x79\x36\xad\x6d\x48\xd6\x06\xfe\x70\x71\x6a\x43\x70\x89\x32\x3b\xab\x8b\x19\x00\x6d\x70\x6d\xd4\x64\x91\x67\xb3\xb3\x0b\xfd\x93\x81\x13\x68\x85\x1d\x31\xf4\x2d\x34\xf4\xa6\x0c\x3b\x0f\xc1\x7f\x02\xbd\x06\xcf\x8d\xb2\x94\xdb\x62\x68\x84\x02\x2b\x11\xe8\x51\x03\xd1\x80\x87\x61\x13\x0a\x3a\xfe\x42\x61\xa3\xf1\x0e\xbe\x10\x91\xab\x1b\xe8\x3f\x3a\xec\x23\x6a\x77\x06\xee\x4f\xaa\x60\xcb\x9c\xcf\x5a\x9d\x37\x60\x7f\x57\xbb\xfc\x67\x2c\xaf\x07\xd5\x4f\x54\x91\xcc\x3f\xcc\x5f\xf4\x19\x55\x17\x03\xf3\x17\x7d\xc6\xdd\x1e\x98\xbf\xe8\xb3\xd1\x6b\x0f\xf8\x0f\x2a\x7c\x01\xbe\x39\xf8\xaf\x06\x3c\x4e\xe0\x13\x48\xa3\x69\x8a\x49\x36\x1c\xd0\xbf\xba\x16\x6d\xdc\x80\xfd\x6d\xa1\x96\xe1\x74\x60\xfe\xd2\x70\xb8\xb2\xa7\x41\xf5\x93\x69\xef\x3f\xe2\x07\xb5\x5f\x3b\x0c\x21\x07\xfa\x0f\x74\x12\x52\xc4\x6b\x80\xff\xc0\x07\x43\xd1\x06\xf6\x4f\x28\x40\x54\x1f\xd0\xbf\xf0\xa9\xcc\xe3\xe9\x80\x64\x54\x8b\x6c\x79\xd0\x0e\xc7\x31\xe6\xe9\xf5\xfa\xf0\x95\x0c\x79\x98\xa7\xdd\x28\x8b\x6a\x64\xf6\xf8\xfd\xed\xd1\xfe\x6e\x36\x9d\x65\xa9\x4c\x51\xd2\xd9\xd3\x4f\x22\x92\x53\xfd\xf5\xdb\x8d\xfe\x45\xdc\x11\xc1\xcf\x41\xb5\xec\xd9\x0e\x96\x0d\x6a\xca\x9e\x7e\xdb\xbf\xe8\x88\xe0\x9b\xba\xa2\x5d\x6c\xd6\xa9\x2b\xdb\x80\x66\xeb\x35\x45\xdf\xfd\x82\xcd\x4e\xeb\xca\x5e\x60\xd9\x79\x55\x9c\xf6\xcb\x3c\x4e\x22\x14\x89\x42\x02\xe3\xd9\x4c\x62\x90\x30\x0a\x2a\x48\x99\xc2\x64\x5a\xb5\xa7\x29\x48\x32\x38\xcf\x51\x1a\x3b\x0c\x0b\x20\x5e\x90\x08\x3f\x4f\x44\x4b\xf6\x2e\x7a\x1d\xb0\x53\x1e\xf4\xfb\xd7\xd7\xd7\xbd\x8b\x2c\xbb\x80\x40\x6b\xd3\xb6\xd3\x53\x46\xd4\xf0\x14\x07\x3d\x87\xee\x2c\x00\xea\x0d\x01\x70\x55\x4c\xeb\x0a\x26\x9c\x34\x4e\xa9\x6a\x70\x22\x9c\x0b\xec\xdc\xd4\xbc\xdf\x1e\xbd\x6a\xcd\xf3\xa4\x43\x63\xe9\x7f\x8f\x65\x1e\x43\xe0\x1e\x2d\xb7\x5c\xfe\x2a\x85\xa8\x53\xd8\xda\x17\xf2\xcc\xf3\x84\x3f\x53\xd1\x9e\x94\x06\x88\x8c\xb4\x17\xbb\x68\x18\x5f\x54\x5a\x40\xc2\x11\xb7\x2e\x35\x76\x14\xe8\xaa\x4f\xc0\xfb\x5e\x55\x76\x4d\xd5\x97\x0f\xc1\xbc\x12\x6b\x94\xf3\x94\x4f\xbc\xc4\x38\x85\xc6\x4e\x15\x47\xd5\x97\x92\x5e\x5f\xeb\xdf\xab\x07\xab\xde\x4b\xb8\x12\xfa\x1e\xf2\x04\x15\x35\xb6\x52\x35\xc1\x5c\xeb\xcc\x47\xf9\x52\x58\x4b\x34\xa7\x31\x06\x73\x54\xff\xbf\x2e\x82\xd3\xf3\xc0\x76\xe3\xdd\x6a\x3a\xac\x2d\xc4\xe4\xab\x1b\xcc\x9d\x3d\x4c\x91\x39\x88\xe6\x85\xa4\x3b\xb9\xe2\xac\xae\x21\x44\x9d\x69\xc5\x41\x5d\x5d\xa4\xbd\x32\xdb\x3f\x3e\x74\x76\xc4\x81\x92\x77\xa3\x95\x34\x75\x1d\xfd\xfd\xf8\xf0\xa0\x87\x07\x28\x1e\xdf\xb6\xae\x6a\xdd\xb4\x05\xee\x2d\x26\x45\x23\x62\x09\x9b\xb5\x2e\x82\xed\x40\xac\x1b\x02\xca\xa2\x04\xb8\x79\xf4\x16\x21\x57\x59\x50\x0e\xf4\xc7\x41\xdb\x17\xe5\xf8\x2d\x1c\x63\xd3\x49\x58\x4c\xa6\x61\x7e\xa9\x1d\x06\xe6\x79\x62\x1c\x3b\x82\xbf\x04\x3c\x4d\x99\x5b\x75\x6d\x7b\x5b\x74\x37\xd9\x6a\x28\x42\x85\xed\x4d\xaa\x46\xa7\x45\x25\x4a\x81\x6a\xb0\xbe\x2d\x5a\xce\x90\xcf\x03\xd4\xf9\x75\x37\xc5\x73\x11\x3c\x0f\xc4\x40\xa8\x39\x89\xf5\xfa\xa3\xee\x66\xd3\x41\x02\xf1\x85\x2e\xb4\xfd\xb4\x94\xf9\x48\xce\xca\x2c\x7f\x1d\xa6\xe1\x85\xcc\xb5\x9c\x1d\xa2\x49\xea\x34\x4e\xfa\xb0\xba\x62\x1d\xf0\x46\x4c\xe5\xb5\x88\x6d\x2f\xfa\x06\x28\xca\x70\x74\x59\xb9\x03\x98\x48\x73\x9e\x8c\x63\x90\xb6\x02\x31\xb6\x8c\xaf\x0e\xb6\xf6\xbe\x9c\xc8\xf4\x3d\xbc\x3a\x42\xf1\x9e\x4c\xe3\xdf\x37\xf4\x86\x66\xe2\x0b\x3a\xc3\x0a\xb5\xdd\xb9\x9c\x36\x32\x62\xf7\x62\x27\x15\xfb\x2f\xc4\xbc\xc0\xf0\xb9\xb9\x9c\x66\x57\xd2\x99\x27\x08\x86\xe8\xde\xa8\xae\x22\x93\xb6\xa9\x1d\x62\x37\xc9\x1c\x0c\xfc\x69\xf2\x1d\x03\x79\xdd\xaa\xe3\x31\xd2\xaf\x28\xdd\x66\x60\xff\xec\x9c\x31\x2f\x0a\x55\xa2\xff\xaa\xf2\xcc\x6e\xc7\x36\x4e\xdb\x96\xf6\x8e\xb6\xd1\xf6\x60\xaa\x61\xea\xcc\xd6\x04\x0b\xae\xdf\x57\xbd\x6a\x31\xee\xc0\xfe\x0b\x94\x23\x5c\x87\x05\x8d\x8f\x51\xbf\xdf\xcf\x69\xcd\x97\xad\x19\x4c\x83\xaf\x1a\xfa\x89\xc4\x11\x57\x02\xf1\x19\x9d\xc6\x91\x4d\x7d\x57\x29\x11\x78\x31\x18\x37\x8f\xad\x66\xf5\x46\x92\xc0\x34\x75\x66\x3e\x19\xf1\x65\x28\x5c\x8d\x20\x65\x35\x88\x0b\x20\x4e\xf1\x68\x9e\x84\x79\x72\xab\x76\x78\x3c\x4f\x30\x45\xd1\x65\x3c\x9b\x29\xf6\x88\x74\x27\xe8\x18\xc0\x7b\xc4\x85\x9a\x86\xb7\x62\x12\x5e\x49\x31\x94\xa3\x6c\x2a\xc5\x7b\x05\xee\x7b\x10\xf8\xab\xd6\xef\x11\x7b\xab\x8f\xd7\x8a\x8a\x80\xe3\xbe\x6a\xcd\x14\x04\x76\xd0\x55\x76\x80\x2e\x23\xbe\x07\x26\xbc\xb1\xd6\x24\xb8\xd7\x96\xb3\xea\x9d\x4a\x33\x4a\x86\xd9\x9a\x38\x2f\xca\x89\xb1\x5f\x72\x44\xe5\xad\x49\xbb\xf2\xfc\xbb\xaf\x77\x45\xa8\xce\xe2\xb3\x28\xa3\xd5\xa0\x53\x34\x16\x14\x93\x85\x65\x48\xb4\x23\x47\x55\xad\xa0\x1f\xc5\x2c\x4b\x8b\x26\x4b\xa2\x3b\xad\x0d\x87\xf6\x27\xba\x23\xe4\x51\x6d\xf4\x1c\x57\xc0\x40\x3a\xa2\x89\x0c\x23\x45\x79\x55\x2b\xfd\xb7\x82\x00\xb1\xd3\xc0\xc0\x21\xf0\x42\xa4\x72\xe4\x28\xc4\x8e\x28\xe2\xf4\x22\x61\x28\x92\xe5\x5a\x95\x37\xb6\x6e\x06\x1e\xc7\xfc\xc4\x97\x39\x30\xa8\x61\x32\x4b\x39\x67\xd3\x00\x2c\x6c\x23\xb0\xc8\xa5\xf9\x74\x14\x60\x2b\xf3\xcc\x2e\xb6\x8d\x53\x8e\x63\x66\x10\x8b\x9c\x02\xd7\x7a\x5b\x61\x93\x33\x2a\xcb\x22\xcb\xe8\xa3\xaa\xb2\xe0\x5a\x6d\x9e\x5f\x5c\xec\x86\xe9\x48\x26\x8e\x67\x15\x75\xba\xb6\x86\x5f\xc9\x80\x63\x2e\x7b\xef\xde\xed\xee\x1c\xec\xee\xbd\x7a\xf7\xae\x6d\x47\xeb\xf7\x45\x31\x89\x31\xb0\xf2\xbc\x80\xd7\x14\xc6\x66\x14\x71\xaa\xed\x12\xc0\x63\x44\x3d\x99\x22\xb0\xe2\xd0\xde\x9c\xe4\xc8\x39\xca\xa6\xfd\x48\x02\x4c\x7f\x64\xd3\x61\x2c\xfb\x69\x16\x41\xb8\x06\xd5\x4d\x7f\x98\x64\xc3\xfe\x34\x54\x04\xad\x4f\xfd\xf5\x3e\x14\x0e\x23\x40\x51\x31\x8e\x65\x79\x12\x4f\xb3\x79\xd9\x62\xd4\x34\xcf\xae\xe1\x9a\xdf\xc3\x80\xea\x05\xd4\x91\xd9\xbc\x84\xd4\x0e\x69\x56\x62\x7a\x07\xc3\x61\x23\xa3\xe0\x77\xbd\x9b\xc8\x30\xd7\x0d\x17\x74\x3f\xe2\xf5\x16\x0d\x00\x01\x30\xc2\xd1\x44\x46\xc7\x16\xa2\xed\xca\x4c\xb6\x78\x4d\x07\x88\xed\x3a\xd0\xb6\xd0\xaf\x9e\x1e\x10\x68\x78\xd1\x63\x53\x6e\x90\x76\xd5\x00\x62\x1b\x21\xbc\xd5\x6e\x9d\xa9\x2e\xec\xd8\x83\x7b\xe4\x02\xec\x85\xa8\x99\xa7\x54\xd4\x1a\xcf\x53\x87\xdc\x56\xa1\xdc\xe6\x70\x3a\x6c\x7f\xbf\x8f\x11\x69\xc9\x70\x05\x95\x5d\x71\x2a\x8a\x30\x95\xa2\x88\xcb\x79\xa8\x09\x86\xf3\x98\x62\xdd\xa9\xe1\x3b\x62\xc3\xcb\x76\xd8\xef\x2b\x50\xd8\x8a\x5e\x87\x45\x1a\x94\x22\xbc\x0a\xe3\x24\x1c\x26\x12\x8c\x60\x14\xeb\x90\x84\x90\x6c\xc2\x1a\xa9\xe8\x3c\x1b\xb5\xd3\xf0\xf7\x1d\x5c\x8d\xfd\x9a\x60\x7c\xd6\x30\xe1\x65\x5b\xf8\xc0\x79\x32\xbf\x59\x9a\xf6\xf5\x44\xa6\xf8\x7f\x45\x36\x95\xc3\x2c\xba\x05\xfc\x2e\x46\xb9\xbc\x96\x11\x2a\x65\xd8\xba\xa0\x2d\x90\xd8\xef\xed\xf5\xc4\x34\x8c\xa2\x54\x16\xd5\xd5\xf6\x81\xf6\x61\x41\xbf\xdb\x96\x6c\x33\x50\x3c\xc8\x08\x3a\x50\x8c\x5e\x4b\x11\xe6\x8a\xd1\xc5\x61\x15\x08\xc0\xf5\x81\x6d\x8b\xcd\xe4\x22\xaf\x42\xc5\xba\x17\x04\x5d\x94\x49\xd8\xc2\x32\x9f\x17\xd8\x80\x1c\xdf\x48\x30\x0d\x73\x26\xe3\x0a\x44\xaa\xe4\xd6\x1d\xbf\x61\x36\x5c\xfb\xec\x4e\xac\x71\x72\x34\x1b\x50\xe2\x86\x85\x08\x87\x8a\x9b\x05\x8c\x52\x40\xc4\x65\x00\x0e\x10\x18\xe2\x48\xdd\x7c\x30\x01\x64\xc2\x14\xf0\xc0\x85\x55\x67\xa0\x48\x73\xa0\x38\x9c\xa0\x23\x26\xd9\x0c\xcd\xb3\xb2\x79\x2e\x28\x0b\x80\x18\x65\x79\xae\x2a\x5a\x9b\x40\x1d\x77\x1a\x09\x5c\xa8\x3b\x04\x5f\xe7\x07\x4c\x1e\x5d\xcb\x6b\x26\xcf\x1e\x9a\x2e\xbd\xcd\xe7\x29\x27\x17\x2d\xf5\x38\x65\xb2\x21\x4b\x07\x76\x7d\xf2\xc3\xc9\xca\x17\xa1\x05\xa3\x1a\x38\xea\xa8\x81\x43\x08\x3f\x95\x1e\x54\xa6\x53\x77\xf1\x58\xa2\xb0\xeb\x4c\xf6\xf1\xe3\xe6\xd9\xaf\x42\x82\x1f\x3c\xf1\x3f\x93\x3c\xd4\xa1\x83\x4b\x20\xc4\x9f\x44\x21\xbe\x14\x89\xe0\x33\xe2\x44\xc2\x9d\x5c\xf3\x04\xff\x9f\xa0\x12\xbd\x0a\xbc\xc7\xea\x71\x48\x60\x15\x06\x2e\x80\x46\x6b\xf2\x4b\x91\xcf\x13\x49\x99\x31\x39\xca\x5e\x15\x0c\x7b\x1e\xb4\xb4\x48\x82\x6a\x96\xd6\x21\x41\x86\x27\xfb\xcf\xb9\x84\x10\x10\x20\x31\x82\x80\x63\x79\x18\xa7\xe8\x9c\xac\x4d\x18\x81\x23\x9b\xe7\x0a\xde\xff\xa1\xaa\x6f\xb1\xa6\x5a\x4a\xd7\xdd\x74\x65\x55\x6a\x36\xe9\xdb\xd9\x81\xbc\x29\x4f\xe2\xd1\xa5\x9b\xee\x7c\xcd\x0c\x02\x27\x9c\x75\xdd\x2c\xf0\x25\xf8\x6b\xc0\x33\x74\x92\xf5\x63\x42\xec\xb1\xee\xf4\x54\x9d\x7a\x94\x74\x05\xca\x9a\x14\x9d\xa2\x66\xaa\x0c\x24\x35\xf6\x7f\x36\x0d\x0a\xf0\xc2\x50\x2d\x46\x53\x5c\x1e\x90\xd7\xe1\xcb\xa4\xe7\xba\x74\x51\x74\xd0\x46\x24\x76\x8c\xa5\xf4\x76\x41\x43\xc0\x16\xd1\xc4\xbb\xd2\xfd\x60\x2e\x22\x3e\x1f\x6a\x04\x59\x88\x5a\x89\x4c\x5d\x72\xcb\x16\x53\xb7\xdb\xaa\xae\xf9\xe9\x39\xfb\x48\xf9\x8c\xd6\xd7\xd9\xb2\xfe\x24\xfc\x9e\xeb\xb6\xb5\x52\xc1\x07\xe1\xd4\x76\x79\xde\xcb\xe7\xa9\x17\xd2\xd5\x91\x7e\xdf\x2f\xdb\x5f\xf5\x5f\xe3\x72\x50\x6b\x6f\xfe\x46\x72\xd5\x88\xa9\xfe\x85\x4f\xfb\x46\xcf\x24\x3f\x80\x44\xaa\xcf\x0f\x7f\x1c\xac\x14\x92\x01\xf2\x3a\xb0\xd3\x51\x17\xe0\xc6\x35\x1f\xe4\x26\x23\x9b\x26\x76\x83\x6f\x32\xe2\xd8\x49\xe2\x7f\x18\xc6\x41\x0d\xd8\x10\xca\x41\x78\x36\x87\xb4\xe0\x28\x32\x55\x53\xd8\x2f\xe5\x14\x99\x61\xcc\x7e\xb4\x55\x7f\xb2\x80\x51\xd8\x04\xcf\xf1\xfa\xb3\x61\x31\xdf\x9e\x29\xf7\xd8\xf5\xfb\xe2\xea\x07\x91\xc4\x97\xb2\x10\xb3\x5c\x46\xf1\xa8\x8c\x87\xd6\xb6\x90\x4b\xdb\x19\x4c\x79\x78\xeb\x0a\x2c\xc7\xf3\x14\xe5\x0a\x5b\xec\x23\x1a\x9f\x52\x9c\x28\xdc\x4f\xd5\x09\x13\xd4\xe5\xba\x99\x1f\x89\x46\x77\x4a\x41\x2e\xf0\x7e\xb4\x9d\x6a\xf9\x03\xa1\x07\x9e\xf7\x12\x22\x41\x06\x24\x23\x08\xdc\xe2\x59\x12\x96\x20\x11\x6b\xac\xa1\x7d\x28\x0c\x0d\x60\x65\x32\xbd\xd2\x26\x57\xec\x6b\x98\x5f\x5c\xe9\xb3\xcc\x3e\xeb\x9b\x17\x12\x90\xa8\x8b\x0f\xa2\xaa\x90\x83\x0a\x04\xbf\x80\xc8\xee\xb9\xbc\x90\x37\x33\x11\x17\x05\xd8\xe6\x56\x3b\x28\x6a\x86\xcc\x65\x22\x43\x90\xc9\xfb\x25\x18\x9b\x51\x17\x38\xa9\x59\x32\x08\x5f\x72\xcf\xc2\x88\xaa\x06\x00\xa1\x2a\xf4\x26\x15\x45\xaf\xe2\xa2\x94\x29\x2c\x45\xb5\x3c\x4b\x47\xb2\xbe\x60\x3c\xae\xfd\x8e\xea\x87\x85\x7d\x62\x95\x9d\x24\xd1\xb5\x8a\xda\x6a\x12\x53\xd4\x52\x41\x95\x38\x50\xce\x2f\x48\xc1\xd2\x2c\xa2\xd1\xa9\x43\x74\x86\xb0\x18\x85\x34\xe4\xd4\x62\x25\x34\xd5\xfe\x47\xd7\x11\x86\x23\x24\x96\x23\xe8\x07\xa2\x86\x46\x8d\x26\x51\x9c\x8b\x56\x14\xe7\xcb\x81\xc0\xba\xf5\x20\x6c\x55\xbb\x9e\x4f\xc3\xe2\x92\x83\xb0\xb1\x25\x74\x7c\x4d\xd0\x72\xd4\x88\xd6\x2e\xe7\xd3\xf0\x2a\x2e\xb4\xec\x4c\xcb\xd5\xba\x93\x5c\x91\x5a\x47\xbc\x06\x3a\x3e\x10\xae\xc1\x91\x91\x39\xd8\x19\xe0\x86\x93\xd4\x87\x7f\xbc\xbb\x03\xac\xf2\xea\x1e\x64\xd7\x62\x5b\x4d\x9b\x7d\xeb\xa5\xd9\xb5\x26\x4a\xe8\x62\xc2\x0b\xa7\xd9\x1f\x07\x54\x5e\x53\x58\xe8\xb2\x9a\xc2\xcc\x94\xd5\x14\x5e\xcb\xe1\x65\x5c\x42\x0d\x2c\xd4\xcb\xd8\x6a\x7f\x74\x22\x1e\x63\x50\xe7\x76\xef\x02\x39\xcc\x56\xdb\xac\x29\x05\x2a\x93\x18\x2c\xb9\x0c\xa7\x33\x01\xc9\x43\x93\x32\x84\xf2\x42\x4a\x6d\xf3\x91\x66\x91\xfc\x50\xf4\xb2\xfc\xa2\x1f\xce\xe2\xbe\xde\xe0\x49\x39\x4d\xfe\x42\x3f\xde\xe9\x7f\x71\xe9\xab\xdb\x8b\xdf\x21\xa2\x7e\x9c\xcd\x8b\x13\x3d\x68\xdb\x98\x7f\x8e\x92\x6c\x74\x49\xf1\xa8\xdd\x35\x47\x6e\x97\x7d\x6b\x3f\xd9\x94\xdd\x67\x67\xc6\x0c\x03\x22\x43\x8b\x6d\xf1\x3a\x2c\x27\xbd\x71\x92\x65\x79\xcb\xf4\xd6\xd6\xd5\xd2\x30\xcd\x6a\xab\xda\xba\x7f\xdd\x54\x3d\xff\xd8\xd6\xaa\xac\x2a\xb4\xd6\xca\x42\x77\xa4\xff\xea\x8a\x4a\xed\xd3\x0d\x4a\xd9\xea\x0e\xcd\x7f\xd5\xb5\xda\x3c\xb7\x57\x22\xab\xfb\xd3\x06\x8f\xa5\x8f\xdf\xba\x5d\xfd\x81\x77\xba\xbe\x2d\x36\xe5\x8f\x5c\x4f\xc3\x64\xdf\xa7\x54\xab\xc3\x5a\x9c\xb3\xc0\xd4\x10\x17\xfd\xa4\x26\x2c\x78\xe5\xc0\xce\x4a\xc4\x28\xbb\x83\xc8\x20\xd5\x35\xd6\x59\x27\xc7\x96\x29\x87\x6a\x5d\x3b\x1e\xd7\x8a\xaa\x8a\x7d\xb1\xb9\xb1\xb1\xe1\x11\x2c\x1d\x24\x1a\xc6\xd4\x1c\xd3\xc0\xfc\x85\xf6\x65\xea\xba\x1c\xe0\x3f\xf0\x81\xc8\xc3\x40\xff\x81\x86\x69\xe9\xd5\x40\xfd\x1f\xfc\x50\xd7\xdd\x00\xfe\xdf\x8d\xb4\x4d\x7f\xf0\x8f\x85\xf9\x8a\xe6\x74\xaa\x1a\xd5\x60\xf7\xcb\x80\xff\xa0\x7a\x23\x39\x80\xff\xc7\x9f\xe3\xf1\x40\xfd\x5f\x07\x67\xcd\xef\x91\x81\xf7\x9b\x55\xe1\xf7\xc8\xa0\xe6\x1b\xce\x6c\x1a\x97\x03\xf8\x7f\x9c\x3d\x5e\x06\x03\xfd\x07\x46\xe5\xbe\x8e\x06\xea\xff\xf0\x87\xa2\xd4\x03\xfc\x07\x3e\x00\x2d\x1e\xe0\x3f\xf0\x01\x4f\xef\x80\xfe\x85\x4f\x9a\xeb\x18\x98\xbf\x08\x4e\xb8\xc5\x07\xfa\x0f\x1c\x00\x2e\xf0\x01\xfd\x8b\x43\xcc\xb0\x47\xfc\xf7\xa1\x76\x13\xae\x6e\xb0\x59\x09\x64\x72\xb7\xfd\x06\x3a\xa6\x83\x70\x2a\x5b\x46\xc9\x65\x0a\xa3\x03\x7b\xab\xba\xda\x2c\xab\x10\x33\x66\x3f\x48\xe7\xb0\xbf\x16\x79\xa0\x39\xb7\xb2\x4e\xc5\x86\x1a\x54\x67\x0c\xc5\xce\xaa\xa2\x5e\x99\xbd\x9d\xcd\x64\xbe\x1b\x16\xea\x00\x6d\x57\x2a\xba\x15\xd8\xb9\x27\x80\x4e\xdd\xea\x64\x99\xcb\x9e\x63\x91\x04\x47\x38\x53\x5d\x55\xaa\xd5\xdc\xd6\xad\xb9\xd6\xb5\xbe\x9d\x41\x42\xc2\x30\xc5\xab\xdd\x7a\x27\x50\xb8\x33\xc8\xf2\x05\x3b\x4a\xb9\xda\x46\x59\x24\xb5\xaf\x2d\xaa\x3f\xab\xaa\x71\xe8\xea\x9e\x1a\x9c\x4c\x24\xfd\x55\x66\x62\x0e\xc3\xd5\x27\x7a\x23\x16\x10\xbc\xed\xe0\xcf\x5e\xad\x0d\xe3\xa9\x82\xe0\x9c\x75\x0b\x59\xc8\x5a\xa0\x6c\x47\x5f\x9f\x8e\x08\xf6\x76\x0f\x0f\x0e\x76\x7e\x39\x3c\x3a\xd9\x7b\x81\x56\x96\xd5\xf1\x4e\x49\x95\x7b\x4e\x6a\x56\xf8\xd1\x58\x15\xe7\xaa\xeb\xb2\x99\x33\x8d\x2d\xcd\xdb\x80\xd6\x5b\xaa\xa1\x95\xe9\x44\x5d\x76\xc8\x56\x41\x9b\x8e\x59\x6f\x5c\xe9\x5c\xbb\x27\xeb\x41\x09\x53\x70\x00\xc3\x36\xe3\x1f\xc6\x3a\x51\xb5\x35\x28\xa5\xab\x46\x98\x6c\x23\x92\xdc\xb2\x09\x0b\xb5\x56\x7b\x5b\x8f\xb7\xc5\xcb\x70\x60\x28\xc4\x3f\x59\x69\x5c\xec\xdc\xc4\x59\x81\xd8\xe3\x08\x20\xb0\xbc\xcc\xfe\x7e\x7c\x78\xc0\xe6\xdc\xf2\xad\x2e\x0d\xe2\xf7\xfb\x42\x1b\x28\xeb\x4f\x94\x7c\x63\x80\x8f\x27\x9d\x54\xc4\x5e\x88\x53\x5d\xa4\xfe\xec\xb0\x8e\x5e\xc7\xa3\x3c\x2b\xb2\x71\x69\x4f\x0b\x8a\x49\x81\xe6\x43\x13\xf6\xc5\xf6\x48\x56\xe1\xd8\xa7\x35\x0c\xd7\xbd\x66\x7f\xc4\x49\x12\xea\x2f\xe3\x38\x81\xf4\x04\x54\x5f\xff\x34\x2d\x92\x38\x95\x07\xbc\x47\xfb\xc1\xd4\x19\x65\xc9\x7c\x9a\x3a\xb5\xf8\x27\x53\x0f\x8c\x7f\xa8\x02\xfc\xcd\xe1\xda\xc1\x78\x84\xba\x47\xa4\xc4\xd4\x97\x21\xc7\x58\x16\x49\x53\x12\x51\xba\xe8\x7b\x13\x76\xd1\x1a\x55\xab\xbd\x5b\x62\xea\xc6\x71\xd7\xb5\xeb\xe0\x25\x9e\x6d\xc7\x2e\x66\x4d\x58\x44\x6f\x58\xea\x98\x2a\xe1\xd1\x88\xba\x98\x00\x69\x5a\xa1\x73\xf6\x58\x62\xb1\x30\xd5\xe4\x7f\x2b\x0a\x84\xd9\x0c\xa2\x55\x29\x11\x56\x47\x42\x54\xd9\x81\xc5\xa4\x08\x90\x81\xb0\xc0\x3e\x12\x9d\xbc\x39\xc6\x56\xff\xe1\xe4\x6e\x09\x16\x32\xb8\x5d\x24\x64\x05\x81\x9f\x5e\x1b\x22\xdc\xa2\x09\x0f\xb9\x33\x91\x55\xa2\x36\xf3\x48\xcd\xf8\x90\x7f\x6a\x5e\x2c\xb2\xff\xa2\x88\xb9\x62\x87\x19\xc5\x4c\xc2\x52\x7f\x37\x1e\xb3\x10\x11\x79\xa1\x15\x65\x4d\x17\xe8\xf0\xd7\xd8\x83\xb6\xc7\x37\xe0\x56\xb0\x63\xe1\xae\x17\xb2\x2c\x13\xe9\xc7\x3a\xae\xdd\xe1\x2b\x4a\x5e\x7c\x0c\xeb\xc1\x2e\x03\xa2\x31\x3d\xb7\x82\xb9\x8a\xd6\xbc\x86\x77\x77\x5e\x57\x2d\xd3\x11\x2e\x75\xbb\x12\x66\x9a\xe3\x42\x35\xe2\x1c\x98\x27\x72\xf4\xd5\xc4\x2e\xa0\xd0\x1e\x62\x1c\xc6\x89\xd1\xe2\x21\x14\x70\x64\x03\xb1\x2e\xbc\xc1\x0d\xa5\xf4\x66\xc7\x6e\x08\x4a\xd5\xe3\x54\xd2\x68\xeb\x17\xe0\x6f\x9b\x5c\x75\x19\x3b\x66\x42\xa6\x14\x26\x47\xb4\x4b\x1c\xdf\x1e\xbd\x82\x40\x0a\xc3\x22\x4b\xe6\x35\x01\xc3\x7c\x4f\x0f\x55\xff\x01\x71\x53\x1b\x07\x6a\x8a\xb8\xb3\xc8\x38\x6b\x87\xda\x92\xef\x86\x8d\x81\xb0\xa3\x7b\x1f\x65\x69\x11\x47\x60\xea\xa9\x07\x52\x90\xc4\x25\x86\xc9\x29\x70\xcb\xce\x1e\xfd\x54\x8c\x26\x72\x2a\xff\x36\xe8\xf7\xcf\x1e\xa9\x73\x7b\xf6\x08\xfe\x6a\x81\x2c\x76\x94\x25\xdd\x5c\x26\x10\x09\x44\xf5\x8c\x5e\x35\xfd\xbe\x38\x7a\xb9\x2b\x9e\xfd\xf8\xc3\xf7\xa4\xb6\x2e\x04\x76\x03\x7c\x03\xa8\x1e\x45\xa1\xf6\x2d\x85\xf0\x3c\x62\x34\x09\xf3\x70\x54\xca\xbc\x60\x41\x7a\x00\x80\x50\x24\x90\x59\x08\x6e\x9d\x71\x96\x24\xd9\x35\xea\xc0\xfb\x7d\xf0\xc4\x49\x6f\xc5\x28\x9b\x0e\xe3\x14\xf3\x20\x66\x63\xaa\x5f\x74\x44\x14\x5f\xc4\x65\xd1\x11\xb3\x64\xae\xfe\x5f\xe6\x71\x16\x75\xd4\x0c\x26\xb7\xb3\x89\x4c\x7b\x8c\x38\xf6\xff\xa3\x75\x1a\x76\xff\x38\x57\xff\x77\x76\x16\x9d\x9d\xad\x9f\x9d\x75\xcf\xce\x7a\xe7\x4f\x06\xed\xe7\x67\x67\xfd\xb3\xb3\x7e\x3f\xee\xa9\x9d\x84\xd5\x5c\x81\xb9\xc7\xcb\xb6\x20\x4b\x71\xf2\x1b\x42\x48\xd1\xdf\xd8\xdb\xf0\xa2\x11\x9d\x14\x59\x54\xed\x8d\xf3\xd0\xdb\xa3\x57\xb5\x15\xf5\x3e\xe8\xca\x7c\x5f\x16\x78\x04\x21\x50\x08\xc5\xf2\xab\x0a\x2b\x2b\x80\x5b\x04\x58\x87\x0f\xec\x27\xf1\x32\x05\x78\x1a\x9f\xeb\xd9\xf0\x20\x46\xfd\x75\x0a\x62\x24\xd6\x41\x30\xba\xce\xdb\x39\x21\x90\xfa\xeb\x58\x11\x3b\x1b\xe8\xce\x96\x5c\x53\xce\x69\xf0\xde\xb9\x3a\x7c\xb5\x53\xc7\xe6\x99\xb2\xb3\x6d\x68\xc7\x6a\xd4\x72\x5b\x0b\x11\x40\xef\xac\x61\xc4\x88\x94\xc9\x48\x2d\x2b\xf4\x92\xa5\xc9\x2d\x2a\xe7\xfd\x72\x2d\xfa\xd5\xd1\x44\xc2\xd4\x9e\x63\xb5\x6e\x3a\x00\x0c\x6b\x57\xa1\x2b\x8a\x19\x15\x2c\xc7\x1b\x62\x47\x65\xa4\x79\x5a\x66\xf3\xd1\x44\x46\xcd\xdc\xde\x03\x90\x94\x75\xac\xd7\x1c\xd9\x01\x8b\xad\xe8\x58\x0c\x2b\xbb\x0a\xe2\x8e\xe7\x49\x22\x66\x61\x39\x59\xcd\x9f\xed\xe5\x3c\x49\xde\x84\xe5\x84\x23\xb0\x05\x8a\x99\xda\xeb\x49\x61\x7c\x65\x4e\x52\x9d\x06\xfe\xa3\xaa\xe1\x8c\xb0\x16\x35\x8e\xdf\xb6\xf4\xb3\xbd\x5c\xfa\x7d\xf1\x1b\x59\x4e\x5f\x4f\xb2\x42\x8a\x68\x3e\x4b\xe2\x11\x62\x63\x2e\x45\x7c\x91\x66\x39\x7a\x26\xa4\xf0\x10\xe9\xf7\xc5\xa8\x37\xee\x19\x15\x80\x27\x90\x56\x9f\x51\x1a\xad\xfe\x7a\x47\xcc\xe5\x3b\x12\x7e\xd0\x19\x83\x3e\x5f\xe8\x81\x30\x03\x8d\x9a\x60\x10\x5e\x40\x62\xd5\x70\x5e\x4e\xb2\x3c\xfe\x83\x65\x72\x4d\x4b\x99\x96\x3a\x91\x0d\xfb\x52\xde\xce\xa0\x89\x2c\xc3\x0b\xcc\xc2\x17\xc8\x9b\x59\x9c\xcb\x42\x7d\x1d\xe7\xd9\x54\xfd\x3b\xc9\x8a\x52\xfd\x1b\x8f\xbb\xd3\x2c\x02\x3a\xda\x2d\xe2\x74\x24\xe9\xe3\x3c\xf5\x3f\x43\x4f\x49\x58\x94\xa6\x81\xaa\x9a\x64\x23\x03\xd3\x34\xbc\xe9\x8e\xb3\xfc\x3a\xcc\x23\x18\x6b\x96\x67\x37\xb7\x5d\x0f\x74\xe8\x06\xe3\x44\xe4\xaa\x52\x2e\xcb\xfc\xb6\x1b\x8e\x4b\xfc\x39\x2f\x64\xde\x0d\x2f\x64\x5a\x06\x67\xe9\xb9\x43\x12\xde\x84\x79\x61\xad\xda\xe3\xb4\xcc\x6c\xd4\x17\x1e\x23\x05\xd9\x11\xf0\x6c\xfe\x5d\x46\x1d\xf1\xf4\xdf\xc4\xce\xfc\x42\x3c\xdd\xd8\xfc\x56\x6c\xfc\x30\xf8\xee\x87\xc1\xb7\x3f\x8a\x5f\x5f\x9f\x20\x9d\xa1\x55\x3b\xb9\x9d\xc9\x81\x08\x67\xb8\x03\x71\x96\xf6\x3f\x14\x18\x13\x52\x55\x49\x25\x79\x3b\x5f\x4a\x39\xeb\x86\x49\x7c\x25\x99\xbd\xbf\xcc\xbb\x7b\xe9\x28\x43\x39\xe6\x68\x32\x4f\x75\x7a\x86\xba\x50\x2a\xda\xb8\x5f\xcf\x43\xe3\x5a\x2a\xa5\x8e\x45\x30\x94\xe8\xbf\xe7\x3b\xa2\xea\x17\x95\x6e\x82\x95\x6a\x56\x62\xe1\x21\x86\x56\xd4\x85\x16\x21\x32\x66\x99\x3a\x75\xb2\xd8\x5f\xca\xdb\x2d\xc6\x4c\x9b\xbf\xe3\x2d\xeb\x4a\xb7\x66\xbb\xd2\xc7\x12\xbb\xda\xd2\xf2\x9a\x5a\xe1\x65\xaf\x98\x25\x71\xd9\x0a\xce\xce\xd2\xa0\xed\x3b\x30\xe6\xad\x24\x66\xb9\x5b\x62\xb1\x0d\x82\x09\xeb\x12\x37\x30\x5e\x78\xe8\x56\x89\x43\x40\x40\x40\xa8\x58\xcc\x87\x45\x99\xb7\x36\x3a\x22\x6e\xb7\x7b\x65\xf6\x2a\xbb\xd6\x62\x4b\x93\x7d\x26\x69\x6e\x17\x63\x1e\x4e\x27\x57\x77\xd5\x8b\x14\xa7\x89\x31\x08\x1e\x3f\xae\x9e\x65\x03\x2e\x34\xfd\xdb\xb6\xd8\x58\xe2\x4d\x6a\xbb\x86\x59\x41\x9c\x65\x59\x76\x47\x59\x76\x19\x4b\xd7\x15\x95\x8f\xbd\xed\x82\xf2\xdc\x29\x1c\x88\xd3\xf3\xb6\x36\x32\x02\x97\xd2\xf6\x02\xcf\x53\xb7\xdb\xe6\x5e\xd7\x85\x3a\xb3\x62\x1d\x96\x71\xc0\xe2\x2f\x78\xa1\x9d\x3c\xb7\x09\x42\x8c\xcf\xa5\xd4\x15\x1c\x6f\x59\x34\x6b\x08\x06\xf8\xdc\x04\x17\x3b\xae\x09\xe1\x58\xa0\x51\x1c\x5c\x88\x3a\xd6\x22\xf9\x9a\xef\xbc\xd9\xc7\x33\x8a\xae\x7d\xf4\x2a\x21\x03\x4c\xf3\xda\xd1\x32\x1e\x62\x15\xa8\x2d\xd8\x0b\x62\x24\x1c\xc5\xbb\x93\x86\x49\x68\xd2\x49\x06\x7b\x2d\x9e\x97\xb8\x21\x8c\xa1\xd0\x19\x9d\x8b\x58\x8a\x6d\xd1\x6f\xa9\x3f\xee\xca\x3c\x8e\x64\x5a\xb6\x35\x8f\x6d\x83\x03\x2a\x6a\xba\xa3\x88\xa9\xdd\x6c\x58\xda\x3c\x51\xc4\x34\x4e\x2f\x0e\x50\xb4\xaa\x23\xfb\xf5\xe8\x31\x8a\xc9\xa8\x5a\x41\x18\xb8\x0d\x71\x12\x78\xcb\x1a\x21\x1e\x90\x67\x21\x0c\x85\x0e\x35\x0f\x12\xc5\xc5\x08\x5c\xd8\xc0\x32\x72\xa4\x83\x1c\x90\xb8\xcf\xb4\xf2\x29\xa3\xf7\x00\xe4\xd4\x10\xeb\xfb\x04\x91\x0a\xfa\x46\xb8\x69\x59\x32\x78\x85\xbb\xaf\x38\x3b\x9b\x49\x2e\xc7\xe8\x97\x5b\xc9\x69\xaf\xd6\xd5\xb3\x65\x16\xfb\x7b\x80\x00\x85\x08\xcb\x32\x8f\x87\x8a\xf1\x2a\x64\x29\xca\xeb\x78\x04\xf1\x61\x8d\xd6\xc3\x8d\x3a\x64\xfe\x73\x57\xbd\x57\xc8\x72\x47\x77\xd4\x0a\x14\x2c\x41\x07\x40\x72\x2d\xc5\x2c\x90\xbc\xb1\xfa\xda\x94\x12\xfd\x21\xe3\x38\x13\xf4\xd0\x82\xc2\xfa\x21\x47\xfb\x36\x4f\xde\x62\xe6\x99\xb4\x94\xf9\x38\x1c\x49\xd1\xd5\x1a\x78\x70\x6c\x9e\xc9\x51\xef\x7a\x12\x96\xd7\x17\xc0\xf9\xfc\x65\x9e\x27\x70\x12\x7d\x42\xe7\xda\x6c\x29\x38\x06\x75\x93\xeb\xf0\x5a\xfa\xad\x5c\xa9\xa9\x0b\xc4\xf3\xa6\x12\xfb\x00\x1a\xe8\x67\xd2\x40\x04\x81\xd3\xbd\xe2\x85\xaa\x40\x64\x4c\x28\x22\x40\xa9\x1d\xe6\xa3\x49\xa5\x1e\x7e\xae\x02\x80\xdf\x9d\xf7\xd7\xf3\x46\x00\xc2\xa2\xda\xb1\xfa\x58\xed\x56\x7d\x65\x9d\xfe\x65\xd1\x9c\x50\xc9\x50\x33\x2f\x47\xe5\x00\x0b\x9c\xe5\xd5\x15\x50\x1f\xdd\x5a\x61\x39\xc1\x3e\x5b\x7e\x55\x2a\xe9\x8d\x26\x61\xbe\x53\xb6\x36\x28\x3a\x75\x3f\x00\x92\x2b\x44\xe3\x29\xd0\x2d\xc5\xc0\xad\x86\x2f\xd9\x86\xca\x0c\xf1\xeb\x02\x23\x18\x2a\x85\xa2\x3e\x4d\x02\x30\xc8\x69\xcf\x90\x5d\xff\x0c\x30\x42\xe6\x05\x91\x56\x5d\x15\x93\x30\xa7\xb3\xe0\xd1\x73\xf5\xc9\xa7\xe9\x4b\x48\x1c\x7b\x51\x56\x45\x5d\x1e\x91\xab\x48\xbb\x9a\xa1\xa9\x13\x75\x39\x94\xd1\xcf\xb0\x85\x01\x3b\xc2\xa9\x3c\x84\xf6\x2d\x0b\x57\x85\x58\x1a\xbe\xb0\x65\x2f\x58\x88\x0e\xc1\xda\xb4\xc5\x73\xbe\xe0\xbc\xb7\x01\x9b\x73\xd5\xf1\x81\x18\x17\x7b\x9e\x15\xf6\x98\x6d\xb4\x9f\x75\x40\x5a\x8b\x91\xd0\x4c\xe1\xb4\xd7\x44\x7d\x62\x1c\x8e\x09\x16\xd1\x6a\x2b\x4c\xa3\xab\xfb\x80\x5d\xb6\x2e\x1f\xd0\x62\xa1\x92\x3b\x4e\x80\xe3\xb6\x48\xc2\xd1\xa5\x66\x05\x88\x4b\xa8\x5c\xe1\x69\x96\x36\x07\x23\x5e\x65\x27\x6a\x58\x44\xad\xa1\xac\x4e\xe9\x2c\xad\x4f\xf1\xfa\x5f\xc8\x48\x69\xf6\xc9\x72\x16\xc0\xbd\x3e\x8c\xd5\xa9\xde\x18\xd7\x79\xac\xde\x75\x2c\x45\x5c\x5c\x4a\x30\x68\xe8\xe8\x80\xbb\xf4\xd8\xed\x00\xb9\xea\x88\x28\x9b\x86\xea\x64\x14\x72\x34\xcf\x7d\xbb\x6d\x94\x52\x29\xc0\x7c\xd3\x70\x41\xdf\xc9\x34\x58\x9d\x31\x37\x1a\x89\x1f\xb6\x69\x2e\xdb\xee\x85\xea\xc6\x5a\xa1\x7c\x23\x04\x9c\x1f\x2a\xc5\x1d\x4d\xbf\xd7\x61\x34\x63\xa8\xa4\x9b\xf6\xca\xec\xd7\xd7\x27\x3a\x34\x8b\xcb\x2c\xdc\x37\x03\x40\x0d\xd4\xa2\x2c\x19\x5d\x55\x81\xa1\xa1\xee\x03\xfb\xc7\xe5\x5e\x32\x02\x56\x82\x31\xa8\xfe\xb2\x51\x70\xf7\xe0\x8c\xab\x53\xb0\xb8\x7b\xac\x1c\x2c\xec\xd4\xc3\x4b\x30\x2f\x80\x2e\x30\x56\xcc\x96\x70\x9a\xdf\x77\x78\xeb\x5c\x86\x3c\x91\xb4\xfa\xe9\x9a\xbe\x5a\xe4\x9a\x82\x17\xd1\xb6\x3f\x5c\x0f\xbe\x83\x0d\xe4\x91\xbc\xd8\xbb\x99\xb5\x82\xd6\x7f\xdc\x6d\x9d\x9d\x9d\x9d\x15\x4f\xda\x2d\xd8\x77\x42\xb9\xf6\x76\xeb\xf4\x3f\xb6\xce\x9f\xb4\x03\x6f\xaf\x35\xe9\xc4\x21\x9e\x8b\x48\x56\xd0\x12\x8a\x4e\x9f\x9d\x2b\xf2\x0b\xd1\x12\x16\x4c\x69\x9a\x5d\x49\x67\x52\xea\x43\xdd\xb4\x40\x05\xcf\xcf\x5d\x10\x74\x00\x43\x7b\x69\x76\xdd\x6a\x8b\xae\xf8\xe1\xfb\x6f\x37\xd4\x7f\xb5\xc1\x7e\x1e\x48\x8a\xff\x34\x4a\xbc\x94\xc8\xb4\xc5\xc7\xfb\xce\x62\x24\x60\xb2\x0f\xf0\xbf\x10\x6e\x83\xfa\x25\x46\x0b\xf1\xea\xe2\x7c\x1e\x51\x47\xd3\xd3\x12\x4d\xf3\xdd\x4a\xa3\x2c\x97\x7d\x2c\x33\x55\x75\xa4\xb2\x4a\x65\x93\xa0\x92\x2a\xb8\x2d\xb4\x2c\xd8\x13\xef\xc3\x08\x4e\x05\xd3\x8c\x4b\x9f\x1a\x07\xe3\x95\x4c\x4b\xef\x86\x6c\x6c\xec\xd5\xb3\xda\x88\x06\x75\x3b\x81\x5b\x55\xba\x37\x8b\xd0\x6e\x26\xf9\x4e\x14\xce\x4a\x99\xb7\x50\xc7\xea\xea\x6d\x6a\xb3\xf2\x46\x71\x31\x53\xc7\xf1\x5f\x93\x9c\x94\xbb\x8d\x79\x7a\xd1\x32\x1f\xea\xbc\xc0\x68\x14\xa4\xa7\xa6\x70\x13\x5e\x1d\xbb\x9a\x54\x8d\x44\x6b\x8e\xd8\x4a\x93\x69\x93\xb5\x8e\x0d\xc0\xa9\x35\x99\xe6\xb9\x5d\x9f\x06\x5c\x4c\x1a\x9c\x83\x73\xc5\x2b\x89\x1e\x99\xfa\xb0\xaa\xb7\x70\x5c\x1a\xa9\x4f\x05\x4c\x32\xb1\x70\x73\x57\xb4\xec\x9d\xd9\xef\x8b\xdf\x4e\x4e\xde\x88\x61\x58\xc4\x23\x11\xce\xcb\x89\x4c\xcb\x98\xb3\xd3\x68\x1e\x06\x53\x54\xc5\x9e\x4c\x64\x5e\xc8\x1c\x88\xa6\x59\x07\x55\xa9\x67\x3e\xdf\xdd\x89\x20\x70\xa4\x19\xb3\xb0\x28\xae\xb3\x3c\xf2\x5a\x98\xcf\x6e\x0b\x77\x49\x7a\x3b\x5c\xac\x2d\xb6\x45\xf0\x0b\xc0\xad\x48\xf7\xb0\xcc\xc2\x96\x19\x77\x5d\x04\x03\xbc\x4d\xb1\xdb\x4a\xb0\x2f\x05\xca\xd8\x1e\x24\x57\xc9\x42\x80\x19\x45\x08\xfd\x26\x35\x2a\x83\xab\x97\xcd\x64\xaa\xab\x63\x8c\x21\xd7\x4e\xb3\x63\xc3\x11\xea\xd1\x4c\x77\x3a\x74\x9e\xf3\x93\x45\x08\xec\xe0\xad\xcb\xf7\xea\x98\xb6\x5f\xef\xae\x76\xfb\x8b\x53\xf1\xfa\xd8\x85\xcc\x7a\x04\x52\xff\xa5\x71\x80\x36\xdd\xa1\x91\x30\xf8\x7e\x51\x78\xff\x12\x33\x1b\xf0\x19\xa6\x50\x04\x25\xa3\x49\x98\x5e\x38\x21\xb2\x30\x88\xd0\xab\x0c\xe9\x30\x97\xa2\xae\x69\x18\xef\xee\x4c\x5f\xd0\xd3\xb1\xea\x09\x2c\x61\xbf\x5d\x31\xc0\x5f\xbf\xcf\x0d\x9e\xd0\x76\x48\x46\x42\xcd\x2e\x4c\x23\x71\x2d\x45\x14\x47\x69\x50\x8a\x0b\x59\xb2\x48\x3f\xa4\x2b\xa4\x8c\x11\xac\x33\x04\x1a\x94\x49\x59\x8a\x96\x48\x71\x5a\x94\x32\x8c\x58\xa5\xdf\xe3\x72\xa2\x8a\x21\x15\x0e\xd9\x01\x9a\x65\x9f\x84\x25\x85\x7f\x19\x43\xe4\x56\xfd\x56\xea\x88\xa9\x7a\x15\xd1\xe9\x2c\x58\x77\x00\x85\xc9\x92\x03\x36\x25\x61\x21\x36\x84\xbc\x02\x3d\x69\x36\xbf\x98\x68\x5f\xe6\x62\x3e\x1a\xc9\xa2\x18\xcf\x13\x3d\x20\x5f\x57\xbd\x96\xd4\x89\xc9\x15\xbd\xd6\xb2\xab\x8c\xf3\x27\x35\x60\xcd\x67\x2b\xcb\x07\xf0\x29\xc4\xdd\x46\x7b\xf5\xfd\x78\x93\xcb\x59\x98\x4b\x42\x46\x6e\xbc\x62\x02\x77\xc3\x37\x4b\x26\x83\x0b\x59\xee\x24\xc9\x91\x5b\x10\x28\xd4\xd5\xcb\xfa\xdc\x55\x93\x68\xc0\x6b\x1b\xb6\xda\x9a\xbf\xda\xaa\x1b\x97\x48\xf8\x1a\xe1\xbe\xfe\xac\x28\xa9\x42\xc8\xba\xcf\x20\x3b\x29\xe5\x4d\x19\xc0\x83\xda\x5d\xb4\x13\x79\x53\xda\xe7\x74\xcf\x31\x6c\xf5\xc7\xd6\xc1\x8d\x89\xb6\x43\x3c\x62\x0e\x17\x63\x4f\x70\x13\x6d\xbf\x9e\x51\x91\xae\xa0\x46\xf7\x2b\xa9\x6f\xac\x22\x5d\x3f\x03\x7f\xe5\x59\x95\x1a\x93\x7b\x87\xc8\x0e\x7c\x74\xbb\x67\x4f\xab\xa5\x96\x5f\x5b\x0e\x7e\xec\x26\x32\x4c\xc5\x7c\xe6\x77\xc9\xae\x25\xbb\x75\xf7\xce\x75\x84\x61\x00\xf5\x05\xa7\x1b\x8c\x20\x72\x53\x82\x84\xbf\x15\x16\x22\x9b\xcd\x32\x0a\xf9\x17\x8a\x69\x98\xce\xc3\xc4\xa9\xd4\xf6\xc9\x58\x38\x54\x4f\xe3\x0a\xed\xda\x51\x9f\x9b\x88\xd7\x8a\x07\xa2\xc6\xa8\xcc\x18\x93\xc1\xb0\xa0\xb6\xd5\x96\x8b\xae\xad\xa7\x51\xb3\xb7\xbf\xf4\x12\x26\xd9\xb5\x48\xe4\x95\x4c\x44\x2a\x4b\xc5\xcc\x23\xe5\x2c\xfc\x85\xd1\xb6\x98\xde\xc2\xe0\x3c\xda\x8e\xbd\xf5\x91\xd4\x01\x0f\x50\x2d\x3f\x89\xa3\x48\x5d\x20\x79\x36\x15\xf3\x42\x11\x54\xc6\x9c\xb0\x76\x7a\x90\x62\x92\xcd\x93\x08\x2d\x44\xc6\x71\x4e\xd6\x5b\x01\x5a\x9c\x30\x18\x17\x2d\xec\x01\x55\x44\xae\xd1\x2e\x2b\x7a\xcd\x7e\xad\xc5\x2c\x79\x30\x06\xbb\x76\xf6\x96\xf5\x56\x4f\x7b\x22\x7b\xfc\x12\xd5\x07\xd8\x5f\x93\xb5\xb1\x22\x3b\xd4\x4d\x36\x06\x5e\xc6\xbd\xb1\x15\x33\x33\x2d\xe0\x1e\x52\x8f\x2e\xcb\x1c\x31\xd6\xac\xa6\x5f\x07\x77\xeb\xc7\x6d\x6e\x5c\xd5\x8c\xd6\x6c\x45\x4d\xbb\x46\x2c\xaf\x50\x9b\x2f\xb7\x43\x3b\x51\x24\x6e\x8a\x7c\x4c\x34\xd0\x7c\x87\xc0\x8f\x71\x81\xd8\x16\x65\x28\x57\x5e\x39\xa3\x5c\xcf\x32\x5d\x94\xc9\x3f\x4c\x92\x5b\x30\x5f\x32\xe9\xe9\x2a\x39\xe5\x90\x91\x72\x52\xca\x55\x24\x36\xd5\x67\xb1\x87\x23\x28\xad\x68\x7e\xa8\x51\x79\xe0\x2d\x60\xed\x32\x60\x8f\xea\x33\xc4\x25\x16\xdb\x06\x63\xae\xe3\x72\xb2\x9b\xcb\x48\xf1\xfb\x61\x02\x76\xb6\xbe\x38\x54\x73\xac\x6d\x8c\xb9\x83\xed\x54\x5f\xbb\x00\x01\xb8\x2f\x3d\xe7\xf7\x0b\xc0\x05\x5c\x5e\xab\xb6\x76\x9b\x2b\x1c\x4c\x9c\xe7\x2d\x37\x94\xb3\x01\xd6\x23\xbe\xce\xdb\x88\x75\x6f\xfd\xb8\xce\xc5\xb6\x9d\x6a\x8d\x4e\xdc\xc1\x18\x6d\x0a\x42\x41\x70\x1d\xac\x53\x60\x04\x85\x2c\x8f\xf8\xa0\x9c\x55\xe1\x61\x86\x1d\x03\x0b\x17\x4c\x27\x2c\xb6\xdb\x5b\x5d\x74\x6c\x2f\x73\x09\x7b\x8b\x56\x73\xe6\x5d\xca\x5b\xd7\xb4\x02\x2b\x39\xf6\x48\x9e\x0c\x09\xe8\x37\x44\x8c\xe5\x0f\x4b\x35\x26\x84\x5f\x8c\x0b\x27\xcb\xa0\xf9\xaf\xfe\x71\x7a\x29\x6f\xcf\xab\x11\xaa\xfd\xf1\x0e\x8d\x66\x24\x34\x4b\x5e\xbb\xe2\xce\x26\xf7\x2a\x8b\x05\x49\xac\x58\x52\x14\x87\x32\xdd\x57\x1e\x77\xb4\xc5\x3e\x8a\x43\x74\x60\xa4\x26\xf1\x98\x44\x58\x76\xc3\xd7\x4c\x38\x75\xbd\x0a\x0d\x47\xa5\xed\xc8\xb1\x10\x62\x7f\xa8\x6d\xb1\xb6\x56\xdf\xba\x01\x56\x87\x15\x5d\x0c\x68\x0d\xf3\xca\x20\xf2\xe2\x41\x55\x18\x59\x60\x75\xeb\x18\x60\x66\x99\x62\xc2\x30\x79\xca\xf8\x3d\xc8\x06\x26\x23\xf1\xe2\xf0\xf5\x9e\x7e\x16\xa1\xbb\x7f\xaa\x2e\x7f\xfd\xee\x01\x2a\x39\xca\xa6\xb3\x10\xc3\x6b\xb8\xe2\x07\xf1\x0a\x98\x92\xa7\x3d\xa7\xef\x5f\xe6\x25\x3d\xd8\x46\x61\x2a\x86\x12\x64\x8b\xb9\x2c\x14\x8f\x07\xc1\x9a\x3e\x14\x59\x1a\x40\xb4\x78\xf5\x72\x8a\x4b\x5d\x8f\x74\x64\xc3\x5b\xe3\x09\x1c\x98\x18\xa3\xfa\xd1\x10\x98\x83\xd8\x73\x0f\x5b\xdd\x43\x00\xd2\xd7\xc1\x68\x15\x21\x6c\x9e\x5d\x0b\x59\x8b\x83\xd5\x5d\x25\xc6\x61\x96\x67\x17\x39\x04\x08\xad\xee\x24\x1d\x75\x02\x22\x4b\x5f\x64\xd7\x69\x92\x85\xd1\x1b\xdd\xa6\x31\x5f\x8b\xde\xd6\x30\x8a\xf6\xae\x64\x5a\x6a\x77\x5f\x88\xb5\x00\x6d\x0d\x67\x54\xd3\x6f\xdd\x81\x39\x00\xbb\xdc\xc4\xee\xa1\x56\x26\xcd\x67\xaa\x29\x3c\x54\xb5\x15\x49\x1d\xec\x6f\x67\x0b\x20\xe7\xef\x50\xec\xaf\x66\x2e\x58\xb0\xe2\x94\xdc\xe1\x2a\x13\x62\x7b\x8b\x8f\x82\x93\xec\xd2\x89\x30\x64\x37\x88\x3f\x1a\x74\x69\xb5\x69\x4f\xbb\xd3\x94\x13\x99\x5a\x01\x63\x96\x62\x48\x59\x45\x2c\xe0\x8f\x0a\x39\xaf\x7d\x4a\x54\x1e\x13\x9e\xaa\xc4\x6c\x2f\x3e\x4e\x1c\xdd\x2d\xb2\x61\x38\xd8\x96\x73\x84\x9a\x58\xa8\x06\x26\xaa\x8e\x72\x32\x09\x83\xb9\x79\xcc\xad\x50\xdd\x33\x7a\x66\x73\xce\xcc\x91\x56\xa5\x51\x95\xd4\x5b\x22\x9f\x46\x8e\x40\xd4\x06\xfb\x7d\xa0\x85\x9a\x2b\x80\xaf\x71\xf0\x76\xab\x6b\x3e\xaa\xa6\x22\xf1\x54\xaa\x9b\x17\x7b\x2f\x77\xde\xbe\x3a\x79\xb7\x7b\x78\x70\xb2\x77\x70\xf2\xee\xe4\xdf\xdf\xec\xe9\x97\xbd\x2b\x99\x1d\x88\x80\x9b\xb0\xde\x74\xaf\xaf\xaf\xbb\x8a\xfa\x74\xe7\x79\x82\x7a\xcb\x28\xd0\x41\xb1\x39\x43\x40\xbd\xa8\x4e\xf6\xc7\x6f\xd3\x42\x96\xd6\xbb\x9c\x87\x28\x6e\xb8\x9d\x8c\xed\xe7\xe3\xc7\xa2\xb1\xd4\x97\x22\xdb\xcb\xab\xa1\x82\xe3\x37\x5e\x09\x56\x76\x21\xcb\x17\x48\x65\xb5\x2c\x9e\x59\xb1\x86\xf8\xc9\xb8\x72\x11\x89\xf0\xa8\xff\x5a\x43\x92\x0f\xcc\x3d\x6a\xe9\x8f\xda\xfc\x7f\xfd\x76\xa4\x7b\xc5\x4a\xf4\xc3\xdd\x50\xfa\x58\xf4\x6f\x26\x79\x50\xc9\x92\x42\x50\xe8\x38\xcd\x35\xf9\x87\x2b\x59\x37\xdd\xbc\xef\xd4\xd2\xcb\xfd\x4e\x5f\xcf\x2b\x13\x48\xb3\x48\x02\xf0\x20\x58\x7f\x00\xf4\x93\xb2\x9c\x05\x55\x3b\x7b\xbb\xaa\x26\x20\x07\x5d\x74\x26\x8d\x16\x55\x19\xd4\x6d\x0f\x69\x1c\xd9\x95\x48\xc2\x9e\xd3\x6a\x48\x6e\xad\x1f\x70\x83\x70\xeb\xf9\x2d\x8c\x9c\x10\x60\xe6\x50\xa3\xc0\x5d\x5c\xd9\x41\x39\x1e\xef\xab\xa2\x31\x51\xa0\xb4\x59\xa2\x66\x27\xd1\x0b\x26\xef\x6a\xac\xb3\xa4\x98\x32\xe0\x37\x15\xbf\x8c\x13\xd9\xdc\x75\x92\x0d\xb1\x10\x4b\xaa\xaa\x4d\xa6\x36\xba\xaf\xce\xcf\xcb\x3d\x86\x5d\xd5\x77\xd2\x1b\x42\xb5\xe6\xbe\xfc\xf4\x3f\x7e\x5f\x4b\x28\xcd\x72\xe2\xb5\x35\x9a\x28\x1e\xab\xdc\x9e\x97\xe3\xee\x0f\x4c\x47\xcf\xa1\xf4\x52\x09\xd5\x42\x4a\x49\x6b\x3e\x07\x40\xc5\x97\x2d\x83\xc7\xcb\x7f\x13\x99\xcb\xc5\x00\xe5\xef\xd1\xfd\x79\xf5\x98\x20\x47\xd8\x70\x4e\xb0\x90\xd0\x43\x9f\xff\x15\x32\x1c\x33\x82\x14\x99\x97\x1d\x82\x1a\x34\x33\xf1\x14\x1e\x1f\xe6\x05\xec\xae\x33\x27\x8f\x63\x17\xfd\x27\x62\x1f\xcc\xe1\xc5\x93\xbe\x17\x78\xaf\x71\xde\xda\x0c\xef\x89\xd8\xe1\x4a\xa5\x69\x9c\x24\xb1\x8e\x21\x54\x66\x28\xcc\xb4\x99\x15\x7a\x62\x7f\x8c\xe6\xb8\x99\xd8\x10\x2d\x22\x4b\x6d\x11\x52\x5f\xa6\x27\x7a\x11\xa0\x8b\x39\xb2\xe0\xb8\x22\x54\x63\x20\x36\x08\x10\x57\x60\x30\x10\xc1\xbf\x8e\x8f\x5e\x76\x4f\x0e\xff\xb1\x77\x80\x42\x24\xf7\xc9\xaf\x2a\x74\xdd\x2a\xaa\xd2\x34\xbc\x21\x8c\x7a\x05\xae\x3a\x03\xd1\xdd\xec\xe8\x2c\x5d\xdc\x99\x98\x59\x06\x78\x5e\xc6\xe4\x5c\xec\xf9\x49\x91\xd6\xe5\x6f\xdb\xe2\xe9\x06\xa8\x5d\xe8\xc3\x4f\xe2\x19\x04\x26\x62\x49\x4b\x34\x91\xd6\x9a\x61\x4d\xac\x47\xd9\x74\x9a\xa5\x03\xdd\xb1\x26\x9c\x83\x2a\x9e\x77\x44\x29\x6f\xca\xfe\x2c\x01\x5b\xaa\x27\xfd\x27\x81\x33\x80\x2b\x79\x38\x0d\xf0\xa1\x1e\x74\x40\xd5\x02\xee\x46\x32\x8c\x82\xf3\x6a\x7e\x8f\xd7\xa0\xa8\x3c\xc8\x80\xc0\xa2\xd6\x92\xe6\xe9\xc3\x7c\x8a\xa5\xe7\xda\x33\x85\x7c\x0a\xfc\x91\x67\xe4\xd7\x34\x9b\xe3\x3f\x0a\x19\x9b\x07\xfe\x3d\x2e\x27\x0f\x1a\x1a\x87\xc3\xa4\xbf\x75\x6c\x59\xdb\x42\x56\x31\x1f\xd0\xdd\x7e\xa6\x55\x87\x93\x1a\xc3\xad\xeb\x14\x31\xc3\x09\x7c\x18\xf8\x56\x0f\xf0\xb1\xaf\x4b\x4d\x75\x76\xa3\xf3\xea\xfa\xb3\x9f\xf1\x44\x3d\x44\x0b\x11\x8a\xf7\xd8\xcd\x7b\x08\xcc\xcd\x35\x24\x26\xb8\xb3\xf1\xd2\xeb\xf9\x19\x47\xe1\x35\xbb\x3f\xde\x65\xcd\x8e\x74\x65\xd7\xc2\x62\xc9\x63\xaa\xe6\xb1\x44\x7d\xdb\xfe\xda\x0e\x3b\x69\xdc\xd7\xc9\x3c\x83\xe5\x6a\xd1\x39\xa9\x64\x7e\x25\x75\x8a\x8d\xd2\x04\xd8\x98\x83\xeb\x37\xb2\x36\x55\xc7\xce\xac\x29\x2e\x07\x2a\x6c\x63\x9d\x72\x70\xae\x65\x0a\xee\xdb\x84\xdb\xff\x92\x25\x09\x3a\x6d\xea\x60\x0f\xd8\xda\xa4\x74\x5a\xea\xf4\xa5\xad\x4f\x34\x5b\xe5\x2c\xea\x2a\xcb\xbf\x65\x2c\xb5\xf6\xd2\x62\x9e\x5b\x3f\x3c\x79\x13\xe3\x73\xca\x35\x3e\xa9\x58\xa3\x60\xd0\x42\xdb\x8d\x4d\x95\xa3\xd7\x9b\x12\xc3\x70\x63\x17\x08\xcb\xc3\x33\xc1\x38\xdb\x1c\x59\x0d\xa6\x3b\x96\xfb\xd1\xe7\x29\x55\x21\x9b\xcf\x4b\x08\x10\x9f\x0a\xe3\x90\x59\x33\x15\x7e\xec\xeb\x06\xec\x21\x25\xc5\x39\xd6\x82\x74\xea\x58\x66\x9c\x2f\xa8\xc9\xc1\x73\xa9\x1b\xd6\x6e\xa2\xae\x8a\xda\xd5\x11\x3f\x70\x0d\x55\xd0\x05\xe7\x34\x9e\x1b\x1b\x1b\x6f\xb0\x5d\x80\xc1\xa5\x83\xc2\x8a\x5c\xbd\xc9\xd0\x2c\x38\x27\xa3\x41\x66\xaf\x2f\x66\x57\x43\x1f\xee\xee\x2c\x71\xb5\x8f\x89\xea\x0b\x43\x63\x5d\x45\xc4\x41\x6f\x09\x88\x83\x32\x87\x98\x4c\x5e\xbc\x8f\x07\x61\x73\x05\x11\x49\x6b\xae\x31\x91\x85\xc9\x58\x80\x8d\x5e\xad\x6a\x88\x8d\x89\xa7\xff\xae\xe2\xa5\x13\x72\xc3\x00\x67\xd3\x5a\x5b\x0d\xff\x3d\xbb\xca\xd8\x72\x7c\x40\x07\xd5\x96\x62\xf3\x32\x37\x7b\xcb\x9a\xc9\x35\x44\x85\x9c\xb9\x7b\xc8\x5a\x2d\x5f\x2d\x2d\xb4\x51\xc3\xa0\x9c\x4d\xfd\xd5\xab\x6c\x11\x4e\xce\x29\x5b\xbc\xc0\x4d\x0d\x3a\x8b\x2a\xf8\xcb\xbe\x7c\xe9\xf5\xf2\x13\x2b\xeb\x89\x91\x68\x3b\x88\x04\xf7\x48\xfc\x45\x8b\xfa\xa9\x12\xa3\xfa\x3c\x62\x78\x1a\xbb\x14\xe2\x62\x84\xa9\x8c\xbb\xd6\x20\x75\x12\x8f\x26\xc4\xc3\xea\x10\x09\x38\xb3\xae\x75\x02\x86\x3c\xe7\x32\xbf\x80\x6b\xeb\x3a\x33\xd7\x16\x45\xfa\xa0\x7c\xfc\x65\x76\x01\xee\x8b\xcd\x29\xce\xb1\xdd\xe6\x82\xb2\xa7\x0d\x7e\xca\x07\xf2\x5a\xe7\x38\xb0\xa9\xc0\x40\x41\xaf\xe1\xa2\xf6\x18\xb0\xc0\x0c\xb3\xf0\x26\x83\xa5\x20\x6a\x45\x6d\xb4\x2c\xf6\xa9\x8d\xd3\x82\xcf\x9f\x6e\x14\x17\xe1\x30\x91\xdd\x54\xde\x94\xdd\x24\x4e\x65\xf5\x41\x64\xe9\xfd\x53\x43\xaf\x9e\x9a\xcb\x4a\xd4\x86\x78\x36\x9e\xd0\x73\xf9\x32\xcf\xa6\x08\xcd\xd3\x7f\xc8\x5b\x48\x79\x19\xcc\xf3\x04\xdc\xe1\x81\x48\x22\x21\x56\xaf\x61\xf5\x97\x42\xda\xe0\xdc\x74\x0c\x93\x79\x21\xe5\xec\x8d\xf1\x18\x34\xbd\x10\xfa\x6a\xef\x7f\xe3\x50\xcf\x9a\x13\x2d\x3d\xc9\x3c\x08\x88\x9d\x27\xa3\x41\x70\xab\x47\x90\xfc\xab\xd0\xfb\x46\x1a\x0a\x03\xb1\xb5\x00\xd4\x5a\x73\x6d\x1e\xa0\xea\x78\xda\x24\x00\x14\xe9\x11\xfa\xf5\x5b\x3d\x86\xfa\xed\xbe\xa6\x4c\x7f\xee\x1b\x4a\x55\xf4\x05\xea\xf8\xcd\xd7\x1b\x98\x0e\xfc\xf7\x95\xaa\xee\xbe\x9f\x28\x34\xc1\x91\x8c\xe2\x5c\xe1\x3c\xdc\x98\x65\x39\x03\xc7\x58\xd3\x0f\x44\x6f\xa0\x4f\x22\x60\x1c\xa4\xfa\x59\x64\xa3\x4b\x59\x82\x21\xb3\xaa\x7e\x5e\x7b\x3d\xd7\xe1\x43\xc7\x79\xd4\x39\xc5\xad\x59\x9e\xcd\x1c\x4a\xed\xe8\x31\x9e\x9e\xaa\xf2\xf3\x46\x19\xa5\xc6\x5a\xaa\xb6\xed\x36\xab\x44\xd3\xac\x82\xdb\x80\x7b\x1d\xef\xa8\xb9\x35\xaa\x40\x7b\x02\x15\x07\x8a\x76\x33\xb4\xd8\xcc\x64\x63\xd7\x47\x19\xcb\x3b\xee\x64\xbc\x74\x18\x5f\x69\xa9\x1a\x13\x1b\x3b\xa0\x7d\xea\x94\x96\xcd\x61\xf3\xd3\xe6\xb0\xb9\xf2\x76\xd7\xd1\x0a\xb6\xd7\x7e\xf1\x9f\x82\x9d\x7f\xde\x5a\x00\x57\x7a\x13\x67\x9a\xbc\xd6\x9d\x55\x6c\xa7\x63\x24\x34\x1c\x8f\xb6\x5b\xab\x6e\x55\xf9\x98\xe0\x8f\x49\x63\x1e\xea\xab\x59\xb5\xbf\x94\xb7\x85\x3e\x2c\xba\xcf\x71\x9c\x28\xde\xd7\x8a\x2a\xe0\xf7\x8e\x06\xdb\x0b\x3d\xa1\x39\x66\x5d\xec\x86\x99\xc0\x44\xd1\xc6\x9d\xa4\x16\x25\x0c\x70\x9c\xa7\xd4\xdf\x5e\xfc\xf7\x46\x08\x13\x6c\x88\x82\xcf\x7e\x4e\x24\x8a\x46\x07\x9a\x05\xee\x33\xd5\x04\xb4\xee\x00\xd5\x72\x2b\xa0\x71\xdf\xf2\x6e\x3b\xaf\xd0\x34\x62\x6c\x93\xdb\x80\x15\x34\x04\x3c\xa5\x64\xdd\x45\x19\x52\xb8\x39\x1d\xb3\xb5\x9e\x5f\xd4\x35\x77\xad\xe8\x43\x5b\x43\x10\x1f\xa5\xe5\x1d\xba\xa6\x2f\x0e\x82\xfe\x5b\x6e\x3f\x46\x54\x01\xe1\x6f\x8d\x84\xca\xad\xb4\x65\xaa\x38\xc9\x92\xb7\xad\xe4\x94\x14\x4e\x90\xea\xa5\x26\x89\x79\xc7\x7d\xf5\x35\x57\x3c\xa3\xb0\xb3\x4b\x64\x48\x4b\x98\x6a\x2e\x17\x32\xbc\x3e\xae\x4e\x5c\x18\xb9\x08\x92\xa2\x48\xc7\x39\x63\x0b\xd0\xa6\x95\x83\x05\xe3\xd9\x5d\x0c\x66\x30\x67\xb3\x1a\xc1\xcf\x72\x35\x41\xbf\x2f\x76\x92\x24\xbb\xc6\x34\xc6\xb0\x2f\x01\x45\x8a\xed\x2b\x9e\xf2\x54\x5f\xd5\xe7\x6d\x11\x8a\x24\x14\x63\xa9\x16\x60\xe7\xcd\xfe\x59\x5a\x43\x25\xea\x95\x0c\x86\xbd\xb6\x19\x7b\x36\xcf\x19\x0b\x2e\x98\xd7\x8b\x53\x6b\xe3\xbc\x26\xac\xa6\x17\x58\x9a\xf5\x43\x2f\x39\x53\x81\x3f\x25\x9c\x75\xd5\x93\x62\x52\xa2\x63\xa9\xd1\x97\x44\x38\x9e\x34\xd2\x13\x9c\x38\x5f\xad\x1c\xc4\xf8\xe5\xf8\x81\x88\x38\xe5\xe3\x90\x2c\xeb\xb7\xae\x72\x73\xf7\x0d\x9d\x80\x18\x89\xaf\x50\xbf\x2f\x7e\xcb\xb2\x4b\x31\x9f\xb9\x59\xc7\xa7\x71\x14\x25\xf2\x3a\xcc\xa5\x79\x19\x4d\x42\x70\xc5\x3b\xf5\xe8\x4e\xc7\x9a\x6a\xd8\xe7\x0a\xd9\xad\x88\x6d\xf6\x86\xc6\x30\xa9\xee\x72\x57\x4e\xb0\x46\x68\x9b\xc7\xd9\xa4\x79\x48\x8b\x49\x3c\xd6\x26\x7a\xec\xa4\x2a\xfa\x61\x7e\xd8\xe5\x53\xe0\xf6\xa8\x11\xaf\xd1\x63\xc9\xf5\xf9\x67\x93\x68\x7f\xcb\xb9\x3d\xea\x20\x24\xa9\x43\x05\xc4\xd9\xbc\x98\xe8\xa7\xd5\x8a\x00\x82\x1b\xf3\xa7\x43\x47\x69\xcd\xb0\x2f\x2f\x15\x9c\xdd\x03\xc7\x8a\x08\xeb\xe2\xb2\xb4\x3b\xc2\xf9\xd9\xe6\xa8\xa1\x23\x38\x61\x63\x93\x60\xdd\xa7\x40\x17\xb2\x7c\x9b\xc7\x9c\x00\xe1\x17\x97\xfe\x3c\xec\x24\x9a\xc1\x8d\x1f\x9b\x25\x0b\x2b\x7b\xb2\xd5\x05\x64\x31\xb3\x00\x6f\x22\x08\x7a\x23\xc2\x24\x0e\x0b\x4a\x88\x68\xd2\x03\x19\x92\x8c\x47\xa7\x58\x55\xf1\xa5\x5e\xb0\x60\xa0\x58\x3c\x4c\x07\x66\xe8\xb3\x6a\xd2\x4d\xc3\xa9\x2c\x34\x61\xf6\x16\x9c\xa9\xa8\x4c\xb4\x7a\xb6\x2c\xbe\xee\x10\xd6\x58\x5f\x09\x5c\xb8\xcd\x69\x66\xc7\xb2\x57\xd8\xfb\x80\xfe\x35\x12\xb5\x79\x8e\x21\x79\x34\x97\xd9\x36\xe1\xd8\xbf\xa2\x76\xee\x0b\x2c\x0a\x1a\x95\xfc\x29\x4b\x63\x3e\xa0\xf3\x95\x95\x95\xd6\xac\x56\x45\xe8\x05\xf3\x59\x12\x29\x77\x87\x69\xde\x0a\x1b\x06\xd0\xea\x99\xd0\x24\x16\x82\xa0\xaa\xd2\x99\x24\x09\x20\x9a\xb7\x82\xc1\x20\x13\xfe\x8d\x92\xb0\x28\x6a\x42\x8f\x6e\xbb\x21\xe9\x79\x30\x7a\xce\xba\x91\xa4\x79\xea\xf8\x7d\xf0\x0c\x08\x70\xd8\xb5\x5f\x07\xd0\x14\x6c\x52\x63\xf2\xc4\xa9\x87\x35\xe9\x70\x3c\xad\x03\xd2\x5d\x8a\x75\xba\x37\xf5\x28\xcf\x45\x30\x00\xff\x15\xe7\xeb\xc0\x39\xed\x95\x81\x6d\x9a\x7d\x9e\x0e\xa2\xb2\x2b\xd8\x6e\xc1\x7b\xa1\x46\xdd\xda\x67\x4a\xd6\x9a\xbd\x03\x41\x53\xdd\x06\x92\x61\xf1\x9c\xdc\xcb\x6a\x5d\xd0\xb2\xb1\xb3\xb1\x0b\x37\xd3\x86\x6d\x97\x37\x72\x34\x2f\x75\x96\x13\xfd\x83\xdb\x26\xd7\x6c\x2c\xc0\xd9\xd2\xb5\x99\x4e\x96\xb8\x3c\xd3\xcf\x5a\xbd\xb5\xb0\x4d\xc7\x76\x72\x3b\xd3\x5e\x54\xa6\x11\x24\xc9\x1d\xaa\x17\x87\x01\x23\x70\x2e\x1f\x72\x6d\x54\x2c\xc3\x1b\x73\x01\x11\x7e\xd9\x8b\xad\xd6\xfd\x9e\x8a\xf7\x68\x2c\xed\x3d\xe8\x07\x6c\x7f\x63\x7a\xa1\x0f\x5b\x15\x31\x42\xa9\xd6\x80\x58\x2f\xcc\x26\xa2\xfb\xb4\x7a\xb5\xba\x53\x40\x0b\x05\x4a\x69\x4f\x4d\x83\x26\xb3\xbe\xd2\x5c\x87\x26\x76\x95\xe7\xee\xf3\xdf\x37\x75\xe5\xdd\xd3\x52\x78\x47\x72\xab\x6e\xbe\x2e\x58\x4c\x97\xf1\xa5\x54\xfd\xbb\xae\xf9\xb2\x3e\xe9\x9e\x6e\xde\x39\xf1\x15\xbd\x3d\xc3\x36\xa4\xd1\xce\x1a\x22\x6a\xb1\x12\xd7\x04\xc6\x66\x50\x40\x25\x85\x7f\xce\xb2\xb4\x0c\xe3\x54\x2b\x53\xdc\x63\x19\xa6\x11\xc3\x49\x68\xd0\xe1\xa9\xa7\x31\xd6\x34\xae\x04\xc6\xe4\x72\xda\xd7\xad\x41\x91\xcd\xf3\x91\xe3\xbe\x8e\x5f\x9c\x84\x65\x9a\xce\xb8\x78\x67\xf7\x14\x4f\xa3\xcd\xc8\xa3\xf1\x70\x64\xd9\x49\x4d\x89\x46\x76\x4f\xfd\x88\x27\xd0\xef\x00\xff\xe9\xf0\x66\x03\xfa\xd7\xdc\x52\x8b\xc8\x21\xc0\xb2\xe4\xaa\x3a\xbe\x4d\xcb\x70\x54\xc6\x23\x51\xcc\x2f\xc2\x1c\x78\xab\x38\xbd\xca\x2e\x15\xb1\x67\x0b\xac\xd6\x5b\xde\xcc\x42\x4c\x13\x19\xa6\x98\xc7\x14\x9f\xa0\x26\x0f\xac\xa1\x72\xbb\xa8\x7a\x57\x83\x8e\xc2\x42\x8a\x6b\xf0\xeb\x1c\x82\x8d\x84\xfa\xf8\x5e\xd3\x3c\x86\x78\x90\xdc\xf4\xbd\xed\x43\xbc\x7f\xff\xfe\x03\x52\x4a\xc6\x8b\xb4\x6e\x3a\xe2\xb6\x23\xfe\xa0\x08\x2d\x4f\x9c\x84\xb7\xa7\x9b\x1d\xf1\xb4\x23\x9e\xc1\xf3\x46\x35\x73\x32\xa6\x42\xf6\xd8\x2d\xd3\xb7\x19\x08\x5c\xf9\xdf\x17\x33\x75\xb2\xdf\xe3\x33\x9f\x9e\xd3\x9a\xd4\xe7\xb2\x7b\x9d\xc7\x65\x29\xd3\x7a\xf0\xb0\xad\xd9\x75\x0e\x63\xbb\x65\x80\xaa\x1b\xbb\x7a\x07\x28\xf4\x1d\x86\xa3\x4b\x4f\x7f\x67\x2a\x2c\x4f\xc2\x81\xc0\xe8\x7e\xdc\xcb\x99\xc5\xcf\x09\x67\xad\x30\xcf\x2b\x91\xbe\xa9\x99\xb7\x72\x39\x63\x8c\x3e\xc7\xfa\x7e\x18\xa7\x51\xbd\xb9\xbd\x2a\x31\xd5\x80\xc9\xf2\x12\xb0\x64\xb9\xec\xc3\xf7\xe5\xf2\x33\xa8\xeb\x0b\xd1\x1a\xed\xa8\x9a\xcc\xa8\x6c\x72\xa1\xd5\x05\x6d\xd4\xd5\xc3\xe4\x6c\x7a\x9b\xc5\x47\xe8\xfc\x5e\xec\x34\x8b\xf7\xf8\xfd\x8f\xca\xe6\x7d\xaa\xd6\x72\xc6\xe6\x34\x8b\x52\xd6\x53\x42\x68\x10\x18\xb9\x75\x6d\xf0\x68\x3d\xe4\x36\xec\x54\xab\x41\x88\xd5\xd1\x7d\x32\x61\xcc\x6e\x36\xbb\x45\x69\x94\xad\xaf\x8e\x3b\x9b\x28\x89\xba\xe5\x4d\x29\xd3\xc8\xc8\x12\x3b\xfe\x13\xa1\xb1\x77\x3d\x91\xd5\x7a\xf5\x3a\xa1\x25\xd6\xe5\xe6\x22\xed\xeb\x7d\x2e\xd9\x66\x99\x75\x40\x9b\x2e\x3c\x65\xea\x9e\x37\x3a\x0b\x45\xbf\x6b\x97\xbf\x30\x11\xeb\xf7\x6e\x66\x59\x21\x09\x97\x81\xed\x03\x1b\x59\x10\xdd\xe1\xcf\x38\x9d\xc8\x3c\xa6\x89\xe0\xda\x69\xcc\xd7\xcf\x0c\xe8\xe9\x65\x38\x2a\xb3\x1c\xa9\x2d\x8c\xaa\x68\x30\x47\x91\x42\x37\x47\x98\xaa\x99\x98\xea\x25\xb7\xfa\xcc\xbb\x13\xe1\x0f\x7f\xec\xd5\xbe\xfc\xbd\x6e\x9c\x67\x3a\xcd\x97\x38\xed\xc7\xfc\x12\xd2\xe0\xd5\x71\xe1\x64\xf3\xc8\x98\x71\x5e\xf7\x84\x6e\xd8\xa6\x06\xa8\x0e\xb6\xad\x6a\x0d\x2b\x6b\xed\x2a\x39\xcc\x61\x92\xf4\x91\x6e\xea\x7e\xc2\x24\xe1\xab\x48\x8e\x1e\x8a\x2f\x2b\xdc\xc5\xd3\x62\x33\xa7\x06\x2d\x0b\x76\x85\x1d\xd7\x53\x3d\x2c\x6b\x0a\x6e\x15\x72\x24\x40\x99\xaf\xa2\xba\xd9\xd8\x22\xea\x14\x9c\xf0\x0a\x75\x8b\xdf\x88\x38\x05\x1e\xfe\x18\x12\xd1\xf9\xfd\xe9\x5d\x64\xfd\x3e\xea\x3c\xaa\x8c\xc9\x80\x4c\xe2\x61\x3f\x24\x8a\xfb\xa8\xf3\x88\xc6\x42\xf4\x07\x93\x91\x00\x4b\xcf\x6a\xd2\x43\xc7\xa9\x22\x88\x3b\xf3\x72\x82\x3b\x88\xdc\x2c\x2d\x1d\x6d\x55\x9d\x34\x71\x5e\x98\x57\xfd\xf6\xdf\x1a\x35\x5b\xc6\xc6\xcf\x8b\xf8\xd4\xa8\x8b\x32\x6c\xbe\x63\xef\xb4\xb8\x33\xf1\xfe\x17\x19\xe6\x32\x17\xdf\x7c\x84\xa6\xf7\xef\xcf\x2a\x56\x48\xfc\xe6\x84\xce\x90\xa5\x03\xe2\x52\xbd\x24\x15\xf5\xf8\xc6\xd3\x46\xc1\x2a\xa4\x61\x52\xf4\x71\x09\x99\x36\x2a\x92\x37\x32\xc2\x9b\xa5\xb1\x51\x8c\xb5\xc8\xc6\xc8\x1a\x24\x67\xab\x35\x2f\xb3\x6e\x43\x0f\xc0\xdf\xa1\xcc\x67\x1f\x02\x49\x2e\xe8\x05\xea\x76\x51\xda\xd2\x8d\x8b\x2e\xcd\xd8\x7a\xcb\x61\xbc\x83\xbf\x67\x28\x97\x3e\x87\x80\x8e\xa6\x70\xef\xf8\xd9\xbb\xe3\x93\xa3\xfd\x83\x5f\x8f\xc5\xb6\x37\xed\x35\xad\xa2\x25\xa8\x54\xbd\xdd\x93\x77\xaf\xf7\x4e\x7e\x3b\x7c\xa1\xb3\xe9\xbb\x50\xb6\x02\xd5\x7b\xd0\x11\x41\xc7\x9e\xf3\xf7\xe0\x51\xc3\x6e\x32\x55\xe7\xbd\xd0\x6a\x83\x7e\xdf\x64\x0a\x29\x47\xcf\x7e\xec\x51\xc6\xf0\x38\xeb\xcb\xd1\x34\x7c\xfa\xfd\xd3\xfe\x5f\x0a\x39\xea\x86\x35\x9d\x9c\xa5\xdf\xb4\x3e\x8a\x32\xcc\x2f\x64\x39\x10\x01\x8c\x13\x74\x30\xe4\xd3\x00\x24\x16\x1d\x45\xb7\x47\x32\x1a\x38\x33\xbd\xbb\x13\x6b\xee\x6c\xb4\x04\x4b\xf5\xca\x1c\x0f\x20\xf8\x65\x21\x15\xa3\xc1\xa5\xd2\x3a\xae\x9d\x59\x59\xf4\x46\xf3\x36\x1e\x9e\x65\xed\x8e\x30\xed\x5d\x97\x4d\xf1\x5c\xad\x92\x18\xd8\x72\x6b\x89\x5d\x1f\xe9\xf0\x41\x28\xfc\xcd\x34\x9c\x2d\x41\x9a\xb8\x24\x11\x49\xd0\xee\x4d\xc3\x59\x15\xf9\x7e\x0b\x0b\x88\xb0\x21\x8b\x63\xf2\x38\x5e\x09\x0b\x27\x61\x81\xa6\x7a\xb2\xe8\x92\xac\xb8\x0e\xb5\xdf\x16\xb2\x38\xc9\xd0\x4a\x69\xb5\x8e\xe7\x85\x2c\xba\x65\xa6\x93\xbc\x58\x1c\xff\x6d\xe7\xf8\xdd\xf1\x9b\xbd\xdd\xfd\xbd\xe3\x77\xc7\x6f\xdf\xbc\x39\x3c\x3a\x71\x11\xb4\x32\x93\x56\x30\x0d\xd1\xa5\x4f\xdd\xf1\x2f\xbf\xfd\xb1\x2b\xe2\xa2\x98\x4b\xec\xef\xed\xf1\xde\xf1\xbb\x93\xc3\x77\xaf\xf6\x0e\x7e\x3d\xf9\xcd\xed\x8a\x83\x6d\x7b\xa9\xc7\xf4\x69\x38\xfb\x6c\x44\x9f\x86\x33\x68\x8b\xf9\xcb\x22\x78\x03\xb2\x64\x0c\x3f\xff\x4c\x4b\xfd\x90\xc3\xb0\x56\xb7\x60\xea\x54\x78\x13\xd7\xc7\x62\x1a\xce\xd8\xa9\x98\x86\x33\xf3\xc4\x19\xa7\xa2\xff\x44\x60\x78\x80\x9d\xfc\x42\x3c\xe9\xfb\xa7\x44\x21\x22\x1c\x85\x8e\xb0\x8d\x3a\xec\xe5\x8a\xbb\x29\xfe\x26\x36\xc5\x73\x57\xe5\x39\x60\x0e\xce\xfe\xd9\x50\xdb\x74\x2d\x93\xe4\x1f\x69\x76\x9d\x1e\xdf\x4e\x87\x99\xef\xd0\x61\x91\x48\xd5\xeb\x5e\xaa\x8a\xdd\x02\x6a\x32\xd4\x39\x39\x24\xb2\xf0\xee\x64\xe7\x57\xb1\xed\xf7\xd9\x0a\xb4\xa8\xf5\x24\xb4\x6f\x99\x12\xb5\xc9\x64\xfe\xa8\x7e\x9d\x3a\xfd\x9c\x8b\x6d\x11\xfc\x11\xd4\x73\x16\x24\xb9\x2d\xc1\xf3\xdc\x71\x5c\xfd\xe3\x3c\xb0\x93\x73\x3a\x64\x58\xdd\x78\x99\xa0\x60\xba\x5b\x86\x17\x95\x53\x07\x2c\x6f\x36\x3e\x0a\xaf\x1b\x3b\xa0\x2a\xdd\x3c\xbc\x36\xcd\xfe\x4b\xd6\x57\x71\x86\xc7\xcf\xc4\x75\x9e\xa5\x17\x62\x22\x73\x3a\x92\xbb\x87\x47\x47\x7b\xbb\x27\xef\x76\x8e\x7e\x7d\xfb\x7a\xef\xe0\x44\xdd\x57\x76\x5a\x56\xea\xc3\x83\xce\x1a\x64\xda\x12\xf7\xad\xb6\x5a\x6c\x75\x2e\xe8\x5b\xa0\x4f\xed\x98\xb0\x12\x58\xfc\xfd\xbd\xcd\x4d\x81\x4c\x9c\xd8\x81\x60\x7f\xe2\x85\x4c\x63\x9d\x7d\x55\xbb\x1c\xdd\xfe\x2a\x1d\x73\x82\x56\x5c\xf2\x90\x31\xcc\x49\x50\xbf\x7d\x4a\x1b\x97\xc5\xfa\x04\xaa\x2e\xc9\x2f\x50\x4e\x67\xe5\x2d\xb9\x05\x1a\xb6\xfe\x42\x96\xf0\xde\x28\x43\x32\x14\xde\x3b\xfe\x7e\x5d\xbc\x6f\xf4\x8a\x7e\x5f\x83\x6e\xf5\x78\xf4\x9c\xe3\xc4\xc0\x99\x08\x7b\xbe\x1e\x76\xd4\xd0\x1d\x32\x57\xe6\xc2\xb2\xb8\xac\xde\x66\x6f\xad\xeb\xf6\x40\x57\x48\xe7\x49\xa2\xca\x0e\xe6\x49\x12\x9c\x69\x1f\x83\x9f\x7f\x66\xbb\x0e\x62\x2a\x2c\x1a\x08\x62\x35\x5b\x6a\xc6\xdb\xb4\xd0\xad\x43\x63\x2d\xa6\xc0\xeb\xb8\x53\xa2\x7d\x25\x23\x0a\xf1\x5c\x41\x6c\x06\x1a\xce\xe3\xa4\x8c\x53\x7f\x94\x2a\x32\xf1\xf5\x68\x1d\xb6\x4d\x07\x0a\x15\x0d\x1a\x19\x54\xd1\xfd\xb4\x70\x61\x5c\x54\x3c\x24\x88\x10\x62\x70\x63\xa7\x59\x1d\x02\x9f\x20\xa5\x70\x23\x70\x3c\xe7\x58\x09\xa1\x0c\x69\xb5\xeb\xc5\x3d\x5f\x89\x38\x2c\xa3\x0c\xec\x9a\x6b\xc6\x3f\xba\xec\xd4\xdb\x08\x73\xe6\x50\xec\x8e\x15\xef\xbe\xac\xda\x31\x02\xfe\x00\xbc\xfe\x78\x6f\x35\x66\x83\xe5\x1a\x33\x4d\x7b\x21\xb8\x1b\xce\x14\x19\x37\xb1\x2e\x02\xa0\xc7\xf7\x5f\x87\x26\xe7\x12\x4f\x4b\x63\x73\x5d\x81\x3d\x2c\x8c\x22\xb0\xbe\x05\x4e\xa5\x6b\xc6\x7d\xc8\x96\x7d\x89\x3d\x02\xf7\x9a\xda\x35\x32\x8b\x8e\x53\x6a\xf9\xe0\x74\x84\xb9\x07\x82\x8e\x99\x68\x47\x7c\x14\xf3\xb4\x08\xc7\x12\x19\x18\xa3\x84\xa1\xed\xb8\x48\xb2\x61\xd8\x7c\x2d\x61\x71\xd3\x03\x1f\x4b\x7b\x56\x71\x46\x9d\x3e\x6c\x5f\x16\x49\x83\x5b\xc8\x8c\x75\x44\x91\x8f\x3a\x82\x2c\x1e\x68\x25\xd4\x5d\xd3\xa2\x5c\x72\x22\x4e\x55\x95\xb6\x5d\x1e\xdd\x10\x82\x6b\x15\xf9\x08\xee\x0e\xdb\x05\x27\xc4\x58\x75\x21\xb1\xb8\x90\xe5\x2f\x8a\x0e\xee\xa7\xcd\x4b\x25\xcb\x2e\xd0\xca\x2e\x8b\x10\x8e\xc0\x90\xbd\xef\xed\x6b\x98\xe7\x32\xdc\xc3\x36\x5d\xca\xf8\x74\xfb\x85\x58\x09\x8c\xfa\x72\xbc\x7b\xb4\xff\xe6\xe4\xf0\xe8\xb8\xb1\x75\x24\x0b\xb8\xba\xb3\xbc\x60\x2c\x08\x31\xba\x75\xcc\x07\xf1\xce\xcb\xb7\x72\xf7\xf0\xe0\xf8\xe4\xe8\xed\xee\xc9\xe1\xd1\xbb\x83\x9d\xd7\x7b\xec\x92\xdc\xcd\xd2\xa2\xcc\xe7\x23\x78\xe1\xb1\xc5\xae\xb6\xe1\x8e\x2a\x6c\x65\xd1\x17\xba\xb2\xd4\xbd\x31\x4b\x27\xc8\x67\xff\xf8\xb1\x33\xe6\xe3\xc7\x62\x8d\xfd\x3e\xa5\xe9\x9e\x1b\x46\xdc\xed\xbc\xc5\xea\x76\xf4\xda\x74\x7c\xd3\xe1\x79\x1e\x0e\x13\x3a\x76\xc6\x66\x03\x5e\x16\xb5\x9c\x16\x28\x7f\x8d\x6c\xa6\xcd\x75\x8d\x75\x82\x2e\x97\x6f\x72\x00\x62\x19\x16\x80\x9c\xb4\x62\x2b\x12\xce\xc6\xbc\x6e\xdb\xd3\x75\x32\x15\xfa\x7e\x3a\xca\xf2\x5c\x93\x75\x4c\x57\xf2\xdc\xa4\x90\x10\x01\x5a\x3e\xa8\xbf\xe3\xf4\x4a\x67\xec\xd4\xa6\x81\x86\xc3\xd9\x6a\x9e\xc0\xc7\xfb\x2f\xf5\x0a\x01\x71\x13\x3c\xc4\xb3\xdc\x77\x85\x63\xa2\x26\x5d\x83\xa1\xf5\xfe\xc9\xde\xd1\xce\xc9\xe1\x51\x1d\x5e\xeb\xfa\x56\xab\xa3\x9e\x83\x6f\x8c\x72\x60\x5b\x78\x4f\x55\x7d\x51\x8c\x26\x72\x74\x29\xac\x03\x04\xd6\x13\xba\xbf\x85\x67\xc4\xb0\x8e\x96\x47\x5c\x73\x78\xc4\xc7\x8f\x45\xcb\xcc\xb5\x87\x3d\x2b\x26\x31\x86\x50\xe4\x2e\x88\xa7\x7a\x7a\xe7\x54\xa5\xed\x5e\xc5\x0f\xe1\x5a\x3e\x65\x8d\xbf\xd4\xfb\x67\xe5\x5d\x5a\x6d\x69\xd5\x99\x80\x75\xe5\xb1\xbf\xec\x1b\xc3\x2c\x1a\x1e\x8c\xbb\x3b\xf5\x31\xf8\xf9\x67\x33\x92\x2d\x30\x0b\x72\xaa\xd9\x9e\xb8\x6c\x9f\xbb\x8b\x1c\xa6\x4b\x64\x98\x61\xca\x65\x97\x88\x41\x61\x92\x88\x22\x53\x5c\x85\xe2\x55\xb2\xd4\x20\x8f\x28\x4a\x39\xa3\xdc\xfd\xe1\x58\x8a\x51\x92\x15\x54\x85\x1e\x57\x0b\x57\x00\x3b\xe9\x88\x71\x6a\x72\x1b\xed\x1d\x9c\x1c\xed\xef\x1d\x37\xbe\xba\xa8\x5c\x3c\x17\xe3\xb4\xa5\x27\x43\xd9\x89\x4e\x37\xce\xa9\x9f\xd3\x4d\xc8\x08\x33\x4e\xa9\x64\x8b\x14\x5f\xff\xd6\xfb\xb6\xf7\xbd\x59\xa7\xdd\x24\x2b\x24\x03\x63\x94\x29\x1e\xd7\xc4\xb3\xae\x3c\xea\x10\x10\xe4\x28\x14\x30\xaf\xb5\x79\xb1\xee\xe2\x34\xc0\x82\xe0\x9c\x45\x59\x72\xea\xae\xb9\x21\xde\xcc\x04\x78\x25\x14\x3d\xea\x3e\x4d\x4e\x1c\x0a\x88\xa8\x60\xf1\x88\xf1\x27\xec\x2b\xa5\x3d\x57\xe7\x53\xaf\x86\x99\x4d\xc3\x59\x2a\xba\x5c\xc6\x98\xe5\x24\xc2\x63\xbc\xec\x12\xc1\x9f\x2b\xe6\xab\xd5\x5f\xf3\xea\x1a\x51\xba\xaa\x56\x97\xf4\x8f\xa6\xe9\x85\x2c\x57\x04\x5c\x31\x42\x4d\x30\xab\x95\xfe\x3d\x2e\x27\xc7\xe1\x58\xee\x6b\xd9\xe9\x2e\x21\x71\x23\x1d\x0a\x93\xa4\xab\x70\xbe\xab\x70\xde\xca\x5c\xbb\x84\xfd\x8c\x54\x1c\xe9\xc7\xa4\xc5\xfa\xa2\xcc\x66\x33\x19\xe9\x17\x38\x37\x20\xa4\x22\xb1\x2d\xe8\x2f\x6b\xfb\x65\x5e\xa5\xce\x4b\x92\xf6\x11\x00\x00\xbb\xc3\x25\x87\x6d\x98\x48\x3c\x6c\x68\xe0\xb3\x73\xfc\x8e\x8e\x53\x47\xec\x1f\xbf\xd3\x94\x86\x31\x42\xc3\x6c\x9e\x46\xda\x58\x42\xab\xb1\xeb\x3a\x10\xcf\xc5\x53\x31\x10\x9b\x4c\xf9\x6d\x8e\x95\xfa\xeb\x65\xda\x11\xa0\x1a\xe9\x08\xc4\x01\x3d\xff\x8e\x48\xe5\x8d\x62\xa8\x4b\x39\x63\xcc\x51\x15\x1c\x61\x89\x0e\x1d\xb8\x61\x22\x6b\x4c\xff\x71\x34\x64\xdb\x5c\x0c\x31\x6b\xd0\xde\xaa\x28\xc2\xa8\xd5\x9a\x6b\xd3\x57\xe1\x42\x4e\x80\x35\xd7\x21\x96\x74\x7f\x26\x28\x56\xbf\x0f\x0c\xfd\x34\x2e\x42\x6d\xeb\x4b\x96\x3d\xe6\x26\xb2\x23\xd7\x1e\xbf\x16\x02\xc2\x7d\x30\xe1\x5d\x01\x6b\x27\xb6\xc5\x86\x5e\x3f\xb1\x6d\x0e\x9c\x99\x97\xb6\x84\xdf\x12\x46\x00\x0b\xed\xb6\xf0\x9f\xf5\x75\x2f\x3c\x01\xa1\x94\xdd\xc5\x33\x16\x47\xe0\xb9\xbb\xf9\x96\xd6\x02\xc9\xb7\x5b\x70\x0a\x7d\x9f\x23\xf1\x55\x65\x8a\xf6\xf2\x8e\x06\x5e\x47\x7e\x43\x16\x56\x13\xc9\x25\x80\x05\xb1\x15\x0a\x6e\x3d\x90\x8d\xe9\x38\xb5\x59\xd8\x08\x2d\xc3\x42\xdf\x3a\x96\x9d\x08\xab\xb6\x20\x47\x64\xdb\x0b\x92\xe6\xe2\xd1\xcb\x94\x11\x5c\x83\x1d\x64\x6f\x98\xa2\xa9\x87\x6e\xd2\x53\xbf\xa1\x9c\x3c\x10\xd6\xf4\x72\xa8\x02\x9f\x70\xf7\xa2\x2c\x75\xec\x2f\x49\xb0\xb4\x80\xe8\xb0\xdb\xc8\x59\x35\x5c\xda\x1e\x5d\x92\x76\xc7\x6a\x50\x59\x8f\xb3\x2d\x82\xcc\xca\xab\x3e\x6d\x59\x17\x2e\x29\x52\x20\xa2\x3e\x40\xbc\x1c\x8a\xe3\xd0\xb7\x6a\x37\xa8\xbe\xa0\x4a\x2e\x8f\xf2\xa7\x32\x69\xf0\x9c\xdc\x79\xb9\xf7\x6e\xf7\xd5\xe1\xf1\xfe\xc1\xaf\x6a\x0e\x6a\x86\xa8\x07\xd0\xfc\x87\xbe\x2c\x80\x3a\x6f\x54\x88\x9c\xda\x4e\xb4\xbb\xb4\xae\x78\x29\xe4\x11\x71\xde\x56\xae\x65\xab\xf8\x08\x81\xf2\x07\x62\x6d\x0d\xbb\x5e\x5f\xb7\xe9\xd1\xb4\xd3\x3e\x31\x14\x0d\x1d\x79\x80\xb3\xf4\x99\xf7\xda\xc0\x4c\xd4\x00\xc9\x39\xf1\xba\x8e\xf9\x13\xd0\xf6\xb3\x24\xe8\x04\x10\xcb\x6e\x02\xa3\x81\x45\x25\xbe\x47\xc6\x79\x36\x6d\x55\x41\xe8\x78\xaf\x4e\x24\xb5\x4f\xb7\x48\x20\xb4\x4c\x9e\xbe\x90\xb1\x94\x37\x72\xd4\x11\xc7\xff\xd8\x7f\xa3\xd7\x86\x3f\x3f\xf9\x77\x78\x69\xf3\x45\x34\x87\x40\xe3\x00\xee\x33\xae\xd7\xfe\xe1\x01\x93\x10\xda\x1a\x8c\x4b\x05\x8f\x68\xcd\x88\x19\xe7\x3e\xfc\xb2\x6c\xd5\xeb\x12\xf5\x2d\x40\xa2\x1a\x44\xaa\x03\x13\xa5\x6c\xb5\x61\xb4\x59\x7e\x07\xf5\xaf\x5a\xb6\x16\x82\xda\x5e\x4d\xab\x61\x00\xa8\x0c\xfc\x59\x8f\x0e\x68\xc2\xb8\x8e\x86\x36\x5d\x7b\x53\x7f\xc1\xd7\xdd\xca\xa2\xa5\x7e\x5f\xbc\x27\x0d\x34\x13\x61\xbc\x17\xe1\xb0\x28\xf3\x70\x54\x5a\x7f\x85\x95\x05\xb1\x34\xc0\xc8\x76\xb7\x10\xcf\x0f\x3b\xcc\x42\xd2\xc8\x50\x98\x18\x4b\x6c\xdb\x17\xc6\x61\xbb\xc7\xfa\x35\x98\x7d\xcc\x25\x8f\xbb\x9e\x06\xe8\xee\x4e\xb4\x8e\x79\x27\xbb\x6d\x26\x8b\xf2\x94\x45\x55\x50\xc4\xc0\x6e\x63\xeb\xd8\x23\xf2\x26\x71\x7f\xb3\xf9\x43\x7a\x11\xa7\xb2\xab\x2a\x76\x43\x08\x5b\xd2\xf0\xa8\xee\xb7\xe2\xd9\x24\x4b\xe5\x5d\x3c\xcb\xa2\xbb\x78\x16\x46\xed\xde\x93\x70\x36\x4b\xe4\xb5\x1c\x5e\xc6\x65\x3f\xee\x95\xe0\xeb\xa4\x87\x64\x0a\xe7\xd5\x05\xce\x90\xc4\x2e\xac\x46\x37\x62\x2f\x96\x90\x1b\xe7\xae\x28\xce\x70\xd4\xb3\x9f\xf1\x20\x9a\x94\xd3\xe6\x69\xa8\x42\x3f\x4d\x24\x6a\x73\x9a\x05\xaf\x94\xcf\xb5\x8b\xd5\xbb\x12\xeb\x5b\xe9\xcb\xf1\xbb\xfd\xc3\x66\xb9\x2d\x6d\x5e\x5c\x74\xb5\x8d\x31\x36\xd3\xe9\xc3\xad\xb8\x5e\x7f\xb1\x29\x3d\x6d\x59\x21\xcb\xfd\xe9\x54\x46\x71\x58\x4a\xb3\xac\x32\xcc\x6d\x0d\xf8\xe9\xd7\xd1\xe1\xa7\x4d\x2d\xfa\x40\xc5\x94\x3e\x67\x77\x12\xa6\x29\xd8\x36\x52\x2d\xf7\xbb\x16\x52\x6b\x97\x77\x53\x4d\x7f\xd1\x00\x65\xf3\x14\x43\xc1\x6d\xd0\x97\xff\x9c\x4b\xc8\xfe\x02\xf4\x1f\x94\xae\x07\x47\x7b\x3b\x2f\xfe\xfd\xf8\x64\xe7\x64\x6f\xf7\xb7\x9d\x83\x5f\xf7\x84\xe2\xce\x2a\xc9\xfe\x02\x2b\xa6\x97\x39\xf8\xa8\x2a\x40\x3a\x90\xbc\xde\xac\x60\x3e\x4f\xdd\x97\x5d\xb4\x62\x50\x28\x2d\x87\xeb\x92\x0a\xb5\xd0\x57\x22\xc0\xdb\x9b\x84\xc5\xe1\x75\x6a\x64\xca\x71\xd4\x76\x44\x1e\x63\x35\x2a\xd4\x3c\x8d\x4d\x5c\x3c\x8a\x9d\xe7\x7f\x1e\xa7\xad\xb6\xeb\x9c\x42\x80\xa7\x32\xaf\x87\xdd\x37\xa8\x67\xbc\xc8\x3c\x55\xd5\x1c\x83\x79\x42\x25\xca\x59\xe0\xde\xfd\x57\xea\x7c\x53\xa7\xf3\x14\x7f\xf7\x74\x04\x5f\xdb\x78\x96\x15\x65\xe3\x32\x66\x49\x24\x10\x81\x0b\x31\x09\xaf\x24\xbc\xf6\x4c\x56\x7d\x4c\xc1\xae\xaa\x6a\xec\xca\x8a\x92\x70\xa7\x15\x47\x62\x1d\xf2\x05\x9b\xea\x26\xb5\xfb\xba\x08\xfa\x90\xf3\xdf\xe6\xe7\xa7\x14\xee\xc6\x3a\xe0\x20\x8b\x64\xef\x43\x21\x36\x7a\x3f\xae\x8b\xc7\x62\x7f\x6f\x73\x63\x1d\x7c\x8e\xf8\x41\x60\x39\xf0\x07\xa4\xa1\x53\x87\xe6\xee\x4e\xac\xc1\x69\xa0\x79\x14\xae\x3d\x03\xef\xa1\x35\x4e\x9d\xbd\xd5\x0e\x1f\x7a\xff\x80\xb5\x15\xdb\x42\x47\x57\xa1\xc7\x4e\x8d\x81\x4f\xdc\x86\xc6\xe8\xcf\x6d\x2d\x7d\xe2\xf5\x75\xf3\xb0\x43\xe4\x58\x5f\xa7\x73\xd2\xc8\xfc\x2c\x41\xdf\x54\x5e\xc3\x85\xaf\xab\xeb\xe7\x8e\xc2\x4b\x4f\xf7\x3e\x4e\xc5\x40\x98\x8b\x67\x9c\xb6\xdb\xe4\x7f\x61\xae\x2b\xe6\xbe\xc2\x18\x20\x38\x76\x2d\x82\xd3\xba\x91\x91\x3d\x2a\x7c\x65\xec\xb0\x26\x44\x4e\xac\x49\x4b\x8a\x2c\x42\x35\x1c\x13\xc3\x54\xdb\x4d\xff\xa1\xab\x8f\xa4\x16\xe0\xb2\x70\xf8\x10\x1c\x4d\xfd\x08\xb8\x1a\xa8\xe9\x40\x09\xf4\x84\x57\xf5\xe1\xd1\x7a\x12\x8f\x2e\x5b\x78\x02\xe1\x68\x3b\x53\x87\xbc\x5b\x13\x99\x4b\xd1\xfa\xfb\xb1\xb8\x08\xa7\x92\xd0\xbf\x6d\xc9\x1f\x05\xbc\x60\x61\x1c\x4c\xd1\xe3\xc7\xa6\x5a\x2f\xcd\xae\x57\x05\x8f\xb7\x59\x04\xda\x2f\x3a\x49\x01\xc8\x99\x5d\x22\xdd\x11\x71\x3a\x4a\xe6\x91\x2c\xc4\xef\x72\xf8\x3b\x26\xd1\xd6\xc4\x10\x92\xe6\x88\xf8\xf0\x58\x74\x0d\xfb\x45\x9c\xd7\x28\x9b\xf6\xff\x48\xb2\x38\xcf\x46\x97\xe0\xe0\xd2\xfd\x50\xf4\xc1\x5c\xb0\xe8\x7f\xff\xf4\x5b\x6f\xa6\xde\x85\xa1\x1e\x0d\x78\xfd\xf1\xa8\x06\x74\x97\xa8\x27\xae\x5b\xdf\x04\x69\x27\x7b\x4b\xaa\xdb\x53\x3f\x9f\x6e\x39\xed\xe1\xdb\x66\x2f\x4b\xad\x2f\xb1\xa6\x72\x5b\xee\x9a\x82\x24\x0e\xd2\x81\x33\xea\x83\x37\x45\x47\x8b\xe1\x2a\x6b\xe7\x54\x2d\x2e\xe3\x59\x75\xd1\xf6\xf7\x7e\x00\x82\xe3\x54\x1d\xce\x4b\xcc\x1c\x58\xdc\xa6\x23\x61\x8c\x5f\xe2\xd2\xa9\x27\xe2\xc2\x88\x1c\xbc\x05\x44\xd8\x89\x5c\xfa\x39\x67\xc4\xe3\xc7\x24\xe1\xa6\xe4\x11\xac\x4b\x3f\xb1\x0d\x56\x5c\xa3\x9e\xd0\x86\x1e\x6d\xbb\x0a\x5b\x0a\x7c\x58\x4b\x75\xd3\x36\x1f\xab\xe4\x18\x1d\x78\x21\x25\xab\xaa\x52\xc1\x5a\xd5\x7e\x6b\x21\xe0\xad\x80\xb6\x49\x91\x7b\xfa\xd6\x11\x4c\xe4\x84\xeb\xd9\xf5\x16\xa3\x86\x1b\x88\x53\x97\x2b\x6b\x05\xa8\xf5\x0e\xda\xab\x1e\x26\xc5\xe1\x29\x2a\x27\xd3\x68\x77\x12\x27\x51\xab\xa9\xbf\xd3\xea\xf0\x8d\x24\x99\xba\xc5\x34\xee\xd8\x2d\x18\xd2\xb0\xd7\x24\xbf\x9e\xab\x8f\x4a\xc8\x82\x56\x94\x70\xa1\xf2\x3c\xbd\xae\xc8\x76\xc9\xd4\x0a\x59\xea\x04\x8f\x96\x4a\x74\xc4\x86\x4b\x28\x74\xb8\xeb\xaa\x62\x97\x2e\xc3\x81\xfa\xbf\x8e\xa1\xdc\x03\xfc\xc7\x79\x93\x3c\xec\x31\x70\x21\x4b\xc6\x30\xbd\x30\x86\x0a\xcb\x0c\x2a\x2e\x64\xd9\x55\x4f\x4f\x6d\x51\xd1\xb5\x36\x0e\x41\x1b\x4c\x04\x3e\xf5\xf9\x30\x0d\x47\x79\x56\x86\xc5\x65\xb3\x0e\x26\x2c\x2e\x83\xb6\xe2\xab\x3f\x8f\x8d\x7f\x3d\x47\x3b\xb0\xc3\x21\x05\x0f\xb7\x4c\xb4\x5f\x72\x77\xa7\x8b\x7e\x97\xc3\x7f\xc4\xa5\x5f\x61\x35\x9e\xdd\xba\xad\x57\xac\x7c\x68\x1a\x07\x87\x2f\xf6\xac\xd9\x5e\xfd\xcd\xb9\xe5\x70\x59\x9b\x9b\xa2\x98\x64\xd7\x05\xa4\x5a\xcb\x63\x30\x6e\x4b\x7e\x0f\xf3\x94\x54\x98\xda\x56\xf3\x3d\x5c\xdc\xaf\x63\x5a\xdc\xf7\x8c\xcb\x37\x1f\x9d\xed\x6f\xc2\x8c\x16\xc2\xde\x11\x81\xdb\xd8\x6c\xa0\xfb\x59\x33\xdc\x75\x83\x3c\x7e\xdc\x58\xd6\xd3\x29\x85\xe8\xcd\x9a\xcc\x8b\x09\x26\x98\xe9\x88\x24\x2c\xca\x8e\x62\x67\xe3\xf1\x6d\x47\x94\xd9\xc5\x45\x22\x3b\x90\x45\xa7\xa3\x03\x08\x74\x44\x39\x91\xa9\xe6\x48\xa7\x59\x24\xf3\xd4\xe5\x86\x3d\x28\xb5\xb5\x19\x70\xa2\x6e\x99\x36\x8d\x52\x20\xd4\x13\x19\xd8\xfa\x30\x97\x69\xd9\x11\xe3\x94\x49\xb3\xf5\x8e\x3e\x7e\x2c\x5a\x58\x01\x23\xfa\x00\x47\x13\x65\xd3\x30\x4e\xdb\x6d\x6a\xda\x93\x37\xb1\xcd\xdc\x45\xdc\xaa\x9a\x30\x57\xa3\xa8\xf7\x8b\xfa\xd6\x1b\xdb\x4c\x60\x13\x74\x25\x83\xcf\x46\xb4\x2f\xaa\x39\x41\xcc\x83\x46\x88\x46\xbd\xb0\x06\x1c\xc7\xc5\x25\x76\xb2\x89\x01\xc9\x53\x1b\x20\xb6\x9d\x7c\x9c\xba\xdc\x57\xf0\x32\x61\xdd\x7d\x53\x3b\x35\x20\xae\x81\x5d\x8b\x14\x52\x11\x19\x1e\xd3\xe5\x32\xcf\x52\x67\x79\x59\xbe\x21\x05\x6f\xd3\x45\x50\xe1\x24\x61\x47\x2b\x9c\xda\xd0\xe5\xd4\xbc\x83\xde\xf9\x64\x8e\xec\xd9\xb3\x1f\x7d\x8e\xcc\xa7\x32\x35\x3c\x19\x62\xb7\x2b\x16\x87\x7c\x51\xdb\x42\x0b\x37\xc8\xc3\xf3\x44\xde\x94\x6a\x7d\x5a\x81\x4d\xa9\xa4\xd8\x38\x6f\x10\x9a\x75\x2f\xc3\xdf\x2d\x3c\x36\x1f\x15\xf3\x96\x87\xa3\x52\xe6\x2f\x20\x02\x8e\xb5\x6b\x5c\xbe\xb0\xaa\x0b\x13\x18\x5c\xc3\xbb\x86\x7f\xf9\xab\xcb\xf2\xe5\xd2\x0a\x4f\xc3\xdb\xa1\x7a\x1c\xa5\x5d\x32\x5d\x90\xc9\xad\x20\x3b\x29\xe4\xda\x20\x77\x81\x3a\x3b\x44\x2e\xbd\x65\xd4\x54\xf5\xf1\x63\x3f\x60\x19\x4f\xb4\xe5\x15\xc1\xd8\xd9\xbc\xc4\xb8\x05\xf8\xe4\x43\xe4\x85\xa0\x13\x3a\xc7\xbf\x78\xf5\xab\x62\x2f\x0f\x8f\xc5\x53\x62\x7f\x1b\x83\xa3\x79\x3e\x21\x02\x28\x90\x17\xc0\x6b\xa5\xe5\x54\x15\x4d\x1e\x31\x24\x66\xf5\x98\x3a\xce\x28\x72\xa9\xbb\xaa\x5d\x76\x85\x0e\xc3\x42\x46\x22\x4b\x07\xd4\xa4\xeb\x3c\xa1\xcd\x47\x97\xd7\x37\x9f\xaf\xe3\x34\xca\xae\x19\x73\x6e\x4a\xaa\x62\x1f\x3e\xc0\x89\x4d\x7d\xed\x32\x49\x8b\x27\xde\xef\x8b\xa2\xcc\x55\x67\x62\x7f\x4f\xac\x8b\x6b\x39\x9c\x85\xa3\x4b\x11\xc9\x2b\x9d\xde\x63\x38\xbf\x10\x5d\xf0\x78\xc5\x15\xc2\xbb\xc8\xa8\x6a\xcd\xc4\x79\x69\xed\xf2\x35\x72\x5a\xde\xbd\x70\x77\xc7\x60\x35\x12\x07\x30\x15\xc1\xcb\xed\xa3\x18\xa7\x03\xb0\x47\x40\x35\x87\x95\x26\x93\xe2\x6a\x2c\x5a\x8a\xee\xb5\x81\xfa\xf5\x48\x17\xab\x1a\x9b\xe2\x35\x87\xca\x13\x39\x37\x35\x84\x4b\x86\x0d\x15\xa5\x0a\xcd\xf6\xb5\x0f\xd6\x3e\x38\x4c\xca\x6e\x38\x0b\x87\x71\x12\x97\xee\x76\xed\xb2\x15\xf0\x52\xfb\x37\x05\xf9\xd9\x65\x5e\x30\xdf\x7c\x63\x1a\xa9\x3f\x41\x4d\xc3\x5d\x7a\xf5\xe9\x5c\xf3\x45\xf8\x58\xd7\x37\x3d\xaa\xd8\x36\xfc\x12\x46\x86\xcb\x62\x9a\x82\xa0\xed\xc6\xd3\x11\xdb\xc2\x40\x62\x4a\x48\xb9\xa3\xe1\xe2\xa1\x58\xb4\xf9\x0a\xb5\xb5\x0a\x01\x4d\x68\x78\x2d\xea\x87\x57\xd2\xea\x28\x23\x23\x7b\xfa\x5d\xef\xdb\xde\x66\xef\x3b\x71\x20\xaf\x2b\x0b\xde\xda\x6d\x57\x3c\xb5\xc7\xb5\xbb\xc0\x34\xd2\x75\xbd\x7c\xb6\x02\x4b\x07\xd7\x5e\x64\x50\xe5\x35\x49\x6b\x26\xd4\xd8\x3c\x95\xd7\x5d\x42\x96\xee\xc8\x54\x5f\xc1\xec\xb9\x23\x6e\xb4\xe3\xb8\x55\xeb\x98\x03\x65\x62\x82\xdf\x40\xaa\xcb\x1b\xae\x34\x02\xed\xd0\xae\x51\x91\xde\xf8\x61\x2f\x1d\xa8\xeb\x26\xd3\x1b\xeb\xa1\xd8\x19\xb0\x74\x9e\x55\xe4\x08\xa6\x6f\x89\x1b\xc7\x4a\xbe\xda\xc6\x8d\xd8\xf8\x25\x1c\x0a\xec\xaa\x85\x1d\x31\x74\x83\x80\x14\x59\xc2\x5e\x23\xf4\xc1\x2c\xa3\xae\x80\xa9\xdc\xd5\x9f\x3d\x97\x5b\xac\xc8\x52\xd5\xda\x6e\x8a\xe7\x6e\xf5\x56\xd8\x16\x03\xff\x93\x02\x65\x75\x73\x6c\x79\x23\x47\x8d\xd6\x94\x1f\xf1\xb6\x1e\xa0\xd0\x82\x8c\x27\x07\xa8\x09\x6e\x6b\x72\x5f\xcf\xee\xfa\x3d\xa0\x3d\x87\xee\x00\x78\x80\x7b\x0f\xca\xcf\xf2\xdf\x3f\x7e\xf7\xe6\xed\xd1\xde\xa2\xd3\x34\x9b\xe7\xd6\xb3\xe6\xc1\x4f\xf9\x4f\xf2\xa7\x38\x00\x7f\x71\x1e\x52\xad\xf6\xa8\x42\x2d\x7b\x5a\x3d\xe2\xfa\x69\xae\x43\xfa\xc3\x4e\xd2\x3c\x4b\x5d\xa7\x1b\x26\x76\xae\x8a\xc9\x60\xae\x7a\x4d\x6d\x0b\xc9\xdc\x8e\xba\x25\x73\x95\x2d\x64\x49\x7a\xef\x85\x8d\xb9\xb6\xfc\x13\x09\xe2\x27\x19\x01\x84\xe9\xbe\x8d\xbb\xd3\x48\xad\xb5\xf9\xd3\x67\xa9\x6b\xe3\x54\x4d\xb2\x3c\xd6\xa1\xce\x9a\x82\x4a\x40\xad\x2e\xc6\x3f\xb3\x8d\x8d\xd9\xe6\x22\xe3\x75\x06\xe0\x44\x8e\x2e\x77\x91\xb9\x4f\x65\x51\x1c\x8e\x8d\xf1\x58\x33\xd0\xaa\x4d\x77\x64\x1b\x75\xb3\x31\x0f\x12\xa0\x77\xb4\x62\xc6\xd0\xbc\xb3\x14\x05\xa0\x0e\x89\x1f\x26\x79\x9a\xc6\xcb\x84\x55\xd3\x8a\x7c\x84\x8e\xd0\x91\xb9\x39\xea\x1b\xea\x93\x46\x37\x87\xd5\x91\x67\x45\x79\x24\x15\x5d\x01\x9e\xa7\x19\x7f\x55\xc5\x6e\x0e\x35\xbb\x40\xcb\x8a\x85\x97\xf4\x12\x47\xaa\x05\x57\x35\x4c\x4a\xe6\x90\x6e\xaa\x71\x36\x58\xee\x06\xd6\x4f\xc3\xe4\x58\xbd\x20\x96\x0c\xad\xff\xea\xc2\x73\x83\x9d\xc5\x97\x10\x37\x60\xd1\x59\xc4\xc8\x02\x5f\xd0\xdd\xeb\x9f\x3f\xbc\xfb\xe7\xde\xd1\xf1\xfe\xe1\xc1\x32\x71\xe3\xd5\x0f\xdd\x2b\x99\x17\x2e\x73\xbd\xa2\x61\x0e\xf0\xe1\x47\x87\xaf\xf7\x8f\x41\xc9\x4e\x7b\xc5\x1c\xe7\x9c\xe5\x83\x10\x29\x95\xe5\xec\x5d\x18\x2c\x2d\x56\x6b\x60\xd1\x9a\x8d\x40\x63\x2f\x19\xa8\x94\xf9\xcb\x2c\x6f\x11\xcc\x6d\x57\xde\xe9\x1e\x49\xe7\xba\xd1\x7e\xc3\x9a\x83\xb7\xcc\x88\xf9\xa4\xcd\x09\x48\xda\x61\x6b\xe8\x2f\xab\xc9\x5e\xbf\xc1\x90\xf7\x8e\x27\x5c\x00\xdf\x96\xb1\xae\xcd\x87\xc5\xc8\xb9\x53\x79\xfd\xab\x4c\x65\x1e\x8f\x56\xed\xe0\xc1\x22\x5f\x30\xe3\xd8\x3f\x7e\xb3\x73\xb2\xfb\xdb\xbb\xbd\x7f\xee\x1d\x9c\x88\x6d\xb1\xb6\xd6\x32\xeb\xf2\xf8\xb1\x2f\x11\x02\x3d\x8f\xfa\xae\x17\x8c\x74\x95\xf0\x5d\x4f\xfa\xed\xc1\x6f\x3b\x07\x2f\x5e\xed\xbd\x78\x77\xb4\xf7\xf7\xbd\xdd\x13\xc4\xec\x60\x9e\x4e\xc2\x34\x4a\x64\x94\xeb\xa4\x75\x1a\x08\x53\xed\x1d\x35\x54\xd5\x4d\x2d\x6a\xa5\x2b\xbf\xd9\x3b\x78\x81\x66\x9d\xda\xae\xe4\xe5\xdb\x57\x2f\xf7\x5f\x61\xb3\x4d\xa7\x4b\xf8\xf4\x74\x4b\x87\x4e\xd1\x7d\x6f\xfa\x80\xb2\x5a\x1a\x1b\x3b\x02\x45\xd5\xee\x1a\x77\x34\x02\xfe\x9e\x87\xb3\x99\x04\x2f\x3e\x85\x7b\x27\x5a\x34\x0c\xf0\x1c\x1e\xed\x42\x9f\x9a\x9c\x68\x24\xee\x54\x85\x14\xaa\xfe\xaf\xaf\x0e\x7f\xd9\x79\xf5\x6e\xf7\xf0\x68\xef\xdd\xdf\x8f\xdf\xd9\x53\xea\xdc\xa3\xad\x2a\xea\xb7\xe1\xf1\x4a\xde\xde\x35\xc5\x56\x1c\x50\x3f\x04\x17\x66\xfd\xf3\x07\xf1\x7d\xef\x7b\xd1\x3a\xc8\x22\x29\x36\x37\x20\x14\xe7\xee\x24\xcf\xa6\x52\x7c\xff\x7d\x1b\x05\xdc\x21\x08\x4b\x40\xc4\x86\x57\x08\x64\x72\x9b\x17\x65\x36\x05\x11\x53\x38\x4c\x64\x61\x7a\xd4\x82\xcc\xe1\xfc\xa2\xe8\x8d\x54\x57\xf1\x7c\xda\xcb\xf2\x8b\xfe\xac\xaf\x7f\x6a\x49\x66\x24\xcb\x30\x4e\x9e\xc7\xd1\xf6\x0f\xcf\x36\xbe\xfb\xfe\x3b\xd3\xc9\xef\x10\x1e\x33\x28\x45\x24\x4b\xc5\x24\xc5\x10\x86\x4c\x35\x4f\xb3\x79\x91\xdc\x76\x44\x91\x89\x0f\xf3\xa2\x24\x7f\x3e\xa2\x8f\xcc\x9f\x80\x93\xd7\xed\x6d\x98\x8c\xb6\xe3\xb5\xf2\xcf\x7e\x5f\xbc\xd5\x88\x26\x0c\xe6\x15\xa2\xcc\xc3\xd1\x25\x8b\x43\xd3\x01\x79\xf1\xdf\x8f\x8d\x44\x40\xcb\xfc\xe2\x92\x8c\xe0\x4c\x94\x1a\x08\x9d\x62\xc1\x58\x63\x82\x7b\x52\xe8\xbe\xd1\xb7\x36\x0d\x87\x87\xcb\xf3\xb5\xf0\x61\xbd\x27\xa9\xd8\xef\x52\xa4\x52\x1a\xd1\xc4\x5f\xc6\x71\x1a\x26\x09\x78\x58\x97\x13\x29\x14\xd3\xaf\x17\x03\xa4\x7a\xb3\x1c\x4c\x7e\xd4\x5c\x6c\xe4\xc4\x59\x96\x60\x32\x4d\x26\xfe\x86\xe7\xc4\xe3\xc7\x62\xad\x8a\x50\x2c\xc0\x7a\x40\xe3\x05\xe7\x55\x10\xf9\xb6\xa9\xa7\x8d\x5d\x92\xb1\x0c\x4b\x05\x18\x6e\x26\x46\x70\x53\x98\x57\xc4\x8a\x2d\x8d\x4b\x31\x0a\xe7\x85\xd4\x3a\xf7\x48\xa2\xd7\x08\x85\x4a\x53\x18\x49\x77\x3e\x70\xb1\x91\xbc\xc8\xc3\x28\xd4\xe0\x33\x8c\x5b\xc5\x98\xe1\xdf\x7e\xd4\x73\x66\x08\xf2\xb7\x6d\xf1\xdd\xa6\x9a\x3c\xbd\x4d\xc4\x28\x8b\x64\x1f\xad\x24\x6b\xce\x57\x8d\x55\x74\xbf\x2f\x5e\x20\xa6\x32\xee\x52\x64\x63\x51\xcc\x87\x40\x8f\xd5\x06\xc0\x09\xb2\xab\x42\xb8\x75\xd6\x94\x2c\x83\xef\x80\x7e\xf4\x33\x8f\xa2\x97\xe1\x25\x7b\x6a\xd5\xbe\x70\xc9\x88\xd9\x35\x2d\x77\x8c\x96\x7d\xbb\x73\xa7\xb0\xcd\x0c\x73\xf4\x33\xdf\xde\xbe\x5a\x1a\xed\x7e\x25\x23\xef\x51\x8d\xbb\xb6\xd8\xe6\x30\x73\xe1\xc5\x5a\xcb\xc9\x4d\xb1\x08\x24\xee\xa8\xc1\x7a\x6b\xdb\xa0\xfa\x40\xcd\x0f\x74\x00\x14\x63\x8a\xad\x46\x47\x02\x0d\x96\x61\xcd\xaf\x87\x56\xd5\x4b\x8c\x96\xb3\x66\x5f\x1c\x4f\x99\xd3\x60\x84\xf9\x0d\x16\xce\xc0\x42\xaa\x50\x17\x43\x35\x6a\x36\xf4\x84\xa8\x69\xbd\x6b\x2c\x3c\x2a\xb4\xec\x5f\xbb\xc4\x16\x36\x6e\x0c\xa3\x31\x2d\x52\x19\xc4\x25\x2c\x69\xbb\x62\x14\x06\xe5\x03\x83\xc1\xd6\x12\xb0\x46\xb0\x6e\x94\x07\xc0\x35\x77\x44\x5c\x1c\x71\x79\xab\x3a\x4c\x50\xd2\x83\xb6\xb1\x75\xd8\x05\x40\xdd\x22\xae\x7f\xba\x62\xf9\x64\xb0\x56\x2e\x43\xa4\xc0\x50\x6e\x1e\x3c\xad\x06\x4d\x29\x88\x57\x4c\x63\xad\xe7\xd5\xa5\xd9\xa5\x29\x2a\x90\xe7\xdc\xb6\x3c\x03\x37\xed\xd3\xce\x64\xf6\x52\xb8\x0a\xf3\x18\xf6\x81\xa4\x51\x5d\x46\xd6\x28\x63\x85\xa3\x5c\xe5\x99\x57\xb4\x9b\x19\x53\x47\xa0\x80\x22\xd4\x6f\x77\xa8\x7d\x4a\x4e\x68\xe7\x5b\xbc\x16\xde\x45\xea\x20\x65\x97\xe2\xb9\x69\xd4\xcb\x2e\x21\x6c\x0e\xfd\x52\x57\xce\x96\xdb\xb9\x7d\x01\x52\x1d\x57\x26\xad\xab\x19\x89\x83\xa9\x65\x04\xd4\xba\x12\x2a\x93\x79\x25\xfc\xe2\x0f\x08\xde\x8a\x0a\x8d\x3a\x42\xde\xc4\x25\xd3\xdd\x7a\xda\x62\xd0\x02\xe3\xbc\x3c\x7f\x0d\xb8\x20\xb3\x4b\xef\x2b\xc7\x28\x73\x27\xc3\x25\x6e\x18\xb7\xb6\xc8\xd2\xdf\xa0\x4b\x73\x7d\x7b\x58\xca\x35\xcd\xea\xbf\x4a\x77\x9a\x2f\x74\xea\xdd\xfb\xd0\x99\xfd\xd8\x46\xbc\x6d\x5b\xbf\x35\x8e\x6e\xf8\x1f\xd7\x4f\xf1\x4e\x48\x3d\x4f\x2b\xeb\x68\xa4\xed\x7f\xa6\x5f\x1a\x52\xbb\x6a\x0b\xf0\x38\xa7\xf0\xf8\xcd\x7d\x7b\xc3\x0a\x33\x18\x37\x05\x60\xa0\xc2\x8e\xb9\xca\xe0\xda\x45\xa8\xac\x88\xf1\xa7\x63\x08\x42\x4b\x5f\x81\x82\x32\x26\x33\xad\xca\x1b\xfd\xee\x87\x63\x3f\xba\x1d\x25\x32\x68\xbb\xe0\x39\x99\xb1\x90\x88\x19\xba\xa8\xbd\xe8\x2a\x23\x59\x4d\xa7\xc6\x4c\x4f\xa5\x54\x3b\x86\xbe\x55\xad\xdb\x5d\xa5\x02\xf3\xa7\x5f\xd5\xe2\x81\x0e\x90\xe2\xa5\x70\x99\xdb\x8d\x9b\x41\xfd\x63\x3f\x15\x2b\x07\xfc\xc7\xa3\x8c\xdc\x30\xb9\x42\x5a\x2d\x43\xa2\xd5\x17\x48\xa9\x01\x18\xef\x08\xa8\x33\xb4\xf8\xf4\xdc\xbb\x36\xe2\xce\xa3\xcf\xb9\x20\xd2\x70\xca\x0d\x66\x9c\x44\x0d\xaa\x25\xb0\xa0\x1d\x8d\xd9\xe6\x79\xe2\x3e\x42\x2d\xcf\x42\xfd\xd7\xbd\x41\x5b\x01\xfc\x63\xb4\x70\x68\xcf\x5e\xc9\x71\xe5\x94\x9a\xe4\x18\x2c\x4d\x84\x2e\x8b\xd3\xb8\xc4\x8e\x71\x0e\x24\xf8\x87\xa3\xee\x5a\x3b\x3a\xb3\x27\xbb\xfa\x2d\xa6\x97\xd6\x50\x7f\xd4\x30\x0c\xfc\x05\x19\xd0\xbf\x4c\x9d\x6b\xc9\x3d\x8e\x72\x1a\xa8\xdb\x79\x1d\x02\xb9\x9c\xb7\x0d\x29\x60\xa3\x99\xb3\x01\xb1\x5e\x1c\xa2\x68\x9f\xdd\xed\x8a\x68\xaf\x15\xd8\x77\x8e\x5e\x2d\xfb\x1e\x37\x5b\xe6\xec\x37\x43\x8f\x05\xec\x80\x56\xa6\x54\x55\xe5\x9f\x72\x67\xef\x1f\xbf\xe3\xaf\xf3\xb8\xb0\x18\xea\x90\x75\x7b\x07\xb9\x36\x52\xec\x86\x60\x6e\x84\x44\x59\xe9\x15\x51\xc7\x4d\x08\x51\x6f\x07\x84\xff\x69\x7b\x1f\x39\x8d\xcb\x96\x15\x68\x1c\xb1\x05\x24\x57\xe4\x99\x65\x47\x3d\x52\xe2\xe2\x4f\xcd\xa6\xb1\x03\xe4\xd3\x1b\xfb\x27\xb7\x61\x2e\x26\x90\xf8\x22\xcd\x4a\x51\xe6\xf1\xc5\x85\xcc\xc5\x7b\xb3\xa7\x78\x3b\x46\xef\x09\x2f\xe3\xb1\x7a\x66\x5d\x87\x85\xd0\x3b\x3a\x91\xb9\x34\xcf\xda\x2e\x75\xa6\x87\xa9\xde\x96\xfa\x19\x7b\x77\x57\xb3\x29\xe2\x39\x93\xa9\x0c\x2a\x37\xab\xbd\x36\xb4\xd6\x0f\xb5\xed\xf4\x8d\xe3\xc0\x7d\x0d\xdd\x61\xe3\x79\xa1\x23\x2c\xfa\x11\x37\xec\xc3\xbd\xb6\x6d\xee\x79\x46\x02\xd1\x32\xcc\xc3\x75\x8f\x9d\xf8\x42\x18\x5f\x8f\x53\x2e\x3e\xf9\x7b\x16\x54\xd0\xa8\x16\x85\x2a\xd2\x33\x86\x40\xec\x70\xd5\x92\x72\x72\xac\xe3\xf6\x28\x7e\xeb\x8e\x98\xa7\xd7\x79\x38\x6b\xf2\x48\xc2\xce\xf5\x9c\xc6\x69\xe5\x95\x40\x27\x82\x7a\xa9\x71\x58\xd2\x72\xee\x23\xcd\x95\x36\xbf\x38\xdc\xbe\xfc\x67\x07\xc6\x15\xa8\x3c\x39\xd4\x67\xce\xe1\x40\xa6\x6f\xea\x81\x1e\x04\xd4\x23\x6b\xa4\xc9\x93\x45\x4a\xe7\x05\x61\x04\x8c\x50\x44\xe6\x34\x3e\xb4\xfa\xf6\xa8\x9b\xaa\xe6\xd3\xff\x6b\xe7\xca\x38\x74\x30\x99\xd4\xf7\xe7\x36\x4d\xbc\x6a\x0f\x73\xf6\xc8\x18\xc3\xc0\x4b\x68\x68\xb8\xa7\x48\xc4\x65\x21\x93\xf1\xd9\x23\x4e\x9c\xab\xac\x9b\x43\xd4\x34\x77\xc7\x0e\xc5\xc2\xd7\x9e\xee\xf6\x1a\xe5\xaf\x70\xcf\xa2\x93\x37\xdc\xd8\x8e\x47\xb7\xf7\xfc\xe0\xcc\x21\xae\xad\xcb\x3a\x82\xeb\x88\xb7\x41\xec\x30\x5c\x6b\x89\x2f\x9e\xfd\xc5\x8d\x3f\x80\xa5\x61\x53\x5b\xde\xd4\xbd\x21\x1a\xf9\x49\xe1\x9d\x92\x56\xb5\x6f\x68\x54\xf3\xea\xb9\xaf\x5c\x1f\xf7\xde\x0b\xa5\x09\xe3\x6d\x99\x46\x1d\xff\xd9\xdc\x88\xfa\xd5\x00\x23\x0d\x93\x6b\x9a\x96\xb7\xad\x75\xd3\xe3\xf1\x83\xb9\xf0\x69\x96\x25\xb7\xe3\x38\x49\xd0\xf4\x1a\x85\x3d\xd6\x89\x11\xec\xa4\x9e\xf5\x36\x4d\xa6\x38\x93\xd4\xae\x5e\xb4\xc3\xcf\x68\xa5\x89\x31\x5b\x31\xca\x75\x0a\x00\x5e\xed\xa7\x23\x98\x2a\x0b\xda\x18\x6b\x2e\xd3\x1d\x95\x68\x1d\x04\x05\xdb\x67\xae\x25\xa0\x7a\xa3\xbd\xf0\x75\x76\x4e\x45\x07\xf7\x4d\x7e\xb0\x7a\x14\x47\x88\x09\xad\xeb\x31\x99\x57\xb1\x58\xd4\x80\xad\xde\x96\xb2\xb6\xb4\x8b\x2e\x5e\x18\x3b\xde\x05\x5e\x8e\xf3\x74\x5e\xc8\xa8\x7b\x15\xa2\x9f\x8c\x9e\xf7\x4a\x7b\xe3\xab\x2a\x09\x20\x6b\x1c\x7b\x3b\x93\x03\xbd\x39\x36\x6b\xa7\xc5\xbe\x8e\x83\xeb\xb1\x8c\xfc\xef\xc8\x47\xf8\x5f\xcd\x4b\x6d\x20\x4e\xcf\xd9\x57\xba\xe4\xfd\xea\xb0\x40\x03\xad\xde\xea\x58\x21\x0b\x58\x0e\x19\x0b\x45\x5a\x39\x2e\x92\x35\xe8\x32\x63\x51\x0f\x99\x1d\x4c\x8d\xe8\x9a\xc7\xa3\xb5\x3a\xa0\xf7\xda\x00\x99\x27\xea\x93\x2c\x83\x85\x70\x35\x3b\x8b\x62\x36\xcc\x6a\xbb\x3a\x33\x66\xcc\x3c\x60\xf1\x44\xa6\xad\x2c\x7d\x69\x53\x1d\x67\xe9\x91\x4e\x70\xec\x0a\xcf\x6a\x70\x9f\x6b\x93\x3d\x37\x2c\x4f\xdc\x56\xa7\x34\x6d\x55\x6d\x3c\x1a\x4f\x30\x93\x4f\x70\x79\xdc\xb6\x96\xb5\xb2\x29\x54\xc4\xac\xbc\x6c\xe0\x0a\x5b\x1c\x69\x1e\xef\x4d\xaf\x41\xc5\xdb\x8f\x95\x55\x7b\x31\x62\x3b\xcd\xa9\x3f\xf7\xdc\x43\x78\xb2\x01\x8f\xcc\x1b\x87\x12\x07\x40\x4f\xf0\x80\x4e\xcd\xfa\x67\xdb\xe1\xee\xf9\x6d\xb1\xb6\xad\x91\xd9\xb8\x7d\x38\xa4\xc0\xb9\x22\x84\x8d\xb2\xe4\xca\x92\x34\xa9\xe8\x2c\xc2\x52\x20\x44\x5f\x08\x4d\xa1\x2f\xec\x83\xc4\xf8\x3c\xd0\x4c\x2d\x66\xf2\x04\xc2\x80\xcc\xcc\xa1\x9a\x35\xa8\x3c\x6d\x44\xad\x8e\x79\x81\x43\x90\x63\x04\xad\x0f\x40\x6b\xa5\xcb\xc1\x7b\x49\x78\x46\xd5\xee\x62\x7b\xb6\xc9\x4b\x18\x23\x87\xe1\x70\x0d\x96\x17\x73\x45\xfc\x2a\x47\x36\x7a\x81\x59\x44\xc3\xf9\xad\xb5\x61\xf6\x02\xb7\xd4\xdc\xe9\x77\x77\x6e\x19\xa9\xf3\xf5\x86\x3e\x87\x05\xae\xdb\x1c\x30\xa4\xc6\x4a\x83\x45\x36\x1a\xda\xa0\xf7\x9e\x05\xef\x5b\x63\xda\x55\x3a\xe4\x9e\xa1\x64\x6d\xea\x5c\x6b\x61\xe0\x9b\xba\x78\xc4\x75\x4b\xe7\x82\xed\xf7\x81\x2b\xa4\x96\x46\x45\x0c\xac\xf8\x38\xd3\x89\x92\x44\x08\x6e\xcb\x7a\xc0\x42\xaf\x1c\x45\xe6\x6e\x18\xa9\x23\x02\xd5\x4f\xd0\xf9\x24\xfa\x0d\x29\x57\x59\x06\x5d\xb6\x57\xdc\xe2\x9c\x11\x63\x27\x70\x9a\x23\xc8\x75\xe2\x41\x99\x35\xd2\x3c\x53\xb8\x48\xf4\x7b\xdf\xee\x2d\x04\x7a\xab\x42\x43\x56\x51\x29\x7f\xbb\xa1\x69\x55\x6d\x34\x77\x77\x6f\xd0\x76\x08\x25\x1f\xec\x29\x84\x68\xa1\x2d\x8b\x5c\x7c\xf8\xa6\xf5\x91\xc4\x83\xda\xac\x58\xa6\xf3\xa9\xe4\xf1\xab\x4d\xde\x1b\x1c\xb6\xb3\x72\x18\x09\x8f\xc1\x52\xff\x01\x0c\x8c\xf6\xc1\xef\x56\x9c\xce\xe6\x25\x66\xc2\x89\xd3\xb8\xe4\x69\x70\xd8\x66\xba\x06\x89\x35\x0c\x48\x87\xe6\x48\x11\x28\xb4\xe4\xc4\x98\x7f\xb7\xab\x52\xf0\xb6\xe3\x65\x53\x5d\x0c\xb5\xac\xfe\x32\x90\xa6\x57\x2f\xc4\x1b\x2d\x91\xad\x02\x64\x94\xb1\xae\x1d\x70\x2d\xe8\xd6\x9c\xc7\x95\x12\x5b\x0b\x60\x6e\xb6\x76\x96\xba\x44\xc6\x35\x18\x73\x2a\x82\xbb\x52\x58\xc6\x23\x2f\xc7\x91\x19\x50\x95\x2e\x99\x23\xbf\x21\x11\xef\xf9\xc5\xf8\xc0\x6b\x11\x3b\x40\xb9\x8f\xfa\x8b\xa1\x03\xa9\x2c\xdc\x00\xc0\xa3\x65\x46\x6a\x0e\x87\x36\xe2\x8e\x0d\x90\x26\x01\x0e\x2f\xbb\x3d\x2b\xe1\x46\xea\xdc\x1a\x6c\xb6\xa4\x07\xac\x9a\xa6\xc5\x77\x77\x8b\x17\x10\x10\xf8\xb3\x56\x10\x7a\x38\xb3\x0e\x1b\xce\x1a\x6a\x17\x0e\xef\xe2\xf2\xce\x0f\xbf\x38\x26\x71\x51\x73\x73\x89\xe7\x75\xd7\xdc\x80\x1e\x6e\x37\xed\x4f\x5e\xa6\x1a\x03\x8a\xba\x85\x0a\x93\xe4\x33\x16\x29\x4c\xc0\x43\x30\x4c\x92\x81\x9b\x0d\xd3\x33\xbc\xb0\xf1\xdb\xd8\x0d\xb2\x1a\xde\xed\x7a\x1a\x03\xe2\x6d\x46\xf5\xbe\x35\x9e\x9a\xbc\x82\xa8\x15\xed\xc3\x32\xad\x02\xd8\x8b\x56\xcc\xb4\xad\x08\x60\xb7\xe7\xf8\x7d\x09\xae\x24\x71\x54\x7d\xda\x02\x87\x07\xd7\xe2\xaf\x1d\xc5\xe1\x63\x94\xe6\x4d\xcb\x99\xa3\xc9\x3c\x0f\x76\xec\x4b\x1d\x2b\x02\x36\x6d\x0c\x41\x23\xad\xaf\x6f\xb9\xe5\x94\xa3\x7e\x57\x07\xff\xe4\x1a\x47\xf3\x6e\xa5\xb7\x42\xc5\x8f\x15\x31\x9d\x40\x75\xba\xf6\xd6\x08\x09\xc2\xae\x15\x84\xfb\x86\x41\xae\xf4\xd9\x3e\x44\x1c\xf0\xda\x6e\xce\x7c\xfc\xcf\x9f\x40\x45\x01\x8e\x33\xa0\x70\xbc\xb5\x7a\xfe\x6e\xd7\xae\x37\x38\x14\xe2\x69\xc5\x86\x8e\x08\xae\x8e\x05\x31\x7f\xae\xd4\xcd\x3d\x97\x98\xba\x4a\x14\x4d\x89\x99\x16\x65\x45\xb2\xd9\xa9\xd0\xbb\x70\xf4\x59\xc4\x2e\xc4\x64\xc9\xea\x5f\x4e\xe6\xc2\x91\xfc\x7a\x47\xf9\xbf\xf2\x8c\x3e\xf4\x64\xad\x86\xde\x55\xa2\xb4\x00\x7f\xbe\x0a\x62\x34\x66\xe6\x24\x87\x91\xb0\x30\x89\xca\xd8\x23\xc4\x0d\x95\xe7\x86\xd3\x37\x89\x38\xe8\xb7\xed\x4b\xde\x9c\x90\xa9\x5b\x93\x79\x57\x48\x1d\x18\x22\x68\x72\x0a\xc5\x40\x01\x45\x2c\x7e\x12\x4f\xbf\xfb\x7e\x4b\xac\xaf\xc7\xce\x7a\x53\x8a\x49\x45\x84\x82\xbf\x42\x86\x94\x96\xaa\xbb\xf9\xbd\x78\x2e\x82\x0d\x9b\x1d\x25\x36\x59\xa2\x5a\x9b\xdf\xb7\xdb\xbd\x32\x7b\xab\x6e\xd5\xdd\xb0\x90\xad\x36\x7b\xb8\x3b\x8b\x17\xd2\x3c\xee\xb1\x8a\x0e\x7b\x38\x9d\x85\xa3\xf2\x7f\x50\xac\x43\x1b\x05\x8d\x7d\xc7\xc8\x82\x06\x50\xb2\x1d\xc3\x70\x83\x36\x47\x64\x95\x24\x97\x72\xaa\xdd\xc9\x7b\xb3\x6c\xe6\x58\x90\x5c\x61\x84\x5d\x0c\xca\x3d\xed\x65\xc3\x0f\xa7\xf0\xc7\x2c\xcf\x66\xe7\xe6\xf5\x21\xdc\x20\xeb\xad\x6c\xf8\xa1\x6a\x43\xc3\xa6\x01\x94\xf1\xd4\x6d\xef\x6c\xc0\x07\xdc\x80\x0f\xe2\x27\x35\x3a\x41\xaf\xf6\xe1\x43\x8d\x29\x92\xf3\xc6\x51\x10\x7e\x38\xc7\x70\x53\xb5\xd9\x94\xdd\xff\x0c\x40\xb8\x9b\xd8\xba\x6a\xcf\xe4\x19\x2a\xb1\x4d\x33\x20\x54\x97\x07\xae\x39\xea\xbe\xaa\x38\x71\x82\x35\xc2\x9e\x9f\x64\xc6\x65\xcf\x72\x2b\xbc\xa0\x85\x3e\x6d\x7e\x2a\x2c\xbe\x4b\x54\x02\xd2\xbc\x19\xc9\xd5\x92\x30\x26\xd7\xe3\x42\x3c\xd7\xc7\x8b\x52\xab\xa7\xf3\x24\x69\x8b\x81\x0d\x9e\x5c\x77\x06\x70\x58\xb6\x0b\x71\xc5\xb0\x81\x56\x1f\x6b\x9e\xc6\xcb\x37\x00\x96\x4a\x2d\x91\x69\x52\xbb\x44\xce\xc9\xc8\x86\x1f\x1c\xb5\x27\x24\x7b\xe7\xab\x05\x1f\x6c\xd6\xb0\x86\xd5\xea\x3f\xa1\x37\x2b\xc4\xe9\x0c\xf3\x70\xda\xcd\x65\x58\x14\xf1\x45\x3a\x10\x1b\xe2\x49\xdf\x12\xbe\x35\xec\xa3\xee\x2d\x6a\xf2\x86\x39\x90\x56\xd6\x02\x17\x42\x7b\x5a\xfa\xcb\xa6\x0f\x0c\x76\x56\x63\x77\x06\xdf\x11\x37\x09\x94\xaa\xe9\x07\x8c\x89\xa9\x12\xac\x08\x88\x3e\x6c\x37\x8d\xae\x21\x68\x31\x8c\x69\xd5\xa2\xcc\xdd\x9d\x41\x25\xc8\xff\x6f\x32\x0c\x15\xed\x36\x18\x3b\x4f\xc2\x02\x6f\x9c\x6a\x52\x3a\x82\xb9\xf6\xf8\x21\x84\xa7\x58\xe5\x7c\xa9\xad\xa0\xaf\x5d\x74\x36\xe3\xd4\xdd\x73\x0f\x97\x1e\xb0\x77\x6b\xb4\x6e\x77\x77\xde\x42\x36\x6e\xa3\x0b\xc1\x79\x6f\x94\xa5\xa3\xb0\xf4\x76\xcb\x8c\x61\xd0\x96\x72\x5b\x6c\xbb\xb0\xd4\xe0\x04\x18\x96\xe8\x6f\x75\xeb\xe9\x76\xe7\x12\x0c\xbd\x2c\x4e\xe2\x3b\x6f\xca\x35\xe3\x2d\x1a\x8e\x88\x01\x99\x29\xbb\xd6\xec\xd3\x8e\x88\x6b\xb1\xcc\xa0\x88\x06\x28\xae\xc7\x09\xf4\x6b\xcd\x31\x99\xc8\xd4\xac\x8e\x4b\x1d\x78\xc7\xac\xb2\x8f\xfb\xd8\x83\x97\x98\x21\x76\x6b\xc6\x7e\x9d\xc6\x8b\xc2\x00\x22\xb6\x1d\x32\xb3\x8f\xb3\x86\xff\xf7\x56\xd9\x41\xe4\x5a\xec\x75\x3b\xc7\x63\xae\xba\x5a\xe5\x02\x6a\xec\x90\x43\xaa\x3a\x5b\x70\xa4\xdc\x87\xd3\x82\xa3\x41\x85\x74\xc0\x2f\xe5\x6d\xa1\x71\xa3\x97\xcb\x68\x3e\x92\x0c\x0f\xc2\xd1\x88\xa7\xf2\xb5\x1b\x6b\x4c\xf3\x90\xe2\x53\x3a\x5f\x97\x20\x1a\x44\x31\xbd\x54\x76\x24\x1c\x61\x3a\x47\xb3\x11\xfa\x83\xb1\x6d\xa9\xd9\x87\xfa\xe5\x62\x5d\xf9\xcf\xb0\xfb\xca\xca\x84\xa3\x91\xd1\x1a\xf1\x43\xe7\x9a\xe2\xe0\x3d\xe2\x5c\xe1\xf0\xe5\x38\x4e\x2f\x12\x49\x3e\x77\x2e\xb5\xf2\xa5\x34\x9f\xbe\xca\x6c\x3e\xee\x22\x2f\x9a\x4a\x59\x33\x8b\x48\x8e\x30\x74\x17\x37\x87\xcb\x3b\xf4\x1d\x83\x65\xe7\x85\x2c\x1d\x0e\xa4\x28\x21\xe3\x44\x36\x2f\xdf\x24\xf3\x02\x6c\x30\xf3\x5e\x2e\x67\x89\x7a\xa7\xf5\xcf\xce\xd6\xfb\x17\x1d\x11\x88\x80\xbf\x2c\xa8\x1f\x3c\x83\x71\x91\x75\x7f\xf8\xe1\xbb\x1f\xbb\x9b\xee\x39\xec\xf7\xc5\x3c\x95\xc5\x28\x9c\x49\x91\xca\x2b\x99\x53\xfc\xab\x8e\x48\x33\x51\xe6\xb7\xbd\x1e\xaa\xd7\xc0\x75\x4d\x46\x83\xca\x7c\x5d\xc8\x2c\x4c\x7f\x3d\xdd\xe8\xfe\x18\x76\xc7\xe7\x1f\x9f\xde\xf7\x2f\xe2\x8e\x19\xc6\x51\xaa\x21\x00\xe5\xb8\xfb\x03\xfe\xf2\x0c\x80\x68\x0c\x5c\x9a\xb7\x47\xfb\xbb\xd9\x74\x96\xa5\x32\x2d\x5b\xee\xb0\x55\x03\x87\xba\x7b\xc4\x6d\xb3\x55\xc3\x2b\xca\xd4\xdf\x1b\xfc\xa2\x77\x08\xf2\x02\xec\xa5\x0d\x1b\xd5\xef\x8b\x93\x49\x5c\x80\x0b\x1a\x18\x6c\x62\x7c\x6d\x70\xf2\xbb\xce\xe3\xb2\x94\xa9\x18\xde\x8a\x5f\xf2\x38\x4c\xc5\xef\x93\xb8\x94\xa2\x35\x2d\x46\xe0\x70\xa2\x78\xc3\x72\x22\x45\x9c\xf5\x3e\xa8\x1e\x72\x08\x4e\x98\xdf\x62\xd4\x0a\x91\xc4\xc3\x3c\xcc\x6f\x7b\x66\xa0\xfd\x12\x9e\x74\x43\x29\x53\x11\x46\xe1\xac\x24\xbb\x50\xe8\x08\x1f\x7f\x32\x17\x61\xa4\xbe\xa5\x23\x29\xca\x4c\x1c\xbd\xdc\x15\xcf\x7e\xfc\xe1\x7b\x8b\x21\x0a\x89\x58\xd0\x96\x8d\x86\x45\xab\xbb\x68\x0b\x9d\xed\xd7\x96\x73\xfe\xac\x44\xbf\x8b\x40\x3b\xce\x3b\xb7\x9c\x6e\x8a\x4e\xef\x35\x79\x7f\x91\x4c\x15\x65\xee\x99\x3f\x79\x23\xac\xb1\xdc\xda\x0d\x23\xe0\x03\x91\xf7\xc4\xaf\xe7\x95\x4e\x08\xad\x03\x22\x6f\x0b\xbb\x6e\x33\x3c\x9f\x1b\x44\xff\x16\x11\x9d\x05\xba\xda\xa8\xf1\xab\xc0\xd4\xce\x7f\x7d\xfa\xfd\x5f\x9f\x3e\x53\xef\xdb\x99\x82\x61\x3f\x2d\x5b\xdf\x6c\xf4\x8a\x24\x1e\xc9\xd6\xd3\x76\x47\x6c\x7e\x0f\x29\x40\xff\xfa\xec\x97\x60\xab\xe6\x56\x71\xf6\x22\x9b\x2b\xee\x24\x08\x16\x3d\x33\x70\x5d\x9b\x9e\x19\xf0\x7e\xc4\xcd\x84\xe5\x9f\x84\xf9\x6e\x16\xc9\x9d\xb2\x15\xb7\x2b\xf7\x88\x3b\xa1\x11\xa2\xce\xcd\xd3\x17\x10\xf9\xcd\x2d\xbc\xbb\xb3\xe5\x7b\xaa\xbc\xd7\x58\xfe\xdd\x4b\x55\xfe\xae\xb1\xfc\xdf\xa0\xfd\xff\xaf\x52\xde\x1a\x89\xbf\xa9\xf2\x67\x1b\x10\xa2\x48\xfc\x04\x3f\x7e\x6c\xab\xda\x1b\xdd\x1f\x1b\xeb\x7f\xbb\xc9\xea\x7f\xb7\x03\xf5\xc3\xee\x1f\x8d\xf5\xbf\xe7\xf5\xff\x0d\xeb\xef\x74\xff\xa7\xad\x5f\x7d\x86\xcd\x4b\xb1\xee\xac\xa9\x5e\x4f\x67\xfd\xb2\xb4\x8c\x53\xff\x7e\x74\x57\x7c\x24\x7e\x12\x1b\x37\x3f\x54\xb1\x09\x77\x1e\x06\x32\x52\x99\xd3\x91\xcf\xd0\x3d\x64\x88\xc5\x63\xb4\xcc\x20\x1b\x37\xbb\x1b\x02\x57\xe7\x6f\xe2\xfb\xf6\x39\x07\x40\xf5\x83\x65\x8f\xd5\x5e\xbc\x6c\x57\x5e\xfd\xab\x43\xf4\xe2\x87\x8d\x0d\x44\x03\xd8\x85\xbd\x8d\x07\x40\xb8\x67\x21\xdc\x7c\x5a\x0f\xa2\x86\xdf\x40\xfa\x85\xe7\xa1\x10\x60\x93\x95\xaa\x43\xb6\x71\xb3\xb9\xb1\xb1\xb1\x01\xa2\x2d\xd3\xf7\xcb\xb6\xf8\xe9\x27\xb1\xb9\xd1\x56\x03\xd6\x1d\x43\x53\x8f\xc3\x40\x28\xc6\x20\x7e\xc9\xe6\xfc\x43\xfb\xdc\x05\xb7\x71\x01\x36\x9f\xda\x15\x58\xb1\xc9\xf7\x0f\x68\x61\x17\xb0\x81\xf9\xcd\xe6\xae\x4d\x3f\xc9\x76\x6a\xa4\x71\x9e\xfa\xe0\x8a\x25\x29\x39\xfd\xff\xb3\xf7\xae\x6b\x6d\x1c\x4b\xa3\xf0\xad\x34\x39\x30\x1a\xa3\x13\x38\xb1\x1d\x61\x99\x60\x2c\x12\xde\x10\x60\x03\x4e\x56\x5e\x60\xe1\x41\x6a\xd0\xc4\x62\x46\x99\x19\x19\x58\x31\xef\xf3\x7c\xfb\x16\xf6\xdf\x7d\x13\xdf\x8f\xef\x3e\xf6\x7b\x0b\xfb\x4a\xbe\xa7\xab\xfa\x50\xdd\xd3\x23\x09\x70\xb2\x96\xb3\xec\x27\x4f\xc4\xcc\x74\x57\x9f\xaa\xeb\xd4\xd5\x55\xbf\xb3\xf4\xec\xd7\x0e\xfb\x9d\xa5\x1d\x29\x10\xdf\x82\x9d\x76\xdc\x61\x41\x1a\xb0\xdb\x13\xcb\xbe\x7c\x9e\xdb\x86\x32\x1f\xd9\xa4\x06\x3e\x3f\xd5\xa4\x16\x3e\x5b\x95\x9a\xdf\xbc\xf7\x0e\x53\xad\x13\x03\x2d\xc8\xa7\xe9\xd9\xaf\x74\xad\x7d\x06\x3c\x51\x6e\xaa\x05\x4f\x82\x66\x5d\x28\x7a\xf4\xab\x4b\x1a\xa4\xee\x20\xb6\xcf\xd9\xaf\xae\x44\xcb\x6c\xa6\x0e\xe5\x1c\x9d\x4f\xbc\x13\x6c\x38\x99\x8c\x46\x98\x92\xef\x3c\x6f\xc2\xf9\xcb\xee\xb9\x58\xaa\x10\x6a\x34\x96\xbd\xba\x9f\x34\x8b\x0a\xcd\x4c\x2e\x5d\x7a\xf6\xab\x5a\x31\xd1\xeb\x5b\x9f\xb2\x06\x4d\x40\x25\x01\x7f\x8a\x06\xe6\xa0\x9a\xc7\x9c\xbb\xea\xa0\xa1\x52\x54\xe8\x05\x96\x7d\x7e\xd1\xbb\xb6\xf2\x01\xaa\x77\xb0\x40\x7e\xfd\xa2\x4a\xa4\x81\x1a\x30\x87\x47\x32\xb7\x1a\x82\x3a\x09\x9c\x56\x5f\x4e\xce\x9d\x48\xf2\xea\x9d\xd5\x2a\xde\xc2\x3d\xfb\x95\xd8\x54\xc4\xd3\x2c\x83\x0a\x3d\xf9\x73\xb7\xe2\xc2\x82\x68\xc1\x0a\x0d\xb0\xb8\xc8\x9c\x57\x4d\xdd\xc3\x29\xdf\xd0\x54\xed\xee\xeb\x33\x8c\x0d\x47\xf7\xb5\x78\x45\xe3\x12\x1a\xc3\x8f\x36\xf9\xa8\x50\x81\xc4\x40\x19\xdd\x9c\xf1\x1f\x23\x6b\x65\xd4\x3b\x81\x19\x75\x46\x52\xc3\x50\x5b\x8c\xc0\x9a\xd2\x36\xbe\x8c\x64\xbe\xda\xa3\x13\xdf\x96\x23\x24\xe1\x5d\x34\xd2\x3b\x0e\xc9\x7b\x09\xb7\x11\x18\xe2\x28\x26\x6e\x3e\x8a\x4f\x42\xaf\x83\xbf\x1e\x2a\xd6\xb1\x55\x23\xb5\x5a\x89\xc2\xf4\x5b\x7f\x70\x47\x1d\x88\x91\x98\xa7\x3a\xf6\xa3\xf4\xc5\x54\x96\x58\xfc\xad\xeb\x8d\x21\x56\xa0\xa3\xfe\xa8\x5b\xfb\xa5\xa3\xfe\x90\xaf\x51\x17\xeb\xc8\x5f\xf9\x12\xb5\xa4\x8e\xfc\x95\x2f\x15\x1e\x74\xf4\x5f\xfa\x03\x62\x7d\x47\xff\x25\x3f\xa8\xf5\xeb\xe8\xbf\xd4\x07\x9e\x5d\xf0\x0e\xfe\x54\x05\x61\x54\xc1\x04\x41\x2e\xd7\xb2\x3f\xd9\x8a\xf2\x93\x89\x55\xd6\xe7\x49\x71\x78\xc5\x93\x02\x03\x00\xb6\xbe\x5c\x69\xb7\x2e\x34\xa4\x49\x11\xdb\xb1\xc1\x5a\xe2\x0d\x4d\x1d\xb0\x99\x66\x97\xe0\x1c\x27\x17\x60\x7f\x73\x63\xf9\xe9\xe3\x67\x1d\x16\xc8\xbf\x82\xba\xfe\x20\x14\x2f\xfc\x20\xfe\x0a\x2a\xd7\x52\xb4\xd1\xc4\xe5\x91\x82\x36\x41\xae\x40\x6a\xa0\x41\x47\xb6\xdd\x94\xf0\xea\x16\xce\x5e\x46\x45\xc1\xb3\xbc\xe3\xe2\xa5\xee\xdf\xf4\xc3\x78\x0b\x2f\xe5\xa4\xd1\x3b\x38\xee\xd4\xd5\x59\xb0\x14\x94\x08\x71\xbd\xd4\x36\x4e\xc1\x1d\xda\x96\xda\x9b\x73\xa5\xb2\xb4\x83\x14\xa1\x97\x2d\xe2\xcc\x1c\x27\xd3\x4e\x43\x61\x25\xab\x16\x57\x14\xc0\x59\x74\x8a\xc8\x97\x26\x08\xdf\x9c\x67\xaa\xe4\x1c\x6a\x2f\xe3\xe7\xf1\x35\xb8\xa0\xaa\x84\xff\x72\xfc\x67\x59\xd4\x7f\xcb\x8b\x9c\xcc\x90\x7a\x55\x1b\x43\x2d\xbf\xd7\x9e\xf8\x22\x34\xc5\xa3\x93\xc0\x71\xbc\xee\xa7\x97\x97\x51\x87\x05\xf0\xab\x50\x31\x4e\x06\x71\x9f\xd3\x56\xe4\x1b\xd9\x48\xd9\xf0\x55\x6e\x49\x68\xad\x82\x3d\x2f\xb1\xa0\xd4\x68\xc6\xc7\x3c\xb2\x9d\xce\xc4\x8b\x99\x43\xf0\x59\x63\xaa\xcf\xa1\x61\x03\x63\x26\x06\xfc\x64\x66\x5f\xbc\x26\x25\x0e\x53\x05\x83\xd8\xf7\xb2\x4c\xda\x33\x77\x33\xf8\xaa\xbb\x25\x6a\x48\xff\x46\x28\x44\x78\x06\x29\xbc\x66\x55\x66\x1d\x76\x44\x9f\x4f\x6c\x3e\x55\xa4\x5b\x07\xbb\xac\xcb\x5e\x81\xb7\x3e\x91\x0b\xb6\x0e\x76\x11\xc1\x89\x65\x10\x76\xb7\x26\x2b\x12\xdf\x8e\xf4\xb6\x3f\x59\xb5\x0a\x52\xda\x3f\x18\xfc\x8f\x09\xcf\x24\x7e\xd9\x17\x55\xe0\x64\xe9\x55\x0a\xa8\x45\x5e\x4b\xe3\x47\x87\x05\x60\x7f\x0b\xec\xd7\x07\x10\x79\x8a\x8f\xec\x3a\x03\x3e\x8a\x2f\xe3\x42\xd0\xf4\x60\x31\x70\x88\x3f\xb8\xa1\xd1\x57\x59\x07\x37\x5a\xd3\x62\x0b\xf8\xf0\x13\xb8\xca\xec\x26\xa3\x1b\xbb\x05\x1c\x73\xc7\x9e\x0b\xeb\x1b\xb4\x2e\xa7\xa6\x69\xa8\xdd\x91\x55\xe3\xc4\x5c\x3e\x18\xf0\x71\xc6\xfb\x51\xa1\x2e\xe2\x98\x1d\x40\x9a\xcd\x79\x16\x47\xa3\xf8\x1f\xfc\x15\x5c\xe9\x21\xb9\xe6\xc8\xfb\xda\xc0\x5c\x21\xb6\x50\x18\x16\x13\x49\xe4\x80\x78\xd6\xab\x3d\x91\xbf\x8d\xc7\x3b\x93\xd1\xc8\x6d\x13\x88\x92\xf8\x00\xb7\x87\xe3\xe4\x42\x7e\xb7\xf7\xc0\x4e\x9a\x88\x32\x71\x3e\xdc\xcb\xc4\xe4\xc7\xf6\x25\x54\x6f\x81\xda\x3b\x57\x94\x52\x32\xbc\x34\xcb\xa1\xd1\xcc\x0c\xc4\xc8\x8f\xb2\x44\x32\xb9\x3c\xe3\xd9\xb4\x12\x67\x69\x3a\xe2\x51\x32\xad\x88\xb4\xfe\x4d\x03\x12\x5f\xc4\x49\x61\x4b\xbf\xd8\x39\x27\x92\x91\x7e\x29\xb9\x62\x4a\xc5\x1a\x49\xba\xf0\xe1\x02\x89\x2b\x5f\x37\xf4\xb6\x72\xc2\xdd\x05\xb2\xd1\x57\xa1\x5d\x3c\x2a\xf4\x43\x9e\x66\x85\xbb\xaf\x7c\x38\xe4\xa2\x6c\x05\xf2\xdb\x9b\xee\x38\xf1\xb9\x1d\x9c\x11\xd7\x28\xa2\x8e\x61\xb7\x70\x1a\xcb\x57\x10\xe4\x1c\x89\x29\x84\x72\x9a\xbc\x13\xad\x92\x58\x55\x45\x51\x12\x9e\xeb\x95\x8b\xe8\x08\xca\xde\x0d\x7e\x48\x9e\xe9\xc7\x3e\x22\x1b\xa2\x47\xa0\x25\x57\x16\x6c\x05\x69\x86\x96\xe5\x41\x27\x9c\x25\x35\x88\x96\x51\xe5\x9f\x36\x0a\x67\xdb\xda\xc3\x99\x25\x66\xb0\xb2\x9e\xa8\x4b\x85\xcd\x5f\xd3\x38\xa9\x05\xf5\xc0\x6b\x67\x86\x71\x49\x2d\xb9\xe4\xa7\x50\xc6\xca\x2a\xa3\xb1\x44\x4b\x0c\x4f\xe3\x20\x12\x5b\x53\x9f\xf5\x4a\x2b\x2e\xd1\xe4\xce\x81\x45\x9d\x05\x6f\xf9\x4d\x10\xb2\x8e\xcd\x7c\x99\x6b\xbe\xc2\xf5\xd0\x86\x65\xe7\x68\xdb\x47\x77\x40\x39\x7d\xff\x5e\xae\xa1\xad\x09\xba\x03\x97\xdd\xaa\xb2\x59\xfc\x24\x8f\x34\x3d\x23\x95\xb2\x48\xe7\xee\x43\x5e\xf5\x4e\xec\x91\xde\xa6\x35\xd5\x30\x58\xdf\xbb\x42\xd2\x31\xdf\x54\x6b\x80\x91\xd3\x9a\x02\xfc\x08\xc2\xd0\xe3\x77\xe3\x6f\x55\x49\x47\xe5\x36\xa5\x0c\x0c\x13\x58\xb2\x9e\x95\xfd\x8d\x4b\x54\x42\xa1\x5e\x95\xbf\x10\xc5\xe8\xdc\x7b\xb8\x70\xf6\xeb\x0f\xfc\x26\xf7\x38\x51\x20\x61\x29\xed\xe0\x1f\xd0\x92\x85\x5f\x6d\xfa\xe0\x28\xdd\xb3\x6d\x5e\x06\x9c\xa0\xbb\x6c\x0d\x0d\x5e\xe2\xef\x9a\xf8\x9f\xc0\xe0\xb7\xa6\x73\xb7\xd3\x4c\x79\x12\xd4\x54\x63\x1e\x5a\xca\x64\xc9\xb2\x35\x4f\x1d\xb2\x13\x53\x99\xb3\x95\x15\x1f\x91\xa6\xb1\x09\xf7\x6f\x7b\x36\x87\xe9\x58\xf6\x47\x51\x50\x8b\x68\xda\x90\xd6\x14\x4f\xad\x24\xbd\xf4\x5a\xab\xa7\x90\x2d\xfa\x2b\xa2\x60\x37\xd2\x31\x0a\x40\x4d\x33\x3e\xb6\xc6\x82\xa6\xd2\x06\x3a\xae\x66\x60\x9f\x1c\x11\x61\x5c\xfa\x49\xd7\x4b\x4c\xdd\x8c\xbd\x1c\xeb\x41\xcf\x85\xf3\xbe\x9a\xdd\xab\x7f\x95\x6c\x5f\x17\x70\xd8\xbf\xfa\x67\x8b\x01\xea\x9f\x25\x0e\x68\x10\x46\x2c\x50\xff\x5c\xf1\x40\x17\xf5\x88\x09\x1a\xb6\x23\x2e\xd8\x3d\x29\x89\x0d\xea\x9f\x16\x1f\xd4\x8b\x4a\x07\x58\xbd\xcf\x69\xd4\xc8\xec\x12\xfa\x73\xa0\x56\x63\x77\xac\xc2\x95\x69\xb6\x5b\x59\xa8\x96\x8e\x8b\xdc\xb1\x47\xd2\x37\x8c\x9e\xe2\x23\xc5\xf4\x72\xc8\xb1\xa1\xa4\x96\x41\xb9\xf4\xc1\x24\x04\x32\xae\x46\xa5\x42\x15\x02\x11\x46\x46\x49\xb8\x95\x2d\x48\x1e\xe7\x83\x36\x5f\xa4\xec\x8c\xb3\x48\x8f\xbb\x59\xe6\xe7\x32\xf2\x25\x9e\x1b\x63\xcb\xea\xf1\xfd\x7b\xc3\x15\xe4\xbb\xb2\xd8\x66\xd5\x70\x3c\x39\xf5\x80\xed\xef\xa0\x9e\xf9\xbf\x55\x1d\x5a\x7b\x47\x7a\x38\xe4\xba\xeb\xe8\xc7\xc3\x2e\x27\x39\x04\x84\xe1\x31\xa4\x10\x83\xa6\x84\xda\xab\xa0\xd6\x59\x9a\x31\xc2\x3a\x7c\xb3\x71\x3e\x55\x5f\xf5\x0d\x5f\xd6\x98\xe6\xc7\x8a\x29\xb1\x94\xc7\x52\x59\xdd\xab\x53\x48\xbe\xa0\x82\x9e\xf1\xbf\x4e\x20\x9a\xbf\xea\xb0\x9c\x82\x71\x96\xbe\x8b\x07\x7c\xd0\x0c\x2a\x2c\xb4\x7a\x7c\xa4\x45\xdb\x50\x6b\x66\x01\x6f\xf8\x78\xb4\x53\xfc\xd3\xb0\x0c\xa8\x22\x25\x78\x83\x35\x16\xd3\x2c\xcd\x9a\x4f\xe0\xc7\xa8\x5e\x92\x35\x98\x52\xf6\x8c\xe8\x86\x48\x89\x0a\x02\x41\x3d\x9e\x1c\x9b\x02\xed\x8b\xfd\xcd\x56\x08\xd9\x9a\xb7\x4c\xc7\x0c\xd3\xfe\x42\x88\x19\x31\x55\x58\xad\x69\x86\xe3\x88\x32\x6c\x8d\x00\xd5\x85\x3a\x6c\x61\xc1\xae\x47\x9a\xd0\x66\x0f\x25\xae\x95\x3e\x19\xd3\x87\x67\xcb\xaa\x8f\xfe\x21\xbb\x85\x3a\x25\x82\xa0\x3e\x91\x66\x89\x51\x85\x36\xa8\x5f\x4f\x1b\xb4\x29\xd4\x71\x6a\x91\x06\xb4\x81\xa6\x44\x2d\xfd\xa3\x90\xdf\x3a\xae\x8c\x5b\x02\x99\xf9\x60\x96\x30\x74\xcd\xfe\x5a\x02\x5b\xee\x2a\x35\x0e\x95\x1b\x20\xaa\xc0\x94\xee\x93\x52\xa5\x16\xbd\x8c\x14\xb7\x45\xa7\xcc\xdf\x4b\x66\x27\xfb\xb3\x63\x3a\xa2\xfd\xb5\x3e\x55\x4c\x8b\x5d\x86\x74\xb5\x4a\x4e\x20\xd6\x24\xab\x2d\x2d\x7b\x7a\x27\xc5\x7c\xa6\x4d\x78\x04\x1f\x21\xc9\x38\x90\x21\xd9\xbb\xbf\xf3\xe2\x53\x07\x98\x35\x05\xe1\x31\x6c\x59\x00\x4b\xdf\x2b\xfa\x5c\x2e\x47\x3b\x5f\xfa\x2a\x29\x5a\xf5\x41\x19\x09\x0a\x82\xe6\x23\x66\xc9\x2a\x15\x36\x17\x78\xad\x45\xa2\x19\x92\xd0\x6a\xb5\xee\x64\x48\xbe\x57\x51\x93\xf7\x00\x66\x9b\x75\x28\x35\x27\x55\x56\x2b\x0c\x3f\x41\x50\x65\xf4\x21\x7c\x83\xc0\xa9\x66\x1d\x95\x8d\x79\x55\x3e\x3a\x11\x52\xd3\xab\x56\x51\xe9\x89\x35\xdc\x8a\xa8\xb2\x98\x28\xff\xb9\x92\x4d\x42\x1f\xb1\x6c\x52\x06\xad\x64\x4b\x2d\x3d\x91\x22\x2c\x4e\xfc\x87\x32\xe5\xfb\x68\x9b\x96\x08\x50\x6e\x86\x5a\xd2\x64\x6b\x81\xb4\x33\x07\xa2\x99\x92\x48\xec\x81\x2a\xcb\x0b\x9d\x4a\x57\xed\xb0\x00\xcf\x4f\x82\x4a\x45\xda\x86\xa4\xab\xfa\xa6\xc7\xab\x1f\xfa\xa7\xe0\x88\x80\xb5\x17\x6d\x41\xae\x77\x85\xda\x5f\xa1\xcc\xbb\xc2\x3e\xa0\x12\xaa\xf0\x65\x30\xa8\xe0\x5b\xa5\xfe\x40\x0d\xdf\x96\x39\x75\xab\x54\x95\x57\x0a\xff\x5d\xb5\x79\xf5\x27\xd5\x7d\xc5\xcc\x54\x6b\xbe\xaa\xa5\xb2\xf2\x7b\x67\xb5\x57\x8f\x64\x96\xfa\x5b\x1a\x72\xc5\x77\x29\x16\xac\x39\x2f\xb2\x32\x03\xa0\xb5\xbc\xea\x32\x5d\xdb\x8a\x4f\x55\xea\xb3\xae\x3a\x45\x8d\xd6\x6d\x57\xa8\xd3\xf6\x00\x2a\xd5\x6a\x55\x6c\x0e\xf5\x1a\xfc\xb2\x52\x50\x4b\xd1\xd5\x0a\x0d\xc2\x0a\x82\x96\xca\xe8\x3d\xe8\xb1\xda\x81\x7a\xc8\x65\xa1\x1a\x82\xc2\xac\xb1\x60\x0d\x2f\xbe\xae\xfa\xb6\x91\x23\x59\x96\xd4\x28\xa7\xdc\x74\x6f\x67\x26\x03\xcf\x24\x25\x8f\xfb\x60\xf1\xf3\xe5\x76\xbb\xfd\x78\x35\x08\x21\x79\x00\x3b\xfe\x0c\x62\xd9\xc4\x7d\x26\x5a\x2e\x6e\x8e\x3f\x63\x19\x1f\x67\x3c\xe7\x09\x66\x1b\x67\xe9\x39\x8b\x30\xcb\xcf\x65\x94\xbd\xb5\x1b\x51\xe6\x24\x54\x70\x9f\x75\xd1\x21\x1a\x5a\xf8\xf2\xf1\xcb\xc5\x60\xe6\x05\x93\x8a\x5e\xfe\xdf\xff\xfd\xbf\x82\x70\x46\x53\xbd\x95\x2f\xbf\xd9\xf8\xf2\x9b\xc7\x76\x2b\x7e\x85\x08\x57\xd5\x5c\xf2\x6d\x1b\xfb\xf3\x92\x5a\x72\xb9\x34\xd3\xfc\x52\xa6\x7a\x1c\x7c\xf8\x2b\xda\x9e\x13\x62\xff\x29\xb0\x73\xed\xd0\xf9\x28\x60\x6e\x0b\xcc\xed\xb0\x95\xf6\x03\xce\x8d\xa5\x2b\x82\x7d\x94\x6c\x1d\x11\x5b\xee\x44\xde\x63\xe6\x01\x1f\x17\xc3\x0e\xfb\x5a\x39\x32\x5c\x24\x69\xc6\x2b\x0f\xbd\x21\x84\xd9\x38\xe3\xc5\x0e\xe2\x68\x4f\xa0\x68\xec\x0e\x10\x6e\xa8\xf2\x82\x67\x72\x90\x02\xfd\xcc\xa7\x1c\xa9\x6b\x6e\x1d\x6d\xd3\xfb\x9b\xf7\x39\xcf\xad\xe8\x97\x7b\x1f\xc8\x3d\xbf\xb5\xee\xfb\x2c\x7e\x5e\x3b\x3e\x1e\x2c\x85\xab\xad\x0b\xfb\xba\x41\x9d\xe1\xb9\xed\x41\x91\xf9\xa4\x26\xe9\x12\x75\x9e\xa5\x97\x1b\xd2\xb7\xb8\xa6\xaf\x1f\xe8\x9a\x75\xb6\xdc\x0e\xad\x58\x05\xa6\xfb\x66\x56\xd4\xf1\x8c\x75\x32\x57\xbe\x10\x2c\x0f\xe6\x88\xb1\x4e\xbb\x91\xca\x43\x68\x7a\x9f\x1a\xf0\x44\x1a\xcf\xb5\x1b\x69\x50\x0f\x42\xf6\xc2\x75\x22\x35\x06\xcd\x66\x3e\x1e\xc5\x85\xf7\xf0\xcd\x14\xa2\x79\xb7\xe1\x92\x4e\x9c\xb3\xab\x61\x54\xb0\x33\x15\x93\xfd\x2a\x1e\x8d\x58\x3e\x39\xbb\x8c\x0b\x76\x35\xe4\x98\x94\xeb\xff\xfe\xef\xff\x05\x98\x1d\xc1\x75\x9a\xb4\xdf\x9f\x64\x39\xc8\x8d\x08\x29\x1a\x8f\x47\x71\x1f\x88\x5d\xeb\xba\x71\x75\x75\xd5\x10\x2c\xa7\x31\xc9\x46\x48\x9a\x06\xec\x2c\x1d\xdc\x40\x1e\x2c\x01\x0d\x5e\x0a\x35\x26\x3d\xc7\x94\x5f\xd1\x05\x64\x28\x2f\x30\x94\x08\x80\x14\xef\x21\x89\x26\xf4\xd1\xb2\xc3\xe9\x5e\x61\x2f\x0b\x3e\xc0\x92\x82\x70\x44\x70\xf3\x8c\x8f\x8b\x86\xe6\x56\xa2\x7f\x45\x91\xc5\x67\x93\x82\x8b\x16\x0d\xb4\x26\xdb\xcb\x78\x3e\xb9\x8c\xce\x46\x37\x2c\x1a\xe5\x29\xe6\xb7\x4a\xc1\x06\x28\xeb\xe7\x18\xf9\x6d\x90\x42\x94\x7a\xd9\x49\xdd\x43\x6b\x5e\xea\x2c\x9f\xf4\x87\x2c\xca\xd9\x24\x6f\x44\x79\x3f\x8e\x9b\x8a\x4a\xa5\xc6\x5e\xe2\xa5\xf3\xc1\xea\x6c\x6e\xa3\x57\x8d\xe7\x9c\x45\x19\xc7\xa9\x43\x1f\xb4\x86\x9a\x67\xa0\x45\x2c\xed\x17\xa2\xe7\x9a\x0d\x89\xb9\x26\x1c\xa8\x8e\xce\x1f\x11\xbc\x87\xe1\x09\x50\x82\x24\xf3\xbc\x60\x51\xbf\x98\x60\x42\xb6\x5c\x82\x93\xc0\x9b\x2a\x6d\xad\x63\x01\x72\xd9\x49\xf5\x60\x24\x53\x22\x7b\xe8\x27\x75\x6c\xa7\xf7\x0f\xbc\x06\x7a\x86\xdb\x14\x4b\xe0\xcd\xb3\xea\xa0\x04\x3a\xb8\x00\xf4\x50\xa8\xcf\x07\x05\x55\xd7\x4a\x64\x92\xad\xd9\xb4\xe4\xef\xc7\xc7\x6b\xad\x3a\x04\xd5\xe8\x90\xcb\x5c\x02\x1c\x10\x61\x02\xcb\xa6\x96\xb0\x89\xb7\x92\xf3\x38\x89\x8b\x1b\xb6\x46\x0c\xf3\x9d\x8a\x1a\x54\xf6\x89\x50\x23\x57\x3d\x96\x7b\xb8\x24\x2f\xd5\xb1\x13\x56\xbc\xcc\xb7\xf1\x78\x4b\x86\x3a\x6a\x2c\xc3\x94\xff\xc0\xf9\x18\x13\xff\x09\x3c\xbf\x82\x7b\x70\x62\x65\xc5\xf2\xb0\x5c\xad\xd7\x55\x94\xb3\xf3\x74\x92\x0c\x0c\xac\x78\xb5\xd2\xac\x4f\x45\xa6\xd5\xbb\x09\x5d\xa0\x9c\x10\xc5\x04\x06\x5b\xa9\x96\x28\xc8\x50\xea\x28\x3e\x31\x74\x0f\xb0\x2b\x08\x3d\x77\xf3\x7c\xf5\xa0\xd8\xb4\x6e\xd1\x7f\x66\xa8\x92\x8b\x57\xdf\xab\x2e\xb5\x41\x76\xf5\x3c\xf0\x89\xa4\x39\xfb\xea\x35\x93\x06\x2e\xb5\xc0\xb1\xef\x6e\x3a\xeb\x3a\x53\x8a\xd4\x41\x45\x9e\xc8\x79\x21\x36\x78\xae\x68\x17\x88\x38\xec\x2c\xe3\xd1\xdb\xf9\x6f\x0b\xdc\x6d\x0d\xc1\x9a\x02\x93\xa3\x3b\x7f\x47\x15\x51\x6d\x0a\x35\x36\x57\x37\x15\xdf\xa5\x3f\x68\xef\xb7\x49\x34\xca\xf7\xd2\x5c\x96\x35\x08\x73\xd2\x0d\xdc\x00\x33\x63\x28\x56\xae\x09\xb7\x32\x84\x28\x6b\x01\xe8\x02\x15\x28\x95\x5e\x82\x3b\x4c\x25\x4d\xba\x2e\x19\x2b\x9d\x85\xb1\x06\x5e\x9a\x00\xa9\x7b\xeb\x2d\x2e\x5d\x37\xa2\xac\xa8\x53\x83\xf6\x5c\x8e\x1b\xf2\xce\x4a\xa5\x8a\xcb\xd6\xf0\x04\xb1\x63\x2c\x45\xac\x52\x93\xa8\xee\x98\xbc\x90\xd9\xae\x8b\x79\x0c\xef\xdb\x4d\xc7\xa1\xa9\x8c\xd1\x8e\x54\x45\x9b\x1e\xe3\xf4\x87\x86\x07\xd4\xcb\xf5\x49\x06\x49\xe4\x58\x3f\x45\xd5\x5b\x53\x5d\xb9\x72\x86\x6b\x6a\x4e\x1f\xa6\xf4\x6d\x99\xbd\x95\xc3\x69\x97\xfb\xa4\x48\xa8\xb9\x54\x95\x54\xbc\xb8\xc8\xe6\x56\x5b\x71\xb2\xab\x40\xb9\xb7\x85\x4a\x5d\xb2\x77\xc2\x91\xd8\x4b\x65\xa9\x93\xb4\x43\xae\x93\xb0\x35\x70\x01\x3e\x61\x1d\x67\x47\x94\x1a\xd1\x27\x9a\xe0\x43\xe4\x8d\xc1\x60\x8c\x4d\x12\x71\xd4\x0d\x19\x6d\x1b\x62\xee\x50\xbc\x58\x4d\xe0\x94\x3a\xc5\xe6\x88\x00\x04\x48\x59\x8e\x9a\x84\x09\x13\xa1\x0f\x1a\x27\xa5\x37\x75\xbe\x27\xaa\x0c\x2c\x29\x65\xc4\xa3\x73\x15\x02\x42\x7e\x47\xff\x69\xd6\x29\xa1\xbd\xa5\x40\xf8\xef\xe5\x59\xd9\x1a\x1b\x6c\x59\x10\xe7\x17\x40\xa4\x1b\x8d\xb2\xb5\x0f\x87\x44\xdf\x64\x69\x5a\x98\x34\x8e\x65\xf3\x1f\x7e\x87\x0b\x5a\x27\x96\x66\x42\xd4\x41\xdf\x8a\x81\x71\x5b\x5d\x56\x12\x63\x9e\x6b\x7d\xa8\x6c\x75\xa7\x48\x52\x74\x48\x20\x42\xed\xe3\xb8\x44\xf7\xd5\x4d\xe3\xb6\xba\x69\x06\xe3\xa0\x5f\xe0\x6f\x33\x87\xb2\xdc\x49\xc0\xd6\xb0\x18\x52\x9e\xe5\x3a\x20\x7f\x07\xde\x79\xda\x55\xe1\x26\xb5\x02\xa9\x3b\x02\x0a\xa4\xe7\x1e\xe1\x82\x67\x32\x61\x87\x9b\x11\x88\x8e\xf8\x03\xc5\x48\x71\x97\xb5\x3b\x88\x53\xee\x54\x10\x69\xa5\x5c\x79\x21\xce\x77\xa2\x9d\x1a\x26\xf7\x2c\x7f\x96\xf3\x03\xa7\x10\xba\x33\xde\x62\xd2\x1d\x4f\x66\x09\xed\xce\x2c\x8f\x93\x24\x30\xd4\xfb\xb9\x56\x31\x23\x58\xed\x39\x31\x0d\x6a\x4b\x8c\xd3\xfd\x29\x73\x75\xe4\x0b\xec\x03\xd7\x50\x55\x7c\x4c\x31\x91\xfe\x69\xf4\x03\x3d\xd2\x83\xad\xaa\x5d\x41\xfa\x24\x15\x10\xfb\xd1\x13\xd6\x5a\x45\xb4\xb6\xe3\x85\xf9\xa9\x94\x6c\xd4\x21\x53\xea\x00\xaa\x4a\x97\x12\xdf\x6b\x17\xf1\x3b\x9e\xfc\x20\xc5\x96\x59\xb4\x0b\xf0\x55\xd5\xf0\x18\x1e\x5c\x4b\x83\x10\x41\xb3\x28\xc9\x41\x21\x1f\xa4\x85\x90\x3c\xd1\x08\x5a\xa4\x4a\xa0\xd2\xef\x0c\x79\xb4\x45\x0f\xea\x58\xa7\xda\xa6\x51\x5e\x9a\xb5\xa3\xbf\x37\x8f\x4e\x96\x42\x88\xf6\x72\xf4\xc5\xf2\x09\xc8\x6b\xaa\x28\x8d\x58\x7e\x08\x8a\xed\x05\xbf\x66\xfd\xe1\x24\x79\x9b\x53\x3d\x47\xdd\x2b\x62\x5d\xd6\xaa\x1d\x1f\x1f\x1d\xfd\xfd\xe8\xf8\xf8\xe4\xe4\xd1\x49\xd8\xa2\xca\xe4\x30\x1e\x0d\x3c\x45\x2e\x68\x33\xdf\xf1\x42\x5a\x32\x32\x9e\x14\x56\x80\x10\x7e\x71\x89\x99\x29\x8c\xa4\x31\x96\x16\xd4\xc5\x45\xdd\x87\x26\xa4\xb9\x16\x8c\xd0\xd6\x0e\xb1\xaa\x02\x02\x8e\x9f\x46\x18\x93\xaf\x9b\x72\x1b\x82\x13\x28\xed\xd5\x41\x11\xe5\x43\xd2\x2f\x99\x43\x8f\x5f\xc7\x79\x91\x57\x9d\x4b\x32\x23\x07\xf0\xa4\x70\x83\xe4\x6c\x9d\xb3\x2b\xb0\x3e\x60\x2e\x61\x48\xca\x2e\x48\xb6\x3c\x2a\xce\x15\x3e\x81\x01\x41\xda\x87\x01\x3a\x98\x19\xae\x20\xdd\x5f\xfa\x8e\x67\x57\x59\x5c\x70\x59\x89\xa6\x75\x47\xf3\x6e\xcc\x73\x9b\x1f\x2d\x78\xf9\xc3\xe2\x22\x9b\x12\x18\x4e\x0e\xc0\xab\x64\x2e\x54\x85\x9b\xab\x76\x93\x9f\x73\x8b\xc3\xa1\x07\x5c\x79\x95\xed\x7b\x76\xc8\x76\x9a\x8e\xc1\x35\x6b\x72\x31\x44\xfc\xca\x78\xc2\xa2\xf1\x98\x27\x60\x16\x2b\x52\x58\x34\x0c\x1e\x3a\x49\x8a\x78\x24\x26\x7d\x18\x17\x68\xfc\xa5\x2b\x17\x93\x40\xca\x32\x1a\xa7\x17\xcf\x6a\x06\x0f\xa1\x41\x83\x6f\xa1\xe5\x67\x08\x07\x88\x14\x80\xad\xdf\xb9\x71\x1c\xee\xbb\x36\xb2\x37\x47\xcb\x27\x16\x97\xfd\x73\x16\xab\xbc\x54\xa6\x3b\xbe\xe5\xda\x02\x2b\x65\xc6\x83\x9c\x45\x32\xf8\x33\x28\x03\xbf\x4e\xf2\x82\x45\x83\x01\x18\x50\x21\x66\x54\x9c\xb3\x11\x3f\x2f\xe8\xe9\x94\x04\x6d\xf5\xd5\x34\xac\x5d\x85\xe5\x34\x38\x3b\x5a\xfb\x0f\x33\x0f\x0b\x20\x82\xa9\x3c\x4d\x9d\x42\xcf\xfd\xae\xae\xf0\x71\x9a\x9b\x2b\x2d\xf0\x21\x5d\x5c\xa5\x42\x55\x76\x71\xa5\x1f\x2a\x5d\x5c\x69\xa1\xbb\xb8\xb8\xbe\xe2\x77\x72\x71\xfd\x0b\x7a\xab\xb2\x92\x89\xcf\x37\xc0\x29\x8e\x76\xaa\x48\xc7\xaa\xe1\x06\x90\xa0\x7e\x19\x7f\xbc\x2b\x63\xe9\xec\xae\xd4\x90\xf9\x58\xe1\xa2\xe9\x14\xea\x38\x7d\x30\x9f\x68\xb3\xe4\x54\xd0\x6a\x51\xbf\xb7\xae\x10\xea\xb6\xcc\x67\xda\x8c\x7e\xfb\x2f\xed\xa3\x29\x0f\x30\xad\xc6\xe0\xac\xca\xdf\x04\x7c\xa2\x80\xc5\x0b\xcb\xe5\xd3\xe3\x3e\xa9\x76\xb7\xdf\xd5\x4e\x7d\xed\x94\xad\x33\x14\xee\x3c\xae\xa4\xea\xe0\x8d\xdc\xd3\x52\x11\x4d\xac\xd2\xa1\x69\xdb\x78\x99\x96\x5d\x4f\xeb\x96\xa0\x34\x2d\x65\x4d\x7c\x39\x1e\xc5\xfd\xb8\x68\xf4\x53\x9e\xf5\xe3\x34\xa9\x8b\xb7\xfc\xba\xc8\xa2\x06\x48\x0d\x39\x1d\x0a\x1c\xf7\xd6\xec\x71\x8c\x65\xa8\x3a\x8d\x5c\x18\x41\x97\x7e\xc2\x24\x65\x6c\x8d\x2d\x91\x0f\x56\xbf\xc7\xc5\x90\xf4\xd9\x73\x90\x8c\xfe\x58\xa5\x93\x13\xe5\x90\x41\x2b\x57\x1e\x33\xd3\x7e\x57\x1f\xfa\xfa\xb0\xa7\xb2\x34\x19\x44\x55\x19\xd2\x35\xf7\x6c\x9b\x76\xc8\x73\x92\xe3\x6e\x57\xa7\x08\x69\xdb\xfe\x62\xb7\x68\x8e\xcc\x15\x10\xad\xd6\x2e\xa8\xb5\xa1\x35\xac\xc3\x74\xab\x87\x54\xa6\xf2\x4e\x93\x55\x82\x76\x8f\xbc\xff\xb8\x9c\x52\xd5\x51\x9f\x73\xce\x57\x76\x3d\x2d\x4b\x27\x96\x63\x90\x8e\xbe\x08\xdb\x43\x3d\x81\xb8\x61\x2e\x60\xeb\x42\xd3\x2f\x06\xde\xcf\x3e\x65\xf9\x45\x15\xfc\x72\xbc\x0b\x16\x89\x52\x74\x48\x49\x88\xd6\xe8\x99\xa8\x73\xe2\xe9\x1e\x4a\xde\xd7\x6c\x66\xa4\x5a\x4c\x00\x01\xda\x18\xa8\x1b\xa0\xa6\x45\xc9\x80\xe5\xbc\x98\x8c\xe1\x95\x10\x45\x50\x47\xf3\x68\x8b\xd4\xc5\x51\x8e\x2d\x9c\x12\x7a\xf1\xed\x7c\x3e\x89\x6f\xbd\x57\x0e\x13\x7e\x85\x53\xa7\xcd\x1c\x35\x38\x78\x91\xed\x4a\x7b\xb0\x16\x7d\x2b\x26\x38\x2c\xf9\x06\xcb\x23\x09\x88\xf1\x0b\xa6\x68\x6c\xa8\x3a\x9a\xb5\x44\x07\x6d\x91\x86\x58\x6c\xd2\xc1\x73\x9a\xdf\x13\xbd\xcc\x4f\x7c\x9f\xf4\x6b\x1d\x4c\x05\x06\x68\x17\x82\x57\xf3\x87\x64\xa9\x8e\x8c\x24\x4b\xe9\xb0\x11\xd4\xc5\x47\x9a\xa1\x89\x0f\x0f\xf4\xab\x63\xfe\xd4\x03\xd4\xc1\xed\x15\x77\x63\x8f\x5a\xc7\xd9\x71\x12\x5f\x8a\xf6\x58\x74\x1d\xa7\x39\x3b\xcf\xd2\x4b\x16\xc0\xdf\x01\xf9\xf8\x9b\xfa\xf2\x1b\xbe\x1e\xf1\x82\xe9\xbc\x9f\x01\xbc\xc2\x6e\x63\x5e\x64\x76\xc1\x8b\x57\xea\x73\x2d\x64\xdd\x17\xec\xf7\x63\x48\x76\xa8\x34\x0d\xf8\x28\x5e\xdd\x96\xea\xe6\xb4\xee\x17\x58\x92\x82\xd0\xed\x7e\x31\x0d\x8a\x72\x8b\xe8\xb2\x1a\x66\x97\xa9\xb3\x49\x36\xaa\x83\x47\x4b\x1d\x83\xd3\xee\x29\x4e\x90\x43\xfa\xa9\xcb\xba\xa8\x7a\x1e\x5f\xd0\xc6\xb0\x2e\x04\x94\x16\x7f\x34\x8b\x74\x3b\xbd\x52\x79\x3a\xb0\x88\x98\x0b\xcf\xde\x72\x9a\x20\x85\xe1\xcb\xeb\x0c\xce\xd6\xb2\x11\xbe\x17\x84\x8f\x6c\x35\xa1\xff\x87\xaa\x0f\xcc\xa9\x21\xf4\xcb\x35\xa1\x80\xfe\x86\x14\x1b\x3d\x71\xfd\xed\xdd\xe2\x4f\xab\xe5\x69\x79\xc9\x6d\x51\xba\x6a\x2e\xc9\xae\x5c\x46\xe3\x1a\xec\xee\x17\xea\x56\x2c\xdc\xee\xf6\x78\x88\x38\x6d\xc3\xbe\x0e\x55\x54\x81\xc5\x20\x0c\x31\xef\x89\x19\xaa\x58\x05\x32\x3e\x15\x7c\x5a\xa0\xdd\x11\xce\xf4\x49\x4d\x75\x56\xad\x99\x5c\x1c\x39\x2e\x63\x2f\x57\x4b\x24\x28\xc6\x05\xc7\x90\x71\xf3\xc1\xf5\x41\x9c\xb7\xae\x35\xf7\x02\x7b\x42\x17\x9e\xc6\xcb\xd6\xa3\xee\xbd\xff\x01\xac\x47\xcc\xf3\x0f\xbe\xdc\x1f\x30\xee\xfd\xd6\xa3\x47\xb2\x05\xf9\x23\xb7\x4d\x87\xed\xa7\x23\x7e\xc0\xb3\x77\x71\x9f\x9f\xae\x83\x45\x5b\xbc\x39\x4c\x5f\xe7\x3c\x93\x65\x27\xd9\x68\x7a\xb9\xd7\xfb\xdb\xb2\x28\xce\xdf\xf4\xd2\xa7\x87\xbf\xec\xf5\x54\x37\xa2\xab\xd3\x99\xe0\x4f\xf7\xd7\x7f\x3e\x35\x6d\x7c\x0b\x92\x1d\xba\xac\x35\xe4\x78\x5a\x25\xba\x30\x0d\x20\x11\x67\x6a\x5a\x4c\x04\x42\x7c\xab\x91\x0a\xa1\x68\x1a\x64\x8a\x35\x25\x39\x42\x71\xc0\x7d\xd9\x31\x24\x51\xd1\x0d\x84\x84\x38\xe3\x40\xc2\x97\x86\x62\x8c\x23\xa1\x1d\xb0\xa0\x15\x8d\xe3\xd6\xbb\x76\x4b\xf9\x88\xb4\xf0\xac\x01\x12\x58\x36\xa2\xc1\x20\x30\x55\xc4\x34\x38\x24\x67\xcf\x1e\x92\xf9\x0a\x56\x7f\xf3\x4a\x9a\x91\xd5\x66\x0e\x04\xa8\xe0\xc4\xb6\xed\x90\x4d\x06\x13\x4e\xfb\xaf\x6a\x58\x14\xa8\x02\x68\xb7\x02\xa8\xdc\x7d\x76\x5e\xc9\x9a\x10\x6c\xa4\x7d\xe5\xc7\x38\x07\x33\xb6\xe4\xa6\x03\xa2\x31\x74\xa0\x4b\x41\x18\x4e\xe9\x40\xf3\x0b\x97\x5e\x9a\xb6\x29\x15\x9f\x56\xa3\x94\xe9\xc2\x94\xde\x89\x2e\x39\x81\xc8\xdc\x05\x38\xb2\x4a\x9e\x38\xcb\x3f\xbd\xb0\x02\x7a\x1b\xae\x5a\x03\xd4\x21\xef\x60\x07\xd7\x82\x71\x9a\x17\x41\x5d\xa1\xea\x12\x20\xd1\x7c\xfc\xcf\xcf\x51\xe7\xd9\x8a\x74\x07\x85\x0e\xcf\x9f\x0f\x7b\xef\xd8\xae\xa0\x19\x53\x1b\x85\x59\xb8\x3b\x60\x67\x2c\x55\xd4\x60\xfa\xde\xfa\x70\xb4\xe2\x1e\x44\xe0\x2f\x88\xef\x16\xba\xdf\x49\xec\xb2\xc4\x4e\xb9\x17\xb4\x9c\xf3\xe7\x0a\x40\xb7\xf3\xf3\xdd\xed\x38\x2f\xc4\xf3\xba\x59\xe0\x2a\xd6\xeb\x29\x3a\x9d\xfb\x7a\x2a\xcc\x64\xc0\xbe\x3a\x0f\xe5\xc1\x1e\x98\x1f\x37\x1b\x1e\xc5\x92\xe0\x7c\xe2\xc3\x9f\xf8\xf0\x1f\xcd\x87\xa7\xec\xc8\xfb\xb3\x62\x8d\xc1\x77\x6f\xfb\x43\xb1\x63\x3f\x39\xfb\x28\x39\x32\xa1\x07\x7f\x41\xd4\xff\x77\x63\xc9\xfb\xfc\x32\x7d\xc7\xc5\x9b\xcd\x2c\xbd\x9c\xa6\x0c\x97\x4b\x4e\x67\xc8\xe5\xf2\x33\xf9\xb1\xa7\xca\x43\xd9\x71\x19\xe4\xc7\xcd\x8d\x33\x18\xcf\x27\x7e\xfc\x89\x1f\xff\x29\xfc\xb8\x7a\x47\xde\x9f\x1d\x13\x14\xbe\x73\xe3\x1f\x8a\x1f\x7b\x89\xd9\x47\xc9\x8e\x2d\x82\xf0\x17\xc4\xfd\x7f\x07\x86\xfc\x72\x92\x0c\x0c\x6e\x7e\xc7\x0b\x7c\x41\x39\x71\x45\x91\x32\x0b\xae\x28\xe8\xe5\xbd\x55\x65\xef\xc3\x74\x2b\x60\x7d\x7c\xdc\xf6\x0c\xfa\xdd\xb8\xe0\x9f\xb4\xde\x4f\x5c\xf6\x8f\xe3\xb2\x33\xf6\xde\xdd\xd8\xab\x83\xb3\xf3\xb7\xf6\x10\x7e\x5a\x4d\x92\x3e\x1a\x46\x5a\xda\xeb\x7f\x41\xb4\xfe\xf7\x63\xa0\x07\xd1\x3b\x3e\x8b\x83\x9a\x32\xb3\x58\xa8\x29\x39\x07\x0f\x25\x85\x1f\xce\x44\x0d\xb0\x8f\x96\x8b\xe6\xd1\x27\x65\xf5\x13\x1b\xfd\xd3\xd8\x68\x79\xfb\xdd\x8b\x8f\x6a\xac\xbd\x43\x7b\x1f\x8e\x93\x5a\xa4\xe9\x63\x63\xa5\x64\xc3\xff\x05\x71\xfb\xdf\x8f\x97\xae\x0f\x06\x07\xb8\xc4\x87\xe9\x2c\x9e\x5a\x2e\x3b\x8b\xb7\x96\x6b\xcc\xc1\x63\x3d\x95\x1e\xce\x6b\xcb\x40\x3f\x56\x9e\x0b\x3e\x13\x0d\xf9\xf2\x13\xef\xfd\xc4\x7b\xff\x24\xde\x5b\xbd\x2d\xef\xc3\x83\xcb\x58\x7c\x8f\xf6\x3f\x1c\x4f\xf6\x92\xb6\x8f\x8c\x37\xfb\x08\xc3\x5f\x70\x0f\xfc\xfb\xf1\xe8\xed\x38\x97\xb6\x97\xbc\x9a\x39\x93\x42\xb3\xb8\x32\x29\x3a\x07\x3b\xa6\xa5\x1f\xce\x87\x09\xb4\x8f\x97\x01\x7f\x72\x99\xfa\xc4\x79\xff\x44\xce\xeb\xd9\x81\xf7\x63\xb9\x53\x1c\xa5\xa6\x53\x88\x0f\xc3\x64\x6d\x12\xf5\xd1\x71\xd7\x4f\x8e\x51\x7f\x2d\xb6\x8a\x3e\x02\x52\xec\xdb\xcc\xd2\xcb\x59\xfa\x6f\x45\x85\x59\xec\xb6\xa2\xda\x1c\xac\xb7\xaa\xe6\xc3\xd9\x70\x05\xe4\x8f\x97\x25\xa3\x9b\xc4\x27\xb5\xf8\x13\x73\xfe\x93\x99\xf3\x8c\x3d\x7a\x3f\x46\xed\xc1\xe6\xfb\xf6\xe3\xc3\xb1\xef\x6a\xf2\xf7\xd1\xb1\x72\x2f\xb5\xf8\x0b\x6e\x8c\x7f\x07\xa6\xee\x73\xc3\x9f\x79\xed\x68\xce\xcb\x46\xf3\x5f\x31\xfa\x70\x17\x8b\x3e\x42\xbd\x38\x4b\x3f\x69\xc5\x9f\x18\xef\x3f\xe5\x22\xd1\x3d\x35\x62\x07\x63\xe7\x6d\xeb\x43\x5f\x17\xfa\xa8\xf4\xe0\xd2\x2e\xff\x0b\x22\xf4\xbf\x03\xc3\x84\xb8\x4f\xc4\xad\x0f\x9e\x29\xc3\xf4\x16\x28\x33\x4c\x6f\x31\x2f\xc3\xf4\x97\xbc\x0f\xc3\xf4\x42\xfa\xf8\x18\x26\xc6\x4c\xfd\xe4\x83\xfc\x89\x61\xfe\xa1\x0c\x73\xea\xbe\xbb\x1b\xc3\x74\x30\x76\xde\xb6\x1e\xc2\x30\xab\xc8\xd0\x47\xc3\x30\x4b\xbb\xfc\x2f\x88\xd0\xff\xb6\x0c\xf3\xe5\xcd\xeb\x24\xfe\x6d\xc2\xb7\x06\x3c\x29\xe2\xf3\x98\x67\xf9\x4c\x1e\xea\xa9\x33\x27\x5b\xf5\xd4\x9c\x9f\xd3\xfa\x2a\x7f\x30\xe6\xeb\x01\xfe\x31\xf3\xe3\xc6\xd9\x4d\x63\x02\x03\x6a\xc4\x66\x44\x9f\xb8\xf4\x27\x2e\xfd\xe7\x72\xe9\x29\x7b\xf6\xbe\x8c\x7b\x0a\x6a\x3f\xa0\x53\x1f\x9c\xc3\xfb\x89\xe4\x47\xc8\xf4\xa7\x92\x92\xbf\xe0\xae\xf9\xb7\x13\x05\xb6\xe3\x1c\x51\xb6\x9a\xf3\x9b\x22\x33\x18\xbd\x29\x38\x9b\xaf\x93\xb2\x0f\x66\xe3\x06\xd6\x47\xcb\xb5\x3f\xd9\x9d\x3f\x31\xe8\x3f\x8f\x41\x97\x37\xdf\xbd\xf8\xf1\x14\xd3\xf3\x34\xba\xf0\x41\x38\xad\x45\x94\x3e\x36\xc6\xfa\xc9\xfe\xfc\x97\xe2\xa1\x07\xd1\x3b\x3e\xdd\x00\xad\x4b\xcc\xe0\xa0\xba\xdc\x6c\x06\x6a\x8a\x3e\x98\x7f\x6a\x50\x1f\x2d\xfb\xfc\x74\x85\xf7\x13\xfb\xfc\xf3\xd8\x67\x69\xeb\xdd\x8b\x7b\x4e\xb9\xc0\x3b\x85\x26\x7c\x10\xe6\x49\xc9\xd1\xc7\xc6\x3b\x3f\x5d\xde\xfd\xd7\xe7\x9d\x9f\xd5\x3f\x83\xf4\x2b\x51\x3c\xb2\x93\xaf\x34\x5b\x90\x85\x2a\x89\x46\x79\x0b\xbe\x56\x65\x61\x59\x80\xaf\x35\x93\xe8\x28\xc4\xc4\x2c\xfa\xc5\xa6\x78\xc3\x5a\x8f\x18\xbf\x1c\x17\x37\xec\x51\x0b\x53\xf6\x6d\x9a\xcc\x99\x4d\xc0\xcb\x6c\xd2\x2f\xd2\x8c\x61\x2e\xa3\x55\x32\x51\x72\x46\x2f\x78\xa1\x33\xd6\xed\x9e\x03\x91\xdd\xac\xc9\x44\x9f\x04\xd8\xea\x71\x22\x48\x4e\x22\x47\x36\x8c\xaa\xc7\x35\x8c\x72\x9d\x80\xa6\x48\x75\x36\x74\x7f\xe1\x22\x6d\x60\xd2\x20\x5d\x25\x1f\x46\x19\x1f\xfc\xc0\x6f\x2a\xeb\x60\x89\xc6\x5b\x6e\x32\xe1\x6c\xec\xee\xef\xf7\x36\x0e\x4f\xf7\xf6\x77\x0f\x77\x05\x99\x38\xfd\xae\x77\x78\xd8\xdb\xaf\x84\xd1\x4f\xb3\x8c\xf7\x8b\x86\x1e\x60\xe3\x82\x17\x05\xcf\xe4\x7a\x08\x98\x5b\x3d\x04\xc7\xba\xa6\x4f\xb5\x40\xbd\xd5\x4d\xe3\x00\xf5\x1c\x1a\x5c\xa5\x73\x77\x9c\xb4\x5a\xec\x8d\x77\xca\xdf\x48\x49\x08\x8a\x0c\x8b\x62\x9c\x77\x5a\xad\xa2\xff\xf8\x9b\xe6\x45\x5c\x0c\x27\x67\xcd\x38\x6d\xf1\xfe\x65\xb4\xf2\x64\xa5\xf5\x79\xce\xfb\x72\xbe\x04\x14\xdd\x42\x7a\xee\x41\xa1\xca\x39\x59\xf3\xaf\x3d\xeb\x90\xbc\x5a\xbb\x12\xdf\xc4\xe8\xd5\x22\xd6\x76\x31\xc5\x91\x4c\xca\x5f\xdb\xad\xeb\x39\x0a\x43\x8d\x56\x47\xea\xdd\x89\x2e\x2c\x53\x2c\xed\xda\x18\x69\x65\xec\x5b\x5c\x64\xbb\x2c\x4e\xf2\x22\x4a\xfa\xa5\xb2\xa1\x4a\x4a\xa4\xda\xa0\x1f\xad\x79\x66\xec\x56\x17\xb2\xc0\x21\x16\xae\x95\x56\xab\xa3\xf6\x85\x3f\x21\x93\x58\x60\x67\x96\xaa\x30\x0a\x97\x05\x6c\x86\x06\xa9\xd2\x73\x8d\x27\x98\x60\x6b\x27\x4d\x7a\xc9\xe4\x92\x67\xd1\xd9\x88\xef\x61\x06\xe3\x6a\x4c\xc7\x3a\x8d\x24\x4d\x1a\x5c\xd7\x6a\xc8\xc4\xc7\x06\xfb\xe7\xdd\x8d\x57\x7c\x34\xfa\x21\x49\xaf\x92\x83\x9b\xcb\xb3\x74\x54\x59\x47\x94\x6b\xbc\x15\x05\x1b\x39\x94\xd4\x10\xb6\x0e\x4e\xf7\x5e\xef\xf7\x2a\x6b\xc6\x79\x63\x3c\xc9\x38\xdd\x45\x87\xbd\xfd\xf5\xc3\x5d\xb1\x13\x9d\xe6\x6b\x41\x0c\x69\xc5\xd2\x4c\x83\x7f\xf9\xfa\xbb\xef\x7e\x39\x3d\x58\xdf\x5c\xdf\xdf\x3a\x55\x35\x0f\x98\x4c\x82\xa7\x61\xe2\x0a\x1f\x0e\x63\x3b\x17\x9c\x20\x88\x72\xf1\x8b\x61\x9c\xaf\xb2\x5b\xbd\xf3\xbe\xdc\x92\x4d\xe9\x95\xfc\xf2\x8d\xce\x56\x36\xe7\xbe\xfb\x52\x75\x57\x2f\xef\x97\x0d\x05\x02\x46\xea\x36\x51\x67\x04\x6f\x20\xa3\x9f\xa7\x48\x44\xdf\x43\x7f\xc5\x8e\x39\x3a\x01\x56\x27\x11\xdf\x2a\x03\xb9\xb7\x91\x11\xe2\x76\x6c\xb5\xd8\x41\x74\x1e\x65\x31\x7b\x06\x98\x70\x36\xb9\xb8\xb8\x61\xaa\xb3\x39\xbb\x6a\xa5\xec\x4d\xc2\xaf\x8b\x37\x6a\x3f\x2e\xd4\x02\xf1\x1c\xb0\x38\xb1\x61\x87\x61\xf5\x12\x14\xd9\x04\x77\x18\x4d\x76\x3f\x73\x80\xac\xeb\xec\x9f\x9a\xf3\xe8\xb4\x4f\x92\x8a\xcf\x86\x2d\x78\x94\x4b\x6c\xc3\xf2\x3a\xb0\xee\xec\x7e\x22\xed\x10\x82\xa3\x5c\x01\x0f\x14\x4b\x59\xf1\xb5\xf2\xbb\x46\xb8\x95\xaf\x9b\xcb\xcd\x95\xe6\x72\x73\x99\x79\x50\xef\xe8\xdb\x6f\xd5\xf2\x9c\xd4\x42\x6c\x6f\x41\x6d\xad\xc5\x45\xb6\x20\xa8\xab\x07\x57\xd4\x72\xa8\xd4\xd7\x53\x48\xca\xb4\xea\x75\xb2\x81\x20\x17\x5d\x75\x1e\xb8\x12\x94\x8e\x07\xcd\x45\x41\x3f\xda\x74\x2a\xde\x4f\x23\xb7\xbe\x89\xad\x20\x36\x0a\xc5\x1b\xfd\x54\xd0\x9c\xa6\x6f\x55\x0d\xe9\x9d\x45\xb9\xb1\x94\x43\xaf\xd5\x7c\xbe\xe2\x79\x3f\x8b\xc7\xb8\xff\xa6\x12\x6b\x45\x9d\x1b\x03\x5d\xc5\xc8\x36\xbc\x38\x4c\x0f\x20\x83\xd7\x61\x74\x51\x2d\xe0\xf0\xa2\x51\xa4\x0d\x4c\xf5\xd5\x28\xa2\x0b\x43\x7f\xf5\xae\x9e\x39\x29\x84\x06\xdf\x8d\x5e\x4e\xc9\xb6\xa9\x9a\xdf\x30\xec\xb7\xce\x76\xd6\x7f\xec\xd5\x99\x20\x28\x12\x2d\x45\x93\x87\xbb\xa7\x07\x87\xfb\x5b\x3b\xdf\x9d\x1e\xae\x7f\xc7\xba\x50\x48\x48\xd7\x7a\x04\xc1\x2a\xc5\xaf\x0d\x1f\x3f\x67\x5d\xb9\x08\x3e\x64\xfe\x1d\x5a\xec\x54\x2e\x53\x6d\x59\xf5\xe9\x16\x89\x8a\x3d\xf7\xfe\xa1\x58\xbd\xae\xcb\xd4\xab\x40\xf9\x42\xab\xbb\xf9\x91\x55\xf2\x04\x56\x43\xcd\x31\x15\xb2\x3d\xad\x18\x59\x03\x92\x5e\xe6\x33\x04\xe4\x38\xa7\x02\xf2\xd4\xd5\x89\xd5\x02\x00\x3d\x51\x90\xe1\xf5\xe2\x22\x8b\x0b\x9d\x41\x5d\xcb\x53\x98\x44\xdc\x24\x10\x3f\xfe\x6c\x23\x4a\x02\xc8\x86\xc8\x8e\x3f\x63\x4b\x0c\xe7\x0b\x40\x88\xc5\x8b\x72\x16\x31\xbd\x3e\x32\x47\xa6\x96\xb8\xe2\xc2\x1e\x5b\x94\xcc\x18\x5b\x94\xb8\xc2\x7f\xb4\x97\xe6\x79\x8c\x74\x6c\xc6\xee\x8f\x1a\x63\x59\xb6\x61\xf7\xc8\x92\xb5\xf3\x0f\x22\x6b\xe7\x8e\xac\xdd\x6a\xb1\x9f\xd3\xec\x6d\xce\xae\xe2\x62\xc8\x4e\x4f\xe1\xe3\xe9\x29\x4b\x93\xd1\x4d\x93\xed\x8e\x06\xec\xdd\x33\xd6\x87\xa9\xbc\x4a\xb3\xb7\x58\x0c\x92\xc9\x42\x49\x29\x79\xe4\xcd\xe3\xa4\x9c\x1f\x33\x49\x71\x3c\xec\x51\xcb\xb3\xda\xde\x61\xb1\xf7\xef\x59\x2d\xd0\xdd\x00\xbe\xfe\xfb\x2d\x5b\x63\x25\xf5\x91\xea\x4a\x07\x4a\x43\x52\xc2\x95\x4a\x3d\x0b\x09\x2c\x65\x5e\x5a\x49\xb5\x0a\x8e\xf9\x64\x8b\xec\x46\xe1\x0e\xbe\x35\x5d\xba\xe0\xc5\xee\x55\xe2\xd9\x88\x2e\x87\xae\x33\xd2\xd5\xb0\x89\x29\xe1\x0d\xc4\x66\x3f\x1a\x8d\x6a\xa2\x17\x75\x76\x74\xa2\x04\x82\x52\xa7\xa1\x9b\x44\xc2\x07\xb6\x2e\xf1\xb1\x1f\x15\xfd\x21\xab\x71\x81\xd3\x5e\x2d\x59\x22\xac\x9e\x1e\x7b\x3a\x85\x62\x03\xfd\xd3\xfb\x44\x61\xb2\xd2\x80\x98\x07\x51\x6b\x58\x85\x08\x30\x76\x9f\x43\x6b\x7c\xba\x09\x59\x1e\x84\xaa\xdd\xa6\x41\xa5\x2e\x7e\x5f\xb5\x15\x1f\x1c\xa0\xd8\x66\xb5\x90\x75\x88\x3c\x52\xc9\x4e\xbf\xa8\xdc\x40\x88\x54\x0e\xbf\xf3\x10\xac\x59\x0c\x4f\x71\x9c\x06\x51\xca\x34\xd4\x0f\xa4\x3c\xe5\x77\x02\x93\x4f\x01\xf3\x30\xfe\xfb\x07\x2a\x71\x19\xc7\xb5\xac\x84\xa3\x0a\xfc\x93\xd4\xb9\xfb\x88\x1f\x56\x9d\x8d\x34\x9b\x5f\x96\x33\xfa\xa3\x47\x1c\xb4\x40\x56\x4a\x7d\x95\x9a\x8c\x5d\xdd\x5f\x6c\xf5\x1e\xda\xeb\x0f\xbd\x5f\x04\xf8\x40\xe8\x66\x6a\xfb\xfd\xb4\xbe\xfd\xba\x07\x6f\xd1\x7c\xab\xde\xf7\x76\x0e\xf7\xb7\xf0\x03\x4f\x8a\x2c\xc6\x2f\x7f\x84\xb8\x76\x36\xe2\x4a\x46\xf3\xca\x3c\x42\x48\xaa\xb3\x57\xbd\xcd\xf5\xd7\xdb\x87\x75\x81\x12\x07\xbd\xc3\x3a\xdb\xdc\xdd\xdf\xe8\xbd\xb2\x14\x0d\x4f\xf5\x99\x12\xa1\xcc\x22\x2e\x49\x01\x96\x8e\xd3\xe4\x47\x95\xe1\xd8\x74\xf6\x87\xad\x9d\x57\x9a\xe0\x0a\xf2\x29\x5e\xc0\x11\x91\xec\x9b\x10\x62\x64\xd2\x78\xad\x2f\x6a\xab\xaf\xfd\x9e\x10\xe1\x85\x0a\x34\x58\x5c\x64\xd0\x40\x2c\x85\x34\x4a\xca\x43\x4b\x7c\xa3\x5f\x8e\x44\x1d\x95\x70\x3c\xbf\x8a\x81\xcf\x58\x3d\x67\xac\x1f\xe5\x1c\x70\xa1\x53\xe2\x33\xa8\xb5\x9b\x75\x4c\xf8\x95\x6f\x51\x6a\x62\x7d\xeb\xd0\xbf\x10\x97\x99\x40\x46\x8c\x2a\xc3\x46\xfc\x7a\x28\x74\x89\x97\x65\xf0\x12\x4b\xef\x0d\xff\xb6\x04\x71\x5e\x50\x1a\xc8\x2d\x41\xa6\x39\xf5\x0b\xd8\xc3\x3b\x8a\x11\xe3\xd4\x9d\x42\x59\x57\xec\x29\x2d\xb5\x22\x14\x67\x23\xee\x98\x18\x21\xc9\x7c\x54\xc4\xef\x38\xb1\xc9\x94\x51\x45\xe1\xda\x09\x4e\xc0\xfb\xf7\x9e\x32\x81\xb1\x04\x04\xa6\x1c\x41\xf8\x72\x15\xf9\xf1\x44\x77\xc5\xc1\x7d\xd6\x65\x53\x70\xde\xe9\xf7\xfb\xf7\x9e\x6d\x59\x93\x4d\x84\xba\x89\x28\xb9\xd9\x71\x07\x8c\xb3\xd8\x65\x01\x48\x5e\x01\x5b\x2b\xf7\xb5\x29\x91\x46\x34\xe3\x34\xdc\x71\x5e\xe8\xa6\x36\x26\x59\xc6\x93\xc2\xa3\xf1\xa1\xe8\x2e\x30\xab\xf7\x8b\xc4\x84\x56\x8b\x9d\xc7\xd7\x12\x94\xd2\x7c\x4a\x9d\xd5\x7b\xb3\x0a\x76\xd9\x48\x55\x82\x81\x52\x9b\x46\xd3\xb3\x11\xaf\x85\x96\xb5\x6a\x3e\xeb\x94\x58\x82\xaa\x5e\x34\x89\x0a\xad\xa9\x17\xb1\x0a\x39\x5d\xac\x02\x83\x47\x37\x9e\xd7\x1a\x30\x82\xb6\x45\x2a\xeb\x33\x73\x05\xe2\xea\x45\x29\xb7\xb3\x6a\xe0\x90\x7c\xe9\xf2\x08\xa0\x0a\x90\xd9\x2c\x6c\x81\x9e\x0b\x38\xdd\x9a\x66\xf0\x9a\xd2\xc7\x0a\xbb\x97\xee\xa6\xfa\x53\xff\xd1\x6a\xb1\x03\x5e\xb0\x6f\xbf\x2d\x88\xb4\x58\xa4\x12\xd1\x8c\x6d\x55\x95\x77\x6c\x0b\xd5\x5d\x71\x0c\x0c\x45\x36\xb1\xec\x0b\x1a\x99\x70\xd5\xc3\x3b\x18\x1c\x64\xef\x6f\xad\x8d\x01\x5b\xf3\xf3\xdf\x91\x35\xd4\x99\x21\x36\xb7\xcd\x24\xba\xe4\x82\xf9\xfd\xf4\x8c\xb5\xd8\xe6\xa6\xda\x3c\x8a\xf4\x74\xbb\x4a\x74\x29\x13\x8d\xd2\x1b\x04\xb6\xa0\xeb\xe8\x55\xab\x22\xbd\xda\x96\xcc\x3c\xd4\x6b\x1a\x47\xf3\xec\x49\x9b\x45\xe8\xe1\x4b\x61\x5a\x0d\x58\x8d\xcf\xec\xa8\xf7\xef\xb5\x8c\xe3\xa5\xb3\x14\x23\xbb\x65\xc1\x43\x8e\x70\xa6\x09\x96\xc2\xa4\xa8\xe8\x02\x54\xdd\xa7\x46\x26\x31\x5b\x62\xa9\xcb\xd2\x8d\x1c\xa4\xf4\x70\x88\x06\x83\x58\xcc\x58\x34\x52\x44\xd2\x59\x4e\xdd\x5d\xf9\x59\x99\x77\xc5\x3f\x9c\xe5\x8e\x8f\x0f\xc8\xd5\xac\xab\xa2\x42\x7c\xe9\x48\x09\x91\xad\x95\x96\xce\x0b\x43\x08\x42\x06\x82\x64\x08\xde\x92\x52\xf4\x08\x25\x36\x13\xda\xaa\xd6\xe9\x3c\xcd\x98\x00\x28\xf0\x56\x8e\xc4\xa1\x97\x15\x8c\x4f\xf0\x5e\x2f\x2a\xbe\x7f\xcf\x16\x14\xc4\xb2\x18\x68\x51\x1f\xa5\x7e\xf9\x96\xf5\x87\xde\x2f\x9a\x3f\x1d\xfd\xd0\xfb\xe5\xc4\x6c\xe7\x5b\x25\xfe\x00\x29\xfc\xa2\xf6\x3b\x2b\xa2\xec\x82\x17\x1d\x29\x25\x03\x6b\xe8\x48\x4a\x70\x9e\x66\x7d\x3e\xa8\xb2\x9a\x57\x0f\xe3\x56\xb7\x1e\xd2\x6d\x20\x77\x8d\xfc\x34\xf5\x90\xb3\x48\xb7\x92\x01\xbf\xe6\x83\xd9\xe7\xf5\x31\x16\x2c\x99\xee\x06\x83\xc3\xf4\x75\x92\xf7\xd3\xb1\x98\x9d\x6a\x15\x31\x1a\x0c\x84\x76\x3d\x31\x45\x1f\xa6\x5f\xca\x6f\x07\x45\x54\xf0\x1f\x41\x19\xaa\xae\x2d\xff\x6a\xe4\x05\x35\xf5\xe3\xc2\x12\x12\xe4\xaf\x8d\xc5\x1a\x96\xde\x87\x00\xd6\xf7\xf7\xd7\x7f\x39\x25\xca\x22\x0a\x45\x96\x30\x2a\xed\x0f\x56\x77\x85\xdc\x58\xee\xbe\x34\x89\x29\x9d\x69\x8e\x0a\xe8\xbb\xb0\x99\x66\x35\xbb\x27\xc6\x1c\x0a\xfd\x21\xbe\x21\x72\x23\xde\xd9\x20\x1a\xf9\xe1\xf8\x1b\x11\xf4\xe2\xc1\x2d\x08\x20\x7e\xf0\x48\xb9\x1e\xdc\x00\x82\xf1\x36\x41\x0f\xea\x1e\xda\x4e\xc3\xc0\xc2\xb6\x36\x80\x75\x58\xc7\x91\x6f\x98\xc2\xb6\xbb\x36\x86\x7c\x08\x9a\x34\xad\x94\x4c\x03\x36\xa2\xd7\xa0\xed\xba\x92\xe0\xeb\xd6\x51\x82\x28\xc2\x07\x75\xf6\x36\x4e\x06\x92\x0e\xba\xd8\x2b\x15\x3d\x75\x96\x00\xa7\x83\x36\xfe\x49\xba\xaf\x28\x9e\x43\x64\x74\x2b\x61\x5d\x30\x33\x2c\x25\xa9\xbe\x28\xd7\x61\xed\x3a\xab\xfc\xd7\x6a\x81\x85\x01\x8b\x62\x2d\xd1\xd7\x0e\xfc\x7f\x5a\x2d\xf1\x1d\x88\xa4\xd8\x1d\xe0\x1c\xe0\x3f\x12\xfe\x12\x04\xf2\x3b\x2f\xfb\x97\xd6\x22\x8c\x6d\x68\xc7\xc9\x6d\xdd\x6f\x95\xcf\xe5\xf6\x76\x77\xbc\x94\x6f\xb4\x75\x1e\x26\x89\x75\xb1\x7c\x13\x1f\xf5\x57\x18\xba\xfa\x26\x1e\xf4\x17\x98\x25\xfd\x09\x9e\x96\x96\xb4\x83\xce\x82\x04\xfb\xfe\xbd\x2c\xf8\xa2\x2b\x5b\x92\x9e\x73\x9a\x13\xd2\x66\x19\x39\x10\xb7\xed\xd4\xbf\xa3\x54\x41\x0c\xd4\x75\x36\x48\x13\x8e\x7c\xce\xc8\x6a\xd8\x3a\xf6\x5a\x19\xce\xc2\x12\x10\xe8\x92\x02\x00\x5a\xbb\x84\x60\x55\x96\xf6\xb5\x72\x75\xec\xec\x11\x40\x39\xf1\x81\x71\x2b\x1c\xc9\x06\xad\x8a\x9e\x9a\xb7\x75\xd3\xaa\x22\xb4\x51\x76\x31\x81\x9c\x9f\xdb\x71\x5e\x50\xf2\xc1\xe2\x9c\x21\xa2\x01\x82\x9d\x62\xc5\x2f\xef\xb8\xc1\x27\xc9\x65\x34\x1e\xf3\x81\x6e\xe6\x8e\x3e\x2c\x08\xa5\x02\x86\xe6\xbe\xcd\x75\xf5\x89\x5a\x4b\x9b\xea\x88\xe5\x01\x14\x90\x30\xfd\xe3\xc4\x95\x18\x6a\x12\x01\x56\x7d\x9f\xc8\x44\x97\x3f\x2a\x13\x6a\x78\xef\x83\xd5\x0f\x74\xc8\x00\x53\x73\x19\xbd\xe5\x39\xcb\x27\x67\xfd\x51\x84\x7e\xea\x70\x08\x28\x5d\x0e\x41\x8a\xbd\xca\x60\x09\xd8\xd9\x24\x1e\x15\x8d\x38\xc9\xa7\xda\x71\xbf\x40\x42\x3b\x98\x5c\x5e\xde\xd4\xd9\xcf\x50\x37\x23\xb4\x63\x87\x5f\x1d\x02\xae\xd6\xcd\x9f\xb6\x67\x8b\xd8\x29\xb8\x43\x5b\x2d\x16\x17\xac\x1f\x25\xd8\xa9\x34\x19\xdd\xc8\xe3\x49\xd4\x6d\xdf\x38\x27\xa6\xfa\x68\x8e\x4e\xcd\xe2\xa2\x06\x76\xc5\xd9\x30\x7a\xc7\x93\xa0\x60\xfd\xf4\x72\x3c\xe2\x05\x1f\xdd\xe8\xb1\x8e\x33\xde\xe8\x1d\x3c\x61\x57\xd1\x0d\x8c\xfb\x02\x9d\x99\xd9\x9b\x84\x5f\x49\x2a\xf2\xa6\xce\xf2\x94\x09\x89\x54\x8c\xd2\xf0\x92\xf4\x9c\xd5\xf4\x68\x04\xef\x12\xa3\xb7\xbd\x02\x5d\x17\x42\xac\x6c\x2a\x09\xc5\x4d\xce\x96\xfe\xaa\x8f\xc5\xcb\x33\xc5\xba\xa6\x2e\x75\x28\x2a\x01\xb6\x6d\x3c\xb2\x05\x53\x43\x94\x0e\x5d\x13\x8a\x5c\xc3\x32\x8c\x90\xd2\x20\x28\x65\x04\x75\x41\x50\x18\x1e\x43\xb1\xf4\x9c\x45\xa3\x91\xa0\x51\xf1\x80\x4d\x92\xb8\x9f\x0e\x38\xbb\x1a\xc6\x05\xcf\xc7\x51\x5f\x0a\x30\xf6\x59\x72\x43\xb0\x9c\xc6\x48\xe8\xc1\x97\xd1\x75\x63\xc4\x7d\xc7\x05\xc1\xf1\xf1\xa4\xdd\x6e\x7f\x83\x3f\xeb\xf8\xf3\x12\x7f\x36\xf0\xe7\x15\xfc\xac\xb4\xe1\x67\x5d\xfc\x2c\x3f\x79\x26\x7e\x56\xda\x6d\xf9\xb3\x8c\x3f\x2b\xf8\xf3\x18\x7f\xbe\xc2\x9f\xaf\xf1\xe7\x09\xfe\x3c\xc5\x9f\x67\xf8\xf3\x0d\xfe\xac\xc3\xcf\xca\x26\xfc\x7c\x2d\x7e\x1e\x2b\xd0\x2b\x58\x72\x45\x94\xdc\xec\x6d\x6e\x06\x66\x8f\xcb\xfd\x89\x0b\xba\x91\xf2\xac\x1f\x9f\x4d\x91\xfe\xe5\xdb\x86\xf2\xf7\x51\x15\xcc\x81\x9a\x99\xcd\xea\xc3\x34\x53\x86\x28\x00\xe6\xad\x98\xd1\xa3\x80\x2d\x59\xc0\x96\x58\x70\xa2\x74\x80\x51\x91\xc5\x97\xac\xcb\xf6\xf9\x45\xef\x7a\x5c\x0b\xfe\x6e\x17\x76\x1f\x82\x47\xe6\x84\xd0\xae\x39\xad\xce\x17\xc4\x13\x02\xed\x52\x44\xe0\xfd\x9d\x09\x40\x75\xf8\xff\x41\x11\x65\x05\xfe\xd9\x4b\x06\xf8\xc7\x36\x3f\x97\xaf\xf6\xe3\x8b\x61\xc1\x6e\xdf\x68\xbb\x41\x2c\x76\xb8\xe0\x0c\xa0\xb8\xd3\x33\x51\xcf\x89\xce\xe1\x2f\x7b\x3d\x49\xa5\x4a\xb6\x7f\x40\x74\x2d\x55\xa0\x00\x04\x68\xde\x55\x3e\x27\xfe\xc5\x95\x15\xa9\xe5\x15\x6e\x85\x2c\xb2\xe5\xd0\x80\xc0\x3f\x9a\x19\x1f\x8f\xa2\x3e\xaf\x8d\x70\xbc\x41\xe0\xa9\xb6\x52\x5d\x2d\x73\xab\xc9\x51\x60\x31\x73\x14\xef\x3f\x86\xfb\x5d\xda\x68\xaa\xe6\xdf\xcc\x32\xac\x01\x99\x65\x59\x71\x1e\x0e\x9b\xbb\xb0\x05\xbc\x5c\xc0\x03\x81\x5d\xfc\xd1\xb1\x16\xa8\xb6\x8c\xc6\x98\x29\x1d\x83\x45\xd7\x28\xf1\x01\xfb\xc5\x51\xee\xe6\x42\x48\xb7\xfa\xb4\x32\xa5\x4f\xa2\xa2\x91\xc1\x1f\xd6\x01\xf4\x60\x89\x2f\x9d\xe6\x1f\x87\xd3\x2c\x23\xaf\x7a\x07\x1b\xfb\x5b\x7b\xf2\xec\xb8\xca\x32\xa0\xbc\x5d\x8c\x5d\xe2\x62\x94\x9e\x45\xd5\x87\xf2\xf8\x59\x97\x8e\xf3\x4d\xb0\xfd\x4c\x13\x57\xd0\x3a\xf4\x00\x87\x81\x79\xfd\xc4\x41\x6e\x49\xab\x25\x20\xf9\xbd\x91\x45\x57\x66\x00\xc9\x90\x67\x71\xb1\x75\xbe\xaf\xee\xe4\x55\x1b\x61\xa0\x64\x23\x3e\x6f\xa8\xfb\x7b\xe4\xbe\xc8\x5e\x16\x5f\xc6\x20\x89\x4c\x31\x41\x8d\x55\x21\x5d\x71\xde\xab\x36\xf7\x76\x07\xb5\xdd\x9b\x76\xa2\xcb\x29\x3c\x82\x78\xb3\xa4\x57\x89\xf1\x08\x4d\x44\xad\x20\x6c\x9e\x7b\x61\xce\xe1\x62\x5a\x05\x98\xba\x9a\x6a\xe8\xb8\xf8\x33\xdd\x53\x24\x4c\x69\xdc\x32\x6e\x29\x1a\x8e\xe4\x3a\x15\xae\x32\xd2\x47\x26\x8b\x2f\x83\x10\x36\x99\xe6\x89\x3b\xaf\x7f\x7c\x09\xae\x5a\xc1\xce\xe4\xf2\x8c\x6b\x23\x18\x1e\xac\xe1\x3b\xa1\xf0\xc2\x46\x38\xc2\xd2\x27\xaa\x0c\x7c\xb5\x24\x33\x52\xab\x7c\xb5\x66\x77\xcc\xb3\x88\xfd\xd7\xf2\x0a\x7a\xc0\x67\xe9\x5b\xae\x6e\x38\x7d\xae\xce\x70\xa4\x57\xc8\xfe\xee\x0f\xbd\x9d\xd3\x8d\xed\xf5\x83\x83\xdd\x4d\xd6\x55\xc8\x5e\x93\xae\xa6\x4e\xcb\x21\x48\x99\xd8\x39\xcd\x51\x0f\x53\x2c\xf5\x86\x45\x67\x79\x91\x45\xfd\x82\x89\x59\x93\x3c\x71\x4e\x0a\x55\xa4\x09\x00\x51\x88\xaf\x27\xc4\x30\x49\xa5\xa1\x11\x51\x3f\x2e\xe0\x42\x8e\xde\x25\xba\x8c\xf4\x56\x35\x96\x82\xf3\x38\xcb\x05\x19\x1f\xc6\xd9\xa0\xce\xb2\x68\x10\x5f\xd7\x85\x18\xb8\x91\x0e\x78\x9d\x0d\xe2\x8b\xb8\xc8\xeb\x0c\xd5\xfb\xba\xd2\xb1\x85\x50\xe9\x5e\xdb\x11\x4d\x76\x59\x80\x2b\x1d\xa0\x2b\xa9\xb9\x50\xb7\x62\x7c\x36\xa0\x6b\x59\x7c\x59\x8b\x0b\xc5\x31\xa1\x13\xac\x2b\x6a\xf4\x87\x51\x26\xda\x5e\x2f\x6a\x6d\xca\x87\x65\x91\x6e\x97\x7d\xf5\x98\xbd\x7f\xcf\xc8\xf3\xd7\xc4\x00\x0f\xe3\x28\x41\x5a\xb1\xcf\xcd\x64\xa1\x6e\x97\x3d\x7b\x26\x60\x99\xe7\xe5\x95\xb6\xb6\x0c\xec\x44\x3b\xab\x82\x8f\xe0\x8c\xd7\x82\xa5\xf6\xf5\x72\x10\xb2\x7c\x98\x4e\x46\x03\x76\xc6\x45\x81\x3a\x4b\x47\x03\xf6\xd3\x33\x76\x1e\x5f\x5b\x16\x7c\xa7\xcb\xcf\x48\x17\x95\x3f\x88\xdd\xc5\x65\xfb\x18\x01\xbc\x2c\x9e\x3c\xe9\xe0\x1f\xdf\x3c\xeb\xe0\xd2\xb0\x2e\x5b\x59\x55\xcb\xc3\xba\xec\xab\x6f\x56\xd9\x59\xc6\xa3\xb7\xd0\xd3\xf3\x28\x2f\x18\xff\x6d\x12\x8d\x84\x1a\xd0\xfa\x7b\xfb\xec\xa8\xbd\x7c\xb2\xf4\x45\x2b\x76\x00\x3f\xfd\x46\x02\x5e\x5e\x5e\x36\x90\x9f\x51\xc8\x5f\x7f\x3d\x15\x72\x7a\xd4\x6e\x3c\x75\x40\xcb\x83\x1e\xed\x14\xb2\x14\x17\xee\xf9\x06\x93\x18\x85\x2b\x94\x8f\xe2\x3e\xa7\x8b\x23\xd1\xa5\x2b\x4b\x49\xf4\xd1\x9f\xe1\x60\x47\x99\xa8\xda\xab\xd2\x08\xf5\x5c\x56\x93\xcf\x4b\x4b\xf6\x44\xe2\x70\x24\x40\x32\xe1\x50\x98\x9e\xef\xb6\x5a\x6c\x1c\x65\x39\xdf\x4a\x0a\xfc\x23\x37\x5a\x55\x91\xb2\x48\xa2\xdc\x24\x89\xde\x45\xf1\x08\x9c\x70\xd1\x4f\xce\x02\x71\x36\x29\x98\xda\xf8\x0a\x57\x0c\x42\x09\xbc\xd0\x40\xfb\x69\x52\x44\x71\x92\x7b\x40\xe6\xf6\x21\x3c\x0c\xe2\x39\xfb\x0a\xb0\x15\x1e\x5e\xa8\xa5\xb2\xd0\x55\xcf\xb6\x7a\xa9\x06\x54\x53\x1b\x19\xd6\x3a\xb4\x8e\x82\xed\xe5\x32\x97\xa1\x14\xf1\x22\xba\xf4\xdc\x54\x0b\x69\x56\xc3\xaa\x2a\x06\xa2\xe4\x97\x1a\x92\xca\x3a\x5b\xa0\x04\xbb\x16\xb0\x76\x2a\xf6\xd8\xfb\xf7\xee\x87\xf6\x99\x7c\x6f\xbf\xc6\x3d\x19\x52\x23\x07\x7c\x51\xea\x3c\x21\x93\xb2\x0a\x18\x88\x2c\x8d\x02\x08\x92\xb6\x72\x29\x92\xf5\x9c\x2d\xb3\x35\xd6\x66\x1d\x34\xf7\xad\x9a\xf2\x60\x61\x10\x34\xcc\x9c\xa9\x2b\xf7\x32\xf8\x42\xbc\x8d\xad\xce\x10\xaf\x81\xfe\x90\xf7\xdf\xb2\x34\x61\xcb\x4d\x6a\xaa\xa8\x9d\xa7\x69\x08\x1b\x53\x95\x5d\x5c\x64\x35\x87\x15\xad\x31\xcf\x9d\x5f\x97\x13\xe2\x69\xc5\xee\x39\x9e\x7d\x43\xbf\xc2\x55\x76\x1b\xb2\x8e\x66\x64\xf8\x92\x2d\x28\xb6\x15\x1a\x94\x5b\x2b\x8b\x69\xe0\xd3\x62\xcd\xbd\x62\x45\x82\x8c\x87\xda\xea\x64\x8d\x58\x34\x47\x8b\x69\x5d\x48\x6e\x65\xb0\x45\xe3\xc5\x6d\x2a\x3e\xaf\xf9\xa4\xa8\x1a\x6d\x5c\x00\x36\x86\xaa\xde\xc1\xe3\x0e\x3e\x04\x3f\xae\xff\x0d\x4f\x3c\xeb\x3f\x6e\xed\xc8\xbf\x04\x99\xde\xe9\x7d\xb7\x7e\xb8\xf5\x53\xef\x74\x6b\x67\x73\x6b\x67\xeb\xf0\x97\xfa\xde\xee\xc1\x96\xfd\x26\x60\x4b\x04\xe4\x4a\x7b\xf9\x6b\x41\x6c\x60\x39\xea\x62\x17\xa2\xea\x26\x9d\xf9\x65\x01\xb5\xcf\x85\xa2\xdb\xcf\x4d\xa0\x89\x33\x7e\x9e\x66\x3c\x54\xdd\xea\xed\x1d\x6c\x6d\xef\xee\xd4\xe3\x7c\x33\x4e\xe2\x82\xd7\xe3\x7c\x2b\x29\xf8\x05\xcf\xea\x71\x2e\xfa\x17\xe7\x07\xd1\x39\x57\xef\xc4\x28\x0e\xd6\x37\x45\xdf\x0e\x7b\xdf\xf5\xf6\x4d\xd7\x02\x31\x2c\xeb\x13\xec\xf0\xcd\x51\x1a\x15\x75\xb5\xd9\x0d\xf4\x00\x6c\x4c\xcd\x7c\x3c\x8a\x8b\x5a\x50\x0f\xc2\x3a\xfb\x55\x90\xce\xba\x98\xf6\x55\x66\xdf\x79\xff\x75\x95\xfd\x4a\x88\xa7\xba\xbe\x4b\xe7\x1d\xea\xb1\x2e\x54\x3c\xfa\xf5\x24\xd4\xb7\xd0\xac\x65\x87\x52\x94\x9d\xd9\x22\xa6\xa7\x70\xbd\x52\xc6\x2d\x37\x1f\x86\x8e\x23\x0b\xb3\x91\xce\xba\x18\xe4\x6c\x8b\x55\x53\xda\x6c\x15\xfb\xfe\xbb\x05\x4b\xda\xdc\xe4\x89\x3e\x8a\xa0\x75\xa6\x68\x97\x8d\xeb\x78\x43\xce\xaf\x1c\xde\xf1\x8a\x0b\xd2\x5f\xb4\xdf\x10\xdd\xf4\x7c\x14\x5d\xe4\x6f\x18\x9e\xe2\x96\x6c\x2c\x73\x52\x66\xa1\x14\x64\xfc\x82\x97\x21\x4f\xb5\x2d\x13\x0a\x5b\x0c\x23\xa0\x98\xea\xb2\x83\x7d\xf2\x94\xf1\x7c\x32\x12\xdf\x83\xc0\x48\x88\xc3\xa8\x68\xe2\xec\x85\xaa\xc0\x52\x97\x05\x17\x4e\x91\xf8\x22\x49\x33\xbe\x11\xe5\xdc\x2a\x16\x3b\xc5\x2e\x27\xa3\x22\x1e\xc5\x89\x5d\xea\xd2\x29\x35\x48\x8b\xf5\x91\xdd\x5e\xee\x14\x91\xe6\x51\xab\xcc\xc4\x29\x93\x17\x71\xff\xed\x8d\x55\xe4\x26\xa0\xb6\x58\xfc\x50\xe9\x35\x51\xa5\x77\x5a\x71\x1d\x84\xdc\x10\x9d\xf1\x51\xe3\x32\x4e\xe2\xf3\x1b\x56\x64\x51\x92\x8f\x63\x41\x6d\x94\xfd\x2f\x0a\xea\xa2\xe5\x90\x35\x5e\xb0\x56\xd4\xba\x61\x51\x32\x40\x13\xfd\x44\x48\x2a\x07\x37\x49\x11\x5d\xc3\xf5\xac\x3a\xc0\xcb\x53\x76\xc5\xc1\x5e\x1e\x25\x78\x5c\x7c\xc9\x07\xb1\x50\x68\xd5\xa2\x36\x8f\x13\xbd\xbe\xfb\xbd\x5a\x5e\x67\xe7\xb6\x19\x4e\x36\x0d\x1f\xd4\xfd\x4f\x89\x1b\xcd\xd7\x3b\x07\xaf\xf7\xf6\x76\xf7\x0f\x7b\xaf\x4e\x7f\x01\x2f\x59\x6f\x1c\x8a\x0f\x3a\x30\x83\x62\xac\x2b\x7a\xac\xab\xca\xe5\x68\x8e\xa2\xbc\xd8\x92\xe2\xe1\x8a\xbd\x46\x4d\x7e\xcd\xfb\xb5\x20\x3a\xeb\x0f\x02\x60\x7a\xea\x3e\x3f\x2e\x80\x1a\x96\xe2\xb5\xeb\xfb\xbd\xc3\xa9\xa3\x52\x5b\xed\x6c\x72\xf1\x8f\x78\x34\x8a\x9a\x97\x29\xfe\xa6\xd9\x45\x2b\x1f\xa6\x57\xa7\x67\x93\x8b\x66\xff\x22\x5e\x8b\x07\xdd\xa7\x4f\x1f\x3f\x79\xf6\xb4\xd4\xfd\xbf\x67\xa2\xff\x17\x77\x1a\x40\x5e\x64\xe5\xfe\xfb\x89\x0e\xee\xf2\x4d\xb1\xb5\x6d\xcc\xc3\x0f\x0d\xd8\xf4\xe6\x54\x0b\xf0\xfc\x7b\x3e\x1a\xf3\xcc\x5f\x1e\x4b\x34\x86\x58\x84\x58\xb5\xf1\x48\xa8\x77\xcd\xfb\xda\xea\x4c\x5d\x3f\xae\x79\x1f\x4f\xd0\xe1\xaa\x42\x34\xba\x8a\x6e\x04\xa7\x3c\x17\xed\x14\x29\x2b\x86\x5c\x3b\x4c\x5a\x24\xad\xce\xce\x38\x20\x81\x28\x02\x00\x50\x41\xff\x5c\x1a\x5e\xd9\x38\x1d\xdd\x9c\xc7\xa3\x11\x03\x44\x69\xb6\xce\xe3\x6b\x49\xda\x1a\xa5\xbb\x2c\x8d\x51\x7a\x11\xf7\x9b\xbf\xe6\xb8\x3b\xae\x86\x71\x7f\xc8\x46\x69\x34\xc8\x41\x8e\x63\xe7\xf1\x88\x4b\xae\xcd\xc6\x51\xd1\x1f\x82\xd4\x3f\xe4\xd2\xa4\xd8\xa4\x23\xdd\x97\xed\x2b\x1b\x34\x19\xac\xec\x9a\x9e\x1a\x00\xc5\x07\x72\x6e\xcc\x44\xe9\x02\xaf\xf7\x5e\xad\x1f\xf6\x0e\x4e\xb7\xd7\x0f\x0e\x4f\xb7\x76\x5e\xf5\xfe\x76\xfa\xf3\xfe\xee\xce\x77\xac\xcb\xca\x78\x87\xab\xba\xcc\xba\x62\xa3\x10\x8a\xbb\x22\xde\x9c\x3d\x6a\xa1\xb1\xd9\xb4\x82\xd2\x5f\xc6\x97\xeb\x2c\x88\x24\x96\x95\xbf\xae\x90\xaf\x1a\xdd\x96\x09\x2e\x2e\x74\xbb\xac\x2d\x64\xef\x8c\xaf\xb8\xaf\x01\x05\x6b\x06\x17\x5c\xba\x60\xa1\x95\x43\x35\xde\xbf\x77\x3e\xd3\xdd\xa7\xe8\x62\x92\x26\xe3\x28\x2b\xe2\x7e\x3c\x8e\xe0\x4c\xb0\x1f\x8d\x8b\x09\xe8\x4f\x17\x59\x3a\x19\xd7\x59\x3f\x1d\xc7\x7c\xc0\xce\xb3\xf4\x92\xf1\xfc\xeb\x46\x3e\x8c\x2f\x83\x5c\x21\x0b\xc8\x3e\xb8\x0e\x72\x11\x77\xf6\x36\xbe\x3b\xdd\xda\xd9\xd8\x7e\xfd\xaa\xf7\x4a\xcc\x5c\x2d\x5c\x5b\x6b\xc9\xfd\x15\x84\x47\xcb\x4e\x18\x33\x3d\xb6\xbd\xf5\xc3\x8d\xef\x59\xb7\x7a\xcd\x84\x7a\x62\x01\x7f\xff\xde\x9e\x10\x1d\xb8\x01\x40\xc9\x55\xb5\x71\xc4\xdc\xa4\x10\xfd\xc9\x8b\xcc\xd2\x55\x80\x76\x10\xc5\x03\x4e\x8a\xd4\x8a\xd4\x59\xc6\x37\xd2\xf1\x4d\x9d\x5d\x0a\x90\x75\x16\xaf\xd2\x73\x13\x31\xd3\xa2\xf7\xd6\x1a\x2c\x2e\x0a\xda\x82\x1f\x49\xe9\x73\x4d\x35\x34\x0d\x51\xe8\x12\x52\xa0\xe9\x24\xeb\xa3\x89\xb4\x89\x7f\x93\x8f\x42\xd7\xce\xd7\x07\x03\xb0\xf1\xb6\xad\xae\x64\xa2\x9b\x78\x92\x22\xbd\x54\xa5\xb3\xb9\x64\xb6\x5a\x72\x54\xfd\x80\x5f\x7d\xe2\x12\xdc\x04\xf4\xbc\x45\x1a\x88\xa0\x08\x68\xf5\xbb\xe7\xb5\xe0\x22\x08\xc1\xf4\xd2\x58\xb6\xcc\x01\x08\x90\x08\x1f\x52\x92\xd4\xc6\x19\xdd\x37\x79\xbe\x24\x56\x40\x1a\x2a\x28\x81\x36\x6d\x0b\xba\x34\x19\xa3\x83\x6d\xd2\x1f\xa6\x42\xfc\x97\x93\x7d\xc6\x87\xd1\xbb\x38\xcd\x9a\xb4\x9f\x16\x99\x7f\xc1\xda\xa0\xe3\x2d\x64\xdc\x88\x35\xb8\xd5\xc8\xf3\xe2\xa2\xe8\xd7\x91\x55\xb3\xc1\x24\x9e\x06\xc7\xc7\x49\x60\x1b\x8f\xf4\xb2\x04\xb5\xb5\x0e\x0b\xd8\x92\x7a\xb3\xc4\x82\x30\x20\x26\x0f\x33\xda\x00\x8b\xe1\x33\x29\x61\x16\x51\xfa\x01\x31\xc7\x01\xfe\xef\xb5\x35\xb6\xc4\xb2\x6b\xb6\xc4\x42\x16\xe7\x2c\xe1\x7c\xc0\x07\x75\x26\x34\xa7\xf4\xf2\x2c\x4e\x80\x96\xa3\xd2\x94\xa7\x97\xc0\xa4\x98\x98\xcf\x38\xb9\xa8\xb3\x22\x25\xa0\xf2\xf8\x72\x32\x12\x12\x8a\xa0\xbb\xc1\x4d\x00\x8b\xa5\xe7\x0e\x71\x5b\x50\x51\x7e\x65\x4e\x45\x6b\x6b\x1d\x77\x7c\x75\x5c\x64\xa2\x26\x18\x04\xb3\xb6\x27\x99\x33\x3f\x70\x1b\xf2\x17\xb5\xb5\x85\xe3\xe3\xe3\xe3\xdc\xd7\x84\x6a\xa0\x8a\x36\x84\x8c\xf2\x76\xba\x92\x7a\x03\xc0\xa6\xb5\xb8\x04\x6e\x39\x89\x4c\x6b\xaa\x93\x1d\x96\xf1\xba\x5a\xaa\x70\xfa\xfe\x11\x2f\x01\xae\x85\x1f\xf0\xa6\x19\x27\xe3\x89\x10\xd4\xc9\x93\x44\x74\xb3\xe8\xd4\x3e\x06\xe5\x8e\xda\x27\xaa\xca\x51\xfb\x64\x76\xf9\x66\xec\x1f\xb2\x2a\x64\xe1\xf4\x12\x81\xec\x98\xfe\xa4\x59\xd5\x91\x91\xda\xab\x25\xa3\x6b\x25\x71\x5e\x5c\x64\xee\x4c\x38\xd0\x32\x2e\x95\x14\xb6\x66\x75\x7e\xc9\xed\x15\xeb\x30\x77\x2c\xb7\x15\x38\xa6\x9b\xd5\x7f\x18\x85\x9b\x52\xa6\x56\x8b\x6d\xc6\xd7\xec\x2c\x4b\xaf\x72\x21\x18\x5d\x0d\xd3\x9c\xb3\x37\x82\x09\x98\x63\xf5\x41\x8a\xfe\x33\x49\x1e\xe7\x05\x4f\x8a\xd1\x8d\x62\xd8\x6f\x34\xb7\x7a\x43\x20\x9e\xa7\xc8\xed\xea\x6c\x14\xbf\xe5\x6c\xab\xf7\xac\xc9\x76\x76\x0f\x7b\x1d\x14\xc5\x06\x29\xcf\x93\x00\x1d\x7c\x44\xd1\x56\xad\xb9\x16\xae\xb5\x14\x00\x4b\xd8\x41\x54\x54\xf3\x60\x38\x4d\x49\x46\x91\x64\x16\x2c\xb5\xac\xcb\x96\x57\x59\xcc\x9e\x97\xcd\x6b\x0d\xb6\xb2\xca\x62\xc7\x56\x2b\x2f\x66\xa9\xb2\x47\x71\x29\xf6\x27\x76\x40\xbc\x2f\xf9\x14\x5a\x84\xe9\xb6\xb4\xfb\x95\x93\xbb\x00\x60\xce\xe4\xbd\x47\xf2\x84\x21\x3f\xfc\xbe\x3c\x47\xb6\x5e\x75\xf4\x0a\xd2\xaa\x28\x23\xe5\x69\xea\xf9\x1f\x20\x21\x0a\x2a\xbc\xff\x5b\x4d\x14\x5a\x80\x0b\xc0\x1f\xb7\xd2\xcb\x56\x3c\x74\xe0\xff\x76\x38\xbe\x22\x95\x76\xa1\xe9\x7e\xfb\x68\x3a\x32\xe7\xc7\x1f\xce\x7b\xa6\xd2\xd3\x44\xa8\xe1\x7b\x69\x9c\x14\xeb\x45\x9d\x45\xf7\xf7\x25\xd9\xd8\xdd\xf9\xa9\xb7\x7f\x78\xaa\xaf\x41\x4d\x75\x2c\xa9\xb3\x71\x6a\x7b\x97\x1c\xdc\xd1\xb1\x04\x64\xfc\x34\x87\x6b\x35\x70\xe2\x26\x27\xb8\x26\x00\x53\x91\x27\xfe\x07\xe8\x0b\x36\x59\x23\xe7\x6f\x39\xef\xa7\xc9\x80\x9c\x77\x69\xa8\xcf\x51\xf6\xd6\xcf\x2f\xba\x00\x4d\xdb\xfd\x4b\x43\x66\x6b\x2c\x08\x68\xd4\x07\xe7\x90\xed\x80\x9e\x82\x28\xb0\x8e\xef\x0a\x96\x7d\xce\xda\xd7\xaf\x9e\xb5\xdb\xe6\xbc\xed\x85\x78\xf3\x72\x73\xd3\xea\xd1\x12\x5b\x86\x7d\x2a\xba\xa5\x36\xe0\xfb\xf7\xac\x86\x63\xaa\x6a\x51\x54\x0b\x43\x6c\x63\x03\xdb\x90\x15\xa0\x91\x4d\xbc\x6c\x86\xff\xd6\xbc\xa3\x44\xb0\x74\x10\xac\x83\xfd\x34\x35\x3b\x15\x35\x91\x71\xa9\x8a\x75\x3a\x98\x15\xb0\x2e\xe3\x78\x1b\x6a\x06\x9e\x3f\x67\xcb\xed\x90\x2d\xe9\x51\x35\x64\xbf\xc5\xbb\xf6\xf5\x72\xbb\xdd\x6e\xdf\xdf\xd5\x87\xa0\xff\x87\x70\x62\x11\xe0\xc6\x02\x5c\x04\x33\xd1\x87\x89\x77\xbc\x59\xf0\x18\xb8\xda\xa1\x26\xaa\xea\x89\xec\x44\x3f\xbd\x6c\x5d\x46\xc5\x30\x8e\xf2\xb3\x9b\x84\x27\x79\xcb\x03\x02\x5a\x87\x35\x72\x5a\x87\xbb\x8c\xd3\xdc\x69\xb0\xd6\x2c\x7f\x02\x10\x91\xcf\x6e\x0a\x1e\x84\x12\x17\xfe\x85\x6e\xfb\xc8\x7b\x98\xf4\xba\x0f\x4e\xd1\x3f\xe1\xbe\x8f\xd3\x97\x6a\x5a\xfc\xa0\xab\x2c\x2e\x22\x5a\x77\x59\x9c\x4b\x25\xd8\x70\x5d\xcd\x89\xf7\x5a\xc9\x1d\x2e\x94\x38\x03\x94\x37\x4a\xb0\x43\x1d\x13\x9f\x4a\x5d\x24\x39\xb6\xae\x8f\x1c\x5b\xd7\x3c\xb0\xf0\x07\xbb\xe7\x81\x7d\x98\xeb\xa2\x87\x78\x73\x8f\xcb\x1e\xc4\x31\x31\x2a\x84\x32\xaf\xfd\x0e\x2b\xae\x74\xe8\x6f\x40\x24\xb4\xbd\x5b\xdf\xe9\x90\xeb\xa8\xee\x74\xdc\xe5\xb6\x06\x40\x64\x5d\xb9\x7f\x6b\xb9\x5c\x65\x72\xd8\x4e\xfa\x21\x04\x7e\xa8\x40\xd9\xa2\xdb\x1a\x14\xf0\xdc\xaa\xf0\x1b\x3e\x5b\x2d\x76\xb8\xfb\x6a\xb7\xc3\xf6\x21\xed\x3f\x5a\x85\xde\xf4\xd3\x8c\x37\x7e\xcd\xbf\xfd\xea\x0d\xcb\xe3\xa4\xcf\x59\x5c\x04\x39\x13\x05\x06\xac\x48\xe1\xba\xe9\x0d\x36\x94\x1f\x27\x74\x9f\xcb\x33\xbf\x16\xcf\x9b\xf2\xd0\x44\xcb\x6a\xf7\xf3\xad\xbb\x8b\x03\xda\xc3\x03\xf7\x60\x9f\x7b\x77\x11\x41\xff\xc0\xf0\x45\x92\x2c\xee\xf5\x36\x30\xa4\x4d\x29\x54\x4e\x3e\xe6\xfd\xd8\x72\x98\xde\xef\xed\x6d\xaf\x6f\xf4\x4e\xa5\xc9\x0a\xef\xb1\xbe\x3a\xfd\x6e\x7f\xf7\xf5\xde\xc1\x94\xf8\xd7\xad\x16\xd3\x66\xe2\x84\xf3\x41\xae\xaf\x50\xb0\x5c\x1a\x6b\x84\x8a\x92\x44\x97\x7c\x80\x76\xc4\xbc\xa9\xea\xa1\xba\x76\x05\x81\xdb\x60\x71\x95\x19\x3a\x2e\xd8\xaf\x93\xbc\x30\xd1\x75\x38\x8a\xdd\x78\x02\x94\xd7\x19\x7f\xc7\x13\xb1\x93\xe2\x82\x0d\x23\xe5\x07\x1b\xb1\xe3\xcf\x2e\xb2\x74\x9c\x1f\x7f\xc6\xd4\x74\x34\xad\xb3\x80\x56\xb3\xa5\x0e\x00\xb8\x63\x04\xac\x39\xd6\x3f\x79\xb6\x76\x74\xa2\xc5\x35\xf1\xa6\x89\x23\x10\x22\x06\x8b\x3a\x2c\x78\x1a\xe8\x7b\xd1\xee\x21\x15\xb3\x2f\x33\x05\x81\x71\x63\xe6\x75\x16\x7c\xf1\x3c\x7a\x11\x60\x68\x88\xe0\x69\x60\xce\x47\x5a\x2d\xb6\xd5\x63\xcf\xbb\x6c\x79\x99\xc9\x0a\x39\xfb\xa2\x8d\x66\x1d\x31\x11\x57\xc3\x74\xc4\x95\xdd\x31\xca\xe5\x2c\x5c\x45\x39\xfb\x62\xd1\xa2\x95\x79\x11\xf5\xdf\xa6\xef\x78\x76\x3e\x4a\xaf\x40\x8a\x80\x54\x04\x71\x9a\xe4\xad\x27\xed\x95\xaf\x9e\x3c\x79\xd2\x92\xd7\x3f\x1a\x31\x6f\x14\x69\x43\xb6\xd7\x88\xd0\xb8\xdf\x10\x6d\x36\x8a\x21\x6f\x8c\x80\xa8\x8e\x54\x00\xae\xb6\x8d\x32\x3f\xf4\x7a\x7b\x07\xa7\x5f\xb4\xbd\x96\x74\x35\xfc\xc8\x8c\xbf\xd5\x6c\x89\x09\x68\x4b\xbb\xa1\xf8\xcb\x35\x6e\x4b\xd0\x3e\xd4\x95\x50\x02\xc9\x45\x64\xa4\x5d\x31\x61\x8f\x9b\xed\xe6\xe3\xda\x5a\xc8\xf2\xc9\x59\x5e\xc4\xc5\xa4\xe0\x39\x4b\x8a\xa1\x34\x64\x8b\xa9\xe3\x19\x67\xc9\x8b\x4b\x9c\xcd\x28\x91\x51\xe8\x72\xe2\x8e\xb8\xdf\xfb\xae\xf7\xb7\xbd\x53\xb3\x1d\x5e\x1e\x1c\x6e\x1d\xbe\x3e\xec\x1d\x9c\xbe\xde\x79\xd5\xdb\xdc\xda\xe9\xbd\x3a\xdd\x58\xdf\x3b\xc4\x30\x5d\xe5\x01\x0b\xfa\xde\x6a\xb6\x8e\x24\x84\x13\x37\x56\x36\xfd\x26\x0f\xd6\xcc\x54\x04\xe6\x22\x9e\xd2\x0f\x64\x50\x1c\x3d\x3d\xad\x16\xdb\x18\x66\xe9\x25\x67\x5f\x2f\x83\x73\x65\x24\x03\x0c\x1f\x7f\x06\x16\xf8\xe3\xcf\x1c\x45\x4e\x0c\x5b\x1d\x31\x7e\xae\xd5\x58\x63\xfb\xc2\xe8\x89\x9c\x5f\xb3\xff\x38\x00\x80\xe7\x59\xfa\x0f\x9e\x98\x7d\xac\x39\x69\x6e\x6e\x06\x65\x37\xac\x25\xc3\xfa\x5d\x29\xa7\x1b\xa4\x39\xdb\x5b\x87\xa7\x3f\xef\xee\xff\x70\x70\xfa\xf3\xd6\xe1\xf7\xa7\xbb\x3f\xf5\xf6\x7f\xde\xdf\x3a\x3c\xec\xed\x9c\xf6\xfe\xd6\xdb\x98\x42\x4a\xcc\x36\xad\xad\x75\x42\x73\xec\x92\x66\xf1\x45\x9c\x44\x23\x4d\x5d\xd5\x49\x57\xe5\x46\x56\x93\x47\x6b\x36\xa3\xf1\x78\x74\x23\x25\x1a\x6d\xf9\xd0\x81\x2a\xec\x13\xf5\xe8\x2c\x90\xbe\x1c\x19\x0f\xcb\x67\xd0\xca\xb6\x22\x26\x72\x05\x8d\xc8\xe2\xf5\x51\x5b\x1a\x8a\xa3\x80\xbc\x54\xd6\xe3\x33\xb2\xcb\xa7\x9c\xff\x43\xe8\x02\xe5\x05\x2a\x06\x57\x67\xf9\x30\xba\x24\x73\x74\xf0\xcb\x8f\x2f\x77\xb7\x3d\x7b\xe3\x87\xde\x2f\x34\xbe\xd7\xab\xde\x76\xef\x3b\x30\xd1\x09\x8d\x4c\x55\xaa\x9a\x7d\xb4\xaf\xa3\x80\xa3\x2c\x02\xfd\x68\x34\x92\x7e\x72\x0d\xa4\xe0\x02\x8d\xc6\xf4\xfe\x01\x36\xb5\x6b\x02\x54\x32\xb6\x7b\x84\x8d\x9d\x54\x2d\xcb\xd3\x55\x97\x6a\x06\x01\x44\x69\xa8\xed\xc2\x89\xeb\xd3\x55\x2d\x27\x7a\xc7\x22\xf1\xc8\x37\xbe\xc5\xc5\x19\x03\x74\x07\x73\x3d\xb6\x47\xdb\x44\x63\x8e\x1a\x98\x78\xda\x88\x46\x23\x38\x5a\x31\x01\xaa\x28\xb2\xc2\x01\xa1\x31\x27\xfc\xd0\xfb\x05\xf7\x32\xe0\x4f\x60\x5b\x1e\x7f\xe6\x32\x0a\xe9\x04\x4c\xac\xd1\x08\x05\x07\x06\x84\x49\x09\x4c\xea\x40\x7e\xc0\xd3\x71\x11\x5f\xc6\xff\x90\xf6\x18\x0d\x25\x4a\x06\x2c\xe7\x59\x9c\x4e\x72\x36\xe6\xd9\x79\x9a\x5d\x46\xa2\xea\x80\x5f\x64\xd1\x00\x37\x3d\x44\x92\x21\x75\x3c\x4a\xe5\x3f\x46\x69\x9c\xa5\xfd\xb7\x2d\x29\xb4\xb5\xe2\x3c\x9f\xf0\xbc\xf5\xb8\xfd\xc4\xd8\x6d\xe9\xc2\x02\x20\x9c\xb4\xa3\x6f\xbf\x85\xf1\x9d\x48\xdb\x66\x81\xb3\x27\x18\x14\x8c\x28\xc8\x91\x63\xe3\xdc\xd6\xc1\x59\x13\x15\x7d\x14\x5f\x72\x3a\x1c\x38\x0b\x48\x13\xde\x14\xf3\x23\x84\x08\x21\x2a\x12\xde\x2f\xcd\x84\x72\xae\x80\x9c\x01\x14\x75\x72\xac\xaa\x13\x6b\xb3\xed\x6a\x44\x46\x60\x7f\x3b\x92\x32\x52\x25\xaa\x66\x9c\x46\x64\xcb\xa4\x03\x8f\x71\xba\xc1\xb7\x04\xe1\x05\x79\x97\x4f\x65\xc3\xa8\x9f\x58\x59\x38\x06\x91\x78\x74\x78\x9d\xc9\x68\xb4\xaa\xc3\xac\xd1\x96\x6a\xa5\x4b\x50\x0b\x06\x8c\xbd\x7d\xcc\x55\xd3\x05\xdf\x8e\x79\xff\xde\xf7\x11\xb6\x98\xfa\x64\x70\x5a\x31\x5f\xd8\x67\x35\x35\x01\xd3\x65\x47\x75\x5b\x93\x95\x05\x06\xf3\x69\xe1\x2e\x7c\x17\x2b\x85\xa1\xa7\x83\xb8\xe9\xa0\x7b\x33\x59\x11\xf8\x61\x5a\x62\x9f\x32\xc4\x0b\x0c\xd7\x36\xcf\xf2\x8a\x8a\xa2\x26\x70\x0f\x1c\x1f\x63\x81\xba\x22\x64\x54\xc7\x46\xa0\x3f\xca\x8d\x80\x5a\x00\x9c\x2a\x01\x1b\x5a\x91\x66\x66\xa4\xbc\x58\xca\x39\x56\x22\xfa\x10\x0c\xd2\xe8\x1a\xa5\x18\x62\x95\x24\x71\x4a\x13\x72\x17\x1e\x1a\xef\x10\x8b\x0b\xb0\x68\x94\xf1\x68\x70\xc3\x06\x7c\xc4\x2f\xc4\xd6\x15\xbb\xf3\xdb\x6f\xe5\xd7\x9a\xb9\x24\xac\x41\x29\x77\x11\x3e\xd0\xd3\x10\x0a\x9e\x16\xe5\xd2\xc3\x3b\x4e\xce\xc1\x3b\x93\x65\xbc\x3f\xc9\x72\x74\x91\xb2\x40\xfc\xcc\x59\xf4\x2e\x8d\xc1\x3f\xe9\xec\x86\x0d\xe2\x8c\xf7\x8b\xd1\x0d\x50\x19\xbd\xed\xb1\xb7\xba\x2b\xda\x81\xc4\x40\xd2\x2a\xae\x51\x9f\xeb\x4a\xdd\x2d\x2f\xb6\x3a\x78\x77\x56\x28\x24\x14\x80\x9c\x7c\xcc\x03\x9d\xc2\x05\x78\x0a\xb8\x0b\xf7\xd6\x10\x13\x0b\x26\x0d\x8b\xc0\xf4\xb1\x83\x6f\x33\x75\x4a\x6f\xea\xa6\xe8\xfc\x7b\xab\x73\xa7\xd2\xb2\x5b\xa1\xed\x73\xa0\xb1\x8c\x75\x75\x10\xa6\xf6\x89\xc5\x38\x2f\xf8\x75\xa9\xc8\xf2\x09\x21\x74\xd2\x13\xd4\xb5\x9a\xc9\xd0\x4e\xb4\x11\x43\x07\x65\x1d\xd7\x31\xaa\xce\xd4\xee\x54\xb7\x1e\xba\x6c\x85\xf0\x9f\x95\xe5\xe6\x4a\xf3\xeb\xe6\xb3\x92\x47\xd5\xd1\xb7\xdf\x4a\x82\x77\xa2\xed\x2b\xf2\x05\x24\x2b\x0b\xcb\x40\x96\x97\x7d\x50\x90\x55\x6a\x18\xa3\xf8\x32\x2e\x74\x65\x1a\x15\x5c\x95\x88\xb2\x0b\x8b\x09\xe9\xe9\xd2\xa8\x84\x87\xfa\x4a\x98\x15\x62\x6c\xb9\x33\x4f\x7c\x7d\x01\xcd\x51\xf5\xc5\x33\x82\x6f\xbc\x03\xe0\x51\xe6\xa9\xd5\x29\x75\x7d\xde\x5e\x9b\x0e\x5b\x01\xb2\xe0\x68\x1d\xa4\xdd\x69\x71\xdc\x4a\x1d\x94\xe4\xb9\xce\x02\x51\x39\x30\x11\xfc\xfe\x10\xb3\xb7\x8c\x4c\x34\x78\x27\x84\x2e\x69\xc3\x4c\x06\xfc\xfa\x41\xb7\xcf\x22\x04\x27\x6d\x98\x18\x42\x67\x8a\x96\x70\xa0\x6f\x88\x69\xd7\x5a\xaa\x6e\xab\xe3\xf4\x9a\x8a\x4b\xb0\xa6\xec\x84\xaa\x62\x68\x4e\xd8\x97\x43\x3b\x4d\x80\xef\xb6\xa9\xf7\x8a\x69\x85\xd1\xcb\x73\xd8\x6a\xbc\xac\x7b\x70\xce\xfe\x80\x89\x42\xe0\x28\xa5\x4f\x99\xa0\xfd\x3a\x3b\x20\x3a\x93\x14\xbc\xf6\x8d\xea\x48\x2e\xd4\x69\xce\xea\x89\x73\x69\xe9\x85\x5c\xbb\x8a\x00\x78\x72\x88\x28\x21\xc9\x92\xa0\xef\x29\x37\x73\x7a\x65\xce\xce\xee\x20\x8f\x9d\xa9\xa4\x2c\x17\x90\x0f\xc0\x85\xa7\x00\xe7\xc8\xb4\x18\x72\x70\x06\x4f\x58\xa4\x2e\x51\xb2\x34\x03\xe9\x30\x70\x3c\x63\x3c\x56\x28\xb3\xb3\xd4\x85\x94\x7d\x69\x77\x92\xa7\xde\x95\xd9\x27\x02\x6a\x34\xe8\xa3\x84\x0a\xaa\x45\x3f\xbd\x1c\x47\x05\x9c\x4e\x67\xbc\xcf\xe3\x77\xf2\x14\xdb\x0d\x74\x67\x10\xc4\x9e\x35\x94\x68\xfd\x1b\xf3\x3c\xbe\xc6\x66\x7f\xb6\xb5\xdb\xed\xf4\x22\xae\x36\xae\xce\xf6\x48\x35\x71\xf1\xee\x9e\x05\xa3\x48\xb7\xd5\x7d\xb9\xca\xd3\x7c\xdc\x4e\x7f\xc8\x61\x3e\x46\xf3\x73\xc9\xcd\x94\x78\x7e\x50\x54\x59\xeb\x60\xbb\xd3\x3d\xdb\x9b\xdf\x50\xdd\x50\x1b\xd5\xec\x63\xc9\x41\x18\x4c\xea\x71\x32\x75\xb9\x6a\x01\x94\x0d\xea\x6c\x99\x4a\xc4\x3f\xae\x1f\x6e\x7c\x5f\x57\x22\x12\x5a\x32\x2f\xa3\x9b\x33\x2e\xd4\x17\xbc\x86\x62\x93\xb3\x23\xad\xbf\x97\x8f\x4f\xa1\x05\x7a\x82\x7a\xff\xd3\x5c\x00\x25\x8f\xf0\x55\x67\xe1\x9d\x94\x09\x43\x1a\xa4\x13\x8d\x1e\x15\xbe\x0b\x85\x15\xd1\x16\xf4\x05\xd0\x61\x33\xed\xe9\x69\x65\xaf\x62\x6b\xe4\xef\x8e\x2c\x71\x04\xd3\x74\xb2\xea\x48\x86\x0a\xd0\x82\x03\x40\xbe\xb7\x65\xd8\xdd\x90\x75\xa8\xa7\x9d\x1c\x87\x04\x2d\xa5\xab\xda\xae\xb9\xe9\x53\x37\x33\x5d\x29\x3b\xdc\x6b\xb2\xdd\x9b\x30\x0d\x09\xcd\x99\x6e\xff\x4c\x67\x70\xb7\xdf\x41\x91\x9a\x85\x3f\x6a\xc4\xf6\xcc\xa3\xfa\x94\x37\x85\x30\x1d\x12\xe2\xd8\x54\x57\x0d\xad\x56\xae\xe9\x65\x1b\xd9\x11\x6b\x11\x89\xd3\x8a\x6a\x87\xb6\xb4\x90\x5d\x93\xcb\x37\x8a\x02\xca\xed\x56\xcb\xae\x25\xf5\xa3\x10\xcf\x27\xa3\xd1\x6b\xc9\xa3\xbb\x2c\xbb\x56\x37\x65\xcc\xaa\x5f\x7b\xfd\xf0\xb0\xf6\x3a\x3d\xa1\x90\x2a\x6c\xa9\x10\xe1\x05\xe2\xdf\xd5\x30\x1e\x71\x56\xab\x69\xa6\x56\xea\x62\x58\xce\x4b\x64\x61\xf1\x41\x91\x51\xe7\x1d\x69\xf9\xa4\x0e\x89\xeb\x47\x89\x76\x5e\x3c\x28\xb2\x55\x5b\x49\x35\x40\xc0\xe4\x1d\xba\x63\x2c\x93\x3a\x21\xb5\x28\x1a\x5c\xa3\xa5\xc3\x3a\x9d\x41\xda\x85\xc4\xe7\x45\xab\xcc\x2a\xd0\x72\x9b\xad\x61\x0a\xa0\x0e\x5b\xa7\x4c\xf4\xc4\x49\xad\x7a\xb7\xb8\x21\xaf\x76\x7f\x54\xf1\x68\xab\x4f\x1f\x07\xe9\x25\xfa\x31\x58\xc1\x56\xad\xa8\x87\x3f\x6a\xfb\x42\xc5\x29\x29\xc6\x72\x2b\xe5\xbc\xf8\x03\x13\xa2\x3c\xec\x94\xf4\x1e\xf9\x3b\xdc\x9c\x02\xa5\x1a\x24\x1a\xb8\x3d\x8b\xa0\x9e\x89\xc9\xf3\xcd\xa9\x0c\x30\x0a\x7d\xd2\xb7\x63\x37\x76\xb7\xb7\x7b\x1b\x87\x5b\xbb\x3b\x18\xc1\x37\x4e\xac\xa5\xa4\xe9\x9a\xd2\xd1\x88\xf7\xa5\x1f\x9a\x0c\x96\xe1\xd4\x36\xb9\x00\x4c\x61\x1a\x3b\x83\x80\x58\x5c\x24\x4f\x4e\x5e\x03\xc8\x59\x54\x06\x40\xed\xd9\xe0\xe8\x2d\xcf\x83\xde\x71\x30\xa5\xe4\x10\xff\x8d\x89\xd5\xc4\x0c\xe2\x13\x18\x82\xb6\x58\xa5\x30\xb2\xc3\xf4\x2d\x4f\xb6\x63\xe5\xc1\x55\xd1\x94\x13\x74\x9b\xcc\x6d\x48\x53\x4f\xcd\x08\x04\x5f\x86\x4b\x03\x6f\x53\xa0\xda\xcb\xd8\xc9\x18\xa5\x9a\x99\xde\x45\xab\x83\x65\x77\xe1\x05\x5f\x6d\x3b\x8c\x7b\xf8\x80\x11\x39\xa1\xe4\x1d\x94\xf0\x78\xb0\x53\xfc\x2a\x61\x50\x68\x2e\x6e\xff\xd8\x3b\xfc\x7e\xf7\x95\x46\x4b\x1f\x4a\xdb\xa7\x0c\x1f\x0a\x29\xaa\xd1\x82\x74\x89\x60\x86\xd3\x29\xab\x94\x83\x2f\xf7\x98\x5f\x02\xad\x3e\x47\x7b\xc4\xa1\xbd\x02\x99\xfc\xe8\x64\x0d\x6d\x8e\x81\xb9\x5c\x46\x5d\x96\xbe\xd5\x0c\xe4\xcf\xf5\x44\xf9\x03\x33\x02\xdf\x21\x2d\xba\x80\x3b\xc9\x46\xf2\x9e\xc7\xeb\xfd\xed\x5a\x70\xb6\x16\x75\x97\x17\xcf\xba\x2b\x8b\xfd\xee\xe3\xa0\xce\x02\x21\x36\x76\x5a\x2d\x75\x23\x0e\xfd\xf3\xa2\xac\x3f\x84\xa4\xee\x02\xfa\x24\x1b\x35\xe9\xab\xca\xbb\xcf\xa2\xe0\x38\x2a\x86\x90\xf7\xa0\xcb\x82\xfe\x97\x2b\xed\x01\x7e\xa2\xf5\x4b\xd9\xf4\x19\x46\xa9\xc0\xeb\xee\x26\x91\x9e\xa9\x71\x14\x0c\xf8\x88\x17\x3c\x38\xa9\x05\x67\xe4\xc8\x45\x5d\x51\xc6\x1c\xf5\x26\x70\xc5\xad\x75\x5a\x5c\xa3\x39\x64\x45\x1f\x8b\xf4\x3f\x0e\x76\x77\xa4\xfd\xec\xfd\x7b\xb6\x60\xf5\x2e\x4f\xb3\x42\x7f\x12\xc5\x87\x19\x3f\x47\x55\x5d\xcd\x55\x0b\x46\x06\x33\x29\x66\x51\x97\xb6\xe0\x5c\xf0\xa2\x16\xf4\x95\x77\x09\x29\x25\x65\x36\xb9\x24\x07\xa4\x4e\x2d\x10\x30\x03\x29\xfb\x05\xe2\x6f\x7f\x27\xdd\x2c\x3a\xad\x16\x9a\x0d\x72\x41\x9a\x7a\x83\x0b\xae\xab\xe9\x85\x57\xea\x41\xf4\xed\x59\x10\x36\x27\xb9\x40\x44\x99\x9e\x22\x88\x02\xb7\xbc\xd5\x2b\x6f\x4f\xa3\xee\x59\x10\x86\x38\xca\x48\x8d\xf2\x2c\xd0\xfd\x49\xd2\x82\x8d\x27\xc9\x8d\x10\x09\x07\xd3\xbb\xd5\x69\xb5\xfe\xfb\x7f\xfe\x9f\xff\xef\xbf\xff\x9f\xff\xfe\x9f\x41\xd8\x1c\xa6\xb9\xb4\xdd\x5c\x27\x8d\x06\x5f\x8e\x6e\xce\xfa\x36\x58\x9e\xf7\xa3\x31\x02\x95\xf4\xf5\xc9\x4a\xa3\x12\x74\xf4\xf9\xff\xf9\x7f\x05\xd8\x28\x47\x57\x81\xe0\xf3\x2f\x5f\xb5\xbf\x7c\xb9\x6c\x60\x22\x69\x20\xd0\x9e\x18\x68\xd4\x96\x14\x2d\xf7\x1f\x07\x9e\x09\x47\xef\x97\xca\x0e\x5c\x07\x75\x72\xa7\x83\x8e\x2f\x98\x7e\xa3\xf9\xbe\x31\xf6\xee\x42\xea\xd0\xd4\xf1\x03\x46\x25\x99\x1a\x0a\x4d\x47\x21\x2e\xc7\x68\x43\x3a\x95\xcf\x70\x3c\xae\x0a\xd3\x26\x43\x00\x69\xd8\xea\xc3\x56\x6e\x98\xd2\x7c\xa0\x35\xc8\x38\x27\x32\x34\x31\x20\xcd\x4e\xe3\xe0\xd8\x9c\xe6\x4b\xff\xe0\xc9\xfd\x40\x2f\x50\xaf\xe7\x79\x7c\x91\x98\x9c\xa0\x11\x3c\x57\xc5\xa3\x93\x85\xec\xf7\x6e\x02\x57\x04\x71\xdf\xc4\xad\x58\xdb\xc7\x48\xac\x0e\xbf\x7f\x3f\x25\x22\x80\x8c\xf5\x04\x02\x8d\x8a\x6b\x9c\x66\x03\x9e\xb1\xf4\xdc\x18\x94\x73\x56\x13\xfb\x9e\x9d\x4d\xf0\xbc\x02\x8f\x47\x0d\x5a\xeb\xa4\x39\xd8\x64\xed\x77\x76\xd6\x61\xcb\xec\xb6\x6e\xbf\x76\x22\xaa\xfc\x7e\x0b\x77\xb8\xf5\x39\x9c\x59\x6b\x79\xfe\x87\xaf\xe1\x56\x91\xf7\xc6\x96\x03\x0f\x4f\x70\x82\xb3\xa0\x6e\xab\xda\x70\x86\xf8\xb8\x6e\x5e\xd1\x86\xe0\x50\x50\x8b\x1d\x76\x94\x96\xb0\xce\x60\x24\x2b\xec\x36\x0c\x9b\x67\xb0\xdd\x97\xb5\x39\x42\xe7\xf9\x31\xd3\x68\xf2\xe1\xca\xdd\x80\xee\x25\x64\x8e\x07\xbc\xe0\xd9\x65\x9c\xc4\x79\x11\xf7\xf5\x1e\x91\x53\x5e\xfb\xe9\x99\x9e\x62\x65\x92\x20\xa9\x6a\x5f\x9a\xc7\x69\xd1\x90\x93\xb4\x01\x74\x4a\xcb\x01\x4a\xfa\x91\x72\x88\x91\x10\xa2\xd1\x78\x18\x9d\x71\xe9\xa5\xd5\x1f\xf0\xf3\x8b\x61\xfc\xeb\xdb\xd1\x65\x92\x8e\x7f\xcb\xf2\x02\x99\xfe\xfa\x11\x42\x10\x12\x1c\x7a\x13\xa9\x7a\x2a\x44\x4f\x10\x7a\x84\x81\xfe\x10\xd2\xd3\xbe\x3c\xea\x0f\xb3\x13\xf0\xad\xce\x56\x1d\x96\x6e\xe3\xcc\x6d\x9d\xad\x87\xba\xad\x85\x2e\x7b\x2a\x50\xd7\x50\xb6\x5a\xa9\xf8\xcb\x30\x6c\xfe\x9a\xc6\x89\xe8\x81\xa8\xa0\xfa\x05\xf4\x98\x9e\x05\xe2\x4e\xa9\x15\x32\x8e\x38\xde\x8e\x85\xe4\xb9\xa5\x79\x34\x53\x38\xc9\xf9\xa0\xf1\x2e\xc2\x44\x58\xa0\x42\xc3\x5d\x29\x15\x3f\x06\x60\x91\xb9\xd4\xb1\xf1\x95\x75\xdb\xbd\x3d\x58\xf2\x6d\x5f\xd6\x6f\xbc\x74\x18\x5d\xe8\xab\xe8\x33\x44\xb0\x94\xfe\xf0\x1e\x4a\x8b\x29\x76\x2b\x08\xb0\xac\x2b\xad\x57\x6e\xcf\x5f\xc8\x43\x2d\xf7\x86\x99\x9d\xde\x82\xdc\x77\xc4\xf8\x75\x27\xf4\xe0\x5a\xc6\xc7\xf2\x8f\x6b\x8d\x2e\xea\x41\xd8\xec\xa7\x49\x3f\x2a\x6a\xde\xc2\xb5\x83\x30\x64\x1d\xbb\x02\x8d\x22\xa0\x26\x9b\x04\x85\x22\x9f\x7f\x75\xee\xf0\xbf\xe5\xea\x96\xb8\x1c\xbb\x09\x23\x45\xc8\x0a\x8d\x16\xb5\xb4\x74\x62\x19\x40\x17\x28\xd9\x7b\xff\xde\x3b\xc9\x68\x36\x3e\x50\x01\xa5\x0e\x8f\xde\xf2\x1b\xb1\x03\x0e\xe0\x0f\x8b\xc2\xa8\x9d\x70\x28\x50\x56\xe7\x0d\x5c\x57\x9c\xc5\x2f\x50\x9c\x61\x22\x8c\x0a\xb9\x40\xe2\x7c\x43\x94\x12\xfa\x69\xc1\xaf\x8b\x87\xf0\x4e\x31\x98\x9f\xe3\x62\x08\xa1\xbe\x54\x56\xab\x8d\x51\x9a\xe3\xed\x8d\x0a\x2b\x58\x34\x1a\xa1\xcb\x73\x1e\x9d\xab\x7b\x46\xa2\x57\x7d\xac\x48\x42\x03\x7b\x94\xc2\x69\xfa\x16\x98\xea\x4c\x5a\x66\xe4\x9c\x0f\x39\x5c\xb2\x73\xec\xcf\xb2\xeb\x95\x0c\x79\x3a\xd7\xd7\xcc\xce\x0b\x89\xc9\xd7\x6f\x9a\x9c\xe7\x3c\x4b\x75\x40\xe8\xfb\xc6\xca\x8a\x34\xa4\x69\x87\xba\xe2\x7b\x0d\x8a\x6e\xc7\x6f\x39\x6b\x3d\x62\x75\x76\x19\x8d\xcf\x13\x7a\x49\x19\x8f\x00\xd6\xb3\x0b\xfa\x92\x3d\x6a\x11\xc5\x74\x97\x12\x45\x0d\xcf\xd0\xc5\x0d\xf1\x1d\x0f\x74\x21\x64\x8d\x9d\xd6\x60\x0d\x5f\x76\x48\x86\xf3\x3b\x12\x53\xd5\xe7\x32\x15\x5b\x66\x6b\xe6\xed\xd1\xf2\x49\xe9\x72\xa9\xac\x3e\x46\x44\x46\x40\x6e\x0c\x15\x15\x6c\xd1\x59\xe1\xd2\xaa\xab\xe4\xe9\x94\xbe\xb7\xf5\x1b\xe5\x82\x8c\x6a\x48\x9d\xe5\x05\x1f\xd7\x35\x54\x95\xa6\xd8\x68\xbe\x68\xd9\x87\x9e\x85\x7a\x84\x62\x43\xd7\xe0\xa1\xee\x19\xed\x8a\x35\xda\x15\x6b\xb4\x75\x26\xa3\x95\xb6\x5a\x02\x74\x31\xe4\x2a\xd5\x4e\x9c\x83\x2a\xa6\xec\xe7\x2c\xcd\xf0\x92\x51\x94\x30\x58\x4b\x73\x55\x42\x86\x49\xd5\x9d\x66\x0d\x0c\xd3\xc5\x72\x40\x53\x1d\xff\x11\xae\x64\xd9\xd3\xb5\x40\x91\x07\x9c\x1d\x37\x98\x32\x73\x41\xc4\x5d\x1f\x0d\x70\x80\x84\x21\x09\xc5\xab\x2f\x37\xda\x65\x64\xf2\x79\xc5\x1f\x20\x81\x92\x29\x03\x37\xd7\x6c\x9b\x03\x1a\x54\x36\x6a\xaa\x06\x58\x09\x57\x17\x6a\x62\x79\xe0\xe3\x75\x81\x30\x15\x8c\x30\x84\xd3\x2f\x5f\xcc\x56\x58\x3c\x44\x23\x40\xa8\xb5\xa9\x84\xb3\x66\xd6\x5e\xae\xe8\x91\x68\xb4\x29\x2d\x28\x2a\x9d\x0f\xb8\xde\xb0\x0e\x33\xdf\x56\x6d\x93\xaa\x96\x7d\x15\x66\x49\x47\x16\x8c\x17\x6a\xb3\x1a\x08\x36\x21\xfb\xab\xf9\xa6\x3e\x09\xda\x55\x17\xe7\xfc\x53\x64\x7f\xc4\x89\x1a\x59\xf2\xc2\x7c\x93\x02\xa3\xad\xed\xea\x84\x45\x52\xd4\xe8\x30\xf5\xea\xfe\x03\x44\xc1\x92\x5e\x29\xe8\x32\x73\x71\x70\xbe\xb8\x77\x10\xf9\x2d\x47\xd7\x0c\x8f\x97\xf7\x19\xcf\x8b\x98\xff\x9a\xb7\x94\x49\xa4\xf9\x6b\xde\x3a\x1b\xa5\x67\xad\xcb\x28\x2f\x78\x46\xdf\x23\x7b\xb8\x8c\xae\xb7\xe0\x6a\xe1\xca\xf2\x57\x4f\xbf\x7a\xf6\xf8\xc9\x57\x4f\x21\x34\x71\xf4\x36\x6a\xb2\xf6\xf5\xd3\x4d\xfc\x27\x36\xde\xca\xdf\x1f\x2f\x37\x96\x25\x8b\x8f\x72\x31\x6f\x8f\x9f\x28\xbe\xf6\x63\x9c\x48\x89\x11\x1f\x23\x08\xb6\xa6\x3e\xe7\x6f\xf9\x95\x28\xfe\x4c\x69\xa3\xd1\xa5\x40\xe0\xa7\x70\xbb\x1b\x49\x52\x5c\xc4\xd1\xe8\x65\x0c\x41\xf2\x9f\xae\xd8\xaf\x77\x04\xe8\x95\x67\xd0\xb1\xf6\xf5\xb3\xb6\x52\x69\xc1\xb7\x0e\xce\xd9\x83\x46\x00\x5f\x83\xe3\xe3\xeb\x95\x57\x01\x71\x59\xda\x49\x93\xf5\x83\x8d\xad\x2d\xd6\x65\xad\xa3\xbf\x1f\x1f\xb7\x1b\x90\x48\xe5\x69\xef\xa4\xb5\x8a\x96\x9e\xa4\x81\x05\x20\xde\x0a\xa9\x79\xc0\xc7\x91\x4e\x88\xd8\x3a\x6a\x62\x5e\x94\x95\xe3\xe3\xc9\xe6\x66\xbb\x07\x3f\x4f\x96\x4f\x5a\x17\x00\x66\x7f\x73\x83\x3d\xfe\xea\x9b\x36\xcb\x75\x2d\x04\xb5\xfb\x53\x6f\x7f\x73\x7b\xf7\xe7\xd3\xde\xfe\x3e\x5e\x57\xde\x95\xd7\xb4\x3a\x0c\x63\xc5\xe0\x4d\xba\xab\x58\x68\x58\x32\x4c\x04\xb8\xdd\x8e\xb3\xb4\xcf\x73\x9d\xb4\x5e\x4c\xf9\x8f\x71\x32\xc9\x0f\x71\xae\x61\x09\x1a\x30\xf3\xca\x20\x33\x4a\x81\xea\xfc\x18\x15\xc3\x26\x3c\xe8\x28\x74\x59\x9c\x5c\x6c\x66\xe9\xe5\x86\x8c\x18\x60\xa2\xac\x9d\x93\xb7\xc8\xec\x1f\x3d\x3a\x4e\xd8\x23\x86\x19\xf2\x08\xa9\x95\x81\x95\xb5\x47\xae\x10\x27\xe3\x3e\x06\x4e\xc6\x5b\x9e\x42\x27\xe7\x51\x7f\xc8\xe4\x19\x2d\xc0\x11\xd3\x1a\xf5\x21\xb6\x26\x7a\xf8\x4b\x57\x0c\xf6\x33\x88\xb8\xff\x11\xbd\x8b\x0e\xc0\xb6\x84\x01\xe7\x5e\x6f\x1c\x34\x56\x74\x26\xbe\xd1\x4d\x1d\x80\x60\x34\x39\x25\x1b\x5c\xc5\xa3\x91\xe8\xce\x3b\x9e\x15\x2c\x62\xe3\x28\x06\x73\x40\x3e\xc9\xb2\xf4\x22\x2a\x38\x1b\x46\xa3\x77\x3c\x67\x35\xe8\x4c\x7a\x8e\x81\xe9\x00\x10\x82\x17\xf2\x06\x44\xa2\xce\xd5\x7a\x71\xd3\xcf\x3c\x14\xcd\xa7\xc0\x3a\x92\x0b\xc1\x3a\xf4\x08\xb1\x33\x97\x2a\x92\xdd\xeb\xc3\xcd\xc6\xf2\x93\xa6\x78\xd9\xc2\x99\x9e\xf4\xf3\x95\x01\x97\x27\xfc\x1e\x7f\x49\xc5\x70\xd3\x49\x81\x61\x82\x8e\xcc\xf1\x61\x3f\x9d\x24\x88\xcd\x2e\x63\x66\xce\xe5\x61\xaa\x1d\xa9\x5a\x2a\x5e\xb7\xa5\x16\x29\xfa\x26\x6b\x93\x78\x11\xb2\xda\xd2\x12\x75\x6c\xc3\xe2\x2f\xba\x2a\x3c\xc3\xe2\xa2\x84\xf0\xbc\xab\x22\x54\x2c\x2e\xb2\xca\x16\x81\x7f\x6f\x01\x7b\x66\xc3\xf8\x62\x68\x16\xa4\x0e\x76\x86\x02\x6e\xbe\xc4\x39\x5c\x02\xb9\x2e\xcc\x8c\x37\xa9\x0b\x03\xbf\x2e\xb2\x68\xbe\x3e\xcb\xac\xc2\x58\x63\x91\xb5\xaf\x37\x21\x74\x44\xb7\xab\xa3\x48\x80\x06\xbd\x9d\x5e\x99\xae\x10\x97\x71\x5c\x84\xe6\x78\x92\x0f\x6b\x35\x39\x78\x01\xe5\xf1\xe6\x66\x48\x42\x53\x18\xf0\xf0\x41\x07\xa6\x08\xdd\x30\x4a\xc4\xa8\xa3\x27\x22\x61\x93\xe4\x52\x5e\x69\xd1\x7d\x58\xc5\xcc\x5f\xd1\x78\xcc\x61\x5a\xe2\x1c\x71\x6c\x92\xc4\x05\xc6\xf8\x8a\x54\x7c\x46\x02\x10\xe7\x4c\x95\x13\xf3\x28\x76\x93\x3d\xd1\x90\xa8\x8a\x3c\x8a\xad\x51\x31\x62\x8b\x43\x01\x43\xc3\xe9\x6d\x34\x4a\xa7\x5c\xce\xf0\x2a\xa1\x50\x3e\x87\x77\xf2\xa0\xa4\x89\x7f\xae\x48\x0b\x6e\x5d\x81\x08\x10\x41\xbd\x25\xc9\x9e\xda\x77\x67\x51\x6e\x11\x16\xba\xc3\xa0\xc2\x61\xfa\x12\x8a\xd0\x3d\x06\x1f\x8c\xe1\x90\xb5\x9b\xcd\x95\xaf\x05\x3f\x17\xb4\x14\x29\x7c\xd4\x6c\xfe\x43\x70\xb2\xf5\x66\xf3\x3f\x65\xb1\x95\x27\xcd\xe6\x63\xa7\x58\xbb\xd9\xfc\x86\x0c\x02\x00\xb3\x25\xb6\xb2\xc2\x96\xd8\xd3\xaf\xd9\x23\xd9\x16\x7b\xce\x56\x9e\x84\xa5\xc1\x01\x0f\x8b\x06\xd1\x58\xde\xc8\x24\x46\x1e\x36\xe6\x19\xcb\xa5\x33\xc0\xe3\xe6\x57\x62\xb5\x24\xe3\x58\x81\x31\x1a\xfd\x29\x4d\x47\x79\x33\xe6\xc5\x39\x84\x3e\x1d\x16\x97\xa3\x56\x76\xde\x17\x05\x3f\x97\x00\x1a\x8f\x9b\x5f\x91\x79\x81\x16\xed\x09\xe1\xa3\x22\xaa\x0b\x3a\x0d\x41\x50\xf2\x3a\x5e\xca\x3a\x8c\x2f\x39\xa1\x44\x6f\x35\xbd\x81\xf2\x02\x82\x2a\xc5\xd6\x90\xa5\x20\x24\xd6\x02\xb6\x2d\x64\x21\x7c\x7e\xf1\x42\x5a\x88\xf0\x71\xa9\xeb\x94\xd6\x0d\x23\x7a\xa0\x4c\xa6\xea\x3a\xec\xec\x11\x8a\x0c\x00\x92\xbd\x15\xb0\xce\x20\x5e\xb1\xc4\x39\xdd\x35\xab\x01\x0b\x44\x58\xbe\x4d\x0b\x85\xdf\x8a\x2d\x6c\x37\xb6\xc4\x96\x43\xf6\x88\x29\x30\x12\xde\x12\x48\x29\x61\x79\x41\x09\xb6\x9a\x6c\x70\xca\x8f\x4b\xd9\x51\x6b\xbc\x79\xd1\x14\xf8\x9c\x5e\x46\x71\x02\x57\xe0\xd9\x28\x3a\xe3\xa3\x10\xb2\x1c\x00\xa0\x3d\x29\x7c\x11\x30\x80\x70\x0d\xa0\x06\x12\x92\xc2\xf5\x69\x16\x54\x48\x28\x07\x11\x1f\x40\x9b\x92\x21\xb1\x92\x12\xdb\x01\xf9\xa2\x92\xeb\xc8\x1d\x20\x87\x07\xc4\x04\x05\x92\x38\x91\x6c\x52\xf4\x5c\x71\x7f\x32\x66\xc2\xf1\x81\xb6\xa8\x90\x77\x86\xf9\xc9\x96\x49\x23\x51\x7f\x88\x11\x08\x91\x67\x34\x8d\x2e\x3a\x9e\x14\xdb\x46\x1c\x16\x84\x45\x33\x39\x59\x79\x0b\xa5\xc0\xf8\x1f\x5c\xca\x0f\x8a\x8c\x2b\x1f\x38\x25\x26\x6a\xb6\xa9\xf0\xc5\x30\xd2\x33\x94\x2c\x89\x9c\x69\xd4\xe1\x3a\xeb\x4f\xb2\x8c\x27\xc5\x4f\xc4\x51\xb0\xd5\x62\xdf\x47\xc9\x60\x84\x6d\xba\x14\x09\x07\xae\xe3\xb1\xb5\x31\x1e\x9b\xd5\x7d\x2b\x0e\x1b\x6d\x40\x8d\xf3\x28\x3e\x21\xbc\xd7\x2a\xf1\x1c\xc4\xdc\xd0\x4f\x72\xcb\xd2\x9c\x55\xb9\x14\xc9\x5d\x4f\x81\x18\x83\x9e\x6a\x09\x51\x75\xb6\x05\xfb\xf5\x0c\xcf\x55\xfc\xa3\x7d\x07\x49\xac\xc4\x94\x0c\x36\xf6\x36\x04\xb3\x40\x29\x54\x01\x75\x80\x50\xb9\x10\x82\x9b\xc3\xf9\xc2\x19\xe7\x89\x82\x62\x66\x7a\x33\x4e\xe2\x7c\x48\x66\x5a\xee\x10\xbc\xba\x4f\x24\xfd\x49\x32\xe2\x79\x8e\x36\x00\xb8\xcf\xdf\x54\x3a\x3d\xe9\x88\x9e\x37\x3a\x6b\x1a\x86\xe5\xbb\xde\x6a\xb1\x1f\xc5\x7e\x85\xcd\x23\x5a\x1c\xa5\xe9\xb8\x43\xc4\x2b\x67\xc0\xcf\x29\xc2\x52\xdf\xac\xf5\xd1\x08\x54\x89\xd2\xd4\xb1\xe7\x2c\x29\x0f\x5d\x5d\xb4\x6b\x8a\xa1\x0f\xe4\xc5\xd6\xeb\x82\x8d\xa2\x4c\xf0\xc1\x34\xe1\x1d\x23\xc5\x5d\x82\x86\x2a\xf4\x34\xaa\xde\xce\x85\x77\xb3\x30\xcf\x83\x7b\x2f\xba\x0c\x3c\xd5\x1c\x84\xbc\xb4\x63\x5d\xb2\xae\xbb\x69\x6c\x91\x41\x79\xbe\xc2\xf6\x15\xaa\x72\xce\xd9\x1b\xd8\x96\x6f\x18\x4f\xd2\xc9\xc5\x10\xa8\x0b\x7a\x7f\x4a\x03\x8e\x98\xb5\x2c\xc8\xd9\xf3\xa4\x1e\xbf\x90\x61\x7a\x8a\x94\x3d\xbf\xac\xb7\x5f\xe0\xad\xe2\x8b\x49\x94\x0d\x58\x74\x11\xc5\x49\x5e\x30\x1d\xef\xc2\x4c\x95\xbd\x5c\x7b\xa3\x49\xbe\x0b\x71\x64\x9c\x65\x5c\x92\x9c\x4b\x5a\xb2\x58\x83\x25\xec\x85\x64\x18\x35\xa9\x12\x37\x90\x8a\x84\xac\xe5\x87\x1a\x96\x2e\x7b\xec\x47\xc9\x85\xbc\x4d\x61\x6b\x7d\xa5\xb0\x89\x9a\x63\x62\xdb\x82\x1b\x79\xdb\x50\x96\x22\x81\x00\xda\x99\xf8\x0f\x5d\xfd\xe7\xb8\xf8\x4b\x4b\x8a\x4f\xe3\x6c\x58\x8b\x3f\xe7\x68\x89\x2f\x6e\xa9\x99\x6e\x57\x8c\xda\x16\x98\xf7\xf9\x38\xe3\x39\x4f\x0a\x39\x3d\x10\xee\xe2\x82\x27\x3c\x03\xda\x3f\x10\x0b\x1c\xe3\x19\x18\x12\x31\x29\x35\x12\xf9\x56\xa0\xc0\x6f\x90\x6a\x7d\x54\x44\x44\xb4\x35\x79\x51\xa4\xe2\xbc\xca\x5a\x8f\x58\x92\x0a\x25\x72\x80\x11\xea\x1e\xb5\x7c\x82\x87\x01\x2b\x88\xdd\x5b\xa1\x08\x01\x27\x59\x43\x8b\x47\x87\xd5\xde\x8a\x0d\x03\xef\x96\x50\x86\x59\xc3\x9f\x0e\x7b\xcb\x1a\xf0\x81\xca\xd8\x38\x15\xbf\xb1\xe7\xac\x08\x65\x22\x28\xb7\xa1\xdf\x50\x50\x61\x5d\xf6\x9b\x50\xef\x4b\xdf\x8d\x2c\x43\x8c\x00\x56\xa9\x19\xcc\x82\x4a\xd0\x35\xb1\x17\x54\x8b\x5f\x12\xd8\x61\x68\x77\xfb\x37\x2d\x7d\xa9\xd2\x54\xfe\x0a\xed\x3b\xb3\x7e\x85\x63\x56\x57\x7e\xb3\xdb\x94\x1c\x1b\xe4\x5a\x25\xcb\x7a\x37\x89\xfb\x5a\x20\x17\xe5\x06\x04\xa6\x2d\x17\xe0\xbf\xa5\x25\xbb\x7a\x25\x29\x93\x7b\x62\x55\x3d\x25\x25\x89\x53\x8e\x56\x1d\xf9\x56\xc7\x2c\xac\x16\xd1\x50\x8a\x1b\xd8\x96\x01\x10\x24\x73\x2d\x1f\x15\xe9\x76\x7a\xc5\xb3\x8d\x28\xe7\xb5\x90\x44\x1a\xb2\x6c\x56\x75\x99\x5b\x78\xa5\x17\xe8\x54\x35\x4d\xe2\x7d\x17\xd7\x11\xec\xaa\x4f\x90\xc1\x06\xbd\x34\x05\x3e\xb1\xae\x2c\x62\x68\x89\xec\x38\x2e\xb5\x65\x79\x6b\x16\x3c\x2f\x6a\x52\x18\x5e\x43\x7f\xab\x80\x2d\xc9\x1a\xea\x43\x47\x8a\xcb\xa5\x49\x55\x80\x71\x56\x9b\x81\x73\x81\xf1\x1e\x37\xbc\x3e\xc4\x91\xd8\xb4\x25\xb5\x53\x06\xce\x3c\x99\x51\x29\x9c\xac\xac\x7f\xee\x01\x85\xe7\xb6\xa2\x7b\x83\x4f\x87\xe3\x0b\xd9\x12\x0b\xdc\xa3\x13\x75\x67\x4f\x4d\xab\xbe\xfb\xe2\x3b\xa3\x88\x8b\xb0\xfa\x46\xad\x0e\x06\x07\xc1\xc8\x65\x08\xb8\x3a\xc4\x7d\x63\xfa\xd2\x02\x1b\xf0\x31\x4f\x06\x3c\xe9\xc7\x18\x44\x60\x3c\x39\x1b\xc5\x7d\x26\x93\xc5\x03\xc6\x9d\x61\xca\x1d\x1a\xf8\x84\x9d\xdd\x30\xd0\x7d\x31\xb6\xf2\x1b\xe0\x08\x45\x83\x27\xef\xde\x54\x86\x90\xab\xb8\x1c\x31\x77\x2c\xe1\x0b\x5e\xbc\x9c\xc4\xa3\x62\x2b\x99\x8a\x07\x2a\x44\x92\xae\xf7\xfa\xa0\x77\xba\x83\xf9\xaf\x5e\xef\x6f\x57\xd6\xc5\x23\xf3\xc6\x24\x1b\x3d\x20\xc0\x9d\x7a\x21\xc4\xcc\x59\x95\x1a\xd1\x68\x44\xd3\xea\x1f\x9a\x8b\x13\xd5\x57\xa0\x79\xd1\x28\x52\x75\x8b\xb0\x20\x57\x2c\xf0\x98\x43\xa1\xec\x86\x15\x6a\x65\xea\x49\xb4\xde\x37\x24\x04\x0b\x71\x78\x7b\x70\x24\xd1\x28\xd9\x92\x29\xe1\xa6\x6d\x7d\x95\x36\x8e\xa6\xe1\xdd\xbd\xaa\x5e\x69\x9a\x89\xf7\x01\x7e\x0c\x73\x26\xf1\x7d\xc8\x3d\x55\x95\x4b\x7f\x9a\x33\x82\xeb\x2a\x71\x9f\xdc\xbb\xf6\x39\xd7\x1c\x79\x72\x1d\x4f\x04\x2b\x3f\x6e\x99\x02\xcf\x45\x7b\x3f\x20\xe9\xfe\x50\x97\x9b\xbe\x38\xe7\x98\x58\xc0\x90\x8f\x5a\x00\xef\x74\x33\xdf\xf3\x68\x80\x69\x7f\x68\x19\xf9\xd6\x6c\x85\xbb\xdc\x92\x7a\xbd\xbf\x7d\x7a\xd0\x5b\xdf\xdf\xf8\xfe\x74\x6f\x7d\x7f\xfd\xc7\x03\xd6\x65\x81\xe3\x34\x1d\x54\x95\xa5\x41\x73\xcb\x80\x96\x58\xf0\x21\x23\xe8\x62\x5f\xe6\x8b\xa3\x5b\xea\x4c\x58\x86\xa7\xfa\x76\x4f\x88\x4e\x90\x5e\x70\x4b\x1b\x4d\xe0\x64\xef\xf8\x78\x09\x72\xfc\xe0\x88\x7f\x9b\xf0\xa4\x6f\xae\x93\xd5\xbe\x22\x15\x78\xd6\xe7\x49\x71\x20\xcb\x58\x4c\xff\xec\xa6\xd0\x17\xc7\x54\xa6\x7a\x05\xeb\x08\x3e\x62\x6e\x11\x8c\xe0\xed\xf9\xd0\xd5\x09\x32\x6a\xb5\xb5\xce\x97\x47\xc7\xc7\xc7\xc7\x83\xa8\x71\x7e\xf2\xfb\xca\x6d\xf8\xbb\x90\x97\xb0\xf0\x12\x0b\x6e\x43\xc8\x70\x15\x07\xc4\x58\x49\xfa\xf7\xca\x73\xfe\x24\x5b\x94\x1d\x24\xb7\x73\x94\x8d\x1b\xea\xbc\xde\xdf\xda\x48\x2f\xc7\x69\xc2\x93\xc2\xd4\x91\x72\x83\xf7\x62\x8d\x33\x54\x25\xbc\x99\x3e\x0d\x78\xce\x33\x69\xbc\xab\x14\x92\xf4\x59\x7e\x5c\x68\x71\x56\xac\x4e\x9d\x05\x8c\x88\xac\x38\x01\x5d\xf6\xd5\xea\xdc\x83\x40\xc8\x53\x87\x20\x0d\x3d\x74\x01\x19\xf5\x2f\x90\x47\xf6\xba\x5f\x36\x12\x60\xbd\x46\x23\xac\xdb\xd3\x3f\x4f\xa8\x06\x33\x4b\xe7\xc8\x69\x5a\x47\x0b\x41\x2d\xfc\xaf\x93\xf7\x5f\xae\xb4\x01\x25\x15\xf3\x57\x99\xb1\xa0\x77\xc1\x42\xd0\x61\xc1\x97\x2b\xcb\x01\xb8\x0c\x1f\x7f\x16\x1c\x7f\x06\x2f\x9e\xe2\x8b\xa0\x86\xdf\x9f\xc9\xc7\x10\x1f\xbf\x91\x8f\xff\x05\x8f\x4f\x7b\xf2\xf1\xcb\x95\xb6\x78\xb1\x14\xd0\xfe\xc8\x16\xed\x84\xd8\x34\xcf\x87\x1e\x0f\x94\x3b\xc2\xbb\xe2\x16\x32\xce\x58\x76\x4b\xb8\xb7\x96\x2c\x2e\x8c\x4e\x23\xe6\x45\x87\xe1\xc9\x1c\x6c\x8f\xb2\x9c\x1f\xd8\x77\x88\xe8\xd5\x72\x74\xc7\xf8\x6d\xc2\xb3\x1b\x12\xad\x93\x3e\x4b\x5f\xae\xa2\xc8\xe2\xb3\x09\xa2\x16\x7c\x56\xea\xd2\x62\x40\x5d\x39\x63\xe7\x56\xb6\x55\xb7\x8e\xd1\x8e\x6d\xe7\x4d\x95\x48\xd9\xb4\xd0\x2c\x9d\x98\xea\x6f\x42\xd5\xd5\xe5\xb4\xcf\xaa\x65\xa8\xd1\xdf\xcb\x60\x98\x8c\xb6\x4c\x80\xa8\x51\x74\x03\xaa\x01\x4b\x6c\x06\x2d\xcd\xb2\x71\xbc\xe5\x37\x1d\xba\x5b\x6b\x00\xb0\x99\x0f\xe3\xf3\xa2\x16\x86\x75\xdb\x0c\x01\x2e\xeb\xe5\xd2\xa8\xa3\x75\x83\x90\xa4\xbd\xbd\x2d\xd9\x83\x6e\x4b\xf8\x3f\x19\x0f\xa2\xa2\x7a\x31\xe9\xa2\x15\xc3\x38\x6f\x4a\x2d\xc2\xf8\xd1\xe0\xa2\x94\x50\xa2\x46\x4b\x2b\x64\xb0\xb0\xe8\x5d\x34\x8a\x45\xdb\xeb\x25\x8f\x3e\xd3\xfc\x38\xca\x73\x0e\x78\x88\x79\x68\x09\x3a\xe1\x27\xf6\x9c\x7c\x2b\x05\x56\xd9\x49\x0b\x65\xf2\xd4\x0e\x70\x81\xdd\x0b\x87\x83\x13\xd9\xa8\x52\xfc\x36\x9e\xec\x3a\xf8\xfb\x18\x2a\xd7\xd9\xdb\x38\xb9\x4b\x90\xf7\x6a\x5e\xa9\x02\xba\xcb\x06\x3a\x54\xfc\xaa\xf9\x79\xbd\xec\x44\xa8\x26\x5d\x21\x8e\xe8\x53\x07\xfe\x7f\xac\x6e\xce\xdd\xd6\x89\xc4\x71\xb7\x78\xed\x96\x30\xe0\xc4\x6d\x7f\x8b\xb4\x14\x4f\x89\xc4\x83\xb9\x70\x88\x6e\x73\x32\x54\x3a\x75\xbb\x23\x77\x0e\xd4\x3e\x72\x5c\xda\xc0\xb7\x1a\xde\x61\x78\x09\x75\x7d\x50\x97\x62\x5d\xd9\x72\xb7\xcb\x02\xb8\xc4\xc4\xd6\x10\x58\xf3\x2d\xbf\x61\x1d\xf2\x15\xaf\xa4\x9b\xef\x58\xbf\xc3\x8e\x74\xf1\x3a\xfd\x72\x62\x2b\xee\xa2\x49\x2b\x84\xf4\x1b\x07\x7b\xaa\x73\x8b\xc3\x15\xcb\x31\xef\x37\xaf\x86\x51\x71\x75\x01\x47\xcb\x9f\x83\xb8\x7b\x1e\xf5\x41\x45\xc5\xdb\x7f\xb8\x86\x5e\xd4\xb4\x15\x40\xbd\x66\xee\xbd\xbd\xd6\x23\x38\x6a\x33\xae\xb8\x46\x5b\x93\x28\x58\x0d\xb7\x5e\xc6\x48\xea\xbb\xea\x4f\x2c\xfe\x02\x42\x3c\x18\x07\xd3\xb6\xdf\x9d\x56\x66\xd9\xd5\xb9\xfe\xd4\x8a\xc7\x40\xfd\x89\xc9\xcd\xb6\x8a\x94\x7d\x61\xd1\x43\x16\x56\x69\x4b\x7f\x82\xc7\x1d\xf8\x6e\x25\xa0\xa9\x4b\xc7\xfe\x8a\x1d\x19\x15\xb3\x76\x64\x5d\xd9\xd8\xa0\xa7\x1d\xf5\x87\x7c\x8d\xd4\xf3\xf5\xfe\xb6\x73\x0d\x89\xb5\x1e\xc9\xa0\xd7\x8f\x5a\x3a\xda\x4b\x99\xd4\x76\x3c\xef\x8e\xdd\xa0\xa2\x30\xef\x0b\x76\xda\x28\x92\xd2\x5a\x29\xa3\x50\x8e\x9e\x8c\xcc\x63\xff\x4a\x94\x05\x8c\xb1\x69\x56\xb0\x8a\xa0\x5d\x6c\xb6\xcb\xad\xdd\xc2\x54\xcf\x5b\xc2\xbe\x67\xfb\xd9\x3a\xc7\x04\x16\x36\xd8\x43\xad\x69\x73\x9b\xa1\x18\x8e\x85\x5d\x23\x0f\xeb\xda\x90\xdc\xee\xd1\x28\xaf\xea\x5f\x4d\xa5\x21\xd2\x50\xb0\xc3\x16\x20\xd9\x6b\x1d\x49\x55\x57\xd6\x29\x85\xee\x53\x7b\x61\x6a\x25\xa8\x43\x2b\x78\x18\x64\xef\x7a\xcc\xfb\x05\x1f\x68\x35\x02\xcf\x7d\xe5\xce\x5e\x09\xca\xf3\x24\x78\x3f\x8a\x30\x28\xb7\xc0\xe8\x25\x1d\x5d\x62\x41\xa0\x23\x73\xe2\xc8\xc8\x17\x2a\x8e\xd0\xcc\x66\xe8\xe2\x04\x76\x70\x41\xae\xe3\x04\x28\x4d\xa8\xf2\xb5\xef\x5e\x25\x80\x45\xea\xce\x8c\xaf\x13\x40\xb7\x65\xbb\xa2\x2c\x5e\xab\xb1\x1b\x75\x5d\xa9\xca\x12\x8b\x16\x56\xd4\x26\x00\x82\x07\xe1\x6e\x31\xa5\x0b\x5b\x83\x77\x2a\x4b\x53\x5b\x46\x93\x5f\xd3\x1f\x30\x09\xd3\x72\xc8\xb0\x1b\xea\x67\x89\xe4\xf6\x2c\x4b\x60\x0e\x39\xa6\x01\x4c\xaa\x29\xb5\x15\xc2\xe4\x38\x21\x46\xca\x5a\x15\xbc\xba\xc9\xd7\xe4\x14\xa1\x29\x8e\xc6\x63\x9e\x54\x65\x4a\xf2\x32\xb1\x41\x7a\xe9\xb2\xaf\x06\xba\xd7\x01\xf3\x81\xbf\x08\x75\xc4\x17\xb5\x24\xba\x54\x41\x5c\x89\x4a\xe0\x15\x08\x6b\x2e\xc7\xd1\x77\x16\x2a\x85\x14\x2a\x15\xd1\x48\x55\x28\x7f\xf8\x30\x08\xbc\x86\x2c\xfc\xf5\x21\x2e\xd6\xd7\x44\x5f\xca\x2e\xb7\xf5\xd9\xf3\x8a\xe1\x0d\x1e\x3a\xaf\x08\x05\x94\x47\x19\x2f\xa1\x63\x45\x40\xbe\xbc\xcf\x64\x2e\xdf\x73\x32\x6d\x06\x6e\x4d\xad\x7d\xaf\x0e\x52\x80\xca\xe9\x9d\xa2\xd5\x39\xaa\x9b\xad\x68\x38\xb1\x9a\xe5\x47\x79\x31\x00\xc4\x3c\xb1\x15\x21\xbc\x84\xaa\x28\x94\xb0\x3e\xaf\xc9\x5b\x01\xcb\x86\xf8\x60\x6a\x4d\x54\xf3\x6c\x5b\xc1\xfd\xd7\xf7\x82\x3f\x78\xd3\x5c\x70\x88\x4a\x61\xdf\x69\xbe\xe0\xc5\x07\x59\x57\xb3\x50\xd3\x56\xf6\x41\xeb\x27\xbd\x0c\xfd\xeb\xe7\xbb\x02\x32\x6b\x21\xb5\xa1\xc2\x2a\x42\xef\xba\xd8\x26\x1e\x99\x41\x7e\xee\x05\x5b\x1f\x8d\x3e\xc0\x9a\x45\xa3\x91\x5c\xb6\xf5\xd1\xc8\x5e\x39\x41\x8d\xff\x45\x17\xaf\x9c\x79\xe7\x4f\x5a\x52\x63\x03\xf1\xad\xeb\x6c\xdb\xdd\x1c\x4b\x3b\x8c\xf2\x87\xae\xab\xcc\x76\x34\x8c\x72\xb2\xa2\xc3\x28\xff\x57\x5d\xce\x0f\x46\x4b\x97\x96\xfc\x9b\x50\x47\x34\x70\xd7\xc6\x24\xeb\x98\x67\x69\xf2\x87\x93\xc9\x1c\xc9\x64\x6e\x91\xc9\x5c\x92\xc9\xfb\x8b\x14\x7f\x2c\x17\x3c\x4f\x27\x89\x2f\xb5\x49\xf5\x8a\xbe\x83\x58\x88\x46\x08\x99\x61\x0e\xa5\x36\xd0\x3b\xef\x5a\x65\x78\xb1\x77\xe4\xaa\x8b\x24\x37\x36\x66\x38\x39\x11\x60\x88\x7e\xee\xdb\x68\x58\xfc\x97\x95\xee\x6c\x30\x3d\x41\x04\xcf\x48\xdf\xb4\x9d\xe7\x5d\x34\xf2\xea\x10\x16\x66\x82\xc1\xc8\xe9\x4e\x95\xb6\x20\xa6\xf9\x03\x88\x77\x79\x9a\x3d\x1c\xb1\x65\x58\x2a\xf1\x4b\x51\x3b\xcd\x0a\x3b\x6b\xda\x07\xc5\xce\x56\x0b\x4f\xdb\x3e\x17\xed\x28\xcf\x95\xbc\x80\x2b\xbf\x71\x82\x31\xee\x78\x72\x11\x27\x9c\xe4\x21\x02\x3d\xc7\x20\x8c\xd4\x7b\xdc\x46\xa5\x2d\x2d\xe6\xf9\x16\xca\x60\x50\x8c\x26\x19\xaf\x30\x26\x4b\x14\x36\xc5\xd1\x3d\x8a\x3c\x3f\xc7\x07\x8d\xd3\xe6\x93\x17\xb1\xe1\xf3\x91\x29\x64\x70\x1b\x1a\xa2\xbd\xc4\xa6\xac\x37\xcf\x69\xc7\xad\x4f\x4e\xba\x6f\x4a\x4d\x69\x31\x24\xa9\x2f\x8c\x4d\xd2\x63\xbd\x20\x7b\xc6\x9e\xb4\xb6\x34\x6e\xd9\xaa\xb8\xeb\xc0\xe8\x6e\x05\xab\x33\x72\x60\xdd\x2e\x19\x88\xb3\x35\xac\x26\x1e\x2c\x0d\xcb\x90\x2f\x74\x47\xc8\x57\x04\xb1\x55\x5c\x98\x7e\x34\x1a\x9d\x45\xfd\xb7\x18\x68\x40\x45\x15\xd0\xe6\xcb\x07\xf2\xcc\x33\x41\x07\x36\x55\x9b\xf2\xaa\xbc\x6a\xb2\xee\xb3\x66\x4e\x0b\x0e\x50\x67\x8f\x67\x1d\x4c\x4d\x39\x8d\xaa\x64\xc3\x5e\x02\x4c\xcf\xa0\xac\x51\xd4\x08\x4d\xac\x33\x62\xb9\xa6\x3b\xff\x76\xde\xb5\x7a\xcb\x6f\x2c\x71\x49\x3c\x93\x55\x12\x8f\x35\xf7\xd0\xd9\x13\x2f\x4e\x9b\xdb\x64\xa8\x25\x1d\x4c\x6c\xbe\x5e\xa0\x61\x9e\xf6\x03\xdf\x90\x9e\xe0\x8b\xfb\xf4\x45\x5a\xfd\xe7\xef\x8d\x5c\x07\xda\x1d\x6d\x00\xd6\xfd\x91\x6f\xee\xd3\x21\x59\xd5\x04\xf3\xbf\xad\xb3\xdf\x4b\x41\xae\x58\xf5\x41\xc3\xac\xfc\xc6\x3a\x49\x4b\xb5\x31\xc8\x44\x86\xad\x2a\xa3\x0f\x92\x66\xf7\xa2\xa9\x42\x04\x7b\x03\x96\x79\x59\x60\x89\xfd\x61\x4a\x8e\xf3\xb8\x8f\xe1\x60\xce\xf8\x30\x7a\x17\xa7\xd9\x5c\x83\xd1\x21\x8a\xe9\x69\x96\x7a\x57\xb3\x9c\x7c\xef\x4c\x47\x7c\xea\x52\x79\xf3\xdb\x5b\x7f\xbe\x8d\x3f\x63\xdb\x53\x65\xc9\x3d\xee\x05\x26\xb2\xc4\x82\x6e\xc0\x96\x98\xfb\x91\xda\xb8\x6f\x9d\x94\x8a\x78\x4e\x8c\xe7\xeb\x53\xb1\xce\x76\x5f\x74\xe7\x7e\xf6\xa1\xd1\x71\xf2\x45\xed\x77\x19\xb8\x59\x25\x6d\x82\xfc\x58\x83\x0e\x5b\x70\x1c\x38\x55\xc2\x25\xa7\x91\xce\x14\x03\x28\x3d\x86\xfb\x39\x8b\xc6\xec\x0d\x78\x80\xbd\x01\x8e\xae\xc2\xd5\x99\xa0\x6b\x24\x57\x56\xe9\xd0\xce\xc2\xd5\x39\x12\xf7\x3d\x79\xfa\xd5\x71\x02\x42\xa6\x33\x8c\xc5\x45\x65\x3a\x56\x2e\x6a\x56\x44\x1b\xf3\x59\xbb\xa7\x79\x8e\x55\xca\xb3\x56\x0a\x7e\xa7\xe7\x11\xd7\x4b\x1f\x61\x41\xa3\x94\xc3\x8a\x67\xf4\x73\x47\xe6\x6a\x1f\x0c\x2a\x8e\x15\x65\x90\x6a\xef\x08\x0a\xda\x61\xee\xd1\xf0\x7e\x96\x0e\x6e\xea\x6c\x88\x9d\xb6\xfd\x22\x3c\xec\xd3\x16\x89\x9c\x43\x43\xcc\x3e\x45\x05\xa6\xca\xf3\x2b\xe4\x7b\x83\x1b\x79\x77\xb0\x29\xfe\x2e\x9d\xc5\xa8\x5c\x2b\xe2\x23\x9a\xe3\xcb\xc8\x68\x83\x64\x6a\x20\x0a\xae\x7a\x5c\x03\xca\x2d\x97\xa6\x46\x3f\xa9\xec\x0e\xea\x9b\x2d\x8a\x49\x85\x43\x96\x6d\x0e\xa3\xbc\x16\x80\x53\x6a\x52\x34\xc4\x7a\x07\xee\xa0\x48\x1f\x84\x42\xec\x94\xae\xb3\x20\x1a\x0b\x41\x10\xc8\x60\xeb\xba\x71\x75\x75\xd5\x38\x4f\x33\x50\x18\xa4\x47\xfe\x2a\x04\xcc\xe0\x45\xf7\xf5\xe1\x66\xe3\x59\xe0\xf6\xe7\xd6\xe9\x1e\xae\x01\xfa\x33\xc8\xb3\x94\x52\x87\xc4\x04\x76\x2a\x3d\x4e\x6b\xed\xba\x8a\x6a\x0b\x33\x6d\x3b\xa5\x90\x01\x4d\x07\xa1\xe6\xd3\xe9\xae\xdd\xff\x5b\x8f\x54\xcb\x00\x49\x91\x14\xda\x47\x8a\x9a\xbe\xe1\x96\x73\xd3\xcf\x3a\xf2\x10\x50\x3d\xef\x25\x82\xbb\xd2\x9f\xba\x34\xfa\x01\xd7\xe8\x54\x70\x93\x8f\xc5\x8f\x5f\x06\x7c\xb8\xbf\x23\xff\x7d\x03\xd9\xde\xdf\x91\xff\x6e\xe9\x22\xac\x70\xa0\xf1\x94\x94\x11\xd2\x11\x5b\xba\xf3\x8f\x75\x85\x07\x5c\x20\xb8\xbf\xb7\xfc\x5c\xae\xf2\x91\x8a\x3d\x3b\x75\x40\x58\xca\x54\x12\x2a\xff\x66\x96\x5e\x56\x77\x09\x82\xe9\x9d\x67\xe9\xa5\x71\x47\x87\x58\x20\x77\xca\xe5\x06\x35\x74\x00\x3e\x15\x0d\x68\x6a\x7d\x15\x27\xa9\x51\xa4\x8d\x28\xef\xc7\xf1\x87\xbb\x50\xe1\xec\x66\xef\xe5\x07\xb5\x2b\xae\xf8\x59\x73\x92\x8d\x1a\x28\xa3\x36\x50\x48\xfd\x50\x97\x28\x10\x08\xe6\xd7\x41\xbc\x47\x7c\x6d\xbe\xde\xdf\xf6\xf7\xb5\x7c\x18\x2c\x1d\xaf\x9d\xb7\x65\xef\x6d\xfa\x55\x79\x70\xfb\x41\x29\x6a\xf6\x01\x5c\xd0\x45\x03\x73\x79\x8b\x07\xaf\xf7\xb7\x4d\x58\xeb\xaa\x28\x4a\xe3\xf4\x4a\xbd\x1e\xa7\x57\x26\xa2\xfe\xce\x4f\xeb\xdb\x5b\xaf\x4e\xd7\x5f\x1f\x7e\xbf\xbb\xbf\x75\xf8\x0b\xeb\xb2\x60\x2b\x01\xa3\x2f\x8b\x26\xc5\x30\xcd\xe2\xe2\x46\xb9\xd4\xab\xd2\x07\x1b\xdf\xf7\x7e\xec\xd1\xa2\x79\x7f\xc8\x2f\xb9\x5b\xee\xfb\xdd\x83\x43\x5a\x6a\x98\xe6\x85\x5b\x66\x6f\x77\xdf\x2a\x03\x44\x51\xf7\x6f\x7d\x7b\xef\xfb\x75\x70\x2e\x5e\x6f\xfc\x67\xd4\xf8\xc7\x49\x6b\x95\x7c\xd8\x79\xfd\x63\x6f\x7f\x6b\x03\xbe\x1f\x1f\x0f\x96\x1a\x4d\xa7\xd4\xab\xad\xef\xb6\x0e\xd1\x4d\x7e\xa0\xde\x7d\xdf\xfb\xdb\xe9\xc1\xe1\x3a\xb4\xda\xfa\x7b\xad\x7d\xfd\xbe\xfd\xb7\x50\x7d\xdc\xdd\xc0\xd7\x47\xed\xc6\xd3\x93\xa5\x2f\x34\x1c\x48\xe3\xdd\xfa\xbb\x68\xe4\x0b\x02\x08\xcb\x1e\x1f\x0f\xd6\x1b\x9b\x51\xe3\x5c\xd6\x98\x11\x3f\x58\xc8\x2a\x59\x3a\xc2\x44\x53\x08\x6a\x73\x77\xff\xe5\xd6\xab\x57\xbd\x1d\x98\xb2\xd3\x8d\xdd\x57\xbd\xd3\xbd\xdd\xad\x9d\x43\x39\xb4\x49\xbb\xdd\x6e\xe3\xcf\x37\xf8\xb3\x8e\x3f\xaf\xd8\xe7\x5f\xb6\x3a\x6b\xdf\x82\xc7\xfd\xc9\xc9\x07\x6e\xfd\xb4\xf7\xb7\x8d\xed\xd7\xaf\xb6\x76\xbe\x3b\xdd\xeb\xed\x6f\xf4\xe6\xea\xcf\x83\xbb\xb3\xdd\x5b\x87\x26\xd7\x77\x5e\x9d\x1e\xee\xaf\x6f\x6d\x8b\x87\x8d\xf6\xe9\xc6\xee\xce\xe1\xfe\xee\xf6\xe9\xee\xfe\xe9\xc1\xde\xfa\x46\x4f\x4d\x3e\x74\x06\x03\xa3\x2d\x6f\xb2\x93\xa5\xf7\x9e\x77\x5f\x80\x47\xfa\xdd\xfb\x72\xb8\xfe\x12\xfa\xb1\xd3\xfb\xf9\x74\x7b\x6b\xa7\x47\xc6\xef\x0c\xfc\x44\x5f\xc3\xe8\xed\x6e\xda\x7e\xde\xdf\xa7\xb9\x1d\xdc\x66\x92\x8d\xea\xcc\xbd\x3c\xab\x9c\xbe\x05\xe5\x56\x31\x6f\x4c\x84\x3d\x74\x63\x1b\x4f\x6c\xd7\x19\x16\x1c\x05\xb6\x2b\x1b\x2d\x42\xef\xd6\xb3\x86\x50\x2b\x16\xba\x2c\x38\x09\xf4\x91\x14\xdd\xa7\x96\xc6\xcc\xba\xd8\xf3\xad\xbd\x77\x4f\x24\x18\xe9\x98\x53\x67\x8d\x65\xed\xfb\x85\xa9\xc4\xf0\x96\xc2\x14\x98\x90\x20\x02\xe7\x80\x9c\x43\xb6\x5a\x2c\x1d\x47\xbf\x4d\x38\x90\x85\x63\x13\x45\x11\xa0\xc6\xf9\xc1\x98\xf7\xe3\x68\x24\x26\x2b\xb4\xc6\x78\x07\x74\xc5\xdb\xbb\x38\xd3\x73\x8d\x5a\x9f\x12\x99\x55\x00\xdd\x4b\xf2\x7a\x13\x1a\x86\xe9\x58\x06\xc6\xe4\xad\x6c\x15\xa6\xee\x94\x13\x23\x93\x99\x43\x5e\xbd\xe8\xe1\x8d\x62\x53\x59\x87\x71\xdc\x68\x6f\x20\x66\xee\xd1\x92\x07\xbc\x70\xac\xcd\xfe\x79\xb6\xbd\xb6\x54\xb8\x1b\x29\x4a\xd8\x03\x9a\x3a\xbb\x77\x9e\x4b\x85\x41\x5f\x95\x1b\x51\x65\x74\xf6\xb6\xbb\x22\xcf\x6d\xe9\x32\x85\x68\x68\xea\xe5\xf4\x71\x84\x6a\x8a\x44\xe7\xf2\xa5\x72\x28\xb0\x2d\x0f\x33\x31\x14\x4c\xae\x43\x62\x8a\x8f\x75\x96\x45\x83\xf8\x5a\x7d\xac\xb3\x78\xfc\xee\x2b\xbd\x3b\xa1\xba\xda\x6d\x8b\x8b\x08\xee\xc8\x7a\x8b\x77\xa5\x30\x95\x9c\x5c\x0f\xfc\x3e\x4e\xc7\x35\x72\x79\x9c\xf4\x04\xe7\xd1\x8e\xcc\xab\x5b\xd3\xf1\x69\xbf\x0a\x4d\x3e\x5d\x8c\x59\xc6\xd4\x08\x8c\xc5\xad\x0a\x5d\x09\xa8\x32\xa2\x8a\x8f\xaa\x0f\xf6\xa9\xa6\xea\x85\x1a\x50\xa9\x03\x0c\xa7\x8b\x75\xd9\x72\xdb\xa9\x43\x8f\x0a\xe4\x54\x39\x74\xad\x4d\x7d\x64\x15\x1c\xcd\xba\x11\x17\x45\xb5\x90\xad\xb1\xe5\x27\xac\xc3\x9e\x69\x7d\x96\x74\x59\x52\x2d\x59\xbf\xcb\x9e\x89\xd2\xac\x63\xbc\xdf\x6e\x4b\x63\xb1\x56\x47\xcd\x22\x39\xa0\x70\x9d\x20\x81\x5a\x99\x16\x96\xdb\x6c\x0d\xc4\x85\x0e\xb3\x5a\x15\x82\x45\x47\x0c\x20\x24\x7d\xf7\x4e\x1a\x69\x13\x11\x3b\xc1\xd2\x12\xfb\x9c\x9e\xcb\x55\x46\xbd\x1e\x1f\x08\x22\xdd\x6b\xc9\x75\xf3\x12\x76\x79\xd9\x25\xc4\xae\x85\xa8\x0d\xcb\x6e\x25\x8a\x49\x40\x2f\xba\x42\xfa\xac\xad\x7c\xfd\xa4\xce\xbe\x66\x0d\x5a\xc9\xcc\x80\xf6\x3c\xb2\xd8\x80\x82\xc0\x56\xbe\xfe\xba\x5c\x14\x86\x28\xf6\xa0\xe9\x2b\xd9\x49\x55\x63\x57\x25\xab\x48\x33\x00\x5c\x72\x47\xcf\x1e\x99\x41\x3c\x66\x0d\x19\x5a\xd7\x74\x43\x2d\x24\x52\x84\x5b\x65\x57\xad\x14\x37\x7c\x41\xd0\x34\xcb\x9d\x4a\xc7\xa2\xc1\x20\xe3\x39\xec\xeb\x36\x9c\x6d\xba\xff\x19\xfb\xfa\x38\xe6\xf4\xf8\xf7\x58\xc7\xea\xbc\x1c\x4b\x10\x7a\x2e\x51\x47\x88\x4b\x31\x3c\xe5\x11\xd9\xc8\x26\x8b\x07\x9c\x27\x48\xfe\xf6\x44\x13\x86\x22\xe6\x57\xd1\x38\xc7\x9f\x55\x13\xbc\x4b\x6c\x6d\x6b\x4c\xee\x81\x8f\x25\xb6\xc8\x6e\xc8\xc9\x25\x6e\xfc\xe2\x7b\x0d\xc9\x43\x67\x8a\xd8\x23\xe5\x9c\x8e\xa6\x49\x12\xaf\xd4\xf0\x96\xba\x6c\x45\xbd\xd2\x13\xa4\xfd\x18\xc9\xe4\x98\xaf\x66\x9d\x55\xe0\x52\xe8\x8a\xd5\x07\x3a\xd9\x5d\xf6\xcc\x69\xbc\xba\xff\xf2\x9b\x6a\x76\xc1\xe1\x89\x86\xac\x61\xf7\x49\xb6\x50\x4f\xef\xa7\xf5\x1f\xbf\x26\x45\x9c\xb8\x8e\x48\xca\x37\xa4\xe4\x44\x60\x27\x72\x78\xce\xbe\x12\xd4\xfa\xfb\xde\xdf\x90\x86\xc9\x49\xf0\x84\xa4\xc6\xdf\x47\x82\x32\x2f\x19\x2a\x86\xe5\xeb\x6c\xf9\x49\x38\x65\x54\xd8\x98\xeb\x57\xea\xcc\x5f\xd3\x9d\x3f\xd5\xf5\x2e\x6b\x57\xcd\x1c\x6b\xa8\x11\x5a\x06\x78\xb2\x6e\x2f\xd8\x93\x52\x65\x82\xf1\x56\xec\x1d\x3f\x22\x28\x02\x02\xdb\x82\xee\x2f\x97\x2a\x22\xc0\x17\xac\xed\x58\xb6\x4b\xe3\x84\xf4\x3f\xa4\xca\x73\xc1\xec\xcb\xb3\xc6\x94\x4f\x90\xd3\x7d\xcb\x02\x8c\x39\x36\x84\x4e\xec\x2c\x60\xa9\x92\x1c\x9d\xaf\xac\xd5\xdd\x32\xab\xd2\x8b\xdc\x0e\x4b\x47\x0d\x64\x66\x34\x96\xdb\xb3\x25\xa0\x95\xc7\xe4\xd6\xf5\xac\xb1\x29\x4b\xe0\x99\xbf\x1f\x09\xc6\xbc\xe4\x6b\xc0\x86\x6d\x71\x1a\xab\x9c\x6f\xca\xa9\x71\x1d\xa9\xf2\x91\xc1\xa6\x13\x88\xff\x54\x7e\xfb\x88\xad\x7c\x2d\xb6\x85\x6e\x94\x00\x24\x0b\x6d\x35\xe4\xe2\x4d\xb7\xcb\x56\x20\x8d\x9a\xfd\x4e\x60\x86\x8f\x26\xdc\x96\xb9\x32\xd6\x59\xe8\x1a\xd1\xd1\x78\x4a\x10\xc7\x18\xc2\x8b\xab\xa8\x57\x79\x62\x00\xcd\xd4\xc6\xb0\x80\x97\xc0\x39\xdf\xcb\xf3\xb5\xb4\x74\xa2\xe8\x09\xe1\xf9\x7e\x82\xa9\xae\x35\x0a\x1e\x64\x91\x3f\xd6\xd0\x64\xb1\x44\xf8\x75\xde\x25\x8d\xf4\xe4\xdb\x42\x97\x41\x20\x69\x04\x69\xef\x56\xf1\xce\xbf\xc4\x7a\x22\xca\xdf\x1a\x0d\x8a\x16\x7a\x0c\x4b\xb2\x05\xa1\x20\x94\x6a\x93\x52\x8d\x06\x94\x13\x30\x24\x8b\x65\x4e\x0a\x02\x87\xa2\x2d\xb8\x9c\x48\x05\x50\x42\xd8\xab\xee\x3d\xfe\xed\x34\xb9\xe0\x79\xf1\x9f\x3c\x4b\xbd\x91\x22\xe2\xf1\xbb\x27\x44\x16\x81\xf8\x7a\x38\x89\x96\x24\x71\x19\x5d\x6b\xf5\xc5\x24\x62\xea\x4f\xb2\xec\xa0\x40\xe9\xdc\x2a\x2e\x3e\x6c\xdb\xbc\xa7\xec\x1e\xe0\xf8\x64\x3e\xf3\x48\x6e\xb8\x95\x9f\x28\x91\x6d\x01\x29\x85\xcd\x67\x4d\x53\x2f\x4c\x37\xed\xf0\x90\x66\x50\xba\xc7\xab\xd6\x67\xdd\x57\x03\xad\xbc\xd7\xbc\xa3\x55\x1f\xb6\x5d\x4e\xeb\x53\x2b\x08\x04\x8d\xe3\x14\x6a\x6c\xb1\xf6\xa5\xa5\x52\x6f\x6e\xed\x1d\x33\x7d\xe8\x53\x86\x3d\x65\xc8\x54\xf8\x55\x10\xfc\xa1\x14\x4a\x56\x30\xa1\xd5\x7b\xec\x5f\x52\xe1\x56\x58\x5f\x67\xf1\x45\x92\x66\xbc\xad\x8c\x46\x82\x6e\x1e\xdb\x11\xc7\xd0\x3e\xd0\x65\x01\xd2\xb6\x80\x88\x97\xae\x8f\x7e\x95\x56\xf0\x55\xb5\x8d\xa6\x39\x49\x30\x90\x00\x34\xf3\xa5\x20\xdf\x86\xb5\x49\xd3\x04\x46\x17\x84\x87\x16\x2d\xe0\xf7\x1d\x51\x56\x07\x1c\xcd\x13\x67\xfb\xba\x83\x52\x71\x90\x4a\x83\x22\xc6\x2a\x2d\xf3\x55\x6c\x62\x9c\xec\x19\x73\xe0\xd9\x52\x72\x53\xe1\x0a\x08\x4a\x28\xe0\xa8\xfd\xd5\xc5\xfd\xe5\xc8\x94\x56\x95\x50\xad\x9e\xe3\xb9\xed\xd0\x70\x01\xc9\xce\x8b\xc6\x2c\x13\x19\xf6\x70\x4d\x70\x1e\xd6\x61\x41\xa7\x13\x50\xe6\xa8\x5b\xb0\x5c\x9f\xcb\x71\xed\x0d\x3c\x32\x0a\xed\x77\x55\xa3\x62\x29\xd5\x73\x9f\xb3\xa7\x21\xa9\x1b\x90\xc6\x6d\xaf\x69\xb9\xd4\xc1\x51\xc0\x96\x74\x05\x16\x9c\x04\xb6\x1b\x91\x68\xdc\xda\x22\x95\xf6\x3d\x95\x92\x10\xa8\x73\x16\x5d\x08\x5d\xd1\x53\x26\x32\x49\xfb\x2a\x41\x49\x7f\x85\x80\x05\x1d\xb6\x5c\x67\xc1\xf1\x67\xf2\x8f\xe7\xf2\xf7\x85\xfc\x7d\x23\x7e\xa5\x6b\x10\x2a\xa5\xc5\x70\x7a\x9b\x55\x3d\x53\x4d\x7e\x2e\x21\xaf\xc9\xdf\xdf\xe5\xef\xad\xd3\xd2\x44\x90\x8a\xe4\x3c\x9d\xde\x9a\xaf\x3f\xaa\xa5\x96\x84\xdc\x91\xbf\xab\xf2\xb7\x2b\x7f\xbf\x95\xbf\x47\x6a\x12\x8e\x8f\x8f\xe5\x9f\x27\xf2\xf7\xef\xf2\xf7\x3d\xe9\x9c\x15\xa0\xa8\x57\x8e\x54\x2e\x44\x99\x3a\xcb\x39\xa5\x66\xb2\x50\x5f\x26\x7f\x80\x12\x52\x22\x96\x68\x00\x25\x5e\xb0\xf6\xf5\x4a\x1b\x13\x53\x0c\x30\x74\xf6\x53\xc8\x53\xb1\x30\x8c\xf2\x5a\x2e\x86\x26\xea\x86\x6c\x0d\x95\xe8\x8e\x2f\xe8\x0c\x94\xb0\x89\x2e\xda\xce\x0f\xe0\x54\x4e\xfb\x66\x9c\x17\xe3\x0e\x5b\x59\x06\xbf\x8b\xf3\x78\xc4\x3b\xc0\x53\xe0\x11\xd2\xf0\xb2\x67\x6d\xfd\x90\x77\xd8\x57\x5f\x61\x5a\xcf\xab\x5c\x7f\xb9\xca\xf1\x3d\x6d\x4b\x5b\xea\xdd\x23\x0e\x3b\x58\x0e\x8c\xc7\xea\x56\x1d\xb3\x66\xc3\x83\xdd\xfd\x38\xe9\x8f\x26\x03\x9e\x6f\x64\x7c\xc0\x93\x22\x8e\x46\xf9\x74\xe0\x02\x10\x49\xd7\xcc\x82\x40\x25\xa6\x1e\x47\x79\x7e\x95\x66\x18\x86\x32\xb0\x5a\xe9\x47\x49\x92\x16\xdf\x47\xef\xf8\x6b\x59\x75\x4f\x16\xde\x4b\xb3\xd2\x81\x8d\xdd\xe0\x82\x36\x4b\xcb\x76\x10\xd8\x4b\xbe\xfe\x32\xca\xe1\x40\x5a\xbe\xc7\xe1\xa1\x9b\x5a\x3c\xe2\x76\x0f\xe2\xfc\xe7\x38\x19\xa4\x57\xf9\xab\x2c\x7e\xc7\xb7\xd1\x13\xa5\x9c\x7a\xa5\xce\x92\x34\xbb\xc4\x38\xc2\x34\xb4\x08\x5c\x0f\xa7\x28\x65\xe5\x59\x41\x25\x61\x71\x11\x8f\x4a\x51\x89\x23\x69\x49\xc0\xd4\x2a\xdd\x88\x16\x17\x59\xcd\xdc\xa3\xb7\x0b\x2d\x87\x4a\xe6\x87\xf0\x5f\x0b\xa6\x2b\x20\x18\xcb\x4a\x5d\xb1\x63\x9c\x88\x5e\xb9\x90\x20\xf2\x9f\xe3\x62\x38\xd7\x28\xc9\xc8\x8a\x61\x9c\x4d\x19\x98\xb4\x1a\xfb\x66\x4f\x8d\x10\xed\xbe\xed\x3a\x5b\x09\x43\x18\x9e\x54\x0d\xca\x13\xa4\x22\x02\xd4\x6a\xd0\x6a\x69\xfc\x2b\xa1\xbc\xa3\xde\x82\x09\x90\x85\xc4\x0b\xa0\x1e\xce\xbb\x35\xf7\xc5\xe7\x01\xcc\xb1\x33\x33\xc3\x34\x2b\x78\xf2\x7a\x7f\x3b\xdf\x8b\x9c\x78\x3d\x06\xd5\x14\xf5\x95\xe9\xe5\xc5\x9f\xab\xf4\xfd\x01\xc6\xa7\x12\x7f\x96\x4f\x07\xe4\x67\x31\x74\x82\x86\x0b\x0a\x0d\x21\xbb\xa6\x2a\xb4\xd0\x65\xcb\x90\x3e\xdd\x3b\xa3\xa2\xd8\x51\x5b\xe5\x4b\x0b\xc9\xc9\x00\xf8\x12\x90\x83\x0b\x8b\x26\x40\xf6\xa1\x57\x69\xe1\x84\x72\x03\x4e\xe1\x86\x9a\x83\x97\x38\x5f\xcd\x00\x93\xc4\xc3\x2b\x3b\x58\x30\x16\xf8\x72\xa5\xb4\x89\x5e\xa5\x93\xb3\x59\x6d\xe9\x46\xfc\xb0\x57\x2b\xfb\x63\x75\x48\x77\xc1\xf3\xb6\x29\x7a\xe6\x2b\x6b\xf5\xb8\xd5\x62\xe0\xc6\x91\x77\xb0\xf7\xe8\x4a\xa1\x1d\x12\x34\xbb\xd7\x2e\x16\xfa\xcd\xce\xee\x69\xf9\xe5\xc1\x5e\x6f\x63\x6b\x7d\xfb\x74\xbf\xb7\x8d\x3e\x60\xbb\xfb\x96\x2f\x87\x2e\xb8\xb7\x7e\xf8\x7d\xe5\x47\x55\xdb\xf7\xee\xf4\x60\x7b\xfd\xe0\x7b\x5f\x9b\x1a\x14\x16\xe9\x1d\x4c\x2f\xb4\xf5\xdd\xce\xee\x7e\xcf\x57\xd6\xdb\x27\xe9\x3b\x62\x3d\xef\xac\xdb\xa3\x97\xbe\x23\xfa\x79\x73\x6b\xbb\xe7\x3e\x97\xfb\x0f\x6f\x5d\xf0\x30\x3f\xa5\x55\x10\x6f\xe9\xf3\xc6\xfa\xce\xce\xee\xe1\xe9\xcb\xde\xe9\xfa\xe9\xcb\xf5\x03\x70\xb9\x3b\x75\x0b\xfd\x8f\xd7\xbd\x7d\x6b\x28\x9b\xfb\xeb\xdf\xfd\x88\xce\x13\xbf\x3f\xe0\x64\x00\xdd\x9c\x7c\x5e\x04\x75\xbc\x68\xb4\xfb\x8e\x67\x59\x3c\xe0\x75\x1a\x06\x9e\x5e\x77\xb3\x4a\x09\x54\xa5\xd8\x37\xf5\x18\xe0\x6c\x72\x7e\x8e\xb9\xea\x82\x55\xc3\x7f\x78\x02\xce\x6c\x46\xb0\x57\xaf\x5f\x66\x51\xff\x2d\xf7\x7f\x53\x4c\xf6\x30\x7d\x0b\x26\x55\xbb\x04\xf5\x7e\x40\xa9\x09\x9b\xde\x20\xef\xcf\xa3\x78\x34\xc9\x38\x39\x19\x58\xb0\x46\xa6\x49\x14\x65\xc0\x46\x5b\xb2\x84\x05\xe7\xbd\x16\x17\x9c\xf7\x52\xcd\x23\x7a\x3c\x94\x4e\x5d\xed\x5e\x11\x6a\xaa\x72\x8a\x77\x10\xbc\xad\x5c\x54\x89\xce\xe5\x2f\x25\x79\xc2\xd6\x9f\xd4\x31\x3e\x1e\x7c\xa8\x88\x83\xf3\x7a\xce\xd4\x75\x34\x15\x19\x1f\xde\x0f\xce\x75\x7e\x51\xd5\x44\x8d\x59\xfe\x11\xc7\xe6\xac\x44\xe1\xd3\xf3\x6e\xd9\x33\xc2\xe4\x98\xc1\x23\x22\xe2\xfd\x20\xab\xa9\x59\xcc\xaf\x62\x88\x7f\x09\x2b\x4d\x93\x44\x44\x39\xb7\xf0\xb8\x63\xeb\x70\x00\xd8\x96\x82\x40\x5e\x76\xdd\xe4\x11\xc1\x97\xba\xd0\x13\x0f\x73\x50\xff\xd4\x5e\xc2\x26\xa9\x31\x98\x78\xaf\xf8\xd1\xd1\x06\xa0\xe9\xb9\x05\xbe\xa4\x4c\x6b\xc0\x8e\x8b\x44\xa9\xae\x32\xdb\x7a\x26\xa6\x62\x4a\x6a\xd4\x89\x8e\x4c\x8d\xa0\x0c\xb8\x1e\x5d\x16\x2c\x05\xd6\x63\xc3\x7e\x6c\x96\x5c\xf3\xe7\x9c\x48\xc7\x12\x5c\x36\x2b\xab\xce\xda\x34\xcb\x88\x72\xea\x5f\xcd\xf6\x14\x12\xc2\x8c\x4f\xd5\xc0\x6e\x85\x61\x39\x7e\x94\x22\x6d\x5a\x34\x12\x6d\x78\x34\x10\x04\xaf\xd4\x0a\xb1\xf3\xb5\xe5\xd9\x03\xd5\x27\xfb\x83\x5e\xa7\xa8\x89\xe5\xc1\xef\x3b\x82\x71\xc8\x17\x76\xb3\x74\x74\x31\x0d\xd3\xd4\xed\x10\x6b\x7e\x84\xd0\x6e\xcd\xcd\x91\x69\x06\x9c\x53\xd4\xf0\xc2\x0a\x12\xa7\xfe\x79\x3a\x7c\xeb\x41\x04\x42\x48\x4d\x9f\x7c\xb3\x53\xea\xbc\xda\x28\x82\x5f\xdb\xcd\x90\x53\xa1\xd2\xe0\x20\xa9\x88\xfc\x25\x6d\x10\x55\xb3\xaa\x9d\xa9\xb2\xd4\x7c\x1d\x98\x09\xbb\x24\x33\x55\xc1\x2d\x13\x42\xb6\xa4\xbc\x87\x5a\xd5\x73\x55\x12\xf3\x9c\x45\xf3\x1f\x1c\x96\x4d\x65\xac\x9a\x0d\x95\xe2\x0b\x18\xae\x87\x5e\x28\x41\xe9\x36\x8d\xea\x5d\xa5\xf8\x54\x85\x45\xf3\xd2\xd4\x2a\x5c\x9b\x4e\x6b\x5d\x41\x47\xfd\xfb\xc0\x34\x58\x37\xee\x90\xe1\x05\x40\x55\xa1\x54\x03\xae\x96\xa6\x7a\x71\x11\xe9\xec\x02\xaa\x91\x25\x27\xb9\x52\xeb\x32\x93\xd8\x14\x50\x52\x23\xb5\x27\xcf\x26\x33\x66\xdb\x94\x68\x91\x14\x6c\xa0\x08\x2c\xb7\x1d\xb4\xc0\x14\x54\xd2\x0e\x94\x84\x87\x52\x11\x22\xf9\x38\x6b\x36\x2f\xda\x69\xf2\x20\xa5\x6b\xeb\x63\xe5\xe5\x7e\x53\xcf\x21\x10\x92\x44\xaf\xa1\x12\xd1\xd1\xfa\x0f\x01\x42\xf0\xc2\x66\xb2\xd3\x08\x87\x8f\xf7\x4a\x73\x82\xb4\xfa\xcd\xbd\xcd\xab\x89\x89\xad\x5b\xcd\x3e\xb7\xf6\xec\x77\x05\xdc\x33\xee\x8a\x1d\xe1\x45\xf6\x12\x01\xaa\x1e\x7f\xc5\xe8\xfc\xa4\xab\xb4\xa0\x53\x86\x50\xa2\x28\xbe\xee\x3b\xfd\x56\xc3\x26\xdd\x9d\x63\x5f\xd0\x11\xf5\x76\x37\x3d\x1b\x8b\x28\x1a\x00\x42\x3d\x7b\x36\x97\xd6\x3c\xe4\x06\xc3\xe7\x52\x41\xa9\x8a\x40\x21\x79\x94\xe0\x40\x42\x96\x8d\x50\xd2\xcc\x53\xe0\x83\xec\x63\x9f\x04\x87\x36\x32\xf3\x8c\x26\x32\xb0\xd5\x59\x6c\xb2\x62\xe9\x6d\x9b\xc3\x8c\xb6\xd6\x7c\x74\xec\x2f\x31\xdd\x15\x4c\x0c\xec\x0a\x33\x26\xc5\x4b\xdc\xff\x12\x93\x72\x2f\x5e\x32\x85\x47\xf8\x08\xc8\x47\x3f\x59\x8e\x4d\xd6\x9d\x86\xb9\x08\xa3\x9f\xae\xdb\x5b\xd3\x21\xea\x65\x29\xdc\x25\x09\x36\x45\xa8\xda\xff\x77\x60\x6c\x7e\xea\x73\x07\x96\xf2\xb1\xac\xff\x07\x58\xbb\x4a\xe5\xa3\x53\x96\x8a\xee\xb0\x04\x7a\xee\x17\xf4\x32\xa3\x1c\xee\x38\xf2\x62\xca\xea\x05\xb9\x40\x9e\x6e\xfb\x44\x94\x39\x07\x62\x77\xce\x27\x6b\x2c\x18\x59\x4b\x3d\x22\x0e\xde\x45\xfa\x98\x7f\xae\x67\xca\x3d\xdf\x7a\x8d\x1c\x60\x4a\x0d\x89\x1e\xf3\xe5\x57\x6d\x48\x9b\x53\xd6\xfa\xb5\xd9\xb5\x24\x11\xbb\x96\x52\xcb\x32\x27\x0d\x20\x56\x05\x9d\x59\x94\x64\x4f\x74\x81\x54\xe4\x66\xc5\x7f\x96\xc5\x56\x1b\x29\x36\xc8\x15\xa6\x93\xd5\xb2\x45\x82\xd4\xc0\x83\xc5\xc5\x45\xb6\x50\x32\x0d\x7b\x42\x3e\xf8\xcc\xc7\x1e\x75\xd4\xbb\x5e\xac\x1c\xd5\xe1\x9d\x49\x59\x69\x4d\x5a\xc5\x85\xac\x7a\xa5\x87\x82\x2f\x9a\x85\x67\x3c\x16\xd5\x58\xea\x96\xdb\x76\xc0\x00\x81\xb2\x68\xd2\xcc\x4a\x73\x58\x60\x08\xe5\xb4\x50\xdc\x88\xb1\x16\xc1\x76\xe8\xf7\x9a\xfd\xf8\x79\xe0\x98\xbe\x66\xcb\x7e\xa6\x74\xe5\x46\x00\xfb\x8d\x31\xcb\x95\x2f\x2c\xfa\x77\x29\xf1\xf3\x2e\xe1\xbd\x3a\xf3\x35\xc9\x93\xa7\xcd\x91\xa1\x07\xe4\x26\x1a\x99\x3c\xdb\xc8\x39\x8b\x6c\x09\x18\x9d\xd2\x9b\x9d\xf5\x92\x45\xa0\x64\xeb\x9c\xc3\x4e\x46\xad\x64\xa7\x4e\x6f\xa7\x99\x32\x1c\xcb\xab\xde\x83\xf2\xe8\xc6\xb3\x36\x53\x57\xa4\xd4\xb2\x3c\xa4\x51\xae\xe1\xdf\xa7\x79\x81\x27\x56\x3e\x42\x04\xd1\x2f\xb1\x42\x68\xc2\xa2\xaa\x53\x9e\xf9\x57\x6b\x6f\x77\xff\x70\xba\x89\x54\x74\x5f\xcd\xbe\xc7\xe8\xfa\x2f\xbd\x39\x3c\xc6\xce\x3b\x2d\x89\x17\xc5\x28\x88\x7b\x99\xbe\x3d\x76\xe0\x7f\xce\xda\xeb\x13\xdc\x59\x46\x72\x4f\x8f\xab\xf7\x89\xf7\x76\x86\xbe\x7a\x6d\x1f\x76\x96\x43\xaf\x96\x76\xda\x49\xa9\x92\xed\x16\xc9\x4a\x47\x28\x73\xd8\x5c\x76\x4b\xa7\x5e\xce\xc5\x8d\xe9\x87\x34\xff\x42\xf8\xef\x54\xb0\x16\x6e\xea\xde\x90\x23\x5a\x70\xae\x6f\xe2\x3f\x3c\xd5\xce\x0a\x7a\x4f\x05\x2b\x94\xef\xa9\x48\x07\x1a\x51\xfa\x05\x6b\x5f\x6f\x6e\x6e\x6e\x96\x76\x56\x89\xcc\x58\x72\xbc\x67\x9f\xe2\x97\x6e\x77\xca\xd1\x4b\xc8\xd6\x60\x47\xb1\x0e\x2b\xe9\x00\xd5\xc8\x7f\x7b\x77\x54\x9f\xb1\x5f\xe6\x36\x7e\x3b\x93\xe0\xc5\x4c\xc1\x94\xaa\x2c\x6a\xda\x1f\x8e\x76\x7f\xba\xda\x68\x33\x3b\xd7\x48\xa4\x31\xb7\xe2\x08\xc8\xcb\x3e\xa7\x5b\xf0\xe6\x50\xe0\xee\xa0\xa1\xcf\x65\xd0\x98\xcb\xd4\xf5\x47\xf6\xcb\xc1\xb0\x6a\xfb\xd3\x9c\x16\xa8\x7f\xc2\x1c\xce\x32\x0b\xcd\x38\x3c\xf0\x1f\x87\xa9\x43\xa8\x4a\x9f\x46\x72\x66\x27\xbb\xae\x6e\xb2\xea\xa4\xfa\xbe\x38\x76\x73\xcc\xce\x9d\xe6\x87\xb9\xee\x85\x40\x85\xa6\x6b\x42\x95\x46\x86\x0a\x55\xaa\x7c\x44\x77\x7f\x43\x7c\x35\xe5\xf0\xda\x9a\x66\x50\x88\x3b\xc8\xc6\x53\xce\x88\x66\x52\x11\x14\x97\x3f\x2c\x32\xa0\x88\xe7\x01\xa5\x57\x9c\xb8\x61\x3a\x67\xae\xb4\x48\x58\x16\x41\x66\xe0\x98\xe7\x74\xcc\x59\xba\xaa\xa3\x2f\x3d\xb3\x15\xab\x34\x43\x60\xd0\x2e\xb4\xd5\x22\x84\x67\x92\x16\x4a\x42\xac\x7f\xda\x94\xcb\xc7\x94\xb3\xf2\x2a\x72\x66\x0b\xd6\xd5\xf4\xac\x44\x58\xe6\xe3\xc1\x33\xb9\xb0\x9f\x04\xdd\x49\xae\x9e\x5f\xb2\x36\x3e\x19\xfa\xce\xd1\x28\xed\x47\x23\x08\xd7\x15\x7e\x90\xe1\x56\xc9\x2f\x73\x4c\x44\xb5\x40\x72\x37\x2d\xdc\x34\x30\xd5\x7a\x5d\x41\x42\x4a\xc8\x32\x87\x81\x71\xba\xf2\x5d\xc6\xe2\xe9\x47\x5b\xf7\x3f\x1d\x9a\xd2\x92\xf7\xbc\xe8\x21\xe7\x29\x74\x5a\xca\xf2\xd4\xbc\xb3\x59\x31\x77\x95\xeb\xea\xac\xe8\xdc\xaa\xcb\x83\x94\x13\xcf\xbc\xd6\xa6\xd0\xb1\x59\xba\xbd\xf6\x62\xaf\x26\x5c\xb3\xf9\xba\x07\x2b\x17\xee\x7c\x1c\xcb\xe6\x70\xe9\xb9\xad\x20\x9c\xc4\xf3\xbf\x72\x1c\xff\xd4\x4e\x7a\xfa\x32\xd5\x57\x8f\x5c\xaf\xb8\x33\xa7\xb1\x09\xeb\x74\x4a\x4a\x68\xa4\x7d\x8a\xd2\x86\x28\xe5\x9d\x60\x95\xb5\x5a\xe6\x22\x10\xbb\xc2\x6e\xb0\x81\xe8\x07\x1b\x41\x47\xa6\xca\x78\x8e\xc0\xe0\xe1\x18\x0f\x72\xdf\xb3\xd0\xdf\xdd\x6c\x9e\xdd\xe0\xce\x95\x74\x16\x76\xa7\x5c\xde\xf5\x51\xaf\x8f\xda\x27\xe5\x18\x4d\xa5\x11\xca\xbc\xdf\x53\xb1\xa1\xd2\xac\x53\xa1\x6c\xfd\xb1\xea\xd1\xfd\x75\x95\xe9\x92\xb8\x61\x91\xce\xa1\x06\xb8\xd6\xfb\xee\x52\x86\xb3\x29\x6e\xa5\x1b\x5f\x95\xa8\xfe\x81\xf9\xd9\x3f\x8b\x7b\x51\x24\xac\x98\xd1\x99\xa1\xfa\xa6\x4c\x2b\x8c\xd8\xf5\x11\xfc\x97\x61\xdd\x74\xe2\x8f\x3f\x0b\x8e\x3f\xf3\x31\x48\xb3\xae\x4b\x70\xf7\xe9\x69\x30\xc3\x1c\xfa\x79\x50\xae\xf4\xd8\x53\xc9\x2a\xf3\xa1\x27\x5e\x4d\x49\xc5\xf1\x31\xcc\x85\x35\xb9\x15\x7d\xa8\xba\x08\x1d\x7a\x44\x53\x46\x7d\xd0\xec\x03\xf0\x5b\x72\x57\xec\xcd\xeb\xfd\xed\x3b\xa6\x44\x9f\x64\xa3\x06\xc4\xf4\xd7\x51\x90\xab\xd3\x9e\x8b\x65\xc3\xbc\x06\xa0\xed\xea\xbc\x06\xef\x4c\xb6\x71\x5f\xee\x73\x2b\x75\x85\x8e\x3f\x2c\x6f\x0a\x09\x40\xde\x1c\xe7\xd3\xb2\x02\xe9\xea\x93\x6c\x84\xd7\xf1\x59\x57\x85\xcb\xd7\x62\x8e\x75\x95\xa9\x22\x13\xb9\x4c\x42\x0e\x9d\x52\x61\xf1\x55\xb7\xa0\x60\xdd\x52\x81\xb4\xa2\x5f\x9d\x1d\x1c\x3e\xab\xd8\xe2\xe9\xb9\x33\xfe\xd0\x40\xb6\x33\xa2\xa8\xf8\xcd\x50\x5f\x61\x80\x4d\xa0\x1d\x75\x4e\xac\x07\x05\xf6\xfb\xad\xc9\x18\x20\x60\x18\x34\xb2\x14\x3b\x37\x23\xb5\xfa\x60\x90\x4c\x05\x03\x2c\x37\x97\xe3\x8c\xe8\x49\xaf\xe3\x8d\x70\x33\xa6\x50\xcf\xd2\x7c\xed\xe1\x25\x2f\x2b\xe8\x36\xe6\xc0\x72\x5e\x7a\x32\xfc\xd4\xfc\x10\x3c\x53\x5b\x8a\xc7\x5d\xa3\x15\x10\x4c\x09\x44\xb3\x9c\x27\x1e\x87\x8f\x74\x65\x7a\x2d\xf7\xea\x9d\x89\x35\x64\x20\x18\x84\xb5\x7a\x83\x61\x9a\x54\xc4\x42\x3d\x9d\x0b\x24\xde\xbf\x86\x26\x70\xb8\x39\xcc\xf8\x39\x20\xb8\x8c\x9b\xf2\x7a\x7f\x1b\x73\x93\x8b\xaf\x6a\x55\xa1\x64\x9a\xc5\x17\x71\x82\x73\xb3\x0b\x7f\x57\x14\x84\x24\x43\xfd\x74\x84\x45\xf7\xe4\x53\x45\x61\xe2\x00\x75\xc1\x0b\x75\x35\xbe\x0a\xb2\x71\x82\x12\x90\xe5\x53\x45\x61\x29\xfa\x5e\xf0\xe2\xfb\x34\x2f\xa6\x14\x32\xcd\x7f\x2f\x9f\xaa\x9a\xc7\x13\x17\xd1\x74\x9a\x55\x41\x14\x2c\xdb\x40\xdc\x93\x4f\x15\x85\x71\xed\xb0\x28\xe2\xca\xd4\x82\x1a\xa1\x75\x71\x99\xd7\xa9\x62\x70\x51\x2e\x61\x7f\x1f\xe5\x25\xc8\x6e\x4e\x73\x27\x8f\x79\x75\xee\x72\x2b\xce\x4e\x05\xae\x4a\xe2\x5a\x41\xa4\x4c\xde\x33\x80\xa5\xce\x68\x8c\xa0\x6f\x08\xb4\x41\x0f\xea\x9a\xa2\xbf\x13\x8c\xa0\xfe\x2e\xfa\xbb\x44\x02\xa5\x0a\x99\x7a\xb8\x94\xea\x1c\x8d\xc0\xf3\xdf\x80\x57\x7b\x4e\x4b\x06\xfa\x0b\x91\x81\x28\xd7\xd6\xdf\xd3\x49\x81\xb7\x1d\xe5\x30\x97\x74\x48\x17\xb1\x31\xa1\x7f\xa5\x98\x62\xb2\x8e\x10\x50\x5a\x2d\x25\x9f\x60\x88\x18\xff\x69\x39\x91\x9e\x4c\x5d\xe3\xc7\xc3\x6a\x7a\x9e\x30\xaa\xcd\x92\x99\xb8\x0e\x68\x37\x4b\x2c\xf8\x36\xa0\x34\x9c\x02\xb2\x82\x2a\x59\xb1\x7d\xf4\xe1\xa5\x19\x02\xe9\x3b\x36\xa4\xa6\x97\xc8\x7d\xe5\x53\x32\xcf\x88\xc9\x40\x7c\x77\x34\xd6\x98\x12\x8e\x3b\x34\x28\x81\x18\x60\x0b\x07\x58\x0c\xa5\xf1\xbb\x15\x84\x30\x4c\x3d\xeb\xb8\x9a\xde\x3e\xaf\x89\xba\x66\x85\x81\x17\xa9\x15\xf6\x56\xf8\x5c\x54\xb0\x56\x5d\xda\x3e\xb1\x8c\x15\x3c\x40\x53\xce\x3f\x72\xcb\xf8\x50\xdb\x99\xf4\xb3\x51\x7a\x16\x84\xac\xc8\x6e\x9c\xc8\xa8\x92\x51\xca\xb2\xda\xc4\x2f\x69\xbf\x5c\xc6\x7e\x04\x57\x63\xb9\xe0\xc7\x6e\x68\xd5\x40\xcc\x4f\xb0\x7a\x4c\x23\x81\x95\x74\x77\x0c\xfe\x60\xcb\xf2\xe5\xfa\x2a\x3e\x82\xd9\x36\xad\x96\x95\x3c\x4d\x19\xa4\xa5\xb9\x63\xc9\x41\x45\x83\xea\xe2\x6d\x47\xde\x26\xb6\x16\x63\xcf\x70\xaa\xd2\x72\xc8\xe6\x2b\xd7\xa2\xe9\xec\x67\x0b\xf0\x6b\x43\xb6\xee\x0e\x98\x10\x39\xbb\xb7\x86\xd6\xdd\x1d\x28\xa1\x8c\x16\xd0\x52\x9c\xb4\x7b\x60\xe3\x5d\x88\x2c\x89\x4a\xa5\xe3\xcc\x89\x95\x0a\x10\x8d\x3a\xc6\x79\x41\x7e\xf1\x10\x1f\x55\xd4\xf3\x09\x97\xc3\x90\x9d\xd2\x58\xab\x56\x85\x8c\xa3\x7a\x12\xf5\xe8\x2a\x47\xe1\xef\x55\x69\x25\xdd\x88\x3f\x34\x06\x8b\x16\x32\xaa\x56\xd2\x99\x4a\x77\xc2\xa0\x13\x52\x36\x84\x9b\xb5\x65\x3c\xd2\x12\xca\x83\x96\xdd\xc7\x2b\x49\x84\xa4\x0f\x44\xb1\xad\xae\x1f\x28\x79\xc9\xdb\x71\xc5\xa4\xab\xe7\xce\x10\x76\xd9\x51\xac\xb2\x46\xe9\xfe\x94\x86\xb5\xfc\x75\x0f\x6a\x61\xe7\xfc\xb1\xf1\x12\xe5\x34\xef\x98\x88\x78\x51\x0d\xdc\xc7\x7e\x74\xc5\x35\x87\x47\x95\xc7\x17\xf5\xfb\x3c\xcf\xd3\xcc\xe4\x7e\xb3\x7a\x83\xc9\x7f\x20\xe4\x58\xc1\x33\x7b\xc0\xbf\x8b\x5e\x41\x36\x35\x55\xa4\x23\xcb\xd5\x59\x3f\x4d\xce\xe3\x8b\x89\x95\x08\xb1\x9c\xbc\x52\xf7\x04\x1c\xc9\x4a\x6a\x8a\x9b\x08\xac\x46\x25\x55\x9d\x16\x4f\xda\x2e\x48\x7e\x53\xa1\xd7\xbc\xd1\x23\xcb\xd9\x38\x8a\x33\x5d\x76\x9e\x54\xdf\x0d\x01\x01\x6b\x88\xbf\x3a\x9e\x59\xaa\x51\x29\xb8\x4e\x63\x4d\x66\xfc\xdc\x8a\x53\x3d\xdf\xa6\x22\x65\x5d\xab\x04\x40\xb4\x0a\x79\xf4\x6b\x38\x9c\xd5\x95\xef\xa7\xc0\xb3\xe9\xaa\x2f\xcc\x18\x55\x38\x7d\x8a\xae\x16\x92\xb5\x55\x40\xa5\x1f\x2c\xaf\x13\x4a\x16\x6f\x24\x06\xdd\x6d\x85\xb0\xae\x94\x56\xe1\x6f\xef\x2a\x69\xa9\xab\xba\x17\x4a\x65\x7d\x18\xc6\x28\x28\xd2\xcc\x26\x9f\xaa\xfa\xa4\x84\x0f\x8a\x38\xaa\xce\x3d\x91\xc7\xc6\x04\xc5\x03\x34\x4c\xe0\x8d\x75\x2b\x7c\xc9\x1c\x2b\xa4\xc4\x91\x87\xcd\x8d\x82\x82\xb5\xd4\x53\xd5\xdc\x28\xf9\x89\xce\x8d\xaa\xf3\x80\x8d\x55\x11\x46\x46\x59\xfe\x54\x03\xf6\xce\x99\x1e\xb8\xcf\x12\x5f\x75\xbd\xaa\xa0\x3f\xfe\x4b\x30\xbe\x0c\x3e\xce\xf5\x17\xf7\x5e\x46\x75\x16\x9f\x93\x79\x2e\x8e\xdc\xce\x5c\x75\x25\x2f\x3e\x70\x47\x48\x28\x72\x47\xc8\xa7\xca\x1d\x21\xbf\x5b\x3b\x42\xbe\xfb\xc3\x56\x5d\x37\xf0\x61\x56\xdd\x17\xd2\xe9\x41\xab\x4e\xaf\xf0\xfc\xe1\xab\x2e\xa4\xd5\x07\x72\x4d\x99\x5d\x0b\x63\x15\x57\xad\xb4\x10\x8d\xeb\xfe\xe0\xcc\x77\x5d\x61\x75\x42\xec\x8a\x9b\xe5\xbc\x0c\x3e\xe2\x08\x0d\xd7\xe1\x8e\xc6\x1c\xa4\x50\x59\x0b\x1f\x3e\x45\x86\x14\xaa\xa7\x69\x53\xe5\x92\x42\x55\xe7\x9f\x36\x65\xd0\x78\xdd\x5c\x6d\x99\x3d\x75\x42\x13\x79\x20\x2d\x49\x33\x89\x59\xe2\xaf\x4a\x1a\x92\x66\x16\x66\x61\x6c\xa1\x7b\x4f\xd3\x7d\xc8\x80\xd4\xe0\x1c\x15\xcc\xc0\x94\x0a\x1b\xd8\xdd\xaa\x82\x1e\x81\xa9\xcc\x9e\xfe\x31\x8c\x6c\x6f\x77\x2e\xa6\xad\xac\xd0\x0f\x25\xdf\x08\x45\x91\x6f\x7c\xaa\x26\xdf\xf8\xdd\x26\xdf\xf8\xee\x8f\xc6\xd4\x89\x27\x12\x9e\x8b\xbf\xda\x32\xbf\xc4\x82\xa0\x4e\x3c\xf4\xe6\x98\x4f\x94\x79\x1f\x36\x9b\x08\x03\xeb\xe0\xdf\x55\x33\x89\xd2\x74\xdd\x0a\x2f\x2a\xde\xdc\x73\x16\xf5\x29\x83\x75\x62\x64\xcf\xb2\x2a\x53\x72\x76\x99\xf8\xe3\x09\xfa\x1c\x40\x04\x1c\xa1\x48\x77\xbb\xb2\x49\x12\xfa\xd7\x74\x42\x7e\x92\x19\x1e\xe9\x69\x75\xa5\x9f\x86\xbd\x8e\xb9\x9c\x1d\xf0\x60\x28\x71\xb7\x3f\x5b\x81\xa1\xc0\xee\xa7\xc6\x20\x04\x4c\x58\x4c\xb1\x43\xe5\x34\x9f\x86\x23\x72\x10\xd5\x1c\x2b\xca\x1f\x88\xb5\x02\x82\xe4\x54\x51\x5e\x89\xb1\xdf\x47\xb9\x85\xaf\xa2\xec\x3d\xb1\x55\x9e\x5a\x29\x6e\x23\x00\x59\x98\x8a\xdf\xbd\x78\xea\x0f\x70\xc9\xca\xe1\xe3\xac\x14\x35\xc1\xe7\x80\xb2\x43\x38\x23\x33\x08\x2b\xfb\x01\xaf\x4b\xc8\x5a\xed\xfd\x62\xe3\xea\x10\xe6\x45\xb9\x7c\x18\x74\x3a\xb6\x92\xdb\x97\xd7\xad\x48\xff\xe3\x60\x77\xe7\x0d\xbb\xe4\xc5\x30\x1d\xcc\x76\xc3\x50\xab\x55\xa4\xbf\xe6\x69\x72\x9c\xa8\xa4\xe6\x8e\xb9\x24\x40\xb8\x01\x59\x2a\x7c\x53\x73\x83\x24\x97\x8f\x83\x71\x8d\x6e\xeb\xec\x77\x8f\x15\x27\x5c\xad\x1a\x07\xae\xe3\xfc\x23\x79\xbd\xbf\x2d\x53\x81\xc7\xe7\x71\x1f\x32\xe4\x37\xce\xf8\x30\x7a\x17\xa7\xd9\xb4\x71\x61\x3b\xf6\xc8\x24\x0e\x7d\x90\xb1\x09\x4c\xd1\x09\xc0\x89\x81\x0e\x53\xdd\x6f\x64\x3c\x2a\xf8\x2e\xe4\xce\xc0\x23\x51\x5d\xb6\xd9\xb7\xbf\xad\xda\x35\xf7\xf9\xbb\xf4\x6d\x45\xcd\xcc\xfe\x06\x35\xd5\x1c\x3b\x50\xcd\x04\x5b\x5b\x7b\xc0\xdf\xf1\x51\x3a\xe6\x59\xf3\x32\xfd\x47\x3c\x1a\x45\x30\xc9\x3c\x69\xbc\x3e\x68\x0d\xd2\x7e\xde\xfa\x99\x9f\xb5\xd6\xf7\xb6\x5a\xaf\xf7\xb7\x5b\x0e\x48\x09\x6a\x5a\x0e\xe3\x49\x32\xc9\xf9\xa0\xf1\x2e\xca\x80\x72\x89\x39\xf2\xce\x47\xc8\xe8\xc2\xd9\x0e\x3d\xff\x3f\x7b\xdf\xc2\xdd\xb6\x71\x2c\xfc\x57\x36\xba\xfe\x4a\x2a\xa6\x48\xcb\xae\xeb\x5a\x8c\x9c\x82\x20\x25\xab\xb1\x25\x57\x94\x93\xb4\x96\xaf\x0c\x91\x90\x08\x0b\x04\x18\x00\xd4\xc3\x8e\xff\xfb\x77\xf6\x39\xb3\xb3\x0b\x92\x72\x94\xde\xc6\x75\xcf\xa9\x43\x61\x5f\xb3\xb3\xf3\xde\xd9\x5d\x32\x2a\x5e\x41\x52\xd4\x3c\x4d\xf3\x53\xba\xe3\xe4\x1d\xaf\x1d\xcd\x66\xe9\x0d\xac\x57\x0b\x52\x81\xd4\xe6\xf7\xba\x85\x4c\x82\xe8\xbb\x40\x26\xe9\xf2\xb7\x20\x93\x90\xc8\x22\x64\x92\x51\x31\x32\x49\x11\xba\xfa\x9d\xe0\x92\x0c\xb7\x1a\x2e\x85\x1c\xb3\x1f\xfc\x77\xa1\xd3\xb9\x5b\xc7\xd9\xbd\xe6\x47\xf5\x84\xbe\x8e\x0c\x9f\xe5\xc5\x28\x1e\x6f\xb1\x6f\x5e\x0f\x07\x27\xfb\xf2\xf6\x1f\x31\x5a\x39\x89\xa6\x5b\x0c\x67\xb0\xb0\x4f\x2a\xf0\xfb\xfa\xf0\xc5\x16\xc9\x55\x50\x8f\x68\xac\xb5\xd6\xbe\xab\xe2\xe9\x2c\x8d\xaa\xf8\x19\xaf\xfa\xdd\x48\x3f\x60\xc1\xb6\x92\x72\xfb\x78\x8d\x0b\x8e\xe3\x35\x76\xb9\x91\x9c\x6d\x1f\xaf\xc5\x19\x5f\x8f\xf1\xf1\xda\x33\x89\x90\xef\xf2\xd1\x46\x39\x4b\xb2\x0c\xd2\x9c\x55\xcd\x34\x8f\xc6\x49\x76\x7e\xbc\xa6\xbf\x5f\xc4\x37\xdb\xc7\x6b\xd1\x65\x54\x45\xc5\x86\x53\x5a\x26\x1f\xe2\xed\xe3\xb5\x72\x1a\xa5\x29\x7c\xdd\x8a\x8a\x24\xda\x48\xa3\xd3\x38\xdd\x3e\x5e\xbb\x27\xac\x86\xeb\xaa\xd9\x78\x21\x9b\x37\xd6\x51\xd5\xb2\xba\x49\x79\x17\xef\xae\x92\x71\x35\xd9\x62\xf7\x3e\x8a\x1f\x9f\x66\xd7\x5d\x36\x89\x93\xf3\x49\x65\x7d\x7b\xa7\x9b\x76\xd0\x54\x24\x74\x30\x13\x6e\xb9\xd5\xc2\xcf\xd1\x60\x46\x17\xfd\x6e\x1f\xaf\x89\xff\x62\xa8\x8a\x91\x69\x35\xcc\xe7\xc5\x28\x46\x85\xf3\x32\x2e\x36\xb8\xa9\xbd\x7d\xbc\xc6\x7f\xef\x73\x1f\xc2\x02\xeb\xbb\x8e\x59\x8f\x67\xc7\xd9\x77\x1d\xb4\x56\xdf\x49\xbb\xe2\xd9\x71\x96\x4c\x85\x6b\xf4\x91\x4d\xa3\xd9\xae\x30\xac\x4a\xf6\x89\x9d\x15\xf9\x94\x35\x2e\xe7\xf1\x75\x83\x53\x52\x7c\x2d\x2a\x8d\xe3\xb3\x68\x9e\x56\x92\x2e\x3a\xdf\x7e\x2b\x06\xfb\x96\xed\xec\xfd\xfc\x72\xb0\xc5\xb8\x84\x67\x40\x01\x93\xa8\x64\xa7\x71\x9c\xb1\x51\x3e\x4b\xe2\x31\xcb\x2f\xe3\x42\xf6\x3b\x9b\xe4\x71\x96\x5c\xb7\xd9\x5e\xc5\xca\x49\x3e\x4f\xc7\xec\x34\x66\xd3\xfc\x52\xd7\xaa\x72\x76\xd0\x1f\xb6\x58\x35\x89\x33\x76\x15\xb3\x51\xc4\x39\x6b\x5e\xc6\x2c\xa9\x98\x0a\x46\x7f\x2b\xc7\x8b\xaf\xab\x38\x2b\x93\x3c\x6b\xcb\xaf\x1d\xfe\x1f\xe9\x40\x35\x02\x81\xb8\x86\xb0\xdb\x66\x45\x3e\x2b\xb7\xcc\x56\x86\x82\x9d\x89\x8e\x8e\x26\x31\x9b\x54\xd3\x94\xc5\xa9\xb8\xa1\x9d\x71\x11\x21\xc2\x49\xd5\x24\x66\x12\xfd\xe2\xf4\x4a\x94\x64\x71\xd1\x46\x2d\xdf\x8d\x93\xcb\x16\x2b\x67\x51\xf6\x0e\xbe\x76\xe4\x4f\x99\xb5\x68\x8c\x27\xf9\xa7\xca\xc9\xd3\x1f\x15\x42\xb7\x58\x63\x9c\x5c\x36\x5a\x60\xc9\xa5\xc9\x38\xaa\xf2\x62\x4b\x3f\xbf\xf9\x0c\x5b\x61\x4a\x90\x88\xa2\xf6\x34\xaa\x46\x93\x66\xa7\x39\x4e\x2e\x7f\xe5\x80\xac\x77\xd6\x69\x28\x4a\xf5\xab\x89\x64\x75\xa0\x1a\x6e\x07\xc9\x18\x35\xc7\x68\xe4\xe8\x08\xd2\x34\xbf\x62\xf1\x74\x56\xdd\xa8\x27\x37\xf8\x52\x96\x93\xfc\x8a\x89\xeb\xc7\x27\x79\x3a\xb6\x8e\x34\x68\x5c\xdd\x16\x12\xc5\xa5\x64\x1e\xfb\xf2\xc5\x5a\xfd\xb1\x88\x7f\x99\x27\x05\x17\x77\xe2\x3e\x06\xb7\xd7\x3f\x3f\x54\xbd\x0a\x01\x2b\xca\xc7\x51\x15\xb9\x6f\xd9\xd6\x4e\x78\x18\x57\x7c\x86\xf2\x39\x2f\x2e\x24\xd9\x15\x27\x59\xc9\xe0\x2d\x96\x17\x2c\x37\xe7\xf3\x5a\x2c\x19\xe5\x19\x46\x04\x4b\x4a\x81\x9c\xcc\x8b\x11\xcc\xf6\x1c\x03\xad\x5a\x20\x26\xf9\x55\xc9\x94\x20\x65\x89\x1a\x42\x9c\xbe\x28\x2b\xa6\x84\xa5\x26\x63\xc1\x80\x65\x5c\x5c\xd6\xac\x83\xaa\x2e\x15\x86\x83\x1e\xce\xdd\xf3\x2a\x06\x1a\x68\xb7\xdb\x20\x37\x9a\x6f\x1a\xe7\x5c\x39\x5d\xc4\x59\xe3\xad\x76\x97\x94\xd0\xdf\xf2\xa5\x5a\x1a\x04\x73\x56\x6e\xdf\x2b\xf2\xbc\x6a\xcb\x0d\xcd\xb6\x6c\x26\x39\xb8\x14\x0f\xb0\xf8\xe0\xb9\xe2\xc4\x6f\x80\xd1\xf4\x69\x6f\x67\x24\x7c\x21\x52\x1c\xdb\x16\xa3\x95\x72\x03\x44\x55\x59\x77\xba\x9e\xe6\xf3\xac\xaa\x81\xbb\xd3\x61\xcf\xa3\x6c\x9c\xc6\x63\x5d\x8d\x95\x49\x35\x17\x76\x74\x9b\xbd\x16\x3d\xb2\x29\xd7\x1a\x2c\xcb\x2b\x2e\xdc\xca\xb8\x62\x37\x71\xc5\xca\x5c\x24\x04\x39\xdc\x20\x1e\x89\xe3\x60\x49\x70\x44\x7e\x8d\xe5\x7b\x59\x30\xa3\x9a\x1a\x70\x12\x27\x10\x35\xf4\xd2\xab\x0b\x49\xdc\x29\x0a\xfb\xcb\x27\x15\xbf\x65\x5c\x49\xb2\x48\xe4\x2a\x61\xca\x11\x32\x57\x8e\xac\xab\x76\xb4\x3b\x2d\x60\xd3\x38\xa7\xa0\x03\x2c\xb0\x90\xaa\x08\x13\xba\x70\xf3\xb0\xdf\xf8\x8d\xa8\xa2\x88\x48\xdc\x57\x23\x11\xe4\x39\x31\x54\x3f\x67\xa0\x34\xc7\x37\x15\x79\xf8\x6c\x12\x47\x63\xf9\xb0\x3e\x9f\xf0\x73\xf9\x57\x73\xdd\xae\xa4\x13\xc6\xf9\x1c\x1c\x7a\x95\x2c\xc5\x01\x94\xa7\xb8\xda\x69\x2e\xfd\xaa\x36\xde\x40\xd5\x5d\x49\x37\xdd\x74\x78\x9f\x35\x3a\x45\x3c\xcd\xab\xb8\x3d\x9b\xcc\x3a\xe3\xe8\xb2\x23\x91\x52\x8a\x9c\x0d\x4c\x18\xbc\xea\xe6\xc3\xbf\xb6\x67\xd9\xb9\xc1\x93\x82\x9e\xdb\x90\x71\x36\x6e\x36\x82\x79\x35\xc9\x8b\xe4\x83\x18\xbf\xd1\x62\x8d\x5e\x1c\x15\x71\xc1\x4c\x5f\x9a\x4b\xd7\xeb\x7a\xf8\x79\xe3\x30\xfe\x65\x1e\x97\x55\x3c\xde\xf8\x29\xa9\x26\xbc\x93\x9f\x5f\xbe\x78\x5e\x55\x33\x55\xd0\x30\x6d\xcf\x62\xae\x80\x84\x23\xfe\xd1\x20\xf2\x13\x3a\x1a\xd9\xe6\x6a\xbc\x59\xc4\xe5\x2c\xcf\x4a\xaa\xcb\xe4\x2a\xeb\xc2\x76\x7e\xe1\x9c\xa5\x82\xd7\x16\x65\x15\xee\x9f\x34\xad\xab\xf6\x9d\x83\x5f\xa6\x6e\x59\x45\xd5\x5c\xbe\x27\xfb\xe7\x07\x7f\x76\xba\x96\xdb\xf4\x7c\xc9\xe5\x36\xfd\xbb\xd7\xdc\xd2\x89\x47\x82\xa1\x65\x53\xf1\x86\xdb\xbd\x8f\xa4\xc7\x4f\xef\xea\x00\x70\x27\xce\xe1\x75\x26\xbd\x98\x56\xd5\x29\x05\xec\x88\x59\x0d\x09\xc7\x28\x8a\xf3\x38\xac\xb2\x0f\x0b\x54\xef\x91\xc9\x4e\x87\xe3\xa7\xc5\xb2\x3c\x8b\xd9\x59\x3e\xcf\xc6\xcb\x47\x05\x3e\x5d\x84\x02\x91\xc7\x28\xd3\x18\xfd\x48\x58\xd8\xeb\x32\x34\x71\x6e\xca\xd3\xb8\x1d\xcb\xe5\x13\xab\x48\x35\x5e\x32\x8d\xce\x63\x61\xcd\x71\x16\x62\xc7\x6b\xf7\x3e\x22\x86\xfa\x74\xbc\xb6\xc5\xde\xb5\x98\xe8\xa1\x3d\x8d\xcb\x32\x3a\x8f\xd7\xdd\xc9\xe8\x33\x17\x9f\xb8\x21\x6d\x8c\xe7\xb5\xd6\x9a\x51\x0f\xe6\x1c\x27\xbc\xe2\xa7\x0d\xee\x16\x13\xfe\x45\x8b\xc9\x86\xfc\xbf\xf9\x2c\xde\x1b\xb7\x58\x52\xee\xa8\xf6\x51\x7a\x64\x6a\x4f\xf3\xf1\x3c\x8d\xf7\x44\xf6\xf1\x59\x12\x17\xac\xf3\xad\xd2\xd9\x2c\xcf\xd2\x1b\xf6\x6d\x47\x78\x6c\xe3\xfc\xea\x65\x3e\x8e\x5b\xca\x85\xdf\xcb\xf8\xaa\x73\x1f\xd0\xfe\x7b\x38\x3c\x74\x3e\x89\xc6\x9c\xb8\xb0\xfe\x91\x8f\x94\x42\xc7\x52\x0b\x9d\xe6\x79\x1a\x47\x59\x03\xd5\x16\xa8\xa7\x63\xb0\x6d\xf2\xad\x5b\x5f\x9d\x6d\xa3\x61\xac\x7a\x68\x74\x73\x8f\x56\xa1\x97\x00\xa2\xaa\x3f\xce\xe3\xb6\x30\xfd\xc7\xf8\x24\x15\x53\x7e\x8a\x38\x7a\x95\xcf\xda\xba\x81\x14\xba\xf9\x8c\xe3\x99\x0b\x79\x3d\x53\xb1\x1a\x52\x95\xe8\x65\x6c\xb0\xef\xd5\xf7\xb6\xae\xbf\xa5\x3e\x74\xd1\xf8\x45\x9c\x71\x03\x4e\xb7\x2a\x2d\x3c\xaa\x75\x64\x7f\xfa\x13\xd3\xbf\xdb\xb2\x01\xc1\xa1\x1a\x41\x15\x72\xc0\xec\xea\x5d\x5f\x65\x2e\x81\x92\xd1\xa1\xa8\xb0\x23\xa7\xa3\x5b\x91\x22\x6f\xf3\x13\x6e\xc3\x25\x5c\x99\xea\xcb\xcd\x50\xa5\x4e\xc7\x4c\x29\x4a\x4d\xbf\xb8\x86\x3c\x10\xee\x12\x2d\x99\x19\x1e\x11\xf5\xe8\x19\xf2\x93\x6f\x79\x05\x7f\x8c\xf7\xc6\x18\xad\x8a\x67\x6a\x50\x78\xa2\x8a\xc5\x19\x00\xf1\xcb\xa5\x9b\x34\xae\xd8\x24\xcf\x2f\xba\xb8\x5b\xca\x6b\xa4\x7f\x0e\x8c\xe4\xbc\xd3\x79\x92\x8e\x71\x11\xef\xca\x7e\x34\x34\xcf\xaa\xf8\xba\xf2\xa0\xa2\xd3\x61\x0f\xdb\x8f\x58\x22\xc8\x3f\xc9\x33\x5a\xae\x5a\xb2\x6d\x5a\x80\x0b\x7f\xfd\x95\xf7\x33\x8a\x46\x93\x78\xcc\x46\x51\x9a\xfa\x2a\xf3\xff\x49\xfb\xf0\xde\x65\x96\xcb\xf3\xa5\xe8\xcf\x76\x59\x16\xa1\x06\x53\x76\x28\xce\x3b\x9d\xcd\x97\xf4\x36\x8b\x0a\xee\x19\xeb\xde\xe4\x9f\x74\x0c\xeb\x2b\x1e\xaa\x6b\x53\x96\x17\x3d\x0f\xd9\x55\x52\x4d\x58\x31\xcf\xf6\xb2\xfd\xf8\x4a\x35\x55\x8e\x08\x69\x20\x2c\x43\x8d\x17\x3e\xba\x64\xe8\x93\x93\x1f\x5f\x0f\x4e\x86\xc3\x43\xf1\x3c\xd6\xe0\xe7\xa3\x93\x13\x29\xc3\xcc\x31\x40\x2a\xc5\x9c\x05\xf0\xf5\xd1\xa5\x2d\x3e\x79\x26\x20\xd7\x16\xc5\x3f\x84\xc8\x2f\x7d\x90\x8b\x92\x1a\x40\x44\x19\x44\xcc\x3d\xb2\xdc\x90\xd9\xfa\x4a\x70\x15\xf1\x79\x52\x56\x71\x81\x20\x93\x24\xcf\x12\xd0\x2f\x5c\x3b\x46\xe5\x4d\x36\x62\xa3\xc9\x3c\xbb\x60\x49\x76\x16\x17\x71\x36\xf2\x22\x1e\xe1\x5d\xfd\x6c\x9f\xe8\x51\xe2\xb1\xd1\x7e\xe5\x62\x54\xfb\xdb\xb4\xa3\xf1\xd8\x65\xc9\xc5\x13\xfd\x44\x45\x98\x08\xdf\x9c\xde\xb0\xb2\x14\xee\xb0\x38\x10\x0c\xb3\x4f\x4a\xcd\x43\x51\x36\x66\xa7\xf1\x59\x5e\xa8\xc8\x36\xe9\x26\x8b\x39\xdb\x9f\xc7\x55\x29\xb8\x2d\x1e\xfb\xe5\x4e\x59\x1c\x6a\x14\x6f\xdb\xe2\xc5\x40\x09\x67\x72\x3c\x2b\xaf\xc4\x08\x28\x3e\x3a\xd9\xef\x57\x12\x31\xab\x10\x8f\x18\x42\xf7\xd1\xc2\x5e\xcc\x3d\xa3\x5d\x44\x9d\xc3\x3c\x5f\x89\xbe\xb6\xee\x0a\xb4\x45\x44\xed\xe2\x53\x1e\xea\x92\xbe\x02\xd1\x4d\xae\xd2\xf1\x8b\x63\xc3\x16\x9c\xf4\x91\x86\x42\x74\x92\xb1\xcb\x79\x2c\x5e\x55\xf6\x88\x6b\x6e\x4f\x08\xc7\x2e\x4a\x0f\xb5\xf6\xb6\xd5\xb9\x33\x11\x47\xdb\xa3\x5d\x03\xfe\x85\x3b\x5a\x43\x8e\xa6\x3d\xad\x26\x9a\x93\x16\x5b\x8c\x56\x8e\x05\x89\x55\x5d\xcf\x19\x96\x81\x0f\x65\x43\x8c\x7b\x5f\x80\x75\x67\xe1\x95\x03\xb1\x82\x08\x94\x48\x2e\x84\x1f\xca\x44\x38\x18\x98\x4d\x80\xee\x47\x6c\x7c\x9d\x94\x95\xb4\xf8\x35\xce\x70\xcb\x5a\xc4\x5a\xdd\x6f\x43\x37\xdf\xb3\x37\x6f\xb9\x9f\x3e\x8a\xaa\xa6\xfe\xd8\x62\x92\x80\xb6\xd8\x1b\xfe\xe3\xed\x12\x9b\xc4\x9c\x93\x32\x86\xe0\x27\x4f\x5c\xdc\x75\x01\xba\xc7\x59\xa7\xf3\x3f\xac\x14\xee\xcd\xcb\x68\x36\x4b\xb2\xf3\xd7\x87\x2f\xb6\x4d\xcd\x0d\x83\xad\xf6\xf4\x7d\xd9\x9e\x46\x33\xdf\xbe\x4a\x3e\xda\xa8\xc4\x5e\x56\x91\x5f\xa1\x1d\x07\xf9\x6d\x14\xa7\xe9\x33\x0d\x3c\xff\x3c\x9a\xc4\xa3\x8b\xd3\xfc\x9a\x6d\x89\x10\xf1\xf6\xf1\x5a\x52\x06\xa3\x51\x3e\xcf\xaa\x61\x9c\x0a\xf7\xf6\x78\x8d\xfd\x6d\x34\x89\xb2\x73\x5e\x7a\x74\xb0\xbb\xfb\x62\x70\x32\x1c\xbc\x18\x84\x47\x7b\x07\xfb\x27\x41\x18\x1e\xbc\xde\x3f\x6a\x46\xb2\xd1\xfa\xf1\x1a\xdb\xd2\xfb\x28\xa5\xe8\x41\x75\xf7\x82\x7f\x3c\x5e\x63\x93\x64\x1c\xcb\x9d\x16\xd8\x11\xe9\xf8\x00\xac\x83\x5a\xf9\x6a\xd6\xa6\x86\x1a\xbd\x3d\x4e\xca\x59\x1a\xdd\xec\x47\x53\xf1\xb4\x96\xfe\x9c\x67\xaf\x8a\x78\x9a\x94\x71\x39\x8c\xa6\x0a\x1e\xb9\x07\x22\xbb\x49\xc6\xa8\x8f\x84\xcf\xd8\xec\xb3\x3c\x7a\x7c\xbc\x76\x2b\x40\xd9\xe5\x06\x67\x13\xd4\xe1\x82\xd1\x3b\x2b\x76\x41\xe6\xd5\xd8\x68\xdc\xa2\xf1\x34\x4a\xd2\xda\xea\x16\x35\x9c\xce\xab\x2a\xcf\xd8\x96\xc0\xc7\x3b\xd5\xbe\xdc\x28\xf2\x34\x2e\x37\xe4\x6a\x6e\x54\x45\x72\x7e\x1e\x17\x1b\xf7\x3e\x02\xc2\x3e\xbd\x3b\x5e\x63\xe2\xd6\x09\x18\xd6\xdf\xec\x78\x8d\x5d\x46\x45\x22\xd8\x7c\xfb\x78\xad\x88\xae\xcc\x16\x9f\x00\xa2\x9c\x45\x99\xe9\x69\x7e\xb1\x71\x96\xc6\xd7\x4c\xfd\x77\x63\x9a\x8c\xc7\x69\xcc\xc8\x00\xa3\x79\xc1\x4d\x49\xf1\x97\xd5\x19\x63\x1f\x3f\x32\x55\x7a\x98\xa7\x31\xfb\x1e\xff\x65\xe1\x74\x8b\xc1\x9e\x9f\xa4\x7b\xc6\xbb\x6b\xac\xb3\x4f\x56\xc4\x88\x23\x49\x84\xe6\x15\xdd\xc5\xd7\xb3\x28\x1b\x9f\x4c\xf3\x82\xaf\xa6\xd8\x44\x9c\x24\xe3\x71\xcc\xe7\x26\x8c\x51\x40\xbb\xa4\x1f\x3e\x3f\x40\x79\xc7\xe0\xdc\x5a\x86\x71\x91\xcf\xa0\xd1\x16\xff\x73\x63\xd1\x92\xf0\x0a\xe3\xfc\x2a\x73\xd6\x04\x75\x52\xe5\xe7\xe7\x72\xdb\xf2\x7f\x6e\xb7\xae\xd0\xc7\x34\x1f\xf3\x0e\x46\x69\x32\xba\xc0\xdf\x47\x69\x5e\xc6\x1b\x79\xb6\x21\x4b\x60\x4c\x25\x6c\xb7\x8f\xd7\x3e\xb2\x71\x9c\x46\x37\xcf\x93\x71\xbc\xc5\x1e\xb0\x4f\xd0\x1c\x63\x67\x9e\xe2\xa5\x4f\x93\xb2\x22\xeb\xf9\x5d\x9a\xb0\xcb\x8d\xb3\xbc\xe0\xa4\xc3\x57\x34\xc9\xc4\x3a\x95\x9c\x63\xe5\xbe\x29\xff\x53\xb0\xf0\x33\x5b\xf0\x7f\x27\x45\x4e\x0d\x91\x1a\x0c\x7a\x88\x48\xb4\x16\x2f\xdb\xba\xca\x92\x3b\x13\x82\x8c\xc7\x49\x8e\x51\x02\xa8\x91\xc3\xe5\xa3\x0d\x51\x47\x2e\xb6\xaf\xe6\xe5\x06\x47\x2f\x97\x9a\x88\x46\x7d\x15\x8d\xa0\x2e\x6a\x2a\x80\xb0\x96\x3f\x78\x47\x4d\x85\x96\x75\xb7\x41\xc7\x99\xec\xc7\x8f\x02\xa9\x16\x83\x7c\x22\xd7\x89\x7d\xd7\x11\xf8\xb4\x57\xa7\x93\x26\x16\xb1\xcf\x53\x9b\xd4\x39\x96\x7f\x93\x24\x9d\x27\x63\xb9\x71\x77\x7b\x21\x78\xbe\x72\x53\x44\x82\xbc\x8f\x8d\x51\x9c\x55\x5c\x70\x59\x2c\xca\x85\x00\x4c\x55\xa5\x22\xe8\xb1\xd4\x7f\x07\x3a\x87\x01\x2a\xaa\xbd\x7d\x59\x2e\x3a\xd9\x88\xdd\x5a\x4a\xb8\x14\x71\x34\xbe\xc1\xdf\xb1\xe4\x2c\xe7\x22\xef\xcf\xe2\xf1\x9a\x24\x06\xa5\x72\xb8\x37\xa3\x06\x6b\xac\xdb\xfc\x4b\x78\x42\x06\xae\x37\x92\x6c\x9c\x8c\xa2\x2a\x2f\x5c\x18\x3b\x0b\x91\x11\x5b\xa1\x57\x35\x9b\x71\x3c\x2b\xe2\x51\x54\x2d\x45\x88\xca\xc5\x19\xd7\xcd\x7c\xcc\x89\xba\xb8\xe5\xc4\x75\xa7\xb7\x9d\xb9\x0b\xcc\x22\x5b\x00\x7d\x93\xd6\x97\x95\x48\xb1\x24\x95\xa2\xc5\x7f\xab\x4b\x8a\xa6\xd1\x2c\x90\xd1\x42\xf1\xfb\xe5\xbc\x8a\x64\x80\x91\xa4\x5b\x98\x6e\x92\x52\x06\xf2\x07\x62\x43\x5d\xd7\x6a\xb7\x3b\xed\x76\x67\x12\xa7\xb3\xb8\x28\x3b\xf3\x2a\x49\x4b\xab\x91\x30\xc2\x83\x79\x35\x91\xcf\xe9\xf8\x9b\x45\xf3\x6a\xd2\x58\xfc\x68\xfd\x28\x9a\xc6\x29\xf7\x9d\x51\xe7\x5c\xec\x0c\xe3\xe2\x32\x19\xc5\x27\x41\x59\x26\xe7\x19\xff\x72\x94\xbf\x2e\xe3\xa2\x65\x95\xbe\x48\x4a\x21\xed\x64\x2d\x91\xc8\x44\x40\x19\xa5\x49\x9c\x55\x9d\x32\xae\xb8\x3d\x8e\xe6\x10\xa0\xfd\xc6\x46\xbb\x23\xff\x6c\x5f\xce\xe3\xda\x54\x14\x9d\xef\xa1\x56\x5c\x8e\x7d\xd5\x68\xe9\x77\xcd\x75\x74\x61\x8b\x7d\xd4\xbd\x7f\x52\x85\x76\x5e\x88\xa2\x19\x27\xb3\x40\xae\x83\x27\xb3\xc0\xb3\x2b\x7d\xbc\x3c\x8d\x00\x69\x83\x2d\x91\x44\xeb\xe9\x62\xe9\x56\x3b\xb7\x71\x1b\x2d\xd6\x30\x27\x80\x45\xf8\xda\xec\xbb\xcb\xea\x32\xf7\xd7\x60\xa6\xd1\x62\x6f\x1a\x42\x3b\xf2\x96\xa5\x72\x06\x4c\xa9\x68\xac\x5c\x6c\xea\x31\xd4\x6e\xdb\xd3\x5e\xda\x49\x36\x8e\xaf\x0f\xce\x64\xdc\x50\xbb\x10\xec\x19\xdb\xd8\x54\xd3\x34\x83\xb8\xbe\x84\x35\x8a\xf4\x06\xab\x22\xca\x4a\xce\x6d\x63\xb3\xf1\x4a\xcd\xba\xff\xf7\x51\xaf\x1c\xfb\xd4\x58\x87\xab\xe0\xac\xec\x02\xd5\x48\x24\x46\xcf\xf2\x54\xe4\x44\x9b\xae\x5b\xec\x23\x2c\x3e\x06\xdc\x56\x98\xea\xaa\x6e\xdf\x72\x09\xaf\x13\x63\x49\xef\xb4\x72\xde\x28\x43\x58\x71\xb9\x77\xa9\xdb\xd1\x3d\x78\xb9\x6c\x4a\x4e\x34\xdf\x34\xca\x49\x7e\xf5\x52\xee\x4a\xd1\xb5\x35\x02\x84\xac\x6f\x9d\x3b\x87\x97\x57\x07\xfb\xb4\x2d\xc1\x84\x31\xb1\x87\xb7\xed\x89\x20\x81\xa4\x83\x76\xa5\xf6\x8e\xed\x75\x82\x0d\x5e\x16\x5d\x45\x49\xb5\x50\x58\x34\xd1\x46\xe0\xbd\x71\x3e\x8d\x92\x4c\xe1\xdd\x22\x67\xb5\xad\xde\x82\xca\xa7\xf9\xf8\x66\xcb\xde\x46\x54\x2b\x75\x32\x9f\x27\x63\xb2\x78\xc9\xb8\x85\x6b\xf2\x39\x9e\xf0\x4a\x72\xb2\xd8\xe1\x57\x3f\x3f\xa1\x69\xf9\x76\x92\xb7\xb7\xb7\xd9\xc3\x07\x9b\xd6\xb6\xac\x9a\xbe\xe8\x92\x6d\xc3\x46\x35\x17\x02\xed\xc8\xc8\xbf\x36\x1d\x54\x4e\x17\xb9\x32\x8a\xbc\x05\x7f\xb6\xcf\x92\x6c\x2c\x16\xc5\xd9\x36\xd5\x1b\xe2\xd2\xfa\x13\x20\x39\xf3\x81\x1c\x30\x67\xbf\x57\x32\x2d\x90\x55\xd3\xde\x93\x4d\x2a\x91\x94\x6d\xf3\xd9\x4e\x24\x76\x8c\xaa\x5c\x91\x8c\x1c\xbc\xb1\x6e\x61\x77\x1c\x97\xa3\x2d\x46\x30\x76\x14\x5f\x57\x56\x2d\xf9\x79\x8b\x35\xa4\xca\x6f\x78\x81\xa6\x82\x42\x92\xab\x87\x99\x2c\x79\x71\xa7\x14\xeb\x51\x60\xff\x36\xa2\xbd\x53\xc2\x94\x14\x18\x8f\x15\x89\x59\xe4\x79\x8c\x4c\x3c\xb9\xb3\x87\x2c\x8e\x26\x6e\x49\x6f\xf7\xb5\xd3\x69\xac\xc7\x97\xef\x94\xb2\x31\x0c\x88\x99\xca\x37\x0f\xde\x3a\x0c\xe5\x12\xd0\x71\xcd\xa6\x3d\x09\xaf\x8d\x93\x4b\xea\x36\x30\x15\x97\x18\x27\x97\xc9\x38\x2e\x2c\xd3\x58\x1a\x83\xe7\x45\x3e\x9f\x61\xd7\xc8\x13\xa4\xa3\x25\xc2\x17\x29\x27\x45\x92\x5d\x68\x37\x73\x12\x47\x1e\xc7\x16\x45\xf1\xa8\x27\x67\x7c\xc5\xa8\x88\x83\x34\xd5\xa2\x1f\x22\x7b\x4e\x03\xd7\x88\x56\x7a\x33\x4a\x53\x91\x14\x51\x36\x3c\x3e\x24\xc4\xf4\x68\x09\x38\xa3\x32\x00\xe1\x40\x91\xb8\xee\x70\x87\x78\x95\xfe\x78\xd5\x8a\xd8\xa2\xbd\xd9\x2d\xec\xaa\xc6\x69\x84\xd9\xeb\x53\xa6\x7c\xd6\xbf\xb1\xab\xbe\xb4\x0e\xd8\x1d\x75\x37\x98\x46\x49\x7a\x07\xfd\x1c\x8a\x38\xd7\xb2\x6e\xbc\xa8\xa5\x9e\x72\x96\x5f\x15\xd1\xac\x06\x91\xc9\x98\x65\xc2\x01\xff\x37\x0c\xb6\xfb\x5b\x07\xf3\xe1\x1b\x5c\x67\x12\xd3\xf3\x32\x33\xfa\x6c\x73\xff\x02\xa9\x60\xdc\xd0\x34\x29\x2b\xde\x1b\x06\x5b\xc7\xbd\xb4\xf5\x9a\x64\x26\x10\x6a\x33\x90\x0a\x84\xe9\x58\xa1\xe9\x6c\x41\x64\x8f\xbb\xd0\xb2\x08\x06\xc0\xe5\x9d\x65\xd3\x82\xcf\xca\x0f\x96\x62\x72\x25\xf7\x17\x3b\xba\x35\xa7\x0a\xb4\xb7\x67\x3b\x6d\xe0\xf6\xd9\xdf\x6f\xeb\xff\x35\x5a\x8e\xeb\x27\x67\x45\xfa\x3d\x36\xd9\xb0\x5e\x4f\xb0\x74\x5c\xc1\xa0\x28\xa2\x9b\xd5\x3c\xc1\xa5\x4e\x9c\x6d\xb7\xfb\xe5\x79\xe3\xed\xfa\x71\x6d\xc6\xae\xed\x2d\xd8\xdd\x49\xd9\x6c\x04\x72\x90\xa6\xd8\x01\xa8\x97\xdc\x96\x49\x25\xd4\xb6\xdb\x53\x73\x59\x56\x5c\xbd\x82\x1d\x27\x97\x98\xed\xcd\xb1\x0a\x36\xbf\xd8\x98\x45\x63\x79\xb0\x07\x48\x73\xb2\xe9\xe3\x5b\x33\x51\x9b\x71\x39\x1b\x9e\x17\xc9\x58\xc7\xee\xa8\x6b\x1a\x88\x6c\x6d\xf6\x8c\x3d\x38\x5e\x53\x51\x2a\x5d\x65\xc3\xf0\x69\x92\x9d\xe5\xc7\x6b\xec\x7c\xce\xd7\x08\x4e\x15\xd1\x0d\x0c\xb5\x71\xe1\xd9\xe9\x30\xf0\x96\x1a\x63\x7b\xd9\x59\xce\x0d\x61\x2a\x65\x00\x2d\x00\x7f\x24\x5a\x88\xb0\xaa\x1b\xca\x92\x85\x10\xda\x76\x0d\x07\x93\x7c\x76\xb9\x51\xa6\x79\xb5\x45\x76\x22\x6c\x48\xd1\x94\xa6\x51\x71\x9e\x64\x1b\xd7\x62\xb6\x1b\x45\x72\x3e\xa9\xfc\x22\x53\x11\x9b\x47\x06\xb3\xa5\x7b\x29\xb4\xbe\x25\x4a\x16\x4e\x43\x4d\xdc\x19\x0f\x6f\x71\xb9\x65\x20\x60\x9b\xb2\x83\x16\x13\xc1\x89\x75\x29\x68\x65\xe6\x9e\x27\xda\x6e\xe4\xad\xac\xd3\x96\x56\x90\xbf\xa2\xda\x66\x14\xf5\x12\x8f\xf5\xc5\x48\xa4\x53\xec\x8e\xf9\x2a\x71\x6b\x76\xfb\x78\x6d\x1a\x67\xf3\xa4\x8a\xa7\x35\xc3\xe9\x25\xfb\xc8\x1a\xb0\x6a\x72\xd1\x4e\xf3\xaa\xca\xa7\x8d\x2d\x39\x47\x76\x9f\x6d\x8a\xe4\x27\x35\x4f\x7d\x11\xe0\x27\x7f\xc7\x88\x14\xc4\x2e\xe9\xc6\xe6\xc6\xa6\xd9\xa3\x4b\xe3\xb3\xca\xdf\xec\x6f\x62\x7b\x08\x30\x30\x11\xc7\x22\x0a\x5f\x65\xcf\xda\x89\x6d\x09\x8c\x63\x67\x4b\x82\xd5\xec\xa8\xe9\x12\x2f\xfd\x88\x06\x88\x8f\x2c\xc5\x8e\x79\x4e\x54\xe4\x02\x03\xbe\x20\xc2\x13\x22\x24\x29\xf7\xb2\xa4\x92\x67\x99\x6d\x3b\xdd\xd6\xec\x46\xd9\x62\x7e\xb5\x85\x93\x0b\x2c\xa7\x5d\x71\x56\xa8\x50\x01\x76\x14\x88\xd6\x70\xde\x4a\xed\xe2\xa8\x33\x56\xc1\xf2\xc6\xf5\xe5\x0a\xd8\x68\x5f\x3d\x03\x4b\x0d\x2b\x1d\xbc\x48\x03\xcf\x66\x1e\xc5\x6b\x0f\xf1\x19\x9a\xd1\x5a\x84\x46\x8b\x35\xce\xe3\xca\xe8\xad\xbc\x90\x5a\x72\x69\xdc\x73\x51\xb8\x53\xcf\xb7\x36\xca\xe9\x8c\x48\x43\x14\x35\xba\x66\xe5\xa8\xa9\x64\x4f\x7f\xaf\x48\x85\xac\x16\x20\xcd\x8c\xb8\xfe\x7f\x1f\x59\x24\x21\xf9\x64\x40\x64\x3a\x74\x5c\x5b\xc8\x11\xe6\x05\x53\xce\xea\xf3\x43\xac\x53\x14\x61\xad\xc1\x98\xc9\xb8\x47\x8b\x23\xf7\x49\xdc\xa9\xeb\x92\x6d\xf6\xe6\xad\x5d\x92\x94\x41\x76\xa3\x7a\xee\xab\xfd\x1e\x8d\x1e\x07\xf7\x65\x3e\x8d\x75\xb2\x0b\xdb\x7e\xc6\xbe\xf1\x6f\xfa\xd1\xf3\x40\x68\x08\x55\x63\xe5\x11\x6a\x07\xc0\x31\x1e\xdf\x1c\xac\x30\x8c\x16\xed\xe2\xf9\x27\xfb\x50\xcd\x78\x8b\x35\x6a\xcd\x06\x2d\x1c\xe5\x16\x60\xc3\x8a\xcf\x09\x39\xec\x04\x00\x25\x80\x24\xe0\xa7\x84\xbd\xaa\xac\x4e\xec\x69\xd1\xe7\x8f\xca\xd4\x4d\x4f\x23\xe0\x2e\x67\xa7\xb6\xb4\x56\x99\x9e\xc2\xee\xc2\xf9\xa9\xee\x56\x9c\xa0\xe2\x0b\x6d\x64\x50\xc7\xe0\x36\x86\x7c\x62\x64\x1f\xe7\x59\x1b\xcd\xfc\x0b\x01\xcc\x72\x18\x6a\xb6\x25\xa0\x4b\xb5\x1b\x41\x4d\x78\xae\x60\xaa\x1b\xe1\xf9\x75\xbe\x65\x47\x07\xfd\x83\x2d\x16\x9c\x55\x71\x61\xee\x69\x38\x4f\xaa\xc9\xfc\xb4\x3d\xca\xa7\x9d\xfc\x2a\x1b\xa5\xf9\x7c\x6c\x7e\x6c\x8c\xe3\x32\x39\xcf\x36\xca\x9b\xb2\x8a\xa7\x9d\xd9\x3c\x4d\x3b\x7f\xde\xfc\xab\xcc\xa5\x9d\xc6\xc5\x39\x17\x9f\xd5\x24\x2e\x62\x76\x95\x67\x0d\x71\x42\x32\xca\x58\x7c\x5d\x15\x91\x38\x4d\x2d\x52\x73\xc5\x59\x43\x53\x9e\xc5\xf1\x58\xe4\xec\xde\x70\x63\x52\x1c\x3b\x6c\xc3\x16\xaf\x16\x93\x86\x18\x4e\xab\x8c\x3d\x93\x7d\xc9\x2b\x6e\x65\xa0\x66\x8b\x71\x83\x46\xdc\xa8\x10\xa5\x1c\x44\x6e\x6a\x95\x5b\x4c\xe6\x03\x98\xab\x62\xcc\x94\xc7\xef\xe7\xe2\xe4\x1f\x3b\xe8\x0f\xe5\x98\x2a\xe5\x41\x10\x1a\xb7\xd5\x64\xf7\xea\x40\xf2\xe6\xe3\x07\xb3\xeb\xae\x46\xa6\x42\xe0\x5a\x6b\x4d\x0b\x8c\x83\x74\xbc\x37\x80\x03\x28\x59\x74\x99\x9c\x47\x55\x5e\xd0\x2c\x75\xf6\xa7\x3f\x99\xd3\x10\xd3\x32\x89\xd9\x9b\xbf\x6c\x3c\x7d\x7b\x7c\x7c\x7c\x7c\xda\x91\x4f\xc0\x9b\xa6\x22\xc0\x1d\x9c\xc7\x59\xd5\xae\xf2\x17\xf9\x55\x5c\x84\x51\x19\x37\x55\x22\x2d\xb9\xe5\xc3\x49\xb7\x85\x3c\x4e\x45\xb0\xcd\x64\xac\x4e\x2b\xad\x0b\x39\x35\x1e\x8b\x94\x54\xf4\x59\x65\x3f\x16\xc7\x59\x1a\x57\xec\xf9\x20\xe8\x8b\x2f\x72\x8a\x32\xe9\x5d\xbc\x74\x63\x8f\x6f\x75\x34\x2a\x71\x72\xb8\x6c\x29\x22\x0f\x6c\xdb\x20\xe9\x7b\x5e\xab\x3d\x8d\xc7\x49\x24\xb2\x3b\x94\xb9\xd1\x60\x5b\x2c\x81\xb3\x1d\x68\x54\xf1\x2e\x0d\x1f\xfd\x8d\xe8\xea\x2d\x6f\xd5\xb4\xbf\x6c\xb3\x8f\x2c\xe1\x5c\x97\xc5\x57\x6c\x18\x57\xcd\x75\x35\xa9\x72\x8b\xbd\x79\x2b\xee\xd8\x40\x19\xc6\xdf\xc8\x9c\xe5\x64\x5c\xb6\x27\x51\xd9\x4c\xc6\xeb\x24\x09\x17\xca\xa3\xf1\x98\x97\x5b\x49\xa4\x1c\x3b\x23\x79\x8e\x89\xcf\x44\xa6\x80\x76\x69\xbe\xb2\x98\x64\x34\xf3\x27\x29\xbb\x77\xa2\x8c\x26\x45\x3e\x8d\x05\xd7\x8d\xe3\xcb\x2a\xcf\xd3\x52\xde\x8a\xf2\x3e\xba\x8c\x24\xf7\x6e\x8c\xe3\xd3\xf9\xf9\x39\xf7\xa3\xdd\x1e\x05\x4f\x4d\xa3\x8b\xb8\x54\x39\xa9\xdc\x3a\x2c\x59\x92\x95\xc9\x38\x56\x78\xac\xa2\x73\xce\x77\xc5\x85\x08\x89\xc4\x45\x7a\xc3\x19\x20\x14\x23\xbb\x09\xbb\x63\x71\x55\x6a\xe3\x98\x73\x8d\x4e\x74\x7d\x7d\xf8\x62\xbb\xc1\xee\x33\x35\x39\x35\xf7\x52\x3c\xb2\xc6\x1a\xec\xdb\x4e\xc3\xc9\xe1\x55\xb3\xdd\xea\x74\xca\x2a\x1a\x5d\xe4\x97\x71\x71\x96\xe6\x57\x62\xa6\x51\xe7\xe1\x5f\xfe\xf2\xe0\xd1\x5f\x9f\x3c\xae\x19\xde\x97\xf2\x6c\x43\x84\x52\x6f\xc7\x51\x15\x6d\x45\xb3\x59\xaa\x2e\x3e\xea\xbc\x2f\xf3\xac\x7b\x1a\x95\xf1\x5f\xfe\xdc\x6a\xb0\xfb\x75\xe7\x60\x4e\xab\x3c\x6a\xce\xb3\xb8\x1c\x45\xb3\xb8\x19\x8b\x9b\x3f\x5f\x1f\xee\xc1\x69\xbf\xbf\x0f\x0f\xf6\xdb\xfa\x56\xa5\x1b\xb3\xb2\xeb\xeb\xeb\xf5\x9d\xba\xc8\xf8\x44\x29\x44\x91\xa1\xba\x9b\xc2\x43\x28\x56\x39\xdb\x66\xe3\x7c\x24\x6e\x8e\x51\x87\x41\x07\xb2\xa0\xd9\x10\xf5\x1a\x6e\xaa\xb7\xd5\xbe\xad\x1e\xa7\x69\x70\xf1\xd0\x19\x95\xa5\xbb\x54\x86\x6c\x39\x6f\xae\xd7\x27\xfb\xeb\x1e\xcb\xb8\x0a\xaa\xaa\x48\x4e\xe7\xdc\x24\x17\xad\x1a\x2d\xe0\x6e\x17\x20\x3e\x00\x97\x2b\x62\x03\xc8\x7a\xc1\xcb\x33\x96\xac\x08\x93\x9e\xc4\x91\x38\x27\x6e\x3e\x9c\xc7\x95\x42\x41\xd9\xbb\x39\x8a\xce\xf7\xa3\x69\xdc\x6c\xf0\x6a\x8d\xf5\x37\x0f\xde\x2e\x3f\xe4\xc0\x47\x50\x27\xa3\xc3\x49\x92\x8e\x9b\xf6\x82\x2c\x5e\x3d\x89\xf5\xe1\x24\x8e\xab\x06\x67\xa3\xd5\x16\x53\x0a\x25\x69\xf9\x70\x3a\x5b\xb6\x68\x30\x48\x7b\x54\x8a\x3d\x57\x2d\x0d\xdb\xfe\x63\x48\xfc\x7f\xed\xb3\x24\xad\xe2\xa2\xd9\x93\x07\x3c\xbd\x2b\xa9\x9e\x0a\x38\x3e\xce\x1a\x0b\x26\xea\x3f\x11\xa0\x4f\xcd\x8f\xe3\x6b\x03\x0d\x17\x96\x65\xf2\x21\x66\x1b\x6c\xd3\x99\x93\x72\x67\xe2\xeb\x6a\x5f\xca\x4d\x42\xc9\x47\xaa\xa4\x06\x25\xb2\x79\x96\x8f\xe3\xd2\x8c\xa7\x11\x34\xe2\x0b\xc7\xdb\x96\x5e\x6a\x13\x8d\xde\x08\x50\xdf\xae\x40\xd1\x45\x3c\xcd\x2f\x63\x49\x0c\x56\xd3\xfa\xce\x95\x7f\xb7\x42\xe7\x49\x56\xc6\x45\xd5\x13\x67\x19\x9a\x1a\x19\x2d\xb6\x78\x1c\x91\x9d\xb7\xb4\x6b\x4c\xc4\xba\xe7\x9a\x65\xfd\x54\x77\xc6\x81\x9e\xf1\xf5\x9f\x6f\x38\x2d\xf2\xab\x32\x2e\xac\x33\x0d\x9d\x0e\x7b\x37\xbc\x99\x9e\xe6\x29\xba\xbb\x6e\xac\x6e\x38\x4c\x72\x74\x3f\x3d\x52\x7d\xd5\xe8\xd1\xd3\xb6\xb2\x35\x93\xbc\x13\x8f\xa6\xd1\xc3\xbf\x3c\xec\xfc\x4f\x19\x8f\x36\xca\x05\x9d\x1d\x67\x8d\x79\x19\x8b\x5b\x68\x46\x55\xa3\x2b\xdf\x60\xb8\x27\xf6\xbf\x45\xc4\xbe\xd9\x68\xb7\x3b\x89\xba\x24\xb1\xec\xc8\x49\x8a\x7b\xb3\x78\x45\x7c\x0f\x56\x5d\x93\xb1\xb9\x9b\xb1\x34\xed\xe4\x6d\x5b\xb5\x4d\x64\xb1\xa9\x3d\x89\xca\xda\xaa\x93\x08\x7a\xd5\xbb\xf2\xb5\x95\x93\x72\x43\x5e\x41\x63\x9a\x58\x2f\x3a\xdc\xd4\x36\x94\xad\x36\x64\xed\x8d\x99\xaa\xde\x58\x6f\x9f\xa9\x7e\x46\xf9\xec\x06\x5d\xfc\x05\x4f\x44\xd4\x76\xc9\x5b\x6c\xa0\x33\xd9\xba\xd7\x24\x2e\xd5\xb5\x64\xbc\x5f\x79\xd1\x99\xa4\x06\xb6\xad\xf0\xd6\x96\x7f\xfb\x1e\xaa\x40\x87\x3c\xed\xa6\xd6\xd1\xed\x3f\xfd\x89\x35\xbf\x69\x36\x10\x19\x08\x99\x8b\x5b\x00\xb5\xe8\xb7\xbf\x3b\x1d\x36\x8c\xce\xa2\x22\x61\x9b\x0f\xd9\xe9\xfc\x9c\x7f\xc3\x2d\x9a\xeb\x98\xae\xec\x57\x25\x8f\xb3\x75\x74\x4b\xa1\xc8\x9a\x90\x57\x18\xf5\xa1\xc5\xb0\xca\x8b\x58\x59\xc4\x72\xb8\xab\x22\x9a\x31\x35\x01\x7c\x7a\xfd\x2c\xe7\x08\x2f\x0a\xbe\xd4\xc2\xfe\x12\x07\x62\xcd\x60\xcc\x22\x6f\x39\xa4\xec\xe5\xa7\x82\x73\xb6\x75\xa4\x4c\xc3\xae\xdd\x3e\x49\x14\x30\x0d\xcf\x73\x9e\xdf\xb1\x4d\x71\xbe\xc6\xbc\xe7\xa9\x1e\x66\x06\x00\xbe\x47\xbf\xcd\xf3\x37\xb8\xbe\xbe\x7b\x93\x8f\x56\xc4\x25\x97\x17\x32\x22\x82\x5f\xdb\xb4\x60\xd6\xa2\xe7\x7b\x61\x93\x5b\x78\x47\xe0\x1a\x0f\x5b\x9c\x32\x63\x83\xf1\x79\xcc\x36\x1f\x99\xdb\xb2\x55\x03\x30\x15\xd6\xe5\xa1\x7e\xe7\xbb\xc9\x36\xda\xb2\x91\x41\x66\x69\x2f\x3f\xdb\xaa\x87\x0b\x3d\xd1\x46\x3b\x6c\x34\xd6\x17\x51\xc4\x1b\x89\x9f\xb7\xe6\x4c\x3c\xf6\xc2\x64\x19\x7a\x5f\xb2\x96\x0f\x9b\x16\x36\x5b\x16\xa4\xe8\x29\x33\xf1\x37\x7e\x7c\xd0\x6a\x06\x4c\x61\x6e\xc6\xa4\xdc\x22\xdf\xd2\xb4\xbb\x69\x8f\xac\x57\x68\xad\x2e\xd5\x83\xbc\x30\xb8\xbe\xb3\x90\xab\x66\xd2\x8d\xbe\x43\x94\x5c\xda\x09\xf7\xd3\x5a\xe8\x6f\x54\xe2\xfa\x99\x75\x86\x56\x98\x7f\x5a\x6f\x98\xf6\x45\x7c\x1e\x5f\x73\x67\xb2\xf3\xbf\xb2\xc2\xf1\x71\xb3\xd9\xfe\x76\xfd\xf8\x78\xfd\xcd\xff\xae\xbf\xbd\x7f\xaf\x23\xaa\xda\x42\xb2\x49\xc0\x6a\x31\x4b\x90\x98\x67\x70\x3c\x2f\xee\xc8\x02\xf1\x48\x8f\x61\x40\xd4\xb6\x49\x2e\xe9\x2d\xb5\xd8\xd3\x82\x5d\x5e\x8e\xca\xbe\x97\xc1\x19\x91\xdf\x73\x70\x26\x08\x8f\x7f\xb0\xde\x59\x28\x6d\x24\x6a\xac\xca\x33\xa0\x25\x5a\x76\x06\x37\xf9\x36\x17\x90\x61\x4b\x75\x84\x5e\x87\x6b\x58\x03\xf2\x79\xb0\x6d\xbd\x24\xdf\x2b\x00\xd4\x65\xbd\x4f\x5a\x6c\x63\x93\xc3\xa9\xbe\x16\xb1\xb8\xd9\xaa\x29\x17\xa0\xc5\x1a\xf7\x36\xd1\x0b\xfe\x6a\x00\xd9\xa3\xe0\x10\x22\x51\x78\x89\xf5\xc6\xed\xba\x22\xa3\xfa\x9b\x2c\xe5\xed\xb1\x66\x71\xe4\x72\x6f\xb9\x32\x46\xdf\x9f\xb9\xd6\x5a\x03\xfd\xf8\x53\x9c\xa6\x3f\x64\xf9\x55\x66\x14\x51\x9d\xaa\x17\xfa\xf1\x2a\x4e\xd3\x8d\x0b\x5e\x5f\x99\x1e\x0d\xb8\x91\x57\xf1\x4b\x52\xc5\x45\x54\xe5\xc5\x3b\x06\x95\x15\x86\x6f\x6b\xd6\xe8\xae\x8e\x33\x2f\xb0\xcd\x86\xae\xd0\x50\x77\x71\xfe\x16\x83\xe7\xde\x59\x92\x8d\xf7\x94\xa9\xee\x6f\x21\x1e\xf5\xd8\x90\x83\x72\x86\x58\x6f\x9b\x36\xaa\x93\x68\x3c\x3e\xca\x5f\x67\xe5\x28\x9f\x71\xe6\xa8\xb7\x11\xa2\xf1\x78\xa3\xca\x37\xe6\x50\xd5\x00\x22\x46\x79\x29\xa2\xa3\xaf\xcb\xb8\x3c\xca\x5f\x48\xe5\xb4\x18\x2a\x19\x4e\xdd\x98\x97\x71\xc9\x3b\x96\x0a\x0d\x99\x1b\x3b\x7b\xfb\xfd\x93\xbd\xfd\xfe\xe0\x67\x26\x1e\x48\x54\x70\x6b\x34\x0d\x7f\xd8\x7b\x35\x3c\x79\x7e\xf0\x62\x30\x04\x71\xac\xde\x6c\x1d\x0e\x86\x27\x47\x07\x27\x2f\x06\xfb\xbb\x47\xcf\xf5\xdb\x26\x2e\x80\x4d\x18\xc2\x10\xc5\x50\xdc\x6d\x99\x35\x2a\x56\x5e\x24\x33\x36\x11\x87\xda\x84\x65\x83\xe0\x49\x32\xf6\xe6\xed\xba\x4c\x2b\x69\x6e\xae\xbf\x81\xa2\xb7\x4d\xeb\xea\x39\x02\xa5\xbc\x1b\x07\x5f\x0a\x2d\xba\x40\xd6\xb0\x99\xa6\xf7\x5e\xe8\x45\x14\x18\x79\x7a\x12\x9e\x87\xbc\x53\xb6\x8a\x0a\x21\xeb\x1a\x62\xc4\x46\x4b\xbe\xc2\x44\x39\x13\x83\xfb\xeb\xaf\xe2\xca\x59\x8c\x49\xcd\xb3\x06\x4a\x24\x3b\xcd\xb7\x26\x17\x6b\xa7\xd1\xe8\xe2\x2c\x93\x6f\x9a\xab\x17\xcc\x41\x68\x98\xf7\xcd\x8d\x78\x01\x52\xd6\x37\x0d\x98\x3e\x5a\xb7\x7d\xc3\x1c\x1e\xf1\x35\x68\xfe\x0c\xfc\x6d\xfc\xed\x6f\x88\xd4\x8f\x33\xca\x27\x84\x76\x94\x88\x5a\x99\x77\xc5\x9e\xed\x62\xfe\xe0\x55\x4c\x7d\x91\x58\x1a\x4a\x3b\x33\x8b\xcb\xf2\xe0\x6c\x4f\x33\x75\xbd\x55\xcf\xdb\x6c\x8c\xa0\xd1\x46\x7e\x86\x65\x81\xe1\x97\xbd\xfd\xf0\xe0\xf0\x70\x10\x1e\x9d\xec\x1d\x0d\x0e\x83\xa3\xbd\x83\x7d\xb6\xcd\xbe\x59\x30\x26\xa2\x72\xd1\xe1\x69\xaa\x1f\xb2\x90\x04\xcd\x61\x87\x92\x2e\x5e\x8b\x77\x50\xe3\x33\x69\x9c\x37\xad\x21\xea\xb2\x8a\x2a\x4a\xd3\xbe\xd9\x19\x42\x2e\xf2\xe9\x16\x93\x1d\x7e\xba\x03\x91\xfc\x19\x5e\x5f\x52\x0a\xe0\x17\xb5\x10\xd3\x36\x0d\xaa\x3c\x38\x2d\xf3\x74\xce\x1d\xfa\x45\xb2\xbf\xca\x37\x22\x55\x71\x43\x08\x02\xd4\xc3\x12\x01\x6d\x8b\x63\xd9\x44\x0c\x16\x8f\x97\xcc\xaf\xca\xe5\x58\xf1\x98\xce\x53\xc6\x20\x96\x7a\xb7\xb2\x1a\x72\x6b\x55\xf3\xab\x15\xd5\xbe\x5f\xdf\x13\x2d\xf5\x3c\x92\x8f\xec\xc6\xe5\x70\x3e\x53\xaf\xcc\xac\xa0\xaa\x26\x51\xb9\x51\xca\x76\x1b\xa5\x6c\xf8\x3b\xeb\xc0\xe7\xc1\xf0\x64\xf8\x6a\x10\xee\x0d\x86\x27\xc3\xd7\xaf\x5e\x1d\x1c\x1e\xd9\xea\xcc\x99\x49\xb3\x21\xac\x3c\x03\xd7\xca\xba\x50\xb5\x6b\xb1\x8f\x2c\x08\xc3\xc1\x70\x78\x70\x38\xd4\xac\xf4\x60\x8b\x3d\x68\xb1\xcd\x2d\xf6\x50\xeb\x2e\xa1\x81\x25\x60\x6c\x9b\x2e\x4e\xb3\xa1\xb0\x64\xa0\x90\x96\xe8\x90\x8f\x20\xf6\xfd\xa5\x29\xaa\x0a\xa7\x11\x27\xe2\x97\x51\x35\x69\x4f\xa3\xeb\x5a\xd5\x28\x9a\xfc\x66\xb5\x28\x7a\x11\xad\xcf\x94\x8a\x11\x2e\x7c\x96\x57\x12\x33\x1b\x69\x72\x11\xb3\xc1\xf0\x91\x32\x8f\x4b\xb1\xad\xd9\x3f\x78\xa9\x2e\x0c\x2e\x6f\xa3\x4e\xbf\xf1\xad\xdf\x02\xbd\x2a\x80\x43\x3a\x55\x1a\xec\x65\x15\x15\x55\x8b\xc5\xd9\xd8\x8a\x0c\x1c\x70\xb3\xc7\x66\x4b\xeb\xc1\x10\x5e\x27\xd5\x44\xa8\x59\xbe\x79\xa0\x83\x9a\xa8\xd6\x85\xa8\x60\x49\x15\x3d\xa8\x5b\xf9\x4c\x3c\xd2\x4d\xab\xc7\xd9\xd8\xf1\xc8\xd5\xe0\x5b\x1c\x72\xda\x93\x88\x09\x88\x23\xab\x72\x9d\x15\x11\xcb\x7b\x60\xde\xa9\x9b\x1f\xa3\xf3\x58\xfb\x30\xb2\xd6\xff\x28\x1a\xb8\x12\xdb\xd0\x49\xd5\x28\xd9\x2c\x2f\xcb\xe4\x34\x8d\x01\x40\xeb\x66\x7d\xe9\x94\xb7\x58\x86\xdf\x8a\x97\x12\xb7\x79\x80\xcf\xc7\x84\x96\x5b\x7c\x80\xdd\xe4\x2e\x0a\x64\x8c\x8a\xbc\x2c\x37\x8a\x38\x4a\xa7\x86\x80\xb0\xe7\xa6\xe2\x5d\x56\x6f\x4e\xb8\xcb\x2e\xdd\x96\x3a\x93\xd3\x85\x86\x0c\x55\x40\xb1\x2f\xfb\x38\x8f\x0d\xb0\xc1\x3b\x7d\x85\x08\x9f\x10\xc2\xfd\x2e\xea\x0c\xfd\xf5\x46\x51\xef\xdb\xae\xbd\x45\x42\xa7\x20\x5f\x7f\x5f\x0a\x13\x46\x55\x2d\x16\x68\x81\xb5\x9b\x64\xa0\xb0\x5e\x66\x10\x92\x45\xfa\xd3\x07\x2d\x76\xd1\xe2\x54\xea\x3e\xef\xa7\x4d\x4e\x15\xe3\xca\xe2\x2b\x17\x0a\x4c\xc0\x12\xa2\x2d\x0c\xd0\x7a\x73\x1a\x5d\x37\x39\x0f\x6c\xf0\x61\x1e\x98\xc7\x11\xc5\x43\x86\x99\x7c\xc4\xf0\x82\x7d\xc7\x01\xe8\xb2\x8b\xfb\xf7\x5b\x2c\xbb\x7f\x7f\x5d\x4c\xf8\x42\xe4\x24\xac\x13\x4d\xd8\x34\x24\xda\x62\x07\x6f\x2e\x4c\x38\x4e\x7e\x6e\x1b\x0e\xce\xea\xa3\x4d\x77\x63\xbb\xdc\x85\x5d\xb1\x97\x55\xf1\xb9\x08\x6a\x2e\x30\x0f\x44\x95\xdf\x66\x8c\x2c\xb7\x42\x88\xf5\x11\x39\x42\x66\x89\x66\xd6\x7a\x5e\x2e\xd6\x5d\x59\x31\xff\x35\x36\xc8\xec\x73\x8d\x90\xd9\x6d\xad\x10\xc7\x7a\x10\x1f\x85\x92\x92\x1f\x93\x4c\x7d\x7c\x19\xfc\x7c\x32\x0c\x76\x06\x27\x7b\xfb\x47\x83\xdd\xc1\x21\x67\xd6\xeb\xcd\x1d\xfc\x3f\xa8\xb9\xf7\xf2\xf5\xcb\x93\xe0\xc5\x8b\x83\x9f\x06\x7d\x05\xf7\xc9\xe0\xe7\x70\x30\xe8\x0f\xfa\x6c\x9b\x35\x5e\x46\xd7\xc9\x74\x3e\x65\x51\x9a\xe6\x57\xf1\x58\x2b\xbb\xf8\x7a\x24\x72\x9e\x1a\xf5\x66\xcc\xec\x6e\xec\x98\x99\x31\x64\xc4\x8e\x83\x3c\x85\xc1\x14\x49\xb0\xfc\x8c\xfd\xed\x6f\x8a\x4e\x7e\x57\x8b\x65\x46\x4d\x96\x19\xb6\x59\xc6\x71\x1a\x57\x71\x28\x32\x28\x45\x2c\xa0\xdd\x6e\x8b\xec\x2d\x1c\x03\x00\x63\xa6\xde\x8a\x59\x66\xc2\x44\xa3\x6a\x1e\xa5\x43\x3e\xea\x42\x63\xc6\x6a\xa3\x03\x08\x86\x4d\x68\xa4\x01\x55\x96\x3b\xbc\x62\x26\x2d\x35\x5a\x1f\x26\xd7\x62\x81\x54\x3b\x45\x3e\x6d\xb1\x2a\x47\xd6\x86\x33\xca\xf6\x36\x7b\x60\x1d\x80\x36\x1d\xb3\x6d\xb7\x67\xa1\x51\x94\xfe\x02\x8d\xee\xeb\x74\xb3\xb6\xd3\x07\x46\x13\xfa\xba\xe7\xd8\xdd\xc0\x08\xb4\x87\xab\x03\x94\x40\xb0\xc1\x1e\x2e\x1c\x65\x9a\x64\x42\x75\x1a\x1d\xd1\x44\xb4\xb1\xce\x35\x69\xcb\x85\x64\xbd\x6b\x69\x6e\x3e\x73\x5e\xe7\xbe\x05\xcb\x86\x67\xbc\x67\x0e\xb3\x5b\xe7\xa3\xec\x87\xde\x97\x70\x3b\x01\x22\xd0\xe2\xcb\xd2\x26\xdc\xec\x70\xc0\xb0\x6c\x83\x0b\xb0\x0d\x9c\x8a\xc2\x52\x40\x10\xaa\xe8\x10\x26\xea\xfb\xec\xc2\x7e\xb6\x9e\x57\xf1\xda\x13\x92\x12\x0f\xde\xf0\x1a\x6f\x29\xf0\x60\x4f\xb8\x40\x20\x0b\x19\xa1\xd7\x03\x2e\x86\x54\x4f\x0d\xd3\x8f\x98\x24\x5e\xcc\x05\x53\x35\x93\xbd\x60\xf7\x6b\x61\x12\xab\x96\xab\x4a\x08\x38\x62\x94\x22\x9c\x1c\xbc\xa9\xf2\xb7\xdc\x90\x97\x68\xe8\x92\xbc\x17\x49\x7b\xb2\x96\x6b\x9d\x9a\x49\xa5\x31\x37\xe2\xd8\xb3\xba\xc9\x10\x68\xd8\xc5\xc6\xc6\x3a\xf4\x7d\xc1\x36\xd8\xe6\x5b\x97\x79\x31\x76\x9f\xad\x86\xdd\x7a\x64\x9a\x1e\x34\xea\x39\x08\x2b\x62\x57\x26\xf4\x2c\xc4\x30\xa9\x72\x77\x58\xfe\xe4\x67\x0d\x1b\x9d\x16\xa5\x70\x84\xde\xc7\x93\x7d\x8b\xc5\x90\x28\x7c\xf8\xd6\x26\xf7\x03\x20\xf7\xd5\x56\xd0\x32\xb1\x03\x6a\x5d\xff\x96\x2c\x93\xbb\x48\xee\x50\xfb\x22\x4a\xd5\xe2\x9d\x61\xfd\xcd\xda\xfb\xf5\x56\x46\x5b\xba\x4e\x19\xde\xd4\x95\x51\x9b\x69\x7c\x38\x10\x5b\xb2\xc7\xc7\xe5\xb7\x10\xf3\x7d\xf3\xbf\xac\xf9\xf6\xdb\xf5\x8e\xaa\xb7\x1f\xbc\xe4\xb5\x1a\xe2\x40\xbd\x36\x7c\x74\xef\x26\x8b\xa0\x64\xef\xda\xf2\xe5\x65\x3d\xad\x95\x8d\x1f\x3d\xf2\x86\xe9\x6b\x43\xbe\xbe\xec\xc9\x38\xf9\xa6\x29\xc0\x49\x32\x77\x7e\xda\xe7\x25\x7b\xc8\x4e\xbd\x96\x98\xd1\x6d\x37\x8f\xad\x23\xb8\xc5\x8d\xc7\x57\xad\x5d\x0c\xf4\xda\xa6\x7a\x1b\x4c\xa2\x7e\xfd\xcd\x26\x62\x1c\x26\xde\xe5\x60\xf2\x61\x0e\x9f\x2f\x8c\x76\x81\x3f\xd1\x1d\xd9\x4f\xbf\x99\x82\x25\x69\xfe\x10\xdf\xd4\xef\x11\x2a\xea\xbd\x88\x6f\xca\x3b\x8c\x1c\x6b\x72\xd9\x2b\x07\xe6\x09\xd2\x65\x20\xe8\x36\x1b\x49\xb9\x01\x0f\x97\x1a\x3e\xe2\x86\xb9\x84\xa7\xfd\x91\xc5\x59\x55\x24\x71\xd9\x92\x8f\xb3\x95\xec\x93\x36\xce\x4b\x96\x4c\x67\x32\x0d\x2f\x92\x09\x3c\xe0\x02\x4a\xe7\xc5\x7a\x4a\xe0\xe8\xe0\x64\xb0\x7f\x74\xb8\x37\x18\xda\xef\xaa\xe2\xbd\x92\xa5\x11\xbc\xa4\xb2\x22\x73\x12\xdb\x80\xfa\xe6\x81\x37\xbc\xc7\xeb\x79\x6c\x56\x64\xfb\x59\xd9\x3d\xe6\x25\x70\x35\x86\xfa\xeb\x6a\x92\xa4\xb1\x30\xb1\xe4\x2e\x5b\x82\x88\xec\x22\xbe\x51\xe3\xbc\x49\xee\xdf\x7f\x6b\xd9\x22\xd6\x13\x94\xbf\xfe\xea\x5d\x30\x08\xce\xc4\x37\xeb\x84\x78\x45\xa0\x43\xe4\xcd\x02\x0a\xd9\xf7\xec\xcd\x45\x7c\x23\x62\x22\xf1\xcd\xdb\xb7\x6c\x4b\xfd\xaa\x0f\xeb\xf8\xb2\x70\x3e\x89\xe5\x96\x97\xd3\xb7\x65\xc0\x43\x9c\x74\x38\x56\x6f\x9c\x2a\x22\x50\x24\x50\xf3\xbc\xe9\x22\xd1\x94\x5b\x1d\xf0\x86\xea\xe7\x96\x45\x28\x4d\x71\x07\x59\x8b\x0c\x2b\x09\xee\xf3\x47\x95\xed\x65\x06\x0d\xff\x45\xc6\x14\xdb\xcd\xeb\x12\x09\xb7\xdd\xa0\xbc\xa7\x98\x61\x09\x9f\x55\xb9\xde\x9d\x52\xc0\x50\xf6\xa2\x53\xfc\xbc\x09\x5a\x0e\xac\xec\xd9\xda\xed\x33\xfe\xa8\xc6\x83\xe1\x39\xf9\xa1\x79\xe0\xec\x38\x9b\x82\x15\x62\x68\xfa\x59\xd9\x5a\x6c\xe8\x0a\x10\x8a\xc9\x96\x88\xbb\x28\xa3\x62\xee\x2c\x4a\xd2\x7a\x7c\x8b\x52\xa8\x9b\x46\xe7\xf5\x75\x65\x26\xcf\x86\xa8\x84\x02\x39\x47\x07\x27\xc3\xa3\xc3\xbd\xfd\x5d\x71\x54\x40\xbf\x0b\xad\x7a\x3c\x8c\xcf\x07\xd7\x33\x6c\x53\xc8\x2f\x8e\x45\x21\x03\xae\xc8\x8c\x20\x2d\xdf\x98\x61\xde\x42\xe6\xe8\xc1\xd1\xc9\xee\x60\x7f\x70\xb8\x17\x8a\x2c\x88\x24\x2d\x49\x9e\x84\x15\xcd\xb5\xd5\xe2\x47\x95\xa9\xbc\xc5\x1a\x51\xa3\x25\xa7\xbe\xc5\x1a\xa7\x0d\xf6\x69\x9d\x7d\xb3\xcd\x1a\x9d\xa8\x73\xda\x50\x59\x15\xdc\xf0\xd8\xf9\xf3\x9f\x37\x14\x54\xff\xa3\xa7\x29\xf2\x76\x23\x76\x55\xe4\xd9\x39\x93\xb6\x83\xbd\xf3\xad\x6c\x18\x02\x00\xaf\xc9\xc7\x30\x73\x32\xe4\x4d\xb1\xb3\xf8\x41\xef\x45\xa4\x2e\x57\xcb\xea\x49\x6e\x3d\xa9\xa7\xb5\x11\xee\x7e\xfd\x95\x40\x6c\x14\x8d\x7a\xf6\x98\x42\xd5\x02\xc8\x17\xbc\xff\x2d\xf5\xc0\x21\x37\xa7\xb3\x9a\x10\xcc\x0c\x12\xfb\x0e\xd5\xd1\x20\x2b\x6f\xf4\x8c\x13\x42\x5b\xac\x0d\xde\x2b\x82\x56\xbc\x86\x15\x5e\xff\xd3\x9f\xd8\x21\xce\x30\x95\xa0\x4b\x0b\xae\x21\x49\x97\x1b\x71\x84\xba\xd6\xd9\xf7\x92\x02\x24\x6d\x1c\xae\xb3\x2d\x56\x9c\xad\xdb\x86\x7b\x43\xbc\xc0\x37\x13\xef\xee\xf1\x5f\x67\x92\xc5\x5b\xec\x23\x9b\x67\x65\x74\x66\x3d\x60\xfe\xc9\x7e\x11\xec\x44\x88\xb3\x17\xc9\x45\x7c\x94\xcb\xcd\x98\xa8\x28\x64\xe8\x48\x22\x4b\x07\x21\xd4\xa6\x07\x5f\x13\xfe\xe7\x33\x16\x15\x85\x0e\x4c\xa9\x88\x15\x7c\x51\x29\x71\xc2\xdb\x31\x9a\xb9\xc5\x2b\x3c\x54\x1b\x11\x72\x2c\x11\xa1\x62\x89\x74\x9f\xbb\x2c\x41\x0e\x10\xaf\xfb\x26\x91\x3e\x4f\xf1\x26\x79\xab\xc5\x16\x32\x34\x78\x15\x7d\x1c\xd2\x51\x79\xce\xc4\xba\x4a\x25\xd0\xef\x48\xac\x1c\xaf\xb5\x3b\xb4\xf8\x78\x4d\x4a\x14\x82\xb1\x9f\x92\x6a\x92\xcf\xab\xe7\x79\x1a\x97\x1c\x65\x08\x5b\x32\x02\xaa\xf7\xb6\x78\xd9\x3a\x82\xd8\x41\xf6\xfa\x92\x29\xe0\x91\xba\xd6\xd2\xe9\x84\x13\xdd\x19\xff\x1b\xc1\xa1\xf6\xe6\x54\x02\xc1\x37\xdb\xdb\xec\x78\x0d\xb2\xc2\xd7\x38\xe9\x91\x8c\x40\xe1\xe6\x6a\xbb\x2c\x46\x70\x93\x2c\x97\x05\x20\x13\x98\xee\x0c\xe9\xf3\x4c\x85\x7a\xe3\xf1\x1e\x99\x76\xde\x62\xd3\x24\x7b\x61\x51\xec\x37\xb9\x86\xbd\x4b\xd0\x91\x0b\xbe\x3c\x5e\x53\x32\x67\xad\x7e\x6d\xa0\x5f\x48\xfa\xe5\xce\xbf\x54\xd5\xae\x24\x94\x2c\x9a\xaf\xab\xbc\xd3\xbf\x8a\xbc\x53\x33\x7c\xa6\xc6\x95\xcd\x25\xfa\x73\xbc\xed\xba\x2e\x7a\xb7\x3e\x09\x79\xec\xf4\xf0\x52\xdc\x3e\xf6\xeb\xaf\x4c\x7f\x18\xc6\x15\x9a\x07\x5a\xab\xdc\x1d\x3e\xd0\x01\x04\xd9\x45\xe7\x7f\x9b\xdf\x6f\xbd\x4e\x7e\xdd\x5b\xcf\xaa\xe6\xf7\x5b\x7f\xfd\x75\xf3\x2f\xbf\x3e\x7a\xb8\xde\xfc\x7e\x2b\x4c\xa3\xe9\x2c\x1e\xaf\x7f\x2f\xfa\xbb\xa7\x8f\xf4\x2e\xa0\x65\x0b\x5f\x35\xe4\x51\xbf\x8c\x36\x69\x67\x79\xa6\xcb\x87\xb3\x22\x8e\xc6\x5a\x76\xc3\x73\x98\x10\xd0\x3c\x5e\xdb\xcb\xc4\x73\xd4\x2c\xaa\xaa\x78\x3a\x13\xef\x1d\x97\xa2\x19\xcb\xf2\x6c\x43\xd3\xa4\x11\xbf\xed\xe3\xe3\x6c\x2f\x63\x79\x31\x96\x0f\x79\x9f\xc6\x4c\xd7\x11\xef\x4b\x4a\x1b\x4f\x67\x40\xb0\xe9\xbc\xac\xd8\x24\xba\x8c\x59\xc4\xde\x10\x96\x79\xdb\x5c\x57\x0a\xb0\x2d\x89\xb6\x66\xe2\xce\x84\x2c\xce\xc0\x3c\xee\x63\x0d\x5c\xae\x79\x43\xc8\x55\x1b\x87\xa4\x29\x29\xc5\x0d\xeb\xd7\x81\xf4\x51\x5f\x11\x77\xe7\xcc\x8e\xf4\xe2\x94\xbb\x0c\x5e\xe5\x61\x9e\x95\xf3\xa9\xb8\x26\xc0\xc8\x46\xcb\xb1\xac\x11\xbc\xbf\xfe\x4a\xf1\x60\xbe\x2f\x90\x1a\xba\x8a\x87\xd2\xea\x57\xd1\x01\xb2\xeb\x37\xa0\xcf\x92\x6b\xa9\xc8\x49\x42\xf4\x8b\xfc\x3c\x19\xd5\xdb\xbc\xc9\xb5\xb2\x8e\xdc\x34\xee\x8d\x94\x37\xfd\x2d\xf6\xf6\x67\xec\x22\x7f\x66\xe2\xdc\xad\xf7\xc4\x55\x45\x09\x5f\x98\xc7\xc5\x28\x59\x14\xf3\x50\x5f\x15\xb4\x1b\x23\xdd\x00\xb0\x33\xbe\xe4\x6c\x2e\xc5\xf2\x92\x8c\x71\x59\x75\x43\xaa\x03\xb2\xc1\x5f\x88\x35\x1c\x5c\xc7\xf5\x6b\xa6\xd6\x2b\xbe\x8e\x47\x1b\xd1\x69\x59\x15\x91\xc2\xdf\x6d\x77\x6b\xcf\xd2\x5c\x64\x91\x88\xcf\xe2\x0f\x9d\xf8\xfd\xba\x37\x3c\xda\x3b\x7a\x2d\xae\xc9\x1e\xfe\xf3\x65\xef\xe0\xc5\x90\x6d\xb3\xce\xf1\xf1\xbd\xe6\x9b\x7b\x7f\x6a\xbc\x7b\xfb\xeb\xf1\xf1\xf8\xf8\x78\xfc\xfd\xaf\xdf\xbd\xf9\xdf\x67\x6f\xbf\x7d\xb6\xde\x39\x5f\xd0\xf6\x64\xff\x40\xd8\xd2\x7d\x7f\x27\xb2\xb1\x86\xfe\xe6\x14\xbb\x3e\x9e\xc8\x8e\x62\xcd\xa4\x72\xb2\x49\x92\x0a\xce\x5f\xc9\x28\xcf\x27\xed\x4d\xfc\xed\x6f\xea\x10\x06\x13\x54\x7d\x9c\x2d\xe4\x97\x66\x43\xd5\x6e\xb4\xd8\x43\x64\xd6\x37\x0f\x07\xaf\x5e\x04\xe1\xa0\xa5\xbc\x98\x43\x59\xab\x25\xc1\x0e\xa3\x34\x95\x67\x72\x5a\xac\x88\xa3\x32\xcf\xd0\x29\xb8\xc3\xc1\xee\xe0\xe7\x57\x27\xaa\x83\x13\x83\xa6\xc1\xf0\xe4\xf5\x7e\x7f\xb0\xb3\xb7\x3f\xe8\x9f\x84\xc1\xab\xa3\xd7\x22\x1e\x2c\xdb\xb7\x6f\xd3\xaa\x0b\x43\xc9\xda\x3f\x0c\x06\xaf\x86\x27\xf7\x1e\xe0\xee\xec\x12\xd3\xe4\xf5\xbe\xd8\xc9\x83\xfe\xb9\xb3\x71\x1b\x88\xbf\x67\x8d\x7b\x0d\xb6\xc5\x1a\xf7\x1e\x34\xba\x96\xc9\xfc\xc6\xa4\xa3\xbd\x53\x46\x0b\xd8\x31\x0a\xcb\x38\x3c\xb3\x72\x80\xa6\xac\xe9\x4c\xed\x7a\xc0\x23\x72\xf2\xec\x4d\x19\x47\xc5\x68\xf2\x63\x94\xce\xc5\xea\x88\x8f\xe2\x2f\x72\x0a\xe9\x00\xf8\x8e\x08\x07\xcb\x63\xd3\xe1\x3e\xd1\x8f\x78\xb8\x17\xfa\x67\x0b\x4e\x07\xa2\x6a\x6f\x14\x66\xdf\xd2\x93\x40\xa6\x57\x72\xa8\x52\x87\xf3\xbe\x37\x35\xd4\xf9\x26\x3c\xb5\x03\x32\x3b\x68\xb6\x65\x13\xad\x6c\xab\xb8\xe5\x60\xbd\xc5\xea\x31\xa4\xb7\x7c\x5a\xb0\x94\xd4\x0d\x7e\x63\x18\xec\xed\x67\xad\x26\x75\xd1\x37\x4c\x7f\x64\x3d\xcd\x21\xaa\x9a\x35\xe4\x96\x27\xcc\xb9\xf9\xcd\xad\xa8\x98\x7b\xcc\x84\x45\xf4\x79\x58\xd5\x9f\x32\xe9\xf1\xe0\xf2\xd0\x96\x24\x47\x91\x7d\x88\x0b\xcd\xb3\x0f\x0e\x87\xc9\xc3\x98\x1b\x9b\x66\x85\xac\x90\xad\x0a\x26\xb3\x6d\x2a\x5a\x9a\x44\xf2\x68\x74\xc8\x43\x1d\xbe\x65\x63\x70\x37\x7a\x7b\x9c\x67\xf1\x3a\x0a\xe4\xca\xf0\x1f\x8e\xf7\x5a\xe4\x7d\x8d\x03\x16\x72\x24\x9b\x01\x86\x10\x7e\xd0\xdc\x81\x8b\xe1\x05\x49\x05\x2f\x5c\xf2\xe3\x62\xd0\x64\x70\xda\x91\x6f\xa7\x8f\x75\xd2\xd6\xc4\x3f\xc8\xdc\x31\x20\x70\x02\xfd\xba\x2d\x7f\x5b\x83\xc8\x4f\xce\x02\x9c\xcd\xd3\xf4\x75\x96\xa8\xeb\x6a\x8a\xeb\xf6\x5c\xfe\x81\x10\x5b\x5c\xb7\xd3\xa8\xac\xb4\xc6\x7f\xe0\x6e\x75\xc3\xb6\x40\x89\xf7\x05\xcc\x5e\x80\x08\x5b\x7b\x96\x5e\xee\x23\x80\x3d\xd0\x2c\xae\x5b\x6c\xe8\x59\x54\x51\xd1\x24\x88\x9e\x16\x71\x74\xd1\xc5\xd7\xce\xab\xc1\x65\xf8\x5f\xfe\x41\x7b\xf9\x46\x23\xc0\x6d\x2d\x95\x72\x35\x9a\x0c\xab\x02\xe3\x9a\x77\x83\x8e\x36\xeb\x9e\xa0\xaa\x3a\xeb\x4b\x10\xe4\xda\x49\xcd\x61\x0b\x12\x8f\x70\xed\xf5\x16\x5e\x80\xf5\x3a\x22\x8d\x46\xa3\xf9\x74\x2e\xee\xd2\x3b\xd4\x58\x23\x87\x35\xb3\xf8\xba\x92\x4f\xe9\xbf\xca\xcb\x44\x9d\xe8\x81\xa5\xb2\x63\x46\x32\x38\xa4\x91\xa6\x82\x4b\x56\x9c\x88\xe1\x14\x57\x55\x51\x86\x8b\x3c\x68\x13\xb7\xdf\x2d\xc2\x9a\x88\xfd\x01\x58\xd3\xe8\xba\x39\x4d\x32\x94\xc5\xa3\x76\x6f\x12\x85\x93\xa1\x0e\x81\xb5\xd8\x03\xda\xcf\x28\x9a\x55\x73\x29\x36\xde\xe0\x5c\x81\x4e\x87\xed\x1f\x1c\x0d\xb6\xd8\x91\x38\x74\x5e\x32\xae\xe0\x2e\xa3\x34\xce\xb8\xe3\x6a\xd5\x63\xb8\x13\x35\xb4\x8c\x2e\x6c\xae\xb7\xa7\xd1\xac\x69\x59\x68\xeb\x56\xdb\xd3\x79\x25\x90\x59\xe6\xd3\x58\x99\x1c\xec\x9d\x93\x3e\xac\xb3\x71\x37\x5b\x76\x06\xee\xfa\x3b\xd6\x94\x2f\x0a\xb3\x24\xb3\xfa\xad\x26\xb1\x4c\xd4\x67\xb3\x3c\xbd\x39\x4b\xd2\x94\x5d\x4d\x62\x99\xbc\x9f\x88\x68\xb3\xc8\x60\x17\xce\x5a\xb9\xce\x8e\xd7\xc6\x79\x5c\x66\x0d\x79\x5d\xc0\xf1\x9a\xb8\x60\x46\xde\x65\xf0\x94\x45\xd9\xd8\xea\x7b\x14\xcd\xcb\xb8\x64\x11\x1b\x15\x51\x39\x61\x4d\xad\xac\x66\x51\x59\xc5\xa7\x49\x26\xae\x5a\xda\x7f\xb8\xf9\x8f\x0f\xf1\x3f\x82\x75\x39\x6e\x55\xdc\xf0\x61\xab\x9c\x89\x4b\xa5\x58\x52\xb5\x51\x3a\x88\xa6\xa6\xf7\x6c\x9b\x6d\x76\xd9\x7b\x43\x4d\x86\x98\xde\x73\x62\xd2\x68\x96\x7c\x69\x61\x55\x13\xca\xfb\xb7\xeb\x74\x85\xb3\x68\x1a\x8f\x43\x67\x85\xc4\x4d\x5e\x25\x4d\x23\x71\x25\xa7\x75\x5f\x20\xb6\x60\x82\x42\xec\x76\xbc\x51\x34\x6b\x1e\x86\xd5\x50\xb6\x0c\x8d\x12\x21\xa4\x62\x3d\x16\x58\xdf\xd8\x29\xe5\x78\x0c\x39\x5b\xab\xba\xdd\x1b\x02\x4a\x5d\xdc\xe4\x11\xef\xed\x68\x36\x4b\x6f\xe0\x06\x83\x96\x35\x86\x85\x34\xf7\xa5\x17\x46\xfa\x3f\x8f\xab\xe1\xfc\xb4\xac\x92\x6a\x2e\x0e\xde\x29\x14\xb4\xd8\x10\x4f\x1a\x10\x61\x01\x5f\xaf\x72\x3f\xd9\x8b\x61\x58\xfc\xd9\xb6\x47\x1e\xad\x3b\xcf\xa0\x10\x99\x76\x7f\x9b\x0d\x15\x1f\xba\xad\x01\xce\x75\x76\x1f\xcf\xce\xc2\xac\x57\x0a\x1a\xb0\xee\x6b\x71\x65\x6f\x72\x5b\x33\xf9\x44\x0c\x55\x0f\x98\x0b\xa0\xb4\x12\xe5\xb4\xb4\x5c\xd1\x3c\x3c\x8f\xab\x12\xad\x91\x88\xf4\x6b\x8b\xb0\x76\xfd\xca\xaa\xb8\xcd\x0a\xea\xab\xa7\xcc\xde\x4a\x15\x25\xe9\xab\xbc\x5c\x01\x4b\x42\xda\xb3\x6d\xe0\x69\xa7\x54\x86\x54\x78\x5f\x0b\x1d\x64\x94\x21\xb8\x90\xa5\x0c\xb5\x50\x79\x60\x32\x7c\x6b\x58\x6c\x31\x1c\x5d\xdf\x7e\xbf\xc7\x6b\x40\x18\xd3\x37\x25\x94\xd8\x4d\x16\x48\x6a\xb1\xd1\x84\x38\x57\x0a\x3f\x00\xcd\x55\x22\xf2\x6d\x46\x93\xf6\x68\x12\x15\x41\xd5\x7c\x60\x67\x2e\x88\x47\xea\x1b\xf7\x1a\x5b\x66\xe3\xe9\x5e\xa3\x4b\x8b\xff\x04\xc5\x6a\x75\x9c\x2a\xef\xa0\x4a\x59\x15\x8a\x44\x1f\x20\xbe\xa1\x2d\x8e\xd7\x1a\xc7\x6b\x9e\x36\x8a\x26\x9c\xfa\x8d\xef\x1a\x5b\x98\xd9\xd4\x4c\xc5\x7e\x27\x5a\x88\x37\xa3\x89\xd6\xa6\x22\x56\xff\xd6\xe2\x50\x6d\x7d\xe9\xbf\xd5\xe5\x52\x5b\x9c\x4b\x54\xac\x84\x8a\x4a\xce\xc3\xf7\x47\x13\x57\x20\xeb\x2c\x68\x8c\x18\x4f\xad\x67\x6c\x4a\x64\x0f\xec\x2b\x8a\x90\x50\x33\x63\x1d\xb6\xf9\xc0\x16\xd2\x4a\xbf\x2c\x1d\x43\xd7\xfb\x6e\x9b\x0f\xa3\xaa\x69\x26\x79\x73\x26\xb2\x37\x9d\x28\x0e\x10\x83\xb8\x43\x83\x56\xbf\x6f\x55\x20\xc3\xd5\x42\xf2\xc9\xbf\x38\xa6\xf3\x0c\x67\x92\xba\x92\xce\xb4\x20\xb0\x36\x1a\x00\xa1\x66\x1e\x27\xdd\xa1\xf3\x2d\x79\x4e\x92\x7d\xdb\x39\x2e\xcc\x4d\xe3\xd1\x75\x92\x97\xea\x8a\x71\xf1\xbb\x81\x0a\x7f\xd1\x25\xbf\xc8\xcf\x69\x5c\x31\xf9\xc6\x96\x30\x73\xf9\x27\x75\x13\x99\xba\x2f\x34\xae\xfa\xba\xb8\xb9\x2e\x9f\x92\x2a\x50\x34\x46\xb6\x35\x77\x95\x5a\x6d\x4b\xdc\x56\xbd\xe4\x85\xbb\x30\xe3\xde\x5b\xd4\x4b\x11\xff\x32\x8f\x4b\xae\x58\x9b\x32\x0e\xd0\x62\xf3\x22\x6d\x89\xd7\xbe\x5a\xec\x97\x79\x5c\xdc\xbc\x8a\x8a\x68\x1a\xcb\x2b\xd9\xcf\xf2\x62\xda\x52\x09\x80\x78\xb0\xa9\xce\xfe\x52\x5b\x1d\xd6\x2d\xae\xb2\x0a\xc7\x85\x4a\xdf\x52\x3b\x64\xfc\xaf\x26\x19\x02\x55\x16\x25\xaf\x0b\xee\x07\xce\x8b\x54\x7e\x17\xc7\xc6\x20\xb7\x8b\x3d\x93\x47\x07\xd4\x0d\x4c\x76\x0b\x76\x9f\x35\xbe\x6f\xb0\xfb\xec\x97\x12\xdd\x68\xe9\x1f\x4f\x5d\x19\xd7\xe9\x78\x46\xbe\x4f\x47\xe4\x94\x24\x3a\x96\x05\xdc\xcc\x16\xd9\x60\xcf\x44\x52\xd8\x7d\xd6\x10\xf7\x86\x7a\x2e\xd7\x24\x63\xcb\xf4\xad\x75\x75\x3d\xe1\x9f\x1a\xeb\x9c\x81\x1a\x8d\x75\x98\x2a\x5f\x05\xf7\x7a\x5b\x41\x76\x6f\x24\xa6\xdf\x36\x35\xb0\x7a\xcd\xd4\xe2\xa8\x79\x41\x96\xb5\x5e\x22\xee\xe9\x9d\xc7\x55\x63\xf5\x7e\x7d\x3d\xae\xda\xd6\xc2\x3d\xa7\x9e\x75\xda\x9f\xa1\xcb\xce\xb7\xdb\x9f\xfd\x3f\xd1\xd7\xb7\xcc\xf3\x3f\x51\xf2\xf9\x1d\x4b\xde\xef\x7c\xfb\xad\x1a\x41\x9e\x6e\x28\x59\x64\x1e\x39\x52\x05\x8a\x91\xb6\x18\xbc\x45\x23\xdf\xe0\x93\x2d\x02\xab\xf2\xbc\x48\x97\x54\x7c\x7d\xf8\x42\xd5\x95\x38\x5d\x52\xfd\xe4\xe8\x9f\xaf\x06\x1a\x92\xe8\xea\x64\xf9\x00\x27\x87\xc1\x4f\x27\x30\xca\xdf\x66\x9c\x2c\x05\x09\xb1\x0d\x89\x34\x39\x75\x4b\x5a\x2c\xec\x11\xc5\xff\x9b\x33\x43\xe4\xe2\xd2\x38\x43\x6b\xb2\x1b\x23\x9a\xa0\x5a\x5b\x49\x29\xf6\xbd\xef\xe3\x16\x48\x4a\x2d\x4e\x64\x4f\x92\x94\x48\x4f\xf2\x23\x08\x92\x59\x24\x76\xa8\x1a\x9d\x68\x96\x74\x2e\x1f\xc0\xbb\x10\xe6\xea\x6d\x75\xa8\x11\x9a\x70\x3c\x10\x49\xf4\xca\x9e\x12\x94\x72\xaa\x46\x9f\x84\xfb\x00\x3c\xde\xe0\x5d\x35\xde\xba\x26\xa1\xe2\x1f\x81\x71\x0c\xbf\x6e\x61\x09\xa6\x9a\x4e\xeb\xee\x96\x55\x4c\xf9\xaa\xc8\xa7\x49\x19\xb7\x8b\x58\x1a\x99\xf1\x15\x93\x1b\xe2\x8d\x97\x49\x59\x72\xa7\x58\x3f\xfd\xc4\x00\x80\x2d\x01\x52\x63\x7d\x7d\x01\x00\xed\x7b\x54\x8c\xc2\xd8\x58\xb8\x2f\x6a\xd1\x3e\xcb\x8b\x41\x34\x9a\x34\x5d\xa2\xd9\x8f\xa6\xb1\x75\xad\x2c\x15\x9c\x56\xcd\xb7\x64\xf9\x17\x57\x36\x77\x83\xea\x3b\x43\x3f\x59\x1a\x57\xb1\x71\xb3\x31\xcb\xcb\xaa\xd1\xd2\xa4\x7a\x5f\x10\xd1\x6a\x6a\xd1\xaf\x68\x57\x62\x46\xcc\x42\xeb\xc4\x16\x58\x8d\x7c\x6f\x3b\x30\x97\x1b\x0b\x47\x15\x78\xf8\x8c\x9e\xc9\x6c\xea\x04\xc2\x62\xf6\xba\x3b\x71\xf1\x19\x72\xe0\x0b\x24\x79\x8b\xe2\x6f\x65\x90\x59\x06\xa9\x62\x07\x63\x01\xfd\x7b\x4d\xa3\x4f\xb6\x46\x96\x87\x97\x6e\xa3\x91\x65\x8b\x15\x34\xb2\x55\x71\xb9\x46\xb6\xaa\xaf\xa4\x91\xed\x16\x77\xa1\x91\xad\x1e\xff\xc0\x1a\x59\x1e\x95\xfb\xaa\x91\xbf\x6a\xe4\x7f\x9b\x46\xf6\x32\xe3\x67\x6a\x64\x44\xbe\xb7\x1d\xf8\x2e\x35\x32\x15\x60\x7f\x3c\x8d\x6c\xc9\x81\x2f\x90\xe4\xbf\x44\x8d\xbc\x1b\x57\xb7\x51\xc7\xbb\xe6\x55\xba\x45\xba\x18\x6a\x2d\x57\xc4\x50\x77\x25\x2d\x8c\xaa\xdf\x85\x0a\x86\xee\xfe\xc0\xfa\xf7\x3c\xae\xbe\x2a\xdf\xaf\xca\xf7\xdf\xa6\x7c\x5d\x1e\xfc\x4c\xcd\xab\x09\xf7\x56\x43\xde\xa5\xce\xb5\x04\xd5\x1f\x4f\xe1\x02\xe3\x7f\x81\x34\xfe\x25\x6a\xdb\x17\x49\xc9\xd5\xad\x7e\xd1\x71\x89\xb2\xe5\xb5\x03\xbb\xae\x57\x27\xe2\x7a\xcb\x15\x2e\xae\xbd\x92\xca\xb5\x1a\xdc\x85\xd2\xc5\x1d\xfe\x81\xd5\x6e\x9a\x94\x5f\xf5\xee\x57\xbd\xfb\xef\xd3\xbb\x3e\x46\xfc\x4c\xcd\x6b\x68\xf7\x96\xa3\xde\xa5\xf2\x25\x62\xeb\x8f\xa7\x7e\x91\x00\xf8\x02\x69\xfd\x4b\xd4\xbf\xaf\x67\xe3\x5b\xee\x08\xcb\x16\x2b\xf8\xbc\x56\xc5\xe5\x5a\xd8\xaa\xbe\x92\x1a\xb6\x5b\xdc\x85\x1e\xb6\x7a\xfc\x03\x2b\xe2\xb9\x98\xc7\x57\x55\xfc\x55\x15\xff\xdb\x54\xb1\x97\x19\x3f\x53\x17\x23\xf2\xbd\xed\xc0\x77\xa9\x8e\xa9\x00\xfb\xe3\xe9\x63\x4b\x0e\x7c\x81\x24\xff\xc5\x69\x64\xed\x10\xcb\x33\x16\xf2\x8b\xd1\xc4\xbb\xe2\x23\x36\x16\x77\x51\x35\xa1\x22\xeb\xaa\x28\xc5\x08\xda\xb7\xae\xa2\x51\xbc\x48\xef\xd6\xd6\xc5\x2a\x97\xff\xcf\xa8\xdd\x59\x74\x1e\x0f\xe5\x1b\xc3\x07\x33\x79\x2c\xa4\xcd\x8e\x26\x31\x9b\xaa\x7b\xb6\xb3\xf9\xf4\x34\x2e\x58\x7e\xa6\x66\xca\xaa\xdc\x9c\xb5\xce\xc4\x19\x9c\x22\x2e\x67\x79\x56\xc6\x6d\x7f\xef\x47\xf9\x85\xb8\x02\x14\xba\x0f\xf8\xf7\x24\x8b\xd4\x9d\x48\xbc\x58\xf6\x18\x8f\x65\x5a\x6b\xc4\x66\x45\x7c\x99\xe4\xf3\x52\xbc\x47\xc5\x87\x7c\xb7\x1b\x57\xef\xf8\x00\xe2\x51\xab\x24\x1b\x27\x23\x61\x0d\x89\xfa\xf2\x59\x0a\x79\x52\x95\x95\xe2\x21\x31\xce\xc0\x55\x92\xcd\x7d\x50\x9d\x25\x71\x3a\x7e\x19\x95\x17\xaf\xa2\x6a\x52\xb2\x0d\x31\xdf\x32\x16\x97\x77\x8b\x32\x36\x8d\xca\x0b\x41\x68\xa5\xa7\xb9\x20\x18\x6b\x42\x43\x39\xf2\xa8\x48\xaa\xb8\x48\x22\x36\x2f\xe3\xb1\xb8\xfa\x23\x4e\xe3\x51\x25\x90\x44\x91\x27\xfa\xdd\x3b\x63\x59\xae\xe1\x36\xad\x93\x92\x89\x0b\xc4\xcf\x12\xde\xcb\x24\xce\x18\xc7\x81\xea\xe0\x2a\x49\x53\x76\x2a\x9e\x2f\xd6\x38\x6b\xb3\xa3\x83\xfe\x01\x93\x12\x44\x41\x97\x46\xd9\xf9\x3c\x3a\x17\xf5\xfe\x21\xbe\xc4\xd7\xb3\x22\x2e\xcb\x24\xcf\x38\x52\x33\x76\x1a\x1b\x30\x8b\x58\x5e\x1a\x61\x0e\x24\x9e\x46\xbc\x64\x3e\xcb\x33\x89\xf1\x58\x5b\x9c\x0c\xde\xa7\x55\x48\xe7\x85\xfc\x53\x54\xe5\x45\xc9\xde\x6d\xbf\x6b\xb1\x77\xfb\x07\x47\xfc\x3f\xc1\x7e\xff\x9d\x78\xc4\xe5\xdd\xc1\xa1\x58\x3a\x3c\x6c\x94\xe6\xd9\xb9\xbc\x41\x5d\x9c\xe3\x9a\x9f\x9d\x25\xd7\x7c\x76\xe3\x51\x54\x8c\xf5\xab\x8f\xef\xbe\x7d\x27\x10\xc5\xff\x2f\x16\x49\x5e\x00\x80\xa0\x48\x32\x16\xa9\x39\xc3\x0c\x35\x0d\xcc\xcb\x98\xc9\x27\xe8\xc7\xec\x97\x79\x5e\xc9\xa7\xbd\xcf\xf2\x42\xdf\x38\xa9\x88\x69\x94\xce\xc7\x31\xbb\x9a\x24\x55\x5c\xce\xa2\x51\xcc\x91\xc2\x29\x30\xce\x2a\x36\xe7\x9a\x27\x1e\x55\xf1\x98\x9d\xc6\x93\xe8\x32\xc9\x0b\x03\xd2\x30\x9f\xc6\x2c\xbe\x8e\xa6\xb3\x54\x22\x9e\x43\x14\x15\xf1\x96\xae\xf0\x2d\x93\xc8\x7f\x37\x4e\xca\x59\x1a\xdd\x9c\x64\xd1\x34\xde\x3e\x9a\x7c\xfb\x4e\x91\x01\x04\xd4\xd8\xd5\x24\x2f\x63\x86\x2b\xf2\x1e\xc4\x0d\xea\xa5\x44\xd4\xf1\xda\xd1\xe4\x78\xad\xbe\xdf\x63\xfe\xbf\xb5\xa3\xb8\xac\xd4\xe9\x28\xf9\x01\xc6\x32\x34\x54\x4d\x78\x2f\xaa\xb1\x38\x8b\x40\x70\x71\x9a\xcb\xf1\xe2\xb2\x3a\x5e\x13\x8b\x78\xbc\xa6\xfa\x94\x00\xb8\x16\x7a\x9d\xec\xf9\xcf\x37\xce\x2f\x1f\x74\x24\x66\x7e\x1f\x33\x5c\x8b\xd8\x05\xa6\x38\xd5\x41\xa2\xcd\x49\x29\x1b\xd9\x26\x3a\xf4\xb6\xd0\x4c\x37\x92\xf7\xd6\xa3\x56\xaa\x95\x3b\xac\xea\x6f\xe1\xb8\xb6\x6c\xbd\xcd\xe0\xa2\xe5\x09\x97\xbc\xed\x99\x6a\x6b\x83\x40\xbb\x5e\x08\x87\xe8\xfe\x36\xc3\xeb\x06\xf6\x98\xea\xeb\x7f\xb7\x43\x72\x1e\xdf\xa9\x3f\xb2\xcc\x48\x59\xec\x8a\xd8\xcc\x7a\x8b\xde\x97\xfa\x1b\xf5\x3b\x7a\x0b\x6c\xb5\xff\x58\x4f\x83\x0a\xb5\xaf\x52\xe9\xab\x54\xfa\x83\x49\xa5\x2f\xce\x67\xc4\xe7\x7a\xa4\x31\x76\x4c\x42\xb8\xb6\xa4\x91\x95\x77\x51\x45\x8f\x97\x87\x2a\xb9\xa1\xdb\xda\xaa\xde\xb0\x6d\x7d\xed\x45\x21\xdb\x23\xe4\x1f\x14\xb1\xbc\xa3\x96\x5b\xd0\x32\xc9\xfd\xb8\x26\xa0\x5b\x3b\xd6\x7f\xbd\xbd\xf8\x35\x6c\xfb\x1f\x2a\x8f\xfe\xbd\x61\xdb\xa5\xcc\x78\x97\x76\x12\x95\x0c\x9f\x1b\x98\x5d\x24\x9a\xfe\xa0\xa6\xd2\x17\x41\xba\x5f\x9c\x2a\x45\xfb\xa1\xa0\x49\x6b\x15\xa9\xac\xbb\x0b\xf5\x3c\xea\x0e\xd5\x59\x12\x83\x45\x35\x97\x07\x61\x71\xe5\xda\x28\xac\x98\xc1\xde\x58\x29\xd3\x79\x96\xfc\x32\x8f\x59\x32\x8e\xb3\x2a\x39\x4b\xe2\x42\xdc\x1e\x64\xa2\x88\x22\xfc\x74\xa8\x03\xa6\xa7\x37\xfa\x42\x88\x36\xdb\xcb\x26\x71\x91\x54\x3a\x8c\x3a\x4e\x8a\x78\x54\xe5\xc5\x8d\x5a\x65\xf6\x43\x7c\xd3\x66\xfb\x79\x25\x2e\x05\x13\x8f\x83\xb0\xc3\x38\x1a\x6f\xe4\x59\x7a\xe3\x09\x74\x22\xfd\x2e\x06\x06\xed\x7e\x35\x49\x46\x13\x7d\x43\x4a\xa9\xa3\xc0\xb2\x2c\x97\x51\xe1\x32\x2e\x2e\xe3\x62\xa5\x58\x11\x42\xd1\x1f\x48\xf9\x77\x3e\xca\xd5\x48\xc6\x9f\xee\xc6\x0e\x50\x43\xf0\xff\xe8\x5b\x2b\x9b\x0d\x34\x48\x8b\xbd\xbb\xf7\x11\xeb\x74\x45\x35\x8d\xb7\x9f\xde\xad\xfb\xb5\xbe\xa9\xf1\x3b\x29\x7e\xdd\xff\x42\xdd\xff\xd5\xa2\xf9\x8f\x55\x0b\x4b\x2c\x9a\xa8\x1a\x4d\x7e\x3f\x93\xc6\x23\x19\x57\x34\x69\x28\xeb\xdd\x66\xa4\xe5\xd6\x8d\x98\xf5\x2d\xbb\xfd\x43\x98\x37\xae\xc4\xba\x73\x91\xf3\x45\x70\xc5\x17\x67\x2c\xa1\xb3\x52\xb0\x5d\x5d\x1f\x76\xd8\x8d\xab\x25\x31\x07\x5d\x63\x59\xc0\x41\xd7\x5b\x21\xda\x60\xaa\x7a\x43\x0d\xc9\x78\x41\x6e\x98\xbf\xa3\x3f\x94\x29\xf1\x3b\x1b\x11\x5e\x5e\x4e\x16\x59\x0e\xc9\xef\x67\x34\x24\x4b\xec\x85\x2f\x42\x86\xfc\x1f\xee\xa8\x50\x4e\x5a\x59\xa9\xae\xaa\x4e\x2d\xae\xbe\x93\x2d\x15\x24\x4f\xfe\x08\x6a\x74\x99\x02\xbd\x2d\xbb\x7d\x11\x14\xff\x25\x6a\x4d\x73\xe7\xc7\x2a\xd1\x7a\x59\x79\x89\xe6\x44\x95\x96\x29\x4f\x54\x75\x05\xfd\x89\x6b\xff\x56\x15\x8a\xfa\xfa\xaa\x45\xbf\x6a\xd1\xff\x54\x2d\xaa\xee\x6c\xf8\xdd\x14\xa9\x87\xa5\xee\x5c\x97\x52\x26\x5f\x38\xc0\xc2\xdb\x3e\x16\xc9\x99\xaf\x4a\xf5\x0f\xca\x00\x5f\x9c\x52\xfd\x56\x6a\xd2\xad\x34\x29\xab\x69\x3c\x3d\xe5\x54\xa6\xaf\xfa\x1e\xe7\xa3\xb2\x3d\x4d\x46\x45\x5e\xe6\x67\x95\xb8\x62\x3f\xce\x36\xe6\x65\xe7\xbc\x88\x66\x13\x91\x3b\x2f\x1a\x8b\xc3\x6b\x1b\xaa\xf5\xf7\x97\x49\x7c\xb5\x2d\x6a\x6c\x14\x71\x59\x6d\x6c\xb6\x1f\x1c\x2f\xcb\xc6\x7e\x29\xdb\x1e\x2f\x4a\xc7\x56\x75\x56\xc8\xc7\x56\x35\x57\x4b\xc8\xd6\x95\x6b\xf7\x02\x92\xb1\x15\x73\x4f\xc6\x6e\x15\x94\xb4\xed\x2f\xfc\x9a\x73\xfd\x35\xe7\xfa\x6b\xce\xf5\x7f\x63\xce\xb5\x12\x2f\x7f\x34\xb3\xbd\xa3\xa4\x79\xe7\x5e\x11\x9f\x7d\xb5\xe1\xcd\xe0\x5f\xb3\x34\xbf\x66\x69\xfe\x87\x9b\xa8\xff\xc7\xb9\xe3\xc4\x9e\xba\x8d\x83\xe6\x0a\x9d\xdb\x0c\x78\xa7\xf9\xe4\x60\x6c\xfe\x41\x5c\x35\x9f\xc0\xbe\x2b\x89\xfb\x55\xe8\x7d\x15\x7a\xff\xe1\x42\xef\x8b\xf3\xcb\x99\x76\xcc\xa3\xf1\x58\xb2\xf6\xed\xdd\xf2\x59\xbe\xd8\x2d\xff\x53\x15\x9d\x96\xdb\xbc\xdb\xe3\x85\x81\xf4\x60\x3c\x96\xf2\xf0\xb8\x36\x8c\x6e\xaa\x2c\x0b\xa2\x9b\x8a\x2b\x84\xd0\xa1\x6e\x7d\x00\x1d\x27\xbb\x27\xc2\x93\x8b\xc6\x63\xbb\xde\x92\x9b\x4c\x6a\xc6\xfc\x6a\xb1\x7f\x19\x16\xfb\xd7\x5c\xb7\xff\x50\x91\xfd\x7f\x99\xbd\xef\x48\x96\xdf\xd7\x4c\xb5\x85\xde\xdd\xe4\xf2\x63\x89\xfb\x5f\x6f\xa3\x7e\x11\x0c\xf1\xe5\xda\x30\x45\x3c\xcd\x2f\xe3\xcf\x35\x63\xe4\x2e\xdb\xb2\xfd\x85\x7a\xf3\xe5\x50\x8c\xbe\xcc\x82\xc1\xb5\x96\x19\x31\xb8\xee\x0a\x76\x8c\x55\x7d\xb1\x29\x63\xed\x31\x98\x62\x65\xe0\xec\xf9\x0d\x1e\x89\xdd\xd5\xcc\x1b\x0c\xca\x1f\xd6\xc2\xf9\xa8\xe6\x7f\xc2\x3f\xfe\x97\x9b\x3b\x7e\xa0\x11\x82\x5c\xe0\x0d\x35\x2d\x98\x03\xaa\xf3\x3b\x4d\x05\x46\xf8\x6f\x37\x75\x7e\xef\xb4\x09\x9f\xf8\xf9\x2c\x7b\xc7\xcf\x77\xb7\x1a\xfe\x2e\x53\x2a\x88\xc4\xfe\xa3\x19\x41\x75\x52\xec\x73\xc5\xd0\xef\x22\x09\xbe\x08\xf6\xfb\x32\x0c\x2b\xef\x13\xc5\xa3\x68\x1a\xa7\xe2\x69\xeb\x6f\x3b\xe6\x35\xe2\x8f\x0b\xaf\x47\x6e\x2d\xb9\xbb\xf5\x93\x7a\xca\xb8\xdd\xee\x8c\xd2\x24\xce\x2a\x73\x29\x62\x03\x8d\x70\x98\xa7\x31\xee\x9d\xff\x5d\x7a\xda\x96\x71\x55\x25\xd9\x39\x6f\x0b\xd0\xc7\xd9\x22\xe0\x93\x8c\x2f\x4b\x30\xaf\x26\x32\x6d\x02\x75\x3a\x89\xd3\x19\xe7\x9d\x68\x5e\x4d\x1a\xc7\xd9\x71\xa6\x9e\x44\xae\xa2\x2a\xe6\x8c\xac\xb8\xf8\x2c\x39\xdf\x12\x67\x2a\x5b\x82\xa2\xb3\xa4\x4a\xa2\x34\xf9\x10\x8f\xb7\xd8\x59\x94\x96\xb1\xf8\xac\x67\xb5\xc5\x3e\x7e\x12\x1f\x0a\x3e\x05\xd4\x4e\x66\x2e\xc4\xe3\xc0\x54\x7c\xf3\x96\x4b\x25\x33\xec\x79\x5c\x69\x09\x82\x07\x56\xd0\x3c\x93\x3f\xda\xf2\xb3\x84\xa4\xdc\xc3\xb0\x90\x8a\x08\x4e\x51\xfb\xdc\x3c\x28\x51\x0e\xf3\xa2\xb2\x5a\x7c\xb4\x54\xb0\x22\x64\xb9\xa1\xdf\x94\xbd\xe9\xe9\xad\xb7\xcb\xbc\xa8\x9a\xcd\x68\xb3\xc5\xa2\x87\xeb\xa8\xb1\xe4\xf5\x68\xb3\x9d\x67\xaf\x8a\x98\xeb\xf0\x72\x18\x4d\xd5\x90\x9c\x85\x84\xe6\x8f\x1e\xd6\x96\xaf\xe3\x27\xc9\xf5\x7b\xc0\x9b\xed\x64\xdc\x4e\xf3\x51\x94\xc6\x9c\xce\xa3\x22\x6e\x46\x0f\xdb\xc9\x78\x5d\x57\xa5\x8f\x76\x2f\x00\xc0\xed\xa7\x16\x14\xc3\xeb\x9c\xd3\xe5\xfa\x16\x71\x90\xa6\x40\xeb\x72\x31\x1d\xac\x6b\x3c\x69\x76\xe6\x73\x96\x25\x74\xfd\x55\x0d\x8b\x04\xa6\xf3\x4a\xa4\xf0\x18\x22\x78\x71\x10\xf4\x4f\xc2\x83\xfd\x9d\xbd\x5d\x26\x57\x02\x9e\xcd\x56\xd8\xc2\x64\xc1\xb6\x55\x29\xc0\x3d\x1c\x1c\x9d\xec\xed\xef\x1d\xed\x05\x2f\xf6\xfe\x35\xe8\x9b\x5e\xc4\xea\x92\x4e\x10\xc9\xb0\x6d\x59\xc3\xee\x28\x08\xc3\x83\xd7\xfb\x47\x43\xd3\x8b\x21\x0b\xbb\xa3\x08\x9e\x50\x30\x2f\x4a\x58\x1d\x1d\x1e\xbc\x18\x40\x2f\x82\x55\x48\x17\xe2\x1b\xdb\x96\x65\xd0\xf8\xe8\x60\x77\xf7\xc5\xe0\x64\x38\x78\x31\x08\x8f\xf6\x0e\xf6\x35\x48\x14\x22\xd3\x9b\x44\xac\x56\x4d\xd9\x38\xbe\x66\xb5\x2b\x92\xf0\xe2\x83\xb3\xa6\xee\x83\x2f\x0c\xef\xc3\x6a\xfd\x8c\x6d\x6c\xb2\xef\xeb\xba\x28\x67\xe2\xa1\x7f\xdc\xa2\xc5\xc4\x93\xf6\x35\x0d\x66\xf3\x72\x82\x06\xc4\x48\x92\x93\x1c\xf4\x57\x46\x3b\xed\xdc\x83\x7e\xfe\xdf\xd7\xaf\xfa\xc1\xd1\xc0\xc1\x9c\xcc\x76\xd2\x8d\x57\x41\xa0\x21\xf6\xb3\x24\x1b\x8b\x22\x3d\x13\xce\x10\xea\x67\x3b\x91\xaf\x85\xdb\xdd\x4b\x16\xf6\xd1\x4c\x0d\x0a\x1d\xf8\xf0\x8c\x0e\x07\x98\x3a\x81\x3a\xd4\xdc\x96\xa3\x89\x8b\x62\xf9\x7c\x3f\x30\x63\x34\xb2\x58\x31\xcd\xa3\x71\x28\xb9\xac\xf9\x91\x8d\xf2\xe9\x34\xa9\xd8\x27\x87\x1d\x65\x41\xb3\x81\x38\xb7\x01\xf6\x35\x82\x39\x2a\x6f\xb2\x11\xd2\x26\xd0\x6b\x4b\xa4\x2c\x45\xd5\x68\xc2\x3e\x99\x7e\xa3\xab\x28\xa9\x4c\x41\xb3\x71\x16\x57\xa3\x89\x9e\x41\x63\x7d\x41\x25\xa1\x4b\x75\x0d\x0d\x1e\x11\x0b\x8d\x16\xab\x8a\x79\xec\x01\xd0\x1a\xc7\x07\x23\x67\xdf\xbc\xda\x55\xca\x0b\x00\x26\x7a\xb7\x89\x6a\xb5\xe7\x65\x5c\xb4\xc5\xc6\xea\x3a\x26\x32\x7d\xd5\x2c\xa7\x5b\x31\x93\x45\x86\x47\xd3\x68\x0b\x65\x39\x6f\x61\x40\x94\x40\x9c\x17\x42\x9e\xb6\xe5\x75\x05\x2d\xdd\x82\xfb\x42\x5c\x51\x63\x31\x2f\xf5\x97\xb9\xed\x96\x93\xca\xbc\x14\x94\xfb\xf0\xc1\x26\xd2\x4d\x16\x3f\x08\x09\xa5\x9b\x8c\xa3\x2a\x6a\x63\x86\xa3\x08\xd7\x04\xda\x00\x0e\x66\xbf\xfe\xca\xde\xbc\xd5\xfa\x46\x3f\x8a\xaf\xda\xc2\x42\x96\x93\xfc\xea\x65\x5c\x96\xd1\x39\xf7\xec\x90\x9e\xac\x92\x2a\x8d\xb7\x58\x63\x27\x4a\x52\x99\x7a\x28\x16\xcc\xf4\xdf\x6e\xb4\xa0\xf2\x38\x2e\x47\x5b\x8c\x4c\xf1\x28\xbe\xae\x50\x1d\xf9\x71\x8b\x35\xc6\x51\x76\x1e\x17\x0d\xa3\x67\x5b\xec\xa3\x40\xf0\x96\xa0\x14\x83\xb4\x4f\x35\x24\x23\x2d\xb8\xdf\x83\x5e\x16\x52\x8c\xd7\x90\xbc\x5b\x52\xb9\x3d\xb1\x18\x5d\x66\x51\xca\xe9\x3c\x1b\x0b\xdd\xe6\x23\x15\xa1\x20\x1b\x4a\x35\xfe\x5e\x44\x22\x3a\xff\xf7\x52\x48\x95\x9f\x9f\xf3\x15\xe2\x12\x38\xc9\xb3\x20\x4d\x31\x8d\x28\x13\xb8\xa5\xac\x2a\x20\x0e\x55\xd0\xf6\x5b\x61\xec\x7b\x0b\x77\x8e\xde\x6c\xb4\x38\xfa\xd8\xd6\xf2\x5a\xed\x76\xdb\xd6\x46\x6f\x3d\x22\x51\xfa\x1b\x8b\x65\xa2\xb1\x6c\x7c\xa4\x2e\xa9\xe2\x4c\xac\x86\xa3\x84\x6e\xcd\x09\x67\x79\xc1\x9a\x96\x54\x62\xf9\x59\x8d\xaa\x5b\x27\xd6\xba\x52\xc6\xea\xbf\x03\x31\xb1\xb1\x65\x88\xeb\xa4\x6f\x64\x6f\x13\xe2\x5e\x26\xb4\x2d\x7f\xb0\x89\xba\xbe\x3d\x33\x1a\x76\x84\x0f\xc6\x3a\x23\x5f\x19\x4b\xc6\x5b\xc8\x06\x69\xd9\x85\xf6\x8c\x25\xc5\xe2\x1a\x9f\xac\xfa\xd2\xf4\x10\xc9\x38\xce\x30\x22\x39\x67\x8b\xbd\x69\x04\x56\x97\x8d\xb7\x56\x77\xf0\x87\xf9\x09\xb2\x64\x55\x69\x22\x51\x9e\xa7\xdc\x93\x39\x6f\x36\x76\xf3\x24\x3b\xe7\xdc\xac\x5e\x17\x58\xc7\xf5\x24\xa1\xdb\xa6\x1e\x97\x0a\xac\xdd\xd6\xcb\xdd\xf2\x62\xc1\xf0\xad\x2b\x6a\x18\xa1\x59\x69\xbc\x7e\x84\x15\xd0\xe8\x1e\x27\x32\x0f\x9a\xfb\x52\x2d\x06\x52\xc4\x2b\x5a\xf0\x80\x46\x62\x80\x90\x25\x43\x22\xbf\x0a\xa3\xe6\xb3\xa4\xa0\x0a\x1c\x68\xa8\x5d\x41\x68\x8f\xfd\xe6\xc1\xdb\x3b\x93\x88\xcb\xe6\xf7\xec\xae\x67\xe7\x93\xf3\x8d\x50\xe4\xf4\x67\x79\xa5\x2b\x4f\xe7\x69\x95\xcc\x50\xab\xc6\x5d\x4c\x53\x53\x63\x9d\x99\xde\xf0\x08\x59\x15\x92\xfa\x12\xa4\xec\x37\x5f\xc5\xac\x16\x30\x22\x5e\xf6\x87\x90\xb3\x9f\x25\x3f\xc5\xf4\xfe\x8b\x04\xa8\x8e\x1b\x7f\xa1\x12\x94\x4c\x6f\x89\x08\xd5\xb5\xff\x4f\x65\xa8\x8a\x60\xa8\x7d\x2e\x75\x75\xa0\x9c\xa5\x38\x93\x34\x8b\x46\x5a\xd1\xcb\xa8\xb4\x90\xa0\xc7\x99\x31\xb1\x55\x30\x5b\x84\x3e\xc4\x6f\x13\x93\x14\x5d\xaf\xb5\xd6\x54\x64\xbd\x51\xc4\xe7\x71\x26\x8f\xa9\x6d\x14\xf3\xac\x4a\xa6\x71\x47\xfd\x17\x42\xfb\xc1\x6c\xa6\xe3\xed\x9d\x91\xde\xa8\x28\x3b\xc1\x6c\xd6\xbe\x9c\xa3\x7a\x65\x95\x17\xb1\xa9\x29\xfe\x42\x11\xf9\x68\x36\xdb\xcb\xce\x72\x1d\x8a\xe1\x33\xd9\x62\x8d\xc0\xc2\x2f\x97\x43\x0d\x1b\xe5\xc9\x28\xcf\xb6\x58\xa3\x8a\xaf\xab\x8d\xcb\x51\x54\x8c\xd5\xe7\x72\x27\x49\xe3\xc1\x38\xa9\xf2\x02\x87\xf0\xe3\xeb\x2a\xce\xc4\x71\x3e\x27\x36\x5f\xe4\xf3\x4a\xb8\x70\x6f\x78\x45\x45\x34\x0a\x0c\xba\xcc\x5c\x50\x6d\xb1\x46\x47\xff\x0d\xd3\x46\x32\x2d\x9a\xcd\xb6\x38\x72\xb0\x8b\x74\x9c\xbd\x85\x11\xb3\xe8\x72\xaf\x8a\xa7\x35\x63\x06\x64\x4c\x3e\xd3\x97\x91\x38\xec\x98\x6e\x69\x74\xb5\xf9\x57\x55\x41\x4c\x00\x8d\x5f\x03\xbb\x86\xfe\x5d\xe7\xde\x47\xd3\xcb\xf8\x53\xe7\x9d\x07\x4e\x1f\x8d\xa9\x36\x6a\x03\x84\xe3\xac\x25\x17\x4c\x4e\x46\x91\x5c\x5e\xc4\x92\x98\xde\xb6\xd6\x04\x55\xae\x6d\xbd\x59\x33\x39\x01\x6b\xad\xb5\xf3\x34\x3f\x8d\xd2\xb5\xd6\xda\x28\x8d\xca\x32\x3f\x5b\x6b\xad\x89\x38\x60\x3c\x96\x7b\x13\x6b\xad\xb5\x71\x3e\x9a\x4f\xe3\x8c\xff\xec\x0f\x86\xe1\xe1\xde\xab\xa3\x83\xc3\x21\x6f\x22\x6e\xa5\x1d\xa4\xb1\x2a\xdd\x1b\xfc\xf5\xa4\x7f\xf0\xf2\xa4\x3f\xd8\xd9\xdb\x1f\xac\xb5\xd6\xd4\x51\xc7\x9b\xbd\x72\x90\xcd\xa7\x71\xc1\x99\xf6\x65\x3e\x9e\xa7\x31\xef\x56\xc0\xf0\x4a\x55\x31\x9f\x05\xcc\x6b\xad\xb5\x9f\xe2\xe8\xe2\x65\x34\x5b\x6b\xad\x4d\xa2\x72\xad\xb5\xb6\x1f\x1c\xed\xfd\x38\x38\xf9\x69\x10\xfc\x70\xf2\x32\x78\xb5\xd6\x5a\xcb\x05\x80\xcf\x45\xe9\x5e\x56\xc5\x45\x16\xa5\x43\xce\x64\xa6\xaf\x69\xc2\xb9\x48\x65\x31\xdc\xbb\xf7\x80\x77\x96\x8c\xc7\x71\xf6\x43\x7c\xc3\x5b\x25\xaa\x95\x9c\xaa\xfa\x78\x1e\x57\x07\x57\x99\x86\x8b\xab\x85\xd2\x74\x68\x97\x0d\xc5\x39\xcf\xba\xd2\x7e\x5c\x8e\x8a\x64\x56\xe5\xc5\xd2\x0a\x1c\x94\x72\x27\x2f\x46\x62\x49\xd4\x4c\x87\xff\x7c\xd9\x3b\x78\x41\x11\x95\xc4\x1c\xc6\x2a\x97\xe7\x19\xd7\x5a\x6b\x12\x88\xb5\xd6\xda\xeb\xa1\x6e\x73\x12\x0c\x4f\x5e\xef\xf5\xd7\x5a\x6b\x57\x45\x34\x9b\xc5\xe3\x9f\xe2\x34\xfd\x21\xcb\xaf\x32\x59\xb9\x66\x09\xd6\x5a\x6b\xd1\x8e\xda\xe9\x35\xab\xfb\x52\xe4\x51\xad\xb5\xd6\x4e\x93\x8c\xff\xe7\xd5\xe1\xc1\xd1\xc1\xd1\x3f\x5f\xf1\xe5\xcd\xa2\x2a\xb9\x8c\x77\xeb\x27\x25\x2b\xf4\xe9\x28\xbe\x76\x02\xcf\x7e\xec\x0f\xae\xe5\x2a\x99\x96\xaf\x3c\x64\x25\x28\xc6\x9a\x65\x39\x54\x94\x24\x1b\xc9\x35\x96\x17\x29\xaf\xb5\xd6\xee\xad\xb5\xd6\xb8\xed\x19\x9c\x4b\xda\x1d\xbe\x1a\x84\x7b\x03\x4e\xd5\x3f\xfe\xf5\xe4\xc7\xc1\xe1\x70\xef\x60\x9f\x57\x53\x5b\xe0\x12\xbf\xc3\x93\xa3\x83\x93\x17\x83\xfd\xdd\xa3\xe7\x6b\xad\x35\x28\x1a\x1e\x1d\xee\x85\x47\x27\x2f\x07\x47\xcf\x0f\x38\xda\x77\x82\xbd\x17\xc3\x93\x83\xfd\x93\x57\x87\x7b\x2f\xf7\xf8\x6a\x0e\x0d\x1c\x8a\xca\xfa\x07\x2f\xf7\x2a\x09\xba\xa0\xc4\xd2\xb0\xdb\x48\x83\xa8\xbf\x0d\xa6\x33\x81\xb6\xfc\xf4\xfd\x5a\x6b\xcd\xd4\xbb\x90\x1d\x49\x1d\xcc\xdb\x71\x61\x56\xcc\x47\x9a\x9e\x82\xa2\x88\x78\xb3\xcb\xb8\x28\xe5\x8a\xaa\x5f\xa5\xa8\x9c\x5f\x48\x52\x9a\x15\xf9\x28\x2e\x4b\xcc\x27\x9b\x92\x34\xb8\xac\x31\xbc\x35\x8a\x05\x25\x47\x59\x74\x1e\xf3\xfe\xc3\x28\x1b\xc5\x7c\x49\x82\xeb\x24\xb7\x5a\x3f\xc4\x7f\x3c\x12\x5c\x66\x99\xff\x82\x7c\xe5\x7f\x23\xd5\x36\x81\x11\x74\x57\x71\x59\xc9\x15\x92\x33\x3b\x4b\x38\xad\x4f\xe2\x68\x1c\x8b\x2a\xbc\xb7\xbc\x48\x3e\x44\x8a\x58\x9f\x07\xc3\x13\xb5\x84\x27\xc3\xd7\xaf\x5e\x1d\x1c\x1e\xad\xb5\xd6\x8e\x0e\x4e\xf8\xd2\xec\xef\x9e\x1c\x05\xbb\xf4\x6f\x54\x4f\xa0\xea\x55\x91\x57\x79\x75\x33\xe3\x23\x8a\xa5\x51\xd0\xec\x1d\x0d\x0e\x83\xa3\x83\x43\x2e\x9b\x62\x0e\xd4\x2f\xf3\x78\x2e\x2a\x0d\x4f\xf6\x0e\xf8\xc2\xaa\x44\x2a\x3e\xb1\xa8\xbc\x90\x44\x6c\x09\x24\xd9\x94\x7e\xda\xd7\xc4\xac\x1a\x1f\xdd\xcc\x62\x91\x80\xc5\x69\x25\xbe\x52\x05\x61\x34\x8b\x4e\x93\x34\x91\x9c\xe3\xf9\x6c\xb8\x79\x6f\x78\xb2\x7f\xd0\xe7\x8c\xb9\x73\x70\x18\x0e\x38\x21\x66\x79\x95\x9c\xf1\x86\x89\x98\x90\x90\x89\x71\x71\xce\xff\x2b\x93\x1a\x04\xa5\xf4\xe6\x67\x67\x62\x51\xe7\x55\xc2\x97\x94\x9b\xca\xea\xaf\x52\x48\x64\x2e\x6a\x64\x3f\xd2\xc1\x91\x53\xec\xeb\xdf\x53\x2d\x23\xe6\x05\x6f\xce\x3d\x1a\x89\x26\x9c\x22\x21\x19\x66\x2a\x56\xff\x45\x7e\x15\x17\x61\x24\x66\x2d\xaa\xbd\x16\x0d\x7f\xe1\x95\x70\x58\x39\x28\xcb\xe4\x3c\xe3\x5f\x8e\xf2\xd7\xa5\x00\x71\x86\x3b\xbc\x67\xc0\xb9\x67\x68\x84\x6b\x55\x41\x43\x8a\x4d\x34\x46\x69\xd2\x09\xee\x8b\x8b\x19\x32\xb4\x8e\x68\x4b\x10\xb8\x82\xa3\xc0\x99\x98\xb7\xd0\x7c\x27\x42\x30\x1a\xfe\xc4\xc4\x14\x1e\x1c\x1e\x0e\xc2\xa3\x13\x23\x3a\x4f\x76\x07\x47\x47\x83\x43\x89\x45\x53\xf3\xe0\x0c\x11\x1e\x6e\x2f\xb7\xdb\x8f\x26\x49\x89\x29\x33\x94\xc2\xad\xf7\x7a\x77\xf7\x9f\x27\xc3\x60\x27\x38\xdc\x3b\xd1\xa4\x3a\x94\x04\x67\x77\x5d\x15\x09\xc7\xfe\xeb\x7d\x45\xf7\x83\xfe\xc9\x3f\xc5\xea\x26\xa3\x8b\x9b\xe7\x32\x3f\x83\xd3\xc5\x75\x3c\xe2\x3c\x37\x89\x8a\x80\xe3\xef\x2c\xb9\x3e\x8c\xcf\x07\xd7\x33\x22\x5e\x5f\xe4\xe7\xc9\x48\x40\xc7\x0b\x07\xb2\x95\x60\x24\x0d\xa2\x54\x1d\xa5\xc0\xc0\x0b\xbd\x89\xbc\x1f\xbc\xe4\x14\x1a\xe6\xa9\x8a\x4b\x5b\x7f\x58\x3c\x38\x3c\x79\xf5\xfa\x90\x57\x3e\x4b\x73\xb9\x84\x22\x96\xce\xb9\xdd\xc8\x01\x95\x2f\x25\xad\x84\x83\xab\x4c\xe9\x41\xa5\x42\x5f\x1f\x72\xfd\xf9\xfa\xf0\x85\xbc\xe3\x42\x2c\x7e\xe9\x7e\x31\x1c\x54\xe5\xc1\x30\xdc\xdb\xe3\x92\x49\x2c\x3b\x17\xed\x3f\xec\xbd\x1a\x9e\x3c\x3f\x78\x21\x44\xf8\xde\xbe\x5e\x4c\x89\x6a\xa9\x24\xb8\x2d\xcd\xd9\x20\xba\x16\xc0\x46\xe7\x42\x42\x2d\xd8\x50\xf3\x14\x5b\x31\x05\xb1\x2c\x4a\x09\x40\xa2\x00\x07\x0b\x3a\x28\x14\xe9\xd1\x88\x88\xa4\x2a\x45\xe1\x56\xde\x8a\x2c\xb1\x33\x53\xb8\x56\x10\xc9\x27\xbc\xa7\xbc\xe0\x23\x47\x5c\xfc\x47\x5c\x8a\xd7\xe5\x6c\xf0\x8e\x79\x4b\x2b\xc9\x83\x37\xf2\x6e\x19\x70\xcc\x68\xc7\x66\xad\xb5\x86\x76\x6b\x39\x7a\xed\xcd\x51\x0d\x8e\x2a\xd1\xbe\x97\xfa\xf3\x50\xad\x42\x5d\x66\x02\x20\x08\x7e\x09\x63\x56\xe0\x51\x24\x1c\xf0\x69\x8a\x4d\x6f\xd5\xa5\xb3\x35\xc1\xa9\xc3\x8a\x44\x70\xb1\x66\x6d\x87\x0b\x9e\x50\x9b\xf0\x5c\x24\xd4\x78\x89\x02\x04\x3d\x69\xd8\xd1\x16\xea\x8c\xfb\x97\xd6\xda\x72\xc9\xaa\xdc\x66\xde\x3d\xde\x08\x16\x4b\x6d\xa2\x49\xca\x6a\x31\x4a\x51\x85\x95\x04\x1d\x14\x97\xa2\x40\x87\x2d\x14\x11\xcd\x79\x9b\x71\x54\x45\x9c\xbe\xb9\xdf\x2d\x94\x7b\x39\x32\xc5\x47\xf1\x75\xa5\x06\xd1\x63\x6b\xb1\xa6\xf6\xcd\x04\x67\xd0\xcd\x24\xa1\x42\x70\xdc\x90\x37\xb6\xc2\x03\xb0\x08\x2a\x6a\x63\x50\x29\xc2\x4e\x4a\x56\x97\xca\x74\xc9\x05\x64\x69\x7e\x2e\x70\x01\x31\x19\x89\x1a\x32\x10\x38\xd8\x7c\x10\xe9\x09\xa9\xcf\x1c\xaf\x23\x81\x11\xec\x7c\x0a\xc1\xa6\x7d\x4e\x31\x5b\xee\x31\xc9\xc5\x50\x2e\xa3\xec\x89\xb3\xa6\xf8\x57\x3b\x52\xaa\x3f\xed\xf2\xe9\xb6\xdc\xa1\x9a\x46\xb3\x59\x92\x9d\x97\x6b\x5b\x6b\x5d\xfd\xbf\x30\x08\x82\x6e\x18\x84\xfe\x7f\x02\xfd\xab\xb5\x17\x04\x7b\xad\x83\x20\x38\x90\xbf\x5e\x07\xc1\x6b\xf9\xe7\x20\x08\x06\xdd\x20\x18\xa4\xa1\xac\xc8\xff\x96\x75\xc4\xaf\xdd\x20\xd8\x6d\xbd\x0c\x82\x97\xad\x30\x08\xc2\xd6\x30\x08\x86\xe2\x17\xaf\xfc\xb8\x87\x6a\x8b\x3a\xa2\xb6\xf8\x26\x6a\x8f\x82\x60\x64\x6a\xbf\x0f\xa1\x76\xd0\xfa\x09\x77\x34\xc1\x1d\x09\xa8\x44\x47\xe2\x97\xe8\xf7\x87\x20\xf8\x41\xc2\x0c\xf0\xd8\x63\xf1\x6e\x1e\xf5\x51\x37\x62\x6c\xe8\x46\xc0\xf3\x8f\x20\xf8\x87\x2c\xfd\x67\x10\xfc\xd3\xb4\xbb\xc6\xed\xa6\xbd\x20\x98\xf6\x68\xcb\x28\x08\x22\x59\x9e\xf4\x82\x20\xe9\x99\xb6\x97\x03\xd4\x56\x95\x91\xb6\x3f\x05\xc1\x4f\xb2\x3c\x0e\x82\x58\xb6\x0c\x82\xf0\xfd\x00\x21\x5c\xe0\x55\xd4\x11\x4d\xcc\xca\xa0\x5f\xb0\x26\xa2\x43\xb1\x6e\x61\x10\x16\x7d\xb4\xc0\xbe\x99\x03\x52\x61\x05\xc5\xf4\xc5\x2f\xa8\x27\x7e\x59\xeb\xfb\x7e\x17\xf5\x0a\xb5\x81\x1a\xe0\x97\x59\x69\xe8\x01\xc8\xa4\x8f\xba\x81\xa1\x08\x5c\x80\x25\xa0\x1f\x83\xaa\x3e\x21\x6c\x04\x12\xe0\x4b\xf4\x7a\xde\x0b\x82\xf3\x1e\xc5\x22\xf4\x0b\x03\xd2\x75\x00\x78\x2c\x24\x14\x72\x3d\xf9\xcf\xe7\xb4\x0b\xd1\x04\x26\xa3\x7b\xac\x7a\xf5\x1c\xb9\xf0\x1f\x44\x0b\x82\x54\xc5\x20\xe2\x1b\xf0\xa2\xfd\x8b\x37\x4b\x43\xc0\x2f\xff\xfb\x50\xae\x8b\x6f\xf6\xa2\x57\xd2\x17\xa0\x1b\xe8\x8f\x8c\x04\x70\x20\x96\x11\x3c\x49\xb0\x6f\x40\xea\xd5\xc3\x00\xdf\x3c\xf3\x31\x03\x7c\x08\xc5\x00\xfc\xe7\x0b\xb9\x00\x41\x10\x3e\xa7\x22\xaa\xec\x05\x41\xd9\x73\x56\x5e\xc8\x94\xfe\x67\xd4\xc3\x0c\x2c\x08\x52\xd7\xaa\xc2\xa5\xb5\xf8\xc2\x87\xde\x05\x15\x8d\xd4\xb0\x64\xa6\x01\x97\xa2\xab\xd0\x03\xb0\x9f\xc6\xf1\x87\x1e\x2a\xc6\x20\xe9\x0a\x5a\xe0\x8a\x0a\x0f\x7a\x41\xf0\x00\x57\x08\x82\x70\x73\x01\xb8\xb4\x43\x83\x89\x27\x6a\x58\x24\x07\x11\xf7\x8b\xfa\x5c\xba\x08\x2a\xe8\x53\xb5\x83\x04\xbe\x21\x2c\x0e\xc9\xdf\xe9\xf0\x82\x50\x89\xb4\xb1\xb4\xc9\x25\x5e\x90\x79\x2f\x08\xe6\xaa\x4b\x90\xf1\xc0\x42\xf0\x0b\x7a\xb3\xa5\x8c\x2d\xb1\x1e\x0d\x9c\xce\xd5\xd4\x45\x7b\x35\x9c\x60\x00\x8d\xec\x99\xea\x1b\x06\x00\x6e\x52\xf5\x45\x97\x80\x2a\xdd\xf2\x71\x9f\xca\x35\x8c\x7b\xd5\x16\x51\x6b\x2d\x33\x00\x27\xa9\xc5\x36\xf2\x98\xd7\xec\x84\x54\x68\x2e\x96\xe8\x78\x7d\xa9\x82\xc5\x65\x36\x61\x22\x59\x4e\x21\x11\x73\x55\x88\xc5\x00\x42\x65\xa2\x5a\x9f\xf4\xdd\xca\xa4\x8a\x9e\x14\x06\x08\xfa\x53\xaa\x5c\x13\xd9\xb5\xa3\x45\x80\x3d\x7e\xe9\x05\xc1\x2f\x78\x46\x66\x75\xf0\x42\x0a\xec\x10\x21\x06\xb4\x05\xb2\x10\xba\x31\x2d\x04\xc7\xf6\xe5\xdf\xb0\x04\x80\x6e\xd0\xbe\x16\x0f\x5f\x2b\xe2\xb5\x59\x08\x8d\x02\x20\x81\xa4\x46\x32\xd4\x54\x94\x8a\x01\x64\xb6\xfe\xf6\xca\x4b\x4f\xd0\x3f\x36\x87\xdc\x19\xbd\xc7\xaa\x1d\xb4\xa1\xcf\x70\x03\x23\x11\x56\x49\x03\x91\x0e\x88\xa0\xe0\x1f\xcf\x10\x2b\x8b\x6e\xe4\x22\x4b\x8d\x87\x16\x11\x16\x00\xf0\x03\xc6\x04\x7c\x03\x00\xe4\x9c\x04\xfd\xf4\x65\x73\x83\x17\xfe\x71\x5c\x2f\x9b\x7c\xaa\xdf\xc5\x0a\x56\xc8\x54\x7e\xe9\x3a\x9d\x1e\x95\x17\x20\x19\x60\x4d\x31\xe9\x1b\x11\x30\x90\xe0\xf2\x5a\xfc\xef\x9f\x69\x47\x40\x45\x84\xfb\x66\x8a\xfe\x40\x5a\x28\xbe\x21\x80\x6a\x18\x37\x15\xf1\xf9\x85\x82\xc3\x62\xd2\x2c\xe0\x28\x92\x84\x05\xfa\x9b\xf4\xbf\x58\xf0\x10\xf3\x4f\xd2\x31\x90\x87\xa9\xa8\xec\x0c\xcf\x5a\xd5\xab\x52\x58\x3f\x81\xc2\x1a\xa6\x9b\xe0\xf1\x6a\x6d\x16\xe4\x05\xd5\xd2\x8b\xe8\x5b\xf8\x0e\xb6\x64\xb1\x4d\x78\xcd\x45\x40\x49\x3e\xd6\x26\x80\xd8\x14\x87\x57\x16\xbc\x23\x60\x0d\x9f\xc8\x01\x08\x6b\xe4\x47\xc7\xe9\x15\x48\x5f\xe0\x0f\x1c\xc8\x30\x08\x33\x87\x5a\x88\x74\xb3\x55\x49\x0f\x96\x93\xff\x7d\x8a\xb8\x1d\x26\xe0\xe9\x41\x2d\x10\x91\x0d\xa4\xb6\xc5\xcf\xef\x69\x6d\xf1\xb1\x27\x9d\x20\x01\x84\xa8\x2e\xfe\xe1\x15\x85\xd5\x1f\xca\x62\x9f\x3a\x37\x7a\x1f\x61\x55\x23\xe1\x51\x88\x5c\x6b\x23\xe3\x28\xdd\x91\x6f\xa4\x7f\xd1\xab\x65\x5c\x7c\x18\x50\x68\x80\x36\x00\x1a\x42\x1b\x16\xba\xb3\x3e\x90\x9c\x87\xe2\x1f\xf5\xe8\x00\x3e\x8a\x5f\x34\x40\xda\x47\xd3\xd5\x1f\x4f\xa5\xf5\x11\x04\xe1\x11\x92\xd5\x2b\xe0\xc6\x87\x11\x4b\x2d\x67\x03\xca\xdf\x02\xed\x84\x02\x5c\x97\x36\xc3\xeb\x43\x88\x54\xd7\xd9\xec\x21\xae\x70\x17\xe3\x51\x8f\x8e\x6a\xcb\x25\x84\xa6\xd5\xd6\xe6\x43\xdf\xe3\x34\xff\x4c\x05\x69\x10\x84\x2f\xa8\xa7\x6f\xc5\x13\xae\x7b\xd4\x35\xae\xb5\x12\x90\xa2\x02\x83\x04\x79\x08\xca\xf0\x21\x96\x07\x2c\x19\xf4\xee\x8a\xa2\x0f\x7d\xba\x14\x2b\xc8\x31\x5b\xec\xf8\x82\x08\x0a\x1f\x41\x10\xbe\x92\xd3\x04\xff\x92\x63\x41\x0a\xe2\xcf\x74\xbb\x11\x6d\x0a\x8c\x0a\x30\x0d\x6e\x8d\x41\xf2\x54\xd1\x8e\x44\x94\x34\xfa\x29\x29\xe0\x32\x57\x11\x7b\x3d\x5c\xb3\xb0\xd4\x0d\x20\xe6\x9e\x1d\x55\x52\x5c\xeb\x33\xde\xb0\x2d\x4b\x74\x8f\x85\xd2\xf7\xca\xbe\xf6\xd5\x41\x7a\xdd\xf6\xe9\x9e\xac\xe6\xd3\x85\x41\xf8\x77\xaa\x72\xc5\x38\xa2\x8a\x19\x51\xd0\x2d\xf5\x42\x57\xd1\xd7\x2b\x06\xc8\x6c\x3d\xfb\x64\x80\x10\x2b\x4a\x40\xf0\x83\x46\x04\xff\x01\x90\xcd\x7d\x7b\x27\xce\x46\xa2\x3f\x7c\x52\x4a\x39\x81\xd6\x0c\x57\x8c\xe6\x21\xda\x17\x8d\xf9\x47\xa5\xa6\x40\x97\x05\x41\xb8\xdf\x25\xb1\x2a\xc7\x52\xb7\x65\xaa\xea\xd3\xe8\x3f\xfe\xf7\xbf\x90\x3a\x04\x41\xeb\x0b\x03\xb9\xa6\xed\x66\xe8\x15\x79\x80\x0a\x9f\x04\xae\x1b\x49\x74\xe8\x17\x7e\x8b\x2d\xaa\x95\x82\x7c\xc6\x33\xc7\x3e\x0a\x00\xa5\x42\x42\x7a\x8c\xcb\x90\x62\x76\xb9\x35\xa6\x1c\x34\x58\x6d\x20\x27\x65\x28\xeb\x5a\x97\xd8\x36\x82\xaa\xa2\xe3\xbf\xf6\x82\xe0\xaf\xc4\xc6\xd7\x76\x34\x11\x77\xab\x0d\x02\x36\x94\x6b\xa4\x4d\x42\x24\x9d\x2d\x76\x9d\xf5\x88\xb2\xa6\xa2\x51\xf4\x23\x1a\x53\xf3\xb7\x56\x32\x03\xe2\x6c\xda\x10\xd2\xb4\x47\x2b\x8a\x3a\xf0\x0f\xd5\x6b\x50\xdb\x2c\xb4\xd0\xe8\x3d\x1a\xf2\xf1\x05\xfd\x0d\x62\x43\x5a\x5b\xf7\x53\xf5\x90\x9f\x0a\x21\x74\xcc\x55\x10\x3d\x25\x51\x64\xde\x7c\x40\x9b\xeb\x8e\x9f\x2a\xdb\x0a\x4a\xc4\xb2\x28\x1a\x36\x44\x2d\xaa\xf6\x91\x51\x6a\x85\xbb\xd2\xd0\x88\x84\x9f\xbd\x46\x15\x89\xa6\xc3\xf2\x5b\xec\x7b\xe9\x28\x2c\x9f\x47\xeb\x93\xba\x64\x99\xf4\xe2\xe8\xdd\x07\x60\x96\x5a\x40\x2c\x3a\xec\x84\x08\x5d\x40\xd1\x8a\x29\x0d\xb5\x2a\x7c\x00\x18\x24\xfe\x53\x61\x33\xdd\x07\xa2\xc4\xbf\x40\x5d\x10\x84\x3f\x7b\x27\x8e\x9d\x5a\x4f\x1f\x66\xae\xef\x57\x9f\xab\x45\x59\x93\x7e\xbd\xcd\xe9\x23\x29\xd7\x59\x9a\xf4\xbd\x6b\xee\x47\x4b\x60\xe2\x23\x5e\x97\x0a\x7c\xc2\x15\xb6\x47\x38\x8a\xfb\xb4\x1b\xe2\x04\xda\x5c\xe4\x10\x98\x8f\x84\x8c\x45\xd5\x93\x54\x0e\x91\x9d\x8e\xfa\x42\xa4\x73\x11\xa2\x1e\x09\x24\xa2\x6f\xca\x52\x8a\xc6\xcc\x3e\x57\x57\xee\xe4\xd4\x11\x02\xf6\x08\xc1\x68\xb7\xc7\xe8\xca\x08\x30\xf0\xb2\x27\x22\x84\xe8\xcd\xc0\xfe\x2f\x2f\xd5\x2c\x75\xa7\x1f\x87\x14\x7f\x84\xf6\x5d\xe3\xd3\x27\x73\x2d\x4b\xc0\xf5\x7e\x40\xdc\xd6\xb8\xda\x19\x44\x90\x8f\x88\x4b\x62\xea\xec\x13\x33\xb4\xde\x9e\x13\x48\x58\x20\x52\x51\x3c\x83\x44\xd0\x08\xed\x12\x2a\xae\xf1\xe4\x32\xa7\x1b\x0e\xb7\xda\x7c\x06\xf9\x8c\xa0\x24\x82\x04\xf4\x89\xb5\xc1\xf7\xb4\x47\x95\xf2\x52\x81\x57\x39\x2c\xe9\x9b\x8c\xbd\xeb\x27\xbd\x84\x55\x56\xd9\xd2\x71\xb3\xfa\x55\x26\xfb\xee\xa9\xaa\xb9\x92\x92\x43\x12\x10\xd8\x70\xe9\xbc\xf1\x1e\x13\x52\x6e\x64\x13\x6e\xb6\x4c\xbd\x2d\x25\xed\xf7\x21\xad\x08\xa4\x6d\x3c\x62\xcc\x03\xe7\xfd\x20\x38\xef\xdb\xf4\xf2\xd8\x6f\x76\xf9\x20\x7e\xda\xab\x77\xcb\x7d\x04\x0b\xe6\x23\x59\xed\xc5\xc2\x9f\x0b\xf3\x81\xb7\xff\x45\xb2\xe3\x7d\x58\x6f\x84\xd9\xae\xc1\x02\x23\xac\x46\x20\xb8\x4d\x7c\x4c\x42\x0d\xbc\x5b\x60\xcf\xe7\x4b\x58\x36\xc7\x66\x8f\x36\xb1\x95\x98\x72\x46\x7f\x3b\x06\xc8\x7e\xd9\x45\x18\x04\x17\xa1\x63\xf6\xfd\x1b\xb0\x61\xfb\x4e\xd2\xea\x5d\x22\xb4\xc4\x2f\x41\xe8\x30\x29\x12\xc2\xd4\xf8\x9c\xf4\xeb\xfb\x82\xc5\xf0\x48\x5c\xef\x96\xb7\x57\xf8\xdf\xc2\x5a\xba\x74\x18\xb9\xc6\x81\x98\xd4\x73\x3c\x4d\x2f\x0a\x29\x5b\xdb\x1b\x28\x5e\xff\x22\x84\x2d\x86\xc5\x61\x9a\xa5\x4b\xff\xb8\x87\x2a\x92\xa5\x7f\x4c\x43\x38\x54\x63\xe2\x60\xce\xc0\x49\x8c\x51\x21\x2f\x59\x02\xc5\xce\x36\xcd\xe2\x2c\x05\xef\xc0\xd0\x1b\xd9\xdd\xd7\x82\x3a\x0d\x57\x8a\x04\x11\xff\x1d\xba\x05\x6c\xe9\x1e\x1f\x61\x44\xe5\xbd\x20\xc8\x7b\x78\x0d\x17\xc7\x04\x4c\x46\x97\xcd\x28\x4f\x7b\x5e\xef\xdf\x8e\x5b\x22\xce\x80\x7f\x06\x38\x49\x63\x16\x52\xc6\x84\xa1\xa8\x3b\x0a\x84\x5d\x47\x15\xe4\x1f\x25\x87\x6a\x65\xc0\xca\x43\x41\x86\xdc\xa2\xa1\xde\x87\xbf\x13\x88\x20\x6e\x3c\x92\x86\xae\x24\x8d\x5a\x92\xad\x32\x2b\xe4\x3e\x71\x36\x54\xc1\xe8\x87\x91\xdd\xe0\xd2\x75\xe8\x55\x98\xae\xc9\x64\x51\x5e\x8d\xe2\xab\x7a\x34\x72\x43\x12\x12\x91\x38\xaf\x9d\x20\x08\x0b\x2b\x32\x39\x71\x32\x71\x7c\xa8\xdd\xb5\x73\xb1\x80\x7c\xe1\x97\x85\xe9\x47\x21\x0d\xdc\xc3\xf0\x82\x5d\x3c\xb4\xdf\x45\x39\x0f\xbe\x55\x74\x6b\x17\xfe\xe9\x7e\xc6\x56\x39\x54\xb4\x56\x31\xc5\x88\x27\x41\x57\xab\xb3\xc7\x3d\x1a\x79\x85\x5f\xae\x53\x5d\xf4\xe8\x0e\xb5\x2f\x62\xab\x05\x40\x46\x37\x17\x68\xa4\xd0\x00\xa6\xe8\xc9\xa3\x4e\x48\x28\x15\x07\xae\x88\xd1\x01\x20\x0f\x48\xee\x15\x69\xe2\x22\xe1\x11\x8e\x63\x85\x76\x10\xc7\xa2\x67\xb7\x22\x74\x6b\xb9\x77\x8f\x7b\xc8\x9f\xb0\x04\x7d\xd5\xa3\xce\xa1\x51\xb1\xf5\x16\x00\x19\xca\xea\xf0\xd2\x8b\x37\xa4\x86\xcd\xdf\xfb\x4b\xd4\x81\x27\xc4\x82\x75\xb1\x1b\xff\x4b\x31\xf1\x40\xfc\x0f\xcc\x1e\x50\x83\xa1\x2f\x9f\xc2\x8a\xf9\xe9\xb5\xb5\x03\x79\x68\xfe\x76\xd6\x90\x58\x5b\xc7\x48\x21\x46\x13\xc9\x73\x81\xcc\x1a\x14\xef\x80\x41\xed\xa8\xa7\x3f\x46\xeb\xe3\xef\xba\x54\xb9\x2e\xda\xe1\xaf\xe3\x2a\x24\x4f\x80\xdd\x6d\xbe\x08\x49\xe6\x39\xea\xc6\xe3\x2b\x29\x19\x0e\x21\x17\xdf\x76\x3c\x78\x51\x36\x20\xd2\xfb\x94\xd8\xf7\x31\x03\x49\xdc\xb2\x16\xe3\xd2\x69\x57\xc3\x1b\x13\x55\xd1\x25\xd8\xcd\x9e\xd9\x11\x3a\xf5\xc6\x9d\x3c\x30\x11\xbb\xf5\x7d\x58\xcf\xa1\x56\x3c\x42\x6d\x49\x2f\x61\x53\x53\xfd\xc7\x2e\x71\xac\x97\xf2\xa5\xb6\xa0\x3d\xdb\xd1\x54\x18\x92\x80\xa2\xbb\x61\x30\x81\x70\x9a\x93\x50\xed\x33\xf5\x91\xc7\x07\xec\x6d\xf4\xa1\x22\x6f\x32\xbe\xb1\x1e\x50\xac\xc7\xe7\x2a\x62\x95\xb7\x58\x89\x99\xbd\x5c\x6c\x0a\xc0\x3e\xa3\x66\x2f\x6b\x13\x9e\x24\x8a\x08\xe3\x06\xf1\x52\xad\x48\xb4\x85\x8c\x5f\xa9\xf9\x2a\xde\x4a\xdc\xd6\x52\xdd\x87\x05\x90\x59\xb4\x7f\xed\x40\x56\x13\x2e\x7b\xe4\x84\xcb\x6a\x17\x1b\xe9\x4e\x22\x65\x28\xa4\xf5\xfd\x82\x19\x4a\xf6\x9e\x43\xec\x3a\x3d\x09\xbd\x8d\xad\x45\xd2\x62\x1c\x2c\x0f\xf2\x8f\x11\xbd\x3d\xca\xd8\x64\x9a\x44\xce\x18\xdc\x77\x65\xf0\x4b\xc8\x10\x9f\x70\x23\x34\x6b\x6c\x17\xac\x8e\x6a\xd3\x66\x48\x81\x2b\x1e\x2b\x2c\x5b\x3d\x06\x13\xa1\x8c\xcc\x89\xd2\x79\xa2\xc2\x5e\xf7\xc0\x6c\x74\x2b\xc3\x6b\x05\x6b\x20\xe0\xd6\x00\x5d\x22\xc8\xa8\xf0\x2d\xb7\x2b\xc7\x2d\x5a\x06\x1b\x1a\x62\x3a\xa6\xb1\x12\x02\xa4\x36\x51\xb7\x56\x90\xcd\xda\xd3\x25\x91\x16\x64\xb0\xd5\x06\x14\x3d\x48\x57\x26\x90\x0f\x8d\x68\xaf\xd7\x93\x0e\xf5\x08\x43\xee\xa1\x1e\x85\x76\x80\xd7\x4a\x8a\x5a\x64\x1e\x40\xea\x89\x05\xe5\x87\x1e\xea\x87\x38\x4c\x03\x27\x27\xc8\x4d\x0d\x84\x15\xb7\xa2\x71\x4f\x7b\xb4\x22\xd8\xad\x16\xc8\x9d\x1e\x0d\xfe\x10\x33\x9a\xca\x08\xb2\x87\x65\x92\x03\xfc\xc9\x5c\x8b\xe4\x53\x7a\x9b\xf0\xfa\xe2\x58\xb6\xbd\xcb\xa4\xf0\xea\x5b\x0a\x10\x40\x30\xa0\x8f\x03\xec\x6d\x7d\x6f\x4e\x07\x89\xc2\x18\xc3\xb8\xef\x4d\xa9\x5c\x8d\xcd\xdc\xcc\x03\x9f\x7f\x1e\xda\xf1\x27\x3a\x1e\x4c\xc0\xdd\xb7\x2e\x1c\xff\xd8\x97\x85\xe2\xc6\x1a\x3a\x34\xa9\xa1\x7e\xd0\x45\xac\x73\x89\x0d\x31\xdf\xd1\x14\x22\x73\xc1\xf2\xb1\xa0\xb9\xee\xa3\x6e\x3c\xc1\x03\x6f\x37\x10\xd7\xd2\xf8\x7b\xec\xec\xc2\xc0\xa4\x2c\x87\xc0\x12\xef\x0b\xd5\x39\x71\x92\xb0\x51\xeb\x43\x2f\x98\xdc\x6e\x38\x20\xed\x4b\x1d\x5a\x8b\x54\x1f\x69\x98\x75\xee\x2f\x19\xd9\x45\xea\x53\xa9\xb3\x39\x62\x4e\x25\x5e\x84\x55\x06\xc3\x5b\x53\xeb\xf4\xfe\xef\x50\x52\x0f\xa2\x85\x83\xf7\xab\xaf\x9a\xd5\xee\xe9\x32\x10\x6f\x85\xbb\x2e\xda\x11\x07\x40\xa1\xb3\xab\x30\x08\xae\xdc\xcd\x90\xdb\xdb\x07\x10\xbb\x02\x77\xd1\x4d\xb3\x9a\x84\x7f\x3c\x41\xb8\x5c\xc0\x74\x57\xce\x34\xb7\xce\x2b\x3f\xf6\x9b\x6d\x8b\x88\x63\x13\x4b\x30\xd1\xd8\xb5\xe7\x33\x94\x1b\xd6\x95\x61\xfc\xba\xe8\x0e\x9a\x91\x4e\x0c\xad\x7a\xe8\xd4\x8d\xb1\x96\x94\x41\x4f\x4a\x2c\xab\xab\xa3\xc2\x4b\x20\xe8\xa0\x73\x64\x22\x93\xd8\x36\xd4\x26\xf3\xec\x92\xb4\x35\x98\xac\x65\xc0\xd4\xa4\xad\x11\x0d\x06\x8d\xc9\x78\x6e\x6c\x4e\x1f\x96\xf0\xd9\x38\x5e\xd3\xc9\x67\xe3\x58\xa6\x8b\x6b\xfe\x9a\xa0\xad\xb2\xda\x48\x34\xa6\xc6\x60\x79\xe2\x54\x04\xc8\xc8\xb4\x10\x85\x81\xa9\x42\x0f\xcc\xfa\x03\x55\xc4\xa6\xf5\xc5\x91\x10\xa1\xf9\x24\x01\x88\x50\x3b\x4e\x6c\x4b\x62\xcb\xa4\x5f\xba\x13\x6e\x59\x9e\x35\x81\xfd\x1a\x9b\x6b\xe1\x00\x5d\x14\x9e\xf1\xd5\xa1\x7a\xb8\x76\x01\xea\x77\xd9\x41\x8e\xd7\x42\x62\x21\xe6\xd1\x82\x51\x3c\xbe\x74\xdd\xc8\x9b\x4e\x37\x2f\xdd\x74\x06\x6c\x82\x2f\x8d\x13\x6c\xae\x3e\x17\x57\x61\x5f\xf6\xeb\x47\xb1\xc0\x59\xe4\x6a\xad\xb6\xdf\x4e\x34\x11\x55\xca\x7f\x60\xfd\x03\x89\x64\xd6\xa4\x9e\x38\xf1\x45\xe0\x5a\x8f\x1e\xf1\x46\x89\xcd\x22\x2b\xdb\x96\xec\xe0\x51\x6b\x1c\xcc\x76\xb2\x26\x69\x7d\x9e\x19\x5d\x27\x08\xf3\xb9\xfb\x49\x4f\x7b\x7f\xe4\x75\xaa\xf5\x7e\x68\xe2\x63\xad\x7b\x25\x03\xe6\xbe\x34\xc9\xfa\x28\x06\x09\xaf\x2f\x12\x0e\x33\x55\x7b\xd1\x2a\xbf\xc7\x51\x22\x8f\x9b\xa6\x74\xd7\xf2\x8d\x23\x24\xb4\x09\x9e\xd0\xa1\x78\x20\x2e\xbf\x52\x31\xf1\x3c\x74\xad\x06\x09\x4c\x5b\xf8\x78\xd4\xaf\x0d\x6a\x2a\x2b\x47\xfc\x0d\xfd\x90\x8d\x26\x44\xcf\xe2\x6f\x18\x86\xff\xc2\x31\x8e\x03\xeb\x54\x08\x8a\xc3\x18\x03\xe0\x90\x6a\x23\x22\x93\x5d\x4a\x71\x0f\x46\x7b\x24\x3f\x89\x52\x7c\x86\xe0\x34\x97\x72\x18\x50\x57\x3a\x78\x6b\x4d\xee\xbd\xb2\x6e\x74\xdf\xf4\x70\xbe\x2c\xdd\x0d\x82\xfb\x3d\x84\x63\xdd\xc5\x0f\xca\xaf\x22\xac\x05\xe1\x7b\x6d\x5e\xab\x53\x48\x17\xbd\x20\xb8\xa0\x37\xf3\x28\x99\x04\x7d\xe0\xc4\x13\x12\xda\x5d\xf5\x1f\x64\xb1\x00\xd6\xc5\xb7\xab\x5e\x10\x5c\x39\xa3\xd9\x86\x51\xbf\xdb\xed\x86\xe1\x75\xd5\x0b\xa8\x5c\x01\x3a\x42\xc1\xe9\x41\xdd\x99\x22\xe0\x78\xf2\x8f\x65\xb2\x16\x04\x75\x3b\x68\x1a\xff\x0c\x82\x11\xff\x35\x46\xb3\xfa\xc1\x3e\xbb\x5a\x1b\x7f\x08\x61\x7f\xd4\xd7\x8e\xb8\xe6\xb6\x9c\x52\xd6\xa7\xaf\x1d\xcc\x02\xda\x59\x96\xf5\xb5\xb7\x9d\x70\x8b\xe9\x80\x81\xfc\x08\x23\x7a\x17\x0f\xc4\x9c\x40\x7a\x37\x0c\xff\xf5\x48\x48\xae\x11\x5a\x14\x2b\x52\x84\x2f\xb9\xea\x8a\x6d\x6a\x50\x59\xb0\xf2\xee\x52\xcc\x50\xca\x94\xac\x6d\x25\xc0\xa4\x78\x87\xcb\x9a\xf3\x04\x5f\x4f\x24\x3e\x76\xc3\xf0\xef\x2a\x42\x14\x1b\x48\x89\xac\xd6\x4e\xdb\x2c\x44\x34\x04\x5c\x66\x5f\x52\x42\x94\x1f\xf1\xce\x51\x26\x09\x99\x25\x69\x4b\xfe\xf1\x84\x49\x76\xd0\xdf\x7c\x16\x3b\xb2\x12\xbd\xba\x46\xd6\x22\xf9\x61\x1f\x54\xaa\xb7\xe2\x32\xa2\xc4\x10\xef\x71\x42\xef\x38\x57\xae\xc0\xa1\x3f\x55\x15\xc0\xc3\x77\x30\x10\xab\xc0\xf7\xcb\x33\x61\x11\xb4\xdb\xa1\x82\xe2\x07\xb3\x97\x01\x83\x0b\x1d\x85\x66\x66\x9b\x1c\xd6\xfd\x66\xe0\x86\x62\xc1\x42\x44\x80\x85\xdf\xa2\xef\x5d\x26\x12\x92\x74\x0d\x8a\x4e\x88\x44\x99\x3a\xe0\x2a\xef\x9e\x0b\xff\xf5\xb4\xd7\xfa\x73\xcf\xe6\x07\x30\xa3\x2d\x12\xde\x0c\x6d\x65\x77\x44\x42\x5f\x48\x9b\xba\x7b\x9b\x4f\x7a\xc4\x01\x5e\x58\xbb\xd3\xa3\x0e\xe5\xa2\xda\x8f\x70\x7a\x91\x81\xbb\xeb\x3d\xd1\xaa\x49\xf3\x55\x1f\x8d\x40\x08\x13\xcc\x00\xb4\xfd\x30\xb2\x71\x64\x09\xf2\x0e\x16\xe4\x24\xcb\x83\x50\x98\xc7\xe4\xaa\xe5\x30\x25\x11\x35\xc8\xfd\x3e\x55\x29\xd0\xd0\x4a\x07\x2e\xf0\x96\x48\x02\x8b\xeb\x4a\x8f\x2c\xf4\xaa\xf9\x30\x58\x70\xf7\x83\x4b\xdd\x16\xc0\x4f\xf1\xc7\x1a\x7c\x65\x08\x5f\x82\x54\x0f\x28\x22\xc8\xda\xf8\xb2\xd7\x80\x2c\x06\x76\x1a\x8a\x9d\xf6\x42\xf4\x33\xad\x28\x78\xe0\x47\x84\x85\x07\xbd\x15\x16\x1a\x98\x54\xfc\x82\xcb\x06\xec\xad\x39\xeb\x5a\x2b\x17\x98\x62\x40\xf5\xbf\x2e\xf9\x97\x59\xf4\x17\x7d\xbe\xa2\x0f\xc5\xbf\xd3\x9e\x38\xba\xa2\x4e\x13\x4c\x57\x01\x54\x62\x18\xb4\x20\x3a\x95\x55\x27\x64\xb2\xbe\x19\x7c\x5f\x9c\xde\x5b\x8d\xec\x49\xea\x06\xe1\x2b\x92\xf9\x47\x2a\x5b\xc2\xea\xc3\xc0\x8c\x1f\xf8\x4d\xca\xd8\x86\x09\xd8\x9e\x1c\x1f\x9b\x61\x69\x1b\xd6\x79\xc7\x30\x05\x2b\xe6\x51\x84\x74\xa9\x41\x6b\xea\x3a\x63\x54\x45\x8d\x4d\xc4\x96\x6f\x47\x02\xe8\xb8\xd6\x77\x87\x18\x8f\xcf\x9f\xf5\x89\x0f\xd8\xe5\x35\x06\xc9\x73\x04\x5d\x2d\x44\x64\xfb\xf5\x77\x85\xa8\xb3\x43\xd7\xe3\x3f\x0e\x69\xc5\x73\x2f\x1f\xdf\x84\x41\x70\x43\xf8\xe4\x09\xf0\xc9\xa9\x92\xcc\xa0\x23\x00\x02\x38\x04\x8c\xce\xa8\x1f\xd4\x70\x95\xbd\x65\x62\xd9\x76\xbe\x1c\x44\x0f\x59\x1a\xf0\x2a\x47\x71\x08\x49\x2b\x99\xf2\x39\x47\x9b\xcf\xe9\xed\xe0\xec\x27\x4f\xd8\x70\x57\xf6\x41\x64\x34\xff\x33\x40\x25\x6e\xae\xce\x4c\x09\xad\x9b\x55\x85\x16\x0c\xee\xef\x98\xc8\x7c\x4b\x7a\xa6\x7d\x2c\x3e\xc5\xb8\xe7\x3d\xcb\x90\xc6\xf7\x8b\x85\x35\x86\x75\x7f\xb1\x61\x1d\x8a\x83\x1d\x4e\x0c\xc5\x5d\xc5\xcd\x3e\x12\x7c\xcb\xed\x6d\x15\x7a\x20\x3a\x37\xf4\x1b\xdc\xff\x42\x7f\xf2\x85\x56\xf6\xb6\xba\x90\x60\xb1\x09\x5d\x38\x17\xf0\x1c\x68\x7b\xb6\x8f\x0c\x5a\xdc\x97\x60\x08\xc7\x0b\x1e\x38\x91\xb5\x6c\x97\xae\x0f\xdc\xc5\xe2\x2a\x9c\x0f\x3d\x5a\xdb\xbe\x87\x88\x0a\x8d\x10\xcc\x3e\x53\x32\x90\x8a\xca\xf2\xdc\x36\xb1\xcb\x45\xef\x68\xa8\xd3\x7e\xea\x7a\x46\x24\x1c\x41\xbd\xe8\x6b\x6a\xde\x3b\x79\xb2\xb5\xdd\xc2\x2a\x53\xb4\x85\xce\xd5\x70\xbe\x45\xf6\xf6\xe7\xc1\xa3\x3d\x89\xf7\x4a\xa0\x29\x1b\xff\x7d\x6f\x35\x3d\xee\x13\xaa\xee\xe2\x16\xf8\xb6\xb9\xda\x5b\xc9\x60\x31\xf1\xd1\x54\x23\x9c\x1c\x2c\x5b\x0c\x3c\xa6\xa2\x4b\xdb\x9c\x84\xa2\x2d\xd9\xea\x5e\x31\x6c\xe8\xf9\x39\xa2\x67\xdc\x93\x80\xde\xce\x0a\xa7\xce\xa0\x15\x6e\x7f\xa4\x14\xd8\xa2\xc4\xe3\xf1\x6f\x23\x66\xdf\xd1\xbf\x10\x12\xcb\x56\x27\x78\xaf\x0f\x4a\x27\x66\x75\x9f\xde\x96\xf4\xc1\xa8\x23\x37\x41\x10\xbf\x90\x2a\xd3\x5e\x10\xdc\x10\x82\x78\x82\x4d\x03\x88\x91\xd8\xb9\xc7\xf4\x1f\x20\x67\x5b\x08\xd7\xbb\xca\x5d\x11\xd2\xc6\xbc\x71\xd6\x6f\xdd\x37\xba\x61\x07\xd1\x09\xf1\x84\x89\x29\xab\x29\xe2\x09\x1a\x66\xaf\xc6\x33\xf2\x75\xe2\x17\xa2\x9e\x74\x4f\x81\xf4\x1d\x3a\xdf\xa5\x70\xa5\x34\x35\x0d\x2d\xad\xbb\xbf\x57\x39\x8a\x37\x84\xe0\x54\x08\xce\x40\x64\x0b\x91\x9a\xb1\x2f\xfd\x11\xb4\x87\xbd\x20\x78\x28\xbb\x3b\x94\xe6\x87\x6f\x02\xd6\xc4\x67\xf5\x14\x89\x62\x6a\x01\x32\x66\x16\xcd\xf2\xda\x1f\xa1\x33\x58\xb6\xa6\x4a\x0c\x20\x12\xab\x4a\x43\xe2\x8a\x63\x18\xc8\x8e\x0d\x11\x91\x03\x37\xc4\x24\x0c\x24\x27\xe0\x27\x62\x18\xdd\x30\xfc\xbb\xce\x55\xc7\xf7\x4f\x7b\x2e\x1c\xe0\xbd\x58\x77\x0d\x18\x5e\x1a\x72\xb2\x56\xa8\x85\x6b\xf0\x69\xea\xd1\x40\x27\xdb\xe3\x9a\x35\x1a\xa3\xc2\x27\x47\xf1\x5d\x4e\x75\x21\x0f\xe5\x51\xf9\x82\x31\x81\xde\x39\x40\xa1\x0a\x0a\x07\xc7\xc3\xe1\x0c\x0f\xca\x6b\x1d\x21\xa4\x5b\x3b\x13\x4f\x7a\x4e\xec\x03\x7c\x54\xf0\x38\x61\x7b\x89\xc0\x0e\xdf\x88\xf8\xe0\x16\xe5\xe3\x1d\xde\xda\x5a\xa4\x6e\x18\xee\x56\xf8\x26\xed\xa5\x3c\x72\x8d\x4c\x03\xbc\x3c\x76\xa8\x37\xf0\x96\x00\x65\x8b\x7f\x20\xa3\xda\x17\x18\x32\xba\xc3\xab\xd4\xa8\x6c\xb5\x83\xf1\xce\xf6\x84\x8e\xfc\xa5\x4e\x18\x24\x14\x3a\xfe\x1f\xea\xee\xcd\xcc\xb9\x9a\xb4\x0c\x83\xa0\xc4\xe1\x05\x2d\x84\xc3\xf0\x68\x07\xf5\xe3\xfa\x31\x3f\x93\x45\xa7\x5b\x68\x60\x38\xa0\xd3\xd4\x07\x35\x8b\xd0\x95\xd9\x2f\x30\x2d\xdf\x45\xb6\x80\x4b\x72\x33\x36\x38\x98\x50\x8f\xd8\x80\xc4\x23\x03\xd4\xf9\x2c\x2a\xc7\x5c\x0b\xc3\x1d\x7c\xdf\x09\x81\x8b\xa4\xe1\xa0\x53\x35\x75\x72\xd9\x99\x2e\xd9\x4b\x04\xb5\xe9\x2b\xf0\x4d\xd7\x55\x4e\x4f\x80\x35\x5e\xf5\x89\x07\xcc\x3f\xfe\x23\xeb\x29\xef\x73\xa8\x97\xf0\x47\x2f\xdf\xa2\x20\x31\x41\x39\xff\x25\x6e\xfa\x83\xdd\xca\xb4\x47\x64\x5c\x9d\xa4\x7a\x8c\x88\x38\x80\x3e\xa8\x91\xb6\xbb\x62\x81\x4f\x7a\xcb\x94\x26\x6b\x61\x76\x10\x74\x40\x44\xee\x66\x93\xb5\x38\x2e\xf0\x97\xce\xd1\x77\xb0\x32\xc9\x76\xb2\x8f\xbe\x88\x7b\x5b\x3b\x51\x9f\x45\x87\xbc\x57\xd8\xc4\x77\x6c\x38\xc2\x02\xee\xfd\xb1\x95\xb3\x07\x68\x27\x2c\x7a\xe3\xf3\x3e\x34\x0a\xa1\x1c\x63\x27\xc4\x40\xfd\x9c\x77\x8c\x92\x37\x14\xa5\x59\x1e\x85\xf5\xd0\x8d\xc1\x46\x5f\xb6\xb4\xc9\x1b\x8b\x3e\xaa\xe4\xef\xb6\x3a\x2c\x08\x11\xc8\x56\xfe\xd4\x24\x24\xeb\x0f\xeb\xaa\x46\x20\x94\xe9\xa6\xf6\x58\x9a\xd3\xbe\x69\xc8\x7f\xe5\x67\x1d\x64\x5d\x74\x74\xce\x5e\xcd\x05\x40\x41\xb1\xb5\x24\x97\x8e\x39\xc0\x8b\x07\x92\x47\x3f\x73\xec\x1d\xef\xd8\x21\xe4\xb5\xf8\xa8\x4d\x67\xcb\xbe\xf2\x2d\x22\x7d\xa2\x86\x76\x48\x7c\xa9\x1f\xec\x15\xb7\xf4\xe9\xa3\xcf\x5a\x76\x64\x36\xa3\xaa\xe0\x99\xb9\xab\x5d\xf4\x7f\xa7\xd5\x16\x5c\x3e\xf4\x82\x02\x53\x06\xb4\xd7\x15\x74\xe5\xcd\xb5\x1e\x48\x76\x56\x5e\xfc\xc1\x12\x50\x74\xbf\x93\xd5\x6d\x4e\xe5\x03\x10\xa7\x44\x97\xfc\xb8\x6a\x81\x9c\x03\x2a\xa9\x37\x9f\xec\x3b\xaa\xd5\x14\x8d\x5d\x54\xe8\xd8\x07\xb2\xfb\xc5\xc5\xbb\xd6\xad\xbe\x21\x6c\xf1\xd2\x40\x49\x80\x2b\x5b\x7a\xf6\xd2\xd9\xfc\xac\xb3\x32\xea\x33\x06\x03\xee\x34\x74\x4d\x02\x10\xb5\x7b\x61\x65\x3c\x16\xb0\x9d\xb0\x65\x6d\xd3\x80\xcb\x65\x07\xe7\x29\x0b\x7a\x92\xe8\x54\x0c\xe3\xf6\x7d\x81\xd1\x64\x7b\xc5\xb8\x2f\x72\xa7\x70\x6d\x5f\x50\xcf\xea\xeb\x31\xee\x0b\xa4\x97\xeb\x88\x59\xd7\x69\x10\xa3\xb7\xf6\xe8\x3e\x20\x96\x44\xe1\xb0\xf0\x20\x95\x6a\xcc\xed\xcb\x5d\x8b\x8e\x08\x0d\x10\xd4\xfb\xb6\xba\x7d\x30\x83\x80\xa9\xf1\x4e\x36\x77\x0c\x3f\xe1\x5d\x2b\x33\xfa\x18\x02\x06\x4a\x8e\x01\x92\x6c\x2f\xc0\x6b\xc4\x5a\x4b\xa1\x4e\x94\x21\xc1\xbe\x28\x04\xd1\x41\x42\xa7\x0b\x17\x1b\x93\x0c\x43\x2b\x85\xcf\x52\x52\x3e\x98\x0c\xb1\xf6\xbc\x9d\x91\xad\x09\xd2\x78\x00\x29\xa5\x84\xc8\x2d\x65\x93\x3a\x8f\x9e\x7d\x16\xb2\x54\x6a\xa1\x45\x48\xb5\xac\x6d\x4f\xae\x8f\x84\x03\xd1\x54\x20\xf8\x40\xca\x43\x72\xa7\x86\xfb\x12\x87\xf0\x48\xfe\x18\x98\xd2\xfe\xe8\x03\xac\x4a\xad\x93\x6f\xd4\xb2\x95\xb4\xd4\x0d\xc3\x4e\x6f\x87\x03\x32\x42\x81\x1d\xfe\xd9\x58\xe3\xc4\xa0\xb7\xb4\xb6\xb5\x65\x07\x0a\x18\x60\x06\xbe\xb1\xad\x8b\xae\xbc\x3c\xd8\x67\xfe\x12\xc9\x4a\x92\x0d\x06\x76\x04\x07\xb9\xb5\x84\x59\x61\x85\xa1\x14\xb0\x61\x5f\xe1\x4d\x22\x57\x38\xba\xe5\xde\xf5\xbd\xb9\x43\x29\x98\x0c\x50\x3b\x8a\x1d\x29\xf3\x8f\x52\x5f\xe2\x51\x57\x5d\xb9\xf9\x14\x2a\x87\xf4\x47\xc7\x9b\x06\x50\x2c\x6e\x29\x7a\xd4\xec\xf3\x6c\x0d\xa2\x13\x3d\x28\xca\x46\x7c\x6f\x8b\x1a\x0a\x6f\x76\x01\x5a\x7e\xa2\x58\x7d\xce\x36\xa9\x4c\x02\x3d\x60\x56\xbb\x76\x60\xb6\x63\x10\xf1\x02\xef\x41\x92\xf9\xed\x62\xbf\xda\xbd\x24\xe9\x9f\xab\xce\xcf\x07\x28\xfc\x09\xcb\x46\x3c\x55\xcc\xbf\x1e\x75\x04\xc9\x20\xfb\x2b\xcd\x41\x3a\x95\xbc\x24\x46\xc6\xe4\xaa\xb3\xed\x7a\x33\x6b\x3c\x9a\xb3\x8b\xf2\xe1\x88\xaa\x86\x99\x7a\x33\xeb\x89\x78\xa8\x45\x18\x94\xd6\xc9\x6c\x1c\xce\x00\x23\xd3\x65\x08\x84\xc3\x57\xf8\x09\x04\x38\x1a\x27\x66\x69\x5d\x67\xb6\xe9\x04\x26\x7e\xf0\x78\x9a\xd6\x0d\x06\x1f\x1c\x6e\x17\x7d\xc3\xce\xaf\x8b\x8e\xcc\x7f\x2b\x9c\x6f\x7b\xcd\x9d\xd6\x2c\xa4\xc1\x11\x32\x1e\x11\x94\xf6\xc8\xce\x93\x02\xba\x64\x4c\x23\xe8\x60\xfe\x01\xb3\xc1\x2f\xc0\x12\xb1\x48\x35\x5a\xae\xfb\x28\xd5\x9f\x98\x8d\x80\x53\x0b\xb8\x0f\xce\xb1\x41\x30\x16\x89\x0d\x6d\x49\x31\x7d\x2c\x1f\x4e\x15\xc0\x3f\x36\x60\x64\x35\xd5\x8a\xd7\xda\x21\x24\x44\x48\xec\x41\xf8\x93\xd0\x88\x80\xb0\xb6\x17\xa4\x7f\x7d\xe9\x48\x3e\x2b\x28\x5c\xe8\xd5\x51\xbd\x49\x5d\xbb\xae\x2f\xc5\x5f\xfc\x22\x37\x4f\x1a\x7d\xec\x34\x01\x36\x83\x26\x16\xf5\x3c\x85\x4d\xa4\x27\xbd\x3e\x11\x0d\x22\x86\x55\x52\x97\x41\x9e\x13\x41\x37\xf1\x97\xb7\x4b\xc7\xad\xe5\x37\x97\xea\x53\x7f\x13\xab\xce\xbf\xbc\x0e\x94\xe5\xbc\x5b\xe1\x7f\x6b\x21\x7e\x44\x70\x12\xc1\x3b\xb0\xe3\xaa\x61\x60\x1d\x4c\x83\x6f\x24\xa0\x1e\xda\xc6\x26\x54\xf1\x9d\xb6\x76\x67\xb3\x39\xa0\xab\x47\xce\x6a\xd9\x86\xf5\x92\xd1\x6d\xfb\x98\xce\x2b\xc4\xe6\xb9\xce\x66\x27\x54\xed\x73\xbd\x6e\x31\x9d\xa7\xfe\x9b\xb7\xea\xb6\x6c\x27\x3d\xba\xab\x88\x83\x1c\xfa\x72\xb3\x33\xac\x88\xf1\xfa\x9a\x4d\x7f\xf5\xb7\x4c\x1e\xc5\x11\x4c\xb7\x8d\x3e\x23\xf5\x2f\x3b\xb0\xf1\x33\x55\xe3\x22\xd1\x4a\x99\xc3\x10\x36\x26\x47\xb1\x44\x17\x24\xa8\x1c\x04\xe1\xa3\xfa\x4c\x0f\xd4\x83\xca\x3b\x01\x4b\x96\x26\xa2\x00\x27\x21\x79\x15\xea\x83\x46\x76\xb5\xbe\x04\xd7\x16\x5c\xc6\x67\x90\xfb\x58\x7d\x2f\x18\xf2\xfa\x5f\x5d\xe9\x07\xf5\x56\x12\x9f\x95\x13\x2e\x21\x6f\x96\x85\xb6\x21\x7e\x60\xa7\x49\x53\xe0\x6d\x43\x77\xe0\x64\x59\x78\x8d\x2f\x57\xb4\x5e\xe2\x40\x85\xba\xba\x58\xca\x2e\xc7\x05\x0c\x49\x6c\x43\x00\x88\x9a\x50\xff\x18\xa1\xc3\x0b\x82\xeb\xc4\x76\xc0\x72\x79\xd1\x6f\xfd\xa5\x56\x2e\x5a\x66\xd9\xa3\xd0\x87\x10\x6f\x62\x7b\x08\x5e\x2e\x34\x31\xee\xd6\xbf\xfc\xf9\x1c\xd8\xd9\x12\x0d\xd0\x81\x95\xc8\xcd\x33\x33\x42\x13\xc7\x28\x7d\x3c\x4e\x04\xa4\x27\xb8\xe0\x59\xfd\xeb\x90\xce\x93\x34\x76\x01\xa9\x7a\x5e\x3b\xad\x56\x3c\x89\x3f\x7d\x4f\x9b\x82\x62\xc0\xd9\x2c\x75\xc1\x25\xc0\x1d\x8e\xf5\xe8\xe5\xfd\xb9\x4f\xc3\x6c\xe4\x41\x14\xeb\xfa\x66\x70\x35\xe0\x74\xaa\x6b\x90\x3e\x71\x76\xb6\x08\x6e\xea\x42\xfb\xc0\x0c\x8e\xff\x46\x86\xdf\x53\x29\x2e\xee\xe1\x72\xdb\xe8\xea\xa2\xb7\xa7\xc1\x41\x27\x51\x01\x50\x2c\x56\x54\xe0\xb2\x4f\x63\xb2\x56\x71\xda\xf3\x1a\x3f\x24\x52\x41\x62\x2f\x1e\x26\x72\x22\x2e\xb5\x21\x61\x62\xa3\xf9\xd6\x1a\x0a\x8c\x56\x1a\xd4\x83\x09\xc4\x4b\x02\x8a\xae\xe9\xf1\xb4\x57\xef\x2c\xc0\x37\xdb\x1d\x74\x4e\x93\x90\xe4\x19\xd2\x04\xa5\x69\xdb\x97\xc8\x72\x3a\xcd\x7a\x1f\xf4\x76\xf6\x03\x60\xfb\x7d\xc1\xf6\x0f\xfc\x87\x59\x65\x5a\x4e\x10\x84\xe2\x6e\xca\x44\x3a\x9e\xfe\x8c\xc5\xdf\xf2\x0f\xd5\x28\xc4\x23\x1c\xc0\x35\x48\xb5\x01\x72\x7b\xb1\x15\xba\xef\xb2\xb6\x25\xdc\x1f\x3b\xb5\x7d\xc1\x69\x90\x3e\xe4\x97\x75\x66\xa4\x1a\xf8\xfa\xea\xc2\x46\xb9\x81\x66\xd2\x83\x58\x52\x17\x6d\x89\x81\xef\x63\x1f\xdc\xa7\xf4\xf6\xdb\x12\xbd\xe4\xee\x9c\x19\xb0\x0b\xa7\xe8\x6c\x63\x74\xc1\x28\xc4\xfb\xae\xb7\x0c\x09\x5e\x89\x00\x24\x87\xce\x89\xea\xab\x3d\xfc\xa5\x84\xdd\x9e\xbd\x45\x61\xf3\x3c\x16\x76\x46\xba\x95\x3d\xcd\x30\x0b\xb5\x44\x17\x3d\xb2\x3e\xf2\x9c\xd2\xad\xc9\xf6\xac\xfa\xc8\xe9\x5d\x6d\x16\xd7\x34\x7e\x1e\xa2\x73\x06\x44\x94\xf8\x28\x84\x94\xfa\xe2\x38\x20\x4b\x6b\xec\x8e\x4d\x47\x0a\x42\x45\x58\x10\x48\x45\xd2\xd8\x7d\x8f\xaf\x38\x80\xd3\x21\xa2\x22\xfc\x69\x19\xe0\x33\xc5\x59\xd8\x2c\x24\x6c\x65\x81\x36\x81\x43\x94\xce\x5d\xa0\x84\xa1\xc5\xb0\x70\xd9\x72\xdd\x41\x15\x01\xb8\x82\x02\xdb\x92\x00\x05\x10\x85\x1b\x25\xa8\x81\xc7\x73\xe5\xb4\x57\x6e\xf8\x4e\xea\x7b\xcc\x90\xac\xdf\xa7\x47\x45\x6a\x0c\x58\x5f\x34\xc4\x5c\xa4\x35\xf0\xc6\x0d\x48\x47\x9e\xb0\x5e\x57\x66\x09\xc0\xdf\xf2\x0c\xf5\x85\x81\x48\x8c\x11\xa1\xd8\x04\x75\x67\x0d\xde\x51\xc8\x03\xd1\x05\xf1\xaf\x0c\x0a\xc5\x40\xd6\xd3\x82\x3f\x79\x4e\x8d\x42\xc4\x89\x38\x24\x06\xe3\x2a\xe0\x65\xe6\x7c\xd9\x43\xa7\x3b\x89\xc7\x6b\xed\x48\xbf\x47\x13\xc6\x47\xbb\x57\x8e\x3e\xc3\xcc\xf0\x11\x47\x4f\x24\xb1\x6b\x1f\x10\x7a\x8e\x47\xf3\x49\x0e\x20\x7b\xb0\xd9\x42\xc7\x85\x7c\x8f\x26\x9d\xf4\xfc\x3e\xa4\x27\x3d\xea\x31\x4c\x7b\x07\x03\x02\x87\x50\xc7\xc8\x24\x06\xa0\x70\x2a\xb0\xf3\x9e\x2a\x0c\x68\xef\x2c\xef\xa2\xb0\x57\xe8\xf7\x0d\xc6\x5e\xd7\xc9\x73\xaa\x1c\xf4\xa7\xdf\x9e\xf0\xb8\x7e\x5d\x72\x64\xc7\x17\x11\x55\xf1\x8b\xc5\xd1\xa5\xba\x68\x6b\x5d\xfe\x3d\xe0\xc3\xe7\x20\x91\x18\xac\x6d\x5b\xd4\xf9\x30\x1f\x76\xea\xc4\x0a\x04\x3a\x4e\xfb\xb0\x8b\x48\x51\x28\x1a\x63\x0f\xa7\x1b\x86\x2f\xf5\x41\x31\x02\xaa\xee\xf9\x74\x95\xd2\xa1\x7d\x25\x01\xb2\xb5\xea\xcc\x66\xec\x12\x7a\xf6\x25\xe9\x92\xa3\xa7\x1c\x45\x13\x4c\x89\x22\x26\x6a\xbd\x68\x9e\xf5\xbd\xde\x88\x6d\xa0\x76\x51\xc6\x30\x58\xad\x40\xf1\x20\xcf\xc1\x9c\x24\xdf\x88\x96\x76\xfd\x86\x27\xde\xad\x55\x04\x1c\x4e\x68\x14\xe0\xc5\x38\xdd\x50\xdf\xdb\xe0\xdb\xcc\x18\xda\x89\x48\x2e\xb1\x68\x2f\x92\x34\xb6\xe0\xdb\xec\x79\x39\x0f\x9a\x90\xbb\x15\x8d\xdc\xc4\x80\xb9\x01\x94\x0f\x38\x85\xdb\x2a\x19\x2f\xc1\x07\xbe\x85\x43\xeb\xb5\x47\x21\x52\x69\x84\x9e\x70\x5c\xc7\xdd\x8a\xec\x38\x87\xa9\xc9\x62\xd5\xf8\x6e\xd6\x71\x23\xeb\x39\x5d\x9d\x00\x0a\x32\x91\xe8\x29\x5b\x62\x76\x51\xb2\x2d\xd9\xe1\xa8\xb1\xcd\x1e\xe1\x17\x0b\x88\x21\x49\xa4\xb1\xab\xc4\xf5\x72\xfa\x14\x0a\xe4\x22\x58\x3c\xa8\x57\x92\x98\x4f\x16\x95\x5c\xf7\x68\x1d\x1f\x19\x3a\x71\xce\x90\xc4\xf6\x48\x73\x6b\x08\x8b\x62\xc8\xd1\x38\x34\xbb\x3a\xe2\xf1\x7a\xa6\x62\x22\x20\x17\x50\x02\x0f\x90\xad\xa6\xb1\x94\x1e\x1e\xa2\x5d\xf8\x9c\x7e\xe0\x1a\x40\xae\xe7\xf8\x1c\x76\x36\xc8\xf9\x36\x14\xc8\x0e\x29\x47\xc1\x2f\x6c\x3c\x03\x6b\x8a\x22\xc5\x2f\x76\xb0\x62\xd7\xcb\x2a\x1e\xaa\xc3\x03\x83\x7a\x03\x57\x4f\x7c\x23\x3b\x9b\xa1\x1d\x6d\xf1\x90\x31\x2c\x98\xd3\x8d\x05\xe7\x23\x7f\x08\x09\x30\x48\x32\x14\x40\x90\xc0\x91\x0b\xb4\xdc\xc8\x80\x26\xd6\x2e\xa8\x01\x02\xa8\x6b\xad\xbc\x77\x3c\x7a\xd0\x74\x84\x8b\xdd\xa4\xf5\xd4\x3e\x31\x45\x70\x46\x28\xc8\x45\xd7\x53\x7f\x6a\x15\x7e\xef\x3b\x24\x9b\xd0\x0b\x46\xb2\xc4\xae\xf5\x48\x3d\xb1\xc6\x3d\x06\x87\xe2\x48\xc0\x25\x80\xe4\x2e\xe3\xcc\xbf\x67\x4f\x8e\xb8\xf0\x5f\x49\x4f\x58\xc9\xe7\x8e\x33\xee\x39\x14\x0a\x49\x24\x8f\x07\x7d\x47\x57\x1e\x89\x3f\x7e\xf1\x45\xbe\xae\x91\x73\xfb\x1a\xae\x1e\x40\xd2\xd2\x7b\xcf\x0e\x09\x03\x03\x37\x80\x85\x02\xc8\x23\x68\x94\x92\xaf\x2b\x73\x5f\xbc\x65\x94\x4d\x88\xa5\x10\xc0\x45\x62\x24\x20\xe2\xb9\xc4\x66\xc1\x45\x61\x58\x50\xb8\xda\xe1\x43\x58\x2b\x88\xba\xf4\xaa\x30\xe0\x6d\x57\x56\x77\xe8\xcd\x61\x5e\x75\x7e\x40\x5c\x05\x8c\x08\x6b\x42\xd6\x8d\x07\x66\xfb\x3d\xa0\x37\x3e\x90\x49\x89\x6f\xf0\xfc\xf7\x53\x1c\xbc\xb1\xab\x76\xd1\x8b\x33\x7e\x49\x5a\x63\x40\x15\xda\x5d\x93\x7b\x68\xe3\xbe\xb3\x3b\xe5\x35\x03\x8c\xf4\x0b\x55\xc4\xf6\x1f\x9a\xfe\x1f\xf5\x7c\xf1\xb5\x2e\xba\x4a\x0a\xf5\xfd\x67\xf1\xa0\x79\x22\xff\xe8\x43\x27\x2a\x46\xb7\x47\xf2\xd3\xe0\x80\xa5\x15\x52\xee\x28\x6e\xa0\xb9\x45\x96\xdc\x7a\xbf\x60\x7f\x5e\x41\x44\xca\x07\x9e\xe4\x9b\xe7\x22\x48\x40\x60\xd8\x45\x47\x6e\xc9\x32\x62\xd3\xcd\x1e\x19\xcf\xcb\x0d\xc9\x5c\xee\x48\x82\xaa\x6f\x6f\x15\xf9\x5e\x7e\x09\x61\xa3\x8f\x70\x84\xbf\x53\x10\xa3\x46\x2a\x8d\xf1\xb6\xab\xd8\xb1\x56\x64\x62\xd6\xd2\x30\xf1\xcf\xc2\x41\xfc\xab\x23\xf2\x03\x13\xb2\x71\xee\x27\xa9\x5f\x9e\x5a\x5f\x97\x6c\xf0\x79\x1c\x12\xc7\xe6\xf3\xad\xb7\x2f\x18\x36\xa8\xdb\x8a\xb3\xc0\xbc\xc4\xf7\x84\xf1\x8f\x91\x90\xf6\x7f\xae\xbf\x6a\x42\x99\xe8\xae\xee\x79\x61\xd0\xfc\xa3\xde\xb6\x3f\x47\xa1\x89\x5a\x74\x4e\xc4\xbf\x0f\xc4\x7d\x55\x93\x01\x12\xa8\x70\xa8\x18\xb8\xde\xbd\x2d\x46\xbb\x8d\x17\x75\xb7\xc5\x20\x84\xd6\xef\x6e\xd4\xa2\x76\xb1\x7f\x09\xcb\x04\xfb\xf1\xe4\x1a\x49\xb9\x9d\xcb\xbb\x1e\x29\x7c\xd8\xd2\x14\xdd\x59\x2b\xfe\x21\x4f\x75\x0e\x02\x2b\x03\xab\x86\x38\x36\x07\x9e\x00\xe5\x8f\x7d\x7a\xfb\x95\x25\xc2\xad\x9b\x3c\xc0\x97\x86\xd0\x39\xaa\x08\x54\xbc\xc2\x25\x1e\x34\xb2\xa2\xe8\x8c\x30\xad\x25\xea\xe1\x12\x0f\x15\xda\x12\xb7\xa1\xf9\x97\x13\xd0\x62\x2d\xa7\xda\xc1\x0d\xe1\xba\x5b\x0f\x9e\x26\x8e\xeb\x6c\x07\xcc\x3d\xa0\xcd\x70\x46\xfa\x4b\x78\x2c\x01\x5a\xc3\x58\xa2\xb5\xf6\x4e\xac\xb7\xc6\x89\x0e\xac\x11\x55\x8f\x9c\x67\x2f\x6b\x47\xb1\x0f\xce\x74\xd1\xa3\x19\x8b\xc7\xab\x51\x9b\x4f\x3f\x77\x64\x1b\x86\xec\x96\x30\xd4\x40\xf3\x3e\xfc\xcd\xd0\xd8\x70\x55\x9f\x0d\x57\x0d\x84\x33\x07\xc2\x5d\x4f\xae\x95\xb4\x5c\xba\xf4\xf9\x6c\xe8\x93\x1c\x4b\x14\x05\x6e\xd2\x7c\xcd\x65\x08\x62\x8b\x99\xe6\x0d\xd6\x7a\x7e\xf4\xca\x87\xae\x37\x7f\x10\x84\x91\xbd\xe9\xe7\x28\x1f\x0d\xcb\x21\x15\x22\x44\x4c\x0f\xe0\xaa\x76\x22\x5e\xa1\x8e\x15\x7e\x4c\xb1\x4d\xbd\xe7\xd9\x42\x02\x6f\x05\x50\x08\x7a\xd4\x93\x9d\x41\x5d\x60\x22\xae\xec\x04\x8a\x1d\x14\xba\xf7\xf9\x7d\x03\xb8\x8f\xb9\x6e\xc7\xd0\x13\xe9\x75\x1f\xc1\xb3\x1d\xd1\x3a\x70\x14\x99\x75\xed\x2b\xb8\x69\x72\x62\xed\xd5\x0e\x30\x5d\xb0\x36\x08\xc0\xc4\x22\xd6\x03\x5f\x43\x36\xd5\xa9\x73\x30\xc2\xc3\x40\x34\x43\x5e\x19\x00\x23\x3b\x6d\xdc\x32\x3d\xb2\x05\x16\x92\x4b\x67\x1f\xb0\xe4\x26\xe6\xa1\x5b\xfb\xb1\xa3\xdb\x16\xd5\xb6\x02\xaa\x76\xc2\x8e\x5f\x48\x43\x6d\xb0\x51\x6a\x6a\x5b\x81\xc4\xda\xbe\xed\x78\x14\xb6\x4e\x7c\x49\xf5\xa0\x10\x81\x80\xac\x07\x89\x1f\xf7\xe9\x00\x24\x8e\xe1\x3a\x3e\xd6\x53\xc9\x66\xa9\x9f\xf6\x88\xc5\xe5\x4c\x8e\x84\xd3\x78\xa3\xfb\x3d\xe1\xb9\xe0\x87\x11\x08\xb0\x6e\x4f\x29\x86\xd8\x97\xb0\x43\x8c\xe4\x90\x58\xf8\x44\xa1\xbb\xd6\x69\xea\x1c\x03\x14\x75\x60\x2b\x1a\x6d\xc3\x75\x65\x96\x80\xaf\x3e\xf9\x05\xc8\x1c\x78\x42\xbf\xbe\x0b\x43\x3c\x69\xfc\x1e\xbe\x7f\xb4\x43\x67\x64\xf7\xdf\x45\x1b\x31\x24\xd6\x53\x97\xb7\x4f\x63\x22\x20\x80\x2c\xae\x4c\xb1\xac\xf0\x6d\x7f\x51\xce\x21\xc3\x7b\xde\xf4\xf7\xce\x39\x84\xf8\x19\x09\xcb\x1a\x7b\xa6\x47\x23\x38\x83\xba\x20\xbe\x1b\xbf\x7f\x84\x9d\x6b\x68\x6c\x3a\xec\xa2\x87\x36\x7c\x66\x85\xe5\xee\x3c\xed\xd5\x57\xa4\xc7\x45\x7f\x53\x45\x9f\x6d\x48\xb2\x72\x6c\x51\x14\xa2\x08\x29\xac\x6f\xcd\xa0\x9b\xce\xb3\xce\xf0\x18\xbe\xa8\x0d\xc2\x8c\xd0\x26\xa0\x84\x24\xc6\xb9\x88\xbf\x1e\xf8\x6c\x15\xa3\x23\x76\xa8\xb3\xd6\xf5\x1e\xb7\x30\x66\x52\x5f\xaa\x10\x97\x6e\x36\x9d\x36\x46\x35\x05\x75\x6d\x2a\xa7\x8d\x41\x6e\x6d\x9b\x0f\x4e\x1b\x43\xa4\xb5\x6d\x2e\x9d\x36\x86\x03\x6a\xdb\x5c\xdf\xc9\x38\xc6\x91\xa9\x6d\xf3\x18\x36\x91\x1f\xf7\xe8\xd1\xfe\x89\x08\x5f\xcd\xa9\x19\x83\x2e\xd1\xa7\xf2\xd0\x77\x54\x2f\x0c\xec\xdc\xaf\xc5\x1b\xc9\x17\x3d\xe9\xb1\xed\xd6\x6e\x44\xc3\xd9\xb3\xda\x38\x00\xd2\x20\x68\x93\x79\xd6\x5b\x7a\x05\x02\xaa\x6d\x5d\x81\xe0\x73\x73\x43\xd8\x1f\x16\x6d\x61\xaf\xc7\xd4\xc9\x7b\xc8\xfd\x34\x4b\x4b\xef\x22\x4b\xc3\xba\x90\xa2\x9e\x32\x24\xfa\x92\xc7\x8b\xc4\x2a\xbb\xb9\x21\xef\x25\x48\xd3\xb0\x75\x1e\x9a\x2b\x58\xc7\xf5\x09\xe6\x95\x24\xaf\x58\xd8\xff\xea\x0a\x88\xc7\xbd\xfa\x1c\x76\x85\xdc\xbf\xf4\x44\x36\xd6\x8d\x4e\xf3\x4f\xc2\x9a\x34\xff\xa7\x3a\x02\xf4\x67\x78\xcd\x61\x52\x73\x8b\x29\xaa\x8f\xe6\x0d\x68\x77\xfd\x21\x9d\xa5\xab\xb2\x77\x48\x7d\xf2\x84\x2a\x22\x0d\x7f\x7d\x7a\x56\xa1\x2b\x77\x94\x3e\xaf\x45\x22\xef\x71\xbf\x45\xa8\x19\xc8\xe2\x3a\xac\xbf\xeb\x0a\x31\x1f\xe0\x08\x2a\x82\xba\x30\xed\x2e\x70\x24\xc4\x53\x1e\x10\x4a\x45\x06\x48\x10\x84\xa9\xb3\xc9\xaf\xb6\x02\x94\x55\x48\x4e\xea\x19\xc4\x77\x51\x02\x04\x1f\xea\x17\xf1\x59\xd9\x55\x2f\x34\xb9\x81\xc6\xb3\x25\x77\x77\x85\x2b\x90\x03\xab\x13\xb0\x29\xa1\xbe\xcf\xe6\xf0\x58\x1f\x50\x20\xac\x8d\x1d\xaa\xf9\xe0\x1f\xd7\xaa\x3f\xa5\x1a\xb2\x36\x0c\x61\x6f\x54\x62\x3d\x8f\x76\xc6\xfa\x9a\x6d\x45\x3b\x7b\xb7\xce\x1e\xb8\xd8\x71\x7b\x00\x8d\xb9\xe8\xe6\x64\xb5\x2a\xa1\x85\xbe\x5a\x88\x6d\x1d\xe8\x01\x9b\x58\x85\x56\x06\x8c\x5a\x42\x7b\xa5\xc8\xac\xc4\x2f\xdf\xed\xae\xd7\x34\x94\xa9\x84\x33\xea\x4b\x84\x32\x7a\x34\x4c\x00\xeb\x00\xa4\x60\xe5\x19\x5f\xfa\x1d\x4e\x5f\x02\x17\xff\xf5\x03\xa2\x5c\x60\x9b\x57\x94\x6d\x10\xdc\xa2\xf7\x73\xdf\x66\x69\x17\x6d\x17\xed\x59\xf1\x4b\x1c\x4d\xb4\x83\xcb\x5d\x71\x32\x4e\x14\xc0\x11\x09\xfd\xd6\xda\xe3\x9e\x37\x02\x6f\x5b\x91\x9a\x4f\x89\xdd\x0c\x1b\xa6\x96\xba\x2d\xbc\x07\x3a\xba\x70\x4a\xd0\xe0\x1e\x67\x22\x1b\xdb\xe1\x0a\x6f\x7d\x79\xc2\xcd\xef\x9d\x1b\x3a\x88\x57\x12\x82\x6d\x4c\xf8\xca\xea\x27\xf5\xde\x3f\x8b\x28\x4b\x88\x0b\xfb\x0a\xa3\xb0\x1e\x7e\x50\xe2\xb7\xbd\xe0\x79\x32\xa0\x46\xbb\xcd\x09\x88\x1b\x95\x1a\x59\xca\x68\xb3\xd5\xef\x8c\x06\x82\xb1\x57\x12\xf5\xef\x8a\xad\xf7\xce\xed\x2a\x8b\x2f\x8e\x46\x34\xe6\x3b\x7e\x3b\x80\x7b\x13\x49\xb8\xc1\x93\xc2\xd8\x45\x21\x6a\x12\x97\x20\x70\xdb\x8b\xfa\x8f\x1a\x81\x05\xe6\x90\xff\x7e\xe4\x1a\x01\xfa\x78\x87\xe6\x93\x90\x3f\x49\x68\xcc\x72\x04\x1f\xf7\xe0\xe8\x40\x57\x24\x70\xc2\x74\x16\xcf\xc4\x5e\x8b\xfa\x31\x09\xd4\x8b\x61\xb3\xbc\xbb\x4c\x0d\x67\x24\xa0\x25\xbf\xc8\x1e\x0a\xfc\xb9\xec\x72\xe9\x81\xb3\x87\x52\x39\x69\xde\xde\xc3\xb2\x48\x9a\xb9\x44\x56\xd0\xed\xa0\x17\x35\xab\xbc\xa8\x93\x99\xff\x0a\x1c\x81\x6a\x95\x2f\x0b\x8c\xbd\x42\xd2\xf3\x7b\xef\x9d\x88\xf5\xdc\x07\xba\x06\x38\xdd\x85\xb2\xe3\x3f\x62\x5a\x97\x27\x5d\x93\x9c\x4e\x2a\x85\xb0\x17\x4e\x40\x06\xed\xe2\xbd\xde\xd5\xe6\xd3\x09\xbe\x3a\xc1\xbf\x8b\x5e\xc7\xf7\xd4\xd6\xa8\x5d\x2d\x8f\x55\xd5\x95\xf9\x6e\xb5\x0a\xac\x2e\x53\xda\xbb\xd2\xe4\x32\x95\xa5\xc9\x62\x4f\x96\x64\x3e\x59\x16\x2b\xe5\x3d\x94\x86\x1d\xf8\xab\xd5\xd0\xea\x7b\x6f\xd2\x8d\x85\x78\x98\x43\xed\x93\x70\x4f\xfc\x39\x00\xab\x09\x7f\x6b\xbf\xd7\x10\xc7\x8e\x76\xd1\xc8\xba\x2f\x0a\xd6\x5a\x17\xd4\x81\x13\x20\x28\xa2\x56\x6d\x40\x37\x3e\xe9\xef\x68\x48\x98\x89\x1b\xc8\xaa\x76\xe9\x12\xfa\xba\xf4\xcd\xc0\x57\xaf\x16\x44\x5f\x57\xbe\xb3\x1e\x3e\x49\x4d\xe8\x06\x78\xd1\xd2\x27\xd7\x0b\xa8\x02\x27\x99\xaf\xfa\x96\xca\xb5\xb3\x45\x4e\xc4\x93\x87\x0f\x1d\x75\xff\x19\xf6\x04\x8c\xb7\x02\x21\x10\xb4\x2e\x20\x04\x22\x71\x74\xf0\x32\xdd\xf5\x11\xf2\xdf\x2d\x1f\x8a\x38\x97\x16\xd4\xee\xc3\x8a\xab\xc2\xea\x83\xca\x47\x16\xb0\x32\xb5\x0a\xdc\x5a\x37\x9d\x81\x48\x94\x82\x4b\x30\xef\xfd\x77\x7a\x58\xe7\x5b\x67\x0b\xac\x75\xe7\x41\x93\xda\x7b\x2e\x2c\x24\x99\xcd\x80\x81\x8e\xff\x88\xba\x75\x74\xe5\x17\x14\x35\xa7\x2d\x52\xe7\x31\x13\xb2\xd1\x65\xa9\xb0\xf7\xfe\x8b\xa3\x6e\x45\x62\xb5\x2a\xcd\x67\xae\xb9\xe4\xf3\xc1\x47\x53\x2f\x3e\xc7\x77\xc2\xd1\x25\x27\x3b\xce\x5a\x8d\x0e\x46\x24\x8a\xc4\x20\x84\x59\x39\xf3\xa9\x77\xf5\x02\x6b\xf5\x70\x37\x18\x92\xa5\xab\xfa\xc8\x9f\xaa\x7e\x57\xab\xba\x78\xa1\xc0\xf4\xc4\x77\xb6\x40\x39\xb8\x5f\x35\xbc\x56\xec\xa0\x2d\xab\xd0\x63\xec\xf8\x18\x35\x84\xc8\xa3\x6f\x3f\xfe\x33\xa9\x80\x86\xd8\x78\xe9\xa9\x4c\xc8\x1c\xc0\xed\xa5\xd0\x25\xb1\x72\xb4\x24\x78\xea\x6c\xdd\x82\x0b\x0c\x74\x0d\x61\xd4\xbf\xf4\x82\xe0\x2f\x24\xea\x32\xc1\x1b\x8e\x10\x20\x10\x75\x48\x2c\x5c\x54\x19\xba\x41\x10\x9a\x86\xe0\xdb\xfd\xf4\x35\xb3\x99\x6b\x97\x52\x02\xfc\x23\x2a\xba\xb1\xef\x8e\x7f\x67\xd7\xde\x33\xef\xca\x1c\x1c\xb2\xd5\x48\x1c\x76\x1f\x49\x60\x7d\xe4\xc6\x70\x3b\x03\xaf\x07\x58\x6b\x2f\xf8\x04\x13\x89\x61\x10\x99\x54\x6b\x61\x2c\xf2\x05\xdf\x2b\x1a\xc7\xd2\xdd\x17\x29\xbd\xd5\xcb\x42\x1f\x06\xde\xa4\x2c\xfe\xcf\x0c\x07\x84\x81\x6b\xf1\xf0\x84\x2f\x41\x75\xfa\xf2\x1d\xa1\x0a\x78\xf9\x16\x2c\xe9\x73\x64\xfc\x13\x61\x3d\x08\xbc\x5b\x24\x29\xb9\xcf\xf1\xef\xdd\xd0\xf3\x06\xb8\x71\x3d\xfe\xda\xa3\x89\x84\x8b\xae\x9f\xed\xe0\x34\xac\x05\xb7\xcc\xee\xe2\x3d\xa8\xca\xd1\x2e\x81\x39\xb0\xee\x03\x0b\xdc\x2e\x80\xc7\x0a\x70\x3e\xee\xd7\x63\x85\x30\x4f\x0d\x92\xdc\xc4\x5e\x1b\xa4\x47\x3d\x77\x0f\x47\x34\x40\x9a\xab\x0b\xa7\xc7\x3c\xef\xff\xda\x2a\xa6\x0b\x77\x30\x79\xae\x43\x12\x75\x51\x8c\x18\x69\xc2\x1d\xf7\xce\x2a\x5e\x7b\xda\x73\xf7\xa4\x44\x2f\xe4\x4d\x26\x15\x46\x4f\x7b\xee\x4d\x55\x58\x1f\x6a\x0c\x7c\xe8\x03\x0a\x86\x6e\x82\x34\xc8\x1b\x43\xc2\x5d\x74\x6f\x24\x59\x0e\xd0\xaf\xf0\xad\xc6\xbe\x7e\xb2\x80\x66\x79\xed\x0f\x3d\x9b\x00\x32\x14\x14\x3f\xb7\x23\xfd\x86\xb0\x77\x28\x5d\x47\x58\xdf\x3c\x56\x47\x32\x6c\xae\xec\xa2\xd3\x18\xc0\x63\x82\x0d\x8c\xae\x50\x3c\x26\x68\x76\x19\x1b\xd8\x09\x7f\x7d\x92\x96\x60\xe3\xe0\x95\x6c\x1c\x04\xc1\x48\x19\x16\x02\x0c\xe0\x0d\xe0\x08\x2c\xab\xf1\x11\x08\x22\x49\x3c\x8e\x61\x57\xbe\xac\x63\xeb\x76\xd8\x82\x90\x6f\x00\x70\xa7\xff\x1f\x7c\x60\x7f\x18\x12\xba\xf5\xfd\xb2\x05\x59\xda\x03\x35\x4f\xe0\x09\x50\x89\x5e\x95\xa7\xce\x1c\x34\xc6\xde\x3b\xbb\xa9\xe2\x1e\xa1\x50\x5d\x0b\x43\xa3\xbc\xe7\x3d\xbd\x3d\x49\xe4\x9a\x45\xb8\xda\x6c\x5f\x7c\xae\xe2\xa9\x7f\x68\x3e\x85\x41\x3d\x96\x16\xe3\x6b\x01\x96\x06\x66\x73\xa9\x5b\x97\x5c\xe1\xb1\x2c\xaf\xfd\xc6\x41\x5d\xea\x66\x17\x3d\x2c\x44\x14\x36\x26\x2e\xa2\xb2\x05\xb9\xe3\x68\x9d\x9b\x33\x90\xed\x78\xe1\x58\x74\xe1\xcb\x7b\x7b\x97\x9b\xd4\xb2\xa7\xd1\x95\x19\x83\x9f\x55\xdf\xb5\x56\xf1\x7d\xf0\x14\xd9\xb0\x42\x24\xdc\x66\xa1\xbd\xe3\xec\x08\xf8\x4e\x2d\xfa\x8c\x53\x30\xf7\xe8\xbd\x18\x5d\x38\x49\xb1\x68\x6d\x3c\x41\x03\x0b\x25\x9e\x05\x1f\x50\xa7\x1a\xce\x03\x80\x1c\xf4\x78\xe4\x30\xdd\x70\x95\x76\x76\x50\xbd\x2b\x1f\x90\xad\x63\xa1\x8b\x5e\x3d\x0f\x41\x92\xd7\x6f\x92\x34\x33\xbc\x3d\x68\x40\xda\xa9\x5f\x71\x10\x3a\xb4\x0e\x5c\x9e\x03\x8f\x7f\xd2\x3a\xf8\x48\x2c\x9c\x01\x2c\x9c\x7a\xf8\x74\x34\x24\xd0\x17\xf5\xa8\x2a\xc3\xdf\x01\x55\x20\x0b\x29\x7c\xca\xaa\x15\xbf\xa5\x59\xd1\x85\xfb\x0e\x50\x3d\xac\x81\xe0\x36\xd4\x8e\xe3\xf5\x04\x16\x97\xdd\xd9\xe2\xdb\x79\x19\xe2\x5b\xe5\x31\x77\x7c\xff\x80\x6e\xb4\x50\xa1\xc3\xae\x78\x62\x4e\xd8\x82\x20\x0f\x44\x4c\x50\x33\xf6\x2a\xb7\x8c\xee\xba\x27\x57\xbd\xb8\x23\x49\x32\x03\xc8\x24\x05\x34\xe1\x68\x3b\xef\x63\x0f\x9d\x80\x74\x73\x59\x2c\x81\x43\xe4\xf6\x20\xb0\xce\xc5\x77\xc9\x9e\x44\xed\xbe\x0e\xe8\x53\xfd\x06\xa2\xbe\x2c\x43\x60\xb3\x36\x95\x84\xf8\x42\x06\x2e\xa1\x15\xfd\x3d\xbc\x74\xd3\xcc\x48\x63\xac\x0e\x16\x9a\xfe\x17\xe2\x75\x8f\xdf\xa6\xd4\xa9\x51\x26\x34\x23\x3e\xf2\x47\x6e\xb5\x1d\x7a\xde\x6d\x02\xfa\xb7\x9c\xfb\xcb\x3e\x75\xee\xeb\x36\x55\xbb\x32\xf7\x10\x6a\xd7\x64\x8c\xcf\x7a\xbe\x78\x07\x2e\x81\xdb\x39\x01\xc5\x20\xe9\x89\x4d\x0f\xbf\xc8\xa5\xff\x35\x64\x5f\x60\xd5\x28\x7a\xb5\xb2\x24\x1e\x39\x27\x4a\x3c\xcf\xbc\xd2\xc0\xbc\xef\x68\x0b\x21\x32\x2d\xe3\x37\x07\xb4\x7f\xb0\x55\x48\x63\x72\xc3\x2a\x38\x08\xd6\x02\x75\xfa\x28\x9d\xdb\x77\xaf\x29\x34\x81\xf0\x11\xc1\x9c\x2f\x42\xe0\x7a\x0c\xc5\x0e\x7d\xfd\xc8\x77\xf0\x01\xac\x03\x2b\xaa\xf1\x88\xa4\xde\x1d\x52\x34\x84\xb6\xdb\x67\x2d\xca\x07\x4c\x18\x9e\xeb\x07\x29\x7b\x58\x60\x6f\x2e\x8b\x2d\x86\x01\x7e\x8d\xcc\x17\x3c\x04\xd0\x0f\x69\x9a\x12\x64\x45\x0e\x48\x3a\x14\x16\xcb\xde\xec\x40\x62\xd0\xd4\x67\x10\xba\xfb\xb6\x8f\x77\xcc\x4f\xe7\xee\x34\x68\x42\x6c\x6a\x3d\xcf\x89\x92\x69\x3e\x71\x66\x0c\xb1\x6e\x37\x0c\x67\x47\x1f\x7a\xce\x61\xf9\x30\xb0\xee\x96\x85\x58\x07\xb8\x3a\xe2\xe0\x37\x3d\x40\x97\x2e\xc8\xc2\x44\xbc\x03\x6a\x00\x9a\xdb\xb4\xa6\xa8\x89\xd0\xac\x7d\x97\x1e\x61\x41\x6c\xf6\x83\x6c\xb0\xf2\xb0\xb1\x8b\x6f\x0b\xd2\x43\xca\x41\xc0\xd9\xbe\x83\x5f\x7a\xbc\x6b\x27\xc2\xec\x89\xff\xd5\x17\xe8\x6e\x26\x58\xcd\x71\xe0\x1e\x0a\xcf\x1c\xee\xa1\xac\x7a\x04\xbe\x40\x96\x13\x00\xdd\xc4\xee\x0f\x4e\x78\x04\x8e\xae\xf8\x20\x72\x31\x63\xbd\x8a\x59\x3f\xb4\xbd\xf1\xa1\xe2\x2f\x24\x58\xbc\x02\xaa\x42\x3b\xe0\x48\xa3\x08\xf4\x66\x07\x4f\xfe\xae\x78\x6b\x7e\xa6\x6f\xa2\x18\xde\xe6\x68\xa7\xd8\x04\xc5\x6c\x60\xc5\x87\xae\x43\x2a\x3a\xcc\x7c\xc4\xf4\x5f\x7b\x05\x94\x6b\x15\x4d\x9c\x17\x51\xdc\x1d\xa0\xac\xe7\xdd\x51\x80\xce\xe0\x9b\xd5\x4e\xe3\xdc\x30\x6c\x5f\x62\x00\xc8\x50\x43\x71\xe9\x1c\xea\x25\x64\x6f\xf5\x7b\xed\x3f\xe1\x4c\x8e\x52\x92\x7d\x6f\x72\x9a\xd4\xb3\xe6\x5d\xf2\x40\x25\x95\xd7\x70\x07\xc9\xd8\x7f\xd9\x91\x75\x53\xd9\x23\x4a\xa9\x68\x0e\x41\x10\x9e\x51\x1b\x13\xd6\x19\x0c\x24\x9f\xad\x68\xf5\xa2\x6d\xc5\x87\xbd\x1a\x52\xb1\xaf\xdb\xb3\x2e\x9e\x20\x1b\x71\x44\xb4\x7a\x74\xaa\x27\xc8\xfc\xc1\xc9\x62\x81\x15\x24\x17\xf6\x21\xd1\x0b\x4d\x3c\x5b\x8e\xfe\x6d\x21\x68\x02\x46\x14\x4c\x00\x06\x85\xc6\x24\x28\x43\xce\xd4\x1a\x52\x1a\xac\xdc\x35\xa1\x1d\xdf\xe9\x64\xbb\xc0\x41\xd0\xdd\xf4\x6f\x25\xf7\x3f\xea\x13\xe6\xf7\x2e\x17\xd9\x02\x25\x66\x90\x2b\x14\x9e\x60\xa1\x60\xdf\x7f\xba\xd9\xa3\xc4\x65\xb9\x1e\x1d\xff\xa6\xbe\x8f\x90\x5d\x6a\x7e\xe4\x24\x82\x1b\x27\xe2\x41\x0f\xdf\xb8\x11\x7a\xac\xdd\x41\x50\x73\x9c\x16\x00\xf0\xe0\x5a\x58\x36\xf4\xa0\x3e\xc5\xb8\x25\x9d\xad\x27\xc8\x6b\xb3\x42\x07\x81\xf3\xd0\xab\xa3\x0a\x17\x09\x9a\x6b\xe7\x36\x80\x31\x3e\xcf\x05\x31\xbe\x20\x08\xef\x8b\xfb\x56\x7e\x44\x67\x3d\x64\x53\x9c\x15\xf0\x67\xb4\xd1\xe1\x39\xde\x85\x1d\x37\xb8\xfc\x6a\xde\x0b\x82\xb9\xbf\x51\xc0\xdd\x34\xa2\x81\x44\xbc\xe3\xc1\x82\x78\x07\xe0\x9f\x78\x55\x3e\xf2\xc0\x39\x01\x20\x5d\x2d\x63\x40\x9f\xa0\xa8\x0d\x64\x0a\x72\x90\xc1\xc7\x2e\x3a\x08\x0c\x79\xeb\xc4\xca\x20\xfb\x82\x80\x6a\xb2\x43\xeb\x23\x17\x4f\x81\x18\x93\x3e\x7b\x01\xba\x64\xc7\xb9\x19\x05\x38\xcb\xba\xf1\xb8\xe6\x75\xdb\x55\x44\x26\x91\x22\xc4\x53\xb6\x98\xbe\xe6\x8e\x3a\x9f\xcb\x06\x96\x2f\xf8\x12\xbe\x6c\xcd\x1a\x7f\xb8\xb3\x58\xc9\x1e\xca\x65\xda\x83\xcb\xe3\x9e\xd6\x1f\x66\x7c\xcd\xff\x19\x3a\xb4\x0f\xe7\x5f\xf1\xce\xb5\xe7\xfc\x99\x1c\xeb\x7e\x0f\x6b\x74\x4c\xf7\xae\x79\x76\xed\x38\x6d\xde\xab\xc3\xe1\xcc\x72\x18\x40\x25\x90\x6a\xb0\x32\x84\x4a\x67\x48\x5a\xf5\xe9\x2d\x6c\xbf\x17\x99\x16\x3b\x54\x5a\x87\xd8\x84\x3d\x1c\x03\x87\xff\xfd\xb7\x33\xb8\x3d\x80\xa8\x22\xf6\x29\x0f\x68\x3c\x89\x74\x2b\x36\xd4\xf4\x5b\xda\x16\x33\xed\xef\x10\x6b\x6b\x12\x62\x92\x01\x1d\x25\x76\xce\xbc\x34\x93\x08\xbb\xd9\x43\x35\xee\x7e\x8e\x32\x9a\x77\xea\x88\xc6\x75\x80\x8b\x3e\x91\x93\x2f\xee\x46\x4c\x1e\x48\x98\xcd\xfc\x34\x48\x16\x1e\x3b\x4e\x2e\x29\xb9\xd3\x9c\x50\x60\xda\xf7\x1a\xd4\xbf\x2b\x01\xce\x6a\xe5\xe4\xbf\xe4\xd2\xfe\x0b\x9f\x87\xcd\x7a\xf5\x4f\xaf\x3c\x96\x37\xbb\xf5\x6b\x34\xa1\x27\x98\x3e\xed\x59\x09\xa7\xe4\x1f\xd7\x60\x98\xed\x50\x51\xcc\x4b\x3a\x38\x73\x06\xd1\x8f\xf3\xe4\xcb\x5d\x6d\x74\xd4\x6d\x83\x57\xa1\x67\x33\x48\x1b\xba\x78\x4b\xc6\xc9\x45\x06\xe6\xb4\xb6\x00\x2f\xd1\xed\x2b\xf7\x7b\xee\x01\x47\x9f\x39\xe6\x09\xc2\x3a\xa7\x01\xf5\x0a\xff\xb8\xe3\x5c\xf9\x06\x73\xab\x8b\x41\xe2\x50\x82\xe7\x18\x9c\x07\x80\xc2\x69\x02\xab\x38\x90\x19\x31\xfe\x9b\xe4\x01\x18\xc0\xeb\xad\xf2\xad\x9e\xec\xd2\x33\x6e\x04\x4e\xfb\xf8\x0f\x60\x46\xbf\x0e\x20\x76\x92\x3e\x9b\x64\x56\x21\x0f\x65\x62\xe0\x73\xa8\x82\x3c\x70\x6e\x8e\x75\x06\xf2\x7a\xe0\xb5\xf4\x17\xbd\x43\x69\x3d\xdd\x8a\x6e\x1a\x4f\x7a\xf5\xc7\xdb\x67\x78\x18\xf0\x5b\x7d\xde\x91\x6e\xb2\xe9\x4f\x14\xb0\xbc\x50\xeb\x29\xf9\x55\xee\x99\x81\x2e\xac\x0c\xed\x6b\x7c\x69\x2b\xa0\xc2\xb3\x7f\xd0\x45\x87\xe6\x20\xb8\xee\x27\x23\xf0\x11\x89\x97\x56\x63\x50\xcd\x70\x84\x9f\x1c\x84\x11\x4d\x16\xbf\xe3\xe6\x9e\x71\x79\x3c\xf0\xde\x2a\x52\x9b\x5a\x60\xf3\x73\xda\x93\x02\xf2\x2f\x3d\xb1\x4d\xb4\x40\xf2\x7a\x4f\x43\x79\xc5\x2e\xdc\x28\x09\x1c\x71\xf4\x9b\x65\xe8\x3f\x34\x80\x16\x33\xbc\x5f\xa6\x2f\xad\xda\x9b\x88\x04\x42\xef\xed\xd9\x75\xab\x46\xa3\x8a\x06\x81\xa7\x3b\x5e\xeb\xb2\x8b\x1e\xe5\xf4\x3c\xb5\xa6\x4a\xf0\xa6\x76\x48\x22\xc3\x60\xae\xeb\x92\xf7\xf8\x6e\x79\xab\x24\x5b\x3a\x12\xdc\x30\x87\x68\x62\xc9\x38\x4a\xc2\x5a\x65\x1f\x7a\x74\xd1\x74\x89\xba\xf4\x5b\x9d\xd5\xb2\x8a\xaa\xa5\x80\x7b\xae\xca\xee\x2d\xef\x0f\x98\x46\x97\x8c\x3f\x7f\xb6\xb5\x33\xf2\x5d\x2a\x6e\xbd\x6d\x60\x95\xfc\xfc\xf9\x2b\x51\x5f\x52\x8f\xb8\xfa\xf9\xd4\xf7\xb6\x68\x42\x8b\xca\xea\xa1\x58\xd4\xaa\x1e\x0e\xdf\xf2\x69\xb6\x7a\xd2\xeb\xa3\x0d\x07\x73\xb4\x09\xc9\xa3\x2e\x7d\x60\xd9\x48\xea\x59\x1f\xed\x25\xb9\xdb\x0b\xd6\xeb\xa3\xd8\xdc\xf4\xbd\x61\x66\xed\x40\x77\x70\x04\x0f\x37\xa7\x76\x24\x98\xe3\xe7\x7d\xe4\x2c\xed\xe9\xb4\x01\xd5\x1a\xef\x01\x62\x51\x80\xee\x13\xfa\xa7\xb3\xb9\xf7\xa1\xfe\x8d\x04\xac\x09\x1d\x68\xe4\x0e\xcc\x3f\x71\xc4\x73\x13\x49\x35\x11\xe6\x50\x99\x0c\xe4\xe1\x84\x45\xb6\x9d\xb5\x02\xa0\x06\x2d\x9b\xf4\xff\xb3\xf7\x6d\xcd\x71\x14\x49\xdb\x3f\x08\x22\x84\x10\x42\x28\xfa\xaa\xbb\xba\x67\x24\x0b\x59\x36\x66\x8d\xe1\x6e\x0d\x6b\x8f\x85\x2c\xc4\x20\x64\xa1\x5f\xff\x45\x57\x57\xd5\x93\xf9\x64\x56\xcf\x8c\xec\xdd\xe5\xfd\x62\x7d\xa1\x18\xcf\x74\xd7\x21\x2b\x2b\xcf\x87\xab\x8e\x0d\x15\xe0\x71\xce\x04\x89\xde\xc6\xa7\x75\x35\xb3\x46\x44\xa2\x6a\xf3\x61\x23\xa2\x0b\xea\x41\xb4\x9a\xd3\x24\x2a\xe3\xc5\xbe\x16\x67\x41\x83\xf6\x7f\xa4\x2f\x55\x04\xc2\x75\xe2\xb4\x88\x07\x8d\xf3\xc1\xc0\x0e\xe2\x12\xb4\x73\xea\x37\x88\xd5\x53\x8d\xec\x36\xbc\x59\x4d\xc5\x9c\xff\x25\x8e\x11\x60\xd1\x5d\xa7\x92\xd1\x0c\x39\x28\x10\x97\xf0\x60\xde\xf6\xb1\xac\xd7\x50\x1b\x51\x9c\xcd\x90\xfc\xb6\x8b\x87\x7e\x2a\xdd\xdd\x9e\xc9\xa0\x17\x3a\xbf\x25\xc9\x5a\xe4\x7a\x21\xec\x85\xc4\xe4\xe8\x02\xae\xdc\xd8\x2c\xdb\x61\xe5\x47\x79\xc7\xf9\xcf\x22\xb1\x25\x9f\x09\xb8\x3b\xf0\x43\x93\xfc\x69\xf0\xd3\xe2\xe1\x6a\x9a\xe6\xac\x5d\x7e\xcb\x72\x27\xc6\x7d\x61\xbd\x99\x71\xee\x50\x7f\x06\x74\x06\xce\x9e\x8b\x38\x63\xfc\x19\xd7\x99\x00\xe2\x39\x68\x9a\x8b\x76\xb8\x0b\x6c\x1c\x25\x91\x3b\x9e\xf8\x0f\xb1\xbe\x04\x49\x3a\x24\xf8\xd3\x30\x71\x86\x1f\xa2\xa6\x0c\xd7\xfa\xc5\x88\xb6\x64\x64\x08\xda\xdc\x40\xc1\x08\xe7\xa5\x75\xc9\x08\xd8\x93\xa9\xf0\xfb\xb2\x3d\xef\x45\x36\x47\x5c\xe2\x19\x5c\x97\x17\xba\x70\xa8\x5e\xf6\x78\x26\xc3\xa1\x7c\x52\x4b\xdc\xe3\x1a\x2f\x3b\x57\xbc\x27\x53\x32\xc0\x3c\x9e\xc7\xb8\xd7\x23\x83\x91\x71\xc4\x1f\xda\xf0\xc6\x43\xd5\x71\x73\xd7\x32\x1e\x88\xc2\x8a\xbd\xef\xb4\x5c\x3f\x2e\xf6\xaa\xaf\x2f\xd6\x7b\x2f\xcf\xbc\x8e\x10\x5d\x34\xc3\xf8\xa7\x09\x6d\xee\xfc\x41\x43\xe8\xcb\x3d\x82\x39\x15\x65\x1e\x3f\x3e\x8d\xcf\xac\x12\xbb\xc4\x53\x17\xe3\xa9\x4d\x9d\x05\xc6\xcf\x4f\x35\x93\xfe\x9e\x15\x79\xac\x50\xb8\x2e\xe2\x9a\x6e\xd3\x39\x43\x06\x00\x58\x97\x08\xed\x08\x6d\xcb\x8a\xae\x00\xd2\x78\xdd\x0f\x3b\x56\x49\xb4\x09\x21\x3e\x74\x19\x38\xde\x84\x06\x26\x52\x3f\xbe\xb3\x36\xe9\x39\xf1\x93\x0c\x6d\x26\x87\xfe\x59\x0c\xb0\xa4\xd5\x84\xd6\x9a\xf6\x4f\x4b\xcf\x44\x4c\x77\x22\x5e\xa4\x06\x6e\x5e\x84\xdd\x59\x74\x3e\x79\x9b\x82\xc0\x4c\xef\xa9\xf9\x73\xbf\x10\x5c\xcd\xc1\x1a\x19\xb0\xba\xdb\xce\x8d\xcb\x20\x2b\x8f\x5a\xde\x91\xbf\x3c\xa7\xa0\xb5\xb3\xbc\xd5\xf6\xcb\x1b\x62\xdd\xc5\x89\xf7\xfc\xd9\x27\xb4\x02\x25\xd7\xac\xaa\x20\xd8\x71\xe7\x7a\x47\x88\xc7\x90\x79\x9f\xc6\x22\x4f\xa4\x27\x06\x60\x09\xa1\xa6\x13\x0f\x6d\xb8\x1f\xd2\x3d\x1d\xd7\xfe\x7b\x72\x17\x58\xd6\x79\xdb\x71\xa4\x0b\x2c\x1b\xf4\x43\x0c\x64\x1d\xda\xb0\x17\xc4\xc8\x42\xac\x56\xe3\xde\x75\x4c\x59\xb5\x50\x22\xf8\x5c\x24\x88\xc3\x78\xb8\xe3\xb8\x99\x58\x5f\x28\xa3\xbf\x33\xc3\x43\x9a\x21\x7a\xa9\xce\x22\x1d\xae\x01\x6f\x3c\xfd\x37\x89\x76\x35\xa1\x5d\x1a\xe2\x05\xef\x20\xa9\x0a\xe0\x9b\x4b\x44\xc4\x68\x29\x57\x78\x9d\x46\xac\xbe\x93\x54\xc6\x4b\x8f\xad\x79\x86\x33\x81\x20\xe3\x3b\x79\xf6\x97\xa8\xc4\xe4\x35\x67\x04\xbb\x18\x87\x5b\xee\x99\x1a\x6e\x24\x0e\xc5\x31\xca\x29\x4c\xbf\x3e\xd7\x98\x82\x47\x40\x97\x87\x98\x50\x51\x08\x6f\xb2\x7a\xa7\x64\x0e\x32\x1f\xe1\xf8\xbc\x2c\x50\x21\x60\x84\x76\x58\x0d\x2a\x23\x84\x52\xb5\x97\x25\x30\x68\x19\x85\x4a\x32\xf5\x11\xe0\xca\xa7\x71\xb5\x37\x41\xae\x16\x47\x40\xa5\x4d\x01\xcd\xe7\xf6\xba\x08\x26\xb1\x44\x09\x43\x1a\x86\x2e\x2c\x98\xe8\x50\x92\xa9\x66\x16\x01\x2e\x87\xbc\x3b\x47\xdc\xed\x59\x10\xf5\xe6\xcf\xb3\x1e\x6e\x9c\x75\xf3\xd6\xc7\x59\xaf\xb6\x99\x75\x9c\xf0\xe0\x13\x4f\x08\x12\xa2\xa7\x8e\x58\xb8\x71\xae\xcd\x97\x7c\x9c\xeb\xa6\xaf\xa2\x0f\x5f\x31\x58\x79\x97\x90\xa7\xf0\x33\x28\xc6\x19\xba\xc5\xd3\xb0\x94\xe8\xaf\xd9\xc2\x48\xac\x8e\xe2\xe0\x66\x6c\x2c\xf9\x2c\x52\x58\x6f\x6c\xca\xcd\xd7\xd0\x88\x52\x42\xef\x8e\xfd\xa9\xd6\x3d\x52\xd9\x4d\x67\x02\x91\x8a\x18\xab\x62\xa7\x0f\xbd\x90\x76\x08\xeb\x34\xed\x28\xa8\x77\xb5\xf1\x9a\xc3\xfd\x4f\xa2\xa2\x9a\xfa\xc0\xd4\xd6\x27\x20\x64\x40\x1d\x74\xee\x1a\x9d\xa7\x1d\xcd\xef\x60\x3b\x68\xfd\x1f\x5c\x32\x15\x5c\x84\xf8\xa8\x96\xbc\x37\xb3\x64\x85\xea\x47\x9b\x96\x5c\xc5\x89\x4d\x38\x29\x4d\x89\xb4\x91\xf8\x5d\xe2\x46\x86\x4b\xc5\x45\xd4\x9a\x6e\x0f\xca\x10\x19\xf9\xfa\x5e\xef\xa9\x97\x62\xc9\xa4\xb3\x28\xac\x7e\x50\x58\x3d\xd3\x59\x12\x2b\x01\xd3\x2a\xac\x76\x84\xf8\xb5\xa1\xe1\x14\x12\xe5\x38\x81\xc6\x03\xb8\x0f\xec\xa6\x74\x52\x3d\x47\x60\x1f\x9a\x86\x74\xd0\xef\x07\x61\x71\xad\x6f\xa4\x4a\x1b\xd4\x46\xd6\x33\x4d\xd7\x30\xa3\x90\x43\xab\x3b\xf6\xe4\xd7\xb3\x68\xb6\xc5\xd8\xb3\xdb\x9e\xa6\x3a\x8b\xec\x9d\x52\x5e\x68\x2a\x9c\x11\xfd\x01\x7a\x9d\xc2\xe1\xaa\xa4\xad\x67\x9b\x01\x47\x8c\x0e\x4c\x15\x98\xb8\x84\x43\x90\xd0\xcf\x33\xae\x50\x94\xfe\x10\x95\xf9\x8d\xcb\xa8\xf2\x76\xf2\x99\x91\x78\x7d\x16\x83\x51\x6a\x67\x3a\xfe\x7c\xd5\x6d\x6d\xb5\xc2\x7b\xcd\xb2\x3d\xcf\xf1\xd6\xb8\x18\x74\x38\xb4\x1e\x6c\x79\xe9\x85\xad\xc2\xc6\x51\x60\x68\x58\x26\x6c\x63\x8a\xf5\xde\x75\xc5\x18\xf2\x6d\x1d\x7f\x49\x47\x0a\xad\xa9\x2c\x4e\x54\x8e\xfe\x24\x3d\xde\x43\x5a\xe7\x92\x70\x78\x0e\xc6\xa7\x50\x9c\xd3\xd8\x86\x2f\xaa\x15\x1b\x85\x07\x50\x6b\xe7\x99\xe9\x32\xc0\xbd\x83\x7b\x77\x11\x03\x8c\xe7\x17\xee\x59\x76\x07\xed\x2f\xb2\x56\xc1\xc3\x5e\x6f\xe4\x89\x61\x09\x3e\x32\x93\xfc\xe7\x04\x11\x8f\x38\x72\x39\x43\x8c\x3e\xfa\x30\x97\xe8\xe5\xe9\x39\xff\xe7\xcf\x31\x8f\x60\x92\x63\xb6\x21\x69\xc9\xc8\x75\x6a\x03\x0d\x9a\xb3\xf6\xe2\xe5\x84\xca\xa7\x6d\x78\x16\x9f\xec\xdd\x0d\x2a\xc4\x48\xce\x14\xf9\x4e\x35\xee\x45\x33\xc0\xee\x3f\xc1\x37\xfe\x06\x47\x15\x7d\x0d\x5b\xf1\x5a\xa3\xd8\x91\x76\x03\x6a\x0b\x48\x40\xa6\x8a\x74\xf1\x58\x5a\x13\x3d\x29\x2e\x18\x3b\x42\xfd\xc6\xc3\x74\x84\x5d\x7b\x4f\x5f\x20\xf9\x0d\xc7\x56\xc5\xc3\xf8\xca\x8b\xf6\x22\xb5\x59\x6c\x9e\x8f\x98\x73\x31\x6a\x2f\xf1\xbf\x2f\xda\xf0\x64\x9e\x34\x8c\x8f\xac\xba\xf9\x59\xc6\x67\xf6\x3b\x4f\xa5\x11\xcf\x3c\x2f\x4e\x8d\x91\x9e\x9c\x68\x6b\xf8\x97\xa1\x27\xaf\x5d\x3c\x94\xef\xf8\xd2\xc5\x29\x28\xc5\xac\x88\x66\xa6\x91\x8a\x92\x63\x76\xe0\x7e\x42\x58\x8d\xa7\x77\x76\x67\xac\x91\x30\xc8\x91\x3b\x8e\x38\xa3\x12\x89\xee\x7a\xd7\x4f\x40\xd7\xf5\x74\x44\x87\x71\xda\xe7\xa6\x6b\x21\xde\x26\xcb\xcd\xee\x3b\x5b\x96\xf6\x26\x1b\xbc\x18\x18\x1f\x3b\xa5\xf1\x29\x24\x0b\x58\xbf\x1e\xd8\xae\x4f\x4f\x4d\x56\x48\x12\xec\xb7\x35\xf7\x2d\x11\xf6\x16\xbf\x34\xd6\xb3\xfc\xd4\x91\x51\xc6\x77\x98\xe2\xd6\x98\xf1\x77\x78\xf9\x20\xb8\x9b\x93\xca\x8f\x73\x9c\xc9\x3a\x87\x37\x65\x41\xd2\xed\x26\x56\x96\x56\x50\x76\x05\x16\x6b\xff\xc0\xe2\xec\xd3\x87\xf2\x69\xbf\xe3\x4b\xdd\x30\x3b\x22\xc3\x55\xcf\xb7\x59\xdd\xcf\xcb\xae\x4a\xf8\xc7\x9f\xdf\xb0\xc9\x16\xb7\x06\xce\x46\xb1\x4c\xe0\x24\x1e\x84\x2d\x51\xb8\xbc\xe9\x68\xc8\x42\x00\x2e\xa0\xe9\x75\x2f\xac\xbf\x1e\xc7\xf3\x5e\x0e\xc5\x04\x50\x16\xb1\x70\x79\x1a\x99\x2e\x9d\x35\xe8\xd5\xec\xf7\xcc\xf0\xb6\x58\x8d\x5d\xd7\x55\x2f\x4e\xcb\x5f\x19\x20\x18\x6d\xed\x5d\xf5\x44\xeb\x90\x91\x74\x75\x2d\x33\x99\xb1\x3e\xac\xd9\xd3\xaf\xbc\x91\xf3\xa0\xcb\xf6\xf4\xda\x18\xbd\x3c\xa3\x40\xdc\xe3\x7e\xe7\x52\x54\xd2\xe3\x01\x28\x0f\xd3\x1d\xa9\x26\xc2\x26\xf7\x6a\x02\xd5\xc3\x04\x70\x08\x40\xa3\xa2\x5f\x6b\x98\xab\x91\x7d\x7f\x21\x26\xc9\xd8\xf0\x86\x61\xca\xac\x85\x25\xf7\xf8\x90\x24\x31\xde\x21\x6c\x76\x3d\x1c\xf5\x2a\xc6\x9b\x78\x84\x72\x3d\x1c\x98\x86\x4c\xd8\xaa\x16\x7d\xad\xd5\x7f\xd3\x1c\xba\x30\x4c\x33\xb4\xa7\x47\x4a\xe9\xf6\x1c\xba\x55\x13\x37\x80\x00\x35\x1c\xf9\x63\x67\xb3\x9a\xcb\x84\x63\x37\x86\xac\x49\xba\x5f\x1d\x1f\x67\x76\x06\xdb\x3a\x0d\xa4\x4f\x38\x3e\x68\x42\x32\xf0\xa0\x72\xb2\x2d\xad\x0b\x8c\xce\x76\x96\xe8\x18\x36\xe3\x51\x00\x1c\x84\x65\x4f\x57\x35\xad\xe8\x54\x6a\x45\xb0\xb2\x07\xad\xe0\x64\x8f\xa5\xec\x04\x2e\x6e\x50\x3c\x44\xd2\x66\xb3\xec\xac\xbc\x5e\x56\xcf\x55\xc9\x4f\xa7\xba\x31\xe3\x14\x10\xa0\xd9\xea\xf8\xce\x2f\x62\x07\xe7\x6d\x78\xb6\x8d\x83\x9a\xb8\x17\x99\x4f\x67\x95\xa6\x66\x68\x7f\xb8\x19\x36\xa1\x74\xd5\x8a\xe4\xa0\x5c\x04\xa5\x71\xe9\x7e\x0c\x22\x2b\xf4\xdd\x37\x75\xab\x3f\x16\x7d\x07\xcb\xe5\x1f\x85\xbe\xc7\x46\xab\xdf\x82\xcd\x08\x6b\xc0\x3c\xfa\x42\xa9\x1f\x37\xb7\x30\x92\xea\xa8\x12\xe5\x80\xc6\xf8\xfe\xa8\x9c\xb9\x26\xcf\x2a\xf2\x90\x25\x32\x24\x45\xeb\x68\xab\x20\x09\x6f\x18\x90\xbe\x6d\xb1\xf1\x34\x86\xb8\xd2\x75\x8a\xdb\x39\x6d\xcf\x5e\x49\xcb\x86\xa3\x26\x90\x22\x3f\x5e\xd0\x87\xce\x53\x1f\xdd\x88\x43\x1d\x98\x27\x76\x56\xd5\x93\x68\xed\x17\x31\x01\xab\x56\x9e\x84\xc9\x43\x0a\xb9\x01\xe7\x22\x18\x63\x25\xf0\x73\x9f\xc5\x92\x61\x9e\x60\x46\x55\x38\x2f\x8a\x26\x34\x6a\xd3\xd2\xc3\x92\x90\xe5\x47\x44\xcc\x6e\x7b\xac\x14\x48\x19\x37\xf1\x63\x5c\xd0\x4e\xd8\x41\xa7\xb5\x13\x76\x3c\x2f\x4d\xd2\x19\x3b\x9e\x8f\xd8\x11\x2d\x11\xde\x71\x67\x7a\xfc\x8b\x30\x78\xaa\xa0\xc1\xab\xff\xbb\xc0\x72\xe4\x51\x07\x6c\x7b\x9b\xc0\x56\x3b\x82\x11\x6c\x6f\x3c\x2e\x36\xca\x52\x27\x9b\xf8\x06\x79\xbf\xc9\x2f\x68\xad\x2e\x07\xe9\xfc\x24\x33\xf0\xa4\x76\xa7\x32\x56\x0c\xb2\xea\x37\x2d\x68\xb3\x27\x54\x2f\xe8\xce\x14\x3f\xc5\xbd\xa4\x38\x1d\x7d\x57\xc5\x1f\xab\xfd\xee\x3b\xdb\x24\x6e\x23\xf0\xcf\xd9\xe8\x6a\x23\xc7\xae\x5a\xb9\xbc\x15\x2a\xfd\xef\x61\x86\x77\x2f\xdb\xb3\x1b\xe3\xc1\xf3\x6a\x85\xd1\x01\x79\xba\x0e\x2d\xa9\x4a\x60\xbd\xb5\x66\x38\x3c\x2c\x37\xc1\xa1\x6a\x87\xd6\x71\x96\x73\xf2\xca\xb2\x1d\x6e\x4c\xac\x6a\x20\xc9\xd1\x33\xc0\x91\x34\x49\xd6\xaa\xd3\x12\x1f\x51\xb6\xf3\x64\xd3\x6e\x50\xf2\x83\xa4\x52\x60\x4f\xc5\x9b\xb7\x5a\x3c\xc6\x60\xb9\x6c\x87\x07\x59\xb2\x18\xf2\x0d\x44\x40\xcc\xef\x59\xec\x41\x6b\x9a\x65\x8c\x36\xf6\x64\x22\xaf\x78\x22\xd9\xbd\x97\xd1\xeb\xed\xe9\xf7\xf3\xd6\x09\x6f\x3a\x6f\x9d\x1a\xb7\xd8\xd9\x1a\x99\xf5\xc2\x35\x05\xd4\x9c\x13\xf1\x9a\x6e\xd4\x15\x67\x63\x16\xca\x24\xf1\x00\xe7\x74\x43\x81\xa2\x9f\xe2\x9c\xce\x2b\xe7\x34\xa7\x84\xed\x6d\xbc\x22\x64\xc1\xa0\x54\x57\xef\x04\x37\x8b\x04\xf4\x27\xba\xb5\x06\x57\x16\x25\x0b\x18\xed\xa2\xe6\x02\x2a\x57\x55\x96\x8d\x1e\xb7\x7b\x52\x07\xc6\x50\x14\xbf\xc7\x70\x46\x1c\xba\x88\x83\xfb\x54\x87\x4a\x94\x1b\x27\xeb\xc4\xf3\x44\x86\xba\x11\x81\xab\xfb\x40\x35\x60\x8e\xce\xc4\xac\x24\x52\x29\x00\x5f\x1a\x74\xa3\xc3\x2b\x6b\xdc\x08\xeb\x6a\x18\x67\xf9\x13\x4d\xf3\xa6\x1f\xba\x83\xcf\xc6\xdc\xa0\xd3\xab\x40\xab\x64\x1b\x84\xfc\xe5\xb7\xee\x7b\x08\x60\x1c\x4a\x23\xde\xd9\xc0\x28\xda\x62\xfc\xce\x64\xeb\x8e\x03\x5c\x0e\x96\xa6\x10\xd6\x58\x89\xe7\xd0\x44\x58\x68\x99\x91\x49\x68\xa6\x4f\xf7\xbe\x2e\x13\xcd\x6e\x2f\xa2\x00\x3d\x3b\x62\xf2\x0c\x7a\x77\xd3\xaa\x88\xd7\xdd\x64\xcd\xe1\x80\x73\xb2\x00\xce\x6f\x21\xd3\x8b\x07\xf3\x1e\xdd\x9d\x8b\x36\xbc\x64\x52\x31\x4b\x8f\xa6\xdc\x20\x93\xa1\x43\x31\x0b\xa0\x75\xd0\xdb\x26\x3a\x8a\x03\xde\xd5\x83\xb5\x96\xe4\x72\x57\xdf\xd4\x9d\x29\xcc\xb9\xc3\xcb\x87\xf2\xe5\xdd\x3d\x4c\x97\xc6\xf4\x87\xd1\x84\xa1\x7f\xd9\x0e\xf7\x9d\x60\xce\xa4\x01\x11\x86\x13\x1c\xe7\x29\xc9\x38\xf6\x81\xb4\xf6\x7b\x63\x93\x4a\x39\xc4\x9a\xfb\xe2\x74\x1d\xf1\xb2\x76\xce\xf7\xc6\x5a\xe4\x18\x25\x26\x63\xd9\xad\x31\x4c\x3a\x72\xda\xb5\x7c\x68\x47\x8f\xda\x12\x8d\x73\x20\x61\x3a\xc9\x40\xd2\x09\x49\xb6\xde\x00\xc7\x38\x40\x08\xf9\x94\x52\x0f\x00\x89\x98\x67\x79\x7a\xec\x8b\x67\xe4\xcb\xf0\x4e\x36\xdf\xe2\x6b\xb9\x3d\x88\x16\x4e\xe8\x8b\x36\x93\xdc\xcb\x2c\x64\xd2\x5a\x3c\x2b\x51\x85\x40\x1c\x04\xce\x49\x3e\xd7\x8d\x62\x8c\xf9\x77\xf2\x59\x9d\xb0\x50\x57\x35\xa3\x05\xc8\x59\xd5\x67\x2c\x1f\x7a\xe8\x5c\xb7\x86\x96\x18\x52\x30\x10\x24\x8f\x8b\x71\xad\x5a\xd1\x8d\x76\x80\xf1\xc1\x9e\x9c\x0b\x13\x3d\xd6\xc8\x74\xb2\x61\x89\xc2\xf1\x37\xe2\xf7\x81\xf4\xfc\xe1\xd1\x01\xe9\xbc\xc6\x38\xac\xe0\xfa\xd0\x49\xc3\xa0\x52\xec\x64\xfa\x76\xc2\xb7\x8b\x76\x29\x7b\x1e\x91\xa8\xfa\x02\x1d\xc7\x3d\x04\x22\x08\x3f\x2f\x61\x3f\x85\xf0\x3f\x99\x80\xe4\x38\x94\xeb\xe8\x45\xa9\xc8\x96\xe1\xdd\xf7\x86\x91\x38\x59\x95\x9e\x14\xe9\x86\x10\x2f\x3d\x0b\x7d\x70\x24\xe2\x7c\xa0\xfb\x32\xe0\x88\xa8\xc3\xac\x10\x29\x4e\xf9\x4a\xce\x08\x06\x35\x50\xc0\xa6\xe1\x22\xa1\xb5\x86\x8d\x1f\xe3\x2f\xf9\xe3\x8f\xfa\x2e\xde\x2c\x04\xcd\x00\x70\x52\x0b\x46\xc8\x81\xf1\x53\xfa\x96\x44\x9e\x59\x81\xa0\x1c\xf5\xde\x72\x3a\xeb\x4d\x4b\x26\x9c\x8f\xda\x84\x8a\xdc\x04\xc0\x69\xe2\x0c\x9c\xeb\x19\xed\x89\x0e\xdd\xb9\x23\x9b\x75\xa6\xbd\x19\xd9\x77\xb3\x92\x14\xa3\x91\x42\xfd\x4e\x5d\xb4\xcf\x0f\x3b\x97\x86\x42\x14\x07\xf5\x9c\xb3\x44\xae\x4c\xe0\x28\x5f\x7c\x62\x79\xb8\xb4\xbe\x7f\xc9\x03\x5e\x61\xa9\xb7\x72\x31\x94\x11\xeb\x25\x49\x9d\xc1\x07\x44\x86\x1a\x4d\xda\x23\xba\x87\xca\x8a\xc0\x33\xe7\x72\x7b\xf7\x7b\x5a\xeb\x89\x58\x2a\xe4\xa3\xb9\x24\x02\xeb\x48\x23\xf9\x00\x8b\x9e\xdb\xc8\x5e\x60\x37\x1b\x41\x5f\x5f\xfa\x84\x2b\xc4\xa1\x6b\x0a\x89\xb3\xf3\x23\x0e\xd0\x7c\xfc\xce\xb7\x39\x24\x6f\xa1\x38\x22\xf2\xed\xab\x85\xde\xce\x1d\x11\xa8\x96\x76\x46\xe8\x85\x2a\x8b\xd7\x3c\xd2\x56\xe3\xb0\xab\xc2\xeb\x69\xbc\xf6\x41\x0a\xb3\x4f\x9a\x94\x64\x9d\xb3\x7e\x8d\xda\x59\x63\x33\x52\x86\x27\x75\x1b\xef\x15\x48\x5c\xb3\xec\x3b\x6e\xf6\xa5\x40\x78\xaf\x76\x3d\xb5\x3c\x99\x0f\xa6\xb8\x88\xa5\xd1\x08\xbf\x77\x8c\x95\xb8\x88\x31\x96\x84\xdc\x8e\x4e\x39\x55\x4c\xd8\xf1\x41\xac\xca\xa1\xb4\xb1\xba\xc7\xda\x68\xcc\x9e\x3e\x8b\x13\x78\x81\xd0\x44\xc2\x69\x29\xaf\x9c\x8d\xc2\xd2\xc5\x48\x33\x3d\x19\x44\x0f\x29\x56\x3e\xd5\x9c\x68\xce\x4a\x90\x78\xf5\x98\xc0\x24\xb6\x3b\xa6\xfb\xff\x1d\xd3\xec\x31\x11\x64\xbd\x13\xd2\x67\x55\x0e\xec\x76\x2a\x12\x92\x45\xb0\x66\xd9\x9e\x3a\x26\x25\x0d\xe6\x94\xde\xa7\x82\x5c\x9e\x09\x0d\x29\x56\x08\xf9\xa1\x0d\x3f\xd5\x85\x59\x72\x31\xfe\x10\xc9\x28\x3d\x3d\xc3\x8c\xb5\xd4\x12\xc5\xac\x5e\x88\x59\x79\x51\xdf\xd6\xd5\x36\x4f\xfb\xf3\x0c\xcb\x3c\x49\x01\x96\x24\xd9\x65\x73\x23\x7d\x7c\x2d\x05\xf0\x0d\xb4\xd1\x04\xec\x1a\xed\x9c\xa4\xc4\x01\x1e\xfe\xf8\x92\x17\x67\x7b\x06\x43\x9a\x57\x6e\x40\x71\xd9\x95\xaf\xf0\x7b\x07\x45\xff\xa5\xee\xa4\x23\x1e\x5e\x9a\xdc\x50\x4f\xc4\xa4\x9e\x4f\xe4\xee\x85\x52\x17\x95\xb0\x75\xcf\x3a\x85\x37\x38\x5d\xf6\x26\xbe\x7b\xb6\xf6\xb5\x7d\x2f\xb7\xe2\x05\x5a\xfa\xce\xeb\xf8\x74\x59\x09\x45\x5e\x44\xe1\x93\x74\xfc\xe7\xa4\xe3\x9f\x6b\x1d\xff\x6c\xd4\x84\x37\x1d\x7b\x5c\x59\x11\x07\x92\xb2\x37\x49\xb5\xb4\x40\xf7\x7d\x5b\x01\xc4\xc7\xcb\xaa\x70\x35\x90\xf9\xdb\xb3\x47\x79\xae\x0e\xf2\x21\x7a\x8f\x68\xe4\x9d\x96\x3b\xe5\x3c\xe2\x3d\x3c\x1d\x17\x2f\x4b\xef\x28\xff\xe5\x75\xef\x1e\x90\x17\x02\x81\xef\x88\x26\x22\x5a\x5a\x4a\x3c\x80\x1c\xe4\xba\x1d\xe0\x76\x33\x03\xb7\x6a\xd8\xf2\xfc\x23\x15\xb8\xad\x66\xe0\x26\xed\xff\x0a\x6e\x97\x3d\x0b\xf3\xb3\x60\x8c\x82\x53\xe7\xaa\x1e\xd1\xd8\x73\x81\x7a\x7a\xf4\xf3\x79\xaa\x17\x75\xd3\xb9\xe2\x7b\xf4\x03\x5c\x44\xf2\x55\x3b\xb3\x14\x88\xe3\x55\x6c\xca\x6f\xe7\xbc\x20\xef\xed\xf3\x98\x83\xe0\x9d\xfb\xd9\xc8\xaf\x08\x60\xc1\x8a\xca\xe3\x04\xd7\x9d\x0b\xa9\xb9\xa0\xa2\xc3\x6e\x62\x4f\x64\xbd\x40\xa9\xca\x0b\x2a\xeb\x43\x14\x8e\x42\xb7\x5e\xc4\x10\x65\x1a\x87\x8e\x8b\x4a\x1f\x61\x39\x2f\x74\xa6\xf4\x48\xa0\x5e\x96\x85\x9e\x94\x33\xfa\x16\xab\x19\x7f\x78\xc5\xac\x6f\xb7\x8b\x41\x27\xe2\x12\x94\x38\x76\xad\x0b\x7b\x73\xd6\x9e\xee\x75\x1c\xaa\x3b\xff\x1e\x38\x9f\x57\x5e\xec\x0c\xa1\x44\xe3\x33\xe3\x9e\x7f\x71\xb0\xed\x95\x83\x62\xaf\xb7\x79\xee\xbc\x0d\xbf\x08\xe1\x6a\x98\x4a\x68\xce\x93\xe0\x14\xea\xe9\x19\x95\xab\x71\x33\x55\xb6\x0d\xae\x1a\x2d\x2c\xa7\xed\xe9\x9d\xef\xdb\x9b\xff\xa4\x8e\x7c\x15\xb6\x3e\xf3\x94\x2d\x45\x6b\x24\xcb\x9e\xa3\xd4\xba\x8c\xd7\x33\xb1\xe9\x0b\x6e\x0a\x68\xf9\x61\x12\x5e\x74\xae\x50\x4c\x5b\xee\xd1\x81\x4f\xf4\xdf\x8c\x43\x7b\xf2\xda\x42\x3f\x98\xcc\xe5\x9e\x3d\xf8\xac\xa4\x16\x55\x75\x86\xd3\xd8\x99\x68\x2a\x83\x88\xf5\x7a\x87\xe3\xc5\x1a\x7b\x3b\x1c\x62\x83\x76\x01\x1c\x67\xd8\x54\x5b\x8c\x96\x46\x8c\x2b\x6d\xfb\xfc\xce\xdc\x45\xf2\x1c\x64\x8e\xf4\x8a\x4b\x42\x29\x7c\xba\x9c\x4a\xb6\x45\x83\x42\xce\x3e\x84\xd4\x6a\x0a\x4b\x81\x8c\x40\x50\x5c\xa2\xc5\x15\x96\x00\x71\x78\xd9\x9e\xbe\x76\x93\x66\x3d\x81\xd6\x35\x01\x91\x8d\x4b\xef\x44\xfa\x45\xe6\x1f\x1c\x15\xe3\x2b\xdf\xc4\x09\x42\x55\x32\x3a\x65\xd6\x2d\xa0\xef\xdd\x23\xdc\x80\x8b\xc8\x16\xaa\xca\xab\x13\x42\x17\xd9\xa9\xac\xb5\x90\xd9\xcb\x6b\xb6\xfc\x4b\xab\x35\x0d\x39\xb4\x95\x2e\x22\x99\xdd\xdc\x1a\x23\x54\xd6\xfa\x5e\x4d\x48\xf4\x8f\x11\x89\x5e\x14\x82\xee\x59\x08\x69\xab\x2f\xa0\x82\x56\x9f\xc6\x2e\x9f\x8f\xbb\x14\xa1\xbf\x14\x6a\x97\xcb\x7b\x2a\x03\xb4\x73\xdd\x3d\xa9\x71\x7c\xef\xd8\x38\xd0\x32\x3b\x7d\x83\xa3\x5f\xd4\x1d\x84\x0e\x31\x88\xc6\x41\xe3\x31\x03\x47\x1e\x46\xd8\x05\xa5\xf2\x4c\x77\xe8\x84\x15\xc3\x99\x3b\xa4\xf4\xd0\x9b\x61\xeb\x3b\x44\x3a\xf8\xdc\x1d\x3a\xfa\x2f\xdc\xa1\x9f\x73\x6f\xa6\x28\x6a\x1a\x0b\x36\x78\x07\xd9\xad\xf5\x25\x89\x22\x59\x60\x17\x36\x4e\x89\x98\x16\x86\xa1\x1f\xd2\xf9\x5c\xb4\xcb\xbd\x7a\xba\xb8\xeb\xc8\xbd\x40\xda\xc7\xc7\xdd\x4d\xb0\x69\x7b\x37\xf7\xb7\xbf\x9b\x8e\x6f\x56\x9c\x3d\xd6\xfd\x3c\x8a\x09\xbb\xdd\x36\x52\x5a\x20\x78\x10\xbd\xae\x86\x27\xfc\x50\xea\xd6\xba\x03\x12\x44\xbc\x5b\x58\x1d\xfa\x1c\x89\xaa\xa7\xba\xbb\xc3\x8e\x97\x12\xd7\x63\xe6\x52\x2a\xa9\x64\xb5\xfd\xa5\x9c\xb7\xd4\xa8\x4b\x79\xf0\x89\x2f\x65\x73\xd6\x2e\xaf\x3a\xbe\x4e\xd6\x55\x72\xbb\xe9\xe6\xc6\xdd\xe4\x9b\xab\xf8\x12\x8e\x64\x13\xb2\x93\x7d\xa7\x88\x8b\xd1\x6b\x3f\xc9\x0d\xb9\x26\xc5\xd9\x4c\x69\x2d\x47\x9b\x8b\xce\xc5\xf0\xdf\xa2\xe8\xff\xbf\x22\xcf\x36\x14\xdd\xc5\x8b\xbf\x11\x45\xa7\x3a\x0b\x84\x4a\xaa\x3c\xfa\xcd\x27\xa1\xe8\x1e\x92\x67\x8a\x7e\xbf\x3d\x45\xf7\x42\x07\x71\xf6\x58\xf7\xf3\x71\xdd\x9f\x8a\xa2\x57\x0b\xcc\x5b\x8a\x7e\x1f\xd8\x5c\xfc\xc9\x28\xfa\xcd\x47\x50\xf4\x26\xb4\xbf\x77\x27\x1c\xcd\x87\x5b\x22\x82\x61\x70\x89\x68\x81\xf9\x3a\x49\x53\xd8\xb8\x98\x97\x22\x6a\xd5\xb3\x3b\xe3\xe6\x5c\x94\x5e\x12\x3c\xb6\x97\x34\xe6\x15\xc7\x9d\xff\x84\x3f\x79\xba\xc3\xde\x05\x29\x41\xfd\x13\xae\xc3\x81\x19\x2f\x6b\x68\xc3\xf5\xa2\x1c\xcb\x85\x89\xa0\x55\xa7\x92\xe3\x8f\x67\x01\x6b\xec\x00\x00\xf9\x10\xab\x69\xf2\x64\x32\x03\xab\xfc\x49\x61\x78\x71\xfc\xb9\xa2\x85\x7b\x52\x61\x83\x2f\x5c\xb9\x3f\x2f\x4d\xad\xc8\x7c\x22\xab\x4e\xf0\x5a\x00\xe5\x3c\xfe\x82\x60\x21\x87\x18\xba\xb5\x08\x70\x88\xa4\xf0\x5f\xc4\xf4\x27\x70\x62\xc5\x13\xaf\x92\x71\x13\x26\x05\x4c\xa0\xcf\x32\x46\xa5\x74\xb9\xaa\x77\x86\xe3\x8b\xde\xda\xa7\xa1\x69\xe1\x8a\x2b\x75\xe5\x6e\x26\xc5\xd7\x8f\xb0\xca\x7c\xef\x5a\xd4\x2e\x89\x05\x2e\x63\x8b\xe6\xf7\xc1\x44\x26\xc0\xa4\x48\x99\x3e\x01\x26\x73\x2f\x14\x16\x27\xd4\x46\x8f\x38\x35\x98\xc5\x7b\xf1\x69\x2a\x8e\x8f\x4d\x4e\x5d\x58\xc6\x8f\x47\xa1\xd2\xcb\x10\x82\x3d\xea\x71\x88\xd6\xc8\xb6\xcf\xcd\xad\x0c\xa0\x1b\x7f\xf9\x26\x9a\x13\xf9\x4a\xc7\x3e\x91\x1d\xe1\x84\xe8\xeb\x5b\x7a\xd2\x98\xc6\x34\x24\x2f\x4c\x6d\xf2\xa0\x84\xd0\x8e\x3d\x86\xaf\x16\xb1\x5f\x72\x4b\xc2\x65\xc7\x4e\x94\xdb\x7a\x57\xd8\x17\x68\x0d\xab\x3a\x09\x03\x79\x21\x15\x88\xfe\x43\x5e\xa2\x46\x1b\xfb\x0a\x94\x21\xea\xcd\x85\x89\xc7\xb4\xb1\xf6\x22\x1d\x3b\xfe\x38\x16\x4c\xfe\xa3\x07\x14\xa7\xe9\x85\x54\x90\xa9\x76\xc4\x3c\xee\xb0\xf7\x09\xba\xd4\xa2\xe0\xd8\x38\xca\x99\xd7\x9f\xf6\x70\xab\xfe\xb4\x53\x63\xab\xd8\x6c\xeb\x6f\xd3\x9f\xb6\x40\xee\x84\x1a\xf6\xbd\xe5\x13\x1e\xf1\x71\xdd\x19\x2f\xfb\x5e\x4c\x3b\xf8\x83\x85\xe8\x71\xc8\x1f\x36\x75\xb6\xc6\xf9\xa9\xf7\xf6\x3a\xf7\x69\xac\x59\x77\xa6\xe6\x5f\x83\x23\xd2\x3b\xe8\xe2\xbd\x1b\xef\xc5\x74\x8c\xd5\x66\xca\x16\xb2\xd7\x1b\x9a\x29\x93\xbb\xdf\x0b\x46\xa6\xf5\x59\xc4\xbe\x5e\x7c\x7a\xc4\xd6\x60\xdc\xaa\x11\xf3\x6a\xc9\x53\xc0\xb0\x8e\xa3\x99\x7a\x82\xa6\x46\x94\x40\xf4\xf1\xb7\xa9\xf1\xd8\x74\xbe\x11\x87\x28\x8e\x8f\xee\x01\x80\xad\x48\xe4\x65\x12\xe3\xbd\xd8\x2c\xb8\xbd\x3e\xd9\xd5\xb9\xab\xb6\x76\x5e\x77\x8b\x11\x6c\x3f\xe7\xab\xf0\xa2\x6d\xbf\xe9\xc6\x1f\xda\xbd\xa0\x04\x25\x0c\x4f\xf0\x23\x97\x31\x7d\xe7\x48\x89\x91\x7e\x0c\x9a\xc5\x3d\x65\x4a\x5b\x53\x3d\x6b\x48\x7f\xe4\x77\x93\xc5\x1d\x83\x15\x3a\xc4\x20\x30\x0c\x01\x1a\x96\x57\x67\x3b\xdb\x51\x10\xa8\x78\xe6\x22\xb5\x43\x7f\x35\x41\x98\x1a\xc4\x9d\xd6\x7c\x50\x01\x69\x6d\x8e\xa5\x1c\x37\x53\xa4\xfa\x88\x26\x4d\x9e\xff\x9a\x38\x12\xed\x1c\xc7\xa2\xc6\xdf\xe3\x06\xa8\xa2\x73\x5d\x3c\xfd\xd4\xa7\x33\xb4\xdc\x73\x75\x4f\x7a\xe4\xa3\xab\x32\x20\xd4\x9f\xce\x31\x9f\xf2\x75\x87\xd6\x60\x2c\x17\x07\xe4\xeb\x5d\x38\xd9\x86\xd5\xca\x29\x53\xb3\x74\x48\xcd\x8e\xdd\xc4\xbd\x98\x96\xf1\x27\xa1\x6f\x1a\x0b\x42\xbd\x86\x61\x64\x96\x69\x1b\x1f\x77\x33\xaa\x11\xc6\x53\xbb\xf8\x88\x57\xed\xa8\xf4\xd3\xa2\x28\x1e\xb8\xdc\xa8\x4f\xb2\xa8\x0b\x9d\x4b\xa5\x16\x75\xec\x2f\xca\x11\xa1\xa5\x38\x6a\x37\xf7\x4c\xa8\x16\xa1\x94\x46\x70\x3b\x26\x4e\xd8\x37\x92\xa3\x9b\x70\x35\xe9\x70\x6d\x7b\xd6\x8e\x6f\x4c\x7a\xd7\x9f\x91\x60\x7f\x3f\x7e\xf1\xa1\x8b\x1b\x9e\xf2\x73\xbf\x9e\xba\xe8\xc7\x35\x5d\x08\x05\x2a\x62\x40\xac\xf1\xfe\x63\x24\x89\x3f\x8d\x0f\xbf\xeb\xe2\x05\xbb\x8c\x8b\x9d\xfa\x9c\x4d\x85\xa3\xde\xc9\x7c\xa7\x28\x68\x3e\x19\x1f\xf9\xad\x8b\x01\x17\x87\x71\xbd\xfd\xb8\xba\x6f\x23\x39\x97\x21\xe7\x40\x2f\xf0\x4d\x98\x0c\x42\x0c\x06\xc4\x97\x5a\x47\x93\x77\xc1\xb9\x49\x2e\xc4\xed\xd5\x3e\x90\x7e\x48\x4f\xd6\x20\x0b\x4c\xd5\x3e\xa3\xae\xfd\xbe\x49\x67\x99\x65\x3e\x86\x48\x9f\x39\x3d\xad\xbd\x8b\x4a\x9e\x6e\x4d\x14\x83\x8b\x41\x4d\x08\x4f\xfb\x28\x5a\x40\xc8\x80\x1c\xb6\xd7\x4d\xc6\x01\x32\x9c\x61\xb9\x30\x9c\xb5\x6d\x78\x60\x05\xd0\xfb\x13\x5f\x7e\x3f\xe1\x98\x73\x23\x6f\x05\x85\xbc\x0e\x6e\x88\x02\x19\xde\x84\xd8\x9a\x84\x84\x60\x15\xb7\xf9\xe5\x70\x79\xef\x72\x6e\x92\x5c\x93\x25\x10\x39\xf0\x01\x0d\x9c\x76\x9a\x94\x52\x3c\xf3\xa4\x2a\x6a\x0b\xf3\x11\x53\xf4\x0a\x92\x6b\x7b\xc5\xf4\xc8\xb6\xef\xaa\xed\xdc\x2d\x79\xcb\xf4\x1e\x35\xe6\xf2\x26\xd6\xe8\xe1\x50\xc6\xbb\xc5\x23\x60\x06\xb9\x51\xc1\xec\x50\xc0\xcc\x8f\x6b\x21\xa4\x11\xc1\xa3\x71\x2d\x8f\x41\x1a\xb2\x75\xe6\xb5\x3c\x98\xa8\xbb\xf8\x09\x20\x8b\xe0\x81\x6c\x1a\x95\x5d\x8a\xeb\x0d\xa5\xb2\xd7\x6e\x4b\x92\x82\x87\x6b\x9a\xd0\x12\x5a\x83\xc6\xde\x80\x54\x5c\x2d\x70\x07\xab\xc5\xb1\x82\x12\xe4\xf1\x6f\x4c\x39\x16\xef\x69\x8b\x04\xeb\xe0\x8a\x6a\x9e\xe4\x4e\xdf\x91\x98\x49\x3f\x44\xa0\x52\x0f\xca\xa9\xd9\x34\x24\x37\x9c\x92\x02\xc8\xaa\xfb\x37\xdd\x65\xba\xd0\x20\x9d\xa1\x34\xc7\xfc\xfb\x4f\xfa\x65\xc7\xe6\xe2\xad\xe9\xd6\xec\x52\x1e\x73\x01\x2b\x42\xdd\x5a\x2c\xe4\xa0\xdb\x86\x1a\x20\xa3\x3f\x94\xa4\xca\x4f\xbe\x94\xad\xe8\xd2\xff\x4f\x2b\xd9\x82\x3e\x6e\xb5\x12\x61\x86\x89\xa4\xe6\x31\x6b\xd9\xe2\xaa\x58\xcc\xc6\xb2\x3c\xb7\x96\x15\xb1\xf6\x1e\x73\x89\x37\x92\x6c\x5c\xe3\x78\x24\x20\xca\xe0\xba\x91\xda\xa9\x03\xbb\x7a\x0c\x73\xa5\x13\xc8\x0b\xb9\x36\x17\x3b\xb4\x36\x1e\x66\x68\x4d\x7f\xb3\x2d\x1e\x89\xa8\xb9\xdb\x81\xee\xf4\x47\xb9\x5b\x32\xe9\x57\xcc\x90\xbc\x51\x60\x7c\x10\x72\x61\xeb\xc8\xb6\xac\xe3\xe1\xf3\x2f\x43\xdb\x7e\x69\x3a\x08\xc5\xa7\x7e\x6e\xdb\x9f\x9b\x49\x21\x9d\x79\x4a\x2b\x3b\x89\xe5\x3b\xf6\xe1\x66\xb2\x7a\x68\xbe\x35\x7e\x5a\x88\xa7\xa1\x54\xc6\x94\xb4\x80\x88\x4a\x47\xf8\x68\x42\x69\xe8\xd1\x38\xba\xe4\xc7\xc3\xfb\xc2\xca\xf6\xa4\x10\x25\x5b\x20\x8e\x61\x0b\x86\xa1\x1c\x3f\x57\xfd\xbc\x25\x89\xc7\xf7\x98\x0f\xac\x32\xd3\xd3\x9b\x6d\x68\x4d\x28\xed\xf4\x3d\xa3\xd5\x73\xd6\x6a\xb4\x8c\x24\xa7\xd9\x56\xc1\x24\xb9\x86\x7e\xa5\x37\xb4\xd1\xb6\xe7\x57\x1c\x93\x9a\x6b\x45\xa7\x01\x2d\x08\x6e\x82\x50\x49\xb5\xfc\xe6\x6e\x11\xaa\x32\x73\x02\xa8\xc5\x9e\x76\x09\x47\x9a\x43\x9a\x1c\x08\xef\xf7\x5c\x3b\x64\x7e\xcb\x04\x43\x6f\xe8\x00\xf7\x5c\x46\xb5\x67\xb4\xf9\xc6\xb1\x03\xfe\x5b\xfe\x08\x32\xf5\x4d\x17\x4d\xce\xc2\x24\x42\x72\x73\x01\x41\x33\x99\x5d\x61\x1a\x77\x74\x5d\x7d\x2c\x97\x81\xef\xa0\x27\xc1\xe3\x1a\x6d\xbc\x5f\xb9\xab\x9f\x37\xcc\xb2\xb5\xe9\xd2\xd5\xb3\x51\x27\x72\x28\x3a\xe7\x4c\x14\x60\x7e\x12\x65\xfd\xb8\xef\xf8\x10\xe9\x3a\x6f\x7b\x3f\xc9\x98\xb4\xc3\xfd\x54\xc5\x0c\x09\xf1\xe9\x2e\x5a\x45\xe6\x2e\x7c\x72\x45\x86\xf1\x2c\xfe\x01\x9e\xe5\xfe\xf4\xff\x97\xf1\xcc\xb3\xfc\x6d\xc4\xb3\x55\x0f\x3c\xdb\xbc\x86\xfb\xb0\xf5\x1a\xc0\x16\x1d\xe3\xc8\xff\x90\xfb\xdf\x8a\xdc\x14\x6b\x4d\xbb\x50\x36\xe7\x3d\x37\x8b\x72\x17\x44\x3f\x34\x88\xee\xa1\x11\xca\x3f\x4d\xe1\x30\xb4\x44\x3a\x70\x8f\x21\xea\x15\x36\x93\x2d\xdf\x43\xa3\xea\xa8\x0a\x8d\xae\x19\x8d\xf4\xd8\xdf\xd6\x26\x7d\x45\x27\x33\x42\xe9\xe7\x72\xa2\x97\x9c\x96\x1b\x7f\xbf\x90\xe4\x03\xbe\xdc\x22\x6f\xa7\x5f\xa8\xd6\x5a\x14\xaa\xa6\xff\x23\x74\x22\x86\x68\x06\xd4\x1c\x4d\x0a\x96\xf8\x3c\xfe\x7a\x1b\x36\x8d\xb8\xc5\x2f\xdf\x45\x8d\x51\xfe\x84\x6c\xdd\x2c\x68\xef\xcb\xfe\xcd\xe5\x53\x42\xe1\x47\xff\x52\xdf\x6e\x7d\xd9\xf3\x80\x90\x21\x69\xd3\xe7\x86\x1d\x2e\xe5\x93\x3c\x2c\x9d\xbe\x3c\xfe\xf2\x8b\xb8\x1b\xe5\x53\x23\x6c\xfb\xf5\x6d\x69\x4f\xe3\xf8\xcb\x4f\x13\x32\x35\x21\x5c\xbf\xec\xb7\xb6\x70\x58\x87\x5e\xa1\x1b\xc1\x75\x06\x6b\x32\xdc\xb0\x5f\x75\xb7\x07\xc9\x91\x2f\xc8\xf2\xdf\x67\xc4\x39\x9f\xe5\xfe\x23\x68\xeb\xe7\x3f\x6a\x57\x9e\x63\x70\x11\xbb\x10\xf9\xaa\x11\x97\x06\x52\xa4\x68\xd7\xe3\xaf\x6f\x98\x68\xe6\xd5\xbe\xa9\xaa\x63\xec\x1a\xba\xeb\xec\x6f\x85\x6f\x77\xea\xeb\x38\x83\x0c\x88\xb2\xae\xc2\x55\x2f\xec\xd2\xe4\x62\x94\x46\x1d\x6b\x2c\xcf\x55\xd1\xe4\x5c\x14\x43\xaf\xc4\xaa\x07\xdf\x48\x4e\x51\x1b\x78\xa5\x8d\xf5\x76\x49\x11\x0b\x35\x83\x0c\x84\xbd\x39\x1e\x76\x67\xc2\x05\x76\x50\xd6\x6f\x93\x5e\x96\x69\xc7\x1b\xd7\x27\x5e\x5d\xab\x55\xf4\x8e\x3b\xee\xe4\x86\x3f\x2a\x64\x28\x37\xbc\xc9\xa0\x7b\xed\x76\x80\x73\x34\xdc\x6e\x83\xdb\xde\x33\x71\x90\xd5\x53\xad\x78\xd5\x0b\x21\xd6\xd3\x77\xec\x2b\x47\x5d\x35\x9f\x58\xf0\x99\xbc\xe2\xe3\x4e\x50\x47\x9a\x85\xf2\x10\xd4\x2c\xb7\x26\x68\x1f\x17\x70\xce\x2d\xbd\x0a\x85\xae\x7f\x2f\xec\x4b\xa1\xdd\xd8\x0f\x9b\xce\xcb\x03\x81\x16\x62\x7a\x47\xc8\xf8\x9e\x63\x24\x70\x52\xe6\x6e\x79\x0b\x73\x45\xee\x4d\x84\x84\x89\x45\xfc\x83\x50\x45\xcf\x36\x6a\xe7\x79\x08\xfc\x32\x05\x21\x09\x24\x87\x9e\x45\x13\x38\xaf\x38\xa1\xdb\xf7\xc9\x4e\xd3\xb6\xe1\xdb\x86\x4c\x5c\x1e\x28\xbc\x65\xd3\x4c\xd5\x1b\x47\xb4\xf6\x66\x70\xa1\x69\xc9\xf7\xeb\xc2\xe0\xaf\x06\x9d\x65\x90\x25\xc6\xe3\x8e\x19\x83\x57\x6c\x79\x92\x00\x1e\xa9\x13\x48\x71\x81\x48\x21\x58\x1a\x60\x02\xd1\x46\xe9\x7e\xeb\x6d\xda\x69\x36\x22\xe2\xcb\x8a\x48\xf7\x32\xd0\x56\x49\x71\xb7\x7e\x90\x3a\xa0\xea\xcd\xea\xe4\x3b\x24\xb5\x40\x5d\x9c\xc5\xa3\xc0\x03\xd6\x43\x71\x5f\x4a\x13\xbc\x97\x76\x03\x6f\x8d\x5a\xf7\x6a\x38\x8c\xa7\xfa\xb4\x25\xf6\x47\x1d\xd9\xe3\xb6\xdd\xe0\x76\xfb\x05\xee\x92\x91\x5b\xed\xf7\xb0\x17\x72\x31\xdd\x2a\xda\x10\x98\x06\x0c\x9d\x0a\x10\xfb\x7e\x99\xb1\x22\x25\x27\x4e\x45\xca\xb9\xa5\xa0\x3f\x6d\x50\xe4\x1c\x58\xc5\x68\xde\x24\xd0\xa5\xbe\x5f\x4d\x08\x7b\xe1\x7a\x9b\x18\x9f\x69\x84\x77\x9d\x16\x09\xbd\x6e\x35\x24\x86\x02\x88\x0d\x59\x2b\xe6\x99\xae\x63\x54\x69\x58\xf1\xd6\xf4\x82\xd7\xa0\x20\x72\x64\xee\x1a\x28\xa8\x73\xe1\x26\xa5\x27\x93\xb1\xcb\xae\xaf\x0b\xc3\x2a\x24\x72\xdf\xf4\xd9\x21\xeb\x0c\x76\x4e\x0d\x41\x26\x76\x95\x67\x7c\xd2\xc7\xe4\xa2\x65\xb2\x6d\x08\xd6\x97\x3a\x51\xb8\x22\x6a\x68\xdb\x77\x12\x4f\x86\x51\x4e\x1b\x47\x4e\x54\x38\xb9\x5d\x4f\x53\x8b\xc5\x43\x7f\x98\xf7\xa1\x6d\xdf\xd3\x30\xf7\x69\x98\x39\x81\x3a\xb1\xa7\xf8\x88\xec\x2d\x4e\xce\xde\x23\xa1\xae\xad\xa3\x08\x65\x4a\xea\xa8\xb2\xd9\x0f\xba\x87\x90\x6a\x26\x72\x19\xc4\xb2\x26\xef\x33\xc6\x8b\x2e\x54\x3b\xde\x81\xee\x7c\x8e\xc2\x74\xc3\x54\x01\x94\x3a\x59\x68\xdc\x94\x75\xbc\xd3\xaa\x68\x86\xe6\x45\x3b\x5c\x06\x91\x3a\x47\xc8\x4d\x57\xf9\x7c\x44\xcd\x54\x76\x14\x34\x41\x0e\x9d\x3e\xfb\x3f\x62\xde\x29\x41\xdc\x87\xd4\x54\x71\x6b\xb7\x25\x95\x8a\x5f\x71\x47\xed\xf4\xb6\x54\x9f\xe6\xde\xbf\x0e\x2c\x2b\xe6\x75\x3c\x4d\x63\xfe\xd3\x1d\xb3\xea\xdb\xf1\xe6\xf9\x47\x54\xbb\xbc\x79\xc6\xd1\x9f\x7e\x8a\xd1\xa7\x72\xf7\x4d\x33\xb4\xcb\x27\xe2\x1e\x21\xb7\x0e\xfa\xec\x19\x62\xef\x13\x7a\xc5\x03\x42\x91\xb4\x11\x8c\xeb\x80\x38\x71\x77\xe5\xe7\xd1\x75\xc9\xe8\x20\x07\x14\x77\xd8\xfe\x88\xd9\x5e\xb4\x61\xbd\xa8\x20\xfa\x8b\x28\x2e\x6c\xb3\x10\x17\x09\x24\x2b\xb5\x6f\xad\xdd\x94\x9d\x71\xce\x67\xe6\xe8\xe5\x48\xde\xe1\xd0\xe8\xff\x40\x79\x74\x1a\x7d\x1c\x74\xf9\xec\xf1\x83\xe6\x73\x6e\x86\xf6\xf4\x89\x20\x29\x9e\x2a\x1e\x9c\xe6\xfa\xca\xb3\x9f\xe9\x03\x00\x2e\x92\x1c\x90\x62\x48\xf8\x36\xd2\x9d\x9b\x4e\xe0\x57\x26\xf6\x77\xa6\xf1\x3e\xfe\xab\xce\xfb\x30\x29\xb8\xe7\x6d\x78\x29\xfa\x58\xd0\x02\x45\x1f\x21\x3a\xfc\x82\x37\x9d\xd8\xb7\x87\x20\xa4\xa6\x9d\x97\xe2\x25\xe3\xdb\x27\xf5\x2d\x4e\x4d\x83\xbc\x52\x82\x6a\xfe\x5f\x84\x29\x34\xbf\xb7\xea\x4c\xc9\xbe\x32\x8d\x2c\xd7\x00\xe1\xfd\x45\x1b\x5e\x32\x3c\xc8\xaa\x01\x5a\x88\x0b\x9d\x61\xb4\x1f\xbc\xba\x08\xf1\x66\xae\x4c\x69\x08\x47\xf9\x4f\x27\xa7\xbd\x6a\xd3\x2d\x40\x75\x23\x9c\x0a\x83\x1d\x9b\x7f\xd1\x86\x57\x42\xa6\x02\x70\x31\xea\x3f\x81\x24\x40\x88\x77\xdd\x08\x49\xaa\xc2\x1e\xb4\xd2\x87\x59\x7e\x8e\x35\xa6\xfe\x31\x82\x38\xd6\x56\xa8\x9e\xe1\x8b\x12\x2d\x51\xdf\xfa\x88\x10\xe9\x9c\xb1\x57\xc0\x70\xaa\x1b\x50\xc7\x4d\x1c\x06\xdd\xf2\x21\x96\xa2\x1c\x55\xc1\xcf\x4b\xe2\x83\x1b\x06\x76\x86\x12\x06\xa4\x1d\x57\x53\x06\xbc\xbd\x8a\x7a\x21\xd5\xa7\xf3\xb1\xe6\xaa\x9f\x1f\xe3\x82\x83\xa0\xfb\xcf\x28\x0c\x62\x2c\x1a\xd0\x1b\xcb\x61\x5f\x9d\xe8\xd6\xe2\x19\x4c\x48\x11\x01\x4a\xd0\xc4\x19\x18\xab\xe0\xde\x5b\x6f\x68\x75\x0f\x55\xa3\x3b\x12\x7b\xcf\x73\x4e\xbd\xba\xdb\xde\xa2\x20\x67\x9f\x51\xb3\x35\xc7\x9a\x22\xea\x14\x82\x64\x11\xb6\x0d\x11\x4d\x83\x6e\x9a\xef\x99\x0a\x72\xff\xb5\x23\xbf\x8f\xda\x7c\x56\x15\x11\xcb\x41\x65\x16\x2c\x26\x44\x26\x5e\xa3\x52\xf0\x8f\x3a\xf1\x8c\x53\x12\x7b\x7c\x66\xaa\xeb\x63\x7c\x90\xb8\x72\x6d\xf6\x00\x5c\x30\xe9\x52\x26\xe6\x1b\xf9\x8c\xa3\x61\xc5\xec\x30\xf1\xcc\x37\xfd\x14\x1d\x65\x9f\xba\x17\x4f\x05\x91\x70\xa2\x1e\x7a\xe8\xdc\x65\x57\x07\x72\x63\x14\x46\xac\xb9\xeb\xb8\xba\xc3\x24\x71\xb5\xb1\x3a\x0f\xde\x87\xc4\xa7\x40\x23\xb7\x54\xcb\xa2\x3f\xf6\x41\xa3\x9e\xb9\xf3\x41\xac\x9e\xb9\x95\xcf\xa0\xfe\x82\x7a\xe6\x52\x1e\xa7\x14\xe1\xf4\xaa\xc3\x86\x15\x8d\xdb\xcf\x4b\x22\xf3\x06\xcc\x0d\x13\xa9\xf4\xd4\xc0\x5f\x43\xdb\xfe\x4a\x6a\xe0\x5d\x1f\x47\x95\xf4\x17\x93\x92\x35\x30\x0e\x2f\xd6\x09\x8b\x12\x19\x07\xea\x0a\xed\xdb\xd0\xb6\x6f\x69\x09\xeb\xfe\xf3\xb6\x0d\x32\x31\x11\x08\xe1\xf8\xf3\x27\x35\x7a\x1d\xe8\x70\xf7\xa4\xe2\xa9\x42\x6f\xb3\x1a\x5f\x0e\x28\x16\xa3\xea\x28\x24\x60\xfc\xf2\x0d\x25\x44\xa4\xe6\x70\xf8\x32\x5a\x68\x96\x91\xa7\xe9\x3a\x19\x66\xc8\x68\x2b\x5c\x46\x4c\x84\xec\x43\xc7\x05\x18\x5b\x33\xcb\x30\x65\x04\x9e\x1e\x49\x58\x43\x60\x13\xbe\xab\xd4\x06\x11\x4c\x2d\x42\xcf\x8b\xca\xa3\x42\x17\x67\x69\xdd\xeb\x99\x4e\x14\xc4\x5d\x87\x34\xdf\x35\x43\xbf\x4a\x1e\x99\x9f\x29\x4c\x99\x9a\xc3\xa5\xb1\x84\xe7\x3b\xe9\xe4\x58\x10\x3e\x49\xa7\x5d\x1e\x30\xa4\xbe\x33\x58\x0d\x3e\x55\x9f\x5f\xc9\xfa\x2a\x84\x61\x17\xf1\x84\xf3\xa4\xf1\xff\xdf\x0b\x9c\x3a\x4d\x35\xa8\x73\xbf\xcc\xa5\xee\xe1\x8f\x4f\xc8\xd7\x1a\x26\xa3\x40\x28\x5a\x20\xdd\x34\xa0\x42\x26\x06\x07\x1d\x1f\x7c\xc6\xd2\x3b\xbf\x3a\x08\x0d\xb1\xa4\x9e\x1d\x04\x17\x70\x9b\x25\x74\x47\x8f\xc2\x0d\x71\x9f\x13\x8d\x18\x81\xf9\xaf\xf1\x85\xd7\x6c\xfb\x9e\x2e\x0a\x85\x19\x2c\xdb\xf0\x13\x07\x25\x2c\x21\x6d\x16\x54\x18\xbf\xfc\x8e\x58\xed\xf8\xdd\x4b\xbc\x9c\xf8\x52\x7a\xbd\x4c\x3e\x31\xa2\x34\x3b\x6e\xd2\x90\x8a\xf2\x3c\xe5\x50\x8f\x25\x8c\xf7\x34\x93\xb7\x22\x94\xb3\xc9\x54\xe3\xb8\x53\xd5\x95\x92\xcd\x75\x19\xd5\xa5\xd9\xf5\x6f\xda\xbc\x07\x39\xef\x3b\x8a\xca\x58\x8e\x1a\x81\x7b\x14\xee\xcc\xde\xdb\xf4\xdd\x80\x22\xb1\x21\x3c\x3c\x5d\xc4\x6a\x19\xd2\x4c\x2a\xeb\x6d\x60\x92\x02\xaa\x68\xf5\x34\x95\x64\xbc\x90\x06\x32\x37\x63\xb7\xca\x72\x7e\x24\xad\xeb\x60\x26\xa5\xa6\x2a\x93\x37\x4c\x4c\x05\x7e\xb4\xbf\x23\x35\x95\xc1\xba\xf0\xb4\x55\xff\x73\x21\x4f\x24\x79\x10\x61\xcd\x0f\x1e\x6c\x0a\xc6\xca\x80\xfd\xfe\x11\x01\xc8\xb2\x84\xc9\x8b\x52\xea\x8d\x60\x87\xd3\x3c\x75\xcc\xf7\x3a\xa0\xde\x9c\x12\x84\x31\x15\xc5\x77\x2f\x5d\x7b\xea\x70\x7e\x62\xf6\xee\x09\x2d\x70\x8b\xb9\x11\x8e\xc0\x0a\x50\xfa\x80\x18\x17\x7a\x10\xe2\xb2\xca\x4c\x3b\x34\x0f\x7a\x6a\x6a\x1b\xb5\x4d\x6f\x7e\x9d\x11\x99\x46\x2c\x4c\x71\xfc\xff\x2b\x11\x60\x00\x80\x02\x05\xf2\x73\x07\x52\xee\xa1\x67\x4e\x53\xb8\xd4\xba\x13\x83\x79\x3d\xde\x45\xfe\x07\x22\x4a\x07\x1b\x77\x33\xf9\xe1\xc4\x60\x20\x05\x5a\x71\x4b\xfe\x92\xf8\x8c\xee\x07\xf3\x79\x51\xe1\x9a\x29\xda\x17\x99\x99\xf4\x4c\xa9\x84\x21\x95\x44\x47\x35\x8a\x14\x40\x2e\x6a\x7e\xf5\xdb\x80\x4b\x5f\xc7\xa7\x42\x29\x8c\x99\x31\xc0\x72\xf5\x1c\xe8\xd8\xfa\x31\x01\xff\x28\x1e\xc3\x11\xa4\x38\xff\x1d\xae\xdb\x6a\x21\x1e\x84\x94\x4b\x17\xc8\xba\xb9\x2e\xa5\xff\xe9\x91\x57\x5e\x0d\x78\xdc\x17\xb8\xbc\xde\x2a\xed\xec\x1f\x1a\x0e\x10\x42\x3d\x38\xa8\x3d\x1f\x4a\xb7\x32\x54\x23\xaf\x99\x7e\xa1\xbf\xcd\x14\x8a\x44\xb8\x00\x7a\x0f\x42\xed\x0d\x33\x90\x53\x16\xf0\xb4\x80\xb8\xf5\x2b\xd0\x9c\x2b\x2d\x22\x3d\x18\xbf\x4c\xfa\x93\xb3\x87\x34\x25\xee\xa0\xfa\x65\x2d\x90\x7c\xfc\xff\x4b\x7e\x30\x13\x8f\x3c\x51\xbe\xb2\xbf\xb0\xad\xa1\xd4\x18\x81\xfb\x7c\x3c\xc7\xdb\x6e\xc3\x41\xce\xb8\x79\x95\x4b\xf7\xc8\x54\x07\x04\x3a\x7d\xd6\xb5\xed\x67\xc6\x0a\x6f\xb9\xdc\x35\xf0\xeb\xd5\x56\xf8\xb5\xc5\x3d\x53\x81\x6a\x19\xab\xe2\xcf\xf9\x8c\xb2\x87\xdd\x13\xc3\xcf\x9d\xbc\x46\xb2\x30\xd1\xa4\xb5\xd7\x22\xc9\x1a\x68\x26\xed\x59\xfe\x6e\xc7\xa8\x96\xfa\xc9\x60\xfb\xb0\x01\x87\xd8\x00\x13\x97\x83\x82\x4a\xf0\x32\xb5\x18\x0e\xd4\xf4\xd4\x03\x32\x5e\x29\xa4\xc2\x8f\xf1\x57\x6e\x90\x54\x43\x7a\xdc\xfa\x1b\x53\x5f\x30\x69\x5f\x79\x90\x7b\x13\x8e\x1c\x2d\xc3\xf1\x93\xec\x8e\xa2\x9b\x95\x36\x53\xe5\x37\x08\x8d\x44\x72\xf0\x29\xc9\xa6\xf1\xf3\xef\x5d\xdb\xfe\xde\x49\x71\x14\x73\x81\x05\x62\x26\x3c\x7f\x63\xe6\x42\xac\x7b\x66\x82\xf7\xbb\x05\xe7\x7c\x02\x19\x4f\xa5\x3b\xec\x92\xe7\x03\x99\x2c\xff\xf2\x72\x9b\x1f\xd4\xf6\xbe\x6b\xbc\xd0\x5f\xa0\x0e\x70\x83\x48\x71\x1b\xbd\x10\xf3\x61\x22\xf8\xe4\xd9\x9d\x71\x14\x18\x5a\x09\xa1\x07\x3d\x93\x23\x5a\x61\x85\x4e\xed\xcf\x38\x7d\xc8\xa2\x4e\x4c\x06\xeb\xc2\x7f\xf1\xc7\x46\x7d\xde\x9a\x76\x30\x3b\xcd\xe4\x38\x32\xca\xc1\xa4\x6a\x3e\x9e\x7d\xb7\x89\x71\x7b\xe7\x4e\xee\x26\x06\x94\x97\xb4\x0a\x30\x7d\x16\x49\x84\xf0\x42\x85\x23\x77\xf2\x02\x90\x15\xfd\x5a\x25\x5e\x5c\x8d\x3a\x25\x18\xd0\xaf\xd5\x1f\x80\x88\x9b\xe1\xd7\x4c\x81\x80\x5e\xd4\xf1\xee\x13\x57\x7f\xa0\x43\x27\x7f\xc6\xc8\x2a\x07\x01\xb8\xaa\xe6\xe8\x85\x35\xb9\x69\x56\x4d\x08\xab\xbe\x8f\x54\xf0\xe7\x06\x39\x1e\x40\x36\x91\x3e\x32\x59\xc0\x99\xfc\x9c\x6a\xaf\x09\xc5\x78\x5e\xcb\x0a\x59\xd8\x9c\xc4\x9f\x53\xc7\xed\x62\x8b\xa7\x1d\xc9\x38\x75\x4f\x2e\x24\xf1\x44\xbd\xac\x82\xdc\x95\xd3\xe4\x86\xf7\xe3\x92\xd8\xf8\xf2\x5c\xed\x8b\x3d\x59\xcb\x8f\xce\x30\xb4\xba\x04\x2f\x3d\x38\x94\x32\x8b\x45\x74\xfe\x07\xf7\xfa\x24\xd9\xc2\x5a\x11\x6e\x7a\x2e\xd8\xe4\x18\x73\x9b\x49\x13\x8b\x66\xe6\xb6\xa4\x74\xc7\xe5\xec\x34\xdf\x48\xa0\x25\xdb\xa6\x7b\xad\xdb\xaa\xd2\x42\x12\x4e\x50\x6f\x79\x12\xd0\x69\x03\x5a\xe8\x25\x72\xce\xf2\x59\x91\xf8\x16\xdb\x2f\x04\x3b\xc5\x33\xe0\x90\xf4\x9d\xc7\x7f\xe6\x16\x72\xb7\x61\x21\x75\xdb\xfb\x0e\xbb\x5d\x2d\xe6\x41\xda\x4c\x25\xf0\x1e\x71\x34\x41\x69\x5a\xae\x02\x85\x3f\x45\x47\x4d\x14\x3f\x22\x93\x5d\xc9\xb5\xb4\xb5\x38\x87\xdd\x4c\xd1\xf4\xaa\x1c\xe6\x4b\x37\x6f\x03\x26\x71\x5c\x4c\xca\xb8\x21\xa0\x66\x0c\xbe\xde\x4a\xcf\x80\xd4\x4e\x21\x5f\x2a\xa9\xf3\x4a\xe6\x80\x50\x68\x80\x97\xac\x41\x4d\x64\x3d\xb7\xb8\xde\x53\x33\xd9\x1f\x51\x24\x97\xf6\x78\xa6\xeb\x9a\x94\xd0\xf2\x74\x02\x24\x05\xd1\xd3\x8a\x0a\x1d\x06\xad\xa4\x7c\x27\xce\xb4\x08\x75\x2e\xe1\x9f\x84\xe1\x72\xfa\xca\x00\x4a\xf1\x4c\x01\x6d\x31\x6c\xc0\x6d\xee\x26\xe1\xad\x20\xfe\x37\xf3\xad\xbd\xbe\x1f\x05\xa7\x9d\xd9\xd6\x96\x1c\x2b\x13\xb4\xd7\x02\xc4\x10\x2c\x3d\x77\x3f\x1e\x21\x6b\x5f\x4d\xf9\x68\xa6\xca\x65\xb8\x95\x15\xb1\x7c\xbf\x13\x74\xca\x13\x01\x49\x56\x90\xc1\x6f\xe4\x5a\xcb\xe8\x7f\xdc\x0b\x6e\x43\x06\x25\x8f\xde\x16\x6a\x16\x5c\x94\x02\xf6\x92\x73\x89\x86\x09\x56\xda\x2d\xbb\xbc\x4d\x0e\x97\xb6\x58\x4e\xe7\x17\x67\x65\xcc\x9b\x99\xc5\x79\x9e\xca\x72\xb5\xc2\x6e\x33\x5b\xdb\xd1\xed\xcc\xcc\xa0\x51\xe7\x26\xd7\xf0\x70\x66\x66\x58\x4c\xd5\x0d\xdd\xeb\xea\x53\x59\x83\xd5\x95\x3f\x81\x97\x49\x52\xc5\x2e\x35\xe0\xb1\x2f\x40\x00\xcf\x29\x74\x47\xcb\x38\x81\x21\x5b\x35\xee\xd1\x05\x3b\xd7\x01\xdd\x24\x2b\x93\x43\x36\xaf\xf5\x40\x72\x45\x4c\xb7\xe1\x7a\x08\x02\xac\x01\xdf\xbb\x3b\x3f\xd7\x09\x97\x15\x8d\xf3\x56\xee\xdc\xdb\x20\xb8\x3b\x89\x5c\xda\xf5\xe7\xd9\x24\x7b\x91\xb0\xf7\xe9\x89\xf7\x06\x1a\xa8\xc4\x90\xab\x50\xc7\x86\xa5\x0e\xd0\x70\x34\xc4\x50\x07\xa8\x9a\xe5\x66\x86\x47\x29\x0e\xb1\x3f\xf9\xd8\xa5\x71\x84\xc4\x04\x18\x31\x79\x69\xa0\x59\x2f\xb8\xee\xbb\x63\xc3\x6e\xd0\x69\x60\xfa\x03\xaf\xb9\x73\xad\x12\xa8\xf0\x34\xf4\x19\x47\xc4\x8c\x01\x50\x46\x67\xf7\x52\x48\x70\x0d\x04\xb9\x06\x17\x86\x90\xa5\xd3\x92\x1a\x14\xdd\xe1\x8c\x42\x80\x02\xf7\x01\xf6\xaf\xbc\xba\xbb\xc0\x98\x45\x77\x56\x5d\x05\x69\xda\x16\xf2\x7e\x95\x9e\x01\x99\xf2\x62\x57\xfd\xa7\x1a\x01\x80\x40\xb6\xa7\x13\xf1\xeb\x26\x25\xdb\x9b\xb8\x5a\xd4\x81\x88\x11\xa0\xa8\x56\xdd\x22\xc1\x57\x63\x8f\x8c\x87\xc2\x33\x00\x69\x67\x84\xa0\x29\x58\x30\xc4\x7b\x7a\x8d\xbe\x93\x79\x13\x15\x4d\x70\x75\xc2\x67\x4f\x56\xba\x39\xb4\x5e\x1b\xc4\xc1\xcb\x32\xe4\x8d\x42\xbd\x59\xa3\xc7\xc0\x34\x06\x92\x89\xd4\xad\x58\x6d\x48\x5b\xaf\xab\x02\x34\xfe\xb9\x13\xf9\x0a\x3a\x82\x33\xa0\xd7\x3c\xcf\x81\x67\xd1\x54\x8b\xbe\x5f\x6e\xb1\x68\xb1\xca\x22\x6e\xe7\xe6\x25\x74\x97\xbd\xce\x89\x89\x0d\x90\x92\xa9\xe8\xd6\xed\x89\x98\x03\xbc\x98\x30\xaf\x74\x3b\xe4\xef\xce\x4a\xc5\x25\xed\xba\x17\x43\x39\xfe\xb7\x28\x04\x9f\x78\x97\x3e\x11\x14\xba\xe6\xd9\xe4\xbe\xdf\x31\x4b\xd1\x67\xd7\x88\x92\x03\x5e\xc8\x5d\xf6\x71\xdf\x4a\x6d\xa5\x38\x06\x1a\xb6\x4c\x2a\xf7\xc3\x6d\xc7\xef\xe4\x93\xbb\xef\xf4\x2d\xf8\xae\x21\xc7\x77\x8d\xcb\x30\xc9\x01\x63\x60\x6d\xd5\x9e\x9b\xf2\x88\xb7\x6d\x78\xba\xcd\xb5\x85\x73\x2d\xc3\xfa\xc8\x54\xbc\x57\x4e\x86\x9b\x6e\x9b\x82\x10\x44\xa1\xe2\x27\x59\xc4\x86\xec\x31\x74\x28\x6a\xff\xc7\xc3\x7f\x7a\xff\x3c\x9f\xb7\x19\xb8\x8d\xaa\x9e\x76\xbb\x95\xab\x7f\xc3\x56\xa0\x7b\xc0\x51\x98\xb7\x72\x29\x49\x68\x72\x83\x81\x41\x79\x64\x5b\xb3\xaf\x66\x0a\x08\xf2\xbc\x05\xc2\xa9\x26\xaf\x8f\x9c\xc4\x3c\x9c\x87\x7c\xe8\xd9\x33\xe0\x41\x58\xba\xed\x34\xba\x34\x93\x3b\x0e\x77\xcf\x81\x74\xf7\xf1\x90\x76\x25\x1e\xd7\xfe\x20\xc1\x50\x80\x15\x10\x33\xbf\x8a\x1b\xfe\x0c\x35\x0e\x6e\x7a\x97\xa0\x53\xad\x02\x40\x25\x62\x1b\x68\xbe\x26\x9d\x82\xe2\x16\xd1\x2f\x82\x68\x62\x27\x6f\x7b\x51\xda\xd4\x93\x26\x54\x90\xc5\x41\x1a\x58\x99\xd0\xaf\x3a\x77\xa5\x42\xdc\x23\x13\xb3\x33\xb8\xc0\xd1\x42\xef\x7b\x76\x74\x14\xb1\x8a\xc1\x9e\x44\x05\xe0\x3e\x8b\xbf\x9e\x0b\x91\x3a\x8a\xfb\x49\xad\x4a\xef\xb8\x1f\x3e\xa7\x7a\x85\x54\x4d\x1f\x7a\x0e\x89\x5f\x08\x2e\x2c\x63\x2d\x84\x36\x4e\xd2\xb9\x15\xfc\x92\xd5\xbe\xf0\x96\x37\xfc\xb2\x91\xd6\x68\x0b\x5a\x8c\x0c\x9e\xc2\x58\x7e\xfe\x7e\x03\xb4\x49\x48\xf1\xfa\x01\x00\x0f\x07\xd4\x0d\xa4\x58\x0b\xc8\x27\xb8\xa0\xce\x08\x89\x24\xcc\x2f\x89\x84\x8c\x01\x85\x76\xce\x75\x10\x0d\x51\x05\x08\x1d\x34\x42\x40\x60\x8a\x27\xa2\x91\xcf\x86\xed\x20\x55\x99\x47\x58\x59\xc9\xa0\x17\xe0\x81\xd7\x67\xb3\x0d\xfe\x93\x17\x5d\xe6\x02\x2b\x3b\xf5\x83\x39\x04\x89\x32\x10\x80\xcc\x50\x6a\x89\xb7\xc3\x6e\xcb\x31\x99\xea\x9e\x10\x5d\x96\xc8\x91\x32\x15\x6d\xc4\x5b\xac\xfc\xbd\x50\x2c\x5e\xac\x8b\x35\x3a\x56\xc8\x04\x22\x56\x85\x76\xb2\xa2\x54\x8c\x0b\x57\x03\x67\xec\x2a\x22\x75\xdb\xe1\x22\x37\x53\x92\xb0\x67\x67\xf2\x5c\x4e\x01\xe1\xb6\xe4\x16\xb0\x98\xa5\xdc\x8f\x15\x7e\x77\xd7\x6d\x41\x0f\xd8\xca\x01\x77\x42\xde\x51\x36\xa1\x7b\x59\x54\x53\x00\x67\x15\x81\x3c\xd8\xda\x42\xa2\xc7\x33\x8d\x5d\x9b\x10\x8e\xcf\x92\xa2\x2c\xeb\xc3\x2f\xe3\xc4\xa0\xfa\x53\x81\x8b\x98\x8a\x57\xa2\xcf\xda\x61\xa1\xec\x61\x24\x88\x23\xf9\x70\x89\x0a\x16\x55\x72\x48\x5b\x99\x7f\xc4\x2b\x14\x73\xd6\x86\xa3\xc1\x7d\x46\x07\x84\x34\xa7\xb1\x06\xc6\xd4\x92\x18\xe9\x93\x32\x90\x6a\x19\xa3\x8c\x35\x84\xa7\xec\x00\x7c\x17\x87\x07\x33\x8b\x4b\x68\xce\xda\xe1\x41\x48\x7f\x53\x6d\xbc\xbf\xba\x32\xef\x3a\x90\x62\xfc\x2e\x09\x14\xc4\x15\x81\x8f\xda\x4d\x45\x67\xdd\x0a\x69\x24\x8e\x20\x52\x27\xe2\x62\x0e\x44\x62\x4f\x84\xc3\x17\x58\xcb\x6d\x10\x69\x35\xd8\xe6\x10\x13\xc7\x45\x1e\x0d\x94\xc7\x98\x96\x82\xf3\x95\xe9\x44\xcd\xb2\x1d\x0e\x3b\x15\x62\x86\xe5\x9b\x7a\x12\xda\xeb\x13\xf3\xe9\xfa\x4a\xda\x03\xe9\x70\x67\x51\x4a\x99\xc9\x90\x50\x8f\x1e\x19\x64\x22\x5f\x62\x7c\xf0\xa2\x94\x0a\x9e\x7e\xa1\x02\x3d\xf9\x99\x87\x6e\xde\xaf\x12\x7b\xfd\xef\xfa\x8c\x67\xee\xbc\x40\xa6\xcf\xfc\x33\xe3\xdf\x96\x7d\x82\xe7\x6d\x78\xed\xd6\x0b\xf0\x83\x48\x86\xb6\x74\x1c\x27\x43\x73\x99\x36\x36\xcf\xf7\x6b\x10\x6c\x1c\xd3\xa7\x0c\xef\xfa\xb6\x7d\xd7\x8b\xb3\xba\x88\xad\x3a\x68\x01\x54\x01\xf2\x3c\xf6\x4e\xf5\x56\x51\x75\x72\x4d\x27\xeb\xaf\xc1\xe4\x49\x5e\xc4\x86\xad\xb4\x06\xf2\xfb\xe2\x69\x51\xf0\x85\x0e\xe0\x14\xc5\xdc\x96\x23\x85\x94\xaa\x3a\xc6\x34\x90\x2b\x77\xf6\x5a\x9a\x2d\xb1\x53\x84\x7d\x5f\x94\xdc\x89\xe6\x45\x69\x7f\x41\x16\x58\x2f\xfc\x2d\xae\xe9\x79\x4e\x21\x66\x01\x2d\xdd\xd2\xed\x36\x36\xfe\x5b\xb6\xe7\x0b\x01\xcf\xb2\xe3\x97\x82\x6b\x44\xcb\xd2\x32\xae\x97\x52\xbd\xc6\x27\x8f\x1d\x82\x51\x86\xb9\xe9\x58\xe7\x20\x95\x28\x93\x8e\xe3\x20\x44\x28\x82\x05\x4c\x67\x88\x2d\x9a\x48\xdf\x90\x12\xc9\x33\x1f\x23\x2f\x6e\xa6\x77\x97\x9d\x9e\xec\xa9\xc0\xca\xc4\x12\x4f\x63\xd1\x1b\x1e\xaf\x96\x70\x20\xde\xa7\x04\x03\x9c\x84\xc9\x02\xc3\x12\x96\xb1\x62\x91\xe7\x72\x26\x4b\x38\xce\x64\x88\x4e\x50\x01\xdc\xd0\x0e\x27\xf5\xf5\xc1\x3c\x40\x0e\x7a\x5a\x9f\xbc\x55\x6a\x7d\x47\x5b\xad\x0f\xf3\x1b\x2b\x00\x96\x3a\x94\x5c\x0a\xb9\x74\x1d\xce\x16\xb3\xe8\x16\x0f\x26\xd0\x2e\x2e\xf2\xab\x2e\x37\xe5\x24\x21\xf3\xd8\x6d\x04\xa7\x25\xdb\x7d\xd3\xc9\x17\xa2\x08\xe3\x6d\x33\x25\x40\x2f\x1f\xd5\x07\x63\x8a\x27\x14\x4a\xbd\x57\x2b\x69\x0a\x9c\x89\x13\x9a\x5d\x01\x42\xec\x5e\x22\xf4\xaa\xba\x18\xc8\xe7\xc3\xa6\x52\x1a\x06\xb7\x2c\x57\x26\x3f\x32\xb0\xca\x5a\xe4\x1b\xfe\xe1\x02\x95\xb3\xe9\x97\x44\x81\xa8\xc7\xf2\xb8\x98\x27\xdb\x6c\x49\xa3\x54\x12\x7c\x9d\xc9\x05\xe0\x94\xa7\x6d\x6f\xd3\xd3\x1e\x37\x16\xb6\x93\xfa\x3e\x9d\xbd\x88\x2b\xa6\x9e\x7e\xe3\x32\x40\x2f\x17\xa9\x7a\x51\xb5\xdc\xd4\x4c\xbe\x78\x58\x9a\x4c\x51\x66\xd7\xfb\x39\x0f\x84\x3c\xb0\xed\x80\xe3\xed\x92\x5c\x29\x0e\xea\xc9\x0e\xa7\xca\xd8\x7f\x2d\x2b\x20\x6a\x49\x95\x96\xc3\x4c\x5b\xd2\x4f\x2e\x4f\x1a\x1f\x9d\xbf\x45\x0f\xc6\xd7\x46\x52\x86\x42\xff\x9c\xd5\xa7\x9f\x69\xa6\xee\x01\xf4\xcb\x05\xa5\x22\x61\x6e\x54\xa3\x3f\x76\x2d\xa9\x02\x90\xea\x78\x6f\x64\xc6\xb3\xf1\xbf\x6b\x83\x81\xa9\x60\x33\x17\xa7\x93\x53\x2d\xe7\x41\x75\x60\x8c\xfc\xb8\x09\x74\x27\xf4\x41\x98\x30\xf5\x39\x10\x5b\x23\x90\x05\xf6\xb1\x89\xfc\xb2\x60\xbf\x34\xe3\x00\xec\x57\x7e\x14\xa5\x63\x53\x12\x47\x31\x4f\x24\x02\x02\x18\xe6\x74\xf0\xfd\x61\xfb\x12\xf3\x5b\x64\x73\x29\x8b\xc9\xbd\xb9\x43\x70\x1c\x9e\x1a\x5f\xff\x7e\xc7\x9c\x91\xe4\x09\x61\xc3\xc6\x83\xc2\x74\x20\xb8\x3a\x28\x11\x7d\xb2\xf0\xb9\x94\x91\x3c\xc9\x05\x8b\xd1\xbc\xa4\x24\x6b\x7a\x39\xea\xfd\x15\x49\x06\x85\x91\xb0\x42\x59\x70\x40\x7a\x4a\x52\xf1\x81\x71\x75\x0b\x7e\x5b\x4a\xf5\xf8\x16\x12\x2b\x78\xd9\x91\x2d\x9e\xad\x66\x44\x97\x89\xe3\x5e\x19\xe8\xc5\x38\x3c\x7a\xce\xc9\xcb\xb4\x0c\xd9\xc4\x36\x91\xea\x28\x6c\xcb\x7f\x94\x14\xe6\xdb\xfa\x15\xcf\xbb\x1d\xd8\x8c\xe9\xd9\xa3\xc8\x46\x22\xba\xba\x38\x8a\x2d\xfb\xb4\x49\x7b\x99\xac\x65\xdb\xe6\x71\x78\xbb\x4b\xa8\xe5\xcb\xd9\x6a\x77\x87\x83\xeb\xaa\xaa\x86\xd7\x83\x13\x31\x43\xad\xee\xf3\xcc\xa9\xac\xe6\x8d\x4a\xf8\x4e\xd3\x15\xc8\x0c\xc2\x76\xbe\xeb\x99\xac\xfb\x8f\x3f\x13\x31\xf3\xa3\xe0\xb5\x11\x2f\xb6\x85\x97\x96\x51\xfc\xc6\x55\xff\x39\xb0\x3c\x16\x55\xff\x6f\x5c\xc4\xbf\x37\x5c\x41\xb5\xe3\x73\xa0\xb5\xb7\xc6\xd5\x9b\x28\x43\xd0\xa2\xad\x78\xc0\xa8\xa7\x9c\x7a\x49\x93\x65\xf7\xe3\xbd\x29\x73\x08\x11\x37\xc0\xd6\x47\x36\x5f\xe8\x80\xca\xab\xba\x6f\x12\x05\x08\x6b\xbc\x5c\x0a\x05\xbd\x03\x53\x5f\x0f\xf1\x26\x55\x5c\xd4\x25\xfa\x3f\xff\xab\x2b\x66\x6d\x8d\x89\x37\xff\xc3\xc4\x47\x25\x15\xce\x88\x7f\x9c\x41\xa1\x1c\xe3\x7b\x33\x4d\x21\x54\x2c\xc2\xa5\x09\x49\x2c\xde\xdc\xa4\x8c\x00\x70\xe5\xc1\x09\xe7\x7f\xed\xa4\xc8\x0e\x5d\xa8\x3c\xd6\xf2\x63\xb7\xd4\x6d\x6a\xeb\xd6\xba\x75\x0a\x0f\x79\xb7\xe2\x0a\x95\x19\x4a\xac\x76\x22\xaa\x41\x29\x20\x57\x81\xa5\x5c\xaf\x34\xa8\x15\x91\x57\x46\xd7\x87\x89\xb1\x5a\x5c\x54\xf8\xe1\xce\x6b\x5d\xfe\xb5\x4d\xa2\xbc\xb7\xef\x17\xf7\xc1\x7b\xba\x52\x9e\xc0\x03\x4f\xd8\x6e\xa3\xbd\xd2\x83\x15\xe9\x2f\x03\x42\x52\xbc\x9f\x49\x97\x77\x8c\x68\x00\x98\xe9\x11\x55\xd5\x3f\x07\x38\x45\xab\x93\xce\x2b\xaf\x76\xfa\xbb\xbe\x0e\x77\x1a\xfa\x4c\x96\xb7\x31\x70\x67\x80\x21\xa4\x3f\x0e\x83\x38\x36\x9b\x90\x7b\x60\x9a\x6d\x13\x71\xa9\x9a\x59\x44\x3c\xbb\x77\x83\xe9\x65\x22\xd9\x5f\x74\xc5\xe7\x47\x64\x6f\xc1\x82\x1a\xde\xd4\x35\x16\xa1\x71\x30\xcc\x03\xcc\x4b\x5b\x70\x61\x5a\xb2\x27\x17\xc6\xe9\x3e\x74\x6d\xfb\xc1\x5b\xf2\x8d\x59\x32\xc6\xdd\x75\xc9\x87\x9b\x96\x7c\xd1\xca\x62\x47\x64\x28\x33\xd1\xc1\x55\x56\x83\x4f\x43\x8e\x6d\x73\x7f\x50\x8b\x7b\xe8\xdd\xfb\x4e\x8e\xda\x29\xf6\x41\x6d\x60\x51\x27\xa2\x44\xe3\x2a\x57\xfd\xb2\xff\x28\xd2\x22\x0c\xeb\xda\x4a\xe5\x7a\x27\x9c\x35\x18\x63\xb0\xa0\xa2\x5e\x44\x87\x03\xbb\x85\x07\x12\x86\xcb\xb6\x3e\x19\xba\xcc\xbe\xd6\xa8\x0d\x6c\x0b\x57\x92\xa2\x83\x00\x24\x20\x2e\xea\x59\x1b\x6a\xee\xee\x49\x8f\xae\x13\x85\x78\x88\x18\x0b\x62\x4e\x99\xaa\x11\x75\x7d\x74\x0c\x5c\xe3\x14\x47\x2a\x40\xfe\xce\x63\xef\x1a\xee\x27\x1b\x40\xfe\x71\x6e\xa6\x18\x4b\xfb\x51\x80\x06\x84\xd4\xa8\xf7\xff\x75\x90\xd3\x60\xd9\xb4\xb9\xea\x3e\xfe\x30\x7e\x28\x86\xc3\x28\xb4\x36\x21\x1c\x2c\x6e\x37\x54\x74\xa8\x56\x24\x6b\xa6\xd0\x24\xa2\xef\x0e\x49\x4c\x0f\x06\x25\x01\xb2\xb6\x13\xb4\xe8\xfa\xa2\x54\xa9\xcf\x80\x59\xf5\x4c\x57\x48\x8e\xa0\x18\x2d\x12\x14\xf0\xab\x25\x19\xca\xc5\x08\x2a\xea\xad\x90\x72\x76\xf3\x1b\xa9\x1b\x94\xe8\x77\x14\x4f\xba\x09\xe1\x97\xbb\xad\xe0\x4b\xac\xca\x95\xee\xb1\x73\x1b\xaa\x78\x1b\xd8\xe6\x8e\x35\x4f\xbd\xcb\xf5\x96\xef\x7d\x0e\x13\xdf\x54\x6a\xc3\x7a\xe6\x84\xb1\x2a\x40\x89\xfa\x10\x0c\x48\x06\xc5\xd8\x16\x3d\x36\x36\x9a\x22\x69\x0b\xc0\x9f\x3c\x2c\x83\xf2\x78\xcd\xa2\xec\x4d\x70\xad\x7a\x8a\x08\xdc\xca\x90\xc6\x8b\x92\xd4\xe9\x79\x00\x68\x84\xb2\xba\x78\x90\xc6\x81\x96\x97\x9c\x9d\x85\x88\x68\xf0\xa2\x7d\x02\x54\xb7\xaa\xeb\xa0\xa6\x52\xb1\x40\x24\x59\x2a\x6e\x98\x6c\x91\xc5\x8d\xfb\x70\xe2\x5a\x2e\xef\x18\xd3\xf4\xaa\x1b\x51\x8c\x74\x97\x06\x74\x1c\x18\x4d\xa2\x4a\x1e\xef\xce\xf5\xdb\x4f\xe7\x53\xc5\x14\x82\x85\x96\x06\x85\x02\xc9\xea\x98\x02\xf8\x1b\xf7\x10\x0a\x4d\x12\x7a\x05\x18\x5a\xb6\x0d\xac\x24\xd0\x14\x27\x50\xce\x61\x4d\xbd\x05\x29\x12\x15\xec\xa2\xe5\xbf\x09\xe1\xb6\x3f\xdc\xa6\x16\xcf\x47\xff\xa9\xd7\xa6\x54\x94\xea\x40\x8a\x7d\x2f\x2a\xed\x28\x1a\xaa\xfa\xca\x69\x17\x10\x33\x0b\x4f\xd4\xf0\x5e\xfb\x76\x85\x26\x84\xab\x8d\xf5\x19\x29\x84\xa8\xf8\x49\x0c\x56\x69\x02\x17\xaf\xaf\x09\x0c\x2c\x7c\x4d\xbe\xe8\x64\xc2\xb6\xe2\x6d\x32\x68\x0c\x8e\x0f\xab\x2d\xce\x3a\x57\xb6\x71\x60\x6f\x26\xa8\x0c\x6b\xad\x23\xb3\xc3\x3a\x23\x28\x4b\xa7\xf5\x41\x5f\xb9\x4d\x47\xf9\x3a\x16\xf8\x9f\x08\x87\x7f\x7e\x4f\xa5\xb7\x92\x9c\x35\xbe\xbd\xc4\x5e\xb9\x16\x95\x4b\x87\x09\x5f\xb5\xdd\x4c\xe2\x2b\xd5\xb1\x26\x84\xf4\x8a\x04\x69\xac\x1c\xaa\x44\xce\x5b\xd7\xd4\x05\xfa\x0b\x58\x9a\xf7\x4d\x40\xf4\xf8\xd8\xaf\xfd\x88\x6f\x9f\x09\x83\x74\xcf\x8b\x1a\x1f\x8b\x26\xad\xaf\x00\xfc\x63\x1f\x88\x64\xa0\xc2\xd5\x52\xb7\xf8\x3a\x78\x9a\x26\x3f\xad\x36\xbf\x47\x92\xc5\xc2\xdb\x72\xfc\xf8\x25\x16\x99\x22\x06\x48\x20\x2d\x3f\x4b\x99\x69\x94\xa9\xfe\xe8\xa4\xd4\xda\x84\x70\xd3\x1f\x77\x78\xf9\x3e\x46\x2a\xfe\x11\x3b\x73\x0e\xa9\x1f\xf3\x5f\xfd\x28\x8a\x7c\x3f\x0e\xf9\x45\x17\xe1\x3b\xf9\xb5\xdf\x4d\x0c\x2a\xc4\x8d\xb6\xe2\xf6\x44\xd3\xc4\xd3\xf1\xe3\xfb\x2e\xde\xd0\xeb\xb8\xdc\x2f\xbb\xb8\xfd\xa9\x55\xc0\x67\x31\xbc\x40\x70\xc4\xd3\x44\x3c\x9e\xb7\xa5\x95\x62\xc1\xb7\x38\xc8\xb3\xf1\xe3\xbf\x22\xe5\x98\x9a\x1d\x7d\x88\x27\x7c\x18\xa7\xff\x2b\x5e\x94\xbb\x58\x8b\xec\x34\x06\x18\xc4\x42\xcb\xd1\xb1\xfb\x7d\x3c\xd7\x76\x66\xbc\x37\xd1\xe8\xfa\xd7\x14\x99\x30\x45\xab\xc4\xf1\x62\x50\x7b\x88\xb5\x7e\x2e\xa2\x49\xfc\xd9\xf4\xff\x65\xfb\x6c\xfc\xfd\x79\x3f\x82\xe9\xdb\xc4\xeb\x20\xcf\x42\x2c\x56\x92\xed\x83\x6c\xa0\x5e\x70\xf3\x28\xf9\x99\x2d\x17\x4e\x4d\x40\x3e\x8b\xc6\xb0\x94\x16\xe9\xea\xca\x8e\xc0\xb7\x96\x24\x7c\x24\x9e\xcf\x46\x18\x08\x2e\xcd\xce\x7f\x52\x1f\x1d\x95\x4e\x84\xd4\x8f\xa3\x5c\x4c\xab\x52\x5a\xda\xc1\xc0\x6f\x13\xfb\x52\xb9\x1a\x97\xb2\xc4\xab\x13\x4c\x2e\x04\x60\x72\xdf\xc2\x8a\x8f\x1b\x58\x33\x1b\x47\x99\x78\xe1\x0a\x51\x4d\x08\x6f\x16\x42\x42\x1b\x9f\xb9\x8c\xc4\xed\xcf\x40\xb7\x75\x84\xe1\xef\xf1\xef\xcb\x48\xc0\x17\x38\xca\x5f\xa7\x6a\xac\x39\xbb\x54\xc6\xf7\x90\x6f\x28\xa0\xf8\xd1\xf8\xe2\x75\x90\x05\x54\x85\xcb\xcc\xf1\x29\xdd\x18\x96\x3c\x1e\xea\xb7\x1f\x7f\xa8\xe3\xbb\x1f\x42\xde\x41\x81\x73\x59\x9b\x3a\xdf\xf5\x42\xe0\x1b\x4e\x02\xe8\x17\x4f\x11\xa1\x1e\x2b\xdf\x02\x80\x75\x20\x97\xca\xb3\xae\x85\x76\xae\xcd\x58\xe5\xac\xaf\x37\x9d\xf5\x6f\xf2\x3e\x01\xc5\xac\x40\x72\xdd\x13\x6e\x08\x4b\x78\xdb\x86\x5f\xc4\x6d\x9e\xe4\x93\x7f\xe9\x3a\x90\x0a\x79\xf6\xd3\xe5\xff\xa3\x73\x0a\xae\x90\xa1\x33\x46\x9b\x34\x21\x9c\x1c\x87\xe4\x13\xda\x76\xc1\x62\x49\x22\x07\x47\x5c\x2e\x04\xb7\x90\xd3\x93\x4c\x80\x5a\xd6\x8f\x8c\x64\xc1\xa2\x08\x0e\x0a\xc7\xa8\xd1\xa3\x99\x1c\x3c\xca\xf8\xf2\x94\x9d\x63\xc4\x16\x03\x54\x51\x7c\x09\x0b\x72\x7c\x25\x97\x40\xb8\x0c\x75\x69\xa1\xb0\xb4\x29\x95\xf0\x77\x09\x0a\x67\xd1\x8d\x28\xa5\x4c\xd4\xc6\xb1\xb2\x36\x42\x9d\xa7\x9b\x86\x1b\x81\x1c\x34\xfc\x0a\x5c\xca\x5a\xcb\xb1\x34\xe2\x50\xb1\x17\xad\xbf\xf2\x77\x80\xde\x10\xfb\xdd\xfc\x4b\x21\x04\xcb\xd1\xf9\x52\x1c\x0e\x62\x3e\x1f\x49\x82\xd6\xaf\x1b\x32\xe1\xd0\xb9\xd3\xb5\x84\x6b\x90\x6c\x1a\x78\x97\xd8\xa5\x53\xb0\x28\x22\xc0\xb2\xdc\xdc\xb5\xd4\x48\xe2\x71\x7a\x47\x0b\x78\xcc\x19\xbf\x0e\x64\xfd\x67\x2c\xc2\xf3\x3a\xd0\x2d\x9e\x58\x72\x5e\xd3\x13\x23\x9a\x4f\x44\xe0\x57\x14\x32\x69\x44\xaf\x0f\xcf\x7c\x0f\x25\xa3\xe0\xe2\x7e\x3f\xb2\x9f\xe7\xe2\x32\x81\x54\x6b\x67\xa6\x10\x99\xc7\xe5\x3c\x6d\x23\xe7\x99\xe0\x32\x15\x1f\x91\xb1\xd3\x4d\x08\xed\x5e\x27\xc2\x1d\xa9\xfa\x28\x00\xa8\x2c\x3c\x97\xbd\x8b\xbb\x44\x11\x1d\xb7\x23\x99\x63\xf9\x92\x7b\x7a\xd1\x48\x2b\xdc\xda\xdc\x8d\xf6\xef\xa7\x9c\xa5\xaf\x44\x1d\x03\x41\x15\x89\x21\x88\xa2\xd3\x3f\xeb\xbd\x8b\x60\xc0\x46\x94\xe1\xd2\xc2\x99\xc0\x70\x2f\xc5\xf7\xd2\xed\x18\x71\x63\xc3\x5b\x58\xa5\xc0\x6b\x4f\x84\x58\xa5\x05\x2c\x90\xdf\x0f\x41\xe4\x26\x0e\x54\x48\xdc\x69\x1c\x94\x52\x19\x07\xc4\x29\x47\x58\xea\x36\x29\x4d\x40\xdb\x3b\x1c\x16\xf1\x07\x4d\x09\x93\x84\x6e\xa5\x1a\xaf\xcb\xc3\x55\xd7\x33\xc8\x81\xd4\xd4\x46\x66\xa0\xa4\x0c\x6d\xff\x9f\x16\x65\x2b\x8c\xdd\x48\x43\x2d\xce\x1d\x05\x80\x3c\x84\xc5\x1f\x62\x3e\xb6\x9f\xc0\xe1\xc0\x1c\x08\xfc\x5f\x35\x51\x78\x12\xd5\xcb\x9f\x05\xdf\x6b\x42\x58\x5e\x77\x4c\x82\xa9\x86\xab\x9a\x2c\x35\x7a\xfd\x4b\xc9\x84\x8e\x2b\xc6\x28\xf7\x7f\x75\x15\x20\x37\xc2\xe8\xed\xf1\xa8\xf1\x93\xbc\x2f\xf1\x17\x2d\x2c\xf6\x69\x31\xa1\xb5\x75\x3d\x2c\x21\x7a\x28\x49\x5b\x59\x27\x1a\x44\xe7\xcd\xea\xe6\x85\x0e\xfb\xfb\x36\x7b\xd1\xfe\x1c\xb6\xd4\x94\x65\xb5\xb0\x8a\x24\xca\x4d\x22\x87\xaa\xb6\x90\xd2\xcf\x7b\x37\x0c\x4c\x6f\x15\xb2\x3c\x68\x52\x6a\xa3\x11\x13\x21\xe5\x06\x9e\x6b\x5a\x3e\x38\x3e\xba\x01\x15\x12\xaa\x72\x92\xe7\x71\xf1\xec\x7d\xf4\x87\x6c\x53\x9e\xfc\x8c\xf1\xec\xad\x4e\x55\x81\xaa\x62\x58\x23\x12\x8f\xe2\x1f\xd4\xb4\xa0\x7a\x6f\x6a\xd8\xfd\xc0\xaf\x00\x27\x89\x9d\xe0\x4e\x7a\x61\x2a\x7a\x54\x69\xc7\x56\x91\x27\x2b\xb6\xa0\x37\x52\x6b\x27\x61\x06\x38\xa2\x5d\x99\x26\xe2\xab\xee\x9c\xa3\x07\x9d\xf8\x9e\x84\x70\x8e\xe8\xca\x56\xd3\x9f\x37\xa3\x93\xa7\x4c\xa9\x50\x8f\x5b\xd9\xca\xa9\x14\x58\x5a\x4f\x49\xe2\xa7\x2c\xfd\xd3\x70\x1e\xf3\xd6\x97\x5e\x92\x6c\x0a\x66\x20\x74\xa7\xc8\x04\xef\x32\x67\x68\xec\xf7\xc4\x26\xf5\x96\x2c\x69\x55\xf6\xd3\xfb\x4d\xb1\x61\x32\x6d\xcb\x22\xa8\xca\xeb\x81\x28\x02\xa9\x15\x7b\x00\xb5\x90\x91\x36\x79\xa0\xec\x56\xc7\x68\xc6\x03\xcf\xbc\x15\xe8\x4b\xf1\x50\x98\xb3\x7a\xc1\x48\x33\xa0\x40\x2c\x3a\x8c\x02\xca\x85\x48\x1c\x2a\x98\xd6\x4c\x09\x4b\xf1\xfe\x41\xcf\xf4\x52\x8a\xb6\x20\x43\x58\x12\x6e\x85\x45\xa4\xbb\xa1\x3e\x5d\x3d\xfa\x96\x2a\xdf\xe0\x13\x0a\x15\x57\x24\xca\x63\x53\x5f\x47\x5b\xe0\x1c\x82\x78\x29\x23\x54\x09\x01\x3d\x65\xde\xa2\x56\x72\xba\xb8\xbe\x62\x02\xa7\xf2\xcb\xde\x75\x9e\xc8\xcc\x02\x4e\x75\x7a\x2b\x69\x1d\x99\x70\x4d\x69\xb7\xc2\x3d\x46\x0a\x0c\xd9\x28\x40\x22\xf4\x91\x2c\xea\x77\xe7\xf1\x67\x75\xb7\x60\x26\xb4\xf1\xac\x8e\x7c\xfa\x4a\x6a\x9e\xa3\x0a\x35\xdc\xc5\x8e\xa6\x22\x23\x9a\xe6\x98\x01\x0c\xe6\x3e\xe9\x29\x7f\xf4\xdb\x08\x41\x90\x00\x05\x17\x55\x86\x7c\x69\x3d\x6e\xd0\x48\x70\xce\xcd\x7a\x29\x99\x11\xd5\x9a\x3f\x90\x8c\xbb\x48\xd9\x8d\xc8\xa5\xd4\xe1\xcb\x2c\x04\xe1\xb8\x94\x50\x7c\xe5\x5f\x11\x35\x41\xee\xf7\xed\x35\xbd\x9c\x7e\xf6\xf2\x60\xb1\x65\x91\x90\x29\x84\x3c\x48\xf1\x12\xbf\xb5\x16\x23\xc4\x01\x0c\xda\x78\x7e\x3c\x60\xbb\x4c\x20\x83\x76\x44\x96\x19\x2b\x0c\x1f\x88\x40\x18\xd7\x7c\xd5\x8e\x12\xed\x34\xf7\x67\x24\xf6\xea\x33\x81\x00\xec\x87\x9d\xd3\x7f\x81\xb8\x4a\x0a\xba\x96\x7c\x5a\x9a\x7d\xb4\xac\xe4\x1b\xeb\x08\xc9\xd4\x89\xdf\x70\x44\x73\xf5\x4c\x2a\xed\x0d\x2c\x06\xee\x77\x2c\x8c\xe1\x19\xb9\x74\x8d\x97\xcd\xe4\xd7\x9b\x2f\x48\x9e\xff\x2b\x37\x46\xcc\x53\xdc\x9e\x6d\x0c\x90\x80\xb7\xec\x72\x1e\x72\x4b\xec\xa8\x1e\x5c\x26\x5a\x70\xb0\xa3\xcd\x42\xa8\x79\x7f\x10\x8e\x00\xed\x7e\xd5\xf9\x02\x57\xa6\x1b\x25\x31\x16\xfa\x03\x23\xef\x74\x7d\x1d\x46\x3d\xc1\x8f\x18\x10\x84\x76\xe2\xea\xb3\xd3\x99\x2a\x4b\x30\x97\x0a\x02\xf5\x7a\x5c\x55\x35\xf4\xff\x1e\x86\xc1\x97\xbd\x30\x69\xa5\x86\x97\xfa\xfe\xfe\x38\x3e\xf0\xa2\xbc\x70\x7e\xcd\x01\x06\x07\x32\xbc\x48\x67\xfa\x4f\x98\xfd\x21\xba\x61\x27\xa3\xc1\xd4\x09\xc5\x2b\xd7\x97\xcb\x23\x14\xb1\xad\x15\x4f\xaa\x30\xb0\x94\x29\xf1\x6e\x00\x2e\x5c\x0e\x5e\x88\x53\x23\x52\x6d\x8b\x22\x50\x1d\xf6\x80\x2d\xbe\xed\x86\x7d\x09\x35\x43\x81\x37\x05\xd8\xfc\xb5\x98\x1c\xba\xf6\xc6\xbf\x31\x0c\x45\xda\xbb\x9a\x29\x70\x19\xc0\x20\xdd\x5c\xc9\xf9\xca\x25\x0a\xd3\x8c\x55\xfe\xef\x39\x4b\x5a\x06\x6b\xc0\x04\x36\x28\x93\x78\x23\xf2\x4b\x40\x2b\x26\xd8\xe0\x6d\x4b\xbb\x65\x4c\xfa\xfc\x93\xeb\x8e\x6d\x55\xf9\x97\xef\x5d\x2f\x14\x29\x7a\x35\x0f\x4a\x22\x1f\x80\x5c\xe9\x66\x2c\xbb\x00\x56\xd6\xf4\x13\x33\xcd\xea\xf4\x90\x5e\x51\xad\x7c\x20\xb7\x0d\x66\xf2\x98\x63\xd0\x11\x2b\xee\x2c\x24\x68\xa9\x4d\x3e\x88\x63\x7d\x90\x77\x4b\x5b\xfb\x04\x12\x92\x85\x80\xe2\x84\x6a\x32\x34\x68\xc7\x4c\x7c\x49\x79\x3a\xdf\x78\x47\xe4\x4d\x1c\x6f\x88\x56\xd6\x33\xed\x72\xd6\x4d\x4c\x41\x90\x25\x06\x9e\xb6\xd6\x97\xc8\x66\x94\x60\xd5\xed\xc9\xde\x88\x5b\x5b\xf5\x96\x12\xf5\xc6\x27\xf2\xa0\x56\x4c\x5a\xc9\xa8\x1c\x18\xe9\x29\x7e\x05\x1c\xbd\x21\xdf\x10\xdd\x73\x8a\x89\xa0\xe3\xd1\xb7\x95\xad\x9d\x15\x46\x74\x30\xb8\x9c\xbc\x16\x1c\x2f\xcd\x05\x36\xe9\xe3\xda\x84\x0c\x62\x25\x38\x58\xa2\x2f\x03\x05\x0a\x6f\x45\x26\xaa\x32\xe7\x38\xc4\x7d\xec\x16\x33\x2d\xeb\xed\xc0\x65\x91\x75\x4d\xe3\x40\x7c\xc6\xb9\x55\x49\xc0\x96\xbc\xb6\x6a\x25\xb0\x38\x70\x1d\x08\xc0\xc2\x0a\xe8\x29\x73\xcf\xb5\xb4\x37\x50\x11\x9f\x2d\x16\xca\x43\x6c\xb7\xce\x3d\x6e\xb4\x2e\xae\x32\x2d\x16\xfd\xb8\xc7\x87\xff\x8a\xf1\x4e\xca\xb8\x47\xfc\x10\x2f\xa9\x5b\x7a\x1d\xf8\x12\x3b\xb9\x0c\x13\x59\x13\x23\x12\xf1\x84\xc0\xa3\x98\xb2\x01\xd7\x83\x32\xd0\xe1\x1e\x38\xae\x13\x07\x38\x87\xc1\x83\x06\x8c\x61\x97\x52\xea\x51\xb5\xa2\xb0\x70\xb8\xa3\xb2\x49\xe8\x46\xd5\xcb\xc4\x00\xb9\xae\xcc\x43\xc7\x34\x53\x2f\x5e\x88\x17\x4c\xc3\xe3\xd3\x17\xa8\x2b\x03\x35\x97\xb0\x48\x0d\x76\xd9\x25\x61\x80\x37\xc3\x74\x84\xb2\x92\x34\x4f\xe8\x5d\xa4\x11\xa5\xbd\xcf\xa2\xe1\xce\x98\xa5\x32\x02\x1d\xf6\xdb\xa3\x3a\x1d\xe4\x04\x49\x77\x74\xfc\x91\x15\x88\x14\xfd\xbd\x5a\x7c\x4e\xe5\x7d\xbd\x14\x33\x71\x61\xc0\x2e\x2b\x94\x6a\xe5\xb7\xc0\xab\xd1\x82\x86\x22\xb5\x37\x6c\xde\xeb\x94\x48\x4c\xc0\xa2\xf2\x8a\xe9\x11\x9b\xf3\x91\x08\xf3\x3c\x4b\xc9\xd2\xfa\x51\xa8\xd2\xfb\x89\xad\x37\x68\x1d\x6d\xa3\xcb\xe1\xd4\x7b\x58\x4e\xa7\x7a\x35\xc4\xc4\xcf\x0f\x13\x09\x7f\x1a\x53\x40\xbe\xe8\x79\x9d\x6d\x1b\xf6\x43\x23\xf2\xcc\xca\x35\xff\x35\x7e\xf1\x55\x47\xf4\x6d\x7c\x63\x90\x55\xb9\xe2\x5b\x22\x89\xe0\x6a\xb0\x48\xcd\xb8\x3e\x2a\x85\x7f\x40\xec\x5e\x2d\x76\xd7\x2c\xbe\x5c\xe0\xe1\x83\xc5\x26\x35\xa4\x90\xc8\xb0\x91\x61\x11\x25\x9a\x7e\xf9\x00\x48\x1e\x84\x0c\xd7\xf1\xc9\xdb\x14\xb1\x10\x0f\xc3\x73\xb5\x5f\x2d\x48\x11\xca\x63\xc9\x71\x89\x12\xb7\x23\x48\x1a\x8a\x9d\xf6\xdc\x0e\xc3\x66\xf7\x44\x45\x81\x39\x70\xa3\x40\x74\x7c\xf4\xba\x63\xa9\x42\x98\xda\xc8\xbe\x62\x15\x89\x6b\xf9\x0c\xcc\x10\x45\xee\x7b\x27\xc1\xef\xb9\x00\x70\x2e\x6a\xdc\x43\x13\x9b\x57\xac\x9f\x1d\xc7\x71\x60\x63\xbc\x34\xd0\xb4\x9a\x19\x3a\x29\x54\xe5\xc1\x06\xd5\xf0\xed\x66\x5f\xb3\x4d\x5e\x09\xde\xb7\xa6\xd5\x31\x1d\x57\x80\xe9\x05\x31\xb5\x90\xe3\x02\x74\x75\xf8\x3c\x14\x6d\x49\x1d\x40\x9b\x52\xa5\x4c\x6c\xc6\x8e\x73\xe7\x1f\x1f\x99\xa5\xd5\xca\xf6\x36\x15\x63\xc4\x99\xe4\x5d\xbf\x61\x5d\x31\x63\xcf\xc3\x9c\x98\xe7\x84\x9e\xba\xf2\x12\x73\x3d\x41\x69\x5c\x61\x69\xdf\x38\x0e\xd4\x49\x2b\x45\x86\xc4\x7d\x4f\x4d\x67\xf1\x47\xae\xc1\xd9\x07\xdb\xef\x81\x41\xe4\xa8\x70\x66\x30\xb6\x72\x82\x23\x23\x2f\x00\xe3\x08\xa5\x5b\x0b\xca\xc9\xe2\x37\x51\xee\x17\x1a\xb9\x8b\x16\x2c\x49\x64\x21\xb1\xe6\xf1\x60\xf5\xb8\x86\xdd\x95\x24\x95\xaa\xb3\xb9\xef\x76\x84\x80\x5e\xa9\x83\x52\x86\x35\x37\xf3\x79\x43\xf3\x5e\x59\xac\x46\x68\x95\x4e\xd1\xe8\xcc\xa6\x2a\x8b\xba\xd9\x5e\x5e\x40\xd4\x0e\x34\x04\x2b\xbd\xa8\x28\x2f\x52\xe0\xbd\x3f\x40\x40\xc8\x9f\xe2\xb0\x68\x2c\x4f\x63\xb7\xf7\xea\xc8\xc4\x15\x28\x92\xfd\x9a\x17\xe7\x8a\xdc\x96\x50\xbe\x16\xb8\x5d\x7f\x39\x8b\x44\xfb\xb9\x8c\xbd\x1f\x36\x2a\x54\x54\x87\x94\xe9\xbb\x73\xbb\x29\x17\x16\x57\x3e\x4e\xe0\x48\xf2\xcd\xd4\x80\xd4\x63\x8e\x30\x4b\x83\xc4\x53\xd9\x43\xe0\x95\xac\xbf\x54\xc8\xd8\x92\x55\x42\x45\xf8\xed\x4d\x52\xba\xdc\xad\xdf\x23\xa2\xb6\xe1\xcf\x3a\x61\xee\xb6\xd6\x8b\x1b\x63\xd5\x29\xd3\xb6\xe2\xc5\xaa\x37\xb2\x20\xbd\xb4\x75\x5d\x20\x7b\xd5\x1e\xe0\xca\xb8\x3f\x65\xc0\x84\x95\xd0\xe1\xf6\x8c\x9e\xcf\xd7\xbd\x08\xd1\x65\x6f\x85\x9a\x28\xbb\x4f\x6a\xde\x82\x06\xfd\xb5\x49\x67\xc4\x1f\xc2\x16\xf4\x05\xc1\x9c\x8e\x45\xa8\xe6\x0d\x73\x03\x37\x9d\x55\xdd\xf4\x8c\xe3\x4b\x0e\x2c\x51\x02\xf4\xbe\xbb\x14\x3d\xe6\x6b\xf1\x48\x75\xa0\xeb\x50\xae\xe3\xf7\x7d\x5c\xee\x0e\x70\xd6\xab\xdd\xe3\x28\x61\x29\xa5\xd0\xf3\x9e\x39\x63\x20\x13\x3b\x19\x25\x29\x61\xce\xb3\x85\xe0\xcf\xfc\x23\x15\xcd\xf0\x66\x60\xd2\xde\x84\xf0\xac\x17\xa9\x70\xda\x9d\xca\xa0\x68\xbc\x74\x04\x2f\x58\xc6\x53\x1c\xb4\xc0\x19\xaa\xbe\x42\x29\x15\xcd\x27\xe5\x78\xf3\x09\xbe\x61\xb7\xfa\x63\x8a\x84\x5e\x8c\x00\x9f\x68\xf7\x54\x68\xd3\xd5\x36\xcf\xc7\x3f\xb1\x1d\x77\xcc\xbc\xff\x39\x25\xa2\xb6\x6d\x78\xdf\x45\x55\x29\xfe\xfd\xd7\x94\x95\x0f\xd5\x66\x9a\xa2\xdb\xc6\x71\x29\x84\x91\x79\xc2\xf9\x6e\xa2\x10\x89\x02\xed\x45\xe9\xed\xbd\x59\xf3\xe4\xf2\x1e\x9f\x7f\xbb\x90\xcf\xaf\x16\x9b\x9e\x97\x45\x6f\x5b\xf9\xb0\x17\xdd\x99\xdf\x5d\xdb\x40\x89\x77\x8b\xa8\x59\xa2\xe9\x60\x12\x53\xc3\x44\x77\xe3\x62\x96\xe2\x12\xa9\xbd\x26\x23\xd6\x12\xe1\x1f\x27\x1b\x3c\x72\xbb\xb9\x04\xbd\x34\x0c\xbb\xab\xb4\x8a\x77\xcb\x68\x2c\x48\x45\x7c\xa7\x00\xf5\x2f\x4c\x80\xba\x28\xda\xf2\x65\x17\xb3\x4c\xc7\xa7\xfb\xfc\x6a\x81\x42\x8e\xee\x2d\xab\xbd\x5a\xee\x60\x0f\x60\x45\xbe\x5c\xf1\xe3\x14\x2a\x33\x09\xcb\x88\x22\x28\x86\xc8\x13\xb2\x39\x12\x1b\x4a\x26\x02\xd9\xeb\x91\x1c\x93\x19\x3f\x24\xc9\x17\xd6\xb5\x46\xf8\x51\xe7\xbd\xa3\x9c\xf8\x16\x48\xff\x21\x43\x5b\xd0\xf6\xca\x4f\x31\x78\x24\x0f\xb2\xac\x29\xec\xd5\x05\x1f\x62\x90\x89\xb8\xc6\xbf\x25\x64\x5d\x4e\x79\xa7\x54\x27\x3e\xbe\x9b\x85\x70\x55\x63\x2d\xd9\x99\xe2\x8a\x00\x77\xd3\xcc\x1e\x22\x88\xd7\xbc\x6d\xb5\x64\x39\x26\x0d\x3b\x94\x00\x6f\xd6\x17\x8a\x6c\xf7\x47\x4c\x5d\xf9\x07\xc5\x2f\x3a\xd1\x3d\x77\x81\xde\x8c\xbf\xfc\xd1\x43\x0b\x9b\x5e\x4a\x81\x98\x24\xf1\xdb\xf1\x52\x0e\x40\x0c\xd8\xfb\x3c\xb4\x83\x51\x69\xca\x96\x6e\xfb\x69\x89\x24\xd4\x3b\x0d\x90\x14\x74\x30\xaf\x52\x5a\x54\x45\x26\x42\x19\xd3\x10\xbe\x22\x4f\x1c\xcf\xa4\xb4\x28\x9e\x78\x63\x0a\xd9\x47\x57\x26\x4a\xf0\xe1\xbf\x5a\x8a\x1a\x5c\xef\x19\xcd\x87\x25\x52\x42\x5c\x21\x68\x69\x9d\xc5\x76\x2d\x1b\x83\xc6\xc7\x55\x8c\xca\x3a\xb0\x45\xce\xcb\xdd\xa2\x25\x53\x0a\x49\x99\xda\x88\x15\x88\xcc\x64\x5a\xf2\xa1\x9f\x2e\x0f\xe6\x48\x34\x32\x14\x2d\x45\x97\xe4\x4f\x71\xd7\xc6\x7a\xaf\xe9\xbf\x7b\x8e\x15\x80\x3f\xd4\x97\x2b\xd6\x3c\x97\xe2\xa8\x24\x3b\x85\xe9\xaf\x04\x2c\x3d\x17\x2d\x28\x0f\xa9\xc0\x04\x78\x5a\x02\x1e\x56\xf8\x7d\xec\xfa\xe1\x13\x73\x7d\x5e\x8b\xc9\xc7\xf5\x57\x90\x56\x0a\xba\x57\x6c\x22\xdb\xf4\x8e\x3a\x36\x1a\x38\x75\x46\x92\x9c\x42\x23\xea\x2d\x18\x7b\x22\xd4\xfd\x72\x7e\x52\x51\xac\x8e\xa3\x80\x72\x68\x62\x32\xbd\xa7\x2d\x4b\xbd\x35\x75\x98\x3c\xde\xc1\x36\x26\xaf\xcc\x87\x92\x5a\x2f\x03\xfb\x7b\xbd\xe5\x58\x4b\xdb\x0d\x37\xe6\x13\xc8\xb2\x74\x22\x00\x96\x95\xa0\x8d\x46\x54\x14\xa6\xb1\x9c\x82\x97\x89\x34\x50\x68\x31\x3d\xcd\xf6\xbb\x8f\x7a\x7a\x70\xfc\x07\x42\xa2\xf3\x2c\xde\x5a\x0b\x68\x26\xe7\x00\x08\x32\x60\x32\x20\xd3\x01\x41\x9e\x84\x7e\x64\xd6\x30\x2a\x63\xc5\x3e\x76\xb9\x10\x59\x37\x18\x4d\xd3\xea\x84\x56\xb9\x37\xc2\x2b\x6e\x9f\x0a\x4c\xc4\xde\xed\x2d\xdf\x0b\x25\x52\xf2\x0d\x37\xe6\xdf\x68\x2a\xbf\x0b\x22\x30\x7c\x56\x3f\x4c\x48\xe7\x4c\x90\xee\x60\x14\x8d\x66\x9d\x21\xf2\x19\x4b\x0e\x0e\xbb\xe2\xe2\x7e\xed\xc2\x04\x0a\xef\x73\x2b\x53\x25\x71\x0a\x9b\x19\x7f\xfe\x56\x98\x6e\x64\x56\x88\xda\xd4\xba\x9f\x78\x16\x10\x0f\xe4\xb4\xe6\x4b\x6d\xa6\xba\x0b\x14\x1a\x4c\xc6\x23\x62\xa0\xd6\x76\xb4\x17\xc4\xcc\x17\x8e\x7f\x29\x40\xbf\x40\x6d\xa0\x0d\x01\xf9\x5b\xfb\x76\xc8\x18\xed\xe1\x8b\x3d\xc3\x23\xd3\x02\xc7\x2e\xe2\x96\xfd\x3b\x0d\x02\xd5\xbd\xfb\xa0\x75\xf0\xce\xe5\x30\x16\xed\x55\x6c\x3d\x39\xe8\xbd\x20\x27\xaf\xeb\x8c\x97\x8e\xe7\x5a\x15\x6b\x6c\x54\xf4\xd2\xa7\xa0\xf2\x4a\x8e\xdb\xda\x70\x51\x2d\x5c\x35\x5c\xc2\x50\x39\x39\x6f\x39\xfe\xf5\x68\xc1\x1a\x9c\x23\xe8\x34\xc2\xa3\x44\x11\x5c\x96\x1e\x1d\x1a\xf8\x57\x72\xeb\xf6\xcd\x83\xe4\x45\xf0\x4c\x30\x6a\x4d\x49\xcf\xf7\xf5\x4d\xd7\x0f\x82\x55\x9c\xe9\xa8\x59\x12\x53\x35\xdc\x1d\x93\xfc\xad\x6b\x59\x94\x5e\xff\x53\x6b\xa8\x67\x39\xd8\xa1\x8f\xb2\x05\x25\xa0\x23\x5b\xf4\x48\xb7\xdb\xd7\x5d\xdb\x7e\xdd\xd5\xa8\xc3\xe5\xb2\x8e\x76\xa4\x68\x38\xc2\x5b\xb2\x02\x8c\x1f\xb3\xe9\x4a\xd3\xa8\x43\xe9\xe0\xc9\xa2\xd4\xca\x17\x72\xb6\x11\xa5\x90\x68\xe2\xd5\x24\x63\x3c\x04\x05\xca\xbf\xbc\xe1\xb1\x04\xd2\x83\xee\x11\x8b\x12\x59\x0f\x85\x04\xbc\x5f\xea\xcc\xfc\xc4\xfc\xaf\x02\x5b\x4c\xe2\x27\xa9\xdc\x3b\xf7\x11\x84\xaf\x17\x24\x18\x68\x2a\x8f\x76\x03\x5d\xb1\x63\xa6\xf6\xdf\x64\xc8\x45\x50\x8b\x70\x6b\xba\x40\x85\xe9\xcf\xb9\xc7\x03\x4b\x52\x24\x01\xd4\x78\x49\x83\x8e\x1b\x8d\xd7\x25\x62\x9e\x1e\x12\x62\x2a\x74\xbc\x76\x15\x71\x21\x66\x69\xcb\x00\x93\x20\x71\x77\xab\xd3\x1b\x9f\x59\xe5\x66\xa4\xfc\x8d\x67\x8f\xba\x18\x8c\x60\x29\x94\xa3\x82\x60\x32\xb5\xc9\xa2\xc0\x4a\xf6\xfa\x01\x5a\xc9\x66\x5d\x1e\x5a\x7d\x34\xe3\x5a\x05\x98\xb3\xb9\x6e\x84\xa7\x0a\xea\xcc\x3d\x59\xda\xd8\x9e\xf3\x7e\x47\x82\xc3\x06\xc3\xbf\x25\x7d\x7e\x3b\x0e\xf7\xc4\x29\x79\x7b\x8b\x99\xf2\x32\x8f\x7d\x85\x56\xb3\xf0\x46\xa4\x9b\x7b\xa1\x2a\x4a\x82\xbd\x31\x9d\xe8\xf0\x9e\x65\xa0\x56\x4f\x76\x08\x6e\x23\xdc\xb8\xde\x83\xca\xc2\x9d\x16\xfa\x9b\xb1\x6a\x6f\x64\xc5\x7b\x33\xa9\x05\xd1\x42\xf2\x28\x08\xef\xfd\x4d\x20\x7c\xea\x24\xda\x81\x08\xe9\xc5\x4b\x95\x41\xe6\x3a\x15\x48\x49\xb3\x8e\xa7\x28\x38\xba\xa0\xc9\x4d\xc8\x00\xfa\x85\xdd\xe4\x99\xdc\x1c\x76\xac\xca\x42\xd6\xf1\x84\x2b\x71\x71\xca\x7b\x4d\x4c\x53\x21\xbd\x57\x53\xd7\x04\xfb\x71\xd6\xbd\x5e\xd0\x42\x18\x25\x3d\xc1\x4a\x21\xe7\xfe\xa4\x05\xb5\xe2\x6d\xd8\xc8\x37\xbe\xfd\xd0\x6b\xb3\xe3\x4f\xec\x3c\x52\x84\xe5\x3e\xa9\xf1\x88\x71\xaa\x4e\x50\x61\xc3\x0f\x6e\xea\x22\x18\x32\x88\xf1\xa4\x7c\x12\x6b\xae\x5c\xd0\x1c\x79\xeb\x3d\xc8\x36\xac\xf1\xc1\x8d\x17\xb4\x1a\x6f\xc3\x1c\xb9\xee\x05\xf5\x60\x54\x45\x9f\x8d\xd3\x1f\xf4\xe4\x19\x25\x4a\x01\x72\xd1\x83\x79\xc6\x03\x6d\x60\x61\x97\xb9\x6c\xd4\x18\x49\x77\x39\x92\xb5\x3e\x89\x62\xcc\x73\xd3\xf4\xe6\x7a\x10\x97\xd8\xd6\x07\xb8\x37\xc1\xf1\xde\xfd\xe0\xa7\xb5\x48\xfc\x4d\x71\xae\x56\x5e\x93\xb1\x76\x4d\x8c\xf1\xd6\x49\x18\x87\xfe\x7d\xa3\xd3\x09\x59\xed\xf0\xef\x97\xf7\xb4\x66\xa4\xa6\xaf\xbb\x42\x96\xdc\xd6\x01\xc8\xe2\x61\x87\x73\x8d\xfc\x2e\xca\x94\x74\x43\x05\xe2\x2a\xa7\x9d\x12\x43\xbe\x76\x00\x3a\x20\x4b\x0f\xb2\xac\x62\x1c\xd7\xe6\x97\xbc\xae\x4b\x99\xf5\xa2\x7e\x59\x4b\x7d\x42\xfd\x92\x47\x83\xd1\x60\x80\x85\x90\x7e\xc9\xef\xdc\xca\xbb\xaf\xd6\x76\x63\x7e\xc9\xa4\xe7\x96\x5b\x63\x34\xa5\xbc\x97\x10\x79\x00\x43\xad\x16\x08\x55\x40\x7a\x3d\x74\xd5\xd7\xa1\x71\x1c\x7c\x58\x85\x40\x58\xa4\xba\xa8\x06\x0d\x97\xd2\x26\x0c\x72\x26\x0b\xa8\x5a\xa4\x5f\xf5\x9e\x31\x7b\x29\x5d\xdb\x6a\xcd\xe6\x5e\x5b\x0c\xbe\x5f\xd0\xc5\x99\x9e\x87\xc2\xa3\x13\x68\x04\x84\xac\xf4\xb0\x3f\xf0\x58\x60\xe0\x90\x65\x31\x96\xa6\x42\xcd\x14\x0c\x43\x23\x14\xad\x54\x3a\xea\x03\x47\x8b\x5b\x56\x70\xd4\x33\xcf\xa8\x98\x45\x2d\x73\x71\xa2\x35\xfd\x2a\x28\x74\x80\xe0\x4c\xda\x42\xfe\x5b\x60\xbb\xc7\x46\x02\x90\x57\x4f\x8e\x2c\xa5\x81\x1e\x8b\x12\x13\x8c\x8d\xe0\x49\x11\xbc\x0a\xf3\x64\x05\x03\x97\x32\x53\x45\x47\xb5\xb0\xe3\x4d\x9a\x6b\x7c\x4f\x36\x7f\x2e\x59\xbf\xa6\x20\x11\xce\x02\x44\xc4\x95\xe9\xca\xf5\xf8\x4e\xd1\xb0\xba\x15\x0e\x7b\xa9\x58\xe1\x0e\x4c\xaa\x6a\x79\xb0\xc2\x38\xe6\x8c\x0f\x0f\x3d\x8f\x26\x82\x1b\xe7\xe5\x36\x3b\xd8\x5d\xef\x11\xaa\x77\x83\x8d\x76\x51\x61\x2d\xcb\x4a\x18\xab\xb4\xc1\x01\x41\x45\x5a\x98\xf8\x76\x5c\x60\x92\x46\x20\x1d\xfb\x55\x20\x85\x4d\x48\x3a\x90\xed\x53\x77\x33\xcd\xa6\xf3\xf4\x3f\xc6\xe5\xe5\x30\x25\x50\x85\x81\x02\x64\x0b\x01\x6a\x45\x44\x93\x77\x5d\x4d\xdd\x7b\x2d\x8f\xd8\xd7\xb5\x6e\xb5\x25\x09\x5f\x2f\x5c\x9f\x86\xa2\x2e\xaa\x0e\x4d\xfc\x45\x52\xe2\xb9\x6a\x6d\x7b\xe9\x10\xbc\x9a\xe2\x9a\x51\xd7\xb4\xfc\x3d\xe3\x91\xaf\x6e\x89\x8e\xac\x41\xb3\x00\xc8\xaf\x9e\xbb\x50\x89\xaa\x0f\x9d\xcb\x14\xe3\x1a\x00\xa8\x02\xc2\x75\x34\xe6\xca\xe0\x48\x6f\x06\xd8\x4e\xf0\x9d\xf7\xdc\x40\xed\xd6\x1c\xd1\x80\xa9\x74\xf6\xea\xad\x12\xa4\xe3\x42\x21\xaa\x49\x51\xd8\xb1\xe3\xed\x07\x61\xc6\x72\x4a\x7b\x37\x53\x5d\xb2\x0b\x27\x13\x47\x8b\x24\x0d\x05\xf5\x8f\x08\xfa\x45\x1c\x7c\x13\x6c\xbc\x4f\xe5\xb9\x2f\x84\xa6\x50\xa0\xa3\x9a\x66\x09\xc1\xa0\xa1\x62\x53\x65\x39\x29\x8c\xc4\x87\x0a\x91\xb1\xd6\x60\xe0\x43\x5f\x0f\xeb\x43\xc3\x0e\xb6\x31\x55\x9e\xce\x05\x43\x47\xf8\xec\xf7\x75\xf8\x60\x55\xbb\xc3\xc7\x76\x45\x21\xa2\xa0\x6f\x59\x79\xef\x48\xf2\x93\x42\xa6\x4e\x94\x60\xe6\x8a\x73\xa4\x88\x91\x6b\x90\x08\x94\x45\xb0\x07\xbf\xfb\x00\xcb\x09\x8e\x6e\x29\x4e\x78\x04\xe8\xdd\xc7\x03\x74\x7c\xf7\x07\x17\xaa\xc7\x06\xaa\x18\x92\x54\x17\x05\x55\x55\xe3\x45\xf5\x5a\xf9\xa2\xf7\x88\x10\xc4\x27\xb7\x7c\x3e\x6d\xf9\x13\xe0\x90\x72\x4f\x94\x3b\x36\xf0\x6e\x61\x5b\x9a\xeb\xb5\x72\xec\x97\xcf\x50\xec\xe4\xd2\xc5\xb3\x3f\x55\x70\xab\x07\x0f\x5f\xf6\xaa\x20\xcc\xda\xf8\x90\x6a\xbe\xfa\x86\xeb\x09\xcc\xf9\x90\x94\xc0\x5c\x8c\x9e\x57\x83\x5b\x26\xc9\x89\x01\xee\xdd\x40\x17\x25\x35\xde\x76\x6e\xa0\x8d\x1a\x47\x3d\x53\x89\x51\x4d\x25\xa5\xff\x1c\x38\x2b\x11\x2c\x89\x03\x23\x20\x30\x41\x99\x03\x16\x89\xbb\x88\x07\xe1\xdb\x56\xd6\xae\x2b\x13\x02\x40\xb4\x40\x33\xf9\x34\xa2\xcd\xd2\xba\x49\xbf\x78\x0d\x48\x80\xf3\x55\x09\xc1\xfa\x1d\xf6\x7a\xa1\xb6\x21\x55\xb1\xe8\xe3\xe9\x1d\x6c\x4b\xa1\xee\x5e\x27\x6a\x14\x6a\x56\xea\x00\x61\x15\xb8\xad\x06\x89\xb1\x56\xdc\x79\x30\xb2\x9c\xe6\xc5\x9d\x6b\x90\xf4\x84\xbe\xb9\x59\xd6\x7e\xe9\x70\xba\x02\xd8\x1f\xad\x66\x2e\xae\xe3\x60\x47\x62\xce\x64\xa6\x6a\x82\x50\x64\x66\x65\x74\xa4\x6d\xc9\xcc\xb7\xbb\x50\x99\xbf\x1b\xdd\xd8\xf9\x2e\x7f\xcc\xb5\xc1\x52\x2a\xc8\xb8\xef\xba\xab\xff\x36\x98\x25\xde\x6e\x42\xb8\x7f\x35\xe5\x24\x1c\x88\x1a\x72\x62\x3a\xd0\x24\x55\xca\x2d\xe9\xe2\xbf\xf6\x22\xe9\x86\x6c\xa5\x99\x1f\x1f\x76\xac\xa5\xc5\x4f\xc2\x59\xe3\xd8\x02\x34\xb1\xbb\x96\xd1\x32\x84\xda\x38\x35\x7c\x87\x11\xf0\xc3\x80\x5a\x57\xa8\xe6\x42\xc7\x8b\x97\x09\xf1\x28\x3a\x94\x26\x21\x14\xaa\x56\x8f\xd2\xad\xea\x41\x3b\x93\x3d\x94\x7a\x8d\x6a\x47\x7f\x23\xfa\x7f\x5b\xe5\x4c\xbe\x87\x50\x12\x2a\xf9\xa5\xc8\xbd\xea\x7b\xe4\x99\xd1\x02\x49\xc0\x54\xd6\x80\x4e\xdc\x9e\xd9\x5e\xc7\xa1\xd8\x14\x0f\x84\x59\x3c\x33\x55\xde\xd9\x6d\x52\x57\x9f\x23\xeb\x86\x22\xef\xd5\x42\xf7\x65\x30\xaa\x17\x24\x27\x6a\x9a\x22\xc4\x74\x5b\x94\x02\x88\x2a\xc8\x75\xd9\xab\xea\x04\x8e\x90\x22\x8e\x42\xd7\x0b\xef\xb3\x2d\xc6\x33\x50\x7a\x63\x30\x0d\x98\xa2\x1e\x12\x9e\xc4\x58\xd0\xb6\x0d\xaf\xc5\x56\xb7\x05\xbd\x35\xb7\x1e\x06\xe1\xf8\x83\x85\x50\x1d\x94\x1f\xd7\x17\x87\x41\x64\x86\x23\x83\x37\xa2\xd0\x07\xe1\x0a\xcc\x2a\x9a\x6f\x30\x8d\xf2\x64\x29\x27\x36\x72\xd8\x8d\x88\xd0\xf8\x95\x13\x3f\x0c\xec\x6b\x26\x25\xb2\x72\xde\xc7\x72\x2b\x1e\xb5\xf1\x86\x11\x77\x8b\xce\xc3\xa3\x1d\xca\xd0\xf8\xa6\x7a\x5a\x5f\xa4\x52\x7a\x38\x2f\x22\x07\x35\xed\x29\x8a\x85\x3d\x1b\x84\xf4\x7b\x09\x1d\x61\x81\xd1\xc1\x48\x9d\xbb\x7a\x82\x65\x5c\x8e\x92\x72\x6e\x04\xd0\xf7\x8d\xbb\x80\x29\x97\x8e\x6a\xe6\x55\x2a\xc0\xae\x64\xa8\x30\xd8\xf2\xc6\x05\x3d\x98\x68\x66\xd0\x55\xc2\x5d\xc2\x67\x08\x22\x05\xea\x57\xfd\xc4\x89\xab\xab\xf5\x04\xe1\xbc\x92\xbb\x93\x4c\x81\xbc\xfb\xe1\x98\x30\x83\x88\x1b\x2f\x7b\x6f\x10\x0e\x4f\xe2\x72\x45\xe4\xb9\x49\x14\xa2\x2d\x71\x79\x8f\x38\x72\xcc\xb2\x11\xe0\x7b\x41\x4c\xe0\x1c\xa6\xbb\xfb\x00\xab\x75\x75\x0d\x95\x4e\x5f\xd2\x04\xf4\x6b\xef\x62\x5c\xd9\x42\x3b\x8f\x90\x69\xe5\x98\xa8\x4a\x1e\xd5\xa2\xd7\x7d\x75\xd1\xfe\x84\xf5\x5f\x98\x76\x9d\xb7\x26\x8b\x97\x03\xb2\x35\x93\x15\xa8\x3c\x87\xac\x64\xbf\x19\x50\x7c\x43\x32\x49\x38\x1e\xe7\x48\xde\x81\xf3\x12\x49\xbd\xc0\x12\x1c\x27\x1e\x01\xed\xd7\xe5\x39\x4a\x02\xae\x37\x3b\x49\x39\x9e\xb9\xda\xd1\x49\x4a\xa2\x4b\xbe\x4a\x77\x9d\x9d\xa4\x2a\xf4\x4c\x97\xd2\x70\xf3\x32\xd8\x75\x67\x6f\x38\xad\x58\xab\x7b\xe6\x86\xab\xb9\x5e\xed\x78\x53\x89\xc7\xd5\xa8\xa9\xf8\xaf\x57\x61\xb5\xa0\x52\xef\xda\x56\x88\x62\x29\xd6\xb5\xb2\x12\xa1\x87\x81\x34\xa1\xc2\xc0\x95\x61\xbe\xf4\x89\x04\x5b\x4f\x50\x38\x9b\x09\x77\xbe\xeb\x5d\x52\xba\x79\xba\x44\x6a\xc0\xdc\x71\x36\x8a\x9b\x5f\x77\x62\x7e\x9b\x33\x7a\x33\x13\x90\x48\x1e\x75\xe9\xb0\x72\xb8\x7d\x23\x1c\xa0\xff\x9e\x93\xaf\x02\xa5\x8a\x03\x42\xb9\xd8\x00\x19\x4b\xfa\xeb\x62\x10\xdb\x34\xb0\x6c\x27\x4c\xae\x11\x15\xc4\xe3\x1f\x38\x39\x96\x3a\xbc\x0c\xac\x9d\x70\x31\xc0\x82\x41\x94\x2a\x3e\xad\x82\xf8\xaf\x02\xf3\x54\x0a\x50\x8b\x9f\x44\xbb\x40\x27\xa2\xe1\x6a\xa0\x80\x02\x4c\xdb\xc4\x08\x2b\x0c\x2e\x71\x42\x37\x41\x6f\x42\x16\x4f\x4c\x25\xe3\x72\xb7\x3a\x6f\x99\x0d\x85\x34\x54\x8f\xe1\xeb\x85\xc8\xad\x25\xa7\x0c\x8e\xc4\x71\xb6\x47\x26\x61\x4a\x1d\x42\xa3\x00\x6a\xea\xd8\xb0\xa4\x35\xce\xa3\x93\x2b\x2a\x00\x61\xd4\x2b\x6b\x53\x0d\x11\x77\x5c\xe7\x04\x4b\xf6\x5b\x35\xbb\x78\x71\x76\x16\x8b\xd6\x32\x12\x7e\xe3\xcc\xf7\x33\x33\xdb\xb1\x8f\x36\x49\xe9\x1e\xc2\x7a\x5c\x85\x09\x05\x90\x47\x46\xec\xdb\x8c\xf0\xdc\x77\x09\xf1\x32\x71\x91\x9e\x9d\xc5\x89\xe4\x63\xcd\xcd\x31\x47\xb3\x8b\x77\xe2\x8b\xd5\x4d\x93\xf9\x27\x90\x5d\xf5\xdf\xa8\x60\x7a\x2f\x7b\x1d\x6e\x83\xf6\xaa\xc6\x11\xa6\x5b\x4e\xe6\xa0\x7c\xfd\x6f\x3b\xd6\x44\xf2\x2f\x0f\x8f\xfb\xe5\x2d\x87\x23\x92\x98\xaf\xff\x9b\xa4\xf2\xff\xdc\x4b\xb9\x5c\xf4\x4b\x6e\xf1\x53\x45\xd6\x40\xea\x4e\x7c\x2f\x33\xea\x75\xe7\xaa\x3f\xa7\x8e\x15\x7e\x40\x62\x16\xa6\xa6\x3f\x73\xc5\xc6\x1e\x37\xb5\xb2\xfd\xdd\xf9\x53\xc3\x40\xeb\xc0\x8d\x8d\x9c\x18\xba\xfa\x06\xd9\xfb\xec\x56\xae\x16\x8f\xd9\x0a\x48\x1c\x26\x55\xf2\xca\x5d\x78\xec\xf6\x48\x61\x99\xdf\x5e\x70\xa4\x78\xfa\xf5\x23\xe1\x73\x7f\xb2\x15\x7c\x9c\xe3\x99\x44\x1d\xaa\x59\x4f\x21\x81\xb4\x4c\xca\xe6\x00\x37\xa9\x12\x19\x92\x94\x35\xcf\x18\xb8\x6e\xc5\x2e\x90\x6f\x26\x87\x5f\xe4\xf2\x5b\xc0\x1f\x1a\x99\x85\xc2\x65\xbf\xf5\x30\xb5\x5f\x9b\xc9\x5c\x3e\x3f\x4c\xed\x30\x93\xbe\xfc\xb1\x46\x3a\xf1\x30\xc5\x54\xa8\x9b\x3d\x57\x66\x83\x82\x15\xc8\x37\x41\xe1\x60\x80\xab\xe6\x73\x65\xa9\xd7\x3d\x13\x5b\x6b\x68\x57\x05\x3d\xb6\xe5\x8a\x9e\xf1\xd1\x72\x45\xe5\x93\xc7\xf4\x1e\xfb\xcf\x2b\x3e\xfc\x37\x39\x24\xc4\x80\x55\x43\x34\x53\x70\x78\xa0\xb6\x80\x88\x67\x55\xb1\x10\x39\x96\xf6\x45\x6f\x7b\x16\x22\xc7\x9d\xfb\x8a\xa7\x91\x05\x28\x5e\x64\xc5\x24\x11\x93\xce\xc2\x63\xc8\x17\x8e\xff\x86\x0e\x6e\x40\x10\x66\x62\xef\x9e\xbb\x8e\xf0\x13\x9f\x36\x62\xef\x4d\x6f\xaa\x48\xcf\x1e\xd9\x5e\x47\x36\x94\xa6\x6a\x7a\x27\x01\x4b\xe1\xce\x7d\xbd\xc2\x4d\x23\xfc\x7b\xde\xfd\xa7\x74\x10\x22\xed\x7c\xff\x49\xee\xde\x56\x9b\x88\xab\xa1\x1e\x71\xeb\xb9\x32\x48\xff\xd8\x69\x55\x1e\xb5\x9c\x53\x53\x1e\xa4\x16\xa1\x20\xb5\x9e\xb1\x4d\x11\x6a\xc4\xff\x22\xcd\x81\xbe\x03\x50\xe6\x7f\x75\xf0\x02\x84\x65\xf1\x08\xb2\x4d\x17\x7d\xa0\xde\x39\x3a\xb8\xc8\x0b\x4c\x74\x16\x72\xf0\x51\xf8\xa3\x75\x2e\x19\x6c\x7f\x18\x66\x7d\xae\xb6\x2e\x8a\xd5\x8d\xee\xbb\xdd\x68\x1e\xa9\xec\xf8\x55\xdf\xfe\x46\x54\x92\xf1\x88\x2f\x8d\xea\xd0\x41\x43\x9a\x3d\xdb\x9b\x6b\x17\x45\x59\x16\x3a\x2c\x4b\x3e\xae\xfd\x83\xf9\x81\x7a\x81\xc4\xc1\x10\x7a\x95\x29\xce\x8a\x85\xdc\x62\x57\xb4\x45\x5b\x45\xfa\xd4\x86\x5f\xea\xa3\x95\x5f\xbe\x9c\x82\xa0\x1b\xaf\xae\xe3\x74\xf7\x1b\x51\x56\x05\x61\x37\xcf\xb7\xfe\xa5\x48\x1d\x53\x27\xbf\x46\x17\xf3\x5e\x3f\xeb\xf9\x16\x79\x34\x4d\x05\xba\xe4\xcc\x41\xe4\x5d\xe3\xf0\xda\x36\x1c\xc5\x0a\xb2\xdf\xc4\xbf\xc7\x9d\x67\xfd\x6b\x50\xab\x5c\xc7\xb1\xca\x75\xbb\xbf\xcc\x1e\x71\x14\xbf\x05\x1b\x6f\x10\xfa\xd2\xc4\x3c\x10\x8a\xf3\xd3\x3e\x19\x69\x2e\x52\x59\x0a\x37\x9d\x30\x8d\xc0\x7c\xc2\x42\x61\x62\x76\xf1\x29\xd0\x20\xdc\x13\x48\x7f\xc8\x89\x71\x4c\x95\x83\xe0\x82\xbb\x4e\x3b\x17\xc1\xb4\x66\x17\x45\x43\x91\x06\xe5\x88\x26\x9d\xbd\x20\x48\x37\x21\xc8\xde\xf6\xb1\x4b\xa5\x0b\x4e\x3a\xf7\x54\xd8\x2a\x9f\xfc\xa1\x41\x59\x22\x97\x4a\xd3\xbc\x37\x66\xae\xa5\x71\xbf\x1c\x19\x72\x61\x93\x1d\xed\x3d\x26\x6e\x81\xcb\xaa\x18\xeb\x81\x3f\x7f\xf5\x4f\xa1\xc6\xa6\x05\x32\x05\x4a\x3a\xa6\x29\x29\xb9\x6e\x20\x8a\x35\x26\xb4\x31\x5a\x0c\x07\xf0\x8d\xac\xb0\x31\x9b\xbc\x27\x29\x24\xd5\x4f\x01\x1b\xe2\x26\xc5\xa7\xd1\x6d\x74\xae\xf1\x5f\xb3\xc3\x63\xc9\xf4\x20\xd4\xc5\xdf\xc9\x9b\x83\x5f\x35\x3b\xae\x4b\x4e\x42\x37\xc3\x25\xc4\xe6\x90\xd5\xdf\x52\xbd\x58\x44\xd6\x00\x39\xac\xed\x32\x11\xc1\x73\xc8\x67\x0d\x6a\x04\xc1\x76\x7e\x86\x22\x06\xf1\x17\x9b\x9f\xbb\x99\x8d\x80\x5e\xe4\x77\xf6\xcd\x68\x79\x01\x86\xc1\x14\xf2\xb7\xe2\x79\xfe\x92\xfd\x1d\xf3\xc5\xcf\xeb\x94\x8e\x8e\x3c\xeb\x81\x19\x9b\x3b\xbe\x61\x3d\xe4\xe5\x8e\x9f\xfe\x29\x6b\x68\xaf\x7a\x16\xe1\xd4\x5c\x57\x86\x55\x53\x98\x53\xd1\x3f\x1a\x4e\x40\xf2\xd4\x18\xc7\xda\x60\xee\x67\xfd\x68\x64\xca\x4e\xfe\xad\xd2\x59\x9e\x09\xde\x34\xaa\x29\xed\x37\xa0\xc4\x0b\x00\x40\x06\x87\xcc\xc8\x57\x09\x59\x77\xfb\x39\x93\xf8\xcb\x47\xbd\xad\xaa\xb6\x5c\x86\xfa\x56\x11\xff\x17\x3f\xe5\x59\xaf\x02\xf3\x13\xef\xbf\x53\xf2\x47\x23\x7a\x28\x21\x99\xea\x56\xa0\x14\xc9\x0b\x4d\x74\x1d\x78\x03\x9e\x16\x4f\x9b\xf7\x6e\xc6\xd6\x4b\x7f\x68\xf4\x3f\x94\x57\xb2\x29\x45\x71\xc7\x4f\x0b\x36\x47\x90\xf8\xe3\xfa\xa6\xe0\x11\xd3\x49\x99\xb2\x72\x60\xd5\x5b\x61\x45\x84\xab\xc0\x7e\x28\x10\x4c\x75\x2b\x6e\xcc\x04\xb8\x3e\x8e\xe4\x61\x86\x4d\xb9\x39\x88\xb0\x8a\x72\xc0\xbc\xa2\xb2\x1a\x68\xce\xcf\x24\x95\xf1\x54\x22\xa7\x0c\x57\xcf\xd5\x4e\xed\xde\xee\xb4\xe4\x33\x57\x96\xef\x30\xb8\x22\x95\x52\x76\x1f\x3a\xce\x40\x9c\x33\x55\x54\x54\x63\xcf\x2e\xe3\x2a\x70\xd4\xab\x3d\x87\x4a\x80\x08\x60\x72\xd1\x0a\xd0\x93\x55\x1e\x82\x5b\xbe\x5d\xd3\x53\xb1\x0d\x1d\x70\xb5\x74\x6d\xdd\x75\xd7\x5b\x75\xd3\x92\xbe\x69\x13\xdf\x5f\x33\xc7\xaf\x10\x47\xa5\x4c\x2b\x8f\xf3\x5a\xda\xc3\xb0\x42\x09\x99\x73\x27\xfb\xe1\x31\x30\x2a\xe8\xb0\xe4\xc0\x3c\xcf\xbc\x43\x92\x9f\xd7\x55\xa2\x80\xb1\xdd\xb0\x06\xb2\x5a\xa8\xd5\xe4\x73\x22\x8d\x99\xd6\x45\xee\x65\x6f\x5d\x35\x0f\x34\xd1\x17\x3f\x56\xbe\x6a\x7a\x10\x79\xa8\x44\xf8\x70\x17\x54\x5c\xee\x66\x11\xb7\xea\x06\x2f\xdc\x5b\x10\xd9\xa7\xb3\x01\x78\x0f\x26\xee\x40\xcd\xf8\xd0\x81\xea\x35\x08\xd5\x3a\xfd\x18\xa3\x33\xa6\xc2\x08\x9e\x28\xe2\xd9\xea\x20\x1e\xb9\x90\xd8\xd6\xb6\xe3\xa9\x35\xd6\x12\x76\x64\xec\x72\xf4\xb2\x83\x8b\x9d\x1b\x4c\x56\xb5\x67\x4f\xf6\x00\xb2\xe6\x23\xbb\x0a\x1e\x31\x45\x2d\x1f\x76\x70\xc0\x16\x09\xc4\xcd\x5a\x48\xe7\x12\x05\xf2\xb8\x2f\xc9\xd4\xa0\xc1\xa4\x6f\xab\xbc\xb7\x60\x41\xe4\x4f\x4b\x51\x26\x9a\xa4\xa0\x9d\xfe\x28\x30\xa5\x8a\x38\x22\x72\x95\x56\x53\x80\x11\x90\x56\x91\x08\x33\x03\x2b\xfe\x1f\xd2\x55\xf6\x28\x40\xba\x3a\xae\xbc\x73\x81\xb2\x45\xc5\xe0\x97\xc4\xf1\x42\x83\xd3\xfd\x73\xdf\x17\x0a\x81\xfb\x3b\x64\xac\x43\x3b\xe3\xb6\x01\x22\x96\x6e\x5c\xcd\x08\xe3\xa9\xb1\x1b\x48\xa1\xec\xf4\xa6\xb1\xce\x78\x38\xd5\xcf\x6f\x70\xbb\xcf\x41\xcd\x9b\xc9\xf2\x5a\x25\x5b\x18\x0c\x52\xc7\xfc\xaf\x94\x46\xe9\x3d\xa2\xcb\xd1\x2c\x45\xa4\x11\xd0\x31\xbe\xf2\x59\xd7\xb6\x9f\x51\x07\x96\xa3\x7a\x94\x33\x93\x2e\x4c\x7b\x4a\xcd\x78\x14\x35\xbe\x36\xf1\x75\xde\xa2\xe1\x20\xf0\x7e\xc5\x6b\xde\xaf\xca\xb8\xb0\x3f\xb3\xe1\xf7\x43\xdb\xbe\x27\x4f\xd4\xe5\x72\x1b\x86\x36\xa7\xec\xdf\x98\xf4\xef\x53\x65\x69\x74\x98\x9c\x89\x29\xba\xf7\xa3\xb8\x49\x51\x86\x6f\xad\xc2\xcf\xee\xa5\x29\x9e\x36\xff\x2e\xb4\xed\x3b\x22\xd8\xd7\x03\x0b\x0f\x8e\x11\xcd\x04\xe2\x93\x6a\x4c\x44\xce\x53\xee\x29\x0e\xb4\x6d\xc3\x5e\xa8\x02\xfb\x43\x2f\x50\x49\xcd\x7d\xb9\x15\xa4\x4b\x68\xba\xe4\xfd\x73\x50\xbb\x1e\x76\xdc\xbb\x43\x72\x84\x78\x40\xb1\x91\x18\x2b\xfe\x80\x5b\x4c\x33\x95\x08\x56\x41\x3f\x4a\xcd\xa0\xd5\x09\xdb\xa7\x69\x6c\xe4\x0d\x15\x1b\x9c\xbc\x91\x4e\x26\x3e\xbd\xdc\x4c\xed\x97\x20\xa3\x28\x6b\xd3\xbd\xcc\x76\xf7\xe6\x8f\x3f\x54\xf7\x56\x9c\x01\x72\x4d\xb9\x40\xcc\xcd\x27\xdb\x9b\xdd\xd1\xf1\x42\x1c\xad\x37\x36\xd0\xc6\x1b\xa6\x60\x44\x4b\x28\xd9\x4c\xad\xd4\x1d\x68\xd5\x49\xb2\x47\x39\x79\xec\x0c\xef\x75\x1a\x5b\x5a\xda\x7c\xe5\xaf\xba\x76\xa1\x02\xc9\x19\xc0\x64\xef\x4f\x18\x36\x79\x67\xb7\xa6\xea\x41\x86\x67\x8e\xe1\xd0\xf5\x09\xc4\xac\xf1\x87\xea\x9e\x8b\xf5\x54\xae\x28\x8b\x05\x47\xcb\xad\xf1\xa0\x76\xe4\x2e\x6e\x34\x21\x57\xc5\x7e\x0e\x9e\xcd\x63\x43\xe0\xf4\xd6\xad\x45\x75\x69\xca\x30\x05\x7b\xf0\x52\xfa\xa9\xba\x60\x51\x50\x54\x2e\x19\x72\xd8\xea\x54\xdb\x21\x9e\xba\x72\xcc\xbf\x74\x79\x1f\x6d\xdb\x95\x42\xf3\x23\x8c\x53\xf1\x19\x23\x12\xa9\x55\x5c\x99\x04\xc4\xaa\x2e\xa6\x3d\x81\x6f\xdc\xf7\x48\x37\xb1\x02\xcd\xb1\x09\x9d\xbe\xb0\x0a\x5e\x32\x9c\x54\x2d\x68\x50\x79\xac\xa2\x76\xdc\x91\xa9\x4b\xb2\x11\x67\x2e\xe3\x8c\xda\x7a\x65\xf3\x5a\x67\x5d\x60\xb4\x2a\xf6\xd5\x26\x15\xbb\x1a\x1a\x34\x20\x71\x9a\x88\x99\x10\x9f\xab\xcb\x51\xd5\x8f\x6f\x3a\x5e\x28\x49\x6c\x90\xf1\x92\x49\x88\xcd\x3b\x4e\xe1\x4b\x3d\xc5\x9d\x31\x43\x92\x04\x82\xff\x8a\x38\x8a\xea\xd8\x14\x1c\x12\x3f\x29\xe3\xf6\x7e\xef\x1a\x00\x30\x96\xca\xd2\x5e\xcd\xa4\x35\xca\x86\x93\xd2\x20\x46\xb9\x43\x42\xd5\xf3\xc4\xdd\x01\x65\x92\x6b\x18\xe4\x1a\x00\x8a\xbc\x37\xb3\x42\x72\x4b\xb3\x6d\xd2\xf3\x5a\x7b\xdf\x6d\x98\xea\xbf\x6b\xa3\x70\x0d\x0e\x24\xdb\x63\x2c\x5a\xa1\xbd\x34\x37\xbd\x6f\x89\x80\x38\x8d\xe3\x05\xe7\xc9\x8f\x5c\xd7\x93\xe0\x1a\x11\x59\x00\xef\x61\x45\x71\xc7\xfa\x85\x83\x24\x78\x36\xca\x46\xe4\x63\x13\x80\x09\x6e\x5a\xd5\x6b\x84\xdd\x5d\xbf\xd7\x88\x92\x0f\x1a\x1b\x92\xd4\xb8\xf5\x2a\x8a\xff\x65\x87\x95\x0b\xa7\x8c\x79\x2b\x4b\x52\x07\xdb\x9b\x0e\x48\xe7\x23\xf6\x4f\x18\x6f\x07\x3d\xde\x54\x72\x07\xf2\x3f\xe1\xab\x25\xe8\x87\x75\xae\x0a\x19\xbc\x11\x41\x29\xf4\x4c\x45\x39\x4e\x55\x3b\x59\x49\x4c\x4d\x56\x8b\x9a\x13\x28\x7b\xd2\x7d\x89\xc2\x14\xef\x4d\x89\x8a\xf9\xbc\x55\x00\x08\xa8\x4f\xe9\x50\xd6\xcd\x70\x33\x35\x4f\x69\x9a\x10\xf6\x9f\x4f\x76\x85\x9c\xff\x4c\x54\xf0\xd3\x96\xcd\xf1\x1d\xf9\x75\x9f\x70\xdd\x29\x6f\x93\xab\x36\xc7\x90\xd5\x47\xd3\xe9\x02\xcd\xce\x8e\xfc\x7a\x88\x00\x46\xce\xa0\xfb\x49\x1d\xbb\x9a\x34\x07\xed\x7c\xe8\xda\xf6\x03\xfd\x96\x0b\x51\xe9\xb2\xef\x8d\x28\x4d\x8f\xaa\x3c\xf9\x97\x2c\x88\x16\xdc\x2d\xa3\xdd\x3d\xd2\xe9\x9e\x56\x06\x31\xb9\xe0\x96\xbc\xb9\xa0\x7a\x74\xd9\x9d\x12\xb5\x22\xee\xa0\x70\xa3\xde\x4d\xba\x43\x74\xca\x73\xad\xb3\x12\x53\x53\xc4\xe4\xb0\x77\x3c\x4f\xcf\xea\x1b\xa4\x36\x27\xb8\x3a\x4a\x6e\x38\x36\x5a\xc0\xbc\xb0\x48\x8e\x7f\x62\x8d\x17\x8e\xab\x97\x6c\x0c\x05\xc9\x17\x5e\x82\x27\x3b\x20\x3d\x39\xfc\x91\x49\x1b\xd5\x3f\x02\xe7\x58\x18\x8b\x11\xe2\x81\x1f\x05\x64\x45\xa2\x9b\x89\x0b\x22\x91\x50\x50\xd4\xda\x59\xac\x06\x57\x23\x63\xb7\x2a\x9e\x81\x36\x03\xc0\xcb\x8e\x51\xde\xc1\x9c\xe9\xac\x12\xac\x47\x41\xf0\x50\x2e\x05\x7e\x1b\x8f\x73\x51\x18\xb3\xf7\x5c\xd1\x63\x16\xee\xa8\xb8\x04\x0e\xe1\x25\x9a\xaa\x31\x42\x15\x02\xf7\x2c\x5a\x45\x4d\x30\xb5\x3e\xf3\x99\xbd\xac\xeb\x49\x17\x56\xc9\x6b\x44\xb0\xca\x36\x4c\xd8\x43\xe7\xe1\x91\xd9\x35\x5e\x4b\x57\xfa\xe3\xac\x58\x3c\x3c\xf8\x25\xb1\xbc\xd1\xe2\x77\x6a\x47\x57\xa5\x1a\x96\x03\xa0\x46\x56\xc8\x10\x12\x41\x75\x68\x65\xfb\x5e\x3b\x43\x17\x12\xd9\x38\xa5\xb4\xd2\xea\x9d\x03\x4f\x64\x42\x26\xa0\x7a\x40\x0e\x6d\xa5\x10\x47\x5d\x58\xf9\x64\x27\x79\x67\xb2\x87\x61\x0f\x1a\xa8\x44\x52\x5d\x8d\x20\x42\x51\xc3\x08\x29\xb6\xe0\x3d\x19\x0b\xb1\x9d\xee\x76\xd5\xbb\x6a\x95\xc9\x04\x02\x30\xbc\x71\x89\x29\xc8\x65\xa8\x15\xaf\x17\xbc\x62\x10\x42\x45\xa6\xd6\x26\x81\xec\xcc\xcf\x5a\xba\x37\xf9\xb5\xde\x55\x29\x1a\xd9\x23\x62\x40\xf6\x87\xfa\x0c\xb2\x51\x90\x67\xaf\x41\x23\x27\x48\xd8\x5b\xaf\x97\x2e\x39\x10\x53\xe3\xe9\xa6\x88\x12\xbb\xa3\xfb\x05\xad\xc1\x04\xe7\x24\x13\x47\x3a\x47\xaf\x80\x27\xdd\x1a\x47\x16\xd0\x44\xe4\xa8\x90\x26\xdb\x47\xe3\x36\x28\x32\xe1\x01\xa4\x3c\xbf\xf1\x00\xb5\x41\x20\x12\x99\x85\x53\xe1\x27\xff\xf8\x4b\x3d\xa0\x80\x84\xa6\x38\x66\x12\x2e\xf1\xad\x55\xbc\x2e\x19\xba\xf9\xa5\x8a\xf0\xb3\xea\xeb\x4b\xf0\xee\x5a\x4d\x90\x92\xe0\xd4\x0b\x78\xea\x46\xea\x55\x3f\xa9\x8b\x78\xe4\x17\x1b\x3b\xad\x97\xa3\x72\x6e\x34\x04\xa1\x0d\xc5\x80\xde\x2d\x05\x22\xce\xcb\x9c\x15\x93\xee\xcd\x8e\xe5\x80\xd4\x66\x0f\x3e\x65\xad\xbf\x6a\x87\x51\x4f\x4a\xa4\xa8\x79\x3f\xe1\xd7\xcb\xb4\xc7\xdd\xa4\x51\xd5\xb2\xae\x86\x0d\x76\x39\xe2\x70\x1e\x27\xc4\x1b\x15\xfe\xb7\x32\xac\x24\xc0\x33\xf0\xf1\xbc\x8d\xd6\x4e\x17\x53\xc9\x1d\x57\x3d\xc3\x0a\xab\xf5\xac\xa7\x01\x02\xe0\xb6\xb4\xfa\xf1\xb5\x31\xaf\x06\xb7\x6c\x2a\x5e\xf1\x8a\x61\x9c\xe9\x1c\x06\xef\x61\xfa\x8e\x88\x03\x85\x68\xcd\x33\x18\x9a\x5c\xbf\x11\x49\xcc\x09\x0b\xad\x24\xef\xd7\x94\xde\xc6\x6d\x47\x4f\xc7\x08\xc8\x68\x9d\xa6\x99\xcc\xf4\x52\xba\xa0\xc3\xd5\xce\x30\x79\xae\x95\xb2\x6e\x04\x02\xe5\x83\x3b\xea\xb2\x29\x1f\xdb\x14\xb1\x57\xe9\x37\x2f\xd7\x4a\x3d\x7a\x1c\x54\xac\x99\x82\xe3\x51\xa7\x38\x1f\x81\x00\xcf\x3b\x81\x16\xcd\x54\xac\x27\x47\x0d\xfc\x32\x03\x96\x46\x95\x89\xa9\xaa\xe4\x6a\x65\x75\x90\xe1\x7d\x18\xde\x1c\x0c\x31\x02\x78\x95\xc5\x2a\x52\x51\x29\x02\xa5\xfd\xad\x0d\x72\x17\x5d\xca\x4b\xc9\x08\xb2\xf1\x12\x92\xcd\x36\x52\xe1\x9b\x05\x5f\x36\x95\x31\x7d\x2d\xbc\x25\x13\xb1\xd0\x0b\x67\xf5\xd3\xa3\x22\x8e\x2f\x8a\xec\xe4\xf0\xd6\x0b\x48\xc3\x71\x05\x99\x3a\x76\xe2\xe0\x39\xa1\xc2\x2b\x75\xfd\xca\x2f\x5d\x51\x78\x89\x28\xfd\xe7\x0e\xeb\x69\xd2\x18\x06\xd4\x68\x3e\x03\x3e\xc0\xf3\x76\x5a\x33\xa6\x93\x70\xe9\x11\xab\xaa\x64\x04\xbc\x6a\x47\xf9\xb3\xbe\x9d\x8a\xe4\x7e\x65\xfc\xd9\x85\xd3\x19\xe6\x44\x27\x57\xe8\xdb\x14\x72\xf6\xc8\xfa\xb2\x0f\x43\x9d\x50\x2a\x15\x7e\x5f\x25\x41\x24\xb3\xc8\x16\xd7\xaf\xba\xaa\x72\x34\x7c\x1b\x5d\xf8\x55\xce\xf5\x17\x81\x2c\xf3\x78\x82\xbd\x91\x5c\xe0\x0d\x4f\x0e\x61\xfc\xea\x98\xc2\x92\xf8\xef\xe1\x21\x04\xb8\xcd\xa7\xe8\x57\xbd\xf4\x0e\xb1\xe6\x8e\xdc\x86\xcd\xaa\xb3\xdf\x5f\x7c\xc2\xb3\x27\xeb\x82\x07\x78\x6f\x2d\xa1\x66\x9e\xad\x13\x85\x81\xea\x50\x7b\xf3\x91\x04\x4b\xe0\xd9\x7c\x9d\xcb\xba\xee\xfd\x00\xd6\x38\x82\xe7\x8d\xad\x52\x7c\x35\xea\xc3\x4c\xd7\xfe\xd9\x84\xbe\x32\x51\x33\xe5\x6f\x13\x8e\xaa\x9f\x45\x0c\xb1\x8c\x81\x6c\xfe\xff\x0b\x22\xf6\x66\xfc\xaf\x47\x00\x53\x44\x2b\xf1\xb3\xea\x92\x97\x4e\x08\x5f\xd5\x28\x16\x5d\x0c\x5c\x9f\xa4\x41\x64\xc9\x7f\x26\xbe\xf3\xdf\x19\xc5\x09\x07\x19\x8d\x4d\x25\xa2\x69\x6c\xd1\x7c\x12\x63\xe7\x22\x81\x7b\x6e\xa4\x65\xf3\x1f\x8a\x4b\x85\xbe\x41\x63\x9f\x95\xfc\x14\x6f\xec\xc2\xd3\xe4\xd8\xc5\x63\x3a\xfc\xfb\x63\x47\xb7\xc0\xa5\x42\x8e\x2b\x99\x78\xf4\x4e\xb0\x62\x3d\xb6\xae\x8c\x70\x25\x66\xe3\x44\x88\x17\xda\xa7\x5c\x87\xa6\x67\xea\xc2\xaf\x64\xa9\xd8\x12\xe0\xb7\x09\xf5\xa5\xfb\x1a\xaf\xa6\x6f\xcb\xd0\x8d\xa8\x8f\x2c\x9d\xda\xb4\xe4\xf4\x53\x15\x05\x84\xd7\x59\xae\x69\xfa\x3a\xa2\xef\x93\xad\x43\xc6\xbd\x4b\x53\x42\xc6\x5b\x27\x64\x7c\x6f\x29\x42\x90\x68\xbf\xf1\xbb\x02\xcd\x46\xd4\xf3\x87\xcb\x9d\x56\x82\x66\x2d\xde\x4e\x8b\xe5\x43\xae\x24\x77\x18\xba\x5f\xfe\x5d\x62\x65\x5f\xe8\x58\x59\xf0\x7e\xc5\x87\x6f\x8d\xcb\x2f\x3e\x68\xd8\xba\x9a\xe1\xd8\x24\x34\x40\x6c\xc5\x14\xf8\xce\x9b\xc1\x3a\xcb\xae\x24\x9d\xf8\x14\x86\xa6\xbd\xad\xf2\x7b\xbc\x80\x80\xf8\x5f\x48\x50\x9e\x65\xd1\x6a\xee\x87\xbe\x93\xfb\xa3\x77\xd2\xa2\xed\xe5\xbc\xf2\xe6\x8d\x65\xbd\x01\x37\x32\x00\xdc\xd3\x2f\xc8\xf7\x47\xf2\x7e\xc5\xf6\xb9\xef\x47\x27\x6a\xdc\xd1\x0b\xd9\xf7\x4b\x79\x11\xf5\xf5\xc0\x8e\x65\x12\x4f\xa1\x63\xd4\xfb\x5e\x50\x8c\xb4\xe2\x03\x24\x6b\x43\x21\xad\xf8\x54\x2a\x69\xa9\xe3\x83\xed\x06\x13\xbe\xd0\x2a\x42\x0e\xf0\x7a\x16\x3b\x18\xdb\x02\x5d\x56\x0a\xb8\xd9\x18\x0e\x55\x78\x61\xa4\x7d\x2f\x92\xe8\x90\xa7\x4a\x65\xae\x82\x0e\x3b\x7b\x1d\x51\x6b\x7c\x28\x52\xaa\xf3\xa0\x4d\x48\x3f\x45\x72\x12\x91\xf7\xbc\x29\x6d\x03\x2e\x62\x3f\xbc\x67\xe3\x17\xa3\xca\xb0\x38\x6f\xda\x76\xf9\xec\xf3\xd0\x2e\xa7\x41\x2e\x29\xea\xf8\x65\x84\xcc\x64\xbd\x7b\x1f\x17\x10\x7b\x08\xbf\x88\xc0\xf9\x7e\xfc\xf8\x73\xc4\xcd\x5f\xc6\x8f\xbf\x75\x51\x3a\xb9\x89\x34\xf4\xf7\x10\x7f\x58\xc7\x53\xff\x32\xf5\xf1\x3b\x88\xff\xfb\x23\x5e\x8d\x83\xe1\x5d\xfc\x5f\xdb\xca\x3c\x96\x72\x21\x22\xa5\x79\x36\x3e\x90\x4c\x00\xe7\x6d\x7b\x7a\xd0\x03\x5b\x7b\x3c\x1b\x67\x8a\xd1\x47\x3f\xfe\xd5\x8f\x4b\xf8\x69\xfc\xfc\x0a\xef\x2d\x81\x47\xb1\x71\xfd\x9b\x06\xbf\xdd\xf5\x40\xf9\xb8\xc8\xf8\x44\x34\x3c\x5d\x4d\x3b\xe9\x26\xd3\xd9\x97\xf1\xc1\xb6\xa5\xb1\xa0\x17\x3e\x1d\xff\xfc\x18\x77\x32\x5d\xb5\x97\x23\x08\x63\x3f\xbd\x7f\x9e\x8f\xcb\x7a\x3d\x7e\xbc\xeb\x26\xe8\x2f\xdb\xa7\x5f\x0c\xcd\xb8\x90\xe7\x07\x11\x71\x4f\xe3\xf8\xb1\xe3\x7b\x14\x2b\xbf\x1b\x21\x70\x71\x27\x50\xfe\xf7\x74\x02\x61\x5c\x64\x68\xdb\x9f\xcf\xc7\xb5\x44\xd8\x7f\xe8\x9e\x8c\x6f\xdf\xc7\x15\x7f\xd3\x4d\x6d\xfe\x27\x74\x7d\x96\xe7\x5b\x8c\x20\x1b\x26\xbe\xf6\x4e\x66\x30\x9c\xb5\xed\x9b\x78\x30\x71\x69\x07\x5d\x9c\x78\xbd\xed\xc4\x77\xf1\xc7\x7b\x9a\xeb\x7c\x9c\xab\x9d\xb4\x96\x71\xb8\x27\x5b\x8e\x16\x5c\xf0\xc5\x45\x47\xf0\x4d\x3b\xfc\x2a\x21\xd4\x61\xc0\xac\x4d\xac\x71\x12\xda\x37\x23\xbe\xbf\xed\x9e\x35\x11\xb8\xcb\xb6\xc9\xff\xda\xf6\xb9\xb8\x2f\x7f\x85\xcf\xbf\xea\xda\xf6\x2b\xa8\xc6\x7b\x5d\x1b\xbf\xfa\x2c\x7e\xf5\xc5\x08\x8c\x09\x39\x2f\xbb\x28\x3c\xbe\xeb\x3e\xff\x73\x48\x27\x14\x65\xb0\x9b\x89\xe0\xbc\x02\x02\xff\x00\x63\x77\x04\xdf\xab\xf1\xdb\xdf\xbb\x9e\xbe\x5e\xc5\x5d\x7e\x11\x5e\x95\x9b\x9f\xbd\x5d\xe3\x48\x2b\x71\xd3\xbf\x10\xe6\xf3\x48\x51\xf6\x3b\xa0\xae\xcc\xfc\xf9\x55\x63\x7c\x2c\x2a\xf3\x44\x3e\x8a\x40\xb1\xa1\x6d\x6f\x2b\xa3\x0c\xe3\x20\xf8\xe9\x4c\x27\x49\xc6\x23\x7b\x39\xa2\xcb\x9f\xdd\xfe\xc9\xb8\xf6\x83\x78\x1a\x7f\x24\x2e\xf5\xfe\x24\xdd\x90\x32\xe0\x85\x33\xc0\xe5\x74\x01\x9a\x09\x55\xce\x73\x72\xee\xf6\xd3\x44\x7c\xfa\x6a\x01\x4a\xfd\x6b\x7c\xed\xbb\xf1\xf3\xbf\x12\xa9\x3c\x1b\xcf\x29\x8c\xa3\xbe\x8f\x83\x85\x11\xc5\x81\x2a\x98\xfb\x5b\xcc\x7d\x1e\xad\x52\xf1\x26\xbc\x9b\xa4\x91\xee\x76\x48\x3b\xf2\x68\xcd\x67\x3d\xbf\x7b\x17\xd7\xf9\x57\xd8\x8b\x47\xf5\x10\x91\xf3\x5d\x7c\xea\xc5\xdb\xc5\xe7\xff\x4c\x24\x73\x12\xae\xef\x86\xd7\xe3\xa8\x6d\x0b\x1b\xf6\x3f\xc7\x47\xfa\x69\xad\xcb\x71\x11\xcf\x78\x82\x57\xe3\xe7\xaf\xba\x68\x67\x3f\x8c\x37\xee\x32\x4c\x7b\x39\x6b\x17\xe3\x0d\x58\xe6\xbd\x8d\xc4\xfe\xba\x17\xdc\xac\xd0\xee\x77\x02\xbd\x7e\x1e\x77\x33\x91\xb9\x0f\xdd\x4b\x49\x41\x22\xc2\x1c\xc7\xff\x7c\x36\x6d\x7a\x2f\x92\xeb\xdf\xfb\xe9\xe6\xad\xe3\x3a\x7f\xc9\x9c\xe4\xba\x1b\x59\xc9\x6f\xdd\x08\x99\x5f\xbb\xda\x9d\xfb\xb5\xcf\x06\x99\x7c\xe7\xae\x42\x1b\xbf\xfa\x35\x98\x3b\xf7\x9d\x7b\xe7\xee\xfe\x46\x77\xee\xfd\xff\xee\xdc\xff\xee\xdc\xdf\xe3\xce\xfd\xf1\xa2\x76\xe7\xde\xf7\x6c\x02\xbe\xef\xda\xf8\xd5\x07\xcb\xe7\xbe\x77\xef\xdc\x51\xff\xf7\xb9\x73\x5f\x77\xff\xbb\x73\xff\xbb\x73\xff\xd5\x3b\xd7\x84\x70\xfd\xd3\xb3\xcf\xbf\xe8\x8a\xb9\x86\xf4\xd1\x6c\x59\xba\x49\x2a\x2f\xe9\xc7\xd9\x82\x7b\xdc\xb1\x4f\xed\x85\x2e\xf1\x69\x43\x14\x2e\xa5\x12\x0d\xe3\x01\xba\x70\x41\x7b\xc7\xd0\xe4\xc7\x53\x49\xa1\xf7\xd2\x73\xd4\x84\xd0\x4f\x01\x04\xbf\xf5\x5c\xbb\x3d\xb4\xa6\xcd\x47\x83\x82\xe4\x93\x8d\x92\x2b\x2a\x8b\xa9\x90\x90\x80\x3f\xd1\xd2\x38\x41\x30\xc4\x94\x84\x0f\x1d\x0f\xf0\xb3\xb6\x88\x29\xfb\xc5\xe5\x82\xed\x1e\xda\x82\xa0\x17\x7a\xd5\xb1\x9d\x0b\xcf\x0c\xb1\xc2\x34\xec\x76\x8e\x01\x41\x9a\xf5\x02\x22\xc1\x31\x24\x79\x24\xe1\x2e\x42\x2b\x4a\x58\x94\xe8\xb9\x12\x18\x3c\x33\x96\x3d\xba\x6b\x69\xa1\x20\x93\x55\x41\x7c\x75\x30\x0a\x95\xee\x91\xac\xf6\xfd\xa4\x02\x1f\xc9\x82\xfd\x08\xd2\xb3\x87\x9e\x3b\xca\xa7\x34\x12\xed\x00\x1f\x8f\xfa\x5a\x5a\x1b\x61\xcb\xac\x5a\x6f\xb5\xe5\xcc\xe0\x49\x7c\x50\x9a\xc6\x53\xb1\x98\xf8\x19\xa1\xb1\xed\x08\x41\xf1\x06\xc5\x01\x66\x28\xbf\x16\xef\x69\xbb\x1d\xbd\x16\x2d\x84\x89\x81\x50\x94\x16\x9c\x77\xa8\xde\x18\x7f\x90\x20\x51\xe0\x5e\xc1\x1e\x94\xda\xfa\xa7\x4d\x2c\xa7\x42\x93\xbf\x75\xf9\x0e\xb7\xe2\xb3\x18\x5e\x9d\xc0\xad\x8c\xf3\x49\x03\x9d\xb5\xaa\x25\x0f\xfc\x2b\x32\x0b\x47\x94\xd9\x69\xa6\xa0\xb8\xa5\xea\xfb\x3f\x02\xb1\xb7\x50\xd7\x56\x2a\x35\xa2\x3a\x3b\xdb\x61\x2f\xe8\xd2\xc8\xa1\xd5\xed\xdc\xf6\x02\xdd\xbb\x66\x4a\xe6\x8d\xa3\x7e\xd9\xb5\xed\x97\x9d\x79\x27\xdd\xc5\xa1\x24\xbc\x29\xd0\xdc\x0d\xbc\x91\x77\x1d\xd9\xe9\xe4\x1e\xc4\xe7\x64\x5c\x97\xe7\x28\x3e\x27\x13\x62\xbe\x33\xd7\x61\xba\x34\x6f\xfb\x18\x2a\x97\xa0\x71\x77\x32\x9e\xd8\x1f\x41\xad\xb9\x20\x76\x2c\x2b\xff\x59\xfc\x7b\x1d\xff\xbe\xe6\x12\x15\x1f\x62\x90\xe2\x63\xae\x4b\x14\x8c\x24\xad\x4c\x01\x7c\x84\xb8\xea\x26\x1c\xf6\xe2\x4b\xdc\x07\x90\x48\x55\xdd\xe0\x21\x4d\x2c\xeb\xcd\x15\x93\xe3\xd4\xab\x6b\x42\xbd\x77\x8b\x0c\x12\x58\x9e\xb1\x02\x19\x59\x8e\xdd\x78\x7c\xab\x4c\x2c\xbb\x3a\xc6\x5f\xe4\xde\x10\x71\x16\x2f\x40\x6b\x02\x82\xae\xa6\x25\x5c\xf6\x82\x91\xe9\x62\xb2\xbf\xf6\x13\xd4\x03\x92\x85\x01\x76\xb1\xdd\x06\x69\x9c\x23\x0a\xbc\xee\x23\x6a\x48\xa0\xab\xb8\xcf\x3d\xe3\xc8\x7b\xde\xda\x96\x84\x80\xcc\x99\xcd\xe0\x97\xad\x1d\xb0\x7a\xcf\x2b\x41\xac\x50\xa0\x1e\x18\xc6\xc0\x0c\x43\x91\xba\x5f\xca\xc6\x4e\xfa\xc6\x4b\x4d\x04\xbb\x66\x0e\x4d\x11\x12\x88\x5c\xc9\x92\xd0\x81\x44\x03\x30\x75\x8e\x5d\xc5\x33\x4a\x54\xc7\x1a\x57\xf2\x19\x95\x3d\xf5\x1a\x3f\x34\xd1\xc1\x46\x3e\x0a\xac\x58\x22\xa0\x47\x2e\x75\xcd\x0b\xed\x30\x5a\x2d\x68\xea\xcf\xc9\xd5\x3b\xf8\xf1\xc3\x39\x23\x1a\x5b\x8f\xff\x85\xd7\x52\xb0\x56\x3a\x23\x78\x0d\xb2\xdc\xa8\x84\xc0\xb8\x6e\xdd\x85\x55\x60\xd3\x80\x8c\xbd\x38\xe1\x9c\x84\xb4\xd2\xc9\xcb\x8e\xe8\x98\x84\x56\x1c\x10\x1c\xc3\xb5\x10\x75\xb1\x16\x3d\x0c\x97\x28\x10\xde\x0b\xc6\x0a\x47\x26\x9a\x4e\x5c\x1d\xcd\x13\x31\x9f\x16\x5b\x47\x94\x7e\x99\x76\xa7\xa8\xb5\x10\x1e\x4c\xbd\x80\xec\x73\xf9\x00\x86\xde\x8b\xc7\xa9\x26\xc1\xd5\x84\x79\x57\xfd\x8e\x12\x94\xe3\x09\x6c\xb8\x12\xbe\x16\x6d\x1b\x6e\x33\x42\x7b\xa5\x36\x52\xef\xfa\x47\x33\x94\x5f\x89\xb6\x21\x0c\x19\x98\xee\x33\x19\xd0\x16\x5d\xbc\x0b\x94\x31\x89\xee\xb2\x76\xd3\x0c\xbf\x02\xe8\x10\x15\x2b\x7e\x96\x19\x6d\xba\x2f\xbd\x01\x35\xfc\x70\x80\x00\x05\xe7\x20\xa2\x78\xb2\xf0\x9f\xaa\x48\x8f\x21\x23\x04\x8d\x29\xa5\x89\x38\x8c\x24\xc0\xb4\x89\x11\xab\x17\xe2\x3e\x9e\xa2\x30\x29\x7c\x32\x04\x4d\xaa\xfd\x42\x87\x28\x59\x72\x0d\x76\x9a\x90\xde\x2f\xc4\x5c\xe4\x35\x2d\xf9\x24\x9f\x68\xae\x43\x39\x17\xb9\x7f\x5f\x94\x46\x26\x9f\x66\xae\xe3\x05\xc7\x65\x7a\x48\x6f\xc6\xad\x8c\x26\x39\xe6\x88\x7b\x4f\x18\xf5\xb6\x16\x9a\xe2\xcf\xd2\x0e\xa7\x88\xdc\x8d\x7c\x4a\x0a\xd7\x94\x9d\x12\x90\xe1\xe6\xb1\x53\x81\x73\xd7\x14\xa1\x79\xd5\x5b\xb4\x54\x69\xcd\xb7\x41\x44\x71\xc8\x75\x84\xd6\x8d\x49\x50\x4b\x80\xcd\x6d\xfc\xf9\x7d\xaf\x2e\x49\x5c\x9f\xe1\x2c\x76\xc4\xcb\x65\x05\x08\xa7\x4e\x08\x88\x59\x1c\x81\x42\xa7\xfa\xcb\x91\x4d\xc0\x14\x38\x46\x21\x31\x42\x03\xb5\x6b\x1a\x50\x9d\x5b\x0e\x38\x8e\xf0\x44\xaa\x6e\x3e\x05\xc0\xb5\x27\xdb\x4f\x70\x54\xbb\x90\xb9\x95\xa7\xdb\xc9\xc9\x83\xd1\x72\x2f\x17\x42\x49\x1d\x95\xb0\x5e\xae\x4d\xbe\x36\x8e\x1d\xa4\xc4\x9e\x56\x51\x68\xd3\x69\x7a\xb3\xa8\x0d\x53\x42\x6c\xeb\x0c\x38\x3e\xf2\x24\x8f\xa5\xb7\x25\x5b\x07\xe1\x30\xc5\x42\x56\xb2\xb0\x2a\x2c\x07\x65\xd6\xa4\xec\x49\xa5\x50\xcc\x2a\x94\xc2\x77\x42\x9c\x97\x60\x45\x5c\x79\xd1\xc4\x61\x8c\x16\x32\x94\xc4\x10\x68\x17\x71\x45\xad\xa9\x14\xbb\x3f\x9e\x61\x68\x45\x8c\x6e\x54\x34\xdb\x36\x9c\xb8\x48\x04\x64\x05\x24\x70\x43\xc8\x90\xa7\xa9\x73\x33\x35\xce\x35\xa4\xe4\x94\x2c\x84\x74\x25\xab\xe4\xdc\xb3\x1a\xce\xd2\xd6\x61\xc3\xde\x42\x84\x9b\xc0\xfb\xcb\x9e\x62\x1d\x75\x1e\xc0\x5e\x7a\x6f\x0b\x3d\x1f\xc2\x14\xaf\x26\x9a\x2e\xc6\x67\xa4\x7e\x87\x6d\x68\x51\x2c\x16\xfc\xf7\x6f\xb7\xca\x05\x78\x43\xf4\x66\xd2\x8f\x22\x10\xc1\x2c\x25\x39\x53\xe2\xdb\xbd\xcc\xf8\x80\xf4\x83\xa5\x4c\x1e\x7b\xf1\xba\x3a\xc2\xbd\x14\xda\x02\xea\xe4\x12\xce\x06\xad\x83\xcb\xff\x9f\x0a\x62\x89\x85\x52\x26\xa6\xda\xe9\x5a\xac\xf5\x37\x4d\xb8\x13\x8e\x91\x4a\x67\x78\xc3\x80\xf4\x8f\x48\x32\xc0\xb3\xa4\x50\x34\x1f\x19\xa6\x4e\xf6\xae\x17\xa6\xb2\x72\x05\x56\x31\x2e\x4f\xe2\xa5\x53\x4b\x94\x03\x1a\xf5\x73\x6f\x97\xde\xfe\xa0\xb2\x59\x9e\x74\xbc\x24\x94\x17\x0f\xaa\x83\xb8\x84\x59\xe0\x6a\xd1\x33\x37\x92\xa5\x79\x10\xc1\x79\x38\x45\x88\xa6\xfc\xc4\x55\x74\x9c\xbc\xe7\x9c\xfb\x06\x1d\xc9\x3e\x1b\xe4\xf3\x7b\x83\x7c\xde\x29\x28\x56\x10\x7e\x3d\x78\xea\xfc\x16\x7f\x22\x84\x98\xa1\x72\xc0\x39\xcc\x70\x8e\x82\xd0\x4c\xc5\x28\x22\xf0\x17\x79\xf5\x96\x59\x3d\x48\x79\xba\xd8\x7a\x1a\x51\x85\x0b\x67\x0d\x4a\xa0\x74\xa2\xb5\x24\x99\x8a\x6c\xfd\xc4\x63\x67\x79\xfb\x97\xcf\x6d\x84\x9f\xcc\x83\x04\xa6\x65\x33\xc6\x1b\xb1\xbd\x72\xa9\x7a\xbb\x2f\x35\xe4\x3a\xb0\xcd\x42\x0b\x80\x9a\x76\x1c\xfa\x56\x10\x27\xbf\x2c\x81\xc7\x59\x11\xa7\xf5\x6a\x69\xdc\x58\xa5\xa8\x44\x0e\x19\x38\x14\xfb\x79\x90\x50\xc6\xcf\xa4\x83\xb2\xda\x4e\x37\x13\xa6\x16\x92\xe9\xf5\x3a\x03\xd1\x77\x56\xb9\x48\x6b\xa1\x49\x3c\x42\x60\x81\x71\xd0\xbb\x43\x03\x93\xbd\xa1\xbd\xf4\xe9\x8d\x33\xad\x87\xfa\x80\x74\x52\xde\xf8\xdb\x4d\x92\xbd\x79\xf1\x4b\x8a\xa7\x8d\xe6\x66\xba\xe4\x6d\x1b\xda\xe8\x7b\x7d\x21\xa8\xc8\x32\xf7\x23\x79\x41\x8b\x10\xed\xcd\xa7\x0b\x22\x13\xd2\x6d\x22\xe6\x83\xce\x58\xb7\xe1\xbd\x07\xfa\x01\x65\xaf\xb9\xec\x0f\x3a\x43\x83\xa8\x26\x85\x43\x88\x92\xaa\x03\x40\x01\xd7\x04\x0f\x15\x2a\xd7\xf8\x51\x24\x3c\xfd\x9e\xa4\xe4\xc9\x08\x83\xef\x45\xca\x0a\x5d\x30\x4a\xda\xcb\x39\x41\xc9\x7e\x24\x92\x59\x32\x4b\x7b\x90\x2d\x44\xe3\x8b\xd2\x7e\xf1\x42\x9f\x45\xe1\x18\xbd\xd2\xa0\xa0\x49\x97\x47\xd3\x95\x39\x8d\x61\x06\x42\x30\x07\x90\xa4\x10\x11\x60\x86\x03\x00\x95\x24\xf1\xa6\x1c\xc5\xaa\x93\x4e\x1d\xd4\xf3\xfe\xf0\xa4\x6d\x3f\x3c\x19\x9f\x08\x0f\x67\x42\x60\x57\x31\xb1\x4b\xe1\xc9\x56\x3c\x4d\x51\x12\xb2\xd0\xe2\x69\x0c\x48\x43\xab\x5d\x64\x60\x7b\x63\x79\x23\x58\xa3\xd2\x35\xfb\xad\x0e\x22\xc7\xfb\xb1\x66\x54\xba\x96\x70\xb3\x5d\xe0\xf6\x4d\x1a\x36\xad\x4a\x16\xe0\xa3\x4b\x2e\xa4\x20\xa2\x4a\x4b\x1d\x48\xef\x8d\x7b\x61\xf3\x89\x49\xcf\x6c\xa6\x1a\x67\xff\xee\xa1\x75\x80\x42\xb2\x69\x7a\xf6\xda\x7c\x02\xe9\x12\xfe\xac\x5d\x75\x2c\xa9\x97\xa9\xdb\xe9\x78\x2c\xd8\xee\xcd\x3b\x45\xf2\xac\xbe\x73\x6b\xde\x29\x87\x5d\x7d\xe7\xae\x93\x17\x44\x99\x95\xa2\x34\xd7\x45\xe3\xe6\xef\xbd\xf3\xea\xd5\xa4\xe1\x9f\xc7\x08\x92\x64\x39\xf8\x2a\x7c\xfe\x4d\xd7\xb6\x5f\x78\xcf\x1f\x4e\xcf\xdf\x4c\x59\xd3\x13\x78\xfe\x9a\x3c\xc6\xdf\x78\x86\xfc\x29\x98\xe7\xf4\xf7\x29\xaa\x3c\x3e\x7e\x13\x45\xb4\xf7\x9c\x7a\x19\xd5\x21\xe9\xee\xdd\x60\x70\x2e\x8e\xa7\xfb\xc8\x5e\x4c\x42\x4c\xd9\xa1\x51\x42\x11\xf6\xa0\x4c\xd5\xca\xd2\xa2\x85\xe6\x78\x75\x27\x8c\xfb\xbd\x87\x73\x91\x34\x41\x92\x56\x62\x15\x08\x16\x77\x05\xbd\x75\xac\xd9\xf2\x3a\x93\xaa\x43\x4d\xfe\x07\xdf\x95\x71\x1f\x58\x06\xab\x8a\x22\xb3\x86\x71\x16\x59\x02\x22\x07\x1c\x2d\x55\x6c\x4a\xcb\x4e\x9f\x3b\xd5\x90\x1a\x51\x5c\xb5\x6c\xef\x8f\xc5\xe7\xe8\x70\x6c\x6f\xb2\x2a\xb5\x4b\x71\x12\xda\xa1\xa1\xdf\x3b\x92\xb4\x0f\x29\x91\x04\x22\x4d\x43\x92\x52\x04\x2b\xf1\x0e\xf3\xed\x99\x1a\x8f\xd5\xf9\x48\x07\x55\xe4\xe8\x46\xd4\xd2\x9f\x5d\xe7\x51\x9a\x8f\x6c\x78\xce\x12\x9b\xc9\x5d\xe6\x25\x97\x7a\x74\x14\x4b\xa4\x9d\x92\x79\x1c\x3f\xe4\x42\x37\x0f\xfd\x86\x49\xf0\xf2\xe3\x27\xc9\x09\xa7\xb0\xd8\x07\x63\x21\x3a\xec\x84\xe6\x0e\x6b\x09\x0d\xeb\x30\x3c\x29\x13\xd2\x7b\x4e\xe2\x9d\x3c\x06\x3a\x5d\xac\x89\x84\x01\xba\x61\x03\x9a\x7d\x53\x12\x1c\x89\x0e\xce\x8a\xa7\x4b\x2f\xe8\x8b\x57\x28\xcc\x53\xe2\xbc\xd4\x37\x81\x7f\x00\x6a\xfc\x04\x01\x91\x36\xa0\xf9\x50\x20\xd3\x23\x73\x6b\x75\x40\x1b\x8a\x11\xc7\xb5\xae\x4f\xb8\xc1\x15\x8e\x0e\x64\xdc\x73\xf8\xe2\x57\x52\x57\xbd\xd7\x14\x71\x3a\x5a\x08\x80\xc1\xa9\x02\xd3\xa5\xbe\x30\xcd\xe4\x80\x20\xbd\x9e\x04\x68\xa2\x83\xf4\x49\x09\xbb\xc7\x7e\x71\x21\x45\x86\xd7\x7e\x09\xc5\xd2\x35\x30\x79\x4d\x23\xd2\x38\x11\x0e\xc2\x0f\x05\x0e\x86\x53\x02\x10\x3d\x9d\xaf\x2c\xfb\xb6\x03\x57\x64\x20\x6b\x69\xeb\x64\x5a\x89\x71\x42\x78\xe5\xbe\xe9\xc6\xd3\x55\xa1\xc6\xcb\xb5\xd7\x9a\xc9\x85\x43\x32\x1e\xc6\x1a\x67\xff\xab\x87\x48\x72\xdb\x0b\xd5\x40\x3a\xe4\x74\x33\xfd\x78\x37\x64\x54\xdf\x37\x7d\xdb\x7e\x13\x65\x16\x55\x21\xf0\xd7\xa1\x6d\x7f\x1d\x84\xf8\xf3\xf9\xdb\xbe\x6d\xdf\xf6\xe9\x6e\x91\xd5\x82\x68\x85\xf7\x5d\xb9\xc5\x7f\xf4\x82\x4f\x3a\xcc\x55\x7c\x12\x2a\xa8\x27\x5b\x03\x05\x8a\x22\xd3\x8a\xb1\xe9\x0f\xd9\xb0\xe3\x27\xb8\x23\x2c\x83\xbf\x9d\x64\x89\xc3\x2e\x89\x89\xde\x0b\xe3\xa7\xef\xb2\xdc\xe9\xad\xc9\x52\xe4\xdb\x05\xfb\x36\x60\x91\x01\x6a\x40\x35\x56\xfe\xf3\xc3\xc0\x28\x8f\x33\x57\x35\x4d\x8f\xd9\x68\x31\x35\x76\x31\x32\x92\x8e\x87\x8c\x7c\x69\x4a\xc7\x1d\x5a\x57\x49\xcd\x96\xbb\x4a\x70\xd1\x5c\x95\xa5\x43\x13\x6b\xb4\x34\xf1\x48\x57\x66\x58\xa2\x9a\x10\x27\xd4\xc5\xb8\x0c\xee\x7b\x88\x21\xab\xbc\xb7\xf6\xdf\xa3\x8a\x5c\xf6\xbd\x1b\xff\xbd\xc7\xae\x93\xe4\x58\xfb\xde\xd5\x47\xce\x67\xd5\xc7\x15\xf4\xad\x57\x52\x59\xc7\xd6\x3d\x9a\x39\xa0\x8b\x85\x33\xae\x4b\xfd\x02\x74\x9e\xcc\x26\x45\x1c\xa9\x71\xdf\x17\x0c\xdb\x0f\x9e\xfe\xc8\xb2\x0f\xfe\xeb\x98\x31\x3a\xd6\xaa\x2b\x45\xc5\xaf\x8d\xfb\x9a\x50\x98\x98\xb3\xe2\x63\x97\x46\xec\x82\x73\xe3\xed\x54\x75\xb0\xb2\xc3\x87\xad\x76\x48\x36\x5d\x7d\x57\x3f\xd9\x0e\x89\xf7\x69\x85\x49\x6e\x6e\xfa\x17\xc2\x55\xb7\x60\x1b\x95\x93\xa7\xa0\x07\xb2\x19\x0b\x24\x9f\x78\x23\xa8\x62\x4a\x49\xbf\x9d\xde\xa3\xe2\xba\xe5\x19\x69\x67\x94\x9d\x40\x14\xf0\x0f\xe5\x8d\x22\x13\x9b\xb8\x23\xde\x33\x4a\xd4\xc9\x37\x01\xc2\x2d\xf1\x99\x0a\x72\x1e\x7e\xe4\x7b\x5a\xe2\x15\x76\x51\x8c\x55\xfd\x35\x40\x46\xd6\xfc\x90\x6a\x39\x7c\x1d\x2d\x0e\xff\x4c\xe6\x83\x51\xa6\xf8\xa7\xe0\x82\x93\x69\x54\x7c\x8b\xf8\x97\xb6\x0d\xc7\xc3\x36\xc7\x7c\x5a\x51\x98\xc5\x9f\xb3\x52\x24\x26\x0f\xbd\x96\x16\x16\x48\x97\xb2\x2e\x77\x59\x60\x3f\xed\x20\xbf\x7a\x67\x8a\x20\x67\x8a\xf6\x6a\x5a\x01\x35\xf6\x70\xce\xa4\x11\x5d\x6e\xe8\xd2\x2a\x64\x57\xa5\x23\x89\xa1\x90\x44\xa8\x0f\xc5\xed\x2b\xd5\x4e\xfb\xf0\x4c\x13\x42\x36\xf0\x84\x6e\x32\xa8\x3b\xc0\x6e\x84\xbb\xaf\xc6\x9c\xf5\x54\x07\x72\x6f\x20\x00\x6a\xc4\x3b\xbf\xbd\xa4\xc2\xb5\x5b\xd3\xc8\x50\x79\xc7\x54\x00\x1f\x11\x51\xf2\x7a\x0f\x15\xf3\xa9\xf1\xc6\x79\x2f\x87\x8a\x9e\x90\x46\x80\x2d\xc0\x11\x20\x92\x86\xde\xea\xe0\x17\xec\x97\xac\xf0\x84\xd7\x74\x1a\xb6\xcb\xd8\xaa\x17\xa3\xd2\xe9\x13\xad\xaf\x0e\xe8\xbd\xe6\x59\xa9\x6b\x0c\x44\xec\x5d\x81\xe6\x72\xc9\x1d\x30\xbd\x4f\x0a\x5c\x77\xa6\x17\x26\xfe\x28\xff\x7f\x6e\x9a\x09\x09\x8e\x21\x5e\xc2\x8d\x04\x80\x30\xab\xd6\xe0\xea\x0b\xab\x58\x01\x2a\x65\x25\x41\x5b\x32\x0c\xee\x8c\x7d\x85\x66\xc6\x54\x78\x04\x9b\xb2\x33\xa7\x4e\x50\x0d\x95\x27\x94\x31\x54\x38\x22\x07\x73\x44\xd6\x10\x53\x02\x8f\xd5\x78\x80\xc1\x5d\xa2\x00\x0e\x1e\xba\x7e\x63\x2d\x7d\xbd\xec\xb8\x69\x4e\xd5\xbd\x4e\x9f\x6c\xb4\xf7\x4d\xcf\x63\xe1\x0f\x0d\xe8\x31\x93\xca\xa8\xc7\xa6\xad\x8f\x67\x3a\xe5\x94\x41\x32\x5b\xe2\x72\x55\xd7\xc0\xa1\x4d\x90\xa1\x37\x8a\x71\xa6\x59\xad\x62\x7a\x0a\xde\x57\x7d\x7d\xcc\xc1\xb1\x6d\xcf\x9f\x8b\xb7\x05\x6d\x1e\x6a\xa6\xac\x14\x0f\x77\x0b\x33\x16\x84\xc4\x0b\x78\x50\xc4\xe5\xa6\xe7\xcb\x0d\x55\xb5\x6a\xdc\x01\x2d\xc3\xde\xb3\xc0\x77\x67\x90\xa6\x6a\xb4\xa8\xda\xbc\x2a\xe6\x89\xeb\x5e\xb8\x34\x29\x0d\x83\x64\x18\xe7\xd6\x7b\x13\x37\x53\xd8\x9a\x8e\xb0\xd4\xb8\x30\xd3\x9d\x42\x09\xa8\x97\xae\x9f\x50\xa8\x61\x30\xae\x8d\xa2\x42\xd3\xb4\xe1\x6a\x71\xd8\x4d\x45\x60\x7d\x90\x92\xf7\x86\xf4\x17\x3c\x07\xc0\x95\x33\xff\x3d\x92\xa1\x53\x0d\xbf\x15\x27\xb5\x45\xb3\x5f\x8c\x29\xfa\x49\x6c\xba\x09\xe1\x44\xc4\x16\xec\x19\x97\x32\x05\x14\xaf\x7a\x41\xc5\x6a\xfd\x37\x9a\xc9\xe5\x41\x8a\x35\xb1\xee\x2d\xdc\xcb\xca\x44\xf5\xdc\xc9\xf5\xb6\xb7\xf9\xca\x64\x52\x10\xdf\xd5\x94\xc2\xf8\x81\x00\xed\x40\x7e\x45\x5a\x04\x8e\x80\x2c\xeb\x00\x8f\xc9\x40\xb5\xf8\x98\x6b\xe1\x7b\x2e\x0f\x50\x53\x1b\x96\x72\x1d\x18\x35\x01\x5d\x1a\x10\xdf\xd1\xe2\x0b\xe1\x98\xcc\x97\xf5\x1b\xea\xad\x86\x7e\x05\xd7\x22\x61\xb7\x78\x66\x06\x85\x4e\xb5\x43\x11\x5b\x2d\xd4\x32\xc9\x0e\x33\xaf\x03\x7d\x70\x8b\xbc\x55\xd2\xde\x09\x3c\xb8\x7c\x9e\x63\xc7\x8a\x53\xeb\x13\x8f\x08\x14\x4a\x90\x6e\xd5\xfb\x6e\x3e\x5a\xa0\xdc\x6c\xe9\xc5\x57\xc4\xe6\x68\xbb\x77\x94\xa2\x74\x08\x4b\xd4\x43\xf6\xfc\x97\x5d\xad\x62\xeb\xa9\x0f\xe6\x42\xb4\x6d\x38\x9d\x32\x48\x44\x0a\x53\x7c\x15\x3e\x72\xdb\xb2\x76\x7c\xe0\x9b\xe1\xdf\x11\x25\x4a\xf1\xd4\xa3\x6e\x63\xdc\xe6\x08\xf9\xf4\x48\xa9\xf5\xa2\xaf\x27\xfa\xb5\x5b\xa0\x67\x4e\x6a\x7c\x30\x81\x9e\x0e\xe2\x36\xa2\x9b\xab\x8d\x7e\xfb\xc9\xa1\x59\x7e\x3c\xa7\x56\x29\xa4\xc1\x49\x5f\xf0\x7f\x63\x68\xe7\xac\x34\x29\x6d\x65\x5a\xfc\x98\xf6\x49\x3f\x78\xca\x03\x99\xcf\x00\xad\xed\xa2\x2f\x6f\x8d\x53\xda\x1b\xdf\xaa\x03\x2b\x93\xf1\x59\x95\xa1\x84\x90\x58\x5d\xac\xc7\xaf\xed\xc1\xdf\x05\xcd\x75\x0f\xba\x45\x13\xeb\x0c\x8e\x7f\x7f\x18\xff\x3c\x1d\xff\xfc\x11\x73\xee\x5f\x8d\x7f\x7e\x8b\x3f\x3d\x08\xee\x7c\x29\x7b\x2e\xe3\x76\x90\x86\xdb\xc2\x0a\x1a\x17\xf4\x75\xd7\xb6\x5f\xfb\xfd\x69\x20\xc7\xf1\xbd\xf2\xec\xa7\xea\x26\xbf\x61\xf3\x00\x98\x6d\x29\x5a\xec\x47\x98\x29\xb0\xdc\x74\x75\xb5\x92\x24\x43\xfb\xf2\x9e\x74\x77\x6e\x08\xe4\xf2\x4c\xb5\xe4\x80\xa6\x1b\xad\x79\x72\xa2\x76\x24\xa4\xe8\x34\x13\x01\x74\xd3\xd4\x87\xeb\xed\x90\xad\xd1\x33\xbd\x90\x48\xae\x08\xfc\x03\xb3\xb4\x7a\x4b\xb5\x2a\xa2\x04\x42\x94\xaf\x42\xdb\x7e\x15\x9c\x35\x2b\x59\xd2\x5b\x73\x51\x30\x4c\xd2\x2f\x3d\x38\xbf\x43\x75\xb8\xfb\x26\xb6\xba\x16\x00\xea\x01\x81\xcf\x43\x14\x32\xa9\x5d\x02\x15\x67\x0d\x8c\x63\xbc\xc2\x33\x28\x71\xe0\x58\xff\x1b\xe1\xd0\xab\x5d\x12\xb1\xad\x6a\x58\x02\xe8\x61\x68\x8d\x37\xa8\x99\x0a\xf2\x78\xf4\xdd\xd3\xe7\xac\x2d\xef\xd8\xf7\x39\xc1\x42\x48\xd2\x5d\x70\x74\x30\xcf\x42\xe3\x3d\x52\x28\xa1\xf1\x64\xc1\xb9\x33\x1e\x93\x5f\x5e\x1c\x04\xdd\x61\x09\xc9\x80\xe1\xc1\x81\x1a\xf9\xa9\x49\x6f\x8c\xb3\x48\x44\x47\xd6\xd0\x64\x2f\xb0\xb5\x86\x90\x1a\xc8\xa9\x99\x31\x0b\x93\x84\x01\x95\xe3\xdd\x97\x92\x3e\xe9\xd4\x04\xea\x8a\x00\x70\xe0\x75\x8c\xfd\x96\x77\x2e\x25\x6b\xd9\x9e\xad\x02\x05\x15\xee\x40\x26\x6b\x75\x45\x0f\x8c\x34\x65\x4d\xd6\x97\xc6\x64\x8d\x71\x54\xd8\xfc\x43\xc7\x97\x9b\x14\x63\x05\xba\x5f\xdc\xe7\xe2\x36\xe0\x92\xd0\xc0\xee\xdc\x07\x43\x9b\xbc\xb8\x17\xf5\xe3\x23\x66\x55\xb6\x6f\x4c\x46\x8e\x01\x2c\x91\x4e\x7a\xd0\xb3\x77\xd2\x0f\x82\x11\x7a\x86\x8b\x79\xba\x53\x8b\x35\x9f\x2f\xbc\xd0\xbb\xe3\xcf\xba\xab\x93\xec\x0a\x34\x0e\xad\xe9\xb8\xb7\x01\x47\x9b\x58\x37\x19\x6b\x9a\x30\x54\x0a\x19\xf1\x6b\x51\x23\xa9\x63\xe9\xb5\xc8\xd3\xf2\xa0\x27\xd9\x28\x69\xd4\xf1\x9b\x89\x71\xa7\x21\xb0\xad\x89\x37\x26\xc3\x94\x42\xf0\xa7\x3c\x11\x81\x8f\xaa\x59\xa5\xf2\xe0\x93\x50\x02\x84\x97\xf9\x15\x73\x27\xfd\xe0\x37\x56\x20\xe3\x33\x71\x1d\x32\xb6\x45\xc8\x03\x0f\xbc\x2b\x84\xe3\x25\xfb\xcf\xed\x92\xd5\x7c\xe0\x57\xdc\x3d\x77\x20\x86\x75\xc4\x50\x15\x1a\xda\x0a\xa1\x71\x2c\x8a\x26\xae\x0a\xda\x6e\xaa\x6a\x7d\x73\xf6\xaa\x5e\x2f\xb8\xab\xd7\xb6\x53\xff\x68\x95\xf0\x3a\xe7\x72\x68\xc4\xc0\x11\xa9\xde\xc4\x56\x42\x3a\xea\xb4\x79\xfa\x99\xc4\xe0\xe9\x51\x60\x73\xce\xf7\x4d\x42\x5e\xfc\x15\x48\xbd\x62\xc3\x74\x83\x1a\x70\x24\xeb\x10\xb3\x52\x6f\x28\xeb\x1b\x68\x6c\xf5\x95\x91\xf6\x4b\x76\x4a\xe1\xa4\xa1\x55\x71\x43\x00\xa9\xed\x2e\x96\x4d\x85\xf3\x23\x78\xb1\x3d\x18\xa1\xa1\x68\xd9\x88\x7e\x1e\x02\x81\xea\x7b\x8e\x60\x4f\x52\x21\x76\x9d\x4f\x4c\x39\xf4\xbd\x39\x77\x9a\xc9\x8e\x7f\x33\x30\xad\x5a\x3a\x99\xc2\xc4\x9f\x65\xa6\xbb\x17\x3c\x82\xef\xaa\xe8\x9d\xe7\x5b\x2d\xa6\x8f\xa3\xbe\x7b\x32\x9d\xd0\x6f\xcb\x29\x66\x2e\x1a\x8a\x4e\xab\x86\xa8\x23\x43\x0c\xb8\x8c\x19\x56\x80\x9b\xa1\x84\x05\x9b\x37\xa6\x89\xe6\xdb\x53\x91\x1f\x42\xa3\x91\xd0\xe6\x48\x5b\x0d\x5a\xda\x8d\xdb\x7b\xd2\x6f\xb5\x54\x75\x3a\x36\x70\xcd\xb3\xaa\x0a\x01\x01\x4f\x83\xc7\x58\xa2\x7b\xe5\x87\x1d\xe0\x74\x1c\x64\x71\x36\x77\x69\x38\x0d\xb4\x02\x65\x52\xbb\x09\xc2\x5d\x0b\x34\xf9\x6d\x68\xdb\xdf\x48\x0a\x38\x5c\xb0\x33\xab\xaa\xba\x7b\x48\xba\x77\x2a\x22\x8b\x83\x56\x31\xd4\x92\xf6\xa4\x55\x01\x4b\xfa\x3a\xb4\xed\xd7\xb4\xcd\x6b\x2e\x18\x21\x90\xc6\x73\xee\xce\x81\x6c\x0f\x56\xd7\x9f\xfa\x98\xb8\xfa\xf6\x49\x4c\x99\xfa\x5a\xd6\x45\x20\x49\x91\x9c\x28\xe8\x35\xa5\xca\x50\x3c\x2c\xb0\xae\xc8\xa1\x58\xc1\xa5\x70\x24\xe5\x41\x3e\xe8\x88\xde\x4d\x18\x21\x3d\x30\x8e\xda\x20\xc3\x3c\x28\xf6\x02\x33\xc2\xa5\x41\x06\x38\x27\x32\x6a\x10\xcc\x0d\x97\x12\x2f\x7b\x91\xe6\x24\x13\x63\xf1\x9e\xd5\x88\x50\x22\x38\x9a\x57\x85\x71\xdd\x88\x06\x86\x0c\x59\x4d\x92\xa5\x64\x88\x3b\x4b\xaa\x26\x0e\x71\x8e\x3a\x66\xdd\x80\xae\x3e\x28\x31\x99\x51\x40\xca\xdb\x36\xac\x43\xe3\x05\xb1\xc4\xa7\x3d\x26\x18\x60\xfc\xf4\x70\x81\x44\x39\xc5\xa2\x0f\x3a\x9e\x8a\x2e\x81\x36\xe6\x4e\xc9\xc2\x92\xea\x79\xd7\xa5\x85\x26\x8d\x71\x1d\xb5\x4c\xfb\x5c\xae\x0d\x46\x54\xbc\xfa\x77\x3e\xca\x2b\xf9\xe9\xd2\x7f\x46\x83\xab\xf3\xe4\x5d\xf9\x36\xb0\xb6\xd0\xda\x76\x13\x04\xf4\xa1\x35\x22\xfc\x02\x42\x8c\x67\xd0\x9e\x43\xe1\x07\xf6\x13\xf2\x8d\x79\x4e\xdd\x50\x69\x3e\x90\x20\x5a\x31\x20\xcc\xd9\xd9\xd3\x43\x5e\xb2\x05\x68\x2e\x88\x9a\x3e\x1f\x37\x49\xa3\x89\x9e\x03\x4f\x18\xa6\x5b\x0d\x12\xe0\x1c\x99\x9b\x6d\xd4\x90\x87\xae\x09\x61\x9d\x54\xca\x83\x1d\x2b\x22\x3e\x41\x04\xa7\x78\xdc\x46\xfd\x5f\xf7\x84\xd5\x6f\x27\x75\xea\x37\x53\x8f\x47\x54\x34\x2c\x82\x4a\xae\x8a\x3d\x7e\x5e\x2d\xa9\x3f\xab\x90\x1c\xde\x2d\x51\x3d\x71\xfd\x04\x22\xcd\x6f\x4f\xd2\x00\xbc\x85\xf2\xe6\x10\xeb\x16\xbc\xcf\x85\x23\x7f\xcc\xe1\x16\xad\x28\x4d\xc5\xd1\x13\xe5\xe5\x90\x5f\x06\x93\x21\x23\x4e\x9b\x9f\x18\x5f\xdf\x33\x55\x96\x74\x53\x45\x49\x0f\x85\x00\xfa\x59\x2f\xa7\xc9\x83\x54\x70\xea\x78\xe0\x70\x44\xa5\x1e\x25\x0b\x0b\x86\x34\xeb\x5a\xb6\x5c\x1a\xef\xca\x8f\x1c\xd3\x4b\x1b\xff\x77\x3d\x20\x28\xb6\xcc\x78\x14\xcc\x86\xde\x0f\x72\x43\xf9\xad\xf1\xf3\xbb\xc1\x3b\xaf\x3b\x23\x31\x49\x7c\x18\x9f\x7a\xbb\x94\xef\x41\x84\x05\xea\x9d\xc6\x98\xdd\x84\x79\x79\x6d\xa9\xbd\x3d\x48\xd1\x52\x6e\x47\x40\x77\x1c\xec\x44\xe1\x2d\x7e\x53\xc7\x97\xcb\xb1\x89\xdd\x2e\xe5\x66\x71\xe2\xb5\xe1\x34\x3d\x5b\x72\xb2\xa1\x3a\xcd\x29\xf7\xe6\x79\x6d\xd5\xe3\x51\xce\x4d\xd3\x4c\x75\xca\x74\x0d\xa7\x46\xe7\x0f\x8d\x34\xe2\xb0\x9b\x30\xfa\x70\x2b\x1a\x31\x32\xcb\x74\x8f\xff\xb9\x6d\xe3\x05\x12\x22\x88\xa8\xa1\xf0\xa7\x25\x47\x97\xd2\xe2\x0d\x05\x5d\xfb\x6f\xca\xd3\xb7\xbe\x1f\x58\xd1\xde\xab\x8e\xd5\x55\xb0\x22\xc5\x87\x1f\x3a\x56\xc4\xc9\xb0\x57\x89\x0a\x3a\x9a\xc9\xf0\xab\x71\x60\x13\x5d\x82\x5d\xb2\x33\xda\xf1\xad\x0b\x49\x2a\xde\x96\x28\x92\x5d\xb8\x3c\x3f\xc7\xaa\xac\x4c\xab\x82\x22\x18\xa5\xbd\x93\x60\x06\x45\x0c\x7d\x69\x0f\x03\x3b\x76\xf0\xfc\xd2\xc6\xa1\x24\x8c\x20\x3f\x4c\x1c\x18\xd8\xe6\x09\xb9\x19\x6f\x55\x6e\x6e\x99\x74\x35\xe8\x12\x9b\xc7\x89\x48\x43\x7f\xc4\x5a\xa8\x8c\x3f\x84\x82\xbc\xbe\x63\x69\x1a\xc6\xaa\xe8\xbf\xd5\x40\xbc\xb9\xad\xe7\x1c\x82\x2d\xd6\x05\x60\xe7\x9b\x94\x0a\xa3\xb8\x2f\x53\x2b\x0b\xbc\x9c\x4d\x7d\x59\x08\x25\x0d\x37\xe3\xc2\xfd\x0c\xc0\x10\x72\x4c\xfe\x39\xcc\xa2\xc4\x8f\x6b\xea\x63\x72\x97\xd3\x7d\x66\x3b\xb8\x0a\x5d\xfc\xa1\x17\xd5\x35\xc4\xb3\x28\x24\x0a\x02\x24\xb4\x98\xb7\xd4\x04\x26\x4e\x87\x35\x6a\xaa\xc4\x95\x8b\xf7\x3b\x51\x34\x1d\xd0\x1c\xac\xbb\x43\xc8\x8d\xe5\xb9\x2f\x54\xa2\x27\x1e\x50\x44\xe1\x52\x66\x3d\x29\x96\x92\xfd\xc9\xda\xf2\xd7\x4c\x11\xeb\xe3\xfe\x5b\x39\x3c\x69\x41\x79\xf8\x55\xf0\x2a\x0f\x24\xe1\x9e\x02\xe2\xf3\x6d\xca\x77\x5c\xd1\x92\xef\x3d\xb9\x92\xa5\x65\xef\x13\xfd\x21\x87\xac\xf6\x17\x4c\xa4\x9a\xad\x73\xc1\xd7\x60\x5e\x6f\xf1\x08\x0f\x45\xc1\x6d\xea\x61\x55\xaa\x0d\xa4\x9f\x0a\x89\xdf\x9b\xbd\x91\xab\x2a\x90\x06\x45\x6a\x42\xcd\x21\xcd\x3c\x84\x0c\xae\x55\x72\x42\x67\xa1\x66\xdf\x93\xf1\xaa\x84\xbe\xde\x01\x79\x7a\x30\x90\x93\x48\x4a\x75\x14\x1a\x00\x8f\x68\x1b\x75\x64\xb9\x26\x40\x91\x0a\x0a\x90\xcd\x7a\x40\x0e\x8d\x77\xf6\x73\xaa\xff\x81\x3c\x5d\xaa\xbd\x6a\x69\xce\x83\x29\x19\x53\x3f\xdb\xf8\x8c\x28\xf7\xfa\x52\x19\x91\xd5\x2b\xaa\x9f\xc7\x6f\xc8\xe5\x7c\x1d\x33\xbe\xbf\xf0\x5e\xd9\x97\x67\x88\x75\xeb\xd0\x7c\x4e\xb2\x8c\xcf\x7c\xcb\xd9\xdf\xc0\xbf\x8a\x09\xef\xd8\x8f\x1f\x96\xa5\x6c\x6b\x85\x5e\x04\xc4\x65\x9f\x73\x8f\x15\xce\xd5\x8a\xb9\x5d\x6e\x30\xdf\xaa\x53\x3a\xf2\xc3\xac\xd5\x88\xbf\x78\x16\xe6\x06\x55\x27\xc1\xfa\xf4\x4d\x92\x76\x14\x12\x50\xb1\x6c\x7b\xe5\x6e\xd9\xac\x32\x08\x0e\xf2\x9b\x90\xc8\xbd\x91\x6a\x77\xd9\x15\x21\x2a\xfb\x3d\x1a\x5c\x42\x6d\x09\xfa\x6b\x31\x42\x64\x2c\x4d\x08\xfb\x61\x25\xe3\x6d\x21\xc6\x53\xee\x62\xfc\xef\xbb\xbe\x6d\xdf\xf5\xd2\x3e\x5b\xbd\x8e\x36\xf6\xea\xd8\x14\xb9\x84\x9c\x8d\x03\x23\x2f\xbd\x15\x7b\xaf\xfb\x4f\x70\xab\x75\x71\x74\x1e\xc1\x23\x50\x05\xd8\x3d\xbb\x25\xb0\x44\xd8\x77\xf3\xd3\x37\x1b\x8b\xc2\x7b\x24\x63\x57\x4a\xe4\x90\x4c\x21\x1c\x78\x3d\x22\x14\x44\xaf\xcc\x96\xf0\xcc\x38\xf3\xd7\x5d\xf4\x65\x9b\xc8\xb5\xdd\x81\x58\x21\x42\xb7\x0b\x66\xda\xa8\xbe\xed\x65\x1f\x02\x30\x92\x10\x87\xd6\x54\xda\x85\x1e\xb6\x60\x1e\xef\x15\xda\x76\x56\x66\x7a\x82\x38\xd5\x29\x1a\x0e\x95\x26\xba\xa1\x44\x8e\xb5\x09\x00\xc5\x60\x55\xbf\x15\x99\x0e\xe9\x1c\x0b\x5b\x6e\xa6\x14\x25\x48\xf5\xb8\x60\xf1\x53\xea\xad\x8d\x21\x69\x0c\x9a\x95\x42\x7e\x69\x7e\x1c\x2d\xbd\x51\xee\x7b\x92\xb8\xbc\x90\x75\x6f\xe8\x00\x93\x1d\x91\xb3\xac\x9c\x7c\xcf\x30\xf6\x0c\xc0\xae\x0b\xa0\x7a\x36\x75\xd1\x01\xaf\xe0\x3d\x2f\x08\x7a\x40\x3e\x77\x15\xf0\x9e\x8e\x48\x30\x3d\x73\x52\xca\xe8\x39\x21\x1f\x7c\x1a\xc0\x36\x88\x35\x25\xf9\xcb\x92\xdd\x7b\x37\x72\xb2\xd1\x55\x40\xee\x82\x5f\xb8\x50\xc5\x3e\xa9\x30\x69\x2b\xc0\xbb\xdc\x5b\xb0\xb0\x9d\xde\x9d\xff\x55\x09\x07\x6f\x84\x05\xd1\xbe\xbb\xee\x98\x80\x68\x55\x57\xb6\xe3\xb3\x3f\xdf\xc8\x92\x02\x9a\xfc\x34\x22\xbb\x09\x04\x55\xb4\x60\x68\x90\x46\x22\x39\x48\xe4\xc4\xe5\x81\xbb\x99\xde\x27\x8a\x4e\xa5\xbb\xf0\xe7\xc9\xe7\x17\xad\x29\xa9\xa5\x4f\xfc\x4e\xf7\x9e\x22\x1d\x5c\x15\x6a\x38\x62\x1d\xbc\xfa\x87\x99\xbc\x75\x36\x5e\xef\x60\xb7\x23\x26\xac\x30\xe5\xca\x2f\x15\x54\xb1\x38\x1c\x49\xf4\x26\xef\x2f\x2c\xfe\x02\x81\xbc\x24\x0c\x88\xb9\xe4\xf8\x2e\xb3\x98\xf2\x0a\x64\xea\xf3\xbe\xab\xac\x66\x25\xba\x36\x7f\xc4\x92\xf6\x8c\x7f\x94\x86\x29\xe6\x21\x98\xa2\x83\xc8\xd9\xaf\xb2\x50\x8a\x12\x24\xc2\x74\xe6\xa4\xda\x68\xb3\x2b\x58\xab\x20\x3a\xd0\xf0\x1b\xc4\x10\x79\xeb\x70\xa8\x5f\xc7\x41\x6e\x02\x53\x2e\x6c\x6f\x83\x26\x16\xf4\x00\x03\xd8\x38\xc1\x43\x57\x27\xaf\x55\xaa\x59\xae\x10\x97\xfd\x13\xb7\xe5\x47\x9d\xa1\xaa\x9d\x3c\xe2\xe6\x89\xa9\x28\xe8\x16\x9f\x08\x51\x2c\x3e\xdc\x87\x2d\xd6\xd5\x54\x4b\x03\x9c\x39\x39\x4d\xe5\x93\x11\xdf\x1d\x7e\xd7\x20\x99\x0a\x43\x8b\x1a\xe8\x17\xad\xcd\x31\xa7\xb1\xce\x54\xf6\x08\xe8\x59\x2f\x86\x3d\x8d\x0e\x3b\x6f\x30\xab\xb8\xdc\x98\xc0\xaa\xf8\x20\xd1\xda\xaa\xf9\xa3\x48\x6b\x8d\xa8\x20\x5d\x86\xf1\x17\x61\x9d\xab\x0f\x6e\x7a\x88\x7c\x9b\x80\x89\xe5\x79\x32\xb3\x07\x3c\x35\xdf\xe5\xb0\x2d\x1e\x00\x19\x56\x3d\x62\xdd\x1c\x5c\x3d\xde\x54\xbc\xad\x2d\x05\xde\x05\x3e\x13\x82\x79\x97\xaf\x2d\x3d\x81\x59\x8f\x00\x37\xa7\x50\xa1\xfc\xde\xa5\xb9\x3f\x35\x8d\xb6\xa9\x66\x24\x92\xb4\xe9\x57\xb5\xd3\x1d\xc8\x8c\x2a\x3c\x28\x33\xb2\xa8\x6b\xc3\x90\xa0\x53\x06\xae\x79\xbb\x1c\xac\xad\xba\x11\x85\x7a\x40\x58\x3c\x01\x35\x2f\xf6\x50\xb2\x3d\xbc\xa2\xd0\xfa\xa8\xab\x53\x4a\x19\x45\xf1\xa3\x5f\xb8\xfb\xa6\x67\xd2\xe9\x85\x6c\xe2\x30\x2b\x4c\xfc\xca\xd7\xb6\x01\x7a\xb4\xc1\x76\xc7\x2e\x34\xca\xe8\x68\x64\x07\x61\xc6\xb2\xac\xb5\x60\x8a\x24\x83\x56\x52\x48\x41\x68\xaa\x89\x35\x6a\x5b\xd7\x32\xbb\xf6\x53\x9c\xff\x5d\xfa\x79\xbb\xf3\x3f\x96\xf6\x2d\xf8\x52\x00\x17\x0c\x13\xa4\xce\x7d\xd9\x73\x76\xbb\xf2\xcf\x3e\x30\xd7\xa5\x64\x36\x01\x17\x69\x8d\xfc\x59\xfb\x76\x02\xc5\x9e\x78\x6c\x65\xfc\xf4\xb6\x67\x4a\x49\x7a\x8e\xb1\x24\x94\x6d\x0c\x02\xb5\x41\x82\xa8\xa5\x8f\xa8\xfa\x4b\x49\x29\x0e\x37\x62\xb2\x2c\xa6\x95\x52\xa2\xc7\x1d\xdb\x36\xbc\xe4\xc1\xff\x0e\x28\x41\x3b\x22\xca\xad\x05\xd7\x5e\x88\x6d\x73\x00\x7d\x08\x1c\x1a\xe5\xa1\x20\x48\x90\x10\x09\x3d\x89\x20\xc0\x5e\x4b\xd5\xb8\x82\x36\x65\x98\x38\x51\x45\xea\xf6\x65\xa1\x16\xef\x34\x49\xf3\xa2\xcb\x42\xbf\xd2\x27\x5a\x89\x02\x47\x2e\x29\xe1\x4d\x5c\x74\xf8\x44\x90\xf0\x20\x69\x47\xf6\xe6\x1c\xcb\xa7\x3d\xeb\x2b\xcb\x42\x50\xd9\xb6\x27\xf4\x64\x0f\x99\xf3\x07\x5c\x2d\xc4\xcf\x2c\x21\xd5\x86\x68\xa6\x20\xb1\xe8\xe4\x6e\x73\xb4\x70\x5d\x3b\xd8\xc0\x92\x9c\x55\x3d\xf4\x5c\x93\xfc\xac\xb5\xfd\x9c\x64\xf7\x32\x98\x30\x6d\x24\xce\xd5\x82\xc2\x0d\xe8\xe7\x4e\x98\xe7\x74\xd7\xcc\x3a\xd1\xe4\x8b\x17\xb4\xd3\xc3\x4a\xfa\xdf\xcd\x2b\x29\xae\x40\x2b\xd6\x11\xac\x74\x18\xdb\x6b\xb8\x7d\x81\x0c\x77\xbe\xb0\xa5\xed\x8d\x80\xe5\x58\xa2\x44\x14\x1d\xf0\x21\x7e\x42\xe0\x10\x19\x05\x6b\x86\xb5\x66\xf2\xc4\x7b\x72\x98\x82\xdf\x9b\xad\x85\x2f\xcf\x87\x69\x29\xed\xed\x4c\x93\x1d\x8b\x77\xb7\x26\x8f\x10\x6b\x9d\x2f\x66\x85\xa1\xc7\x4f\x59\x34\xf7\x1e\xb2\xaa\xec\x11\xf7\x71\x14\x76\x11\x9a\xd0\x02\xf5\x00\xf6\xc0\x9b\xb3\x5e\xd4\x7d\xde\xd0\x8d\xdf\x77\x8f\xb8\x46\x14\xc2\x23\x5c\x35\x95\x18\x72\x20\xed\xbe\xd5\x7c\x1e\xec\xc2\x6b\xc6\xb4\xee\xc5\x0e\x2f\x74\x0b\x00\xcf\x85\x50\xf1\x70\x1c\x85\x02\x93\x67\x31\x53\xe2\x43\xaa\x9e\xd5\xb6\xe1\x5f\xe3\x9f\x61\xfc\xf3\xdd\xf8\x27\xd6\x81\x7c\x1e\x6b\x65\xc4\xda\x18\xd7\xf1\xef\x4f\xe5\xcf\x5b\x54\xcc\x88\x32\x67\x5b\x5e\xff\xac\x4b\xd1\xeb\x6d\x1b\xfe\x59\x0a\xdb\xac\x44\xe6\xf2\x3b\xa3\xa0\xd1\x2d\x0a\x3a\x00\x27\x88\xfa\x1b\xff\xb0\x31\xb2\x92\x2b\x8c\x8f\x5f\x0f\x3b\xb6\x5a\x97\x49\xd8\x54\x69\x27\xe7\x81\x27\x2f\xb9\x7c\xc4\x9a\x94\x57\x13\x36\x5c\xec\x56\x95\x27\x33\xfa\x89\xc9\xb8\x25\x79\xd8\x51\xd7\x4c\x61\xb7\xf1\x6d\x51\x16\xb8\xf2\x36\x7b\xf8\xb9\xbe\x89\xc7\x4d\x9a\x29\xd4\xfe\x54\x5b\x93\xab\xc2\x58\x5b\x92\xc4\xd9\x84\x6c\x09\xf0\x9d\xb4\x63\x50\x78\xc0\xd2\x71\x3a\xcc\x3f\x42\xa4\xeb\x37\x2e\x53\xad\x95\xc4\x9a\x99\xe1\x70\xe9\x32\x92\x53\x6d\xcc\xb6\x75\x8d\xee\x29\x18\xf7\xa9\x20\x07\xf2\x1e\xdb\x52\x62\xf7\x81\x6f\xb4\xe6\x52\x92\xe0\x2a\xe5\xff\xa6\x13\x44\xb1\xba\x68\x2a\x28\xad\xc8\xdd\x6a\x83\x69\x9b\x09\xec\xd0\xba\xe5\x9b\xd7\x3b\xfa\x87\xe7\xe0\x63\x5d\x5f\xb7\x3b\xc0\x87\x7f\x21\x77\x19\x06\x27\x3e\x4d\x62\x13\x28\xa7\xb5\x7b\xdd\x99\x7a\x90\xf5\x14\xba\xf9\x93\xc1\x65\x53\xf1\x83\xfb\xe2\xfa\x7c\x7d\x0a\x82\xd7\x44\x8f\x11\x99\x4f\xf3\x52\x7e\xfa\xcf\xfd\x70\xa6\x22\x8b\x1b\xaa\x67\x48\x7b\xa4\x86\x5a\xea\x7c\x56\x41\xda\x0d\x5f\x38\x59\x26\x01\x1e\xba\xea\x0c\xa0\x49\x16\xbf\x55\x75\x15\x89\x65\xc4\x15\x3d\x34\x77\x2e\x6a\x5f\x5f\x85\xe1\x04\x8e\x07\xb4\xe1\x90\x71\xf5\x8b\x74\x24\x3a\xa5\x3c\x66\xc5\xc6\x5b\xbf\x4a\x76\x20\x19\x1e\xcf\x38\x65\x3b\x1b\x11\x34\x40\x86\x65\xf0\x4b\x76\xbb\x40\x92\xf1\x0c\xa2\x56\x54\xba\x95\xce\x1d\x92\x80\x06\x74\x8e\x27\x5d\xc4\x69\x33\xea\x53\xa1\x9a\x7e\x95\xa8\x25\x05\x35\xea\x14\x0b\x6f\xdd\x49\xe9\xf7\x32\x44\xe9\xbd\x39\xf9\xf3\xc8\x93\x50\x5e\xcd\xa7\x3e\xd4\x31\x4d\x7a\x3f\x9d\xa6\x92\x26\x22\xc2\x49\x8f\xd3\x2b\xc9\x35\xe4\x4c\x17\x20\xbc\x3e\xf8\xfe\xfb\x07\xd7\x35\x33\xbd\xfc\x67\xd7\xb6\x7f\xfa\x17\x42\xf1\xcd\x7d\xbf\x6a\x10\xd4\x4d\x12\x96\xa5\x2d\x24\xcc\xba\x06\xec\x3a\x46\x6d\xf0\x2f\x29\x14\x79\xdd\xb3\x94\x6d\xe5\x7e\xd2\xc7\x8e\x9c\x1a\x7f\x43\xb5\x5a\xe1\x24\x65\x09\x31\x54\xec\x06\xb8\x23\x37\x42\x0a\x97\xca\xf4\xb8\x34\xf5\x01\x4e\xe7\x5a\x53\x0b\xfa\x46\xe1\xf1\x85\xdd\x18\x45\x07\x37\x4d\xb8\xf9\x1d\x83\xcf\x91\x9f\x2f\xef\xdc\x82\x86\x63\x99\xbd\xa7\x29\x72\x49\xeb\xdd\xbe\x48\xe1\xe8\x95\x8d\xeb\xbe\xa0\x4f\x2c\x2c\xd0\x38\x18\x1b\xce\x65\x5a\x6c\xfc\x2f\x3d\x07\xe6\x76\xe6\xb8\xcc\x3c\x82\x45\x17\xc9\x09\xa5\x59\xb2\xb0\xa3\x60\xba\x32\xe1\xb9\xd5\x02\x78\x52\x4f\x89\xe7\x1f\x05\x9d\xdc\x89\x2c\x97\x6e\xa4\x0c\x7b\x81\xbf\x96\x28\x14\x4e\x32\xb8\x07\x3b\xdf\x54\xed\x11\xc1\x8c\x64\x8f\x0c\xf3\xb1\x16\x75\xb3\x4d\x94\xae\x34\xe5\x61\x3d\x00\xb2\xde\xa0\x5d\xc5\xa0\xfa\xa0\x10\x50\xdd\x84\xfa\x34\xc4\x6a\xb0\x3b\x50\x09\x94\x4a\x3a\x30\x6d\xd0\x33\x6b\xb8\xe9\x98\x5d\x47\xe3\x60\x2e\x87\x9a\x55\xd2\xc4\x12\xe2\x03\xd3\xe7\x06\xf5\xfb\x34\xae\x98\xb2\x63\xc0\x66\xe5\x15\xdf\x37\x45\x97\x83\xb5\x2b\xa4\x5b\x8e\xd8\x2f\x63\x2c\xb1\x34\x64\xcf\x54\x35\x88\x6f\xc6\x15\x28\x63\x49\xb6\xca\xcf\x47\x48\xba\x44\x8a\x0c\xa3\x95\x08\xc9\x23\x19\x7f\x01\xa4\x74\xb0\x4e\x7c\xaa\x05\x3e\x36\xa2\x62\x3a\xd4\x44\xea\x0d\x4b\x63\x39\x3a\x74\x33\x05\xe8\xc7\x61\x20\x56\x39\x76\x35\x21\x99\x8c\x1f\x5f\x72\xfd\x42\xba\x73\x9e\x8d\x4e\xf1\x92\xfb\x9e\xfb\x2f\xee\x3a\xc2\x43\xef\xf5\xef\x75\xdf\x2b\x3f\x24\x84\x88\xef\x11\x9f\x17\x55\xbb\x80\x3b\xbd\xa8\x48\xe5\xe0\x63\x9d\xc6\xe2\x07\xef\x56\x57\x9f\xd3\xe7\x32\x70\xe9\x7a\x0a\xaf\x74\xd8\xf4\x37\xd1\x5a\x77\xce\x14\x96\x2c\xb6\x5b\xec\x87\x76\x46\xdc\x8e\x68\x6d\x65\x03\xf7\x4b\x37\x98\x48\xde\x57\x4d\x82\x5c\x56\x87\x59\x3d\x33\x31\xa0\x51\xe3\xd7\x4c\xff\xe9\xbe\x91\x01\x22\xaf\xfd\xee\x64\x37\x29\x59\xb6\xc8\x92\x56\x2f\xd5\x52\x24\xd7\x50\xc4\x35\x15\x1d\x49\x1a\xe4\x81\x09\x9a\x09\x2e\x40\x59\x42\x38\x5c\x36\x71\x49\x31\x94\x2e\x07\x99\xe5\xd5\x8e\x2f\x7b\x57\xa7\x9b\xaf\x19\x73\x24\x6d\xf9\x5a\x96\xac\xe3\x16\xc1\x9d\xb0\x6c\xe3\xbd\x38\x36\x8d\x33\x75\x68\x7d\x33\x79\x0d\xca\xa1\x31\x48\xa9\x5a\xb8\x22\xa9\x39\xd4\xe3\x3f\x0c\x3e\x12\x2d\x1c\x68\x36\x22\x8c\x1b\xf0\xab\xa1\x71\xe3\xb6\x3a\xa8\xeb\xe8\xa4\x7f\x93\x0a\x37\x50\x80\x37\x5e\xf1\x6e\x1a\x19\x40\x89\xe0\x10\xfd\xab\x00\x73\x2f\xb5\x61\xb5\xda\xf1\x75\xc7\xd6\xb0\xc7\xa2\x01\x56\x47\x15\x65\x14\x42\xec\x7f\x1a\x84\xc0\xd9\xd6\x11\x42\x1f\xf6\x9d\xe9\xd6\xfa\x9f\x3b\x6c\x01\xf7\x72\x31\x3e\xee\xec\xab\x6f\x28\xb5\xea\xca\x37\x75\xb2\x46\x52\x3d\xd2\xcd\xc4\x52\x5e\xa3\xff\x4b\x47\x5a\x09\x03\xbf\xf9\xfb\x1e\xbb\xe7\x46\xdf\x8c\x05\xd8\xfd\x8e\x56\xef\xff\xdd\xee\x4f\x46\xca\x69\xc7\xd5\x3b\xad\xae\xe5\x8d\xa9\x9b\x83\x85\x04\x78\xf5\x3e\xe2\xbc\xc8\xae\xfd\xdf\x91\x73\x1e\xc1\xa8\x31\x05\x07\x61\x3d\x16\x03\xf0\x34\x1d\x4b\x20\xb3\xfa\x36\xf8\xa2\x79\x68\x83\x2c\xa1\x8f\xa2\x17\xde\x7b\x4e\x94\x85\x69\x74\x57\xc3\x38\xa9\x3f\xe3\xe9\x2d\x64\x8b\x0a\x12\x1c\x87\x62\x99\x7a\x2d\xac\xda\xd6\xf8\x73\xd7\x89\x9f\x83\xa3\x71\xe4\x07\x0f\x3b\xd2\xd6\x1a\x32\xb5\x03\xda\xb4\xc4\x47\x6a\x63\x35\xc5\xe5\x23\xa5\x63\xdc\x37\x6b\xc4\xad\xd0\xa1\x4f\x7b\x75\x1a\x72\x58\x56\x51\x49\x6d\xc9\x5e\x39\x98\xaf\xb4\xe1\xb1\x41\x17\xa3\xcd\xbe\x8a\x3b\x19\x79\x4c\x3d\x5a\x31\x2c\x6d\x08\x17\xc4\x7a\x08\xaf\x06\xbe\x20\x78\xcf\x86\x89\xac\xe4\x75\x72\xa2\x8c\x39\x33\x86\xf6\x5c\x6c\x66\x83\xb8\x39\x5e\xa5\x23\x5c\x3b\xcf\x0a\xcd\xf6\x26\xef\xc6\x61\x52\x2c\xce\x5e\xf8\xcb\x1e\xbe\x99\x24\xcc\x79\x97\x86\x42\x5d\xb5\xad\xce\xbd\x2f\x76\xaa\x03\xc3\x90\x76\xba\x11\x62\x2a\x5c\x06\xcc\x1c\xc1\x09\xd3\xe7\xed\x27\x94\x06\x8a\x35\xef\xe0\x44\x66\x9d\x43\x6b\xfd\x18\xbb\x77\x85\x1c\x1e\x2c\xfe\x23\x0c\xa3\xa9\x67\x09\xd7\xc4\x8f\x66\xf2\x1d\xc5\x57\x60\xd0\xf3\xfc\xa7\x9e\xe7\xc3\x52\xa3\x2b\x93\x68\x11\x9c\x44\x8b\x0d\xf4\x0f\xe2\x8f\x14\x3f\xf0\xa6\x8d\x29\x49\x51\x74\x3c\x99\xa7\xb0\xe4\xe7\x0e\xb7\x9c\xcc\xc6\x0d\xdc\xf9\x93\x79\xc8\x9c\x9f\x3b\xde\x72\x32\xeb\x57\xbe\xef\xd9\x3c\x06\xbe\xab\xeb\x3b\xf1\xc9\xb6\xba\xbd\x87\xd8\x88\xb0\x8a\xfd\x21\x2b\x40\x4a\x6f\x21\x85\xec\xb5\x6d\xd8\x33\xbd\xe2\xdc\x11\xd9\x4d\x59\x2c\x8d\xcd\x54\x1c\x1a\xeb\xdd\xfd\x22\xaf\x7d\xe7\xb2\x22\x35\x57\xbb\xa6\x50\xa9\xbb\xf6\x93\x38\xcb\x8d\x77\xed\xd2\x44\xda\x6e\xbc\x6b\x47\x5b\x65\xfe\x9c\x39\x61\x11\x60\x1f\x44\x87\x6a\xee\x47\x40\x4d\x1a\xa8\xab\x31\xd8\x16\x4a\x87\xdd\x63\x11\x4e\xb8\x76\x66\x9d\x8f\x53\xff\x93\xb6\x0d\xed\xe4\xe5\x09\x62\x42\xc7\x83\x4f\x7a\xc7\xfb\x93\x11\x0a\x3f\x6b\x5e\x9c\x7d\xda\x08\xd7\x86\xfb\xfe\xc8\x8b\x6e\xf4\xbd\xad\x21\x77\xa8\xf9\x19\xb8\x9a\x6a\xc1\xc6\xff\xeb\xfc\x87\x14\xc6\x8a\x5f\xf2\x6a\x6e\xa6\x78\x83\x55\xcc\x86\xdf\xb4\x3b\x0f\xba\xde\x73\x79\xf0\xdb\x9e\xc5\x31\xaa\x59\x1e\x3f\x65\xe7\xe2\xb1\x54\x49\xa1\xe7\x54\xd8\xfb\x43\xc7\x4f\xd3\x22\xd4\xbd\x54\xe9\x3a\xb3\x8d\x89\x1b\x51\x3f\x0e\x8b\xf0\x98\xaa\xc0\x42\x2a\xac\x1c\xac\x2c\x9f\x1e\xc4\xa9\x2c\x2b\x0e\xbf\xc6\x4d\x5f\xf1\xa4\x1d\x6a\xa6\x72\x9d\xdc\x61\x20\x5a\x64\x77\x29\xdf\xbd\x3d\x11\xb1\x6f\x9e\x71\xa6\x3c\x99\x82\xe4\x14\xf9\xda\x1b\x38\xff\x88\x5e\x8c\x9f\x7e\x56\x25\x00\xd3\xf1\xc6\x2f\xab\x4f\x4f\x37\x10\x55\x1d\x40\x92\x16\x42\x57\xc3\xdc\xe3\xeb\x37\x31\xa5\xae\x62\xe4\x43\x50\xbc\x61\x1e\x84\xe7\x0e\x5d\x6f\xa6\xe0\x00\x2c\x79\x66\x0c\x85\x6a\x07\xbd\x13\xc3\xf9\x66\xea\x0a\x1d\x7d\x60\xd4\x72\xc6\xc1\x01\x67\x29\xf7\xb2\x3c\xe1\xf8\xe9\xfd\xd2\x4d\x67\xa0\x9b\xa0\xc7\x70\xcb\x64\x97\x9f\xbf\x2d\x14\x27\x95\x30\xf9\x93\x1a\xd9\xce\xd2\xad\x41\x7b\x56\x26\x86\xd9\x4c\x49\x2f\x71\xdc\x26\x84\x87\x97\x91\x96\xfe\x95\x9c\x67\x2a\xf2\x3f\x46\xf6\x7f\x15\x23\xf7\xef\xe3\xdf\x98\xd8\xf3\xa6\x44\xf2\xb7\x8d\xc8\x71\x2c\xf7\xf6\x6e\x51\xed\x27\x32\x94\xd4\x80\x98\x10\xf5\x2c\xe6\x3a\xcb\x1e\x66\xc5\xce\x74\x35\x08\x50\x2a\x9d\x3e\x05\x4a\x7c\x93\x0b\x6b\x8f\x3f\x4e\xad\xa8\x72\x8e\x64\x09\xe6\x6d\x26\x47\x7a\x1c\x39\x55\x19\x5a\xc6\xb8\x78\xf9\xb4\xae\x03\x38\x9d\xd1\xe5\x8e\x9d\x74\x65\xc7\xba\x4a\xd4\xbd\xa5\x96\x7b\xd3\xca\xbe\x38\xfd\x7c\xeb\xa2\x27\x4b\xc7\xa7\x8a\xf5\x4c\x69\x19\x7e\x38\xea\x7b\xd4\x67\x4e\x26\xa1\xf8\x08\x02\x36\xde\x22\x68\xa5\x11\xc1\xa4\xd0\x65\x55\xc6\xd7\xd5\xcc\xcf\xed\xf8\x73\x53\xad\xc5\xc0\x7b\xc2\x10\xea\xdc\xae\x8d\x98\xa4\xc8\xb1\x4d\x46\x50\x83\x1f\x18\x80\xa9\x9f\xd7\xe6\x67\x45\x2e\xae\xcc\xcf\x6a\x69\x32\x36\x3b\x87\x13\xc6\xa7\xfe\x0c\x6d\xfb\xa7\x34\x97\x8b\xe7\xbe\x0c\x6d\xfb\x65\x6e\xf9\x11\xda\xf6\x0f\xc1\x36\x95\xcf\x3a\xc4\xbb\x13\x9f\x4b\x9f\xcb\x78\xf2\x39\xd9\xda\x54\xa8\x05\x12\x29\x15\x66\x7c\xe7\xdd\x32\x0e\x86\x55\xd6\x5c\x5b\xaa\x9a\x04\x0e\x85\xa2\x2b\x13\xab\xa7\xaf\xbf\xf8\x83\xc5\x0d\x08\xd1\x76\xd4\x58\xb6\x1d\x7a\xe2\x81\x33\xe0\x74\x96\x2a\xab\xfb\xda\x48\xff\x5b\x48\xc2\x8e\x5a\xae\x2f\xf0\x81\xa9\x76\x09\x28\xd9\x35\xac\xf9\x54\xc4\x7f\x95\x07\x25\x95\x58\x10\xbf\x78\xd2\xbe\x95\x90\x14\x10\x13\xba\x79\x32\x0a\xf1\x48\xbd\xc8\xc5\xac\x9a\xb4\xea\x84\xb8\x5a\x85\x23\x13\x89\xf8\x0b\x29\x55\x40\x20\x7d\x3b\x67\x0d\xd9\xf7\xbd\xc8\xe5\x80\x5d\x26\xbe\xe7\x95\xe1\x88\x2f\xcb\x78\xdf\x80\x28\x1e\xb2\x43\x6d\x71\x2a\xf8\xb2\x41\xd5\xb7\xb2\x85\xe7\x31\xcd\xb6\x6a\x55\x57\x55\x9a\xe4\x92\x76\x38\x9c\xed\xb0\x38\x40\xbc\xc6\x8c\xb0\xee\x90\x30\xae\x26\x38\xda\x1e\x45\xd9\xbe\x90\xc9\xcc\x4c\x52\x06\xbb\x8a\x3c\x85\xdb\xbb\x8c\x56\x2a\x52\x71\xcb\xc8\xbd\xa5\x28\x75\xd2\x3d\xf0\x1d\xa9\x47\x42\xb2\xac\x52\x30\xfa\x6e\x0b\x72\xa4\x10\x77\x6d\xec\xff\xee\xdd\x5a\xea\xec\xd6\xf9\x32\x31\xa2\x3c\x18\xe0\x40\x17\xcc\xba\xfb\x6c\xe3\x6b\xb5\x08\x99\x56\x3c\x7f\x63\x01\x76\x7b\x4f\x57\xc6\x91\x5a\x23\xb2\x0d\x3b\x30\x48\x75\xac\xec\xc2\xda\x50\x68\x17\x34\x96\x77\x54\xde\xaf\x1b\x19\xd5\x95\xa9\x63\xe9\x05\x39\x92\x70\x36\xb4\x6e\xc2\x9c\x72\xe3\xd7\xa4\x3f\x71\x69\xe9\x32\x10\xd2\x89\x51\x3d\xf7\x16\xe9\xfc\x05\x31\x4d\x76\x9c\x1a\xec\x32\xf5\xb6\xa4\x60\x41\xad\xc6\x30\x5d\x21\x9b\x93\xb7\x01\xfa\x43\xba\x91\xd6\xd2\xbd\xe3\x5f\xf0\xaa\xbd\x2c\x02\x8b\x69\x6b\x03\x1b\x4f\x91\xb7\x86\xe2\x07\x73\x35\x3f\xd1\x05\xc1\x06\xe6\x3c\xb2\x87\x46\x3a\xaa\x5d\xf8\xc4\x75\x71\x48\x84\x60\x0e\xe9\x11\x8b\x25\x90\x6b\xf3\x47\x0f\x4c\xe0\xb5\x93\xe4\xa5\xde\xb3\x05\xc2\xb0\x1a\xb2\x3a\xa8\x2b\x7c\xd7\x6d\x0d\xe8\xed\x9c\xe0\xaa\x14\x0f\x9d\x3d\x91\xe5\x79\x50\xb9\x0e\xb4\xa5\x53\x97\x40\xc1\xe1\x17\x8f\x4d\x3e\x86\x57\x82\x70\x7b\x92\xea\xc7\x7c\xd2\x28\x2f\xe7\x24\x1f\x6b\x80\x16\x85\x67\x9c\xd8\xe0\x24\x29\xcc\xae\xbd\x71\x8d\xef\xc4\xa6\x71\x95\xbc\x26\xb2\xc4\xec\x33\x88\xb3\x5d\x01\xbf\x00\xf3\x72\xff\x0a\x9b\xea\x48\x14\xe0\xc2\xab\x41\xa0\xf4\xaa\x27\xee\x2c\x84\xe9\x82\xdc\xce\xeb\x39\x35\xde\x53\xfc\xb0\x77\xd2\x49\x7e\x6a\xcc\x49\x97\x52\x40\x57\x17\xea\xd2\x94\x8a\x55\x1a\xf1\xbe\x21\x71\x98\x41\xdd\xa3\x4b\xb9\x05\xaa\xfc\xa3\x56\xaa\x9c\xff\x73\x40\x51\x4d\x02\xa9\x06\x92\x1a\x31\xb7\x38\xbd\x30\xf6\xcf\xdc\x1f\xd0\x6e\xfb\x3a\xfd\x52\xd9\xf6\x61\x87\x94\x83\x49\x72\xf0\xfc\xd3\x10\x80\x2d\xf2\xde\x49\x14\xf2\x44\x0c\xfa\x2f\x31\x29\x45\xba\x0f\x8c\x1b\x96\x04\x9c\x2a\xaf\xc3\x1f\xb5\xb8\x55\xbf\x09\x62\xda\x39\xe2\x82\x60\xb7\x03\x24\x01\x41\x1d\xe0\xb1\x6c\xd6\x88\xa7\x85\x20\x78\xae\x7d\x25\x8e\x38\x9b\xee\x60\x7c\x90\x38\xa0\xa0\x39\x34\x0d\xcb\x3c\x11\x84\x20\xb9\x9a\x63\x49\xd7\x41\x85\xc7\x1e\x49\x67\x80\x07\x9a\x79\x89\x5c\xc1\x7b\xbf\x9f\xac\x4b\x79\x73\xb7\x5d\xdd\x1a\x4d\x36\xe5\x1a\x2e\x95\xb1\xee\x83\xc8\x6e\xda\xf2\xe5\x64\x7c\x43\xba\xee\xae\x48\x77\x1f\x04\x70\xe0\x5c\xc2\x7b\x4e\xa3\xda\xa4\x24\xfd\x2b\xb7\x5a\xe4\x3e\x0f\x6a\x57\xfb\xc9\xc4\xeb\xb5\xbe\xc5\x35\x51\x63\x5f\xf7\xbc\x26\x47\x72\x49\x46\x2f\xea\x77\x9f\x87\xb8\x31\xe7\x02\xe6\xa0\x4b\x83\xd5\x7f\xc0\x1f\xdd\x8f\x21\x59\xe9\x75\x19\xa9\x46\x54\x85\x03\x3e\xd1\xd9\xd1\x77\x83\xb6\xd0\x05\x98\x9a\xbd\x40\x1e\xef\xe5\xfc\xdc\xb5\xe8\x27\xdd\x44\x1f\x37\xc9\x7f\x73\x14\x41\x5d\x74\x97\xee\x78\x28\xa8\x0f\xb9\xab\x4f\xc8\x44\x85\xc4\x39\xbd\x7f\x92\xda\x92\x88\xec\x09\xa5\x0e\xef\x91\x42\x02\x59\xab\xf4\xb5\x90\xf6\xae\x8a\xb8\x74\x2d\x17\x4a\x9c\x93\x26\x50\x97\xf1\xc1\xe8\x89\x1e\x7e\x09\xf9\x04\xa0\xaf\x82\x83\x82\xa6\x88\xd7\x58\x71\xf0\xb0\xe7\x51\xf1\x1e\x29\x5b\x0e\x45\x75\x5b\x27\x6c\x96\x20\xd6\x92\x66\x2a\x03\xfd\xe5\x4c\x29\x10\x53\x73\x40\x1d\xe6\x71\xd8\x51\x66\xad\x74\x36\xbe\xf1\x9f\x51\xe3\xdc\x75\x3b\xca\xd0\x1b\x02\x4f\x28\xbe\x84\x74\x21\xc5\xe3\x8e\x8c\x4d\x25\x38\x66\x05\x2d\x7c\xf8\xdc\x57\x25\x04\x5f\x05\x4e\xc7\xd5\x89\xdb\x86\xb3\x2a\x61\x6b\xaf\x63\x2a\x54\x07\x1c\xc4\x39\x17\x66\x55\xab\xc4\x3c\xbf\xd1\x1e\x8b\x9e\xbd\x1a\xe2\xa6\x3a\xf1\x68\xee\x61\x2a\xf0\x1c\x1b\x19\x5b\x81\xe7\x61\xa3\xcf\xca\x13\xc1\x35\x89\x99\x41\x7c\x2a\x4c\xa5\xd0\xfe\xc6\xf7\xe5\x00\x71\xe0\x25\xd6\x41\x90\x81\xd5\x1b\x08\x55\xd8\xea\xe0\x35\xfc\x77\x2d\x9c\x40\xf3\x79\x9d\x7e\x0e\xb7\xef\x05\x67\x62\x2d\x0d\x34\xd2\x31\x66\x31\x1d\xfd\xee\xf3\x0b\x2d\x12\x55\x5e\xdc\xeb\xc4\x75\xd9\x21\x14\xea\xd8\x77\xe4\xcc\x41\xf0\x36\x6c\x05\x41\x20\x98\x89\x08\x54\x2b\x38\xda\xde\x03\xb3\x0d\xc4\xbd\xe5\xcf\xd2\x95\x22\x31\x5d\xf6\x3c\xc2\xa0\xad\xd0\xea\x66\xaa\x44\x18\x70\x65\x65\x14\x39\xee\x44\xa1\x1f\xa2\x9e\xf8\xa3\xc8\xca\x5a\x4a\xc3\x2e\xd5\x29\x87\xdb\xc4\xb8\x16\x9a\xc0\xdb\x2f\x78\x61\xb0\xd6\x94\xa4\xd3\x51\x82\x04\x81\xdb\x31\xd1\xa5\xc5\x56\x13\x16\xb0\x01\xd2\x4c\xd5\x08\xc7\xb2\x13\xaf\xb5\x48\xf9\xad\x1e\xa6\x67\xa4\x53\x5b\xab\xd3\x09\xa1\x44\x66\xf5\x0b\x11\xed\x03\xe9\x2c\x8d\x50\x74\x2e\xee\x38\x2a\x9e\xff\x74\xdf\x35\xd4\x29\xa2\x7c\x79\x32\xad\x5a\x54\x03\x6c\xdd\x55\x53\xe6\xf7\xea\x93\xaf\x3a\x19\x46\xaa\x2b\x54\xd5\x1b\xbd\x15\xfe\xa6\xfb\x87\x7f\xfa\x15\xee\xf6\x9d\xa7\x7c\x3e\x1e\x32\x97\x0b\x86\x0c\x0a\xee\xcf\xb2\x38\xad\x7d\x3c\xf8\x15\x8a\xce\x6d\x50\x9a\x73\x10\xaa\xe5\x0e\x29\xf4\x34\x20\x11\x05\xcf\x6c\x4c\xbf\xe2\x5d\x59\x87\xce\xd2\xed\x87\x45\xfd\x6e\xfe\x2c\x03\xc0\xd6\x1d\xc3\x32\x03\xe1\x7b\x3e\xa0\xd3\x54\x6a\xe3\x27\xfe\x21\xbf\xf1\x92\xc9\xff\xb2\x54\xf6\x1b\xb4\xba\x9f\xdf\xf8\x8e\x27\xcf\x6f\xbc\xac\x2f\xbf\x16\x7b\xd2\x08\xbf\x2e\xd9\x89\x11\x89\x88\xef\x1c\x27\x4d\xa8\x4f\x2a\xc2\xb3\x9c\x69\x1f\x8c\x4f\x14\x54\xdd\xd3\x72\xbd\x5f\x8b\x80\x36\x53\x1e\xf0\x9b\xae\x6d\xbf\xa9\xae\xe2\xa6\x27\xf9\x8b\x2d\x87\xb4\x80\x14\x00\x44\xdf\x92\x21\x2e\x20\x74\xa0\xba\x2c\x59\x23\x95\x8a\xb4\xa9\xb0\xe4\x07\x13\x47\x9f\x47\x7f\x2d\x56\x8e\x83\xf1\xf4\x7c\xcf\x06\x45\x6f\xe8\x2b\x09\x3e\xda\x73\xa1\x36\xba\xd4\xde\xcb\x5e\x60\x01\x28\x87\xe7\x1c\xd3\x02\xdc\x0c\xd4\x44\x3c\xa1\xd3\x2e\x6c\xed\xc6\x12\x34\x94\x2b\x40\x8b\xa7\xf3\x96\x4d\x5a\xbd\x48\x28\x47\xe0\x28\xb3\xdc\xf2\x31\xd1\x69\x24\x35\x97\xe4\xb6\x2d\x20\x8a\x85\x92\x60\x09\x14\x25\x61\xb3\x26\x80\x46\xb3\xc2\x42\xff\xff\x49\x1d\xde\x54\x42\x58\x5d\x9d\xb5\x4f\xf0\x09\x9e\xc1\x53\xef\x67\x4b\xda\x34\x1c\x63\xe1\x95\xc7\xf7\x4c\xdf\xd5\x20\xe2\x99\xc6\xbb\xc4\x54\xf5\x77\xf1\x0e\xfb\x1c\x47\x91\x9f\x37\x42\x85\xac\x82\x92\x8a\x01\x17\x71\xdc\xb7\xb9\xd0\x49\x82\x3c\x91\x83\x5b\x61\xf9\xe1\x0c\x19\xdc\x7a\x7a\xb2\x54\x59\xeb\xe8\x95\xbf\x58\x40\x09\xdf\x91\xf6\x51\xfd\x4e\x69\xdb\xc7\x2e\x1b\x6e\xbc\x1e\x68\x6a\x5d\xb7\xdb\xe9\xc1\x64\xb5\x0e\x64\x27\xfc\xba\x6b\xdb\xaf\x3d\x21\x3c\xfb\x00\x65\x7c\xaf\x7a\xe0\xc0\xa8\x89\x1a\x6c\x1d\x49\x12\x24\x41\x77\x5b\x2a\x01\x6f\x43\xdb\xbe\xf5\xb0\x30\x97\xa4\xdb\xb0\x41\xdc\x54\xf5\xf3\x2f\x5b\x2d\x7e\xfe\xe5\xf9\x5f\x29\xea\x35\xc0\xa6\xb7\xcd\xb2\x37\xbc\x3d\x3f\xf5\x46\xa0\xce\x87\x34\x79\x40\xe1\xfe\x64\xf4\x60\x2d\xc4\x57\x54\x3a\x3c\x6d\x75\x27\x19\x62\x5d\xf1\xe5\xf8\x34\x90\xbe\x5c\xf4\x0d\xb1\x09\x4d\xbd\xe7\x25\x1f\xab\xf7\x8c\x22\x2a\x6b\x3f\xdc\x4d\x3d\xb3\x2f\x9f\x91\x17\x44\x9b\xfe\x4c\x74\x03\xc9\xc4\x49\xb8\xd2\x02\x59\x84\x74\xcf\x06\xb1\xb8\xd5\x02\x4b\x79\xfd\x89\x47\xd4\x51\x86\xa4\xca\x3a\x41\x79\xc4\x83\xa4\xae\xd4\xa7\x7e\xc4\x83\xee\xc5\xc4\x83\xc4\x39\xc4\x31\x56\x37\xa3\x1e\xbc\x37\x0f\xca\xa0\xf7\x0d\x01\x81\x64\xb1\x8b\x9f\x52\x3c\x3d\x14\x19\x85\xa6\xf7\x49\x7f\xa1\x26\x6f\xf3\x43\x4a\x44\xa1\x21\xdb\x36\x1c\x4b\xf3\xe9\x16\x41\xd3\x2d\x6a\x2d\x10\x63\x03\xa6\x02\xa1\x06\x2a\x2f\x07\x60\xcd\x35\xd1\xd8\xeb\x48\x96\x69\x26\x87\x0a\x22\x0f\x72\x74\xcc\x9d\x74\x3e\x92\x7c\x47\x12\x0c\x3e\x0d\xb0\x64\x42\x2c\x26\xb9\xc5\x72\xf2\xbb\xc0\x05\x3f\x94\x10\xf6\xd0\x89\x5c\xec\xca\xad\xbb\x36\x43\x28\xe3\x7b\x4e\xf4\xcb\x16\xc9\x6b\x39\x64\x84\x92\x4a\x70\x91\x75\xc4\xc7\x63\xf9\xa5\x41\x5b\x5b\xe5\x7c\xb8\x34\x40\x2a\x30\xac\x03\x89\x20\xba\x85\x85\x81\x2e\x42\xde\xf4\xe1\x62\x47\x28\x13\x18\x1d\x8e\x95\xe8\x23\xd4\xa4\x9c\xe7\x77\xd0\xb9\xb5\x3d\x3d\xc2\x10\xb4\xda\xae\xce\x72\x3f\xe5\xe2\x91\xdc\x1c\xa1\x26\xb2\x94\xea\xe3\x02\xc8\x5a\x50\x4e\x16\x24\xea\x30\x5a\x8d\x4c\xa9\x68\x07\x7b\x81\x22\xca\x1b\x2e\x1b\x1f\x2a\x1a\x68\xc3\x6d\xcb\x14\x7a\x1e\x75\x22\x4d\xb2\x0a\x3d\xa4\x68\x7a\xa6\x0e\x0f\x10\x64\x17\xa9\x50\xf1\xfd\x05\x12\x51\x13\xf6\x23\xf9\x91\x42\x3d\x98\xa1\x50\x7e\xac\x07\xd5\x01\x6e\x26\x14\x07\xb1\xab\x78\x98\x66\x65\x77\x9d\x07\x08\xfa\x43\x93\xd2\x42\x8a\xe8\x32\xf0\xf4\x49\x86\x0e\xb0\xce\x6c\xb1\x00\xa1\x8c\xd0\x70\x22\x71\xa3\x99\x9c\xc9\x34\x1c\x11\x5e\xb2\x2b\xd8\x8b\xb6\xee\x79\x0a\x6a\x38\x74\x1b\x44\x06\x31\x9f\x4c\x99\x3c\x11\x22\x2a\x46\x23\xb9\xa5\x66\xac\xc1\x6d\x8f\xe8\x50\x72\x7d\xbb\x8e\xbb\xed\x00\xd2\x94\x9c\xda\xad\x28\xf6\x06\xd4\xdb\x40\xd0\x2b\x42\xe7\xed\xff\x63\xef\xcb\x9a\xda\xd8\x81\x85\xff\xcb\xf7\x1a\xaa\x80\x80\x43\xa8\x79\x92\x34\xe3\x0d\x08\x4b\x80\x93\x93\xb7\x04\x12\x8c\x31\x8e\x01\xb3\x84\xaa\xef\xbf\xdf\x52\x6b\xe9\x56\xab\x67\x3c\x2c\xc9\xc9\xb9\xf7\xf0\xe0\x32\x1e\x8d\x96\x56\xef\xdd\x6a\xbd\x32\xbf\x0f\xfd\xcc\xb4\x68\xdd\x33\x7e\x44\x9d\x73\x75\xfc\x5b\x98\xc5\xb4\xcb\x85\xc9\xa2\xde\x2a\x3c\x98\x50\xcb\xa1\x18\x05\x11\x8b\x83\xbd\x22\x30\x0f\xf2\x0d\x2d\x07\x2e\xb5\x1b\x55\xbe\x4c\x51\x63\xaf\xd4\x68\xb2\x9d\x8c\xe5\xd6\xa2\xf3\x3c\x93\xfc\x89\x15\x1f\x4e\xee\xef\x48\xf5\x8d\x98\x47\x47\x62\x36\x0c\x90\xf9\x00\x0f\x25\xa6\x3d\x40\xe6\xb1\xe6\xc8\xe3\xd8\x50\x41\x32\xf2\x6a\xa5\xfd\x53\x39\xc8\x5a\xc9\x17\xef\xcd\xf2\xb8\xcd\xe5\x82\x8c\xb6\x08\x98\xef\xad\xc0\xc8\x09\x2a\x42\x0b\xb4\xd7\x6c\xe9\x58\xe1\xbe\x23\xab\x93\xc9\x6a\x1e\xdb\xd1\x3c\xdb\xca\xfa\x15\x24\x78\x72\x27\xaf\x80\x5c\xcd\x89\xd3\xb6\x33\xf5\x6d\x10\x41\xdb\xd1\xd5\xb8\x61\x8b\xf9\x3a\x1b\x6d\xa0\x14\xfe\x39\xb1\x3d\xe3\x95\x46\x0a\xf7\xd6\xc1\x2f\x7e\xe5\xd5\xf8\x48\xb3\x2a\xcb\x3c\x81\xf8\x21\x49\xfc\x44\xec\xcf\x2a\x8e\x45\x09\x8f\x5e\x38\x32\x57\xa2\xff\xdb\xe3\x45\x7b\x9c\x34\xcc\x59\x40\xb2\xf1\x0f\x99\x29\xf8\x1f\xf8\xff\x10\x51\x5d\x2f\x38\x24\x26\xfd\xdf\xbe\x34\xcc\x13\xf9\xd3\x02\xda\x68\x23\xe0\x16\x89\x68\xcb\xde\x0a\x7e\xf2\x41\x62\x93\x8c\xa7\x4a\x2e\x8a\xd4\x7c\x28\xdc\xb1\xea\x85\x0a\xca\xd3\x28\xba\x5e\x39\xf8\xdf\x8e\x67\xaf\xbb\xef\xce\x78\xf3\x76\x3b\x53\x84\xd9\x1e\x8d\xcb\x05\x6a\xab\x14\x35\x5e\xac\xc0\xc6\x19\xdf\x55\x24\x35\x8f\xbb\x95\x9b\x0d\x33\x37\xd3\x82\xa7\xda\xb5\x40\x53\x92\xff\xf1\x1c\xcf\xe1\x02\xe8\x8a\x06\xe3\x02\x75\x10\x41\x89\x7e\x33\x14\x81\xf0\x2d\x75\x37\x65\x16\x74\x82\x17\x0f\xbe\x5b\x6a\x39\x7d\x14\x6e\x9c\x36\xe8\xfb\x42\x40\x30\x3e\x64\x54\x7e\x35\x35\xa9\x19\x44\x66\x8d\x2d\xa3\x97\xb2\xe4\xbe\xaf\xec\xf5\xf4\xa3\x70\xe9\xd9\xec\x25\x89\x4c\x58\xc1\xb5\x07\x5f\x1d\x8c\x46\x7e\x52\x52\xf1\x7e\xc9\x88\x78\x5a\xac\x63\x46\xdf\xc7\x1a\x23\x78\xfa\x94\xd7\x1c\x83\xae\xba\x79\x07\xcc\x3b\x87\x88\xc0\xdc\x3c\xd7\x55\x32\x64\x73\xe3\x69\xd9\xde\x79\x27\x71\xc4\x66\xd2\x78\xca\x6f\x85\x2b\x99\x85\xe7\x88\x5a\xea\xda\x85\x0b\x12\x1f\xc5\x8b\xab\xa4\xa4\x1c\xfc\x86\xd1\x15\xe0\x0f\x0c\x1c\xc9\x85\x50\x6c\x58\x96\xc2\xc2\xd2\x6c\x0c\xba\x05\x9f\xe6\x88\xe2\xdc\x17\xe5\x97\xe0\x88\x2f\x58\xb6\xb2\xc8\xc5\x92\xd6\x23\xdd\x60\x89\x42\x4b\x8c\xc6\x32\xc3\x34\xe5\x20\xd4\xfe\x7f\x4e\x5c\xa4\x16\x0d\x60\xc0\xe8\x27\xf7\xe4\x2a\x6d\x22\xdb\xba\x24\x76\x3c\x2a\xb9\x07\x8f\xe1\x4b\x1a\x3c\x40\x85\x92\x46\x27\x58\x32\x79\x72\x7a\x61\xfe\x54\x07\xa3\x28\x55\x19\xc0\xd3\x93\x12\x7e\x1d\xff\x3a\x32\xab\x75\xbc\xb7\xdb\xba\x49\x25\xc2\x86\xbd\xfc\xb2\x98\x4e\x02\xe3\xbb\xde\x9f\x86\x2b\xc9\xd9\x9d\x0d\x31\xee\x43\x4f\xae\xd7\x12\x99\x88\x31\x4c\x4d\xc2\x64\x87\x94\xab\x18\x72\x62\xb6\xf9\xbd\xc4\xb2\x9b\x95\xb5\x51\xc3\x82\x44\x5b\x17\x28\x38\x03\x9f\x50\xfc\x9d\x1f\x70\x60\x66\x4c\x6e\x12\x6c\xea\x56\xe3\xff\xc9\xf4\x14\xb5\x06\xcf\x25\xea\xc5\x58\xaa\x09\xd1\x28\x20\xce\x91\x65\xb6\xd6\x24\x28\x74\x8c\xf8\x32\xbe\x22\x94\x0c\x2b\xc5\x48\x0f\xfe\xdb\x1c\x80\x8b\xe6\x21\x6f\xc2\x62\x92\x82\x74\x28\x5c\x91\x58\xbc\xd5\x31\xa7\xa9\x87\x2c\x08\xb9\x80\x7c\x16\x10\x5f\x7d\xa8\x27\x85\xc9\xa2\x50\x0f\x43\x6c\xb6\xea\x5c\x0b\x6f\x72\x6c\xd7\xd9\x1d\x75\x6b\xe9\x94\x84\x9d\xb2\x8f\x26\x29\x9f\x88\x5f\x81\x15\x14\x24\x80\xff\x04\xc3\x73\x2c\x47\x0a\x9f\xe0\xe0\x78\xcc\x7a\x58\xe8\x78\x9a\x66\x61\xd5\x9a\x05\x4d\x9e\x36\xbb\x5f\xbf\xa0\x8a\x65\x61\xb2\x68\x29\xcf\x54\xfb\x97\xae\xb2\x7e\xdb\xd8\x2b\x35\xfe\xc2\x3c\x8c\x9c\xb8\x54\x36\x6a\x02\xdb\x38\xac\xcf\xbd\x87\xef\x18\x2f\x93\xd2\xb3\x04\x01\x44\x1e\x44\x15\xb9\x4b\x72\x61\xdb\x41\x78\x6a\x9e\xf4\x8a\x00\xe1\x35\xdf\x43\x2c\x2d\x2b\x08\x9b\xa9\xe1\xd6\x69\x7d\x66\x05\x3c\x0e\x2c\xf0\x5a\x4b\x81\xf8\xe2\xb9\x21\xb2\x45\xaa\x40\x90\x80\xd7\xcf\xe0\x84\x4f\xf0\xc0\xd4\x47\x70\xdb\xb2\xcb\x5f\x87\x43\xa3\x3e\x61\xc0\x72\x9a\x3f\x7e\x4b\x5f\xe7\x9d\x4b\xbe\xe0\xe6\x6f\xc2\x47\xe1\x2e\x12\xc0\x63\x13\xed\xf0\x7a\x66\x5a\x04\xc7\x0b\x56\x45\x47\x0e\x7a\xb7\x71\x80\xb5\x45\x94\xb6\xef\xc6\xec\xc3\x2e\xd9\x0d\x58\x25\x4a\x55\xf9\x5c\x4d\xd4\x4d\xb3\x8c\x1c\x4e\x68\x8c\x6b\xd7\x68\x7a\x39\x37\x4c\x67\x49\xe5\x00\xb2\xb7\x5c\xf7\x99\x67\x49\x48\x89\xbe\xb0\x5c\xc3\x2c\x9f\x6a\x27\x6d\x50\xdd\xb2\xc9\x4e\x7a\x30\xac\xdc\x3f\x57\x03\x31\x7b\x6e\xe1\xd2\xef\xca\x56\x4b\xaf\x57\x1f\xdb\x40\x26\xaa\xb9\x1e\x6b\x5f\xee\xab\x11\xb9\x5d\x53\x22\x59\x1e\x20\x13\x99\xee\x93\xf4\xc7\x48\x5d\x59\xf4\x84\xa1\x7b\x9d\x56\x91\x25\x0c\xbd\x56\x3c\xf6\xb9\xe3\xbf\x3c\xba\xd8\x38\x60\x1e\x3d\x6a\xbd\x09\x29\xc0\xf9\x9d\x96\x6d\xac\xe3\x02\x4e\xcb\xb6\x34\x63\xfd\x28\xcf\x35\x4f\x11\xeb\x61\x13\x5a\x04\xed\x84\x6e\x4a\xd1\xaa\xc5\xae\x73\xc6\x19\x18\x5e\x93\x3e\x33\xce\x2c\x58\x36\x27\x14\x87\x2d\xd7\x8c\xf8\x54\x89\x0a\x59\xa3\xf0\xf6\x68\x81\x2a\x16\x63\xed\x4d\xcb\x5d\xfd\xb7\x2c\x25\x53\xa1\x6b\x3d\xc6\xd8\xb7\x34\x32\x36\x69\x16\xa0\xab\x5d\x72\xc9\x0b\xeb\xa8\x9d\x58\x58\xf5\x9a\xb1\x60\x6e\x73\x87\x3e\xce\x36\xf6\x5a\xf0\x9b\x44\x5b\xa4\xba\xe6\xf2\x70\x62\x5e\x35\x41\xba\x2d\x11\xd6\x12\x26\x31\x55\x98\x7c\x97\x96\xd2\xec\x67\x65\xe0\x43\xd3\x84\xe8\x40\xb5\x08\x98\x1b\x32\xcb\x9a\xa1\x1d\x77\xe8\xd4\x30\xe4\xdc\x1d\xf1\xdb\x0d\xe9\x17\x19\xa8\xf5\xc6\x15\xce\x04\x63\x87\x88\xff\x94\x7c\xe2\x88\xe5\x33\x23\xf6\x4d\xeb\xcd\x93\x0c\xff\xc1\x94\xab\x5f\x2a\xd3\x9b\x11\xbc\x76\x27\xa4\xab\x21\x1e\xf8\x5d\x9e\xf2\x4e\x84\x83\x53\xa3\x2c\x1d\x7c\xa1\xe6\xb3\xf6\x4f\x41\xa9\x96\xe1\xd4\xe9\xae\x1c\x73\xa0\x71\x7a\x90\xb2\x5a\x10\x81\x58\xd8\xc3\xb4\xe4\x36\x2a\x36\x6c\xbb\x67\x6b\xed\xf6\x4c\x8c\xa4\x36\x4f\x9a\x45\x5c\xd9\x5c\x6a\xb2\x00\xd0\x7a\x80\x73\xbf\x80\x2a\x4a\x99\xed\x02\x8f\xe7\xe6\x79\x2e\xa7\x51\xf5\x13\x4f\xee\x17\xec\x7c\x2f\xf2\x67\x56\xa0\x10\xbe\x85\xeb\xfb\x66\x25\x57\x43\x52\x3b\x89\xac\x05\x4f\x6b\xb1\x33\x89\xbc\x9a\x05\x76\xf3\xf1\x05\x77\xde\x46\x5e\x4a\xbb\x16\x0a\xc3\x0a\x4a\xe4\xa6\x58\x32\x71\x1a\xaf\xec\x62\x0b\xab\x54\xcd\x35\x20\x49\xa7\xf3\x6c\x1e\x95\xe2\xc5\xf0\x1e\x35\x07\x43\xf4\x73\xa0\xf6\x93\x1d\xd3\x00\x49\x82\xd0\xc5\x35\xd2\xc0\x68\xca\xb6\x0a\x57\x7b\x04\x1d\x31\x18\xc9\x48\xd9\x00\x3f\xaa\xce\x8c\x7b\x81\x19\x7a\xb3\x1b\x79\x06\x62\x22\xfc\x86\xbb\x96\x9f\x1c\xed\xf0\x3a\x9e\x05\x2b\x55\xc8\x26\x87\xa0\x46\x80\xe2\x46\x7c\x94\x6e\xad\xc5\x36\x4f\x98\xd7\x03\x75\xa3\xa1\x84\x47\x3c\xc6\xdf\x6c\x93\xb3\xca\xdf\x1c\x97\xd0\xdf\x88\x62\x0a\xcd\xc5\xa1\x8e\xc2\xf4\x72\xee\x82\x14\x36\xa3\xb7\x94\xd2\xda\x4e\x38\x89\x9c\xac\x02\x75\xd2\x77\x71\x43\xc3\x29\xdc\x4e\x56\x3a\x47\x48\x06\xe3\xe7\x4d\xe3\xce\x17\x2e\xad\x2b\xd1\x8e\x87\xcc\xeb\xb8\x3a\x4c\x53\x39\x92\x4a\x06\x4c\x8b\x6c\x3e\xd7\x4a\x76\x84\xf5\x80\x1c\xe2\x63\xe3\x85\x29\x06\xf3\xb4\x58\x0f\x28\x24\xd1\x2c\x6b\xea\x21\xbf\x9d\xeb\x4f\xe8\x01\x21\xb9\x2b\x5c\x3d\x92\xf7\x30\xfd\x5f\x3a\x87\x97\xe3\x83\x70\x6f\x60\xf3\x2a\xca\x57\x80\x43\xa3\x8c\xe6\x0c\x08\x03\xe7\x28\xf2\x94\x25\x68\xb1\x75\xa0\xf7\xe4\x72\x2b\x34\x6d\x9b\xa5\x45\x7e\x57\x5f\x6a\x14\xa7\x01\xeb\x55\xb9\x02\x12\x53\x7b\x44\x79\xfb\xb4\xd6\x6c\x0d\xe9\xe4\x0b\x5e\x8b\xe9\x57\xb6\x46\x9e\xc9\x14\x4d\x83\x46\xce\x73\x57\xc9\xfc\x14\xb9\x3b\xa2\x23\x2b\x0e\x51\x16\x16\xa4\x2a\x46\x8d\x53\x3a\xa9\x99\x23\xa7\x54\x55\xec\x02\x20\xec\x09\xb5\x58\xb6\x30\x14\xd8\xa9\xf5\x21\xac\x61\x92\x5d\x99\x57\x6b\xe5\x26\x98\x39\x31\x5c\x21\x4a\xd7\x4e\xba\xc1\x41\x93\xa5\x77\x0c\x01\x2e\x1b\x99\xe5\x4a\xe7\x70\xdb\xac\xaf\xb2\x2a\x1f\x28\x25\x1f\xec\x01\xdb\x5c\xf6\x14\xbf\x31\x3d\x38\xd1\x32\xae\xbb\x1c\x27\x5b\x40\x23\xc1\xd3\x4e\x56\xc0\xbc\x45\x0f\x69\x0d\x69\x5a\x68\x30\xe1\x0b\x4d\x25\x61\x05\xc5\xe4\x37\x33\xaa\xa7\x11\xbc\x84\x23\x03\xef\x93\xef\xd0\x4a\xfc\x0c\x29\x1a\xb5\x67\xf2\x91\xce\x93\xee\x3a\x16\x13\x8b\x14\x99\xdd\x11\x13\xf7\x22\xab\xf9\x2d\x4d\x1e\x67\x52\x6b\xa9\xe7\x5d\x3f\x66\xdb\x8c\xc8\x04\xdf\x90\x6a\x25\xf7\x89\x44\xaf\x12\xf2\x33\xc6\x11\xf7\xa2\xa1\x82\x29\x66\x25\x06\x54\xda\xa4\xa5\x96\xea\x11\xa8\x8e\xbf\x8e\x5a\x55\x9b\x7b\xea\x60\x09\xd1\x74\x1a\xaa\x8b\xfe\x86\x21\xd0\xbc\x0a\x43\xac\xbe\x98\xfa\x7e\x91\xb8\x45\xa2\x62\x88\x53\x49\x17\x0d\xb0\x36\x82\x24\x29\xc8\x15\x18\x92\xa0\xa9\xe3\xc8\x5e\x6b\x7c\xc6\xae\xb1\xf5\x36\xec\x1f\x97\x53\x8b\x01\x50\xbb\x4c\xca\x9e\x9f\x8b\x06\xbf\x74\xce\x75\x8c\xd1\xeb\xf7\xcf\x85\xf3\xaf\x45\x5d\x16\x26\xf9\x07\x24\xfe\xa4\x81\x11\x2e\x90\xa9\xc8\xaa\x1b\xb6\x33\x51\x0e\x36\xb3\x2b\x33\xd9\xec\x6b\x02\x00\x93\x86\xfd\x43\xef\x6c\x98\x64\x52\x76\xb3\x61\x6a\xfc\xb0\xc7\x73\xd1\x1a\x15\xd4\xb6\xac\x34\xa9\xa5\xdc\x52\xe7\x2d\x58\xf1\x78\x3e\x49\xef\xd5\x81\x97\x30\xca\x83\x2a\x57\x85\xe7\x6d\x70\x6c\x24\x9f\xb4\xa1\xf8\x1b\xc0\x8b\x79\xc9\x60\x24\xf6\x5b\x24\xde\xfa\xf2\xc4\x2a\xf5\xe8\x8c\x1d\x38\xaf\xf4\xd2\x0d\xf1\x91\xc6\xf1\xa0\x89\xe1\x2e\x66\x1c\x90\x3a\xb4\x70\x92\x18\x53\xa8\xb0\x16\x89\xa4\x7d\x36\x13\xf6\x2a\x0d\x96\x4a\x1e\xe0\xfc\x95\x69\x76\x1f\x45\xaa\xe5\x12\xe8\xe6\x5e\xc6\x8d\xec\xe5\xd6\xde\x4f\x68\x43\xfd\x81\x48\xf8\xa9\x67\x30\x81\x98\x60\x70\xe2\x4a\xba\x29\x01\x7f\xe0\x9b\x80\xd8\x41\xbb\x4c\xaf\x95\xc9\x76\x0e\x8f\x28\xd1\x97\x30\x31\x0b\x76\x6e\x9f\xde\x3b\x32\x91\xed\x86\x76\x3b\x27\xc1\x1d\xb7\x8f\x3d\xc5\x26\xb9\x33\x75\xb5\x5c\x00\x8d\xdf\xbc\x30\x78\x82\xb1\x3a\xe9\x58\x21\xae\x2e\xdd\x57\x4a\x09\xbe\xee\xbb\xa9\x51\xdb\x0b\x17\x7e\x60\x31\x94\x3a\x0e\xa5\x79\x42\x81\xd4\x2d\xfe\x86\xa1\x1e\xc4\x24\x6c\x57\x61\x32\x16\x3b\xea\x20\x05\xbe\xb0\x2f\xfc\xa8\x8d\x83\x2d\x57\xec\xfe\x92\xff\x76\xf5\xff\xd6\xae\xca\xe2\x03\x19\x6e\x2e\x3e\xe6\x2f\x16\x1f\x99\xa6\x97\x6c\xc7\x5d\x2b\x7e\x85\x43\xa4\x51\x12\xaa\x24\xfc\x79\xf8\xfc\x1a\x2b\xc7\xa7\xf0\x20\x25\x02\xaf\xc3\xfd\x79\x7b\xfe\x04\x3a\xc4\x41\x9a\xb4\x8b\x55\x2d\xa6\x54\x44\xd2\xe2\x36\x47\x6e\x76\xce\xfd\x6e\x4b\xe0\xc6\xbe\xf2\x91\xaf\xff\xbd\x98\x25\xc1\x24\x61\x71\x33\x5d\x8f\x82\x8c\x2b\xe2\x52\x52\xde\xb3\x08\x3a\x0d\xba\x12\x76\x99\xe8\xea\x9d\x97\x60\xdf\xe2\xf4\xc4\x82\x5c\x85\x3a\x50\xf5\x67\x05\x1e\xb2\x22\x73\xf5\xa7\x0f\xa4\x2b\xca\x18\x1a\x36\x67\x4b\x22\xd1\xb3\xb9\xa7\xda\x29\x5b\x45\x26\x4a\x6a\x2c\xc9\x50\x33\xba\x96\xd3\xc0\x37\x21\xc5\xc4\xf0\xbb\x21\x7f\xaf\x9e\x8d\x66\x0d\xed\x32\x46\x16\x61\x8a\xe5\x9f\xc0\xee\x5e\xcc\xbe\x0a\x72\xad\xb0\xa4\x98\xa4\xfe\x21\x8d\x75\x79\x0a\x48\x70\xdc\x15\xee\x11\xc6\xf7\x98\xef\x44\x42\x3d\x81\x67\x36\xa2\xde\x93\x95\xa8\x66\xae\x9b\x4b\xb5\x19\xe7\x2b\x64\xa8\xf0\xdb\xb6\xfb\xa6\x94\x21\x48\xe0\x30\x01\x3b\x44\x1c\x42\x3e\x8d\x19\x7a\x3d\xef\xe7\x4f\xfc\x03\xed\xd2\x29\xc6\x86\x69\x77\xb5\x6e\x81\x38\xcd\x47\xdd\x66\x9e\xd8\x0d\xcc\x33\x02\xb6\x70\x59\x42\xbf\x6f\x9e\xc4\xfa\x0f\x38\xfa\x9d\xbc\x77\xa5\x95\xba\xca\x0a\x18\x25\xd4\x99\x24\x0f\xb5\x6a\xcf\x01\x94\xbd\xce\xf0\x05\x73\xb8\x68\x71\x1f\xe8\x9e\x65\x20\x44\xbe\x4e\xef\xcc\xf1\x9d\x32\x7c\x47\xe9\x24\x78\x2a\x4a\x09\x13\x7f\xc9\xb4\x13\x07\xfd\xdd\xaf\x98\x36\x23\x20\x92\x1c\x51\x9b\x79\xa8\xac\x26\x65\x3f\xed\xac\xf7\x05\x01\xc6\x10\x2b\xb5\x85\x2e\xfb\x76\x6e\x27\x12\xf6\x3d\x92\x84\x27\x74\x80\x65\x57\x29\x86\xba\x78\xd7\xd4\x08\xb2\x7f\xca\x3c\x6e\xea\x6e\xf1\x9b\xff\x2a\xa5\x54\x51\x18\x73\xad\x95\x83\x3a\x15\x3a\xc8\x71\x30\xeb\x0e\xe1\x81\x22\x89\xdc\x1f\x19\xf4\x39\xff\x13\x92\xaa\x8c\x31\xec\xe6\xc9\x8d\x6d\xc2\xf1\x77\xe3\x95\xe6\x79\x46\xe4\xa3\x9f\x1c\xcd\xa9\x4b\x0a\xaa\x86\xb2\x6d\x98\xd2\x9a\x9c\xe3\x0b\x99\xee\x68\xb1\x27\xdc\x7a\x8d\xdc\xd5\xcc\x75\x41\x76\x8b\x14\x9a\xd8\xd8\x17\x8a\x29\x6c\x9c\x84\x51\xd7\x2a\x2e\xf0\x59\x36\x85\x51\xbc\x0c\x7d\x72\xcf\x2c\x3e\x66\x3e\xca\x34\x58\x9b\xbd\x82\x6e\x77\x7c\x25\x61\x60\xe1\x42\x3c\x7c\xe5\xa3\x7c\x9b\xb6\xf7\xec\x92\x79\xb3\xad\x9c\xd0\x1a\xf3\x26\xfa\x04\x44\xbb\x06\x73\x52\x25\xa8\xa7\x3e\xd5\x82\x5c\x8f\xb1\x2b\x5c\x1c\x9f\x24\xd7\x4e\x0d\xcf\x2f\x49\x15\x0a\xa7\xee\xe2\x6f\xc4\x18\x71\x5a\x0f\x5f\x24\x62\x52\x32\xa1\x89\x87\x06\xbf\x0e\xc1\xf7\x17\xed\x1a\x1d\x38\x1f\x53\x69\x6a\xd5\x9c\x04\x69\xd7\xca\xa7\xbe\xde\xe2\x69\x3a\x0c\xe2\x4e\x97\xac\x08\x5f\xc6\x90\x1e\x8d\xd3\x00\xfa\x27\xb1\x81\x87\x8a\xae\x3d\xd3\x47\x0b\x76\x9c\x8a\x8f\x95\x24\x3a\xdc\x45\x38\xd6\x16\x02\xa2\x7c\x05\xe7\x99\xab\x7d\x1b\x65\xfd\x98\x6c\x69\xf0\x1e\x11\x7e\x85\x73\x25\xd3\x55\xd1\x26\xcc\x58\xe0\x55\x08\x0b\x57\x02\x1a\x8f\x34\x25\xce\xf6\x63\xae\x51\x61\xf7\x69\x96\x31\x57\x2f\x1d\x62\x63\x1d\xc3\x04\x6e\xc9\x11\xf9\x88\xb8\xde\xe2\x03\xbe\x98\x23\xf2\xd8\xb4\x83\x35\x3d\x6e\x84\x72\x40\xd2\xbd\x91\xd1\x08\x3e\x41\x3b\xe4\xa8\x47\xc0\xf2\xc2\x69\xa1\xfc\xaf\x41\x80\x70\x4f\x4c\xf8\xff\xb4\x9e\x3f\x84\xb1\x4f\x09\x14\x19\x33\xab\xe2\x59\x18\x82\x4c\x40\x55\x28\x76\x18\xbf\x36\x18\x90\x67\xec\x91\x25\xaf\x72\x47\x29\x93\xb9\x4e\x8a\x24\x97\x38\x30\xa8\xe4\xc1\xa6\xa9\x49\xd0\x17\x81\xc5\xfa\x4f\x5e\x9a\x64\x10\x43\x6e\x2d\xd1\x12\x5a\x4b\x6c\xf9\x69\xa9\xb7\x6c\xf9\x88\xe8\x52\xea\x20\xf3\x27\x32\x6c\xeb\xe5\xf1\x7a\x14\x54\x5d\x49\xbc\x90\xed\xe4\xa9\x53\x5e\x21\x53\xe5\x63\x55\x2e\x19\x55\xa9\x57\xd0\xb2\x54\x75\xf3\x2a\xfd\x3c\xfb\xcf\xa9\x79\x85\x52\x0f\x95\x7a\xad\x45\xfd\x1b\xfe\x94\xf9\x61\xf2\xb5\x46\x68\xcc\xcd\x1f\x07\x0d\x65\x6e\x84\x19\x2f\xfc\x0b\x7a\xfc\x43\x38\x9c\xc6\xd4\x54\xe0\x29\x51\x4e\x17\xce\xef\x0e\x44\x20\x25\xba\xa3\xfd\x85\xdf\xd2\x9b\xbf\x22\xc5\x74\xfc\x21\x53\xc6\x7a\x09\xe7\x66\x9c\x13\xed\x78\x4c\x55\x65\x41\x82\x1a\x77\xde\x26\x7e\xe5\x69\xf7\x05\x9e\x68\x42\x3e\x9a\x38\x72\x26\x9a\xb8\x23\xd8\x50\x89\xa1\xba\x46\x73\xa6\xd1\x21\x89\xf0\x64\x2e\x41\x74\x32\x08\xde\xa3\x52\xec\x4b\x72\x8f\xc2\x37\xe9\x01\xf6\xca\x3c\x4f\xcc\xb7\x8d\x86\x19\x7e\xa4\xfa\x47\x97\xab\x82\x6c\x10\xf6\xad\x4a\x02\x80\xd4\x71\xd7\xf6\x3d\x83\xde\x43\x76\x36\x92\x01\x32\xe1\xc1\x9b\x99\xde\x62\x32\x6f\xc2\x35\xbd\x9b\x94\x95\x4c\xa0\x39\x35\xd2\xfc\x04\xd5\x40\x30\x01\x67\x15\xeb\xbc\x70\xb9\xcc\x5e\x82\xde\x94\x4a\xdd\x80\xd7\x61\x1e\xb5\x21\x04\x2c\x22\x99\x7c\x25\xbf\x94\x71\x9b\xba\x37\x52\x00\x2e\xc7\x31\xf8\x21\x75\xa9\x64\x15\xdb\xdb\x84\x1e\x3b\xf4\x14\xba\x49\x4d\x54\x9c\x35\x06\x72\x85\x94\x95\x52\xec\x01\x57\x98\x5b\xdb\x1d\xb9\xbc\x4f\x90\xc6\x8f\x82\x82\x2f\xe8\x0d\x3c\xf9\x89\x2d\x33\xc2\xaa\xe4\x08\x91\xbb\x0f\x66\xc2\x4d\xf7\xb8\x7a\x66\x95\xc3\x6f\x72\x79\x8a\x9a\xed\xf2\x17\x06\x16\xac\xfe\x37\xb2\x51\x69\x87\x52\x20\x67\x15\xb3\x30\xa0\x80\x6b\xca\xb7\x77\xcd\xf0\xcd\x91\xbc\xfa\xb9\x96\x34\xcb\xde\x63\xaa\x2e\x43\x95\xb4\x7f\x6f\x9c\x7a\x03\x8c\x79\x3f\xa2\x9e\x1f\xeb\xaa\x37\x4d\xa4\xa3\x25\xfd\x92\xa8\x96\x42\x39\x01\x31\x4e\x98\xf4\xba\x61\x44\xe5\x94\xf9\x33\x6b\xa6\xb4\x56\x2e\x18\x5e\x00\x55\x41\xca\xa4\xb2\xfd\x4a\x0f\x5e\x34\xa2\xbe\x84\x2b\x42\x54\xc3\x4b\x1a\x69\xb0\xb0\x3b\xcd\xe3\x20\x89\x31\x8f\x5f\xd3\x88\x53\xcf\x20\x5b\xcd\x5f\x08\x90\x94\xa2\x5e\x6e\x82\xf6\x3d\x2d\x5f\x4d\xfb\x7e\xd5\x3f\x53\xed\x38\xbf\xd4\x8a\x03\xa9\x33\xf3\x4e\x81\x41\xbc\xcf\x98\x81\x52\xe6\xc4\x7e\xcc\xc4\xc3\x7c\xae\xce\x03\xf7\xc6\x40\xe1\x3b\x83\xed\x07\xa4\x68\x13\xc6\x4d\xe0\x5f\xf4\x8e\xc2\x9e\x09\xd7\x69\xa7\x8e\x86\x69\xaf\x40\xf7\x3e\x46\x6c\x70\xb3\x22\xab\x2c\x5c\x88\x30\x11\xff\xf4\x30\xc9\x5b\xad\xd4\x5b\xf9\x1e\xf9\x82\x45\x10\xf0\xee\xd4\x3c\x6e\x95\x9c\xe9\xc5\xa4\xee\xda\x22\x00\xa8\x6c\x31\xd6\x8b\x3c\x1e\x3b\x60\xba\x96\xf4\x5a\xca\x7b\x68\xbc\x11\x07\x46\x80\x06\x7e\xb4\x69\x38\x4f\x4e\xd1\xdd\xf9\x6b\x89\x3f\x27\x85\xad\xeb\x16\xc1\x8f\xff\x32\xaa\x21\xe2\x9f\x41\x69\x2b\x29\xaf\x13\x76\x83\x31\xfc\xdc\x6d\x74\x57\x35\x18\xbe\x11\xca\x05\x1e\xe7\xa6\x85\x31\xb0\x96\x5e\x9e\x64\xf9\x48\x03\x65\xe8\x65\x66\xb7\x5c\xb0\x85\xa6\x09\xa7\x7e\x29\x68\x8e\x20\x3a\xa0\x03\x82\x5f\x7f\x0d\xe3\xa1\xb3\x05\x5f\x4e\x32\xb7\x47\x74\x76\x52\x96\x02\xce\x89\xc9\x76\xec\xdf\x60\xd2\x82\xd4\xd7\xad\x56\xea\x56\x13\x2a\x80\x56\x91\x47\x40\x67\xdf\x62\x7d\x80\xe4\xc6\xd2\x71\x49\x10\x29\xf6\x5d\xf0\x8b\xd7\x31\x30\x16\x01\xe3\xc5\x2a\x4b\x05\x91\xb4\x19\x01\x1f\xb8\x3a\x95\x20\xca\x6a\x29\xf6\x2a\x89\xc9\x3c\x3b\x65\x59\xce\xf4\xf1\x48\x5a\xa5\xf9\x61\x2c\x94\x44\xc0\xcc\x9c\xd7\xb8\x65\xcd\x29\x26\xa9\xf9\x41\x56\x2e\xe8\x25\x3c\xe2\x97\x2a\x0d\x15\xb1\xa4\x53\xf7\x2a\x67\x32\x09\xec\xb2\x8a\x16\xa9\x3c\xd8\x46\xf4\x05\xff\x57\xfb\x00\x24\xfe\x46\xf4\x58\xdc\xa1\x88\x59\x5e\xa7\x96\xc2\xbc\x85\x31\xcb\x49\xa0\x97\xba\xaf\x51\x7b\x29\x8c\xe9\x06\xcb\x3d\x86\x6d\x56\xc1\x6b\x7c\x6b\x38\xf1\x42\xf8\x55\x29\x73\xa6\xed\xe7\x84\x4a\x3a\x0c\xf9\x24\xbc\x71\xc3\xe1\xf5\xc5\xd0\x4e\x37\xbb\x83\x40\x29\x73\x47\x02\xf8\xd3\x3e\x91\xb3\x94\xce\x78\xd4\x42\x59\x36\x54\xb0\x6c\x9a\x34\x5b\x46\xf2\x2c\x90\x0f\xe6\xa1\x8e\x04\x79\xd9\x27\x13\xc5\xb7\xf3\xc4\x83\x31\xad\xab\xa3\x94\x51\x0f\xfd\xfa\x18\x33\x22\x3d\xe2\x95\xb0\xed\xf7\x7e\xf0\x08\xa0\x08\x90\x04\x15\x3a\x15\xe1\x10\xf8\x0d\x85\x1e\x2c\xce\xd1\x60\xe1\x6a\x8c\xa0\x28\x90\x6a\xf7\xb0\x34\x0e\x49\x1a\x33\x59\xcd\xe8\x2d\x0f\xe2\x3f\x76\x23\xdb\xea\x0b\x9a\x52\x9f\x6c\x1e\x0d\xa0\x24\x78\x39\xd5\xfe\xa0\xed\x8f\x3e\x20\xef\xa5\xce\x59\x0c\xbe\x95\xa4\x2d\xae\x65\xfb\x2f\x59\xec\x06\x93\xce\x1a\xa7\x08\xfb\xfb\xd8\x6a\x7f\x11\xa8\xc2\xfe\xfe\x8c\xeb\x48\xf6\x73\xc4\x8b\x0c\x01\xc9\x81\x58\xf8\x4c\xe6\x54\x18\xa3\x9c\x5f\x67\xd2\x4d\xe0\x41\x33\xdd\x72\xfb\x72\xe4\x3a\xf6\x11\x01\x81\xb6\x70\xf2\x0c\xab\x70\x05\x8c\x06\x9a\xbf\x45\xca\x26\xec\x01\x72\x29\x76\xb9\xe4\x16\xd0\xc6\x70\xfd\x10\xfb\xe5\x61\x7b\xdb\xf0\x67\xdf\xfe\x9c\x1d\xad\x43\xfd\xc6\x12\x11\x4f\x65\x82\xed\x5c\x7b\x39\xb9\xc2\xbb\xf7\x26\xec\x05\x52\xad\x91\xa8\x36\x1c\xdd\x67\x55\x8d\x98\xf1\x95\x3b\x29\x67\x59\xe5\x12\x06\xc5\x5c\x9c\x25\x35\x13\x24\x45\x01\x3f\x72\x91\xbe\x70\x3c\x96\x20\x92\xbc\x9c\x14\x6a\x41\xb7\x1c\x4b\x14\x62\xea\x31\xce\x10\x77\x3c\xef\xfa\x21\x4b\xa4\x40\x37\x35\x3b\xc5\x10\xb5\x13\x5a\xf4\x42\xf2\x05\x56\x18\x3f\x85\x2e\x10\xed\xb0\x4d\x22\xce\x42\xf4\x1f\x15\x16\xe8\x16\xad\x36\x34\xd3\x50\x79\x47\xdf\xb1\x64\x2f\x33\xa6\x1a\xa6\xf4\xd8\x23\xf6\x44\xca\x64\xbd\x2e\x88\x9a\x3d\x73\x60\x61\xdf\xa1\xb3\x70\x6b\x38\x76\x16\xdb\x78\xca\xe4\xbb\x88\x46\x0f\xae\x03\x49\xa0\x66\x52\xab\xa5\x98\xde\x29\x41\x82\x99\x49\x15\x56\x0e\xc5\xa8\xb8\x54\x1b\x48\xe2\x3a\xb9\xf6\xb3\x66\xd8\x31\x93\x82\x95\x1d\x41\x34\x94\xec\x35\xf4\xfc\x44\x14\x0b\x8c\x06\x91\xb8\xce\x0b\xce\xa8\xa9\xcb\xfd\x34\xd2\x7b\x0c\xf9\xf1\xa9\xf4\xaf\xe4\x53\xab\xd2\x90\xb8\x74\xaa\x47\xd2\x82\x52\x6a\xa1\x96\x8e\xa4\x03\x84\x86\xf3\x76\xe5\x28\x12\xc9\x75\x6d\x1c\x20\xa6\xf5\xa2\x2b\x97\xcb\xe3\x45\xa2\x0b\x7d\x58\xaf\x2b\xba\x1e\x88\xe8\xba\x59\x24\x62\xb0\xba\xce\x7c\xd8\xba\x69\x72\x94\x9c\x68\x40\xd4\x53\xf2\x46\x2b\xf5\xc6\x37\x39\x37\x4a\x9d\x93\x09\x56\x92\x4c\x7b\xdb\x90\xe6\xf8\x4b\x65\x1a\xbe\x8e\x7e\x1f\x26\x2b\x80\x92\x5c\x5e\x90\x77\xdd\x4b\x52\x46\xb2\x65\x99\xc8\xe7\xb2\xa5\x9d\x54\x1b\xcb\xde\x27\x49\xaa\xe5\x08\x3f\xa1\x93\x45\x97\x87\x70\xf2\x2f\x93\x81\x28\xa3\x68\x2e\xa4\x84\x80\xcc\x72\x09\xbd\xdd\x65\x63\xa7\x56\x89\x97\x73\x4c\x7c\x65\x97\x81\x46\x16\x4d\xc3\x8f\x4d\x7d\xce\x4d\xad\x48\xf4\x3c\x00\x1e\xd3\x81\xf0\x23\x91\x99\x1d\x32\x64\x01\x35\x8f\x59\xc7\xac\x7e\x2b\x21\x03\x3e\xc4\xc8\x20\x17\xbe\x19\x12\x8e\xcc\x62\xd7\x12\xd7\xc3\xbd\x4d\xa7\x88\x28\xd2\x15\x33\x84\xd8\x2b\x19\x78\x59\x22\x61\x38\x30\x05\x1f\x38\x2d\x4f\xcb\xc9\x80\x77\x25\x1f\x10\x09\x81\x06\x13\x71\xfa\x34\xef\x2d\x4e\xbb\x6c\x2d\x61\x64\x14\x8c\x66\x65\xe6\xcb\xa9\xd9\xfb\x0d\xf9\x84\x88\x24\x88\x1a\x39\x2d\x17\xeb\x06\xa3\x29\x12\x5c\x98\x48\x62\xb7\xb8\xd6\x10\x38\xbb\xdf\x37\x14\x82\x61\xc0\x62\x09\x0f\x0c\x9b\x9b\xc1\xb6\x59\xd6\xc7\xb0\xf9\x2d\xbd\x54\x62\xb1\xa6\xdc\x6b\x22\x55\x18\xae\x45\x6b\xb6\xed\x35\x0c\xf4\xce\x3b\x76\x99\x26\x9c\xeb\xcd\xab\x9a\xeb\x71\x0c\x5e\x4c\x55\x91\xe1\x25\x41\x16\xf9\x5b\x6d\x68\x3e\xc7\x87\x59\x97\xf3\xac\xda\xfd\x1d\x95\xf5\xf3\x95\xf7\xb2\x71\x96\x2d\xf7\x37\x27\x91\xc7\x45\x3b\x9d\xbf\x32\x96\x2b\xb2\xff\x23\x7b\xce\xc8\xaf\x05\x6b\x69\x82\xe0\xbc\xe1\xda\x05\x64\xc3\x92\x87\xa9\x06\x21\x3a\x59\xae\xb7\xc4\x20\x1a\x10\x32\x12\x64\x29\xd9\x86\x05\xc4\xa1\x6b\x14\xd9\x59\xe5\x14\xd9\xbb\x41\xbb\x98\xe0\x9c\x9a\xad\x74\x22\xac\x08\x33\xd7\x1e\x7c\x38\x86\xb3\x91\x34\xda\xb1\x56\x2e\x08\x4e\x5c\x67\xf6\x78\x12\x7b\x9c\x64\xa7\xbc\x6c\xc3\xcf\xc4\x9e\x45\xd5\x84\x2e\x20\xd1\x14\xc6\x2e\x4c\x92\x06\x40\x28\x9d\xc5\x8e\xbc\x02\x32\x68\x1b\x02\x09\xd5\x7c\xae\x89\xc0\x29\xe0\x4a\x19\x34\x12\x69\xd8\x4a\xb2\x8c\x8c\x4a\xe2\x06\x0b\x13\x3a\xae\x29\x6b\xca\x4b\xf1\xcd\xe9\x79\x84\x44\x51\x9b\xc8\x04\x54\xe3\x9a\x9f\x68\x8f\x12\x3e\xdb\xc4\x61\xd1\x8a\x56\xea\xaa\x14\xb0\x68\xda\x65\x7b\x74\x06\x1e\x7a\x9f\x46\x0b\x4e\x87\x24\x4d\xf9\x91\x46\x5b\xd0\xbd\x5b\x61\x9e\x7d\xb3\x8f\x27\xe7\x0f\xa3\xac\x0e\x27\x0e\x5d\x03\xca\x0d\x2d\xba\xa1\x06\x79\x3c\x29\x6b\x2d\x50\x7f\x01\x19\xc9\x52\x87\xc9\x36\xcc\x32\x2b\x21\x3c\xf9\xcc\xad\xd6\x94\x99\x79\xb8\x30\xfe\x51\xeb\x79\x30\x4c\x11\x8e\x0d\x3b\x9a\x90\x8f\x7c\x91\x9f\x51\xb9\xeb\x22\x4c\x61\xc3\x8b\x1b\x29\x99\x87\x5d\xfb\xc0\xa4\xb0\xc4\x31\x9b\xff\x35\x18\xd2\xad\xe5\xfd\x6d\xe2\xc7\x09\xaa\x7a\xd3\xf9\x3c\x32\x47\xe0\x11\x34\x89\x2f\xb5\x47\xd7\x3d\x26\xa7\x6b\x75\x18\xc1\x5f\x8a\x76\xa6\x22\xef\x24\x7e\xe1\x0d\x1d\x39\xf5\xa6\xa6\xdc\xbd\xe7\x92\x30\xbe\x60\x58\x2b\xe1\x84\x1b\x25\xb3\xa5\x57\x1a\x6c\x69\x96\x98\x2e\x98\x6f\xde\x91\xda\x6c\x1c\xa7\xfb\x4e\x9d\x2a\x92\x72\x44\x10\xae\x46\x34\xf5\xbd\xaf\x09\x1d\x59\xe9\x99\x22\xcd\x0d\x58\x21\x61\xa2\x20\xb5\xb2\xa5\x60\x3b\x73\xd9\x2b\xab\x72\x15\x52\xb1\x3e\x64\xb9\xc8\xe9\xd9\x59\x04\xa6\xdf\x20\x9c\x10\xb1\x05\x9f\x38\x79\x97\x85\x96\x53\x1d\xa1\x57\x48\xb7\x5d\xb0\xd1\x11\x5e\x51\x5e\x67\xe7\x7a\x71\x61\xd8\x57\x85\x97\x96\x21\x46\x30\x01\xc3\xc2\x73\xf8\x2d\x39\x26\xdd\x79\xa1\x23\x04\x5f\x91\x44\x5b\xee\x08\x49\xd8\xac\xe0\xef\x48\xc9\xe9\x7a\xd1\x50\xb8\x4b\x78\x34\x09\x77\x1d\x39\x23\xee\x3f\xe2\x60\xec\x6f\xbd\x6f\xe1\x9b\x05\xea\x18\xdf\xca\xf7\x78\xd2\x67\x04\xce\x99\x23\xfb\x8d\xc0\x00\x7b\x64\xb8\xc7\x3c\x87\x91\x26\x34\xa4\xdc\x87\xa3\xb3\x54\x0f\xc2\xae\xe2\x37\xaf\x7a\x61\x87\x28\x4b\x24\xc7\x02\xce\x90\xd1\x80\xf4\x34\x20\xaa\x3f\x80\x4e\x76\x40\x92\x9c\xd2\x14\x5e\xe0\x8b\xce\x3c\x52\xd2\x46\x09\x52\x86\x22\x14\x60\x7e\x0c\xb0\x72\xcc\x40\x51\x6f\x54\x72\xe0\xfb\x07\xba\x80\x1d\xf4\xed\x86\x1c\x4c\x4c\x7e\x96\x39\xd9\x86\x31\x85\x81\x94\xb9\xc8\x60\x00\x0f\x68\x48\x3a\x47\x9f\xbb\x92\xcf\xed\x0a\xe7\xe6\x26\x62\xe7\xf6\x61\xea\xe7\x76\x26\xdd\x2b\xe3\x75\x2a\x9c\x1b\x3b\x62\x8c\x0c\x87\x1d\x88\x62\xbf\x31\x26\x8a\x1a\xab\x69\xd2\x88\x0b\x77\x1a\x8f\x2d\xe3\x12\x97\xe1\xe6\x1c\xb2\x43\x60\x19\x34\xe2\x2e\x70\xed\x82\x67\x5f\xb1\x86\x41\xc3\x18\x6b\xbe\x68\x64\x3b\x28\x58\xb3\x6d\x60\x23\xa6\x2b\xc9\x22\x23\x75\xe2\xad\x96\xaf\x4a\x0c\x50\x12\x2d\x99\xe2\xc4\x06\xc6\x65\xb0\xfe\x25\x17\x13\x7b\x9a\x6b\x40\x9b\x72\xff\x8c\xda\xf1\xb7\x66\x14\xc8\xe7\x7f\x27\xf7\x8f\xb8\xb7\x62\x94\x5a\xa9\xf7\xd6\x3d\x63\xaf\x26\x7d\x8e\x75\xef\x11\xeb\x7c\xce\x4a\x61\xcc\xa7\x4e\x4a\xd8\x41\x5c\x6e\xd2\xac\xb2\x54\x7a\x2f\xdd\x0c\x94\xba\x61\x48\xbe\x39\x6c\x45\xab\x83\x69\x5b\x3e\x02\x8b\xcd\xd8\x3f\x02\x48\xba\xbe\xd4\x81\x52\x2b\xab\x54\x4a\x8f\xb8\x53\x4a\x86\x93\x38\xf1\xae\xbf\x5c\xa5\xfc\x15\x41\xaa\x9f\x40\xa0\xcd\xb7\xf6\x07\x53\x92\xd8\xb1\x94\x53\x50\x81\xf1\x4e\x2b\xf5\xce\x37\xa1\x27\xc4\x89\x30\x83\x76\x98\x45\x9c\x5b\xae\x93\x2c\x8d\x90\xc5\x6e\x51\x78\x36\x6a\x87\xcc\xbe\xee\xa2\xe2\xbf\x07\x08\xf9\x2e\xab\xfe\x85\x3d\xa5\x87\x96\x49\xb2\x2c\x66\x7d\x26\x5c\xf1\x8e\x1e\xe5\x5a\x37\x4a\xad\x67\x0c\xca\xff\x1a\xf9\x0a\x7d\x83\x46\x0a\xf1\x0d\x16\x33\x1c\x53\x4a\x4e\xae\x9f\x22\xe3\x09\x66\x2d\xcd\x58\x4f\xd8\xf4\x21\xd7\x80\x01\x12\x2c\x81\x21\x7a\x69\x32\x07\x2c\x43\xac\x1b\xad\xd4\x4d\x6d\x81\xaa\x35\xc3\xf3\x18\xd0\x55\xc7\x2c\x1a\xfc\x86\x2c\x33\xf7\xde\x8d\xbb\x24\x9f\x13\xcf\xb1\x85\x6c\xf7\x29\x4d\x19\x63\x73\x92\x1c\x99\xc9\x79\xe6\x6b\x7f\xf1\xb4\x54\x83\x5d\x52\xc1\xab\x18\xfd\x4c\xfb\x42\x62\x23\x37\xa3\x70\xa0\xb3\x42\xd1\x09\xa8\x67\x78\xe6\xe3\x03\x8f\x82\xfa\x5d\x27\xf8\x03\xbe\xb7\x8a\xec\x22\x1e\x02\x92\x12\xdc\x11\xa6\x94\xd7\xd5\x9c\x0f\xe9\xb8\x3b\x0b\x0b\xb8\xa4\x9a\x39\xcb\x99\xfd\x88\xc4\x22\xa9\xdc\x39\x70\x36\x2a\xd1\xfb\xce\x6c\x0a\x7c\x90\xf2\x26\x9f\x06\xa2\x94\xd9\x2b\x58\xde\x0e\xf2\x09\xc9\x76\x33\xe8\xf5\x92\xd0\x59\x52\xbf\x02\x35\xad\x69\x3e\x14\x25\x47\x06\xfa\xc4\x40\x1f\x57\x7c\x30\x2a\x18\xf0\xd4\xbc\x94\xcc\x1e\x46\x9f\x54\x7c\x74\xc1\x4f\x96\x39\xde\x58\xeb\x0a\xef\x1d\x61\x79\x40\xac\x9f\xe4\xd4\x57\x12\xdd\x42\xe6\x29\x04\x47\xb2\xf0\x12\xb3\xe2\x12\x41\x18\x7c\x72\x68\x22\x44\xe3\x5b\x73\x8d\xd8\xbe\xed\x0e\x62\x1e\x11\xe2\x13\x34\x38\x8f\x1d\xec\x75\x96\xe5\xb4\xe3\x6f\x02\x9d\xfa\xa4\x2f\x56\xaf\xa3\x8e\xec\x0b\x1e\xc0\xc3\x36\x49\xb7\x6b\x59\xc9\x19\x64\x7d\x2c\x07\x47\x50\xdf\x10\x9a\x86\xf7\xc0\x4e\x8c\x48\xfb\x21\x87\x97\xd9\x81\x69\x93\xaa\xce\xc8\xc8\x52\x30\xf6\xea\x89\x8c\x62\x7e\xb2\xa9\x63\x4a\x57\xf4\x14\x6f\xca\xc6\x0d\xdf\x17\xa6\x3d\x31\x7d\x5a\x4a\xf6\x4f\xd1\xa0\x70\x67\x16\xd0\xc3\xca\xde\x63\xe0\x05\x77\x2e\xdf\x25\xa1\xd0\xd3\xe2\x5d\x7a\xc8\x76\xc9\xf6\xe0\x0a\xea\xb8\xc5\xcc\xe5\x7c\x86\x1d\xe1\xf0\x03\x43\xe8\x3a\x45\x27\x0e\x3e\xaf\x44\x24\x4b\x76\x64\x35\xcb\x92\x65\x85\x6a\xda\x6e\x02\x03\x8a\xb0\x09\xa2\xdc\x45\x71\xda\x08\x4b\x04\x68\x97\xac\x09\x35\x46\x61\x4b\x0a\x17\x75\xc2\xd6\x2c\x66\xbc\x4c\x6f\x60\x67\x17\x7c\x33\xcc\x60\xa6\x38\x73\x06\xe7\x93\xbc\xa6\x35\x3c\x61\x92\x69\xca\xa3\x58\x17\x11\x21\x11\xe5\x2b\xed\x06\xf9\xb0\x24\x07\x10\x49\xa4\x41\x52\xd9\xd6\x45\x87\x74\x81\x97\x8f\x4b\xc9\x51\x69\xb4\x8b\xaf\x1b\xbf\x35\x9d\x1b\xbb\xee\x89\xe7\x9c\xf1\x9b\x67\x03\x15\xa6\xa3\xc0\x7c\xb2\x93\xc4\x6c\x9d\xe4\x35\x5e\xba\x33\x89\xf5\x4e\xbb\xae\x3f\xca\x6d\xa4\xe2\x35\x09\xde\x3c\xd2\xa3\xab\x4c\x68\x51\x4b\xb0\xce\x87\x9a\x31\xda\xc2\x85\x78\x84\xf8\xa0\x65\x36\xc3\x82\x05\x3c\x58\x99\x45\x76\x8e\xab\xc5\x3e\x24\xa5\xba\x1e\x69\x59\x08\x56\x0c\xa0\x09\x0a\x1d\x39\x25\xbc\xa6\x16\x5d\x27\xcb\xba\x86\xd6\xef\xd0\xaa\x2a\x48\x4d\x92\x3a\xd2\xf0\x1a\x05\xf4\x8c\xe4\x2d\xd5\x2d\x08\x3d\x6e\x1a\xb2\x2f\xd0\x9a\x44\xdf\x0a\x2c\x8f\x5d\xb0\xe0\x96\xa4\xc8\xa3\xbe\x8e\x20\x67\x27\x70\x13\x99\xf2\x58\x71\x45\xc6\x60\xb4\x0c\x9e\x30\x36\x21\x30\xb9\x82\x94\xcf\xc0\x0c\x64\x41\xc9\xa5\x0a\x86\xd4\x30\x19\x3f\xa4\x95\x34\xf6\x28\xfa\xbc\xf2\x7c\xdc\x51\xf9\xb4\xbe\xc4\x62\x07\x69\x0f\x85\x2b\xb5\x81\x26\x35\xf4\x83\x5b\x82\x10\x6b\xe9\x96\x43\x7a\x2f\xd1\x7a\x2a\xf0\xa6\x7d\x67\xa4\x20\x3b\xad\x13\x66\x85\x0b\xb5\xb1\x86\x4c\x06\xa7\xae\x36\x6f\x94\x35\xf6\xed\x7d\xe0\xac\x52\x84\x6d\x13\x9c\x2d\xb8\x92\xba\xa8\x87\xe1\xaf\x2f\x9c\xd5\x3c\x7b\x45\x72\x1b\x33\x1b\x52\xe2\x69\x42\xf1\x9b\xfa\xdc\x9e\xe6\xfe\x5a\xf4\x12\x91\xbd\x47\x4a\x88\x25\x0b\x7b\xd4\xb1\xc8\xd1\x27\x8e\x44\xcd\xc3\x93\x0d\x93\xf8\x3a\x0e\x25\xb9\x96\x52\x0a\x2f\x19\x6e\xba\xbe\x7a\x72\x90\x76\x3a\x70\x4c\xd8\x69\x24\x68\x99\x7d\x05\xe7\x93\x6d\x06\x56\xce\x0e\xf0\x20\x74\x7a\x7c\x86\xc0\x13\xa8\x26\x3b\x9e\xfe\x3f\x2a\xb5\x0b\x04\x09\x6a\x77\xb9\x64\x54\xd7\xda\x15\xbd\xbd\x25\xa3\x7a\xae\x13\xe7\xba\xdf\x8d\xbd\x1c\x2b\x3b\x75\x67\x1b\x5d\x02\xcc\xc1\x6d\xf4\x11\xa0\x73\x68\xbf\x9e\x00\x6a\x9c\xda\xaf\x3f\x34\x9c\x63\x9e\x81\x6c\xbd\x32\xf0\xc0\x05\xb5\xde\x7a\xce\xbc\x06\xff\xb9\xda\x38\x6b\xd5\x39\xfc\xa7\x14\x2a\xd6\x0a\x77\x15\x9c\xca\x7b\xb6\xc1\x61\x34\x12\x06\x21\x7d\xc9\xb6\x2d\xb1\x2d\x8c\x64\x57\xa1\xfe\xfe\x59\xda\x29\xc0\x29\xb8\x4f\xf8\x1e\x11\x59\x20\x40\xbf\x17\xf8\x2c\x38\x1b\x5d\x47\x3b\x4a\x41\x0b\x88\xf9\x4e\xdc\x4a\xb4\xb3\x1d\xdf\x42\x43\xa5\x58\x5f\xe8\x25\x83\x3a\xde\x7f\xc3\x4a\x1c\x8e\x1e\x5b\x10\xc2\x76\x7e\xd9\xb1\xd3\xfa\x6a\xbf\xba\xf3\xab\xe5\x52\x4f\x7d\x58\xa9\x0a\x3b\x91\xfd\x35\x10\x06\x03\xe8\x1f\x0e\xd7\x1f\x39\xa6\xf3\x97\x52\xbb\xce\x25\xe1\x90\xe5\xca\xef\x80\xb1\x93\x34\x4a\x9d\x80\x94\x00\xd8\xdf\xeb\xa1\x7d\xdb\x5d\x2a\xfc\x5e\xbb\x0b\xab\x36\x41\x94\xed\x85\xf1\xba\x16\x64\x95\xb3\x89\xcf\xa9\xa5\xb4\xa5\x14\x14\xbf\xbe\x81\xa9\xad\x01\x89\xec\x5e\xb7\x1d\xd8\xdd\xc8\xf0\xc0\xc6\xda\xb1\x63\x29\x27\x3a\x6d\x77\xc3\x96\xbd\x19\x11\x7c\x30\x69\x00\x9f\x5b\xe1\xba\x47\x28\xe7\x96\x75\xa3\xda\x8f\xee\x92\x51\xdf\x2d\x52\x9f\x69\x8b\x0f\xef\x06\x58\x23\x44\xa9\x7d\x42\x2d\xf7\xdd\x70\x94\x24\xa0\xfa\xb2\x56\xf0\x93\x3b\x40\xb1\x62\x41\xe1\x50\x73\xac\x37\x81\x47\x9f\xeb\xa5\xdb\xca\x6f\x10\x64\x95\xcd\x9c\x0c\xff\x84\xf8\xfb\x17\xfa\x67\x00\x7a\x9f\xec\xaf\x57\xba\x64\x3f\x8f\x60\x91\x2b\xe6\x93\x23\xd9\x4a\x29\xea\x85\x19\x91\x9c\xc4\x15\x72\xc2\x15\x98\xee\x2a\x3a\x8b\x06\xb4\xa4\xcd\x59\x8a\xf0\xc7\x80\x4a\xb4\x29\x26\x71\x54\x4a\xcd\x6b\x7a\xa9\x6c\x27\xf8\x68\x2b\xbd\xf7\x07\x76\xec\xd8\x62\xcb\xad\x5e\x85\x63\x60\x6b\xb0\x19\x37\x9e\x2f\x5e\xf6\x3d\x81\xc4\x0e\x77\x85\x0e\x5c\x66\x4f\x59\x38\x4c\xd9\x81\xbb\xe3\x9e\x34\x0c\xa0\xd3\x7a\x17\x79\xea\x05\xbc\x76\x60\xbf\x7f\x83\xb1\x41\xf6\x40\x1c\xe7\x68\xe9\x12\x3a\x33\x16\xc3\x11\x53\x70\xec\x6d\x1c\x7b\x07\x1c\x9f\x40\x08\xe7\xc6\xd9\x79\xf3\xca\xaf\x48\x62\x35\x6f\x4a\xfe\xee\x1d\xcc\xf3\xa7\xbf\xb4\xe8\x11\x70\xf3\x1c\x5a\x7d\x3c\x83\xb2\x4f\x87\x0e\xc7\xc1\x0b\x52\x7d\xb5\xbd\x2a\x85\xda\xfa\x17\xdb\xa4\x74\x73\xed\xd9\x49\xec\xf1\x01\x3e\xd9\xef\xeb\x1a\x94\xd9\x0e\x10\x9c\x2b\x06\x63\x05\x4a\xd7\x12\x40\x2f\xac\xcd\x72\xf1\x69\x49\x8e\xea\x45\xd6\x7d\x4e\xd0\xeb\xc4\xae\xc6\x71\xb9\x7b\x7d\x4c\x19\x08\x20\x8c\x8b\x9d\xbd\x71\x8b\x5e\x06\x6e\x7d\x55\x3a\xc2\xbb\x86\x79\x9e\x06\x41\x32\xd5\x96\xe8\x7e\x00\xd1\x5d\xe8\x3a\xa2\xfb\xd9\x4d\x42\x3a\x1f\x2d\x25\x28\xf8\xe9\xcc\x64\x44\xb7\x2c\x13\xdd\xf5\x1f\x44\x74\x17\xff\x11\xdd\x7f\x44\xf7\xcf\x12\x1d\x29\x3e\x65\xee\x3e\xec\x01\x99\xad\x74\x53\x73\xe9\xf3\x6a\x97\x2a\x5a\x3e\x84\x52\x5a\x72\xaa\x3e\xbf\x0d\xcf\xd0\x82\x0d\xcb\xfa\x1c\xf4\x33\x7a\x6a\xb2\x6f\x89\x66\x10\x1f\xd1\xb3\x81\x43\x6b\x29\x6f\xc5\x47\xe9\x39\xa7\xed\x0f\x61\xee\xfb\xca\xeb\xab\x51\xf3\xb6\x93\x3c\x5d\xce\x27\x69\x7b\x50\x2b\xf1\x94\x95\x9b\xe4\x40\xa1\xf6\xbc\x0a\x61\xbb\x63\xf7\xac\xa7\x4a\xbb\x2f\xd5\xe9\x59\xcf\xf7\x84\x5e\x8d\x5b\xdb\xd3\x87\xfa\x8e\x00\xbf\x63\x3f\xdd\x0f\x76\xf9\xa7\x3b\xbe\x1b\x1a\x54\x79\x6b\x3b\xda\x8b\xcb\x1e\x78\x1b\xdc\x52\xc7\xa8\x8f\x18\x7b\x0f\xdf\x01\x65\x4f\x0e\x70\x18\xb0\x91\x67\x7e\xb7\x81\x27\x3a\x15\xed\x12\x38\x8e\x01\xc8\x01\xc2\x6c\xc1\xd7\x6d\xfb\x01\x09\xed\x33\x40\xe8\x41\x89\xf6\x8f\xbb\x2e\x0f\x8e\x9a\x9e\x19\xf2\xbb\x81\xdf\x5d\x8d\xa1\x73\xe7\xae\x04\x95\x78\xb7\x8b\x6d\x00\x3e\xa0\x58\xed\x00\x56\xc3\xd6\xfc\xd0\x7d\xda\x7b\x05\x94\xc5\xa9\xf7\x8b\x52\xbb\xfd\x7c\x12\x40\x20\x15\x12\xc8\x8a\xe9\xf3\x19\x6d\x10\x4d\x6d\x69\x4b\x6d\xef\x84\x7f\x77\xac\xba\x78\xfc\xa5\x30\xea\xaf\xd3\xb0\x71\x3e\xfa\xeb\x90\xc0\x6e\xca\xf7\xfa\xad\x03\x98\xc2\x0a\xbe\xb9\x1d\x80\xb6\x2b\xfa\x3d\x49\x29\x75\x31\x4d\x68\x74\xab\x27\x7d\x47\x4b\xd0\x5b\x61\xd4\x27\x60\x52\x23\xcb\x20\x4e\x1c\x6a\xbe\xef\xa3\x11\xe7\x3c\x01\x26\x12\x49\x79\xa6\x2d\x36\x99\xfe\x58\x2f\x6d\xa9\xd2\xce\xd8\x0c\x00\x0f\x4b\x2b\xa4\x8c\xbf\x4d\x78\xa5\xeb\x99\x18\xc3\x55\xb0\x11\xbe\x01\x92\x7f\x0f\xba\x72\xff\x9b\x25\xa9\x91\x5e\x0f\xcb\xff\xa6\x86\x67\xda\xa2\xda\xc0\x4c\xec\x28\x43\xbb\xbf\x83\x7d\x70\xfe\x0f\x0f\xec\xf7\x6f\xce\xa4\x73\x69\x17\x8a\x23\x32\x0c\xf2\x43\x5f\x40\xb0\x60\x86\xf6\x86\x7d\x6b\x17\x17\xf3\xb7\xda\x3b\xd3\x76\x73\x76\xbb\x33\xdb\x74\xcf\xee\xfa\xee\x96\x05\xe8\x9e\x45\xbd\x5d\x3f\x4a\xb6\x14\x0f\x72\xcb\x2e\x35\x70\x87\x71\x1c\xe3\xd0\xbe\x73\x34\xd2\xae\x64\x89\xb2\x46\xe8\xf1\x19\x5c\x6d\x70\xb4\x7d\x6d\x07\x39\xb6\x74\x73\x54\xd9\xcd\x39\xb6\x28\x79\x04\xbe\xd2\x3b\xdd\xe7\x83\xc0\xf6\xc1\x20\x27\xf0\xeb\x69\x18\xe2\xb3\x1d\xe2\x0b\x19\xe2\x5e\xab\xaf\x67\x7a\xe9\x87\x51\x5f\x8e\xe6\x76\x8c\xaf\xc7\x4b\x95\xfa\x72\xae\x6f\xf5\xd2\xae\xfa\x0a\xf9\x63\x5f\x40\xb7\xf0\x51\x95\x1d\x52\x52\xfc\x41\xd7\xa0\xc9\x15\x04\x1d\x1d\x0d\xbc\xd1\x20\xf9\x96\xe1\x1f\xa8\x2f\x5b\x39\x97\x88\x52\x3c\x00\x00\xa8\xe4\xe0\x5f\xdb\xf5\x0d\xb8\xf8\x5c\xd7\xef\x75\xd7\x76\xb1\xe9\xcd\x1a\xfb\x93\x33\x6a\x66\xd0\xcb\x55\x55\xdb\xcb\x04\xe4\xa4\xeb\x65\x5d\x5f\xc1\x0c\x1d\xf9\x5d\x57\x01\x56\x63\x6d\x81\x75\xa1\x47\x7a\xe0\x81\x75\xa5\xd5\x44\x9f\xe9\xa5\x73\xfb\xf3\x2e\x5c\x66\x32\xd1\xd6\xce\xbe\xd0\x27\x76\x5f\x27\xfa\x14\xfe\x71\x02\x73\x6e\xb2\xcd\x0f\x73\xe8\x29\xf5\x53\x43\x4c\xe5\x31\xee\xfe\x0c\x86\xbb\xd1\x23\xbd\x12\x36\xe7\x44\xcd\xed\x70\x2b\x5a\xdd\x68\x3b\xbd\x2d\x35\xd7\x6a\xa9\x52\x37\x7a\xf7\x9d\x86\xa7\x7b\xf0\xdf\xad\x2e\x62\x48\x78\x67\x5b\xde\x1f\x42\xea\xeb\xe0\xce\x00\xca\xfd\x09\x4e\x37\xb5\x17\xdc\x32\x8e\xf1\x0f\x14\xea\x2a\x16\x1d\x14\xb0\xe1\x6f\x67\x1a\x33\xba\x47\x30\x47\xa8\xd0\xe1\x16\x38\x32\x64\x7f\xbf\xd6\x60\xbd\x1d\xfd\x5e\x3b\x46\x63\x2c\x9b\x82\xfd\x73\xf7\xbf\xff\x70\x3b\x07\x04\x76\x6b\xb6\xec\x50\x77\x26\x00\x67\x15\x80\xb3\xae\x47\xba\x42\xc4\xed\x68\x87\xb9\xeb\xfa\x68\xd9\xae\xb4\xa3\xed\x64\xd7\xf5\xb9\x3b\xf4\xee\x0e\xfd\xd4\x82\xdf\xf6\xe3\xa1\x5f\x18\xb5\xa9\x41\xa5\x81\x33\x5a\xe7\x2e\x21\x64\x67\x5d\x33\x31\x1b\x88\xff\x48\x95\x27\xd6\xde\x35\x47\x6b\x96\x1f\x96\x76\x58\x73\xe1\x15\xf0\x7d\xdb\xcb\x3a\xf0\xc9\x0b\xed\xfe\x53\xee\x1f\xf0\x9b\xc7\x59\xa1\x0f\xee\x8b\x17\x5c\x67\xba\x03\xaf\x8d\x00\x11\x3f\x44\x16\x67\xf9\xfb\xd6\xc1\xbb\x7e\x1c\x7d\x7b\xdf\x2a\xfe\x5b\x5e\xe5\x6f\xfc\x98\xe9\xd2\x42\xd2\x8d\xf7\x03\x36\x7e\xa6\xc3\x3f\x95\x52\x9f\x61\x67\xfe\xf6\x5e\xaf\x7d\x27\x32\xfd\xfb\x16\xdf\xcd\x28\xb9\x8d\xec\x9b\xd3\xf7\xca\x7b\x5d\xb0\xc1\x6c\xe3\x6a\xc4\xaf\x2e\x03\x47\x19\x69\xdc\xb3\x44\x71\xc2\xd6\x6f\x75\x84\xd2\x39\xc1\x2c\x6c\x66\x7e\xf9\x85\x51\xfd\x1b\xb3\x70\x89\x83\x3b\x6b\x9c\x1c\x82\x10\x3c\x40\xed\xe5\xd3\xbe\x95\x7e\x7f\xad\x2c\xee\x40\x8d\x4d\x1f\xe7\x74\x0e\x5e\xbc\xb1\x09\xff\x00\x96\x00\x90\x7e\x02\xf4\x1e\x1d\xd7\x76\xf8\xf3\x1d\x62\x3e\xdf\x80\x9c\x40\xb8\x02\xd7\x9f\x97\xf3\x81\xef\x30\xaa\xca\x37\x03\x0c\x90\x01\xf7\x03\x37\xdb\xb9\x9e\x43\x9e\xb4\xbb\x1e\xc1\x0a\xb5\xf2\xa6\x44\x70\x2e\xeb\x77\x5d\x5a\xb5\xc3\x39\x40\x37\x5c\x3e\x9a\x52\x18\x2e\xb9\xea\x62\xef\xa0\x4a\x40\xef\x2b\xda\x6a\xbe\xa5\x9d\x53\x35\x29\x47\xbd\xf0\x1a\xcd\xeb\xe8\xae\xc7\x4d\xed\xf6\xe2\x36\x55\xa3\xf2\xbc\xe7\x97\xb0\xaf\xba\x67\xa0\xc2\xec\xcc\x4b\x88\xb0\x0d\xc8\x1e\x83\x6a\x0d\x75\x66\x5d\x3a\xa2\xd3\xc6\xdf\x39\x7e\xa4\x1f\xe3\x4c\xf7\x55\x09\x57\xbc\x99\xe3\x7b\x92\x16\x0c\x4c\xf8\x10\x14\x3d\xf0\xd0\x96\xd6\x00\xac\xd6\xf4\x59\x7c\x0f\x91\xe4\xc4\xe3\xc8\xb9\x1e\xd1\xf0\x72\xa5\xd4\x06\x25\x97\x6f\xaa\x6f\xed\xa4\x1e\xf8\x98\xb7\x2f\xc8\x04\x48\x2c\xcb\x53\x9b\x8b\x3a\xb8\x34\xd4\x44\x1d\x7f\xab\x3d\xd4\xe6\xda\x84\xa7\x11\x68\x43\xec\xcb\x9a\x9b\xdd\x5d\x40\x6b\x3d\x0c\x0d\x69\x52\x4f\xff\x04\x90\x1b\x98\xe5\x60\xdb\x42\xb7\xda\xca\x3a\xb4\x3f\x1f\xd8\x76\x43\xe0\x52\x07\x96\xda\x01\xe0\xdf\xaf\xca\x85\xc8\x7b\xa6\xef\x2c\x8f\x58\xd3\x16\xff\xdf\xe9\x03\x64\x51\x1b\x1a\xb8\xc4\x3b\x7d\xdb\x8a\x04\xbe\xbf\x2a\x09\x4c\x5f\x42\x02\x97\x48\x02\xbd\x8e\xbe\x2f\x69\x31\x45\x70\xb2\x9a\x83\xa7\x51\xc0\x3e\xa0\x95\xa9\xa1\x80\xab\x48\x01\xfd\x5d\x64\x54\x1b\x86\x50\x40\xff\x9d\x01\x67\xf3\xf4\xa9\x14\xf0\x10\x11\x70\x2b\x50\xc0\xd7\x5b\x99\x02\x76\x96\x76\x55\x09\xb6\xe3\x9a\xf6\xf5\xf0\x13\x02\xf8\xcb\xe3\xed\xc9\xb2\x4e\x73\xa7\xee\x52\xfc\x1f\x5a\xfc\x1f\x38\xfc\x3f\x7f\x1e\xfe\xdf\xff\x19\xf8\x3f\xd1\x17\x8b\x09\xe0\x52\xcf\x2c\x01\x8c\x4a\x4b\x00\x17\x65\x34\x83\x2e\xb4\x9a\x94\x27\x4b\x57\xf6\xc7\x0b\x13\x45\xf3\xaa\x1e\x83\xfe\xb1\x02\x98\xbc\xea\x44\xe1\x0a\x15\xdd\x1b\x20\xf5\x2f\xe0\xb9\x15\xdd\xbb\x5e\x74\xbb\xe7\x87\xdb\x16\x4e\x50\xff\xf1\x10\x40\xf6\xd1\x45\xc3\xb7\xbc\x54\x8f\x7a\xd3\x11\x18\x62\x07\xce\x2f\x72\x49\xab\xb7\xdf\x06\x71\xe7\xf4\xbc\x55\xd8\x3e\x10\x62\xea\xb6\x52\x59\x43\x38\xec\xae\x27\x86\x5b\xc2\x40\x97\x1b\x51\x5b\x9d\x01\x00\x6e\xca\x83\x8b\x12\xb5\xc7\x72\xdf\xea\xaa\x37\x65\x02\xc7\x3a\x68\x3e\x58\x83\x29\x32\x81\x7b\x60\x02\xfe\xda\x93\x7b\x18\x6c\xe4\x46\x3e\x33\xc1\xfb\xe8\xfe\x01\xf7\x9c\xbb\x38\xeb\x06\xa0\x66\x95\xd4\xad\x60\x84\x7e\xbf\x31\x12\x83\x78\x28\xbf\xf9\xb1\x4e\x54\x79\x6f\x17\xe0\x6a\xfb\x96\xc0\xad\xaa\xcd\xf2\x7a\xf8\x5c\xfe\xd1\x7d\x5f\x2e\x5d\x95\x6a\xf0\x60\xde\x74\x99\xee\x37\xf4\x98\x50\x34\x43\x02\x9e\x0c\xa6\xe5\x65\x80\xc7\xae\x1a\x5e\x96\xae\xf9\xd2\xa5\x56\x5b\x0f\x25\xd9\xe9\x37\xb6\xd5\xf6\x59\x86\xaa\xe2\x18\x96\x97\x7d\xbc\x36\x77\x25\x4f\xd1\x98\x96\x9b\x4f\x94\xeb\x40\xc0\xd5\xb4\x46\xb0\x9b\xe1\xfb\x2a\x90\x5a\x72\x95\xc1\xde\x31\xa0\x94\x52\x4b\x31\xa9\xe2\x28\x55\xf7\x4b\x4b\xa9\xd5\xde\x4f\x13\x1a\xd2\x53\x98\xdd\x43\x0b\x01\x68\xb2\x35\x8c\xdc\x21\xc9\x7c\xf9\x14\x5f\x44\x96\x02\x08\x6d\xa7\x69\xc1\x04\xee\xb3\xed\x43\xdb\xdb\xbb\xc8\x7c\x0f\xf7\x23\xac\x3e\xce\xcb\xd3\xc8\x7b\x0f\x6f\x00\xf2\x37\xba\xf3\x34\xe6\xbb\xa6\x4f\x12\x78\xba\xf6\x3d\xef\x77\xfd\x1b\x18\xd3\x67\x70\x1d\x3f\x08\xdc\x16\xa6\xba\x74\x63\x94\xba\xd7\x9f\x6c\x07\x0f\xc0\x03\xce\xed\x6e\x5f\xe4\x50\x51\xe3\x12\x4e\x59\x88\x5a\x48\x19\xba\x8f\xd6\xd3\x14\x2c\xf6\xef\xce\x75\x04\x6c\xf1\xaa\x9b\x6d\x16\x99\xf7\x0f\x50\xa6\xa7\x7e\x0a\x9f\x43\xd3\x78\x62\x63\x9b\xf0\x64\xdb\x66\xee\x2e\x8d\x98\xa1\xe7\x7a\x4d\xbf\x6d\xe2\x01\x0b\x71\x57\xfa\xf9\xbd\xde\xf4\x5b\xb2\x43\x96\xb6\x45\xfc\x48\xf6\x17\x67\x9d\x07\x07\xf5\xc5\xf0\xf5\x35\x32\x76\xe5\x9a\x73\xf4\xda\x8f\x0b\xfd\xc1\x4a\xa8\xee\x2f\x93\x50\x95\x5f\xff\x56\xbe\xfe\x5e\xb8\x66\xae\xe3\x7c\xd2\xda\xf9\x83\x9e\xb9\xfe\xf5\xa6\xf5\x5b\x1b\xb8\x0b\x2f\xf7\xe6\xba\xff\x2b\x56\x79\x9a\xd9\x6c\x2b\xda\x03\x1a\xec\xb4\x4d\xf3\x7e\xb1\xa4\x7e\x63\x96\x2d\x9f\xbf\xee\x59\x41\x75\xdb\x3b\x88\x6e\x8e\x6f\xea\xae\xb7\xbf\x74\x61\x7f\xbc\x6c\x27\xa8\x56\x7f\x9f\xa0\x7a\xa4\x82\xea\x27\x08\xaa\x07\x10\x54\xf7\x20\xa8\x96\x5f\x22\xa8\xde\x94\x4b\x37\xa5\x1a\x3c\x0a\x82\xea\xf2\x09\x82\x6a\x96\x08\xaa\x1f\x41\x50\x5d\xbc\x5c\x50\xcd\xff\x13\x54\x82\xa0\xfa\x88\x82\xea\x8e\x0a\xaa\x5b\x2f\xa8\x36\x9e\x2a\xa8\x0e\x5f\x5f\xfe\xf8\x7c\x95\x3f\x46\xfe\xac\xea\xf5\x57\x97\x3f\xef\xf4\xf2\xef\x92\x3f\x8d\xfc\xf7\xff\x80\xfc\x79\xd7\x28\x7f\xae\xfe\x69\xf9\xb3\x61\xde\x2c\x96\x3f\xef\xcd\xc8\x8e\x71\x3d\xfc\xe2\x02\x0d\x85\x52\xf7\x43\xc7\xb6\xed\xba\xbf\xbe\xd5\xd1\x77\x12\x0e\xc2\x0e\x7c\x58\xf4\xeb\x46\x30\xaa\x02\x48\xb6\xed\xd7\xae\x95\x64\xbd\xaf\x5b\xfe\x59\xa0\x9c\x3d\xfb\x15\xbc\xb6\x03\xec\x34\x79\x38\x04\x97\xee\xd7\x11\x06\x7a\x5c\x56\xc5\xa1\x9d\xe7\xf6\x17\x27\x20\x0a\x63\xc6\x1f\x7c\x50\x8d\x07\x7c\x83\x9b\x07\xf7\xe0\xc8\xbb\x39\x4e\x27\x61\xaa\x98\x38\x7d\xa4\xba\x47\x10\x95\xbd\x2c\xb3\xf7\xfe\x56\x7d\xfb\xde\xe0\x14\x23\x5b\xa1\x82\xcc\x96\x1a\xda\xf9\x6c\x11\xbf\x37\x56\xbd\xda\xae\x96\x42\xe4\x2f\x06\xa5\x69\xa1\x27\x77\x79\x6d\x35\x94\x26\x6a\xb7\xb6\xaa\x3a\xbd\xec\x59\x4f\x75\xed\xb3\x5e\x75\xde\x17\x86\x34\xc7\x21\x6e\x14\x33\x44\xed\xee\x94\x96\xe5\xf4\x2d\xc1\x95\x5f\x82\x68\x3d\x0a\x53\xc2\x74\x7b\xa3\x0c\x44\x0d\xab\x83\xfa\x29\x7d\xe4\x30\x38\x46\x1e\x68\xb1\xa1\x0b\x5c\xb8\x17\xdb\x25\xd5\xca\xb6\x8f\x69\x36\x49\xe8\xd8\xe2\x65\xb5\xed\xae\x40\x52\x78\xe6\x7a\xe7\x2d\x49\x6c\x75\xe7\x89\x4f\xad\x98\xb1\x0b\xea\x1f\xda\xb5\x80\x2e\x31\xb6\x58\xfa\x17\x6a\x23\x5f\xcf\x4b\x09\x9f\xc0\xf6\xaf\x22\x22\x06\xd2\xfb\x60\xbf\x7a\x24\x0d\x31\xac\x90\x8f\x70\x00\x7e\x2d\x87\xa4\x77\xbb\x19\x76\x17\x46\x0d\x03\x1e\xba\xbf\xff\xf7\xff\xff\x27\x00\x00\xff\xff\xca\xee\x57\x53\x45\x54\x0b\x00") +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\xbd\xe9\x76\x1b\xb7\xb6\x30\xf8\xbb\xbf\xa7\x20\xeb\xfa\xd4\x05\x0e\xb7\x68\xd2\x19\xce\x49\xd1\x08\xaf\x2d\x8f\x89\x2d\x3b\x96\x6c\x27\x61\x78\xb5\x4a\x24\x28\x21\x22\x01\x06\x05\x6a\x30\x59\xfd\x3e\xfd\x1a\xfd\x64\xbd\xb0\x01\xd4\xc4\x92\xed\x73\xbe\x61\xad\xfe\x43\x56\xa1\x30\x6e\x00\x1b\x7b\xc6\x9c\x2f\x84\xe4\x84\x2c\x36\x72\x66\x84\x92\x84\x6e\xa3\x4d\xc6\x3b\x99\xd1\x62\x66\xa2\xd1\x55\xaa\x3b\x86\x45\x1b\xe9\x32\xce\xa3\x2e\x33\xb7\x6b\xae\x16\x9d\xf3\xa5\x3a\x4b\x97\x27\x17\x22\x1b\x97\x8f\x49\x5b\xce\x6b\x21\xe7\xea\x7a\xec\xfe\x5a\x73\xb8\x0a\x7c\x3d\xad\x39\x32\xbe\x5c\x8c\xed\x4f\xb2\xcd\x47\xa1\xb3\x1d\x4e\x0c\x70\xba\xd5\xdc\x6c\xb4\xec\x18\xc2\xd9\x96\xdf\xac\x95\x36\x59\xb2\xcd\x73\xe0\x7d\xff\x46\xcb\xc7\xdc\x8e\x48\xb2\xea\x90\x0d\xdd\xda\x44\xce\xf6\x53\xde\x9c\xfd\xc9\x67\xa6\xbf\xd6\xca\x28\xdb\x13\x90\x8c\xf7\x2f\xd2\xec\xcd\xb5\x7c\xab\xd5\x9a\x6b\x73\x0b\x9a\x45\xa1\x60\xc4\x42\x7f\x8f\x6f\x57\x67\x6a\x39\x76\x7f\xc9\x36\x07\xc5\x74\x5f\x18\xae\x53\xa3\xf4\x6e\x17\xfd\xd7\x7f\x85\x97\x08\x04\xd3\xfd\x34\xbb\x95\xb3\x97\xd5\xef\xb5\x94\x08\x52\xa6\xfb\x46\x1d\x1b\x2d\xe4\xf9\x49\x7a\x8e\x59\x2a\xef\x51\x09\x94\x99\x05\x0a\x48\xd0\x6e\x10\x8a\xf1\x38\xe6\xe5\x10\x3a\x42\x66\x26\x95\x33\xdb\xcb\xe5\x98\x27\x4b\x10\x61\x98\x33\xcd\x53\xc3\x89\x2a\x33\x53\x48\x99\xe4\xd7\x9d\x63\xa2\x77\xbb\xc9\x94\x8e\x3c\xa8\x45\xff\x54\xc8\x2b\x75\x59\x85\x99\x6d\xd4\x35\xa9\x59\x94\x6d\xb2\x35\x97\x73\x3e\x3f\x36\xa9\x36\x51\x28\x57\xe4\x56\x20\xe8\x56\x2c\x48\xc4\x6f\xf8\x6c\x63\x84\x3c\x8f\x18\x63\x9a\x9a\x0b\xad\xae\x3b\xb6\xc9\xa7\x5a\x2b\x4d\xa2\xe7\x5c\x3a\x10\x74\x44\xd6\x49\x97\x9a\xa7\xf3\xdb\x8e\xde\x48\x69\x8b\xd0\x91\xad\x62\xa6\x56\xeb\x25\x37\x7c\xee\xaa\xc0\x6a\xb1\x1e\xfb\xae\x7c\x95\x22\x74\xe1\x0d\xa1\xf9\x42\x69\x22\xfb\x2b\x6e\x2e\xd4\x9c\x29\x90\xfd\x54\x9f\x33\x31\x1a\xb9\xee\xa7\x4c\xf6\xe7\x7c\xc9\xcf\x53\xc3\x6d\x03\xa9\x4b\x9e\xb1\x33\x92\x82\xc4\x36\x67\xd8\xca\x8c\x31\xb6\xa1\x33\x25\x8d\x90\x1b\x1e\x1a\x98\xe5\xb9\xed\x81\xe4\x37\xc6\x76\x20\xb4\x43\x65\x3f\xe3\xd2\x30\xd9\x3f\xf5\xff\xa9\x3e\x1f\xf1\x65\xc6\x3b\xb5\x0e\x17\xf9\x71\x1c\x0d\x38\x56\x60\xa4\x59\x65\xe0\x6e\x08\x23\xd9\x9f\x8b\x6c\x9d\x9a\xd9\xc5\xd3\x9b\x19\x5f\x23\xa4\xf1\x0b\xcd\x6d\x43\x91\xeb\x61\xb5\x95\x38\x96\xfd\xf4\x4c\x6f\xd6\x86\x84\xaf\xae\x2e\x3a\xd2\xac\x32\x39\x88\x08\x96\x2c\xf3\xd3\x8c\x70\x97\x4a\xaf\xd2\xa5\xad\x6d\xd9\xc7\xc5\x62\x7b\xac\x2d\xf0\x94\xe4\xe3\x4a\xef\x92\x72\x18\xbf\x09\xbe\x9c\x47\xb0\x44\x88\xb7\x40\x6f\x7b\x95\x2e\x37\x3c\xc1\xef\x60\xeb\x49\x5c\x75\x79\x5e\x42\xc8\xb5\x16\xc7\xa4\x09\x02\x3f\xa1\x3e\xa7\x9f\xd6\xa5\x1b\x7f\x9e\x13\x03\x12\x52\x0a\x22\x2f\xb6\x4a\x18\xce\xd6\xe8\x5b\x8f\x45\xb6\xb6\xee\x24\x8c\x0d\x52\x7d\x9e\x98\xfe\x2c\x5d\x2e\x89\xcd\x98\xe7\x33\x0b\x5d\x8b\x20\x6a\xd9\x7d\x8b\x98\x3b\xcf\x73\xd3\xbf\xd6\xe9\x9a\xcd\x10\x6a\x1b\x56\x45\x59\x4b\x42\xb7\x65\x07\x16\xb5\xb7\xb5\x7d\xb3\x45\xe6\xb6\xc8\x7c\xa2\xa6\xac\x82\x97\x03\x96\xbb\x10\x59\x8e\x15\x5f\x84\x7d\x7b\xce\xcd\xdb\xb0\x63\xdf\x2c\x60\xc5\x2e\xe2\xf8\x82\x5c\x90\x1b\x32\x99\x52\x4a\x47\xab\x38\x5e\x75\x99\xc5\x03\xd2\x0d\x65\x05\x8a\xc6\x31\x99\xb3\x15\xc5\x9a\xae\xd8\xba\xdc\xf3\x6c\x59\x79\xae\x63\x86\x39\x2d\x07\x72\x6e\x81\x30\x71\xcb\x1c\x02\x00\xc2\x1a\x9a\xf6\x17\x4a\x3f\x4d\x67\x17\x15\x34\xcb\xe9\xd6\x4c\xf8\xb4\x86\x65\x2b\x63\x0a\x18\x85\x70\x30\x34\xcf\x29\x2d\xe1\x72\xeb\xd0\x3c\xa2\x96\x51\x35\x2f\xab\xe3\x93\xa2\x40\x5a\x82\xcb\xa2\x92\x2a\xb2\xd7\x90\xd2\x6d\xb7\xc8\xa9\x6d\x49\x48\x61\xe6\xaa\xdf\xd8\x15\x3e\x51\x53\x30\x20\xdc\x22\x77\x03\xeb\x32\xb6\xf1\x6b\xdc\x6d\x84\x0d\x2e\xd0\x05\x5b\xf6\x71\xc1\x16\xf8\x2d\x8e\x23\x85\x20\x2b\x8f\x82\x45\x01\xf6\x05\x44\xa7\xa7\xe9\x75\x2a\x4c\x44\xc7\xbc\xaf\x79\xa6\x96\x57\x9c\x2c\xfa\x3e\x95\xf6\xcd\x05\x97\xf5\x93\x49\x7b\x4c\x02\x06\x7b\x99\x53\x68\x7e\xf6\xa0\x0f\xdf\x69\x52\xa9\xb9\xad\x46\xdf\x65\x66\x20\x25\xcb\xfd\x0a\xdd\x40\x5a\xea\xcd\x67\x64\xe3\xf6\x12\xc2\xcc\x02\xd2\xa6\x86\x02\x4c\x8f\xb5\x6b\x2d\x85\x94\x26\x29\xa1\x79\x39\x83\x67\xe5\x0c\x4a\x66\x8a\x83\x70\xc2\xfd\x9e\x9d\x5a\x58\x5f\x29\x31\xef\x0c\x2c\x72\x42\x4c\xc2\x0b\x24\xcc\xe4\x66\xb9\x84\x12\x01\xf0\x2a\x8a\x2c\x6b\xeb\xbb\xae\xc4\x31\xe1\x05\x2a\x08\x38\x8d\x23\x2e\x70\x2d\x80\xeb\x4d\x5b\x85\xd4\x8f\x66\x33\xe2\x4d\x6c\xe2\x6a\xb0\xcb\xe9\xe4\x76\xcd\xfd\xe9\x74\x72\xc1\x3b\xa1\xf9\xce\x5c\xf1\xac\x23\x95\xe9\xac\xb5\xba\x12\x73\xde\x49\x3b\xff\x89\x85\xff\xb3\xe3\xea\x8a\x0a\x68\x6d\x72\x77\x4e\x66\x44\x42\x39\x00\xd7\x46\x75\xdd\x59\x7c\xef\xd6\x9d\x2f\x78\x47\xb7\x34\x2e\xc7\x26\xc4\x36\x23\x47\x00\xe0\xd7\xb0\x44\xd5\x58\x39\x04\x4d\xf8\xc4\xd8\x95\xb2\x59\x9a\xa3\x74\xc5\xa7\x4c\xb9\x85\x01\xbc\x6f\x57\x1c\x33\xf8\xf7\x4a\xcd\x8a\x5d\xdd\x2d\x21\x55\x03\xb2\x5b\xa0\x55\x10\xd3\xfd\xbe\xd0\x44\x25\xe4\xeb\xa0\x5a\x40\xd4\xf5\xce\x9e\xfc\x16\xac\xa9\xec\xf8\xbd\xd5\x56\x7d\xb9\xd8\xae\x4b\xfa\xcd\x22\xf6\x57\x6a\x96\x98\xc9\x60\x9a\x8f\x86\x1d\x21\x3b\x06\xbb\x8e\x68\xfc\x95\x9a\x31\x33\x19\x4e\x29\x3c\x28\xbf\x2c\x84\x4c\x97\xcb\x5b\xf7\xed\xc1\xd4\xf6\x70\x61\xb8\x76\xef\xdf\x4c\x29\x20\x02\x32\xfa\xf6\xa9\x34\x5a\xf0\xac\xbf\xde\x64\x17\x84\x57\xda\x7f\x54\xb6\x6f\xfa\xfe\x80\x12\x4a\xee\x76\xdb\x7c\xc4\x71\x36\x59\x71\xbe\xd8\x51\x18\xde\x41\x30\x40\x35\x37\xe3\x65\x85\xc7\xb6\xc2\x46\xb3\x6c\x12\xc6\x16\x69\xa5\x4c\x94\x4f\xc1\x14\x48\xf7\x1a\x3b\xe9\xbb\xaa\x79\xc6\x0d\xe9\x0e\x2a\x3d\xbc\xb1\x15\xda\xbd\x53\xf4\x73\xa2\x70\x0b\x56\xd6\x19\x62\x2c\xe3\x16\xe3\x3e\x7d\xeb\x16\x47\xc8\x6d\x6c\xae\xae\xc8\x8e\xd2\x23\x62\xfa\x4b\x2e\xcf\xcd\x05\x0d\xb4\xe0\xc1\x10\x04\xab\x90\xec\x74\x6b\xc9\xaf\x51\xaf\xa7\x1f\x86\xbc\x23\x2a\x16\xc4\x23\x49\x03\x9a\x96\xbd\xf0\xa8\x6a\xa2\xed\x44\xd8\x65\xcb\xba\x43\x28\xd0\x6d\xf8\xee\xf7\x75\xc8\x31\x00\x9e\x97\x94\x2a\x2e\x66\x91\xfb\xad\xb7\xb5\xaf\xc9\x9b\x0a\x6e\x7a\x53\x1c\x16\x9e\xf8\xf0\xb5\x21\xf5\xd1\x1d\x84\x82\x9d\x45\xe5\x58\xbc\xea\xcf\x94\xcc\x8c\xde\xcc\x8c\xd2\x6c\x0d\xeb\xda\xfb\x02\xd6\x93\x74\xca\x16\x48\x8d\x2d\xd3\x5b\xbb\xbd\x58\x49\xc9\x3e\x0b\xd0\xb4\x5b\x3f\xdb\x4b\x6e\x61\x43\xda\x26\x20\x8e\x4d\xb5\x51\x3f\xde\x6e\xd7\x12\x46\x9c\x31\xb6\xd8\xed\x5a\x9a\x64\x8c\x59\xc4\x5a\xf6\x6b\xb7\xe3\x7d\x99\xae\x38\xa5\x39\x98\xfe\x2a\xd5\x97\x6d\x07\xb4\x27\x03\xb2\x1a\xa1\x31\x6e\x4d\x25\x06\xd6\x34\x21\xa6\x7f\x7a\x8a\xf0\x3a\x3d\x65\x6b\x48\x71\x7f\xed\x76\xc4\x58\xc0\xb4\xf4\x8b\x52\x30\x77\x92\x1d\x57\x14\x8c\xed\x5d\x8a\x54\xd5\x7e\xf7\xb6\xfe\xfc\xb4\xb4\x17\x9c\x93\xdb\x2a\xff\x52\x79\x99\x88\x3b\xe9\x29\x30\xfd\x47\x55\x7e\x8b\xdd\xda\xe6\x6c\x4a\x59\x02\x79\x2a\x40\x42\xa3\x38\xa9\x44\x1c\x13\xc1\xde\x6a\xb5\x12\x19\x77\xb4\x94\x63\x98\x6e\xc9\x2c\x14\xa0\x96\x94\x08\x8d\xb5\x4d\x38\x91\x74\x9c\x26\x29\x2e\x54\xd2\x4a\x03\x84\xc2\x88\xb7\x8d\x5b\xf4\x45\x01\x7b\x08\xc3\xb9\x05\xd2\x55\x1d\xb8\x11\x5c\x7d\x86\x84\x84\xab\x82\x9f\xdc\xcf\x12\x4d\x1c\xa6\xed\x14\x95\x4d\x23\x0b\xa4\x4b\x7e\x9b\xb5\xac\xcf\xc9\x74\x64\xf7\x34\x1e\xef\x38\xd3\x94\x3b\xb4\x28\x69\xb9\x55\x35\xbf\xe2\x3a\xe3\x84\x42\xb1\xf5\x64\x40\x06\xbc\x40\x04\x1e\x69\xf0\xfe\x5a\xad\x09\x62\x1f\xed\x6a\x0c\xf4\x9c\xdf\xf2\x1a\x64\x81\x0f\x64\x5e\x7c\x0c\x08\x40\xe6\xb6\xbb\x98\x35\x63\x37\x70\x5c\x59\x5b\xdb\xca\xae\x49\x8e\x01\xd1\x63\x52\x1d\x93\x45\x8c\x16\x71\xae\x35\xbf\x62\x03\x87\x44\x11\x89\xf8\x67\x64\xdf\x1c\x19\x8a\x8f\x1e\x5f\x60\x4a\xe8\x92\x7b\xa9\x1d\x51\x98\x54\x3f\x32\x31\xa9\x42\x98\x34\x8f\x96\x80\xcf\x1f\x51\xe8\x1a\x1a\x40\xcc\x11\x20\x16\xc1\x47\xc6\x51\x2f\xb3\x8b\x54\x3f\x32\x64\x40\x0b\x52\xd3\x7e\x06\x4e\xe3\xd8\x63\xe5\x1e\xef\x67\x4b\x31\xe3\x64\x48\x2d\xe5\x6f\x3f\x5b\x5a\xdc\x9f\xd6\x39\x64\x46\xad\x93\xca\x32\xa8\x0c\x66\xe0\x85\x40\x8d\xce\x4d\x06\xd3\xca\x71\x55\xa7\x59\x8c\xa3\x59\x1c\xa3\x6a\xaa\xd4\x87\x3b\x91\xae\xd2\x65\x0e\x7b\xac\x6a\xeb\x24\xd8\x3e\x84\x8a\x46\xfe\xb0\xba\x10\xd9\xa8\x42\xc1\xa3\xa8\xc3\xd7\x9f\xfa\xf3\x35\x30\x64\x08\x5d\x13\x48\x1a\x09\xfa\x8b\x84\x4b\xb7\xab\xf3\x00\x69\xd5\x1c\xb4\x5f\xa6\x07\xc3\x91\xfa\x91\x0d\x46\x07\x07\xca\x2d\x58\xb1\x07\x1d\x35\x85\x94\x89\x26\x84\xf0\xa8\xb6\x78\xa3\xef\x0e\x6f\x5a\x92\xdb\x5c\xce\x9d\x3c\x23\x7c\x7b\xc8\x8a\x55\x18\x04\x10\x7e\x72\x05\x44\x81\x7e\x89\x28\x64\x95\xe4\x92\x78\x71\x75\xcd\xe2\x38\xab\x2f\xe8\x87\xa2\xa0\x7d\xca\xc6\xcb\x34\xe8\x0e\xb0\x60\x35\x7f\x59\x69\xb5\x44\x25\x35\x0f\x52\x8c\xd9\xbf\xdc\x16\x16\xb5\x85\xba\xd9\xbe\xec\xc7\xe8\xdb\x4e\x66\x52\xc3\x57\x5c\x9a\xce\xb5\x30\x17\x6a\x63\x3a\x58\xbc\xa3\x74\xc7\xf7\x20\xfa\x37\x3a\x9c\xe7\x39\x38\xb1\x47\x52\x15\x60\x39\x6c\xe4\x30\xd0\x9d\x33\xaf\xdd\xcc\x17\xe2\xb5\xe6\xcc\x6b\xa4\xa4\xd4\xfe\x2c\x16\x9b\x53\xd5\x27\x2a\x8e\xcb\xce\xab\x6a\x37\xfd\xd2\x52\xa3\x33\xcd\xd3\xcb\x3c\xb7\xa7\x4d\x84\xcf\xb8\xc9\x76\xbb\x28\x48\x4f\xf0\x9d\xc6\x71\xb9\x76\x78\x1c\xf3\x87\xac\x3a\x6a\x3c\xaa\x2c\x26\x0a\xe7\x94\x18\x57\xd7\x67\xb2\x2d\x68\x26\xbf\x89\x8c\xdf\x3e\x1c\xc4\x98\xdc\x85\xbd\x1c\x75\x55\x69\xc6\x52\xfa\xf8\x25\x88\x66\x48\x4a\x73\x08\x2f\x0d\x70\x7f\x1d\xd6\xa8\x8c\x19\xb3\x34\x07\x8e\x89\xe3\xb2\x3b\x58\x36\xa9\x48\xbb\x7c\x0e\x52\x60\x1f\x56\x60\x5e\xe3\x28\xef\xea\xe8\x02\xcf\x58\x56\xe8\x36\x67\x52\x91\x78\x19\x2f\x83\xe2\x1e\x99\xba\x7c\x9c\xc2\x26\x87\x85\x90\x22\xbb\xa8\x61\xb3\x02\x75\xdf\xbd\xac\xb8\x5b\x56\x25\x97\xdc\x58\x56\x1c\x97\x95\xac\xf2\x27\x76\xce\xab\x78\xb5\x80\xb8\xac\xcc\x2b\xc8\x82\x81\xa1\xf0\x88\x48\xdb\xc5\x1c\x70\x13\xfd\xef\xea\xa2\x5b\x83\xd8\x3d\x7f\x9c\xcb\x3b\x8f\x0a\x5d\x11\xab\x04\x4e\xd5\xf6\x32\x1c\xe9\x2a\xcf\xf7\xf0\x82\x58\xda\x73\x75\xe9\x31\x41\x6a\x0c\x5f\xad\x4d\x44\x73\x08\x07\x2e\x4a\x19\x93\xa6\x68\xba\x0a\xaa\xe2\x68\xde\x06\x66\x33\xb1\x4c\x11\x94\xfc\x70\xc2\xc1\xf3\xbf\x89\xcc\xa1\x10\xe7\x56\x56\x4a\x98\xfa\xea\xe9\x61\x61\x6b\x72\x62\x0a\xcd\xc3\xc8\x89\x16\xcf\x03\x1d\xf5\x6e\x23\x8d\x58\x71\xc6\x4b\x49\x62\x41\x07\x46\x1a\x25\x68\xcd\xbc\x1d\xd6\xd1\x11\xb5\x2c\x66\x4e\x29\xe8\x56\x01\x9a\xe5\x06\x5e\xa7\xe6\x82\x31\xfb\x1b\xc7\x06\x35\x0e\x64\x4f\x18\x55\xaa\x6a\xe2\xb8\x7c\xa6\xbb\x5d\x4b\x5e\xa7\xb0\x89\x63\xf7\xdf\x9e\x27\xe3\xcb\x45\x1c\xdb\xdf\xf6\xef\xb6\x63\x74\xb7\xab\x0c\xb1\x9c\x84\x88\x12\x5a\x61\x0d\x91\xc9\x2d\xe4\xb0\xdd\xae\x25\x6d\x1b\xd2\x56\xcb\x8d\x41\xca\xba\xa2\xa6\xb0\xf2\x55\xfe\xa3\x1b\xd8\x06\xa7\x3d\x0a\x0a\x1a\xb2\xcd\x61\x08\xdb\xf3\x2a\x95\x57\x16\xca\x73\x3a\x19\x4e\x2d\x60\x67\x6c\x9b\x5b\x32\x11\x0b\xbd\xcc\x9e\xca\xcd\x8a\xeb\xf4\x6c\xc9\x21\xab\x08\x5a\x2b\x9a\x9f\x27\x3c\x9b\x69\xb1\x36\x4a\xc3\x86\x6d\x17\x49\x16\xc7\xdd\x99\xc3\xf0\xdb\x61\xf2\x20\x87\x21\x1d\xef\xd3\xca\x99\xa3\xcd\x0c\xad\x72\x6c\xbc\xcf\x8b\xe6\xf2\x64\x96\xc3\x92\xd5\x11\xa5\x67\x74\xca\x5c\x49\x97\x0c\x63\x43\x61\xa6\xe4\x42\x9c\x6f\x42\xda\x03\x9b\x76\xad\x85\xf1\xef\xdf\xda\x77\xc7\x2f\xf0\x3c\x87\x85\x1d\x63\x20\xfb\xa1\x8d\x97\xea\x2c\x02\xe7\xef\x09\xc6\x7f\xc2\xc1\xd0\x6e\x2d\x16\x45\xfd\x6c\xbd\x14\x06\x2e\x58\x1b\xfc\xbb\x0e\x46\x24\xfa\x14\xd1\x56\x30\x92\x81\x65\x55\xc6\xfb\x4d\x46\xae\x3b\x11\x63\x6b\x62\xe8\x78\x1e\xe4\x00\x51\x44\x13\x5f\xa9\xa1\xb9\x7f\x84\x15\x6b\x90\x89\xf6\x48\xb3\xa8\xc6\xa1\x89\x8a\x18\xe9\x30\x95\xff\x69\xc9\x85\xe5\xd2\xcb\xdf\x3a\x4a\x76\xa2\x9e\x29\xb9\xb1\x1c\xae\xda\x40\x70\x41\x56\xc4\x20\x57\xd5\xf2\x75\x7f\x89\x8f\x6d\x0f\xba\x8c\x99\xa4\x8d\x4f\xcf\xe1\x96\xed\x1d\x7a\xdd\x73\xdb\x40\x21\x3d\x41\x74\x0a\x1a\x25\x30\x71\xbc\x5f\x0b\x91\xf6\xc0\xf1\xd3\x66\x89\xfa\x73\xd4\xb3\xf8\x89\x2a\x2a\xd2\xed\xc2\x1a\x2c\x8d\x6b\xe0\xcd\xe2\x0b\x85\xbb\xff\x73\xcd\xdf\x35\x05\x4a\x5e\x71\x6d\xbc\xf4\xae\x63\x54\x67\xad\xc5\x4a\x18\x71\xc5\x3b\xd8\x2f\x8b\xbb\xcf\xec\xd2\x6c\xa8\x56\xaf\x5b\x77\x41\xe7\x2c\xac\x10\x4e\x73\x78\xc4\x54\x7f\xae\x66\x1b\x4b\x23\xc2\x31\x3b\x27\x8f\x68\x1c\x9f\x93\x47\x5e\x78\xf0\x74\x89\xd4\x23\x85\x9b\xb6\x99\x3e\x1e\x37\xf2\x11\x43\x51\x75\xfc\x86\x75\x53\xcb\x3c\xfd\x4b\x88\xe6\x86\x44\x73\x71\x15\x51\x88\xd2\xe8\x73\x08\xa7\x9f\x5a\x7c\xf3\xf4\x8b\x58\xe5\xd4\x62\x95\x74\xfc\x74\x9f\x68\x32\xec\xca\x9e\x56\x9c\xdd\x12\x6e\xc9\x68\x78\x43\x4b\xd4\xd9\x79\xea\x40\x53\x20\xcf\x5c\x2c\xc8\x35\xa6\x85\xa9\x5a\x92\xee\xa6\xbf\x28\xc1\x08\x66\xc2\xa7\x34\xcf\xe1\xb0\xb9\xbb\xdc\x4a\x6d\x4e\xac\x5b\x0a\xc4\xd0\x5e\xd4\x22\x9d\xad\xec\xaf\x3f\xdb\x41\x05\x6f\xdd\xd0\xfe\xdc\x3b\xa4\xc5\x82\x1c\xd6\x87\x76\x68\x69\x96\xda\xf8\xfe\xf4\x99\xeb\x23\x8c\xce\xb9\x89\x84\xec\xc8\xdd\x2e\xca\xfc\xe3\x3e\x52\x78\x34\x9b\xf1\x2c\x53\xda\x75\x3a\xdb\xac\xed\x31\xcd\xe7\x45\xa7\x23\xb7\x20\x6d\x61\x7b\xbe\x5b\x26\xd9\x8b\x1c\x28\x98\x3c\x87\x4b\x96\x8e\xef\x20\x2c\xde\xf6\x17\x98\xb2\x24\x43\x90\x94\xe6\x77\x12\x20\x58\x29\x98\x1c\x4e\x1a\xeb\xdb\x8e\xf1\x92\x28\xa8\x4c\x9f\xa4\x5b\x35\x31\x53\xc6\x03\x41\xc4\x73\x78\xc7\xd4\x24\x3a\x3d\x9d\x29\xcd\x0f\xfe\xcc\x4e\xb3\x8b\x54\xf3\xf9\xe9\x69\x34\xdd\xed\x4e\x48\xdb\x07\xd8\xe6\x14\x5e\xb1\x70\x0a\x17\x7b\x79\x54\xee\xf5\xc2\xd2\xe2\x5d\x5f\xc8\x6c\xcd\x67\xe6\x58\x6d\xf4\xcc\xd2\xb7\x8d\x94\xb6\x7d\xf4\x2a\x20\x83\xdc\x31\x17\x2f\xe1\x08\xee\xc1\x7b\xd6\x28\x0a\x4f\x98\xea\x7f\xe4\xe9\xe5\xeb\x74\x0d\xcf\xda\xc4\x9a\x4f\xe2\xf8\xbe\x4c\x11\x33\xcc\xd4\x9c\xdf\xef\x1b\x9e\x19\xf2\x9e\x3c\xa1\x14\x5e\x37\xad\x36\x4a\x32\xab\x1d\x4f\xbc\x9b\x98\xe9\x6e\x47\xec\x9f\x27\xd0\xba\x8c\xf1\x31\x4f\xb6\x39\xcd\x29\x89\xae\xb8\xce\x84\x92\x59\x04\x93\x29\x75\x02\xab\xad\x4f\x4b\xa2\x6f\xfa\xdf\xf7\xbf\x8b\x60\xa5\xe6\x3c\x89\x1c\xa9\x14\xc1\x4c\xad\x6f\xb5\x38\xbf\x30\x49\xf4\xff\xfe\x3f\x9d\x07\x83\x07\x83\xce\x13\x2e\x45\xd6\x79\xbb\xc9\x2e\x2e\x53\xcd\xaf\x3a\xe4\xd3\x52\x09\xad\x66\x97\x7d\xbd\xa1\x91\x6d\x88\xc2\x5f\x6c\x00\x8f\x91\x32\xeb\xeb\x54\xce\xd5\x8a\x50\x78\xde\x76\xb6\x38\x7b\x11\x12\xf5\xfc\x06\x2b\x04\x8d\x66\x1c\x45\x89\xdd\x6e\xf4\x34\xea\x91\x5e\xef\xaf\xde\x63\x5a\x4c\x23\xf9\xe6\x7b\x9a\xc3\x27\xf6\x9a\x44\x97\xfc\x36\x8b\x28\x7c\x68\x9b\xa4\x4f\x0e\x1c\xf6\x8f\x3d\x77\x07\xdc\x0b\xb6\xcd\xe1\xd7\x72\x52\xec\x19\xf0\xcc\x51\x2a\x1f\x51\x8e\xf9\x2b\xfc\xc6\x3e\x5a\x0c\x05\x3f\xb3\x8f\x16\x3d\xc3\x4f\xec\x63\x3f\xe3\x66\xf4\xb2\x1d\xe6\x3f\xb9\x95\xf0\x11\xd7\x30\xf0\x1c\x8e\xda\xba\xf2\x5b\x91\x8b\xee\x76\x16\xdf\xde\x6b\xcb\xf5\x73\x99\x2b\x77\x82\x02\xdb\xb1\x5f\xd8\x07\x12\xa1\x58\x20\xa2\xa3\x17\x93\x5f\xa6\xac\x3b\x80\x3b\x7a\x73\x49\x0c\xfc\xf2\xb9\x8e\x58\xb4\xf8\x0b\x1d\x9b\xc9\x2f\xd3\xe4\xce\x7e\xb8\x4c\x39\xea\xec\x7e\x07\x63\xd8\x36\xe3\x26\x79\x09\x16\xc3\x1f\xc1\x45\x9a\x25\xf7\x80\xcb\x85\xd2\x33\x9e\xb4\x14\xbf\x67\xa9\x9a\x23\x7b\xb2\xbc\x24\xc6\x6e\xc5\xdc\x96\x34\x5c\x3f\x53\xba\x2d\x7f\x55\x63\x8e\x94\xc1\xc8\xe1\x61\x4e\x77\x3b\x22\xd9\x11\xe1\x94\x22\xd7\xd4\x6d\x25\x7b\x5e\x4a\xcb\x6b\xa5\x46\x9c\x2d\x79\x47\xf3\x19\x17\x57\x5c\x83\x25\x7c\x7a\x51\x47\xf3\xbf\x36\x42\x57\xf0\x5d\x47\xe6\x79\x0e\xdc\xb4\x5b\x44\x19\x3c\x9d\x40\xda\x07\x3f\x42\xd0\xcc\xaf\x3a\x4f\x0f\x38\xaa\x90\x04\x2a\x8e\x8e\xee\xd8\x96\x20\xa0\xb0\xa4\xe9\xe2\xe9\xda\x4d\xfb\x1b\x99\xa5\x0b\x4b\x61\x17\x29\x25\x89\x0b\x9b\x32\x55\xaa\x93\x54\x9f\x73\xf3\x9c\x9b\x51\x0b\xda\x40\xc9\x48\xe6\x3a\x50\x60\x32\xbe\xdb\x5d\x13\x01\x91\x4c\x57\x3c\xa2\xbb\xdd\x65\xf1\x62\x57\x84\x24\x82\xf6\x33\x87\xd1\x74\xff\x4f\x25\x64\x51\x43\x51\xad\xc5\x15\x11\xea\x26\xba\x8c\xa9\x31\x99\x8d\xbb\x9b\x38\xb6\xf8\x3b\x8e\x49\xc6\xba\x03\x9a\x78\x05\x9e\x4d\x83\x6c\x8c\xa8\x5d\x24\x97\x6e\xbc\x94\x26\x45\xd2\x09\xb1\x09\x39\x25\x05\x12\x2e\x8d\xca\xa2\xb0\x91\x23\xd8\x27\x37\xda\x68\x4a\x64\xdf\x38\x32\x12\x61\x0c\xbb\xdd\x7b\xf7\x9e\x53\x44\x39\xd2\x30\x05\xda\xb4\x21\x99\x96\x0a\xc7\xc6\x6b\xbd\x72\x50\xa6\x7d\x2b\xa5\xfa\x1c\x69\xac\x20\x0f\x78\xf8\x60\xac\x0d\x91\x66\x62\xa6\x96\xf5\x33\xc4\x1e\x53\x34\xc1\x84\x38\xc6\xbf\x09\x9f\xee\x76\x0a\xdf\x95\x7b\xcd\x41\x18\x87\x07\x67\x5c\x2c\x21\xf5\x2f\x8b\xa5\x52\x1a\x66\x6d\xbd\xed\x78\xad\x22\xeb\x19\x3a\x1e\x24\xc4\xfc\x38\x18\xa7\x26\x11\x86\xda\xd3\x06\x32\x5f\xc3\x4a\x48\xd8\xb4\x96\xb7\x05\x32\x43\x90\x89\x80\x1f\x06\x83\x7f\x0c\x7f\xf8\xe1\xc1\x77\xdf\xfe\xe3\xdb\xc1\x0f\x3f\x0c\x69\x32\xc8\x61\x19\xea\x48\x6f\x60\x51\xa9\x6f\xdd\x84\x84\x93\x7a\x60\x4d\xc5\xee\x79\x38\x18\x2f\x0d\x91\x3d\x0e\x03\x9a\x2c\x0c\x91\x48\x94\xce\x5b\xbb\x52\x57\x25\x79\x99\x07\x08\x76\x45\xd0\xd0\x6e\x63\x88\x08\xca\x53\x98\xb1\xb5\x41\x63\x15\x14\x6e\xc6\xb1\xec\x32\xe9\x95\x25\xe9\x8f\x33\x54\x98\x12\xc5\xc4\x64\xd6\xeb\x4d\x69\x97\x29\x5a\x70\xc8\x28\x8c\x2d\x32\xce\x7a\x3d\xcc\x6b\x76\xbb\x59\x47\xc8\x8e\xa0\x71\x2c\x26\xb3\x29\x9a\x59\x04\x10\xed\x76\xb3\xdd\x6e\x10\x18\x52\x13\xc7\x07\xc3\x3c\x87\x0b\xc3\xb6\x42\xce\x96\x9b\x39\xcf\x92\x39\xaa\x90\x41\xc8\x39\xbf\x79\xb3\xc0\x57\xcb\x16\xae\x0c\xbb\x30\x7d\x9f\x0a\x57\xad\x10\x03\xed\xa8\x55\xc5\x06\x20\x82\xae\x08\xf5\x44\x9a\x76\xaf\xc9\x0b\x90\x34\x8e\xaf\x89\xc6\x7f\x51\x28\x8e\x6a\x8a\xa1\x1f\xd5\x88\x62\x16\xc6\x27\xca\x0e\x39\x8e\xc9\xff\xbd\x32\x44\x80\xa4\xbb\x5d\x51\xa8\x34\x50\xcc\xe1\xdc\xb0\x49\x54\xd1\xf5\x44\x10\xd5\xd9\x8b\x08\x22\x91\x55\x34\x97\x11\x44\x6d\x7c\x6b\x64\xf7\xe7\x2b\x35\x4b\x97\x3c\xec\xd2\xca\x86\x8d\x3c\x63\x15\x4d\xe1\xd6\xb0\x73\xd4\xc9\xce\x52\x43\x22\xd7\x6f\x57\xa7\x6b\x21\xa2\x70\x66\x2c\xdd\xdb\x4a\xf7\x1f\xa5\x2b\x9e\xed\x76\x2d\xcb\xe6\xca\x10\x03\xb7\xf6\x0c\x84\xeb\xbb\xcb\x3b\xd2\x21\xcb\xe1\x91\x61\xca\x90\xe8\x1d\x5f\x2c\x2d\x35\x0e\x91\xba\x96\x3f\x23\x59\x50\xaf\xdd\x61\xf8\x33\xd3\x77\x14\x37\x05\xc9\xae\x4d\x7f\x51\xac\xec\x31\x0f\x63\xb1\xd9\x69\xc2\x73\x38\x6e\xce\x6f\xa1\xf5\x63\x8f\x8c\x5d\xc4\x9a\xbd\xed\x2f\x40\xb1\xd3\xfe\x02\x04\x1b\x8c\xc4\x43\x19\x34\x7b\xa2\xd7\x2b\xcc\x2b\x27\x62\x3a\xb2\x87\x6a\x8a\x42\x23\x03\x29\x28\xc2\x21\xa5\x76\x88\x37\x86\xdd\xff\x8f\xdd\x1f\x25\x7a\xfc\xa3\x7f\x1f\xde\xb4\x6f\xc5\x53\x33\x79\x6a\x77\xe3\xb4\xe8\x34\x63\x7f\x9a\xdd\x4e\x76\xd9\xa1\xb1\x47\xc2\x3e\xaa\xe3\x63\x41\x38\x4d\xba\x5d\xbb\x4d\x9f\x1a\xf6\xc6\xf4\x9d\x54\x57\x7c\x6a\xa5\x6c\x0b\x4e\xa7\xaf\xf9\x7a\x99\xce\x38\xb9\x31\x10\xf5\x23\x4b\x7d\xbd\x52\xd7\x5c\x1f\xa6\x19\x27\x34\x87\x53\xac\x6b\x9e\x9a\xd4\xd2\x54\x87\xf8\x76\xf4\xe8\xe4\xe5\x87\xa7\x2c\x3a\x8a\xe0\x4f\x4c\x78\xfb\xe6\xd5\x6f\xcf\x5e\xbe\x7a\xc5\xa2\xb7\x11\xbc\xb5\x49\x70\x69\x10\x5a\x27\x77\x6c\x1d\x67\x9d\x06\x99\xe5\xc0\xf1\x04\x84\x0d\x33\x7d\x47\x8f\xc2\x92\x99\xbe\xa5\x84\x50\xec\xca\x36\x63\x95\x2c\xc7\x6a\x92\x21\x1f\x90\x59\x4a\x23\x21\xee\x75\x9b\xd3\x8a\x52\xdc\xce\x1a\x6a\x55\x1d\x33\x99\x32\x3e\xd1\x53\x10\xcc\x54\x8f\xd9\x31\x99\xb1\x4b\x83\xca\x35\x1a\xc7\x33\xaf\x74\x96\x36\x67\xf7\xad\x21\x9b\xb1\x4e\xb2\x1e\x59\x8e\xa3\x7e\x94\x44\xff\x11\xd1\x9e\x76\x06\x28\x33\x3e\xa7\x71\x5c\x90\xdb\xce\xcc\xd7\x03\x3f\x2d\x0f\xec\xd2\xf0\xf3\xd8\x90\xd4\x1e\x8d\xc4\xf4\xb3\x8b\x74\xb5\xdb\x09\x8b\x05\xec\x23\x8d\xe3\x4b\x92\x42\x64\x9f\x23\xe4\x05\x39\x76\x08\x52\xa4\x08\xe1\x9d\x61\xdd\xee\xe7\x36\xc3\x1d\x1c\x7c\x37\x10\x30\x8e\xda\x76\x07\xe6\x2b\xc3\xde\x99\x38\xee\xba\x44\x6c\x3f\x8e\xa3\x0c\xdf\x9a\x76\xdd\xa5\xc5\xd6\x4b\xc3\x1e\x69\x9d\xde\xf6\x45\x86\xff\x6d\x1b\x38\xc2\x2f\x5e\xbc\x95\xc3\x51\xeb\xd9\xe0\x05\x5d\x5e\xf0\x74\xcf\x04\xbe\xd9\x12\xf4\x77\x63\x85\x73\x5b\xe1\x7b\xc3\xd2\x71\x1b\x9b\x2d\x78\xd6\x10\x1d\xd8\x8d\x5e\xaa\xea\x41\xb3\x7b\xb8\x6d\x15\xd3\x7e\x9b\xe2\xae\x55\x3f\x8a\x11\x75\xdc\xac\x64\x7a\x22\x7a\xbd\x29\xf0\x89\x9c\x56\x19\xfb\x27\x0e\xcb\x04\xc9\x4b\x04\xc5\xa3\x97\xa4\x44\x14\x9e\x19\x4b\xaa\xbf\x7c\x7a\xfa\xf6\xdd\x9b\x93\x37\x11\x85\xd7\xa6\x6a\x6a\x90\xc3\x5f\xad\xf4\xc9\x43\x27\x00\xf9\x11\x29\xd6\x87\x7f\xdc\x0f\xaf\x39\x3c\xae\x95\xb7\xdc\xf2\xef\x2c\x34\xdb\x9f\xab\x55\x2a\x64\x1c\x5b\xb6\xe5\xd1\xcc\xb2\x90\xbf\x06\x91\xe4\x85\x59\x2d\x17\x62\xc9\xa3\xaa\xc8\x00\xb5\xda\xc0\x47\x8f\x0d\xfb\xbd\x26\x95\x34\xfd\x6b\x2d\x0c\x27\x7f\x19\xe2\x88\xbf\xfe\x6c\xa9\xec\x26\x0f\xfa\xe7\xfe\x3a\xd5\x5c\x9a\x8f\x28\x17\xef\xbb\x46\x0a\xd0\x38\x65\x3f\xcf\xc9\xef\x34\x21\x84\xb3\x1b\x12\x89\x85\x46\x12\x94\xf6\x33\x73\xbb\x2c\xcc\x6f\x58\x24\x95\xe4\x11\x3c\x31\xfd\x74\xbd\xe6\x72\x7e\x78\x21\x96\x73\x3b\x1f\xbc\x9f\xe9\x59\x20\xb3\xa3\x3f\xd3\xab\xd4\xc1\x20\x89\x28\x10\xc3\x10\x31\x9b\xb2\x07\x01\x04\xb4\xaf\xd6\x5c\x12\xdb\xe3\x72\x04\x05\x7c\x9e\xf9\x25\x55\x1b\x12\x98\xfe\xb3\xca\x8a\xb0\x07\x98\xc7\xd7\xf2\xe0\x60\x44\x3d\x75\xfb\xb8\x62\x9b\x33\x39\x37\x13\x39\x2d\x30\xee\x63\x43\x68\x3e\x7a\x31\x79\x66\xa6\xc1\x54\xe0\xb9\xa9\xdb\xef\x54\x97\x6f\x81\xd9\x0a\x8c\xed\x65\xa7\x63\xf2\xba\x6a\x00\x84\x32\x20\x89\x2c\xe8\x6b\x03\xb5\x4f\x08\x5f\x89\x0d\x1a\x9a\x48\x66\x7b\x00\x05\xa3\xcc\xc7\x32\x79\x1f\xc8\xb0\x4f\x06\xcf\x37\xf8\x60\x6a\x72\xef\x17\x86\x7d\x41\xd9\x11\xc7\x77\x9f\xd1\xe3\xbb\x3f\x11\xaf\x2a\x49\x26\x53\xf8\x15\x8f\xea\x96\x8d\xfb\xc2\xc4\x71\x61\x5f\xe3\x66\x70\x1a\x31\xf6\xc1\x04\x19\xca\xb8\x5d\x23\xd2\xf9\x84\x72\xf0\x86\x4a\xa4\xf3\xc2\x78\x41\x3d\xcd\x73\xcb\x63\x7e\x32\xe4\x0a\x91\x48\x0e\x1f\x0d\x7b\x4d\xa2\xeb\xcb\x2c\xa2\xf0\x9b\x61\xaa\xef\xb0\x17\xfc\x6c\xd8\x2b\x33\xfe\xcd\x24\xbf\x99\x38\xfe\xcd\xf4\xbd\x66\xfd\x18\x99\xd2\xdd\xee\x39\xfc\xd4\x8a\xa2\xae\xc9\x47\x83\x0c\x3b\xb1\x88\xf2\x9a\xfc\x66\xdf\xc6\x1f\x2d\xa5\xcf\x7e\xb3\xbf\x89\x7b\xfe\xd9\x32\x83\x0e\x4f\x46\x3d\x4b\x58\x60\x72\x0e\xbf\x20\x44\x7e\x32\x39\xfc\x6e\x90\x4e\x30\x6d\x2e\x37\xd2\xf8\x6e\x5a\x66\x37\x3c\xb3\x6d\x4e\x47\xd7\x68\x1a\xbe\xdb\xfd\x6e\xec\x03\x78\x6b\xbd\x5f\x2c\x01\x63\xa8\xe5\xaa\x39\xc7\x6a\x25\x67\x3f\x19\x12\x55\xbd\x63\x28\xe8\x7d\x57\x15\x8b\xed\xaf\x89\x61\x72\x6c\x92\x9a\x8f\x0f\xa7\x71\xcc\xb9\xc5\x7e\x1c\xb6\x75\x05\xcb\xa0\x50\xa6\xd0\x1c\x14\x6f\x4a\x4b\x5b\xe4\x69\xfb\x1c\x7a\x9b\xf0\xb4\xe0\x0d\x6a\xd2\x53\xb1\xdf\x69\xb1\x20\x8a\xdb\xcd\x51\xae\xf8\x52\x8f\x90\x5d\x0b\x2f\x33\x9c\xa5\x19\xef\x0c\x92\x26\xe3\x51\xb1\x25\x73\x3e\x0d\x34\x1f\x61\xd6\xe1\x5e\x56\xb9\x97\x17\x64\xc8\xfd\x60\x3f\x77\xc5\x06\xa7\xcc\x0f\x3a\x94\xf8\xa6\xad\x04\xa8\xd6\x32\xa0\x68\x69\x74\xd9\xd2\xf3\x74\xbd\x5e\xde\x5a\x7a\x31\x70\xa4\x76\xad\xa7\x6e\xd2\xb3\x35\x9f\x09\x6e\x17\xfc\x8c\xb7\x11\x54\x01\xb8\x2f\xed\x5e\xaa\x51\x88\xdd\xaa\xb2\xa3\xc2\x36\x50\x24\x27\xdd\x29\x1f\xc7\xdd\x97\x86\x54\x58\x77\x3a\x3e\x27\x96\x6b\x71\x3a\x28\x46\x24\x93\x93\x94\x23\x77\x22\x83\x4e\x38\x29\x9e\x40\xf2\xeb\x8a\x95\xfb\x18\xeb\x4c\x24\x25\x0e\x71\x0d\x12\x8b\xb3\x32\xce\x26\x53\xe4\x67\x60\xd3\xb6\x3f\x86\x8c\xd9\x63\xf9\x81\xfd\xd3\xec\x1b\xfb\xa7\xd8\xb7\xf6\x4f\xb0\xef\xed\x5f\xca\xbe\x43\xe3\x10\xb1\xe7\x74\x35\x83\x0c\x36\xb0\x2c\xc9\xf6\x05\xac\x61\xce\x8e\x0c\x99\x51\x58\xb1\x0b\x32\xa7\x70\xc5\x04\x27\x36\xdb\x37\x14\xce\x2d\x4b\xba\x2a\x58\xd2\x5b\x36\x80\x33\xb6\xdc\xed\x66\x1c\xae\x19\x1f\x9f\x91\x19\x9c\xd3\x44\xe2\xc3\x80\x7a\x09\xc2\xe8\xfc\xc7\xdb\xd1\xad\xe7\x3a\xd3\xdd\xee\xd6\x12\x9a\x96\x94\x23\x6b\x76\x45\x16\x6c\x35\xb9\x9d\xc2\x2d\xcc\x29\x18\x4a\xd1\xe4\xf8\x7a\x72\x3b\x65\xeb\xc2\x15\x6a\x4d\xfd\x32\x36\x7e\x19\x87\xb5\xd3\x1d\xb8\xb5\xf4\x5d\xb1\x96\xdc\xfb\xf7\xe1\xfd\x36\xac\xce\xcc\x9b\x2f\x5f\xc3\xa2\x34\x4e\x2a\x58\xe4\x61\xc1\x24\x8e\x0f\x86\x89\xde\xed\xd4\x58\x25\xd7\x79\x0e\x4b\xce\xb6\xde\xe4\x2e\xd9\x70\x32\xa0\xb0\x4a\xd7\xf6\x69\x48\x61\x21\x96\x86\x6b\xfb\xf2\x80\x42\xa6\x56\xdc\x3e\x7e\x43\x81\x5f\x71\x7d\x6b\x9f\xbf\xb5\x79\xe4\xdc\x3e\x7e\xe7\x1e\x5f\x5a\xae\xd8\xbe\x7f\x4f\x73\x58\x70\xb6\xe4\xc1\xa0\x0f\xd6\xdc\x52\x46\x17\x62\x3e\xe7\x32\xa2\x30\x0f\x18\xeb\x6d\xd0\x8b\x45\x14\x2e\x50\xfc\x96\x71\x03\xab\x20\x88\x73\x32\xc3\x80\x5d\x23\x0a\x57\x2d\x2e\x8a\xe7\xbc\xc4\xf4\xb7\x1c\xa9\xb4\x9f\x8e\xdf\x1c\x45\xe0\xc5\x5b\x62\x71\x6b\x39\x51\x8e\x6c\xc7\xb5\x43\x99\x8f\x38\xfb\xd5\x1e\x94\xc7\x9c\x6d\xfa\x0b\xb8\xe1\xf6\xe0\x70\xb4\xaf\xdd\x4b\x6f\xf0\x5d\xad\x0f\xca\xa4\xa7\x2e\x0b\xd6\x78\x60\x94\xff\x72\xa0\xf9\xb9\xc8\x8c\xb6\x2d\x9c\x56\x2a\xc1\x1c\x2e\x6f\x25\xc7\x21\x2f\xcf\xa7\x3f\x6d\xaf\x7f\xf1\x3a\xde\xb7\x9c\x75\xff\xe4\xbb\x5d\xf7\xcf\x8a\xe3\x62\xe3\xb5\x6f\x41\x8c\x14\x13\x5c\x72\x96\xc6\xf1\x5d\xba\xba\xe7\x86\x5c\x73\xb2\xcd\x3f\xa7\x95\xbb\x76\xc2\x34\x97\xc5\x61\xf8\x7f\xa0\x9e\x2e\xa7\x4e\x5b\xb7\xa7\xf3\x71\x76\x2d\x67\x9c\x5c\x71\xe0\x74\xa4\xe3\xd8\xd3\x4a\x57\x7c\xc2\xa7\x70\xcd\x7d\x46\xd0\x71\x6c\xba\x8c\x5d\xf1\x38\xbe\x76\xb9\x2d\x56\x4c\xae\x39\x9c\xb4\x62\x28\x76\xc3\x51\x40\x6f\xc8\x79\x65\xb4\xc5\xa9\x70\xc1\x89\x04\xef\x75\xe6\x97\x01\x98\xf4\x3c\x31\x30\xf7\x8a\x43\xa1\xa4\x3d\x9e\x20\xb5\x07\x68\xbf\x92\xca\x38\x05\x99\xc3\x3b\x6e\x4f\xff\x16\xba\xbb\xc9\xeb\x98\xbc\x8d\x7c\x29\x34\xf2\x15\x3f\xd2\x73\x9e\xc3\xab\x96\x03\x96\xb9\x71\xbf\xe2\xe4\x0d\x77\xd0\x40\x06\xc4\xc1\xce\xeb\xf7\xc2\xc0\x50\xcd\x77\x4d\x6e\x2c\x78\xc6\x44\x56\xe4\xc0\x63\x54\x5e\xae\xed\xa9\x6c\x26\x6b\x3e\x9d\xe8\x29\xaa\xe6\xdc\x23\xeb\x0e\x2d\xa5\xf8\xdc\xd2\x7c\x55\xfb\x88\x25\x19\x40\x77\x88\x0e\x51\xa1\xfc\x6e\x87\xd3\xb2\x76\x2a\xba\xad\xe5\xfa\xca\x5a\x06\x14\x2e\xed\x57\x0d\x92\xd2\xe4\x3a\x3c\xe6\xf0\xb2\x39\x4d\xc5\x18\xa4\x93\xdc\x21\x17\x25\x69\x90\x96\x3c\xe1\x55\x41\xd4\x82\x13\x0d\x35\x27\xb8\x34\x8e\xbb\x47\x1e\x41\x59\x32\x75\xb7\x7b\xe5\x17\x0b\xea\x60\x29\x1a\xbb\x1f\xb5\xa1\xfe\x5b\x62\x90\x0b\x96\xec\x98\xd7\xcc\x7c\x83\xe4\x0e\xdf\x3d\xd0\x11\x94\x68\x01\x7c\x8d\xd0\x47\xbb\xdf\x2e\x91\xbb\x9d\x25\x7a\x5c\x39\x7c\xc6\x6c\xbb\x9d\x4f\x74\x60\xbe\x10\x19\x02\x86\x4f\xed\xf1\x67\x19\xd2\xf6\xb5\x8a\x72\xbd\x72\x2a\xc5\x82\x48\x5c\xeb\xa1\x62\x8d\x15\xbf\xb1\x0f\xc1\xc4\xeb\x8c\x23\xb1\x10\xba\xac\xea\x59\xa5\xeb\x80\xf4\xd3\xb2\xdb\x11\x55\x59\x09\x38\x4b\x2a\xcf\xe1\x7d\x1b\x78\x1e\x71\x47\xf9\x82\x64\x93\x69\x05\xfe\xbc\xee\xe1\x86\xad\x19\x6c\xed\x05\xfe\x4b\x27\x3d\x34\x4e\x6e\x9e\xc3\x93\xb6\xca\xdd\x5a\x06\x69\x5b\xe1\xe3\x37\x3c\x71\x4d\xe9\x7a\x53\xb2\xde\x54\xb7\x68\x8b\xe3\x3c\x5c\xb9\x17\xed\x1a\xc4\x8d\x8e\x8d\xea\xdc\x82\xee\x9d\xd9\xed\x08\x37\x84\x9c\xf3\x2a\x9b\xeb\x8d\x5b\x3b\xb5\xfd\xb6\xaf\xf6\x71\xc8\xa0\x24\x28\xab\x92\x4f\xea\x4d\xb8\x9b\x32\xfc\x8a\x9c\xa6\xf8\x34\x19\x4c\xc7\x9e\x42\xad\xa6\x85\xe3\x1d\x38\xea\x0e\xa1\xee\xa6\x52\x59\x77\xde\x2e\xe4\x8d\x1d\x2a\x54\x17\x95\x7b\xb6\x13\x8b\xcb\x92\x54\x16\x19\xee\xe1\x4b\x8f\x83\xdd\xee\xb4\x1c\x4c\x61\x8f\x1a\xc7\x6f\x79\x1c\x5f\x7a\xf4\xb9\x47\x92\x67\xdc\x24\x32\xa7\x70\xe2\x9d\x47\xe9\xd7\xea\x56\x3a\xab\xa0\x44\x31\xe9\xb9\x9d\x08\x6e\xb1\x2e\x44\x35\x86\x28\x6a\x75\x90\x3c\xe1\x04\xe1\xe0\x56\xcd\xa6\xbf\x60\x47\x1c\xde\xf6\x17\xec\x15\x87\xd3\xfe\x82\xdd\xe3\x60\x59\x4f\x3c\x56\xd9\x7b\x0e\xd7\xf6\xff\x09\x07\xcb\xae\xb4\x31\x57\x27\x9c\xfc\x64\x7c\x85\x90\xc6\xb1\x3d\xb3\xaa\x07\x00\x44\x15\x4c\x1e\xed\xc3\xa0\xfd\x5c\x2b\xc6\x57\x29\x9c\xe7\x38\xce\x2b\x7e\x97\xb8\xfb\x88\xc3\xd6\xe9\xe5\x92\xee\x20\xa7\x94\xc2\x89\x21\x5b\x1f\x9c\xa1\x3b\x80\x6b\x9d\xae\xed\xbf\x13\xf6\x25\xdd\x77\x06\xb2\x8b\x74\x65\x1f\x72\xd8\xfa\x90\x07\xe7\xf6\x08\x5a\x70\x72\xcf\x90\x43\xde\xf0\x31\x35\xdc\x6f\x36\x5b\xaf\x93\x6a\x96\x87\x59\x66\x52\x53\xaf\x3d\x07\x4b\x95\x25\xfb\x7b\xb2\x60\xa4\x46\x68\xe0\xf2\x94\x57\x2c\x5c\x9e\xda\x63\xd8\x63\xe9\x73\x4e\xca\x03\x14\x3f\x30\x09\xa7\x7c\x22\xa7\x8c\xdb\x0d\x7f\xc9\x6f\x9b\xaa\x58\xb1\x20\xdd\x77\xbc\xcd\xf4\xc5\x54\xb9\x36\x7f\x64\xfa\x0e\x9c\xda\xd5\x17\x3a\x70\xca\x91\xe9\xdd\x64\xdc\x2d\xa3\xea\xec\x58\xfa\x66\xe0\xbe\x89\xd5\x7a\xc9\x9b\xdf\x86\x76\x8e\xaa\xc0\xf1\x92\x9b\x16\xe0\x78\xd0\xa7\x39\x6c\x9d\xb4\x25\x69\xd5\xde\x55\xe4\x23\xcf\xd1\xc8\xe9\x25\x27\xf8\xe0\xd4\x55\x35\xe3\x9c\xe4\x15\x87\x3d\x39\xe2\x4b\x4b\x58\xb6\xdb\x29\x25\xf7\xf8\x57\x77\x37\x47\x0a\xac\x29\x37\x49\xde\x37\x6b\xf7\x02\xdc\xe4\xc9\x57\x56\x5d\x27\xfe\xec\x66\x23\x43\xe7\x19\xb5\x6d\xaf\xb8\x4d\xbe\x61\x4b\x1d\x19\x27\x3c\xa1\x70\xeb\x4f\xb9\x67\x9c\x75\x2d\x6a\xae\x37\xe1\x10\xea\x39\x27\x85\xe1\xd0\xc4\x32\x81\xd3\xa8\xcb\x6e\x39\x71\x4a\xd1\x68\x9b\xbb\xd7\x6d\x9a\x98\xbc\x9a\x50\x10\x51\xb6\x8f\xa3\xea\xf8\x1c\xa9\xde\x18\xdd\x33\x9e\xc3\xb6\xa0\xde\xf7\xec\x8a\x0a\xa7\x05\x50\x6c\x62\xa6\x20\xd8\x70\xd4\x44\xf5\x3f\x8a\x11\x55\xee\xdc\x29\xd1\xba\xe8\xf5\xa6\xce\xc7\x8a\x71\x20\xce\xc2\xa0\x38\x11\x2c\x7f\xec\xf7\x40\xc9\x34\xa3\x0d\x42\x93\x16\x68\x77\x11\x45\x57\x1b\xa6\x2b\x84\x0a\x5a\xa0\x81\xad\xb3\xdc\xa7\x76\x7e\xd5\x64\x68\x77\xe2\x2d\xf7\xac\x3d\x4a\xf8\x94\x9d\x84\xbc\x8a\x02\x27\x73\x3e\xdd\xed\x2e\xeb\x68\x71\x6e\x57\x4e\x85\x2b\x08\x76\x8e\xa0\x39\xa2\xf2\x82\x55\x7a\x61\xcf\x9a\x20\xa2\x7c\xcd\xe1\x2f\x0e\x8f\x1d\x77\x24\xd3\x2b\x71\xee\x1c\xe6\xa2\x4d\xc6\xf5\xa3\x73\x14\x5f\xef\x76\x51\x04\xcf\x2d\x5b\xb2\xd6\x6a\xc6\xb3\x0c\x3e\x71\xf6\x9c\xc7\xf1\x73\xde\x0f\x96\x43\xf0\x81\xb3\x4f\x3c\x8e\x3f\xf1\xfe\xd5\x3f\x47\x1f\xf8\xf8\x2f\xce\xc8\x6b\xce\x3e\xf0\x60\x15\xd1\x8f\x28\x9d\x0c\xa6\xbd\xd7\x7c\x32\x9c\x26\x8f\x39\x12\x61\xaf\x39\x7b\xcc\xfb\x2b\x94\xe4\xdd\x7f\x3a\x3f\xe7\x7f\xdc\x27\x7f\xcc\x7b\xf4\x3e\xa5\xbb\x1d\xe6\xfc\x91\xfd\xe3\x5b\x7b\x48\xd6\x72\x1e\x5e\x68\xb5\xaa\xe4\x8d\x63\xf2\x17\x67\x98\xdf\x9d\xf0\x2f\x38\xfb\x8b\xc7\x71\xef\x2f\x0e\xbf\x36\xe5\x21\x1f\x5b\xd5\x5b\x2f\xf8\x8f\xec\xbb\xe1\x6e\xd7\xdd\x5f\xdd\xbc\x24\x6d\x08\xaf\xf9\xb7\x6e\x73\x3a\xf9\x95\xb7\x78\x16\x6e\x17\x4a\x25\xc3\x3c\x87\x61\x97\x31\x8b\xff\xc8\x63\xa5\x96\x3c\x95\xb4\xbf\x50\x0a\xb7\xe3\x6f\xfc\x0e\x8b\xc0\x9f\x39\xdb\xe6\xf0\x13\x6f\xd0\x15\xe8\x0b\x92\xc3\x2f\x2d\x6b\xee\x9a\xfc\x5c\x45\xb8\x3f\xdb\x06\x47\x1c\xd7\xe7\x36\x0f\x14\xfa\x64\x6a\x77\x84\x66\xdd\xee\x35\xe1\x10\x3d\x3a\x3c\x7c\x7a\x7c\xfc\xe6\xdd\x71\x44\xe3\x98\xf7\x8b\x57\x50\xcc\x7e\x1f\xd0\x31\x9f\x0c\xa6\xc9\x4f\x1c\x66\x98\x30\xb4\x09\xc3\x69\x90\x6d\x54\x9b\x62\xdd\xae\xdc\x53\x30\xd9\xbd\x14\xc7\xdd\xb4\x50\xc7\x7b\xca\x6b\xeb\x76\x61\x72\x30\xcc\x47\x7a\xfc\x9b\x25\xf8\x87\x35\x76\xc5\x1f\xe1\x3f\xf1\x9c\x26\xc6\xee\x87\x21\x14\x0e\xd1\xca\x07\x60\x80\xdf\x9d\x10\x01\x45\x11\x60\x24\xfb\xc8\x49\xe4\xde\x22\x0a\x5c\xb2\x5f\x2a\xef\x35\xac\xe2\x34\x50\x80\xdb\xa4\x8a\x90\x8d\x65\x07\xb8\xb4\x27\xac\x93\x6f\xb4\x2c\x91\xdf\x79\xd8\xbd\x7b\x38\x65\x38\x2e\x71\x49\x01\x24\xbb\x6f\x1d\xf0\x65\x2b\xcf\x80\x33\x52\x18\xbf\xcb\x26\xe3\xee\x47\xed\xb4\x28\x15\xd5\x41\x58\x0c\xc3\x1c\x3c\x66\xd7\xb2\x2a\x52\x51\x92\x49\x49\x22\xff\x1a\x51\x48\x3d\x3c\x8a\x84\x99\x64\x4a\xc6\x71\x2a\xc7\x93\x22\x3e\x49\xdb\x80\xb5\xfc\x57\x07\xfc\x35\xb0\x2e\xdb\xec\xb2\x99\x74\x34\x0d\xf6\x60\x26\x3d\xbc\x32\x89\x22\x99\x8d\x6c\xd8\xd7\x67\xd2\x9d\x65\xa3\xaf\x39\x62\xd3\xdd\x6e\x23\x2b\x44\xc1\x9d\x87\x76\x2b\x99\x90\x49\x72\xe5\x89\x02\xdf\xa9\xa5\xbc\x23\xc4\xd3\x2d\xd2\x54\xe8\x8a\x3a\x76\xba\x42\x0d\x96\xe7\xb6\xdc\xb3\xb1\x1c\xb5\xcc\x3f\xdb\xe1\x2f\x77\x31\x6b\xf7\x4f\x82\x8a\x41\x89\xb3\x33\x78\x64\x88\xa6\x80\x7a\xf7\x19\x1b\x8c\x82\x11\xcd\x8f\xb3\x11\x2d\x4e\x33\x22\x99\x22\x1a\x78\x30\x99\xa1\x71\xbc\x94\x24\x75\xd1\x8c\x02\x9f\x11\x06\xbd\x68\x4e\xc1\x3d\xf3\xf5\x53\xb0\xb0\x93\x7b\xc9\x6f\x5b\x69\x8c\x7b\xa6\xa4\x30\xb0\xa9\xb5\x64\xdb\xc3\xe3\xe3\x77\x9b\x25\x7f\x25\x32\x93\x0c\xe0\xf0\xf8\xf8\xd8\xdc\x2e\xf9\x13\x3e\x5b\xa6\x3a\x45\x79\x0e\xa6\x7e\xb0\x47\x5b\xc8\xb4\x14\x5c\x9a\x77\x7c\x66\x7c\xc2\x93\x37\xaf\xeb\x6f\x8e\x38\x2e\xdf\x4f\xd4\x25\x97\xf8\x3a\x84\x27\xa9\x49\x4f\x74\x2a\xb3\x05\xd7\x2f\x0d\x5f\xf9\x5c\xcf\x44\xd1\x89\x17\x27\xaf\x5f\x3d\x5a\x2e\x0f\xd5\x72\xc9\x67\xbe\x0b\x36\x6d\x2f\xe1\x99\xd2\x2b\xaf\xf1\xf5\x29\xc7\xdc\xe6\x28\xd3\x5e\xf3\xb9\x48\x7d\xb5\xaf\xc5\x8a\x5b\x52\xda\x49\xbe\x07\x60\xa9\xbf\xf9\x91\x9a\xf3\xd7\xe9\xda\xbe\xaa\x39\xf7\x5d\x7c\x9b\x0a\x3b\xbe\xbf\x36\x3c\x0b\x83\x7a\xbb\xdc\x9c\x0b\x59\x3c\x84\x3a\x8e\x3f\x3c\x7f\x85\xf3\xed\xb3\x1d\x7f\x78\x7e\xb4\x59\x9d\x71\x5d\xbe\xbf\x4d\xcd\xc5\x31\x3f\xaf\x24\x28\x21\x4d\xf9\x5a\x83\xd5\xf1\x87\xe7\x0e\x36\x4a\x07\xc0\x38\xeb\xe5\xc7\x9b\xc5\xa2\xac\xd5\x4e\xd1\xf1\x05\xe7\xa1\x9a\x13\x7e\x63\x4e\x74\x3a\xbb\x3c\x2c\x26\xa9\x48\x0a\xef\x6a\x33\xf3\xbd\xcc\x0b\x9d\xeb\x1c\x2d\xa1\xd6\x7e\x5f\x5d\x48\xa6\x26\x73\x39\x85\x95\x64\x17\x32\x8e\x2f\x2a\xca\x06\x4b\xa8\xad\x64\x1c\xaf\x64\x89\x49\xd8\x4c\x52\x67\x35\xbe\x92\x50\xe0\x3a\x98\x55\x8d\xe3\xcb\xfc\x16\xf1\xa0\xde\xfb\x6a\x7f\x57\x07\x7a\xcc\xed\xe8\x76\x07\x07\x9b\xd5\x8b\x47\x25\xd4\x0f\xaf\x26\x3f\x5a\xfa\x20\x0d\xf0\x44\x0b\x26\xef\xe7\xf2\x33\xd1\x04\xbf\x2e\x02\xe0\x97\x63\x0c\x6e\x5d\x80\xac\x5b\xc9\xc8\x97\x33\x17\x28\xe2\x5c\x8e\xcf\x65\xb2\xcd\x69\xff\xf4\xf4\xc3\xfb\xa7\xa7\x4f\x9e\x7e\x38\x79\xf3\xe6\xd5\xf1\xe9\xf3\x57\x6f\x1e\x3f\x7a\x75\xfa\xe2\xcd\x9b\x9f\x4f\x4f\x4b\xcf\xf3\x33\x8f\x3b\x2b\x96\x1a\xc4\xd0\x96\xc8\x57\x15\xe8\x12\x33\x91\x53\x90\xb4\x16\xdf\xea\xba\x8a\x21\x82\x42\xbc\x25\x92\x94\xc1\xb9\x7b\xd4\x3c\x56\x9d\x57\x6b\xf0\x2b\x74\x6e\xab\xa7\xb3\x0b\xb1\x9c\x6b\x2e\x1b\xa1\x34\xd0\xff\xd7\x67\xd1\xe9\xf5\x6b\x35\xdf\x2c\x39\xf3\x1e\x48\xde\x9a\x88\xbb\x18\x5b\xf8\xc8\xda\x28\x7b\x39\x96\x84\x26\xd2\x9b\x6e\x1f\x4b\xb6\x95\x96\x8b\x5b\xa7\x16\xfd\x35\x25\x13\x79\x3e\x3a\x96\xfd\x32\x43\xff\x9c\x9b\x7d\xca\xb1\xdb\x6d\xf4\xa9\x52\x22\x87\x47\x95\x5d\xd0\x4f\xe7\x4e\xec\xdf\x06\x85\x62\xd8\xce\x65\xa2\x5e\x50\xf3\x95\xba\xe2\xcd\xb2\x74\x1b\x4c\x78\x9b\x15\x34\x8a\x9f\x73\xb3\x5f\x36\x28\x25\xbf\x50\xf6\x22\xcd\xee\x2e\x1b\xc2\x39\x94\x15\x34\x4a\x6f\xd6\xf3\xd4\x34\x09\xe3\xbb\xa0\xc5\x4c\xe5\x05\x4c\x3f\xc5\x32\x59\x70\x56\xad\x94\xf1\x5f\x58\x91\x87\x82\xe9\xaf\x36\x26\xbd\xab\x40\xf1\x8d\x55\xf2\xd9\x42\x4e\x35\xd5\x56\xc4\x7f\x61\x45\x1e\xda\x18\x9b\xdf\x2d\xfb\xd0\x39\x93\xa4\x0e\x14\x94\x8c\xb5\x95\x7d\x8e\x35\x7f\x16\x3c\x45\x07\x8b\x5a\xf7\xbe\xdd\x59\xfd\x23\xac\xf5\xb3\xd5\x17\x30\x6e\xa9\xde\x7f\xbb\xb3\xfa\xd7\x1e\x90\x9f\x6d\xa0\x32\x2b\x2d\x4d\x14\x5f\xb1\x91\x3b\x2c\xc1\x48\xb5\x71\x38\x96\x8e\xfc\xb8\x91\xf0\xa6\xa5\x69\xa7\xa4\xe3\x9a\x4c\xa6\x60\x50\x8d\x32\x7a\xd3\xd8\x0b\xad\x4b\xb9\xaf\xf9\x7c\x33\xab\xb9\x12\x54\x03\xb4\x16\x7b\x88\x70\x9a\x87\xf0\x54\x4a\x61\xaf\x1b\xd5\x1f\x85\x35\xdc\x26\x8b\x0f\xe5\x46\x9f\x6b\xb7\x62\xc0\xd0\x23\x84\xb3\x72\x07\x13\x49\x69\x65\x93\x8c\x65\x2f\xba\x1f\x25\x51\x64\xfb\x64\x7f\xeb\x9d\x69\xd9\x7d\x65\xfc\x40\x13\x6c\xb9\xd1\xf1\xdd\x65\xb5\xc4\xa8\xee\xaf\x70\x6e\xb2\x22\x6a\x8b\x42\x83\xe7\x22\x19\x25\x8c\xb2\xec\x92\x0a\x7c\xec\xc8\x90\xc2\xf0\x56\x51\xa8\x65\x29\xab\x9d\xa8\x29\xcd\x73\x9c\x9e\x00\x0c\xd8\x03\x63\x98\xc5\x3b\x28\x78\x8c\xa3\x52\x9a\x23\xa0\xcd\x42\x77\x40\x7d\xd0\x38\x34\xa3\x43\x53\x75\x3a\x42\x0f\x24\x4f\x55\x8f\x8b\x06\x99\x72\x81\x1e\xce\xb9\x21\xc1\x08\x69\x00\x07\x43\x4a\x0b\x1c\x4d\xcc\xc4\x14\xf1\x03\xa6\xa0\xe8\x88\x87\x11\xe0\x4a\x2e\xde\xaa\x2a\x32\x34\x0b\x29\x97\xa0\xa9\x40\x83\xfb\xa3\xb3\x31\x43\xb2\x65\xa4\xb5\xc5\xb2\xdf\x45\x90\xac\xde\x37\x5d\x5f\x20\x23\x1d\xc7\x3a\x9c\xaa\x71\x5c\x3b\x3d\x88\x6c\xf6\x40\x64\xef\x7c\x0f\xf8\xfc\xdf\xef\x43\x19\x2b\x29\x9c\x17\xb6\x25\x9c\x8f\xa7\x6d\x61\xc1\xea\x13\x68\x2c\xfa\x65\xdb\x9c\x42\xf7\x46\xc6\xf1\xdd\x84\x4f\x30\x72\xeb\x7f\xd8\xf0\x38\x6e\x48\xbd\x6d\x51\xc3\x18\xbb\x09\xde\x01\xa3\xee\xff\xb8\xff\xf7\xee\xff\xf8\xbf\x3a\x7f\xef\x5c\x6d\xf8\x4d\xe7\xea\x9b\xfe\x77\xfd\x21\xbe\x93\x19\x75\x3e\x70\x4f\xaf\x52\xd9\xf9\x4d\x6d\x30\xf5\xbf\xec\x08\x65\xc6\x3b\xaf\x5f\x9e\xd8\x84\xfb\xff\xa3\xd1\x84\xa3\xce\x89\x09\x52\xb4\x8a\xa8\x6c\x32\x98\xd2\x1f\xd9\x03\x6a\xfa\x2b\x71\x23\x24\xd9\x9e\xf1\x85\xd2\xfc\xd0\x49\xb6\x2d\xa3\x5c\xb8\x81\xa1\x1d\x66\x31\x01\xa7\x42\x0a\x33\xda\x4b\xa9\x03\x6d\x1f\x52\xa6\x8f\xb9\xdc\xdf\x78\x22\xa7\x61\xad\xb9\x14\x6a\xc9\xdc\xaa\x00\xb3\x1a\xd3\xb2\x94\x02\xe3\xf4\xde\x53\xa8\x5d\xc9\x46\x96\x88\x52\xda\xc7\x23\xb9\x87\xcf\xad\x01\xdc\x42\x36\xf7\x4f\x68\xe2\x9f\x92\x60\x5f\x1a\xc7\xe1\xc9\x57\x13\xce\x57\x5f\x69\xe3\xab\xc5\x07\x37\x92\x19\x9a\x93\x72\x7e\x69\x41\xd9\xad\x91\x69\xda\xdb\xf0\x93\x69\xd0\xc7\xdb\xe6\xb5\x98\x99\x32\x87\xc6\x18\xbb\xdd\x61\x20\x18\x67\x6a\xb5\x12\xc6\x08\x79\x5e\x84\xb8\x3a\x0d\x44\xc4\xdd\x64\xa6\xcb\x71\xbc\x39\xb3\x7c\xfd\x99\x25\x06\x02\xd6\x3a\x2d\x09\x8a\xbb\x8b\x5f\xeb\x74\xbd\xe6\xf3\xe7\x9e\x90\xb8\x3b\xa3\xc7\x24\x88\xb8\xde\x48\x54\xa5\x55\xd3\x8b\x03\xe5\x75\xba\xfe\x4c\x2d\x59\x5b\x3f\xaf\x2d\x2b\xc5\xf5\x87\xd7\x58\xf9\x8d\x0c\x35\xa7\x97\x1c\x1d\x43\x7c\xe7\x0e\xd3\xd9\x45\x33\x76\x5d\x19\x70\xc7\x45\x0a\x02\x1f\x2a\x2a\x44\xbf\x82\x94\x85\xd8\x2d\x2b\xbb\x82\xab\xdf\xda\x1d\xb1\x44\x08\x22\xe4\xfc\xdf\x2b\xa5\xef\xe2\xe9\xd2\x4a\x09\x34\x69\xf0\xf4\xbd\x9d\x6d\xa6\x47\xce\x25\xaf\x06\x2c\xc4\xef\x9e\x19\xb8\xf4\xe2\xb0\x19\x94\xf3\x56\xc9\x45\xe1\x6d\xc8\x60\x4f\xab\x7d\xee\xc7\x54\x03\xb4\xa3\xda\x8f\x94\x3a\x86\xfe\x9c\x5f\x19\xa5\x96\xd9\xb8\x7c\x4c\x6e\x64\xdf\x31\x11\x45\x12\xad\xe3\xa9\x5b\xf4\xcd\xee\x9f\xfa\xcf\x2f\x94\xba\x64\xb7\x12\x6e\x65\x9f\xaf\x2c\x26\xb1\x88\x2a\xb1\x1b\x38\x02\x43\x6d\xb2\x92\x3e\xd1\xe8\xf4\x8a\x7b\x73\xa4\xd4\xf0\xa8\x6e\x9a\x61\x82\x93\xc7\xb1\xfd\xe8\x7b\x6b\xfa\xc5\x9a\x68\xd2\x35\xf5\x06\xc3\x6a\x8e\xdc\xcc\x50\xd8\xae\x35\x5f\x73\x39\x47\x1e\xb8\x5a\x8f\x23\x29\x3f\x5f\x9b\xdb\x36\xed\x75\xd1\xdc\xfb\xfa\xc1\xa9\x64\x5b\x1c\x49\x1b\xdf\x55\xa0\xaa\xc3\x3d\x2e\x3f\xb8\x6c\x11\x43\x1f\x0e\x2c\x22\x88\x63\x7b\x9e\x61\x13\x63\x7b\xa2\x66\x17\x62\x81\x8a\x42\x1e\xac\x23\xca\xb8\x7d\x24\x88\x72\xab\xd5\x8c\xe4\x8f\x07\x43\x7b\x50\x5a\x6c\x3e\xe3\x44\xc2\xb0\x8a\x2d\xff\x0c\x6c\xda\x17\x50\xc6\x17\x91\xc2\xd7\x61\x84\xaf\xde\xf6\x0d\xce\xf7\x12\x29\x47\x5c\xe9\xf5\x65\x8e\x86\x37\x6f\xdd\xd7\x6a\xb0\xd7\xb7\x4d\xa2\xaa\x7f\x7a\xb5\x1a\x15\xec\x0e\xdb\xe6\x58\xd3\xbf\x8a\x29\x9a\xa3\x04\xc1\xb6\xf9\xe8\x4c\x12\x55\xa3\x94\x24\xdd\x8a\x89\x9c\xb6\x23\x8a\x16\xdb\x59\x0c\x22\x84\x46\x12\xad\x6c\xc2\x2d\x29\x3a\x0e\xf2\x2e\x5b\x39\x1c\xe1\x44\x4e\xf3\xba\x04\x08\x3d\xdd\x7d\x64\xb1\x72\x03\x67\x62\xc9\xa5\x19\x35\x13\x58\x77\x00\x58\x8f\x47\xa8\x64\x3b\x4f\x4d\x9a\x6c\xef\xdd\x73\x8b\x99\xbb\x88\x61\x1b\xc3\xe7\x89\xc8\x29\xec\x95\x4f\x21\x1c\x57\x75\xcc\x80\x95\xf6\xef\x21\xc2\x6e\xb3\x07\x74\xf8\xcb\x36\xd6\xf7\x6d\xd5\x02\x60\x53\x4b\x14\x6c\xe7\x9c\xa3\x81\x43\x76\x2b\x67\x6e\x64\x68\xe6\xe4\xb6\x89\x9d\x1a\x61\x2e\x0e\x11\xe3\xd6\x9b\xa8\x57\x8c\x8e\x0a\x16\x81\xdc\x48\x8c\x0e\x76\x22\x66\x97\x6d\x5d\xd2\xfd\x7b\x73\x9e\x19\xad\x6e\x31\x96\x67\x65\x6d\x5d\xca\x70\x95\x03\x14\x71\x06\xbb\xc1\xa1\xce\x1e\x1c\xe5\x12\xad\x72\x4c\xc4\xc5\xe7\xd7\x15\x16\xc7\xa1\xcb\x96\x2d\x31\x49\xa7\x77\x6c\x96\x49\x3a\x65\x9a\x42\x57\xc4\x71\x57\x05\xbf\xed\x13\x5c\x74\x75\x22\x36\x63\x72\x22\x2b\x44\xec\xdd\x00\xba\x91\xfd\x8c\x1b\x34\x43\xd6\x6e\xbf\x21\x31\xef\x02\xaf\x6b\xe7\xd4\x72\xb3\x7f\x8a\xf9\x2b\x25\x30\xd4\x25\x28\xb6\x0d\xc7\x63\xa2\xed\xa1\x11\x5e\x9a\x86\xe5\x0e\x5c\xef\xc2\x3b\x46\x63\x5c\xa7\xb7\x4b\x95\xce\x61\xc6\x44\xdf\x93\x6b\x90\x31\x81\xce\xf4\xc5\xf5\x0d\x71\x3c\xc3\x1d\xbf\xdb\x91\x8c\xf1\x1e\x0a\x38\x42\x2b\x24\x03\x1f\xcd\x6e\x25\x0c\xb6\xef\x1f\xff\xa7\x5b\x6f\x6d\xd6\x55\x6e\x1b\x85\x19\xcd\x0b\x7b\xa8\xbb\x38\x7c\x85\x5b\xd6\xee\xde\x04\xf7\xae\x1e\xb7\xed\x5e\x9f\x25\x6f\xd9\xda\x7b\x2a\xd6\xee\x5d\xb8\x6b\xc2\xa7\xe1\x10\xd8\xe6\xc8\x3b\x79\xb7\xa1\x9a\x30\xb4\x10\xfa\xb4\x90\x05\xca\xf9\x32\x14\x6b\x49\x53\xf4\x65\x08\x31\x0f\x7d\xba\xa6\xa3\x76\x44\x25\x41\xdc\x8d\xa0\x7c\xb3\x13\xd5\x82\xa4\xdc\x91\x7e\xe7\xa8\x58\x11\x4c\xf6\x33\x99\x72\x17\x60\x27\x07\x7f\xf4\xb6\xf7\xe3\x44\x12\x7f\xac\xe0\xcd\x11\x39\x05\x95\xa3\xb3\xab\xe5\x2e\x9b\xe2\x1f\xd2\x40\xeb\xdd\xfa\x2e\x00\x8d\xe1\x4e\xca\xc3\x11\x7d\xeb\x9b\x29\x96\x9a\xf7\x81\x4c\x6a\x74\x4d\x19\x5a\xdb\xf7\xc7\x6d\x3c\xdb\x99\x9e\x04\x0e\x1b\x67\x85\x58\x97\x78\x35\x7b\x14\x02\xf3\xda\x45\x3a\x96\x89\x2d\xa9\xf0\x36\x1c\x39\x5f\x72\xbd\xdb\xf1\xd1\x1d\x7d\xf6\xe7\x7d\xd1\xe3\xf2\xfd\xae\xfe\x06\xc7\xf8\xa2\xdf\x95\x3d\x5f\x52\xce\x61\x17\xfa\x6d\x02\x61\xed\xeb\xe2\x0c\x73\xd3\x13\x06\x6d\x3b\xee\x27\x32\x29\xcf\x39\x9b\x8a\xe4\x5e\xe2\x27\x2b\x2f\x0d\x6a\x89\x62\x82\xb6\x45\xc4\xea\x28\x0c\xd3\xbc\xdb\x95\xd1\x9f\x8b\x4b\x17\x84\x5b\x60\x15\xda\x74\xec\x63\x9e\x36\x2e\xc3\xf0\x71\x2e\xab\x39\xab\x04\x20\xd7\x5a\xe9\xc8\x05\x2f\xa1\xd4\x1e\x83\x38\x63\x1a\x54\x73\xbe\xdc\xa0\xbe\x62\x05\xe1\x75\x09\x0d\xca\xc2\xee\xe4\x20\x79\x6a\xf9\xd6\x26\xe6\x93\xa4\x00\x69\x29\x3d\xf5\x29\x15\x41\xef\x9d\xeb\xcb\x89\x36\xaa\x77\x72\x08\xba\x0d\x87\x5d\xe0\xc0\x05\x75\x9e\x40\xd5\x03\xf1\xa4\x4e\xe0\xf0\x2f\x88\x1b\xed\x4e\x45\x83\xca\xa2\x82\x77\x4d\x42\x18\x55\x2f\xf6\x50\xf7\x57\xca\x48\xc6\x81\x33\x03\x26\x44\x23\xf5\xb6\xf6\x06\x3c\xf6\x4e\x38\x78\xdc\x9d\xc8\x3c\x3f\x95\x6e\xd8\xed\x4a\x0d\x4f\x6d\x5c\xad\x1a\x14\x07\x14\xc5\xb2\x86\x1c\x35\x87\xa7\x55\xb1\xd2\x1d\x6c\x5d\x29\xbe\x03\xc5\x8a\x21\x81\xc5\x9a\x28\xdc\x4d\x99\xaa\x1c\x36\x6e\x00\xa2\x18\x40\x9a\x43\xc6\x1a\xfc\xf7\x44\x4c\x47\xa5\xf8\xfe\x8e\xe3\x3b\x6b\x67\xee\x0c\x49\x43\xd0\x91\x3d\x16\x3a\xb8\x26\x7e\x81\x2d\x9c\x55\xe9\x01\xda\x00\xc2\x1d\xdc\x70\x19\x82\x14\xb4\x07\x82\x73\x64\x46\x10\x08\xa6\x0b\x10\xa4\x1e\x04\xaa\x00\x81\xc8\x21\x30\xbc\x01\x19\xb9\xfb\x0f\x66\xce\xe1\xf2\x0e\xc1\x45\x39\x1a\x34\x96\xb9\x23\x48\xbb\x13\x59\xe5\xf4\x0b\x83\xf6\xf9\x48\x0a\xb2\x42\x0b\xd5\xdd\x93\x33\x36\x2b\x2d\x4f\x02\x9e\xb1\x18\x71\xd6\x5f\xa5\xeb\x3b\x80\x29\x10\x88\xc9\x6c\x32\x98\x92\x32\xf2\xbc\xa5\xb3\x7d\x0d\xcd\xed\x92\x35\x43\xce\xfb\x48\x64\xb2\x0d\x04\x9f\x1d\x3a\x06\x9a\xfd\xf2\xc8\x31\xdb\x9d\x03\x77\x52\x82\x86\xc5\xf0\xbf\xd5\x1d\xc4\xa0\xed\xdd\xa9\x22\x11\xcc\x56\x76\xc7\x99\x74\x57\x3a\xe4\xad\x95\x73\xf4\xa9\xad\x2d\xcd\x62\xa5\xb7\x33\x60\xc8\x76\xef\xed\x09\x94\xda\xb4\x57\xb3\xa7\x6a\xaa\x57\xd6\x1a\xb9\xc7\x8b\x48\x13\x93\x27\xe6\x2e\x89\xdb\x7e\x93\xd7\x7b\x3b\xaa\xa1\x17\xa8\x61\xb0\x42\xfe\xf5\x39\xce\x6a\xff\x50\xb0\xd3\xe8\x04\x4e\x4f\xeb\x6a\x89\x52\xc6\x72\x97\x54\xfb\xb3\x88\x88\xef\xe3\x54\x66\xf2\x3d\xc4\x11\x94\x02\x5e\xc9\xbd\x37\xd8\xba\x20\xd4\x72\x7e\x7b\x01\xa0\x9c\xa4\x78\x62\xa6\xb4\x29\xf9\x2a\xb4\x13\x16\xed\x04\x11\x59\xa9\x37\x07\xd3\x28\x80\xd2\x7f\x0a\x28\x64\xc9\xb8\xbe\x72\xc3\x2f\x85\x67\x65\xd1\xe6\x30\x4a\xed\xc6\xde\x40\x6a\x20\xfb\xfa\xce\x97\x35\x96\x52\xd2\x3b\x40\xed\xb0\xac\x65\xfb\x8a\xf3\xbd\xca\xfc\x59\xc6\xde\xa9\xcf\x89\x84\x9a\x2e\x03\xcf\x83\x3f\x65\x90\x53\x3d\x6d\x68\xc3\x5b\x86\x12\xbc\xd0\xbe\x76\x14\x55\x9d\x0b\x06\xd6\xa8\xb7\xa1\xcc\xfb\xbb\xd4\xe6\x05\x1c\x9c\xba\xce\x14\x1d\xc5\x88\xf4\xf5\x7a\x2a\x80\xb9\x4b\xb1\x53\x91\x8b\x8f\xf6\x05\xe5\x03\x30\xa4\x45\x80\xce\xef\x56\xd4\x56\xdb\x87\x53\xaf\xa8\x7d\x25\xd9\x93\x3d\x89\x61\x60\xc0\xc2\x6e\x7d\x6f\x11\x5b\x3b\xb6\x0b\xd4\xfb\x25\xbf\x45\xb2\xfd\x2a\x5d\x8e\xe4\x44\xd7\x8c\x78\x2b\x63\x72\x2a\x85\xc0\xbd\xd4\xd2\xfc\xe6\x1e\x95\xf7\x07\x69\xf6\x4c\x56\x35\x13\x10\xad\xd2\xf5\xb1\x93\xaf\x3a\xe7\x8c\xae\x0e\x34\x26\x2f\x19\xfd\xa2\xf6\x32\x25\xf0\xa6\x7e\x2d\xb4\xd0\xdd\x63\x55\xf5\x7c\x03\x49\x13\x8e\x6c\x9e\x1d\x4b\xdf\xd2\xcd\x0c\x05\xa4\x20\xed\xcf\xcb\xff\x03\x40\x2b\xe3\xa6\x4f\xa6\x20\xf7\x5c\xac\x5c\x1c\x0d\xf4\x35\x29\x4d\x47\xe5\x74\x54\xb9\x64\xc0\xc3\xd5\x6b\x00\x4a\xb0\x8a\x36\xb0\x06\x7e\x31\x2b\x40\x2b\x02\x68\x35\xde\x37\xe1\x00\xe9\x2a\xfb\x3c\x1c\x9d\xb1\x3d\x02\xd2\x02\xcf\xd3\xdd\x9c\xd2\x44\x57\xbe\x85\xc6\x27\xaa\x9a\x25\x2f\x60\x7c\xf4\xbf\x01\xc6\x8a\x99\x9e\x82\x26\xa4\x51\x1e\xb1\xdb\xb5\x00\xc5\xb3\x2b\x51\xc5\x1a\xbc\x65\xc5\xde\xbd\x4e\xee\xfd\xff\x69\x9d\x04\x7a\xf8\x4b\x2b\xc5\x11\x13\x5f\x58\x27\xa1\xb2\xff\x03\x2b\xa5\x54\x47\xbc\x6f\x0d\x8a\x57\x26\xd5\x22\x2a\x11\x74\xd5\xb4\x9f\x73\x62\xe8\xb8\xf9\x6d\x6c\xee\x22\x85\xb7\x97\xfc\x36\x31\x70\x95\x2e\x13\x63\x3b\x91\x34\xec\xf4\xea\xc5\x78\xad\x18\x77\xc5\x2c\x03\x69\x4b\x4e\xa6\x25\x0b\xf9\xe4\xae\x88\x7e\xcd\x13\xac\x8c\x43\x39\xf6\x6c\x65\x14\xd1\x24\xba\xef\xae\xd1\xf3\x57\xf6\xf0\xe2\xc4\xa4\x71\x4c\x78\x8f\x45\xf7\x23\x0a\xc6\x5f\x36\x5a\x34\xfa\x6c\x2f\x86\x70\xbb\xcc\x56\x4e\x91\x6f\x78\x2d\xd1\xf9\x63\x23\xb3\x99\x5a\xa7\x67\x4b\x74\x00\xf9\x4b\xfa\x50\x55\xa5\x41\xa9\x0b\x5b\xf1\x97\x9c\xbc\x96\xd3\x38\x7e\xdb\x5f\x90\xbf\x24\xbc\x96\x77\x05\x3d\x79\x6e\x9c\x92\xc2\x9b\x2e\x3f\xae\xdb\x24\xb8\x6a\xd0\x31\x62\x90\xc3\x73\x67\x9c\x2f\xe4\x1c\x3e\x49\x7b\x0a\x7e\x08\xee\x09\x78\xcf\x8d\xfb\x17\x72\x32\x8d\x63\x37\x95\x43\x8a\xb9\x6b\xd4\x87\x2d\x39\x6c\x3a\x0a\xde\x61\x5f\xff\x49\xee\x76\xdd\x0f\xce\x95\x41\xce\xdb\x6c\xaf\x9f\xff\xcb\x76\xfd\x39\x85\xc7\xb2\xe8\x33\x7a\xd8\xc8\x6a\xbc\xc3\x5f\x25\x9b\x4c\x8b\xb7\x8f\x92\x75\xbb\xbf\xca\x38\x1e\xde\x9f\x0c\x8b\x64\x32\x84\x83\x01\x7d\x38\x80\xdf\x9c\x83\x82\x4f\x8e\x28\xfc\xec\x20\x12\x12\x60\x5b\x78\xa3\xd8\x61\x0d\x93\x41\xfe\x55\x4e\x1c\x1f\xed\xc0\x7f\xb3\x3f\x3f\xdb\xd1\x87\x08\x8d\x2d\x00\xf8\x28\xc7\xbf\xca\xea\x66\x2e\x23\xa8\xec\x76\x83\xe4\xc5\xbf\x01\x1f\x04\xca\x4f\x92\xc9\x72\x77\xff\x52\xd1\x5a\xb8\x98\xaf\x96\x7b\xf3\x4a\xe6\x89\x98\x92\x94\x82\x65\x6c\x71\x4d\xed\x85\x33\xc2\xaa\x71\xb7\xcf\xdc\x75\x67\x9c\x64\x34\x69\xca\xd8\x32\x7f\x4d\x1a\x4a\x88\x30\x2c\xaf\xfc\x6c\xc0\xcd\x2a\x6d\x53\x45\xbe\x9f\xe7\x8e\x2b\x92\xfc\x32\xea\x8c\xac\x20\xb2\xd4\xb6\xf5\x8b\x24\x02\xc7\x9a\xc2\x0c\xc2\xd5\x38\x15\x99\xd3\x6c\x3f\x53\xb8\x5a\x95\xe6\x29\x09\xb0\xb4\x98\xd2\x39\x0b\xe9\x2f\xaa\xf3\xca\x78\x5d\x68\xa5\x85\xfb\xa7\x39\x67\x14\x34\x1b\x8c\x74\x19\x80\x51\xf7\x7a\x14\x0f\xa5\x72\x2a\xf5\x74\xb4\x17\x55\xc7\xe2\x1d\xe0\x7a\x2f\xae\x48\x19\x34\xbc\xb4\x80\xd1\x15\xba\x3d\x44\xb4\xc2\xde\x4c\x51\x59\xa3\x8b\xa8\xe0\x45\x11\xad\x9b\x73\x8d\x06\x39\x65\x06\xa5\xbf\xd6\x16\xba\x28\x22\xda\xba\x11\xc2\xec\xde\xd9\x93\x54\x17\x5a\x0e\xd7\x8c\xa1\x62\x51\x5c\x60\xd2\x6d\x61\x3f\x70\xb8\xb4\x84\xfd\x00\x34\x2b\xc3\xa5\x3d\xd4\x23\xd9\xeb\x51\x5e\x71\x5f\x72\xb6\xde\xf6\xfc\x2d\x62\xb2\x16\x96\x80\x86\xee\x01\xb8\x1e\x9d\xb4\x70\xfe\x42\x47\xb5\x6a\xa5\x6a\x0a\xca\xae\x1d\xdc\x52\x9a\x6d\xfd\x61\x98\x48\x0d\xfe\xd1\x79\x2a\xb4\xa0\x80\xfa\x2c\xb9\x6c\x4d\x08\x81\xc8\xee\x2c\x5f\x99\x91\x2e\x4e\xa5\x0b\x7d\x84\x96\x1c\x15\x0f\x41\xff\xb5\x16\x46\xa9\x55\x8c\x5e\xcb\xd2\x0f\x0d\x37\xae\xb6\x2c\xd2\x7d\xef\x9e\x29\xbd\x7a\x92\x9a\xb4\x6d\x7c\x2d\x46\x6f\x21\x7b\x1c\x9b\x6a\x0c\x85\x90\x9c\xd7\x81\xf6\x41\xf0\xeb\xaf\xac\xb8\x52\xca\x1f\x62\xee\xa5\x2f\x32\x5b\xcb\x78\x3f\x89\x18\x9a\xa0\x59\xd7\x59\x31\x4e\xf7\x54\xed\x58\xa5\x98\xed\x9b\xdb\x74\x6d\x5d\xda\xe3\x94\x6d\x76\x67\x5c\xd7\x96\x5d\xe2\x97\x46\x76\xb7\x08\x13\x65\x97\xce\xfb\x30\xc4\x44\xdb\xd7\x27\x75\x67\xf2\xbd\x25\x64\xbf\xb7\xac\x9d\x67\x62\xf9\xd9\x62\xf6\x7b\xdb\x92\x5b\xaa\xb3\xcf\x15\xb3\xdf\xdb\x5a\xf3\x25\x12\xa1\x1d\xac\x78\xba\x6a\x5b\xb7\xca\x2d\x56\x8b\x2a\xfa\x6b\xb1\xe6\x58\xf8\xfd\xbb\x57\xc7\x3c\xd5\xb3\x8b\xb7\xa9\x4e\x57\x6d\xfe\x5a\x6d\xd3\xde\x28\xd5\x58\x56\x8d\xaf\x6e\x06\x53\x39\x4f\xf5\xfc\xb1\x56\xd7\x19\xd7\x4f\xe5\xd5\xbe\xb2\xb0\xea\xa7\x52\xfa\x59\x04\xc7\xe4\xdd\x2e\x7a\xc7\xd3\x99\x39\xc2\x9b\x11\x2c\x01\x59\x7c\xb2\xf8\x63\xbe\x99\x59\x14\xe9\xbe\x1e\xa3\xf7\xdc\x9d\x79\x8e\x5b\xbf\x60\x28\xb4\xcf\x18\x8c\xb6\x7d\x2b\xa2\x4e\xe6\x10\x5c\x19\x53\x0d\x2b\xae\xcf\xcb\xf9\xef\x98\xe2\xe8\xad\x5e\x82\xef\xe3\xc5\xed\x21\x75\x8e\xa1\x7d\xf6\x92\xe5\xd8\x7e\x60\x86\x60\x9c\x5a\x64\xf9\xd1\xbf\xb0\xbc\xac\x6f\x00\x6a\x9f\xa3\xd2\x0f\x15\x1e\x7a\xa9\x26\xd5\x23\xaf\xe2\xf0\xc7\x73\x98\x73\xbe\x7e\xfd\x7f\xac\xcf\x2d\xd9\x0c\xd9\xe6\xf6\xfb\xff\x9a\xe1\xf0\x1b\xc3\xe5\x9d\x57\x9f\xa5\xba\x16\x0c\x87\xdb\x01\x39\x5f\xcd\x56\xec\xcc\xc7\x46\x13\x27\x63\xf1\x61\x89\x8c\x16\xad\xdb\xab\x30\x9c\x23\xf7\xff\xfb\x8f\xec\xef\xf7\x21\x8a\xca\x80\xc9\xf7\xff\xc8\xfe\x7e\x0f\x93\xaa\x36\x69\x59\xf5\xa0\xe7\x72\xa6\xe6\xfc\xfd\xbb\x97\x87\x6a\xb5\x56\xd2\x5d\xc4\x53\x56\xf0\xb7\x6f\x07\xf7\xcf\x05\x44\xff\x55\xad\xf5\x6f\xdf\x3c\xc2\xc4\xa4\x96\xf8\xe0\xdb\xfb\xe7\x10\xdd\xab\xa7\x1d\x62\x46\xa8\x27\x0e\x6c\xc6\x5e\x2d\xed\xbb\xc7\x98\x71\x52\x4f\x7c\x82\x89\xd3\xc8\x5b\xaa\xec\x9b\xd3\xe3\xc5\x49\xf5\xdb\x9c\xf0\x36\x25\x49\x35\xb3\x9c\x65\x11\xda\x6e\x66\x0f\x82\x06\x86\xc0\x58\x08\xac\x24\xaf\x48\xc5\xc6\x59\xb1\xc9\x74\x34\x2b\xf4\xa6\xf5\x48\x46\x96\x78\xf1\x94\x4b\x1c\xbb\xaa\x0b\xa6\xd8\x32\x92\x93\x69\x94\x20\xe5\x02\x95\x1a\x4c\x5d\xaf\x82\xa5\x9e\x38\x21\xe8\x18\x75\x9e\xea\xe5\xf1\x9b\xd0\x91\x04\x3f\x17\xb1\x2a\x90\x12\xfa\xe9\xf8\xcd\x51\xbf\x08\x45\x81\x66\x81\x3e\xac\x44\xa6\x09\xa7\xbd\x88\x45\x3d\x9c\x5a\xa7\xca\xc3\x10\x49\xca\x5f\xaf\x10\x47\x34\x17\x0b\xa2\x4b\xa2\x3a\xf0\x48\xd1\x7f\x44\x74\x74\x30\xec\xba\x1b\x95\x6d\x47\x82\x94\x19\xb5\xe9\x3d\x46\x0e\x86\xe8\x83\x50\x14\x18\x47\x74\x1c\x8d\xa3\xc4\x56\xda\xd3\x85\xcd\x46\x65\x81\x2d\x75\xb8\xc7\xd6\x9b\x28\x64\x6c\x32\xcd\x97\xba\x2a\x5a\xcf\xee\xd0\xdc\xd4\x8a\xf9\x9b\x61\x16\x9b\xe5\x42\x2c\x97\x7c\x9e\x18\xd0\xdc\xc2\x84\xcf\x31\xd0\x5a\x3d\x73\xe0\xe7\x73\xa8\x35\x85\x05\xf6\x65\xd1\xa1\x18\x5e\x92\x40\x9a\x49\xee\xba\xce\x46\x4d\xc1\x97\xb3\x31\x8f\xc5\x0c\x57\xeb\xa8\x9b\xb7\x7a\x52\x8d\xc7\xb1\xb7\xc4\x75\x0c\xc7\x42\xb3\xa5\x86\xf5\xfe\xba\x0e\x16\x51\x65\xe5\xd5\xf8\x56\x18\xe0\xcd\x81\xcd\x63\x87\x79\xdb\xdd\x84\x5d\x14\xda\x75\x4d\xff\xf4\xf4\xf0\xd1\xd1\xe1\xd3\x57\xa7\xa7\xb4\x32\x4b\x17\xba\xf0\xec\xaf\xdc\xf0\x98\x71\x73\x22\x56\x5c\x6d\x4c\xe7\x22\x75\xc1\x76\xce\x38\x97\x9d\x70\x08\x55\xe8\xf8\x55\x6b\x05\xb3\x25\x4f\xf5\x17\xaa\x40\x47\x58\xcd\x2e\x34\x9c\x6b\xb6\xd2\x65\x9f\x6e\xb5\xf7\x54\xb8\xd2\x8c\xb1\xb2\x2f\x61\x8b\x97\x29\xc4\x80\x0b\x7b\xe6\xb2\x5e\xe8\xdd\xae\x7b\x65\x69\xdd\xfd\x42\x57\xba\x52\x13\x34\xab\xa8\x84\xf9\xbd\xd2\x98\xe4\x39\x63\x5e\x0b\x01\x7c\xa5\xab\x9c\x40\x2d\x57\x23\x87\xe7\xe4\x2d\x93\x9e\xb7\xa0\xf6\x73\x34\xc5\xf3\x5d\x88\x63\x52\xeb\x1d\x85\xf6\x12\x55\xa0\xc6\x31\x39\xd7\xac\x9a\xe2\x64\x01\x67\x1a\xae\x35\x9b\x4c\xe1\x91\x66\xdd\x21\x1c\x6b\x76\x30\x2c\x21\x7b\x63\x27\xeb\x91\x8e\xe3\x33\x1d\xc7\xc4\x65\x39\x0b\xb1\xc7\xc7\xd7\x9a\x9d\xe9\x20\x3a\xbc\xd6\x34\xc1\xd2\x70\xad\x8b\x70\x65\x6f\x34\xa9\xda\x83\xd8\x57\xc4\xbe\x8f\x74\xf0\xc5\xb8\xd5\xe4\x46\xd3\x91\xad\x7a\x30\x2a\x65\xae\x45\x1d\x23\x3e\x72\xfc\xf3\x99\x66\xd7\xbe\xaf\xa3\x5e\xef\x58\x3f\xe4\x23\x7a\x86\x3d\x9b\x1c\xeb\x69\x5f\x6f\x24\xa1\x23\xd7\x81\x4a\xf1\xfc\x4c\xbb\x00\xd4\xae\xef\xd5\xe5\x2e\x16\x16\x22\xac\x0e\x93\xb0\x85\x2a\x69\x3e\x5e\x95\xcb\xbc\xb2\x2b\xe6\xdc\xae\x98\xb6\x62\x0d\x08\x43\xb3\x1a\xbb\x32\xce\x75\x19\x15\xba\xbe\x58\xce\x6b\x8b\x65\x7f\xa9\x9c\xeb\x86\x6b\x4b\x4e\x6a\x0e\x2e\x4f\x75\xc5\xb3\x76\xb1\x91\xcc\x84\x0b\xcb\x75\x7a\xcb\x78\xfe\xb4\x8a\x95\xf4\x46\xd6\x62\xb3\xfb\x32\xd5\x88\x3e\x65\xe1\x2a\x02\x38\xb5\x73\x88\x7b\xf1\x50\xb3\x53\x0d\x7f\xe2\xef\x5b\xfc\xbd\xc4\xdf\x13\xfc\x7d\x87\xbf\xaf\xec\xaf\xbb\x62\x4c\xb3\x73\xd9\x5f\x73\xbd\x50\x7a\x65\x89\xef\xdd\x6e\x9b\xc3\x91\x66\x2f\x75\x5f\xaa\xeb\xdd\xee\xa5\xee\xaf\xd4\xa7\xa3\xf0\x98\x85\x27\x15\x1e\xae\xf9\xd9\xa5\x30\xf8\xb6\x4f\x8f\x5b\x5c\x62\x0f\x46\xda\x3f\x77\xfb\x82\x78\x6c\x79\x4f\xb3\xf0\x0d\xdf\xdf\x6b\xb6\x0d\xe6\xbd\x2d\x31\xca\xee\x16\xd0\x1c\x0c\x71\x1d\xec\xcb\xda\x2a\x22\x86\xe1\x48\x3e\xdc\xd7\x14\xf4\x7a\x94\x4f\xe4\xc1\xb0\xa1\x2a\xb8\xf6\x71\x05\x1d\x1a\x74\xf7\xfd\x61\x24\x9e\x62\xf5\xee\x76\x8f\xf4\x6e\x77\xab\xc9\x1b\x4d\x73\x30\xc2\x2c\x79\x12\x9d\x39\xb6\x24\x02\xff\x90\x74\x07\xc0\xe5\x55\xb2\xcd\x21\xd5\xe7\x57\xc9\x64\x0a\xc5\xa5\x68\x51\x78\xcc\xec\x67\x25\x93\x43\x0d\xe9\x7c\xfe\x4a\x64\x86\x4b\xae\x93\x3f\x35\x28\x39\xe3\xc9\x5b\x0d\x6a\xb1\x48\x2e\x35\x38\xb7\xb9\x22\xc3\x49\x48\x79\xb4\x5c\x86\xc4\x2c\x79\xa7\x81\xaf\x84\x49\x5e\x69\x38\x13\x72\xde\xe4\x77\xf7\xb0\xbb\x0f\xc8\xd4\xf7\x99\x43\x3c\xb6\xca\x6d\x7e\x39\xcc\xae\xe7\xfb\x6c\x56\x74\x3f\xca\x61\x76\x31\x17\xfa\xeb\x1a\xc0\xac\xad\xd5\x6f\x56\x69\x76\xd9\x62\xf4\x39\xc8\xe1\x42\x1b\xb1\xe2\x2d\x6b\xa1\x3f\x18\x0c\xff\x7e\xe4\x77\xdd\x4b\x4d\x41\x56\xae\x3f\x72\x91\x44\xab\xef\x7f\x1b\xfe\x7d\xc8\x7f\x28\xe3\x81\xc7\x31\x91\x07\xcc\x4c\x06\x53\x20\xda\x3e\x0c\xa7\xde\x79\xe3\xe0\x00\x74\x8f\xd9\xcc\x14\x26\x12\xf4\x34\x87\xf5\x32\x35\x76\x67\x54\xe6\x57\xf3\x25\x4f\x33\x6e\x67\xce\xc9\xf7\xed\xd3\x66\x5d\xef\xec\xde\x06\x38\xb8\xa7\xe9\xfd\x21\xff\x26\xcf\xe1\x49\x53\x32\x79\x07\x61\xe9\x82\x81\x3b\x4a\x43\xf7\x8d\x7a\xbf\x5e\x87\x7b\x52\x2c\x03\x5f\x4f\x29\x6e\x59\x84\xe2\x2a\x2d\x3d\x75\x4e\x9e\xcf\x9a\x24\x49\x2d\x64\xf8\x67\x3e\x19\xef\x2d\xc0\x38\x38\x4f\x21\xcb\x5d\x30\x49\xc1\xf2\x29\x18\x52\x84\x69\x7c\xce\xd6\x4a\x66\x9c\x29\x30\x96\x7a\xbe\x11\x2a\xc3\x05\xe0\xdc\x13\x8c\xb2\xc4\x6e\x4b\x94\xab\x15\xcf\xb2\xf4\x9c\x3b\xef\x57\xff\x02\x32\x5d\xf9\x14\xfb\x54\x8b\xc6\xeb\x9c\xba\xca\x04\x70\xa2\x18\x9f\x1b\x9f\x61\x21\x96\xfc\xa8\xa8\x22\xbc\xc1\x52\x48\x7e\x54\xc9\x5d\xbe\xc3\x4c\x2d\x37\x2b\x59\xfd\x58\x4d\x81\xcc\xa4\xb3\xcb\x24\x98\x95\xcc\x2e\xc3\x9c\xfb\x9c\xf6\x19\x2c\x58\x42\xc2\x9c\xbb\xab\xab\xcb\x5d\x60\x68\x01\xd8\x1c\x5e\x6b\x36\x89\xd2\x73\x1e\x41\x94\x6e\xcc\x85\xd2\xe2\x93\x77\x76\x8a\xfc\x65\x14\x07\xc5\x8d\x47\x21\x01\x2f\x3d\x82\x88\x9b\xf4\xdc\xfe\xdd\xac\x85\xe6\x59\x04\xd1\x42\xab\x55\x04\xd1\x85\xca\x4c\x04\x91\x58\x1c\xac\xd4\x5c\x2c\x04\x9f\x1f\x64\x42\xce\xb8\x4b\xdb\xc8\xbd\xd4\x65\x9a\x99\x22\xaf\x7d\x57\xb3\xd0\x87\x55\x7a\x73\xb0\x50\xfa\x3a\xd5\xf3\xcc\xdd\xb9\x74\x73\x7b\xd0\xec\xa8\xe6\x0b\xae\xb9\xbb\x64\xdb\xe8\xdb\x03\xb4\x43\xf3\x41\xdf\x0e\x52\x8c\xfa\x36\x85\xbf\x34\x43\xb6\x67\x5f\x6a\x43\xe8\xb8\xa1\x50\x30\xc0\xd9\x7d\xb2\xca\x04\xdf\x19\x2d\xe6\x5c\x1a\x7a\x5f\xb8\x2b\x2b\x4b\x11\x4b\x11\x52\xce\xee\xf7\xe2\x36\x8e\xfa\xad\xb3\x51\x1a\x55\xd4\x0a\xba\x34\xac\x28\x5c\xdc\xd1\x38\xd5\xd2\x6c\x8f\x8c\xd1\xe2\x6c\x63\x38\x89\x2e\x34\x5f\x44\xa0\x2d\xde\x90\x7d\xfb\x42\xe1\xce\x2c\x5b\xfb\x94\xb8\x6c\x4e\x85\x34\x53\xcb\xc4\x5b\x9a\xcc\xd4\x72\x5c\x3e\x96\xbc\x6f\xe2\xd8\x76\x8b\xf7\xed\x64\xd9\xe2\x2a\xb3\xc4\xab\x65\x5f\x13\xdb\x96\x7d\x18\x87\x87\xaa\x10\x60\x5c\x96\x4c\x33\x9b\xd7\xfe\x8d\xdd\x5f\x25\xdf\x7f\xd4\x1a\xc0\x3d\xe4\x1a\xc1\x4d\x64\xd1\xad\xed\xa3\xd2\x06\xd6\xa9\xb9\xc0\xef\xd1\xfd\x88\x31\x26\xfb\x21\x21\xa8\x52\x07\x74\x5c\x26\xda\x5c\xbd\xf2\xb5\xb8\x4f\xc0\x30\x1d\xbc\x63\xc3\xea\xf1\x90\x6b\xea\xf3\x65\x58\x06\xc8\x0b\x73\x3a\xb6\x18\x3a\x29\xdc\x44\x4a\x70\x21\x5f\x1a\x5e\xe2\xd8\x75\x1f\x13\xed\x43\x9e\x13\xba\x8f\x5d\xbb\x83\x1c\x1e\x7f\x6e\xa1\x6d\xf1\x02\x97\x64\x1f\xc7\x81\x08\xb7\x68\x4d\xa6\xa3\xd4\xfb\xe6\x21\xd7\xdd\x22\x43\xb1\x04\x00\xb6\xe1\x5d\xae\x25\x8d\x63\x5f\x26\x6c\x47\x16\xf5\x02\xa6\x27\x92\xf6\x8d\x7a\xfe\xfa\x24\xf0\xff\xbe\xb0\x7f\xd5\x95\xc2\x16\xae\x2c\xea\xe9\x7a\x0e\x55\xc9\xe1\x6e\xe3\x61\x51\x4f\x51\xe8\x0e\x18\x32\xf6\xe1\x5b\xc6\x67\x1b\xcd\x23\x0a\xe5\x6e\x50\xea\x52\x70\x96\x7a\x41\xc1\xa8\x63\x8f\x58\xcd\xd3\x79\xcb\x29\xda\x28\xe4\x83\x23\xda\x41\xbc\xe3\xe7\x4f\x6f\xd6\x24\x22\xff\xbd\x1b\xfd\xf1\x47\xf6\x77\x4a\xf0\x0a\x21\xca\xc8\xe4\xbf\x47\xd3\xbf\xd3\xa8\x0c\xcb\xcd\xc7\x73\xbe\x0f\xae\xc9\x37\x53\x9a\xa0\xdb\x96\xa7\x52\x92\x3d\x86\xdd\x5d\xac\x63\x20\x8a\xc0\xc2\xcc\x92\x9a\x84\x1e\xfc\xf3\xfb\x6f\xf9\x77\x34\xcf\x93\xe6\xbc\xd1\x6d\x73\x1c\x35\x55\xca\x7e\x3b\x74\x9b\xe7\xf0\xbc\xf5\x92\xff\x76\x25\x65\xcd\xf7\x70\x9e\x9a\x14\x94\x5d\x7a\x3c\x9d\x73\x9d\x8d\x70\x7a\x82\xaa\x03\xa7\xd0\x9f\xb2\x6a\x12\x1d\x7a\x34\x7d\x62\xd1\xb4\xb3\x34\x11\xee\xd2\xd7\xd7\xaf\x5e\x18\xb3\xf6\xd1\xb7\xd0\xce\xa4\x6f\x71\x69\x58\x79\xee\x0d\x11\x9b\xdd\x5c\x18\x28\x73\x16\x52\xd7\x69\x96\x5d\x2b\x3d\xb7\xa9\x23\xd5\x7f\x54\xc5\xc1\x2c\x7a\x9c\x66\x62\xd6\x89\x7a\x67\x46\xa5\x24\xed\x45\x49\xd4\x9b\x39\x4e\x1c\xaf\xa6\x60\x24\x63\xa6\x7f\x96\x66\xfc\xfd\xbb\x57\x78\xd3\xd9\x46\x2f\x21\x8b\xe3\xee\xfd\xff\x26\x93\xf4\xe0\xd3\xd4\xfe\xfc\x31\xff\xa3\xf7\xc7\xc1\x1f\xfd\xe9\xdf\x13\x3a\xfe\xe3\xfe\x1f\xf7\x03\xd2\xdd\xd4\xe3\xf4\x97\xe2\xc5\x71\x45\x40\xf9\xc7\xfd\x9e\x43\x6b\x3d\x8b\x23\x78\x15\x69\xdd\xef\x39\x74\x64\x72\x92\xc1\x86\x26\x1b\xa4\xd0\x85\xbb\x56\xc9\xf4\xdd\x2d\xf2\x75\xf2\x05\x36\x9a\x2c\x01\x5d\xf1\xd3\x55\x56\x3c\x1c\x73\x2d\xd2\xa5\xf8\xc4\x35\x45\xcf\x51\xd1\x37\x8e\x6d\x63\x26\x3c\x81\xe8\x2b\x69\xd7\xc6\x2d\xda\xc1\xcd\x2e\x52\xb9\x17\xf8\x5b\xc4\xf1\xb7\x76\xef\xf4\x31\x1f\x9a\xd4\xc5\x31\xc1\x7b\xd5\xd0\x7a\x6e\x93\xed\x76\xa2\xa0\x63\xde\xbf\x7b\x15\xc7\x03\x9f\xbf\x48\x2a\x65\x66\x96\xaa\x48\x22\x4a\x0b\x97\xba\x73\x6e\x1e\x2d\x97\xef\x7c\xde\x17\x6e\xcd\x44\x42\x76\xc4\x78\x6f\xdf\x39\xf4\x53\xb1\x87\x32\x63\x52\xa5\xff\x42\x14\x87\x3f\x64\xd4\x30\xde\xc6\xf8\xb2\x15\xd1\x5d\x12\x51\xe0\x16\xf7\x19\x2d\x56\xc4\xb9\x45\x1b\x8d\x2e\x60\x8d\x5b\xf5\x40\xee\x67\xd3\xbd\x21\xa5\x5e\x71\xab\xf0\x26\xd6\xd7\xba\xa8\x9b\xd3\x1f\xd9\x20\xd8\x39\xd9\xaf\x2c\xca\xb8\x39\x70\x98\x02\xb5\x47\x63\x2c\x34\xb6\x3f\xc9\x64\x5a\x04\xed\x9f\xc8\x29\x4d\x8a\x2f\xbd\x08\x3a\x51\x4f\x26\x12\x8d\x97\x14\x4d\x54\x4e\x44\xbf\x15\x5a\x84\x3a\x8c\x81\x8e\x89\xa9\x49\x93\x92\xac\x3c\x41\x97\x92\xc8\xf0\x1b\x54\xc7\xd4\x3f\x8c\xcb\x39\x4a\xca\xc7\x13\x7e\x63\xc0\x4d\x6c\x12\x66\xd8\xbf\xdb\x4f\x45\x1a\xe6\xf3\x7b\x3c\xd1\x05\x69\x07\x9e\xba\x4d\x44\xde\x74\xc6\x0a\x73\x5e\x38\xd2\x5e\xa5\x4b\x31\x4f\x0d\xda\x21\x6f\xb2\x51\x57\xef\x76\x9a\x48\x5f\x3f\x1d\x1b\x22\x69\xc2\xc9\x33\x4d\x22\x8f\x07\x3a\x8b\x54\x2c\xf9\xbc\x73\x2d\xcc\x45\xc7\x65\xc3\x3b\xba\x2d\xa4\x42\x57\x43\xed\xe0\x2e\xe9\x0a\xd4\x36\x5e\x87\x8e\x91\x72\x14\x05\xe1\x1c\x63\x73\x5c\xff\xe9\x99\xd2\x35\xcf\x19\x61\xe9\x9c\x5a\xb3\x98\xc5\xd2\x7b\x06\xa2\xa7\x87\x6f\x8e\x8e\x1e\x3d\x7e\xf3\xee\xe4\xe9\x93\x08\x65\xc3\x22\xc8\x48\x6d\x6d\x68\xc9\x5f\xad\xcd\xd5\x74\xc4\xcd\xb5\xd2\x97\x8e\xac\xb5\xf5\x60\xef\xca\xd2\xae\x70\xd8\xa0\x7b\x46\x23\x91\xff\xd2\x51\x8b\x4e\xd4\x2b\xf6\x6f\x2f\x5a\x65\x1d\x7e\x33\xe3\x7c\xce\xe7\xd1\xa8\x48\xc7\x56\x5e\x3b\xae\x00\x43\x20\xb7\x7e\xa1\x80\x7d\xe3\x9f\x1b\x55\x0e\x77\x12\x08\xae\x6f\x0b\xf6\x58\xc3\x9a\x11\x77\x85\xd7\xa1\xe6\x96\x04\x15\xe9\x32\xdb\xed\xfe\xd2\x64\x49\xd1\xb3\xe9\x26\xd3\x8b\x43\xdc\x00\x96\xa3\x18\x2f\x10\x97\x90\x66\x7a\x71\x7d\xcf\x3a\x8e\x89\x9a\xb8\xcf\x6e\x8d\xdb\xcf\x53\xb6\x46\xd9\xbd\xdd\x4e\x7e\x62\xdc\x47\xc4\x16\x71\x5c\xc1\x04\xaa\xa9\xa4\xa8\xc6\x13\xa9\xf3\x06\x9e\x1b\xac\xec\xf8\x71\x71\x3c\xf1\xa9\x5d\xed\x8d\xd6\x7c\x7c\x7f\x4f\x76\x14\x0a\xeb\x7d\x00\xd0\xdd\x8e\x88\x66\x22\xeb\x76\xf7\x33\x42\x7d\x5f\x62\x34\x45\x51\x4b\x6a\xec\xdc\x52\x8e\x66\xe1\xf1\x67\x86\x77\x47\xb1\x66\x2d\x28\x51\xe0\x6d\xa2\x57\xd3\x57\xf2\x89\xba\x96\x4b\x95\xce\xdf\x6a\x75\xae\x79\x96\xc5\xb1\xe8\xa7\xf3\xf9\xd3\x2b\xee\xc2\x52\x72\xc9\x9d\x14\x02\xbf\x46\xd0\x56\xa6\x55\x4a\x6b\x33\xbe\x5f\x37\xab\xde\x60\x4a\xf9\xf4\xc5\xb6\xea\x55\xa0\x2b\x72\x2a\x67\x7c\x89\x41\x44\xd1\x3c\xa3\x7c\xb5\xb4\x2f\x1a\x67\x35\xbc\x88\x8c\xdb\xcc\xa2\x8f\x1b\xd8\x22\x73\xcb\x51\x86\xfd\x4a\x2b\x37\x98\xb9\x38\x33\x2e\x72\x83\x9d\x73\x39\x27\xda\x49\x00\x3e\x69\xb6\xad\xd3\x29\x49\x94\xae\xd7\x4b\xe1\x48\xf7\xfb\x37\x07\xd7\xd7\xd7\x96\xf1\x5b\x1d\x6c\xf4\xd2\x51\xc0\xf3\xa8\x22\x5d\xfc\xe0\x65\x98\xdd\xe6\x82\xa1\xb8\x66\x6b\x49\x4d\x8a\xc8\x89\x26\x1a\x89\x8c\x3b\x72\xe5\x85\x86\x5f\x35\xdb\xa6\xf3\x74\x6d\xb8\x4e\x48\xab\xfa\xbc\x4e\x48\x55\x62\xab\xbf\xd7\x95\x3b\x00\xbd\xb0\x09\xad\x1b\xee\xb4\xba\x72\x42\xa3\xf7\x78\x19\x2b\x79\xa1\xd9\x73\x4d\xe1\x85\xa6\x60\x42\xa8\x52\xdf\x48\x32\x69\xa5\x80\x9e\x68\x8c\x7e\x3d\x9b\xf1\xb5\x89\x28\xb8\xd7\xda\xc8\xfc\x9e\x2a\x68\x45\x43\x77\xbb\x52\xa9\x58\x18\xe0\xf8\xc4\xe6\xbb\xb3\xbc\x28\xdf\x9f\x89\x25\xaf\xe4\x5e\xaa\x33\xd4\x30\x26\xcd\x1a\xbd\x55\xcc\x38\x18\xc2\x24\xad\x2a\x52\x43\xc7\xe4\x03\x76\xf9\x8b\x93\x3f\xb2\xdc\x60\xc6\x0d\xdb\x98\xc5\xc1\x3f\x23\x8a\x72\x9c\x82\xa1\x69\x68\x34\xdb\x6a\xb5\x1b\x7a\xaf\x92\x7d\xad\x67\x62\xf2\x69\x15\xf8\xfe\x28\x9f\x34\x08\x9f\x7d\x23\x1d\x44\x30\x5e\x8f\xba\xb6\xad\xd4\x2e\x75\x2c\x15\x99\x53\xf0\xa7\x46\x32\x80\x3a\xaa\x4e\xa2\x5f\x8f\xdf\x3d\x3b\x38\x79\xf3\xf3\xd3\xa3\x08\xea\x78\x3a\x89\x7e\x3d\xa8\x7e\x5d\xa5\x37\x7e\x96\x5f\x85\x00\xe4\x50\x3f\xf9\x5b\xd5\xf9\x3f\xb2\x07\x83\x41\x1c\x9b\x87\xdf\x0c\x06\x79\x3e\xfa\x55\x07\x86\x82\x6d\x67\x6a\xb5\x52\x32\xd9\xba\xb5\x94\xec\xc1\x0e\x3a\x96\xe0\xb9\xbf\x5e\xa6\x42\x42\xe7\xef\xf7\xff\x1e\xe5\x79\x55\x03\x3d\x89\x1c\x8a\x8f\xc0\x92\x9f\x11\x44\xb6\xe6\x68\x5a\x27\x19\xcb\x06\x27\x66\xca\xb6\xb9\x47\xf9\x65\x1d\x6b\x27\x3b\x5a\x6f\xf0\xd7\x42\xef\xf3\x55\xcc\x74\x1f\x2d\x53\xc8\x27\x5d\xc4\x29\xf9\xa8\xd9\xaf\x15\xad\xdf\x6f\xda\x05\x10\xf9\x0c\xa6\x43\xac\xfe\x72\xe1\xb7\x1a\x9f\x13\x87\x0b\x7e\x6e\x65\xd7\x7e\x73\xde\x55\x05\xe4\x8a\x27\x54\x54\xf8\xab\xa2\xd7\x9a\x78\xae\xad\xf8\x6c\x57\x6c\x63\x53\x57\xab\x29\x46\x52\x24\xf5\xdd\x94\xf8\x6a\x8b\x41\x7b\x76\x65\x5a\x4f\xa7\x5f\x9e\x0b\x68\x83\x2e\x44\xae\x95\x1a\x98\x79\x19\x3c\xb5\x68\x97\x4f\x31\xc4\x93\xe9\x7b\xd4\xb8\xdb\x7d\xd4\xe1\x99\x12\x43\x5b\x9c\x4d\x6b\x00\xe3\x05\x60\xdc\x13\xf0\x76\xc0\xb8\x0d\x87\xce\xf1\xd0\x56\xdb\x5c\xbb\xcb\x2a\x7c\xad\x2e\x84\x9f\x2b\x64\xa9\xb2\xe2\xa5\xd2\x5c\x2d\x09\x2a\xef\x9f\xeb\x00\xa5\x50\x5a\x27\x23\x5e\x71\xaa\x75\xf8\xa9\x29\x2d\xe7\x0c\x75\x54\xa3\x4a\xd8\x8c\x49\xb4\xd1\xcb\x08\x22\x37\x55\x08\x6c\x8b\xf0\x22\x88\x6c\x17\xa2\x29\x28\x36\x89\x7c\xeb\x5e\xf2\x1a\xa4\x9b\xd1\x14\x04\x9b\x44\x9e\x57\x8e\xc0\xd7\xd4\x5c\x3a\xf5\x24\xd7\xe7\xa2\x9d\x92\x4b\xb5\xd9\x1c\xba\x89\xdc\xf5\x47\x15\x12\xc9\x36\xec\xe6\x0f\x25\xa7\x25\x95\x13\x41\x54\xc7\x4c\x3e\xa1\x44\x47\x11\x44\x4d\x62\x02\x93\x9a\xb4\x8c\x93\xe0\xd6\x30\x95\xbb\x5a\xbf\x82\xa8\x5c\x9e\x77\x7c\x2e\x34\x9f\x19\xfb\x7a\x61\xcc\xda\x5d\xd6\xe1\x9e\xb3\xf0\x52\xd9\xb3\x11\x44\x99\x9a\x5d\x72\xf3\x36\x35\x17\x51\xcd\x9a\x46\xd7\x11\x46\x71\x38\x73\x67\x8c\xe1\x62\x08\x87\x2b\xba\xee\x20\x70\xb5\xb7\xa1\xf1\x47\x0a\x9f\xe8\x29\x1d\xa3\x95\xf5\x4c\xf7\x0b\xdb\x32\x62\x26\x7a\x0a\xf8\x31\xa9\x34\xa3\xa7\x2e\xab\x7d\xaa\x9f\x4c\x9f\xa9\xa6\x52\x83\x71\x37\xe1\x61\xbe\xa0\x35\xa9\x76\x54\xd4\x3b\x7a\x57\xcb\x9f\xad\xcf\x47\x74\xd2\x65\x10\xce\x4a\x80\x86\x59\xf5\x96\x72\xf4\x8e\xba\xd3\x1d\x1b\xed\x77\xd2\x4a\xbc\xb0\xbc\x14\xc6\x55\xba\x3c\xfb\x5f\xd0\x65\x90\x15\x02\xf0\x17\x5d\x88\xee\xe6\x7c\x91\x6e\x96\x26\x0b\x7a\x6c\x21\x0d\xd7\xf6\x10\x53\xf6\x5c\x0b\xac\xb3\xe4\xd7\x9d\x85\x86\x82\x39\x77\xef\x79\xfe\x4b\x4d\xdb\xed\xb5\x48\xd5\x71\xee\x1f\xf5\x63\x52\xb9\x72\x6d\x32\xf4\xf7\xf0\x6f\xf4\xb2\x76\xdb\x5a\x62\x98\x41\x1c\x4d\x0c\xfb\x49\x93\x5a\x57\xc1\x50\xea\xf1\xf8\x38\x20\x74\x56\x11\x44\x55\x38\xa7\xa4\x56\x70\xbf\x50\xcb\xd7\x66\x05\x21\x2f\x1e\x06\xfe\xb2\xf3\xc9\xcf\xda\x13\xea\x53\x90\x7b\xb1\x4e\xfc\x6d\xf2\x7b\xe0\x0c\x00\x6a\x0f\x04\x50\x89\x2f\xd7\x2f\xac\xaa\x90\x0f\x73\x56\x55\x65\x2c\x89\x46\x9d\x1e\x1d\xdf\x51\xa9\x93\x85\xdf\x59\xe3\xa8\x88\x51\x44\x25\x93\xee\x18\xe2\x7d\xd7\x0f\xbc\x72\xdd\x3d\x95\x11\x13\x72\xa8\xcd\xf9\x39\x37\xef\xb5\x68\x0d\x7b\xdc\x36\x6f\xb0\xb1\x47\xfb\x46\x7f\x5e\x38\xb8\xaf\x32\xf9\x0a\x62\x09\x22\x1f\x82\xa4\x49\xf3\x54\xfb\x6b\xb1\x57\x9b\x7b\x5a\xc7\x07\x78\xc6\xf9\x21\x05\x35\xe1\xc8\x87\xad\x5b\x01\x89\x81\x8d\x5e\xa2\xd5\xe7\xbf\x43\x7a\x7d\xae\x1b\xd5\x7b\xa2\x5b\x3b\xa2\xdb\x3a\x02\x28\x5a\x93\xbe\x3f\xb8\x34\x7f\xd7\xec\x97\x0a\xf5\x66\x54\xb1\xcf\xbd\x46\x96\x99\xdc\xa8\x16\x4e\x6a\x5f\xa1\x1b\x1d\xe2\x79\x11\xf5\x48\xb5\xfc\x38\x4a\x3a\x51\xaf\x9a\x82\x21\xa2\xa1\x56\x69\x69\xd4\x16\xae\x96\xe2\x8a\x19\x55\x31\x1b\x56\xe4\x8b\x57\x83\x5b\x14\x53\xb9\xc9\x91\xdf\xf0\xd9\xc6\x28\xdd\x59\x6d\x32\xd3\x39\xe3\x95\xdb\xc1\xfb\xde\x0d\xcd\x87\xe8\xf7\x9c\x37\xbb\x23\xb8\x87\x25\x39\x4c\x80\x97\xf4\x81\x15\xea\x19\x64\x5f\xf3\x34\xb3\xc4\x23\x09\x8f\x58\x1b\x57\x48\x35\x15\x89\x2e\xfc\x85\xac\xc1\xb3\x41\x0c\xb7\xdc\x59\x19\x0a\xfb\x50\x47\x65\x4a\x0e\x52\xf5\x33\xbc\x55\xa3\x29\x6f\x0b\x1a\xcf\xad\xb1\xc7\x37\xa2\x5f\xa9\x1a\xc1\x49\x18\xda\x23\xbb\x53\x3e\x31\xde\x6f\x4a\x2b\x26\x2b\x80\x57\xaa\x6e\x84\xf3\xbb\x76\xd7\x56\x1a\x4d\x7e\x6f\x41\xe5\x65\xd0\x27\x7b\x1c\x39\x33\x6a\x22\xa1\x9a\x15\x38\xee\x84\xe2\x1b\x5e\xa7\x8b\x5a\x13\xc5\x94\x22\x1f\x35\x1d\x09\xd5\x47\x2b\x02\xf6\xbb\x06\xa1\xbc\x92\xb7\x0d\x65\x28\x45\x7e\xd2\x44\xa8\x1a\xa6\xcf\x6d\x19\xb7\x16\x19\x57\xe5\x0b\x12\x32\x4c\x63\x8a\xc8\x7c\x86\x39\xb6\x90\x2e\x97\x6d\xd5\x57\x63\xc5\x18\x57\x6f\xb6\xd6\x3c\x6d\xbd\x80\xa0\x85\x78\x36\x55\xbb\x2d\x1e\x3c\xd3\x52\xc5\x84\x82\x99\xfd\x1d\xa5\x45\xd7\xd9\x4c\xb9\xeb\x8b\x14\x4b\x2b\xf0\xdf\x20\xfc\x33\xd5\x7e\x2e\x6c\xea\x3a\xac\x96\x7b\x0a\x0b\xee\xa6\xa6\x41\x8a\x63\x83\xd4\x7b\xeb\x47\x16\x3d\xe6\xa9\xe6\xba\x13\x15\x61\x9c\xa9\x8b\x9e\x85\xd3\xb4\x54\x6c\x32\x45\x0d\x23\x2c\x14\xbb\xe8\x7a\xe2\x05\xd6\x0a\x1d\x33\xed\x87\x08\xad\xc4\xbf\xc6\xeb\x72\xa1\x76\xbb\xee\x5a\xe5\xb0\xb5\xe5\xda\x98\xe8\xa5\x8f\x54\x70\xe5\x62\x60\x94\xe2\x2e\x33\x8e\x20\x4a\x4c\xe1\x3e\x79\xa1\xd8\x92\xf7\x57\xe9\x1a\x56\x0a\xaf\xf4\x5a\xa5\xeb\xc8\xe6\x47\xf7\x50\x7c\xf9\xaa\xcb\xbc\x56\xb6\x4b\x57\xb6\x4b\xab\x74\xdd\xd6\xa3\x0b\xf5\x6f\x3a\x78\x9e\xa3\xde\xe7\x5c\x4d\xdc\x2d\xe5\x0e\x8f\x9e\xa4\xe7\x11\x9d\xb2\xe8\x93\x23\x15\x6e\x15\x2b\x24\x5a\x9f\x50\x96\xe5\xa5\x2e\xe7\x8a\xc2\x99\x62\x7b\x45\xe1\x5a\xb1\xe8\x51\x68\x35\x62\x6c\xdd\x12\x55\xa6\xe8\x55\x4e\x28\x85\x47\x8a\xdd\xaa\xf1\x7a\x5f\x29\x6c\xcf\x95\xd1\x9e\x57\xe1\x38\x2a\xa4\x7b\x51\xe2\xaf\xe8\x37\xe3\xe8\x68\xb3\x5c\x46\x49\x93\x5c\x23\x7b\xd7\xaa\x94\x96\x94\xe8\x08\x5e\xca\x68\x72\x12\x62\xb7\x5a\x94\x72\xa6\x28\x1d\xcb\xe4\x5a\x8d\xd7\x84\xd3\xe2\x5a\x28\xc6\x88\x66\x36\xa5\xdd\xf3\xcd\xb9\xf4\x71\x3e\xae\x80\x20\xd1\x39\x1c\xe3\x10\xb7\x79\x71\x5c\xb5\x18\xb1\x05\x30\x47\xbd\x47\x6e\x46\x69\x2f\x9a\x46\xf9\xe8\x56\xed\x76\xdc\x90\xbd\x1b\xe1\x2b\x77\xe0\x1e\xab\xda\xdd\xae\xee\x0e\x08\xc5\x54\xdf\x63\x0c\x78\xa3\xf6\xcc\xc0\x0b\xbf\x94\x8e\x90\x1d\x4e\xb9\xc1\x28\x74\xbc\xee\x7b\x62\x72\x78\xaa\x1a\x57\x0e\x9e\xee\xd7\x25\x16\xa4\x4b\x6a\x0e\x53\x7c\xff\x8a\xd5\xe8\xa5\x9c\x29\xad\xdd\x10\x89\x1c\xcb\x5e\xd4\xc1\xfb\x19\x7a\x91\x90\x57\xc1\xe8\xa7\xda\xf4\xa1\x5d\xa0\xf0\xa7\xeb\x80\x30\x5c\xe3\x75\x8e\x14\xde\xaa\xa6\xcf\x3b\x5c\xaa\x36\x1c\x58\x32\x14\x71\x4c\x0e\x55\x1f\x4b\xd9\xe5\xb2\xdb\xbd\x55\x93\x3f\xd5\xd4\x3e\xd3\x1c\x4e\xf6\x9a\x78\x57\xaf\xaf\xe2\x4e\x5a\x2c\x9e\x13\x35\xdd\xed\xcc\x24\xfa\xaf\xff\x2a\xca\x4d\x77\xbb\x43\x35\xb1\xd3\x47\xa7\x39\xbc\x6a\x02\x0a\x1d\x73\xca\xf5\xa7\xc7\x9c\x1c\x12\x49\x27\x96\x08\x9f\x0c\xa7\x34\xe1\x44\x56\x0c\x7a\x43\xd0\x60\xaf\xf8\x74\xf0\x2c\x86\xa4\xe2\xf8\x90\x84\xb0\x29\x88\x10\x73\x78\xa9\x58\x83\x54\x70\x27\x65\x63\x0b\x38\xeb\x31\xb5\x5e\xf3\x79\xe0\x9a\x34\xcf\x2c\xd2\xe7\xf9\x88\x98\x3e\xbf\x59\x2b\x6d\xb2\x6a\xb1\xba\x95\x0a\xcc\x00\x15\xfb\xb0\x80\x35\xcc\x99\xe0\x2e\x20\xea\xf8\x41\xe2\xac\x5f\x05\x4d\x99\x71\x0e\x2f\xad\x34\x12\x99\xb1\x77\x16\x48\x2d\x8b\xe4\x04\xd1\x61\x30\xce\x44\xc8\x9e\x2d\xb9\xbb\x8b\xf7\x52\x91\x19\x75\x2b\x37\x63\x03\xd8\xb0\x8d\xe5\x35\xbc\x63\xf4\x68\xf3\x63\x36\xca\x7a\x3d\x2a\x16\x84\x2c\x99\x1a\xcf\xc9\x21\x59\x33\x33\xc9\xa6\x08\xe1\x35\x42\x78\x4e\x30\x81\xc6\xf1\xb2\xbe\x5c\x03\x7a\xaf\xfa\x8e\x73\xd2\x1d\xd2\x3c\x65\xb3\xd2\xcf\x58\x69\xb2\x60\x29\x46\xfe\x1d\x75\xc9\x9a\x2d\xdc\xa7\x94\x52\xf4\x6b\x1f\x55\xbd\x8d\x0b\x1c\xb4\x64\xaf\x14\x49\x61\x0e\x6b\xe7\x1e\x0f\x0a\x3b\xf0\x2f\xf4\x81\xe2\x7c\xdd\x65\x3e\xc2\x49\x77\x80\xa6\xde\x94\xc2\xd1\xde\x52\xbe\xa7\x58\x77\x38\x0a\xde\xfa\xef\x15\x1b\xc0\x13\xe5\xac\x9b\xf7\xb1\xd0\xd6\x8e\x22\xe9\x76\xdf\xab\x5e\x2f\xcf\xc1\x25\x56\xb3\xd9\xda\x06\x79\x3e\x7a\xa2\x26\x47\xaa\xe5\xb2\x50\xa4\x07\x73\x70\xfb\x73\xa1\xd5\x8a\x3c\x51\xb5\x50\xcc\x6e\xc6\x1f\xec\x87\xc5\x7b\xa6\xe0\xb5\x82\xbf\x14\x3c\x56\xfb\xb7\x82\x76\x79\x1c\x77\xef\xa9\x70\x01\xe7\xd0\x13\xbf\x95\x81\x69\x34\x62\x68\xef\xd4\x67\x07\x2b\x71\x40\x79\x0e\x86\xe8\x16\x99\xbd\xcc\xe1\x79\x13\x05\x7e\x52\xec\x3e\x11\xeb\x0b\x25\xf9\x4e\xac\xd5\x7c\x27\xd6\xe9\x9c\xf6\xff\x6e\xc9\x2b\xee\x0c\xd0\x83\xf1\xca\x63\x4e\xe1\x83\x45\xc5\xc1\x30\x0d\x5e\xd8\xb7\x8c\x9b\x97\xab\x15\x9f\x8b\xd4\x70\xf8\xd5\xa6\xa0\x17\x40\x99\xf6\x51\x55\xae\xa8\xfd\xcd\xbe\x78\x15\xf3\xe1\x45\x2a\x25\x5f\xc2\xcf\x36\xed\x49\x88\x9a\xfa\x93\x9d\xd6\x5f\x10\x5f\xfe\xbe\x87\xba\x7e\x51\x0d\x2f\x74\xbb\xf5\x3c\x6a\xf8\x45\x4d\xcc\x74\xe4\xe5\xbd\xf8\x02\x9c\x50\x0b\x8d\x56\xa6\xb8\x02\xc3\xdf\x15\x3a\x16\x00\xaf\x67\xb4\xc9\x28\x6a\xa5\x39\xc8\xfa\x27\xd5\xb7\x5c\xa6\x1f\x07\x31\xbd\x28\x82\x0f\xaa\x30\xb2\xeb\x45\xf7\xef\x47\xbd\x0f\x0a\x0d\xec\x68\x3e\x7a\xa1\xe2\xf8\x57\xb5\xdb\x91\x17\xf5\x01\x35\x42\xee\xb4\x5c\x8a\x2c\x47\x94\x37\x2f\x45\x96\x78\x29\xb2\x1f\xc5\x2f\x6a\xd2\xeb\xfd\x54\x5f\x29\xed\x71\xf8\x4c\xf2\xac\x6c\x9a\x7a\xfa\x39\xdc\x99\x4f\x73\x78\xa6\xc8\x4f\x8a\xc2\x4f\x2a\xb7\xb3\x58\xed\x66\x15\xa4\x39\x04\xdb\x73\x24\x88\x3e\x2a\x3a\x7e\x56\xcf\xfd\x51\x95\xd1\xc4\x8d\x40\x47\xbb\xe4\x67\x15\xc7\x3f\xab\xbe\x54\xd7\xcd\xdc\x2e\xb5\xc8\xf8\x9b\x8a\xe3\xee\x27\x35\x26\x7f\x29\x46\x5e\xbb\x4b\x7e\x7e\x53\x14\x2d\x2c\x1f\xc0\x6b\x85\x0f\xc3\xbe\x92\x81\x87\xe6\x02\x9e\x29\x8b\xb6\xff\xaa\x4d\x89\xdd\x7c\x43\x4a\x93\xae\xda\x53\x25\xef\x76\x2d\x9c\x6e\xa5\xe8\x6e\xa7\xfa\x62\x65\xdb\x71\x9e\xca\xd9\x6e\x27\x88\x14\xd4\x96\x43\xfb\x24\xc6\x58\x65\xae\xed\x80\xa2\x7d\x3b\xa9\x48\xc8\xce\x0d\x89\x9c\x49\x75\x44\x6b\xe6\x4a\x4f\x90\x7b\xe1\xd2\x5f\x41\x54\xc9\x46\xbf\x60\x71\xf5\xc4\xd4\xae\xf9\x71\x74\xbb\x5f\xbd\x35\xa2\xb3\xea\xbe\x65\x41\x0b\x03\x9a\x27\xe4\x99\x62\x52\xc0\x3e\x48\x48\xe4\xc1\x19\x01\x17\xd0\x1d\x52\xcf\x92\x6b\x01\x4a\x80\x10\x90\x0a\x98\x09\xc8\x04\x6c\x04\x2c\x05\x2c\x04\xb3\x2d\x24\x2f\x94\xf3\xf8\x49\x7e\x55\x39\xac\x05\xde\x76\x3a\x17\x6c\x81\x76\x11\x70\x21\xec\x56\xf7\xe1\xc0\xde\x9c\x61\x50\x41\x6d\xa1\xfb\x91\x9f\xfd\x2c\x4c\xf3\x0b\xac\x44\x05\x4f\x5c\x89\x0a\xcd\x77\x2e\x58\x6d\xd5\xad\x04\x85\x5b\xc1\xd6\x82\x28\x88\xfe\xda\xf0\x0d\x7f\x2d\x66\x5a\x99\x34\xbb\x8c\x28\x9c\x09\x76\x2b\xe2\xf8\x56\xb8\x23\x6a\x74\x26\x76\x3b\x52\x15\x8c\x15\xb6\xd1\x28\x1b\x3c\x77\x1e\x9d\x2b\xd1\x77\x26\xa1\x68\x93\xc2\x6f\x84\x21\x74\xa4\xc4\x88\x6e\x39\x53\xa2\xbf\x90\xa0\x84\x7d\xc0\xf3\xd2\x62\x6a\x8b\x5b\x0a\x14\xeb\x8e\x02\x25\xc6\xa9\x20\x34\x11\x82\xf9\x8d\x65\xf2\xbc\xf2\x82\x35\x5b\x6e\x93\xd0\x1c\xce\x6d\xe6\x6a\xa7\x56\xa2\xdc\x38\x5a\xd0\x3c\xb9\x10\x7e\x33\xcc\x04\xeb\x0e\x20\x13\x4d\xeb\xec\x13\x7e\x63\x8e\xd4\x9c\x93\x28\xa2\x60\xb7\xca\x85\xb0\x25\xfb\xca\x81\x94\x64\x02\xb6\xb3\x8b\x54\xa7\x33\xc3\x35\x46\xa4\xc0\x8b\x3e\xea\xcd\x66\xc2\x69\x98\x6c\x23\x33\x91\xd3\xe4\x4a\xc4\xf1\x95\x08\x22\xd4\x31\xd9\x08\x56\xbe\x86\x70\x30\xb0\x14\x6c\x23\x50\x48\xd9\xa8\x6f\xe9\xef\x7f\xd9\x08\xb0\xa3\xa0\x49\xfd\xf3\xbc\xb8\x1e\x06\xbf\xe2\x3a\xbb\x16\xf0\x48\xc0\xb1\x80\x1b\x01\x6f\x04\xb3\x13\xb6\x4f\xf9\x6d\x17\x32\x31\x80\xc7\x9f\xeb\x43\x3e\x12\x68\xbf\xe1\xc0\xc6\x38\x05\x65\x67\x5a\x09\xc6\xc1\x4e\x03\x05\x21\x18\xcf\xe1\xa9\xd8\x0f\x8c\x08\x72\x5f\x40\x55\x93\x3c\xf9\x68\xd4\xa5\x7c\xbf\x62\x1c\x21\xf7\x69\xbd\xc7\xe9\x3c\xc8\x34\x3a\x95\xc8\x20\x11\x1d\x71\x66\x40\x32\x5d\x48\x8c\x3d\x1c\x99\xe2\x84\x17\x49\xe8\x7b\xab\x90\x66\x86\x53\xc1\xb6\xad\xd1\x91\xd0\xf1\x41\xb8\x93\xea\x50\xec\x13\x16\x87\x76\x9f\x9f\x13\xee\xe2\xb1\x54\xae\x43\x67\x25\xad\xcf\x3d\xb5\x71\x2a\xfa\x78\x27\x8a\xf7\xa5\x19\xa0\x29\x1c\x76\x8c\xda\x6e\x15\x36\x33\x39\xfc\x59\x87\x5e\x49\xf4\x6f\xd1\x98\x2d\xe9\x0e\x7d\xf0\x2d\x63\xcf\xda\x46\xb4\xa4\x90\x27\x04\xe8\x32\x96\x38\x79\x5b\x60\x88\x4b\xd1\xa0\x46\x4e\x04\x8b\x3c\x18\x23\x78\x27\x98\xc1\x88\x8b\xf0\x0a\x9f\x6c\x89\x97\x21\xcd\x70\xfd\x4c\x69\x72\x22\x28\x1c\x09\x76\xa3\xe0\x9e\x45\x18\xc5\x8c\xc0\x7b\xfb\x1a\xb6\x0b\x3c\xa9\xa2\x96\x67\x02\x6f\xd5\x5f\x70\x83\xb7\x6e\xbf\x16\x08\x0d\xf8\x4b\xb0\xd7\x02\x1e\x37\x50\xcd\x13\x41\xe1\xb9\x60\xdd\x2e\x79\x2f\xe2\xf8\xbd\x08\x7e\x11\x57\x78\xff\x95\x2a\xe2\xd3\x61\x02\x85\x4f\x82\xbd\x35\xe4\x44\x40\xe3\xce\xf5\x2e\x79\x4f\x8e\x04\xed\x16\x42\x87\x23\x41\x29\x7e\xf9\xfe\x7b\xc6\xd8\x0b\x5e\xde\xc7\x6e\x73\x3f\x16\x55\x9e\xbc\x38\xa5\x3c\x68\xde\xe1\x7a\x11\x4a\xba\x46\x0b\x8b\x7d\xb1\x20\xee\xba\xfc\x38\xbe\x2f\x31\xd6\x06\xda\x3f\xde\x77\xe4\x9b\x6d\xb1\x46\x73\x1a\x76\x54\x6e\xeb\x21\x85\x46\x24\x52\xd2\xb8\x75\xa4\xfe\x4a\x83\x99\x6d\x3d\x8a\x0e\x5e\xbd\x7f\x29\xa6\x8c\x43\x97\x98\xa6\x2a\x1d\x0b\xd6\xf8\x04\xbb\x2d\x3e\x08\xf6\x49\xec\x76\xdd\xc7\xaa\xce\xf0\x1d\x09\x2f\x1e\xdc\x0b\x4e\xef\x3a\x40\x29\xbc\x68\xd9\xda\xa3\xc2\xad\xfb\x1c\x0d\x7c\x5a\x78\x36\x34\x79\xbc\xe0\xd2\xf2\x2e\x3c\x87\x5f\x45\x7b\xc4\x84\xbe\x54\x06\x5d\x79\xe8\xb6\x7c\x0e\x62\x74\xbc\x69\x80\xfb\xe8\xdc\xa3\x37\xf5\xeb\xb8\x8b\x48\x4a\x2e\xd6\xe2\x86\x83\x60\x43\xc6\x42\xbc\xd2\x94\x0d\x46\xc1\xe5\xf1\xc7\x74\xe4\x2f\x2f\x71\x8c\x28\xd3\x93\xb4\xd7\x9b\xc2\x82\x89\xf1\xb2\xaf\x2e\x93\x65\x7f\x91\x8a\x25\xac\xd9\x32\x4c\x16\xcc\xf1\x19\x65\x83\x17\x6c\xe9\xcf\x2d\x3c\x94\x16\x63\x62\x71\xe0\x03\x14\x50\xea\xb0\x4e\xe2\xf8\x27\xe1\x02\x01\x57\x12\xd9\xd0\x3b\x3e\x2c\xc6\x33\xa6\x12\x72\x11\xc7\x17\xe1\x74\x82\x19\x5b\x10\x45\xe1\x22\x8e\xc9\x85\x3f\x0c\x61\xc3\xba\x03\x6a\x3f\x31\xb6\x0c\xf8\x61\x3c\x27\xf7\x04\x09\x7b\xf6\x60\x76\x91\x0a\xd9\x99\xdd\xce\x2c\x9f\x4b\x13\x92\xb1\x17\xc2\x32\xba\xe3\xcc\x21\xfd\x99\x65\xb2\x69\xb2\xb6\x69\xc9\x9c\xa8\xca\x09\x7a\x11\xc7\xdd\x0d\x76\xc1\xb5\x86\x21\x73\xf3\x0a\x8c\x2d\x8d\x5c\x9d\x86\x21\xc8\x38\xee\xd6\x46\xf9\x9b\x08\xde\xfe\x79\x0e\x1f\xf7\x67\x15\xe7\x0d\xc4\xe8\xb9\x18\x13\xa2\x59\x7d\x37\x93\x08\xff\x2c\x11\x16\x4e\x05\x0e\xba\xd0\x39\x80\xc6\x1b\xf7\x5c\x56\x03\xdd\x21\x9a\xcd\x37\x10\x00\xd1\x94\x26\x9a\x6d\x7d\x05\x09\x07\x57\x3c\x91\x39\x10\xc1\xd4\x24\x52\x32\xea\x99\x29\x1d\x0b\xa2\x69\x12\x6d\xa4\x0b\x84\x30\x2f\x06\x11\xb9\xeb\xff\x1a\x06\xaa\x88\xb3\x15\x6e\x34\xb5\xe4\x23\xbc\x0c\x0b\x51\x6b\x1c\x13\xd4\x5b\x37\xf8\x86\xb1\xff\x4c\x0c\x4d\x8a\x47\xe0\x94\xe6\x24\x7a\x1f\xda\xec\xf8\x5e\x76\xca\xc6\x31\x16\xf6\x6f\xcd\xb3\xe5\x6d\x71\x64\xef\x45\x5e\xc6\x9b\x55\x1c\x99\x25\x16\xe4\x67\x81\xa7\x0f\x91\xec\xcf\xfa\x7e\x78\x2c\xc6\x4f\x84\xbf\x3b\xa2\x18\xf3\xbb\xb2\x59\x0d\x86\x26\x1f\x05\x69\x03\x08\xd8\xb3\xd8\x6e\xf6\xea\xda\x7d\x2c\x76\x3b\x6c\x6d\xfc\x20\x19\x82\x1f\x62\x90\xc1\x48\x1f\xba\x8f\xd2\x1c\x7e\x6e\xe5\xfd\x86\xde\x20\xb6\x58\x39\xdd\x70\x57\x61\x0e\x3f\x7d\xdd\xf0\xab\x43\x2a\x2a\x7a\xe1\x3a\x1f\x85\xe1\x14\x1f\x2e\x8a\x0f\xe0\xe1\xe5\x6c\x70\x7e\x69\x2e\xd2\x8a\xfa\xb1\xf8\xa0\x2c\x36\x46\xe3\x74\x0b\x89\x1c\x7e\x6f\x2b\xc4\x51\x6a\xb3\xdb\x11\xf7\x60\x09\x46\x8d\xd6\xdd\x9a\x86\x26\x99\x04\x8f\x81\xd8\x03\xf8\x15\xf7\x8a\x5d\xc4\x34\x07\x93\xb6\xd4\xe8\x70\xa0\xad\x2c\xd4\x5e\xad\x14\xd1\x8d\x58\x10\xc3\x4a\x82\xa8\x82\x0a\x3a\xb3\x54\xfe\x27\x2a\x07\x3d\xd2\x9a\x77\x84\xc9\xf8\x72\x11\x85\x2b\xc4\x5e\x08\x22\xe9\x48\x8d\x1b\xa8\xd3\x0b\x40\x9c\xf0\x66\x98\x63\x33\x5e\x36\x28\xe1\x17\x41\x4c\x0a\x28\xdd\xa5\xf6\xe5\x77\xe1\x5f\x02\x22\x91\x74\xfb\xbb\x40\xf1\x2f\xde\x82\x96\x5b\x24\xb4\x3f\xfa\x61\x31\xfa\xe1\x5e\xc9\xa2\x65\x5f\x43\x3e\xfa\x64\xa9\xcc\xa3\xfa\x3a\x3a\xf5\x9a\x8a\x23\x01\x96\x04\x51\x18\xa4\xfb\x5a\x94\xf1\x0a\xbc\x1a\x94\xbd\x13\xfe\x15\xad\x2a\x89\x1f\x00\xc6\x86\x2e\x46\xe0\xde\x2a\xb8\xf0\x77\x11\xc2\x47\x23\xb1\x47\xae\xeb\x8d\xbf\xf2\x9f\xdd\xad\x11\x27\x02\x7c\x97\x21\x20\x47\xfb\xec\x96\xb3\x7d\x2a\x30\x68\x32\x99\x42\xb1\x22\xed\x17\x77\xfd\x4c\x20\xce\x3c\x55\x4d\x73\x5a\x4a\xa3\xd9\x1b\x45\x8e\x44\x45\x3a\xbd\xb5\xe7\x66\xd2\x82\x9e\x9c\x54\x95\xbd\xf4\xe3\x85\x94\xbd\x16\x84\x48\x76\x24\x4a\xc5\x12\x51\xec\xd0\x7d\xae\x45\xde\xdb\xed\x9c\xee\x83\x68\x76\x48\x14\x9d\x3c\x57\x53\x3a\x96\x89\xe2\x16\x9d\x16\x92\x8e\xb4\xaf\x2e\x59\x9b\x92\x7a\xb7\x33\x90\xe2\x21\xd9\x76\x8d\x29\x8f\x63\x0e\xa9\x3f\x23\x99\xdb\xb5\xee\xc5\x0f\x18\x84\xdf\xfa\x76\x75\x8b\xf2\xbc\xf1\x62\x17\x0a\x83\xae\x77\x66\xe2\x71\xfc\xab\x07\x3d\x72\xc9\x90\x96\x64\xf2\xac\x7e\xc7\x57\xe3\xe6\x75\xa4\x83\x02\x17\x88\x61\x5b\x1f\xed\xf3\xa3\xc8\x84\x5c\x0b\x70\x8b\x86\xd6\x19\x14\x53\xe7\x1e\xc2\x46\x68\xb0\x10\x61\x4b\x70\xe4\x23\xfa\x0b\xf6\xfa\x0e\x7b\x10\xc6\x8e\xc4\x6e\x67\xff\x8f\xc5\x18\x43\x40\xd8\x26\x93\xbf\x90\xbd\x68\xb3\xdb\xbf\x51\x71\x4c\x6e\x2c\xa5\x5d\xd3\xb0\x73\x09\xdc\x90\x6a\x22\x44\x36\x35\xda\xf3\xb1\x28\x35\xfc\x15\x76\xe6\x48\x34\x83\x5a\xdf\x88\xb0\xd7\xfd\x49\xee\x60\x17\x2e\x99\xac\xa8\x86\xda\x7a\xf9\x4c\xc4\xf1\x89\x21\xdb\xf3\xa5\x3a\x4b\x97\x2e\x50\x44\xe5\x76\xad\x42\x13\x39\xc8\x61\x8b\xf4\x7f\xdb\x8c\x1d\x0a\x72\x24\xe0\x99\xf0\x22\x32\x55\x89\x42\x8b\x18\xc5\x45\xfb\x2d\x9b\xb8\xd6\xe9\xba\x1a\xe7\x57\xe4\xb0\xf5\x58\x30\x39\x12\x39\x05\xcd\x09\xe2\x09\x5c\x33\xfb\x8c\xad\x72\x17\x2f\xb0\xb7\xfd\xc5\x28\x8d\x63\x6e\xa9\x9a\xc9\x53\x35\x8d\x63\x49\x38\x3c\x55\xfb\xd1\x8e\xef\xb8\x56\xec\x42\x64\x79\x4e\x73\x64\x8a\x8e\x91\xc9\xb1\x4f\x15\xcd\xec\x89\xc0\x2d\xdf\xec\xac\x5b\x3c\x2d\x9e\xac\xaf\x03\xf2\x0a\xdc\xa3\x5f\x67\x5e\x6f\x1c\xd6\x33\xf0\x62\x1f\xe4\x5f\xd7\x1e\x2e\xe2\x3b\x60\x5f\x44\x7b\xf9\x42\x55\x1f\x6c\x55\xe9\x72\xd9\xd2\x6f\x1f\x45\xf7\xb5\x70\x31\x2b\x0a\xde\x16\x14\x3e\x23\xe1\x2c\x9a\x34\x8a\x27\xb2\x38\x29\xac\xc7\x28\x08\x4b\x74\xa6\x6c\x00\x33\x36\x1c\xbd\x54\xcd\xe8\x64\xee\x0a\x9c\xb4\xd7\xb3\xb4\xf1\x70\x24\x1c\xca\x08\x12\x92\x59\xaf\x07\xfe\x82\x30\x8b\xc8\x5b\xdc\x4f\x36\xbb\x1d\xd9\x20\xda\x99\x64\x53\x66\xe0\xe0\x60\xb6\xdb\x69\x22\x2c\x73\xe3\xae\x96\x2a\x93\x2a\xe6\x88\x22\xd0\x7e\x8a\x78\x19\x57\x8d\x63\xd7\xe9\xac\x2d\xb8\x47\x0b\x50\x10\x10\xaa\x0d\x10\xaa\x0e\x88\x96\xb1\xab\xe6\xc8\x4a\x28\x6b\x7f\x1b\x4d\xe8\xaf\x0a\xfd\xd5\x44\xed\xf7\xd7\xcb\x80\x78\x0a\x32\x05\x9d\x82\x4a\xf7\x9d\x4c\xea\x32\x7f\x10\x29\xab\x85\x59\x87\x34\x6d\x8b\x64\x6f\x90\x65\x60\x83\x11\x7f\xf8\xe0\xbb\xef\x47\xbd\x1e\xa7\xc6\x7b\x78\xff\x2d\xea\x11\xc2\x1f\x0e\xbf\x1f\x47\x03\xa7\xb9\xad\x04\xb8\x1b\x7e\x8f\x7e\x9e\x15\x27\xda\x8a\x2a\xd7\x32\x47\x69\x83\x42\x2c\xe3\xe1\xa0\x19\x37\xba\x16\xb8\x31\x64\xe3\x96\x3b\x54\x13\x34\xad\x1e\x8c\xf4\xc3\x22\x3a\x6f\xaf\xa7\xe9\xdd\x36\xa3\x15\x8b\xbf\x2c\x65\x5b\x0c\x51\x74\xa2\x7c\x68\xd4\x59\x0a\x69\x96\x89\xf3\xe6\xa9\xec\xcb\x34\x0c\x60\x5b\x2e\x24\xab\x58\xde\x4d\xe4\x94\xf1\x89\x9c\x82\x71\xf7\x92\xc1\x4c\xad\xce\x84\xe4\xad\x55\x4f\xca\xcb\xc8\xf1\xc0\x99\xa9\xd5\x3a\x6d\xe0\x91\x8a\x86\x63\xab\xce\xfe\x4c\xb6\x2a\x31\x39\xac\xb5\x5a\x27\x91\x8a\xf2\x29\x48\x3b\x47\x0e\x18\xbc\x0a\x8c\x0a\x07\x3d\xd1\x53\xbc\x3a\x4c\x9d\xfd\x39\xc1\x83\x66\x6d\xf7\x64\x75\x5c\x68\xe9\x3b\x18\xcd\x1e\xa6\x65\x15\xb3\x62\x7b\x4e\x66\x53\xd8\x30\xbb\xc5\x46\x7b\xe1\x2d\x37\x45\x7c\xe0\x4d\x1c\xa3\x09\xb0\x2c\x4c\x80\x37\x18\xf1\xde\x07\xd7\xb3\x9d\x17\xae\xe3\x59\x8e\xcb\xd7\x26\x6f\x28\xcd\xf7\xa2\xbd\xb8\x51\x8f\x4c\x61\xba\x32\xa2\xe5\x85\xf0\x6a\x8d\x5e\xc3\x1c\x47\xc3\xdd\x68\x50\xcf\x9c\x12\x49\x2b\xa6\x0c\x16\x2c\x8a\x0d\x46\xaa\x8c\x8f\xdd\xeb\xa9\x72\x8d\xc8\x89\x3d\x20\x42\x40\xa5\x89\x9a\xd2\x51\xad\x4e\xa6\xf3\x3c\x47\x09\x63\x0e\x2e\x92\xc0\x5e\xcc\xcd\xe0\x93\x5f\x3a\x9e\xf7\xee\x9f\x43\xd4\x71\x1a\xea\x48\x64\xea\xe0\x9f\xff\xfc\xee\x87\x83\x21\x86\xb3\x08\x12\x44\x5d\x89\x3c\x39\x19\x1c\xfc\x90\x1e\x2c\xa6\xdb\x07\xf9\xfd\x73\x01\x1b\xc9\xb3\x59\xba\xe6\xb5\x68\x71\x2d\x61\x0c\xaa\xba\xc9\x50\x6b\x9e\x83\x73\x90\xda\xeb\xa6\x58\x10\x34\x96\x09\xda\xf1\x7a\x18\x4b\x86\xee\xff\x51\x76\xbb\x3a\x53\xcb\xaa\xba\x4b\xb3\x63\x4c\xbb\xd3\x55\xcd\xd0\x64\xef\x26\x04\x83\x8e\x7e\x1e\x0d\x18\x4a\xe1\x2e\x28\xb8\x81\x92\xaa\x7d\xec\xdf\x36\x05\x38\xbe\x45\x70\xb4\x18\x99\x47\x7f\x7b\xf0\xfd\xdf\x1e\x7c\x13\xf5\xd0\xb1\xea\xa5\x34\x24\x04\x92\x7c\x40\x61\xf8\x3d\xed\x45\x7f\xfb\xe6\x71\x84\x77\x51\x14\xeb\x3f\x8a\x40\xb0\xc1\x48\x3c\xd4\xe5\x42\x28\x62\x6c\x68\x0c\x2e\x72\xa8\xe6\xfc\x91\x21\x82\x8e\xbe\xfd\x8e\x31\x96\xee\x76\xdf\x7e\xef\xfe\x7f\xf0\xef\xc3\x07\x3e\x21\xfd\x91\x7d\xfb\xcf\x38\x4e\x1f\xb2\xef\xfe\x81\x6f\xdf\x7f\x87\x6f\x3f\x0c\xf0\xed\x87\x7f\xe0\xdb\xf0\xc1\x83\xb1\xea\xf9\xda\xb1\xe6\x24\x7d\x38\x7c\xf0\x4f\x9b\x98\xa6\x93\x74\x9a\xa4\x0f\x1f\x0c\xbe\x0d\xef\xc3\x1f\x1e\xec\xd2\x1f\x7f\xfc\x7e\xda\xb3\x2f\x0f\xfe\xb9\xfb\xfe\x9b\x18\xf3\x7c\xf7\xdd\x83\x1f\xbe\xc7\x8a\xbf\xfb\xc7\x37\xdf\x7e\xeb\xb3\x3f\x78\xf0\xad\xcd\x3e\x7c\x50\xe4\xb7\x85\xe3\xef\xbf\x69\x94\x27\xa2\xc7\x86\x90\xb2\xef\xbf\xfb\xee\x9b\xef\x7b\x84\x0c\x07\x0f\xbe\x89\x53\xfa\xf0\xe1\x70\xb0\xc3\xe7\xc6\xe8\x29\xf8\xfa\xbf\x1d\x60\xfd\xff\xac\xd6\x3f\x7c\x50\x6d\xa0\xb5\xc1\x62\x2f\xab\xcf\xc6\x18\x77\x01\x23\xf7\x03\xb1\xd3\x38\xee\x76\x49\x23\xce\xf8\xbf\x1c\x40\x1c\x03\x3f\xbb\x40\x21\x9f\x0b\x37\xed\x72\x7c\x8d\x4b\xa6\x45\xe3\xab\xf4\xf6\x8c\xbf\xae\x19\xdd\x79\xa5\x81\x48\x51\x83\x5e\x9e\x60\x05\x3a\x36\x65\x5c\x7e\x36\xa4\x1e\xe1\x79\x17\x8f\xca\x89\x14\x36\x84\x6b\xa7\x19\xa8\xb8\x22\x4a\x28\xf7\xce\xa8\x2d\x8e\xbd\x0c\xdd\xe1\x34\xa8\xbc\x25\x2d\x0c\x6f\xba\xbc\x05\xe2\x41\x68\x3e\xe1\x20\xa7\x23\x82\x5e\xba\xb5\xc3\x77\xb7\xd3\xfd\x74\xb9\x54\xd7\x6f\x03\x6c\x32\xba\xdb\x75\x55\xea\x20\xb3\x67\x87\x86\x02\x61\x82\x77\xdc\x74\x07\xc5\x6a\xe0\xf9\x97\x3b\x50\x1c\x85\x32\x88\x37\x8a\x40\x3c\x38\xa4\x38\xee\x22\x86\x8f\x63\xa2\xd8\x2c\xc5\xc8\xc6\x14\xfc\x27\xfc\x32\x26\xb2\xc5\x6f\x40\x82\xbf\x86\x38\x0d\xe4\x96\xa2\x21\x3a\x2d\xc7\x3b\x21\x5b\x42\x3b\x8b\x38\x96\x77\x44\x7c\x56\x53\x66\x88\xc0\x49\x49\x0a\x28\xe7\x18\xfe\x17\x3f\xe2\x6d\x43\xbc\x7e\x15\x8d\x6c\xa1\x1a\x78\x79\xf3\x84\x3d\x7c\x0a\x4a\xaf\xd2\xcd\xd0\x9a\xfd\x03\x81\x0d\xda\x04\x81\x0e\x71\x8a\xe6\x39\x6c\x52\x8f\x6a\xf7\xef\xde\x83\x65\xca\x7c\x08\xe4\x45\xca\xb6\xef\x9e\x1d\x0e\xff\xf1\xcd\x3f\x93\xc8\x3f\x44\xf0\xee\xd9\xe1\x37\x3f\xfc\xf3\x7b\x4c\xb1\x0f\x51\x0e\xeb\x94\x65\x69\xdf\xd1\x42\x64\xeb\x8d\x7f\x93\x45\xda\xf7\x59\x00\x03\x31\xfa\xeb\xa7\x43\x8d\x2d\x3c\xc8\x26\x0d\x57\x1b\x2c\x53\x0c\xc0\x9c\x17\xad\xb5\xe4\x2e\x0e\x8b\x3c\xcf\x61\x91\x52\x98\x7f\x99\x7e\xbd\x48\xd9\xf6\x4c\xa7\xb3\x4b\x6e\xda\xdd\x5b\x7b\xd1\x64\x1a\xb9\x6b\xbc\xd3\x04\x1d\x1b\xd3\x08\x84\x9c\x8b\x19\xcf\xda\xc9\x3c\x5b\x24\xea\x71\xb4\xb3\x04\xcd\xd7\x3c\x35\xad\x35\xe7\x16\x19\x34\xa8\xe7\xab\xb4\x69\x84\x88\x2b\x03\xce\x9b\x74\xee\x55\x1a\x2e\x67\x81\x95\x5d\xba\x63\x9e\x4c\xf8\x94\xe6\x70\x9b\x32\x0c\x36\x54\xc5\x41\x45\x9c\x66\x38\x4b\xd9\x3a\x0d\xd6\xd8\x70\x6d\x29\xd8\xf9\xfc\x97\x0d\xd7\xb7\x6f\x35\x5f\x88\x9b\xa4\x3b\x04\xdc\xa6\x4f\x94\xc9\xec\x8b\xf7\x6e\x4e\x22\xe7\xde\x1c\xde\x8f\xb9\x34\x42\xf2\xa5\xcd\x32\xe7\x4b\xb1\x12\x86\xeb\x24\x8a\xa3\x40\x3a\x20\xbf\x6f\x9f\x74\x92\xa5\x7d\xf7\xe8\x53\x3e\x58\xb6\x23\x7b\x23\x97\xb7\xb6\xb4\x5b\x09\xc9\x59\x5a\xae\x89\x64\x9d\xf6\xcb\x05\x32\x39\x4b\xa7\x05\xc0\xbb\x43\xc8\x82\x47\xcc\x1d\x97\x0e\x74\x6e\xd3\x12\xdb\x66\x97\x62\x7d\xb4\x59\x2e\x5d\x49\xa3\xc5\xcc\xd8\x57\x14\x0e\x0b\x79\x8e\xc2\xc5\x47\x25\x6c\x03\x9a\x74\xb7\xd1\xd4\x0d\x12\xdd\x26\xbb\x80\x15\x73\x58\x73\x5f\xe4\x31\x1b\xaf\xd8\x8c\x48\x58\xd1\x64\x55\xb5\xc1\xb3\x1d\x1d\xaf\xd8\x92\xac\x68\x58\x41\x2e\x92\xc1\x2a\x25\x2b\x8b\x87\x56\x76\xb7\x84\x83\x81\xac\xda\xc8\x95\x8e\xd9\xab\x11\xe9\x26\x93\x53\xea\x23\x61\x41\x44\x29\x78\xd3\xe5\x95\x43\x55\x01\xcf\xa7\x71\xdc\x5d\x8f\x53\x22\xe1\x3a\x4c\x86\x86\x39\x44\x97\xfc\x36\xa2\x89\x1c\xad\x58\x14\xe5\x2d\x2e\xe8\xe4\x82\xad\xe8\x6e\xb7\x77\x1f\xc4\xc5\x6e\x17\x9d\x29\xb5\xe4\xa9\xac\x27\x36\x89\x3f\xcc\x28\xce\x85\x34\xb5\xb4\x2c\x2d\xcf\xd9\x55\x71\x0f\x5b\x3a\x9e\x2c\xc8\x7a\x2c\x93\x3b\x3a\xea\x22\x86\x2f\x48\x4a\x56\x8d\xcf\xc8\xc9\x46\x94\x4e\x93\xc9\x82\xc8\x90\xcf\xe3\x83\x15\xa5\x2e\x62\xd5\x15\x9c\xb3\x09\x92\xf8\x85\x18\x74\x55\x84\xcf\xb5\xc9\xab\x94\xcc\x28\xbd\x62\xb3\x32\xac\xfa\x6d\x8d\xbb\x59\xd1\xd1\x15\xcb\xc6\xb7\xfd\x4c\x69\x43\x32\x9a\xdc\x16\x91\xf8\xcf\xd8\x60\x74\xf6\xf0\xea\xff\x63\xef\x4d\xb7\xe3\xb6\xb9\x45\xc1\x57\xa9\x42\x14\x1a\x08\x51\x93\x3c\xb3\x04\xd5\x27\xcb\xb2\xe3\xc4\x53\x24\x39\x71\x52\x55\xd1\xa1\x58\xa0\xc4\x98\x45\x56\x38\x48\x72\x8a\xbc\x2b\xf7\xf6\xdc\x8f\xd0\x7f\xba\xdf\xa0\x57\xff\xe8\x17\xe8\x27\xb8\xe7\x11\x3a\xfd\x22\xbd\xb0\x01\x70\x2a\x96\xec\x9c\x6f\xb8\x5f\x9f\xbe\x89\x57\x89\x04\x31\x6c\x6c\x6c\x6c\x6c\x00\x7b\x28\x05\xc3\x73\x49\x30\xd7\xec\x6a\x7a\x3e\xa7\x07\x6c\x39\xbd\x9e\xcb\xe0\x6a\xf2\x90\xb5\xcb\xd8\x81\xcc\x72\xc2\x80\x10\x26\x2d\x24\x15\x4d\x22\x81\x0b\x62\x05\x56\x60\xe2\x74\x82\xfa\xc8\xbc\xb6\x04\x7f\xb9\x16\xfc\x85\x8c\x2f\x6c\x7c\x41\x13\x7c\x40\x4f\xb6\x50\x2d\x29\xfc\xd9\x5d\xe4\xf4\xc4\x66\x1b\x4b\x6d\x93\x23\xd6\x19\x52\xeb\xf1\x32\x4b\xe8\x86\x3a\x60\xb7\x50\x6c\xb8\xb6\xc7\x85\x66\x33\x4b\xf4\x30\x19\x46\xb9\xa9\x2e\xd3\xda\x0e\x91\xf5\xd7\x76\x8b\xa7\x23\xf9\x11\x1c\x75\x27\xe1\x16\x93\x27\x96\xf4\x15\xa3\xca\xb2\x6b\x5b\x3f\x8f\xab\x5a\x24\x45\x0e\xc3\x50\xbc\xad\x91\x58\xd9\x6e\x54\xbf\xb4\x43\x75\x7a\xc9\x3b\x2a\x43\x47\x1a\xdc\x15\x16\x59\xdc\x4b\x2e\x79\xd4\x81\x36\x68\xa7\xac\x95\x76\xc2\xa8\x53\x3a\x02\xd1\x96\x57\x25\x7b\x6e\x80\x2b\x39\xa2\xc4\xf5\x42\xb1\xb8\x1a\xa3\xa4\x45\x9e\x76\x18\xdf\x05\x1f\x82\xf0\x3a\xe8\xc8\x4c\x1a\xcc\x55\x14\x5e\x79\x0b\xbe\x10\xb8\x0b\x8a\x66\x72\xb9\xa3\xab\x33\xe2\x40\xec\x83\xaf\x6d\x65\xb9\xab\x95\x0e\x5a\x3d\xcb\xc8\x2c\x59\xb6\xb4\xb1\x7e\x21\x52\xe2\x2a\x5e\x69\x73\xe9\xd9\xe4\x28\x49\xbf\x9e\x65\xd2\x4c\xb0\xae\xed\x46\x4a\x65\xf5\x2a\x8d\x3b\xfa\x45\xe2\x44\x14\x28\xd7\xb7\x6e\xe5\x53\xb1\xd4\xf1\x8d\x45\xae\x0d\xb2\x46\x9e\xc9\x46\x8a\x55\x12\x9e\x4e\xaa\x2c\x95\x15\xe0\x8a\x44\x01\x5c\x99\xa3\xf2\x41\x2f\xaa\x6d\x70\xc8\x4f\x13\xfd\x60\x5d\x37\x56\xdb\xc8\x6a\x1d\x20\xf5\xb1\x28\x17\x59\x15\x8e\xba\xb1\x4e\x6f\x6f\xb8\xcc\x34\xd9\x4c\x2a\xeb\x2c\xd3\xa8\x1c\x7e\x2b\xac\xac\xf7\x51\x63\x51\x6f\x85\xb8\x96\x65\xd2\x78\x17\x2d\xd5\x12\x2a\x2b\x7f\x1b\xf0\xc5\xd7\x49\xe5\x19\x2a\xd1\x2f\x54\xb0\xf8\x2d\x90\x84\x51\x32\x91\x7f\xa4\x3f\xb7\x16\xc1\xa2\xb5\xd1\x8d\x6c\x93\xb6\x44\x00\x63\x23\x15\x8e\x90\xc6\x6d\x41\x37\xd5\x84\x9a\x44\x0c\x0f\xa9\x7e\x23\x18\x21\x21\xe8\x2f\x6d\x5c\x24\x81\x3a\x40\xf1\x26\x9d\x38\x52\x5b\x2d\x89\x1b\x3b\xaa\x48\xdf\x05\x32\x1d\x90\x17\xa1\xb1\x27\x8f\x55\xe1\xd8\xf3\x99\xe4\x23\x5e\xd0\xb9\xb4\x27\xb5\x34\x8b\x0b\xfe\x29\x45\x36\xe4\x05\x1d\x3e\xe1\x7d\xf5\x3a\x29\xd2\x2d\x24\x65\x63\x64\x15\x49\x00\x92\xc3\x2e\xed\xa9\x37\x1f\x83\x9d\x69\x6d\xf5\x8d\x20\x80\x88\x40\xbb\x61\x04\x72\x09\x96\xaf\xe5\x19\x4d\xcc\x86\xe3\xb8\x7a\x4e\x17\xcb\x45\x2b\x65\xc1\x34\x9e\x8f\xc3\x72\x7c\xe5\x69\xa3\xe8\xdd\x34\x9d\x67\xd9\x85\x8d\x6d\x7a\x60\x63\xf1\x46\x53\xea\x88\x86\x36\xc6\x80\x56\xca\xd3\x50\x4f\xbd\xb0\x98\x42\xd2\xb9\x9f\x42\xb0\x02\x95\x86\x15\x16\x13\x36\x88\x34\x2c\xd9\x6b\x51\x5f\x65\xaa\x84\xc5\xa2\xa3\xac\x12\xb5\xd7\xd3\xb0\xe4\x0d\x84\xba\x0c\x74\x87\xc2\x26\xb3\x84\x90\x27\xa8\x3c\xf9\x6f\x30\x23\xc3\x68\x1e\x2c\x16\x59\x26\xae\xc9\xc4\xa2\xf8\x88\xc9\x43\xb2\xd1\x70\x38\xbc\xfb\xe5\xdd\x27\x06\xb2\xca\x2f\x47\xbb\x5f\x3e\x3e\xfc\xf2\xf1\x5d\x03\x11\xea\xeb\x03\xd6\xe1\xc4\x35\x7d\x0b\xa1\x9c\xd0\x9b\x4d\x45\x06\x69\xec\x23\x63\xc7\x54\xbc\x09\x28\xbf\x11\xc5\x36\xbd\x3e\xe6\x45\xd5\x86\x81\x6d\xc6\x4d\x34\x41\xe6\x89\x0d\xc4\x10\x4c\xe2\x70\x9a\xcc\xb1\x4d\x03\xea\x11\x0b\xec\xde\xc1\x6e\x4f\x27\x7b\xc4\xd2\x8f\x27\x36\x0e\x09\xf5\x48\x4e\xdf\xd8\x2d\xfa\xc7\x1b\x7a\x3b\xa2\xbd\x62\xf5\xad\xfa\x60\x98\xd4\x1c\x32\xac\x73\x38\x42\xde\x91\xf7\xd8\x93\xe2\xc9\x12\xd3\x4f\x7c\x50\x4e\x0e\x43\x86\x06\xf6\xca\x1b\x5c\x0d\x07\x31\x87\xb0\xde\xf1\x40\xee\x8f\xa1\xaa\x9e\xbd\x58\x20\xea\xb1\x75\x4e\xed\x8a\xdf\xcc\x52\xe7\xb5\x7f\x1e\x2e\x3e\x82\x76\xb4\x7c\xac\xd8\x88\xca\x84\x49\xc3\xb3\x4c\xc5\x43\xfd\x2b\x2f\x8e\xbd\xe0\xa2\x13\xf1\x5f\x53\x2f\xe2\x8b\x4e\x07\x7c\x0b\x70\xc1\x7a\x3b\xa2\x2c\x92\xba\x19\x3b\xbf\x02\xf5\xe8\x6f\xb1\x61\xd4\x6e\x2c\x36\xbe\xb7\x45\x38\x16\x02\x0a\x38\x43\xd9\xc8\x3d\x4d\xc0\xdb\xcf\x8d\x8d\x95\x5b\x80\xc0\x0c\x69\x02\x12\x6b\x04\xf1\xf8\xff\x19\x87\xc5\xf7\x04\xa4\xff\xbf\x1e\x97\xb3\x7f\x96\x71\x89\x42\x9f\xff\xd7\x11\x21\x39\x3d\xb4\x59\xb7\xa1\xe4\x5a\x9e\x5f\x54\xfc\xc2\x55\xf6\x78\x55\xbd\x60\x58\xa5\x14\xbc\x17\x3c\x29\x0e\x64\xdf\xb8\x80\x8a\x84\x74\x0b\x2f\xe5\x22\x59\x80\xf2\x8b\xcd\xbe\xc7\xe8\xc5\xd1\xd9\xdb\xe3\x37\xa7\x6f\x10\xa1\x6f\x37\x4f\xd6\xe8\x07\x9b\x1d\xda\x93\xd6\x8a\x5b\xcf\xbf\xd8\x6b\xd0\xb6\xb8\xc6\x09\xfd\xc5\x26\x93\x64\xfa\x8b\x3d\x6f\x17\xb8\xea\xc7\xf8\xd5\x83\x90\xda\xb7\x49\xfd\x24\xbf\x80\xcc\xaa\x15\x91\x00\x4e\xde\xda\xca\x7b\xf7\xa9\xbd\x61\xa6\x6b\xb3\xee\x68\x3c\x9d\xc3\x68\x8a\x65\x12\x02\xf5\x7a\x01\x8e\x84\xb0\x24\xc7\x98\x90\x09\x0e\x6c\xf6\xc1\xc6\x1f\x6c\x1c\xd9\x84\x08\xac\x35\x51\x62\x18\x98\xdb\x2c\xb0\x89\x25\xaa\x1c\xea\xd3\x19\x6e\xcb\x0f\xeb\x5c\xf4\x9e\xdb\xf4\xd4\x26\x59\xf6\x41\x3e\xd1\x16\xcb\x76\x50\x27\x51\x86\x40\x2f\x6d\xb6\x7e\xa1\x60\x2d\x30\x6c\x71\x9b\x3e\x79\xf7\xfc\xf9\x8f\x67\x27\x07\xcf\x0e\x8e\x5f\x9c\xbd\x38\x3d\x3a\x3e\x38\x7d\x73\x7c\x62\x1d\xdb\x39\x7d\x61\xb3\x97\x76\x7f\xa3\x14\x7d\x6d\x6f\x35\xb5\xdc\x69\xae\xde\x45\xe4\x7a\x13\x75\x74\x4d\x68\xbc\x49\x6a\xec\x79\x82\x5f\xd8\x54\x1a\x47\xfa\x78\x44\x03\x22\xf5\x6e\x12\x1a\x81\xd6\xcd\x61\x38\x8d\xe6\xec\xb5\x4d\x93\x9c\xbe\x2b\xc8\x28\xae\xd1\x4b\x96\x61\x74\x76\x06\x75\x9e\x9d\x21\x2f\x58\xe7\x6d\xe1\x14\xba\x23\x0a\x41\xf7\x93\xe8\xe3\x1a\x27\xac\xa4\xbc\xca\x71\xc6\x53\x15\x4a\x23\x8c\x5a\x6c\xdd\xcb\x26\x88\x00\x80\x68\x7d\xa7\xe9\x9c\x50\xce\x82\x8d\x48\xab\x9b\x76\x9c\x95\xdb\x81\x52\x5b\xf4\x10\x07\xa4\x19\xee\x09\x34\xe0\xcb\x08\xb8\x9b\x66\x2b\x87\xa0\xa4\x19\xf3\xa4\x83\xcc\xe2\x20\xdb\x44\x1d\x3b\xee\xd8\x9d\x02\x66\x44\x72\x1c\x11\x2a\xf6\x3f\x0a\xd6\x88\x58\x41\xbf\xe8\x08\x8b\x68\x00\x61\x04\xb4\xe6\xcb\xd3\x2d\x43\xff\x0c\xd2\xdb\x69\x86\xbe\xda\x98\x12\xbf\x6e\xa7\x94\x27\xed\x72\x1e\xb5\xc9\x7a\xc7\xc6\x01\xe5\x54\xed\x35\xb4\x56\x7d\x03\x33\x09\x03\xb3\xf3\xe2\x24\x6e\x09\x87\x64\xcf\x54\x0c\xde\xce\x42\xa7\x2f\xa6\xc9\x7c\x1c\x5f\x7b\x6a\x04\x1c\x3b\xe6\x48\x4c\x45\x64\xc1\x23\x1c\x01\xea\x17\x1e\x24\x91\x27\xde\x36\x0d\x4c\x2b\x2a\x6f\x41\xa9\xe0\xf4\x19\xf9\x48\x9e\x53\xb7\x4e\xfe\x74\x25\x68\x70\x51\xe5\x96\xf4\x92\x2d\xa6\xaf\xec\x79\x96\x2d\x9a\x46\xfc\xa1\x61\x2c\xa6\xe1\x9c\x2e\x19\xf4\xee\x32\xcb\x7c\x21\x92\x5e\x31\xe5\xa5\x03\x62\xe0\x2c\xfa\x0a\xf6\x2c\xbb\x84\x03\x20\xc3\xc0\x8e\x60\x33\x57\x6a\xc0\x81\x43\x8b\x71\x6d\xe5\x37\x0e\x18\x60\x19\x86\xe0\x4a\x8e\x60\x49\x4f\x05\xaf\x79\x67\x4f\xde\xd9\xd8\xa1\x4f\x6d\x62\xb5\x9c\xb8\x39\x02\x60\xc3\xf8\x80\x1d\xfa\xca\xa6\xbf\xda\x04\xe6\xab\x43\x5d\x50\x49\x26\x54\xe3\x16\xc6\xe9\xd2\x30\xf4\x7b\x97\xb1\x4b\x88\x60\x63\x18\x78\xc5\xba\x43\xba\x6c\x21\x92\xcb\x8a\x22\x6e\x4e\x28\x20\xa7\xcb\xd8\x52\xb4\xb7\x10\xed\x2d\x81\x25\xf0\x39\x5b\xd2\x90\x78\x2e\x8e\xd9\x5a\xd6\x6f\xf9\x58\xb7\x44\xa8\x18\x69\xcb\x9b\x2c\x45\x22\x8c\x3a\xa1\x0a\x51\x22\x45\x8f\x37\xc9\xa9\x0d\xfa\x2a\xa9\x20\x9d\x98\xe0\x67\x76\x96\xad\xb2\xac\x2b\x13\x16\x60\x65\x92\xe0\x05\x4d\x69\x3c\x4d\xe7\x2a\xda\x66\x45\xb7\x8d\x6f\xb8\x4a\x81\x1a\x72\x5a\x6a\xde\xc5\x39\x7d\x6e\x6b\x23\xa8\xdf\xec\xba\x11\x94\x1c\xca\x92\x42\x08\xfd\xde\x66\x4f\x6c\x2c\x0f\x53\xb5\x3b\x96\x86\xa2\xe5\x73\xbb\xaa\x44\xdc\xac\x82\x2a\xd0\xae\xc0\x25\x72\xb0\xe0\x37\xd6\x90\x7e\xf0\x02\x08\x28\xd9\x30\x06\x92\xaa\x56\xbf\xd9\x4a\xf1\x17\x8c\x6b\xa0\x34\x0d\x58\xd2\x17\x85\x68\xe1\x5e\xdf\x34\xb5\x79\x0e\xcf\xb2\x68\x9f\x69\x9d\x9f\x09\xd6\x85\xb4\xb1\xe4\xba\xaa\x94\xac\x34\x9c\x87\x39\xb1\xe4\x40\x30\x16\x4c\x54\x8e\x48\xab\x3f\xe7\x56\x49\x33\xc5\x57\xd0\x1e\x2a\x32\xa8\xc4\xa9\xf4\x0e\x52\x7e\xc8\x4b\x7a\x23\x63\xf0\xae\xa1\xc4\x47\xa6\x5d\x6d\xd0\x27\x41\x41\x03\xe2\xb1\xa0\x11\xf1\x52\x50\x02\xb0\x9c\xaf\xb7\xac\x62\x34\xd4\xa3\xf9\xce\x6e\x73\xb9\x82\x85\x2c\x5a\x8f\x48\x1e\x75\x19\x0b\x0c\xe3\x02\x87\xac\x22\x5a\x10\xc3\x08\xbb\x10\x61\xa6\x9c\x83\xef\x6c\x08\xc5\x2e\xd6\xb7\xf7\x36\x43\xd3\x59\x32\x0b\x66\x57\x33\x77\x16\x75\xfe\xaf\xff\xed\xff\xfe\x5f\x7e\xff\xe3\xf7\xdf\xff\xf8\xfd\x3f\xfe\xf1\xfb\x7f\xfa\xe3\xf7\xff\xe6\x8f\xdf\xff\xdb\x3f\x7e\xff\xef\xfe\xf8\xfd\xbf\xff\xe3\xf7\xff\xe1\x8f\xdf\xff\xc7\x3f\x7e\xff\x9f\xfe\xf8\xfd\x7f\xfe\xe3\xf7\xff\xfd\x8f\xff\xf8\xbf\xfe\x3f\xbf\xff\x3e\x4b\x77\x87\xbb\x8f\xe0\xf7\xf1\x2c\x75\xb9\xeb\xce\x11\xfd\xc1\x66\x3a\x78\xc9\xcf\xc8\x7c\x6f\x8b\x7f\xe8\x2b\x44\xe8\x8f\xc5\x07\x9d\xb8\x83\x08\xfd\xd6\xfe\x94\x1f\x27\x79\xee\xac\x2f\x4b\x30\x2f\x55\x0a\x46\xe0\x41\x29\x00\x05\x45\xa9\x5a\xf3\x83\x4d\x11\x22\x84\xee\x6e\x7c\xf9\x51\x7d\x09\xf2\x9c\x7e\x63\xb3\x75\x9c\xd8\x51\x62\x7d\x6b\x83\x39\x5b\xb0\x10\x4f\xbb\x44\x06\x05\xfe\xd6\xc6\x77\x49\x4e\xbf\xb3\xd9\x79\xd2\x77\xe9\x4f\x36\x58\x2b\x27\x0e\x7b\xdb\x77\x29\x77\xd8\x37\x36\xc4\x71\xa0\x81\xc3\xc2\xbe\x0a\x51\x15\x39\x2c\x70\x2a\x6c\x36\x74\x18\x7a\xad\x6f\xa5\x56\xf8\x79\x82\x23\x87\x10\xea\x39\x6d\x06\xa6\xf5\xab\x11\xf6\x11\x8c\x86\xa4\x6a\x55\xd3\x11\x63\x6a\x18\xa9\xde\xd2\xec\x0a\x76\x74\xef\x2e\x63\x0c\x73\x86\x53\xc6\x1d\x9c\x12\x52\x55\x74\x19\x12\x92\x65\xa0\xe8\x23\x55\x38\x1e\x3d\x12\x99\x03\x96\x56\x33\xed\x8a\x4c\xa3\xdd\x61\x55\x69\xe9\xb5\xfd\x3a\xd7\x91\x7e\xef\x3d\x92\xe5\xd5\xda\x56\x2b\x3b\x22\x72\xa5\xeb\x3c\x78\x00\x2b\x5b\xe7\xf1\x23\x2b\x62\xbb\x34\x64\xf7\x1e\x8f\xcf\x23\x6e\x7f\x18\x43\xf2\xc3\xc7\xf2\xf3\x68\x34\xb2\x22\xf6\x88\x86\xec\xfe\x7d\xf5\x5d\xdf\xbe\xcb\x96\xcd\x14\x6e\xac\x6c\x86\x3d\x96\x16\x0a\x4f\xfa\x90\x45\xeb\xee\x8d\x1d\xe5\xf2\x24\x66\x5e\x15\x1c\x87\x90\xbd\x7b\x8f\xb2\x2c\xde\x0f\x2b\x3d\xd1\xe4\x52\x68\x52\x79\x34\xd2\x2a\x1b\x66\x9a\x0b\x3c\xbf\x4d\xb0\x1e\x2e\xda\x0d\x1c\x8c\x3a\xc3\x70\x84\x48\x96\xc1\xcb\xf0\x1c\x9e\xc5\xa3\x39\xbc\x19\x41\xd8\x11\x7d\xa2\x67\x3b\xd4\x69\x19\xd4\x8d\x0d\xe8\xde\x68\x32\xb4\x80\xcf\x55\x15\xdb\xab\x22\x9c\xe3\x18\x06\x0e\x9d\x49\x7d\xeb\x14\x39\x52\x0f\xf6\x8d\x72\xba\x22\xc4\x55\x62\x69\x60\xbb\x6c\x85\x03\x42\x26\x5f\xdb\xb0\xf2\x06\x0e\xf6\x1c\x08\x95\x14\x50\xc7\x21\x16\xbc\xe4\x34\x76\x98\x3d\xf9\xce\xc6\x81\x43\x2c\xf4\xea\xe0\xfd\xd9\xf7\x07\x2f\xdf\x1d\xd1\x57\x2f\x5e\xab\xa7\xd7\xf6\x6b\xfa\xfa\xe8\xf9\xc1\xe9\x8b\xef\x8f\xce\x5e\xbc\x7e\xf6\xe2\xf5\x8b\xd3\x1f\xe9\xdb\x37\x27\x2f\xea\x29\x47\x6f\x4f\x5e\xbc\x7c\xf3\x1a\x42\xe3\x07\x5e\xc2\xa9\x17\xbf\x08\x12\x7e\xc1\x23\xea\xc5\xa2\x12\x2f\x3e\xb1\x5d\xae\xd3\x44\x53\x27\x07\xcf\x44\x05\xa7\x47\xcf\x8f\x8e\xa1\xc5\x5a\x02\x0c\xc9\x33\x3f\xb4\x13\xaa\x47\xa7\xac\x13\xe9\x38\x2c\x14\x11\x9a\x8a\xa1\x8f\x1d\x4d\xfb\xa9\x33\x4e\x05\x11\x5c\xe3\xc0\xa1\xb6\xc3\x62\x67\x9a\x3a\x73\x62\x18\xdd\x6b\xec\x88\x14\x62\x18\x89\x23\x1f\xe9\x4f\xb6\xcc\x45\xc8\xd8\xa9\x4c\x52\x16\x39\x34\x72\x6a\x7b\x4f\xc7\xa1\x3c\xc1\x21\x2d\x88\xc1\x51\x21\x7d\x7c\x67\xd3\x08\xe3\xb0\x58\xc6\x50\x65\xa7\x21\xb5\xfd\xc5\x0e\xca\x64\xe8\x02\xbc\xb6\x7b\x17\x41\x18\xf1\x43\x5b\xba\x6b\x36\x19\xf2\x20\x79\x99\xfa\x89\xe7\x7b\x81\x4e\x5d\x42\xea\x22\x4c\x0e\x7c\x5d\x3e\x86\xa4\x34\xf0\x9c\x70\xa1\xb3\xa5\x90\x16\x27\x9e\xf3\xe1\xa3\x4a\xfa\x28\xc4\x8d\x8a\xa7\x58\xd7\xa9\x69\x7c\x28\xb6\x0b\xba\xb7\x02\xf4\x95\x43\x17\x0e\xbd\x74\xd8\xfa\xdd\xeb\x93\x77\x6f\xdf\x42\xb4\x8e\xb3\x1f\xad\x4d\xe5\xee\x84\xb9\x0e\x46\x36\xa2\xa2\x89\xb2\x8f\xbe\x1d\x27\x2f\xc4\x22\xcd\x76\xa9\x72\x11\xd5\xe7\x37\x5c\x64\x3d\x77\x16\x08\xd4\xd1\x9f\x1c\xbf\xf9\xf6\xe8\xf5\xd9\xe1\xc1\xf1\xd1\xe9\xd6\x9a\x7f\x8e\x10\x45\x17\x9f\x59\x77\x9c\x44\x48\xda\xc2\x2d\x1d\xb5\x94\x54\xa3\x52\xdf\x70\x87\x5e\x39\xdb\xf5\x84\x2e\x1c\xb6\x74\xe8\x47\x87\xe1\x95\xc3\x06\xf6\x80\x2e\x1c\x36\x38\xff\x6a\x70\x41\x97\xca\xd7\xd1\xca\xa1\xc8\x46\xa4\x78\x5f\xa8\xf7\x61\x97\xb1\x95\x53\x42\x96\x65\x22\x65\x51\x49\x21\xf4\xdc\x61\x97\x4e\xbf\x86\xcf\x2c\xbb\x74\xfa\x55\x34\xd0\x6b\x87\x15\x07\x41\x03\x4c\x26\x93\x81\xea\x1a\x22\xd3\xd1\x7c\x8c\x3f\x3a\x59\x76\xed\x64\xd9\xb9\x20\x5f\x7c\x71\xcb\x62\x21\x75\xf4\x6d\x76\xee\x18\x86\xa7\x88\x81\x3a\xcc\x57\x90\x7b\x84\x0a\xd6\x28\xdd\x52\xd2\x94\x0d\xa9\x5f\xc6\xdf\x13\x22\x37\x28\x30\x63\x87\x39\xc5\x02\x89\x3e\x22\x58\x21\xcb\xe0\x46\x17\x48\x40\xe1\x28\x32\xf6\x4b\x65\x57\xc5\x97\xbd\x6a\xff\x2b\x2f\x70\x14\xde\xf5\x4a\xfa\xce\x32\xaf\x4a\xec\x68\x26\xc3\x8c\x4c\x2b\x65\x7a\x23\x88\x51\x11\x33\x84\x27\x56\x07\x99\xb1\x89\x08\xa2\x3e\x43\x1d\x64\xfa\x34\x35\x4d\x42\xa5\x37\xcf\x42\xb6\xc0\x13\x4b\x67\x13\x2b\xeb\xb5\x23\x17\xfc\x6a\x16\xf8\xbe\x83\x27\xdd\xd9\x2c\x56\xd9\x3e\x3a\x60\x94\x58\x03\x3d\x62\x7a\xc0\xed\x49\x60\x79\xd4\x27\xd4\x9e\x44\x13\x1c\xf5\xbd\x60\x95\x26\x4c\xfd\x55\xbd\x4e\x09\x8d\xa6\xc3\x39\x13\x3f\x95\x24\x89\xb6\x6a\xc5\x55\x94\x98\x32\xbb\xd2\x4b\xb6\x2a\x5f\xd8\xd0\x12\x30\x45\x10\x5e\xa4\x4c\xf5\x14\x1f\x99\xa8\x8a\xcd\x4a\x79\x8b\xcb\xee\x46\x86\x51\x98\x86\x8f\x0c\xe3\x4a\x75\x22\x02\xd7\x6a\xb4\x69\x64\x1e\xb2\xd1\x38\xdc\x88\xc0\xdb\xdb\x1d\x87\xa6\x49\x8a\x23\xc8\xf2\x34\x34\x9c\x1b\x06\x8e\xa6\xe1\x9c\x69\x0f\x8a\x62\xdf\xa5\x4c\x30\x0e\x1c\x76\xe1\xd4\x3c\x39\x4a\xa4\x6f\xba\x72\x1c\xf4\x25\x8d\x77\x19\x3b\x70\x72\xba\x16\xcf\xd6\x81\xa3\xea\x39\x71\x6e\x97\xfe\x2a\x12\x31\xf5\x6a\x32\x20\xb5\x99\x93\xe0\x80\x50\x47\xe0\x5c\xa9\x9f\x2a\xfa\xde\x93\x1a\xca\xce\x24\x99\x20\xa4\xf6\x05\x16\x8e\xea\xb2\x82\x4d\x88\x56\x3a\x8e\xf6\xef\x3f\xb8\x3b\x7a\x9c\x65\xb6\x29\xa6\x85\x93\x65\x38\x6c\x64\x36\x47\x22\xfb\x83\xbb\xbb\xc3\x2c\x0b\xf7\xef\x3f\xbc\x7b\xef\xee\x24\x99\x78\x5a\xeb\xd9\x26\x56\x64\x89\x77\x49\x10\x36\xb5\xcd\x5d\x62\x85\x3d\x28\x61\xe2\xa8\x07\x2d\xed\xed\x8d\x86\xc4\x04\x1d\xe5\x3c\xa7\x37\x0e\x5b\x3b\x50\xbd\x75\xe2\xe0\xee\x88\x50\x59\x19\xbc\x0d\x49\x4e\xdf\x38\xec\xc6\x51\x2d\xd0\x23\x47\xef\xe9\xce\x9c\xc6\x9e\x4e\xa2\xa5\xb2\xa9\x1b\x3f\xb1\x95\x72\x11\x45\xda\x5b\x62\xed\x60\xf7\xc8\xa9\xed\xe8\x9a\x15\x50\x29\x75\x5a\xc5\x84\xd7\xfb\xba\xf6\x0d\x1d\xe5\xec\xcc\x51\x6b\x61\x00\x9e\x0b\xa0\x69\xb1\x47\x81\x72\x7a\x5c\xa2\x7d\xa6\x6f\x3e\x27\xed\x7b\x36\x0b\x27\xec\x8d\x03\xa7\x46\x54\x15\x36\x0b\x75\x7e\xbd\xcf\x4b\x8a\xbd\x58\xe1\xd4\xfd\xd0\x69\x78\x07\xf9\xc5\x69\x1e\x41\xcb\x35\x67\xd0\x1f\x94\x2b\x8d\x20\xc5\xcd\x55\x7d\x3a\xaf\xac\xe5\x51\x98\xae\x62\xb6\xb6\x2d\xf4\x10\xe5\x62\xc7\x84\x1e\x0a\xd6\x85\x50\xc1\x36\x13\x8a\x76\xf6\xec\x7d\xb9\xe6\xbd\x75\x18\xda\x19\x22\xc6\x18\xb2\xcb\x2c\x83\xfe\x80\x8a\x64\x42\x3f\x48\x38\xd5\x07\x44\xe8\xa9\xc3\xba\xdd\x41\x7f\x30\xfd\xe0\xcc\x0d\x03\x89\x92\xea\x4d\xae\xba\x50\xea\x78\x5b\x67\xf0\xc4\x22\x03\xd8\x45\x8b\xae\x8c\x37\x7b\x54\x18\xe3\x29\x5d\x4c\x58\x33\x0a\x13\x45\x1d\xbe\x01\xd9\xe7\x5a\xd4\x2a\xfc\xbc\x74\x76\x61\xdb\xa8\x63\x6d\x23\x1b\x81\x25\xc9\x70\x9e\x65\xe8\x5c\x3e\x8f\xe0\x16\xe0\xa5\xd3\x62\x0f\x2e\xf5\x9a\xbf\x81\xf3\xf3\x8d\xcb\x00\xe5\xa3\xa7\xb8\x1a\x01\x5d\xdf\x4d\xa0\x1f\xe6\xf4\x61\x97\x21\x34\x4d\xe6\x32\x0c\x05\x75\x98\x6d\x18\xad\x95\xc1\x49\xeb\xc0\xd6\x63\x8b\xa0\x33\xca\x3f\x02\xc6\x01\x5b\xe7\xa4\xe1\x7a\x44\x86\x77\xd3\x09\xd3\x43\xa7\x0d\x84\x40\x64\x73\x7d\xfb\x22\x66\x08\xd1\x40\xc0\x29\x46\x27\x9c\x13\x1a\x6c\xc5\x35\xeb\x0e\xa9\x3c\xb9\x17\x05\xc0\xdf\x52\x97\x0b\x42\xf5\x5c\xdc\xb5\xb3\xac\xeb\x64\x59\x41\x01\x0a\xc4\xee\x2f\x4e\x96\x75\xdf\x3a\x59\x76\xea\x90\x2c\xab\xc1\xdf\x3d\x2e\xec\x93\x64\xe3\x34\x65\x81\x10\x51\x05\x66\xea\x47\x35\x8d\xd0\xd1\x52\x26\x62\x82\xf1\x4e\x04\xe6\xc2\x89\xb2\x58\xd7\x66\xdc\xb1\x56\xc1\x16\x83\x96\x5b\x8d\xaf\xc5\x11\x2e\xaf\x7e\x85\x13\x90\xf5\xf1\xd1\xdb\x97\x07\x87\x47\x67\xdf\x1e\x1d\xbd\x3d\x39\xdb\x19\x5a\x6f\x1d\x7a\x7c\xf4\xfc\xe8\xfd\xdb\x33\xfd\xe9\xe4\xdd\x93\x93\xd3\x17\xa7\xef\x4e\x8f\x4e\xce\xde\xbd\x7e\x7a\xf4\xec\xc5\xeb\xa3\xa7\x67\x87\x07\x6f\x4f\xdf\x1d\x1f\x59\xa7\x4e\x2e\x44\x8a\x54\xac\x55\x2e\x4b\x85\xf4\xc3\x13\xdc\x94\xdd\x68\x22\x16\x63\x9e\xe0\xa6\xb4\x47\x43\xba\xcb\x18\x6f\x0f\x91\xe9\x6a\xa5\x6c\x65\x2e\x9f\xb7\x5d\xef\xd4\x32\x91\x9c\xe4\x91\x61\x7c\xd8\x68\x47\xa0\x1b\xc5\x97\xf6\x12\x51\x60\xc9\x2f\xaa\x2c\xf9\x75\x93\xf4\x4b\xcc\x9b\x38\x98\xbc\x90\x42\xb8\x5e\xb4\x47\x24\xa7\x3b\xce\x86\x9a\x34\xd8\x3a\xcb\xf9\xdb\xae\xb5\x5b\x0d\x77\x28\x21\xe6\xa4\x5d\x21\x66\xf3\xd0\x5e\x76\xa7\x23\x6a\xef\x48\x2f\xf4\x1d\x09\x21\x5f\x74\xe2\x50\xa4\x08\xbe\x1f\x82\x02\x60\x72\x69\x07\x1d\x5b\x6b\x37\x74\xc2\x08\xa2\xba\x96\x92\x79\x04\x0a\xb8\x6a\x99\x17\x02\x31\x4e\x5a\x3c\x99\xca\xef\x5f\x40\x8b\xe0\x15\x78\xd1\x09\xc5\x2e\x17\x2c\xfe\x12\xef\xdc\xe7\x9d\x88\x3b\xdc\xbb\xe2\x51\x59\xf5\x81\x53\x76\x2d\x1f\xbf\x74\x30\x5a\xca\x40\x3d\xa3\x26\x7d\x17\x06\x85\x9b\x07\x44\x4b\xb5\x02\xc9\x0b\x44\x41\x1c\x6a\xe1\xe7\xd3\x64\xbe\x71\x0d\x1b\x4d\xa2\x82\xf8\x89\x55\x91\x1a\x39\x11\x0c\x47\xad\x7c\x81\xd8\x6c\x34\x65\xf0\x88\x05\x10\xeb\x50\xda\x3b\x7b\x2e\x8e\xa4\xe7\x8b\xc2\xea\x4d\x3a\x39\x91\x3c\xf0\x50\x06\x8a\xd3\x2b\xa9\x2e\xd2\x0d\x95\x7c\xa7\x4b\xed\x38\x38\xa4\x9e\x56\x35\x09\xf5\x96\x6f\x1c\x56\x25\xc5\x42\x8d\xc8\xa1\xe0\xe3\x26\x65\xc3\xb1\xba\xb1\xc1\x0e\x53\x55\x10\x65\x43\x58\xc8\xeb\xce\x74\x38\x27\xe3\x78\x9a\xce\x99\x4f\x61\x89\x11\xbb\xcb\x6a\xc5\xaf\x1d\xec\xd1\x34\xa9\xa6\x11\x6a\x13\x22\xe4\x6e\x7d\xf5\x20\x84\xc3\x74\x22\x5a\xb3\xe2\x7c\xae\x17\xde\x77\x4e\xf3\x26\xe6\xa9\xd3\xe2\x1e\xfb\x99\xc3\xbe\xb7\x25\x5e\xe2\xa2\x13\xaf\x9c\x8e\x17\x74\x56\x8a\xbe\x7f\x75\x58\x38\x7d\xe5\xcc\xe9\x13\x87\xfd\xea\x18\xc6\xaf\x95\x8d\xba\xc0\xd8\x13\x07\x4e\xb0\x9e\x38\xd3\x77\xce\xbc\xcb\xd8\x33\x07\xa2\x8f\x7d\xc0\x4f\x1c\xfa\xce\xa1\xcf\x9c\x8a\xa5\xa0\xcc\xc4\x9e\x39\xb9\x2c\xf1\xd4\x99\x67\x19\xe4\x7c\xea\xd0\x57\x0e\xa1\xab\x40\x34\x55\x58\x8e\x3e\x07\x48\xbe\xb7\x89\xcc\xfe\x1c\x1a\xf8\xde\x16\x0f\x65\x23\xcf\x1d\xaa\x92\x6a\x0d\x3d\x77\xe6\x2a\x6b\x9e\xc3\xe6\xfa\xb7\x0d\x94\x7c\xbf\x65\xfd\x16\x54\xf7\xee\xf8\x25\x46\xe7\x13\x9b\x8d\x8c\x73\xb6\x6b\x38\xec\xae\x0a\x00\x64\x0d\x06\x36\x92\x47\xe4\x71\x25\x7e\x1c\x0d\x6a\x87\x0d\x3a\x28\x38\x43\xce\x97\xbb\xc3\x05\xa2\xad\x11\x45\x94\xd3\x17\xf0\xcd\x89\xd1\x39\x22\x34\x30\x59\x64\x26\x62\x51\xed\x72\x50\x03\xcb\xb2\xa2\xd5\x01\x54\x05\x20\x09\x70\xe0\xb6\xfd\x32\xe2\x6e\x96\x21\x78\x83\xf0\x21\x18\x39\x48\xac\x54\x36\x03\xf5\x63\x3d\x5f\x64\x8f\x6a\x01\xef\x90\xa8\x09\x11\x92\x65\x5d\x3e\xfd\x4d\x8c\x84\x12\x26\x74\xef\x21\xdc\x91\x68\xf8\x2f\xe7\x88\x54\x23\x31\x9f\x57\xb2\xd5\xaa\x6c\x6d\xc6\x66\xe7\x62\xf7\x0a\xb0\xd9\x00\xdb\x4d\xd0\xeb\xf1\x91\xfd\xf1\xdc\xd9\x68\xcf\x1a\x0c\xfe\xf5\x3f\xfd\xe7\xff\xf3\x5f\xff\xe3\xbf\xfe\x27\x44\xc0\xf7\x6a\x96\xa1\x2f\xbe\x7c\x3a\xfc\xf2\xc9\xa8\x2d\xb3\xfd\xc5\x7f\xfe\x3f\x44\x46\x3b\x06\x61\x68\xe4\x00\x26\x02\xd1\x48\x5b\xf6\x1b\xa4\x94\x3a\x64\xdd\xe0\x7f\xac\x08\x30\x24\xf5\x77\xe8\xfb\x22\x41\xaa\x58\x17\x0a\xee\x3f\x38\xac\xfb\xb5\x93\x65\x75\x92\xf1\x5c\x6c\x1b\xc6\xa8\xcb\xd8\xd7\x0e\x5e\x9f\x5b\xa3\x9c\x7e\xed\xe0\xf7\x0e\x5e\xe7\x54\x88\x8a\xeb\xba\xfb\x8a\x86\xdf\x87\xf7\x4a\xe0\x47\xe7\x48\x8b\xd1\x77\x6b\x0e\x2f\x84\x30\x2d\x16\xf6\x73\x6b\x37\x27\xa4\x7f\x5e\x3a\x99\x93\xb4\xba\xce\x29\x07\xb1\x49\xd9\xca\xe2\xf2\xc4\x66\x1a\xcc\xd9\x43\x0a\x27\x3f\xdc\xbd\xb8\xf4\x7e\xf9\xe0\x2f\x83\x70\xf5\x6b\x14\x27\xc5\x09\x1e\xda\xa2\x61\x02\x31\x55\x00\x3f\x0f\xbb\xd0\xb1\x9c\x26\x64\x1a\x00\x91\xb4\xd5\xd7\x65\x3b\x09\x96\xf9\x78\x61\x58\x02\xb2\xf7\x64\x9b\x9d\xbd\xd4\xe2\x88\x36\x0e\x64\x69\xc8\x46\xd4\x63\xd7\x49\xdf\xa5\x0e\x4b\xfb\xee\x38\xda\x0f\xc7\x05\x4f\x88\xa9\xcf\xaa\xae\x74\x43\xd3\x9c\x13\x70\xb5\xb6\x93\x60\xbf\x8c\x1c\x85\x7d\x42\x2c\x48\xa2\x2b\xe6\xea\xba\x17\x6c\x38\x5e\xed\x2f\xc6\x24\x66\xee\x74\x61\x9a\x73\x2a\x04\x30\xb5\xcc\xf9\x14\x62\xba\x06\xd3\x78\xce\xfc\x69\x5c\x35\xda\xb7\xbe\x76\xe8\x8f\x9f\xb8\x23\x50\x3d\x8a\xdb\x5c\xd8\x88\x41\x9e\x88\x1f\x4b\x5e\x45\xa5\x9b\xdd\xf6\x59\xda\x1e\x22\x81\xba\xe5\xe1\x94\x4f\x57\xec\x38\xc4\x0e\x81\x9e\x78\x2e\x76\x0d\x03\xfb\xcc\xe3\xd8\xa7\xe9\xfe\x6e\xa5\xf8\x6e\x51\x7c\xb7\x30\xef\x59\x65\x59\xcc\xa4\xa1\x98\x61\x7c\x08\xf1\x8a\x00\x5a\xe5\xe9\x4c\x8c\x39\x4b\x13\xac\x4f\x72\x09\x19\xf3\xfd\xc5\x78\x61\x9a\xc4\x66\xee\xc4\xc7\xce\x74\x31\xa7\x0b\x62\xc1\x5f\x3f\xc0\x01\x5d\x50\x5b\xdd\x84\x8a\x5a\x3c\x86\x43\xb6\x52\x4e\xe2\x08\x81\x0b\x65\x75\x36\x14\x8f\xbb\x72\x97\x0f\x3e\xb8\xb4\x77\x72\x5d\xf5\xcb\x10\x87\xd4\xa7\x53\xb5\x40\xd3\xc5\x5c\xc8\x74\x96\x7e\x2d\x9b\xd2\xa3\xa1\x20\x64\x0b\x1a\xe4\xf4\x5b\x87\x0d\xa6\x3f\xcf\x86\xbd\x59\x3a\x1c\x3e\x3c\x9a\x0f\xe8\x37\x22\xa5\x3f\x4b\xef\x0e\x87\xbb\xb3\xf4\xd9\xb3\xe1\x91\xf8\x7d\x30\x9a\x0f\x2e\xe8\x77\x0e\x43\x6f\xae\x78\xe4\xfa\xe1\xb5\xd5\x81\xe3\xa3\x4e\xc0\xf9\x22\xee\x5c\x7b\x0b\x1e\x75\x3c\x79\xc2\x0d\x26\x22\xda\x87\x24\xfd\xc9\x61\xaf\xec\xe4\xb2\xef\xfa\x61\x18\xd1\x24\xd6\x47\x99\x6e\x14\x2e\x0f\xd5\x59\x04\xe5\x71\xab\x9b\x1e\x73\x77\xd7\x7c\x78\xff\x2b\x9c\xec\xed\x3e\x20\x39\x0d\xe2\x2d\xea\x31\x52\x86\x48\x58\x30\xf9\xc9\xc1\xc9\xe0\xe1\x70\x48\xac\x64\x7f\x7f\x44\x13\x93\x41\x0a\x27\xe3\x64\xff\xde\xfd\xfb\xe3\xc8\x64\x77\x1f\x90\x44\xa6\xde\xbd\x5f\xa0\xe5\x27\x07\x47\xe6\xdd\x07\x5f\x25\x03\x9c\x98\x77\x1f\x09\x09\x29\x8a\xdb\x29\x56\x7a\x26\xc0\xc9\x6d\x9e\xac\x87\x70\xe3\xab\x0e\x70\x82\xbd\x68\x5c\x86\x00\xa8\x9c\xbf\x04\xa6\x09\x72\x53\xb8\xcf\xe0\x24\xc5\x30\xc2\x3d\x06\x87\x36\x86\x11\xec\x45\xda\xc0\x74\xb3\x0c\x1c\xc0\x30\x86\x1f\xdc\xbb\x3f\xda\x35\x3c\x32\x51\xa6\xac\xca\x44\x3c\x24\xf2\x4c\x46\xbe\x79\xea\x70\x06\x74\xe8\x20\x5b\x48\x68\xd0\xeb\x69\xb3\x57\x9d\x56\x9a\xfb\x82\x7f\x6c\x35\xb1\x3c\x36\xda\x7d\xa4\x5c\xc0\x3c\xdc\x05\x3c\x4b\x8f\x22\x45\xf7\xb8\x69\x12\x1c\xb0\x64\xca\xe7\x64\x6f\xb4\xfb\xa8\xf0\xca\x90\xc4\x42\xd4\x94\xa1\x67\x98\x3e\xd3\xa3\x29\x93\xc2\x52\x5c\xe4\x43\x3d\x44\xc6\xe9\x5e\x58\x88\x78\xbb\xa3\x7b\x0f\xef\x3d\xba\xfb\xe0\xde\xc3\x4f\xb5\xb7\xcf\x3c\x81\x2a\x1f\xe6\xb1\x32\x3d\x76\x59\x6a\x8e\x04\x5a\xfd\x9e\xb7\xff\x93\x83\x71\x59\x5d\xcf\x26\x03\x57\xcb\xf7\xc7\x76\x70\xa1\x04\xfc\xef\x1c\xa9\xcc\x6e\x9b\x4c\x94\x22\x5f\xb9\xd4\x63\x3e\x6d\x69\x58\xac\x58\x45\x67\x3d\xc3\x30\x4d\x7b\xbf\xac\xbf\xbd\x66\xcf\xc5\x01\x63\x5e\x49\x24\x2b\x66\xd3\x05\xbb\xfb\x60\x3c\x5e\x00\x39\x4a\x1b\x47\xb6\xd8\x63\xce\x64\x64\x2d\xf6\x99\x63\xee\x3e\x98\xec\x3e\xb0\x16\x3d\xd8\x3f\xad\xf6\x2e\x89\xbc\x56\x14\x19\x97\x6c\xd5\xbb\xa4\x57\xec\xee\x83\xde\xe5\xb8\x44\x35\x8f\xf1\xa5\xb9\xfc\xf2\x8a\x10\xc1\xb3\x7f\x72\xf0\x72\x70\x45\xf2\xda\xf7\x15\x81\xf3\x86\x20\xc6\x36\x75\x69\xca\x18\xb8\x29\x1b\x52\xd3\x4c\xf3\xdc\x34\x6d\x6a\x9a\x5e\x5e\x08\xfc\xc5\x32\x44\xc3\x96\x99\x20\xa3\x3e\x8c\xdb\xe3\x66\xf1\x8d\x2d\x54\x55\xb9\x6a\x33\x20\x44\xa1\xc2\xc5\x8b\x20\x18\x39\xf5\xe2\x9a\x9b\x5a\x5b\xbe\xaa\xa8\xfe\x88\x50\x27\x6e\x8a\xa4\x71\xac\x4f\x13\xd3\xb8\x71\x9a\xd8\x10\xac\x10\xa1\xfe\x27\xb2\x54\xb4\x49\xdc\x98\x49\xdf\x20\xab\x58\xf2\x7f\x7c\x8f\xd0\x45\x2b\xcb\x5a\xc5\xd3\xa4\x37\x9a\x67\x19\x56\x4f\x85\xda\x00\xc6\x13\xeb\xcb\xe9\x6c\xb6\x50\x0e\x43\xc8\x1a\x99\x89\x89\x72\x82\x28\xba\xf0\x90\xe8\xf1\x65\xbc\xc5\xd5\x70\x9b\x13\x91\xa4\x12\x5e\xa4\x6a\xdc\xdc\x36\x56\xa5\x8f\x13\x37\x06\x07\x27\x34\x60\xf7\x3e\xe1\xa4\x84\x57\x76\x04\xe0\xcf\x25\x18\x13\xce\x8a\x8b\x27\xbc\x88\xb1\x60\x22\xf4\xb2\xe2\x1e\x2b\xcf\xe9\x55\xcc\x06\xd3\xee\x1d\x4c\xfe\xc3\x3c\x93\xf6\xeb\x17\x31\x5b\xa3\x2e\xb2\xd0\x97\xbb\x23\x44\xd1\x1d\x78\x7a\x88\x28\xc2\xf0\xf4\x08\x51\x44\xe0\xe9\x31\xa2\xe8\x3f\x88\xa7\x87\x47\x88\xa2\x2f\x77\x87\xc8\x42\x26\xca\xe9\xc7\x56\x4c\x5f\x80\xc6\x2e\x3d\x6f\xfd\x28\x8d\x3a\x1a\xf8\x2a\x40\xbf\x8a\xe9\xc7\x98\xe4\xf4\x3a\xde\x74\x22\xcd\x0b\x59\x09\x84\x13\xc6\xb5\xb0\x67\x20\xa2\xfc\x90\x84\x45\x98\x42\x1c\xb0\x70\xea\x09\x19\x4a\x25\xc9\x38\xe9\xba\x08\x83\x3b\x4d\xe9\x3f\xe7\x03\xff\x68\x2d\x63\x1c\x15\x51\x0c\xd5\x79\x14\xa4\xc9\xa9\xc6\x90\x0c\xe2\x46\x0f\x1a\x74\x70\xe9\xc5\x5a\x41\x4d\xaf\xde\x43\x7a\x1d\xe3\xea\x07\xf0\x56\x74\xd2\xd2\xa1\x64\x6f\x73\x36\xa2\xd7\x61\xd2\xe1\x41\x98\x5e\x5c\x96\x01\x9c\xc4\x4c\xbf\x89\xd9\x8e\xdd\x74\x49\x17\xc7\xb5\x73\xf5\x6d\xf3\x84\xea\x99\x68\x85\x31\x4e\x63\x81\x70\x05\x1b\xa9\x6a\x4e\xa1\xb2\xc0\xe6\xe6\xd1\x8f\x2b\x4a\x54\xa0\x39\x15\xb0\xa4\xaf\x2b\x06\xa9\x08\x4b\xe7\x5d\xf2\x38\xa2\x10\x6a\x94\xef\x4f\x95\xce\xb4\x92\x14\xe3\x93\xa8\x2f\x50\x5f\x6a\x46\x41\x92\x56\x83\x12\xdf\xa8\x7a\x9d\x13\x0a\xde\x1f\xde\xc4\xd5\x03\x50\xed\xe8\xf2\x4d\x4c\x37\x99\xc8\x58\xdd\x14\x6c\x28\xbb\x6c\x2a\xea\xd7\x35\xf2\x95\x70\xe9\xcb\x0b\x4f\x57\x59\x83\xc5\x31\xf6\xb7\x60\x19\x15\x8a\x77\x2e\x4d\x57\x0b\x3b\xe1\xef\x8e\x5f\x56\xf7\x42\xb9\x4a\xae\x16\xb2\x0e\xe2\x5c\x2b\xe2\x77\x19\x4b\x89\xe7\xe2\x0b\x9c\x12\xd2\x7a\x26\x87\x13\xc1\xd3\x53\xa2\xc5\x5a\xf0\x12\x2d\x3d\xd9\x2b\x81\x14\x04\x51\xed\xd1\xad\x08\x93\x03\x4b\x22\xa8\xb6\xe0\x90\x85\x31\x3e\xc4\x0a\xa1\x44\x15\x23\x75\xd1\x35\xcb\xb0\xd3\x14\x67\xb3\xac\x5b\xa4\xc8\x73\xa7\x0d\x92\x3d\xba\x59\x41\xa4\xd0\x4e\xcc\x7f\x4d\x79\xe0\xf0\xce\xb5\x97\x5c\x76\x24\x7e\x3b\xbb\x88\x8c\xdd\xca\x54\x53\xe7\x32\x26\x42\x6a\x9e\x39\x45\x42\xae\x04\x1f\x10\x42\x3a\x5e\xd0\x49\xc9\x35\x4e\x69\x4c\x0c\xa3\x5a\x43\xac\x0a\xa6\xd3\x78\x0e\xa5\xa4\xb0\x7e\x1d\x63\x97\x6e\x2a\x30\x4d\xd0\x44\xd0\x56\xaa\xaf\xce\x86\x64\xa2\x15\x7d\x46\xc4\x4a\xad\xd4\x84\x95\xf4\x28\x66\x6f\xe2\xca\x11\xd0\x9b\x10\x1f\xc5\x74\x2d\xa3\x61\x34\x1c\x5b\x9c\xc4\x78\x63\x9b\xb3\xab\x0d\x96\x53\x35\x51\xc6\x41\xc1\x19\x4a\xd0\x93\xb2\xdb\xb2\xc3\x34\xe8\x17\x44\x83\x49\x4e\xe5\xa1\x49\xed\x00\xb9\xad\xb5\x51\x69\xe2\xc7\x8b\x16\xe1\x32\x4c\x33\x9d\x88\x41\x5b\x0d\x47\x5d\x24\x98\x86\xa0\xb1\xcf\x18\x8b\x26\x92\x1d\x3a\x1c\x87\x74\x44\xac\xd0\x34\xc7\xbc\x0e\x4d\x6d\x57\xff\x67\x40\x29\xc0\x08\x24\x18\x0d\x37\x6a\x91\x54\xa7\xe2\xd3\x48\x03\x53\xba\xe0\x11\x69\x75\x16\x02\x97\x1b\x17\x3c\x39\x68\x78\x54\xfc\x2b\xa0\x29\x5c\x98\x15\x20\x85\xa6\x49\x78\x89\x9c\xa0\x90\x81\x21\x51\xce\x9a\xf2\x68\x9a\x5e\xda\xf1\xdf\x05\x33\x0a\x2d\xa6\xd9\x44\x4c\x77\xa8\xd5\x53\x47\x39\x8d\x6b\xe3\xb2\x8d\x24\x2b\xed\x8b\xcd\x51\x41\x26\x21\x8b\x0a\x28\x3c\xd6\x1d\x51\x5b\x82\xe2\x30\x98\x95\xd2\x66\xb4\x58\x4a\x63\x29\xd4\x87\xd3\x78\x4e\x14\x4c\xb6\x61\x60\x6f\x12\x6a\xea\x89\x7b\x3d\x41\x3f\x18\x42\x81\x68\x3e\xef\x10\x32\xf6\xb2\x2c\xac\xce\x7c\x3d\xe1\x73\x42\xa3\x3a\xa1\x81\xed\xf0\xe6\x3d\x2f\xbd\x05\xee\x50\x4d\x62\xd9\xc9\xb0\x5c\x7e\x03\x36\x1c\x07\x7b\xc5\x25\xbd\xd8\x96\xad\xe5\x26\xd4\x9b\x06\xda\xeb\x62\x00\x7b\x06\xb1\xc3\x9b\x72\x40\xf5\x3e\x18\x2b\x91\x75\xd1\x2b\x4e\x87\x34\x21\x52\x69\x30\xe7\x92\x24\x54\x6f\x12\x21\xbd\xd7\xe0\x57\x87\x4d\xed\x0e\x06\x69\xb0\x39\xfa\x11\xf3\x38\xfe\xdc\x60\x92\xf4\x2e\xd9\x98\xc8\x11\xc6\x9c\x05\xf2\x98\x48\x9d\x28\x70\x58\x33\xe5\xfd\x92\x54\x10\x6f\xd7\xdf\xbf\x51\x52\x83\x52\x1a\xce\xa9\xd2\x2f\xff\x44\x6e\xad\x57\x9c\x97\x0b\xde\xed\x05\x4a\x2d\xf4\xbc\x71\x5c\x98\xc3\x25\xdb\x51\x4c\x9d\x98\x1e\xc5\xa5\x30\x22\x13\x2b\x31\x17\xdb\x22\x17\x24\xb4\x75\x36\x6d\x3a\x6b\x24\x09\x93\x53\x49\xfb\x44\x3c\x8f\xb1\x1c\x65\x70\x88\x02\x6f\x6a\x39\x2c\xc5\x15\x29\xf0\x19\x08\x7c\xfa\x36\x81\x8e\x38\x6e\x95\x36\x1a\x6e\x77\xb5\x2f\xdf\xef\x9d\x9c\xae\x1b\x99\xad\x37\x62\xe5\xff\xde\x69\x8d\xf5\xe4\xc5\xad\xc9\x76\x9c\x65\xff\x76\xdf\xc1\x95\x03\x3d\x56\xb9\x9a\xda\x24\x3d\xc3\xc0\x17\x98\xd7\xc2\xae\x4b\x1b\x79\x69\x27\xb8\xd9\x6f\xc6\xd8\x41\x28\x5d\x87\x81\x86\xb8\x8a\x2c\x0b\x5e\x9b\xed\xb8\x0c\x35\x2b\x2f\xbc\xec\x18\x0e\xb4\x31\x72\xc2\x20\xe1\x41\xd2\x93\x06\x3c\x59\x16\x89\x8d\x61\x23\x99\x22\x7b\x25\xe6\x21\xc4\x61\x1a\xdc\xf4\xae\xaf\xaf\x7b\x6e\x18\x2d\x7b\x69\xe4\xcb\x2d\xc4\x62\xac\xac\xb3\xd9\xbb\xd3\x67\xbd\x47\x70\x77\xf1\x3c\xc1\x9c\xae\x05\xb0\x96\x8f\x87\xb4\xbc\x55\xa3\x0a\x12\x48\x06\x27\xb0\x84\xaa\xc9\xcc\x09\xa1\x5e\x5c\xd5\x58\x08\x8b\xe0\xad\x67\x31\x3d\x8c\x59\xcb\x10\x8a\xe5\xe8\x04\x5c\x94\xa7\x71\x4e\x7f\x89\xe1\x96\x16\x8e\x81\xe8\xdb\x98\x85\xfd\x77\xc7\x2f\xe9\x87\x98\x1d\xc6\xfd\x46\x59\x7a\x0a\xa9\xba\x38\x3d\x2e\x36\xc6\x2f\x5b\x76\xbd\x88\xd0\x17\x71\xf5\x90\xee\xb5\x7a\x5b\x85\xd7\x74\x47\xec\xe7\x0e\x7a\x3f\xd9\xbd\xdf\xe6\x03\xfa\x4e\xbc\xcd\x16\x66\xaf\x5f\x24\x3d\x15\x9b\xe3\xc5\x80\x3e\x8b\xd9\xe0\x67\x3c\xbc\xc9\x86\xef\xc9\x80\xbe\x12\x6f\xd3\x61\xef\xe1\xdc\xdc\x19\xd0\x5f\xc5\xdb\x6c\x21\x1e\x9f\xc0\x87\xd9\xe2\xa0\xf7\x4c\x6c\x84\x45\xd2\x73\xa8\x34\x1d\x0e\x87\x43\xf8\x7d\x0c\xbf\x07\xf0\xfb\xb4\xf3\xc5\x97\x03\x6b\xf2\x97\xe9\x6c\x36\x9f\x0f\xe8\x6f\xb7\x67\xad\xe4\xfc\x5e\xb6\x03\x59\xe1\x74\x73\xf4\xac\x33\x37\xb3\x8d\x94\x9d\xc1\x05\xfd\xba\xa8\xb5\x56\xdf\x7c\x70\x41\xdf\x37\x77\x54\xc5\xce\x10\x8e\x3e\xa6\x88\x31\x5e\xca\x7c\x32\x8e\xf8\x1c\x75\xcb\x44\xcd\x27\x7a\x23\xed\x71\x09\xbd\x08\xae\x6c\xdf\x5b\x74\x2e\xc3\x38\x41\x70\x6f\x8a\x03\xf6\xa3\xa0\x64\x25\x30\x52\x91\x79\x4b\xf6\x04\xee\x5e\x58\x50\x28\xb2\x47\x29\x38\x30\x14\x2b\xfa\x6d\xe7\x95\x0d\xeb\xff\x62\x2f\xfc\x8d\x43\x51\x1f\x11\xbd\x65\xed\x23\x52\x39\x73\x0b\xab\x47\x5f\x62\x75\xe6\x73\xaa\x04\x96\x6f\x1d\x19\x55\x27\x20\x13\xb8\x92\x42\x66\x14\xe3\x80\x58\x65\xc0\x59\xbd\xad\xed\x23\x02\x8e\x58\x9f\xc7\xb2\x04\xdf\x8e\x08\xe5\x1c\x02\x07\xec\x87\x58\xe4\xfb\x0c\x14\x88\x8e\xff\xf6\x89\x9a\xe5\x7e\x06\xc4\xa0\x1f\x1d\x01\x8a\x5c\xe6\xa2\xaa\x54\x16\x98\x8c\xa7\xa0\x19\x48\xbf\x89\x49\xd9\x46\x4e\x7f\xd8\x72\x0e\x5c\x6e\xf8\x58\x52\x45\x9f\xd8\xc8\x15\xc7\x01\x08\x31\x16\x4f\x0b\xbd\xc4\xd1\xdc\x30\x62\xe5\x04\x17\x73\xa6\xd3\xc9\xfe\xbd\xd2\xad\xab\x84\xb6\x5c\x68\x40\x8e\x05\xc2\x42\x10\x41\x20\x06\x07\x94\x45\x76\xcf\xc5\x1e\x1b\x0d\x69\x58\xe1\xb0\x68\x88\xb4\x63\x09\xa0\x4b\x21\x49\xb1\x67\x0a\x4b\x21\x99\x8c\x1e\x58\x8f\x68\x58\x08\x37\x8f\x18\xf3\x26\x23\x6b\x97\x10\x79\x93\x1e\x12\x5b\x0c\xbf\x76\x3d\x89\x47\x43\x91\xe1\xd7\xd8\x82\x8c\xaf\x62\xeb\x49\x4c\x74\x5d\x25\x20\x36\x2b\x4c\x11\x42\xea\x91\x3c\xd0\x01\x04\xc0\xf6\xa1\xda\x19\xcf\xc5\x36\x0b\xa6\x91\xe8\x22\xe3\xbd\x91\xbc\x07\xdc\x67\xaf\x63\xbc\x7b\xff\x01\xbd\xdf\x2b\x06\x52\x8a\xe5\x9a\xd4\xed\xfd\xdd\xfb\xf7\xab\x5f\x00\x57\x0e\x0b\x14\x46\x65\x1b\x41\x55\xfe\x77\x4c\x68\xe8\x2b\x55\xf5\xdd\x5e\x54\x46\x91\xcf\xe9\x8f\x9f\x1e\xda\xe9\x90\xd6\xfe\x9f\x2b\xbd\x63\xb0\xe7\x76\xd9\x90\xae\xda\x6c\x34\x35\xea\x5d\x02\x86\x18\xc8\x02\x7b\x19\xc5\x1f\x2c\xb1\xe6\xea\x1c\x05\x5b\x18\xbb\x26\xdb\xa5\x3e\x33\x95\xb1\xc8\x78\x85\x89\xdc\x5c\x3f\x12\x5b\x77\x95\x49\x97\x87\xca\xe4\x44\x95\x92\xe8\x3d\xc3\x78\xa2\x06\x58\x7c\x1b\x13\xce\x46\x0f\xbe\xe2\xa5\xa3\x5d\x81\xa0\xd1\x03\x42\x5d\xd3\xa4\x81\x69\x42\x4d\xfd\x0a\x58\xc3\x72\x17\x00\x57\x63\x3d\x16\xd0\x74\xff\x41\x01\x9d\x1a\xc3\x02\xaa\x50\xa2\x20\xda\x1f\xaa\x00\x5f\xba\x36\xc3\x88\xf6\xee\x55\x7a\x65\x82\xfb\xd0\xa7\x15\xe0\xaa\x75\x8e\x9f\xd6\xa0\x06\x1f\xa8\xac\x0e\x74\x61\xc2\xcd\x42\x12\x32\xaf\x20\xcc\xa1\x48\x50\x55\x85\x6c\x34\xfc\x2a\x34\xbd\x1c\xae\x53\x4a\x32\x81\xf6\x41\x4b\x64\xf7\xfe\x83\xaf\xc4\x83\x19\xd2\xdd\x2e\x33\xcd\xc8\x30\xee\x75\x59\x94\x65\xa9\x84\x50\xbc\xe8\x42\x52\x1c\x6f\x0e\x9c\xc0\x5c\x57\xbc\xc8\x5c\x05\x59\x96\x49\xe3\x78\x9a\x9a\xe6\x9c\xf1\x82\x35\x29\x45\x16\xbf\x02\x8e\x1a\xe3\xbc\xfa\x55\x5a\x07\xa5\x3d\x9f\xa6\xec\xe1\x78\xd8\x65\xa9\x61\xd8\xfb\xc3\x31\x71\x98\x80\x99\xc6\xd3\xb4\xd7\x9b\xb3\x78\xea\x9b\x76\x6f\x24\xde\x7d\xb3\xd7\xb3\xe7\xca\x69\x9e\x80\xe2\x51\xb7\xa4\x92\xd2\x68\xf2\xdb\xad\x14\x0e\x04\xd0\x74\x31\x98\x68\xa2\x92\xb7\x58\x82\xae\x60\x6b\xc3\xfb\x69\x20\x0f\x2e\x93\x2f\x77\xef\x3f\x20\x34\x61\x2f\x62\x9c\x0c\xc4\x73\x19\x1c\xa1\xe4\xf7\x2d\xa1\x93\xcb\xba\x81\x11\xb7\x5f\x9e\x01\x49\x05\x6c\xa4\xf4\x9d\x04\xa3\x56\x87\xae\x8f\xc6\x9e\x69\x12\xe9\x1d\xde\x9b\x4f\x70\xb8\x1f\xc8\x40\x3c\x34\x60\x21\xa9\xe4\x27\x96\x5e\x46\xc0\x1f\x2e\xf3\x08\x35\xcd\xb0\xf4\xc5\x5f\x2f\x07\x97\x5d\xaa\xab\x8f\xa0\xab\xa1\x61\x80\x87\x30\xb8\xaf\xc7\x21\xb8\x4f\xeb\x8e\x44\x0b\x8c\x05\x13\xcc\x4d\x16\x4c\x90\x25\xfe\xb7\x10\x0d\x59\x57\x34\xc8\x4d\xc8\x5f\xf3\xa0\x4f\x83\xbd\x87\xca\x90\xc5\x42\x65\x18\x97\xd2\x4b\x69\x71\x68\x4f\xbf\x89\xd9\x3a\xa7\xdf\xc5\xec\x07\xd0\x01\xf8\x26\xa6\x6b\xd4\x41\xd6\x88\xde\x41\x77\xac\x11\x45\x7b\xe2\x19\xed\xc3\xef\xbf\x20\x6b\x94\x13\xfa\x93\xce\xfc\x9d\xc8\xfc\x05\x7c\x9a\xc0\xef\x1a\x7e\x73\x99\x2d\x49\x55\xb6\x9f\x44\xb6\x01\x7c\xb2\xe0\x77\x0c\xbf\x0c\x7e\xff\x02\xbf\x53\xf8\x9d\xcd\xe0\xcf\x1c\x7e\x7f\x86\xdf\x4c\xd6\xc5\xd3\x56\x35\xbf\x5f\x62\x9c\xd0\x61\xb9\xb7\xd9\xbf\xbb\x6b\x18\xc1\xde\x68\xf7\x21\x98\x2d\x71\x9a\x90\x49\x62\xb5\x1e\xc8\xe7\x34\x48\xd9\xda\x4d\x56\xd6\xee\x88\x42\x6c\x59\x18\x44\x50\x37\x79\x34\xa4\x52\x85\xe6\xde\xbd\xbb\xf4\x3a\x16\xef\xd7\x31\xbc\xe5\x34\x4a\xdb\xce\xfc\xaf\x71\x90\xd2\xa4\x1f\x3b\x97\x7c\xc9\x49\x4e\xc3\xb6\x5c\x08\x78\x6f\x45\x1d\x07\xde\x57\x76\x1c\x5f\x87\xd1\x22\xa7\x5e\x5b\xa1\x6e\xa2\x94\x69\x92\xbe\x63\x07\x41\x98\x3c\xe1\x07\x4f\xec\x58\x6c\xcb\x55\x50\x5c\x41\xe5\xaa\xe5\x9c\xda\xad\x88\x2a\x54\x90\x4b\x57\xee\x86\xb1\xa3\x98\x5f\x52\x91\x21\x0d\x43\xb2\x1d\x1c\xd4\x56\x89\x2c\xeb\x72\xc3\x40\x19\x12\x7c\x3a\xa7\x4e\xba\x35\xf2\x5f\x27\xa9\x88\x02\x76\x5a\xb8\x58\x07\x65\x06\xc3\xc0\x15\x08\xb2\x0c\x0d\x90\x34\xb5\x2c\xda\x02\xcb\x49\x41\x07\x0c\xa2\x7e\xca\x83\x4d\xf1\xf0\x05\x3c\x90\x9c\xc6\x2d\x6d\x33\xa9\xb6\x05\xa7\x83\x6a\xfd\xed\x06\x9b\xd8\x31\x8c\x11\x9c\x71\xd8\x29\xe6\xd3\x21\xe8\x2a\x64\x19\x97\xeb\x77\x4e\xd3\xd6\x21\xeb\x23\x19\xe7\x1f\x7d\xb9\x2b\x75\x8b\xeb\xa2\x6c\x4e\xfd\x54\xcc\x1f\x17\x7e\x57\xf0\xbb\x80\xdf\x4b\xf8\x5d\xc2\xef\x15\xfc\x5e\xc0\xef\x47\xf8\x3d\x87\xdf\x6b\xf8\x3d\x80\xdf\x13\xf8\xbd\x81\xdf\x37\xf0\x7b\x04\xbf\x67\xf0\x7b\x08\xbf\xbf\xc0\xef\x5b\xf8\xfd\x00\xbf\xa7\xe9\x36\x5d\xf1\xca\x85\x40\x90\x65\x7e\x4a\x7d\x36\xa4\xae\xe0\x7f\xca\x85\x41\x77\x44\x2f\x59\x77\x24\x45\xbe\x2c\xc3\x1a\x4b\x22\x4b\x49\xa5\xf2\x4d\xd3\xa8\x7c\x93\xd2\xa9\x98\x2d\x09\x84\x84\x2e\x9e\xed\xe4\x52\x30\xef\xa4\x0f\xee\x6d\x74\xb2\x1b\xd9\x17\x62\xb7\xad\xdf\x9b\x64\x2c\x20\xa9\x5e\xee\x7d\x1f\x4b\xbb\xe2\x6a\xda\xd7\x90\x46\x43\x29\x43\x8f\xfd\x3d\x56\x5e\x84\x69\x33\x5a\x8f\x85\x53\x7f\x4e\x53\x65\x3f\xeb\xa7\x96\xf2\xbd\xda\xd5\x94\xee\xc9\xb5\x34\x68\x4a\xea\xb2\xe3\x68\x9c\xb2\x55\x3a\x16\x9b\x74\x2f\x48\x79\xee\x9a\xcc\xab\x8f\x36\x15\xd8\xae\x1a\xe1\xba\xd0\x86\x67\x18\xf8\x5d\xd1\x44\x96\x21\x13\x31\xe6\x65\x19\xea\xa9\xbf\x82\x88\x3c\x42\x36\x2b\x2c\xc4\x09\x90\xab\xbc\xdb\xa1\x83\xc1\x13\x20\x8a\xa1\x2c\xc1\x14\x45\xc4\x62\x23\xb6\x62\x5d\x06\x8c\xc8\x25\x25\xf1\xbb\x62\x11\x49\x21\x18\x67\xe1\xa0\x55\x0c\x1a\x69\x9b\x1f\x8a\xd9\x90\x8a\x2c\x56\x90\x85\x4b\x8b\x13\xec\xab\xd0\x5b\xc8\x06\x0d\x23\x48\xa7\x3a\xcb\x5c\xd7\x6d\x18\xb8\x42\x19\x84\x48\xd0\x9b\xcd\x4d\x52\x76\x93\x5a\xaa\x1a\xb0\xbc\x52\x2d\x55\x73\x2c\x54\x8e\x49\xca\x2e\x52\x0b\x18\x46\x38\xf5\xcd\xd1\x7c\x82\x53\x76\x99\x52\xdf\x34\x89\x85\xdb\x88\x6a\xa8\x28\x52\xe9\x79\x20\x31\x7a\xbf\xa4\x24\xaf\x0c\xdf\x4a\x92\x48\x94\x65\xd1\x46\x05\x86\x81\xbe\x80\x31\xd9\x32\x1a\xa0\xa5\xdc\x5a\x08\xd4\x2d\x0a\xb4\xe9\x5e\xe9\xf9\x11\x49\xa0\xd4\xc9\x6e\x31\x57\x22\xf9\xb7\x3a\x5d\x60\xae\xb5\xf5\x2b\x65\x1f\x14\x15\xe6\x29\xd3\x58\xd5\xed\x4c\x6e\x52\x6b\x59\x52\xb1\xec\xe8\x02\x3a\x8a\x06\xa2\x43\xc0\x76\xbb\x0a\x8b\x64\x9d\xb2\x4a\xee\x3c\x65\x1f\x01\xa7\x55\x22\xbf\xd4\x85\xa1\x63\x29\x3b\x2f\x1b\x3f\x6c\x36\xb4\x84\xbc\x9b\x9d\xf7\x18\x3b\x8b\x49\x85\xad\x44\xc5\x63\x95\xbd\x44\xc5\xa3\x66\x33\x11\xfc\xd1\x8c\x26\x82\x3f\x9f\x87\xca\x42\x38\x95\x90\xeb\x65\xc5\x33\x0c\x79\x6a\x91\xb2\xab\xb4\xcc\x33\x81\xde\xfd\x63\x00\x84\x69\xfc\x36\x2d\x27\xbf\x24\xb4\xf5\xdf\xbb\x75\x39\x1b\x60\xb7\x5a\x1b\xba\xfc\x1f\x3a\x2e\x0d\x12\x17\xc4\x5c\x9d\x93\x57\x6a\x4e\x4a\x96\x25\x49\xd6\x30\xc4\xd8\x69\x06\x29\xd3\xfe\x76\xe8\xaa\xe3\x42\xd0\xb7\xdc\x5d\x89\xb9\x50\x9d\x07\x17\x00\x19\xcc\x90\xda\x4c\x72\xb5\xf0\xe2\x9b\x23\x42\x8a\xf9\xd0\x98\x45\x1f\x2b\x53\xb0\xd2\x1f\x98\x4e\x45\xe3\x95\xfc\xe7\x32\xff\x5f\xe4\xac\x5b\x19\x06\x76\x19\xfa\xf2\xde\x10\x99\x2e\xa1\xe0\x7b\xc7\x16\x8b\xa1\x5b\xde\x80\x2d\xd9\x70\xbc\x2c\xa3\x30\x2d\x4d\x53\x8a\x02\x57\xcc\x9e\x2e\xe7\xc5\xee\xfd\x2a\xcb\x2e\xe5\x87\x0b\xc6\x53\x7c\x45\x93\x94\x8c\x2f\x27\x25\xde\x4c\x76\x61\x95\xb8\x35\xd9\x85\x44\xc7\x25\xeb\x0e\x73\xc1\xc8\x8b\xbd\x27\x4c\x6a\x25\xc5\x79\x4a\x58\xf3\x94\xac\xb6\x39\xdf\xc4\xd0\xad\xe4\xa1\x94\xdb\x64\xaa\x76\x9a\x5c\x86\x91\x97\x7c\x44\x63\xbf\x27\xbb\xa5\xba\x61\x8e\xa8\x5a\xf7\xae\xd5\xb0\x88\x55\xb4\x8a\xd8\xeb\x54\x3a\xc2\x38\x00\x84\x05\x86\xd1\x5c\x67\x04\x92\x8f\xd2\xda\x82\x29\x97\xdb\x2c\x5b\xa8\x3d\xff\x9f\xed\x87\x5a\xb4\x5a\xfb\x52\x1e\x28\xaa\x0c\xdb\x16\xe0\xca\x22\xeb\xb0\xf7\x62\x27\xe3\x16\x47\x4f\xa0\x7a\xa7\x3a\x7e\x96\x16\x2b\x6f\xd9\x09\x38\xfd\xf5\x26\x0b\xd6\x1d\x5a\x68\x2e\xe1\xc3\x0b\xd8\x2c\x0a\x04\x15\x67\x00\xb7\x83\x78\x6b\xbb\x27\x29\x0d\x18\x3b\xd0\x1b\xfb\x2a\x71\x9e\xc8\x49\xfa\xb4\x2e\x57\xfd\x29\x3c\x66\x59\xa0\x0e\x16\xbb\xcc\x25\xca\xf3\x7e\x71\xf6\xe2\xd2\xd1\x10\x4e\x33\x3f\xee\x3f\xb8\x7f\xff\xee\xfd\x66\x0f\x04\x02\xd1\x58\xcf\x63\x39\x1a\x70\x97\x5c\x91\x46\xa4\x69\xcd\x47\xa0\x9f\xbc\x22\x58\x8d\x05\x4a\x4b\x4c\xb6\xd5\x9c\x37\x89\xec\xa6\xbe\xae\x49\x12\xa3\x8d\x95\x85\xa4\xec\x4d\xc9\xd5\x85\x58\x21\xf3\x75\x8b\x75\x50\x90\xe2\x61\x9d\x14\xf5\xca\xd8\xe0\x4f\x7f\x66\x7d\xd3\x6b\xd7\xe7\x57\xb1\x6d\x05\x72\x52\xac\xcf\x65\xfd\xd2\x16\x80\xc0\xee\xe0\xd3\xb5\xc7\x30\x3f\x36\xd6\x96\x3f\xdd\xb3\xb6\x15\xa2\x4a\x7d\x6f\x2a\x02\x49\x89\x7c\x39\xcb\xa5\x64\x12\x95\x5c\x20\x2a\x85\xdb\x2d\xbd\x33\x0c\x6c\xa7\x58\x82\xa4\xb6\x85\x93\xaa\xe8\x58\x7c\x21\x56\xad\x33\x8d\x9e\x4a\xd8\x8e\xe4\x8e\xa0\x31\x13\x24\x88\xcd\x29\xa1\x42\x33\xc1\x86\xd4\x15\x02\xc9\x61\x45\x20\x81\x79\x0b\x3a\x74\xb2\x4d\x84\x68\x8d\x80\x8b\x19\xde\x3e\x87\x91\x1f\x3a\xb6\x0f\x13\x1d\xac\x8d\xc2\x58\x4a\xe5\xaa\x2e\x52\x56\x56\x70\x99\xbc\xb6\xf3\xa9\x52\xff\x19\x74\xaa\x64\x7f\x02\x52\xda\x5c\xca\x8a\xd2\xba\x0b\x01\xf4\x57\x7c\x52\x2f\x5f\x14\x4b\xb8\xd7\x65\x67\xb1\x61\x54\x2b\x22\x8d\x0a\x36\x69\x60\xac\xd2\xeb\x24\x5c\x01\xf3\xf0\x16\xdc\x17\x5c\x47\xe0\x1b\x37\xc6\x41\x32\xa2\x3e\xec\xf5\x71\x2c\xfe\xb9\xa4\xbe\x51\x23\xf2\x04\x00\x72\x88\xca\xfb\xea\x38\x20\x96\xe9\xfa\x6d\x82\x61\x0e\x34\x19\x43\xd1\x78\x63\x47\x42\xac\x54\x8c\xfc\xe4\x33\xb3\x5b\xb8\x75\xc7\x06\x79\xf4\xa1\x0e\x90\x52\x31\xd2\xf5\x21\x77\x4b\x51\x65\x48\x4c\x64\x21\x52\xdb\x22\xb9\x84\xd0\xd6\x8d\x1a\xdc\xe0\x48\xa4\x36\xf0\xa6\x62\x2d\x56\x20\x80\x1b\x20\x79\x50\xa2\x66\xcd\x98\xa8\x0c\x4a\xf9\x74\x2c\x2b\x99\xe0\xc6\x48\x12\x4b\xd6\x0a\x30\x37\xc7\x9e\x14\x6b\x3f\x4f\xb1\x47\x7f\x8a\x49\x75\xe0\x7f\x49\xad\x4f\x54\x3a\x69\xab\xd3\xd2\x64\x58\xc0\xaa\xaa\xff\x26\x26\xb5\xfa\xdf\xa6\x56\x41\xbf\x13\x5d\x08\xdd\xa9\x8c\xd5\x44\xb5\x6b\x32\xd0\x2f\xb6\xca\x57\xd9\x3c\xfa\x72\xf7\x2e\xb2\x8a\xca\xad\x36\x70\xaa\x2d\x7e\x48\x2b\xc0\xe9\x9c\x0a\xba\xef\x62\x42\x72\xdf\x34\xf3\x9c\x1e\xb7\x1c\x86\xc1\xb5\xab\xd6\x1c\x3d\x4e\xa9\xba\x65\x0f\x37\xf5\x42\xdb\x35\x71\x4a\xd3\x5a\x42\x1d\x76\x1c\xe3\xa8\xa2\x16\x8a\x72\x52\x0b\x52\x02\xfe\x1b\xc3\xaa\xcf\xad\xe3\x94\x70\xf6\x32\xc6\x21\x29\x78\x59\xc0\x4e\x53\x0c\xb6\x6e\xaa\xe6\x90\x6c\xda\x39\x07\xca\x56\xe1\x34\xc5\x0e\xf5\xe0\xd2\x85\xf2\xd6\x6c\xd2\xa6\xc3\xa9\x19\x71\x82\xb1\xd2\x87\x98\xa6\xec\x34\xc6\x31\x19\xa7\xfd\x4d\x8d\x54\xec\xc8\x41\x21\x34\x2d\x55\x9b\xaa\x17\x68\xea\xbb\xee\x7f\xac\x24\xb6\x9c\xda\x59\x86\x23\xb0\xd8\x64\x2f\x52\xe5\x12\x86\xd0\xa8\x1f\x46\xde\x85\x17\xb0\xd7\xd5\x34\xd0\xaf\x74\x42\x9f\xed\x54\x53\x8b\x9d\xca\xbb\x5a\x5e\xbd\x53\x79\x5a\x4d\x85\xf9\xfa\xac\x99\x02\xa5\x5f\xd5\x4a\x0b\xd9\xe7\xd7\x7a\x7d\xca\x76\xf5\x49\x35\x55\xe2\x89\x3d\xdf\x4c\x53\xb8\xfb\xad\xd6\x96\x1d\x5f\xb2\xef\x8b\x14\x92\xd3\x97\x29\x3b\x4e\x2b\x8e\x02\x5e\xa4\x9b\x2e\x3e\x5e\x56\x75\xa7\xd5\x9e\x3f\xa8\x1c\x76\x83\x49\x52\xb1\x1b\x0b\xd5\x8a\x44\x3d\x25\x0b\x53\x5b\x1f\xe1\x3a\x4c\x4d\x1d\xb8\xd9\xd6\x94\x4f\x53\xc6\x05\xc3\xaa\x2a\x4c\x0a\xea\x9b\xe0\xd4\x64\x68\x30\x40\x34\x94\x32\xa0\x78\x0f\x4c\x1c\x4d\x90\x85\xcc\x08\x62\x0b\xa3\xbf\x20\x42\x53\x93\x7d\x1b\x83\xed\x91\x2c\xe9\xc9\xac\x22\x97\x47\x88\xa5\x39\x1e\x57\xc9\x83\x81\x2c\xb3\x79\xfe\x32\xb1\xa7\xc3\xb9\xa5\x37\x59\x82\x73\x9b\x2a\x42\x03\x1a\x20\x62\x89\x55\x5a\xb6\xe0\xa8\xaa\x26\xc8\x74\x8a\x66\x63\x95\xf8\x05\x32\x63\x42\xd3\x9c\xbe\xfe\x13\xb8\x14\x88\x82\xa5\xfd\xdc\x0f\xcf\x05\xb0\xa4\x62\x44\xa1\xed\x65\x79\x21\xac\x28\xea\x6c\x46\x7b\x45\xe0\x83\x40\x4b\xbd\x4a\x3e\xe5\x9a\x8d\x09\x2c\x0f\x06\xc8\xfc\x36\x56\x0b\x07\x31\xf5\x45\x21\xdc\x3c\x99\x81\xc0\xa9\xa5\x2a\xa1\x3b\x69\xcb\x05\xb4\x86\x5f\xc1\x2e\xc6\x2d\xa7\xef\x6e\xcd\xa9\xc9\x24\xa7\x4f\x6f\xcd\x57\xde\x95\x3c\xfb\x14\xe2\x80\xbe\x0a\xb4\x55\xe8\x06\xb4\xf0\x11\xb2\xd4\x73\x30\xf9\x36\xc6\x9c\x58\xf0\x6b\x42\x17\x73\xfa\xea\x96\xda\xa1\xe6\x46\x85\xe0\x15\x49\xe0\x8c\xe4\xf4\xd7\xdb\xca\xb6\x00\x03\x65\xcb\x40\x86\xf4\xc9\xa7\x7a\x26\x06\xb8\xbc\x6d\xd9\x20\x50\x2e\x08\x94\x57\x09\x94\xd7\x08\x34\xa7\xcf\x6f\x83\x50\xee\x2d\x74\xf5\x13\x41\xbf\x09\x94\xfa\xed\xf6\xb1\xae\x30\x94\x9c\x7e\x7f\x5b\x0b\x7a\x52\x57\x1a\xf9\x42\x37\xf2\x75\xf3\xfa\x4a\xe6\x59\x5f\xf0\xc4\x4a\xa8\x8a\xd5\xd4\x08\xc8\x5f\x57\x61\x04\x9d\x07\xdb\x30\xde\x25\xf8\x65\x4a\xd7\x82\x69\x5b\x5f\xa7\xf8\x45\xba\x19\x3d\x9e\x97\x78\x0d\x2a\x8b\x5e\x04\xcb\x15\x95\x0b\xd2\xa6\x0b\x90\x88\x8c\x4f\x41\x5f\xaa\xd2\x63\xd2\xb6\xdc\x70\xb5\xdc\xe4\x84\x50\x39\x17\x05\x20\xaf\x53\x42\xf5\x1a\x21\xde\x77\x6e\x05\x6c\x0c\xa0\x54\x0c\xd8\x2c\x44\xfd\x14\xaa\xd4\x73\x46\x54\xf2\xee\x53\xbd\xfb\xd1\x29\xad\xe0\xa4\xbb\x0c\x2f\xc5\x9c\x90\x35\xaf\xde\xf4\x8c\xcb\x08\xd8\x1b\xca\x2c\xbc\x72\x22\xc4\x53\x88\x8f\x4e\x93\x94\xe4\x02\x14\x3d\x2d\x05\x28\x4f\xff\x0a\x50\x2a\xd7\x4c\xb7\x83\x52\x1e\x55\x35\x41\x11\x93\x53\x80\xf1\xec\x76\xb4\xf2\x96\xcb\xd4\x3a\xaa\xe9\xb5\x44\xb3\x5e\x7b\x45\xa5\xaf\xfe\xea\x4a\x0f\x64\xa5\x82\x0d\x88\x0a\x7f\xbd\xbd\x42\x40\x4c\x96\x49\xe5\xab\xa4\x12\x1a\x7b\xc2\xcb\xeb\x15\x0b\x9a\x48\xe8\x49\x4a\x64\xdd\x4a\x08\x10\xf5\x3f\xf9\xf3\x00\xab\x15\x84\x4d\xe7\x54\x56\x6c\x22\x44\xcf\x54\xdd\x92\xe6\x45\xcd\xcf\x6f\xaf\xb9\x0d\xe2\xf2\x52\xd0\x92\x1b\xb0\xa4\xa6\x24\x96\xb0\xa4\x30\x5a\x21\x94\x97\x72\xbc\xea\xdf\xdb\x94\x10\xfa\xe7\x67\x5e\x35\xb3\x00\xfc\xb7\x94\x50\x21\xe3\x88\xe7\xef\x3f\xd5\x89\x6e\xa3\x13\x18\xc4\xf9\xdb\xe1\xae\xca\xf5\x0a\xf4\x0f\x29\x21\x16\xaf\x5f\x84\xe6\x02\xa3\x94\x03\x97\x42\x49\xf8\xcd\xc9\x9b\xd7\xa8\x2d\x12\x84\x16\x38\xb5\x3b\xf5\x36\x35\x73\x59\x45\x9b\x46\xf9\xe7\x56\xf2\x56\x45\xcd\x7a\x9f\xb2\xb7\x71\xdf\x89\xb8\x9d\x70\xe9\x4b\xe3\xdd\xf1\x4b\xfa\x03\xa4\x46\xfc\x2a\xfc\x50\xa6\x8e\xdf\xa7\xe0\x5a\x5d\x6c\x31\x1a\x05\x50\x6b\x3c\xd3\xf7\xa9\x52\x41\x7e\x5b\x73\x99\x46\x08\xfd\xa1\xac\xa9\xd1\x48\x7b\x4d\x3f\x6c\xab\x29\x2f\xfc\xb5\xfe\x98\x56\xf5\x44\xaa\xb1\x5a\xa4\xe1\x70\x6b\xe8\x08\xe9\x88\x23\xd6\x96\xfd\xb7\xe5\x11\xd5\x70\xd0\xf1\x89\x54\xf4\xaf\x6a\x80\xe6\x02\xd2\x4f\x45\xa8\x00\x77\x56\xe5\x60\x80\xd6\xb6\xd4\x5d\x54\x3d\x0c\x4a\xc7\xca\x9d\xa0\xec\xde\xb7\x69\x5d\x77\x69\x34\xe6\x1b\x8e\x28\xa5\xcd\xb8\x44\x80\x94\xe1\xca\xed\x1e\xaf\x46\xe9\xe1\x73\x6b\x9d\x8f\xf9\x97\xbb\x93\x1f\x53\x85\x18\x1c\x10\xda\x1d\xb6\xb9\x18\x11\x38\x55\xba\x06\x10\x7e\x98\x14\xf1\xaa\xb7\x75\x32\x9e\xb4\x79\x65\xf1\x78\x8c\x13\xfa\xa9\xa2\x38\x20\xc4\xaa\x42\xb5\x05\xa4\x56\xbf\x2f\x00\xe5\xa7\x46\x20\x10\xbb\x4c\x41\x3a\x85\x4a\x54\x81\xe4\x6f\x52\xdc\x62\x5f\x49\xd6\x45\xa4\xbf\xd2\x7c\x01\x1c\xad\x3a\xd4\x61\x36\xb5\x59\x77\x44\xc6\xe0\x0a\xaf\xe3\xb7\x79\x14\x09\x26\x41\x5f\x86\xe2\x8c\xad\x60\xec\xf3\xa4\xe3\xc2\x45\xbb\x61\x24\xfd\x88\x07\x10\x25\x15\xfb\xea\x91\xe9\x34\xea\xf7\xe3\xc4\x4e\x3c\xe7\x18\x5e\x9f\x05\xa0\xf9\x5b\x4f\xa1\x7e\xff\xcc\x09\x97\x2b\xcf\xe7\x0b\xd6\x1d\xd2\x10\x2a\xd2\x10\xd8\x3e\xeb\x0e\x09\xa1\xb2\xfa\xb3\xd8\x09\x57\xfc\xc5\x82\x45\x84\x7a\x13\xec\xd6\x0e\x12\x04\x53\xcb\x32\x30\xf1\xdd\xb9\x0a\xc0\x51\x72\xe5\xa5\x1f\xc7\xd1\x61\x18\x24\xfc\x46\x67\x5a\xd9\x11\x0f\x12\x95\x49\xbe\xd4\x0b\xd6\xd2\x2a\xe5\x49\x96\xa1\x32\x22\x6a\x81\xa2\xb3\xb3\xef\xdf\x1d\x9d\x9d\x9c\x1c\x9f\x1d\xbe\x79\x7d\x7a\xf4\xfe\xf4\xec\x2c\xcb\x70\xc2\x5a\xd2\x09\x85\xf8\x84\x05\x7b\xa3\x31\x1c\x42\x03\x36\xcf\x22\x7e\xe1\xc5\x09\x8f\xf8\xa2\x50\xfd\x8a\xb7\x7e\xe8\xdb\x8b\x05\xf6\x48\x2e\xb0\x18\xc7\xd1\xb1\xca\xc2\x5c\x62\x71\xb8\x7e\xb3\x27\x35\x47\x3b\x95\x36\x53\xe5\xf5\xae\xbf\x13\x85\x61\xd2\xdf\x51\xc3\xdb\x8f\x2f\xed\x45\x78\x7d\x1c\x86\x09\x69\xf8\xcc\xab\x96\x76\xc0\xe7\x00\xa1\x2e\xf1\xdc\xda\x78\x91\xb5\x24\xa3\x84\x69\x72\x18\x17\x74\x51\xf7\xe8\x5a\x77\xc1\x17\x10\x0a\x61\xad\x49\x2e\x4f\x89\xcb\x5a\xce\xb9\x1b\x46\xfc\x10\xd8\xf5\xb8\xfe\xca\x92\xc9\xb4\x88\xa4\x9f\x50\x97\x58\x53\x77\x5e\xb2\x9e\x88\xe3\xf2\x30\x69\x9b\x31\x10\x8d\x2f\xed\xa5\xd5\xb5\xa5\x51\x90\x75\x9c\xe6\x7a\x26\x7c\x97\xb2\x35\x48\x25\xe8\xe0\xca\x4e\xec\x08\xdc\xda\xae\x62\x4b\x1e\x2d\xc9\x5f\xe5\x60\x55\xbb\xaf\x47\x0b\xef\x0a\x4c\x49\xbd\x05\x58\x76\xb7\x39\x69\xe9\x83\x5b\x3b\x3c\xc0\x0b\xef\x2a\x8b\x57\x76\x40\x06\x10\xdc\x3e\xe6\xd1\x6b\xd1\x5a\x7b\xc5\x48\xe6\xf0\x16\xdb\xbf\x5f\x7b\x8b\xe4\x52\x7d\xd6\x01\x09\x54\x88\x30\x19\x01\x5d\x66\xbd\xb7\x9b\xe7\x74\x61\x27\xf6\xa6\xa5\xd8\xda\x86\x8e\x9e\x80\xc3\x68\x0b\x21\xea\x87\xf6\x02\x22\x90\x0f\x73\x88\x2e\xbf\x4a\x13\xbe\xb0\xbe\x4d\xf1\xb7\x29\x5e\xe7\xf4\x75\x80\xa7\xe8\x82\x27\xa7\xe1\x07\x1e\xa0\x39\x21\x74\x0d\x46\x65\x62\x5d\x58\xb4\x18\xa2\x55\xe8\x4d\xee\x88\xfa\x32\xaf\xc4\x6f\x9c\x65\xa2\x1d\x42\xaf\x05\x82\xac\xb5\xea\x6f\x7d\x73\x05\x55\xc4\x3c\x79\x17\xf3\x08\x82\xe8\xd3\x65\x98\x06\x49\xbd\x39\x04\xfe\xca\x44\x4e\x59\xc7\xa4\x5e\xaa\xfc\x40\x2c\x78\x51\xdd\x64\xdd\x51\x4e\xa5\x87\xc4\xd8\x5a\xab\xec\x9b\x56\x5b\xd2\x79\xbf\x60\x7f\xb5\xb2\x43\x39\x9d\xaa\x28\x04\x7d\x18\xe9\x74\x00\x50\x62\x18\x12\xb2\x62\x89\xe3\xd7\x1d\xe5\xa0\x83\x46\x0c\x6f\xa2\x27\xe6\xd1\x15\x8f\xb2\xec\xda\x0b\x16\xe1\x75\xdf\x0f\xa5\xe9\x95\x3a\x27\x21\x26\x1a\x44\x7c\x19\x26\xbc\xbf\xba\x5c\x0d\x16\xf6\xd5\x40\xb6\x1e\x0f\x90\x59\xe9\xa5\x89\x06\xa3\xdd\x47\xfd\x55\x70\x81\xc6\x41\x5f\x1a\x4f\x63\x74\x20\x2f\xb0\x7f\x83\x1a\x11\x45\x4f\xb8\x1d\xf1\xa8\xa3\x4a\xea\x51\x15\x6b\xbb\x2e\xf1\xbe\x77\xcc\x7f\x4d\x79\x9c\xf0\x45\xef\x07\x2f\xb9\x44\x14\xbd\x7f\xf5\xf2\xeb\x24\x59\xa9\x74\x44\x28\x58\xba\xe1\x88\xae\xb5\x6d\x57\x90\x93\x7e\x72\xc9\x83\x46\x50\x39\x17\x27\xfd\xf0\x43\x61\x0d\xd1\x3f\xf7\xc3\x73\x0c\x62\xce\xbd\xe1\x3d\xb8\x70\x16\x0b\x45\x1a\x57\xa2\x44\x17\x11\xa2\x79\x61\xda\x0e\x59\x3a\x4e\xb8\xe0\x1d\x54\xf0\x01\x5d\x52\x2c\x91\x2d\x4d\xf3\xca\x70\x53\x5e\x1f\xaf\x64\xa2\x30\xfd\xee\xf8\x65\x53\xa4\xc4\x09\x1c\x45\x10\xd2\x97\xc7\x53\x8d\x4a\x9b\xe3\x5e\x6b\x46\x30\x94\xd0\xe7\x7d\x0e\x5d\xb8\x03\x3d\xe9\xa8\xef\x1d\x59\xb2\xe3\x2d\xed\x0b\xb0\xb2\xef\x88\x51\xeb\xa0\x3b\xba\x43\x5c\x0d\x23\xbd\x83\xac\xce\x1d\x88\x19\xc0\xe3\xd8\xbe\x00\x7f\xb8\xea\xe6\xa9\x41\xc5\xb9\xf4\xea\xfb\x53\xcb\x99\x86\x74\x87\xca\x92\xfe\x8e\xec\xdf\x91\xcf\xe1\xb8\x32\x60\x49\xff\x2c\xe6\xbe\xdb\x3f\x73\xb2\xac\xa2\x1b\xab\x68\x77\x12\xe0\xa4\x0f\x87\xa9\xeb\xc4\xbe\xb0\x90\xa3\x17\x21\x94\xd3\x69\xa2\x1b\x9f\x04\x18\x85\x4e\x2f\x5e\x79\x41\xc0\x23\x44\xc1\xc4\x18\xc9\x1e\xf6\x54\x1e\x44\xe3\xe4\xa3\xcf\x2d\x24\x19\x96\xa0\xb8\x3e\x3c\x9a\x68\x75\x33\xee\x5c\x72\xef\xe2\x32\x69\x26\x23\x6a\x27\x49\x24\xa6\xa5\xf7\x1b\xb7\x50\xbc\xb4\x7d\x1f\x51\x64\x47\x9e\xdd\xf3\xed\x73\xee\x23\x2b\xe9\xef\x80\xa1\xde\x4d\x82\xd1\x4b\xd5\x94\xd8\x61\x5b\x12\x26\x5b\x31\xf1\x0d\x90\xf8\xa2\xa8\x5c\x42\xa4\xda\xa5\x71\xe4\x58\x49\x6d\x60\x29\x12\x43\xd1\x13\xab\x02\x52\x0a\x27\x82\x67\xe7\x39\x99\xd3\x11\xb1\x92\xfe\x19\xc7\x24\x1f\xff\x94\xf6\xcf\xae\xbd\xe4\x52\x30\xe9\xd5\x0a\x04\x9b\x32\x2c\x43\xe2\xff\xbb\x16\xf3\xb9\xff\x77\x11\xf3\x13\xff\x9f\x51\xcc\xaf\x42\xf5\x0f\x10\xf3\xa5\x5c\x12\xf8\x85\x5c\xe2\x38\x62\xf1\x8b\x5f\x7a\x71\x72\x1c\x5e\x23\x5a\x4c\xca\xd8\x5a\xcb\x45\xd5\xfa\x26\xc5\x6b\x29\x7f\x59\x3f\xa5\xb4\x21\x7d\x5b\xd3\x79\xae\x1c\x9e\xd0\xef\x52\xfd\xd4\x1d\x6d\x3e\xd5\xfe\x90\x5c\x8b\x42\xb6\x84\x40\x49\x1d\xb2\x47\x15\xa9\x63\xb8\x5d\xd4\x70\xd2\x48\xc8\xd7\xc7\xa1\x32\x63\xa8\x0a\x18\xdc\xc7\xf2\x9f\x96\x31\xc4\x44\x43\x14\x15\xc7\xa8\xb0\x64\x09\x79\xe3\x65\x80\x0b\x2c\x20\x3a\x45\x10\x7e\x15\x51\x14\x73\x1f\x96\x88\xe2\x9b\x16\x4e\xbc\x58\x25\x9d\xa8\x1c\xdb\xc4\x94\x66\x0d\x45\x44\x0c\xb9\xca\xcb\x54\xb2\xdf\x03\xc7\x0f\x22\xab\xca\xf8\x52\x30\xa3\x0d\xaf\x09\x52\x1a\x29\xf9\x93\x6c\xbd\xf3\xe5\xba\xa3\x6a\xea\xe4\x95\xf0\x27\xd5\xbc\x2f\x82\x84\x47\xab\xd0\xb7\x13\x8e\x13\x5a\x20\xbc\x0a\x45\x7f\xe1\xc5\x2b\xdf\xfe\x08\xac\x08\x5c\x54\xe7\x84\x4a\xee\x5e\xeb\x9e\x5e\xd8\x85\x58\x13\x1f\x96\xf8\xc7\xa4\x14\x7b\xaa\xa8\xdf\x11\xa8\x8f\x2f\xc3\xeb\x57\x72\xbd\x01\x24\xbe\x68\x60\xfc\xf4\xcd\xf3\xe7\x2f\x8f\xce\x4e\x8e\x5e\x1e\x1d\x9e\xbe\x78\xf3\xfa\xec\xe0\xf0\xf0\xcd\xbb\xd7\xa7\x05\xc6\x9d\x4b\x3b\xb8\xe0\x30\xce\x5b\x44\x29\xed\x53\x30\xc0\xdf\x04\xfd\xa5\x1d\x7d\x28\x67\x50\x47\x63\xb0\x12\x0d\xed\x9b\xa0\x7f\x1d\xd9\xab\xca\x34\x0b\x94\xcb\xad\x31\x51\x7a\xf5\x41\x7f\x15\xf1\x2b\x16\x48\x7f\x3a\x52\xb9\x7e\xa8\xe3\x2c\xa6\xa1\x5a\x52\xfb\x89\x96\x70\x44\x36\x76\x97\xbe\xb1\xf1\x5a\xc7\xfa\xe5\xfd\x1a\xb5\x29\x51\x8c\x82\x19\xbb\x1e\x85\xb3\x34\xf5\x16\x16\x2f\xc6\xc1\x5b\x50\x41\x80\x67\xde\xc2\x4a\x72\xb1\x8f\x10\xed\xde\xb5\x76\x87\x10\x67\x05\x3c\x5d\xf1\x20\x21\x4a\x40\x99\x40\x94\x36\x31\x3d\xfa\x65\x34\xe7\xbe\xa8\xe0\xc5\x82\xf2\x7e\x65\x82\x30\x0e\xc9\x71\xdf\xf5\x82\x05\x6e\x3b\x5e\x12\x6d\x33\xc6\x42\xc1\xa6\x2d\xde\xaf\x0c\x1a\x5e\x27\x5e\xe2\x73\x8b\x57\xa8\xef\x99\x2d\xb6\xdb\x9d\x24\xec\xc8\xc1\xe9\x88\xda\xfb\x88\xd0\x05\x8f\x1d\x2b\x52\xf0\x9d\xf2\x9b\x84\xca\x47\x0b\x2d\x44\xbe\x08\xe9\x4e\xdd\xd7\x21\x2c\x17\x45\xf8\xca\xa0\x1f\x27\x60\x96\x92\x13\x08\xa7\x4a\x88\x72\x56\xd3\x24\xb7\xf6\xc9\x71\x2b\x15\x70\x5c\x58\x92\x6f\xa7\x02\xde\xa4\x02\x2e\xa9\x80\x6f\xa3\x82\xa4\x46\x05\x5c\x53\xc1\x51\x85\x0a\x92\xcf\xa6\x82\xa4\x42\x05\x95\xb1\xf7\x5c\xbc\x3b\x1c\x75\xc1\x3c\x89\xd7\x86\x5f\x08\x8d\xd0\xe2\xe3\xd2\x7e\x52\x90\x88\x20\x08\x1a\xb2\x08\x02\x0e\x55\xc5\x83\x90\x14\x56\x48\x61\x35\x6e\x41\x91\xad\xa8\xf1\x91\xd6\x29\xd3\x96\x86\xf6\x79\x94\xae\x20\xe6\x04\x5c\xa1\x2a\xe8\x1e\x89\xee\x55\xa8\x2c\xf9\x4c\x2a\x8b\x2a\xf4\x1a\x4f\x87\x73\x45\xb3\x39\x51\xf5\x3e\xde\x24\x0e\xae\x89\x03\x0c\x7d\x72\x42\xb9\xa6\x90\x5c\x45\xa0\x88\xfc\xbf\x5a\x56\x95\x72\x5e\x22\xc4\x95\x5e\x24\x96\xc3\x69\x35\xc5\xe1\x42\x62\x54\x49\xce\x25\x77\x3e\x9c\x87\x37\x88\xae\x95\xe8\xa7\xc3\x1d\x6c\x2c\x10\x14\xc4\x4b\x2b\xe9\x6f\xb2\x79\x8a\x2e\xbd\x05\xd7\xf2\xa7\xd8\x83\x87\x81\xa5\x18\x9e\xd5\x22\x73\x25\xfd\x6d\xdc\x12\x17\xe4\x43\x72\x25\x4d\xd2\xa4\x7f\x76\x85\xa5\xf7\xc1\xd6\x6e\x14\x02\xad\xea\x41\x5d\x36\x6d\x59\x1b\xb2\xac\x4c\x0e\x83\xb7\x11\x5f\x7a\x31\x8f\x4f\xec\xa5\xea\x93\xc8\xa3\x4f\x19\xaa\xe4\xac\x4e\x16\xee\xde\xff\x1c\xc8\xd6\x8b\x70\xf9\x56\x9d\x93\xf0\x9b\xe4\x50\xfa\x0f\x11\xa2\x71\x8c\x3f\xdd\x3c\x70\x8f\xbf\xbe\xfa\x5a\xa7\x51\x0f\xfd\x8d\xaa\x5d\xda\x9e\xff\xc9\xaa\x14\x85\x9d\xa7\x49\x22\xf6\xd5\x6b\x29\x72\x1d\xfa\x76\x1c\x5b\x48\xd5\x14\xf7\x64\x9c\x78\x49\x52\xbd\x24\xf2\x2e\x04\x77\xd5\xdb\x10\x6f\xf1\x89\x9c\x3d\xb1\x39\xaa\x0c\xd0\x95\xd8\x07\x09\x62\xb3\x50\x64\x5f\xa3\x3c\x07\x28\xe2\x95\xbd\x01\x40\xfa\xa1\xe7\xfa\xfc\xa6\xa3\xfe\xf6\x96\xde\x62\xe1\xf3\x4e\xa3\x35\xc5\x15\xe0\x4d\xee\xef\x44\x7f\x67\x41\x47\xfd\x27\x9a\x07\xcc\x54\xd8\xc7\xa4\xf6\x56\x1d\x82\xda\xce\x4c\x49\x3e\x50\x33\x21\x66\xb5\x52\x8d\x4d\xcf\x01\xc4\x29\x64\x48\x51\x97\xdf\xac\xec\x60\x71\xb6\x0c\x23\xae\xb7\x7d\x97\xde\x62\xc1\x03\x64\xa1\x24\x4a\x39\x52\xb4\x39\xdf\x1c\x9c\x45\x14\xae\x2a\xb3\x44\xbc\xf6\xbc\x05\xda\x86\x62\xf1\x7d\x11\x5e\x07\x4d\x1c\x27\xe1\xc5\x85\xd8\xb5\x7e\xf1\xa7\x46\x66\x19\x2e\xb8\x85\x1c\xdf\x73\x3e\x08\x01\xd6\x0f\x63\xde\x0b\x83\x9e\x4c\xb0\x10\xa2\xfa\x58\x7d\xbd\xe0\xbe\xfd\xf1\x6b\x6f\xc1\xad\x61\xae\x06\x30\xf5\x5b\x86\xcf\xf7\x62\xb1\xe7\x4e\xfa\x67\x3e\x56\x1c\x9b\xb6\x6d\xf0\x02\x8c\x7c\x4f\x6d\x77\xb9\x58\x94\xa0\x4a\xc9\xab\x6e\xa7\xca\x02\x03\x7a\xf8\x03\x8c\xc0\x7b\xb5\x98\x27\x5e\xc4\x9d\xc4\xbb\xe2\xb1\x35\x55\x43\x23\xba\xe8\x23\x1a\xd9\xd7\x30\xd8\xe8\xaa\xa7\x52\x8a\x08\x32\x25\x59\x50\x7e\xb3\x8a\x78\x1c\x03\xa9\x56\xd2\x51\x3e\xa7\x35\x90\x42\xa7\x17\xd9\x0b\x2f\xd4\xd3\x48\x8d\x9e\xd4\xea\x83\x2f\x28\xa7\xe5\xa4\x55\xde\xfb\x28\xf0\x75\x2e\xd8\xd7\xd9\xaf\xb8\xd1\x32\xa9\xb1\xe7\x69\x55\x7a\xac\xaf\x83\xbc\x12\xee\x23\xa8\x3b\xa9\x50\x92\x2c\x16\x08\x25\xf9\xbc\xe4\x05\x25\x19\x57\xe6\x47\x6d\x16\xd4\x68\x5d\x50\xfb\x9c\xc0\x26\x95\x0e\xc5\xd3\xdf\x86\xad\xa6\xde\x42\x9e\xfc\xfe\x2d\xb9\xde\xc5\x9f\xac\xb4\x49\xb0\xa2\xea\x9e\xc3\xc5\x3e\x46\xf2\x12\x5d\xb1\xfa\x7b\x54\x1c\x30\x55\x26\xbf\x3c\xa4\x91\x19\x20\xad\xa7\xce\xa1\x10\x6d\x27\x5d\x29\x54\xf5\xbc\x60\xe1\x39\x76\x12\x46\x65\xfe\x1a\x1f\x89\xb8\xbd\xf8\x88\xaa\x0c\x33\x4e\x1d\xe9\x79\x7d\xeb\x61\x92\x5a\x9f\x3a\x5e\xdc\xd1\x95\x56\xce\x95\xb6\x02\xbc\xf0\xe2\x3f\x07\x71\x59\xa0\x06\xf2\x82\xaf\x22\xee\x88\xcd\x5c\x0d\x6e\x25\x91\x7f\x16\xd8\x45\xcd\x44\xb3\x49\x3a\x22\xf9\x38\xf2\x37\xcf\xa9\xe4\x19\x43\xe8\xb3\xca\xc1\x41\xe4\xdf\x76\x70\x10\xf8\x9f\x7f\x70\x50\x1e\x83\x79\x7e\x29\x58\x62\xaf\xf5\xd6\x51\x1e\x68\x19\x06\x8a\xe1\xa1\xf9\xa1\xf0\x73\x3b\x69\x13\x55\x95\x13\x8d\xd6\xb0\x4f\x49\x5b\x38\xed\xa2\xb9\xa4\x16\x25\x8c\xb1\x22\xbd\xab\x9f\x4b\xcd\xd2\x89\x86\xcd\x2a\x1a\x24\x38\xa9\x5c\xea\xdb\x7e\xe9\x6e\x40\xba\x7d\x69\xfa\x42\x4d\xb2\x2c\xa9\x6a\x23\xcb\x9b\x1d\xad\x46\xcc\x59\xa9\x73\x07\x1a\x8c\x56\xe9\x28\x84\x61\xce\x00\x8d\xa4\x01\x74\xe3\xb5\x7f\x69\xc7\x95\x23\x26\x8c\x40\x46\x24\x93\x7a\x26\x49\x6c\x76\x79\x90\xce\x09\x0d\xf8\x16\x9f\xb2\x32\x56\xe0\x79\x9a\xe8\x40\x4e\x8b\x4a\x39\xf0\x90\x55\xc1\x81\xe3\x17\x12\xfd\xa6\xa3\x5f\xc3\x28\x34\xb3\xab\x2e\x7f\xeb\xfe\x7f\x21\xf0\xc8\xe7\x29\x83\x97\xde\x35\x3b\x5e\xd0\xe1\x65\x50\xcb\x64\x1a\xcc\x0d\x03\x43\xa4\x12\x3e\x0d\xca\x80\x1b\x95\xeb\xf3\xb8\x4a\x94\xf1\xbf\x5b\xa2\x4c\xfd\x9a\x73\xb6\x31\x10\x29\xad\x10\x56\xec\x63\x4e\x26\xb0\x65\x5d\x7a\x41\x96\x0d\x21\x8e\xe3\xd2\xbe\x21\x16\x0e\x6a\xbe\x08\xab\x31\x55\xa6\xbb\x73\xa2\x22\x5e\x15\xfe\x4b\x20\x50\x2c\x38\xfb\x1a\x7c\xd9\xef\x67\xfd\x01\x29\x7c\x7b\x95\x2e\x66\x58\x60\x18\xb8\x18\xa8\x28\xcb\xc2\x3d\x16\xa9\x90\xcb\x3e\x5b\xab\xf3\xc4\xb3\xc4\x5f\x58\xdd\x21\xb5\x7d\x3f\xbc\x3e\x4b\x05\x27\x8a\x9d\x30\xe2\xb1\xd5\x1d\xa9\xc4\x24\xb2\x3d\xdf\x0b\x2e\xce\x16\x61\x62\x75\x47\x72\x67\xe9\xfa\x6c\xf0\x33\xc6\xd3\x61\xef\xf1\x3c\x9b\x8e\x7a\x8f\xe7\xf2\x71\x04\x7f\xd6\xbb\x79\xb6\x3b\x1d\xf6\xee\xa9\xd4\xdd\xfb\xd3\x61\xef\xfe\x9c\xcc\xfa\x64\x7d\x37\xff\xb3\xa5\x76\x06\x74\xe5\x4b\x57\x7e\x8f\x0f\x7a\xcf\xe6\xeb\x11\xbd\x97\xef\x0c\xbc\x92\xef\x2d\xfc\xed\xe1\xc1\x21\x80\xeb\xe6\x6c\x18\xcd\xeb\x84\x8e\xc0\x10\x52\x0e\x5a\x17\x73\xad\xed\x55\x3a\x80\x83\x46\xe8\x3d\x92\x65\xf0\xf0\x40\xc6\x1d\xb8\x87\x8a\x10\xf0\x5d\xd7\x57\x8e\x54\x74\x91\xee\x68\xac\xc3\xd0\x95\xbe\xd9\x20\x28\x54\xd3\xbd\xb9\x26\xd7\x1e\xc4\x33\xd4\xc2\xe6\xf4\xee\x7c\x8f\xed\xde\xbf\x0f\xa6\xaa\x0f\x54\x4b\xf2\xb2\x62\x9a\xcc\xa5\x57\x06\x2f\x70\xfc\x74\xc1\x63\x8c\xbe\x44\xd2\x80\x69\xb7\x0b\xe7\x62\x45\x9b\x22\x5d\xfb\x78\x2b\xe0\x02\xc3\xc4\xe9\x70\x5e\x29\x6f\x21\x52\xfb\x0e\xe6\x3b\xd1\x74\x34\x2f\x52\xe5\x41\x83\x8a\xcf\x2b\x2b\xb7\xc0\x23\x3d\x78\xd6\x5d\xf8\x38\x9c\x86\xa5\x97\x39\x7a\x0f\x02\x4b\x4e\x1e\x5a\x8f\x20\xc0\x88\x1e\x0f\xa7\xde\x8a\x65\x81\x99\x50\xe9\xfc\x57\xa7\xf4\xe3\xf4\x3c\x4e\x22\x70\x19\x33\xc1\xa1\xb6\x1b\xa2\xe5\x93\x07\x9e\x8f\x9a\xf9\x93\x22\x00\x2f\x81\x68\x6c\xd2\xd2\x5d\xff\x85\x32\x05\x3f\x6b\x78\x00\x36\xcd\x98\xe8\x9e\x87\xd3\x78\x6e\x18\xb1\x60\xa6\x65\x0e\xe5\x27\xce\xab\x74\x81\x75\x87\xa5\x73\x38\xc3\x88\x45\xd1\x32\x77\x61\xfc\xd2\x5d\x29\xea\x00\xf7\xc2\x65\x79\x35\xd6\xde\xa4\xc0\x0f\x1b\x59\x85\x8f\x5f\xc6\x9c\xbc\xc0\x7e\x41\xee\x97\x7e\x3d\x2a\x63\xfd\x0e\x18\xa2\x43\xf4\xbd\x58\x46\x89\x48\x4a\xef\x78\x39\x18\x93\x6d\x38\xe7\x6f\x53\xbc\x91\xdc\x2f\xcb\xba\xb8\xc1\x81\x05\xff\x57\xb7\x33\x49\xe9\x44\x4d\x52\x39\xb8\x0b\xec\x0e\x69\x28\xe8\xc1\x53\x21\x8f\x20\xc2\x43\x11\xd2\x9f\x3a\x2c\x99\x36\xaa\x9c\x63\x02\x4e\xdd\xb1\xcd\x1c\xe5\x5d\x5f\xf9\x5f\x37\x0c\xac\x1d\xf8\x29\xf7\xb5\xb4\xcb\xb3\x4c\x2b\x01\x77\xc5\x7c\x18\x47\x30\xa0\xa5\x79\x43\x28\x40\xf0\x58\x92\xbb\x5e\x60\xfb\xfe\x47\x19\xc2\x42\x9a\xf0\x30\x88\xca\x2d\x40\xce\x32\xfd\x84\x49\x91\x53\x50\xa9\x12\x11\xbc\xbc\xbc\x86\x03\x4c\xb5\x20\xae\x9b\x54\x3d\xe2\x6d\x88\x20\x1a\xef\x4b\x15\x59\xb2\x76\x37\x59\x06\x51\xd7\x0a\x9b\x3a\xea\x88\xf6\x87\x48\x05\xf5\xa0\x37\xc5\xf2\x11\x6c\xc8\x23\xd2\x39\x53\x43\xda\x90\x6c\xe9\x95\xbd\x82\x32\x59\x86\x4e\xb8\x2c\xae\xc1\x91\xe4\xe1\x46\xe1\x52\xc7\x4e\x39\x28\xa2\x2f\xc8\x22\x83\x9f\xf1\xc4\x7a\xe7\x65\x2f\x48\x90\xe0\x89\xf5\x28\x1b\x3d\xc8\xee\xee\x12\x3c\xb1\x0e\x7d\x7b\xb9\xe2\x0b\x32\x81\x4a\x76\x06\xda\xfd\x66\xa3\xab\x1b\x18\x23\xeb\x52\xe3\xa0\x22\xfa\x14\x66\xff\x49\xc2\x97\xab\xa4\x93\x84\x9d\x05\x97\xbd\x49\x23\xde\x09\xc2\xa0\xa7\x03\xb4\x14\xc2\x5c\x7f\x16\xbc\x08\x3a\x61\xb4\xe0\x91\xc8\x7f\xce\x8b\x18\x2e\x14\x0a\xd8\x02\xb2\x8e\x5c\x75\xe3\xce\x32\x8d\x93\xce\xa5\x7d\xc5\x3b\x76\xa7\x85\xee\x54\xe8\x4e\xf0\x0e\x5a\x59\xca\x55\x37\xd6\xca\x89\x1b\xcf\x32\xbe\xaf\xb9\x0a\x01\xcf\x6d\xc5\x5b\x29\x19\x41\xbc\x25\xd1\x41\x39\xef\x38\x19\x07\x7b\x1c\xbc\xb9\x45\x42\x3a\x12\x22\x52\xe9\x55\x1d\xfc\x31\xf8\x6c\x2d\x57\x58\xb5\xa1\x3d\x03\x69\xb1\x3b\xd2\x77\x7d\x1b\xe9\x6a\x91\x4e\xdc\x47\x67\x60\xd6\x7b\xb6\xb2\xa3\x44\xac\xde\xf5\xc5\x3c\xa7\x17\xb0\x3a\x4f\x7f\x9e\xdd\x0c\x87\xbd\xd9\xcd\xe8\xd9\xec\xe6\xe1\xb3\xde\xec\xe6\xf1\xb3\x99\xf3\x7e\x6e\x92\x3d\xdc\x37\xc9\xfe\xce\xc0\xa3\x1f\x61\x61\xb5\x7b\xbf\xcd\x16\xdd\x2f\x66\x3b\x5f\x1a\x77\x66\x5f\xcd\xcc\x59\x6f\x36\x60\xb3\xc9\xec\xe7\xb3\x7f\x59\xcf\xb2\xfc\x3f\xcc\x4d\x91\xf7\xbc\xcc\x0b\x3e\x73\xaf\x65\x2b\xb3\x78\x76\x33\x1c\xf5\x66\x37\xc3\x47\xb3\x9b\xe1\xf9\xec\x66\xe8\xcc\x6e\x86\x5c\xb4\xeb\xce\x6e\x1e\xba\xb3\x9b\xdd\xd1\xec\x66\xf7\x6e\x6f\x76\x73\xff\x7c\x76\x73\x7f\xd1\x9b\xdd\x3c\xe4\xf3\x0c\xcf\x66\x53\x5d\xf2\x71\xa5\x24\x7c\x77\xe7\x84\x7c\x25\x1a\x3d\xf8\x2c\x00\x67\xe9\x70\x78\x30\xec\xcd\xd2\xa7\x0f\x9f\x3d\x9b\xa5\xcf\x1e\x83\x7b\xdd\x67\x4f\x0f\xc5\xcb\xd3\x67\xf0\xf2\xec\xe8\x99\xec\xc7\xc9\x5f\x03\xf7\xe7\xb6\xf4\x89\xee\x7d\x6e\x35\x12\x0b\xa5\xa4\x73\xe3\x17\xec\x47\xca\x2a\x98\x33\xc7\xc7\x9c\x5e\xf9\x84\xf4\xdb\x08\x27\xcb\x78\x7f\x93\xcc\xca\x00\xb9\x52\x73\xee\xc2\x97\x76\x97\xc5\xc5\x20\xbb\xf4\x71\x40\xef\x4a\xe3\x17\x16\x0a\xa9\x34\x61\xe1\x74\x77\x4e\xa3\x3e\x0f\x16\xf1\x0f\x5e\x72\x09\xa7\x15\x4a\x2b\xa2\x58\xac\xa3\x8a\xb3\x61\xda\x6d\xf3\xd1\xa6\x74\xf5\x7e\x46\x82\x0a\xd1\xce\xc0\x83\x78\x0e\x13\x2e\xc4\x30\xb0\x6c\xeb\x06\xfd\x24\xf2\x96\xb8\x2e\x8f\x0c\xa6\xb3\x3e\x1a\xef\xed\xcf\x4b\xb6\x03\x5c\x98\xd7\xa5\x1a\xac\x43\xdf\xdc\x41\x77\x48\xb9\x8e\x16\xa9\xb3\x59\x99\x5e\x36\xa0\x57\xd9\x61\x8e\xa3\x4a\xaa\x5e\xbd\x79\x2b\x6a\xcb\x7c\x00\x47\xdf\xbb\x08\xc2\x88\x9f\x2d\xed\x9b\x33\x6d\x87\x5d\xb8\xc1\xdb\xbd\x7f\xaf\x2e\x15\x7a\xa5\x84\xf6\x17\x44\xa8\xcd\x3c\x25\xa1\x38\xcc\x53\x86\x5a\x22\x3d\x66\x76\xc3\x57\x18\x80\x23\xaf\xd2\xce\x20\x2e\xbb\xeb\x39\x67\x4a\x3d\xd2\x0b\xc1\xac\xfd\x62\x69\x7b\x7e\xdf\x09\x97\xda\x36\xfd\x22\x0c\x2f\x7c\x5e\x4b\x25\x72\x40\x52\x86\x1d\xe6\x34\xac\xdc\x35\x60\x26\x22\xd3\x21\x08\x9a\xdd\xd4\xc7\x69\xe1\x86\x0d\xf5\x11\xf8\x61\x5b\x2f\xbd\xc0\x7a\x40\x97\xf6\x8d\x75\x77\x98\x57\x86\x4b\x73\x45\x9f\xa5\x15\xd1\x97\xba\x6c\x38\x76\xf7\x7c\x2d\x6e\xb9\xd2\x0f\x6f\xf7\x5c\x89\x46\xfe\xd4\xad\x88\x46\xb9\x6a\xd6\xa1\x6b\xd1\xc0\x83\x7b\x39\xc9\x32\x91\x60\xcb\x84\xdd\xfb\xf7\xf2\x3a\x85\x74\xeb\x4b\x74\x7d\x82\xf8\x62\x82\x6c\xee\x68\x0c\x43\xf9\xf6\x9b\x26\x55\x07\xc9\xd2\x9c\x03\x68\x5a\x6c\x03\x86\x34\xa9\x90\x75\x85\xe9\x57\x25\xfb\x36\xdf\xbf\x62\x4e\x4d\xa3\xb9\xa6\x82\x07\x77\x6b\x00\x97\x64\x95\xf8\x0b\x1d\x9e\x4f\x79\x12\x56\x13\x41\xdf\x4e\x76\x05\xcb\x12\x6c\x30\x1d\x0e\xed\x51\x6f\x96\xba\xae\xeb\xce\xd7\xbb\x34\xcf\x6e\x02\xf1\x61\xd8\x7b\xdc\x83\x77\xb2\x33\xf0\x1a\x9e\x91\x8b\x09\x14\xcf\xd2\xdd\xe1\x70\xb7\x07\x7f\x9e\x88\xdf\xdd\x67\xe2\xf7\xfe\x33\x88\xb6\x38\x9c\xa5\xcf\x8e\x04\x3f\x7a\xfa\xe4\xde\x70\x96\x3e\x3d\xdc\x05\x17\xe7\x07\x8f\x05\x37\x7a\xf6\x54\xcf\xbc\x4a\xbd\xb9\x46\x85\x47\x6d\x36\x1c\xdb\x65\xef\x6d\xe5\x31\xda\x63\xc1\xd4\x9e\x53\xcd\x84\x2a\x5b\x4c\xf0\x27\xe0\x95\xc1\xfc\xcf\x06\x17\xd2\xe3\x5f\x57\x71\xfc\x6a\x57\xa1\x7b\x66\xd1\x35\x6f\xa3\x6b\xa9\xeb\x0e\x65\xe6\xfb\x5c\x03\xda\xc8\x05\x8e\xf8\x98\x27\x63\xed\xab\x67\xaf\x1c\xf5\x36\x66\x60\xd3\xda\x4e\xb9\x36\x60\xb9\x66\x40\xaa\x6b\xde\xea\x4c\x4e\xcb\x3a\x51\x2e\x7c\x6c\xab\x9c\x76\x3f\x4e\xec\x28\x51\xcc\x73\x8a\x04\x41\xdb\x15\x76\x3a\x47\x8d\xad\xe3\x8a\xd9\x9a\xb3\x8e\xa8\x5d\x6e\x6c\xc6\xd2\xf5\x30\x5b\x95\xf4\xb1\xf0\xf1\xaa\x32\x2e\x62\xf6\xdc\x41\x77\xc4\x0e\x62\x3a\x9c\x17\x3e\x41\x98\x53\x38\x78\x77\x4a\x8a\x2e\x47\xa7\x2e\x5b\x4c\x4e\xd4\xcc\x74\x88\x75\x5d\x3c\x16\xe4\xbf\x60\xdb\xca\x1d\xf8\xd6\x47\x9f\x5e\x8a\xd6\xca\xe9\x21\x1d\x53\x5d\x56\x1d\x53\x01\x7e\x64\xbd\x97\xd3\xe5\xe6\xbe\xa8\x3b\x04\x51\xe9\x8d\xcf\xd6\x8a\xb9\x5e\x5f\x7a\x09\x8f\x57\xb6\x03\xa1\x75\xcb\x85\xf1\xa8\xbe\x27\x92\x73\x5f\xa0\x08\x6b\x06\xf0\x46\x30\x80\x8d\x5a\x26\x89\x5a\x6b\x74\x34\xf9\x42\xb4\x2b\xe5\xc1\x33\xbf\x16\xea\x53\x5b\x81\x94\x8d\xc7\x58\x33\xd3\xa7\x76\xc2\xfb\x41\x78\x8d\x49\xcf\x1e\xa7\x7b\xdc\x30\xd2\x7d\x36\x9c\x44\x2c\xe6\xc9\xa9\xb7\xe4\x61\x9a\xe0\x98\xf2\x5e\x4a\x2c\xac\xfc\x05\x07\x10\x8c\x2a\x51\x1a\x80\x1e\x0d\xc5\x26\x35\x54\x2e\x13\x73\x25\x82\x82\xd4\x39\x1a\x0e\xe5\x36\xa2\xa6\x82\xea\xc9\x2b\xfd\x8a\x63\x07\x6a\x57\xe0\x50\x05\x02\xc3\xe8\x16\x7a\x1e\x51\x96\xe1\x26\x48\x84\xd0\xd4\x30\xb6\x42\x42\x9d\x5c\x97\x4e\xfb\x8e\xcf\xed\xa8\x66\x06\x2c\x4a\x8a\x44\x5d\x61\xa4\xdd\x21\x93\x9c\xa6\x7d\xd7\x4f\xe3\xcb\x8d\xfc\xed\x2d\xd1\xed\xf5\xe4\x67\x7e\x7f\xc1\xcf\xc3\x34\x70\x38\x3b\xf3\xa1\x67\x87\xbe\x78\x2a\x46\xe2\x97\x7f\xdf\x8a\xa0\x6f\xff\x3e\x8a\xa0\xbf\xfc\x53\x2a\x82\xfe\xf2\x5f\x42\x11\xf4\x43\xab\x22\xe8\x6b\x7e\xad\x5e\x41\x25\x74\x8b\xfa\x65\x61\x8a\x8d\x50\x61\x96\x0d\x5b\x5d\x91\x00\xd2\x57\xf1\x50\x24\x17\x36\xd3\x95\xe7\x8d\x8f\x2f\x82\x55\x9a\x9c\xc2\x35\xad\x4e\x42\x79\xa9\x5f\xf8\xd6\xc7\x6f\xb5\x72\x61\x4d\x8f\x50\x6a\xf8\x94\xc0\x97\xe6\x24\x4b\x2f\x39\x14\xdb\x69\x7f\x43\x97\x71\x47\x7c\xc3\xc8\x81\xaf\x88\xe4\x4a\xe9\x51\xd5\xb0\x91\x1d\x2e\x87\xdf\xa9\xce\x62\x42\xcb\xc4\x23\xd1\xcf\x5a\xca\x5b\x05\x3b\x56\x31\x1e\x0a\x73\x8a\x02\x51\xda\x69\x10\xd8\x77\x14\x78\xaa\xa6\xd6\x70\xa4\xac\xca\x9a\xdd\xc4\xe5\x48\xd4\x9a\x50\x63\x50\xd6\x5e\x62\xbf\x56\x77\x2e\x7a\x5d\xed\x57\xb5\xd7\x47\x3e\xae\x55\x4a\x26\x87\x8d\x14\x00\xad\xa9\x9c\xaa\xab\xea\x48\x53\xeb\xce\x39\xef\xf0\xe5\x2a\xf9\x88\x08\xbd\x0f\xa1\xa2\x37\x6b\x40\x48\x81\x01\x98\x6c\x83\x01\x3a\x51\x02\x50\x62\xac\xd9\x3a\xd4\xb0\xad\xe9\x9b\x7a\x6d\xcd\xaa\x10\xb2\x3e\xdd\x80\x3e\xca\x81\x1c\x1d\x7b\xb1\x88\x78\x1c\xab\x06\x54\x2f\xf4\xe8\xb7\x75\x44\x63\xbe\xec\x4b\x6d\x9c\x9b\xad\xe9\xaa\x6e\x45\x66\xbd\x06\x81\x4c\xa9\x6d\xa2\x0b\x7f\xef\xc5\xde\xb9\xe7\x7b\xc9\xc7\x9a\x99\x53\x31\xc1\x9a\x14\x57\x4c\xc2\x49\x7b\x32\x43\x02\x38\x64\x6d\xfb\x5a\x99\xb9\x4a\x3d\xef\xf4\x1f\xa3\x9e\xa7\xb5\x74\x9c\xd0\x8f\x57\x76\x60\xa1\xc7\x5a\x99\x29\x74\x7a\x17\x91\xb7\x28\xb3\x5c\xa4\x49\xc2\x23\x6d\x0a\x92\xd7\xd4\x5b\x74\xcd\xfc\x26\xe9\x69\xcd\x95\x9a\x06\x09\x74\x9f\x22\xb0\xc7\xe9\x29\x73\x1a\x54\x71\x21\x0a\x03\x41\x41\xd8\xbf\x0c\xfd\x05\x8f\x6a\x37\xeb\x7a\x82\x20\xa5\x52\x02\x4d\x58\x49\x9d\xc1\xe4\xa0\xfb\xe3\x97\x9a\x85\xc5\xd4\x76\x6c\xdf\x3f\xb7\x9d\x0f\x35\x15\xc1\x8a\x6b\x58\x9e\xd7\xd4\x64\x74\x3a\x6a\x55\xbf\xfb\xdc\x1e\x03\xb5\xb7\x75\xb9\x9c\x28\x5b\xfb\x0b\x53\xb2\xb5\xb3\xf0\x65\xa3\xa7\x92\x61\x6d\xe9\x26\x7c\x6c\xf6\x51\x42\x77\x5b\x07\x3f\x47\x8d\x0d\xe5\xad\x78\x68\x96\x5c\xda\xd1\x85\x17\xf4\x6e\x80\x72\x7a\x91\x77\x71\x99\xd4\x15\x8c\x92\xcd\x39\xd1\x82\xb8\xda\xa4\xdd\x8a\x3b\x3d\x85\x5b\xd1\xf7\xb6\x70\x0e\xd4\xc0\x60\xe1\x77\x6a\x0b\x12\x0b\xb7\x23\x0d\x3c\x56\x27\xee\x86\x96\x4e\xa1\x92\x58\xa8\xbc\xd6\xb4\x06\xb7\x6b\x92\x3c\x95\x07\x49\x9d\x55\xa3\x2f\xa0\xc5\x66\x25\xfd\x6d\xcc\xaa\x9c\xba\x6d\x2a\x7d\x11\x5f\x86\x57\xfc\x2c\xe2\x8b\x33\xfe\x71\x8b\x56\x1f\xad\x9a\x7b\x55\x74\x57\xea\x7d\x03\xab\xdb\x5b\xf5\x2e\xb7\x8d\xfa\xad\x0a\x50\x25\x02\x0e\x95\x84\xd1\xe8\x77\x29\x9a\xfc\x49\x74\xaf\x22\x6f\x69\x47\x1f\x6b\x2a\x6c\xb7\x03\x00\x0c\x76\x03\x80\x9a\xbc\x53\x68\x40\x96\x0a\x3e\xa7\x2d\x0a\x3e\x85\x80\x7e\xfc\xef\x7b\xff\xf1\xf2\xef\xb3\xff\x38\xfe\xa7\xdc\x7f\x1c\xff\x97\xd8\x7f\xbc\x68\xdd\x7f\x34\xac\xd0\xea\x26\x6a\x56\xe8\xd3\xad\x9b\x95\xaa\xad\xda\xe9\xad\x2a\x67\x1f\xfe\x84\xca\x59\xd3\x56\x4d\x33\x79\xb8\xfb\xaa\xd9\xaa\x51\x2f\x3e\xd4\xe2\xf9\x71\x78\xad\xb8\x1e\xd7\x26\xf7\x4f\xa4\x0b\x8d\x56\xa3\xfa\xee\xa8\x6a\xbf\xf6\x52\x5b\xae\xd5\x76\x38\x76\xc4\x0f\x7c\x5f\xa7\x68\xf3\x02\xd8\xe7\xe8\xdd\xd1\x4b\x1f\xbf\x6c\xdd\x1d\x49\x0e\x2b\xcb\x78\x61\x70\xe0\xfb\xf5\xfd\x91\x00\xdb\x0b\x83\xcf\xd9\x27\xa9\x6a\x75\x11\x54\x9a\x60\xbc\xfe\x9b\xc8\x78\x55\x66\x0c\xa2\x5d\xc9\x01\xe5\x2a\x2d\x76\x8b\x0b\xef\xca\x13\xc3\x8c\x2a\xe2\x9d\x94\x03\x2f\xa2\x30\x5d\x35\x64\xc3\x4f\x49\x8b\xf1\x65\xe4\x05\x1f\x44\xbd\x52\xd6\xb9\xe4\xf6\xa2\x52\xf1\x76\x63\x8f\xf6\x21\x29\x2c\x3e\x36\xb4\xd6\x6d\xdf\x07\xeb\x6c\xb1\x5d\xb8\xcd\xf6\x43\x2f\x89\xd5\x01\xfb\x2c\xe3\x89\xdb\x3b\xf4\x79\x85\xab\x45\x3e\x77\x7d\x29\x25\xda\x4f\xeb\xf7\xfe\x15\xcd\x68\x41\xe2\x1f\xd0\x94\x92\x59\xff\xae\x6d\x1c\x4b\x23\x86\x7f\x9b\x46\x74\x10\x5e\x47\xf6\xaa\xb4\x6b\x6f\x1d\xf2\xcf\x1e\x3f\x6f\xd1\x51\xc1\xe9\xfe\x29\xe0\x79\xfe\xa7\xe0\xf9\x9b\x34\x79\xa4\x55\xb3\xc9\x56\x39\x71\x83\xc9\x24\xfd\x2d\x2c\x7f\x12\xe0\x52\x51\xdb\xf7\xe2\xa4\x17\xf0\xeb\x9e\x56\xef\x06\x7e\xb4\x86\xf9\x2e\x19\xae\x12\x05\x6b\x5c\x38\xcf\xb5\x43\x80\x0a\x10\xca\x6a\x43\x57\xdd\xea\x2a\x6c\xa3\x69\xd9\x5c\x4d\xc1\x5c\xa7\x83\xb9\x89\xb7\xd0\x83\x56\x58\x07\x0b\x9e\x4e\xc8\x9c\xee\x56\x84\xc1\xd7\xb7\x09\x83\x3b\xff\xbe\x85\xc1\x77\x7f\x1f\x61\x70\xe7\x9f\x52\x18\xdc\xf9\xc7\x0a\x83\x02\x63\x4f\x4b\x51\x70\xb5\xda\x2e\x01\x56\x25\xbc\xd7\xb7\x4a\x78\x2f\xfe\x94\x84\xb7\xe5\x90\xbb\xb0\xe5\xd4\x33\xf3\x85\xe8\xd1\x85\xd8\x2d\x37\x24\xb6\x77\x3e\x96\xff\x5a\xe4\x36\x2f\x7e\x11\x78\x89\x67\xfb\xde\x6f\x7c\x81\x28\xba\xe0\x49\x21\x31\x84\x91\x16\xe1\x9a\x9e\x08\xb6\x7a\x20\x28\xc4\xd0\x2d\x8e\x07\x36\xaa\xcf\xa9\xe4\xa4\x6f\xdc\x93\x46\x9d\x9f\xed\xbb\x40\x12\xb8\xf6\x54\x00\x88\x70\xc3\x53\x7e\x93\x6c\x73\x54\x10\x14\x6c\xf5\xcb\x75\xc7\x5e\x4a\x0f\x05\x1d\x5d\x6f\x47\xf9\x63\xd8\xfa\x2d\x56\x7e\x8f\xb6\x01\xfe\x79\xae\x0e\x96\xa5\xa7\x83\x6d\x15\xe5\x24\xa7\xb6\x23\x2d\xe8\xb6\xc9\xae\x10\x9b\xb5\x1d\x2f\x1b\x9c\xa8\x1a\xc3\xb2\x6e\x9e\x94\x17\x9a\xc9\x34\x62\xc1\xfe\x90\x86\x2c\xd8\xbb\x15\xb6\xe2\x06\xd3\x30\xb8\x54\x0d\xad\x1b\x76\x2a\xb8\x4b\x73\x3b\x99\xa0\x0c\x97\x90\x96\x42\x1b\xa7\xe3\xf2\x23\xa1\x97\x76\xb0\xf0\xab\xee\xa9\x2a\x86\x6a\x52\xf8\xd4\x76\xcc\x60\x66\x84\x95\x5b\x88\xf0\x4f\x02\xa3\x2c\x87\xb6\x40\xf3\x54\x7d\xfd\x37\x80\x33\x02\x70\x78\x4e\xb5\x6d\xd2\x61\xf5\x2c\xe3\x49\x12\x9c\x86\xa1\x9f\x78\xab\x6d\x34\x5e\x9b\x95\x13\x95\xb4\x75\xba\x4f\x5a\xae\x38\x3a\x8e\xca\xd6\xf1\xe2\x8e\xed\x83\x65\x58\xc7\x0b\x3a\x2b\x55\x06\x11\x70\x4c\xd2\xec\xb3\x72\x2d\xa4\xf7\x01\xa2\x17\x7a\xfb\x56\xe5\x22\xcd\x1d\x9c\x57\x40\x8b\x28\x6a\xc1\x48\xab\x73\x8d\xe3\xa3\x93\xa3\x53\x6d\x23\x7e\x52\x9a\x8d\x17\xcc\x24\x2e\x98\x85\xee\x73\xc1\xe0\xaa\x34\xfd\x29\xf4\xb0\xe4\x36\x97\x21\x25\xe8\x98\xe4\x54\x3a\xe0\x7b\xca\xe3\x24\x0a\x3f\x6e\xe4\xdd\x06\xb1\xbe\x5c\xdb\x0e\xb0\x24\x09\x65\x7f\xf6\xcc\x67\x15\x5d\xef\xc2\x69\x65\x60\x5f\x79\x17\x36\x68\x14\x0f\x96\xb1\xc7\x3b\xd3\x07\xbd\xc7\xf3\xd9\xec\x5c\xeb\xd9\xe9\xef\x70\x98\x7e\x70\xc1\x83\x46\xf0\xd3\x8a\x01\xda\xab\xaa\xad\x8f\x90\x2b\xd8\x7e\x5d\x27\x4b\x79\xdb\x61\xcf\xfc\x09\xef\x2f\xf9\xc2\xb3\xb3\x0c\xa9\x0d\x3f\xb2\x12\x1a\xb1\x27\xbe\x8c\x7a\x0c\x7f\xd9\xda\x5b\xc4\x56\xc0\xaf\x3b\x27\x3c\x91\x2e\xae\x60\x45\x93\xda\x51\x51\xdf\x5b\xc4\xfd\x4b\x1b\x5c\x3d\xae\xe5\x9b\xbd\x58\x08\xb1\xc8\xe7\xa2\x15\xde\x8f\xc1\xc5\x94\xd4\xb5\x5a\xda\x2b\xc3\xc0\x81\xc9\xd0\x2c\x18\x7c\xf5\x45\x47\x7e\x7b\x77\xfc\x92\x21\x13\xbe\xaa\xdc\xf1\x74\x38\x37\x51\xe7\xab\x01\xa2\xcd\xcc\xaf\xec\xd5\xca\x0b\x2e\x44\x19\x58\x1e\x85\x7c\xe4\x49\xff\x71\x83\x5f\xe2\x30\x18\x9f\xdb\x31\x7f\x70\x8f\x22\xf3\x3c\x09\x6d\x9c\x06\x3c\x76\xec\x15\xc7\x2d\xa1\x87\xbf\x39\x79\xf3\xba\x2f\xd5\xcb\x3c\xf7\xa3\x04\x8f\x10\x42\x64\xcb\x84\x46\x7d\x2e\x8f\x05\x20\xe8\x84\x7a\x66\x8b\xd0\x01\x81\xa9\x5f\x3b\x39\xc0\x08\x50\x53\x2d\x05\x6e\xc5\xe4\x95\xd4\xc0\x89\x63\x44\x15\xba\x0d\xa3\xcc\x22\xe8\x26\x49\x22\xef\x3c\x4d\x38\x46\xf0\xb9\xc8\x47\x68\x61\x3b\xf4\xab\x6f\x18\xf8\x57\xbf\x6c\x5b\xec\x21\xb2\xac\x78\xbd\xe0\x89\x82\x23\x7e\xf2\xf1\xd4\xbe\x78\x6d\x2f\x39\x96\x1b\x0d\x32\x1d\xce\x09\xfd\xd5\x57\xee\xee\x0e\x2f\x3d\x7f\x51\xf6\x86\x10\x2a\x01\x3f\xb9\xe4\x3c\x41\x5e\xd0\x29\x3f\x45\x7d\x39\xda\x92\xaf\x06\xd5\x9e\x95\x45\xfa\x4e\x0c\x1e\x55\x58\x91\x5b\x2d\x3e\xea\x58\x49\x47\x77\x9a\x05\x48\xc5\x58\xd5\x2e\x30\x25\xb1\xc4\xde\x6f\xbc\x37\xa2\xbc\x89\x56\x51\xe7\xeb\x70\xc1\x45\xbb\x21\x2b\x5b\x76\x04\xfc\xe2\x43\x3c\x0e\xa7\xc9\xbc\x8a\x4b\x79\xf0\x2e\x3b\x28\xbe\x11\xaa\x8d\x38\x26\x65\x26\x2f\x88\x79\x94\x3c\x81\xc9\x8e\x39\x85\x7c\x56\xf9\xb9\x8a\x24\x4e\xf2\x5c\xea\xd1\xe7\x82\x96\x7f\xf5\xd5\x24\x7e\xe2\xb3\xb5\x9e\xd0\xcf\x7d\xf6\x54\x6a\xc1\xfc\xf6\xb7\x3d\x65\x82\x87\x8d\x1d\xad\x13\x06\x89\xed\x05\x3c\xea\xa4\x1f\x7a\x2b\x7b\x01\xce\xe0\xe4\x81\xd0\xe5\xe8\x53\x86\xcf\x1b\x26\xb4\xf1\xc6\x26\x36\xd9\xba\xea\xef\x8d\x26\x8d\xe3\x7f\xd8\xb8\xc9\x7e\xf5\x8a\xf5\xb6\x61\xd7\xde\x72\x37\x50\x2c\x8c\x55\xa7\x24\x9b\xac\x3b\xcb\xba\x49\x7d\x31\xa4\xb0\xa5\x97\xab\x27\xb2\xc0\x19\xc6\x6d\x0b\xec\x9f\xbc\x83\x00\xc3\x08\x90\xff\xea\x97\x11\xad\xee\x4e\x6e\xe3\xf6\x43\xf0\x74\x62\xd5\xae\x76\x01\x55\x5a\x4a\x2b\x91\xe5\x05\x6e\xd8\xb0\xa2\x6e\x5c\xfc\xd1\xdb\x2e\x85\x95\x1f\x8c\x5b\xbb\xb9\x21\x19\x6f\x9e\x5a\xc8\x6a\x94\x2f\x8c\x0c\x6d\xb8\x9a\x68\xbd\x85\x6a\xbf\x6a\xfb\x7c\x9c\xfb\xdc\x8e\x3a\x05\x70\x1b\x17\x40\xdb\x96\xdb\xd6\xc3\xc6\x2a\x80\x5a\xbc\x93\xbe\x31\xda\x0d\xd4\x9b\x32\x21\xa2\xe0\x80\x79\x71\xe2\x87\x49\x2c\x60\x4d\xf1\x54\x0e\x99\xee\xae\x1b\x6c\x8a\x6b\xb7\x78\x22\xf9\x6b\xae\xe4\x0e\x24\x70\x5b\x8e\x97\x3e\xe5\x42\x44\xe0\x07\x2e\x06\x6e\x3e\xc2\xc9\xbf\x3e\x5d\x91\x75\xb6\xf6\xa3\x53\x9c\xdd\x40\xa6\xaa\xcf\x0d\x1a\x55\x0f\x6f\x9a\x73\x9f\xf7\x41\x76\xde\xa0\x5f\xf0\xaa\xd3\x1b\xf5\x46\xc5\x2d\xb6\xcf\xdd\x04\x51\x07\x72\xac\x2b\x08\x92\xf8\x39\x0f\x93\x24\x5c\x22\x2b\x32\x47\xe0\x20\x55\x01\x52\x6c\xee\x4a\xe7\x31\xbc\xc5\x27\x0c\x78\x26\xb3\xd0\x92\x07\xa9\x97\xf0\x25\xaa\xd2\x11\xef\x2b\xf1\x3d\x6f\xf1\xf5\xb2\xe1\xd3\x02\x7a\xd3\xf0\x66\xa1\x3d\x5a\xe4\x84\x54\xd0\x2a\xde\x37\x9c\xb2\x34\xb8\xd5\x64\xda\x3c\xef\x2a\xc7\xad\xd8\x2a\x57\x4e\xcc\x90\x17\xf7\x14\x33\x0d\xf8\x35\x9c\x81\x2d\xf4\xa9\x1d\xba\x9d\x55\xaa\x2e\xb7\xdd\x82\xfc\x79\xf6\x35\x92\x8e\x9a\x14\xff\x02\x3f\xa2\x11\x92\x27\x6e\x24\x1f\xff\xb6\xd5\xb3\xc2\xf7\x35\xcf\x0a\xbf\xb5\x1f\x82\xd4\x36\xa4\x89\x61\x24\x18\x09\x19\xae\x77\xd5\x7b\x78\xce\xcf\x87\xf6\xdd\xf3\xb3\xa1\x98\x4f\xca\x51\xf3\x2c\xf8\xaf\xff\xd7\xff\x1f\x7c\xd5\x39\x7d\xf3\xf4\x8d\xd5\x39\x70\x13\x1e\x75\x2e\x93\x64\x15\x5b\x83\xc1\x85\x97\x5c\xa6\xe7\x7d\x27\x5c\x0e\xc2\xeb\xc0\xf1\xc3\x74\x51\x3c\xf4\x16\x3c\xf6\x2e\x82\x5e\xfc\x31\x4e\xf8\x72\xb0\x4a\x7d\x7f\x70\x6f\xf4\xa8\x73\xc1\x93\xb8\xb3\xe4\xd1\x05\x5f\xcc\x82\xe4\x92\x47\xbc\x73\x1d\x06\x77\x40\x93\xcb\x0e\x3a\xfc\x26\x89\xec\x8e\x60\x70\x1d\x3b\x58\xc0\xde\xb4\xfc\x1e\x70\xbe\xe0\x8b\x8e\x1d\x7c\x14\x5c\xa7\xf3\xd5\x60\x16\xf4\x4b\xff\x1f\x9a\xab\x17\x8c\xf6\x3c\x09\x3a\xfb\xb2\xae\xb5\x98\x5d\x8a\xb0\xad\x8e\xe0\x0e\x63\x91\x62\xfb\x02\x44\x31\x81\x63\xab\x23\x7d\xaa\x8c\x67\x41\x5e\xef\xf2\xe2\x97\x34\x4e\xc0\xfa\xf5\xe9\x89\x6c\x53\x79\x41\x82\x8d\xbd\xe0\x00\xb2\x7a\xe5\x7f\x77\x74\x7f\xb8\xba\x91\xb5\x20\xba\xb4\x57\xd6\xfa\x8a\x47\xa0\x4e\x72\x97\xaa\x5d\x86\x35\x45\x03\x70\xe3\x37\x38\xe7\x01\x1f\x1c\x86\x0b\x5e\x41\xa0\xe3\xc5\xf0\x53\x2c\xd8\x83\xd4\x1b\x94\x47\x80\x83\x83\xd5\xaa\x7f\x95\x72\x34\xa7\x82\x11\x0b\x0a\x17\xcd\x88\xcd\x49\x6c\xa1\xf1\x3f\xcb\x7f\x07\x07\x1f\x5f\x1c\x8c\xcd\xa7\x07\x87\x07\xe3\x03\xf1\x73\x74\x70\x78\x40\xed\x83\x03\xf5\xb4\x7c\x22\x1e\xe1\xcb\xf8\xe0\xe0\xe8\x80\x5e\x97\x09\x90\xe1\x47\xfd\x8a\xa8\xeb\xf9\xf2\x28\x14\xfa\xad\xb1\xa8\xd7\xb2\xe9\x9d\xbd\x84\x2f\x57\xbe\x9d\xf0\x7d\x31\x0e\x7b\x0b\xef\x6a\x5f\x72\x53\xf1\xd8\x81\x05\x80\x6d\x15\x63\xf7\x35\xe3\xdd\xbb\x1c\x75\xae\xe0\xf2\x86\xa1\x62\x61\x9c\xdd\xd1\x92\xe8\xec\x0e\x41\x9d\x41\x99\xbb\x58\x97\x4a\xc6\x7d\xd5\xf3\x5c\x86\xb6\x89\xb2\x9d\xbd\xce\xa8\xc2\xe5\x3f\xf0\x8f\x6c\x9b\x1c\x5b\xad\x72\x03\xa0\x86\xe0\x28\xe0\xaa\xe4\xd7\xcb\x14\x2b\x24\xdf\xf2\xa3\xa5\x65\x57\x86\x6e\xe1\xeb\x9d\x2c\xeb\x74\xeb\xa7\xb4\x95\x2a\x4a\x61\x98\xa1\x4f\x88\xc2\x95\x62\x7f\x81\x95\x91\xa1\x5b\x96\x80\x24\x4a\x79\xd9\x93\x3a\xa2\x85\x3c\xdb\xb9\xea\x81\x4d\x1e\xe0\x6d\x8b\x50\xdb\x91\x02\x2b\x53\x02\x6b\x65\xe8\xab\xd2\xed\x7e\x09\xd7\x1e\x70\x07\x8d\xe4\x0d\xa9\xb5\x3a\xe0\x2a\xf3\x7e\xb6\x37\x80\xbf\x95\xf4\x92\xe0\x9a\xb4\xd1\x3a\x7e\x75\x21\x14\xe8\xaa\x32\x6c\x42\xba\x28\xf0\xb5\xf5\xc4\xaa\x0e\xd8\xa0\x0e\x41\x2b\x40\x15\x11\x55\xe3\x65\xbb\x68\xba\x5f\x97\x46\x8a\x09\xd6\xb9\xea\xc5\x7e\x98\x58\xb2\x77\xfb\x4d\x99\x45\xa2\xb3\xc4\x7a\x9b\x44\xda\x3e\xc7\xa0\xfd\xc6\x14\xab\x42\x2f\x24\xd0\x8e\x0c\x52\x56\x15\x3c\x37\x72\xef\x0d\x6a\xbc\xe0\x96\x2e\xa8\x3e\x6f\xb4\xd6\x3e\xb5\xcb\xff\xae\x7a\x6e\x18\x31\x84\x65\x79\xda\x01\x47\xc6\x44\xac\x0f\x5a\xde\x6d\x2b\x65\x01\xd9\xca\x1c\x52\xe4\x6b\xcf\xe6\x2d\x8a\x5c\xde\xa2\x35\x4b\x83\x54\xda\xb2\x08\xd9\x94\x95\xb2\x69\x6b\x43\x6a\x90\xd6\x9d\xd9\x9d\x76\xc9\x78\x76\xc7\x92\x7d\xeb\x98\x9d\x51\xa7\xcb\x58\xa7\x2e\x21\x77\xf2\xd6\x8a\xcb\xc1\xdf\x22\x90\xb7\x15\xd2\xe4\xae\x7a\xae\xc4\xe7\x96\xac\x2d\xa3\xd5\xe9\xac\xd7\x9d\x2a\x62\x3b\x79\xde\x32\xa6\x83\x62\x50\x3f\x8f\x62\xa0\x40\x65\xce\x6c\x9d\x6e\x90\x51\x30\xa8\x32\xa5\x42\x6a\x62\x41\xa8\xf3\xd2\x6a\x45\x35\x41\xbd\xda\xba\xa5\xbf\x94\x93\xb4\x86\x0d\xeb\x16\xb1\xfd\x56\xe6\x5e\xab\xe5\x2f\xad\xc2\xfb\xad\x5c\xda\xb5\xfd\x98\x57\x17\x9c\x0a\xa3\xde\x44\xe4\x5e\x21\xcb\x6b\xee\xad\xb3\x97\x38\xd4\x4f\xb5\xe2\xb3\x60\x4f\x5e\x91\xee\xcf\x02\x6f\xb9\x0a\xa3\xa4\xb3\xee\x2c\xed\xd5\x73\xc1\x32\xa2\x98\x8a\x67\xc5\x34\xe0\xf9\x24\xb1\x13\x0e\x4f\xaf\xd2\x04\x20\x8e\x3b\x79\xc7\x8d\xc2\x65\x67\x76\xe7\x2a\xe5\x37\xb3\x3b\x45\x45\xd5\x1b\x54\x9d\xa5\x3f\x28\x84\xad\xea\x67\x21\x6f\x88\x92\xfc\x06\x4a\xaa\xd3\x6a\x29\xee\xc1\x2e\xb8\x33\xbb\x73\xb0\x5a\xcd\xee\x50\x91\x52\xb9\xa6\xed\xac\xeb\xcd\xe4\x90\x01\x0e\x8e\x3b\x98\x74\xd8\x7e\x07\xaf\x25\x22\x6e\xbb\x54\xed\x00\xb6\x45\xbe\x9c\x14\x2d\xc0\x05\x6b\x47\x95\xee\xf7\xfb\x25\x56\x6a\xc2\x0a\xed\x4c\x67\x77\x6a\x94\x27\xd2\x66\x77\x36\xee\x43\x67\x77\xe6\xb2\x72\x5d\x1b\xe0\x72\xb3\xae\xe6\x6d\x9f\x2a\x27\x4b\x6a\xec\x89\xce\xad\xf5\xe8\xdf\x7a\x0d\x2b\x33\xe5\x45\x0d\x5b\xa5\xa6\x6d\x35\x6e\xb9\x95\x6d\xd6\xbb\xb1\xa6\xd7\x2a\x54\x87\xc2\x91\x1d\xc4\x82\xf2\x16\x1d\xd6\x69\xdc\xd8\xce\xee\x6c\xbd\x96\x95\x08\xdd\x7e\x6b\x2b\xbe\xdf\x7e\x6f\x3b\x0b\xda\x7a\xd6\x7a\x81\x5b\x80\x48\x3b\xba\x41\xeb\xf6\xda\x3b\x39\x69\x22\x43\x71\xf0\x16\x14\xe8\x2f\xac\x33\x9d\xd7\xbf\xe8\xea\xd5\xe5\x64\x59\x3d\xdb\x32\x0e\xea\x20\x5e\x7b\xe2\x67\xfb\x9d\x6e\xbb\x8b\x4a\x52\x1b\x32\xdd\x9e\x17\x1f\x04\x1f\x55\x65\xba\xcd\x0e\xdb\x0e\xc6\x7e\x67\xb8\xbd\x02\xd5\xd2\x6d\xe5\xf7\x6e\xc7\x62\x39\x44\x9e\xdb\xc1\x6d\xc0\x55\x70\x59\x60\x58\xdd\x09\x57\x99\xad\xb7\x10\xdc\xe2\x33\xaf\xab\x15\x47\xd1\xff\xc9\xdb\xe2\x3a\x75\xe0\xd9\x9d\x23\x95\x97\xd4\x32\xeb\xbb\x63\xc5\x68\xa0\x50\xdb\x9d\x31\x08\xdc\x65\xc1\xbc\x78\xce\xb7\xf7\x59\x8f\xdc\xdf\xb4\xcb\x6a\x1b\xf1\x79\x7d\x7e\xaa\x33\xff\xdb\x3a\x2d\xd7\xaf\x4f\xf4\x5a\x5b\x92\x2b\xa9\xb4\x31\x89\x3e\xb1\xeb\xa9\x4d\x2e\x81\xbf\xee\xe6\x05\x7b\x0d\x7f\x6d\x53\x1f\xcf\xee\xd4\x2e\xc6\x67\x77\xb6\x8d\xce\xa7\xee\xa2\x3f\xa7\xa9\xcf\xb9\xbe\x6f\x87\x40\x1f\xd3\xa6\xbe\xaf\xd0\x04\xab\x15\x0c\x8d\xbe\xc6\xaf\xaf\x55\x6a\xd5\x6e\x59\xab\x0a\xf4\x48\xbe\xda\x32\x7a\x1b\x4b\x55\xb1\xd8\x6f\x56\xb7\x6d\xe7\x54\x5b\xb6\xb6\x0b\x3a\x82\xec\x5b\x91\xf8\x29\x7c\x77\x58\xa7\x5a\x72\x03\x2b\x4a\x2b\xa0\x42\x25\x1b\x4a\x01\x65\xe6\x9a\x72\x40\xb3\xc8\x76\xdd\x80\x4a\xa6\x4f\x8a\x72\xd0\x18\x9c\x56\xed\xcd\x06\x85\xcc\x25\xe4\xaf\xe4\xa3\x2f\x44\xb1\xbf\xfb\xd9\xdf\xec\x53\x87\x7f\xb3\xff\x6f\x9e\xfe\xed\x0d\x34\x0a\xef\xcc\x73\x0a\x57\xeb\xca\xa9\x6a\x4e\x72\x42\x9f\xb7\xab\xe4\xbd\xf2\x9b\x3e\x7e\xaf\xec\xa8\xf3\xb5\xcf\xde\xf6\x5d\xfa\xde\x67\x61\x5f\xaa\x80\xaa\x20\xe7\x2d\x3e\x4e\xdf\xfb\x86\x81\xbb\x18\x2d\x94\x96\xa1\xf8\xe8\x05\x9d\xf7\x15\x97\xa6\x24\xcb\x0a\xc7\x98\xef\x7d\x4c\xfa\x95\xbc\xca\x3b\xd0\x0f\x3e\x5b\xe7\xf4\xc7\x96\xdb\xe5\xa6\xa2\xe7\xde\x48\xd7\xc6\x1a\x4e\x67\x65\xaa\x0e\x6d\x5f\xfd\x04\x71\xec\xc5\xf0\x56\x3c\xf5\xfe\xe8\x4f\x02\x7e\xdd\x79\xef\xe3\x84\x58\xa5\x9f\xd9\x89\x00\xd0\x82\x54\x75\x61\x2d\x4d\xc2\x0d\x03\xff\xe0\x4f\xf9\x9c\x75\x87\x84\xf2\x7c\x7c\x92\xe0\x1f\x7d\xfa\xde\x97\x08\xfb\xd6\x67\x3f\x56\x3a\xcc\xaa\xbd\x1f\x7f\xeb\xd7\xdc\xbf\xfe\x28\x6f\xd2\xbf\xf1\xd9\xb7\x7e\xe1\x94\x8f\x7e\xe7\x33\x24\x51\x8d\x13\x1e\x27\x04\x31\xed\x19\xf4\xbd\x8f\x51\x02\xf1\xf9\x08\xfd\xc9\x67\x83\x9f\x65\xb6\x19\xc6\xfd\xaf\xc8\x8c\x4c\x7f\x26\x73\x73\x67\x30\xfe\xda\xc7\xdf\xfa\xb4\x36\x0c\x74\xdd\x0c\x5d\x7f\xc1\x5b\x94\x06\x2f\x64\x98\x66\xa9\x65\x05\xc6\x15\x6f\x5c\x2c\x6d\x9b\x29\x67\xdf\xf8\xda\x61\xa0\xa0\x81\x6b\xfc\x83\x4f\x0b\x57\x8f\x08\x29\x67\x83\xdf\xf9\x13\xae\xfc\xbd\x3c\xa4\xbd\x11\x01\xff\x35\xd2\xdb\xce\x4f\x3e\x45\x3b\x23\x54\xc3\x66\xa0\xc7\x2a\xc8\xf3\x6d\xc1\x3d\x87\x39\x5d\xcb\x9e\x5a\x3f\xfa\x39\xc9\x13\x8e\x91\xf6\xa8\x87\x24\xd6\x13\x97\xf9\x1c\x02\x9e\xbc\x08\x16\xfc\x86\x72\x97\x75\x87\x34\x70\xd9\x77\x1c\xa3\x22\x19\x91\x71\xe5\xc5\x0b\xa6\x73\xc3\x90\xae\xf3\x46\xa4\x2c\x8c\xab\x51\xac\x45\x45\xa3\x9c\x48\xd0\x12\x3b\x12\x68\x43\x50\x06\xc9\x58\xfa\x15\x40\xb9\x9b\x65\xdd\xc0\xcd\xe9\xba\xa8\xab\xd5\x41\xb0\x8c\x3d\x45\x13\xfa\x79\x9e\x90\xe1\x62\xf4\x49\x50\xef\x07\x68\x6a\xbb\xac\xfb\x24\xac\x6b\x3d\xd6\x5c\x2d\xe6\x84\x8c\x5b\xe0\x8e\x13\x3b\xa9\x80\x1d\x01\xc4\x51\xb8\xb4\x7e\x74\x72\xe5\xf8\xd7\x65\x3f\x70\x8c\x60\x18\x11\xa1\xb6\xc4\xa3\x7c\xa5\xeb\x83\xc3\xc3\xa3\x93\x93\x37\xc7\x27\xa2\x92\xa1\x35\xa4\x23\x6b\x37\x27\xd4\x71\xd9\x37\x09\x46\xe0\x1f\x8c\xc7\x88\xd0\xd8\x65\xd3\xb9\xa4\x05\x9a\xba\xec\x95\x9d\x5c\xf6\x97\xf6\x4d\x1b\x48\x4d\x54\x76\x43\x81\x4b\x5b\x40\x06\xe5\x1b\xd1\x43\x95\xc3\x63\x1a\x52\x8f\x5d\xa9\xf0\xfe\x36\x4b\x13\xac\x5d\x2b\x11\xea\xb0\x55\x82\x13\x6a\x13\x1a\x8b\xa7\x62\x5a\xf3\x89\x6d\x71\x6a\x03\x09\xbf\x48\xb0\x47\x0c\x03\x97\xbc\x4c\x6b\xa8\xe1\x80\x79\xd5\xa9\x4a\xb2\x2c\xe8\x32\x06\xd0\x1a\x46\xf7\x45\x02\xa1\xa9\x34\x53\x9b\x5c\xe0\x80\x18\x86\xf2\xf0\x8d\x03\x16\x4c\x1d\x77\x0e\xbe\x44\x95\x4b\x52\x62\xe9\x27\x1a\x30\x55\x4f\x85\x79\x95\xee\x2c\x63\x15\x47\xd7\xa3\x0e\x8d\xa5\xdb\x23\x70\xf1\x58\x76\x20\x90\x9e\x30\xad\x80\xe0\xd4\xc5\x71\xcf\xa1\x43\x42\x68\xc8\x86\x63\x67\x2f\x1e\x3b\xa6\x49\x43\xd3\x24\x8e\x58\x39\x3c\xc3\xf0\x03\x0c\x68\x9a\x3a\xa5\xa3\x6c\xed\x2e\x8f\x85\x34\xca\xd5\x88\xfb\x6a\xc4\x57\x6a\xc8\x5d\x35\xe4\xab\xdb\xc7\x7c\x55\x0e\x2b\x5d\xe8\x67\x2f\xf8\xac\x21\xf6\xc5\x10\xbb\x30\xc4\xab\xdb\xc7\x58\xc6\xbf\x66\xaf\x13\x35\xd4\xa9\x18\xea\xb8\x18\x6a\x5f\x0e\x75\x4a\xa8\xbb\xb1\x46\x68\xaf\x55\xee\x24\x60\x11\x1b\x5a\x23\x78\xc6\xd2\x75\x66\xda\xf3\xc1\x11\xb6\xdb\xdb\xa5\x11\x5b\xb8\x78\xe5\x62\x07\x1c\xa6\x0f\x09\x15\x1f\x09\x4d\xcd\xa0\x17\xed\x3f\x1e\x0e\x1f\x8e\x1e\x3f\xde\xbd\x7f\xef\xe1\xbd\xe1\xe3\xc7\x23\xe5\xb1\xb5\xe2\x57\xf4\x95\x7d\xe3\x2d\xd3\x65\x07\x7c\x53\xf1\x45\x47\x1d\x55\xf2\x1b\x07\x84\x07\x24\x87\x32\x64\x0e\xc7\x31\x8d\x08\xf5\xd8\x70\xec\xed\x45\x63\xcf\x34\x09\xb6\x99\x6f\x7a\xc4\x0b\x3a\x31\x0c\x98\xe8\x71\x3c\xb5\xe7\xa4\xea\xc3\x98\x45\x34\xd8\x8b\xa4\xed\x83\xc7\xfc\xb1\xb7\x97\xf6\x64\x71\x87\x79\x66\x40\xb1\xcd\x3c\x33\x82\x4a\x26\xf1\xd4\x99\x33\x51\x83\xb5\xe0\x3e\x4f\x78\x47\x24\x8c\x65\xc9\x74\xec\xed\xa7\xbd\xc8\x0c\xc6\x5e\xaf\x47\x8a\xef\x5e\x6f\x34\x2f\x5c\x0f\x06\xfb\x11\x51\xb9\x45\x1b\xfb\x3e\xe4\x85\x76\x7a\x23\xd5\x52\x6f\xf4\xe9\xb6\x44\x17\x03\x80\x31\x9e\x7a\xa6\x3f\xaf\x2c\xd2\x9e\xb9\x5b\xf8\x26\xd5\x63\xc5\x00\x2e\x1a\x6a\x9a\xbc\x74\x41\xf6\x58\xba\xec\x99\xa2\x8c\x72\xce\xd1\x2b\x97\x2d\xdd\x72\xd1\xbc\x70\xd9\xe0\xe7\x59\xfc\x55\xa1\x16\x8a\xa7\x3f\x77\xf0\xfc\x2b\x32\x18\xdb\x86\xd1\x55\xbe\xf2\xbd\xa0\xb3\x74\x89\x61\x5c\xba\x78\xe9\x52\x99\xf6\xc9\xa5\x11\x9c\xf9\x4a\x48\xaf\xdc\x32\x76\x36\xd1\x6e\x2c\x5d\x32\x1d\xcd\x4b\x67\xc0\x7a\x71\xcb\x75\x37\x3e\xba\x2c\xed\xbb\xf4\xbc\x1e\xe7\xbc\xe9\x48\x99\x97\x66\x2d\x01\x8d\xd8\x95\xa0\xc2\x90\xed\x80\x3b\x2a\xaf\x70\xef\x4c\x1d\x36\xa4\x31\x9b\xce\xc7\xde\xbe\x33\x26\x01\x0b\xa7\x8e\x69\xce\xa9\xe8\xe3\x47\x05\x5c\x44\x03\x92\x65\x6a\x5b\x9c\x4c\xa6\x01\x8d\xa6\xc1\x7c\x6e\x45\x55\x67\xf9\x71\x9e\xd3\x6b\x97\xad\x79\x90\x44\x1e\x8f\xad\x73\x17\x0b\x71\x06\xd6\x7c\xf9\x36\x22\xb9\x14\x01\xe2\xda\x6c\x56\xde\x81\xf5\x22\x92\xd3\xb5\x2a\xd3\xd2\xb9\x6b\x17\x42\x3b\x4b\x34\x1c\xb8\xec\x98\x5f\x1c\xdd\xac\x2a\x83\x78\xe2\xb2\x83\xca\x20\xde\xb8\xcc\xab\xad\xbe\x0a\x97\x03\x7b\x70\x8e\xba\xec\x44\x75\xb0\xd0\x97\xb0\x11\x75\x7d\xfb\x22\xb6\xd0\x39\x02\x43\x29\xfa\xc6\x65\x48\x57\x27\x4b\x88\x31\x1e\xe3\x1b\x37\xcb\xde\x88\x91\xe7\x09\xde\x80\xa2\x2c\x41\xf1\x86\x48\x74\xa8\x78\x4e\xe1\x9e\x3d\x51\x2a\xbb\x04\xb4\x1a\xa1\x7d\x2d\xd0\x0c\x90\xc9\x4d\xf1\xab\xb2\x96\x3c\xdb\x30\x6a\xb1\x21\x24\x08\x40\x97\x50\x81\x20\xcc\x03\x97\x4c\x7c\x47\x4b\x58\x56\x20\x44\xf5\x75\x1a\xc4\xb6\x2b\x88\x52\x21\xf1\xa8\x4a\x44\x7f\x5f\x7f\xc1\xd0\xde\x59\x9d\x68\x6f\x71\xf5\x7d\x04\x63\x2d\xfd\xa3\x6d\x14\x6a\xd3\x01\xd7\x91\x0f\x6e\xf5\xf6\xdd\xe6\x40\x5a\x36\xf2\x4b\x13\x13\x9e\xab\x1b\xdb\xea\x16\x5b\xc0\xf8\x6f\x75\x8b\xad\x86\xf8\xcf\x3b\xc7\xa6\x6d\x9e\xb1\x27\xb5\x1e\x59\x7f\x03\x7f\xd8\x13\xd5\x39\xbd\xd3\x93\x58\x7a\xeb\xb2\x7f\x83\x47\xec\x78\x15\x71\x7b\xf1\x8f\x75\x86\x0d\xe0\x7e\x68\xe5\x91\x67\x2e\x78\x91\x3f\x94\x7f\x7e\x91\x7f\xde\xba\x98\xe4\xf4\xb4\x22\x7f\x1c\x97\xf2\x07\x7d\xa9\x9e\x5d\x3f\x0c\x23\xfa\xc2\x65\x83\xd9\x0e\x9e\xee\x18\x77\xfe\x65\x9e\xcd\x16\xb3\xc5\x24\xdb\x9b\xfe\xbc\x3f\xff\x6a\x9f\x0c\x2e\xe8\xeb\xcd\xcf\x64\x70\x31\x7e\xe9\x60\xa4\xb6\x2e\x88\xee\xd2\x5a\xf8\x04\x1a\xd0\x48\x3b\x4f\x8d\xfa\xc7\x47\xcf\x8f\xde\xbf\x3d\x3b\x3e\x7a\xfb\xf2\xe0\xf0\xe8\xec\xe4\xdd\x93\x93\xd3\x17\xa7\xef\x4e\x8f\x4e\xce\xde\xbd\x7e\x7a\xf4\xec\xc5\xeb\xa3\xa7\x67\x87\x07\x6f\x4f\xdf\x1d\x1f\x51\x0f\x0a\xc8\x9c\xdf\x1e\x1d\xbd\x3d\x39\xdb\x19\x52\x9b\x85\x13\xb4\x83\x2c\xb4\x33\x44\x8a\xd4\x2a\x81\xad\xca\xb6\x96\x8a\x1b\x79\x2a\x9c\x4c\xb9\x7d\x9a\x26\xc5\xdc\x2d\x76\xd8\xde\xc4\x93\xb4\x1c\xd0\x90\x46\x62\x2b\x06\x6f\x8a\x3b\x85\x04\x7a\x51\x09\x92\x95\x88\x86\x3c\x17\x77\x43\xc3\xf0\xb2\x6c\x63\x22\x45\x86\xd1\x1b\x41\xe0\x48\x1d\x44\xd7\x56\x9b\xf6\x98\x05\x98\xd3\x04\x6c\x43\x68\x04\x82\x4b\x2c\x1d\xea\x17\x6b\x3c\x2c\x13\xb9\xf4\x0c\x79\x88\x13\x21\xb6\x69\x8e\x0a\x5d\x72\xdb\xa2\xb4\x44\x63\x17\xfc\x46\xaa\x9c\x11\x21\xca\x47\x69\xda\x97\xfb\x44\xd1\xd2\x4a\xc2\xb0\x60\x69\x3f\x0d\x3c\x27\x5c\xf0\x71\xda\xf7\xed\x38\x81\xcd\x12\x1b\x16\x0e\x63\x2f\xc5\xc2\x39\x96\xb9\x97\x6c\xc7\xc1\x29\x55\x3e\xa8\xa5\xe4\xbe\x24\x10\x6f\x53\xa4\x5c\xca\xe5\x73\x49\x68\x77\xa5\x52\x61\xbf\xaa\x00\x59\x4e\x87\x20\xdf\x57\xdb\x79\xed\x60\x9f\xa6\x49\x35\x8d\xd0\x05\x21\x45\xf3\x57\xf4\x82\x21\x44\x3f\xb2\x21\x3d\x67\xc3\xf1\x79\xe9\x97\xf4\xdc\x34\xc9\x7a\xc9\x2e\xa7\xe7\xf3\x82\x5b\x5f\xd7\xda\xa2\x07\xec\xd4\xc5\xc7\x20\x9f\x2e\x25\xfa\x09\xf5\x0b\x11\x78\x48\xe8\x09\x9b\xce\xe9\x0d\x1b\x8d\x6f\xf6\x96\xba\xde\x1b\xd3\x24\x27\xb2\x27\xc5\x5a\x84\xaf\xd8\x72\x7a\x33\x27\x93\x2b\x7d\x3e\x72\xa5\xb0\xfa\x86\x2d\xfb\x60\x51\x1d\x0b\x0c\xb8\x12\x4f\x47\x6c\x7a\x3d\xd7\x21\x81\x4e\xe8\x81\xc0\x58\x41\x60\x6f\x0c\xe3\x48\x56\xff\x46\x56\x71\x56\x8c\x94\xb2\xe3\x55\x9b\x9e\x23\x1d\xe1\xfe\x8c\x39\xf8\x9a\xfa\xf4\x80\x9e\xd0\x37\x82\x52\x0e\xf6\xd9\x47\xc3\xc0\x17\x26\xf3\x15\xbf\xfd\x48\x0f\x88\x79\x46\x3f\xb2\x03\xf3\xba\x70\x8c\xaa\xc8\xe8\xc2\x2c\x72\x91\x7c\x5e\x1a\x01\x39\x38\xa1\xc5\x66\x41\x02\xee\xb0\xc8\xd4\x6b\x20\x8d\x4b\x09\x2a\x65\xaf\xdd\xcd\x99\x02\x8e\x81\x5f\x8b\xfd\x20\x4d\xd9\x0b\x97\x50\x35\x57\x6c\x9a\xd6\x34\x84\x55\xe5\xe9\x58\xc5\xa6\xb5\xfb\xce\xa5\x1d\x1d\x24\x78\x48\x64\x64\x5a\x31\x8b\xd5\x5a\xb1\x83\x20\x8e\x2a\x32\x8a\xf0\xa9\x89\x4c\xf8\x97\x6a\xb0\x5d\xe8\xcd\x50\xa0\x02\xbe\xdd\xd9\xf8\xe6\xa8\x2f\x7b\xc8\x4a\x99\x37\xb5\x0b\x6f\xba\xbd\x11\x99\xcb\x08\xb1\x63\xed\xbf\x44\x3a\xc0\x36\x6d\xbd\xed\xf1\xf5\xfc\x03\x7b\x24\x7f\x5f\xd9\x78\xbb\xec\xa5\x8b\xfd\xc1\x68\x58\xc8\x83\x72\x8f\xc4\x2d\x77\x8f\xc5\x93\x82\x56\xc2\xa9\xdb\x1b\xcd\x27\x45\x27\x47\xc4\x92\x49\x66\x35\x89\xe7\x29\x0b\xa7\xbe\xd8\x41\xd4\xf0\xca\x18\x4b\x27\x08\x59\x69\x0e\xca\xdd\x92\x42\x76\xea\xeb\xb6\x1e\x35\xb2\x4e\x58\xc3\xc6\x0b\xb2\xdb\xac\xb0\x16\xa9\x1a\xb3\x47\xa4\x12\x78\x0a\xdb\x8c\x9b\x68\x82\xcc\x13\x5b\x70\x08\x1a\x4c\xe2\x70\x9a\xcc\xb1\x4d\x03\xea\x11\x0b\x5d\xc8\x45\x37\x29\x92\x3d\x62\xe9\xc7\x13\x5b\xf0\x41\x8f\xe4\xf4\x9d\xbb\x71\xe2\xd8\x16\xac\xea\xb3\x03\x5d\x05\x8c\xf7\x55\xf8\xe1\x49\xf1\x64\x21\x04\x21\x98\x76\xe4\x9e\x83\x86\x0c\x0d\xec\x95\x37\xb8\x1a\x96\x7a\x00\xc5\xd1\xb2\x3c\xb1\x47\xd4\x63\xeb\xff\x97\xbc\xeb\xef\x6d\xda\x67\xe2\xff\x3f\xaf\xa2\x8b\x50\xe5\x08\x13\x9a\x52\x78\x90\xa7\x50\xc1\xd6\xed\x19\x1a\xdb\x04\x63\x8f\x44\x55\x55\xa6\x71\x58\xb4\xd6\xce\x1c\x77\x03\xb2\xbc\xf7\xaf\xfc\x2b\xbf\x3b\xa6\xa1\x21\xbe\xf0\xdf\x16\x5f\x6c\xf7\xee\x7c\xbe\x73\xce\xf7\xc9\x21\x0e\xb2\xbc\xa5\xb6\xc4\xfb\xcc\xc2\x6f\xaa\x74\xb8\xfe\xb3\x72\x85\x4a\x3f\x18\x9f\x70\xb6\x8a\x53\xe2\x71\xa2\x6f\x92\x93\xeb\x9e\x0d\x59\xe3\x34\x8d\xe9\x97\x9e\xad\x83\xd3\xeb\x25\x98\xe3\x15\x11\x84\xa3\x9e\x7c\xd7\x71\x5d\x04\x88\xf7\xe8\x72\x4d\xf8\xb7\x13\xdb\x96\xf6\xfb\x55\x49\xb4\xdb\xbb\xae\xaa\x4b\xcf\x6c\x2a\x66\x41\x9b\x7a\x2a\x66\xd2\x71\x7f\x14\x01\x27\x61\xa9\x70\x20\x7d\xcc\xa0\x50\x31\x3f\x77\xdd\x1c\xee\xfe\x76\x62\xd1\xb9\xed\x7f\xb5\x50\xf6\x7e\x3b\xa1\xac\x93\xf0\xaf\x5f\x2b\x95\x3b\xb1\xd1\x1f\x5d\x05\xe4\x32\x7a\x90\x2a\x20\xef\xa2\xdf\xb1\x0a\x48\x75\x56\xbf\xa0\x0a\x48\xc1\xe4\x37\x55\x1d\xda\xfe\x01\x68\x97\x76\xa0\xdb\x38\x5b\x9d\x47\x06\x37\x37\x80\xb6\x83\xf7\x3b\x42\x5b\xed\xff\x44\x0c\xff\x2f\x83\xb6\x32\x3f\x35\x07\xc2\x75\x6f\x6e\x48\xbf\x2f\xfa\x7d\x93\xe4\x5f\x61\x8c\x75\x91\x33\xaa\x6c\x1b\x35\xdf\x86\x82\x01\x64\x55\x23\x6d\x0d\x62\x96\x22\x06\xbb\xae\xc5\xf1\x57\xc5\x91\xd1\x38\x93\xa1\x1b\xda\x1a\xe4\xc8\xfc\xe5\x5b\x10\xe8\x29\x7f\xfc\x78\x96\xe7\x90\x34\xea\x12\x70\x76\xdd\x13\x39\x8c\x10\xcb\xf3\xbb\x1e\x33\x68\x2d\xf9\xc5\xa0\x5b\x16\x38\x64\x6b\x00\x17\x41\x01\xfa\x90\xd5\xca\x8e\xd0\x4e\xc4\xb8\xbc\xce\x36\x7d\x3c\x48\x0d\x7c\x9c\xdd\x6e\x70\x20\x54\xdc\x0b\x45\x93\x47\x0b\x0b\x12\x07\xa3\xe6\xe9\x32\xb6\x0b\x88\x16\x50\x71\xb4\x13\x2a\x6e\x51\x42\xc5\xe5\xe5\x4a\x35\x7a\xf2\xc0\xd8\x61\xdf\x23\x5d\x1a\x48\x41\x58\x28\x00\xcf\x54\x60\x41\x90\x39\x3e\x57\x35\x36\x60\x99\x4d\xa2\xca\x2a\x96\xa5\x1a\x73\x75\x6f\x31\xd5\x54\xcd\xcc\x3d\x75\x57\xee\x8b\xce\x25\x2d\xfa\xeb\xfa\x72\xea\xe9\xb6\x1c\xd6\x92\x9a\xba\x49\x2b\x53\x51\x9d\xd7\xb3\x40\xbb\xde\x31\xc6\x44\x9f\x67\x57\xaa\x7b\xdd\x8e\x9f\xe9\x31\x7a\xc2\x89\xf4\x1b\xd2\x0f\x78\x65\x46\x39\xc2\x2b\xa2\xfc\x8a\x4d\x8d\x63\xe1\xc5\xa1\xa7\xe0\x4b\xc8\x0e\x5b\x25\x98\x1b\x30\x72\xb4\xb9\xc3\x16\xf9\x26\x42\x7d\x7d\xb3\xbb\x28\x62\x37\xb3\x70\x3d\x97\x55\x63\x5b\x6e\xa8\x3e\x54\x56\xea\xc9\x96\x0c\x87\x3b\x4d\x71\x29\x55\x1c\x40\x29\xac\xd5\x2a\x16\x2e\x70\x0e\x8f\x5f\xef\xce\x77\x8e\x8f\xf6\x0e\xf6\x1d\x85\xdf\x5e\xca\xa6\x6b\x3a\x9f\x28\x78\x4b\xbd\x15\xe6\x17\x25\xcf\x7b\x04\x94\x38\xb7\x86\xee\x2d\xf5\xae\x39\x4e\xea\x7b\xa1\x54\xf0\xed\x6d\xd7\x84\xe7\xc4\x4b\x38\xb9\x0a\x88\x5a\xa5\x3a\x40\xef\x0d\x8a\x00\x3b\xb0\x73\x84\x3c\x50\xf7\xeb\x13\x2c\x16\xe7\x50\x53\x07\xcf\x20\x07\x4e\x44\xc4\xe2\xbc\x2c\x1f\xa0\x22\xf1\xde\x33\xdb\x83\xa1\x7c\x5e\x50\xbe\x97\x4a\x6e\xc9\x9e\x23\x0a\x9c\x0f\x93\xd3\xf9\xc1\xd1\xc1\xe9\xc1\xeb\xc3\x83\x4f\x93\x5d\x47\x3a\x16\xba\xf9\x05\x52\x61\x3d\xa1\xa1\x53\xf6\x97\x0a\x96\x00\x5d\x52\x47\x4a\xd1\x95\x66\xa7\x36\x87\xfb\x30\x4c\x1f\x8b\x3c\x34\xdb\xd6\x0c\x00\x16\x08\x8f\x33\x26\x4c\x62\xb8\xab\xea\xb7\x78\x82\x5d\x10\xea\x5a\xbe\x8e\xe0\x6e\x04\x32\xeb\xe4\x33\xaf\xf8\xfc\xa6\xbe\xf0\xa5\x84\x5f\x11\x0e\xa5\x4f\x8d\xb2\x3c\x37\xbc\x1a\xa1\xe1\xc0\x0f\x82\x00\xc4\x01\xf1\x52\x42\xe5\xc6\xae\x32\xf3\xc6\x00\x07\xb1\x17\x62\x81\xcb\xab\xc5\x86\xeb\x36\x41\xcd\x81\xf8\xe6\x66\x3a\x73\x5d\xc4\x81\x93\x9e\xb3\xeb\x77\xa6\xf6\x37\xcc\x44\x2c\x96\x04\x39\x7b\x38\x5e\x92\x50\x6e\x33\x8a\xd5\x45\x52\xb9\xe7\xc0\x90\xa4\x0b\x14\x9b\xc1\x4e\xc9\x57\x01\xf5\x9f\x05\x6e\x7b\x0e\x33\xf9\x83\xf5\x27\x9a\x7b\xc8\x55\x69\xcc\x9f\x20\xd4\x39\x7e\x08\xa1\x7e\x5e\xd3\x70\x49\x0a\x99\xbe\x3f\x3e\x9c\xdc\x43\xa0\x6a\xef\x79\x60\x69\xb6\x2b\xc5\xa2\x2e\x24\x42\xc3\x64\xc9\x6f\xb3\xe3\x29\x86\xab\xbd\x74\x9b\x6e\xa8\x64\x3b\x26\x60\xf3\x8d\x3c\x17\x11\xcd\x1c\xfd\x68\xb2\x5b\xd1\xfc\x8b\x08\xf0\x72\x1f\x2b\x66\x59\x4b\x6e\x45\x9d\xfb\x5a\xa7\xfa\x59\xbf\xa7\x92\x95\x01\xd7\x70\x09\xa3\xcd\x6a\x48\x9b\x6a\x48\xb5\x1a\xd2\x86\x1a\x96\xac\x61\x55\xfd\x8b\x2d\x6f\x20\xae\x6b\x21\x5c\x04\xd3\x99\x54\x4f\x5c\x53\xc7\x34\x78\x13\x81\xb8\xb5\x77\xa9\xb8\x52\x0e\x3b\x82\xa9\x97\x82\x42\xb6\x71\x04\xc0\x3a\x48\x3d\x5a\x00\x00\x67\x7a\x62\x81\xff\x42\x1f\xad\xe6\x92\x64\x19\xac\x0d\x1a\x70\xe3\x26\x81\xc2\x03\x2e\x5e\x19\x98\x57\x8a\x03\x5c\xfc\x99\xaf\x13\x01\x9c\x05\xa3\x22\xa6\x6b\xe2\x40\x7f\x64\xc6\xf6\xcb\xa5\x67\xde\x1e\xc2\xbd\x8a\x5d\xc4\xb7\x2d\x21\x5b\x1f\x34\x8b\x43\xb4\x54\x75\x43\x6b\xb3\x42\x24\x87\xfa\x40\x64\xbe\xc2\xe9\x05\xca\x12\x2c\xce\x53\x34\x75\xea\xc9\xf4\xce\x2c\x2f\xd6\xa2\x3f\xb4\x8b\x31\x0a\x68\x7d\x31\x72\xe0\x7c\x3c\xd9\x7d\x7d\x3a\xb1\x7a\xe5\xc0\xcb\x08\x5c\x46\x20\xcb\xe1\xb2\x56\x0b\xb1\x1c\xde\x75\xd1\xc2\xe4\xe5\xdb\xb9\x2e\xbd\x30\xd6\x99\xb0\xd2\x45\x81\xe5\x1a\x44\x51\x65\x41\x16\xf3\x19\x21\xc3\x17\x23\x07\xf3\xf8\x85\x7d\x3c\xf4\x6b\xcf\x5f\x22\x23\x60\xff\x25\xa4\x9e\x18\x04\xd4\xd3\x19\x19\x23\x17\xa6\x1e\x01\xf2\x99\xe9\x7a\xe8\x97\x9c\x57\xaf\x0c\x7d\x98\x7a\x11\x90\x3a\x12\xc5\x34\x4e\xcf\xc1\xd0\xb7\xb4\x23\x95\x31\x64\x71\xeb\xfa\x7d\xd6\x6d\x71\xc8\xb8\x62\x73\xf4\x4d\x0a\xbb\x8b\x78\x4e\xd5\x1e\x99\x1c\xfe\xb2\x51\xdb\xa4\x85\xc2\x37\xbf\x93\x59\x2a\x40\xf4\x5e\xf9\xf7\x99\x4e\x7a\xeb\x7c\x0a\x23\x49\xc6\xce\x0e\x5b\x2f\xc3\x1e\x65\xc2\xf6\xb0\x5a\x2f\x45\x9c\x34\xba\x2a\xa9\x6c\x57\x1d\x64\xb7\xfe\x1e\x7e\x9b\x6d\x33\x62\xf8\x6f\xdb\x0a\xd3\x8a\x15\xa6\x50\xc5\x15\xd3\xe9\x08\xfa\x2f\xe1\xd0\x87\xc3\xd1\x6c\x56\x58\xe6\x26\x56\xd3\xfd\x0d\xde\xcf\x9b\x39\x13\x51\x35\x6c\x19\x2b\xad\x5f\xdc\xd8\x7d\x79\xcd\xbc\x51\xbb\xdb\x7e\xac\x98\x0a\x7e\x27\x53\xc1\xe8\x3c\x31\xd1\xc2\x3c\xc5\xab\xb9\x69\xd0\x48\xcf\xa4\x44\xb5\x49\x38\x89\x08\xe7\x24\x6c\xb5\x28\x48\x28\xd2\x80\xb1\x9a\x27\x9c\xa9\x32\x09\x59\x01\x6c\x45\x4a\x54\x2b\x6b\x98\xe6\xc4\x98\x86\xad\x01\xac\x41\x4c\x97\xdd\xe7\x6d\xbf\x00\x37\x4d\x11\x60\xc0\x39\xf9\xf8\xe1\x7f\xf3\xa3\xc9\xff\x4b\x6b\x44\x5c\xb8\x60\x34\x65\x4b\x19\x21\x7d\x01\xd8\x75\x51\xfc\x43\xc7\x40\x2b\x85\xd5\x51\xa3\xf5\xf8\x67\x5d\x83\x9a\x52\x5a\x05\xcc\xe1\xca\x5e\x17\x41\x59\x25\x16\x6a\xe8\xa1\x8d\x6e\x03\x92\xc3\x46\xd4\xd0\xa2\xac\x04\xb7\x96\xdc\xae\x9e\x16\x6d\x71\xa3\xd7\x10\x2a\x1f\xaa\x45\xa5\x5c\x24\x49\x72\x7a\xbc\xbf\x7f\x38\x29\xd7\xa0\xed\xb8\x2b\x3d\xb3\x2b\x4a\xb4\xa9\x01\xc4\xdd\xa6\xaf\x9e\xf8\xe3\x0e\x12\x9d\xef\x09\x28\xf4\x65\xb8\xdb\x6a\x56\xfb\x86\x0c\x13\x3b\x9d\x9a\xd6\xcc\x9b\xef\xcb\x1f\x51\xdf\xb0\x36\x4c\x1d\x97\x17\x07\xdb\xa9\xdf\xb5\xa3\x84\x50\xc5\xf2\x71\x98\xbb\xee\x76\xe5\xbd\xf2\x77\xa8\xa8\x76\x93\x15\xab\x1f\x95\xb5\xe7\x3b\x9d\xe5\xb0\xa9\xd5\x1b\xa5\x58\x70\x27\xcf\xe1\x59\xd4\x04\xee\x70\x60\xb5\x1a\xac\x03\xe3\x05\xa3\x1a\x25\xeb\xc9\xd5\x02\xf3\xd0\x81\x71\xba\x17\x2f\xc9\x24\x8c\x05\xe3\x68\xcb\x87\xe4\xab\x20\x34\x55\xba\x39\x9d\x15\x87\x84\x38\x49\x0e\x68\xc4\xd0\x59\x04\x39\x5b\x0b\x92\xa2\xa9\x19\xa9\xec\x5b\x3a\x15\xc8\x79\x5a\xaf\x12\x8d\x93\x04\x9d\x2d\xf3\x7c\x06\x29\xbe\x3a\x50\x37\x5c\xa6\xed\x39\x2e\x18\x7d\x87\x05\xe1\x31\x5e\xa2\xb3\xc8\x93\xff\xeb\x71\xd0\xc6\x51\x6c\x0a\x82\x24\x0f\xa1\xf3\xd4\x71\xe5\x20\xa9\x60\x9c\xa0\xef\x91\xfa\xbc\xfc\x9f\x7f\x02\x00\x00\xff\xff\x59\x32\xa1\x9a\x35\x02\x02\x00") func init() { err := CTX.Err() @@ -78,32 +75,6 @@ func init() { panic(err) } - rb = bytes.NewReader(FileAccountsJsMap) - r, err = gzip.NewReader(rb) - if err != nil { - panic(err) - } - - err = r.Close() - if err != nil { - panic(err) - } - - f, err = FS.OpenFile(CTX, "accounts.js.map", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777) - if err != nil { - panic(err) - } - - _, err = io.Copy(f, r) - if err != nil { - panic(err) - } - - err = f.Close() - if err != nil { - panic(err) - } - Handler = &webdav.Handler{ FileSystem: FS, LockSystem: webdav.NewMemLS(), diff --git a/ui/store/index.js b/ui/store/index.js index b439c74fd6..c94e74ba82 100644 --- a/ui/store/index.js +++ b/ui/store/index.js @@ -177,6 +177,7 @@ const actions = { body: { account: { on_premises_sam_account_name: account.username, + preferred_name: account.username, mail: account.email, password_profile: { password: account.password From 0a6f502037eab6cc2d1be90e9ebbfec1ea99a23d Mon Sep 17 00:00:00 2001 From: Lukas Hirt Date: Wed, 9 Sep 2020 12:30:21 +0200 Subject: [PATCH 359/407] Fix password input alignment --- .../accounts/AccountsListNewAccountRow.vue | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/ui/components/accounts/AccountsListNewAccountRow.vue b/ui/components/accounts/AccountsListNewAccountRow.vue index 89c9ab9454..2039c14654 100644 --- a/ui/components/accounts/AccountsListNewAccountRow.vue +++ b/ui/components/accounts/AccountsListNewAccountRow.vue @@ -20,18 +20,20 @@ @input="checkEmail" /> -